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.
- package/.claude/CLAUDE.md +83 -0
- package/.claude/agents/architecture-designer.md +443 -0
- package/.claude/agents/bug-analyzer.md +382 -0
- package/.claude/agents/checklist-agent.md +175 -0
- package/.claude/agents/clarify-analyst.md +50 -0
- package/.claude/agents/code-reviewer.md +71 -0
- package/.claude/agents/codex-analyzer.md +39 -0
- package/.claude/agents/compatibility-checker.md +580 -0
- package/.claude/agents/consistency-checker.md +532 -0
- package/.claude/agents/impact-analyzer.md +441 -0
- package/.claude/agents/planner.md +230 -0
- package/.claude/agents/prd-writer.md +320 -0
- package/.claude/agents/project-guidelines-generator.md +1329 -0
- package/.claude/agents/qa-tester.md +313 -0
- package/.claude/agents/release-manager.md +295 -0
- package/.claude/agents/security-reviewer.md +314 -0
- package/.claude/agents/style-guide-generator.md +458 -0
- package/.claude/agents/tech-architect.md +516 -0
- package/.claude/agents/ui-designer.md +485 -0
- package/.claude/commands/code-review-high.md +58 -0
- package/.claude/commands/core-architecture.md +429 -0
- package/.claude/commands/core-guidelines.md +486 -0
- package/.claude/commands/core-roadmap.md +439 -0
- package/.claude/commands/core-style.md +293 -0
- package/.claude/commands/flow-archive.md +245 -0
- package/.claude/commands/flow-checklist.md +260 -0
- package/.claude/commands/flow-clarify.md +136 -0
- package/.claude/commands/flow-constitution.md +82 -0
- package/.claude/commands/flow-dev.md +134 -0
- package/.claude/commands/flow-epic.md +150 -0
- package/.claude/commands/flow-fix.md +104 -0
- package/.claude/commands/flow-ideate.md +214 -0
- package/.claude/commands/flow-init.md +313 -0
- package/.claude/commands/flow-new.md +394 -0
- package/.claude/commands/flow-prd.md +131 -0
- package/.claude/commands/flow-qa.md +93 -0
- package/.claude/commands/flow-release.md +92 -0
- package/.claude/commands/flow-restart.md +98 -0
- package/.claude/commands/flow-status.md +64 -0
- package/.claude/commands/flow-tech.md +142 -0
- package/.claude/commands/flow-ui.md +189 -0
- package/.claude/commands/flow-update.md +111 -0
- package/.claude/commands/flow-upgrade.md +115 -0
- package/.claude/commands/flow-verify.md +96 -0
- package/.claude/commands/problem-analyzer.md +60 -0
- package/.claude/config/quality-rules.yml +161 -0
- package/.claude/docs/SPEC_KIT_CONSTITUTION_ANALYSIS.md +426 -0
- package/.claude/docs/design/consistency-conflict-detection-algorithms.md +658 -0
- package/.claude/docs/design/intent-driven-input-design.md +380 -0
- package/.claude/docs/design/prd-version-management-design.md +437 -0
- package/.claude/docs/guides/INIT_TROUBLESHOOTING.md +117 -0
- package/.claude/docs/guides/NEW_TROUBLESHOOTING.md +151 -0
- package/.claude/docs/guides/ROADMAP_TROUBLESHOOTING.md +188 -0
- package/.claude/docs/guides/TASK_COMPLETION_MARKING.md +338 -0
- package/.claude/docs/templates/ARCHITECTURE_TEMPLATE.md +633 -0
- package/.claude/docs/templates/BACKLOG_TEMPLATE.md +261 -0
- package/.claude/docs/templates/CHECKLIST_TEMPLATE.md +52 -0
- package/.claude/docs/templates/CLARIFICATION_REPORT_TEMPLATE.md +206 -0
- package/.claude/docs/templates/CODE_REVIEW_TEMPLATE.md +71 -0
- package/.claude/docs/templates/EPIC_TEMPLATE.md +805 -0
- package/.claude/docs/templates/INIT_FLOW_TEMPLATE.md +213 -0
- package/.claude/docs/templates/INTENT_CLARIFICATION_TEMPLATE.md +57 -0
- package/.claude/docs/templates/NEW_ORCHESTRATION_TEMPLATE.md +148 -0
- package/.claude/docs/templates/PRD_TEMPLATE.md +562 -0
- package/.claude/docs/templates/RESEARCH_TEMPLATE.md +276 -0
- package/.claude/docs/templates/REVIEW-HIGH.md +57 -0
- package/.claude/docs/templates/ROADMAP_DIALOGUE_TEMPLATE.md +198 -0
- package/.claude/docs/templates/ROADMAP_TEMPLATE.md +310 -0
- package/.claude/docs/templates/STYLE_TEMPLATE.md +1266 -0
- package/.claude/docs/templates/TASKS_TEMPLATE.md +523 -0
- package/.claude/docs/templates/TECH_DESIGN_TEMPLATE.md +1019 -0
- package/.claude/docs/templates/UI_PROTOTYPE_TEMPLATE.md +1436 -0
- package/.claude/guides/agent-guides/agent-coordination-guide.md +459 -0
- package/.claude/guides/project-guidelines-system.md +463 -0
- package/.claude/guides/technical-guides/datetime-handling-guide.md +563 -0
- package/.claude/guides/technical-guides/git-github-guide.md +642 -0
- package/.claude/guides/technical-guides/test-execution-guide.md +618 -0
- package/.claude/guides/workflow-guides/bug-fix-orchestrator.md +217 -0
- package/.claude/guides/workflow-guides/flow-orchestrator.md +282 -0
- package/.claude/hooks/checklist-gate.js +397 -0
- package/.claude/hooks/error-handling-reminder.sh +12 -0
- package/.claude/hooks/error-handling-reminder.ts +459 -0
- package/.claude/hooks/post-tool-use-tracker.sh +280 -0
- package/.claude/hooks/pre-tool-use-guardrail.sh +36 -0
- package/.claude/hooks/pre-tool-use-guardrail.ts +342 -0
- package/.claude/hooks/skill-activation-prompt.sh +36 -0
- package/.claude/hooks/skill-activation-prompt.ts +214 -0
- package/.claude/hooks/state/skills-used-test-guard.json +3 -0
- package/.claude/rules/devflow-conventions.md +305 -0
- package/.claude/rules/project-constitution.md +748 -0
- package/.claude/schemas/constitution.schema.json +43 -0
- package/.claude/scripts/analyze-upgrade-impact.sh +200 -0
- package/.claude/scripts/archive-requirement.sh +351 -0
- package/.claude/scripts/calculate-checklist-completion.sh +243 -0
- package/.claude/scripts/calculate-quarter.sh +206 -0
- package/.claude/scripts/check-dependencies.sh +409 -0
- package/.claude/scripts/check-prerequisites.sh +232 -0
- package/.claude/scripts/check-task-status.sh +264 -0
- package/.claude/scripts/checklist-errors.sh +131 -0
- package/.claude/scripts/common.sh +570 -0
- package/.claude/scripts/consolidate-research.sh +182 -0
- package/.claude/scripts/create-requirement.sh +426 -0
- package/.claude/scripts/export-contracts.sh +117 -0
- package/.claude/scripts/extract-data-model.sh +78 -0
- package/.claude/scripts/generate-clarification-questions.sh +377 -0
- package/.claude/scripts/generate-clarification-report.sh +463 -0
- package/.claude/scripts/generate-quickstart.sh +146 -0
- package/.claude/scripts/generate-research-tasks.sh +157 -0
- package/.claude/scripts/generate-status-report.sh +523 -0
- package/.claude/scripts/generate-tech-analysis.sh +46 -0
- package/.claude/scripts/locate-requirement-in-roadmap.sh +233 -0
- package/.claude/scripts/manage-constitution.sh +602 -0
- package/.claude/scripts/mark-task-complete.sh +198 -0
- package/.claude/scripts/populate-research-tasks.sh +259 -0
- package/.claude/scripts/recover-workflow.sh +460 -0
- package/.claude/scripts/run-clarify-scan.sh +601 -0
- package/.claude/scripts/run-high-review.sh +62 -0
- package/.claude/scripts/run-problem-analysis.sh +68 -0
- package/.claude/scripts/setup-epic.sh +173 -0
- package/.claude/scripts/sync-roadmap-progress.sh +300 -0
- package/.claude/scripts/sync-task-marks.sh +199 -0
- package/.claude/scripts/test-clarify-scan.sh +515 -0
- package/.claude/scripts/update-agent-context.sh +806 -0
- package/.claude/scripts/validate-constitution.sh +567 -0
- package/.claude/scripts/validate-hooks.sh +487 -0
- package/.claude/scripts/validate-research.sh +332 -0
- package/.claude/scripts/validate-scope-boundary.sh +493 -0
- package/.claude/scripts/verify-setup.sh +37 -0
- package/.claude/settings.json +76 -0
- package/.claude/skills/_reference-implementations/README.md +96 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/SKILL.md +302 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/architecture-overview.md +451 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/async-and-errors.md +307 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/complete-examples.md +638 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/configuration.md +275 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/database-patterns.md +224 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/middleware-guide.md +213 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/routing-and-controllers.md +756 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/sentry-and-monitoring.md +336 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/services-and-repositories.md +789 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/testing-guide.md +235 -0
- package/.claude/skills/_reference-implementations/backend-express-prisma/resources/validation-patterns.md +754 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/SKILL.md +399 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/common-patterns.md +331 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/complete-examples.md +872 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/component-patterns.md +502 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/data-fetching.md +767 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/file-organization.md +502 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/loading-and-error-states.md +501 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/performance.md +406 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/routing-guide.md +364 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/styling-guide.md +428 -0
- package/.claude/skills/_reference-implementations/frontend-react-mui/resources/typescript-standards.md +418 -0
- package/.claude/skills/cc-devflow-orchestrator/SKILL.md +229 -0
- package/.claude/skills/constitution-guardian/SKILL.md +306 -0
- package/.claude/skills/devflow-constitution-quick-ref/SKILL.md +374 -0
- package/.claude/skills/devflow-file-standards/SKILL.md +353 -0
- package/.claude/skills/devflow-tdd-enforcer/SKILL.md +192 -0
- package/.claude/skills/skill-developer/ADVANCED.md +197 -0
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
- package/.claude/skills/skill-developer/SKILL.md +426 -0
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
- package/.claude/skills/skill-rules.json +213 -0
- package/.claude/tests/README.md +300 -0
- package/.claude/tests/TODO.md +69 -0
- package/.claude/tests/__pycache__/test_analyze_upgrade_impact.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_consolidate_research.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_export_contracts.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_extract_data_model.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_generate_quickstart.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/__pycache__/test_generate_research_tasks.cpython-311-pytest-7.2.2.pyc +0 -0
- package/.claude/tests/constitution/run_all_constitution_tests.sh +111 -0
- package/.claude/tests/constitution/test_agent_assignment.sh +207 -0
- package/.claude/tests/constitution/test_article_coverage.sh +201 -0
- package/.claude/tests/constitution/test_template_completeness.sh +150 -0
- package/.claude/tests/constitution/test_version_consistency.sh +120 -0
- package/.claude/tests/fixtures/spec_delta_full.md +16 -0
- package/.claude/tests/fixtures/tasks_progress_sample.md +5 -0
- package/.claude/tests/run-all-tests.sh +229 -0
- package/.claude/tests/scripts/run.sh +30 -0
- package/.claude/tests/scripts/test-framework.sh +128 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh +511 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak +504 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak2 +505 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak3 +506 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak4 +507 -0
- package/.claude/tests/scripts/test_check_prerequisites.sh.bak5 +508 -0
- package/.claude/tests/scripts/test_check_task_status.sh +499 -0
- package/.claude/tests/scripts/test_common.sh +244 -0
- package/.claude/tests/scripts/test_generate_status_report.sh +71 -0
- package/.claude/tests/scripts/test_mark_task_complete.sh +441 -0
- package/.claude/tests/scripts/test_mark_task_complete.sh.backup +410 -0
- package/.claude/tests/scripts/test_recover_workflow.sh +304 -0
- package/.claude/tests/scripts/test_setup_epic.sh +437 -0
- package/.claude/tests/scripts/test_sync_task_marks.sh +196 -0
- package/.claude/tests/scripts/test_validate_constitution.sh +74 -0
- package/.claude/tests/scripts/test_validate_research.sh +462 -0
- package/.claude/tests/slugify.bats +82 -0
- package/.claude/tests/test-framework.sh +732 -0
- package/.claude/tests/test_analyze_upgrade_impact.py +34 -0
- package/.claude/tests/test_consolidate_research.py +48 -0
- package/.claude/tests/test_export_contracts.py +43 -0
- package/.claude/tests/test_extract_data_model.py +33 -0
- package/.claude/tests/test_generate_quickstart.py +50 -0
- package/.claude/tests/test_generate_research_tasks.py +52 -0
- package/.claude/tsc-cache/6e64f818-6398-49ca-8623-581a9af85c44/edited-files.log +1 -0
- package/.claude/tsc-cache/795ba6e3-b98a-423b-bab2-51aa62812569/affected-repos.txt +1 -0
- package/.claude/tsc-cache/795ba6e3-b98a-423b-bab2-51aa62812569/edited-files.log +1 -0
- package/.claude/tsc-cache/ae335694-be5a-4ba4-a1a0-b676c09a7906/affected-repos.txt +1 -0
- package/.claude/tsc-cache/ae335694-be5a-4ba4-a1a0-b676c09a7906/edited-files.log +1 -0
- package/CHANGELOG.md +507 -0
- package/LICENSE +21 -0
- package/README.md +534 -0
- package/README.zh-CN.md +530 -0
- package/bin/adapt.js +240 -0
- package/bin/cc-devflow-cli.js +185 -0
- package/bin/cc-devflow.js +78 -0
- package/config/adapters.yml +5 -0
- package/config/schema/adapters.schema.json +44 -0
- package/docs/CLAUDE.md +26 -0
- package/docs/commands/README.md +61 -0
- package/docs/commands/README.zh-CN.md +55 -0
- package/docs/commands/core-roadmap.md +106 -0
- package/docs/commands/core-roadmap.zh-CN.md +102 -0
- package/docs/commands/core-style.md +405 -0
- package/docs/commands/core-style.zh-CN.md +405 -0
- package/docs/commands/flow-init.md +134 -0
- package/docs/commands/flow-init.zh-CN.md +163 -0
- package/docs/commands/flow-new.md +274 -0
- package/docs/commands/flow-new.zh-CN.md +270 -0
- package/docs/guides/getting-started.md +204 -0
- package/docs/guides/getting-started.zh-CN.md +152 -0
- package/lib/adapters/adapter-interface.js +57 -0
- package/lib/adapters/claude-adapter.js +74 -0
- package/lib/adapters/codex-adapter.js +40 -0
- package/lib/adapters/config-validator.js +68 -0
- package/lib/adapters/logger.js +42 -0
- package/lib/adapters/registry.js +153 -0
- package/lib/compiler/CLAUDE.md +92 -0
- package/lib/compiler/__tests__/drift.test.js +215 -0
- package/lib/compiler/__tests__/errors.test.js +184 -0
- package/lib/compiler/__tests__/incremental.test.js +174 -0
- package/lib/compiler/__tests__/integration.test.js +174 -0
- package/lib/compiler/__tests__/manifest.test.js +233 -0
- package/lib/compiler/__tests__/parser.test.js +456 -0
- package/lib/compiler/__tests__/schemas.test.js +301 -0
- package/lib/compiler/__tests__/skills-registry.test.js +125 -0
- package/lib/compiler/__tests__/transformer.test.js +286 -0
- package/lib/compiler/emitters/antigravity-emitter.js +171 -0
- package/lib/compiler/emitters/base-emitter.js +73 -0
- package/lib/compiler/emitters/codex-emitter.js +52 -0
- package/lib/compiler/emitters/cursor-emitter.js +31 -0
- package/lib/compiler/emitters/index.js +50 -0
- package/lib/compiler/emitters/qwen-emitter.js +39 -0
- package/lib/compiler/errors.js +119 -0
- package/lib/compiler/index.js +256 -0
- package/lib/compiler/manifest.js +242 -0
- package/lib/compiler/parser.js +258 -0
- package/lib/compiler/platforms.js +113 -0
- package/lib/compiler/resource-copier.js +320 -0
- package/lib/compiler/rules-emitters/__tests__/antigravity-rules-emitter.test.js +191 -0
- package/lib/compiler/rules-emitters/__tests__/codex-rules-emitter.test.js +109 -0
- package/lib/compiler/rules-emitters/__tests__/cursor-rules-emitter.test.js +123 -0
- package/lib/compiler/rules-emitters/__tests__/qwen-rules-emitter.test.js +123 -0
- package/lib/compiler/rules-emitters/antigravity-rules-emitter.js +253 -0
- package/lib/compiler/rules-emitters/base-rules-emitter.js +83 -0
- package/lib/compiler/rules-emitters/codex-rules-emitter.js +116 -0
- package/lib/compiler/rules-emitters/cursor-rules-emitter.js +98 -0
- package/lib/compiler/rules-emitters/index.js +71 -0
- package/lib/compiler/rules-emitters/qwen-rules-emitter.js +70 -0
- package/lib/compiler/schemas.js +144 -0
- package/lib/compiler/skills-registry.js +225 -0
- package/lib/compiler/transformer.js +236 -0
- 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
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|