@mthanhlm/autodev 0.1.1 → 0.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/PUBLISH.md +1 -1
- package/README.md +21 -6
- package/agents/autodev-codebase-domain.md +16 -0
- package/agents/autodev-codebase-quality.md +16 -0
- package/agents/autodev-codebase-runtime.md +16 -0
- package/agents/autodev-codebase-structure.md +16 -0
- package/agents/autodev-review-integration.md +21 -0
- package/agents/autodev-review-polish.md +21 -0
- package/agents/autodev-review-quality.md +21 -0
- package/agents/autodev-review-security.md +21 -0
- package/autodev/bin/autodev-tools.cjs +406 -90
- package/autodev/templates/codebase/domain.md +13 -0
- package/autodev/templates/codebase/quality.md +13 -0
- package/autodev/templates/codebase/runtime.md +13 -0
- package/autodev/templates/codebase/structure.md +13 -0
- package/autodev/templates/codebase/summary.md +13 -0
- package/autodev/templates/config.json +6 -1
- package/autodev/templates/plan.md +4 -0
- package/autodev/templates/project-state.md +11 -0
- package/autodev/templates/project.md +3 -0
- package/autodev/templates/requirements.md +2 -0
- package/autodev/templates/review.md +24 -0
- package/autodev/templates/roadmap.md +3 -3
- package/autodev/templates/state.md +5 -4
- package/autodev/templates/summary.md +3 -1
- package/autodev/templates/track-state.md +12 -0
- package/autodev/templates/track.md +17 -0
- package/autodev/templates/uat.md +5 -2
- package/autodev/workflows/autodev.md +62 -0
- package/autodev/workflows/cleanup.md +45 -0
- package/autodev/workflows/execute-phase.md +15 -6
- package/autodev/workflows/explore-codebase.md +57 -0
- package/autodev/workflows/help.md +45 -12
- package/autodev/workflows/new-project.md +41 -14
- package/autodev/workflows/plan-phase.md +19 -8
- package/autodev/workflows/progress.md +3 -1
- package/autodev/workflows/review-phase.md +59 -0
- package/autodev/workflows/verify-work.md +17 -7
- package/bin/install.js +61 -16
- package/commands/autodev/cleanup.md +23 -0
- package/commands/autodev/execute-phase.md +2 -2
- package/commands/autodev/explore-codebase.md +33 -0
- package/commands/autodev/help.md +1 -1
- package/commands/autodev/index.md +35 -0
- package/commands/autodev/new-project.md +6 -4
- package/commands/autodev/plan-phase.md +2 -2
- package/commands/autodev/progress.md +1 -1
- package/commands/autodev/review-phase.md +29 -0
- package/commands/autodev/verify-work.md +2 -2
- package/hooks/autodev-session-state.sh +1 -1
- package/package.json +5 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<purpose>
|
|
2
|
-
Create one practical phase plan. Keep it concrete, small enough to execute, and free of git-write steps.
|
|
2
|
+
Create one practical phase plan for the active track. Keep it concrete, small enough to execute, and free of git-write steps.
|
|
3
3
|
</purpose>
|
|
4
4
|
|
|
5
5
|
<rules>
|
|
@@ -16,15 +16,18 @@ Create one practical phase plan. Keep it concrete, small enough to execute, and
|
|
|
16
16
|
node "$HOME/.claude/autodev/bin/autodev-tools.cjs" init plan-phase "$ARGUMENTS"
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
2. If
|
|
19
|
+
2. If there is no active track or no roadmap for it, stop and tell the user to run `/autodev`.
|
|
20
20
|
|
|
21
21
|
3. If no phase is found, tell the user all phases already have plans and show `/autodev-progress`.
|
|
22
22
|
|
|
23
23
|
4. Read:
|
|
24
24
|
- `.autodev/PROJECT.md`
|
|
25
|
-
- `.autodev/REQUIREMENTS.md`
|
|
26
|
-
- `.autodev/ROADMAP.md`
|
|
27
25
|
- `.autodev/STATE.md`
|
|
26
|
+
- `.autodev/codebase/summary.md` if it exists
|
|
27
|
+
- `.autodev/tracks/<active-track>/TRACK.md`
|
|
28
|
+
- `.autodev/tracks/<active-track>/REQUIREMENTS.md`
|
|
29
|
+
- `.autodev/tracks/<active-track>/ROADMAP.md`
|
|
30
|
+
- `.autodev/tracks/<active-track>/STATE.md`
|
|
28
31
|
- the target phase section
|
|
29
32
|
- any existing code relevant to this phase
|
|
30
33
|
|
|
@@ -33,10 +36,11 @@ node "$HOME/.claude/autodev/bin/autodev-tools.cjs" init plan-phase "$ARGUMENTS"
|
|
|
33
36
|
6. Create the phase directory if missing:
|
|
34
37
|
|
|
35
38
|
```text
|
|
36
|
-
.autodev/phases/NN-name/
|
|
39
|
+
.autodev/tracks/<active-track>/phases/NN-type-name/
|
|
37
40
|
```
|
|
38
41
|
|
|
39
42
|
7. Write or replace `NN-PLAN.md` from the template. The plan must include:
|
|
43
|
+
- phase type
|
|
40
44
|
- goal
|
|
41
45
|
- concrete implementation steps
|
|
42
46
|
- likely files to touch
|
|
@@ -44,11 +48,18 @@ node "$HOME/.claude/autodev/bin/autodev-tools.cjs" init plan-phase "$ARGUMENTS"
|
|
|
44
48
|
- manual checks
|
|
45
49
|
- explicit git read-only reminder
|
|
46
50
|
|
|
47
|
-
8. Update
|
|
51
|
+
8. Update the active track `STATE.md` so it points to:
|
|
48
52
|
- `Current Phase: N`
|
|
53
|
+
- `Current Phase Type: <type>`
|
|
49
54
|
- `Current Step: planned`
|
|
50
|
-
- `Next Command: /autodev
|
|
55
|
+
- `Next Command: /autodev`
|
|
51
56
|
- current ISO timestamp
|
|
52
57
|
|
|
53
|
-
9.
|
|
58
|
+
9. Update `.autodev/STATE.md` so it points to:
|
|
59
|
+
- `Active Track: <slug>`
|
|
60
|
+
- `Current Step: planned`
|
|
61
|
+
- `Next Command: /autodev`
|
|
62
|
+
- current ISO timestamp
|
|
63
|
+
|
|
64
|
+
10. End with a short summary and direct the user to `/autodev`. Mention `/autodev-execute-phase N` as the manual shortcut.
|
|
54
65
|
</process>
|
|
@@ -11,5 +11,7 @@ node "$HOME/.claude/autodev/bin/autodev-tools.cjs" progress table
|
|
|
11
11
|
|
|
12
12
|
2. Output the table directly.
|
|
13
13
|
|
|
14
|
-
3. If a project exists, add one short line after the table with
|
|
14
|
+
3. If a project exists, add one short line after the table with:
|
|
15
|
+
- `/autodev` as the default next command
|
|
16
|
+
- the routed manual shortcut from the table when useful
|
|
15
17
|
</process>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Run the automatic review bundle after execution so the user sees code quality, security, integration, and polish risks before manual verification.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<rules>
|
|
6
|
+
- Always spawn four review agents in parallel.
|
|
7
|
+
- Review findings should be concrete and evidence-based.
|
|
8
|
+
- Do not edit repository code in this step unless the user explicitly asks for fixes.
|
|
9
|
+
- Write one consolidated review artifact for the phase.
|
|
10
|
+
</rules>
|
|
11
|
+
|
|
12
|
+
<process>
|
|
13
|
+
1. Run:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
node "$HOME/.claude/autodev/bin/autodev-tools.cjs" init review-phase "$ARGUMENTS"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
2. If no executed phase is found, stop and direct the user to `/autodev-execute-phase`.
|
|
20
|
+
|
|
21
|
+
3. Read:
|
|
22
|
+
- `.autodev/STATE.md`
|
|
23
|
+
- the active track `STATE.md`
|
|
24
|
+
- `NN-PLAN.md`
|
|
25
|
+
- `NN-SUMMARY.md`
|
|
26
|
+
- relevant source files and tests
|
|
27
|
+
|
|
28
|
+
4. Spawn four parallel review agents:
|
|
29
|
+
- `autodev-review-quality`
|
|
30
|
+
- `autodev-review-security`
|
|
31
|
+
- `autodev-review-integration`
|
|
32
|
+
- `autodev-review-polish`
|
|
33
|
+
|
|
34
|
+
5. Tell each review agent:
|
|
35
|
+
- it is not alone in the codebase
|
|
36
|
+
- it should stay read-only and return findings only
|
|
37
|
+
- it should focus on clear issues, not generic commentary
|
|
38
|
+
- it should report severity, evidence, and suggested action
|
|
39
|
+
|
|
40
|
+
6. Synthesize the four agent responses into `NN-REVIEW.md` from the template with:
|
|
41
|
+
- grouped findings
|
|
42
|
+
- blockers vs non-blockers
|
|
43
|
+
- what looks solid
|
|
44
|
+
- a final recommendation
|
|
45
|
+
|
|
46
|
+
7. If blockers are found:
|
|
47
|
+
- set project and track state back to `Current Step: execution`
|
|
48
|
+
- keep `Next Command: /autodev`
|
|
49
|
+
- make the recommendation point back to the same phase
|
|
50
|
+
|
|
51
|
+
8. If blockers are not found:
|
|
52
|
+
- set project and track state to `Current Step: verification`
|
|
53
|
+
- keep `Next Command: /autodev`
|
|
54
|
+
|
|
55
|
+
9. End with a short review result:
|
|
56
|
+
- ready for verification, or
|
|
57
|
+
- return to execution
|
|
58
|
+
- include the manual shortcut command
|
|
59
|
+
</process>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<purpose>
|
|
2
|
-
Run lightweight user acceptance testing and keep the next action obvious.
|
|
2
|
+
Run lightweight user acceptance testing after review and keep the next action obvious, including a clean fix-return path when verification fails.
|
|
3
3
|
</purpose>
|
|
4
4
|
|
|
5
5
|
<rules>
|
|
6
|
-
- Verify against what the phase plan and
|
|
6
|
+
- Verify against what the phase plan, summary, and review claim.
|
|
7
7
|
- Keep the interaction concise and test-oriented.
|
|
8
8
|
- Do not auto-generate a new plan unless a real gap appears.
|
|
9
9
|
</rules>
|
|
@@ -15,11 +15,12 @@ Run lightweight user acceptance testing and keep the next action obvious.
|
|
|
15
15
|
node "$HOME/.claude/autodev/bin/autodev-tools.cjs" init verify-work "$ARGUMENTS"
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
2. If no
|
|
18
|
+
2. If no reviewed phase is found, stop and direct the user to `/autodev-review-phase`.
|
|
19
19
|
|
|
20
20
|
3. Read:
|
|
21
21
|
- `NN-PLAN.md`
|
|
22
22
|
- `NN-SUMMARY.md`
|
|
23
|
+
- `NN-REVIEW.md`
|
|
23
24
|
- relevant code or UI files
|
|
24
25
|
|
|
25
26
|
4. Present a short manual verification flow. Keep it one check at a time when user input is needed.
|
|
@@ -30,10 +31,19 @@ node "$HOME/.claude/autodev/bin/autodev-tools.cjs" init verify-work "$ARGUMENTS"
|
|
|
30
31
|
- bugs or follow-up
|
|
31
32
|
- recommended next step
|
|
32
33
|
|
|
33
|
-
6.
|
|
34
|
-
-
|
|
35
|
-
-
|
|
34
|
+
6. If verification fails, add a `Fix Return` section to `NN-UAT.md` with:
|
|
35
|
+
- exact failed behaviors
|
|
36
|
+
- reproduction notes
|
|
37
|
+
- the smallest acceptable fix target
|
|
38
|
+
|
|
39
|
+
7. Update the active track `STATE.md`:
|
|
40
|
+
- if verification passed and another phase remains, move to the next phase and set `Current Step: planning`
|
|
41
|
+
- if verification passed and no phase remains, set `Current Step: complete`
|
|
42
|
+
- if verification failed, keep the same phase active and set `Current Step: execution`
|
|
43
|
+
- always set `Next Command: /autodev`
|
|
36
44
|
- always refresh the ISO timestamp
|
|
37
45
|
|
|
38
|
-
|
|
46
|
+
8. Update `.autodev/STATE.md` with the matching project-level status and refreshed timestamp.
|
|
47
|
+
|
|
48
|
+
9. End with the verification result and the next command. Mention the manual shortcut only if it helps.
|
|
39
49
|
</process>
|
package/bin/install.js
CHANGED
|
@@ -11,6 +11,7 @@ const cyan = '\x1b[36m';
|
|
|
11
11
|
const reset = '\x1b[0m';
|
|
12
12
|
|
|
13
13
|
const MANAGED_PREFIX = 'autodev-';
|
|
14
|
+
const ROOT_COMMAND = 'autodev';
|
|
14
15
|
const HOOK_FILES = [
|
|
15
16
|
'autodev-context-monitor.js',
|
|
16
17
|
'autodev-git-guard.js',
|
|
@@ -191,19 +192,26 @@ function copyTextTree(srcDir, destDir, transform) {
|
|
|
191
192
|
}
|
|
192
193
|
}
|
|
193
194
|
|
|
195
|
+
function commandNameFromSourceFile(fileName) {
|
|
196
|
+
const baseName = fileName.replace(/\.md$/, '');
|
|
197
|
+
return baseName === 'index' ? ROOT_COMMAND : `${ROOT_COMMAND}-${baseName}`;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function skillNameFromSourceFile(fileName, prefix) {
|
|
201
|
+
const baseName = fileName.replace(/\.md$/, '');
|
|
202
|
+
return baseName === 'index' ? prefix : `${prefix}-${baseName}`;
|
|
203
|
+
}
|
|
204
|
+
|
|
194
205
|
function copyCommandsAsLocal(srcDir, destDir, transform) {
|
|
195
|
-
if (fs.existsSync(destDir)) {
|
|
196
|
-
fs.rmSync(destDir, { recursive: true, force: true });
|
|
197
|
-
}
|
|
198
206
|
fs.mkdirSync(destDir, { recursive: true });
|
|
199
207
|
|
|
200
208
|
for (const entry of fs.readdirSync(srcDir, { withFileTypes: true })) {
|
|
201
|
-
|
|
202
|
-
const destPath = path.join(destDir, entry.name);
|
|
203
|
-
if (entry.isDirectory()) {
|
|
204
|
-
copyCommandsAsLocal(srcPath, destPath, transform);
|
|
209
|
+
if (!entry.isFile() || !entry.name.endsWith('.md')) {
|
|
205
210
|
continue;
|
|
206
211
|
}
|
|
212
|
+
|
|
213
|
+
const srcPath = path.join(srcDir, entry.name);
|
|
214
|
+
const destPath = path.join(destDir, `${commandNameFromSourceFile(entry.name)}.md`);
|
|
207
215
|
let content = fs.readFileSync(srcPath, 'utf8');
|
|
208
216
|
content = transform(content);
|
|
209
217
|
fs.writeFileSync(destPath, content, 'utf8');
|
|
@@ -214,7 +222,7 @@ function copyCommandsAsGlobalSkills(srcDir, skillsDir, prefix, transform) {
|
|
|
214
222
|
fs.mkdirSync(skillsDir, { recursive: true });
|
|
215
223
|
|
|
216
224
|
for (const entry of fs.readdirSync(skillsDir, { withFileTypes: true })) {
|
|
217
|
-
if (entry.isDirectory() && entry.name.startsWith(`${prefix}-`)) {
|
|
225
|
+
if (entry.isDirectory() && (entry.name === prefix || entry.name.startsWith(`${prefix}-`))) {
|
|
218
226
|
fs.rmSync(path.join(skillsDir, entry.name), { recursive: true, force: true });
|
|
219
227
|
}
|
|
220
228
|
}
|
|
@@ -224,8 +232,7 @@ function copyCommandsAsGlobalSkills(srcDir, skillsDir, prefix, transform) {
|
|
|
224
232
|
continue;
|
|
225
233
|
}
|
|
226
234
|
|
|
227
|
-
const
|
|
228
|
-
const skillName = `${prefix}-${baseName}`;
|
|
235
|
+
const skillName = skillNameFromSourceFile(entry.name, prefix);
|
|
229
236
|
const skillDir = path.join(skillsDir, skillName);
|
|
230
237
|
fs.mkdirSync(skillDir, { recursive: true });
|
|
231
238
|
|
|
@@ -236,6 +243,25 @@ function copyCommandsAsGlobalSkills(srcDir, skillsDir, prefix, transform) {
|
|
|
236
243
|
}
|
|
237
244
|
}
|
|
238
245
|
|
|
246
|
+
function copyAgents(srcDir, destDir, transform) {
|
|
247
|
+
if (!fs.existsSync(srcDir)) {
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
252
|
+
for (const entry of fs.readdirSync(srcDir, { withFileTypes: true })) {
|
|
253
|
+
if (!entry.isFile()) {
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
const srcPath = path.join(srcDir, entry.name);
|
|
258
|
+
const destPath = path.join(destDir, entry.name);
|
|
259
|
+
let content = fs.readFileSync(srcPath, 'utf8');
|
|
260
|
+
content = transform(content);
|
|
261
|
+
fs.writeFileSync(destPath, content, 'utf8');
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
239
265
|
function removeManagedSettings(settings) {
|
|
240
266
|
if (settings.statusLine?.command && settings.statusLine.command.includes('autodev-statusline')) {
|
|
241
267
|
delete settings.statusLine;
|
|
@@ -380,6 +406,15 @@ function removeInstalledFiles(targetDir, isGlobal) {
|
|
|
380
406
|
fs.rmSync(supportDir, { recursive: true, force: true });
|
|
381
407
|
}
|
|
382
408
|
|
|
409
|
+
const agentsDir = path.join(targetDir, 'agents');
|
|
410
|
+
if (fs.existsSync(agentsDir)) {
|
|
411
|
+
for (const entry of fs.readdirSync(agentsDir, { withFileTypes: true })) {
|
|
412
|
+
if (entry.isFile() && entry.name.startsWith(MANAGED_PREFIX) && entry.name.endsWith('.md')) {
|
|
413
|
+
fs.rmSync(path.join(agentsDir, entry.name), { force: true });
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
383
418
|
const hooksDir = path.join(targetDir, 'hooks');
|
|
384
419
|
for (const hookName of HOOK_FILES) {
|
|
385
420
|
const hookPath = path.join(hooksDir, hookName);
|
|
@@ -392,20 +427,28 @@ function removeInstalledFiles(targetDir, isGlobal) {
|
|
|
392
427
|
const skillsDir = path.join(targetDir, 'skills');
|
|
393
428
|
if (fs.existsSync(skillsDir)) {
|
|
394
429
|
for (const entry of fs.readdirSync(skillsDir, { withFileTypes: true })) {
|
|
395
|
-
if (entry.isDirectory() && entry.name.startsWith(MANAGED_PREFIX)) {
|
|
430
|
+
if (entry.isDirectory() && (entry.name === ROOT_COMMAND || entry.name.startsWith(MANAGED_PREFIX))) {
|
|
396
431
|
fs.rmSync(path.join(skillsDir, entry.name), { recursive: true, force: true });
|
|
397
432
|
}
|
|
398
433
|
}
|
|
399
434
|
}
|
|
400
435
|
} else {
|
|
401
|
-
const commandsDir = path.join(targetDir, 'commands'
|
|
436
|
+
const commandsDir = path.join(targetDir, 'commands');
|
|
402
437
|
if (fs.existsSync(commandsDir)) {
|
|
403
|
-
fs.
|
|
438
|
+
for (const entry of fs.readdirSync(commandsDir, { withFileTypes: true })) {
|
|
439
|
+
if (entry.isFile() && entry.name.startsWith(ROOT_COMMAND) && entry.name.endsWith('.md')) {
|
|
440
|
+
fs.rmSync(path.join(commandsDir, entry.name), { force: true });
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
const legacyCommandsDir = path.join(commandsDir, ROOT_COMMAND);
|
|
445
|
+
if (fs.existsSync(legacyCommandsDir)) {
|
|
446
|
+
fs.rmSync(legacyCommandsDir, { recursive: true, force: true });
|
|
404
447
|
}
|
|
405
448
|
const skillsDir = path.join(targetDir, 'skills');
|
|
406
449
|
if (fs.existsSync(skillsDir)) {
|
|
407
450
|
for (const entry of fs.readdirSync(skillsDir, { withFileTypes: true })) {
|
|
408
|
-
if (entry.isDirectory() && entry.name.startsWith(MANAGED_PREFIX)) {
|
|
451
|
+
if (entry.isDirectory() && (entry.name === ROOT_COMMAND || entry.name.startsWith(MANAGED_PREFIX))) {
|
|
409
452
|
fs.rmSync(path.join(skillsDir, entry.name), { recursive: true, force: true });
|
|
410
453
|
}
|
|
411
454
|
}
|
|
@@ -450,12 +493,13 @@ function install(options = {}) {
|
|
|
450
493
|
} else {
|
|
451
494
|
copyCommandsAsLocal(
|
|
452
495
|
path.join(srcRoot, 'commands', 'autodev'),
|
|
453
|
-
path.join(targetDir, 'commands'
|
|
496
|
+
path.join(targetDir, 'commands'),
|
|
454
497
|
transform
|
|
455
498
|
);
|
|
456
499
|
}
|
|
457
500
|
|
|
458
501
|
copyTextTree(path.join(srcRoot, 'autodev'), path.join(targetDir, 'autodev'), transform);
|
|
502
|
+
copyAgents(path.join(srcRoot, 'agents'), path.join(targetDir, 'agents'), transform);
|
|
459
503
|
copyTextTree(path.join(srcRoot, 'hooks'), path.join(targetDir, 'hooks'), transform);
|
|
460
504
|
setExecutableBits(targetDir);
|
|
461
505
|
const settingsPath = configureSettings(targetDir, isGlobal, options);
|
|
@@ -466,7 +510,7 @@ function install(options = {}) {
|
|
|
466
510
|
if (settingsPath) {
|
|
467
511
|
console.log(` ${green}Updated${reset} ${cyan}${settingsPath}${reset}`);
|
|
468
512
|
}
|
|
469
|
-
console.log(` Run ${cyan}/autodev
|
|
513
|
+
console.log(` Run ${cyan}/autodev${reset} in Claude Code.`);
|
|
470
514
|
}
|
|
471
515
|
|
|
472
516
|
return { targetDir, settingsPath };
|
|
@@ -505,6 +549,7 @@ Options:
|
|
|
505
549
|
--help Show this help
|
|
506
550
|
|
|
507
551
|
Examples:
|
|
552
|
+
npx @mthanhlm/autodev@latest
|
|
508
553
|
npx @mthanhlm/autodev@latest --global
|
|
509
554
|
npx @mthanhlm/autodev@latest --local
|
|
510
555
|
npx @mthanhlm/autodev@latest --global --uninstall
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autodev:cleanup
|
|
3
|
+
description: Clean or archive autodev state with an interactive prompt
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Write
|
|
7
|
+
- Edit
|
|
8
|
+
- Bash
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
- Grep
|
|
11
|
+
- Glob
|
|
12
|
+
---
|
|
13
|
+
<objective>
|
|
14
|
+
Offer interactive cleanup choices for `.autodev/`, with archive-first behavior.
|
|
15
|
+
</objective>
|
|
16
|
+
|
|
17
|
+
<execution_context>
|
|
18
|
+
@~/.claude/autodev/workflows/cleanup.md
|
|
19
|
+
</execution_context>
|
|
20
|
+
|
|
21
|
+
<process>
|
|
22
|
+
Execute the workflow in @~/.claude/autodev/workflows/cleanup.md end-to-end.
|
|
23
|
+
</process>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: autodev:execute-phase
|
|
3
|
-
description: Execute
|
|
3
|
+
description: Execute an active-track phase plan sequentially without git writes
|
|
4
4
|
argument-hint: "[phase-number]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
@@ -13,7 +13,7 @@ allowed-tools:
|
|
|
13
13
|
- AskUserQuestion
|
|
14
14
|
---
|
|
15
15
|
<objective>
|
|
16
|
-
Execute one phase plan
|
|
16
|
+
Execute one active-track phase plan and record the result in a summary.
|
|
17
17
|
</objective>
|
|
18
18
|
|
|
19
19
|
<execution_context>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autodev:explore-codebase
|
|
3
|
+
description: Map an existing codebase with four parallel agents and synthesize the result
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Write
|
|
7
|
+
- Edit
|
|
8
|
+
- Bash
|
|
9
|
+
- Grep
|
|
10
|
+
- Glob
|
|
11
|
+
- AskUserQuestion
|
|
12
|
+
- Task
|
|
13
|
+
---
|
|
14
|
+
<objective>
|
|
15
|
+
Explore the current repository, spawn four parallel codebase agents, and write the brownfield map into `.autodev/codebase/`.
|
|
16
|
+
</objective>
|
|
17
|
+
|
|
18
|
+
<execution_context>
|
|
19
|
+
@~/.claude/autodev/workflows/explore-codebase.md
|
|
20
|
+
@~/.claude/autodev/templates/codebase/structure.md
|
|
21
|
+
@~/.claude/autodev/templates/codebase/domain.md
|
|
22
|
+
@~/.claude/autodev/templates/codebase/runtime.md
|
|
23
|
+
@~/.claude/autodev/templates/codebase/quality.md
|
|
24
|
+
@~/.claude/autodev/templates/codebase/summary.md
|
|
25
|
+
@~/.claude/autodev/agents/autodev-codebase-structure.md
|
|
26
|
+
@~/.claude/autodev/agents/autodev-codebase-domain.md
|
|
27
|
+
@~/.claude/autodev/agents/autodev-codebase-runtime.md
|
|
28
|
+
@~/.claude/autodev/agents/autodev-codebase-quality.md
|
|
29
|
+
</execution_context>
|
|
30
|
+
|
|
31
|
+
<process>
|
|
32
|
+
Execute the workflow in @~/.claude/autodev/workflows/explore-codebase.md end-to-end.
|
|
33
|
+
</process>
|
package/commands/autodev/help.md
CHANGED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autodev
|
|
3
|
+
description: Route the project through the next useful autodev step from a single entrypoint
|
|
4
|
+
argument-hint: "[goal, track, or question]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Bash
|
|
10
|
+
- Grep
|
|
11
|
+
- Glob
|
|
12
|
+
- TodoWrite
|
|
13
|
+
- AskUserQuestion
|
|
14
|
+
- Task
|
|
15
|
+
- WebFetch
|
|
16
|
+
---
|
|
17
|
+
<objective>
|
|
18
|
+
Use `/autodev` as the default command. Inspect `.autodev/` state, route automatically, and execute the right workflow end-to-end.
|
|
19
|
+
</objective>
|
|
20
|
+
|
|
21
|
+
<execution_context>
|
|
22
|
+
@~/.claude/autodev/workflows/autodev.md
|
|
23
|
+
@~/.claude/autodev/workflows/new-project.md
|
|
24
|
+
@~/.claude/autodev/workflows/explore-codebase.md
|
|
25
|
+
@~/.claude/autodev/workflows/plan-phase.md
|
|
26
|
+
@~/.claude/autodev/workflows/execute-phase.md
|
|
27
|
+
@~/.claude/autodev/workflows/review-phase.md
|
|
28
|
+
@~/.claude/autodev/workflows/verify-work.md
|
|
29
|
+
@~/.claude/autodev/workflows/cleanup.md
|
|
30
|
+
@~/.claude/autodev/workflows/progress.md
|
|
31
|
+
</execution_context>
|
|
32
|
+
|
|
33
|
+
<process>
|
|
34
|
+
Execute the router workflow in @~/.claude/autodev/workflows/autodev.md end-to-end.
|
|
35
|
+
</process>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: autodev:new-project
|
|
3
|
-
description: Initialize
|
|
4
|
-
argument-hint: "[
|
|
3
|
+
description: Initialize autodev project state and create the first active track
|
|
4
|
+
argument-hint: "[project and current track goals]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
7
7
|
- Write
|
|
@@ -11,16 +11,18 @@ allowed-tools:
|
|
|
11
11
|
- Glob
|
|
12
12
|
---
|
|
13
13
|
<objective>
|
|
14
|
-
Create the `.autodev/` project state for a new or existing codebase
|
|
14
|
+
Create the `.autodev/` project state for a new or existing codebase, then create the first active track.
|
|
15
15
|
</objective>
|
|
16
16
|
|
|
17
17
|
<execution_context>
|
|
18
18
|
@~/.claude/autodev/workflows/new-project.md
|
|
19
19
|
@~/.claude/autodev/templates/config.json
|
|
20
20
|
@~/.claude/autodev/templates/project.md
|
|
21
|
+
@~/.claude/autodev/templates/project-state.md
|
|
22
|
+
@~/.claude/autodev/templates/track.md
|
|
21
23
|
@~/.claude/autodev/templates/requirements.md
|
|
22
24
|
@~/.claude/autodev/templates/roadmap.md
|
|
23
|
-
@~/.claude/autodev/templates/state.md
|
|
25
|
+
@~/.claude/autodev/templates/track-state.md
|
|
24
26
|
</execution_context>
|
|
25
27
|
|
|
26
28
|
<process>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: autodev:plan-phase
|
|
3
|
-
description: Create a practical plan for one roadmap
|
|
3
|
+
description: Create a practical plan for one phase in the active track roadmap
|
|
4
4
|
argument-hint: "[phase-number]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
@@ -12,7 +12,7 @@ allowed-tools:
|
|
|
12
12
|
- WebFetch
|
|
13
13
|
---
|
|
14
14
|
<objective>
|
|
15
|
-
Create or update a single executable phase plan under `.autodev/phases/`.
|
|
15
|
+
Create or update a single executable phase plan under the active track in `.autodev/tracks/<track>/phases/`.
|
|
16
16
|
</objective>
|
|
17
17
|
|
|
18
18
|
<execution_context>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: autodev:review-phase
|
|
3
|
+
description: Run a four-agent review pass for code quality, security, integration, and product polish
|
|
4
|
+
argument-hint: "[phase-number]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Bash
|
|
10
|
+
- Grep
|
|
11
|
+
- Glob
|
|
12
|
+
- Task
|
|
13
|
+
---
|
|
14
|
+
<objective>
|
|
15
|
+
Run the automatic review bundle for one executed phase and write a single review artifact.
|
|
16
|
+
</objective>
|
|
17
|
+
|
|
18
|
+
<execution_context>
|
|
19
|
+
@~/.claude/autodev/workflows/review-phase.md
|
|
20
|
+
@~/.claude/autodev/templates/review.md
|
|
21
|
+
@~/.claude/autodev/agents/autodev-review-quality.md
|
|
22
|
+
@~/.claude/autodev/agents/autodev-review-security.md
|
|
23
|
+
@~/.claude/autodev/agents/autodev-review-integration.md
|
|
24
|
+
@~/.claude/autodev/agents/autodev-review-polish.md
|
|
25
|
+
</execution_context>
|
|
26
|
+
|
|
27
|
+
<process>
|
|
28
|
+
Execute the workflow in @~/.claude/autodev/workflows/review-phase.md end-to-end.
|
|
29
|
+
</process>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: autodev:verify-work
|
|
3
|
-
description: Run lightweight user acceptance testing for a phase
|
|
3
|
+
description: Run lightweight user acceptance testing for a reviewed phase
|
|
4
4
|
argument-hint: "[phase-number]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
@@ -11,7 +11,7 @@ allowed-tools:
|
|
|
11
11
|
- Glob
|
|
12
12
|
---
|
|
13
13
|
<objective>
|
|
14
|
-
Record manual verification for one phase and keep the next step clear.
|
|
14
|
+
Record manual verification for one reviewed phase and keep the next step clear, including gap recovery when needed.
|
|
15
15
|
</objective>
|
|
16
16
|
|
|
17
17
|
<execution_context>
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mthanhlm/autodev",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "A lean Claude Code workflow system
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "A lean Claude Code workflow system with a single entrypoint, brownfield codebase mapping, and read-only git.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"autodev": "bin/install.js"
|
|
7
7
|
},
|
|
8
8
|
"files": [
|
|
9
9
|
"bin",
|
|
10
10
|
"commands",
|
|
11
|
+
"agents",
|
|
11
12
|
"autodev",
|
|
12
13
|
"hooks",
|
|
13
14
|
"scripts",
|
|
@@ -20,6 +21,8 @@
|
|
|
20
21
|
"claude-code",
|
|
21
22
|
"workflow",
|
|
22
23
|
"planning",
|
|
24
|
+
"brownfield",
|
|
25
|
+
"review",
|
|
23
26
|
"autodev"
|
|
24
27
|
],
|
|
25
28
|
"author": "mthanhlm",
|