draftgo-cli 3.0.35 → 3.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +220 -272
  2. package/package.json +6 -2
  3. package/resources/skill/SKILL.md +114 -55
  4. package/resources/skill/init/SKILL.md +29 -15
  5. package/resources/skill/manifest.json +5 -4
  6. package/resources/skill/push/SKILL.md +41 -29
  7. package/resources/skill/references/aihub.md +8 -5
  8. package/resources/skill/references/api-endpoints.md +5 -3
  9. package/resources/skill/references/architecture.md +1 -1
  10. package/resources/skill/references/checkout.md +116 -0
  11. package/resources/skill/references/custom-services.md +9 -10
  12. package/resources/skill/references/data.md +4 -2
  13. package/resources/skill/references/frontend.md +1 -1
  14. package/resources/skill/references/mcp.md +101 -0
  15. package/resources/skill/references/modules.md +8 -8
  16. package/resources/skill/references/parallel.md +6 -3
  17. package/resources/skill/references/runtime.md +7 -10
  18. package/resources/skill/scripts/README.md +8 -0
  19. package/resources/skill/story/SKILL.md +8 -8
  20. package/src/cli.js +5 -0
  21. package/src/commandRegistry.js +7 -1
  22. package/src/commands/api.js +24 -187
  23. package/src/commands/autoPush.js +48 -17
  24. package/src/commands/check.js +17 -47
  25. package/src/commands/checkout.js +18 -0
  26. package/src/commands/commit.js +21 -0
  27. package/src/commands/conflict.js +30 -0
  28. package/src/commands/conflicts.js +16 -0
  29. package/src/commands/connect.js +60 -48
  30. package/src/commands/delete.js +79 -64
  31. package/src/commands/deploy.js +18 -10
  32. package/src/commands/diff.js +23 -0
  33. package/src/commands/help.js +99 -75
  34. package/src/commands/init.js +4 -10
  35. package/src/commands/local.js +23 -6
  36. package/src/commands/map.js +89 -89
  37. package/src/commands/mcp.js +126 -0
  38. package/src/commands/sync.js +28 -43
  39. package/src/commands/verifyUi.js +3 -2
  40. package/src/localdev/index.js +37 -7
  41. package/src/localdev/mysqlClient.js +1 -1
  42. package/src/mcp/client.js +275 -0
  43. package/src/mcp/hosts.js +520 -0
  44. package/src/mcp/protocol.js +173 -0
  45. package/src/mcp/stdio.js +300 -0
  46. package/src/mcp/tools.js +37 -0
  47. package/src/platforms.js +3 -4
  48. package/src/projectConfig.js +91 -49
  49. package/src/projectMap.js +123 -460
  50. package/src/skill.js +6 -28
  51. package/src/worktree/backend.js +250 -0
  52. package/src/worktree/errors.js +28 -0
  53. package/src/worktree/index.js +461 -0
  54. package/src/worktree/manifest.js +75 -0
  55. package/src/worktree/streams.js +200 -0
  56. package/src/worktree/types.js +103 -0
  57. package/src/worktree/validate.js +37 -0
  58. package/resources/skill/pull/SKILL.md +0 -33
  59. package/resources/skill/references/api.json +0 -20248
  60. package/resources/skill/scripts/draftgo_delete.py +0 -149
  61. package/resources/skill/scripts/draftgo_init.py +0 -80
  62. package/resources/skill/scripts/draftgo_pull.py +0 -427
  63. package/resources/skill/scripts/draftgo_push.py +0 -1022
  64. package/src/python.js +0 -27
package/README.md CHANGED
@@ -1,364 +1,312 @@
1
1
  # draftgo-cli
2
2
 
3
- AI 编码工具一键安装 / 更新 / 卸载 DraftGo 开发助手 skill 的命令行工具。
3
+ 面向 AI 编码工具的 DraftGo 工作台 CLI:分发 DraftGo Skill,通过 MCP 发现和操作实时资源,并为页面、导航和文档提供可校验的 `checkout` / `commit` 工作流。
4
4
 
5
- 支持的 AI 工具:Claude Code、Codex CLI、Cursor、Windsurf、Antigravity、GitHub Copilot、Gemini CLI、Kiro。
5
+ DraftGo Next 前端基线为 React + Vite;数据库页面以标准 HTML + Tailwind CSS 为核心。CLI 仍提供 Docker 本地运行、项目检查和浏览器验证能力。
6
6
 
7
- ## 前置条件
8
-
9
- - Node.js >=20.19(运行 CLI)
10
- - Python 3.9+(运行 DraftGo init/sync 脚本;CLI 本身不需要)
7
+ 支持安装 Skill 的宿主:Claude Code、Codex CLI、Cursor、Windsurf、Antigravity、GitHub Copilot、Gemini CLI、Kiro。
11
8
 
12
- ## DraftGo Next v3 基线
9
+ ## 前置条件
13
10
 
14
- DraftGo Next 前端基线为 React + Vite。draftgo-cli v3 的定位是 DraftGo 工作台 CLI:负责本地运行环境、资源同步、开发检查、push/pull 闭环和 AI 工具 skill 分发。
11
+ - Node.js >=20.19
12
+ - 使用 `draftgo local ...` 时需要 Docker 和 Docker Compose
15
13
 
16
- 数据库页面以 HTML 为核心,默认使用 Tailwind CSS 和页面级 CSS。
14
+ CLI 不再依赖 Python 同步脚本,也不会创建 DraftGo 业务资源的全量本地镜像。
17
15
 
18
- 核心命令为 `draftgo init/update/status/map/check/connect/local setup`;工作台命令如下:
16
+ ## 工作模型
19
17
 
