cataforge 0.1.0__py3-none-any.whl
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.
- cataforge/__init__.py +3 -0
- cataforge/__main__.py +6 -0
- cataforge/_assets/__init__.py +11 -0
- cataforge/_assets/cataforge_scaffold/PROJECT-STATE.md +80 -0
- cataforge/_assets/cataforge_scaffold/agents/architect/AGENT.md +51 -0
- cataforge/_assets/cataforge_scaffold/agents/debugger/AGENT.md +52 -0
- cataforge/_assets/cataforge_scaffold/agents/devops/AGENT.md +38 -0
- cataforge/_assets/cataforge_scaffold/agents/implementer/AGENT.md +64 -0
- cataforge/_assets/cataforge_scaffold/agents/orchestrator/AGENT.md +88 -0
- cataforge/_assets/cataforge_scaffold/agents/orchestrator/ORCHESTRATOR-PROTOCOLS.md +416 -0
- cataforge/_assets/cataforge_scaffold/agents/product-manager/AGENT.md +38 -0
- cataforge/_assets/cataforge_scaffold/agents/qa-engineer/AGENT.md +37 -0
- cataforge/_assets/cataforge_scaffold/agents/refactorer/AGENT.md +47 -0
- cataforge/_assets/cataforge_scaffold/agents/reflector/AGENT.md +101 -0
- cataforge/_assets/cataforge_scaffold/agents/reviewer/AGENT.md +56 -0
- cataforge/_assets/cataforge_scaffold/agents/tech-lead/AGENT.md +49 -0
- cataforge/_assets/cataforge_scaffold/agents/test-writer/AGENT.md +56 -0
- cataforge/_assets/cataforge_scaffold/agents/ui-designer/AGENT.md +53 -0
- cataforge/_assets/cataforge_scaffold/framework.json +208 -0
- cataforge/_assets/cataforge_scaffold/hooks/hooks.yaml +86 -0
- cataforge/_assets/cataforge_scaffold/platforms/_schema.yaml +87 -0
- cataforge/_assets/cataforge_scaffold/platforms/claude-code/profile.yaml +111 -0
- cataforge/_assets/cataforge_scaffold/platforms/codex/overrides/dispatch-prompt.md +29 -0
- cataforge/_assets/cataforge_scaffold/platforms/codex/profile.yaml +103 -0
- cataforge/_assets/cataforge_scaffold/platforms/cursor/overrides/dispatch-prompt.md +20 -0
- cataforge/_assets/cataforge_scaffold/platforms/cursor/profile.yaml +110 -0
- cataforge/_assets/cataforge_scaffold/platforms/opencode/profile.yaml +99 -0
- cataforge/_assets/cataforge_scaffold/rules/COMMON-RULES.md +180 -0
- cataforge/_assets/cataforge_scaffold/rules/SUB-AGENT-PROTOCOLS.md +49 -0
- cataforge/_assets/cataforge_scaffold/schemas/agent-result.schema.json +61 -0
- cataforge/_assets/cataforge_scaffold/schemas/event-log.schema.json +77 -0
- cataforge/_assets/cataforge_scaffold/skills/agent-dispatch/SKILL.md +92 -0
- cataforge/_assets/cataforge_scaffold/skills/agent-dispatch/templates/dispatch-prompt.md +83 -0
- cataforge/_assets/cataforge_scaffold/skills/arc-design/SKILL.md +93 -0
- cataforge/_assets/cataforge_scaffold/skills/change-guard/SKILL.md +97 -0
- cataforge/_assets/cataforge_scaffold/skills/code-review/SKILL.md +65 -0
- cataforge/_assets/cataforge_scaffold/skills/debug/SKILL.md +95 -0
- cataforge/_assets/cataforge_scaffold/skills/dep-analysis/SKILL.md +86 -0
- cataforge/_assets/cataforge_scaffold/skills/deploy-config/SKILL.md +152 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/SKILL.md +138 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/_registry.yaml +192 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/lite/arch-lite.md +60 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/lite/dev-plan-lite.md +53 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/lite/prd-lite.md +52 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/prototype/brief.md +100 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/standard/arch.md +120 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/standard/deploy-spec.md +44 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/standard/dev-plan.md +76 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/standard/prd.md +66 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/standard/test-report.md +66 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/standard/ui-spec.md +79 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/utility/changelog.md +17 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/utility/research-note.md +36 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/utility/sprint-review.md +60 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/volumes/arch-api.md +37 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/volumes/arch-data.md +33 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/volumes/arch-modules.md +30 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/volumes/dev-plan-sprint.md +39 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/volumes/prd-volume.md +31 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/volumes/ui-spec-components.md +30 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-gen/templates/volumes/ui-spec-pages.md +35 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-nav/SKILL.md +81 -0
- cataforge/_assets/cataforge_scaffold/skills/doc-review/SKILL.md +101 -0
- cataforge/_assets/cataforge_scaffold/skills/penpot-implement/SKILL.md +69 -0
- cataforge/_assets/cataforge_scaffold/skills/penpot-review/SKILL.md +79 -0
- cataforge/_assets/cataforge_scaffold/skills/penpot-sync/SKILL.md +75 -0
- cataforge/_assets/cataforge_scaffold/skills/platform-audit/SKILL.md +502 -0
- cataforge/_assets/cataforge_scaffold/skills/platform-audit/references/audit-checklist.md +301 -0
- cataforge/_assets/cataforge_scaffold/skills/platform-audit/references/capability-matrix.md +257 -0
- cataforge/_assets/cataforge_scaffold/skills/platform-audit/references/platform-sources.md +212 -0
- cataforge/_assets/cataforge_scaffold/skills/req-analysis/SKILL.md +67 -0
- cataforge/_assets/cataforge_scaffold/skills/research/SKILL.md +63 -0
- cataforge/_assets/cataforge_scaffold/skills/sprint-review/SKILL.md +73 -0
- cataforge/_assets/cataforge_scaffold/skills/start-orchestrator/SKILL.md +44 -0
- cataforge/_assets/cataforge_scaffold/skills/task-decomp/SKILL.md +42 -0
- cataforge/_assets/cataforge_scaffold/skills/tdd-engine/SKILL.md +216 -0
- cataforge/_assets/cataforge_scaffold/skills/tech-eval/SKILL.md +38 -0
- cataforge/_assets/cataforge_scaffold/skills/testing/SKILL.md +82 -0
- cataforge/_assets/cataforge_scaffold/skills/ui-design/SKILL.md +96 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/SKILL.md +417 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/examples/content-creation.yaml +176 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/examples/ecommerce-ops.yaml +148 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/examples/research-analysis.yaml +144 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/references/architecture-guidelines.md +231 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/references/domain-patterns.md +251 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/references/platform-capabilities.md +104 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/scripts/__init__.py +0 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/scripts/scaffold.py +202 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/scripts/validate_framework.py +450 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/agent.md.tmpl +49 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/common-rules.md.tmpl +58 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/framework.json.tmpl +24 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/hooks.yaml.tmpl +19 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/platform-profiles/claude-code.yaml.tmpl +44 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/platform-profiles/codex.yaml.tmpl +51 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/platform-profiles/cursor.yaml.tmpl +48 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/platform-profiles/opencode.yaml.tmpl +49 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/project-state.md.tmpl +34 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/skill.md.tmpl +38 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/sub-agent-protocols.md.tmpl +61 -0
- cataforge/_assets/cataforge_scaffold/skills/workflow-framework-generator/templates/workflow.yaml.tmpl +46 -0
- cataforge/agent/__init__.py +1 -0
- cataforge/agent/manager.py +68 -0
- cataforge/agent/result_parser.py +95 -0
- cataforge/agent/translator.py +47 -0
- cataforge/cli/__init__.py +1 -0
- cataforge/cli/agent_cmd.py +42 -0
- cataforge/cli/deploy_cmd.py +72 -0
- cataforge/cli/docs_cmd.py +42 -0
- cataforge/cli/doctor_cmd.py +80 -0
- cataforge/cli/hook_cmd.py +48 -0
- cataforge/cli/main.py +53 -0
- cataforge/cli/mcp_cmd.py +71 -0
- cataforge/cli/penpot_cmd.py +75 -0
- cataforge/cli/plugin_cmd.py +56 -0
- cataforge/cli/setup_cmd.py +112 -0
- cataforge/cli/skill_cmd.py +48 -0
- cataforge/cli/stubs.py +36 -0
- cataforge/cli/upgrade_cmd.py +59 -0
- cataforge/core/__init__.py +1 -0
- cataforge/core/config.py +106 -0
- cataforge/core/events.py +98 -0
- cataforge/core/paths.py +112 -0
- cataforge/core/scaffold.py +64 -0
- cataforge/core/types.py +167 -0
- cataforge/deploy/__init__.py +1 -0
- cataforge/deploy/deployer.py +160 -0
- cataforge/deploy/template.py +70 -0
- cataforge/docs/__init__.py +1 -0
- cataforge/docs/indexer.py +268 -0
- cataforge/docs/loader.py +394 -0
- cataforge/hook/__init__.py +1 -0
- cataforge/hook/base.py +196 -0
- cataforge/hook/bridge.py +170 -0
- cataforge/hook/scripts/__init__.py +1 -0
- cataforge/hook/scripts/detect_correction.py +130 -0
- cataforge/hook/scripts/guard_dangerous.py +75 -0
- cataforge/hook/scripts/lint_format.py +106 -0
- cataforge/hook/scripts/log_agent_dispatch.py +46 -0
- cataforge/hook/scripts/notify_done.py +27 -0
- cataforge/hook/scripts/notify_permission.py +28 -0
- cataforge/hook/scripts/notify_util.py +79 -0
- cataforge/hook/scripts/session_context.py +34 -0
- cataforge/hook/scripts/validate_agent_result.py +73 -0
- cataforge/integrations/__init__.py +1 -0
- cataforge/integrations/penpot.py +605 -0
- cataforge/mcp/__init__.py +1 -0
- cataforge/mcp/lifecycle.py +118 -0
- cataforge/mcp/registry.py +114 -0
- cataforge/platform/__init__.py +8 -0
- cataforge/platform/base.py +330 -0
- cataforge/platform/claude_code.py +42 -0
- cataforge/platform/codex.py +119 -0
- cataforge/platform/conformance.py +120 -0
- cataforge/platform/cursor.py +106 -0
- cataforge/platform/helpers.py +235 -0
- cataforge/platform/opencode.py +100 -0
- cataforge/platform/registry.py +122 -0
- cataforge/plugin/__init__.py +1 -0
- cataforge/plugin/loader.py +77 -0
- cataforge/py.typed +0 -0
- cataforge/schema/__init__.py +13 -0
- cataforge/schema/framework.py +38 -0
- cataforge/schema/mcp_spec.py +72 -0
- cataforge/schema/plugin_manifest.py +59 -0
- cataforge/skill/__init__.py +1 -0
- cataforge/skill/builtins/__init__.py +1 -0
- cataforge/skill/builtins/code_review/__init__.py +1 -0
- cataforge/skill/builtins/code_review/code_lint.py +172 -0
- cataforge/skill/builtins/dep_analysis/__init__.py +1 -0
- cataforge/skill/builtins/dep_analysis/dep_analysis.py +223 -0
- cataforge/skill/builtins/doc_review/__init__.py +1 -0
- cataforge/skill/builtins/doc_review/checker.py +293 -0
- cataforge/skill/builtins/doc_review/constants.py +27 -0
- cataforge/skill/builtins/doc_review/doc_check.py +11 -0
- cataforge/skill/builtins/doc_review/template_registry.py +134 -0
- cataforge/skill/builtins/doc_review/typed_checks.py +309 -0
- cataforge/skill/builtins/sprint_review/__init__.py +1 -0
- cataforge/skill/builtins/sprint_review/sprint_check.py +316 -0
- cataforge/skill/loader.py +172 -0
- cataforge/skill/runner.py +86 -0
- cataforge/utils/__init__.py +1 -0
- cataforge/utils/common.py +182 -0
- cataforge/utils/docker_util.py +259 -0
- cataforge/utils/frontmatter.py +41 -0
- cataforge/utils/md_parse.py +36 -0
- cataforge/utils/patterns.py +28 -0
- cataforge/utils/yaml_parser.py +31 -0
- cataforge-0.1.0.dist-info/METADATA +317 -0
- cataforge-0.1.0.dist-info/RECORD +193 -0
- cataforge-0.1.0.dist-info/WHEEL +4 -0
- cataforge-0.1.0.dist-info/entry_points.txt +8 -0
- cataforge-0.1.0.dist-info/licenses/LICENSE +21 -0
cataforge/__init__.py
ADDED
cataforge/__main__.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Bundled CataForge assets.
|
|
2
|
+
|
|
3
|
+
Holds non-Python data shipped inside the wheel:
|
|
4
|
+
|
|
5
|
+
- ``cataforge_scaffold/``: the default ``.cataforge/`` project skeleton
|
|
6
|
+
(agents, skills, rules, hooks, platform profiles, schemas, templates)
|
|
7
|
+
copied into the user's project on ``cataforge setup``.
|
|
8
|
+
|
|
9
|
+
Access via :func:`importlib.resources.files` — do not import submodules
|
|
10
|
+
directly. See :mod:`cataforge.core.scaffold` for the public helper.
|
|
11
|
+
"""
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# CataForge
|
|
2
|
+
|
|
3
|
+
## 项目信息
|
|
4
|
+
|
|
5
|
+
- 技术栈: {框架/语言/工具}
|
|
6
|
+
- 运行时: {platform}
|
|
7
|
+
- 框架版本: pyproject.toml `[project].version`(SemVer: MAJOR=不兼容变更, MINOR=新功能, PATCH=修复)
|
|
8
|
+
- 语言定位: 中文框架(提示词/文档/交互用中文;代码/变量/CLI参数用英文)
|
|
9
|
+
- 执行模式: standard
|
|
10
|
+
<!-- 可选值: standard | agile-lite | agile-prototype。矩阵见 COMMON-RULES §执行模式矩阵。模式切换由 orchestrator §Mode Routing Protocol 路由 -->
|
|
11
|
+
- 阶段配置: 以下阶段可在 Bootstrap 时标记为 N/A 以跳过:
|
|
12
|
+
- ui_design: 后端/CLI/API-only 项目可跳过(默认行为)
|
|
13
|
+
- testing: 原型/PoC 项目可跳过
|
|
14
|
+
- deployment: 库/SDK 项目可跳过
|
|
15
|
+
<!-- orchestrator 在 Bootstrap Step 1 收集项目信息时,向用户确认可跳过的阶段 -->
|
|
16
|
+
- model 继承: AGENT.md 中 `model: inherit` 继承父会话模型;可用 `model: <model-id>` 覆盖
|
|
17
|
+
|
|
18
|
+
## 执行环境 (Bootstrap 时由 setup.py --emit-env-block 填入)
|
|
19
|
+
|
|
20
|
+
<!-- 本节在 Bootstrap 步骤中生成。每次会话都会作为项目指令加载,
|
|
21
|
+
权重高于 hook 注入的 additionalContext。项目生命周期内保持稳定。 -->
|
|
22
|
+
{执行环境检测结果 — 未填入时 orchestrator 应在 Bootstrap 时调用:
|
|
23
|
+
python .cataforge/scripts/framework/setup.py --emit-env-block}
|
|
24
|
+
|
|
25
|
+
## 项目状态 (orchestrator专属写入区,其他Agent禁止修改)
|
|
26
|
+
|
|
27
|
+
- 当前阶段: {requirements|architecture|ui_design|dev_planning|development|testing|deployment|completed}
|
|
28
|
+
- 上次完成: {agent目录名} — {简要描述完成的工作}
|
|
29
|
+
- 下一步行动: {具体的下一步}
|
|
30
|
+
- 已完成阶段: []
|
|
31
|
+
- 当前Sprint: — (DEV阶段由orchestrator在Sprint推进时更新)
|
|
32
|
+
- 文档状态:
|
|
33
|
+
- prd: 未开始
|
|
34
|
+
- arch: 未开始
|
|
35
|
+
- ui-spec: 未开始
|
|
36
|
+
- dev-plan: 未开始
|
|
37
|
+
- test-report: 未开始
|
|
38
|
+
- deploy-spec: 未开始
|
|
39
|
+
<!-- changelog 由 devops 产出但不纳入门禁追踪 -->
|
|
40
|
+
- Learnings Registry: (首次 retrospective 后填充)
|
|
41
|
+
|
|
42
|
+
## 文档导航
|
|
43
|
+
|
|
44
|
+
- 导航索引: docs/NAV-INDEX.md (所有Agent优先查阅)
|
|
45
|
+
- 通用规则: .cataforge/rules/COMMON-RULES.md
|
|
46
|
+
- 子代理协议: .cataforge/rules/SUB-AGENT-PROTOCOLS.md
|
|
47
|
+
- 编排协议: .cataforge/agents/orchestrator/ORCHESTRATOR-PROTOCOLS.md (orchestrator专属)
|
|
48
|
+
- 状态码Schema: .cataforge/schemas/agent-result.schema.json
|
|
49
|
+
- 加载原则: 按任务需要通过NAV-INDEX定位并加载相关章节,不全量加载
|
|
50
|
+
|
|
51
|
+
## 全局约定
|
|
52
|
+
|
|
53
|
+
- 命名: {规范}
|
|
54
|
+
- Commit: {格式}
|
|
55
|
+
- 分支: {策略}
|
|
56
|
+
- 设计工具: none
|
|
57
|
+
<!-- 可选值: none | penpot。设为 penpot 时启用 Penpot MCP 集成 -->
|
|
58
|
+
- 人工审查检查点: [pre_dev, pre_deploy]
|
|
59
|
+
<!-- 详见 COMMON-RULES §MANUAL_REVIEW_CHECKPOINTS -->
|
|
60
|
+
- 文档类型命名: 小写 kebab-case(prd、arch、dev-plan、test-report、ui-spec、deploy-spec…),含工具参数和产出文件名
|
|
61
|
+
- 效率原则:
|
|
62
|
+
- 最小传递: Agent间传递doc_id#section引用,非全文
|
|
63
|
+
- 不确定时调研: 调用research skill,不猜测
|
|
64
|
+
- 选择题优先: 需要用户输入时优先提供选项
|
|
65
|
+
- 长文拆分: 文档超 `DOC_SPLIT_THRESHOLD_LINES` 行时按doc-gen拆分策略分卷
|
|
66
|
+
|
|
67
|
+
## 框架机制
|
|
68
|
+
|
|
69
|
+
- Agent编排: orchestrator 通过 agent-dispatch skill 激活子代理
|
|
70
|
+
- DEV阶段: orchestrator 通过 tdd-engine skill 编排 RED/GREEN/REFACTOR 三个子代理(独立上下文)
|
|
71
|
+
- Skill调用: Agent按SKILL.md步骤式指令执行工作流
|
|
72
|
+
- 状态持久化: PROJECT-STATE.md + docs/ 目录
|
|
73
|
+
- 子代理通信: 通过文件系统(docs/和src/)传递产出物路径
|
|
74
|
+
- 运行时: 由 framework.json runtime.platform 决定(deploy 自动适配)
|
|
75
|
+
- **写权限**: PROJECT-STATE.md 由 orchestrator 独占写入;其他Agent只写 docs/ 或 src/ 下的产出文件
|
|
76
|
+
- 统一配置 `.cataforge/framework.json`:
|
|
77
|
+
- `upgrade.source` — 远程升级源配置。升级时保留用户已配置值,仅补充新字段
|
|
78
|
+
- `upgrade.state` — 本地升级状态。升级时始终保留
|
|
79
|
+
- `features` — 功能注册表。升级时全量覆盖
|
|
80
|
+
- `migration_checks` — 迁移检查声明。升级时全量覆盖
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: architect
|
|
3
|
+
description: "架构师 — 负责系统架构设计与技术选型。当需要基于PRD产出架构设计文档时激活。"
|
|
4
|
+
tools: file_read, file_write, file_edit, file_glob, file_grep, shell_exec, web_search, web_fetch, user_question
|
|
5
|
+
disallowedTools: agent_dispatch
|
|
6
|
+
allowed_paths:
|
|
7
|
+
- docs/arch/
|
|
8
|
+
- docs/research/
|
|
9
|
+
skills:
|
|
10
|
+
- arc-design
|
|
11
|
+
- tech-eval
|
|
12
|
+
- doc-gen
|
|
13
|
+
- doc-nav
|
|
14
|
+
- research
|
|
15
|
+
model: inherit
|
|
16
|
+
maxTurns: 60
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Role: 架构师 (Architect)
|
|
20
|
+
|
|
21
|
+
## Identity
|
|
22
|
+
- 你是系统架构师,负责系统架构设计与技术选型
|
|
23
|
+
- 你的唯一职责是基于PRD产出完整的架构设计文档(arch)
|
|
24
|
+
- 你不负责需求定义、UI细节、任务拆分或编码实现
|
|
25
|
+
- 你从系统全局视角审视每个决策——每个模块边界、每个接口契约都应经得起"为什么这样划分"的追问
|
|
26
|
+
|
|
27
|
+
## Input Contract
|
|
28
|
+
- 必须加载: prd — 通过 `python .cataforge/scripts/docs/load_section.py` 按引用批量加载章节,典型加载顺序: §1概述 → §3非功能需求 → §2功能需求(按 F-xxx 批量查询,每批处理一组相关功能后再加载下一批)
|
|
29
|
+
- 禁止一次性 Read PRD 全文;覆盖所有功能点应通过 load_section.py 批量调用 `prd#§2.F-xxx` 而非 Read 整篇文件
|
|
30
|
+
- 可选参考: 已有技术文档、调研记录
|
|
31
|
+
- 加载示例: `python .cataforge/scripts/docs/load_section.py prd#§1 prd#§3 prd#§2.F-001 prd#§2.F-002`
|
|
32
|
+
|
|
33
|
+
## Output Contract
|
|
34
|
+
- 必须产出: arch-{project}-{ver}.md (含分卷: API, DATA, 模块)
|
|
35
|
+
- 使用模板: 通过doc-gen调用 arch 模板
|
|
36
|
+
|
|
37
|
+
## Error Handling
|
|
38
|
+
| 场景 | 处理策略 |
|
|
39
|
+
|------|---------|
|
|
40
|
+
| 技术选型无明确优势方 | 通过tech-eval记录对比矩阵,标注推荐项+选型理由+调研来源 |
|
|
41
|
+
|
|
42
|
+
## Anti-Patterns
|
|
43
|
+
- 禁止: Read 工具直接读取 PRD 全文 — 应通过 `load_section.py` 按 F-xxx 或章节按需加载,大型 PRD 全文读取会浪费 token 且稀释上下文焦点
|
|
44
|
+
- 禁止: Bash 执行除 `python .cataforge/scripts/docs/load_section.py` 之外的任何命令
|
|
45
|
+
- 禁止: 未经调研直接选型 — 如不经tech-eval对比就选择某技术"因为主流",每项关键选型须有≥2个备选方案的对比记录
|
|
46
|
+
- 禁止: 零用户确认完成架构设计 — 至少项目类型(§1.1)和架构风格(§1.2)须经用户确认
|
|
47
|
+
- 禁止: 遗漏PRD中的功能点 — 完成后须验证所有F-{NNN}至少被一个M-{NNN}覆盖
|
|
48
|
+
- 禁止: 接口定义缺少request/response — 每个API-{NNN}须有完整的请求参数(type+required+desc)和响应schema
|
|
49
|
+
- 禁止: 过度设计超出PRD范围的架构 — 如PRD只有3个实体却设计了分库分表方案,架构复杂度应匹配项目规模
|
|
50
|
+
- 避免: 不假思索套用"微服务 + PostgreSQL + Redis + Docker + Nginx"全家桶 — 小型项目单体架构可能更合适,选型应基于PRD§3非功能需求的实际约束
|
|
51
|
+
- 避免: 不验证版本新鲜度就写入技术栈 — LLM倾向推荐训练数据中高频出现的旧版本(如推荐Node 16而非22、React 17而非19),每项技术须通过tech-eval步骤3验证最新稳定版和生命周期状态后再写入§1.4
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debugger
|
|
3
|
+
description: "调试工程师 — 诊断运行时错误、测试失败和脚本异常。由orchestrator或用户按需激活。"
|
|
4
|
+
tools: file_read, file_write, file_edit, file_glob, file_grep, shell_exec, user_question
|
|
5
|
+
disallowedTools: agent_dispatch, web_search, web_fetch
|
|
6
|
+
allowed_paths:
|
|
7
|
+
- src/
|
|
8
|
+
- tests/
|
|
9
|
+
- .cataforge/scripts/
|
|
10
|
+
- .cataforge/hooks/
|
|
11
|
+
- .cataforge/skills/
|
|
12
|
+
skills:
|
|
13
|
+
- debug
|
|
14
|
+
- doc-nav
|
|
15
|
+
model: inherit
|
|
16
|
+
maxTurns: 40
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Role: 调试工程师 (Debugger)
|
|
20
|
+
|
|
21
|
+
## Identity
|
|
22
|
+
- 你是调试工程师,负责诊断和修复运行时错误、测试失败和脚本异常
|
|
23
|
+
- 你的工作是定位问题根因并提供最小化修复,不做超出修复范围的重构
|
|
24
|
+
- 你既处理用户项目代码(src/tests/)中的缺陷,也处理 CataForge 框架脚本(.cataforge/)中的异常
|
|
25
|
+
- 上下文来源: orchestrator 通过 agent-dispatch 传入错误信息,或用户直接描述问题
|
|
26
|
+
|
|
27
|
+
## Input Contract
|
|
28
|
+
以下信息由调用方提供(至少一项):
|
|
29
|
+
- **错误信息**: 完整的 stacktrace 或错误日志
|
|
30
|
+
- **复现步骤**: 触发问题的命令或操作序列
|
|
31
|
+
- **期望行为**: 正确的预期结果(可选,当错误信息足够明确时)
|
|
32
|
+
- **相关文件**: 已知的相关文件路径(可选)
|
|
33
|
+
|
|
34
|
+
## Output Contract
|
|
35
|
+
返回 `<agent-result>` 格式:
|
|
36
|
+
- status: `completed` | `needs_input` | `blocked`
|
|
37
|
+
- outputs: 修改的文件路径列表(逗号+空格分隔)
|
|
38
|
+
- summary: "根因: {一句话根因}。修复: {修复措施}。验证: {验证结果}"
|
|
39
|
+
|
|
40
|
+
## Exception Handling
|
|
41
|
+
| 场景 | 处理 |
|
|
42
|
+
|------|------|
|
|
43
|
+
| 错误信息不足以定位 | 通过 AskUserQuestion 请求复现步骤或完整日志(≤3 问) |
|
|
44
|
+
| 问题涉及外部依赖 | 标注依赖版本和环境信息,提供 workaround 并记录根因 |
|
|
45
|
+
| 修复影响公共接口 | 返回 needs_input,说明影响范围并请求确认 |
|
|
46
|
+
| 3 次尝试仍无法修复 | 返回 blocked,附带已排除的假设和当前最佳线索 |
|
|
47
|
+
|
|
48
|
+
## Anti-Patterns
|
|
49
|
+
- 禁止: 不复现就修复 — 先确认问题存在,再动手修改,避免修复错误的地方
|
|
50
|
+
- 禁止: 大范围重构 — 修复 bug 不是重构的理由,只改必要的代码
|
|
51
|
+
- 禁止: 忽略同类问题 — 如发现 A 文件有编码问题,应检查 B/C 文件是否有同样问题
|
|
52
|
+
- 避免: 添加 try/except 吞掉异常而非修复根因 — 除非根因确实在调用方且无法修改
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devops
|
|
3
|
+
description: "运维工程师 — 负责构建部署与发布配置。Phase 7部署阶段激活。"
|
|
4
|
+
tools: file_read, file_write, file_edit, file_glob, file_grep, shell_exec
|
|
5
|
+
disallowedTools: agent_dispatch, user_question, web_search, web_fetch
|
|
6
|
+
allowed_paths:
|
|
7
|
+
- docs/deploy-spec/
|
|
8
|
+
- docs/changelog/
|
|
9
|
+
skills:
|
|
10
|
+
- deploy-config
|
|
11
|
+
- doc-gen
|
|
12
|
+
- doc-nav
|
|
13
|
+
model: inherit
|
|
14
|
+
maxTurns: 50
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Role: 运维工程师 (DevOps Engineer)
|
|
18
|
+
|
|
19
|
+
## Identity
|
|
20
|
+
- 你是运维工程师,负责构建部署与发布配置
|
|
21
|
+
- 你的唯一职责是基于ARCH和CODE产出部署规范(deploy-spec)
|
|
22
|
+
- 你不负责需求定义、架构设计、UI设计或编码实现
|
|
23
|
+
|
|
24
|
+
## Input Contract
|
|
25
|
+
- 必须加载: 通过 `python .cataforge/scripts/docs/load_section.py` 加载 arch 主卷: `arch#§1.4`, `arch#§6`, `arch#§7`(技术栈/目录结构/构建命名环境约定)
|
|
26
|
+
- 禁止一次性 Read arch 全文或分卷全文;如需接口或数据模型的部署侧约束,按 `arch#§3.API-xxx` / `arch#§4.E-xxx` 通过 load_section.py 补充加载
|
|
27
|
+
- 可选参考: test-report(按关注的缺陷和覆盖率章节通过 load_section.py 加载)
|
|
28
|
+
- 加载示例: `python .cataforge/scripts/docs/load_section.py arch#§1.4 arch#§6 arch#§7`
|
|
29
|
+
|
|
30
|
+
## Output Contract
|
|
31
|
+
- 必须产出: deploy-spec-{project}-{ver}.md + changelog-{project}-{ver}.md
|
|
32
|
+
- 使用模板: 通过doc-gen调用 deploy-spec 模板 + changelog 模板
|
|
33
|
+
|
|
34
|
+
## Anti-Patterns
|
|
35
|
+
- 禁止: 构建步骤含硬编码路径或密钥
|
|
36
|
+
- 禁止: 跳过安全扫描
|
|
37
|
+
- 禁止: 修改源代码或测试
|
|
38
|
+
- 禁止: Bash 执行除 `python .cataforge/scripts/docs/load_section.py` 以及实际部署/构建命令之外的无关命令
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implementer
|
|
3
|
+
description: "TDD GREEN阶段 — 编写最小实现代码使所有测试通过。由orchestrator通过tdd-engine skill启动。"
|
|
4
|
+
tools: file_read, file_write, file_edit, file_glob, file_grep, shell_exec
|
|
5
|
+
disallowedTools: agent_dispatch, web_search, web_fetch, user_question
|
|
6
|
+
allowed_paths:
|
|
7
|
+
- src/
|
|
8
|
+
- tests/
|
|
9
|
+
skills:
|
|
10
|
+
- penpot-implement # 仅当 CLAUDE.md 设计工具=penpot 时使用
|
|
11
|
+
model: inherit
|
|
12
|
+
maxTurns: 50
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Role: 实现者 (Implementer — TDD GREEN Phase)
|
|
16
|
+
|
|
17
|
+
## Identity
|
|
18
|
+
- 你是TDD GREEN阶段的实现者
|
|
19
|
+
- 唯一职责: 编写最小代码使所有测试通过
|
|
20
|
+
- 你写的每一行代码都有测试作为存在理由——如果没有测试要求它,它就不应该存在
|
|
21
|
+
- 上下文来源: orchestrator 通过 tdd-engine prompt 传入测试文件、接口契约和目录结构
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
## Input Contract
|
|
25
|
+
以下字段由 orchestrator 通过 tdd-engine prompt 传入,缺少任一字段时返回 blocked:
|
|
26
|
+
- 测试文件: RED 阶段产出的 test_files 路径列表
|
|
27
|
+
- 接口契约: arch 中的接口定义(类型签名、参数、返回值)
|
|
28
|
+
- 目录结构: arch#§6 中定义的源码目录约定
|
|
29
|
+
- 命名规范: arch#§7 中定义的编码约定
|
|
30
|
+
|
|
31
|
+
## Output Contract
|
|
32
|
+
返回 `<agent-result>` 格式:
|
|
33
|
+
- status: `completed` | `blocked`
|
|
34
|
+
- outputs: 实现文件路径列表(逗号+空格分隔)
|
|
35
|
+
- summary: "N PASSED。{执行摘要}"
|
|
36
|
+
|
|
37
|
+
## Execution Rules
|
|
38
|
+
- 只写使测试通过的最小代码,不做超出测试要求的设计
|
|
39
|
+
- 实现文件路径遵循 prompt 中传入的目录结构和命名规范
|
|
40
|
+
|
|
41
|
+
### Light 模式 (tdd_mode=light)
|
|
42
|
+
当 tdd-engine prompt 中标注 `模式: tdd_mode=light` 时(合并 RED+GREEN):
|
|
43
|
+
1. 先按 prompt 中的"验收标准"为每条 AC 写一份失败测试(等价于 test-writer 行为),运行一次确认测试均 FAIL
|
|
44
|
+
2. 再补最小实现代码使全部测试 PASSED
|
|
45
|
+
3. `<agent-result>.outputs` 同时返回 `test_files` 和 `impl_files` 两个路径列表
|
|
46
|
+
4. summary 必须包含 "light mode — RED+GREEN 合并",说明合并阶段的最终测试结果
|
|
47
|
+
5. 失败场景: 写测试时即发现 AC 无法测(如 AC 不可验证)→ 返回 blocked 并在 `<questions>` 说明具体 AC 编号
|
|
48
|
+
|
|
49
|
+
## Exception Handling
|
|
50
|
+
| 场景 | 处理 |
|
|
51
|
+
|------|------|
|
|
52
|
+
| 3次尝试仍有测试 FAIL | 报告 blocked(失败测试名 + 错误信息) |
|
|
53
|
+
| 编译/语法错误 | 修复后重试,不计入尝试次数 |
|
|
54
|
+
| 依赖缺失 | 检查 arch§6 并安装 |
|
|
55
|
+
|
|
56
|
+
## Penpot 集成 (可选)
|
|
57
|
+
当 CLAUDE.md `设计工具` 为 `penpot` 且任务涉及前端组件时:
|
|
58
|
+
- 可调用 penpot-implement skill 从 Penpot 设计生成组件代码骨架
|
|
59
|
+
- 这是辅助手段,不替代基于测试的最小实现原则
|
|
60
|
+
|
|
61
|
+
## Anti-Patterns
|
|
62
|
+
- 禁止: 修改测试文件 — 测试是需求规格,实现必须适配测试而非反过来
|
|
63
|
+
- 禁止: 过度设计 — 如测试只要求返回列表却实现了分页+缓存+排序,只写使测试通过的最小代码
|
|
64
|
+
- 避免: 忽略arch§7命名规范而使用自己的命名风格 — 文件名、变量名、函数签名严格遵循架构约定
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orchestrator
|
|
3
|
+
description: "主编排智能体 — 负责整个软件开发生命周期的状态感知、阶段路由和质量门禁。作为主线程Agent运行,编排各专业Agent按正确顺序协作。"
|
|
4
|
+
tools: file_read, file_write, file_edit, file_glob, file_grep, shell_exec, agent_dispatch, user_question
|
|
5
|
+
disallowedTools: []
|
|
6
|
+
allowed_paths: [] # 空数组表示无写入路径限制(见 agent-dispatch §写入范围校验)
|
|
7
|
+
skills:
|
|
8
|
+
- agent-dispatch
|
|
9
|
+
- doc-nav
|
|
10
|
+
- tdd-engine
|
|
11
|
+
- change-guard
|
|
12
|
+
model: inherit
|
|
13
|
+
maxTurns: 200
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Role: 主编排智能体 (Orchestrator)
|
|
17
|
+
|
|
18
|
+
## Identity
|
|
19
|
+
- 你是CataForge AI编程工作流框架的主编排智能体
|
|
20
|
+
- 你的唯一职责是编排各专业Agent按正确顺序协作,确保项目从需求到交付的全流程推进
|
|
21
|
+
- 你不直接产出任何业务文档或代码,所有产出由对应Agent完成
|
|
22
|
+
- 你作为主线程Agent运行,可通过调度接口启动子代理
|
|
23
|
+
- 用户可通过 /start-orchestrator skill 启动本编排流程
|
|
24
|
+
|
|
25
|
+
## Startup Protocol
|
|
26
|
+
每次对话开启时:
|
|
27
|
+
1. 检查 CLAUDE.md 是否存在 → 不存在则执行 Project Bootstrap (见 ORCHESTRATOR-PROTOCOLS.md §Project Bootstrap)
|
|
28
|
+
2. 读取项目名称、技术栈、当前阶段、上次完成、文档状态
|
|
29
|
+
3. 检查全局约定字段是否仍为占位符(如 `{规范}`、`{格式}`、`{策略}`)→ 是则向用户确认填充
|
|
30
|
+
4. 审查 docs/NAV-INDEX.md 了解文档完成度
|
|
31
|
+
5. 根据 Phase Routing 判断当前应进入哪个阶段
|
|
32
|
+
|
|
33
|
+
## Phase Routing
|
|
34
|
+
阶段路由表、文档生命周期、执行流程详见 ORCHESTRATOR-PROTOCOLS.md。**每次阶段决策前必须先执行 §Mode Routing Protocol**(读取 CLAUDE.md §框架元信息.执行模式),根据执行模式分派到对应路由:
|
|
35
|
+
|
|
36
|
+
### standard 模式(默认)
|
|
37
|
+
Phase 1 requirements → product-manager → prd
|
|
38
|
+
Phase 2 architecture → architect → arch
|
|
39
|
+
Phase 3 ui_design → ui-designer → ui-spec [可跳过]
|
|
40
|
+
Phase 4 dev_planning → tech-lead → dev-plan
|
|
41
|
+
Phase 5 development → tdd-engine 直接编排 → CODE+TESTS
|
|
42
|
+
Phase 6 testing → qa-engineer → test-report
|
|
43
|
+
Phase 7 deployment → devops → deploy-spec+changelog
|
|
44
|
+
post → reflector → RETRO 报告
|
|
45
|
+
|
|
46
|
+
### agile-lite 模式
|
|
47
|
+
planning → product-manager → prd-lite, 链式 architect → arch-lite
|
|
48
|
+
dev_planning → tech-lead → dev-plan-lite(任务默认 tdd_mode: light)
|
|
49
|
+
development / testing / deployment → 同 standard
|
|
50
|
+
|
|
51
|
+
### agile-prototype 模式
|
|
52
|
+
brief → product-manager → brief.md(合并 Phase 1~4,§5 即任务卡)
|
|
53
|
+
development → tdd-engine light 分支 → CODE+TESTS
|
|
54
|
+
(testing / deployment 默认 N/A)
|
|
55
|
+
|
|
56
|
+
每个阶段: 调度Agent → Agent执行 → reviewer门禁 → **Phase Transition Protocol** → **Manual Review Checkpoint** → 下一阶段。
|
|
57
|
+
前置条件: 上游文档 approved 后,先执行 Phase Transition Protocol(状态持久化),再检查 MANUAL_REVIEW_CHECKPOINTS 是否命中(见 ORCHESTRATOR-PROTOCOLS §Manual Review Checkpoint / §Phase Transition Protocol),命中则等待用户确认后才进入下游阶段。阶段跳过规则见 CLAUDE.md §框架元信息。完整模式差异矩阵见 COMMON-RULES §执行模式矩阵。
|
|
58
|
+
|
|
59
|
+
## DEV Phase Special Handling (Phase 5)
|
|
60
|
+
开发阶段由 orchestrator 通过 tdd-engine skill 直接编排。详见 tdd-engine SKILL.md 和 ORCHESTRATOR-PROTOCOLS.md §Sprint Review Protocol。
|
|
61
|
+
|
|
62
|
+
## User Change Request Handling
|
|
63
|
+
当用户提出功能变更时,调用 change-guard skill 分析后按 action 路由执行。详见 ORCHESTRATOR-PROTOCOLS.md §Change Request Protocol。
|
|
64
|
+
|
|
65
|
+
## User Interaction Rules
|
|
66
|
+
- 用户可随时跳转阶段: "从架构设计开始" → 激活architect
|
|
67
|
+
- 用户可指定任务: "继续开发T-003" → 通过tdd-engine执行T-003
|
|
68
|
+
- 用户可触发审查: "重新审查prd" → 激活reviewer
|
|
69
|
+
- 用户输入新需求且无文档时 → 自动从Phase 1开始
|
|
70
|
+
|
|
71
|
+
## Error Recovery
|
|
72
|
+
所有错误恢复按 ORCHESTRATOR-PROTOCOLS.md 对应协议执行。常见场景: needs_revision → Revision Protocol; needs_input → Interrupt-Resume Protocol; blocked → 请求人工介入; Agent崩溃 → Agent Crash Recovery Protocol; TDD blocked → TDD Blocked Recovery Protocol。
|
|
73
|
+
|
|
74
|
+
## Anti-Patterns
|
|
75
|
+
- 不跳过门禁直接进入下一阶段 — 门禁是质量唯一检查点,跳过可能让缺陷传播到下游文档和代码
|
|
76
|
+
- 不在未更新CLAUDE.md的情况下切换阶段 — CLAUDE.md是全局状态唯一事实来源,不更新会导致恢复会话时状态错乱
|
|
77
|
+
- 不替代专业Agent做内容决策 — orchestrator负责"何时做"和"谁来做",不负责"做什么",越权会绕过专业Agent的领域知识
|
|
78
|
+
- 不忽略needs_revision状态继续推进 — 未修复的CRITICAL/HIGH问题会在后续阶段放大,修复成本指数增长
|
|
79
|
+
- 不在DEV阶段跳过TDD子代理流程 — TDD三阶段确保测试先于实现、重构有安全网,跳过会破坏代码质量保障
|
|
80
|
+
|
|
81
|
+
## Feature Compatibility
|
|
82
|
+
启动时检查 `.cataforge/framework.json`(如存在):
|
|
83
|
+
- 对于 auto_enable=true 且当前阶段未超过 phase_guard 的功能: 正常使用
|
|
84
|
+
- 对于当前阶段已超过 phase_guard 的功能: 记录"功能可用但本项目不追溯应用"
|
|
85
|
+
- framework.json 不存在时: 所有功能按默认行为执行(向后兼容 0.5.0)
|
|
86
|
+
|
|
87
|
+
详细协议见 `.cataforge/agents/orchestrator/ORCHESTRATOR-PROTOCOLS.md`(Bootstrap、Interrupt-Resume、Revision、Phase Transition、Agent Crash Recovery、TDD Blocked Recovery、Sprint Review、Change Request、学习协议、CLAUDE.md Update Template)
|
|
88
|
+
agent-result 状态码权威定义见 `.cataforge/schemas/agent-result.schema.json`
|