cc-devflow 1.0.1

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 (277) hide show
  1. package/.claude/CLAUDE.md +83 -0
  2. package/.claude/agents/architecture-designer.md +443 -0
  3. package/.claude/agents/bug-analyzer.md +382 -0
  4. package/.claude/agents/checklist-agent.md +175 -0
  5. package/.claude/agents/clarify-analyst.md +50 -0
  6. package/.claude/agents/code-reviewer.md +71 -0
  7. package/.claude/agents/codex-analyzer.md +39 -0
  8. package/.claude/agents/compatibility-checker.md +580 -0
  9. package/.claude/agents/consistency-checker.md +532 -0
  10. package/.claude/agents/impact-analyzer.md +441 -0
  11. package/.claude/agents/planner.md +230 -0
  12. package/.claude/agents/prd-writer.md +320 -0
  13. package/.claude/agents/project-guidelines-generator.md +1329 -0
  14. package/.claude/agents/qa-tester.md +313 -0
  15. package/.claude/agents/release-manager.md +295 -0
  16. package/.claude/agents/security-reviewer.md +314 -0
  17. package/.claude/agents/style-guide-generator.md +458 -0
  18. package/.claude/agents/tech-architect.md +516 -0
  19. package/.claude/agents/ui-designer.md +485 -0
  20. package/.claude/commands/code-review-high.md +58 -0
  21. package/.claude/commands/core-architecture.md +429 -0
  22. package/.claude/commands/core-guidelines.md +486 -0
  23. package/.claude/commands/core-roadmap.md +439 -0
  24. package/.claude/commands/core-style.md +293 -0
  25. package/.claude/commands/flow-archive.md +245 -0
  26. package/.claude/commands/flow-checklist.md +260 -0
  27. package/.claude/commands/flow-clarify.md +136 -0
  28. package/.claude/commands/flow-constitution.md +82 -0
  29. package/.claude/commands/flow-dev.md +134 -0
  30. package/.claude/commands/flow-epic.md +150 -0
  31. package/.claude/commands/flow-fix.md +104 -0
  32. package/.claude/commands/flow-ideate.md +214 -0
  33. package/.claude/commands/flow-init.md +313 -0
  34. package/.claude/commands/flow-new.md +394 -0
  35. package/.claude/commands/flow-prd.md +131 -0
  36. package/.claude/commands/flow-qa.md +93 -0
  37. package/.claude/commands/flow-release.md +92 -0
  38. package/.claude/commands/flow-restart.md +98 -0
  39. package/.claude/commands/flow-status.md +64 -0
  40. package/.claude/commands/flow-tech.md +142 -0
  41. package/.claude/commands/flow-ui.md +189 -0
  42. package/.claude/commands/flow-update.md +111 -0
  43. package/.claude/commands/flow-upgrade.md +115 -0
  44. package/.claude/commands/flow-verify.md +96 -0
  45. package/.claude/commands/problem-analyzer.md +60 -0
  46. package/.claude/config/quality-rules.yml +161 -0
  47. package/.claude/docs/SPEC_KIT_CONSTITUTION_ANALYSIS.md +426 -0
  48. package/.claude/docs/design/consistency-conflict-detection-algorithms.md +658 -0
  49. package/.claude/docs/design/intent-driven-input-design.md +380 -0
  50. package/.claude/docs/design/prd-version-management-design.md +437 -0
  51. package/.claude/docs/guides/INIT_TROUBLESHOOTING.md +117 -0
  52. package/.claude/docs/guides/NEW_TROUBLESHOOTING.md +151 -0
  53. package/.claude/docs/guides/ROADMAP_TROUBLESHOOTING.md +188 -0
  54. package/.claude/docs/guides/TASK_COMPLETION_MARKING.md +338 -0
  55. package/.claude/docs/templates/ARCHITECTURE_TEMPLATE.md +633 -0
  56. package/.claude/docs/templates/BACKLOG_TEMPLATE.md +261 -0
  57. package/.claude/docs/templates/CHECKLIST_TEMPLATE.md +52 -0
  58. package/.claude/docs/templates/CLARIFICATION_REPORT_TEMPLATE.md +206 -0
  59. package/.claude/docs/templates/CODE_REVIEW_TEMPLATE.md +71 -0
  60. package/.claude/docs/templates/EPIC_TEMPLATE.md +805 -0
  61. package/.claude/docs/templates/INIT_FLOW_TEMPLATE.md +213 -0
  62. package/.claude/docs/templates/INTENT_CLARIFICATION_TEMPLATE.md +57 -0
  63. package/.claude/docs/templates/NEW_ORCHESTRATION_TEMPLATE.md +148 -0
  64. package/.claude/docs/templates/PRD_TEMPLATE.md +562 -0
  65. package/.claude/docs/templates/RESEARCH_TEMPLATE.md +276 -0
  66. package/.claude/docs/templates/REVIEW-HIGH.md +57 -0
  67. package/.claude/docs/templates/ROADMAP_DIALOGUE_TEMPLATE.md +198 -0
  68. package/.claude/docs/templates/ROADMAP_TEMPLATE.md +310 -0
  69. package/.claude/docs/templates/STYLE_TEMPLATE.md +1266 -0
  70. package/.claude/docs/templates/TASKS_TEMPLATE.md +523 -0
  71. package/.claude/docs/templates/TECH_DESIGN_TEMPLATE.md +1019 -0
  72. package/.claude/docs/templates/UI_PROTOTYPE_TEMPLATE.md +1436 -0
  73. package/.claude/guides/agent-guides/agent-coordination-guide.md +459 -0
  74. package/.claude/guides/project-guidelines-system.md +463 -0
  75. package/.claude/guides/technical-guides/datetime-handling-guide.md +563 -0
  76. package/.claude/guides/technical-guides/git-github-guide.md +642 -0
  77. package/.claude/guides/technical-guides/test-execution-guide.md +618 -0
  78. package/.claude/guides/workflow-guides/bug-fix-orchestrator.md +217 -0
  79. package/.claude/guides/workflow-guides/flow-orchestrator.md +282 -0
  80. package/.claude/hooks/checklist-gate.js +397 -0
  81. package/.claude/hooks/error-handling-reminder.sh +12 -0
  82. package/.claude/hooks/error-handling-reminder.ts +459 -0
  83. package/.claude/hooks/post-tool-use-tracker.sh +280 -0
  84. package/.claude/hooks/pre-tool-use-guardrail.sh +36 -0
  85. package/.claude/hooks/pre-tool-use-guardrail.ts +342 -0
  86. package/.claude/hooks/skill-activation-prompt.sh +36 -0
  87. package/.claude/hooks/skill-activation-prompt.ts +214 -0
  88. package/.claude/hooks/state/skills-used-test-guard.json +3 -0
  89. package/.claude/rules/devflow-conventions.md +305 -0
  90. package/.claude/rules/project-constitution.md +748 -0
  91. package/.claude/schemas/constitution.schema.json +43 -0
  92. package/.claude/scripts/analyze-upgrade-impact.sh +200 -0
  93. package/.claude/scripts/archive-requirement.sh +351 -0
  94. package/.claude/scripts/calculate-checklist-completion.sh +243 -0
  95. package/.claude/scripts/calculate-quarter.sh +206 -0
  96. package/.claude/scripts/check-dependencies.sh +409 -0
  97. package/.claude/scripts/check-prerequisites.sh +232 -0
  98. package/.claude/scripts/check-task-status.sh +264 -0
  99. package/.claude/scripts/checklist-errors.sh +131 -0
  100. package/.claude/scripts/common.sh +570 -0
  101. package/.claude/scripts/consolidate-research.sh +182 -0
  102. package/.claude/scripts/create-requirement.sh +426 -0
  103. package/.claude/scripts/export-contracts.sh +117 -0
  104. package/.claude/scripts/extract-data-model.sh +78 -0
  105. package/.claude/scripts/generate-clarification-questions.sh +377 -0
  106. package/.claude/scripts/generate-clarification-report.sh +463 -0
  107. package/.claude/scripts/generate-quickstart.sh +146 -0
  108. package/.claude/scripts/generate-research-tasks.sh +157 -0
  109. package/.claude/scripts/generate-status-report.sh +523 -0
  110. package/.claude/scripts/generate-tech-analysis.sh +46 -0
  111. package/.claude/scripts/locate-requirement-in-roadmap.sh +233 -0
  112. package/.claude/scripts/manage-constitution.sh +602 -0
  113. package/.claude/scripts/mark-task-complete.sh +198 -0
  114. package/.claude/scripts/populate-research-tasks.sh +259 -0
  115. package/.claude/scripts/recover-workflow.sh +460 -0
  116. package/.claude/scripts/run-clarify-scan.sh +601 -0
  117. package/.claude/scripts/run-high-review.sh +62 -0
  118. package/.claude/scripts/run-problem-analysis.sh +68 -0
  119. package/.claude/scripts/setup-epic.sh +173 -0
  120. package/.claude/scripts/sync-roadmap-progress.sh +300 -0
  121. package/.claude/scripts/sync-task-marks.sh +199 -0
  122. package/.claude/scripts/test-clarify-scan.sh +515 -0
  123. package/.claude/scripts/update-agent-context.sh +806 -0
  124. package/.claude/scripts/validate-constitution.sh +567 -0
  125. package/.claude/scripts/validate-hooks.sh +487 -0
  126. package/.claude/scripts/validate-research.sh +332 -0
  127. package/.claude/scripts/validate-scope-boundary.sh +493 -0
  128. package/.claude/scripts/verify-setup.sh +37 -0
  129. package/.claude/settings.json +76 -0
  130. package/.claude/skills/_reference-implementations/README.md +96 -0
  131. package/.claude/skills/_reference-implementations/backend-express-prisma/SKILL.md +302 -0
  132. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/architecture-overview.md +451 -0
  133. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/async-and-errors.md +307 -0
  134. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/complete-examples.md +638 -0
  135. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/configuration.md +275 -0
  136. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/database-patterns.md +224 -0
  137. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/middleware-guide.md +213 -0
  138. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/routing-and-controllers.md +756 -0
  139. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/sentry-and-monitoring.md +336 -0
  140. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/services-and-repositories.md +789 -0
  141. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/testing-guide.md +235 -0
  142. package/.claude/skills/_reference-implementations/backend-express-prisma/resources/validation-patterns.md +754 -0
  143. package/.claude/skills/_reference-implementations/frontend-react-mui/SKILL.md +399 -0
  144. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/common-patterns.md +331 -0
  145. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/complete-examples.md +872 -0
  146. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/component-patterns.md +502 -0
  147. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/data-fetching.md +767 -0
  148. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/file-organization.md +502 -0
  149. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/loading-and-error-states.md +501 -0
  150. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/performance.md +406 -0
  151. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/routing-guide.md +364 -0
  152. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/styling-guide.md +428 -0
  153. package/.claude/skills/_reference-implementations/frontend-react-mui/resources/typescript-standards.md +418 -0
  154. package/.claude/skills/cc-devflow-orchestrator/SKILL.md +229 -0
  155. package/.claude/skills/constitution-guardian/SKILL.md +306 -0
  156. package/.claude/skills/devflow-constitution-quick-ref/SKILL.md +374 -0
  157. package/.claude/skills/devflow-file-standards/SKILL.md +353 -0
  158. package/.claude/skills/devflow-tdd-enforcer/SKILL.md +192 -0
  159. package/.claude/skills/skill-developer/ADVANCED.md +197 -0
  160. package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
  161. package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
  162. package/.claude/skills/skill-developer/SKILL.md +426 -0
  163. package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
  164. package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
  165. package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
  166. package/.claude/skills/skill-rules.json +213 -0
  167. package/.claude/tests/README.md +300 -0
  168. package/.claude/tests/TODO.md +69 -0
  169. package/.claude/tests/__pycache__/test_analyze_upgrade_impact.cpython-311-pytest-7.2.2.pyc +0 -0
  170. package/.claude/tests/__pycache__/test_consolidate_research.cpython-311-pytest-7.2.2.pyc +0 -0
  171. package/.claude/tests/__pycache__/test_export_contracts.cpython-311-pytest-7.2.2.pyc +0 -0
  172. package/.claude/tests/__pycache__/test_extract_data_model.cpython-311-pytest-7.2.2.pyc +0 -0
  173. package/.claude/tests/__pycache__/test_generate_quickstart.cpython-311-pytest-7.2.2.pyc +0 -0
  174. package/.claude/tests/__pycache__/test_generate_research_tasks.cpython-311-pytest-7.2.2.pyc +0 -0
  175. package/.claude/tests/constitution/run_all_constitution_tests.sh +111 -0
  176. package/.claude/tests/constitution/test_agent_assignment.sh +207 -0
  177. package/.claude/tests/constitution/test_article_coverage.sh +201 -0
  178. package/.claude/tests/constitution/test_template_completeness.sh +150 -0
  179. package/.claude/tests/constitution/test_version_consistency.sh +120 -0
  180. package/.claude/tests/fixtures/spec_delta_full.md +16 -0
  181. package/.claude/tests/fixtures/tasks_progress_sample.md +5 -0
  182. package/.claude/tests/run-all-tests.sh +229 -0
  183. package/.claude/tests/scripts/run.sh +30 -0
  184. package/.claude/tests/scripts/test-framework.sh +128 -0
  185. package/.claude/tests/scripts/test_check_prerequisites.sh +511 -0
  186. package/.claude/tests/scripts/test_check_prerequisites.sh.bak +504 -0
  187. package/.claude/tests/scripts/test_check_prerequisites.sh.bak2 +505 -0
  188. package/.claude/tests/scripts/test_check_prerequisites.sh.bak3 +506 -0
  189. package/.claude/tests/scripts/test_check_prerequisites.sh.bak4 +507 -0
  190. package/.claude/tests/scripts/test_check_prerequisites.sh.bak5 +508 -0
  191. package/.claude/tests/scripts/test_check_task_status.sh +499 -0
  192. package/.claude/tests/scripts/test_common.sh +244 -0
  193. package/.claude/tests/scripts/test_generate_status_report.sh +71 -0
  194. package/.claude/tests/scripts/test_mark_task_complete.sh +441 -0
  195. package/.claude/tests/scripts/test_mark_task_complete.sh.backup +410 -0
  196. package/.claude/tests/scripts/test_recover_workflow.sh +304 -0
  197. package/.claude/tests/scripts/test_setup_epic.sh +437 -0
  198. package/.claude/tests/scripts/test_sync_task_marks.sh +196 -0
  199. package/.claude/tests/scripts/test_validate_constitution.sh +74 -0
  200. package/.claude/tests/scripts/test_validate_research.sh +462 -0
  201. package/.claude/tests/slugify.bats +82 -0
  202. package/.claude/tests/test-framework.sh +732 -0
  203. package/.claude/tests/test_analyze_upgrade_impact.py +34 -0
  204. package/.claude/tests/test_consolidate_research.py +48 -0
  205. package/.claude/tests/test_export_contracts.py +43 -0
  206. package/.claude/tests/test_extract_data_model.py +33 -0
  207. package/.claude/tests/test_generate_quickstart.py +50 -0
  208. package/.claude/tests/test_generate_research_tasks.py +52 -0
  209. package/.claude/tsc-cache/6e64f818-6398-49ca-8623-581a9af85c44/edited-files.log +1 -0
  210. package/.claude/tsc-cache/795ba6e3-b98a-423b-bab2-51aa62812569/affected-repos.txt +1 -0
  211. package/.claude/tsc-cache/795ba6e3-b98a-423b-bab2-51aa62812569/edited-files.log +1 -0
  212. package/.claude/tsc-cache/ae335694-be5a-4ba4-a1a0-b676c09a7906/affected-repos.txt +1 -0
  213. package/.claude/tsc-cache/ae335694-be5a-4ba4-a1a0-b676c09a7906/edited-files.log +1 -0
  214. package/CHANGELOG.md +507 -0
  215. package/LICENSE +21 -0
  216. package/README.md +534 -0
  217. package/README.zh-CN.md +530 -0
  218. package/bin/adapt.js +240 -0
  219. package/bin/cc-devflow-cli.js +185 -0
  220. package/bin/cc-devflow.js +78 -0
  221. package/config/adapters.yml +5 -0
  222. package/config/schema/adapters.schema.json +44 -0
  223. package/docs/CLAUDE.md +26 -0
  224. package/docs/commands/README.md +61 -0
  225. package/docs/commands/README.zh-CN.md +55 -0
  226. package/docs/commands/core-roadmap.md +106 -0
  227. package/docs/commands/core-roadmap.zh-CN.md +102 -0
  228. package/docs/commands/core-style.md +405 -0
  229. package/docs/commands/core-style.zh-CN.md +405 -0
  230. package/docs/commands/flow-init.md +134 -0
  231. package/docs/commands/flow-init.zh-CN.md +163 -0
  232. package/docs/commands/flow-new.md +274 -0
  233. package/docs/commands/flow-new.zh-CN.md +270 -0
  234. package/docs/guides/getting-started.md +204 -0
  235. package/docs/guides/getting-started.zh-CN.md +152 -0
  236. package/lib/adapters/adapter-interface.js +57 -0
  237. package/lib/adapters/claude-adapter.js +74 -0
  238. package/lib/adapters/codex-adapter.js +40 -0
  239. package/lib/adapters/config-validator.js +68 -0
  240. package/lib/adapters/logger.js +42 -0
  241. package/lib/adapters/registry.js +153 -0
  242. package/lib/compiler/CLAUDE.md +92 -0
  243. package/lib/compiler/__tests__/drift.test.js +215 -0
  244. package/lib/compiler/__tests__/errors.test.js +184 -0
  245. package/lib/compiler/__tests__/incremental.test.js +174 -0
  246. package/lib/compiler/__tests__/integration.test.js +174 -0
  247. package/lib/compiler/__tests__/manifest.test.js +233 -0
  248. package/lib/compiler/__tests__/parser.test.js +456 -0
  249. package/lib/compiler/__tests__/schemas.test.js +301 -0
  250. package/lib/compiler/__tests__/skills-registry.test.js +125 -0
  251. package/lib/compiler/__tests__/transformer.test.js +286 -0
  252. package/lib/compiler/emitters/antigravity-emitter.js +171 -0
  253. package/lib/compiler/emitters/base-emitter.js +73 -0
  254. package/lib/compiler/emitters/codex-emitter.js +52 -0
  255. package/lib/compiler/emitters/cursor-emitter.js +31 -0
  256. package/lib/compiler/emitters/index.js +50 -0
  257. package/lib/compiler/emitters/qwen-emitter.js +39 -0
  258. package/lib/compiler/errors.js +119 -0
  259. package/lib/compiler/index.js +256 -0
  260. package/lib/compiler/manifest.js +242 -0
  261. package/lib/compiler/parser.js +258 -0
  262. package/lib/compiler/platforms.js +113 -0
  263. package/lib/compiler/resource-copier.js +320 -0
  264. package/lib/compiler/rules-emitters/__tests__/antigravity-rules-emitter.test.js +191 -0
  265. package/lib/compiler/rules-emitters/__tests__/codex-rules-emitter.test.js +109 -0
  266. package/lib/compiler/rules-emitters/__tests__/cursor-rules-emitter.test.js +123 -0
  267. package/lib/compiler/rules-emitters/__tests__/qwen-rules-emitter.test.js +123 -0
  268. package/lib/compiler/rules-emitters/antigravity-rules-emitter.js +253 -0
  269. package/lib/compiler/rules-emitters/base-rules-emitter.js +83 -0
  270. package/lib/compiler/rules-emitters/codex-rules-emitter.js +116 -0
  271. package/lib/compiler/rules-emitters/cursor-rules-emitter.js +98 -0
  272. package/lib/compiler/rules-emitters/index.js +71 -0
  273. package/lib/compiler/rules-emitters/qwen-rules-emitter.js +70 -0
  274. package/lib/compiler/schemas.js +144 -0
  275. package/lib/compiler/skills-registry.js +225 -0
  276. package/lib/compiler/transformer.js +236 -0
  277. package/package.json +50 -0
