@geminix/gxpm 0.1.0
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.
- package/AGENTS.md +148 -0
- package/CANON.md +53 -0
- package/CLAUDE.md +60 -0
- package/CONTEXT.md +49 -0
- package/DEBUG.md +59 -0
- package/ISSUE_CONTEXT.md +25 -0
- package/README.md +143 -0
- package/VERSION +1 -0
- package/agents/cleanup-auditor/cleanup-auditor.md +56 -0
- package/agents/grill-master.md +26 -0
- package/agents/implementer.md +32 -0
- package/agents/review-army/accessibility-reviewer.md +54 -0
- package/agents/review-army/code-quality-reviewer.md +54 -0
- package/agents/review-army/security-reviewer.md +56 -0
- package/agents/review-army/spec-compliance-reviewer.md +51 -0
- package/agents/review-army/test-reviewer.md +55 -0
- package/agents/reviewer.md +59 -0
- package/agents/ship-audit-army/docs-auditor.md +53 -0
- package/agents/ship-audit-army/performance-auditor.md +52 -0
- package/agents/ship-audit-army/security-auditor.md +52 -0
- package/agents/specifier.md +55 -0
- package/agents/triage-officer.md +27 -0
- package/bin/gxpm +17 -0
- package/bin/gxpm-browser +17 -0
- package/bin/gxpm-config +15 -0
- package/bin/gxpm-eval +13 -0
- package/bin/gxpm-global-discover +15 -0
- package/bin/gxpm-init +38 -0
- package/bin/gxpm-investigate +194 -0
- package/bin/gxpm-uninstall +15 -0
- package/bin/gxpm-update-check +165 -0
- package/commands/build.md +40 -0
- package/commands/help.md +53 -0
- package/commands/plan.md +34 -0
- package/commands/refine.md +46 -0
- package/commands/review.md +34 -0
- package/commands/ship.md +37 -0
- package/core/ac-check.ts +20 -0
- package/core/agent-runtime.ts +363 -0
- package/core/artifact-validator.ts +151 -0
- package/core/artifacts.ts +313 -0
- package/core/autopilot.ts +250 -0
- package/core/capabilities.ts +779 -0
- package/core/checkpoint.ts +370 -0
- package/core/cleanup.ts +32 -0
- package/core/command-probe.ts +82 -0
- package/core/config.ts +533 -0
- package/core/contracts/behavior-spec.schema.ts +38 -0
- package/core/contracts/converter.ts +61 -0
- package/core/contracts/host.ts +43 -0
- package/core/converters/converter.ts +93 -0
- package/core/converters/index.ts +8 -0
- package/core/converters/managed-artifact.ts +119 -0
- package/core/converters/parser.ts +159 -0
- package/core/converters/template-renderer.ts +35 -0
- package/core/converters/writer.ts +61 -0
- package/core/dag-executor.ts +426 -0
- package/core/dag-loader.ts +292 -0
- package/core/dag-schemas.ts +150 -0
- package/core/dispatch.ts +125 -0
- package/core/evidence.ts +148 -0
- package/core/gate.ts +269 -0
- package/core/hook-engine.ts +566 -0
- package/core/host-probe.ts +64 -0
- package/core/implement.ts +16 -0
- package/core/isolation-errors.ts +174 -0
- package/core/isolation-resolver.ts +921 -0
- package/core/issue-context.ts +381 -0
- package/core/issue-readiness.ts +457 -0
- package/core/issue-sync.ts +427 -0
- package/core/issues.ts +132 -0
- package/core/land.ts +108 -0
- package/core/orchestrator.ts +54 -0
- package/core/phase-artifact.ts +32 -0
- package/core/phase-gates.ts +130 -0
- package/core/phase-rewind.ts +94 -0
- package/core/plan-lint.ts +61 -0
- package/core/plan.ts +77 -0
- package/core/port-allocation.ts +50 -0
- package/core/pr-check.ts +15 -0
- package/core/preset-system/preset-resolver.ts +221 -0
- package/core/project-init-status.ts +127 -0
- package/core/qa.ts +15 -0
- package/core/resilience.ts +165 -0
- package/core/runs.ts +288 -0
- package/core/safe-path.test.ts +80 -0
- package/core/safe-path.ts +60 -0
- package/core/sdd-gate.test.ts +98 -0
- package/core/sdd-gate.ts +134 -0
- package/core/self-review.ts +62 -0
- package/core/session.ts +70 -0
- package/core/ship.ts +86 -0
- package/core/specify.ts +173 -0
- package/core/state.ts +1002 -0
- package/core/template-engine.ts +152 -0
- package/core/template-resolver.test.ts +70 -0
- package/core/template-resolver.ts +156 -0
- package/core/triage.ts +26 -0
- package/core/verify.ts +15 -0
- package/core/wiki-native.ts +2423 -0
- package/core/wiki.ts +27 -0
- package/core/workflow-event-emitter.ts +163 -0
- package/core/workflows/engine.ts +273 -0
- package/core/workflows/expressions.ts +76 -0
- package/core/workflows/index.ts +38 -0
- package/core/workflows/steps/command.ts +43 -0
- package/core/workflows/steps/gate.ts +47 -0
- package/core/workflows/steps/gxpm.ts +44 -0
- package/core/workflows/steps/linear.ts +31 -0
- package/core/workflows/steps/shell.ts +65 -0
- package/core/workflows/types.ts +62 -0
- package/core/workspace-runtime.ts +227 -0
- package/core/worktree-init-steps.ts +647 -0
- package/core/worktree-init.ts +330 -0
- package/core/worktree-owner.ts +143 -0
- package/docs/GXPM_VERIFY.md +98 -0
- package/docs/INSTALL_FOR_AGENTS.md +113 -0
- package/docs/README.md +57 -0
- package/docs/adr/adr-005-multi-platform-skill-converter.md +72 -0
- package/docs/agents/domain.md +30 -0
- package/docs/agents/issue-tracker.md +30 -0
- package/docs/agents/triage-labels.md +32 -0
- package/docs/architecture/gxpm-architecture-diagram.md +265 -0
- package/docs/architecture/gxpm-current-architecture.md +175 -0
- package/docs/architecture/gxpm-current-flow.md +278 -0
- package/docs/architecture/gxpm-replacement-architecture.md +211 -0
- package/docs/architecture/gxpm-target-architecture.md +449 -0
- package/docs/architecture/gxpm-v0-contract.md +311 -0
- package/docs/architecture/layered-workflow-boundaries.md +193 -0
- package/docs/architecture/preset-system.md +126 -0
- package/docs/architecture/scaffold-northstar.md +23 -0
- package/docs/brainstorms/2026-05-14-bdd-then-tdd-design.md +320 -0
- package/docs/brainstorms/README.md +22 -0
- package/docs/brainstorms/docs-knowledge-system-requirements.md +29 -0
- package/docs/governance/beta-skill-promotion.md +39 -0
- package/docs/governance/development-contract.md +144 -0
- package/docs/governance/gherkin-style.md +90 -0
- package/docs/governance/host-adapter.md +56 -0
- package/docs/governance/skill-authoring.md +87 -0
- package/docs/governance/skill-testing.md +356 -0
- package/docs/governance/template-authoring.md +53 -0
- package/docs/migrations/v0.2.md +51 -0
- package/docs/plans/README.md +23 -0
- package/docs/plans/bdd-then-tdd-plan.md +1767 -0
- package/docs/plans/docs-knowledge-system-plan.md +31 -0
- package/docs/plans/spec-kit-sdd-adoption-plan.md +305 -0
- package/docs/research/agents-md-best-practices.md +207 -0
- package/docs/research/archon-study.md +351 -0
- package/docs/research/claude-hooks-study.md +440 -0
- package/docs/research/codex-hooks-study.md +624 -0
- package/docs/research/everything-claude-code-study.md +252 -0
- package/docs/research/from-skills-to-layered-workflow.md +322 -0
- package/docs/research/gsd-study.md +69 -0
- package/docs/research/kimi-hooks-study.md +274 -0
- package/docs/research/mattpocock-skills-comparison.md +429 -0
- package/docs/research/mattpocock-skills-study.md +275 -0
- package/docs/research/oh-my-codex-study.md +279 -0
- package/docs/research/perplexity-agent-skills-design.md +168 -0
- package/docs/research/pmc-gstack-skill-study.md +122 -0
- package/docs/research/spec-kit-study.md +224 -0
- package/docs/research/superpowers-study.md +209 -0
- package/docs/roadmap/initial-roadmap.md +53 -0
- package/docs/solutions/README.md +45 -0
- package/docs/solutions/artifact-nesting-recovery.md +58 -0
- package/docs/solutions/session-context-restore-practice.md +67 -0
- package/docs/solutions/workflow/version-drift-recovery.md +49 -0
- package/docs/solutions/worktree-gate-recovery.md +62 -0
- package/docs/specs/README.md +28 -0
- package/docs/specs/claude.md +45 -0
- package/docs/specs/codex.md +44 -0
- package/docs/specs/cursor.md +44 -0
- package/hosts/adapters/claude.ts +29 -0
- package/hosts/adapters/codex.ts +27 -0
- package/hosts/adapters/cursor.ts +27 -0
- package/hosts/adapters/kimi.ts +27 -0
- package/hosts/claude.ts +23 -0
- package/hosts/codex.ts +26 -0
- package/hosts/cursor.ts +19 -0
- package/hosts/index.ts +33 -0
- package/hosts/registry.test.ts +52 -0
- package/hosts/registry.ts +57 -0
- package/hosts/schema.ts +58 -0
- package/package.json +52 -0
- package/scripts/browser.ts +185 -0
- package/scripts/cleanup.ts +142 -0
- package/scripts/commands/artifact.ts +115 -0
- package/scripts/commands/autopilot.ts +143 -0
- package/scripts/commands/capability.ts +57 -0
- package/scripts/commands/config.ts +69 -0
- package/scripts/commands/dag.ts +126 -0
- package/scripts/commands/feedback.ts +123 -0
- package/scripts/commands/gate.ts +291 -0
- package/scripts/commands/helpers.ts +126 -0
- package/scripts/commands/hook.ts +66 -0
- package/scripts/commands/init.ts +515 -0
- package/scripts/commands/issue.ts +825 -0
- package/scripts/commands/phase.ts +61 -0
- package/scripts/commands/preset.ts +159 -0
- package/scripts/commands/runtime.ts +199 -0
- package/scripts/commands/specify.ts +71 -0
- package/scripts/commands/upgrade.ts +243 -0
- package/scripts/commands/verify.ts +183 -0
- package/scripts/commands/wiki.ts +242 -0
- package/scripts/commands/workflow.ts +131 -0
- package/scripts/dev-skill.ts +55 -0
- package/scripts/discover-skills.ts +116 -0
- package/scripts/doctor.ts +410 -0
- package/scripts/dogfood-check.ts +125 -0
- package/scripts/eval-functional.ts +218 -0
- package/scripts/eval.ts +246 -0
- package/scripts/gen-skill-docs.ts +201 -0
- package/scripts/global-discover.ts +217 -0
- package/scripts/governance-check.ts +75 -0
- package/scripts/gxpm-check.ts +12 -0
- package/scripts/gxpm.ts +216 -0
- package/scripts/host-config.ts +62 -0
- package/scripts/install-claude-hooks.ts +138 -0
- package/scripts/install-codex-hooks.ts +271 -0
- package/scripts/install-hooks.ts +128 -0
- package/scripts/install-kimi-hooks.ts +92 -0
- package/scripts/install-skill.ts +184 -0
- package/scripts/phase-artifact-commands.ts +100 -0
- package/scripts/post-land-sync.ts +46 -0
- package/scripts/scaffold-check.ts +85 -0
- package/scripts/skill-naming-check.ts +78 -0
- package/scripts/skill-structure-check.ts +157 -0
- package/scripts/skills-lock-check.ts +60 -0
- package/scripts/sync-markdown-artifacts.ts +172 -0
- package/scripts/uninstall.ts +162 -0
- package/scripts/version.ts +47 -0
- package/scripts/wait-pr-ready.ts +407 -0
- package/skills/gxpm/SKILL.md +485 -0
- package/skills/gxpm/SKILL.md.tmpl +422 -0
- package/skills/gxpm/references/CANON.md +53 -0
- package/skills/gxpm/references/key-rules.md +130 -0
- package/skills/gxpm-architecture/SKILL.md +106 -0
- package/skills/gxpm-architecture/references/DEEPENING.md +37 -0
- package/skills/gxpm-architecture/references/INTERFACE-DESIGN.md +44 -0
- package/skills/gxpm-autopilot/SKILL.md +116 -0
- package/skills/gxpm-autopilot/SKILL.md.tmpl +107 -0
- package/skills/gxpm-browser/SKILL.md +105 -0
- package/skills/gxpm-browser/SKILL.md.tmpl +41 -0
- package/skills/gxpm-browser/references/commands.md +43 -0
- package/skills/gxpm-browser/references/evidence-path.md +20 -0
- package/skills/gxpm-build/SKILL.md +78 -0
- package/skills/gxpm-cleanup/SKILL.md +76 -0
- package/skills/gxpm-debug-issue/SKILL.md +39 -0
- package/skills/gxpm-diagnose/SKILL.md +220 -0
- package/skills/gxpm-diagnose/SKILL.md.tmpl +31 -0
- package/skills/gxpm-diagnose/references/feedback-loop.md +34 -0
- package/skills/gxpm-diagnose/references/feedback-loops.md +43 -0
- package/skills/gxpm-diagnose/references/phases.md +60 -0
- package/skills/gxpm-eval/SKILL.md +78 -0
- package/skills/gxpm-explore-codebase/SKILL.md +36 -0
- package/skills/gxpm-explore-codebase/scripts/summarize-communities.ts +51 -0
- package/skills/gxpm-feedback/SKILL.md +122 -0
- package/skills/gxpm-grill/SKILL.md +159 -0
- package/skills/gxpm-grill/SKILL.md.tmpl +77 -0
- package/skills/gxpm-grill/references/documentation-templates.md +56 -0
- package/skills/gxpm-grill/references/process.md +25 -0
- package/skills/gxpm-handoff/SKILL.md +112 -0
- package/skills/gxpm-hygiene/SKILL.md +69 -0
- package/skills/gxpm-implementer/SKILL.md +142 -0
- package/skills/gxpm-implementer/SKILL.md.tmpl +141 -0
- package/skills/gxpm-linear/SKILL.md +282 -0
- package/skills/gxpm-linear/SKILL.md.tmpl +86 -0
- package/skills/gxpm-linear/references/commands.md +75 -0
- package/skills/gxpm-linear/references/workflows.md +120 -0
- package/skills/gxpm-planning/SKILL.md +134 -0
- package/skills/gxpm-prototype/SKILL.md +64 -0
- package/skills/gxpm-refactor-safely/SKILL.md +62 -0
- package/skills/gxpm-review-army/SKILL.md +117 -0
- package/skills/gxpm-review-changes/SKILL.md +36 -0
- package/skills/gxpm-setup/SKILL.md +101 -0
- package/skills/gxpm-specifier/SKILL.md +135 -0
- package/skills/gxpm-tdd/SKILL.md +187 -0
- package/skills/gxpm-tdd/references/interface-design.md +23 -0
- package/skills/gxpm-tdd/references/mocking.md +27 -0
- package/skills/gxpm-tdd/references/red-green-refactor.md +61 -0
- package/skills/gxpm-tdd/references/troubleshooting.md +28 -0
- package/skills/gxpm-tdd/references/workflow.md +50 -0
- package/skills/gxpm-tdd/testing-anti-patterns.tmpl +304 -0
- package/skills/gxpm-triage/SKILL.md +160 -0
- package/skills/gxpm-verify/SKILL.md +107 -0
- package/skills/gxpm-write-skill/SKILL.md +131 -0
- package/skills/gxpm-zoom-out/SKILL.md +69 -0
- package/skills/maintain-hygiene-skills-lock/SKILL.md +54 -0
- package/skills/maintain-hygiene-skills-lock/SKILL.md.tmpl +53 -0
- package/templates/constitution-template.md +63 -0
- package/templates/hooks/gxpm-commit-msg +16 -0
- package/templates/hooks/gxpm-post-checkout +19 -0
- package/templates/hooks/gxpm-post-commit +7 -0
- package/templates/hooks/gxpm-post-merge +29 -0
- package/templates/hooks/gxpm-pre-commit +39 -0
- package/templates/hooks/gxpm-pre-push +33 -0
- package/templates/plan-template.md.tmpl +46 -0
- package/templates/spec-template.md.tmpl +63 -0
- package/templates/specify-stub.tmpl +22 -0
- package/templates/tasks-template.md.tmpl +32 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: accessibility-reviewer
|
|
3
|
+
description: 可访问性审查。负责评估 UI 变更对残障用户的可访问性影响,确保符合 WCAG 标准和项目可访问性策略。
|
|
4
|
+
role: quality
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent: Accessibility Reviewer
|
|
8
|
+
|
|
9
|
+
## 负责
|
|
10
|
+
- 检查新增 UI 元素的可访问性属性(ARIA、标签、焦点管理)
|
|
11
|
+
- 评估颜色对比度和视觉可感知性
|
|
12
|
+
- 检查键盘导航和焦点顺序
|
|
13
|
+
- 识别可能影响屏幕阅读器的动态内容更新
|
|
14
|
+
- 检查表单和交互元素的可访问性
|
|
15
|
+
|
|
16
|
+
## 不负责
|
|
17
|
+
- 视觉设计审查(Design Reviewer 的职责)
|
|
18
|
+
- 性能优化(Performance Auditor 的职责)
|
|
19
|
+
- 跨浏览器兼容性测试
|
|
20
|
+
|
|
21
|
+
## 输入
|
|
22
|
+
- UI 相关代码变更 diff
|
|
23
|
+
- 截图或设计稿(如有)
|
|
24
|
+
- 项目的可访问性策略文档
|
|
25
|
+
|
|
26
|
+
## 输出
|
|
27
|
+
- `review-report` artifact 中的 `accessibility` 部分
|
|
28
|
+
- 每条 finding 包含:severity、location、rationale、recommendation
|
|
29
|
+
|
|
30
|
+
## 审查维度
|
|
31
|
+
|
|
32
|
+
| 维度 | 检查点 |
|
|
33
|
+
|------|--------|
|
|
34
|
+
| ARIA 属性 | 自定义组件是否有恰当的 role 和 aria-* |
|
|
35
|
+
| 标签关联 | 表单元素是否有 label 或 aria-labelledby |
|
|
36
|
+
| 焦点管理 | 模态框/对话框是否正确 trap 焦点 |
|
|
37
|
+
| 颜色对比 | 文本与背景对比度是否 >= 4.5:1 |
|
|
38
|
+
| 键盘操作 | 所有交互是否可通过键盘完成 |
|
|
39
|
+
| 动态更新 | 内容变化时是否通知辅助技术 |
|
|
40
|
+
|
|
41
|
+
## 红旗清单 / HARD-GATE
|
|
42
|
+
|
|
43
|
+
- **表单输入无关联 label 或 aria-label** → Blocking
|
|
44
|
+
- **自定义交互组件无 role 或 keyboard handler** → Blocking
|
|
45
|
+
- **信息仅通过颜色传达(无文本/图标补充)** → Blocking
|
|
46
|
+
- **焦点顺序与视觉顺序不一致** → Important
|
|
47
|
+
- **动态内容更新未使用 aria-live** → Important
|
|
48
|
+
|
|
49
|
+
## 验证清单
|
|
50
|
+
|
|
51
|
+
- [ ] 所有交互元素可通过键盘访问
|
|
52
|
+
- [ ] 表单元素有正确的标签关联
|
|
53
|
+
- [ ] 自定义组件有恰当的 ARIA 属性
|
|
54
|
+
- [ ] 颜色使用不单独承载关键信息
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-quality-reviewer
|
|
3
|
+
description: 代码质量与可维护性审查。负责评估代码的结构清晰度、命名一致性、复杂度控制和长期维护成本。
|
|
4
|
+
role: quality
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent: Code Quality Reviewer
|
|
8
|
+
|
|
9
|
+
## 负责
|
|
10
|
+
- 评估代码的可读性和可维护性
|
|
11
|
+
- 检查命名是否符合项目约定(CONTEXT.md 术语表)
|
|
12
|
+
- 识别过度复杂或重复的逻辑
|
|
13
|
+
- 检查类型安全性(TypeScript 层面)
|
|
14
|
+
- 评估模块边界和依赖关系是否合理
|
|
15
|
+
|
|
16
|
+
## 不负责
|
|
17
|
+
- 功能正确性验证(Spec Compliance Reviewer 的职责)
|
|
18
|
+
- 性能优化建议(Performance Auditor 的职责)
|
|
19
|
+
- 安全漏洞扫描(Security Reviewer 的职责)
|
|
20
|
+
|
|
21
|
+
## 输入
|
|
22
|
+
- 代码变更 diff
|
|
23
|
+
- `CANON.md` 和 `CONTEXT.md`(术语和纪律参考)
|
|
24
|
+
- 现有代码库的结构和风格
|
|
25
|
+
|
|
26
|
+
## 输出
|
|
27
|
+
- `review-report` artifact 中的 `code-quality` 部分
|
|
28
|
+
- 每条 finding 包含:severity、location(文件:行号)、rationale、recommendation
|
|
29
|
+
|
|
30
|
+
## 审查维度
|
|
31
|
+
|
|
32
|
+
| 维度 | 检查点 |
|
|
33
|
+
|------|--------|
|
|
34
|
+
| 命名一致性 | 变量/函数/类型名是否符合 CONTEXT.md 术语表 |
|
|
35
|
+
| 函数长度 | 单一职责,超过 50 行需有正当理由 |
|
|
36
|
+
| 重复代码 | DRY 原则,重复 3+ 次必须提取 |
|
|
37
|
+
| 类型安全 | any/unknown 使用是否有必要,类型推断是否准确 |
|
|
38
|
+
| 模块边界 | 导入是否跨越了不合理的模块边界 |
|
|
39
|
+
| 注释质量 | 注释解释"为什么"而非"做什么" |
|
|
40
|
+
|
|
41
|
+
## 红旗清单 / HARD-GATE
|
|
42
|
+
|
|
43
|
+
- **存在未类型化的公共 API 参数(implicit any)** → Blocking
|
|
44
|
+
- **复制粘贴 3+ 次的代码块未提取** → Blocking
|
|
45
|
+
- **模块循环依赖** → Blocking
|
|
46
|
+
- **函数超过 100 行且无结构拆分** → Important
|
|
47
|
+
- **命名与现有术语表冲突** → Important
|
|
48
|
+
|
|
49
|
+
## 验证清单
|
|
50
|
+
|
|
51
|
+
- [ ] 所有新增公共 API 有完整类型签名
|
|
52
|
+
- [ ] 无未解释的 `any` 或 `@ts-ignore`
|
|
53
|
+
- [ ] 代码复杂度(cyclomatic)未显著增加
|
|
54
|
+
- [ ] 每条 finding 有具体的重构建议
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-reviewer
|
|
3
|
+
description: 安全漏洞与敏感数据审查。负责识别代码变更中引入的安全风险、权限提升路径和敏感信息泄露可能。
|
|
4
|
+
role: quality
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent: Security Reviewer
|
|
8
|
+
|
|
9
|
+
## 负责
|
|
10
|
+
- 扫描新增代码中的常见安全漏洞模式
|
|
11
|
+
- 检查敏感数据(密钥、token、PII)的处理方式
|
|
12
|
+
- 评估权限边界和访问控制变更
|
|
13
|
+
- 识别外部输入的验证缺失
|
|
14
|
+
- 检查依赖变更是否引入已知漏洞
|
|
15
|
+
|
|
16
|
+
## 不负责
|
|
17
|
+
- 深度渗透测试(超出代码审查范围)
|
|
18
|
+
- 基础设施安全配置审查
|
|
19
|
+
- 修改安全策略或 CANON.md 纪律
|
|
20
|
+
|
|
21
|
+
## 输入
|
|
22
|
+
- 代码变更 diff
|
|
23
|
+
- `CANON.md` 安全相关纪律
|
|
24
|
+
- 项目依赖清单(package.json 变更)
|
|
25
|
+
- 环境变量和配置文件变更
|
|
26
|
+
|
|
27
|
+
## 输出
|
|
28
|
+
- `review-report` artifact 中的 `security` 部分
|
|
29
|
+
- 每条 finding 包含:severity、location、rationale、recommendation
|
|
30
|
+
|
|
31
|
+
## 审查维度
|
|
32
|
+
|
|
33
|
+
| 维度 | 检查点 |
|
|
34
|
+
|------|--------|
|
|
35
|
+
| 输入验证 | 所有外部输入是否经过校验和消毒 |
|
|
36
|
+
| 敏感数据 | 密钥/token/密码是否硬编码或日志泄露 |
|
|
37
|
+
| 权限边界 | 新增能力是否超出最小权限原则 |
|
|
38
|
+
| 依赖安全 | 新增依赖是否有已知 CVE |
|
|
39
|
+
| 路径遍历 | 文件路径操作是否限制了访问范围 |
|
|
40
|
+
| 注入风险 | 字符串拼接是否用于命令/查询构造 |
|
|
41
|
+
|
|
42
|
+
## 红旗清单 / HARD-GATE
|
|
43
|
+
|
|
44
|
+
- **硬编码密钥、token 或密码** → Blocking
|
|
45
|
+
- **外部输入直接进入命令执行或文件路径** → Blocking
|
|
46
|
+
- **新增依赖存在已知 CVE(CVSS >= 7.0)** → Blocking
|
|
47
|
+
- **敏感数据写入日志或错误输出** → Blocking
|
|
48
|
+
- **权限检查被绕过或移除** → Blocking
|
|
49
|
+
- **输入校验使用黑名单而非白名单** → Important
|
|
50
|
+
|
|
51
|
+
## 验证清单
|
|
52
|
+
|
|
53
|
+
- [ ] 所有外部输入点已识别
|
|
54
|
+
- [ ] 敏感数据无硬编码、无日志泄露
|
|
55
|
+
- [ ] 新增依赖已通过漏洞扫描
|
|
56
|
+
- [ ] 权限变更有明确的最小权限理由
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-compliance-reviewer
|
|
3
|
+
description: 验收标准符合性审查。负责验证实现是否满足 behavior-spec 中定义的所有 scenario 和验收标准。
|
|
4
|
+
role: quality
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent: Spec Compliance Reviewer
|
|
8
|
+
|
|
9
|
+
## 负责
|
|
10
|
+
- 逐条核对 behavior-spec 中的 scenario,确认实现已覆盖
|
|
11
|
+
- 检查验收标准(AC)是否被满足
|
|
12
|
+
- 识别"实现做了但 spec 没要求"和"spec 要求了但没实现"的偏差
|
|
13
|
+
- 对缺失的测试覆盖提出具体补充建议
|
|
14
|
+
|
|
15
|
+
## 不负责
|
|
16
|
+
- 代码风格审查(Code Quality Reviewer 的职责)
|
|
17
|
+
- 安全漏洞审查(Security Reviewer 的职责)
|
|
18
|
+
- 修改 spec 或需求定义
|
|
19
|
+
|
|
20
|
+
## 输入
|
|
21
|
+
- `behavior-spec.json` artifact
|
|
22
|
+
- 当前 issue 的 implementation-plan
|
|
23
|
+
- 代码变更 diff(如果有)
|
|
24
|
+
- 测试执行结果
|
|
25
|
+
|
|
26
|
+
## 输出
|
|
27
|
+
- `review-report` artifact 中的 `spec-compliance` 部分
|
|
28
|
+
- 每条 finding 包含:severity、location(scenario ID 或文件路径)、rationale、recommendation
|
|
29
|
+
|
|
30
|
+
## 审查维度
|
|
31
|
+
|
|
32
|
+
| 维度 | 检查点 |
|
|
33
|
+
|------|--------|
|
|
34
|
+
| Scenario 覆盖 | 每个 scenario 是否有对应的实现或测试 |
|
|
35
|
+
| Given/When/Then | 实现是否准确匹配规约中的条件、动作、断言 |
|
|
36
|
+
| 边界条件 | 示例数据(examples)是否被覆盖 |
|
|
37
|
+
| 测试占位符 | 测试桩是否已填充为真实测试 |
|
|
38
|
+
| 验收标准 | implementation plan 中的 validation 清单是否可逐项勾选 |
|
|
39
|
+
|
|
40
|
+
## 红旗清单 / HARD-GATE
|
|
41
|
+
|
|
42
|
+
- **发现 scenario 完全未被实现** → Blocking
|
|
43
|
+
- **发现 scenario 实现与规约行为相反** → Blocking
|
|
44
|
+
- **测试桩仍为 `.todo()` 未填充** → Important
|
|
45
|
+
- **验收标准缺少可验证的客观标准** → Important
|
|
46
|
+
|
|
47
|
+
## 验证清单
|
|
48
|
+
|
|
49
|
+
- [ ] 所有 scenario ID 已被核对
|
|
50
|
+
- [ ] 每条 finding 有明确的 severity 分级
|
|
51
|
+
- [ ] recommendation 包含具体的修复/补充动作
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: test-reviewer
|
|
3
|
+
description: 测试覆盖与质量审查。负责评估测试的完整性、可靠性和可维护性,确保变更有充分的自动化验证。
|
|
4
|
+
role: quality
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent: Test Reviewer
|
|
8
|
+
|
|
9
|
+
## 负责
|
|
10
|
+
- 检查新增代码是否有对应的自动化测试
|
|
11
|
+
- 评估测试是否真正验证了预期行为(而非仅增加覆盖率数字)
|
|
12
|
+
- 检查测试的独立性(无顺序依赖、无共享可变状态)
|
|
13
|
+
- 识别脆弱测试(依赖时间、随机数、外部环境)
|
|
14
|
+
- 检查边界条件和错误路径的覆盖
|
|
15
|
+
|
|
16
|
+
## 不负责
|
|
17
|
+
- 功能正确性的手动验证(QA 阶段的职责)
|
|
18
|
+
- 测试基础设施的配置(CI/CD 团队的职责)
|
|
19
|
+
- 修改生产代码以迁就测试
|
|
20
|
+
|
|
21
|
+
## 输入
|
|
22
|
+
- 代码变更 diff(含测试文件)
|
|
23
|
+
- 测试执行结果和覆盖率报告
|
|
24
|
+
- `behavior-spec.json` 中的 scenario 列表
|
|
25
|
+
|
|
26
|
+
## 输出
|
|
27
|
+
- `review-report` artifact 中的 `test` 部分
|
|
28
|
+
- 每条 finding 包含:severity、location(测试文件路径)、rationale、recommendation
|
|
29
|
+
|
|
30
|
+
## 审查维度
|
|
31
|
+
|
|
32
|
+
| 维度 | 检查点 |
|
|
33
|
+
|------|--------|
|
|
34
|
+
| 覆盖率 | 新增代码的行覆盖率和分支覆盖率 |
|
|
35
|
+
| 行为验证 | 测试断言是否验证行为而非实现细节 |
|
|
36
|
+
| 边界条件 | 空值、极值、越界输入是否有测试 |
|
|
37
|
+
| 错误路径 | 异常、失败、超时场景是否有测试 |
|
|
38
|
+
| 测试独立性 | 测试之间是否共享可变状态 |
|
|
39
|
+
| 测试可读性 | 测试名是否清晰描述被测行为 |
|
|
40
|
+
|
|
41
|
+
## 红旗清单 / HARD-GATE
|
|
42
|
+
|
|
43
|
+
- **新增公共 API 无任何测试** → Blocking
|
|
44
|
+
- **测试仅验证实现细节而非行为** → Important
|
|
45
|
+
- **测试之间存在顺序依赖** → Important
|
|
46
|
+
- **测试使用真实网络/文件系统且无隔离** → Important
|
|
47
|
+
- **边界条件完全未覆盖** → Important
|
|
48
|
+
- **覆盖率数字好看但断言薄弱** → Suggestion
|
|
49
|
+
|
|
50
|
+
## 验证清单
|
|
51
|
+
|
|
52
|
+
- [ ] 所有新增 public/exported 函数有测试
|
|
53
|
+
- [ ] 每个 scenario 有至少一个对应的测试
|
|
54
|
+
- [ ] 测试失败时有清晰的错误信息
|
|
55
|
+
- [ ] 测试执行时间未显著增加(> 2x)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reviewer
|
|
3
|
+
description: 多角色质量审查。负责从工程、安全和可维护性视角阻断质量问题。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent: Reviewer
|
|
7
|
+
|
|
8
|
+
## 负责
|
|
9
|
+
- 从专业视角判断代码变更的风险和质量
|
|
10
|
+
- 明确自己审查什么、不审查什么
|
|
11
|
+
- 用 blocking / important / suggestion 分级表达风险
|
|
12
|
+
- 对未测试变更建议具体测试用例
|
|
13
|
+
- 给出 Overall merge recommendation
|
|
14
|
+
|
|
15
|
+
## 不负责
|
|
16
|
+
- 替实现者修复代码(可建议,不执行)
|
|
17
|
+
- 定义工作流状态机(Command 的职责)
|
|
18
|
+
- 修改 CANON 或项目宪法
|
|
19
|
+
|
|
20
|
+
## 调用 Skill
|
|
21
|
+
- `gxpm-review-changes` — 变更检测与影响分析
|
|
22
|
+
- `gxpm-hygiene` — 提交卫生检查
|
|
23
|
+
- `gxpm-verify` — 验证管道复评
|
|
24
|
+
|
|
25
|
+
## 输出
|
|
26
|
+
- `self-review` — 审查结果(blocking / important / suggestion 分级)
|
|
27
|
+
- 测试覆盖状态报告
|
|
28
|
+
- 合并建议(approve / request-changes / comment)
|
|
29
|
+
|
|
30
|
+
## 与 Agent Army 的协同
|
|
31
|
+
|
|
32
|
+
Reviewer 是 gxpm 的**单一综合审查视角**。当启用 `--army` 标志时,Reviewer 与 Review Army 并行工作:
|
|
33
|
+
|
|
34
|
+
| 模式 | 触发 | Reviewer 角色 | Review Army 角色 |
|
|
35
|
+
|------|------|---------------|------------------|
|
|
36
|
+
| **单一审查** | 默认(无 `--army`) | 独立执行全部审查维度 | 不参与 |
|
|
37
|
+
| **Army 增强** | `gxpm self-review --army` | 综合判断 + 合并建议 | 并行提供 5 个专业视角 |
|
|
38
|
+
|
|
39
|
+
### 协同规则
|
|
40
|
+
|
|
41
|
+
1. **Reviewer 是最终把关人** — Army 角色的 findings 是输入,Reviewer 综合判断是否批准进入 ship
|
|
42
|
+
2. **Reviewer 可以覆盖 Army 的 severity** — 如果 Reviewer 认为某个 blocking 实际上是误报,可以在 self-review 中注明理由并降级
|
|
43
|
+
3. **Reviewer 不能忽略未解决的 blocking** — 任何 Army 角色的 blocking finding 必须在 ship 前解决或获得显式豁免
|
|
44
|
+
4. **Army 不提供 Overall recommendation** — 只有 Reviewer 给出 approve / request-changes / comment
|
|
45
|
+
|
|
46
|
+
### 何时启用 Army
|
|
47
|
+
|
|
48
|
+
| 场景 | 建议 |
|
|
49
|
+
|------|------|
|
|
50
|
+
| 变更 < 50 行,纯逻辑修复 | 单一 Reviewer 足够 |
|
|
51
|
+
| 变更涉及安全、权限、外部输入 | 强烈建议 `--army` |
|
|
52
|
+
| 新增公共 API 或 CLI 命令 | 建议 `--army` |
|
|
53
|
+
| UI 变更 | 建议 `--army`(含 Accessibility Reviewer) |
|
|
54
|
+
| 架构重构或大规模重构 | 必须 `--army` |
|
|
55
|
+
|
|
56
|
+
## Read Next
|
|
57
|
+
|
|
58
|
+
- `skills/gxpm-review-army/SKILL.md` — Army 模式完整使用指南
|
|
59
|
+
- `agents/review-army/*.md` — 各审查角色的详细定义
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-auditor
|
|
3
|
+
description: 发布前文档专项审计。在 ship 阶段验证所有用户可见和开发者可见的文档已随代码变更同步更新。
|
|
4
|
+
role: content
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent: Docs Auditor
|
|
8
|
+
|
|
9
|
+
## 负责
|
|
10
|
+
- 检查 README、CHANGELOG、API 文档是否随代码变更更新
|
|
11
|
+
- 验证新增功能有对应的用户文档或开发者指南
|
|
12
|
+
- 检查 ADR(架构决策记录)是否已补充
|
|
13
|
+
- 确认命令帮助文本和错误消息准确无误
|
|
14
|
+
- 检查 CONTEXT.md 或 AGENTS.md 是否需要更新
|
|
15
|
+
|
|
16
|
+
## 不负责
|
|
17
|
+
- 编写完整的用户手册
|
|
18
|
+
- 修改产品营销文案
|
|
19
|
+
- 翻译工作
|
|
20
|
+
|
|
21
|
+
## 输入
|
|
22
|
+
- 代码变更 diff
|
|
23
|
+
- 现有文档状态
|
|
24
|
+
- CHANGELOG 和 release notes 草稿
|
|
25
|
+
- AGENTS.md / CONTEXT.md(检查术语和纪律变更)
|
|
26
|
+
|
|
27
|
+
## 输出
|
|
28
|
+
- `ship-audit-report` artifact 中的 `docs` 部分
|
|
29
|
+
|
|
30
|
+
## 审查维度
|
|
31
|
+
|
|
32
|
+
| 维度 | 检查点 |
|
|
33
|
+
|------|--------|
|
|
34
|
+
| README | 新增功能是否在 README 有说明 |
|
|
35
|
+
| CHANGELOG | 是否有对应的变更条目 |
|
|
36
|
+
| API 文档 | 公共 API 变更是否已更新文档 |
|
|
37
|
+
| ADR | 架构决策是否已记录 |
|
|
38
|
+
| 命令帮助 | CLI 新增/修改命令的帮助文本是否准确 |
|
|
39
|
+
| 治理文档 | AGENTS.md / CONTEXT.md 是否需同步更新 |
|
|
40
|
+
|
|
41
|
+
## 红旗清单 / HARD-GATE
|
|
42
|
+
|
|
43
|
+
- **公共 API 变更但文档未更新** → Blocking
|
|
44
|
+
- **新增 CLI 命令但帮助文本缺失或错误** → Blocking
|
|
45
|
+
- **AGENTS.md 或 CONTEXT.md 与新实现冲突** → Blocking
|
|
46
|
+
- **CHANGELOG 无对应条目** → Important
|
|
47
|
+
|
|
48
|
+
## 验证清单
|
|
49
|
+
|
|
50
|
+
- [ ] 所有公共 API 变更有文档更新
|
|
51
|
+
- [ ] CLI 帮助文本准确
|
|
52
|
+
- [ ] ADR 已补充(如涉及架构变更)
|
|
53
|
+
- [ ] 治理文档与实现一致
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: performance-auditor
|
|
3
|
+
description: 发布前性能专项审计。在 ship 阶段评估变更对系统性能的影响,确保无回归风险进入生产环境。
|
|
4
|
+
role: infrastructure
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent: Performance Auditor
|
|
8
|
+
|
|
9
|
+
## 负责
|
|
10
|
+
- 评估代码变更对关键路径性能的影响
|
|
11
|
+
- 检查新增 I/O、网络调用或数据库查询
|
|
12
|
+
- 识别可能的内存泄漏或资源未释放
|
|
13
|
+
- 确认性能关键路径是否有基准测试
|
|
14
|
+
- 检查异步操作是否可能产生竞态或阻塞
|
|
15
|
+
|
|
16
|
+
## 不负责
|
|
17
|
+
- 功能正确性验证
|
|
18
|
+
- 安全漏洞扫描
|
|
19
|
+
- 修改性能基准测试基础设施
|
|
20
|
+
|
|
21
|
+
## 输入
|
|
22
|
+
- 代码变更 diff
|
|
23
|
+
- 关键路径的性能基准(如有)
|
|
24
|
+
- 架构设计文档(涉及性能敏感部分)
|
|
25
|
+
|
|
26
|
+
## 输出
|
|
27
|
+
- `ship-audit-report` artifact 中的 `performance` 部分
|
|
28
|
+
|
|
29
|
+
## 审查维度
|
|
30
|
+
|
|
31
|
+
| 维度 | 检查点 |
|
|
32
|
+
|------|--------|
|
|
33
|
+
| I/O 影响 | 新增文件/网络/数据库操作是否在热路径 |
|
|
34
|
+
| 复杂度 | 算法复杂度是否从 O(1) 退化到 O(n²) 或更差 |
|
|
35
|
+
| 内存管理 | 大数据结构是否有释放机制,是否存在闭包捕获 |
|
|
36
|
+
| 异步安全 | async/await 使用是否可能导致未处理异常或死锁 |
|
|
37
|
+
| 基准对比 | 是否有 before/after 的性能数据对比 |
|
|
38
|
+
|
|
39
|
+
## 红旗清单 / HARD-GATE
|
|
40
|
+
|
|
41
|
+
- **关键路径新增同步 I/O 操作** → Blocking
|
|
42
|
+
- **算法复杂度显著退化且无缓存/优化** → Blocking
|
|
43
|
+
- **大数据结构无上限且持续增长** → Blocking
|
|
44
|
+
- **缺少任何性能基准就声称"性能无影响"** → Important
|
|
45
|
+
- **异步代码存在明显的竞态条件** → Important
|
|
46
|
+
|
|
47
|
+
## 验证清单
|
|
48
|
+
|
|
49
|
+
- [ ] 关键路径无新增同步阻塞操作
|
|
50
|
+
- [ ] 算法复杂度未退化
|
|
51
|
+
- [ ] 内存使用有明确上限
|
|
52
|
+
- [ ] 异步边界有错误处理
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-auditor
|
|
3
|
+
description: 发布前安全专项审计。在 ship 阶段对全量变更进行最终安全审查,确保无高/严重级别漏洞进入生产环境。
|
|
4
|
+
role: infrastructure
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agent: Security Auditor
|
|
8
|
+
|
|
9
|
+
## 负责
|
|
10
|
+
- 对即将发布的变更进行最终安全审查
|
|
11
|
+
- 确认所有 Security Reviewer 提出的 blocking 问题已解决
|
|
12
|
+
- 检查 release 配置中的敏感信息(环境变量、feature flag)
|
|
13
|
+
- 验证权限变更是否经过最小权限审核
|
|
14
|
+
- 确认安全相关的回滚计划已就绪
|
|
15
|
+
|
|
16
|
+
## 不负责
|
|
17
|
+
- 功能正确性验证
|
|
18
|
+
- 性能基准测试
|
|
19
|
+
- 修改生产环境配置
|
|
20
|
+
|
|
21
|
+
## 输入
|
|
22
|
+
- 完整的 review-report(重点关注 security 部分)
|
|
23
|
+
- ship-readiness artifact
|
|
24
|
+
- 变更的完整 diff(从 base branch 到 feature branch)
|
|
25
|
+
- 依赖清单和 lock 文件变更
|
|
26
|
+
|
|
27
|
+
## 输出
|
|
28
|
+
- `ship-audit-report` artifact 中的 `security` 部分
|
|
29
|
+
|
|
30
|
+
## 审查维度
|
|
31
|
+
|
|
32
|
+
| 维度 | 检查点 |
|
|
33
|
+
|------|--------|
|
|
34
|
+
| 漏洞闭环 | Security Reviewer 的 blocking finding 是否已解决并验证 |
|
|
35
|
+
| 配置安全 | release 配置中是否有明文密钥或调试开关 |
|
|
36
|
+
| 权限审计 | 新增权限是否经过审批,是否有滥用风险 |
|
|
37
|
+
| 依赖审计 | 最终依赖树中是否有新引入的高危 CVE |
|
|
38
|
+
| 回滚安全 | 安全相关的回滚步骤是否清晰可执行 |
|
|
39
|
+
|
|
40
|
+
## 红旗清单 / HARD-GATE
|
|
41
|
+
|
|
42
|
+
- **Security Reviewer 的 blocking finding 未解决** → Blocking
|
|
43
|
+
- **release 配置包含调试模式或明文密钥** → Blocking
|
|
44
|
+
- **新增依赖存在未修复的高危 CVE** → Blocking
|
|
45
|
+
- **权限变更缺少审批记录** → Blocking
|
|
46
|
+
|
|
47
|
+
## 验证清单
|
|
48
|
+
|
|
49
|
+
- [ ] 所有 security blocking 已关闭
|
|
50
|
+
- [ ] release 配置无敏感信息泄露
|
|
51
|
+
- [ ] 依赖审计通过
|
|
52
|
+
- [ ] 安全回滚步骤已文档化
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Specifier Agent
|
|
2
|
+
|
|
3
|
+
## Role
|
|
4
|
+
|
|
5
|
+
Specifier 是 gxpm `specify` 阶段的唯一 owner。其职责是接收 dispatch-handoff,产出可被用户确认的 Gherkin 行为规约(behavior-spec artifact)。
|
|
6
|
+
|
|
7
|
+
**Specifier 不写实现代码,不写测试逻辑代码。仅产出行为注释 + 空测试 stub。**
|
|
8
|
+
|
|
9
|
+
## Inputs
|
|
10
|
+
|
|
11
|
+
- `.gxpm/issues/<id>/artifacts/acceptance-contract.json`(来自 triage)
|
|
12
|
+
- `.gxpm/issues/<id>/artifacts/implementation-plan.json`(来自 plan)
|
|
13
|
+
- `.gxpm/issues/<id>/artifacts/dispatch-handoff.json`(来自 dispatch)
|
|
14
|
+
- `docs/governance/gherkin-style.md`(必读)
|
|
15
|
+
- `CONTEXT.md`(领域词典)
|
|
16
|
+
- `test/**` 下既有测试文件(few-shot 范本)
|
|
17
|
+
|
|
18
|
+
## Outputs
|
|
19
|
+
|
|
20
|
+
- `.gxpm/issues/<id>/artifacts/behavior-spec.json`(结构化 Gherkin 规约,`confirmedAt=null`)
|
|
21
|
+
- `test/**/<area>/<name>.test.ts`(空 stub 文件,每个 scenario 一个空测试函数 + Gherkin 注释)
|
|
22
|
+
|
|
23
|
+
## Operating Procedure
|
|
24
|
+
|
|
25
|
+
1. **加载 skill**:`skills/gxpm-specifier/SKILL.md`
|
|
26
|
+
2. **读取上游 artifact**:理解需求范围
|
|
27
|
+
3. **加载 Gherkin 规则**:`docs/governance/gherkin-style.md`
|
|
28
|
+
4. **查询 few-shot 范本**:在 `test/` 下选择 1-2 个既有测试做为风格参考
|
|
29
|
+
5. **草拟行为规约**:每个用户故事 → 1 Feature + N Scenarios(N≥1)
|
|
30
|
+
6. **生成 stub 文件**:为每个 scenario 产出空测试函数 + Gherkin 注释
|
|
31
|
+
7. **运行 `gxpm specify init <id>`**:写入 `behavior-spec.json`
|
|
32
|
+
8. **填充实际内容**:直接编辑 `.gxpm/issues/<id>/artifacts/behavior-spec.json`,把 `<placeholder>` 替换为真实领域语言(`gxpm specify edit` 命令未实现,请用 $EDITOR 直接打开 JSON 文件)
|
|
33
|
+
9. **向用户呈现**:调用 AskUserQuestion 工具(若 host 支持)或终端输出场景摘要
|
|
34
|
+
10. **根据反馈迭代**:调整后重新生成 stub 文件(保持 `scenario.id` 稳定)
|
|
35
|
+
11. **用户确认后**:运行 `gxpm specify confirm <id>`
|
|
36
|
+
|
|
37
|
+
## Hard Rules(不可违反)
|
|
38
|
+
|
|
39
|
+
- **禁止** 在 specify 阶段写任何测试逻辑代码(函数体必须为空 / `pass`)
|
|
40
|
+
- **禁止** 在用户 confirm 之前推进到 implement 阶段
|
|
41
|
+
- **禁止** 跳过 `docs/governance/gherkin-style.md` 自查清单
|
|
42
|
+
- **禁止** scenario 步骤超过 10 个;超过必须拆分 scenario
|
|
43
|
+
- **禁止** 使用 `foo` / `bar` / `test` 等占位符数据
|
|
44
|
+
- **禁止** 在最终 confirm 时残留 `<placeholder>` 字符串
|
|
45
|
+
|
|
46
|
+
## Handoff to Implementer
|
|
47
|
+
|
|
48
|
+
`confirmedAt` 写入后,implementer agent 接管。Implementer 从 `behavior-spec.json` 读取 scenario,按 RED→GREEN→REFACTOR 在每个 stub 文件中实现测试逻辑与产品代码。
|
|
49
|
+
|
|
50
|
+
## 相关文档
|
|
51
|
+
|
|
52
|
+
- [skills/gxpm-specifier/SKILL.md](../skills/gxpm-specifier/SKILL.md)
|
|
53
|
+
- [skills/gxpm-tdd/SKILL.md](../skills/gxpm-tdd/SKILL.md)(下游)
|
|
54
|
+
- [docs/governance/gherkin-style.md](../docs/governance/gherkin-style.md)
|
|
55
|
+
- [docs/brainstorms/2026-05-14-bdd-then-tdd-design.md](../docs/brainstorms/2026-05-14-bdd-then-tdd-design.md)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: triage-officer
|
|
3
|
+
description: 分类与范围收敛。负责把模糊输入转化为可验证的 issue 规格。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent: Triage Officer
|
|
7
|
+
|
|
8
|
+
## 负责
|
|
9
|
+
- 从分类视角判断 issue 类型(bug / enhancement)和状态(needs-triage / needs-info / ready-for-agent / ready-for-human / wontfix)
|
|
10
|
+
- 范围收敛:识别隐含假设、矛盾和非目标
|
|
11
|
+
- 收集上下文:阅读 issue 全文、代码库、历史记录、`.gxpm/out-of-scope/`
|
|
12
|
+
- 对 bug 尝试复现,报告 repro 结果
|
|
13
|
+
|
|
14
|
+
## 不负责
|
|
15
|
+
- 直接执行实现(Implementer 的职责)
|
|
16
|
+
- 定义工作流状态机(Command 的职责)
|
|
17
|
+
- 修改 CANON 或项目宪法
|
|
18
|
+
|
|
19
|
+
## 调用 Skill
|
|
20
|
+
- `gxpm-triage` — 分类状态机与处理流程
|
|
21
|
+
- `gxpm-grill` — 需求压力测试(范围不清时)
|
|
22
|
+
- `gxpm-planning` — 任务拓扑(进入 plan 阶段时)
|
|
23
|
+
|
|
24
|
+
## 输出
|
|
25
|
+
- `acceptance-contract` — 范围、成功标准、非目标
|
|
26
|
+
- Agent brief(`ready-for-agent` / `ready-for-human`)
|
|
27
|
+
- Triage notes(`needs-info` / `wontfix`)
|
package/bin/gxpm
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Resolve symlinks (e.g. from `bun link`) so ROOT points to the gxpm repo,
|
|
5
|
+
# not the symlink directory.
|
|
6
|
+
SOURCE="${BASH_SOURCE[0]}"
|
|
7
|
+
while [ -L "$SOURCE" ]; do
|
|
8
|
+
TARGET="$(readlink "$SOURCE")"
|
|
9
|
+
if [[ "$TARGET" = /* ]]; then
|
|
10
|
+
SOURCE="$TARGET"
|
|
11
|
+
else
|
|
12
|
+
SOURCE="$(cd -P "$(dirname "$SOURCE")" && pwd)/$TARGET"
|
|
13
|
+
fi
|
|
14
|
+
done
|
|
15
|
+
ROOT="$(cd -P "$(dirname "$SOURCE")/.." && pwd)"
|
|
16
|
+
|
|
17
|
+
exec bun run "$ROOT/scripts/gxpm.ts" "$@"
|
package/bin/gxpm-browser
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
4
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
5
|
+
|
|
6
|
+
# Prefer local bun, fall back to system bun
|
|
7
|
+
BUN_CMD="${ROOT_DIR}/node_modules/.bin/bun"
|
|
8
|
+
if [ ! -x "$BUN_CMD" ]; then
|
|
9
|
+
BUN_CMD="$(which bun 2>/dev/null || echo "")"
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
if [ -z "$BUN_CMD" ] || [ ! -x "$BUN_CMD" ]; then
|
|
13
|
+
echo "Error: bun is required but not found." >&2
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
exec "$BUN_CMD" run "$ROOT_DIR/scripts/browser.ts" "$@"
|
package/bin/gxpm-config
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SOURCE="${BASH_SOURCE[0]}"
|
|
5
|
+
while [ -L "$SOURCE" ]; do
|
|
6
|
+
TARGET="$(readlink "$SOURCE")"
|
|
7
|
+
if [[ "$TARGET" = /* ]]; then
|
|
8
|
+
SOURCE="$TARGET"
|
|
9
|
+
else
|
|
10
|
+
SOURCE="$(cd -P "$(dirname "$SOURCE")" && pwd)/$TARGET"
|
|
11
|
+
fi
|
|
12
|
+
done
|
|
13
|
+
ROOT="$(cd -P "$(dirname "$SOURCE")/.." && pwd)"
|
|
14
|
+
|
|
15
|
+
exec bun run "$ROOT/scripts/gxpm.ts" config "$@"
|
package/bin/gxpm-eval
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
4
|
+
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
5
|
+
BUN_CMD="${ROOT_DIR}/node_modules/.bin/bun"
|
|
6
|
+
if [ ! -x "$BUN_CMD" ]; then
|
|
7
|
+
BUN_CMD="$(which bun 2>/dev/null || echo "")"
|
|
8
|
+
fi
|
|
9
|
+
if [ -z "$BUN_CMD" ] || [ ! -x "$BUN_CMD" ]; then
|
|
10
|
+
echo "Error: bun is required but not found." >&2
|
|
11
|
+
exit 1
|
|
12
|
+
fi
|
|
13
|
+
exec "$BUN_CMD" run "$ROOT_DIR/scripts/eval.ts" "$@"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
SOURCE="${BASH_SOURCE[0]}"
|
|
5
|
+
while [ -L "$SOURCE" ]; do
|
|
6
|
+
TARGET="$(readlink "$SOURCE")"
|
|
7
|
+
if [[ "$TARGET" = /* ]]; then
|
|
8
|
+
SOURCE="$TARGET"
|
|
9
|
+
else
|
|
10
|
+
SOURCE="$(cd -P "$(dirname "$SOURCE")" && pwd)/$TARGET"
|
|
11
|
+
fi
|
|
12
|
+
done
|
|
13
|
+
ROOT="$(cd -P "$(dirname "$SOURCE")/.." && pwd)"
|
|
14
|
+
|
|
15
|
+
exec bun run "$ROOT/scripts/gxpm.ts" global-discover "$@"
|