gitlink-cli/skills/gitlink-project-bootstrap/examples/bootstrap-workflow.md

165 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目一键初始化工作流 — 端到端示例
**场景**:开发者希望快速启动一个新项目:输入一句话描述,自动创建仓库、生成 README/LICENSE/CI 骨架、建立首个里程碑与初始 Issue5 分钟即可进入协作。
## 前置条件
- `gitlink-cli` 已安装并登录(`gitlink-cli auth status`
- 目标仓库所有者已确认(示例使用 `z2_cc`
- `jq` 已安装(用于 JSON 解析)
- `node` 已安装(用于 `skeleton-gen.js``md-to-html.js`
## 输入
```bash
export PROJECT_DESC="一个用 Go 编写的 GitLink 命令行工具MIT 许可证,公开仓库。"
```
## 工作流步骤
### Step 1解析需求 + 创建仓库
```bash
# 1.1 AI 解析 PROJECT_DESC落盘 _output/project-spec.json
# name → gitlink-cli从描述推断但本次演示仓库名复用参数 gitlink-cli-demo
# description → 一个用 Go 编写的 GitLink 命令行工具
# language → go
# license → MIT
# private → false
```
**`_output/project-spec.json` 输出示例:**
```json
{
"name": "gitlink-cli-demo",
"description": "一个用 Go 编写的 GitLink 命令行工具",
"language": "go",
"license": "MIT",
"private": false,
"owner": "z2_cc"
}
```
```bash
# 1.2 创建仓库dry-run 模式)
DRY_RUN=true
gitlink-cli repo +create --name gitlink-cli-demo \
--description "一个用 Go 编写的 GitLink 命令行工具" --private false
```
**输出示例:**
```json
{ "ok": true, "data": { "name": "gitlink-cli-demo", "id": 123456, "private": false } }
```
```bash
# 1.3 验证仓库已创建
gitlink-cli repo +info --owner z2_cc --repo gitlink-cli-demo --format json
```
**Expected:** `project-spec.json` 生成dry-run 模式下 `[DRY-RUN] 将执行 repo +create ...`,不实际建仓。
---
### Step 2生成项目骨架文件
```bash
# 2.1 运行骨架生成引擎
node scripts/skeleton-gen.js _output
```
**AI 生成逻辑说明:**
```
读取 _output/project-spec.json
→ language=go → 生成 Go 风格 .gitignorebin/、*.exe、vendor/
→ license=MIT → 写完整 MIT 正文,版权行 "Copyright (c) 2026 [project author]"
→ name + description → 拼装 README标题/简介/安装/用法/贡献/许可证)
→ 固定模板 → .devops/构建流水线.yml最小可用 Go 构建)
落盘到 _output/skeleton/{README.md, LICENSE, .gitignore, .devops/构建流水线.yml}
```
**`_output/skeleton/` 产物清单:**
```
README.md
LICENSE
.gitignore
.devops/构建流水线.yml
```
```bash
# 2.2 推送到新仓库dry-run 模式)
DRY_RUN=true
# 优先 file +batch单次 commit不确定字段时退回逐个 file +create
gitlink-cli file +batch \
--files '[{"path":"README.md","content":"# ...","action":"create"}, ...]' \
--message "chore: 初始化项目骨架" --branch master
```
**Expected:** `skeleton/` 下四个文件齐全dry-run 下 `[DRY-RUN] 将执行 file +batch ...`
---
### Step 3创建里程碑 / 标签 / 初始 Issue
```bash
# 3.1 创建里程碑 v0.1.0due-date = 今天 +30 天)
gitlink-cli milestone +create -t "v0.1.0" \
-d "首个里程碑:完成核心功能与文档" --due-date 2026-08-01
```
**输出示例:**
```json
{ "ok": true, "data": { "id": 1001, "name": "v0.1.0" } }
```
```bash
# 3.2 创建起始标签
gitlink-cli label +create --name "good-first-issue" --color 7057ff
gitlink-cli label +create --name "enhancement" --color a2eeef
gitlink-cli label +create --name "bug" --color d73a4a
```
```bash
# 3.3 创建 3 个初始 Issue关联里程碑与标签dry-run
DRY_RUN=true
gitlink-cli issue +create -t "完善 README 文档" \
-b "补充安装、用法、贡献指南" --milestone 1001 --label <enhancement_id>
gitlink-cli issue +create -t "配置 CI 流水线" \
-b "确保 push/PR 触发构建与测试" --milestone 1001 --label <enhancement_id>
gitlink-cli issue +create -t "撰写贡献指南 CONTRIBUTING.md" \
-b "说明提交流程、代码规范" --milestone 1001 --label <good_first_issue_id>
```
**Expected:** 1 个里程碑、3 个标签、3 个初始 Issue 建议生成dry-run 下全部 `[DRY-RUN]`
---
## 完整命令速览
```bash
# Phase 1: 解析 + 建仓
PROJECT_DESC="一个用 Go 编写的 GitLink 命令行工具" \
bash scripts/01-parse-and-create-repo.sh z2_cc gitlink-cli-demo
# Phase 2: 骨架
bash scripts/02-generate-skeleton.sh z2_cc gitlink-cli-demo
# Phase 3: Issue + 里程碑
bash scripts/03-create-issues-milestones.sh z2_cc gitlink-cli-demo
# 一键全流程
PROJECT_DESC="一个用 Go 编写的 GitLink 命令行工具" \
bash scripts/project-bootstrap-full.sh z2_cc gitlink-cli-demo
```
## 最终报告
`_output/init-report.md`**综合评分X/10** 形式的"初始化完成度"并列表展示已生成的产物README/LICENSE/.gitignore/CI/里程碑/标签/Issue。经 `md-to-html.js` 转换后生成可视化 HTML。
## 注意事项
- 所有写操作默认 dry-run确认后通过 `DRY_RUN=false` 实际执行
- AI 解析出的项目名/许可证/可见性建议人工复核
- 生成 LICENSE 中的 `[year] [project author]` 占位需替换为真实版权人
- 离线/未认证时脚本优雅降级,仍能产出 init-report.md 供审阅