跳转到主要内容
Comet 的 CLI 专门为自动化场景设计了结构化 JSON 输出和非交互模式。你可以在 CI/CD 流水线里用它们做安装完整性门禁、变更阶段报告和发布前检查,不需要 Agent 平台参与。

适合自动化的场景

场景用什么说明
CI 环境初始化comet init --yes --json非交互安装,跳过交互式 CodeGraph
安装完整性门禁comet doctor --json检查 Skill、脚本、工作目录、change 状态
变更阶段报告comet status --json输出活跃 change 的阶段、进度和下一步
PR 检查comet doctor --json阻止状态损坏的 change 进入主干

comet doctor —json

comet doctor 检查项目级和全局安装健康、Skill 完整性、脚本、工作目录和活跃 change 状态。--json 输出结构化结果,适合脚本解析。

输出结构

{
  "scope": "auto",
  "results": [
    {
      "check": "Comet CLI",
      "status": "pass",
      "message": "installed (0.4.0-beta.1)"
    },
    {
      "check": "openspec CLI",
      "status": "warn",
      "message": "not installed — install with: npm install -g @fission-ai/openspec@latest"
    },
    {
      "check": "skills: Claude Code (project)",
      "status": "pass",
      "message": "complete (8 files)"
    },
    {
      "check": ".comet.yaml: add-login",
      "status": "pass",
      "message": "valid (step: collect-evidence, mode: classic)"
    }
  ]
}
每个 results 条目的 status 是三态之一:
status含义CI 处理
pass检查通过继续
warn有问题但不阻塞可继续,建议修复
fail有阻塞性问题应中断
doctor 检查的项包括:Comet CLI、openspec CLI、Superpowers、工作目录、Skill 完整性、脚本存在、CodeGraph、以及每个活跃 change 的 .comet.yaml 有效性。

用作 CI 门禁

#!/bin/bash
# 只要有 fail 就中断 CI
RESULT=$(comet doctor --json)
echo "$RESULT" | jq -r '.results[] | select(.status == "fail") | .check + ": " + .message'
if echo "$RESULT" | jq -e '.results[] | select(.status == "fail")' > /dev/null; then
  echo "Comet doctor reported failures — blocking CI"
  exit 1
fi

comet status —json

comet status 输出活跃 change 的状态。--json 输出每个 change 的完整状态字段。

输出结构

[
  {
    "name": "add-login",
    "workflow": "full",
    "phase": "build",
    "buildMode": "subagent-driven-development",
    "isolation": "branch",
    "verifyMode": "full",
    "verifyResult": "pending",
    "designDoc": "docs/superpowers/specs/2026-06-24-add-login-design.md",
    "plan": "docs/superpowers/plans/2026-06-24-add-login.md",
    "tasksCompleted": 7,
    "tasksTotal": 12,
    "nextCommand": "/comet-build",
    "currentStep": "implement-auth",
    "runtimeMode": "classic",
    "runtimeEval": {
      "stepId": "implement-auth",
      "passed": false,
      "requiredEvidence": ["auth-module.ts"],
      "missingEvidence": ["auth-module.ts"]
    }
  }
]
关键字段:
字段含义
phase当前阶段:open/design/build/verify/archive
nextCommand推荐的下一步命令
tasksCompleted / tasksTotal任务进度
verifyResultpending/pass/fail
runtimeEval.passed当前 runtime eval 是否通过
runtimeEval.missingEvidence缺失的证据

变更阶段报告

# 输出所有活跃 change 的进度
comet status --json | jq -r '.[] | "\(.name): phase=\(.phase) tasks=\(.tasksCompleted)/\(.tasksTotal) next=\(.nextCommand)"'
输出示例:
add-login: phase=build tasks=7/12 next=/comet-build
fix-token-refresh: phase=verify tasks=3/3 next=/comet-verify

CI 环境初始化

CI 环境通常需要非交互安装。--yes 跳过所有提示,--json 抑制 banner 日志并跳过交互式 CodeGraph:
comet init --yes --scope project --language zh --json
--yes 的默认行为:
  • 范围默认 project
  • 语言默认 en(指定 --language zh 覆盖)。
  • 平台自动检测(检测不到则全选)。
  • 已存在组件默认跳过(不是覆盖)。强制刷新用 --overwrite

典型 CI 流程

# GitHub Actions 示例
- name: Install Comet
  run: npm install -g @rpamis/comet

- name: Init project (non-interactive)
  run: comet init --yes --scope project --language zh --json

- name: Verify install health
  run: |
    comet doctor --json > doctor-report.json
    # 有 fail 就中断
    if jq -e '.results[] | select(.status == "fail")' doctor-report.json > /dev/null; then
      cat doctor-report.json
      exit 1
    fi

- name: Report change status
  run: comet status --json || true

PR 检查:阻止损坏的 change 合并

在 PR 检查里用 doctor 确保合并到主干的 change 状态健康:
#!/bin/bash
# PR 检查脚本
echo "Checking Comet change health..."

# 1. 安装完整性
if ! comet doctor --json | jq -e 'all(.results[]; .status != "fail")' > /dev/null; then
  echo "❌ Comet doctor found failures"
  comet doctor --json | jq '.results[] | select(.status == "fail")'
  exit 1
fi

# 2. 活跃 change 状态有效
CHANGES=$(comet status --json)
if echo "$CHANGES" | jq -e 'length > 0' > /dev/null; then
  echo "Active changes:"
  echo "$CHANGES" | jq -r '.[] | "  - \(.name) [\(.phase)]"'
fi

echo "✅ Comet checks passed"

不适合 CI 的操作

以下操作依赖 Agent 平台交互,不适合在 CI 里运行:
操作原因
/comet/comet-open 等 Skill 调用需要 Agent 平台
comet eval run执行真实模型任务,消耗 token 和时间
comet publish approve需要人工评审决策
CI 里只做状态检查和安装完整性,不做需要 Agent 或人工决策的操作。

常见问题

说明没有活跃 change,或 change 缺少 .comet.yaml(被静默跳过)。缺少 .comet.yaml 的 change 需要在 Agent 平台用 /comet 接管。详见存量项目接入
取决于你的规范。warn 通常不阻塞(如 openspec CLI 未装但项目不依赖),fail 才是阻塞(如 Skill 缺失、状态损坏)。建议只对 fail 退出非零。
能。JSON 结构是 CLI 契约的一部分,statusdoctor 的字段不会无通知变更。

下一步