20
- | 命令 | 说明 |
21
- |---|---|
22
- | `draftgo local setup` | 生成 `.draftgo/docker/docker-compose.yaml`,初始化并启动本地 DraftGo 栈。`draftgo local-dev` 保留为兼容入口。 |
23
- | `draftgo local start` | 启动本地栈。`up` 是兼容别名。 |
24
- | `draftgo local stop` | 停止本地栈。`down` 是兼容别名。 |
25
- | `draftgo local logs` | 查看本地栈日志,默认跟随 `app` 服务。 |
26
- | `draftgo local status` | 查看本地栈容器状态。 |
27
- | `draftgo check` | 本地资源检查:发现页面未绑定入口、页面/导航 HTML 解析问题、未登记到 `index.json` 的本地资源文件;不启动或构建底座。 |
28
- | `draftgo verify-ui <url>` | 使用 Playwright 执行单视口 UI smoke check;默认按 Git 变更判断,失败时才截图。 |
29
- | `draftgo api <keyword>` | 检索 DraftGo 底座内置 OpenAPI,并展示请求字段、响应结构与鉴权信息。自定义服务端点由 `app.Route` 动态注册,不在此索引中。 |
30
- | `draftgo pull` | 包装随 skill 分发的 `draftgo_pull.py`,默认 `--all` 拉取资源。 |
31
- | `draftgo push` | 包装随 skill 分发的 `draftgo_push.py`,推送页面、导航、DB meta 等资源。 |
32
- | `draftgo deploy` | 显式执行 check → push;支持 `--delivery local|preview|deploy`。 |
33
-
34
- ## 安装
18
+ ```text
19
+ AI 宿主 -> draftgo mcp serve -> DraftGo /mcp
20
+ |
21
+ +-> 结构化资源、元数据、搜索和正文片段
35
22
 
36
- ```bash
37
- npm install -g draftgo-cli
23
+ draftgo checkout/commit -> DraftGo 专用 HTTP 正文端点
24
+ (完整 HTML/Markdown 不经过 MCP 上下文)
38
25
  ```
39
26
 
40
- ## 快速开始
27
+ - MCP 用于项目概览、资源搜索/列表、元数据、正文片段和实时 API 调用。
28
+ - `pages`、`navigations` 和 `docs/articles` 的完整正文使用 `checkout` / `commit`。
29
+ - `db_meta`、AIHub、`system_config`、角色、用户、文档分类、自定义服务等结构化资源直接通过 MCP/API 操作,不生成本地索引。
30
+ - `.draftgo/pages/`、`.draftgo/navigations/` 等旧 `index.json` 缓存只视为 legacy 数据;CLI 不删除它们,但 `map` 和 `check` 会忽略它们。
31
+ - DraftGo Skill 继续提供资源关系、页面规范、数据和权限、安全规则、自定义服务经验以及验证流程;MCP 不替代 Skill。
41
32
 
42
- ```bash
43
- cd /path/to/your/project
44
- draftgo init # 自动识别当前项目在用的 AI 工具并安装
45
- ```
33
+ ## Agent 阅读顺序
46
34
 
47
- 也可以手动指定要安装到哪些 AI 工具:
35
+ DraftGo Skill 不能被 MCP 替代。根 `SKILL.md` 会在 Skill 触发时自动加载;Agent 随后按任务读取相关领域资料,再查询实时状态:
48
36
 
49
- ```bash
50
- draftgo init claudecode # 只装 Claude Code
51
- draftgo init claudecode kiro cursor # 多选
52
- draftgo init all # 所有支持的工具
37
+ ```text
38
+ 已加载的 SKILL.md -> 按任务读取 references/ 中的领域规则 -> MCP 查询当前状态 -> 必要时 checkout 正文
53
39
  ```
54
40
 
55
- ## 命令清单
56
-
57
- | 命令 | 说明 |
58
- |---|---|
59
- | `draftgo init [target]...` | 安装 skill。不传 target 时自动识别;`all` 表示全部。 |
60
- | `draftgo update [target]...` | 完整更新:先更新全局 CLI,再用新版原子刷新已安装或检测到的 AI 工具 skill。离线时仍会用当前 CLI 刷新 skill。 |
61
- | `draftgo uninstall [target]...` | 移除指定 AI 工具的 skill 目录(含入口文件 + 子技能 + scripts)。加 `--purge` 会连 `.draftgo/` 一起删。 |
62
- | `draftgo status` | 查看当前项目装了哪些 AI 工具入口、skill 版本。 |
63
- | `draftgo map` | 输出本地 DraftGo 资源地图:页面、导航、DB、脚本、AIHub、文档、系统配置、入口引用,帮助 AI 快速进入项目。 |
64
- | `draftgo check` | 本地资源检查:页面未绑定入口、页面/导航 HTML 解析问题、未登记到 `index.json` 的本地资源文件。 |
65
- | `draftgo verify-ui <url>` | 浏览器 smoke check;支持 `--mobile-check auto|always|never` 和失败截图。 |
66
- | `draftgo api <keyword>` | 查询 DraftGo 底座内置 OpenAPI 端点,输出请求字段、响应结构与鉴权信息;自定义服务端点需从 `app.Route` 推导。 |
67
- | `draftgo deploy [type] [id...]` | 显式交付;`local` 只检查,`preview` dry-run,`deploy` 推送。 |
68
- | `draftgo list-targets` | 列出支持的 AI 工具名。 |
69
- | `draftgo --version` | 打印 CLI 版本。 |
70
- | `draftgo --help` | 查看帮助。 |
71
-
72
- ### 全局选项
41
+ 例如,盘点页面或判断业务模块前先读 `references/architecture.md` 和 `references/modules.md`。页面或导航的分析、修改、交互和 UI 任务先读 `references/frontend.md`;只有涉及路由、会话、`App` API、iframe/全局注入或运行时行为时才追加 `references/runtime.md`,涉及外部资产/CDN、认证、用户输入或不可信内容、敏感数据或配置时才追加 `references/security.md`。静态资源须先区分:平台内置目录直接由 `frontend.md` 说明,指定页面依赖经 MCP 定位、checkout 后本地搜索,服务器全量文件则不能凭现有 Skill、MCP 摘要或 checkout 声称已枚举。`mcp test` 是连接诊断,不是每次资源查询的前置步骤。
73
42
 
74
- - `--project <dir>`:对指定目录操作(默认当前工作目录)。
75
- - `--force`:`init/update` 时强制覆盖已存在的 AI 工具 skill 目录。
76
- - `--skip-update-check`:`update` 时不去 npm 查最新版,直接用当前 CLI 刷新 skill。
77
- - `--purge`:`uninstall` 时连 `.draftgo/`(含 config / 日志 / 本地缓存)一起删。
78
- - `--output json`:`map/check` 输出机器可读 JSON。
79
- - `--strict`:`check` 将提醒项也视为失败。
80
- - `--mobile-check auto|always|never`:控制 `verify-ui` 是否执行,默认 `auto`。
81
- - `--screenshot on-failure|always|never`:控制 UI 截图,默认仅失败时生成。
82
- - `--delivery local|preview|deploy`:控制 `deploy` 的交付级别。
43
+ Skill 说明产品约束、内置能力和操作规则;MCP 说明当前远端状态;checkout 正文才能证明某个页面完整引用了哪些静态资源。汇报时应明确标注这三类证据,不能互相替代。
83
44
 
84
- 版本查询结果缓存 24 小时。可以通过环境变量 `DRAFTGO_NO_UPDATE_CHECK=1` 全局关闭版本检查(离线、CI 等场景)。
45
+ ## 安装与连接
85
46
 