@@ -0,0 +1,213 @@
1
+ {
2
+ "version": "1.0",
3
+ "description": "Skill activation triggers for CC-DevFlow. Controls when skills automatically suggest or block actions.",
4
+ "skills": {
5
+ "skill-developer": {
6
+ "type": "domain",
7
+ "enforcement": "suggest",
8
+ "priority": "high",
9
+ "description": "Meta-skill for creating and managing Claude Code skills",
10
+ "promptTriggers": {
11
+ "keywords": [
12
+ "skill system",
13
+ "create skill",
14
+ "add skill",
15
+ "skill triggers",
16
+ "skill rules",
17
+ "hook system",
18
+ "skill development",
19
+ "skill-rules.json"
20
+ ],
21
+ "intentPatterns": [
22
+ "(how do|how does|explain).*?skill",
23
+ "(create|add|modify|build).*?skill",
24
+ "skill.*?(work|trigger|activate|system)"
25
+ ]
26
+ }
27
+ },
28
+ "cc-devflow-orchestrator": {
29
+ "type": "domain",
30
+ "enforcement": "suggest",
31
+ "priority": "high",
32
+ "description": "CC-DevFlow workflow router and agent recommender. Routes users to correct commands/agents.",
33
+ "promptTriggers": {
34
+ "keywords": [
35
+ "devflow",
36
+ "requirement",
37
+ "REQ-",
38
+ "flow-init",
39
+ "flow-prd",
40
+ "flow-tech",
41
+ "flow-ui",
42
+ "flow-epic",
43
+ "flow-dev",
44
+ "flow-qa",
45
+ "flow-release",
46
+ "flow-verify",
47
+ "how to write PRD",
48
+ "how to design",
49
+ "how to plan tasks",
50
+ "create requirement",
51
+ "start requirement",
52
+ "workflow",
53
+ "phase gate"
54
+ ],
55
+ "intentPatterns": [
56
+ "(start|create|begin|init).*?(requirement|project|REQ)",
57
+ "(run|execute).*?(flow|command)",
58
+ "(how to|guide|explain).*?(PRD|EPIC|TASKS|design|prototype)",
59
+ "what is.*?(phase gate|workflow|orchestration_status)",
60
+ "(which|what).*?(command|flow|agent|next step)"
61
+ ]
62
+ },
63
+ "fileTriggers": {
64
+ "pathPatterns": [
65
+ "devflow/requirements/**/*.md",
66
+ "devflow/requirements/**/orchestration_status.json"
67
+ ]
68
+ }
69
+ },
70
+ "devflow-tdd-enforcer": {
71
+ "type": "guardrail",
72
+ "enforcement": "block",
73
+ "priority": "critical",
74
+ "description": "Enforces TDD order in TASKS.md - Tests MUST be marked complete before Implementation tasks",
75
+ "fileTriggers": {
76
+ "pathPatterns": [
77
+ "devflow/requirements/**/TASKS.md"
78
+ ],
79
+ "contentPatterns": [
80
+ "\\[x\\].*Implementation.*\\n.*\\[ \\].*Test",
81
+ "\\[x\\].*\\[US\\d+\\].*Implement.*\\n.*\\[ \\].*\\[US\\d+\\].*Test"
82
+ ]
83
+ },
84
+ "blockMessage": "⚠️ BLOCKED - TDD Violation Detected\n\n📋 REQUIRED ACTION:\n1. Re-order TASKS.md to follow TDD sequence\n2. Mark test tasks [x] BEFORE implementation tasks\n3. Review Constitution Article VI - Test-First Development\n\nReason: CC-DevFlow enforces TDD (Tests First → Implementation)\nSource: planner agent mandate + Constitution Article VI\nFile: {file_path}\n\nCurrent Issue:\n Implementation task marked complete\n Test task NOT marked complete\n\n💡 SKIP: Add `@skip-tdd-check` comment or set SKIP_TDD_ENFORCER=1",
85
+ "skipConditions": {
86
+ "sessionSkillUsed": true,
87
+ "fileMarkers": [
88
+ "@skip-tdd-check"
89
+ ],
90
+ "envOverride": "SKIP_TDD_ENFORCER"
91
+ }
92
+ },
93
+ "constitution-guardian": {
94
+ "type": "guardrail",
95
+ "enforcement": "block",
96
+ "priority": "critical",
97
+ "description": "Real-time Constitution compliance checker. Blocks partial implementations (Article I.1) and hardcoded secrets (Article III.1)",
98
+ "fileTriggers": {
99
+ "pathPatterns": [
100
+ "devflow/requirements/**/PRD.md",
101
+ "devflow/requirements/**/EPIC.md",
102
+ "devflow/requirements/**/TASKS.md",
103
+ "devflow/requirements/**/TECH_DESIGN.md",
104
+ "devflow/requirements/**/contracts/**/*.yaml",
105
+ "devflow/requirements/**/data-model.md"
106
+ ],
107
+ "contentPatterns": [
108
+ "TODO.*later",
109
+ "FIXME",
110
+ "\\[placeholder\\]",
111
+ "simplified for now",
112
+ "defer to v\\d",
113
+ "will complete in v\\d",
114
+ "API_KEY\\s*=\\s*['\"]?[a-zA-Z0-9_-]{10,}",
115
+ "SECRET\\s*=\\s*['\"]?[a-zA-Z0-9_-]+",
116
+ "PASSWORD\\s*=\\s*['\"]?[^\\s]+",
117
+ "TOKEN\\s*=\\s*['\"]?[a-zA-Z0-9_-]{10,}",
118
+ "apiKey:\\s*['\"][^'\"]+['\"]",
119
+ "password:\\s*['\"][^'\"]+['\"]",
120
+ "secret:\\s*['\"][^'\"]+['\"]"
121
+ ]
122
+ },
123
+ "blockMessage": "⚠️ BLOCKED - Constitution Violation\n\nDetected:\n- Partial implementation (Article I.1 - NO PARTIAL IMPLEMENTATION)\n- OR Hardcoded secrets (Article III.1 - NO HARDCODED SECRETS)\n\n📋 ACTION:\n1. Complete all TODOs/FIXMEs before saving\n2. Move secrets to environment variables (.env, not committed)\n3. Review .claude/constitution/project-constitution.md v2.0.0\n4. Run /flow-verify for comprehensive check\n\nSource: Constitution Articles I.1, III.1\nFile: {file_path}\n\n💡 SKIP: Add `@constitution-verified` comment or set SKIP_CONSTITUTION_CHECK=1",
124
+ "skipConditions": {
125
+ "sessionSkillUsed": true,
126
+ "fileMarkers": [
127
+ "@constitution-verified"
128
+ ],
129
+ "envOverride": "SKIP_CONSTITUTION_CHECK"
130
+ }
131
+ },
132
+ "devflow-file-standards": {
133
+ "type": "domain",
134
+ "enforcement": "suggest",
135
+ "priority": "medium",
136
+ "description": "File naming conventions, directory structure, and YAML frontmatter standards for CC-DevFlow",
137
+ "promptTriggers": {
138
+ "keywords": [
139
+ "REQ-ID format",
140
+ "requirement ID",
141
+ "task ID",
142
+ "directory structure",
143
+ "file naming",
144
+ "orchestration_status",
145
+ "YAML frontmatter",
146
+ "contract file",
147
+ "where does PRD go",
148
+ "file standards"
149
+ ],
150
+ "intentPatterns": [
151
+ "what is.*?(format|pattern).*?(REQ|task|requirement|ID)",
152
+ "where (does|should).*?(PRD|EPIC|TASKS|file|document)",
153
+ "(how to|what is).*?(name|structure|organize).*?file",
154
+ "what fields.*?(orchestration_status|frontmatter|YAML)"
155
+ ]
156
+ },
157
+ "fileTriggers": {
158
+ "pathPatterns": [
159
+ "devflow/requirements/**/*.md",
160
+ "devflow/requirements/**/orchestration_status.json",
161
+ "devflow/requirements/**/contracts/**"
162
+ ]
163
+ }
164
+ },
165
+ "devflow-constitution-quick-ref": {
166
+ "type": "domain",
167
+ "enforcement": "suggest",
168
+ "priority": "medium",
169
+ "description": "Quick reference guide to CC-DevFlow Constitution v2.0.0 with links to full text",
170
+ "promptTriggers": {
171
+ "keywords": [
172
+ "constitution",
173
+ "constitutional",
174
+ "article",
175
+ "phase -1 gate",
176
+ "simplicity gate",
177
+ "anti-abstraction",
178
+ "integration-first",
179
+ "TDD mandate",
180
+ "quality first",
181
+ "security first",
182
+ "no partial implementation",
183
+ "no hardcoded secrets"
184
+ ],
185
+ "intentPatterns": [
186
+ "what is.*?(constitution|article|phase -1|gate)",
187
+ "(explain|show|tell me).*?(constitution|article)",
188
+ "can I.*?(TODO|hardcode|BaseController|abstraction)",
189
+ "should I.*?(test first|write implementation)"
190
+ ]
191
+ }
192
+ }
193
+ },
194
+ "notes": {
195
+ "enforcement_types": {
196
+ "suggest": "Skill suggestion appears but doesn't block execution",
197
+ "block": "Requires skill to be used before proceeding (guardrail)",
198
+ "warn": "Shows warning but allows proceeding"
199
+ },
200
+ "priority_levels": {
201
+ "critical": "Highest - Always trigger when matched, can block operations",
202
+ "high": "Important - Trigger for most matches",
203
+ "medium": "Moderate - Trigger for clear matches",
204
+ "low": "Optional - Trigger only for explicit matches"
205
+ },
206
+ "cc_devflow_customization": {
207
+ "pathPatterns": "All patterns match devflow/requirements/** structure",
208
+ "keywords": "CC-DevFlow specific terms (REQ-, flow-*, constitution, etc.)",
209
+ "guardra ils": "devflow-tdd-enforcer and constitution-guardian are critical guardrails",
210
+ "skip_conditions": "All guardrails support session skip, file markers, and env override"
211
+ }
212
+ }
213
+ }
@@ -0,0 +1,300 @@
1
+ # CC-DevFlow 测试套件
2
+
3
+ ## 目录结构
4
+
5
+ ```text
6
+ tests/
7
+ ├── README.md # 本文档
8
+ ├── test-framework.sh # 测试框架 (断言、mock、报告)
9
+ ├── run-all-tests.sh # 运行所有测试
10
+ ├── scripts/ # 脚本单元测试
11
+ │ ├── test_common.sh
12
+ │ ├── test_check_prerequisites.sh
13
+ │ ├── test_setup_epic.sh
14
+ │ ├── test_mark_task_complete.sh
15
+ │ ├── test_check_task_status.sh
16
+ │ ├── test_validate_constitution.sh
17
+ │ └── test_generate_status_report.sh
18
+ ├── commands/ # 命令集成测试
19
+ │ ├── test_flow_init.sh
20
+ │ ├── test_flow_prd.sh
21
+ │ ├── test_flow_epic.sh
22
+ │ ├── test_flow_dev.sh
23
+ │ ├── test_flow_qa.sh
24
+ │ └── test_flow_release.sh
25
+ ├── e2e/ # 端到端测试
26
+ │ ├── test_full_workflow.sh
27
+ │ ├── test_interruption_recovery.sh
28
+ │ └── test_quality_gates.sh
29
+ └── fixtures/ # 测试数据和 mock
30
+ ├── mock_requirements/
31
+ ├── mock_git/
32
+ └── test_data/
33
+ ```
34
+
35
+ ## 测试框架
36
+
37
+ ### 核心功能
38
+
39
+ - **断言函数**: assert_equals, assert_contains, assert_file_exists, assert_json_valid
40
+ - **Mock 系统**: mock_git, mock_file_system, mock_web_fetch
41
+ - **测试隔离**: 每个测试使用独立的临时目录
42
+ - **报告生成**: 统计通过/失败数量,生成详细报告
43
+
44
+ ### 运行测试
45
+
46
+ ```bash
47
+ # 运行所有测试
48
+ .claude/tests/run-all-tests.sh
49
+
50
+ # 运行脚本测试
51
+ .claude/tests/run-all-tests.sh --scripts
52
+
53
+ # 运行命令测试
54
+ .claude/tests/run-all-tests.sh --commands
55
+
56
+ # 运行端到端测试
57
+ .claude/tests/run-all-tests.sh --e2e
58
+
59
+ # 运行特定测试
60
+ .claude/tests/scripts/test_common.sh
61
+
62
+ # 显示详细输出
63
+ .claude/tests/run-all-tests.sh --verbose
64
+
65
+ # 生成覆盖率报告
66
+ .claude/tests/run-all-tests.sh --coverage
67
+ ```
68
+
69
+ ## 测试编写规范
70
+
71
+ ### 测试文件结构
72
+
73
+ ```bash
74
+ #!/usr/bin/env bash
75
+ # test_example.sh - Example script tests
76
+
77
+ # 加载测试框架
78
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
79
+ source "$SCRIPT_DIR/../test-framework.sh"
80
+
81
+ # 设置测试
82
+ setup_test() {
83
+ # 创建临时测试环境
84
+ TEST_DIR=$(mktemp -d)
85
+ export TEST_ROOT="$TEST_DIR"
86
+ }
87
+
88
+ # 清理测试
89
+ teardown_test() {
90
+ # 清理临时文件
91
+ rm -rf "$TEST_DIR"
92
+ }
93
+
94
+ # 测试函数示例
95
+ test_function_name() {
96
+ describe "Function name should work correctly"
97
+
98
+ # Arrange
99
+ local input="test_value"
100
+
101
+ # Act
102
+ local result=$(function_under_test "$input")
103
+
104
+ # Assert
105
+ assert_equals "$result" "expected_value" "Should return expected value"
106
+ }
107
+
108
+ # 运行所有测试
109
+ run_tests \
110
+ test_function_name \
111
+ test_another_function
112
+ ```
113
+
114
+ ### 断言函数
115
+
116
+ - `assert_equals <actual> <expected> [message]`
117
+ - `assert_not_equals <actual> <unexpected> [message]`
118
+ - `assert_contains <haystack> <needle> [message]`
119
+ - `assert_file_exists <path> [message]`
120
+ - `assert_file_not_exists <path> [message]`
121
+ - `assert_json_valid <json_string> [message]`
122
+ - `assert_exit_code <expected_code> <command> [message]`
123
+
124
+ ### Mock 函数
125
+
126
+ - `mock_git <command> <output>` - Mock Git 命令
127
+ - `mock_file <path> <content>` - 创建 Mock 文件
128
+ - `mock_function <function_name> <behavior>` - Mock 函数行为
129
+
130
+ ## 测试覆盖目标
131
+
132
+ ### 脚本测试覆盖率
133
+
134
+ | 脚本 | 目标覆盖率 | 当前状态 | 测试文件 |
135
+ |------|-----------|---------|---------|
136
+ | common.sh | ≥ 80% | ⏳ 待实现 | test_common.sh |
137
+ | check-prerequisites.sh | ≥ 80% | ⏳ 待实现 | test_check_prerequisites.sh |
138
+ | setup-epic.sh | ≥ 80% | ⏳ 待实现 | test_setup_epic.sh |
139
+ | mark-task-complete.sh | ≥ 80% | ⏳ 待实现 | test_mark_task_complete.sh |
140
+ | check-task-status.sh | ≥ 80% | ⏳ 待实现 | test_check_task_status.sh |
141
+ | validate-constitution.sh | ≥ 80% | ⏳ 待实现 | test_validate_constitution.sh |
142
+ | generate-status-report.sh | ≥ 80% | ⏳ 待实现 | test_generate_status_report.sh |
143
+
144
+ ### 命令测试覆盖率
145
+
146
+ | 命令 | 目标覆盖率 | 当前状态 | 测试文件 |
147
+ |------|-----------|---------|---------|
148
+ | /flow-init | ≥ 80% | ⏳ 待实现 | test_flow_init.sh |
149
+ | /flow-prd | ≥ 80% | ⏳ 待实现 | test_flow_prd.sh |
150
+ | /flow-epic | ≥ 80% | ⏳ 待实现 | test_flow_epic.sh |
151
+ | /flow-dev | ≥ 80% | ⏳ 待实现 | test_flow_dev.sh |
152
+ | /flow-qa | ≥ 80% | ⏳ 待实现 | test_flow_qa.sh |
153
+ | /flow-release | ≥ 80% | ⏳ 待实现 | test_flow_release.sh |
154
+
155
+ ### 端到端测试
156
+
157
+ | 场景 | 当前状态 | 测试文件 |
158
+ |------|---------|---------|
159
+ | 完整工作流 | ⏳ 待实现 | test_full_workflow.sh |
160
+ | 中断恢复 | ⏳ 待实现 | test_interruption_recovery.sh |
161
+ | 质量闸验证 | ⏳ 待实现 | test_quality_gates.sh |
162
+
163
+ ## 测试策略
164
+
165
+ ### 单元测试 (scripts/)
166
+
167
+ **目标**: 测试每个脚本的独立功能
168
+
169
+ **策略**:
170
+ - 测试正常流程和边界情况
171
+ - 测试错误处理和恢复
172
+ - Mock 外部依赖 (Git, 文件系统)
173
+ - 每个函数至少一个测试用例
174
+
175
+ **示例**:
176
+ ```bash
177
+ # 测试 get_repo_root 函数
178
+ test_get_repo_root_in_git_repo() {
179
+ mock_git "rev-parse --show-toplevel" "/fake/repo"
180
+ result=$(get_repo_root)
181
+ assert_equals "$result" "/fake/repo"
182
+ }
183
+
184
+ test_get_repo_root_no_git() {
185
+ mock_git "rev-parse --show-toplevel" "" "exit 1"
186
+ result=$(get_repo_root)
187
+ assert_contains "$result" ".claude"
188
+ }
189
+ ```
190
+
191
+ ### 集成测试 (commands/)
192
+
193
+ **目标**: 测试命令的完整执行流程
194
+
195
+ **策略**:
196
+ - 测试 Entry Gate 和 Exit Gate
197
+ - 测试命令之间的状态传递
198
+ - 测试错误场景和恢复
199
+ - 使用真实的脚本,Mock Git 和外部依赖
200
+
201
+ **示例**:
202
+ ```bash
203
+ test_flow_init_creates_structure() {
204
+ # Act
205
+ /flow-init "REQ-123|Test Requirement"
206
+
207
+ # Assert
208
+ assert_file_exists "$REQ_DIR/orchestration_status.json"
209
+ assert_file_exists "$REQ_DIR/EXECUTION_LOG.md"
210
+ assert_json_valid "$(cat $REQ_DIR/orchestration_status.json)"
211
+ }
212
+ ```
213
+
214
+ ### 端到端测试 (e2e/)
215
+
216
+ **目标**: 测试完整的工作流场景
217
+
218
+ **策略**:
219
+ - 模拟真实的需求开发流程
220
+ - 测试多个命令的协作
221
+ - 验证最终产物的正确性
222
+ - 测试中断和恢复机制
223
+
224
+ **示例**:
225
+ ```bash
226
+ test_full_workflow_simple_requirement() {
227
+ # Arrange
228
+ setup_mock_git_repo
229
+
230
+ # Act - 执行完整流程
231
+ /flow-init "REQ-123|Simple Feature"
232
+ /flow-prd "REQ-123"
233
+ /flow-epic "REQ-123"
234
+ # ... (简化,实际测试会 mock 子代理输出)
235
+
236
+ # Assert
237
+ assert_file_exists "$REQ_DIR/PRD.md"
238
+ assert_file_exists "$REQ_DIR/EPIC.md"
239
+ assert_file_exists "$REQ_DIR/TASKS.md"
240
+ }
241
+ ```
242
+
243
+ ## CI/CD 集成
244
+
245
+ ### GitHub Actions 配置
246
+
247
+ ```yaml
248
+ name: Test Suite
249
+
250
+ on: [push, pull_request]
251
+
252
+ jobs:
253
+ test:
254
+ runs-on: ubuntu-latest
255
+ steps:
256
+ - uses: actions/checkout@v2
257
+ - name: Run tests
258
+ run: .claude/tests/run-all-tests.sh
259
+ - name: Generate coverage report
260
+ run: .claude/tests/run-all-tests.sh --coverage
261
+ - name: Upload coverage
262
+ uses: codecov/codecov-action@v2
263
+ ```
264
+
265
+ ## 最佳实践
266
+
267
+ ### 1. 测试隔离
268
+
269
+ - 每个测试使用独立的临时目录
270
+ - 不依赖外部状态或全局变量
271
+ - 清理所有临时文件
272
+
273
+ ### 2. Mock 外部依赖
274
+
275
+ - Mock Git 命令避免修改真实仓库
276
+ - Mock 文件系统操作避免副作用
277
+ - Mock 网络请求避免依赖外部服务
278
+
279
+ ### 3. 清晰的测试命名
280
+
281
+ - 使用 `test_<function>_<scenario>` 格式
282
+ - 描述测试的意图,而不是实现
283
+ - 使用 `describe` 添加人类可读的描述
284
+
285
+ ### 4. 快速反馈
286
+
287
+ - 单元测试应该快速执行 (< 1秒/测试)
288
+ - 集成测试可以稍慢 (< 5秒/测试)
289
+ - 端到端测试可以更慢 (< 30秒/测试)
290
+
291
+ ### 5. 可维护性
292
+
293
+ - 避免重复的测试代码
294
+ - 使用 fixture 和 helper 函数
295
+ - 保持测试简单和可读
296
+
297
+ ---
298
+
299
+ **最后更新**: 2025-10-01
300
+ **状态**: ⏳ 测试框架开发中
@@ -0,0 +1,69 @@
1
+ # Testing TODO List
2
+
3
+ ## Active Issues
4
+
5
+ ### Test Environment Isolation Issues
6
+
7
+ **File**: `.claude/tests/scripts/test_sync_task_marks.sh`
8
+
9
+ **Status**: PARTIAL PASS (3/7 tests)
10
+
11
+ **Problem**:
12
+ - Tests 4-7 fail due to test environment isolation issues
13
+ - The script being tested (`sync-task-marks.sh`) works correctly (verified manually)
14
+ - Issue is with test framework's file system state management
15
+
16
+ **Root Cause**:
17
+ - Tests create directories in `$REPO_ROOT/devflow/requirements/REQ-TEST-*`
18
+ - Subshell execution context causes directories to be inaccessible
19
+ - Test framework's `setup_test()` and `teardown_test()` need enhancement
20
+
21
+ **Current Workarounds**:
22
+ - Using `DEVFLOW_REQ_ID` environment variable (correct approach)
23
+ - EXIT trap for cleanup (works but doesn't fix isolation)
24
+
25
+ **Tests Status**:
26
+ - ✅ test_help_message
27
+ - ✅ test_no_requirement_id
28
+ - ✅ test_requirement_directory_not_found
29
+ - ❌ test_tasks_file_not_found (directory not found in subshell)
30
+ - ❌ test_all_tasks_completed (directory not found in subshell)
31
+ - ❌ test_list_uncompleted_tasks (directory not found in subshell)
32
+ - ❌ test_dry_run_shows_commands (directory not found in subshell)
33
+
34
+ **Solution Needed**:
35
+ 1. Enhance test framework's environment isolation
36
+ 2. Add support for per-test working directories
37
+ 3. Improve subshell context handling for file system operations
38
+ 4. Consider using mocking strategy instead of real file system
39
+
40
+ **Priority**: LOW
41
+ - Script functionality is verified and working
42
+ - Core error handling tests pass
43
+ - This is a test infrastructure issue, not a code bug
44
+
45
+ **Impact**: Minimal
46
+ - Doesn't affect production code
47
+ - Doesn't block development
48
+ - Manual verification confirms script works correctly
49
+
50
+ **Estimated Effort**: 2-4 hours
51
+ - Need to study test framework architecture
52
+ - Design better isolation strategy
53
+ - Implement and verify across all test suites
54
+
55
+ ---
56
+
57
+ ## Completed
58
+
59
+ ### Three-Layer Architecture Refactoring (2025-01-09)
60
+ - ✅ Reorganized `.claude/rules/` to three-layer architecture
61
+ - ✅ Reduced context usage by 55% (~100KB tokens)
62
+ - ✅ All 7/8 test suites passing (sync-task-marks partial)
63
+ - ✅ Documentation updated (README files)
64
+
65
+ ### Constitution v2.0.0 Implementation (2025-01-08)
66
+ - ✅ 100% test coverage across all Constitution suites
67
+ - ✅ Version consistency validation
68
+ - ✅ Article coverage enforcement
69
+ - ✅ Template completeness checks