5-phase-workflow 1.8.5 → 1.8.7
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 +17 -0
- package/bin/install.js +6 -7
- package/docs/workflow-guide.md +1 -1
- package/package.json +1 -1
- package/src/commands/5/address-review-findings.md +2 -2
- package/src/commands/5/configure.md +22 -24
- package/src/commands/5/eject.md +91 -0
- package/src/commands/5/plan-feature.md +24 -22
- package/src/commands/5/reconfigure.md +11 -9
- package/src/hooks/plan-guard.js +41 -2
- package/src/hooks/statusline.js +80 -41
- package/src/skills/configure-project/SKILL.md +34 -85
- package/src/skills/generate-readme/SKILL.md +1 -2
- package/src/templates/ARCHITECTURE.md +16 -47
- package/src/templates/CONCERNS.md +12 -54
- package/src/templates/TESTING.md +12 -95
- package/src/skills/build-project/SKILL.md +0 -151
- package/src/skills/run-tests/SKILL.md +0 -162
- package/src/templates/CONVENTIONS.md +0 -75
- package/src/templates/INTEGRATIONS.md +0 -65
- package/src/templates/STACK.md +0 -60
- package/src/templates/STRUCTURE.md +0 -60
|
@@ -49,97 +49,48 @@ In both modes, the analysis and generation logic is identical — only where the
|
|
|
49
49
|
|
|
50
50
|
**Process:**
|
|
51
51
|
|
|
52
|
-
### A1.
|
|
52
|
+
### A1. Codebase Analysis
|
|
53
53
|
|
|
54
|
-
Perform
|
|
55
|
-
|
|
56
|
-
**Structure Analysis** (for STRUCTURE.md):
|
|
57
|
-
- Use Glob to map directory tree: `**/*` (with depth limits to avoid overwhelming results)
|
|
58
|
-
- Identify source directories (`src/`, `lib/`, `app/`, etc.)
|
|
59
|
-
- Identify test directories and their organization
|
|
60
|
-
- Identify configuration directories
|
|
61
|
-
- Determine file naming conventions (camelCase, kebab-case, PascalCase)
|
|
62
|
-
- Locate key files (entry points, configurations)
|
|
63
|
-
|
|
64
|
-
**Stack Analysis** (for STACK.md):
|
|
65
|
-
- Read package manifests: `package.json`, `Cargo.toml`, `go.mod`, `pom.xml`, `requirements.txt`, `Gemfile`
|
|
66
|
-
- Extract: language, version, runtime, package manager
|
|
67
|
-
- Identify frameworks in dependencies (React, Express, Django, Rails, etc.)
|
|
68
|
-
- List critical dependencies and their versions
|
|
69
|
-
- Find config files: `tsconfig.json`, `.eslintrc`, etc.
|
|
54
|
+
Perform focused analysis to gather data for documentation templates. Only capture information that **cannot be derived** by reading project files directly — skip version numbers, dependency lists, directory layouts, linter configs, and other facts that Claude Code can look up on demand.
|
|
70
55
|
|
|
71
56
|
**Architecture Analysis** (for ARCHITECTURE.md):
|
|
72
57
|
- Identify architectural pattern (MVC, layered, modular, microservices) from directory structure
|
|
73
58
|
- Map layers by directory structure (controllers/, services/, models/, routes/, etc.)
|
|
74
59
|
- Trace data flow patterns (read 2-3 example files from different layers)
|
|
75
60
|
- Identify key abstractions (interfaces, base classes, common patterns)
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
|
|
79
|
-
**Conventions Analysis** (for CONVENTIONS.md):
|
|
80
|
-
- Sample 5-10 files from main source directory
|
|
81
|
-
- Extract naming patterns: files, functions, variables, types/classes
|
|
82
|
-
- Find formatters/linters: `.prettierrc`, `.eslintrc`, `black.toml`, `.rubocop.yml`
|
|
83
|
-
- Identify import organization patterns (order, grouping, aliases)
|
|
84
|
-
- Determine logging approach (console, winston, log4j, etc.)
|
|
85
|
-
- Check comment/documentation patterns (JSDoc, Javadoc, etc.)
|
|
61
|
+
- Identify non-obvious conventions: implicit rules not enforced by tooling (e.g., "all services extend BaseService", "barrel exports required per module"). Skip anything in .eslintrc, .prettierrc, tsconfig, etc.
|
|
62
|
+
- Determine where new code should go (new features, tests, utilities)
|
|
86
63
|
|
|
87
64
|
**Testing Analysis** (for TESTING.md):
|
|
88
|
-
- Find test files: `**/*.test.{ts,js}`, `**/*.spec.{ts,js}`, `**/*_test.go`, `test_*.py`, `*_spec.rb`
|
|
89
|
-
- Read test config: `jest.config.js`, `vitest.config.ts`, `pytest.ini`, `spec/spec_helper.rb`
|
|
90
65
|
- Determine test organization (co-located vs separate `test/` or `spec/`)
|
|
91
|
-
-
|
|
92
|
-
- Identify mocking framework (jest.mock, sinon, pytest-mock, etc.)
|
|
66
|
+
- Identify mocking framework and project-specific mocking conventions
|
|
93
67
|
- Find fixture/factory patterns
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
**Integration Analysis** (for INTEGRATIONS.md):
|
|
97
|
-
- Scan dependencies for SDK packages (axios, @aws-sdk, stripe, @google-cloud, etc.)
|
|
98
|
-
- Identify database clients/ORMs (prisma, mongoose, sqlalchemy, activerecord, etc.)
|
|
99
|
-
- Find auth providers (passport, next-auth, devise, etc.)
|
|
100
|
-
- Detect monitoring/logging services (datadog, sentry, newrelic)
|
|
101
|
-
- Read CI/CD config: `.github/workflows/`, `.gitlab-ci.yml`, `.circleci/config.yml`
|
|
102
|
-
- Grep for environment variables: `process.env`, `os.getenv`, `ENV[`, etc.
|
|
68
|
+
- Note gotchas: setup/teardown quirks, env requirements, flaky areas
|
|
103
69
|
|
|
104
|
-
**Concerns Analysis** (for CONCERNS.md):
|
|
70
|
+
**Concerns Analysis** (for CONCERNS.md — conditional):
|
|
105
71
|
- Grep for TODO/FIXME/HACK/XXX/DEPRECATED comments across all code
|
|
106
72
|
- Check for common security issues (SQL injection patterns, XSS vulnerabilities)
|
|
107
|
-
- Identify
|
|
108
|
-
- Look for
|
|
73
|
+
- Identify non-obvious integration details: auth flows, required env vars not documented elsewhere, webhook contracts, gotchas with external services
|
|
74
|
+
- Look for performance bottlenecks or scaling limits mentioned in comments/docs
|
|
109
75
|
|
|
110
76
|
### A2. Fill Templates
|
|
111
77
|
|
|
112
|
-
For each template in
|
|
78
|
+
For each template in `.claude/templates/`:
|
|
113
79
|
|
|
114
80
|
1. Read template content with Read tool
|
|
115
|
-
2. Replace placeholders with analyzed data
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
3. Handle missing data gracefully: mark sections as "Not detected" or "None found" rather than omitting
|
|
81
|
+
2. Replace placeholders with analyzed data from A1
|
|
82
|
+
3. **Omit sections entirely if no data was found** — do not write "Not detected" or "None found"
|
|
83
|
+
4. For CONCERNS.md: if ALL sections would be empty, **do not create the file at all**
|
|
119
84
|
|
|
120
85
|
**Placeholder mapping examples**:
|
|
121
86
|
|
|
122
87
|
ARCHITECTURE.md:
|
|
123
88
|
- `{Pattern name}` → "Layered Architecture" or "MVC" or "Modular Monolith"
|
|
124
|
-
- `{Layer
|
|
89
|
+
- `{Layer}` → "Controllers", "Services", "Repositories"
|
|
125
90
|
- `{path}` → "src/controllers/", "src/services/"
|
|
126
91
|
|
|
127
|
-
STACK.md:
|
|
128
|
-
- `{Language} {Version}` → "TypeScript 5.3.3", "Python 3.11"
|
|
129
|
-
- `{Framework} {Version}` → "Express 4.18.2", "Django 4.2"
|
|
130
|
-
- `{Package} {Version}` → "axios 1.6.0"
|
|
131
|
-
|
|
132
|
-
CONVENTIONS.md:
|
|
133
|
-
- `{Pattern observed}` → "PascalCase for classes, camelCase for functions"
|
|
134
|
-
- `{Tool used}` → "Prettier with 2-space indent"
|
|
135
|
-
|
|
136
92
|
TESTING.md:
|
|
137
|
-
-
|
|
138
|
-
- `{command}` → "npm test", "pytest"
|
|
139
|
-
|
|
140
|
-
INTEGRATIONS.md:
|
|
141
|
-
- `{Service}` → "PostgreSQL", "Stripe API"
|
|
142
|
-
- `{package}` → "@stripe/stripe-js"
|
|
93
|
+
- Describe actual patterns observed, not framework names/versions (those are in config files)
|
|
143
94
|
|
|
144
95
|
CONCERNS.md:
|
|
145
96
|
- `{file paths}` → Actual file paths from grep results
|
|
@@ -149,25 +100,27 @@ CONCERNS.md:
|
|
|
149
100
|
Write filled templates to `.5/` folder:
|
|
150
101
|
|
|
151
102
|
1. Ensure `.5/` directory exists: `mkdir -p .5`
|
|
152
|
-
2. Write
|
|
153
|
-
- `.5/ARCHITECTURE.md`
|
|
154
|
-
- `.5/
|
|
155
|
-
- `.5/
|
|
156
|
-
- `.5/CONVENTIONS.md`
|
|
157
|
-
- `.5/TESTING.md`
|
|
158
|
-
- `.5/INTEGRATIONS.md`
|
|
159
|
-
- `.5/CONCERNS.md`
|
|
103
|
+
2. Write filled templates:
|
|
104
|
+
- `.5/ARCHITECTURE.md` — always created
|
|
105
|
+
- `.5/TESTING.md` — always created
|
|
106
|
+
- `.5/CONCERNS.md` — **only if concerns were found** (skip if all sections empty)
|
|
160
107
|
|
|
161
|
-
### A4. Create
|
|
108
|
+
### A4. Create CLAUDE.md
|
|
162
109
|
|
|
163
|
-
Generate CLAUDE.md
|
|
110
|
+
Generate CLAUDE.md:
|
|
164
111
|
|
|
165
112
|
CLAUDE.md structure:
|
|
166
|
-
- **
|
|
167
|
-
- **Project Overview:** 1-2 paragraphs from README/package.json
|
|
113
|
+
- **Project Overview:** 1-2 sentences from README/package.json
|
|
168
114
|
- **Build & Run Commands:** Build, test, and other detected commands
|
|
115
|
+
- **Workflow Rules:** Include this section verbatim:
|
|
116
|
+
```
|
|
117
|
+
## Workflow Rules
|
|
118
|
+
When running `/5:` workflow commands, follow the command instructions exactly as written.
|
|
119
|
+
Do not skip steps, combine phases, or proceed to actions not specified in the current command.
|
|
120
|
+
Each phase produces a specific artifact — do not create artifacts belonging to other phases.
|
|
121
|
+
```
|
|
169
122
|
- **Coding Guidelines:** The 6 mandatory principles (types, concise docs, short files, extract methods, SRP/DRY, maintainable/modular)
|
|
170
|
-
- **
|
|
123
|
+
- **Project Documentation:** Links to whichever `.5/` files were created (only list files that exist)
|
|
171
124
|
|
|
172
125
|
### A5. Preserve Existing Content
|
|
173
126
|
|
|
@@ -423,15 +376,11 @@ When running in REFRESH MODE:
|
|
|
423
376
|
Returns structured results for each component:
|
|
424
377
|
|
|
425
378
|
```
|
|
426
|
-
Component A (Documentation): SUCCESS - Created
|
|
379
|
+
Component A (Documentation): SUCCESS - Created documentation files + CLAUDE.md
|
|
427
380
|
- .5/ARCHITECTURE.md (Pattern: Layered, 4 layers identified)
|
|
428
|
-
- .5/
|
|
429
|
-
- .5/
|
|
430
|
-
- .
|
|
431
|
-
- .5/TESTING.md (Jest framework, 45 test files)
|
|
432
|
-
- .5/INTEGRATIONS.md (PostgreSQL, 2 APIs, GitHub Actions)
|
|
433
|
-
- .5/CONCERNS.md (3 TODO items, 1 deprecated dependency)
|
|
434
|
-
- CLAUDE.md (index with references)
|
|
381
|
+
- .5/TESTING.md (mocking patterns, gotchas documented)
|
|
382
|
+
- .5/CONCERNS.md (3 TODO items, 1 security note) [or "skipped — no concerns found"]
|
|
383
|
+
- CLAUDE.md (updated with references)
|
|
435
384
|
Component B (Pattern Skills): SUCCESS - Generated 3 create-* skills (create-component, create-hook, create-context)
|
|
436
385
|
Component C (Command Skills): SUCCESS - Generated 2 run-* skills (run-tests, run-lint)
|
|
437
386
|
Component D (Rules): SUCCESS - Generated 3 rule files (code-style, testing, dependencies)
|
|
@@ -76,8 +76,7 @@ Check for:
|
|
|
76
76
|
|
|
77
77
|
Look for patterns in project documentation:
|
|
78
78
|
|
|
79
|
-
- Check `.5/ARCHITECTURE.md` for architectural patterns
|
|
80
|
-
- Check `.5/CONVENTIONS.md` for coding conventions and design patterns
|
|
79
|
+
- Check `.5/ARCHITECTURE.md` for architectural patterns and non-obvious conventions
|
|
81
80
|
- Check `.5/TESTING.md` for test patterns and conventions
|
|
82
81
|
- Fall back to CLAUDE.md if `.5/` documentation not present
|
|
83
82
|
- Check module-specific documentation
|
|
@@ -1,64 +1,33 @@
|
|
|
1
1
|
# Architecture
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Pattern
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**Overall:** {Pattern name — e.g., Layered, MVC, Modular Monolith}
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
{1-2 sentences explaining the architectural approach and key design decisions}
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- {Characteristic 1}
|
|
11
|
-
- {Characteristic 2}
|
|
12
|
-
- {Characteristic 3}
|
|
9
|
+
## Layers & Data Flow
|
|
13
10
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- Purpose: {What this layer does}
|
|
18
|
-
- Location: `{path}`
|
|
19
|
-
- Contains: {Types of code}
|
|
20
|
-
- Depends on: {What it uses}
|
|
21
|
-
- Used by: {What uses it}
|
|
22
|
-
|
|
23
|
-
## Data Flow
|
|
24
|
-
|
|
25
|
-
**{Flow Name}:**
|
|
26
|
-
|
|
27
|
-
1. {Step 1}
|
|
28
|
-
2. {Step 2}
|
|
29
|
-
3. {Step 3}
|
|
30
|
-
|
|
31
|
-
**State Management:**
|
|
32
|
-
- {How state is handled}
|
|
11
|
+
| Layer | Location | Depends On | Notes |
|
|
12
|
+
|-------|----------|------------|-------|
|
|
13
|
+
| {Layer} | `{path}` | {Dependencies} | {Key responsibility or constraint} |
|
|
33
14
|
|
|
34
15
|
## Key Abstractions
|
|
35
16
|
|
|
36
17
|
**{Abstraction Name}:**
|
|
37
18
|
- Purpose: {What it represents}
|
|
19
|
+
- Pattern: {How it's used across the codebase}
|
|
38
20
|
- Examples: `{file paths}`
|
|
39
|
-
- Pattern: {Pattern used}
|
|
40
|
-
|
|
41
|
-
## Entry Points
|
|
42
|
-
|
|
43
|
-
**{Entry Point}:**
|
|
44
|
-
- Location: `{path}`
|
|
45
|
-
- Triggers: {What invokes it}
|
|
46
|
-
- Responsibilities: {What it does}
|
|
47
|
-
|
|
48
|
-
## Error Handling
|
|
49
|
-
|
|
50
|
-
**Strategy:** {Approach}
|
|
51
21
|
|
|
52
|
-
|
|
53
|
-
- {Pattern 1}
|
|
54
|
-
- {Pattern 2}
|
|
22
|
+
## Non-Obvious Conventions
|
|
55
23
|
|
|
56
|
-
|
|
24
|
+
{ONLY conventions not enforced by tooling or visible in config files. Skip anything in .eslintrc, .prettierrc, tsconfig, etc.}
|
|
57
25
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
**Authentication:** {Approach}
|
|
26
|
+
- {e.g., "All services must extend BaseService for lifecycle hooks"}
|
|
27
|
+
- {e.g., "Barrel exports required in each module directory"}
|
|
61
28
|
|
|
62
|
-
|
|
29
|
+
## Where to Add New Code
|
|
63
30
|
|
|
64
|
-
|
|
31
|
+
- New feature: `{path}`
|
|
32
|
+
- New tests: `{path}`
|
|
33
|
+
- Shared utilities: `{path}`
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
**Analysis Date:** {YYYY-MM-DD}
|
|
1
|
+
# Concerns
|
|
4
2
|
|
|
5
3
|
## Tech Debt
|
|
6
4
|
|
|
@@ -8,68 +6,28 @@
|
|
|
8
6
|
- Issue: {What's the shortcut/workaround}
|
|
9
7
|
- Files: `{file paths}`
|
|
10
8
|
- Impact: {What breaks or degrades}
|
|
11
|
-
- Fix approach: {How to address it}
|
|
12
9
|
|
|
13
|
-
## Known
|
|
10
|
+
## Known Issues
|
|
14
11
|
|
|
15
|
-
**{
|
|
12
|
+
**{Issue description}:**
|
|
16
13
|
- Symptoms: {What happens}
|
|
17
14
|
- Files: `{file paths}`
|
|
18
|
-
- Trigger: {How to reproduce}
|
|
19
|
-
- Workaround: {If any}
|
|
15
|
+
- Trigger/Workaround: {How to reproduce, how to avoid}
|
|
20
16
|
|
|
21
|
-
## Security
|
|
17
|
+
## Security Notes
|
|
22
18
|
|
|
23
19
|
**{Area}:**
|
|
24
20
|
- Risk: {What could go wrong}
|
|
25
|
-
- Files: `{file paths}`
|
|
26
21
|
- Current mitigation: {What's in place}
|
|
27
|
-
- Recommendations: {What should be added}
|
|
28
|
-
|
|
29
|
-
## Performance Bottlenecks
|
|
30
|
-
|
|
31
|
-
**{Slow operation}:**
|
|
32
|
-
- Problem: {What's slow}
|
|
33
|
-
- Files: `{file paths}`
|
|
34
|
-
- Cause: {Why it's slow}
|
|
35
|
-
- Improvement path: {How to speed up}
|
|
36
|
-
|
|
37
|
-
## Fragile Areas
|
|
38
|
-
|
|
39
|
-
**{Component/Module}:**
|
|
40
|
-
- Files: `{file paths}`
|
|
41
|
-
- Why fragile: {What makes it break easily}
|
|
42
|
-
- Safe modification: {How to change safely}
|
|
43
|
-
- Test coverage: {Gaps}
|
|
44
|
-
|
|
45
|
-
## Scaling Limits
|
|
46
|
-
|
|
47
|
-
**{Resource/System}:**
|
|
48
|
-
- Current capacity: {Numbers}
|
|
49
|
-
- Limit: {Where it breaks}
|
|
50
|
-
- Scaling path: {How to increase}
|
|
51
|
-
|
|
52
|
-
## Dependencies at Risk
|
|
53
22
|
|
|
54
|
-
|
|
55
|
-
- Risk: {What's wrong}
|
|
56
|
-
- Impact: {What breaks}
|
|
57
|
-
- Migration plan: {Alternative}
|
|
23
|
+
## Integration Notes
|
|
58
24
|
|
|
59
|
-
|
|
25
|
+
**{Service/System}:**
|
|
26
|
+
- {Non-obvious details: auth flows, required env vars, webhook contracts, gotchas with external services}
|
|
60
27
|
|
|
61
|
-
|
|
62
|
-
- Problem: {What's missing}
|
|
63
|
-
- Blocks: {What can't be done}
|
|
28
|
+
## Performance Notes
|
|
64
29
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
**{Untested area}:**
|
|
68
|
-
- What's not tested: {Specific functionality}
|
|
30
|
+
**{Slow operation or scaling limit}:**
|
|
31
|
+
- Problem: {What's slow or where it breaks}
|
|
69
32
|
- Files: `{file paths}`
|
|
70
|
-
-
|
|
71
|
-
- Priority: {High/Medium/Low}
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
*Concerns audit: {date}*
|
|
33
|
+
- Improvement path: {How to address}
|
package/src/templates/TESTING.md
CHANGED
|
@@ -1,107 +1,24 @@
|
|
|
1
1
|
# Testing Patterns
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Organization
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
{Co-located with source or separate directory? Naming pattern for test files?}
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- {Framework} {Version}
|
|
9
|
-
- Config: `{config file}`
|
|
7
|
+
## Patterns
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
- {Library}
|
|
13
|
-
|
|
14
|
-
**Run Commands:**
|
|
15
|
-
```bash
|
|
16
|
-
{command} # Run all tests
|
|
17
|
-
{command} # Watch mode
|
|
18
|
-
{command} # Coverage
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Test File Organization
|
|
22
|
-
|
|
23
|
-
**Location:**
|
|
24
|
-
|
|
25
|
-
{Pattern: co-located or separate}
|
|
26
|
-
|
|
27
|
-
**Naming:**
|
|
28
|
-
|
|
29
|
-
{Pattern}
|
|
30
|
-
|
|
31
|
-
**Structure:**
|
|
32
|
-
|
|
33
|
-
{Directory pattern}
|
|
34
|
-
|
|
35
|
-
## Test Structure
|
|
36
|
-
|
|
37
|
-
**Suite Organization:**
|
|
38
|
-
|
|
39
|
-
{Show actual pattern from codebase}
|
|
40
|
-
|
|
41
|
-
**Patterns:**
|
|
42
|
-
|
|
43
|
-
- {Setup pattern}
|
|
44
|
-
- {Teardown pattern}
|
|
45
|
-
- {Assertion pattern}
|
|
9
|
+
{Project-specific test structure — describe how tests are organized within a file, setup/teardown conventions}
|
|
46
10
|
|
|
47
11
|
## Mocking
|
|
48
12
|
|
|
49
|
-
**
|
|
50
|
-
- {
|
|
51
|
-
|
|
52
|
-
**Patterns:**
|
|
53
|
-
|
|
54
|
-
{Show actual mocking pattern from codebase}
|
|
55
|
-
|
|
56
|
-
**What to Mock:**
|
|
57
|
-
|
|
58
|
-
{Guidelines}
|
|
59
|
-
|
|
60
|
-
**What NOT to Mock:**
|
|
61
|
-
|
|
62
|
-
{Guidelines}
|
|
63
|
-
|
|
64
|
-
## Fixtures and Factories
|
|
65
|
-
|
|
66
|
-
**Test Data:**
|
|
67
|
-
|
|
68
|
-
{Show pattern from codebase}
|
|
69
|
-
|
|
70
|
-
**Location:**
|
|
71
|
-
|
|
72
|
-
{Where fixtures live}
|
|
73
|
-
|
|
74
|
-
## Coverage
|
|
75
|
-
|
|
76
|
-
**Requirements:**
|
|
77
|
-
- {Target or "None enforced"}
|
|
78
|
-
|
|
79
|
-
**View Coverage:**
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
{command}
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## Test Types
|
|
86
|
-
|
|
87
|
-
**Unit Tests:**
|
|
88
|
-
|
|
89
|
-
{Scope and approach}
|
|
90
|
-
|
|
91
|
-
**Integration Tests:**
|
|
92
|
-
|
|
93
|
-
{Scope and approach}
|
|
94
|
-
|
|
95
|
-
**E2E Tests:**
|
|
96
|
-
|
|
97
|
-
{Framework or "Not used"}
|
|
98
|
-
|
|
99
|
-
## Common Patterns
|
|
13
|
+
**Approach:**
|
|
14
|
+
- {Mocking framework/tool used}
|
|
100
15
|
|
|
101
|
-
**
|
|
16
|
+
**What to mock:**
|
|
17
|
+
- {Guidelines — e.g., external APIs, database calls}
|
|
102
18
|
|
|
103
|
-
|
|
19
|
+
**What NOT to mock:**
|
|
20
|
+
- {Guidelines — e.g., pure business logic, utility functions}
|
|
104
21
|
|
|
105
|
-
|
|
22
|
+
## Gotchas
|
|
106
23
|
|
|
107
|
-
{
|
|
24
|
+
{Things that trip people up: setup/teardown quirks, env requirements, flaky areas, test-specific config}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: build-project
|
|
3
|
-
description: Builds the project using auto-detected or configured build system. Supports npm, gradle, cargo, go, maven, make, and more. Use when compiling, building, or verifying project build status.
|
|
4
|
-
allowed-tools: Bash, Read, Grep
|
|
5
|
-
model: sonnet
|
|
6
|
-
context: fork
|
|
7
|
-
user-invocable: true
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Build Project
|
|
11
|
-
|
|
12
|
-
## Overview
|
|
13
|
-
|
|
14
|
-
This skill executes build tasks with auto-detection of the build system and sufficient timeout for long-running builds. It provides structured error reporting and actionable suggestions when builds fail.
|
|
15
|
-
|
|
16
|
-
## Build System Detection
|
|
17
|
-
|
|
18
|
-
The skill automatically detects the build system using:
|
|
19
|
-
|
|
20
|
-
1. **Config file** (`.5/config.json`) - if `build.command` is specified
|
|
21
|
-
2. **Auto-detection** - by examining project files:
|
|
22
|
-
- `package.json` → npm/yarn/pnpm
|
|
23
|
-
- `build.gradle` or `build.gradle.kts` → Gradle
|
|
24
|
-
- `pom.xml` → Maven
|
|
25
|
-
- `Cargo.toml` → Cargo (Rust)
|
|
26
|
-
- `go.mod` → Go
|
|
27
|
-
- `Makefile` → Make
|
|
28
|
-
- `setup.py` or `pyproject.toml` → Python
|
|
29
|
-
|
|
30
|
-
## Build Targets
|
|
31
|
-
|
|
32
|
-
| Target | Use Case |
|
|
33
|
-
|--------|----------|
|
|
34
|
-
| `compile` | Fast compilation check (no tests, no packaging) |
|
|
35
|
-
| `build` | Full build (may include tests depending on tool) |
|
|
36
|
-
| `clean` | Clean build (removes previous artifacts first) |
|
|
37
|
-
|
|
38
|
-
## Parameters
|
|
39
|
-
|
|
40
|
-
When invoked, the skill expects:
|
|
41
|
-
|
|
42
|
-
- **target** (optional, default: `build`): One of `compile`, `build`, `clean`
|
|
43
|
-
- **module** (optional): Specific module to build (for monorepos)
|
|
44
|
-
|
|
45
|
-
## Execution Process
|
|
46
|
-
|
|
47
|
-
### 1. Load Configuration
|
|
48
|
-
|
|
49
|
-
Read `.5/config.json` if it exists:
|
|
50
|
-
|
|
51
|
-
```json
|
|
52
|
-
{
|
|
53
|
-
"build": {
|
|
54
|
-
"command": "npm run build",
|
|
55
|
-
"compileCommand": "npm run compile",
|
|
56
|
-
"cleanCommand": "npm run clean"
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
If commands are specified, use them. Otherwise, auto-detect.
|
|
62
|
-
|
|
63
|
-
### 2. Detect Build System
|
|
64
|
-
|
|
65
|
-
If no config, detect by checking project files: `package.json` + lock files (npm/yarn/pnpm), `build.gradle` (gradle), `pom.xml` (mvn), `Cargo.toml` (cargo), `go.mod` (go), `Makefile` (make).
|
|
66
|
-
|
|
67
|
-
### 3. Determine Build Command
|
|
68
|
-
|
|
69
|
-
Based on detected tool and target:
|
|
70
|
-
|
|
71
|
-
| Tool | compile | build | clean |
|
|
72
|
-
|------|---------|-------|-------|
|
|
73
|
-
| npm | `npm run build` | `npm run build` | `rm -rf dist node_modules && npm install` |
|
|
74
|
-
| yarn | `yarn build` | `yarn build` | `yarn clean` or `rm -rf dist` |
|
|
75
|
-
| pnpm | `pnpm build` | `pnpm build` | `pnpm clean` or `rm -rf dist` |
|
|
76
|
-
| gradle | `./gradlew compileJava -x test --offline` | `./gradlew build -x test --offline` | `./gradlew clean build` |
|
|
77
|
-
| mvn | `mvn compile` | `mvn package -DskipTests` | `mvn clean package` |
|
|
78
|
-
| cargo | `cargo check` | `cargo build` | `cargo clean && cargo build` |
|
|
79
|
-
| go | `go build ./...` | `go build ./...` | `go clean && go build ./...` |
|
|
80
|
-
| make | `make` | `make` | `make clean` |
|
|
81
|
-
|
|
82
|
-
### 4. Execute Build with Proper Timeout
|
|
83
|
-
|
|
84
|
-
**IMPORTANT**: Builds can take several minutes. Use generous timeout:
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
# Timeout based on target
|
|
88
|
-
# - compile: 2 minutes (120000ms)
|
|
89
|
-
# - build: 10 minutes (600000ms)
|
|
90
|
-
# - clean: 15 minutes (900000ms)
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Execute the command and capture output.
|
|
94
|
-
|
|
95
|
-
### 5. Parse Build Output
|
|
96
|
-
|
|
97
|
-
Determine success/failure from tool-specific patterns (exit code, `BUILD SUCCESSFUL`, `BUILD SUCCESS`, `Finished`, etc.). For failures, extract file paths, line numbers, and error messages. Identify error type (compilation, dependency, memory, tool not found) and suggest appropriate fix.
|
|
98
|
-
|
|
99
|
-
### 6. Format Output
|
|
100
|
-
|
|
101
|
-
Provide structured response:
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
BUILD STATUS: ✓ SUCCESS | ✗ FAILED
|
|
105
|
-
DURATION: 2m 34s
|
|
106
|
-
TOOL: {detected-tool}
|
|
107
|
-
TARGET: {target}
|
|
108
|
-
MODULE: {module or "all"}
|
|
109
|
-
|
|
110
|
-
SUMMARY:
|
|
111
|
-
- Build completed successfully
|
|
112
|
-
OR
|
|
113
|
-
- Build failed with X errors
|
|
114
|
-
|
|
115
|
-
ERRORS: (if any)
|
|
116
|
-
File: path/to/file.ext:42
|
|
117
|
-
Error: {error message}
|
|
118
|
-
|
|
119
|
-
File: path/to/another.ext:15
|
|
120
|
-
Error: {error message}
|
|
121
|
-
|
|
122
|
-
SUGGESTIONS:
|
|
123
|
-
- {actionable suggestion based on error type}
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## Error Handling
|
|
127
|
-
|
|
128
|
-
- If build tool cannot be detected, return error with list of checked locations
|
|
129
|
-
- If command times out, report timeout with suggestion to increase timeout or optimize build
|
|
130
|
-
- If build fails, extract and format all errors for user
|
|
131
|
-
- Always include the raw command that was executed for reproducibility
|
|
132
|
-
|
|
133
|
-
## DO NOT
|
|
134
|
-
|
|
135
|
-
- DO NOT modify source files
|
|
136
|
-
- DO NOT install dependencies (unless explicitly part of clean target)
|
|
137
|
-
- DO NOT run tests (use `/run-tests` skill for that)
|
|
138
|
-
- DO NOT assume a specific build system - always detect or use config
|
|
139
|
-
- DO NOT use overly short timeouts (builds can be slow)
|
|
140
|
-
|
|
141
|
-
## Example
|
|
142
|
-
|
|
143
|
-
```
|
|
144
|
-
User: /build-project
|
|
145
|
-
Skill: [Detects npm] → [Runs: npm run build] → [Reports success with duration]
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Related Documentation
|
|
149
|
-
|
|
150
|
-
- [5-Phase Workflow Guide](../../docs/workflow-guide.md)
|
|
151
|
-
- [/run-tests skill](../run-tests/SKILL.md)
|