86
- ### 机器可读输出
87
-
88
- `draftgo map --output json` 会输出本地资源地图,适合 Agent 在开发前快速读取上下文;覆盖 pages、navigations、db_meta、custom_scripts、aihub、docs、doc_categories、system_config、roles 和入口引用。AIHub 条目会包含常用配置摘要:
89
-
90
- - `type=model`:模型数量、`supports_response_format`、`supports_json_schema`、图片生成诊断摘要。
91
- - `type=agent`:`mode`、主模型/备用模型、`output_format`、用户选模型配置、工具来源摘要。
92
- - `type=mcp`:传输协议、已发现工具数量。
93
-
94
- 文档会摘要 `slug/category/content_file/status`,系统配置只展示 `config_key/category/value_type/is_sensitive/status`,避免把敏感值直接暴露给 Agent 输出。
47
+ ```bash
48
+ npm install -g draftgo-cli
95
49
 
96
- `draftgo check --output json` 会输出 `{ map, errors, warnings, warningDetails }`,其中 `warningDetails` 带规则编号与置信度。当前只检查页面入口绑定、页面/导航 HTML 解析,以及未登记到 `index.json` 的本地资源文件;`--strict` 会把 warnings 也视为失败。
50
+ cd /path/to/your/project
51
+ draftgo init # 自动识别宿主并安装 DraftGo Skill
52
+ draftgo connect codex # 输入 server 和 SAT,验证 MCP,并配置 Codex
53
+ ```
97
54
 
98
- ## 更新
55
+ 也可以非交互连接:
99
56
 
100
57
  ```bash
101
- cd <your-project>
102
- draftgo update
58
+ draftgo connect codex --server https://draftgo.example --token "$DRAFTGO_SAT"
103
59
  ```
104
60
 
105
- `update` 是唯一的完整更新命令:
106
-
107
- - 如果 CLI 已是最新 → 原子替换每个目标的 skill 资源
108
- - 如果 npm 有新版 → 先全局更新 CLI,再由新版刷新 skill
109
- - 如果 npm 暂不可达 → 保留当前 CLI,并刷新 skill
61
+ `connect` 会先验证 SAT、MCP `initialize`、`tools/list` 和关键 `tools/call`,成功后写入项目私有配置 `.draftgo/config.json`,并尝试为指定或自动检测到的宿主执行 MCP setup。它不会 pull 页面、导航、文档或任何其他业务资源。
110
62
 
111
- 整个过程中,你本地的 `.draftgo/config.json`、`changelog.md`、`lessons/`、`Task/` 等运行时数据都不会被动到。
63
+ 远端暂不可用时,只有显式传入 `--allow-offline` 才会保存配置;恢复后运行 `draftgo mcp test`。使用 `--no-mcp-setup` 可跳过宿主配置。
112
64
 
113
- ## 内置 Skill 文档约定
65
+ `connect` 会把以下运行时路径加入项目 `.gitignore`:
114
66
 
115
- 内置 Skill 同时提供 `resources/skill/manifest.json`:这是 DraftGo 的机器可读元数据(版本、入口、能力和声明权限),为自研宿主或未来平台适配提供统一入口;各 AI 工具仍使用各自的安装入口文件。
116
-
117
- CLI 随包分发的 DraftGo skill 会同步基座 API 约定。集合写入统一为:
118
-
119
- - 创建:`POST /api/<resource>` 支持单个对象或对象数组。
120
- - 批量更新:`PATCH /api/<resource>/batch`,请求体为带 `id` 的对象数组。
121
- - 动态 DB 因为资源带 `type`,批量更新路径是 `PATCH /api/db/{type}/batch`。
122
- - GET 列表请求不传 `page` / `page_size` 时全量返回且无数量上限;任一分页参数传入时正常分页,缺失项按 `page=1` / `page_size=20` 兜底。
123
-
124
- 前端资源约定:
67
+ ```text
68
+ .draftgo/config.json
69
+ .draftgo/token
70
+ .draftgo/worktree/
71
+ .draftgo/conflicts/
72
+ ```
125
73
 
126
- - 壳层源码使用 React 19 + Vite 8 + Tailwind CSS 4;数据库页面和导航使用原生 HTML,不可写入 TSX、ESM import 或 npm 构建产物。数据库页面需要 React 时使用内置 React 18 UMD
127
- - 内置组件库:Ant Design 5.29.3(React 18 UMD)、Basecoat UI 1.0.2(HTML + CSS/JS)、Oat UI 0.7.0(Web Components)。组件清单、运行方式和资源路径见 `resources/skill/references/frontend.md`;该文档不规定选型。
128
- - `/assets/adapters/draftgo-ui.js` 提供 `window.DraftGoUI` 和 `DraftGoUI.load(name)`;Basecoat/Oat 的主题适配资源为 `/assets/adapters/draftgo-theme.css`,加载顺序见 `resources/skill/references/frontend.md`。
129
- - DraftGo 基座内置 SVG 图标库,运行时路径为 `/assets/icons/{name}.svg`。
130
- - 图标文件统一使用 `kebab-case.svg` 命名;完整映射见 `/assets/icons/manifest.json`。
131
- - 页面或导航栏需要单色图标时,优先用 CSS mask + `currentColor`,可自动适配深浅主题。
132
- - html2canvas 1.4.1 已内置,页面需要截图 / 导出图片时优先使用本地路径 `/assets/vendor/html2canvas/html2canvas.min.js`;确需 CDN 时优先使用国内镜像引入。
74
+ SAT 只从 `.draftgo/config.json` 读取。宿主 MCP 配置、命令输出和错误信息都不应包含 SAT
133
75
 
134
- Go 自定义服务通过 `draftgo.DB.CreateMany(...)` 与 `draftgo.DB.UpdateMany(...)` 批量写入动态数据。
76
+ ## MCP 命令
135
77
 
136
- 自定义服务(Custom Scripts)约定:
78
+ ```bash
79
+ draftgo mcp setup [target...] # 写入或合并项目级 MCP 配置
80
+ draftgo mcp status [target...] # 检查配置是否存在且不含敏感连接参数
81
+ draftgo mcp test # 验证 initialize、tools/list、关键 tools/call
82
+ draftgo mcp serve # 启动 stdio -> 远端 Streamable HTTP bridge
83
+ ```
137
84
 
