Files
msd-core/docs/zh-CN/CLI-TOOLS.md
Tom Boucher 3bb2f8f1c5 docs: rebrand to GSD Core and restructure docs with Diataxis (#605)
* chore: wire docs/agents config into AGENTS.md Agent skills section

Add the `## Agent skills` discovery block pointing the engineering
skills at the existing docs/agents/{issue-tracker,triage-labels,domain}.md
files (issue tracker, triage label mapping, single-context domain docs).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* docs: rebrand to GSD Core and restructure docs with Diataxis

Reorganise the root README and docs/ around the Diataxis framework
(tutorials, how-to guides, reference, explanation), add new how-to
guides and schema references (STATE.md / CONTEXT.md / PLAN.md /
planning artifacts), and cross-link the whole set. Update the lone
legacy gsd-build reference to open-gsd; keep internal get-shit-done/
filesystem paths unchanged (directory rename tracked separately in
open-gsd/gsd-core#604). Regenerate the ja-JP, ko-KR, pt-BR and zh-CN
localised trees to mirror the new structure.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* docs: backfill changeset PR number (#605)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-02 08:13:09 -04:00

500 lines
17 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.
# GSD CLI 工具参考
> `gsd-tools` CLI(`get-shit-done/bin/gsd-tools.cjs`)参考文档。斜杠命令与用户流程请参见[命令参考](COMMANDS.md)。返回[文档索引](README.md)。
---
## 概述
`gsd-tools.cjs` 集中处理配置解析、模型解析、阶段查找、Git 提交、摘要验证、状态管理以及模板操作,供 GSD 命令、工作流和代理使用。
| | |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **发布路径** | `get-shit-done/bin/gsd-tools.cjs` |
| **实现** | `get-shit-done/bin/lib/` 下的 20 个领域模块(以该目录为准) |
| **状态** | 编排、工作流和自动化的主要运行时命令接口。 |
**用法(CJS):**
```bash
node gsd-tools.cjs <command> [args] [--raw] [--cwd <path>]
```
**全局标志(CJS):**
| 标志 | 说明 |
| -------------- | ---------------------------------------------------------------------------- |
| `--raw` | 机器可读输出(JSON 或纯文本,无格式) |
| `--cwd <path>` | 覆盖工作目录(用于沙箱子代理) |
| `--ws <name>` | `.planning/workstreams/<name>` 路径的工作流上下文 |
---
## 状态命令
管理 `.planning/STATE.md`——项目的活动记忆。
```bash
# 以 JSON 格式加载完整项目配置和状态
node gsd-tools.cjs state load
# 以 JSON 格式输出 STATE.md frontmatter
node gsd-tools.cjs state json
# 更新单个字段
node gsd-tools.cjs state update <field> <value>
# 获取 STATE.md 内容或特定章节
node gsd-tools.cjs state get [section]
# 批量更新多个字段
node gsd-tools.cjs state patch --field1 val1 --field2 val2
# 递增计划计数器
node gsd-tools.cjs state advance-plan
# 记录执行指标
node gsd-tools.cjs state record-metric --phase N --plan M --duration Xmin [--tasks N] [--files N]
# 重新计算进度条
node gsd-tools.cjs state update-progress
# 添加决策
node gsd-tools.cjs state add-decision --summary "..." [--phase N] [--rationale "..."]
# 或从文件读取:
node gsd-tools.cjs state add-decision --summary-file path [--rationale-file path]
# 添加/解决阻塞项
node gsd-tools.cjs state add-blocker --text "..."
node gsd-tools.cjs state resolve-blocker --text "..."
# 记录会话连续性
node gsd-tools.cjs state record-session --stopped-at "..." [--resume-file path]
# 阶段开始——为新阶段更新 STATE.md 的状态/最后活动
node gsd-tools.cjs state begin-phase --phase N --name SLUG --plans COUNT
# 代理可发现的阻塞信号(由 discuss-phase / UI 流程使用)
node gsd-tools.cjs state signal-waiting --type TYPE --question "..." --options "A|B" --phase P
node gsd-tools.cjs state signal-resume
```
### 状态快照
对完整 STATE.md 进行结构化解析:
```bash
node gsd-tools.cjs state-snapshot
```
返回 JSON,包含:当前位置、阶段、计划、状态、决策、阻塞项、指标、最后活动。
---
## 阶段命令
管理阶段——目录、编号和路线图同步。
```bash
# 按编号查找阶段目录
node gsd-tools.cjs find-phase <phase>
# 计算插入用的下一个小数阶段编号
node gsd-tools.cjs phase next-decimal <phase>
# 向路线图追加新阶段并创建目录
node gsd-tools.cjs phase add <description>
# 在现有阶段后插入小数阶段
node gsd-tools.cjs phase insert <after> <description>
# 移除阶段,对后续阶段重新编号
node gsd-tools.cjs phase remove <phase> [--force]
# 标记阶段完成,更新状态和路线图
node gsd-tools.cjs phase complete <phase>
# 按波次和状态索引计划
node gsd-tools.cjs phase-plan-index <phase>
# 列出阶段并过滤
node gsd-tools.cjs phases list [--type planned|executed|all] [--phase N] [--include-archived]
```
---
## 路线图命令
解析和更新 `ROADMAP.md`。
```bash
# 从 ROADMAP.md 提取阶段章节
node gsd-tools.cjs roadmap get-phase <phase>
# 带磁盘状态的完整路线图解析
node gsd-tools.cjs roadmap analyze
# 从磁盘更新进度表行
node gsd-tools.cjs roadmap update-plan-progress <N>
```
---
## 配置命令
读写 `.planning/config.json`。
```bash
# 以默认值初始化 config.json
node gsd-tools.cjs config-ensure-section
# 设置配置值(点号表示法)
node gsd-tools.cjs config-set <key> <value>
# 获取配置值
node gsd-tools.cjs config-get <key>
# 设置模型配置文件
node gsd-tools.cjs config-set-model-profile <profile>
```
---
## 模型解析
```bash
# 根据当前配置文件获取代理使用的模型
node gsd-tools.cjs resolve-model <agent-name>
# 原始输出返回所选模型 ID/层级。
# JSON 输出还包括配置文件,以及当活跃运行时支持时的
# reasoning_effort。
```
代理名称:`gsd-planner`、`gsd-executor`、`gsd-phase-researcher`、`gsd-project-researcher`、`gsd-research-synthesizer`、`gsd-verifier`、`gsd-plan-checker`、`gsd-integration-checker`、`gsd-roadmapper`、`gsd-debugger`、`gsd-codebase-mapper`、`gsd-nyquist-auditor`
---
## 验证命令
验证计划、阶段、引用和提交。
```bash
# 验证 SUMMARY.md 文件
node gsd-tools.cjs verify-summary <path> [--check-count N]
# 检查 PLAN.md 结构和任务
node gsd-tools.cjs verify plan-structure <file>
# 检查所有计划是否有摘要
node gsd-tools.cjs verify phase-completeness <phase>
# 检查 @-引用和路径是否可解析
node gsd-tools.cjs verify references <file>
# 批量验证提交哈希
node gsd-tools.cjs verify commits <hash1> [hash2] ...
# 检查 must_haves.artifacts
node gsd-tools.cjs verify artifacts <plan-file>
# 检查 must_haves.key_links
node gsd-tools.cjs verify key-links <plan-file>
```
---
## 校验命令
检查项目完整性。
```bash
# 检查阶段编号、磁盘/路线图同步
node gsd-tools.cjs validate consistency
# 检查 .planning/ 完整性,可选修复
node gsd-tools.cjs validate health [--repair]
# 探测上下文窗口利用率(用于状态行/钩子调用方)(v1.40.0)
node gsd-tools.cjs validate context
# 以类型化 JSON 接口输出上下文利用率(#455)
node gsd-tools.cjs validate context --json
```
`validate context` 输出包含 `utilization`、`status`(在 60% / 70% 阈值处分别为 `ok` / `warn` / `critical`)以及 `suggestion` 字符串的结构化信封。相同数据支撑 `/gsd-health --context`。
传入 `--json` 可直接接收类型化中间表示(适用于脚本和测试断言)。
---
## 模板命令
模板选择与填充。
```bash
# 根据粒度选择摘要模板
node gsd-tools.cjs template select <type>
# 用变量填充模板
node gsd-tools.cjs template fill <type> --phase N [--plan M] [--name "..."] [--type execute|tdd] [--wave N] [--fields '{json}']
```
`fill` 的模板类型:`summary`、`plan`、`verification`
---
## Frontmatter 命令
对任意 Markdown 文件执行 YAML frontmatter 的增删改查。
```bash
# 以 JSON 格式提取 frontmatter
node gsd-tools.cjs frontmatter get <file> [--field key]
# 更新单个字段
node gsd-tools.cjs frontmatter set <file> --field key --value jsonVal
# 将 JSON 合并到 frontmatter
node gsd-tools.cjs frontmatter merge <file> --data '{json}'
# 验证必填字段
node gsd-tools.cjs frontmatter validate <file> --schema plan|summary|verification
```
---
## 脚手架命令
创建预结构化文件和目录。
```bash
# 创建 CONTEXT.md 模板
node gsd-tools.cjs scaffold context --phase N
# 创建 UAT.md 模板
node gsd-tools.cjs scaffold uat --phase N
# 创建 VERIFICATION.md 模板
node gsd-tools.cjs scaffold verification --phase N
# 创建阶段目录
node gsd-tools.cjs scaffold phase-dir --phase N --name "phase name"
```
---
## Init 命令(复合上下文加载)
通过单次调用加载特定工作流所需的所有上下文。返回包含项目信息、配置、状态和工作流专属数据的 JSON。
```bash
node gsd-tools.cjs init execute-phase <phase>
node gsd-tools.cjs init plan-phase <phase>
node gsd-tools.cjs init new-project
node gsd-tools.cjs init new-milestone
node gsd-tools.cjs init quick <description>
node gsd-tools.cjs init resume
node gsd-tools.cjs init verify-work <phase>
node gsd-tools.cjs init phase-op <phase>
node gsd-tools.cjs init todos [area]
node gsd-tools.cjs init milestone-op
node gsd-tools.cjs init map-codebase
node gsd-tools.cjs init progress
# 工作流范围的 init(`--ws` 标志)
node gsd-tools.cjs init execute-phase <phase> --ws <name>
node gsd-tools.cjs init plan-phase <phase> --ws <name>
```
**大载荷处理:** 当输出超过约 50KB 时,CLI 会将内容写入临时文件并返回 `@file:/tmp/gsd-init-XXXXX.json`。工作流检查 `@file:` 前缀并从磁盘读取:
```bash
INIT=$(node gsd-tools.cjs init execute-phase "1")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
```
---
## 里程碑命令
```bash
# 归档里程碑
node gsd-tools.cjs milestone complete <version> [--name <name>] [--archive-phases]
# 将需求标记为完成
node gsd-tools.cjs requirements mark-complete <ids>
# 接受格式:REQ-01,REQ-02 或 REQ-01 REQ-02 或 [REQ-01, REQ-02]
```
---
## 代理技能
输出指定代理类型的技能块。
```bash
# 输出原始 XML 技能块(默认——适合 shell 展开)
node gsd-tools.cjs agent-skills <agent-type>
# 输出类型化 JSON 接口(#455)——{ agent_type, block, skills_count }
node gsd-tools.cjs agent-skills <agent-type> --json
```
`--json` 标志返回适合结构化消费和测试断言的类型化中间表示对象,而默认(无标志)保留工作流 shell 展开所依赖的原始 XML 输出。
---
## 技能清单
预计算并缓存技能发现结果,以加快命令加载速度。
```bash
# 生成技能清单(写入 .claude/skill-manifest.json)
node gsd-tools.cjs skill-manifest
# 生成并指定自定义输出路径
node gsd-tools.cjs skill-manifest --output <path>
```
返回所有可用 GSD 技能的 JSON 映射,包含其元数据(名称、描述、文件路径、参数提示)。由安装程序和会话启动钩子使用,以避免重复的文件系统扫描。
---
## 工具命令
```bash
# 将文本转换为 URL 安全的 slug
node gsd-tools.cjs generate-slug "Some Text Here"
# → some-text-here
# 获取时间戳
node gsd-tools.cjs current-timestamp [full|date|filename]
# 统计并列出待办事项
node gsd-tools.cjs list-todos [area]
# 检查文件/目录是否存在
node gsd-tools.cjs verify-path-exists <path>
# 聚合所有 SUMMARY.md 数据
node gsd-tools.cjs history-digest
# 从 SUMMARY.md 提取结构化数据
node gsd-tools.cjs summary-extract <path> [--fields field1,field2]
# 项目统计
node gsd-tools.cjs stats [json|table]
# 进度渲染(人类可读)
node gsd-tools.cjs progress [json|table|bar]
# 以类型化 JSON 接口输出进度(#455)
node gsd-tools.cjs progress --json
# 完成待办事项
node gsd-tools.cjs todo complete <filename>
# UAT 审计——扫描所有阶段的未解决事项
node gsd-tools.cjs audit-uat
# 跨制品审计队列——扫描 `.planning/` 中未解决的审计事项
node gsd-tools.cjs audit-open [--json]
# 将 GSD-2 项目反向迁移到当前结构(支撑 `/gsd-import --from-gsd2`)
node gsd-tools.cjs from-gsd2 [--path <dir>] [--force] [--dry-run]
# 带配置检查的 Git 提交
node gsd-tools.cjs commit <message> [--files f1 f2] [--amend] [--no-verify] [--respect-staged]
```
> `--no-verify`:跳过预提交钩子。由并行执行器代理在基于波次的执行过程中使用,以避免构建锁争用(例如 Rust 项目中的 cargo lock 冲突)。编排器在每个波次完成后运行一次钩子。顺序执行时不要使用 `--no-verify`——让钩子正常运行。
> `--files <paths>` **暂存行为**:默认情况下,`--files` 在提交前对每个命名文件运行 `git add -- <path>`。这会覆盖通过 `git add -p` 设置的任何按块暂存。传入 `--respect-staged` 可跳过 `git add` 步骤,仅提交已在索引中且在请求路径规格内的内容。如果该范围内没有已暂存的内容,命令将返回 `{ committed: false, reason: 'nothing staged' }` 而不报错。两种模式下提交都会附加 `-- <paths>` 路径规格,因此 `--files` 范围之外已暂存的文件永远不会被包含(#3061 不变量)。
# 网页搜索(需要 Brave API 密钥)
node gsd-tools.cjs websearch <query> [--limit N] [--freshness day|week|month]
```
---
## Graphify
在 `.planning/graphs/` 中构建、查询和检查项目知识图谱。需要在 `config.json` 中设置 `graphify.enabled: true`(参见[配置参考](CONFIGURATION.md#graphify-settings))。
```bash
# 构建或重建知识图谱
node gsd-tools.cjs graphify build
# 在图谱中搜索某个词
node gsd-tools.cjs graphify query <term>
# 显示图谱新鲜度和统计数据
node gsd-tools.cjs graphify status
# 显示自上次构建以来的变更
node gsd-tools.cjs graphify diff
# 写入当前图谱的命名快照
node gsd-tools.cjs graphify snapshot [name]
```
用户入口:`/gsd-graphify`(参见[命令参考](COMMANDS.md#gsd-graphify))。
---
## 模块架构
| 模块 | 文件 | 导出 |
|--------|------|---------|
| 核心 | `lib/core.cjs` | `error()`、`output()`、`parseArgs()`、共享工具、兼容性重导出 |
| 状态 | `lib/state.cjs` | 所有 `state` 子命令、`state-snapshot` |
| 阶段 | `lib/phase.cjs` | 阶段增删改查、`find-phase`、`phase-plan-index`、`phases list` |
| 规划工作区 | `lib/planning-workspace.cjs` | 规划接缝:`planningDir`、`planningPaths`、活跃工作流路由、`.planning/.lock` |
| 路线图 | `lib/roadmap.cjs` | 路线图解析、阶段提取、进度更新 |
| 配置 | `lib/config.cjs` | 配置读写、章节初始化 |
| 验证 | `lib/verify.cjs` | 所有验证和校验命令 |
| 模板 | `lib/template.cjs` | 模板选择和变量填充 |
| Frontmatter | `lib/frontmatter.cjs` | YAML frontmatter 增删改查 |
| Init | `lib/init.cjs` | 所有工作流的复合上下文加载 |
| 里程碑 | `lib/milestone.cjs` | 里程碑归档、需求标记 |
| 命令 | `lib/commands.cjs` | 杂项:slug、时间戳、待办事项、脚手架、统计、网页搜索 |
| 模型配置文件 | `lib/model-profiles.cjs` | 配置文件解析表 |
| UAT | `lib/uat.cjs` | 跨阶段 UAT/验证审计 |
| 配置文件输出 | `lib/profile-output.cjs` | 开发者配置文件格式化 |
| 配置文件流水线 | `lib/profile-pipeline.cjs` | 会话分析流水线 |
| Graphify | `lib/graphify.cjs` | 知识图谱构建/查询/状态/差异/快照(支撑 `/gsd-graphify`) |
| 学习记录 | `lib/learnings.cjs` | 从阶段/SUMMARY 制品中提取学习记录(支撑 `/gsd-extract-learnings`) |
| 审计 | `lib/audit.cjs` | 阶段/里程碑审计队列处理器;`audit-open` 助手 |
| GSD2 导入 | `lib/gsd2-import.cjs` | 从 GSD-2 项目反向迁移导入(支撑 `/gsd-import --from-gsd2`) |
| Intel | `lib/intel.cjs` | 可查询的代码库智能索引(支撑 `/gsd-map-codebase --query`) |
---
## 审阅器 CLI 路由
`review.models.<cli>` 将审阅器类型映射到代码审查工作流调用的 shell 命令。通过 [`/gsd-config --integrations`](COMMANDS.md#gsd-config) 或直接设置:
```bash
node gsd-tools.cjs config-set review.models.codex "codex exec --model gpt-5"
node gsd-tools.cjs config-set review.models.gemini "gemini -m gemini-2.5-pro"
node gsd-tools.cjs config-set review.models.opencode "opencode run --model claude-sonnet-4"
node gsd-tools.cjs config-set review.models.claude "" # 清除——回退到会话模型
```
Slug 将针对 `[a-zA-Z0-9_-]+` 进行验证;空或包含路径的 slug 将被拒绝。完整字段参考请参见 [`docs/CONFIGURATION.md`](CONFIGURATION.md#code-review-cli-routing)。
## 密钥处理
通过 `/gsd-settings` 配置的 API 密钥(`brave_search`、`firecrawl`、`exa_search`)以明文形式写入 `.planning/config.json`,但在所有 `config-set` / `config-get` 输出、确认表格和交互式提示中均会被遮蔽(`****<last-4>`)。遮蔽实现请参见 `get-shit-done/bin/lib/secrets.cjs`。`config.json` 文件本身是安全边界——请通过文件系统权限保护它,并将其排除在 git 之外(`.planning/` 默认已被 gitignore)。
---
## 相关文档
- [命令](COMMANDS.md)
- [配置](CONFIGURATION.md)
- [架构](ARCHITECTURE.md)
- [文档索引](README.md)