12 KiB
EXAMPLES — gitlink-project-bootstrap(项目一键初始化演示)
记录 AI Agent(Claude Code)如何调用
gitlink-project-bootstrapSkill,从一句话需求出发,为jiangtx组织下的示例仓库demo-repo完成端到端初始化。
一句话概述
输入「项目描述」→ Agent 解析需求并确认 → 创建仓库骨架(README/LICENSE/CI)→ 初始化协作体系(label/milestone/member)→ 创建首批 Issue 与里程碑 → 配置 webhook → 输出初始化报告,实现一键拉起一个可协作的新项目。
触发示例(用户自然语言请求)
用户:「帮我在 jiangtx 组织下初始化一个叫
demo-repo的 Go 项目,成员有小王和小李,先做成私有仓库。」
Agent 据此进入 gitlink-project-bootstrap 的 6 步工作流。
Agent 执行流程
下方所有命令、参数严格遵循
SKILL.md工作流与../gitlink-shared/SKILL.md的统一 Envelope 输出格式({ok, data, meta})。 所有「预期输出」均为格式示例,其中的 ID、编号、时间戳等数值为示意值,不代表真实 API 回包。
Step 1 · 🤖 AI 需求解析(含命令核验 + 强制确认)
动作说明:Agent 从用户一句话中提取项目名、语言、描述、可见性、成员,对缺失字段标注「(推断)」并出示「初始化清单」等待确认;同时用只读命令核验操作者身份、反查成员用户 ID。
| # | 命令 | 作用 |
|---|---|---|
| 1 | gitlink-cli user +me |
核验当前登录的操作者身份(确认有 jiangtx 的写权限) |
| 2 | gitlink-cli search +users -k 小王 |
反查「小王」的用户 ID,供 Step3 加成员使用 |
| 3 | gitlink-cli search +users -k 小李 |
反查「小李」的用户 ID |
预期输出(示例,数值为示意):
// user +me
{
"ok": true,
"data": { "login": "jiangtx", "user_id": 10086, "name": "蒋同学" }
}
// search +users -k 小王
{
"ok": true,
"data": [ { "id": 20001, "login": "xiaowang", "name": "小王" } ],
"meta": { "total_count": 1 }
}
🤖 AI 产出「初始化清单」并等待确认(需确认 ❗):
- 项目名 : demo-repo
- 描述 : 示例 Go 项目——演示 gitlink-cli 一键初始化
- 语言/技术栈 : Go(决定 README/CI 模板,将采用 go build / go test 模板)
- 可见性 : private(私有)
- owner : jiangtx
- 成员 : 小王(id=20001)、小李(id=20002)
- 缺省推断 : 里程碑名 "MVP"(推断)、License MIT(推断)
⚠️ 用户确认或修改清单后,才进入 Step2。未确认不执行任何写入命令。
Step 2 · 创建仓库骨架(写入,每个命令均需确认 ❗)
动作说明:先用 repo +create 建空仓库;再由 Agent 按语言生成 README.md / LICENSE / CI 配置内容,逐个 repo +create-file 写入。
| # | 命令 | 作用 |
|---|---|---|
| 1 | gitlink-cli repo +create --name demo-repo --description "示例 Go 项目——演示 gitlink-cli 一键初始化" --private true |
在 jiangtx 下创建私有空仓库(需确认 ❗) |
| 2 | gitlink-cli repo +create-file --owner jiangtx --repo demo-repo --filepath README.md --content "<Agent 生成的 README 内容>" --message "docs: add README" |
写入 README(需确认 ❗) |
| 3 | gitlink-cli repo +create-file --owner jiangtx --repo demo-repo --filepath LICENSE --content "<MIT 许可证正文>" --message "docs: add LICENSE" |
写入 MIT LICENSE(需确认 ❗) |
| 4 | gitlink-cli repo +create-file --owner jiangtx --repo demo-repo --filepath .gitlink-ci.yml --content "<Agent 生成的 Go CI 配置>" --message "ci: add pipeline config" |
写入 CI 流水线配置(需确认 ❗) |
Agent 按 Go 栈生成的内容要点(示例,非真实回包):
README.md:项目标题、简介、go build/go run/go test用法、目录约定。LICENSE:标准 MIT 文本,<year> jiangtx。.gitlink-ci.yml:stages: [build, test],go build ./...与go test ./...。
预期输出(示例):
// repo +create
{
"ok": true,
"data": {
"identifier": "jiangtx/demo-repo",
"name": "demo-repo",
"private": true,
"web_url": "https://www.gitlink.org.cn/jiangtx/demo-repo"
}
}
// repo +create-file(README)
{
"ok": true,
"data": { "filepath": "README.md", "branch": "master", "commit": { "sha": "<示例 sha>", "message": "docs: add README" } }
}
💡 GitLink 默认主分支为
master(非main),由 CLI 自动处理映射。
Step 3 · 初始化协作体系(写入,加成员需确认 ❗)
动作说明:建立标准标签体系(Agent 推荐配色)、创建首个里程碑、批量添加成员(先 --dry-run 预览,确认后正式添加)。
3.1 标签体系(Agent 推荐配色)
gitlink-cli label +create --owner jiangtx --repo demo-repo --name bug --color "#d73a4a"
gitlink-cli label +create --owner jiangtx --repo demo-repo --name feature --color "#a2eeef"
gitlink-cli label +create --owner jiangtx --repo demo-repo --name documentation --color "#0075ca"
作用:建立 bug / feature / documentation 三类标准标签,供后续 Issue 分类。预期输出(示例):
{ "ok": true, "data": { "id": 9001, "name": "bug", "color": "#d73a4a" } }
3.2 里程碑
gitlink-cli milestone +create --owner jiangtx --repo demo-repo --name "MVP"
作用:创建首个里程碑 MVP(对应 API 字段 fixed_version_id),后续 Issue 可挂载其下。预期输出(示例):
{ "ok": true, "data": { "id": 5001, "name": "MVP" } }
3.3 批量加成员(先预览 → 确认 → 正式添加)
# Step A:预览(dry-run,不写入)
gitlink-cli member +batch-add --owner jiangtx --repo demo-repo --user-ids 20001,20002 --dry-run
# Step B:用户确认后,去掉 --dry-run 正式添加(需确认 ❗)
gitlink-cli member +batch-add --owner jiangtx --repo demo-repo --user-ids 20001,20002
作用:把小王、小李加入 demo-repo。预期输出(示例):
// --dry-run 预览
{ "ok": true, "data": { "dry_run": true, "to_add": [ {"user_id":20001,"login":"xiaowang"}, {"user_id":20002,"login":"xiaoli"} ] } }
// 正式添加(默认角色 Developer)
{ "ok": true, "data": { "added": [ {"user_id":20001,"role":"Developer"}, {"user_id":20002,"role":"Developer"} ] } }
💡 角色可选 Manager / Developer / Reporter,默认 Developer;如需变更用
member +role --user-id <id> --role Developer。
Step 4 · 🤖 AI 推荐首批 Issue(写入,逐条需确认 ❗)
动作说明:Agent 按 Go 项目类型推荐首批 Issue,与用户确认后逐条创建。CLI 创建 Issue 时会自动设置 status_id=1(新增)与 priority_id=2(正常)。
Agent 推荐清单(示例):
1. 搭建项目结构(cmd/ internal/ go.mod)
2. 配置 CI 流水线联调(验证 .gitlink-ci.yml)
3. 编写使用文档与示例
4. 搭建本地开发环境脚本
5. 冒烟测试用例骨架
gitlink-cli issue +create --owner jiangtx --repo demo-repo \
--title "搭建项目结构" \
--body "初始化 cmd/ internal/ go.mod 等标准目录结构" \
--label bug \
--milestone MVP
作用:创建首批 Issue,并打上标签、挂到 MVP 里程碑下。预期输出(示例):
{
"ok": true,
"data": {
"project_issues_index": 1,
"subject": "搭建项目结构",
"status_id": 1,
"priority_id": 2
}
}
💡
project_issues_index即网页 URL 中可见的 Issue 编号(如issues/1),后续issue +view --number 1、issue +close --number 1均用此编号。
Step 5 · 配置自动化(写入,需确认 ❗)
动作说明:向用户询问 Webhook 回调 URL 后创建 webhook,并触发一次测试投递验证连通性。
# 1) 创建 webhook(需确认 ❗)
gitlink-cli webhook +create --owner jiangtx --repo demo-repo \
--url https://ci.example.com/hook/demo-repo --events push,merge_request
# 2) 用上一步返回的 webhook id 触发测试
gitlink-cli webhook +test --owner jiangtx --repo demo-repo --id 68
作用:webhook +create 注册推送/合并请求事件回调;webhook +test 触发一次 ping 投递以验证目标可达。预期输出(示例):
// webhook +create
{ "ok": true, "data": { "id": 68, "url": "https://ci.example.com/hook/demo-repo", "events": ["push","merge_request"] } }
// webhook +test
{ "ok": true, "data": { "id": 68, "test_event": "push", "status": "delivered" } }
💡 若测试投递失败(如目标不可达),不阻塞流程,统一在 Step6 报告中列出。
Step 6 · 🤖 AI 输出初始化报告(调 onboarding)
动作说明:调用子 Skill gitlink-onboarding 生成新人上手文档段落,并汇总整轮初始化结果;可选 repo +info 复核仓库状态。
# 可选:复核仓库状态
gitlink-cli repo +info --owner jiangtx --repo demo-repo
🤖 Agent 汇总的初始化报告(示例文案,数值为示意):
✅ 项目初始化完成 — jiangtx/demo-repo
- 仓库地址 : https://www.gitlink.org.cn/jiangtx/demo-repo (私有)
- 初始文件 : README.md / LICENSE(MIT) / .gitlink-ci.yml(Go)
- 标签 : bug / feature / documentation(共 3 个)
- 里程碑 : MVP
- 成员 : jiangtx(owner)、小王(Developer)、小李(Developer)
- 首批 Issue: #1 搭建项目结构 / #2 配置 CI 联调 / #3 编写文档 / #4 本地环境脚本 / #5 冒烟测试骨架
- Webhook : id=68,events=push,merge_request,测试投递 delivered
- 新人上手 : (gitlink-onboarding 生成的引导段落)
最终产物
一次成功的初始化将在 GitLink 上产出:
- 新仓库
jiangtx/demo-repo(私有),地址https://www.gitlink.org.cn/jiangtx/demo-repo。 - 初始配置文件:
README.md、LICENSE(MIT)、.gitlink-ci.yml(Go 构建/测试流水线)。 - 协作体系:3 个标准标签、1 个里程碑
MVP、2 名 Developer 成员。 - 首批 Issue:5 条挂载在 MVP 下的初始化任务。
- 自动化:1 个 push/merge_request webhook(测试通过)。
- 新人引导:由
gitlink-onboarding生成的上手文档段落 + 初始化报告。
✅ 验证检查清单
gitlink-cli auth status已登录,且操作者对jiangtx有写权限。- Step1 出示的「初始化清单」已获用户确认(含推断字段)。
jiangtx/demo-repo可访问且可见性为 private。README.md/LICENSE/.gitlink-ci.yml三文件均存在于默认分支master。- 标签 bug / feature / documentation 颜色正确、数量 = 3。
- 里程碑
MVP存在;首批 Issue 均已挂载、编号连续。 - 成员小王、小李角色正确(Developer)。
- webhook id 已创建且
webhook +test投递状态为 delivered。 - 关键命令(repo +create / create-file / milestone +create)未报错(逐步熔断未触发)。
- 初始化报告已生成,部分失败项(如有)已逐条列出。
备注
- 本文件为「执行流程演示」:上述命令串联与「预期输出」用于说明 Agent 如何按
SKILL.md的 6 步工作流编排,不是真实 API 回包;其中的 ID、编号、SHA、时间戳等均为示意值,实际以平台真实回包为准。 - 所有写操作均需用户确认:
repo +create/repo +create-file/label +create/milestone +create/member +batch-add(正式)/issue +create/webhook +create在演示中均标注「需确认 ❗」,Agent 必须出示意图、获用户授权后才执行,避免在真实组织下误建资源。 - 失败不自动回滚:依据
SKILL.md反模式约定,本 Skill 不自动repo +delete;如初始化中途失败,是否回滚由用户决定并授权。 - 工具边界:GitLink 资源一律用
gitlink-cli,禁止用gh/curl绕过;主分支默认master,由 CLI 自动与本地main双向映射。 - 成员/指派注意:演示中成员 ID 由
search +users反查;若后续 Issue 需指派,使用issue +create --assigner-ids <id>(成员能加入 ≠ 默认指派成功,需以--assigner-ids显式传值)。