138
- - 自定义服务使用 Go:导入内置 `draftgo/sdk`,实现 `Register(app *sdk.App)`,调用 `app.Route`、`app.On` `app.Schedule` 后即可自动注册。服务在独立 Go 子进程中构建和执行;标准库与 `go.mod` 中声明的兼容依赖可用。
139
- - 本地资源在 `.draftgo/custom_scripts/`;元数据写在 `index.json`,代码文件以每条记录的 `code_file` 为准。推送时 `draftgo_push.py custom_scripts` 只读取 `code_file` 指向的文件。
140
- - 新服务使用 `mode=mixed`,`Register` 内的 `app.Route`、`app.On`、`app.Schedule` 会自动形成完整触发器清单;旧 `triggers` 字段不参与 Go 注册。
141
- - `slug=<slug>` 是服务命名空间;`app.Route("GET", "/items", handler)` 映射为 `GET /api/x/<slug>/items`。一个服务可同时注册多个路由、事件和定时任务。
142
- - Go handler 签名为 `func handler(draftgo *sdk.Context) (any, error)`;普通值直接返回,需要状态码或响应头时使用 `draftgo.Respond(...)`。
143
- - 第三方依赖写在同一条 index 元数据的 `go_mod` / `go_sum`;推送后应真实请求无副作用 GET 端点验证,不要只看 `OK script_id=...`。
144
- - `app.On("user.registered", handler)` 可重复声明;同一服务既能监听多个事件,也能为同一事件注册多个 handler。
145
- - Route 输入在 `draftgo.Input`(`body`、`query_params`、`headers`、`method`、`path_params`);当前用户用 `draftgo.Auth.CurrentUser()` 获取。普通值可直接返回,需要状态码或响应头时用 `draftgo.Respond(...)`。
146
- - 动态数据使用 `draftgo.DB.Query(type, sdk.QueryOptions{...})`;完整 Go SDK 见 `references/custom-services.md`。
147
- - 管理面按 `scripts:read/create/update/delete/execute` 接入角色 RBAC;获得创建/编辑权限的用户属于可信代码编辑者。调用面仍由每个 route 的 `permission` 与 `config.route_security` 独立控制,管理权限不会绕过调用权限。
148
- - 服务可用 `config.max_concurrency` / `queue_timeout_ms` 设置并发退避;出站请求使用 `draftgo.HTTP`,饱和 Route 返回 HTTP 429。
149
- - 完整 SDK(users/db/auth/notify/http/cache/config/log,以及 AIHub/知识库/Memory/Skill/MCP 的推理与 CRUD)、各触发类型 `draftgo`、管理 API 和部署限制见 [`resources/skill/references/custom-services.md`](resources/skill/references/custom-services.md)。
85
+ `setup` 不传 target 时自动检测当前项目的宿主。可用 `--target codex,cursor` 传入多个目标。
150
86
 
151
- AIHub Agent 用户选模型约定:
87
+ 当前 MCP 宿主支持:
152
88
 
153
- - 新页面的 AI 对话 UI 先引入 `/assets/draftgo-chat.js`,再使用 `<dg-chat protocol="draftgo-agent" agent-id="AGENT_ID">` 或 `DraftGoChat.create()`;完整规则见 `resources/skill/references/chat-sdk.md`。
154
- - `DraftGoAI.chat/images/getSelectableModels` 是同一脚本提供的旧兼容门面,不由壳层默认注入,也不应替代新页面的 `<dg-chat>` 对话 UI。
155
- - 管理端在 Agent `data.spec.model_selection.user_selectable=true` 后,页面可通过 Chat SDK 模型选择器,或兼容接口 `DraftGoAI.getSelectableModels(agentId)` 获取 `{ user_selectable, models }`。
156
- - `models` 是该 Agent 的主模型 + 备用模型白名单,不是供应商全量模型列表。
157
- - 调用 `DraftGoAI.chat(...)` 或 `DraftGoAI.images(...)` 时,可在 `options.model` 中传入用户选择的模型;后端会继续按 Agent 白名单校验。
89
+ | 宿主 | 项目配置 | 状态 |
90
+ |---|---|---|
91
+ | Codex CLI | `.codex/config.toml` | 支持 |
92
+ | Claude Code | `.mcp.json` | 支持 |
93
+ | Cursor | `.cursor/mcp.json` | 支持 |
94
+ | Gemini CLI | `.gemini/settings.json` | 支持 |
95
+ | Kiro | `.kiro/settings/mcp.json` | 支持 |
96
+ | GitHub Copilot | `.vscode/mcp.json` | 支持 |
97
+ | Windsurf | - | 不支持项目级 MCP setup |
98
+ | Antigravity | - | 不支持项目级 MCP setup |
158
99
 
159
- AIHub Agent JSON 输出约定:
100
+ Codex 配置由 `draftgo mcp setup codex` 合并为:
160
101
 
161
- - Agent 的结构化输出写在 `data.spec.output_format` 中;`mode="json"` 表示要求 JSON 输出。
162
- - `data.spec.output_format.json.strategy` 支持 `auto`、`native`、`prompt`:`auto` 会优先使用模型资产的 `supports_response_format/supports_json_schema` 诊断结果,必要时降级为提示词约束。
163
- - `data.spec.output_format.json.schema` 可传 JSON Schema;后端会尽量构造 OpenAI 兼容 `response_format`,流式响应结束时会追加 `json.validation` 事件。
164
- - 模型资产可通过 `POST /api/aihub/{id}/test-response-format` 探测并写回 `supports_response_format` 与 `supports_json_schema`。
102
+ ```toml
103
+ [mcp_servers.draftgo]
104
+ command = "draftgo"
105
+ args = ["mcp", "serve"]
106
+ ```
165
107
 
166
- 示例:
108
+ 其他支持的宿主同样只保存 stdio 命令。例如 Claude Code、Cursor、Gemini 和 Kiro 使用 `mcpServers.draftgo`:
167
109
 
168
110
  ```json
169
111
  {
170
- "data": {
171
- "schema_version": "agent.v3",
172
- "spec": {
173
- "model_id": 1,
174
- "model": "gpt-4.1",
175
- "output_format": {
176
- "mode": "json",
177
- "json": {
178
- "strategy": "auto",
179
- "schema_name": "summary",
180
- "schema": {
181
- "type": "object",
182
- "properties": {
183
- "title": { "type": "string" },
184
- "tags": { "type": "array", "items": { "type": "string" } }
185
- },
186
- "required": ["title", "tags"],
187
- "additionalProperties": false
188
- }
189
- }
190
- }
112
+ "mcpServers": {
113
+ "draftgo": {
114
+ "command": "draftgo",
115
+ "args": ["mcp", "serve"]
191
116
  }
192
117
  }
193
118
  }
194
119
  ```
195
120
 
196
- ## 自动识别的依据
121
+ GitHub Copilot 使用 `.vscode/mcp.json` 的 `servers.draftgo`,并额外写入 `"type": "stdio"`。这些文件不包含 server、SAT、header 或环境变量;bridge 在运行时从当前项目读取私有配置。
197
122
 
