5-phase-workflow 1.4.2 → 1.4.4
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/bin/install.js +81 -188
- package/package.json +1 -1
- package/src/commands/5/configure.md +122 -326
- package/src/commands/5/discuss-feature.md +7 -172
- package/src/commands/5/implement-feature.md +33 -151
- package/src/commands/5/plan-feature.md +2 -8
- package/src/commands/5/plan-implementation.md +0 -10
- package/src/commands/5/quick-implement.md +34 -141
- package/src/commands/5/review-code.md +2 -12
- package/src/commands/5/update.md +17 -0
- package/src/commands/5/verify-implementation.md +32 -199
- package/src/hooks/check-updates.js +11 -13
- package/src/hooks/config-guard.js +30 -0
- package/src/hooks/plan-guard.js +52 -28
- package/src/hooks/statusline.js +29 -3
- package/src/settings.json +11 -1
- package/src/skills/build-project/SKILL.md +4 -130
- package/src/skills/configure-project/SKILL.md +26 -215
- package/src/skills/run-tests/SKILL.md +5 -208
- package/src/templates/workflow/QUICK-PLAN.md +0 -17
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 5:configure
|
|
3
|
-
description:
|
|
3
|
+
description: Configures the project. Analyzes project, gathers preferences, writes config.json, and creates feature spec for remaining setup. Follow up with /5:plan-implementation CONFIGURE.
|
|
4
4
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
5
5
|
context: inherit
|
|
6
6
|
user-invocable: true
|
|
@@ -10,7 +10,7 @@ user-invocable: true
|
|
|
10
10
|
|
|
11
11
|
## Overview
|
|
12
12
|
|
|
13
|
-
This command is **Phase 1** of the 5-phase workflow applied to project configuration itself. It analyzes the project, asks the user questions, and outputs a feature spec at `.5/CONFIGURE/feature.md`.
|
|
13
|
+
This command is **Phase 1** of the 5-phase workflow applied to project configuration itself. It analyzes the project, asks the user questions, and outputs a feature spec at `.5/features/CONFIGURE/feature.md`.
|
|
14
14
|
|
|
15
15
|
After running this command, proceed through the standard phases:
|
|
16
16
|
1. **`/5:configure`** (this command) - Plan the configuration feature
|
|
@@ -21,34 +21,25 @@ After running this command, proceed through the standard phases:
|
|
|
21
21
|
|
|
22
22
|
## ⚠️ CRITICAL SCOPE CONSTRAINT
|
|
23
23
|
|
|
24
|
-
**THIS COMMAND
|
|
24
|
+
**THIS COMMAND WRITES config.json AND CREATES THE FEATURE SPEC. NOTHING ELSE.**
|
|
25
25
|
|
|
26
26
|
Your job in this command:
|
|
27
27
|
✅ Analyze project (detect type, build commands, etc.)
|
|
28
28
|
✅ Gather user preferences via questions
|
|
29
|
-
✅
|
|
29
|
+
✅ Write `.claude/.5/config.json` directly
|
|
30
|
+
✅ Create feature spec at `.5/features/CONFIGURE/feature.md` for remaining work
|
|
30
31
|
✅ Tell user to run /5:plan-implementation CONFIGURE
|
|
31
32
|
|
|
32
33
|
Your job is NOT:
|
|
33
|
-
❌ Write config.json directly (Phase 3 does this)
|
|
34
34
|
❌ Create CLAUDE.md directly (Phase 3 does this)
|
|
35
|
+
❌ Generate documentation files directly (Phase 3 does this)
|
|
35
36
|
❌ Generate skills directly (Phase 3 does this)
|
|
36
37
|
❌ Skip user interaction
|
|
37
38
|
❌ Assume project structure
|
|
38
39
|
|
|
39
|
-
**After creating the feature spec and informing the user, YOUR JOB IS COMPLETE. EXIT IMMEDIATELY.**
|
|
40
|
+
**After writing config.json, creating the feature spec, and informing the user, YOUR JOB IS COMPLETE. EXIT IMMEDIATELY.**
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
**CRITICAL:** This command has a LIMITED scope. Do NOT:
|
|
44
|
-
|
|
45
|
-
- ❌ **Write config.json** - That's Phase 3's job (via configure-project skill)
|
|
46
|
-
- ❌ **Create CLAUDE.md** - That's Phase 3's job
|
|
47
|
-
- ❌ **Generate skills** - That's Phase 3's job
|
|
48
|
-
- ❌ **Skip questions** - Always confirm detected values with user
|
|
49
|
-
- ❌ **Assume structure** - Detect or ask, don't guess
|
|
50
|
-
|
|
51
|
-
**If you find yourself creating config files or CLAUDE.md, STOP IMMEDIATELY. You should only be creating the feature spec.**
|
|
42
|
+
**If you find yourself creating CLAUDE.md, documentation files, or skills, STOP IMMEDIATELY. You should only be writing config.json and the feature spec.**
|
|
52
43
|
|
|
53
44
|
## Configuration Process
|
|
54
45
|
|
|
@@ -67,56 +58,25 @@ else
|
|
|
67
58
|
fi
|
|
68
59
|
```
|
|
69
60
|
|
|
70
|
-
**1b. Detect project type** by
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// Java
|
|
92
|
-
if (exists('build.gradle') || exists('build.gradle.kts'))
|
|
93
|
-
return 'gradle-java';
|
|
94
|
-
if (exists('pom.xml'))
|
|
95
|
-
return 'maven-java';
|
|
96
|
-
|
|
97
|
-
// Python
|
|
98
|
-
if (exists('requirements.txt') || exists('pyproject.toml')) {
|
|
99
|
-
if (exists('manage.py')) return 'django';
|
|
100
|
-
if (exists('app.py') || exists('wsgi.py')) return 'flask';
|
|
101
|
-
return 'python';
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Rust
|
|
105
|
-
if (exists('Cargo.toml'))
|
|
106
|
-
return 'rust';
|
|
107
|
-
|
|
108
|
-
// Go
|
|
109
|
-
if (exists('go.mod'))
|
|
110
|
-
return 'go';
|
|
111
|
-
|
|
112
|
-
// Ruby
|
|
113
|
-
if (exists('Gemfile')) {
|
|
114
|
-
if (exists('config/routes.rb')) return 'rails';
|
|
115
|
-
return 'ruby';
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
return 'unknown';
|
|
119
|
-
```
|
|
61
|
+
**1b. Detect project type** by checking files (first match wins):
|
|
62
|
+
|
|
63
|
+
| File Present | Dependency / Sub-check | Type |
|
|
64
|
+
|---|---|---|
|
|
65
|
+
| `package.json` | `next` | nextjs |
|
|
66
|
+
| `package.json` | `@nestjs/core` | nestjs |
|
|
67
|
+
| `package.json` | `express` | express |
|
|
68
|
+
| `package.json` | `react` | react |
|
|
69
|
+
| `package.json` | `vue` | vue |
|
|
70
|
+
| `package.json` | *(none matched)* | javascript |
|
|
71
|
+
| `build.gradle(.kts)` | — | gradle-java |
|
|
72
|
+
| `pom.xml` | — | maven-java |
|
|
73
|
+
| `requirements.txt` / `pyproject.toml` | + `manage.py` | django |
|
|
74
|
+
| `requirements.txt` / `pyproject.toml` | + `app.py`/`wsgi.py` | flask |
|
|
75
|
+
| `requirements.txt` / `pyproject.toml` | *(none matched)* | python |
|
|
76
|
+
| `Cargo.toml` | — | rust |
|
|
77
|
+
| `go.mod` | — | go |
|
|
78
|
+
| `Gemfile` | + `config/routes.rb` | rails |
|
|
79
|
+
| `Gemfile` | *(none matched)* | ruby |
|
|
120
80
|
|
|
121
81
|
**1c. Detect build/test commands** based on project type:
|
|
122
82
|
|
|
@@ -158,126 +118,31 @@ fi
|
|
|
158
118
|
|
|
159
119
|
**1g. Detect codebase patterns** for potential skills:
|
|
160
120
|
|
|
161
|
-
Use Glob to
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
| Validators | `**/*Validator.{ts,js,java}`, `**/validators/**` | src/validators/ |
|
|
177
|
-
| Schemas | `**/*Schema.{ts,js}`, `**/schemas/**` | src/schemas/ |
|
|
178
|
-
| **Frontend (React/Vue)** | | |
|
|
179
|
-
| Components | `**/components/**/*.{tsx,jsx,vue}` | src/components/ |
|
|
180
|
-
| Hooks | `**/hooks/**/*.{ts,js}`, `**/use*.{ts,js}` | src/hooks/ |
|
|
181
|
-
| Contexts | `**/contexts/**/*.{tsx,jsx}`, `**/*Context.{tsx,jsx}` | src/contexts/ |
|
|
182
|
-
| Stores | `**/stores/**/*.{ts,js}`, `**/*Store.{ts,js}` | src/stores/ |
|
|
183
|
-
| Pages | `**/pages/**/*.{tsx,jsx}`, `**/app/**/page.{tsx,jsx}` | pages/, app/ |
|
|
184
|
-
| Layouts | `**/layouts/**/*.{tsx,jsx,vue}`, `**/*Layout.{tsx,jsx}` | src/layouts/ |
|
|
185
|
-
| **API/Routes** | | |
|
|
186
|
-
| API Routes | `**/api/**/*.{ts,js}`, `**/routes/**` | src/api/, pages/api/ |
|
|
187
|
-
| Middleware | `**/*Middleware.{ts,js,java}`, `**/middleware/**` | src/middleware/ |
|
|
188
|
-
| Guards | `**/*.guard.{ts,js}`, `**/guards/**` | src/guards/ |
|
|
189
|
-
| Interceptors | `**/*.interceptor.{ts,js}`, `**/interceptors/**` | src/interceptors/ |
|
|
190
|
-
| Filters | `**/*.filter.{ts,js}`, `**/*Filter.java` | src/filters/ |
|
|
191
|
-
| **Testing** | | |
|
|
192
|
-
| Tests | `**/*.test.{ts,js,tsx,jsx}`, `**/*.spec.{ts,js,tsx,jsx}`, `**/tests/**` | src/, tests/ |
|
|
193
|
-
| Specs | `**/*_spec.rb`, `**/spec/**/*.rb`, `**/*_test.go`, `**/test_*.py` | spec/, tests/ |
|
|
194
|
-
| Test Fixtures | `**/fixtures/**`,`**/testFixtures/**`, `**/__fixtures__/**`, `**/testdata/**` | fixtures/, testdata/ |
|
|
195
|
-
| Factories | `**/*Factory.{ts,js,java,rb}`, `**/factories/**` | factories/ |
|
|
196
|
-
| Mocks | `**/__mocks__/**`, `**/mocks/**`, `**/*Mock.{ts,js}` | __mocks__/, mocks/ |
|
|
197
|
-
| **Utilities** | | |
|
|
198
|
-
| Utils | `**/utils/**/*.{ts,js,java,py}`, `**/*Utils.{ts,js,java}` | src/utils/ |
|
|
199
|
-
| Helpers | `**/helpers/**/*.{ts,js,java,py,rb}`, `**/*Helper.{ts,js,java}` | src/helpers/ |
|
|
200
|
-
| Constants | `**/constants/**/*.{ts,js}`, `**/*Constants.{ts,js}` | src/constants/ |
|
|
201
|
-
| Types/Interfaces | `**/types/**/*.{ts,js}`, `**/interfaces/**/*.{ts,java}` | src/types/ |
|
|
202
|
-
| Config | `**/config/**/*.{ts,js,py}`, `**/*Config.{ts,js}` | src/config/ |
|
|
203
|
-
| **Framework-Specific** | | |
|
|
204
|
-
| Modules (NestJS/Angular) | `**/*.module.{ts,js}` | src/modules/ |
|
|
205
|
-
| Pipes (NestJS) | `**/*.pipe.{ts,js}`, `**/pipes/**` | src/pipes/ |
|
|
206
|
-
| Decorators | `**/decorators/**/*.{ts,js}`, `**/*.decorator.{ts,js}` | src/decorators/ |
|
|
207
|
-
| Blueprints (Flask) | `**/blueprints/**/*.py` | blueprints/ |
|
|
208
|
-
| Views (Django) | `**/views.py`, `**/views/**/*.py` | app/views/ |
|
|
209
|
-
| Serializers (Django) | `**/serializers.py`, `**/serializers/**/*.py` | app/serializers/ |
|
|
210
|
-
| **Background/Async** | | |
|
|
211
|
-
| Jobs | `**/jobs/**/*.{ts,js,rb}`, `**/*Job.{ts,js,rb}` | src/jobs/ |
|
|
212
|
-
| Workers | `**/workers/**/*.{ts,js}`, `**/*Worker.{ts,js}` | src/workers/ |
|
|
213
|
-
| Events | `**/events/**/*.{ts,js,java}`, `**/*Event.{ts,js,java}` | src/events/ |
|
|
214
|
-
| Listeners | `**/listeners/**/*.{ts,js,java}`, `**/*Listener.{ts,js}` | src/listeners/ |
|
|
215
|
-
| Commands (CLI) | `**/commands/**/*.{ts,js,java}`, `**/*Command.{ts,js}` | src/commands/ |
|
|
216
|
-
| **Database** | | |
|
|
217
|
-
| Migrations | `**/migrations/**/*.{ts,js,sql,rb,py}` | migrations/ |
|
|
218
|
-
| Seeds | `**/seeds/**/*.{ts,js,rb}`, `**/seeders/**` | seeds/ |
|
|
219
|
-
| **Error Handling** | | |
|
|
220
|
-
| Exceptions | `**/exceptions/**/*.{ts,js,java}`, `**/*Exception.{ts,js,java}` | src/exceptions/ |
|
|
221
|
-
| Errors | `**/errors/**/*.{ts,js}`, `**/*Error.{ts,js}` | src/errors/ |
|
|
222
|
-
|
|
223
|
-
For each pattern found:
|
|
224
|
-
- Count matching files
|
|
225
|
-
- Identify primary location (most common directory)
|
|
226
|
-
- Sample 1 file name to show convention
|
|
121
|
+
Use Glob to scan for architectural patterns. For each, check both suffix-based (`*{Pattern}.{ts,js,java,py,rb}`) and directory-based (`{patterns}/**`) globs.
|
|
122
|
+
|
|
123
|
+
**Pattern categories to scan:**
|
|
124
|
+
- **Core:** Controllers, Services, Repositories, Models/Entities, Handlers
|
|
125
|
+
- **Data Transfer:** DTOs, Requests, Responses, Mappers, Validators, Schemas
|
|
126
|
+
- **Frontend:** Components, Hooks, Contexts, Stores, Pages, Layouts
|
|
127
|
+
- **API/Routes:** API Routes, Middleware, Guards, Interceptors, Filters
|
|
128
|
+
- **Testing:** Tests/Specs, Fixtures, Factories, Mocks
|
|
129
|
+
- **Utilities:** Utils, Helpers, Constants, Types/Interfaces, Config
|
|
130
|
+
- **Framework-Specific:** Modules, Pipes, Decorators, Blueprints, Views, Serializers
|
|
131
|
+
- **Background/Async:** Jobs, Workers, Events, Listeners, Commands
|
|
132
|
+
- **Database:** Migrations, Seeds
|
|
133
|
+
- **Error Handling:** Exceptions, Errors
|
|
134
|
+
|
|
135
|
+
For each pattern found: count matching files, identify primary location, sample 1 filename.
|
|
227
136
|
|
|
228
137
|
**1h. Detect runnable commands** for potential command skills:
|
|
229
138
|
|
|
230
|
-
Scan
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
| Makefile | Grep for targets (lines ending with `:`) | build, test, lint, clean, docker-build |
|
|
236
|
-
| pyproject.toml | Read `[tool.poetry.scripts]` or `[project.scripts]` | test, lint, format, typecheck |
|
|
237
|
-
| Cargo.toml | Check for `[[bin]]` sections, common cargo commands | build, test, clippy, fmt |
|
|
238
|
-
| build.gradle | Grep for `task` definitions | build, test, lint, spotlessApply |
|
|
239
|
-
| composer.json | Read `scripts` object | test, lint, format, analyse |
|
|
240
|
-
| Rakefile | Grep for `task :name` patterns | test, lint, db:migrate, db:seed |
|
|
241
|
-
|
|
242
|
-
**Common command categories to detect:**
|
|
243
|
-
|
|
244
|
-
| Category | Common Names | Skill Name |
|
|
245
|
-
|----------|--------------|------------|
|
|
246
|
-
| **Build** | build, compile, bundle, pack | run-build |
|
|
247
|
-
| **Test** | test, test:unit, test:integration, test:e2e, spec | run-tests |
|
|
248
|
-
| **Lint** | lint, eslint, pylint, rubocop, clippy | run-lint |
|
|
249
|
-
| **Format** | format, prettier, fmt, black, gofmt | run-format |
|
|
250
|
-
| **Type Check** | typecheck, tsc, mypy, type-check | run-typecheck |
|
|
251
|
-
| **Dev Server** | dev, start, serve, watch | run-dev |
|
|
252
|
-
| **Database** | db:migrate, migrate, db:seed, seed, db:reset | run-db-migrate, run-db-seed |
|
|
253
|
-
| **Docker** | docker:build, docker:up, docker:down, compose | run-docker |
|
|
254
|
-
| **Deploy** | deploy, release, publish | run-deploy |
|
|
255
|
-
| **Clean** | clean, reset, purge | run-clean |
|
|
256
|
-
| **Generate** | generate, codegen, gen | run-generate |
|
|
257
|
-
|
|
258
|
-
For each command found:
|
|
259
|
-
- Record the exact command syntax
|
|
260
|
-
- Identify any required environment or flags
|
|
261
|
-
- Note if it has watch/CI variants
|
|
262
|
-
|
|
263
|
-
Store results internally as:
|
|
264
|
-
```json
|
|
265
|
-
{
|
|
266
|
-
"detectedPatterns": {
|
|
267
|
-
"controller": { "count": 12, "location": "src/controllers/", "example": "UserController.ts" },
|
|
268
|
-
"service": { "count": 8, "location": "src/services/", "example": "AuthService.ts" },
|
|
269
|
-
"component": { "count": 25, "location": "src/components/", "example": "Button.tsx" }
|
|
270
|
-
},
|
|
271
|
-
"detectedCommands": {
|
|
272
|
-
"build": { "source": "package.json", "command": "npm run build", "variants": ["build:prod", "build:dev"] },
|
|
273
|
-
"test": { "source": "package.json", "command": "npm test", "variants": ["test:unit", "test:e2e"] },
|
|
274
|
-
"lint": { "source": "package.json", "command": "npm run lint", "variants": ["lint:fix"] },
|
|
275
|
-
"format": { "source": "package.json", "command": "npm run format", "variants": [] }
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
```
|
|
139
|
+
Scan config files (`package.json` scripts, `Makefile` targets, `pyproject.toml` scripts, `Cargo.toml`, `build.gradle` tasks, `composer.json` scripts, `Rakefile` tasks) for commands in these categories:
|
|
140
|
+
|
|
141
|
+
Build, Test, Lint, Format, Type Check, Dev Server, Database (migrate/seed), Docker, Deploy, Clean, Generate
|
|
142
|
+
|
|
143
|
+
Skill naming: `run-{category}` (e.g., `run-build`, `run-tests`, `run-lint`).
|
|
279
144
|
|
|
280
|
-
Only include
|
|
145
|
+
For each command found: record exact syntax, note variants (e.g., `test:unit`, `test:e2e`), and environment requirements. Only include commands that are actually detected.
|
|
281
146
|
|
|
282
147
|
### Step 2: Gather User Preferences (interactive via AskUserQuestion)
|
|
283
148
|
|
|
@@ -414,36 +279,76 @@ If no patterns/commands detected:
|
|
|
414
279
|
- Inform user: "No common patterns detected. Would you like to specify patterns manually?"
|
|
415
280
|
- Allow manual entry of pattern names/locations or command names
|
|
416
281
|
|
|
282
|
+
### Step 2.5: Write config.json
|
|
283
|
+
|
|
284
|
+
Using the values gathered from Steps 1 and 2, write `.claude/.5/config.json` directly.
|
|
285
|
+
|
|
286
|
+
**If "Update existing" flow:** Read current config, merge updated values.
|
|
287
|
+
**If "Start fresh" or new install:** Write new config.
|
|
288
|
+
|
|
289
|
+
**Ensure directory exists:**
|
|
290
|
+
```bash
|
|
291
|
+
mkdir -p .claude/.5
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
**Schema:**
|
|
295
|
+
|
|
296
|
+
```json
|
|
297
|
+
{
|
|
298
|
+
"projectType": "{type}",
|
|
299
|
+
"ticket": {
|
|
300
|
+
"pattern": "{regex-pattern-or-null}",
|
|
301
|
+
"extractFromBranch": true
|
|
302
|
+
},
|
|
303
|
+
"branch": {
|
|
304
|
+
"convention": "{convention}"
|
|
305
|
+
},
|
|
306
|
+
"build": {
|
|
307
|
+
"command": "{build-command}",
|
|
308
|
+
"testCommand": "{test-command}",
|
|
309
|
+
"timeout": {
|
|
310
|
+
"compile": 120000,
|
|
311
|
+
"test": 300000
|
|
312
|
+
}
|
|
313
|
+
},
|
|
314
|
+
"tools": {
|
|
315
|
+
"coderabbit": {
|
|
316
|
+
"available": false,
|
|
317
|
+
"authenticated": false
|
|
318
|
+
},
|
|
319
|
+
"ide": {
|
|
320
|
+
"available": false,
|
|
321
|
+
"type": null
|
|
322
|
+
},
|
|
323
|
+
"context7": {
|
|
324
|
+
"available": false
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
"reviewTool": "claude",
|
|
328
|
+
"git": {
|
|
329
|
+
"autoCommit": false,
|
|
330
|
+
"commitMessage": {
|
|
331
|
+
"pattern": "{ticket-id} {short-description}"
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Fill all values from user responses. Write with pretty-printed JSON. Read back to verify correctness.
|
|
338
|
+
|
|
417
339
|
### Step 3: Create Feature Spec
|
|
418
340
|
|
|
419
|
-
Write `.5/CONFIGURE/feature.md` containing all gathered data:
|
|
341
|
+
Write `.5/features/CONFIGURE/feature.md` containing all gathered data:
|
|
420
342
|
|
|
421
343
|
```markdown
|
|
422
344
|
# Feature: Project Configuration
|
|
423
345
|
|
|
424
346
|
## Summary
|
|
425
|
-
|
|
347
|
+
Generates CLAUDE.md with codebase analysis and creates project-specific skills. (config.json already written.)
|
|
426
348
|
|
|
427
349
|
## Requirements
|
|
428
350
|
|
|
429
|
-
### Requirement 1:
|
|
430
|
-
Create `.claude/.5/config.json` with the following values:
|
|
431
|
-
- Project type: {project-type}
|
|
432
|
-
- Ticket pattern: {pattern}
|
|
433
|
-
- Extract from branch: {yes/no}
|
|
434
|
-
- Branch convention: {convention}
|
|
435
|
-
- Build command: {build-command}
|
|
436
|
-
- Test command: {test-command}
|
|
437
|
-
- Build timeout: 120000ms
|
|
438
|
-
- Test timeout: 300000ms
|
|
439
|
-
- CodeRabbit: {available/not-available}, authenticated: {yes/no}
|
|
440
|
-
- IDE integration: {available/not-available}, type: {type}
|
|
441
|
-
- Context7: {available/not-available}
|
|
442
|
-
- Review tool: {claude/coderabbit/none}
|
|
443
|
-
- Auto-commit: {yes/no}
|
|
444
|
-
- Commit message pattern: {pattern or "default"}
|
|
445
|
-
|
|
446
|
-
### Requirement 2: Generate Documentation Files
|
|
351
|
+
### Requirement 1: Generate Documentation Files
|
|
447
352
|
Analyze the codebase and generate modular documentation:
|
|
448
353
|
|
|
449
354
|
**Create separate documentation files in `.5/` folder:**
|
|
@@ -470,62 +375,21 @@ Analyze the codebase and generate modular documentation:
|
|
|
470
375
|
**Preserve existing content:**
|
|
471
376
|
- If CLAUDE.md already exists, preserve user-written custom sections
|
|
472
377
|
|
|
473
|
-
### Requirement
|
|
474
|
-
|
|
475
|
-
#### 3a. Create-* Skills (Architectural Patterns)
|
|
476
|
-
|
|
477
|
-
Generate skills based on detected file patterns:
|
|
478
|
-
|
|
479
|
-
| Pattern | Files | Location | Skill Name | Generate |
|
|
480
|
-
|---------|-------|----------|------------|----------|
|
|
481
|
-
| Controller | {count} | {location} | create-controller | ✓ |
|
|
482
|
-
| Service | {count} | {location} | create-service | ✓ |
|
|
483
|
-
| Component | {count} | {location} | create-component | ✓ |
|
|
484
|
-
| {pattern} | {count} | {location} | create-{pattern} | ✗ (user skipped) |
|
|
485
|
-
|
|
486
|
-
{Include only patterns where user selected "Generate = ✓"}
|
|
487
|
-
|
|
488
|
-
For each selected pattern skill:
|
|
489
|
-
1. Analyze 2-3 existing files from the pattern location
|
|
490
|
-
2. Extract naming conventions, file structure, imports
|
|
491
|
-
3. Generate SKILL.md with project-specific template
|
|
492
|
-
|
|
493
|
-
Each create-* skill should:
|
|
494
|
-
- Follow standard SKILL.md frontmatter pattern
|
|
495
|
-
- Set `user-invocable: true` so users can invoke directly (e.g., `/create-controller UserController`)
|
|
496
|
-
- Set `model: haiku` for fast, cheap pattern-following
|
|
497
|
-
- Derive patterns from existing code in the project
|
|
498
|
-
- Include file naming and location conventions
|
|
499
|
-
- Include template/pattern based on existing examples
|
|
378
|
+
### Requirement 2: Generate Project-Specific Skills
|
|
500
379
|
|
|
501
|
-
|
|
380
|
+
**Create-* skills** for each user-selected architectural pattern:
|
|
381
|
+
- Skill name: `create-{pattern}` (e.g., `create-controller`, `create-service`)
|
|
382
|
+
- Analyze 2-3 existing files, extract conventions, generate SKILL.md with project-specific template
|
|
383
|
+
- Set `user-invocable: true`, `model: haiku`
|
|
502
384
|
|
|
503
|
-
|
|
385
|
+
**Run-* skills** for each user-selected command:
|
|
386
|
+
- Skill name: `run-{category}` (e.g., `run-tests`, `run-lint`)
|
|
387
|
+
- Document exact command syntax, variants, flags
|
|
388
|
+
- Set `user-invocable: true`, `model: haiku`
|
|
504
389
|
|
|
505
|
-
|
|
506
|
-
|---------|--------|--------------|------------|----------|
|
|
507
|
-
| build | {source} | {command} | run-build | ✓ |
|
|
508
|
-
| test | {source} | {command} | run-tests | ✓ |
|
|
509
|
-
| lint | {source} | {command} | run-lint | ✓ |
|
|
510
|
-
| {command} | {source} | {full-command} | run-{command} | ✗ (user skipped) |
|
|
511
|
-
|
|
512
|
-
{Include only commands where user selected "Generate = ✓"}
|
|
513
|
-
|
|
514
|
-
For each selected command skill:
|
|
515
|
-
1. Document the exact command and any variants
|
|
516
|
-
2. Include common flags and options
|
|
517
|
-
3. Document expected output and error handling
|
|
518
|
-
|
|
519
|
-
Each run-* skill should:
|
|
520
|
-
- Follow standard SKILL.md frontmatter pattern
|
|
521
|
-
- Set `user-invocable: true` so users can invoke directly (e.g., `/run-tests`, `/run-lint`)
|
|
522
|
-
- Set `model: haiku` for simple command execution
|
|
523
|
-
- Include the exact command syntax
|
|
524
|
-
- Document any environment requirements
|
|
525
|
-
- Include common options/flags
|
|
390
|
+
Include only patterns/commands where user selected "Generate".
|
|
526
391
|
|
|
527
392
|
## Acceptance Criteria
|
|
528
|
-
- [ ] `.claude/.5/config.json` exists with correct values (no `steps` array)
|
|
529
393
|
- [ ] `.5/` directory created
|
|
530
394
|
- [ ] All 7 documentation files exist and are populated:
|
|
531
395
|
- [ ] `.5/ARCHITECTURE.md`
|
|
@@ -549,80 +413,12 @@ Each run-* skill should:
|
|
|
549
413
|
|
|
550
414
|
Tell the user:
|
|
551
415
|
|
|
552
|
-
1. "Configuration
|
|
553
|
-
2. "
|
|
416
|
+
1. "Configuration saved to `.claude/.5/config.json`"
|
|
417
|
+
2. "Configuration feature planned at `.5/features/CONFIGURE/feature.md`"
|
|
418
|
+
3. "Next steps:"
|
|
554
419
|
- "Run `/clear` to reset context"
|
|
555
420
|
- "Then run `/5:plan-implementation CONFIGURE`"
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
## DO NOT
|
|
559
|
-
|
|
560
|
-
- DO NOT write config.json directly (that's Phase 3's job via the configure-project skill)
|
|
561
|
-
- DO NOT create CLAUDE.md directly (that's Phase 3's job)
|
|
562
|
-
- DO NOT generate skills directly (that's Phase 3's job)
|
|
563
|
-
- DO NOT skip user interaction - always confirm detected values
|
|
564
|
-
- DO NOT assume project structure - always detect or ask
|
|
565
|
-
|
|
566
|
-
## Example Usage
|
|
567
|
-
|
|
568
|
-
```
|
|
569
|
-
User: /5:configure
|
|
570
|
-
|
|
571
|
-
[Step 1: Auto-detection runs silently]
|
|
572
|
-
|
|
573
|
-
Claude: "Detected project type: Next.js. Is this correct?"
|
|
574
|
-
User: "Yes"
|
|
575
|
-
|
|
576
|
-
Claude: "How do you track work items?"
|
|
577
|
-
User: "GitHub Issues"
|
|
578
|
-
|
|
579
|
-
Claude: "Extract ticket ID from branch name?"
|
|
580
|
-
User: "Yes"
|
|
581
|
-
|
|
582
|
-
Claude: "Branch naming convention?"
|
|
583
|
-
User: "feature/description"
|
|
584
|
-
|
|
585
|
-
Claude: "Build command: `npm run build`. Use this?"
|
|
586
|
-
User: "Yes"
|
|
587
|
-
|
|
588
|
-
Claude: "Test command: `npm test`. Use this?"
|
|
589
|
-
User: "Yes"
|
|
590
|
-
|
|
591
|
-
Claude: "Should Claude make atomic commits during implementation?"
|
|
592
|
-
User: "No"
|
|
593
|
-
|
|
594
|
-
Claude: "Which code review tool would you like to use?"
|
|
595
|
-
User: "Claude (built-in)"
|
|
596
|
-
|
|
597
|
-
Claude: "Generate CLAUDE.md with codebase analysis?"
|
|
598
|
-
User: "Yes"
|
|
599
|
-
|
|
600
|
-
Claude: "I analyzed your codebase and found these patterns:
|
|
601
|
-
| Pattern | Files | Location | Example |
|
|
602
|
-
|---------|-------|----------|---------|
|
|
603
|
-
| Component | 25 files | src/components/ | Button.tsx |
|
|
604
|
-
| Hook | 8 files | src/hooks/ | useAuth.ts |
|
|
605
|
-
| API Route | 12 files | pages/api/ | users.ts |
|
|
606
|
-
| Page | 15 files | pages/ | index.tsx |
|
|
607
|
-
|
|
608
|
-
Which patterns would you like `create-*` skills generated for?"
|
|
609
|
-
User: [Selects Component, Hook, API Route]
|
|
610
|
-
|
|
611
|
-
Claude: "I also found these runnable commands:
|
|
612
|
-
| Command | Source | Full Command |
|
|
613
|
-
|---------|--------|--------------|
|
|
614
|
-
| build | package.json | npm run build |
|
|
615
|
-
| test | package.json | npm test |
|
|
616
|
-
| lint | package.json | npm run lint |
|
|
617
|
-
| typecheck | package.json | npm run typecheck |
|
|
618
|
-
|
|
619
|
-
Which commands would you like `run-*` skills generated for?"
|
|
620
|
-
User: [Selects test, lint]
|
|
621
|
-
|
|
622
|
-
Claude: [Writes .5/features/CONFIGURE/feature.md]
|
|
623
|
-
Claude: "Configuration feature planned at `.5/features/CONFIGURE/feature.md`"
|
|
624
|
-
Claude: "Next: Run `/clear` followed by `/5:plan-implementation CONFIGURE`"
|
|
625
|
-
```
|
|
421
|
+
4. "After that: Continue with `/5:implement-feature CONFIGURE` -> `/5:verify-implementation` -> `/5:review-code` (clearing context between each phase)"
|
|
626
422
|
|
|
627
423
|
## Related Documentation
|
|
628
424
|
|