5-phase-workflow 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -16
- package/bin/install.js +20 -12
- package/docs/findings.md +361 -0
- package/docs/progress.md +102 -0
- package/docs/workflow-guide.md +39 -12
- package/package.json +1 -1
- package/src/commands/5/configure.md +47 -3
- package/src/commands/5/discuss-feature.md +42 -11
- package/src/commands/5/implement-feature.md +168 -457
- package/src/commands/5/plan-feature.md +65 -96
- package/src/commands/5/plan-implementation.md +136 -361
- package/src/commands/5/quick-implement.md +79 -40
- package/src/commands/5/review-code.md +234 -187
- package/src/commands/5/verify-implementation.md +296 -232
- package/src/skills/configure-project/SKILL.md +1 -1
- package/src/templates/workflow/FEATURE-SPEC.md +83 -0
- package/src/templates/workflow/FIX-PLAN.md +55 -0
- package/src/templates/workflow/PLAN.md +30 -0
- package/src/templates/workflow/QUICK-PLAN.md +17 -0
- package/src/templates/workflow/REVIEW-FINDINGS.md +58 -0
- package/src/templates/workflow/REVIEW-SUMMARY.md +35 -0
- package/src/templates/workflow/STATE.json +9 -0
- package/src/templates/workflow/VERIFICATION-REPORT.md +95 -0
- package/src/agents/integration-agent.md +0 -220
- package/src/agents/review-processor.md +0 -161
- package/src/agents/step-executor.md +0 -109
- package/src/agents/step-fixer.md +0 -133
- package/src/agents/step-verifier.md +0 -126
- package/src/agents/verification-agent.md +0 -445
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Feature: {TICKET-ID} - {Title}
|
|
2
|
+
|
|
3
|
+
## Ticket ID
|
|
4
|
+
{TICKET-ID}
|
|
5
|
+
|
|
6
|
+
## Summary
|
|
7
|
+
{1-2 sentence overview of what will be implemented}
|
|
8
|
+
|
|
9
|
+
## Problem Statement
|
|
10
|
+
{Why is this feature needed? What problem does it solve?}
|
|
11
|
+
|
|
12
|
+
## Requirements
|
|
13
|
+
|
|
14
|
+
### Functional Requirements
|
|
15
|
+
- {Requirement 1}
|
|
16
|
+
- {Requirement 2}
|
|
17
|
+
- ...
|
|
18
|
+
|
|
19
|
+
### Non-Functional Requirements
|
|
20
|
+
- {Performance requirements}
|
|
21
|
+
- {Compatibility requirements}
|
|
22
|
+
- ...
|
|
23
|
+
|
|
24
|
+
## Constraints
|
|
25
|
+
- {Business constraints}
|
|
26
|
+
- {Technical constraints}
|
|
27
|
+
- {Time/resource constraints}
|
|
28
|
+
|
|
29
|
+
## Affected Components
|
|
30
|
+
- **{component/module-1}** - {What changes here}
|
|
31
|
+
- **{component/module-2}** - {What changes here}
|
|
32
|
+
- **{component/module-3}** - {What changes here}
|
|
33
|
+
- ...
|
|
34
|
+
|
|
35
|
+
## Entity/Component Definitions
|
|
36
|
+
|
|
37
|
+
### {EntityName} (if applicable)
|
|
38
|
+
| Field | Type | Required | Description |
|
|
39
|
+
|-------|------|----------|-------------|
|
|
40
|
+
| id | {Entity}Id | Yes | Unique identifier |
|
|
41
|
+
| name | String | Yes | Entity name |
|
|
42
|
+
| ... | ... | ... | ... |
|
|
43
|
+
|
|
44
|
+
### Business Rules
|
|
45
|
+
- {Rule 1}
|
|
46
|
+
- {Rule 2}
|
|
47
|
+
- ...
|
|
48
|
+
|
|
49
|
+
## Acceptance Criteria
|
|
50
|
+
- [ ] {Criterion 1 - how to verify success}
|
|
51
|
+
- [ ] {Criterion 2}
|
|
52
|
+
- [ ] {Criterion 3}
|
|
53
|
+
- ...
|
|
54
|
+
|
|
55
|
+
## Alternatives Considered
|
|
56
|
+
|
|
57
|
+
### Option 1: {Alternative approach}
|
|
58
|
+
**Pros:** {Benefits}
|
|
59
|
+
**Cons:** {Drawbacks}
|
|
60
|
+
**Decision:** Rejected because {reason}
|
|
61
|
+
|
|
62
|
+
### Option 2: {Another alternative}
|
|
63
|
+
**Pros:** {Benefits}
|
|
64
|
+
**Cons:** {Drawbacks}
|
|
65
|
+
**Decision:** Rejected because {reason}
|
|
66
|
+
|
|
67
|
+
### Chosen Approach: {Selected approach}
|
|
68
|
+
**Rationale:** {Why this approach was chosen}
|
|
69
|
+
|
|
70
|
+
## Questions & Answers
|
|
71
|
+
|
|
72
|
+
### Q1: {Question from collaboration phase}
|
|
73
|
+
**A:** {Answer from developer}
|
|
74
|
+
|
|
75
|
+
### Q2: {Question}
|
|
76
|
+
**A:** {Answer}
|
|
77
|
+
|
|
78
|
+
...
|
|
79
|
+
|
|
80
|
+
## Next Steps
|
|
81
|
+
After approval:
|
|
82
|
+
1. Run `/clear` to reset context
|
|
83
|
+
2. Run `/5:plan-implementation {TICKET-ID}-{description}`
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Fix Plan: {TICKET-ID}
|
|
2
|
+
|
|
3
|
+
**Feature:** {feature-name}
|
|
4
|
+
**Generated:** {timestamp}
|
|
5
|
+
**Verification Status:** PARTIAL | FAILED
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Infrastructure Fixes
|
|
10
|
+
|
|
11
|
+
{If no infrastructure issues: "No infrastructure issues found."}
|
|
12
|
+
|
|
13
|
+
| # | File | Issue | Fix | Complexity |
|
|
14
|
+
|---|------|-------|-----|------------|
|
|
15
|
+
| 1 | {path} | {description} | {what to do} | simple / moderate / complex |
|
|
16
|
+
|
|
17
|
+
## Feature Gap Fixes
|
|
18
|
+
|
|
19
|
+
{If no feature gaps or Layer 2 was skipped: "No feature gaps found." or "Skipped — no feature.md available."}
|
|
20
|
+
|
|
21
|
+
| # | File | Issue | Fix | Complexity |
|
|
22
|
+
|---|------|-------|-----|------------|
|
|
23
|
+
| 1 | {path} | {criterion or requirement not met} | {what to change} | simple / moderate / complex |
|
|
24
|
+
|
|
25
|
+
## Quality Fixes
|
|
26
|
+
|
|
27
|
+
{If no quality issues: "No quality issues found."}
|
|
28
|
+
|
|
29
|
+
| # | File | Issue | Fix | Complexity |
|
|
30
|
+
|---|------|-------|-----|------------|
|
|
31
|
+
| 1 | {test-file-path} | No test file for {component} | Create test file | simple / moderate |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Summary
|
|
36
|
+
|
|
37
|
+
| Category | Count |
|
|
38
|
+
|----------|-------|
|
|
39
|
+
| Infrastructure | {N} |
|
|
40
|
+
| Feature Gaps | {N} |
|
|
41
|
+
| Quality | {N} |
|
|
42
|
+
| **Total** | **{N}** |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Results
|
|
47
|
+
|
|
48
|
+
{Populated after fixes are applied}
|
|
49
|
+
|
|
50
|
+
| # | File | Fix | Status |
|
|
51
|
+
|---|------|----|--------|
|
|
52
|
+
| 1 | {path} | {description} | APPLIED / FAILED |
|
|
53
|
+
|
|
54
|
+
**Build after fixes:** {status}
|
|
55
|
+
**Tests after fixes:** {status}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
ticket: {TICKET-ID}
|
|
3
|
+
feature: {feature-name}
|
|
4
|
+
created: {ISO-timestamp}
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Implementation Plan: {TICKET-ID}
|
|
8
|
+
|
|
9
|
+
{One sentence summary of what this plan builds}
|
|
10
|
+
|
|
11
|
+
## Components
|
|
12
|
+
|
|
13
|
+
| Step | Component | Action | File | Description | Complexity |
|
|
14
|
+
|------|-----------|--------|------|-------------|------------|
|
|
15
|
+
| 1 | {name} | create | {path} | {what it does} | simple |
|
|
16
|
+
| 1 | {name} | create | {path} | {what it does} | simple |
|
|
17
|
+
| 2 | {name} | create | {path} | {what it does} | moderate |
|
|
18
|
+
| 2 | {name} | modify | {path} | {what to change} | moderate |
|
|
19
|
+
| 3 | {name} | create | {path} | {what it does} | complex |
|
|
20
|
+
|
|
21
|
+
## Implementation Notes
|
|
22
|
+
|
|
23
|
+
- Follow the pattern from {existing-file} for {component-type}
|
|
24
|
+
- {Key business rule to remember}
|
|
25
|
+
- {Integration point to wire up}
|
|
26
|
+
|
|
27
|
+
## Verification
|
|
28
|
+
|
|
29
|
+
- Build: {command or "auto"}
|
|
30
|
+
- Test: {command or "auto"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Quick Implementation: {TICKET-ID}
|
|
2
|
+
|
|
3
|
+
## Task
|
|
4
|
+
{DESCRIPTION}
|
|
5
|
+
|
|
6
|
+
## Components
|
|
7
|
+
|
|
8
|
+
| # | Type | Name | Skill | Module |
|
|
9
|
+
|---|------|------|-------|--------|
|
|
10
|
+
| 1 | {type} | {name} | {skill} | {module} |
|
|
11
|
+
|
|
12
|
+
## Affected Modules
|
|
13
|
+
- {module-1}
|
|
14
|
+
- {module-2}
|
|
15
|
+
|
|
16
|
+
## Execution
|
|
17
|
+
{parallel | sequential | direct}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Code Review Findings
|
|
2
|
+
|
|
3
|
+
**Generated:** {ISO-timestamp}
|
|
4
|
+
**Scope:** {what was reviewed}
|
|
5
|
+
**Total Findings:** {N}
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## How to Use This File
|
|
10
|
+
|
|
11
|
+
1. Review each finding below
|
|
12
|
+
2. For each finding, choose an action:
|
|
13
|
+
- `[FIX]` - Apply this fix automatically (leave as-is)
|
|
14
|
+
- `[SKIP]` - Don't apply this fix (change FIX to SKIP)
|
|
15
|
+
- `[MANUAL]` - Custom instructions (change FIX to MANUAL and add instructions)
|
|
16
|
+
3. Save this file
|
|
17
|
+
4. Run: `/review-code apply`
|
|
18
|
+
|
|
19
|
+
The apply command will read your annotations and apply marked fixes.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Finding {N}/{total}
|
|
24
|
+
|
|
25
|
+
**File:** {file-path}
|
|
26
|
+
**Line:** {line-number}
|
|
27
|
+
**Category:** {Fixable|Question|Manual}
|
|
28
|
+
**Severity:** {error|warning|suggestion}
|
|
29
|
+
|
|
30
|
+
**Description:**
|
|
31
|
+
{what the reviewer found}
|
|
32
|
+
|
|
33
|
+
**Suggested Fix:**
|
|
34
|
+
{how to fix it - can be multi-line}
|
|
35
|
+
|
|
36
|
+
**Original Reviewer Message:**
|
|
37
|
+
```
|
|
38
|
+
{raw output from reviewer}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Action:** [FIX]
|
|
42
|
+
|
|
43
|
+
**Custom Instructions:** (only if you selected [MANUAL])
|
|
44
|
+
<!-- Add detailed instructions here if you want a custom fix -->
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Summary
|
|
50
|
+
|
|
51
|
+
- Total: {N}
|
|
52
|
+
- Fixable: {N}
|
|
53
|
+
- Questions: {N}
|
|
54
|
+
- Manual Review: {N}
|
|
55
|
+
|
|
56
|
+
**Next Steps:**
|
|
57
|
+
1. Edit this file to mark which findings to fix
|
|
58
|
+
2. Run: `/review-code apply`
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Code Review Summary
|
|
2
|
+
|
|
3
|
+
**Reviewed:** {scope}
|
|
4
|
+
**Timestamp:** {ISO-timestamp}
|
|
5
|
+
**User Decisions:** {summary of user choices}
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
- **Total Issues:** {N}
|
|
10
|
+
- **Applied with User Approval:** {N}
|
|
11
|
+
- **User-Resolved Questions:** {N}
|
|
12
|
+
- **Manual Review Needed:** {N}
|
|
13
|
+
- **Skipped by User:** {N}
|
|
14
|
+
|
|
15
|
+
## Applied Fixes (User Approved)
|
|
16
|
+
|
|
17
|
+
- `{file-path}:{line}` - {description of fix}
|
|
18
|
+
- `{file-path}:{line}` - {description of fix}
|
|
19
|
+
|
|
20
|
+
## User-Resolved Questions
|
|
21
|
+
|
|
22
|
+
- `{file-path}:{line}` - {description} (user answered: {answer})
|
|
23
|
+
|
|
24
|
+
## Manual Review Needed
|
|
25
|
+
|
|
26
|
+
- `{file-path}:{line}` - {description}
|
|
27
|
+
|
|
28
|
+
## Skipped Issues
|
|
29
|
+
|
|
30
|
+
- `{file-path}:{line}` - User chose not to apply
|
|
31
|
+
|
|
32
|
+
## Files Modified
|
|
33
|
+
|
|
34
|
+
- {file-path} ({N} fixes applied)
|
|
35
|
+
- {file-path} ({N} fixes applied)
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Verification Report: {TICKET-ID}
|
|
2
|
+
|
|
3
|
+
**Feature:** {feature-name}
|
|
4
|
+
**Status:** PASSED | PARTIAL | FAILED
|
|
5
|
+
**Verified:** {timestamp}
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Layer 1: Infrastructure
|
|
10
|
+
|
|
11
|
+
### Files
|
|
12
|
+
|
|
13
|
+
- [x] {path} — exists
|
|
14
|
+
- [ ] {path} — MISSING
|
|
15
|
+
|
|
16
|
+
**Result:** {N}/{M} files exist
|
|
17
|
+
|
|
18
|
+
### Build
|
|
19
|
+
|
|
20
|
+
**Command:** `{build-command}`
|
|
21
|
+
**Status:** SUCCESS | FAILED
|
|
22
|
+
|
|
23
|
+
{build errors if any}
|
|
24
|
+
|
|
25
|
+
### Tests
|
|
26
|
+
|
|
27
|
+
**Command:** `{test-command}`
|
|
28
|
+
**Status:** SUCCESS | FAILED
|
|
29
|
+
**Total:** {N} | **Passed:** {N} | **Failed:** {N}
|
|
30
|
+
|
|
31
|
+
{test failure details if any}
|
|
32
|
+
|
|
33
|
+
**Layer 1 Result:** PASSED | FAILED
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Layer 2: Feature Completeness
|
|
38
|
+
|
|
39
|
+
{If feature.md was not found: "Skipped — no feature.md available (normal for quick-implement workflows)"}
|
|
40
|
+
|
|
41
|
+
### Acceptance Criteria
|
|
42
|
+
|
|
43
|
+
| # | Criterion | Status | Evidence |
|
|
44
|
+
|---|-----------|--------|----------|
|
|
45
|
+
| 1 | {criterion text} | SATISFIED | {file:line} |
|
|
46
|
+
| 2 | {criterion text} | NOT SATISFIED | — |
|
|
47
|
+
|
|
48
|
+
**Result:** {N}/{M} criteria satisfied
|
|
49
|
+
|
|
50
|
+
### Functional Requirements
|
|
51
|
+
|
|
52
|
+
| # | Requirement | Status | Evidence |
|
|
53
|
+
|---|-------------|--------|----------|
|
|
54
|
+
| 1 | {requirement text} | IMPLEMENTED | {file:line} |
|
|
55
|
+
| 2 | {requirement text} | NOT IMPLEMENTED | — |
|
|
56
|
+
|
|
57
|
+
**Result:** {N}/{M} requirements implemented
|
|
58
|
+
|
|
59
|
+
### Component Completeness
|
|
60
|
+
|
|
61
|
+
| Component | File | Status | Notes |
|
|
62
|
+
|-----------|------|--------|-------|
|
|
63
|
+
| {name} | {path} | COMPLETE | — |
|
|
64
|
+
| {name} | {path} | PARTIAL | {what's missing} |
|
|
65
|
+
|
|
66
|
+
**Result:** {N}/{M} components complete
|
|
67
|
+
|
|
68
|
+
**Layer 2 Result:** PASSED | PARTIAL | SKIPPED
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Layer 3: Quality
|
|
73
|
+
|
|
74
|
+
### Test Coverage for New Files
|
|
75
|
+
|
|
76
|
+
| New File | Test File | Status |
|
|
77
|
+
|----------|-----------|--------|
|
|
78
|
+
| {src/path/File.ts} | {src/path/File.test.ts} | HAS TEST |
|
|
79
|
+
| {src/path/Other.ts} | — | NO TEST |
|
|
80
|
+
|
|
81
|
+
**Result:** {N}/{M} new files have tests
|
|
82
|
+
|
|
83
|
+
**Layer 3 Result:** PASSED | PARTIAL
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Summary
|
|
88
|
+
|
|
89
|
+
| Layer | Result | Details |
|
|
90
|
+
|-------|--------|---------|
|
|
91
|
+
| Infrastructure | PASSED / FAILED | {N}/{M} files, build {status}, tests {status} |
|
|
92
|
+
| Feature Completeness | PASSED / PARTIAL / SKIPPED | {N}/{M} criteria, {N}/{M} requirements |
|
|
93
|
+
| Quality | PASSED / PARTIAL | {N}/{M} new files have tests |
|
|
94
|
+
|
|
95
|
+
**Overall:** PASSED | PARTIAL | FAILED
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: integration-agent
|
|
3
|
-
description: Integrates new components into the application by following existing project patterns. Wires components, registers endpoints/routes, and runs final build and tests. Runs in forked context.
|
|
4
|
-
tools: Read, Edit, Bash, Glob, Grep, Skill, mcp__jetbrains__get_file_problems, mcp__jetbrains__rename_refactoring
|
|
5
|
-
model: sonnet
|
|
6
|
-
color: blue
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Integration Agent
|
|
10
|
-
|
|
11
|
-
## Purpose
|
|
12
|
-
|
|
13
|
-
Handles the integration step - wiring new components into the application by discovering and following existing project patterns. Registers routes/endpoints, wires dependencies, and runs final build and tests. Spawned by `implement-feature` command via the Task tool.
|
|
14
|
-
|
|
15
|
-
## Input Contract
|
|
16
|
-
|
|
17
|
-
The spawning command provides:
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
Feature Name: {feature-name}
|
|
21
|
-
Components to Wire:
|
|
22
|
-
- component: {ComponentName}
|
|
23
|
-
type: {component-type}
|
|
24
|
-
file: {path/to/component}
|
|
25
|
-
integration: {where it needs to be registered}
|
|
26
|
-
Routes/Endpoints to Register:
|
|
27
|
-
- route: {RouteName}
|
|
28
|
-
path: {/path}
|
|
29
|
-
file: {path/to/route-file}
|
|
30
|
-
registration: {where routes are registered}
|
|
31
|
-
Integration Config:
|
|
32
|
-
Read from: .claude/.5/config.json
|
|
33
|
-
Patterns: {how components are typically integrated in this project}
|
|
34
|
-
Affected Modules:
|
|
35
|
-
- {module-path-1}
|
|
36
|
-
- {module-path-2}
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Process
|
|
40
|
-
|
|
41
|
-
### 1. Discover Integration Patterns
|
|
42
|
-
|
|
43
|
-
First, understand how the project integrates components:
|
|
44
|
-
|
|
45
|
-
1. **Read integration config** from `.claude/.5/config.json`:
|
|
46
|
-
- Where are routes/endpoints registered?
|
|
47
|
-
- How are services/components wired?
|
|
48
|
-
- What files need to be updated?
|
|
49
|
-
|
|
50
|
-
2. **Explore existing patterns** if config is incomplete:
|
|
51
|
-
- Use Grep to find similar component registrations
|
|
52
|
-
- Read files where integration happens
|
|
53
|
-
- Identify the pattern used
|
|
54
|
-
|
|
55
|
-
**Example patterns by framework:**
|
|
56
|
-
- **Express.js**: Routes registered in `app.ts` or `routes/index.ts`
|
|
57
|
-
- **Next.js**: API routes are file-based in `pages/api/` or `app/api/`
|
|
58
|
-
- **NestJS**: Modules imported in `app.module.ts`
|
|
59
|
-
- **Spring Boot**: Components auto-discovered via annotations
|
|
60
|
-
- **FastAPI**: Routes registered in main app file
|
|
61
|
-
- **Rails**: Routes in `config/routes.rb`
|
|
62
|
-
|
|
63
|
-
### 2. Integrate Components
|
|
64
|
-
|
|
65
|
-
For each component that needs integration:
|
|
66
|
-
|
|
67
|
-
1. **Read the integration point file** (e.g., main app file, router file, module file)
|
|
68
|
-
2. **Identify the existing pattern** by examining similar registrations
|
|
69
|
-
3. **Add the new component** following the exact same pattern
|
|
70
|
-
|
|
71
|
-
**Use Edit tool for precise insertions:**
|
|
72
|
-
- Add import/require statements for new components
|
|
73
|
-
- Add registration code following project conventions
|
|
74
|
-
- Match existing code style (indentation, ordering, grouping)
|
|
75
|
-
|
|
76
|
-
**Examples:**
|
|
77
|
-
|
|
78
|
-
**Express.js pattern:**
|
|
79
|
-
```javascript
|
|
80
|
-
// Add import
|
|
81
|
-
import { userRoutes } from './routes/user.routes';
|
|
82
|
-
|
|
83
|
-
// Add route registration
|
|
84
|
-
app.use('/api/users', userRoutes);
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**NestJS pattern:**
|
|
88
|
-
```typescript
|
|
89
|
-
// Add import
|
|
90
|
-
import { UserModule } from './user/user.module';
|
|
91
|
-
|
|
92
|
-
// Add to imports array
|
|
93
|
-
@Module({
|
|
94
|
-
imports: [UserModule, ...],
|
|
95
|
-
})
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
**FastAPI pattern:**
|
|
99
|
-
```python
|
|
100
|
-
# Add import
|
|
101
|
-
from routers import user_router
|
|
102
|
-
|
|
103
|
-
# Add route registration
|
|
104
|
-
app.include_router(user_router, prefix="/api/users")
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### 3. Register Routes/Endpoints
|
|
108
|
-
|
|
109
|
-
For each route/endpoint:
|
|
110
|
-
|
|
111
|
-
1. **Read the routing configuration file** (specified in config or discovered)
|
|
112
|
-
2. **Follow the existing pattern** for route registration
|
|
113
|
-
3. **Add the new routes** maintaining consistency with existing routes
|
|
114
|
-
|
|
115
|
-
### 4. Run Full Build
|
|
116
|
-
|
|
117
|
-
Run the project build using the configured build skill or command:
|
|
118
|
-
|
|
119
|
-
**If build skill is available:**
|
|
120
|
-
```
|
|
121
|
-
Skill tool call:
|
|
122
|
-
skill: "build-project"
|
|
123
|
-
args: "target=compile"
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
**If no build skill, use config command:**
|
|
127
|
-
```bash
|
|
128
|
-
{config.build.command from .claude/.5/config.json}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Parse the output to extract:
|
|
132
|
-
- Build status (success/failed)
|
|
133
|
-
- Error details if build fails
|
|
134
|
-
- Duration
|
|
135
|
-
|
|
136
|
-
### 5. Run Tests
|
|
137
|
-
|
|
138
|
-
Execute tests using the configured test skill or command:
|
|
139
|
-
|
|
140
|
-
**If test skill is available:**
|
|
141
|
-
```
|
|
142
|
-
Skill tool call:
|
|
143
|
-
skill: "run-tests"
|
|
144
|
-
args: "target=all"
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
**If no test skill, use config command:**
|
|
148
|
-
```bash
|
|
149
|
-
{config.build.testCommand from .claude/.5/config.json}
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
Parse the output to extract:
|
|
153
|
-
- Total tests
|
|
154
|
-
- Passed
|
|
155
|
-
- Failed
|
|
156
|
-
- Skipped
|
|
157
|
-
- Error details for failures
|
|
158
|
-
|
|
159
|
-
## Output Contract
|
|
160
|
-
|
|
161
|
-
Return a structured result:
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
Integration Results:
|
|
165
|
-
Status: success | failed
|
|
166
|
-
|
|
167
|
-
Component Integration:
|
|
168
|
-
- component: {ComponentName}
|
|
169
|
-
file: {integration file path}
|
|
170
|
-
status: integrated | failed
|
|
171
|
-
error: {if failed}
|
|
172
|
-
|
|
173
|
-
Route Registration:
|
|
174
|
-
- route: {RouteName}
|
|
175
|
-
file: {routing file path}
|
|
176
|
-
status: registered | failed
|
|
177
|
-
error: {if failed}
|
|
178
|
-
|
|
179
|
-
Build:
|
|
180
|
-
status: success | failed
|
|
181
|
-
errors: |
|
|
182
|
-
{error output if failed}
|
|
183
|
-
|
|
184
|
-
Tests:
|
|
185
|
-
status: passed | failed
|
|
186
|
-
total: {N}
|
|
187
|
-
passed: {N}
|
|
188
|
-
failed: {N}
|
|
189
|
-
skipped: {N}
|
|
190
|
-
failures:
|
|
191
|
-
- test: {testName}
|
|
192
|
-
error: {error message}
|
|
193
|
-
|
|
194
|
-
Modified Files:
|
|
195
|
-
- {path/to/modified/file1}
|
|
196
|
-
- {path/to/modified/file2}
|
|
197
|
-
|
|
198
|
-
File Problems:
|
|
199
|
-
- file: {path}
|
|
200
|
-
errors: [{message}]
|
|
201
|
-
warnings: [{message}]
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
## Error Handling
|
|
205
|
-
|
|
206
|
-
- If integration pattern cannot be identified, return failed with descriptive error
|
|
207
|
-
- If build fails after integration, include full error output for diagnosis
|
|
208
|
-
- If tests fail, include test names and error details
|
|
209
|
-
- Do not attempt to fix errors - return them for the parent command to handle
|
|
210
|
-
- If no integration is needed (e.g., file-based routing like Next.js), note this and proceed to build/test
|
|
211
|
-
|
|
212
|
-
## DO NOT
|
|
213
|
-
|
|
214
|
-
- DO NOT create new files (only modify existing integration points)
|
|
215
|
-
- DO NOT update the state file (parent handles state)
|
|
216
|
-
- DO NOT interact with the user (parent handles user interaction)
|
|
217
|
-
- DO NOT guess at patterns - read config and existing code to match patterns exactly
|
|
218
|
-
- DO NOT skip build or test steps (unless config explicitly disables them)
|
|
219
|
-
- DO NOT modify files beyond what is needed for integration
|
|
220
|
-
- DO NOT assume a specific framework - detect from config and codebase
|