198
- | AI 工具 | 探测信号(任一命中即视为在用) |
199
- |---|---|
200
- | Claude Code | `.claude/` 或 `CLAUDE.md` |
201
- | Kiro | `.kiro/` |
202
- | Cursor | `.cursor/` |
203
- | Windsurf | `.windsurf/` |
204
- | Antigravity | `.agent/` |
205
- | GitHub Copilot | `.github/prompts/` 或 `.github/copilot-instructions.md` |
206
- | Codex CLI | `.codex/` 或 `AGENTS.md` |
207
- | Gemini CLI | `.gemini/` 或 `GEMINI.md` |
123
+ DraftGo MCP 预期提供以下工具:
208
124
 
209
- 若未命中任何信号,请用 `draftgo init all` 或 `draftgo init <target>` 手动指定。
125
+ - `draftgo_project_overview`
126
+ - `draftgo_resource_list`
127
+ - `draftgo_resource_search`
128
+ - `draftgo_resource_get_metadata`
129
+ - `draftgo_resource_read_fragment`
130
+ - `draftgo_api_search`
131
+ - `draftgo_api_describe`
132
+ - `draftgo_api_call`
210
133
 
211
- ## 产物结构
134
+ ## 标准工作流
212
135
 
213
- 每个 AI 工具拿到完整的核心说明(SKILL.md + 子技能 + rules + scripts)。大型 OpenAPI 快照只在 `.draftgo/skill-shared/` 保存一份,避免多个工具重复复制;也可直接用 `draftgo api <keyword>` 查询。
136
+ 陌生项目先通过 MCP 获取概览,再按需搜索、列出或读取资源元数据:
214
137
 
138
+ ```text
139
+ project_overview -> resource_search/resource_list -> get_metadata/read_fragment
215
140
  ```
