@eltonssouza/development-utility-kit 0.14.0 → 0.14.2
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/cli.js +32 -16
- package/dashboard/public/content/docs/agents-reference.en.md +49 -154
- package/dashboard/public/content/docs/architecture-overview.en.md +3 -3
- package/dashboard/public/content/docs/autonomy-matrix.en.md +9 -9
- package/dashboard/public/content/docs/pipeline.en.md +23 -31
- package/dashboard/public/content/docs/plugins.en.md +1 -1
- package/dashboard/public/content/docs/quality-gate.en.md +1 -1
- package/dashboard/public/content/docs/skills-reference.en.md +2 -3
- package/dashboard/public/content/manual/backend.en.md +1 -1
- package/dashboard/public/content/manual/existing-project.en.md +12 -11
- package/dashboard/public/content/manual/frontend.en.md +2 -2
- package/dashboard/public/content/manual/fullstack.en.md +6 -6
- package/dashboard/public/content/manual/mobile.en.md +2 -3
- package/dashboard/public/content/manual/quickstart.en.md +2 -2
- package/package.json +1 -1
package/bin/cli.js
CHANGED
|
@@ -267,6 +267,31 @@ function harnessVersion() {
|
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
+
// ─── spawn helpers (DEP0190-safe) ─────────────────────────────────────────────
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Whether a binary resolves on PATH — cross-platform, no shell (so no DEP0190).
|
|
274
|
+
* @param {string} bin
|
|
275
|
+
* @returns {boolean}
|
|
276
|
+
*/
|
|
277
|
+
function isOnPath(bin) {
|
|
278
|
+
const probe = process.platform === 'win32' ? 'where' : 'which';
|
|
279
|
+
const r = spawnSync(probe, [bin], { stdio: 'ignore' });
|
|
280
|
+
return r.status === 0;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Run a TRUSTED, static command line. A shell is needed on Windows to resolve
|
|
285
|
+
* `.cmd`/`.bat` shims (npm, git, rtk). Passing the command as a SINGLE string
|
|
286
|
+
* (not args[] + shell:true) avoids Node's DEP0190 warning. Never pass untrusted
|
|
287
|
+
* input — quote path arguments at the call site.
|
|
288
|
+
* @param {string} cmd
|
|
289
|
+
* @param {object} [opts]
|
|
290
|
+
*/
|
|
291
|
+
function runShell(cmd, opts = {}) {
|
|
292
|
+
return spawnSync(cmd, { shell: true, ...opts });
|
|
293
|
+
}
|
|
294
|
+
|
|
270
295
|
// ─── adoptProject (install / update) ──────────────────────────────────────────
|
|
271
296
|
|
|
272
297
|
/**
|
|
@@ -432,17 +457,11 @@ function adoptProject(opts) {
|
|
|
432
457
|
process.stdout.write('Written : CLAUDE.md\n');
|
|
433
458
|
|
|
434
459
|
// Auto-install duk globally when running via npx (duk not yet in PATH).
|
|
435
|
-
|
|
436
|
-
shell: process.platform === 'win32',
|
|
437
|
-
stdio: 'ignore',
|
|
438
|
-
});
|
|
439
|
-
if (dukCheck.error) {
|
|
460
|
+
if (!isOnPath('duk')) {
|
|
440
461
|
process.stdout.write('\nInstalling duk CLI globally...\n');
|
|
441
|
-
const globalInstall =
|
|
442
|
-
'
|
|
443
|
-
|
|
444
|
-
{ stdio: 'inherit', shell: process.platform === 'win32' }
|
|
445
|
-
);
|
|
462
|
+
const globalInstall = runShell('npm install -g @eltonssouza/development-utility-kit', {
|
|
463
|
+
stdio: 'inherit',
|
|
464
|
+
});
|
|
446
465
|
if (globalInstall.status === 0) {
|
|
447
466
|
process.stdout.write('duk installed globally. Run: duk help\n');
|
|
448
467
|
} else {
|
|
@@ -530,10 +549,9 @@ function newProject(name, options) {
|
|
|
530
549
|
fs.mkdirSync(target, { recursive: true });
|
|
531
550
|
|
|
532
551
|
// 2. git init (non-fatal if git not installed; warn and continue)
|
|
533
|
-
const gitResult =
|
|
552
|
+
const gitResult = runShell('git init -q', {
|
|
534
553
|
cwd: target,
|
|
535
554
|
stdio: 'inherit',
|
|
536
|
-
shell: process.platform === 'win32',
|
|
537
555
|
});
|
|
538
556
|
if (gitResult.status !== 0) {
|
|
539
557
|
process.stdout.write('Warning: "git init" failed or git is not in PATH. Continuing without git repo.\n');
|
|
@@ -707,9 +725,8 @@ function dashboard(passthroughArgs) {
|
|
|
707
725
|
|
|
708
726
|
if (!fs.existsSync(nodeModulesDir)) {
|
|
709
727
|
process.stdout.write('Installing dashboard dependencies (first run)...\n');
|
|
710
|
-
const result =
|
|
728
|
+
const result = runShell(`npm install --prefix "${dashboardDir}"`, {
|
|
711
729
|
stdio: 'inherit',
|
|
712
|
-
shell: process.platform === 'win32',
|
|
713
730
|
});
|
|
714
731
|
if (result.status !== 0) {
|
|
715
732
|
process.stderr.write('Error: npm install failed for dashboard dependencies.\n');
|
|
@@ -718,8 +735,7 @@ function dashboard(passthroughArgs) {
|
|
|
718
735
|
}
|
|
719
736
|
|
|
720
737
|
// FR-008: print rtk gain output before starting the server
|
|
721
|
-
const rtkResult =
|
|
722
|
-
shell: process.platform === 'win32',
|
|
738
|
+
const rtkResult = runShell('rtk gain', {
|
|
723
739
|
stdio: ['ignore', 'pipe', 'ignore'],
|
|
724
740
|
});
|
|
725
741
|
if (rtkResult.status === 0 && rtkResult.stdout && rtkResult.stdout.length > 0) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Agents reference
|
|
2
2
|
|
|
3
|
-
This reference catalogs the
|
|
3
|
+
This reference catalogs the 21 agents in the `development-utility-kit` harness. Each agent is a specialist declared in `.claude/agents/<name>.md` with a YAML frontmatter (`name`, `description`, `tools`, `model`). Skills invoke agents through the `Task` tool; agents can also invoke other agents (orchestration). Use this page as the operational index: which agent to open, with which model, at which point in the pipeline, and which downstream agents it dispatches.
|
|
4
4
|
|
|
5
5
|
Audience: developers on the team who open the local dashboard and need to decide, in seconds, which harness piece to move. Who decides what is consolidated in [autonomy-matrix](autonomy-matrix). Who enters each pipeline stage is in [pipeline](pipeline).
|
|
6
6
|
|
|
7
|
-
## Master table —
|
|
7
|
+
## Master table — 21 agents
|
|
8
8
|
|
|
9
9
|
| Agent | Model | Domain | Decides alone? | When to invoke |
|
|
10
10
|
|---|---|---|---|---|
|
|
@@ -12,7 +12,6 @@ Audience: developers on the team who open the local dashboard and need to decide
|
|
|
12
12
|
| `tech-lead` | opus 4.7 | Stack, pattern, refactor, final review | Yes (3 human-only exceptions) | Approve merge, decide pattern, resolve technical conflict |
|
|
13
13
|
| `security-engineer` | opus 4.7 | OWASP, LGPD, hardening | Yes (technical veto HIGH/CRITICAL) | Security audit, vulnerability, headers, CORS |
|
|
14
14
|
| `analyst` | sonnet 4.6 | Technical decomposition, goal-ready PLAN_*.md | Yes within scope | Break feature into FR/NFR/BR/IR and sprints with DoD |
|
|
15
|
-
| `architect` | sonnet 4.6 | Macro architecture, ADR | Yes; cross-context escalates to tech-lead | Decide architectural pattern, propose ADR |
|
|
16
15
|
| `backend-developer` | sonnet 4.6 | Java 25 + Spring Boot 4 | Yes within scope | Implement endpoint, service, DTO, repository |
|
|
17
16
|
| `frontend-developer` | sonnet 4.6 | Angular 21 + Signals + ng-bootstrap | Yes within scope | Build component, screen, typed service |
|
|
18
17
|
| `mobile-developer` | sonnet 4.6 | React Native 0.84 + Expo SDK 54 | Yes within scope | Mobile app from scratch, Angular→RN conversion, native integration |
|
|
@@ -22,16 +21,13 @@ Audience: developers on the team who open the local dashboard and need to decide
|
|
|
22
21
|
| `ux-designer` | sonnet 4.6 | Wireframes, design system, a11y | Yes on "how it looks"; scope goes to PO | Wireframe, component spec, screen flow |
|
|
23
22
|
| `qa-engineer` | sonnet 4.6 | Unit/integration/E2E/mutation tests | Yes within scope | Write JUnit, Jest, Playwright, PIT tests |
|
|
24
23
|
| `gate-keeper` | sonnet 4.6 | Senior+ quality gate | Yes; blocks merge on red | Validate coverage, mutation, a11y, Lighthouse, pyramid |
|
|
25
|
-
| `test-coverage-auditor` | sonnet 4.6 | Coverage + debt audit | Yes (gate inside prd-ready-check) | Map test debt, P0/P1 |
|
|
26
24
|
| `code-reviewer` | sonnet 4.6 | Initial code review | Recommends; tech-lead merges | Review PR, findings by severity |
|
|
27
|
-
| `prd-ready-check` | sonnet 4.6 | Final pre-production gate | Yes; GO/NO-GO | Final checklist before deploy |
|
|
28
|
-
| `api-integration-test` | sonnet 4.6 | Real backend↔frontend smoke | Yes within scope | Boot stack and validate curl + clean console |
|
|
29
25
|
| `sprint-runner` | sonnet 4.6 | TDD sprint orchestration | Yes; asks on plan ambiguity | Execute Sprint N of PLAN_*.md |
|
|
26
|
+
| `stack-resolver` | haiku 4.5 | Stack pack resolution — reads Project Identity, returns STACK CONTEXT | Yes (mechanical) | Resolve the matching stack pack for the declared stack |
|
|
30
27
|
| `scaffold` | haiku 4.5 | Java/Angular initial skeleton | Yes (mechanical, idempotent) | Create backend/, frontend/, or fullstack from scratch |
|
|
31
28
|
| `update-template` | haiku 4.5 | Sync with development-utility-kit | Yes (with Y checkpoint) | Update `.claude/` + CLAUDE.md |
|
|
32
29
|
| `migrator` | sonnet 4.6 | Legacy → target stack migration | Yes per phase; ADR per major cross | Java 8/11/17→25, Spring 2/3→4, Angular 14-20→21 |
|
|
33
30
|
| `release-engineer` | sonnet 4.6 | SemVer bump + CHANGELOG | Yes through command output; human pushes | Cut release, generate tag, validate permissions |
|
|
34
|
-
| `auditor` | sonnet 4.6 | Audit drift vs template | Reports only (read-only) | Compare project vs template, list divergent files |
|
|
35
31
|
| `brain-keeper` | sonnet 4.6 | Obsidian vault under `docs/brain/` | Yes within scope | Record daily, feature, ADR, bug at end of PLAN |
|
|
36
32
|
|
|
37
33
|
---
|
|
@@ -48,7 +44,7 @@ PT triggers: `"decide produto"`, `"define escopo"`, `"regra de negócio"`, `"pri
|
|
|
48
44
|
|
|
49
45
|
**Mission**: decide product and record an ADR. Never asks the human outside the 4 exceptions (deleting real customer data, relevant financial cost, breaking change on a published public contract, brand identity change approved by marketing).
|
|
50
46
|
|
|
51
|
-
**Expected inputs**: raw user demand or hand-off from `analyst`/`
|
|
47
|
+
**Expected inputs**: raw user demand or hand-off from `analyst`/`tech-lead`/developers with a product question.
|
|
52
48
|
|
|
53
49
|
**Outputs / artifacts**:
|
|
54
50
|
- ADR at `docs/brain/decisions/ADR-NNN-<slug>.md`
|
|
@@ -79,7 +75,7 @@ PT triggers: `"decisão técnica"`, `"qual padrão"`, `"aprova merge"`, `"review
|
|
|
79
75
|
|
|
80
76
|
**Mission**: orchestrate specialists, maintain technical consistency, block merge if the senior+ gate fails. Decides with a weighted framework (Impact 30 / Effort 25 / Risk 25 / Adherence 20).
|
|
81
77
|
|
|
82
|
-
**Expected inputs**: technical demand, ADR
|
|
78
|
+
**Expected inputs**: technical demand, ADR to record, PR ready after `code-reviewer`.
|
|
83
79
|
|
|
84
80
|
**Outputs**:
|
|
85
81
|
- Technical decision ADR with score grid in `## Justification`
|
|
@@ -162,39 +158,12 @@ Autonomous path (`sprint-runner`, `release-engineer`): exempt via signal `caller
|
|
|
162
158
|
- Never invent a requirement — ambiguities go in §7 "Pending decisions".
|
|
163
159
|
- Filename always `PLAN_<NAME_KEBAB_CASE>.md`, no spaces or accents.
|
|
164
160
|
|
|
165
|
-
**Escalation**: `
|
|
161
|
+
**Escalation**: `tech-lead` for new architectural decisions and for ambiguity between stacks.
|
|
166
162
|
|
|
167
163
|
**Tools**: Read, Write, Edit, Glob, Grep, Bash(cat/find/git log).
|
|
168
164
|
|
|
169
165
|
**When NOT to use**: implementation (use `backend-developer`/`frontend-developer`). Trivial single-file edit. Bug with unknown root cause (use `pair-debug`).
|
|
170
166
|
|
|
171
|
-
### architect
|
|
172
|
-
|
|
173
|
-
**Model**: sonnet 4.6
|
|
174
|
-
|
|
175
|
-
**When to invoke**: decide architectural pattern (DDD vs CRUD, modular monolith vs microservices, REST vs Event-Driven), model domain, record macro ADR.
|
|
176
|
-
|
|
177
|
-
PT triggers: `"decide arquitetura"`, `"qual padrão usar"`, `"modela domínio"`, `"trade-off arquitetural"`, `"registra ADR"`.
|
|
178
|
-
|
|
179
|
-
**Mission**: propose architecture with weighted framework (Impact 30 / Effort 25 / Risk 25 / Adherence 20). `tech-lead` approves cross-cutting decisions.
|
|
180
|
-
|
|
181
|
-
**Expected inputs**: technical context (scale, team, domain complexity), constraints, existing code.
|
|
182
|
-
|
|
183
|
-
**Outputs**: ADR saved at `docs/brain/decisions/ADR-NNN-<slug>.md` with Context, Decision, Consequences, Discarded alternatives and score grid.
|
|
184
|
-
|
|
185
|
-
**Inviolable rules**:
|
|
186
|
-
- No ADR, no architecture change.
|
|
187
|
-
- Decision framework mandatory — score in the ADR.
|
|
188
|
-
- Never introduce a dependency without justification.
|
|
189
|
-
- Inspect code before proposing; never propose a rewrite of code you have not read.
|
|
190
|
-
- No premature abstraction — only complicate with a concrete requirement.
|
|
191
|
-
|
|
192
|
-
**Escalation**: `tech-lead` when decision spans > 1 bounded context, cost > R$ 200/month, or public external contract.
|
|
193
|
-
|
|
194
|
-
**Tools**: Read, Write, Glob, Grep, Bash(git log/git diff/cat/find).
|
|
195
|
-
|
|
196
|
-
**When NOT to use**: implementation (use a developer). Patch or lib bump (use `tech-lead`). Product decision (use `product-owner`).
|
|
197
|
-
|
|
198
167
|
---
|
|
199
168
|
|
|
200
169
|
## Implementation
|
|
@@ -465,32 +434,7 @@ PT triggers: `"roda os testes"`, `"gera os testes"`, `"garante que nada quebrou"
|
|
|
465
434
|
|
|
466
435
|
**Tools**: Read, Write, Edit, MultiEdit, Glob, Grep, Bash(git/node/mvn/mvnw/gradle/gradlew/npm/npx/ng/cat/find/ls).
|
|
467
436
|
|
|
468
|
-
**When NOT to use**: debt audit without running the suite (use `test-coverage-auditor`). Decision about what to test (use `qa-engineer`).
|
|
469
|
-
|
|
470
|
-
### test-coverage-auditor
|
|
471
|
-
|
|
472
|
-
**Model**: sonnet 4.6
|
|
473
|
-
|
|
474
|
-
**When to invoke**: map untested code, identify recurring manual tests, prioritize debt (P0/P1/P2/P3). Acts as a gate inside `prd-ready-check`.
|
|
475
|
-
|
|
476
|
-
PT triggers: `"audita os testes"`, `"tem débito de teste?"`, `"cobertura tá ok?"`, `"faz auditoria de cobertura"`.
|
|
477
|
-
|
|
478
|
-
**Mission**: audit and report. Does not write tests (that's `qa-engineer`) nor run the suite (that's `gate-keeper`).
|
|
479
|
-
|
|
480
|
-
**Expected inputs**: source tree (backend + frontend), JaCoCo + Jest reports, previous `tech-debt.md`.
|
|
481
|
-
|
|
482
|
-
**Outputs**: count by severity, trend vs previous audit, verdict for the PRD gate, update to `tech-debt.md` with P0/P1.
|
|
483
|
-
|
|
484
|
-
**Inviolable rules**:
|
|
485
|
-
- Never lowers threshold without a formal ADR.
|
|
486
|
-
- Never closes a P0 without a corresponding committed automated test.
|
|
487
|
-
- Never confuses "passes CI" with "actually covered" — analyzes assertions.
|
|
488
|
-
|
|
489
|
-
**Escalation**: open P0 → blocks `prd-ready-check`. Prioritization → `tech-lead`. Test generation → `gate-keeper`.
|
|
490
|
-
|
|
491
|
-
**Tools**: Read, Write, Edit, Glob, Grep, Bash(git/mvn/mvnw/npm/npx/find/cat/ls).
|
|
492
|
-
|
|
493
|
-
**When NOT to use**: generate the tests (use `qa-engineer`/`gate-keeper`). Formally accept the debt (use `tech-lead`).
|
|
437
|
+
**When NOT to use**: debt audit without running the suite (use the `test-coverage-auditor` skill). Decision about what to test (use `qa-engineer`).
|
|
494
438
|
|
|
495
439
|
### code-reviewer
|
|
496
440
|
|
|
@@ -514,66 +458,12 @@ PT triggers: `"revisa o PR"`, `"code review"`, `"audita o código"`, `"revisa qu
|
|
|
514
458
|
- Reviews the test diff with the same rigor as the production diff.
|
|
515
459
|
- Does not merge — `tech-lead` merges.
|
|
516
460
|
|
|
517
|
-
**Escalation**: security HIGH/CRITICAL → `security-engineer`. Conflict with active ADR → `tech-lead`. Architectural smell → `
|
|
461
|
+
**Escalation**: security HIGH/CRITICAL → `security-engineer`. Conflict with active ADR → `tech-lead`. Architectural smell → `tech-lead`. Test regression → `gate-keeper`.
|
|
518
462
|
|
|
519
463
|
**Tools**: Read, Glob, Grep, Bash(git diff/git log/git show).
|
|
520
464
|
|
|
521
465
|
**When NOT to use**: formal merge approval (use `tech-lead`). Deep security audit (use `security-engineer`).
|
|
522
466
|
|
|
523
|
-
### prd-ready-check
|
|
524
|
-
|
|
525
|
-
**Model**: sonnet 4.6
|
|
526
|
-
|
|
527
|
-
**When to invoke**: final gate before deploy. Runs the full checklist (tests, coverage, lint, production build, smoke E2E, security, observability, database) and returns GO or NO-GO.
|
|
528
|
-
|
|
529
|
-
PT triggers: `"tá pronto pra PRD?"`, `"pode subir pra produção?"`, `"roda o checklist final"`, `"DoD"`, `"definição de pronto"`.
|
|
530
|
-
|
|
531
|
-
**Mission**: confidently say whether the release goes to production. Never relaxes the gate — broken test = NO-GO; critical warning = NO-GO; console with error = NO-GO.
|
|
532
|
-
|
|
533
|
-
**Expected inputs**: ready branch, viable local build, accessible smoke infrastructure.
|
|
534
|
-
|
|
535
|
-
**Outputs**: report with each item OK/FAIL and evidence (HTTP status, console log, finding counts).
|
|
536
|
-
|
|
537
|
-
**Inviolable rules**:
|
|
538
|
-
- Any FAIL = NO-GO.
|
|
539
|
-
- Never relaxes limits without a formal ADR.
|
|
540
|
-
- Runs real commands — never assumes it passes because it passed yesterday.
|
|
541
|
-
- Flaky: 1 failure in 3 = NO-GO + open a bug.
|
|
542
|
-
- P0 from `test-coverage-auditor` = automatic NO-GO.
|
|
543
|
-
- No recent GREEN from `gate-keeper` = NO-GO.
|
|
544
|
-
|
|
545
|
-
**Escalation**: NO-GO returns to the specialist (backend/frontend/qa) with pending items.
|
|
546
|
-
|
|
547
|
-
**Tools**: Read, Glob, Grep, Bash(mvn/mvnw/npm/npx/ng/docker/docker-compose/git/ls/cat/find).
|
|
548
|
-
|
|
549
|
-
**When NOT to use**: task or sprint validation (use `gate-keeper`). Debt audit (use `test-coverage-auditor`).
|
|
550
|
-
|
|
551
|
-
### api-integration-test
|
|
552
|
-
|
|
553
|
-
**Model**: sonnet 4.6
|
|
554
|
-
|
|
555
|
-
**When to invoke**: validate real backend↔frontend integration after the green gate, before the final gate. Boots the stack, hits curl, opens a browser via Chrome MCP and checks console + network.
|
|
556
|
-
|
|
557
|
-
PT triggers: `"testa a integração"`, `"smoke test"`, `"sobe tudo e testa"`, `"verifica se a tela funciona"`, `"faz o E2E rápido"`.
|
|
558
|
-
|
|
559
|
-
**Mission**: confirm backend and frontend talk in a live dev environment. Anything failing = integration NOT-OK.
|
|
560
|
-
|
|
561
|
-
**Expected inputs**: built project, docker-compose or boot command, documented main endpoints.
|
|
562
|
-
|
|
563
|
-
**Outputs**: report of each check with OK/FAIL and evidence. Process tear-down at the end (even on failure).
|
|
564
|
-
|
|
565
|
-
**Inviolable rules**:
|
|
566
|
-
- Never "proves OK" by reading code only — must boot and observe.
|
|
567
|
-
- Zero console errors is a hard requirement.
|
|
568
|
-
- Process tear-down on exit (uses trap).
|
|
569
|
-
- Documents tested URLs, methods, and responses.
|
|
570
|
-
|
|
571
|
-
**Escalation**: failure → returns to `backend-developer` or `frontend-developer`.
|
|
572
|
-
|
|
573
|
-
**Tools**: Read, Glob, Grep, Bash(mvn/mvnw/npm/npx/ng/docker/docker-compose/curl/ss/netstat/cat/ls/sleep).
|
|
574
|
-
|
|
575
|
-
**When NOT to use**: unit/integration suite (use `gate-keeper`). Final pre-production gate (use `prd-ready-check`).
|
|
576
|
-
|
|
577
467
|
---
|
|
578
468
|
|
|
579
469
|
## Orchestration
|
|
@@ -609,6 +499,34 @@ PT triggers: `"roda a sprint 1"`, `"executa a sprint"`, `"implementa as tarefas
|
|
|
609
499
|
|
|
610
500
|
## Project lifecycle
|
|
611
501
|
|
|
502
|
+
### stack-resolver
|
|
503
|
+
|
|
504
|
+
**Model**: haiku 4.5
|
|
505
|
+
|
|
506
|
+
**When to invoke**: resolve the stack pack for the declared stack before specialists run. Reads `## Project Identity` from `CLAUDE.md`, locates the matching pack in `.claude/stacks/<lang>/<framework>-<major>.md`, and returns a rendered STACK CONTEXT block. Invoked programmatically by orchestrating skills at Step 0 (per ADR-026), not usually called by hand.
|
|
507
|
+
|
|
508
|
+
PT triggers: `"resolve stack"`, `"carrega pack da stack"`.
|
|
509
|
+
|
|
510
|
+
**Mission**: mechanical, read-only resolver. No decisions — just parse Project Identity, build the pack path, check `.claude/local/stacks/` first (override), read the pack, and format the STACK CONTEXT block. Hard-fails with `PACK_MISSING_ERROR` (plus nearest-pack suggestions) when no exact pack matches — never silently falls back to defaults.
|
|
511
|
+
|
|
512
|
+
**Expected inputs**: project `CLAUDE.md` with a valid `## Project Identity` → `Primary stack` field (e.g., `Java 21 + Spring Boot 3.2`).
|
|
513
|
+
|
|
514
|
+
**Outputs**: STACK CONTEXT block with the first-line tag `[STACK: <lang>/<framework>-<major> | PACK: loaded|none]`, the resolved language/framework/major, the pack path, and the full inline pack content. On miss, a `PACK_MISSING_ERROR` block the invoking skill must gate on.
|
|
515
|
+
|
|
516
|
+
**Inviolable rules**:
|
|
517
|
+
- Mechanical only — never makes a decision.
|
|
518
|
+
- Local overrides win — `.claude/local/stacks/` checked before `.claude/stacks/`.
|
|
519
|
+
- Always emits the `[STACK:` first-line tag for validation.
|
|
520
|
+
- Never modifies any file — read-only.
|
|
521
|
+
- No agent dispatch — it is a leaf; invokers dispatch specialists from its output.
|
|
522
|
+
- Hard-fail on missing pack — no silent fallback; always suggests nearest packs.
|
|
523
|
+
|
|
524
|
+
**Escalation**: pack missing → invoking skill dispatches the `create-stack-pack` skill or requires an explicit `[STACK_BYPASS: <reason>]` token before proceeding.
|
|
525
|
+
|
|
526
|
+
**Tools**: Read, Glob, Grep.
|
|
527
|
+
|
|
528
|
+
**When NOT to use**: create a missing pack (use the `create-stack-pack` skill). Migrate between stacks (use `migrator`). Any implementation work (use the specialists).
|
|
529
|
+
|
|
612
530
|
### scaffold
|
|
613
531
|
|
|
614
532
|
**Model**: haiku 4.5
|
|
@@ -629,7 +547,7 @@ PT triggers: `"scaffolda o projeto"`, `"monta a estrutura"`, `"cria o esqueleto"
|
|
|
629
547
|
- Versions pinned to `CLAUDE.md`; never silent fallback.
|
|
630
548
|
- Smoke build mandatory (`./mvnw compile` or `npm run build` returns 0).
|
|
631
549
|
|
|
632
|
-
**Escalation**: type missing → `tech-lead`. Stack version unavailable → `devops-engineer`. After scaffold, first feature → `analyst` → `
|
|
550
|
+
**Escalation**: type missing → `tech-lead`. Stack version unavailable → `devops-engineer`. After scaffold, first feature → `analyst` → `tech-lead` → `sprint-runner`.
|
|
633
551
|
|
|
634
552
|
**Tools**: Read, Write, Edit, Glob, Grep, Bash(mvn/mvnw/npm/npx/ng/curl/cat/find/mkdir/unzip).
|
|
635
553
|
|
|
@@ -719,30 +637,6 @@ PT triggers: `"release"`, `"bump version"`, `"cria tag"`, `"novo release"`, `"pr
|
|
|
719
637
|
|
|
720
638
|
**When NOT to use**: dependency update (use `tech-lead`). Revert release (use `tech-lead` + ADR — never undoes, bumps again). Intermediate QA tag (branch + manual tag, outside release flow).
|
|
721
639
|
|
|
722
|
-
### auditor
|
|
723
|
-
|
|
724
|
-
**Model**: sonnet 4.6
|
|
725
|
-
|
|
726
|
-
**When to invoke**: compare a project's structure against the official template. Detects missing, divergent, and outdated files in `.claude/`, `CLAUDE.md`, `.claude/agents`, `.claude/commands`, `.claude/skills`, `.claude/settings.json`, `.claude-version.json`.
|
|
727
|
-
|
|
728
|
-
PT triggers: `"audita estrutura claude"`, `"compara projetos com template"`, `"verifica desatualizado"`.
|
|
729
|
-
|
|
730
|
-
**Mission**: read-only. Never copies, edits, deletes, or overwrites. Reports and recommends `/sync-all-projects` or `/update-template`.
|
|
731
|
-
|
|
732
|
-
**Expected inputs**: project path, official template path.
|
|
733
|
-
|
|
734
|
-
**Outputs**: per project — Path, Status, Missing files, Divergent files, Local version, Expected version, Risk, Recommendation.
|
|
735
|
-
|
|
736
|
-
**Inviolable rules**:
|
|
737
|
-
- Auditor only. NEVER copies/edits/deletes/overwrites.
|
|
738
|
-
- When it finds an issue, recommends a command — does not fix.
|
|
739
|
-
|
|
740
|
-
**Escalation**: corrective action → `update-template` (with human confirmation).
|
|
741
|
-
|
|
742
|
-
**Tools**: Read, Glob, Bash.
|
|
743
|
-
|
|
744
|
-
**When NOT to use**: apply correction (use `update-template`). Create project (use `scaffold`).
|
|
745
|
-
|
|
746
640
|
---
|
|
747
641
|
|
|
748
642
|
## History
|
|
@@ -757,7 +651,7 @@ PT triggers: `"registra no cérebro"`, `"atualiza brain"`, `"log do dia"`, `"sal
|
|
|
757
651
|
|
|
758
652
|
**Mission**: WRITE mode in `docs/brain/`. Never deletes history — on conflict, new note prevails with `[[supersedes ADR-XXX]]` or a `## History` section.
|
|
759
653
|
|
|
760
|
-
**Expected inputs**: plan path, output of `sprint-runner`, output of `gate-keeper`, output of `prd-ready-check
|
|
654
|
+
**Expected inputs**: plan path, output of `sprint-runner`, output of `gate-keeper`, output of the `prd-ready-check` skill, git range (starting SHA → HEAD).
|
|
761
655
|
|
|
762
656
|
**Outputs**:
|
|
763
657
|
- `daily/YYYY-MM-DD.md` (always)
|
|
@@ -777,7 +671,7 @@ PT triggers: `"registra no cérebro"`, `"atualiza brain"`, `"log do dia"`, `"sal
|
|
|
777
671
|
- Never logs PII/token/password.
|
|
778
672
|
- Read-only outside `docs/brain/` (except marking PLAN as `status: completed`).
|
|
779
673
|
|
|
780
|
-
**Escalation**: formal ADR comes from `
|
|
674
|
+
**Escalation**: formal ADR comes from `tech-lead`; this agent only records. Accepting debt is `tech-lead`'s call; this agent only persists into `tech-debt.md`.
|
|
781
675
|
|
|
782
676
|
**Tools**: Read, Write, Edit, MultiEdit, Glob, Grep, Bash(git log/git diff/git show/find/cat/ls/mkdir/cp).
|
|
783
677
|
|
|
@@ -791,7 +685,7 @@ PT triggers: `"registra no cérebro"`, `"atualiza brain"`, `"log do dia"`, `"sal
|
|
|
791
685
|
|---|---|---|
|
|
792
686
|
| Scope, business rule, UX, API contract | `product-owner` | 4 situations: deleting real data, relevant financial cost, breaking change to public contract, identity change |
|
|
793
687
|
| Stack, pattern, refactor, lib, final review | `tech-lead` | 3 situations: irreconcilable requirement conflict, public breaking change, infra cost > R$ 200/month |
|
|
794
|
-
| Macro architecture | `
|
|
688
|
+
| Macro architecture, ADR | `tech-lead` | 3 situations (as above) |
|
|
795
689
|
| Schema, index, DB perf | `database-engineer` | Cross-cutting → `tech-lead` |
|
|
796
690
|
| Security HIGH/CRITICAL | `security-engineer` (technical veto) | 1 situation: irreversible action on real data |
|
|
797
691
|
| Infra, cost, deploy | `devops-engineer` | Cost > R$ 200/month → human |
|
|
@@ -816,11 +710,11 @@ Full details in [autonomy-matrix](autonomy-matrix).
|
|
|
816
710
|
│ Task
|
|
817
711
|
┌─────────────┼─────────────────────────┐
|
|
818
712
|
▼ ▼ ▼
|
|
819
|
-
product-owner tech-lead
|
|
713
|
+
product-owner tech-lead stack-resolver / scaffold / update-template / migrator
|
|
820
714
|
│ │
|
|
821
715
|
│ │ delegates
|
|
822
716
|
│ ▼
|
|
823
|
-
│ analyst ──►
|
|
717
|
+
│ analyst ──► tech-lead ──► (ADR)
|
|
824
718
|
│ │
|
|
825
719
|
│ │
|
|
826
720
|
│ ▼
|
|
@@ -843,8 +737,9 @@ Full details in [autonomy-matrix](autonomy-matrix).
|
|
|
843
737
|
│
|
|
844
738
|
┌───────────────────┼───────────────────┐
|
|
845
739
|
▼ ▼ ▼
|
|
846
|
-
|
|
847
|
-
|
|
740
|
+
api-integration-test prd-ready-check security-engineer
|
|
741
|
+
(skill) (skill) (veto at any point)
|
|
742
|
+
│
|
|
848
743
|
▼
|
|
849
744
|
release-engineer
|
|
850
745
|
│
|
|
@@ -859,8 +754,8 @@ Reading the diagram:
|
|
|
859
754
|
- `code-reviewer` recommends; only `tech-lead` merges.
|
|
860
755
|
- `security-engineer` has lateral entry — can issue veto at any point in the flow.
|
|
861
756
|
- `brain-keeper` is always the last step of the PLAN.
|
|
862
|
-
- `
|
|
863
|
-
- `auditor`
|
|
757
|
+
- `stack-resolver` runs at Step 0 of orchestrating skills — it resolves the stack pack before any specialist is dispatched.
|
|
758
|
+
- The `test-coverage-auditor` skill is an internal gate inside the `prd-ready-check` skill; both are skills, not agents.
|
|
864
759
|
|
|
865
760
|
---
|
|
866
761
|
|
|
@@ -884,9 +779,9 @@ model: opus | sonnet | haiku
|
|
|
884
779
|
|
|
885
780
|
3. **Write the description in English** (the rest of the prompt too), but **include 2-5 PT triggers** at the end of the `description`, in quotes, in the format `PT triggers: '...', '...'`. The project-manager matcher keys on those triggers.
|
|
886
781
|
|
|
887
|
-
4. **List required tools** with scoped Bash permissions (`Bash(mvn:*)`, not `Bash`). Avoid open `Bash` except when the agent must run arbitrary commands
|
|
782
|
+
4. **List required tools** with scoped Bash permissions (`Bash(mvn:*)`, not `Bash`). Avoid open `Bash` except when the agent must run arbitrary commands.
|
|
888
783
|
|
|
889
|
-
5. **Write the agent body** following the pattern of the
|
|
784
|
+
5. **Write the agent body** following the pattern of the 21 existing ones: "You decide. You don't ask." block at the top, mission, flow, numbered inviolable rules, interface with other agents, examples when useful.
|
|
890
785
|
|
|
891
786
|
6. **Register in `CLAUDE.md`** in the sections:
|
|
892
787
|
- "Sub-Agent Routing" table
|
|
@@ -115,8 +115,8 @@ The `model:` field is mandatory. The model-per-agent rule (defined in `CLAUDE.md
|
|
|
115
115
|
| Model | When to use | Agents |
|
|
116
116
|
|---|---|---|
|
|
117
117
|
| **Opus 4.7** | Irreversible decision, macro technical veto | `product-owner`, `tech-lead`, `security-engineer` |
|
|
118
|
-
| **Sonnet 4.6** | Implementation, decomposition, review, test, UI, recording | `
|
|
119
|
-
| **Haiku 4.5** | Scaffold, template, mechanical sync | `scaffold`, `update-template` |
|
|
118
|
+
| **Sonnet 4.6** | Implementation, decomposition, review, test, UI, recording | `analyst`, `backend-developer`, `frontend-developer`, `mobile-developer`, `n8n-specialist`, `ux-designer`, `database-engineer`, `devops-engineer`, `qa-engineer`, `code-reviewer`, `gate-keeper`, `sprint-runner`, `brain-keeper`, `release-engineer`, `migrator` |
|
|
119
|
+
| **Haiku 4.5** | Scaffold, template, mechanical sync, stack resolution | `scaffold`, `update-template`, `stack-resolver` |
|
|
120
120
|
|
|
121
121
|
Invocation happens via the Task tool, inside a Skill:
|
|
122
122
|
|
|
@@ -258,7 +258,7 @@ Captured metrics: agent name, model used, tokens in/out, duration, success/failu
|
|
|
258
258
|
|
|
259
259
|
## Cross-references
|
|
260
260
|
|
|
261
|
-
- [Agents reference](agents-reference) — full catalog of the
|
|
261
|
+
- [Agents reference](agents-reference) — full catalog of the 21 agents + responsibilities + model
|
|
262
262
|
- [Skills reference](skills-reference) — catalog of skills + triggers + outputs
|
|
263
263
|
- [Hooks reference](hooks-reference) — scripts in `scripts/hooks/` + matchers + behavior
|
|
264
264
|
- [Autonomy matrix](autonomy-matrix) — who decides what, when to escalate
|
|
@@ -41,13 +41,13 @@ Everything else fits below these two poles:
|
|
|
41
41
|
└──────┬──────┘ └──────┬──────┘
|
|
42
42
|
│ │
|
|
43
43
|
┌────────────┴──────┐ ┌────────────┼─────────────┐
|
|
44
|
-
│
|
|
45
|
-
▼
|
|
46
|
-
ux-designer
|
|
47
|
-
(Sonnet)
|
|
48
|
-
|
|
49
|
-
│
|
|
50
|
-
|
|
44
|
+
│ │ │ │
|
|
45
|
+
▼ ▼ ▼ ▼
|
|
46
|
+
ux-designer database- devops- security-
|
|
47
|
+
(Sonnet) engineer engineer engineer
|
|
48
|
+
(Sonnet) (Sonnet) (Opus, veto)
|
|
49
|
+
│ │ │ │
|
|
50
|
+
└──────────┬─────────────┴─────────────┴────────────┘
|
|
51
51
|
▼
|
|
52
52
|
backend-developer / frontend-developer / mobile-developer
|
|
53
53
|
(Sonnet)
|
|
@@ -80,7 +80,7 @@ For everything else (high/critical vuln, OWASP Top 10, missing security header,
|
|
|
80
80
|
|
|
81
81
|
### Specialists NEVER escalate to the human
|
|
82
82
|
|
|
83
|
-
The
|
|
83
|
+
The 18 specialist agents (analyst, backend-developer, frontend-developer, mobile-developer, database-engineer, devops-engineer, qa-engineer, code-reviewer, gate-keeper, ux-designer, n8n-specialist, sprint-runner, scaffold, stack-resolver, release-engineer, migrator, update-template, brain-keeper) **DO NOT escalate to human**.
|
|
84
84
|
|
|
85
85
|
The rule is:
|
|
86
86
|
- **Product** doubt → escalate to `product-owner`.
|
|
@@ -180,7 +180,7 @@ If they cannot agree, **PO has final say on scope, TL has final say on technical
|
|
|
180
180
|
|
|
181
181
|
## Cross-references
|
|
182
182
|
|
|
183
|
-
- [Agents reference](agents-reference) — full list of the
|
|
183
|
+
- [Agents reference](agents-reference) — full list of the 21 agents + model + responsibilities
|
|
184
184
|
- [Pipeline](pipeline) — where and how each agent shows up in the end-to-end flow
|
|
185
185
|
- [Quality gate](quality-gate) — thresholds that `gate-keeper` and `security-engineer` enforce without human
|
|
186
186
|
- [Architecture overview](architecture-overview) — 2-layer macro model
|
|
@@ -7,7 +7,7 @@ This document describes the full path. For trivial changes or hotfixes, shortcut
|
|
|
7
7
|
## Macro view
|
|
8
8
|
|
|
9
9
|
```
|
|
10
|
-
discovery → specification → planning → architecture → execution → validation → recording
|
|
10
|
+
discovery → specification → planning → architecture (tech-lead) → execution → validation → recording
|
|
11
11
|
│
|
|
12
12
|
▼
|
|
13
13
|
gate-keeper blocks
|
|
@@ -17,12 +17,12 @@ discovery → specification → planning → architecture → execution → vali
|
|
|
17
17
|
## Full pipeline diagram
|
|
18
18
|
|
|
19
19
|
```
|
|
20
|
-
┌──────────┐ ┌────────┐ ┌──────────┐ ┌─────────┐
|
|
21
|
-
│ grill-me │ -> │ to-prd │ -> │to-issues │ -> │ analyst │ -> │
|
|
22
|
-
│(skill) │ │(skill) │ │ (skill) │ │ (agent) │ │
|
|
23
|
-
└──────────┘ └────────┘ └──────────┘ └─────────┘
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
┌──────────┐ ┌────────┐ ┌──────────┐ ┌─────────┐ ┌──────────────────────┐
|
|
21
|
+
│ grill-me │ -> │ to-prd │ -> │to-issues │ -> │ analyst │ -> │ tech-lead │
|
|
22
|
+
│(skill) │ │(skill) │ │ (skill) │ │ (agent) │ │ (ADR + approve) │
|
|
23
|
+
└──────────┘ └────────┘ └──────────┘ └─────────┘ └────┬─────────────────┘
|
|
24
|
+
│
|
|
25
|
+
▼
|
|
26
26
|
┌────────────────────────────────────────────────────────┐
|
|
27
27
|
│ sprint-runner (skill+agent) │
|
|
28
28
|
│ ├─► qa-engineer (TDD: failing tests) │
|
|
@@ -131,17 +131,17 @@ Acceptance criteria:
|
|
|
131
131
|
- Estimates (in "complexity", not hours)
|
|
132
132
|
- Definition of Done per task
|
|
133
133
|
|
|
134
|
-
**Next step**: `
|
|
134
|
+
**Next step**: `tech-lead` — proposes an ADR if there is a new macro decision, or approves directly if it is only an established pattern.
|
|
135
135
|
|
|
136
136
|
⏸️ **Checkpoint**: human confirms the PLAN.
|
|
137
137
|
|
|
138
|
-
### 5. Architecture (`
|
|
138
|
+
### 5. Architecture + approval (`tech-lead`)
|
|
139
139
|
|
|
140
|
-
**When it fires**: PLAN includes a new macro decision (new lib, new pattern, new bounded context, relevant tech choice).
|
|
140
|
+
**When it fires**: PLAN includes a new macro decision (new lib, new pattern, new bounded context, relevant tech choice); or at the end of the PLAN when there are patterns to approve.
|
|
141
141
|
|
|
142
142
|
**Input**: PLAN + project context + prior decisions in `docs/decisions/`.
|
|
143
143
|
|
|
144
|
-
**
|
|
144
|
+
**How it works**: `tech-lead` owns both the architectural proposal and its approval. It writes the ADR following the MADR template:
|
|
145
145
|
- Status: Proposed
|
|
146
146
|
- Context
|
|
147
147
|
- Decision drivers
|
|
@@ -149,13 +149,7 @@ Acceptance criteria:
|
|
|
149
149
|
- Decision outcome
|
|
150
150
|
- Consequences
|
|
151
151
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
### 6. Approval (`tech-lead`)
|
|
155
|
-
|
|
156
|
-
**When it fires**: after `architect` produces an ADR; or at the end of the PLAN when there are patterns to approve.
|
|
157
|
-
|
|
158
|
-
**Input**: PLAN + proposed ADR(s).
|
|
152
|
+
It then accepts (Status: Accepted) or rejects (Status: Rejected → re-propose) the decision.
|
|
159
153
|
|
|
160
154
|
**Output**: ADR with Status: Accepted (or Rejected with reason). Updates `CLAUDE.md` if the decision changes a stack rule.
|
|
161
155
|
|
|
@@ -279,7 +273,7 @@ code-reviewer with bugs → back to developer
|
|
|
279
273
|
api-integration-test FAIL → back to `qa-engineer` to debug
|
|
280
274
|
prd-ready-check NO-GO → back to `gate-keeper` or specific specialist
|
|
281
275
|
tech-lead returns in review → back to developer
|
|
282
|
-
ADR rejected → back to
|
|
276
|
+
ADR rejected → back to tech-lead to re-propose
|
|
283
277
|
```
|
|
284
278
|
|
|
285
279
|
## Shortcuts
|
|
@@ -296,7 +290,7 @@ The full pipeline is for new features. Shortcuts exist for other cases:
|
|
|
296
290
|
### Hotfix in production
|
|
297
291
|
|
|
298
292
|
```
|
|
299
|
-
hotfix request →
|
|
293
|
+
hotfix request → tech-lead (quick proposal) → sprint-runner (1 task) → gate-keeper → tech-lead → merge → brain-keeper (bug entry)
|
|
300
294
|
```
|
|
301
295
|
|
|
302
296
|
- Skip `grill-me`/`to-prd`/`to-issues`.
|
|
@@ -355,11 +349,9 @@ Out of scope: batch signup.
|
|
|
355
349
|
- Sprint 1: backend (T1: migration, T2: service, T3: controller, T4: tests)
|
|
356
350
|
- Sprint 2: frontend (T1: component, T2: Angular service, T3: E2E)
|
|
357
351
|
|
|
358
|
-
**5. `
|
|
359
|
-
|
|
360
|
-
**6. `tech-lead`** — approves PLAN.
|
|
352
|
+
**5. `tech-lead`** — no new ADR needed (patterns already established); approves PLAN.
|
|
361
353
|
|
|
362
|
-
**
|
|
354
|
+
**6. `sprint-runner` Sprint 1** — dispatches in parallel:
|
|
363
355
|
- `qa-engineer` writes JUnit tests for Service + controller
|
|
364
356
|
- `database-engineer` generates `V20260527_001__create_product.sql`
|
|
365
357
|
- `backend-developer` implements Service + Controller + DTOs (record)
|
|
@@ -371,11 +363,11 @@ After 30 min, `gate-keeper` runs:
|
|
|
371
363
|
- SpotBugs: 0 issues ✓
|
|
372
364
|
- OWASP DC: 0 CVE ✓
|
|
373
365
|
|
|
374
|
-
**
|
|
366
|
+
**7. `code-reviewer`** suggests extracting unique-name validation to a domain service. `backend-developer` applies.
|
|
375
367
|
|
|
376
|
-
**
|
|
368
|
+
**8. `tech-lead`** approves Sprint 1.
|
|
377
369
|
|
|
378
|
-
**
|
|
370
|
+
**9. `sprint-runner` Sprint 2** — dispatches:
|
|
379
371
|
- `qa-engineer` writes Playwright E2E + jest-axe component test
|
|
380
372
|
- `ux-designer` produces wireframe + tokens
|
|
381
373
|
- `frontend-developer` implements component (3 files: `.ts`, `.html`, `.scss`)
|
|
@@ -389,13 +381,13 @@ After 30 min, `gate-keeper` runs:
|
|
|
389
381
|
- LCP: 1820ms ✓, CLS: 0.04 ✓, TBT: 210ms ✓
|
|
390
382
|
- E2E pyramid: 18% ✓
|
|
391
383
|
|
|
392
|
-
**
|
|
384
|
+
**10. `api-integration-test`** boots local stack, validates POST + UI via Chrome MCP. Clean console.
|
|
393
385
|
|
|
394
|
-
**
|
|
386
|
+
**11. `prd-ready-check`** returns GO.
|
|
395
387
|
|
|
396
|
-
**
|
|
388
|
+
**12. `tech-lead`** approves merge. Human triggers merge on GitHub.
|
|
397
389
|
|
|
398
|
-
**
|
|
390
|
+
**13. `brain-keeper`** updates `docs/brain/`:
|
|
399
391
|
- `features/product-signup.md` — feature summary
|
|
400
392
|
- `daily/2026-05-27.md` — daily entry
|
|
401
393
|
- `MOC.md` — link to `product-signup` under Catalog
|
|
@@ -46,7 +46,7 @@ Matt's original design surfaced hidden requirements that prompt-only conversatio
|
|
|
46
46
|
Three pre-existing problems in our pipeline made grill-me an obvious fit:
|
|
47
47
|
|
|
48
48
|
- **PRD authoring used to start from a single user paragraph.** Result: under-specified scope, edge cases discovered late, sprint rework. Grill-me forces the user to confront ambiguity *before* the PRD exists.
|
|
49
|
-
- **Planning agents (`analyst`, `
|
|
49
|
+
- **Planning agents (`analyst`, `tech-lead`) need a structured input.** Free-form prompts make them hallucinate constraints. Grill-me produces a structured `DISCOVERY_*.md` that `analyst` can consume deterministically.
|
|
50
50
|
- **The interview pattern was already proven viral.** Reproducing it from scratch would have taken weeks, with no clear UX improvement.
|
|
51
51
|
|
|
52
52
|
We did not modify the interview mechanic, the recommended-answer pattern, the rubber-duck framing, or the conversational tone. Those are Matt's design.
|
|
@@ -298,7 +298,7 @@ Summary of what `gate-keeper` enforces, in order:
|
|
|
298
298
|
|
|
299
299
|
1. `product-owner` decides requirements.
|
|
300
300
|
2. `analyst` produces PLAN_*.md with goal-ready DoD.
|
|
301
|
-
3. `
|
|
301
|
+
3. `tech-lead` proposes ADR when there is a macro decision and approves it.
|
|
302
302
|
4. `sprint-runner` executes Sprint N delegating to `backend-developer` + `frontend-developer` + `database-engineer` in parallel; `qa-engineer` writes tests.
|
|
303
303
|
5. `gate-keeper` generates missing tests + runs the full senior+ gate (coverage, mutation, a11y, Lighthouse, pyramid).
|
|
304
304
|
6. `code-reviewer` does initial review.
|
|
@@ -41,7 +41,7 @@ This document covers the 18 official skills of the harness, grouped by purpose.
|
|
|
41
41
|
|
|
42
42
|
**What it does**: reads the intent, decides one of three modes (per ADR-033), and dispatches accordingly:
|
|
43
43
|
|
|
44
|
-
- **ROUTE** (single-domain task) → picks ONE specialist from the routing table (`analyst`, `
|
|
44
|
+
- **ROUTE** (single-domain task) → picks ONE specialist from the routing table (`analyst`, `backend-developer`, `frontend-developer`, `code-reviewer`, `database-engineer`, `devops-engineer`, `mobile-developer`, `n8n-specialist`, `product-owner`, `qa-engineer`, `security-engineer`, `tech-lead`, `ux-designer`, `migrator`, `release-engineer`), announces the choice in one line, and dispatches via the `Task` tool.
|
|
45
45
|
- **ORCHESTRATE** (multi-domain ad-hoc task, ≤5 subtasks) → prints a mini-plan inline (table: Subtask | Agent | Mode `[PAR]`/`[SEQ]` | Touches | Depends on) and dispatches multiple `Task` calls in parallel. Each parallel subtask must touch disjoint paths and have no output dependency on a sibling; otherwise it gets marked `[SEQ]`. No `PLAN_*.md` is generated.
|
|
46
46
|
- **ESCALATE** (>5 subtasks, formal `PLAN_*.md` needed, or any subtask requires further decomposition) → refuses inline, suggests `grill-me` → `analyst` → `sprint-runner` chain.
|
|
47
47
|
|
|
@@ -374,8 +374,7 @@ Standard feature flow, from zero to deploy:
|
|
|
374
374
|
│
|
|
375
375
|
▼
|
|
376
376
|
[auto] project-manager → analyst → docs/plans/PLAN_<name>.md
|
|
377
|
-
|
|
378
|
-
tech-lead (approves)
|
|
377
|
+
tech-lead (ADR + approve) → docs/decisions/ADR-NNN.md
|
|
379
378
|
│
|
|
380
379
|
▼
|
|
381
380
|
[manual] run-sprint → sprint-runner
|
|
@@ -583,7 +583,7 @@ correctly in case of conflict.
|
|
|
583
583
|
| `migrator` | Sonnet 4.6 | Java 8/11/17 → 25, Spring Boot 2/3 → 4 |
|
|
584
584
|
| `sprint-runner` | Sonnet 4.6 | Orchestrates the sprint, delegates in parallel |
|
|
585
585
|
| `brain-keeper` | Sonnet 4.6 | History in `docs/brain/` |
|
|
586
|
-
| `
|
|
586
|
+
| `update-template` | Haiku 4.5 | Audits/syncs `.claude/` against the template |
|
|
587
587
|
| `release-engineer` | Sonnet 4.6 | Version bump, CHANGELOG, tag |
|
|
588
588
|
| `scaffold` | Haiku 4.5 | Initial scaffold pipeline |
|
|
589
589
|
|
|
@@ -162,10 +162,11 @@ harness for offline reference.
|
|
|
162
162
|
From here the chat has access to all agents/skills. Recommended first prompt:
|
|
163
163
|
|
|
164
164
|
```text
|
|
165
|
-
|
|
165
|
+
update the template
|
|
166
166
|
```
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
The `update-template` agent compares the `.claude/` structure against the
|
|
169
|
+
template and confirms the install came out clean.
|
|
169
170
|
|
|
170
171
|
## 3. Onboarding — project ALREADY HAS `.claude/`
|
|
171
172
|
|
|
@@ -275,11 +276,11 @@ You just installed the harness. Before touching code, audit the state.
|
|
|
275
276
|
|
|
276
277
|
```text
|
|
277
278
|
You:
|
|
278
|
-
|
|
279
|
+
update the template
|
|
279
280
|
|
|
280
|
-
Claude (
|
|
281
|
+
Claude (update-template):
|
|
281
282
|
> Diff vs template development-utility-kit v5.18.0:
|
|
282
|
-
> .claude/agents/:
|
|
283
|
+
> .claude/agents/: 21 agents, all up to date ✓
|
|
283
284
|
> .claude/skills/: 18 skills, 1 outdated:
|
|
284
285
|
> - auto-test-guard V5.13 (current V5.18) — pyramid ratio gate missing
|
|
285
286
|
> CLAUDE.md: Project Identity OK ✓
|
|
@@ -347,7 +348,7 @@ Claude (brain-keeper):
|
|
|
347
348
|
> docs/brain/ provisioned:
|
|
348
349
|
> ├── MOC.md (map of content)
|
|
349
350
|
> ├── architecture/
|
|
350
|
-
> │ ├── tech-debt.md (auditor report)
|
|
351
|
+
> │ ├── tech-debt.md (test-coverage-auditor report)
|
|
351
352
|
> │ └── decisions.md (ADR index)
|
|
352
353
|
> ├── features/
|
|
353
354
|
> ├── daily/2026-05-27.md
|
|
@@ -442,7 +443,7 @@ Claude (grill-me):
|
|
|
442
443
|
> Output: docs/discovery/DISCOVERY-csv-export-sales.md
|
|
443
444
|
```
|
|
444
445
|
|
|
445
|
-
From here the flow is standard (analyst →
|
|
446
|
+
From here the flow is standard (analyst → tech-lead → sprint-runner →
|
|
446
447
|
gate-keeper → code-reviewer → tech-lead). See `pipeline.en.md` for details.
|
|
447
448
|
|
|
448
449
|
## 7. Workflow 3 — Stack migration (migrator)
|
|
@@ -600,7 +601,7 @@ All trigger the `update-template` agent (haiku). Result identical to CLI.
|
|
|
600
601
|
- ALWAYS on a dedicated branch (`chore/update-harness-<date>`)
|
|
601
602
|
- Review diff in `.claude/settings.json` (hooks can change behavior)
|
|
602
603
|
- Confirm `## Project Identity` in `CLAUDE.md` is intact
|
|
603
|
-
- Run `
|
|
604
|
+
- Run `duk lint` afterwards to validate the `.claude/` structure
|
|
604
605
|
- Test 1-2 critical skills before merge (`audit the tests`, `run the tests`)
|
|
605
606
|
- Keep `.claude.backup-*` backup for 7 days before removing
|
|
606
607
|
|
|
@@ -610,7 +611,7 @@ All trigger the `update-template` agent (haiku). Result identical to CLI.
|
|
|
610
611
|
|---|---|
|
|
611
612
|
| Adopt project without .claude/ | `duk install` (terminal) OR `update-template` (chat) |
|
|
612
613
|
| Update template | `duk install` (terminal) OR `update the template` (chat) |
|
|
613
|
-
| Compare with official template | `
|
|
614
|
+
| Compare with official template | `duk lint` (terminal) OR `update the template` (chat) |
|
|
614
615
|
| Audit coverage | `audit the tests` |
|
|
615
616
|
| Prioritize debt | `tech-lead prioritizes P0/P1` |
|
|
616
617
|
| Generate missing tests | `gate-keeper generates tests for P0` |
|
|
@@ -744,8 +745,8 @@ conflict on the next merge.
|
|
|
744
745
|
| `duk install` fails with "not a git repo" | Target directory isn't a git repo | `git init` or abort — installer requires git |
|
|
745
746
|
| `duk install` fails with `git pull` error | Target directory has pending changes | `git commit` or `git stash` first |
|
|
746
747
|
| Directory exists but isn't a git repo | Detected but invalid | Installer aborts with exit 1 — init git or remove directory |
|
|
747
|
-
| `
|
|
748
|
-
| `
|
|
748
|
+
| `update-template` reports outdated agents | Template evolved | `duk install` re-injects |
|
|
749
|
+
| `update-template` reports custom skills deleted | Overwritten by update | Restore from `.claude.backup-<date>/skills/` |
|
|
749
750
|
| `migrator` refuses to start | Gate baseline isn't GREEN | `run the tests`, pay debt, try again |
|
|
750
751
|
| `test-coverage-auditor` returns P0 | Business rules without tests | DO NOT skip; generate tests (`gate-keeper generates...`) OR create a documented acceptance ADR |
|
|
751
752
|
| `update-template` botched `CLAUDE.md` merge | Conflict in automatic merge | `cp CLAUDE.md.bak.<date> CLAUDE.md` + manual section merge |
|
|
@@ -821,7 +821,7 @@ Full details in `[Mobile](mobile)`.
|
|
|
821
821
|
| Wireframe / screen flow | `wireframe for <screen>` |
|
|
822
822
|
| Refactor component | `refactor <ComponentName>` |
|
|
823
823
|
| Standalone a11y audit | `accessibility audit on <feature>` |
|
|
824
|
-
| Macro ADR (signal vs RxJS, etc.) | `
|
|
824
|
+
| Macro ADR (signal vs RxJS, etc.) | `tech-lead proposes ADR for <decision>` |
|
|
825
825
|
| Remember preference | `remember that <X>` |
|
|
826
826
|
| Record history | `record in brain` |
|
|
827
827
|
| Stop caveman | `stop caveman` |
|
|
@@ -1015,7 +1015,7 @@ Full reference: `[Hooks reference](../docs/hooks-reference)`.
|
|
|
1015
1015
|
- `[Architecture](../docs/architecture-overview)` — harness macro view
|
|
1016
1016
|
- `[Agents reference](../docs/agents-reference)` — full agent list
|
|
1017
1017
|
- `[Skills reference](../docs/skills-reference)` — full skill list
|
|
1018
|
-
- `[Pipeline](../docs/pipeline)` — PO → analyst →
|
|
1018
|
+
- `[Pipeline](../docs/pipeline)` — PO → analyst → tech-lead → run-sprint → gate-keeper flow
|
|
1019
1019
|
- `[Quality gate](../docs/quality-gate)` — detailed senior+ thresholds
|
|
1020
1020
|
- `[Stack rules](../docs/stack-rules)` — Angular/Spring/etc. conventions
|
|
1021
1021
|
- `[Hooks reference](../docs/hooks-reference)` — active Git hooks
|
|
@@ -18,7 +18,7 @@ a project with:
|
|
|
18
18
|
`ng-bootstrap`).
|
|
19
19
|
- **PostgreSQL 17** + **Redis 7** via `docker-compose`.
|
|
20
20
|
- Shared types via `openapi-typescript` (generated from `/v3/api-docs`).
|
|
21
|
-
- Workflow driven by Cowork / Claude Code agents (analyst,
|
|
21
|
+
- Workflow driven by Cowork / Claude Code agents (analyst,
|
|
22
22
|
backend-developer, frontend-developer, qa-engineer, gate-keeper,
|
|
23
23
|
tech-lead, etc.).
|
|
24
24
|
|
|
@@ -172,7 +172,7 @@ my-fullstack/
|
|
|
172
172
|
│ ├── prd/ ← PRD_*.md (to-prd skill)
|
|
173
173
|
│ ├── issues/ ← ISSUES_*.md (to-issues skill)
|
|
174
174
|
│ ├── plans/ ← PLAN_*.md (analyst agent)
|
|
175
|
-
│ ├── decisions/ ← ADR-NNN-<slug>.md (
|
|
175
|
+
│ ├── decisions/ ← ADR-NNN-<slug>.md (tech-lead)
|
|
176
176
|
│ └── brain/ ← Obsidian vault (brain-keeper agent)
|
|
177
177
|
│ ├── daily/
|
|
178
178
|
│ ├── features/
|
|
@@ -180,7 +180,7 @@ my-fullstack/
|
|
|
180
180
|
│ ├── decisions/
|
|
181
181
|
│ └── architecture/tech-debt.md
|
|
182
182
|
├── .claude/ ← harness config
|
|
183
|
-
│ ├── agents/ ←
|
|
183
|
+
│ ├── agents/ ← 21 agents
|
|
184
184
|
│ ├── skills/ ← 18 skills
|
|
185
185
|
│ ├── hooks/ ← PreToolUse, PostToolUse, etc.
|
|
186
186
|
│ └── settings.json
|
|
@@ -899,7 +899,7 @@ Edit `CLAUDE.md`:
|
|
|
899
899
|
In chat:
|
|
900
900
|
|
|
901
901
|
```text
|
|
902
|
-
> "
|
|
902
|
+
> "update the template"
|
|
903
903
|
> "test-coverage-auditor, audit test debt"
|
|
904
904
|
> "tech-lead, prioritize P0/P1"
|
|
905
905
|
> "migrate to Spring Boot 4 + Angular 21" (optional)
|
|
@@ -1152,13 +1152,13 @@ Big table, ordered by intent.
|
|
|
1152
1152
|
| Intent | Example trigger | Skill / Agent |
|
|
1153
1153
|
|---|---|---|
|
|
1154
1154
|
| New monorepo from scratch | `scaffold the monorepo` | `bootstrap-fullstack` |
|
|
1155
|
-
| Adopt existing project | `duk install` (CLI) + `
|
|
1155
|
+
| Adopt existing project | `duk install` (CLI) + `update the template` | `update-template` agent |
|
|
1156
1156
|
| Non-interactive adoption | `duk install` (per project) / `duk sync-all` (batch) | `duk` CLI |
|
|
1157
1157
|
| Idea discovery | `grill me about <X>` | `grill-me` |
|
|
1158
1158
|
| Generate PRD | `generate PRD` | `to-prd` |
|
|
1159
1159
|
| PRD into issues | `break into issues` | `to-issues` |
|
|
1160
1160
|
| Technical plan (Sprint) | `analyst, generate the plan` | `analyst` agent |
|
|
1161
|
-
| Decision ADR | `
|
|
1161
|
+
| Decision ADR | `tech-lead, propose an ADR for <X>` | `tech-lead` agent |
|
|
1162
1162
|
| Implement Sprint N | `run sprint <N> of PLAN_<X>.md` | `run-sprint` |
|
|
1163
1163
|
| Backend feature | `backend-developer, create endpoint <X>` | `backend-developer` agent |
|
|
1164
1164
|
| Frontend feature | `frontend-developer, create screen <X>` | `frontend-developer` agent |
|
|
@@ -679,11 +679,10 @@ Tests missing? -> run tests
|
|
|
679
679
|
|---|---|---|
|
|
680
680
|
| `mobile-developer` | Sonnet 4.6 | React Native 0.84+, Expo SDK 54+, New Architecture, TS strict, Reanimated 4, FlashList 2 |
|
|
681
681
|
| `ux-designer` | Sonnet 4.6 | Mobile-specific: touch targets (>= 44pt), safe area, dynamic type, dark mode |
|
|
682
|
-
| `architect` | Sonnet 4.6 | State mgmt (Zustand vs TanStack vs Jotai), navigation pattern, OTA strategy |
|
|
683
682
|
| `qa-engineer` | Sonnet 4.6 | Jest + RN Testing Library + Detox/Maestro |
|
|
684
683
|
| `gate-keeper` | Sonnet 4.6 | Senior+ gate adapted for mobile (Detox flakiness tolerated) |
|
|
685
684
|
| `devops-engineer` | Sonnet 4.6 | EAS Build, EAS Submit, EAS Update, fastlane (if bare workflow) |
|
|
686
|
-
| `tech-lead` | Opus 4.7 | Mobile stack decision, OTA strategy, native breaking changes |
|
|
685
|
+
| `tech-lead` | Opus 4.7 | Mobile stack decision, state mgmt (Zustand vs TanStack vs Jotai), navigation pattern, OTA strategy, native breaking changes |
|
|
687
686
|
| `product-owner` | Opus 4.7 | Scope, MVP iOS-first vs Android-first, mobile persona |
|
|
688
687
|
| `security-engineer` | Opus 4.7 | SecureStore, jailbreak/root detection, certificate pinning, OWASP MASVS |
|
|
689
688
|
| `database-engineer` | Sonnet 4.6 | MMKV schema, AsyncStorage migration, encrypted local DB (SQLite + sqlcipher) |
|
|
@@ -823,7 +822,7 @@ Check:
|
|
|
823
822
|
## Cross references
|
|
824
823
|
|
|
825
824
|
- [Architecture overview](../docs/architecture-overview) — 2-layer model (skill + agent)
|
|
826
|
-
- [Agents reference](../docs/agents-reference) — all
|
|
825
|
+
- [Agents reference](../docs/agents-reference) — all 21 agents
|
|
827
826
|
- [Skills reference](../docs/skills-reference) — all 18 skills
|
|
828
827
|
- [Pipeline](../docs/pipeline) — end-to-end flow
|
|
829
828
|
- [Quality gate](../docs/quality-gate) — senior+ thresholds
|
|
@@ -151,7 +151,7 @@ You just installed the harness, scaffolded or adopted a project, ran your first
|
|
|
151
151
|
|---|---|
|
|
152
152
|
| "How do skills know when to fire?" | [architecture-overview](../docs/architecture-overview) — 3-layer model, keyword matching, agent dispatch |
|
|
153
153
|
| "What skill should I use for X?" | [skills-reference](../docs/skills-reference) — full catalog, per-skill triggers, when NOT to use |
|
|
154
|
-
| "Which agent does what?" | [agents-reference](../docs/agents-reference) —
|
|
154
|
+
| "Which agent does what?" | [agents-reference](../docs/agents-reference) — 21 agents grouped by domain authority |
|
|
155
155
|
| "What is the discovery → delivery pipeline?" | [pipeline](../docs/pipeline) — full canonical flow + shortcuts for small features |
|
|
156
156
|
| "Who decides what, when do I get interrupted?" | [autonomy-matrix](../docs/autonomy-matrix) — the master rule |
|
|
157
157
|
| "Why these external plugins?" | [plugins](../docs/plugins) — selection rationale for grill-me, caveman, impeccable, rtk |
|
|
@@ -184,7 +184,7 @@ For deeper problems: [troubleshooting](../docs/troubleshooting).
|
|
|
184
184
|
|
|
185
185
|
## What this guide skipped on purpose
|
|
186
186
|
|
|
187
|
-
- The
|
|
187
|
+
- The canonical pipeline (`grill-me → to-prd → to-issues → analyst → tech-lead → sprint-runner → gate-keeper → code-reviewer → tech-lead → brain-keeper`). For 99% of tasks you do not invoke it directly — `project-manager` handles routing. Read [pipeline](../docs/pipeline) when you need the formal flow.
|
|
188
188
|
- 34 ADRs. They explain why each architectural choice was made. Read them when you are evaluating whether to adopt the harness for a serious project, or when you propose a change. Not required for daily use.
|
|
189
189
|
- The senior+ quality gate thresholds (coverage ≥85%, mutation ≥70%, a11y, Lighthouse). They run when `gate-keeper` is invoked — you do not need to memorize them.
|
|
190
190
|
|