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,204 @@
|
|
|
1
|
+
# Getting Started with cc-devflow
|
|
2
|
+
|
|
3
|
+
[中文文档](./getting-started.zh-CN.md) | [English](./getting-started.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 📋 Overview
|
|
8
|
+
|
|
9
|
+
This guide will help you get started with cc-devflow, from installation to your first requirement development.
|
|
10
|
+
|
|
11
|
+
## 🚀 Prerequisites
|
|
12
|
+
|
|
13
|
+
- [Claude Code](https://claude.ai/code) installed and configured
|
|
14
|
+
- Git repository initialized
|
|
15
|
+
- Node.js project (optional, for additional quality checks)
|
|
16
|
+
|
|
17
|
+
## 📦 Installation
|
|
18
|
+
|
|
19
|
+
### Quick Install
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Clone .claude configuration to your project
|
|
23
|
+
pnpm dlx tiged Dimon94/cc-devflow/.claude .claude
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Manual Install
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Download and extract
|
|
30
|
+
curl -L https://github.com/Dimon94/cc-devflow/archive/main.zip -o cc-devflow.zip
|
|
31
|
+
unzip cc-devflow.zip
|
|
32
|
+
cp -r cc-devflow-main/.claude .claude
|
|
33
|
+
rm -rf cc-devflow.zip cc-devflow-main
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## ✅ Verify Installation
|
|
37
|
+
|
|
38
|
+
Run the verification script:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
.claude/scripts/verify-setup.sh
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
This script will check:
|
|
45
|
+
- All required files and directories exist
|
|
46
|
+
- Scripts have execute permissions
|
|
47
|
+
- Git repository is properly configured
|
|
48
|
+
|
|
49
|
+
## 🎯 Your First Requirement
|
|
50
|
+
|
|
51
|
+
### Step 1: Start Development Flow
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
/flow-new "REQ-001|User Authentication|https://docs.example.com/auth"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
This will:
|
|
58
|
+
1. Initialize requirement structure
|
|
59
|
+
2. Generate PRD
|
|
60
|
+
3. Generate UI prototype (if needed)
|
|
61
|
+
4. Create technical design
|
|
62
|
+
5. Generate EPIC and TASKS
|
|
63
|
+
6. Execute development
|
|
64
|
+
7. Run QA tests
|
|
65
|
+
8. Prepare release
|
|
66
|
+
|
|
67
|
+
### Step 2: Check Progress
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
/flow-status REQ-001
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Step 3: Resume If Interrupted
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
/flow-restart "REQ-001"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## 🛠️ Core Scripts
|
|
80
|
+
|
|
81
|
+
### Environment Check
|
|
82
|
+
```bash
|
|
83
|
+
bash .claude/scripts/check-prerequisites.sh
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### View Task Status
|
|
87
|
+
```bash
|
|
88
|
+
bash .claude/scripts/check-task-status.sh --verbose
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Mark Task Complete
|
|
92
|
+
```bash
|
|
93
|
+
bash .claude/scripts/mark-task-complete.sh T001
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Generate Status Report
|
|
97
|
+
```bash
|
|
98
|
+
bash .claude/scripts/generate-status-report.sh --format markdown
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## 🧪 Running Tests
|
|
102
|
+
|
|
103
|
+
### Script Tests
|
|
104
|
+
```bash
|
|
105
|
+
# Run all tests
|
|
106
|
+
bash .claude/tests/run-all-tests.sh --scripts
|
|
107
|
+
|
|
108
|
+
# Run specific test
|
|
109
|
+
bash .claude/tests/scripts/test_check_prerequisites.sh
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Constitution Tests
|
|
113
|
+
```bash
|
|
114
|
+
bash .claude/tests/constitution/run_all_constitution_tests.sh
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## 📊 Interactive Demo
|
|
118
|
+
|
|
119
|
+
Run the interactive demo to see the complete workflow:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
python3 .claude/scripts/demo.py
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## 🔧 Configuration
|
|
126
|
+
|
|
127
|
+
### Minimum Configuration
|
|
128
|
+
|
|
129
|
+
Edit `.claude/settings.json`:
|
|
130
|
+
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"permissions": {
|
|
134
|
+
"allowGitOperations": true,
|
|
135
|
+
"allowNetworkRequests": true,
|
|
136
|
+
"allowSubprocesses": true
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Environment Variables
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Quality gates
|
|
145
|
+
export MIN_TEST_COVERAGE=80
|
|
146
|
+
export STRICT_TYPE_CHECKING=true
|
|
147
|
+
|
|
148
|
+
# Flow behavior
|
|
149
|
+
export FLOW_AUTO_APPROVE=false
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## 📚 Next Steps
|
|
153
|
+
|
|
154
|
+
- [Command Reference](../commands/README.md) - Learn all available commands
|
|
155
|
+
- [Workflow Guide](./workflow-guide.md) - Understand the development workflow
|
|
156
|
+
- [Best Practices](./best-practices.md) - Follow recommended practices
|
|
157
|
+
|
|
158
|
+
## 🚨 Troubleshooting
|
|
159
|
+
|
|
160
|
+
### Issue: Scripts not executable
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
chmod +x .claude/scripts/*.sh
|
|
164
|
+
chmod +x .claude/hooks/*.sh
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Issue: Git not initialized
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
git init
|
|
171
|
+
git add .
|
|
172
|
+
git commit -m "Initial commit"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Issue: Tests failing
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Check prerequisites
|
|
179
|
+
bash .claude/scripts/check-prerequisites.sh
|
|
180
|
+
|
|
181
|
+
# Run tests with verbose output
|
|
182
|
+
VERBOSE=true bash .claude/tests/run-all-tests.sh --scripts
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## 💡 Tips
|
|
186
|
+
|
|
187
|
+
1. **Always check progress** with `/flow-status` before continuing work
|
|
188
|
+
2. **Use `/flow-verify`** to check document consistency
|
|
189
|
+
3. **Enable debug mode** if you encounter issues: `export FLOW_DEBUG=1`
|
|
190
|
+
4. **Read the Constitution** to understand quality standards
|
|
191
|
+
|
|
192
|
+
## 🆘 Getting Help
|
|
193
|
+
|
|
194
|
+
- [GitHub Issues](https://github.com/Dimon94/cc-devflow/issues)
|
|
195
|
+
- [Documentation](../../docs/)
|
|
196
|
+
- [Contributing Guide](../../CONTRIBUTING.md)
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
**Ready to start? Run your first command:**
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
/flow-new "REQ-001|My First Feature"
|
|
204
|
+
```
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# 🚀 快速开始指南
|
|
2
|
+
|
|
3
|
+
## 📦 安装
|
|
4
|
+
|
|
5
|
+
### 方式 1: 使用 npx(推荐)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm dlx tiged Dimon94/cc-devflow/.claude .claude
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### 方式 2: 手动下载
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
curl -L https://github.com/Dimon94/cc-devflow/archive/main.zip -o cc-devflow.zip
|
|
15
|
+
unzip cc-devflow.zip
|
|
16
|
+
cp -r cc-devflow-main/.claude .claude
|
|
17
|
+
rm -rf cc-devflow.zip cc-devflow-main
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## ✅ 验证安装
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
.claude/scripts/verify-setup.sh
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**预期输出**:
|
|
27
|
+
```
|
|
28
|
+
✅ All checks passed!
|
|
29
|
+
cc-devflow is ready to use.
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 🎮 交互式演示
|
|
33
|
+
|
|
34
|
+
运行完整演示了解工作流:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
python3 .claude/scripts/demo.py
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 🎯 第一个需求
|
|
41
|
+
|
|
42
|
+
### 1. 启动需求开发
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
/flow-new "REQ-001|用户认证功能|https://docs.example.com/auth"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 2. 查看进度
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
/flow-status REQ-001
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 3. 如果中断,恢复开发
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
/flow-restart "REQ-001"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 4. 验证一致性
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
/flow-verify "REQ-001"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 5. 执行 QA
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
/flow-qa "REQ-001"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 6. 创建发布
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
/flow-release "REQ-001"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## 📋 核心脚本
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# 快速环境检查
|
|
82
|
+
bash .claude/scripts/check-prerequisites.sh
|
|
83
|
+
|
|
84
|
+
# 查看任务状态
|
|
85
|
+
bash .claude/scripts/check-task-status.sh --verbose
|
|
86
|
+
|
|
87
|
+
# 标记任务完成
|
|
88
|
+
bash .claude/scripts/mark-task-complete.sh T001
|
|
89
|
+
|
|
90
|
+
# 生成状态报告
|
|
91
|
+
bash .claude/scripts/generate-status-report.sh --format markdown
|
|
92
|
+
|
|
93
|
+
# 验证 Constitution 合规
|
|
94
|
+
bash .claude/scripts/manage-constitution.sh verify
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## 🧪 运行测试
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# 运行所有脚本测试
|
|
101
|
+
bash .claude/tests/run-all-tests.sh --scripts
|
|
102
|
+
|
|
103
|
+
# 运行 Constitution 测试
|
|
104
|
+
bash .claude/tests/constitution/run_all_constitution_tests.sh
|
|
105
|
+
|
|
106
|
+
# 运行特定测试
|
|
107
|
+
bash .claude/tests/scripts/test_check_prerequisites.sh
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## ⚙️ 基础配置
|
|
111
|
+
|
|
112
|
+
最小配置 (`.claude/settings.json`):
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"permissions": {
|
|
117
|
+
"allowGitOperations": true,
|
|
118
|
+
"allowNetworkRequests": true,
|
|
119
|
+
"allowSubprocesses": true
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 🚨 常见问题
|
|
125
|
+
|
|
126
|
+
### Q: 安装后命令无法识别?
|
|
127
|
+
|
|
128
|
+
**A**: 确保在项目根目录执行命令,且 `.claude/` 目录存在。
|
|
129
|
+
|
|
130
|
+
### Q: Git 仓库未初始化?
|
|
131
|
+
|
|
132
|
+
**A**: 先初始化 Git 仓库:
|
|
133
|
+
```bash
|
|
134
|
+
git init
|
|
135
|
+
git add .
|
|
136
|
+
git commit -m "Initial commit"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Q: 权限不足?
|
|
140
|
+
|
|
141
|
+
**A**: 给脚本添加执行权限:
|
|
142
|
+
```bash
|
|
143
|
+
chmod +x .claude/scripts/*.sh
|
|
144
|
+
chmod +x .claude/hooks/*.sh
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## 📚 下一步
|
|
148
|
+
|
|
149
|
+
- [完整命令参考](../commands/README.md)
|
|
150
|
+
- [工作流详解](./workflow-guide.md)
|
|
151
|
+
- [最佳实践](./best-practices.md)
|
|
152
|
+
- [故障排查](./troubleshooting.md)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstract class representing an Agent Adapter.
|
|
3
|
+
* Adapters bridge the gap between cc-devflow and specific AI agent CLI tools.
|
|
4
|
+
*/
|
|
5
|
+
class AgentAdapter {
|
|
6
|
+
constructor() {
|
|
7
|
+
if (this.constructor === AgentAdapter) {
|
|
8
|
+
throw new Error("Cannot instantiate abstract class AgentAdapter");
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The unique name of the adapter (e.g., 'claude', 'codex').
|
|
14
|
+
* @returns {string}
|
|
15
|
+
*/
|
|
16
|
+
get name() {
|
|
17
|
+
throw new Error("Method 'name' must be implemented.");
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The configuration folder name expected in the user's project (e.g., '.claude').
|
|
22
|
+
* @returns {string}
|
|
23
|
+
*/
|
|
24
|
+
get folder() {
|
|
25
|
+
throw new Error("Method 'folder' must be implemented.");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Detects if this adapter is applicable for the current environment.
|
|
30
|
+
* Checks for folder existence, environment variables, or other indicators.
|
|
31
|
+
* @returns {Promise<boolean>}
|
|
32
|
+
*/
|
|
33
|
+
async detect() {
|
|
34
|
+
throw new Error("Method 'detect()' must be implemented.");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Executes a command using this adapter's underlying agent.
|
|
39
|
+
* @param {string} command - The command to execute.
|
|
40
|
+
* @param {string[]} args - Arguments for the command.
|
|
41
|
+
* @param {Object} options - Execution options.
|
|
42
|
+
* @returns {Promise<Object>} The result of the execution.
|
|
43
|
+
*/
|
|
44
|
+
async execute(command, args = [], options = {}) {
|
|
45
|
+
throw new Error("Method 'execute()' must be implemented.");
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Returns the capabilities of this adapter.
|
|
50
|
+
* @returns {string[]} List of capabilities (e.g., 'shell', 'network').
|
|
51
|
+
*/
|
|
52
|
+
get capabilities() {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
module.exports = AgentAdapter;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const { spawn } = require('child_process');
|
|
4
|
+
const AgentAdapter = require('./adapter-interface');
|
|
5
|
+
|
|
6
|
+
class ClaudeAdapter extends AgentAdapter {
|
|
7
|
+
get name() {
|
|
8
|
+
return 'claude';
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
get folder() {
|
|
12
|
+
return '.claude';
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Detects if the current environment is set up for Claude.
|
|
17
|
+
* Checks for .claude directory or ANTHROPIC_API_KEY env var.
|
|
18
|
+
*/
|
|
19
|
+
async detect() {
|
|
20
|
+
// 1. Check for directory presence
|
|
21
|
+
const configPath = path.resolve(process.cwd(), this.folder);
|
|
22
|
+
if (fs.existsSync(configPath)) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// 2. Check for environment variable
|
|
27
|
+
if (process.env.ANTHROPIC_API_KEY) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Executes a command using the 'claude' CLI tool.
|
|
36
|
+
* Assumes 'claude' is in the PATH or handled via `npx claude`.
|
|
37
|
+
* For MVP we assume it's installed globally or accessible.
|
|
38
|
+
*/
|
|
39
|
+
async execute(command, args = [], options = {}) {
|
|
40
|
+
return new Promise((resolve, reject) => {
|
|
41
|
+
// In a real scenario, we might want to sanitize input or map commands
|
|
42
|
+
// from our internal schema to claude-code's CLI schema.
|
|
43
|
+
// For now, we pass through.
|
|
44
|
+
|
|
45
|
+
const cliCmd = 'claude'; // Or 'npx', ['claude', ...args]
|
|
46
|
+
const cliArgs = [command, ...args];
|
|
47
|
+
|
|
48
|
+
const child = spawn(cliCmd, cliArgs, {
|
|
49
|
+
stdio: 'inherit',
|
|
50
|
+
shell: false,
|
|
51
|
+
...options
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
child.on('error', (err) => {
|
|
55
|
+
reject(err);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
child.on('close', (code) => {
|
|
59
|
+
if (code === 0) {
|
|
60
|
+
resolve({ code, msg: 'Success' });
|
|
61
|
+
} else {
|
|
62
|
+
resolve({ code, msg: `Exited with code ${code}` }); // Or reject?
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
get capabilities() {
|
|
69
|
+
// Claude code is powerful, has shell and network usually.
|
|
70
|
+
return ['shell', 'network', 'filesystem'];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
module.exports = ClaudeAdapter;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const AgentAdapter = require('./adapter-interface');
|
|
4
|
+
|
|
5
|
+
class CodexAdapter extends AgentAdapter {
|
|
6
|
+
get priority() {
|
|
7
|
+
for (const key of Object.keys(process.env)) {
|
|
8
|
+
if (key.startsWith('CODEX_')) return 100;
|
|
9
|
+
}
|
|
10
|
+
return 0;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get name() {
|
|
14
|
+
return 'codex';
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
get folder() {
|
|
18
|
+
return '.codex';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async detect() {
|
|
22
|
+
for (const key of Object.keys(process.env)) {
|
|
23
|
+
if (key.startsWith('CODEX_')) return true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const configPath = path.resolve(process.cwd(), this.folder);
|
|
27
|
+
return fs.existsSync(configPath);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async execute(command, args = [], options = {}) {
|
|
31
|
+
console.log(`[CodexAdapter] Executing: ${command} ${args.join(' ')}`);
|
|
32
|
+
return { code: 0, msg: 'Codex executed (simulated)' };
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
get capabilities() {
|
|
36
|
+
return ['code-generation'];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports = CodexAdapter;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime configuration validator using Zod.
|
|
3
|
+
* Ensures adapters.yml conforms to expected schema with secure defaults.
|
|
4
|
+
*/
|
|
5
|
+
const { z } = require('zod');
|
|
6
|
+
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Schema Definition
|
|
9
|
+
// ============================================================================
|
|
10
|
+
|
|
11
|
+
const PoliciesSchema = z.object({
|
|
12
|
+
allow_shell: z.boolean().default(false),
|
|
13
|
+
allow_network: z.boolean().default(false),
|
|
14
|
+
audit_log_path: z.string().optional()
|
|
15
|
+
}).strict();
|
|
16
|
+
|
|
17
|
+
const AdaptersConfigSchema = z.object({
|
|
18
|
+
preferred: z.string().nullable().optional().default(null),
|
|
19
|
+
policies: PoliciesSchema.default({})
|
|
20
|
+
}).strict();
|
|
21
|
+
|
|
22
|
+
const RootConfigSchema = z.object({
|
|
23
|
+
adapters: AdaptersConfigSchema.default({})
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// Validation Functions
|
|
28
|
+
// ============================================================================
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Parse and validate the raw YAML config object.
|
|
32
|
+
* Returns validated config with defaults applied.
|
|
33
|
+
*
|
|
34
|
+
* @param {unknown} rawConfig - Raw parsed YAML object
|
|
35
|
+
* @returns {{ success: true, data: object } | { success: false, error: string }}
|
|
36
|
+
*/
|
|
37
|
+
function validateConfig(rawConfig) {
|
|
38
|
+
const result = RootConfigSchema.safeParse(rawConfig ?? {});
|
|
39
|
+
|
|
40
|
+
if (!result.success) {
|
|
41
|
+
const issues = result.error.issues
|
|
42
|
+
.map(i => ` - ${i.path.join('.')}: ${i.message}`)
|
|
43
|
+
.join('\n');
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
error: `Configuration validation failed:\n${issues}`
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return { success: true, data: result.data };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Get default config when file is missing or empty.
|
|
55
|
+
*
|
|
56
|
+
* @returns {object} Default configuration
|
|
57
|
+
*/
|
|
58
|
+
function getDefaultConfig() {
|
|
59
|
+
return RootConfigSchema.parse({});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
module.exports = {
|
|
63
|
+
validateConfig,
|
|
64
|
+
getDefaultConfig,
|
|
65
|
+
// Export schemas for testing
|
|
66
|
+
AdaptersConfigSchema,
|
|
67
|
+
RootConfigSchema
|
|
68
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural Logger for Adapter System.
|
|
3
|
+
* Outputs JSON format for machine readability and better observability.
|
|
4
|
+
*/
|
|
5
|
+
class Logger {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.enabled = true;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
log(level, message, context = {}) {
|
|
11
|
+
if (!this.enabled) return;
|
|
12
|
+
|
|
13
|
+
const entry = {
|
|
14
|
+
timestamp: new Date().toISOString(),
|
|
15
|
+
level,
|
|
16
|
+
message,
|
|
17
|
+
...context
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
console.log(JSON.stringify(entry));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
info(message, context) {
|
|
24
|
+
this.log('INFO', message, context);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
warn(message, context) {
|
|
28
|
+
this.log('WARN', message, context);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
error(message, context) {
|
|
32
|
+
this.log('ERROR', message, context);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
debug(message, context) {
|
|
36
|
+
if (process.env.DEBUG) {
|
|
37
|
+
this.log('DEBUG', message, context);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
module.exports = new Logger();
|