216
- <project>/
217
- ├── .draftgo/ # 运行时数据(CLI 不会覆盖你这里的内容)
218
- │ ├── config.json # init / connect 后生成(已加入 .gitignore)
219
- │ ├── token # connect 后生成(已加入 .gitignore)
220
- │ ├── changelog.md # 更新日志(按日期分节)
221
- │ ├── Task/ # 每个开发任务一个 md,含需求 / 设计 / 任务标记
222
- │ ├── lessons/ # 开发经验、踩坑记录、基座局限场景
223
- │ ├── pages/ navigations/ ... # init 拉取的本地缓存
224
- │ ├── skill-shared/references/api.json # 多 AI 工具共享的 OpenAPI 快照
225
- │ └── .version # CLI 写入:当前已装 skill 的版本
226
-
227
- └── (AI 工具 skill 目录,按需写入;每份都是完整副本)
228
- .claude/skills/draftgo/{SKILL.md, init/, push/, pull/, story/, rules/, scripts/}
229
- .codex/skills/draftgo/{SKILL.md, ...}
230
- .gemini/skills/draftgo/{SKILL.md, ...}
231
- .cursor/commands/draftgo.md + .cursor/commands/draftgo/{...}
232
- .windsurf/workflows/draftgo.md + .windsurf/workflows/draftgo/{...}
233
- .agent/workflows/draftgo.md + .agent/workflows/draftgo/{...}
234
- .kiro/steering/draftgo.md + .kiro/steering/draftgo/{...}
235
- .github/prompts/draftgo.prompt.md + .github/prompts/draftgo/{...}
236
- ```
237
-
238
- `config.json` 的 `auto_push` 默认是 `false`。AI 在每次完成本地验证后调用 `draftgo auto-push`;仅当你将该值改为 `true` 时,命令才会继续执行 `check → push`。直接执行 `draftgo push` 或 `draftgo deploy` 仍属于显式推送,不受此开关限制。
239
-
240
- > 渲染时 SKILL.md 中的 `{{SKILL_DIR}}` / `{{SKILL_SCRIPTS}}` 会被替换成当前 AI 工具自身的目录,确保子技能、rules、scripts 引用永远指向同一个工具的副本。CLI **不会** 改写你的 `AGENTS.md` / `GEMINI.md`。
241
-
242
- ---
243
-
244
- ## v3.0.30 升级要点(自定义服务 AI SDK)
245
-
246
- - 内置 Skill 补齐 AIHub 推理、Embedding、Agent/Prompt/Skill/MCP 资产 CRUD,以及供应商、模型路由和运行记录接口。
247
- - 增加知识库、文档、Chunk、长期记忆的 Go SDK 说明,包含文件上传、检索、重建索引和管理员同构入口。
248
- - 记录 `config.aihub` 推理开关与 Agent/模型白名单,并为全部新 SDK 能力增加文档契约测试。
249
-
250
- ## v3.0.28 升级要点(同步可靠性)
251
-
252
- - 修复导航 pull:列表元数据会逐条获取详情 HTML,避免空内容覆盖本地导航。
253
- - 指定 ID 的 pull 改为合并索引;请求失败、详情缺失或响应不完整时返回非零,保留本地缓存。
254
- - `draftgo push` 支持默认全量推送;`deploy --delivery preview` 使用无副作用的 dry-run 预览。
255
141
 
256
- ## v3.0.27 升级要点(自动推送与索引恢复)
142
+ 编辑完整页面、导航或文档正文:
257
143
 
258
- - 新增 `draftgo auto-push`:始终先运行本地 `check`,仅在 `.draftgo/config.json` 的 `auto_push: true` 时继续推送;关闭时保留验证并返回未推送信息。
259
- - 支持 `draftgo auto-push --batch`,并行任务也受同一开关约束。
260
- - 指定资源缺少 `index.json` 条目时,push 会回读云端;资源存在则补齐元数据并继续推送本地文件,资源不存在则提示清理本地孤儿文件。
261
-
262
- ---
263
-
264
- ## v2.0.3 升级要点(操作型页面空间利用)
265
-
266
- CLI v2.0.3 补充操作型页面的空间模型,重点解决后台管理 / 表格 / 列表页面按普通文档流布局时,数据少导致分页、保存栏、批量操作区上浮,页面空间利用不足的问题。
267
-
268
- **核心变化:**
269
-
270
- - **工作台布局原则**:后台管理、表格、列表、审批、配置、内容维护等操作型页面,优先让页面根容器占满可用视口 / iframe 内容区。
271
- - **稳定控制区**:顶部筛选、搜索、标题操作区保持稳定高度,底部分页、批量操作栏、保存栏等流程控制区保持在工作区底部或稳定位置。
272
- - **数据区承接剩余空间**:主体数据区使用 `flex:1; min-height:0; overflow:auto` 等结构承接剩余空间,数据少时保留工作区空白,数据多时优先让数据区内部滚动。
273
- - **工作台结构同步**:`references/frontend.md` 补充操作型页面的空间方法,基座对应文档为 `docs/frontend/rules.md`,避免分页跟随 1-2 条数据上浮。
144
+ ```bash
145
+ draftgo checkout pages 42
146
+ # 编辑 .draftgo/worktree/pages/page_42.html
147
+ draftgo check
148
+ draftgo verify-ui http://localhost:5173 # UI 变更时
149
+ draftgo diff pages 42
150
+ draftgo commit pages 42
151
+ ```
274
152
 
275
- ---
153
+ 只查询长内容时,优先使用 MCP 搜索和片段工具;需要全文分析或编辑时才 checkout。不要要求 MCP 返回完整 HTML 或 Markdown。
276
154
 
277
- ## v2.0.2 升级要点(统一目标识别信号)
155
+ 结构化资源使用 `draftgo_api_search` / `draftgo_api_describe` 查实时契约,再用 `draftgo_api_call` 操作。AIHub Agent、Prompt、MCP、Skill、供应商和模型路由也属于实时结构化资源,不写本地快照;供应商密钥或 header 值不得出现在 Agent 输出中。
278
156
 
279
- CLI v2.0.2 进一步完善 `draftgo update` 的目标识别逻辑,避免只修到单个工具而遗漏其他 AI 工具。
157
+ ## 命令清单
280
158
 
281
- **核心变化:**
159
+ ### Skill 与连接
282
160
 
283
- - **平台定义成为单一信号源**:每个 AI 工具的入口文件、skill 目录和项目级探测信号统一维护在 `platforms.js`,`init / update / status` 共用同一份识别依据。
284
- - **update 覆盖所有检测到的工具**:不传 target 时,`draftgo update` 会合并“已安装 skill 的目标”和“项目中检测到的 AI 工具信号”,并刷新全部命中的工具。
285
- - **全平台测试覆盖**:单测现在会同时模拟 Claude Code、Cursor、Windsurf、Antigravity、Kiro、GitHub Copilot、Codex、Gemini 的项目级信号,防止后续再出现只命中部分工具的问题。
161
+ | 命令 | 说明 |
162
+ |---|---|
163
+ | `draftgo init [target]...` | 安装 Skill;不传 target 时自动识别,`all` 表示全部。 |
164
+ | `draftgo update [target]...` | 更新全局 CLI,并原子刷新已安装或检测到的 Skill。 |
165
+ | `draftgo uninstall <target|all>` | 移除指定宿主的 Skill;`--purge` 还会删除整个 `.draftgo/`。 |
166
+ | `draftgo status` | 显示已安装宿主和 Skill 版本。 |
167
+ | `draftgo connect [target]...` | 验证并保存 server/SAT,随后配置宿主 MCP;不下载业务资源。 |
168
+ | `draftgo list-targets` | 列出可安装 Skill 的 AI 宿主。 |
286
169
 
287
- ---
170
+ ### 发现、正文和冲突
288
171
 
289
- ## v2.0.1 升级要点(update 目标识别修复)
172
+ | 命令 | 说明 |
173
+ |---|---|
174
+ | `draftgo map` | 通过 MCP 读取远端项目概览和资源列表,再叠加本地 checkout 状态。 |
175
+ | `draftgo checkout <pages|nav|docs> <id...>` | 下载完整正文和 base,校验 hash 后原子落盘;`--force` 可显式覆盖已修改的本地正文。 |
176
+ | `draftgo check` | 只检查 checkout manifest、worktree 文件、base/hash、扩展名、HTML 结构和已 checkout 导航引用。 |
177
+ | `draftgo diff <pages|nav|docs> <id>` | 显示 checkout base 与当前本地正文的差异。 |
178
+ | `draftgo commit <pages|nav|docs> <id...>` | 本地校验后,通过专用 HTTP 上传完整正文并更新 base/manifest。 |
179
+ | `draftgo conflicts` | 列出未解决冲突;存在冲突时返回非零。`--all` 包括已解决记录。 |
180
+ | `draftgo conflict show <type> <id>` | 显示冲突的 base/local/remote/worktree 路径。 |
181
+ | `draftgo conflict resolve <type> <id>` | 确认 worktree 已合并,把保留的 remote 设为新 base;随后重新 check、diff、commit。 |
182
+ | `draftgo verify-ui <url>` | 使用 Playwright 执行确定性的浏览器 smoke check。 |
290
183
 
291
- CLI v2.0.1 修复 `draftgo update` 空参数时只刷新部分工具的问题。
184
+ `pages`、`page`,`nav`、`navigation`、`navigations`,以及 `docs`、`doc`、`article`、`articles`、`docs/articles` 都会规范化到三个支持的正文类型。
292
185
 
293
- **核心变化:**
186
+ ### 实时 API 与交付
294
187
 
295
- - **update 合并识别目标**:不传 target 时,`draftgo update` 会同时刷新“已安装 skill 的目标”和项目中可检测到的 AI 工具信号(如 `.claude`、`.codex`、`AGENTS.md`)。
296
- - **Codex 项目级目录不再漏刷**:项目里已有 `.codex` 但 Codex skill 尚未落地时,update 也会主动写入 `.codex/skills/draftgo/`。
188
+ | 命令 | 说明 |
189
+ |---|---|
190
+ | `draftgo api <query>` | 通过 MCP `api_search` 查询实时 API 契约。 |
191
+ | `draftgo api search <query>` | `draftgo api <query>` 的显式搜索形式。 |
192
+ | `draftgo api describe <operation_id>` | 通过 MCP `api_describe` 查看指定操作。 |
193
+ | `draftgo delete <operation_id> [id]` | 描述并确认后调用实时 MCP `api_call`;支持 `--params JSON`、`--input file` 和 `--yes`。 |
194
+ | `draftgo deploy [<type> <id...>]` | 先 `check`,再按 delivery 模式检查 diff 或 commit。仅 `--delivery local` 可省略 type/id。 |
195
+ | `draftgo auto-push [<type> <id...>]` | `auto_push: true` 时检查并 commit 已 checkout 的变更;有冲突立即停止。 |
196
+ | `draftgo pull` | 仅输出迁移提示并返回非零;永不下载资源。 |
197
+ | `draftgo push <type> <id...>` | 已弃用;仅对 pages/nav/docs 显示提示后转发到 `commit`。不支持 push-all 或结构化资源。 |
297
198
 
298
- ---
199
+ `deploy` 的 `--delivery local` 只运行检查,`preview` 运行检查并显示 diff,`deploy` 运行检查后 commit 指定正文。它不会遍历旧索引。`push --dry-run` 只显示指定正文的 diff。
299
200
 
300
- ## v2.0.0 升级要点(精简 skill 包体)
201
+ `auto-push` 不传 id 时只处理 manifest 中已修改的 checkout;项目未连接或 `auto_push` 未启用时安全跳过。
301
202
 
302
- CLI v2.0.0 删除了内置 `resources/skill/reference/` 基座参考副本,进一步精简安装到各 AI 工具中的 DraftGo skill 包体。
203
+ ### 本地 DraftGo
303
204
 
304
- **核心变化:**
205
+ | 命令 | 说明 |
206
+ |---|---|
207
+ | `draftgo local setup` | 生成 `.draftgo/docker/docker-compose.yaml`,初始化并启动本地 DraftGo 栈。 |
208
+ | `draftgo local start` | 启动本地栈;`up` 是兼容别名。 |
209
+ | `draftgo local stop` | 停止本地栈;`down` 是兼容别名。 |
210
+ | `draftgo local logs [service...]` | 查看日志;不传服务时跟随 `app`。 |
211
+ | `draftgo local status` | 显示容器状态;`ps` 是兼容别名。 |
212
+ | `draftgo local-dev` | `draftgo local setup` 的兼容入口。 |
213
+
214
+ 本地 Docker、MySQL、Redis、Milvus 和 app 生命周期与 MCP/checkout 工作流相互独立。
215
+
216
+ ## Worktree 与 manifest
217
+
218
+ ```text
219
+ .draftgo/
220
+ ├── config.json
221
+ ├── worktree/
222
+ │ ├── manifest.json
223
+ │ ├── pages/
224
+ │ ├── navigations/
225
+ │ ├── docs/
226
+ │ └── .base/
227
+ └── conflicts/
228
+ ```
305
229
 
306
- - **移除 reference 目录**:不再随 CLI 分发 OpenAPI 与前端 runtime 源码副本,减少安装体积和过期参考带来的误导。
307
- - **规则以当前 skill 为准**:开发时优先依据 `SKILL.md`、`rules/`、`init/pull/push/story` 子技能和本地 `.draftgo/` 数据推进。
308
- - **避免源码级参考漂移**:基座能力变化时,不再依赖 CLI 内置快照推断行为,降低旧 reference 与真实运行时不一致的风险。
230
+ `.draftgo/worktree/manifest.json` 使用 `schema_version: 1`,条目键为规范化类型和 id,例如 `pages:42`。每个条目记录:
309
231
 
310
- ---
232
+ - `server`、`resource_type`、`resource_id`
233
+ - `title`、`route` / `code` / `slug`
234
+ - `local_path`、`base_path`
235
+ - `content_type`、`file_extension`、`content_size`
236
+ - `base_version`、`base_revision`、`base_etag`、`base_hash`
237
+ - `checked_out_at`,commit 后还会记录更新时间
311
238
 
312
- ## v1.6.1 升级要点(前端规则收敛)
239
+ 已知正文类型保持原始字节和语义:`text/html` 使用 `.html`,Markdown 使用 `.md`,纯文本使用 `.txt`,其他类型使用底座返回且通过安全校验的扩展名。CLI 不转换 HTML、Markdown 或正文编码。
313
240
 
314
- CLI v1.6.1 继续优化开发效果:减少前端规则中过细的“适合 / 不适合”和固定模板描述,让 AI 在满足平台硬约束的前提下,根据页面目标和业务复杂度做实现判断。
241
+ checkout 会通过 MCP 获取元数据和专用下载地址,流式写入临时文件,同时校验 content type、大小和 SHA-256,再原子安装 local/base 并写 manifest。commit 会校验本地结构,携带 checkout 时的 version/revision/ETag,通过专用 HTTP 上传原始正文;完整正文不会成为 MCP tool 参数。
315
242
 
316
- **核心变化:**
243
+ ## 冲突处理
317
244
 
318
- - **前端规则收敛**:DraftGo 规则关注本地资源、运行时 API、入口绑定、真实数据和验证方法。
319
- - **GSAP 资源改为按需使用**:本地 GSAP 资源仍可用,但 CLI 不再给出使用场景判断。
320
- - **表格规则去模板化**:不再要求固定搜索、高级筛选、列配置、分页结构,具体界面由 Agent 和本地 UI Skills 判断。
321
- - **状态规则保留方法约束**:空态、加载态、错误态、成功态必须存在,但具体呈现不由 CLI 指定。
245
+ 远端对 commit 返回 HTTP 409/412 时,CLI 不重试、不 force,也不会覆盖 worktree local。它会在以下目录保存冲突材料并返回非零:
322
246
 
323
- ---
247
+ ```text
248
+ .draftgo/conflicts/<pages|navigations|docs>/<id>/
249
+ ├── conflict.json
250
+ ├── base.<ext>
251
+ ├── local.<ext>
252
+ └── remote.<ext>
253
+ ```
324
254
 
325
- ## v1.6.0 升级要点(开发任务规划升级)
255
+ 处理流程:
326
256
 
327
- CLI v1.6.0 强化了 skill 对“开发任务规划”的判断力,重点解决新页面 / 新功能只做成静态展示页、漏后台管理、漏真实数据、漏导航入口的问题。
257
+ 1. `draftgo conflict show <type> <id>` 定位三份材料和 worktree 文件。
258
+ 2. 在 worktree 文件中人工或借助可靠的三方合并工具完成合并。
259
+ 3. `draftgo conflict resolve <type> <id>` 校验 worktree,并把冲突时保存的 remote 版本设为新 base。
260
+ 4. 重新运行 `draftgo check`、必要时 `verify-ui`、`draftgo diff`,最后 `draftgo commit`。
328
261
 
329
- **核心变化:**
262
+ ## map 与 check 输出
330
263
 
331
- - **用户意图翻译**:当用户用非技术语言描述“案例库、新闻中心、产品中心、预约、资料下载”等业务目标时,AI 会先识别它是页面、多页面还是完整功能模块,而不是要求用户说出 CRUD、API、路由等开发术语。
332
- - **页面默认完整功能**:用户说“做一个页面”时,默认按可真实使用的页面功能处理;只有明确说“静态 / 纯页面 / 原型 / 先看效果”时,才按静态页处理。
333
- - **用户路径链路**:功能规划从“用户打开官网 / 系统入口 → 看见入口 → 点击进入 → 操作 → 反馈 → 后台维护 → 前台展示更新”这一整条链路倒推页面、导航、数据和权限。
334
- - **新增页面绑定**:创建页面后必须绑定到导航栏、首页入口、后台菜单或相关页面按钮之一;只创建页面文件、无法从正常路径点击进入,不算完成。
335
- - **真实落地闭环**:按钮、表单、搜索、筛选、分页、保存、删除、发布等交互默认要真实有效;需要可维护内容时,优先规划后台管理和同一份真实数据,追求高可用。
264
+ `draftgo map --output json` 返回:
336
265
 
337
- 这些规则已改为按事实触发:资源关系不清时 map,页面改动检查入口和 HTML,数据/API/服务只读取对应契约,运行和布局改变才做浏览器验证。Task 和 Story 仅在需要产品决策沉淀或跨资源交接时使用。
266
+ ```json
267
+ {
268
+ "server": "https://draftgo.example",
269
+ "overview": {},
270
+ "resources": [],
271
+ "checkouts": [],
272
+ "legacy_cache": { "ignored": true, "detected": [] }
273
+ }
274
+ ```
338
275
 
339
- ---
276
+ `draftgo check --output json` 返回 `{ map, errors, warnings, warningDetails, legacy_cache_ignored }`。`--strict` 会把 warnings 也视为失败。`check` 不访问远端,也不会读取旧全量资源索引。
340
277
 
341
- ## init / push 的正确运行方式
278
+ ## Skill 与领域约定
342
279
 
343
- skill 内置两个 Python 脚本。**不要用 curl / npx 代替**,脚本会处理 token、字段结构、错误日志。脚本被复制到每个 AI 工具自己的 skill 目录下,例如 Claude Code `.claude/skills/draftgo/scripts/`。
280
+ 安装到每个宿主的 DraftGo Skill 包含主 `SKILL.md`、`init` / `push` / `story` 子技能、references,以及 scripts 扩展约束。实时 API 契约以 MCP `api_search` / `api_describe` 为准;references 保留 API 无法表达的领域知识和实践约束。
344
281
 
345
- ```bash
346
- # 以 Claude Code 安装位置为例(其它工具替换路径前缀即可)
347
- python .claude/skills/draftgo/scripts/draftgo_init.py --server <url>
348
- python .claude/skills/draftgo/scripts/draftgo_push.py pages [page_id]
349
- python .claude/skills/draftgo/scripts/draftgo_push.py nav [nav_id]
350
- python .claude/skills/draftgo/scripts/draftgo_push.py db_meta [meta_id]
351
- ```
282
+ 前端和自定义服务的关键约定仍然适用:
352
283
 
353
- > token 通过环境变量 `DRAFTGO_TOKEN` 传入,脚本不接受命令行 `--token`。
284
+ - 壳层源码使用 React 19 + Vite 8 + Tailwind CSS 4;数据库页面和导航使用原生 HTML,不写入 TSX、ESM import 或 npm 构建产物。
285
+ - 内置 UI、图标、Chat SDK、AIHub 结构化输出和页面布局规则见 `resources/skill/references/`。
286
+ - 自定义服务使用 Go `draftgo/sdk`,通过 `Register(app *sdk.App)` 注册 Route、事件和定时任务;管理权限、调用权限、并发和出站请求约束见 `resources/skill/references/custom-services.md`。
287
+ - 自定义服务、数据、AIHub、权限和系统配置通过实时 MCP/API 操作,不从 `.draftgo/*/index.json` 推断远端状态。
354
288
 
355
- 更推荐的用法:在 AI 工具里说「初始化 draftgo 项目」或「同步页面 123」,skill 会自动触发对应脚本。
289
+ `draftgo update` 只刷新 CLI 和 Skill 资源,不覆盖项目的 `.draftgo/config.json`、worktree、冲突材料、Task、lessons changelog。渲染 Skill 时,`{{SKILL_DIR}}` / `{{SKILL_SCRIPTS}}` 会替换为当前宿主目录;CLI 不改写项目的 `AGENTS.md` 或 `GEMINI.md`。
356
290
 
357
- ## Story
291
+ ## 常用选项
358
292
 
359
- `.draftgo/story.yaml` 用于沉淀会影响后续取舍的产品定位与决策。已有 Story 且请求触及定位或既有决策时读取;用户要求建立、更新或冲突检查时调用 `story/SKILL.md`。
293
+ - `--project <dir>`:操作指定项目目录,默认当前目录。
294
+ - `--output json`:为 map、check、checkout、commit、diff、conflicts、conflict、api 或 delete 输出 JSON。
295
+ - `--strict`:check/deploy/auto-push 将 warnings 视为失败。
296
+ - `--force`:init 覆盖已有 Skill;checkout 显式覆盖已修改的本地正文。update 始终刷新目标 Skill。
297
+ - `--purge`:uninstall 时同时删除整个 `.draftgo/` 运行时目录。
298
+ - `--skip-update-check`:update 不访问 npm,直接用当前 CLI 刷新 Skill。
299
+ - `--connect` / `--local-dev` / `--no-setup`:控制 init 安装 Skill 后的基座处理流程。
300
+ - `--target <name,...>`:为 MCP setup/status 指定一个或多个宿主。
301
+ - `--server <url>` / `--token <sat>`:非交互 connect;不传时安全提示输入。
302
+ - `--allow-offline` / `--no-mcp-setup`:允许 connect 在 MCP 暂不可用时保存,或跳过宿主配置。
303
+ - `--yes`:跳过支持该选项的交互确认。
304
+ - `--mobile-check auto|always|never`:控制 `verify-ui` 是否执行。
305
+ - `--screenshot on-failure|always|never`:控制 UI 截图。
306
+ - `--delivery local|preview|deploy`:控制 deploy 行为。
307
+ - `--timeout <ms>`:控制 connect/MCP test 超时。
360
308
 
361
- ---
309
+ 设置 `DRAFTGO_NO_UPDATE_CHECK=1` 可关闭 npm 版本检查,适用于离线或 CI 环境。
362
310
 
363
311
  ## 许可证
364
312
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "draftgo-cli",
3
- "version": "3.0.35",
3
+ "version": "3.0.38",
4
4
  "description": "Install and manage the DraftGo skill across AI coding agents (Claude Code, Codex, Cursor, Windsurf, Antigravity, Copilot, Gemini, Kiro).",
5
5
  "bin": {
6
6
  "draftgo": "bin/draftgo.js"
@@ -45,8 +45,12 @@
45
45
  "lint": "node scripts/check-syntax.js",
46
46
  "validate:skill": "node scripts/validate-skill.js",
47
47
  "verify:package": "node scripts/verify-package.js",
48
- "test": "npm run lint && npm run validate:skill && npm run verify:package && node tests/unit.js && node tests/e2e.js",
48
+ "test": "npm run lint && npm run validate:skill && npm run verify:package && npm run test:unit && npm run test:mcp && npm run test:worktree && npm run test:migration && npm run test:local && npm run test:e2e",
49
49
  "test:unit": "node tests/unit.js",
50
+ "test:mcp": "node tests/mcp.test.js",
51
+ "test:worktree": "node tests/worktree.test.js",
52
+ "test:migration": "node tests/migration.test.js",
53
+ "test:local": "node tests/local-runtime.js",
50
54
  "test:e2e": "node tests/e2e.js"
51
55
  },
52
56
  "dependencies": {