@eltonssouza/development-utility-kit 0.10.0 → 0.10.1
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/.claude/skills/README.md +9 -9
- package/README.md +7 -2
- package/bin/cli.js +20 -0
- package/dashboard/public/content/docs/architecture-overview.en.md +10 -10
- package/dashboard/public/content/docs/skills-reference.en.md +4 -4
- package/dashboard/public/content/docs/troubleshooting.en.md +2 -2
- package/dashboard/public/content/manual/backend.en.md +1 -1
- package/dashboard/public/content/manual/frontend.en.md +2 -2
- package/dashboard/public/content/manual/fullstack.en.md +3 -4
- package/dashboard/public/content/manual/mobile.en.md +3 -3
- package/dashboard/public/content/manual/quickstart.en.md +1 -1
- package/dashboard/public/favicon.svg +39 -0
- package/dashboard/public/index.html +1 -0
- package/package.json +1 -1
package/.claude/skills/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Skills — Cowork + Claude Code
|
|
2
2
|
|
|
3
|
-
> **Breaking change (2026-05-25)**: command layer deleted. Architecture is now 100% Skills + Agents. The `project-manager` skill is the
|
|
3
|
+
> **Breaking change (2026-05-25)**: command layer deleted. Architecture is now 100% Skills + Agents. The `project-manager` skill is the **front-controller** entry point (ADR-041): it intercepts every prompt, enforces the flow order, and routes/orchestrates to the appropriate specialist agent(s). Specific skills (run-sprint, auto-test-guard, prd-ready-check, grill-me, scaffold, pair-debug, api-integration-test, brain-keeper, test-coverage-auditor, update-template, active-project, caveman) still take priority via keyword match. Standard sprint flow: `analyst` (plan) → `tech-lead` (ADR + approve) → `sprint-runner` (executes Sprint N delegating to `backend-developer` + `frontend-developer` + `database-engineer` in parallel) → `gate-keeper` (gate senior+) → `code-reviewer` → `tech-lead` (merge).
|
|
4
4
|
|
|
5
5
|
This directory contains the **Skills** that Cowork and Claude Code use to develop fullstack software Java 25+ / Spring Boot 4.0+ / Angular 21+ with this template's standard flow.
|
|
6
6
|
|
|
@@ -15,7 +15,7 @@ When the user describes a task, Cowork must **deliver it 100% production-ready f
|
|
|
15
15
|
| Skill | Purpose | Triggers with |
|
|
16
16
|
|---|---|---|
|
|
17
17
|
| [`scaffold`](scaffold/SKILL.md) | Unified scaffold entry point — reads `## Project Identity` from CLAUDE.md, runs the appropriate pipeline: fullstack monorepo (Spring Boot 4 + Angular 21 + Docker Compose), backend-only, or frontend-only | "scaffold the project", "scaffold backend", "scaffold frontend", "bootstrap fullstack", "monta o esqueleto", "scaffolda o projeto" |
|
|
18
|
-
| [`sprint
|
|
18
|
+
| [`run-sprint`](run-sprint/SKILL.md) | Thin trigger → dispatches the `sprint-runner` agent (single execution contract, ADR-042) | "run sprint X", "execute the sprint" |
|
|
19
19
|
| [`api-integration-test`](api-integration-test/SKILL.md) | Boots backend + frontend, validates integration with curl + Chrome MCP | "test integration", "smoke", "validate flow" |
|
|
20
20
|
| [`gate-keeper`](auto-test-guard/SKILL.md) | At the end of each task: **generates** the automated tests for the new code (JUnit+Mockito+Testcontainers, Jest+Testing Library, Playwright) and **runs the full project regression suite**. Blocks the task if any test breaks. | "run the tests", "generate the tests", "test everything", "full suite", "ensure nothing broke", "auto-test" |
|
|
21
21
|
| [`test-coverage-auditor`](test-coverage-auditor/SKILL.md) | Audits test coverage, flags technical debt from manual verification, updates `tech-debt.md`. Mandatory gate inside `prd-ready-check`. | "audit the tests", "test debt?", "coverage ok?", "list what has no test" |
|
|
@@ -28,7 +28,7 @@ When the user describes a task, Cowork must **deliver it 100% production-ready f
|
|
|
28
28
|
| [`caveman`](caveman/SKILL.md) | Telegraphic output style — drops articles, filler, pleasantries. 65-75% fewer tokens. Always active; adjustable via "caveman lite\|full\|ultra" or "stop caveman". | Passive (always active); "caveman lite", "caveman ultra", "stop caveman" |
|
|
29
29
|
| [`to-prd`](to-prd/SKILL.md) | Transforms a `DISCOVERY_*.md` into a Product Requirements Document. Requires `grill-me` to have run first. Produces `docs/prd/PRD_*.md` with six required sections: Overview, Goals, User Stories (prose), Functional Requirements, Non-functional Requirements, Out of scope. Idempotent. Opt-in only — never auto-triggered. | "to-prd", "gera PRD", "cria PRD", "generate PRD", "create PRD" |
|
|
30
30
|
| [`to-issues`](to-issues/SKILL.md) | Decomposes a `PRD_*.md` into trackable GitHub issues. Requires `to-prd` to have run first. Produces `docs/issues/ISSUES_*.md` with `[ISSUE-N]` blocks (Labels, Body, Acceptance criteria) ready for `gh issue create`. Idempotent. Opt-in only — never auto-triggered. | "to-issues", "quebra em issues", "gera issues", "break into issues", "generate issues" |
|
|
31
|
-
| [`project-manager`](project-manager/SKILL.md) | **
|
|
31
|
+
| [`project-manager`](project-manager/SKILL.md) | **Front-controller router + orchestrator** (ADR-041 + ADR-033). Intercepts every prompt and enforces the flow order. Three modes: **ROUTE** (1 domain -> 1 specialist via Task tool), **ORCHESTRATE** (2-5 domains -> mini-plan inline + parallel Task calls, no PLAN_*.md), **ESCALATE** (>5 subtasks or formal plan needed -> grill-me -> analyst -> sprint-runner). Covers the 17 specialist agents (`analyst`, `tech-lead`, `backend-developer`, `frontend-developer`, `code-reviewer`, `database-engineer`, `devops-engineer`, `mobile-developer`, `n8n-specialist`, `product-owner`, `qa-engineer`, `security-engineer`, `ux-designer`, `migrator`, `release-engineer`, `auditor`). | "create endpoint", "review my code", "dockerize", "audit security", "design DB", "create mobile app", "n8n workflow", "wireframe", "migrate spring boot 2", ad-hoc multi-domain <=5 subtasks ("CRUD products", "back + front pequenos"), any task without a more specific skill |
|
|
32
32
|
|
|
33
33
|
## Where the code is generated
|
|
34
34
|
|
|
@@ -139,7 +139,7 @@ There is no need to call explicitly — just describe the task. If you want to f
|
|
|
139
139
|
|
|
140
140
|
## Canonical precedence — skill ↔ agent
|
|
141
141
|
|
|
142
|
-
Two-layer architecture. Commands layer was deleted on 2026-05-25 (replaced by the `project-manager` skill
|
|
142
|
+
Two-layer architecture. Commands layer was deleted on 2026-05-25 (replaced by the `project-manager` skill, now the front-controller per ADR-041).
|
|
143
143
|
|
|
144
144
|
| Layer | Role | Trigger | Owns what |
|
|
145
145
|
|---|---|---|---|
|
|
@@ -166,7 +166,7 @@ USER MESSAGE
|
|
|
166
166
|
│ caveman, pair-debug, project-manager, active-project,
|
|
167
167
|
│ prd-ready-check, api-integration-test, test-coverage-auditor
|
|
168
168
|
│
|
|
169
|
-
└─ no
|
|
169
|
+
└─ no specific skill → PROJECT-MANAGER SKILL (front-controller, ADR-041)
|
|
170
170
|
↓ analyzes prompt, picks ONE specialist
|
|
171
171
|
↓ Task(subagent_type="<agent>")
|
|
172
172
|
AGENT (executor)
|
|
@@ -256,7 +256,7 @@ A skill with **no companion agent**. It executes its logic inline (Bash, Read, W
|
|
|
256
256
|
| Category | Description | Examples |
|
|
257
257
|
|---|---|---|
|
|
258
258
|
| **Mode/style** | Changes the output style of the parent session, not a task | `caveman` |
|
|
259
|
-
| **Router** |
|
|
259
|
+
| **Router/front-controller** | Intercepts every prompt, enforces flow order, dispatches (no fixed agent target) | `project-manager` |
|
|
260
260
|
| **Inline transform** | Short-lived transformation that doesn't warrant a dedicated agent | `active-project` |
|
|
261
261
|
| **Interview / generation** | Multi-turn interview + file write, no persistent agent needed | `pair-debug`, `to-prd`, `to-issues`, `grill-me`* |
|
|
262
262
|
|
|
@@ -268,7 +268,7 @@ A skill with **no companion agent**. It executes its logic inline (Bash, Read, W
|
|
|
268
268
|
|---|---|
|
|
269
269
|
| `caveman` | Mode — output style toggle |
|
|
270
270
|
| `pair-debug` | Inline transform — hypothesis loop, no persistent executor |
|
|
271
|
-
| `project-manager` | Router —
|
|
271
|
+
| `project-manager` | Router/front-controller (ADR-041) — intercepts every prompt; fixed agent target undefined by design |
|
|
272
272
|
| `active-project` | Inline transform — fast-lane adoption, no dedicated agent |
|
|
273
273
|
| `prd-ready-check` | Inline gate — production checklist executed in the calling session (per ADR-037); needs Chrome MCP + Bash inline, would lose tools if dispatched to a child |
|
|
274
274
|
| `api-integration-test` | Inline probes — docker compose + curl + Chrome MCP run in the calling session (per ADR-037); dispatch to a child would lose Chrome MCP access |
|
|
@@ -289,7 +289,7 @@ When a skill+agent pair shares a name (Pattern 1), the split between skill (inte
|
|
|
289
289
|
|
|
290
290
|
### D3 — Defer promotion (specialist agents stay agent-only)
|
|
291
291
|
|
|
292
|
-
Specialist agents (`release-engineer`, `migrator`, `code-reviewer`, `security-engineer`, etc.) remain **agent-only** — routed via `project-manager`
|
|
292
|
+
Specialist agents (`release-engineer`, `migrator`, `code-reviewer`, `security-engineer`, etc.) remain **agent-only** — routed via the `project-manager` front-controller. Promote a specialist to a paired skill only when **both** conditions are met:
|
|
293
293
|
|
|
294
294
|
1. Telemetry or repeated session history shows direct keyword invocation for this specialist that bypasses `project-manager`.
|
|
295
295
|
2. The specialist has gained a ceremony of **three or more distinct phases** that benefit from a named orchestration entry point.
|
|
@@ -313,7 +313,7 @@ A new standalone skill (Pattern 3) MUST declare its justification category from
|
|
|
313
313
|
|
|
314
314
|
## Claude Code (terminal) usage
|
|
315
315
|
|
|
316
|
-
Skills auto-trigger via `description` keywords. To force a specific skill, type `/skill <name>` (Claude Code) or mention by name ("use the `analyst` skill"). The `project-manager` skill catches anything that did not match a more specific skill.
|
|
316
|
+
Skills auto-trigger via `description` keywords. To force a specific skill, type `/skill <name>` (Claude Code) or mention by name ("use the `analyst` skill"). The `project-manager` skill is the front-controller (ADR-041): it intercepts every prompt and enforces the flow order, and also catches anything that did not match a more specific skill.
|
|
317
317
|
|
|
318
318
|
## Conventions of each SKILL.md
|
|
319
319
|
|
package/README.md
CHANGED
|
@@ -10,9 +10,14 @@
|
|
|
10
10
|
[](https://github.com/eltonssouza/development-utility-kit/issues)
|
|
11
11
|
[](ROADMAP.md)
|
|
12
12
|
[](docs/COMPARISONS.md)
|
|
13
|
+
[](https://github.com/eltonssouza/development-utility-kit/releases/latest)
|
|
13
14
|
|
|
14
15
|
CLI binary: `duk` · Node `>=18` · License: MIT
|
|
15
16
|
|
|
17
|
+
```bash
|
|
18
|
+
npx @eltonssouza/development-utility-kit install
|
|
19
|
+
```
|
|
20
|
+
|
|
16
21
|
---
|
|
17
22
|
|
|
18
23
|
## What it is
|
|
@@ -92,7 +97,7 @@ to-issues → docs/issues/ISSUES_<NAME>.md (gh issue create-ready)
|
|
|
92
97
|
↓
|
|
93
98
|
analyst → docs/plans/PLAN_<NAME>.md (goal-ready DoD)
|
|
94
99
|
↓
|
|
95
|
-
run-sprint
|
|
100
|
+
run-sprint (thin) → sprint-runner (single execution contract; mandatory TDD, Stage 0 stack-resolver)
|
|
96
101
|
↓
|
|
97
102
|
gate-keeper → Senior+ gate (coverage, mutation, a11y, lighthouse, pyramid)
|
|
98
103
|
↓
|
|
@@ -277,7 +282,7 @@ Reference: ADR-007 (a11y + Lighthouse + pyramid), ADR-027 (pack `## Security` ma
|
|
|
277
282
|
```
|
|
278
283
|
development-utility-kit/
|
|
279
284
|
├── .claude/
|
|
280
|
-
│ ├── skills/ # 20 skills (
|
|
285
|
+
│ ├── skills/ # 20 skills (project-manager front-controller, run-sprint, stack-discovery, ...)
|
|
281
286
|
│ ├── agents/ # 21 agents (Opus/Sonnet/Haiku per matrix)
|
|
282
287
|
│ ├── stacks/ # 5 stack packs (java/spring-boot-3, spring-boot-4; typescript/angular-18,19,21)
|
|
283
288
|
│ │ ├── _template.md
|
package/bin/cli.js
CHANGED
|
@@ -415,6 +415,26 @@ function adoptProject(opts) {
|
|
|
415
415
|
process.stdout.write(`Harness version: ${version}\n`);
|
|
416
416
|
process.stdout.write('Written : .claude/ (+ HARNESS_VERSION, .MANIFEST, local/)\n');
|
|
417
417
|
process.stdout.write('Written : CLAUDE.md\n');
|
|
418
|
+
|
|
419
|
+
// Auto-install duk globally when running via npx (duk not yet in PATH).
|
|
420
|
+
const dukCheck = spawnSync('duk', ['--version'], {
|
|
421
|
+
shell: process.platform === 'win32',
|
|
422
|
+
stdio: 'ignore',
|
|
423
|
+
});
|
|
424
|
+
if (dukCheck.error) {
|
|
425
|
+
process.stdout.write('\nInstalling duk CLI globally...\n');
|
|
426
|
+
const globalInstall = spawnSync(
|
|
427
|
+
'npm',
|
|
428
|
+
['install', '-g', '@eltonssouza/development-utility-kit'],
|
|
429
|
+
{ stdio: 'inherit', shell: process.platform === 'win32' }
|
|
430
|
+
);
|
|
431
|
+
if (globalInstall.status === 0) {
|
|
432
|
+
process.stdout.write('duk installed globally. Run: duk help\n');
|
|
433
|
+
} else {
|
|
434
|
+
process.stdout.write('\nNote: global install failed. Run manually:\n');
|
|
435
|
+
process.stdout.write(' npm install -g @eltonssouza/development-utility-kit\n');
|
|
436
|
+
}
|
|
437
|
+
}
|
|
418
438
|
}
|
|
419
439
|
|
|
420
440
|
// ─── newProject (duk new <name>) ──────────────────────────────────────────────
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The development-utility-kit is a harness for fullstack development with Claude Code and Cowork. The architecture is **deliberately simple**: two functional layers (Skills + Agents), a single entry point (the Skill that matches the prompt), and a cross-cutting Hooks layer that intercepts tools and prompts.
|
|
4
4
|
|
|
5
|
-
There is no command layer. The `commands/` layer was removed on 2026-05-25 and replaced by the
|
|
5
|
+
There is no command layer. The `commands/` layer was removed on 2026-05-25 and replaced by the **front-controller** Skill `project-manager` (ADR-041): it intercepts every prompt, enforces the flow order (discovery → plan → sprint → gate → brain), and then routes or orchestrates to the correct specialist agent(s).
|
|
6
6
|
|
|
7
7
|
This document describes the mental model you need to understand why a prompt about "create endpoint" ends up executing code in `backend-developer`, or why a request to "run sprint 3" dispatches `qa-engineer`, `backend-developer`, `frontend-developer`, and `gate-keeper` in parallel.
|
|
8
8
|
|
|
@@ -17,8 +17,8 @@ This document describes the mental model you need to understand why a prompt abo
|
|
|
17
17
|
▼
|
|
18
18
|
┌────────────────────────────────────────────┐
|
|
19
19
|
│ UserPromptSubmit hook │
|
|
20
|
-
│ scripts/hooks/
|
|
21
|
-
│
|
|
20
|
+
│ scripts/hooks/flow-guard.js │
|
|
21
|
+
│ injects [FLOW STATE] + blocks/nudges │
|
|
22
22
|
└────────────────────┬───────────────────────┘
|
|
23
23
|
│
|
|
24
24
|
▼
|
|
@@ -33,7 +33,7 @@ This document describes the mental model you need to understand why a prompt abo
|
|
|
33
33
|
▼ ▼
|
|
34
34
|
specific skill matched no specific skill matched
|
|
35
35
|
e.g. run-sprint, grill-me, ▼
|
|
36
|
-
|
|
36
|
+
scaffold project-manager (front-controller)
|
|
37
37
|
│ 3 modes (per ADR-033):
|
|
38
38
|
│ · ROUTE → 1 specialist (1 domain)
|
|
39
39
|
│ · ORCHESTRATE → 2–5 specialists in parallel
|
|
@@ -86,8 +86,8 @@ To force a specific skill, use `/skill <name>` in Claude Code or mention it expl
|
|
|
86
86
|
|
|
87
87
|
### Skill types
|
|
88
88
|
|
|
89
|
-
- **Orchestration skills**: `run-sprint
|
|
90
|
-
- **
|
|
89
|
+
- **Orchestration skills**: `run-sprint` (thin trigger → `sprint-runner` agent, ADR-042), `grill-me`, `scaffold`, `auto-test-guard`, `prd-ready-check`. They have multiple stages with checkpoints (⏸️) and map each stage to an agent.
|
|
90
|
+
- **Front-controller skill**: `project-manager` (ADR-041). Intercepts **every** prompt, enforces the flow order, then dispatches: ROUTE (1 specialist) | ORCHESTRATE (≤5 parallel, shared `run_group_id`) | ESCALATE (`grill-me → analyst → sprint-runner`).
|
|
91
91
|
- **Passive skills**: `caveman` (telegraphic style, always active).
|
|
92
92
|
- **Product skills**: `to-prd`, `to-issues`. Convert artifacts between pipeline stages.
|
|
93
93
|
- **Adoption skills**: `update-template`, `active-project`. Synchronize projects with the latest harness version.
|
|
@@ -198,7 +198,7 @@ project/
|
|
|
198
198
|
|
|
199
199
|
Follow what happens when you type `"create endpoint for product signup"`:
|
|
200
200
|
|
|
201
|
-
2. **Skill matcher** analyzes the enriched prompt. No specific orchestrator skill keyword →
|
|
201
|
+
2. **Skill matcher** analyzes the enriched prompt. No specific orchestrator skill keyword → `project-manager` (front-controller) takes the prompt and enforces the flow order.
|
|
202
202
|
3. **project-manager** reads the prompt, consults the routing table, decides: "backend implementation" → picks `backend-developer`.
|
|
203
203
|
4. **Task tool** dispatches `backend-developer` (Sonnet 4.6 model) with the full prompt + PLAN/PRD context if any.
|
|
204
204
|
5. **backend-developer** executes: reads CLAUDE.md, consults the PLAN, picks the package (`com.company.product.web`), generates controller + DTOs + service + Flyway migration.
|
|
@@ -206,7 +206,7 @@ Follow what happens when you type `"create endpoint for product signup"`:
|
|
|
206
206
|
7. **PostToolUse hooks** run on each Edit/Write: prettier formats the file; `post-edit-test-reminder` reminds the agent to invoke `qa-engineer`.
|
|
207
207
|
8. **gate-keeper** (called by the `auto-test-guard` skill at the end) runs JaCoCo coverage, PIT mutation, ESLint, Lighthouse. If any threshold fails, it blocks.
|
|
208
208
|
9. **Stop hook** fires `stop-brain-reminder.sh` reminding `brain-keeper` to record the feature in the Obsidian vault.
|
|
209
|
-
10. **SubagentStop hook**
|
|
209
|
+
10. **SubagentStop hook** records telemetry per agent (incl. `run_group_id` and project) via `telemetry-writer.js`, feeding the dashboard's per-project **Processes** view (ADR-045).
|
|
210
210
|
|
|
211
211
|
## Cowork and Claude Code CLI integration
|
|
212
212
|
|
|
@@ -220,7 +220,7 @@ Rule of thumb: **if Cowork alone covers it, use Cowork**. If you need bash hooks
|
|
|
220
220
|
|
|
221
221
|
## Telemetry
|
|
222
222
|
|
|
223
|
-
Subagent telemetry is recorded via the `SubagentStop` hook (
|
|
223
|
+
Subagent telemetry is recorded via the `SubagentStop` hook. Each run carries a `run_group_id` (correlating a parallel orchestration fan) and the project path, powering the dashboard's per-project **Processes** view (ADR-045, Phase A). The flow:
|
|
224
224
|
|
|
225
225
|
```
|
|
226
226
|
agent ends → SubagentStop hook → subagent-telemetry.sh
|
|
@@ -234,7 +234,7 @@ Captured metrics: agent name, model used, tokens in/out, duration, success/failu
|
|
|
234
234
|
## Design principles
|
|
235
235
|
|
|
236
236
|
1. **Two layers, no more**. Skill (entry) + Agent (executor). End of story. Adding a third layer requires an ADR approved by `tech-lead`.
|
|
237
|
-
2. **
|
|
237
|
+
2. **Front-controller is the front door** (ADR-041). `project-manager` intercepts every prompt and enforces the flow order; a specific skill keyword (e.g. `run-sprint`) still dispatches directly, and the `flow-guard` hook guarantees the order either way.
|
|
238
238
|
3. **Hooks are for policy, not logic**. Hooks block dangerous actions, format code, inject memory. Business logic lives in agents.
|
|
239
239
|
4. **Each agent declares its model**. Opus is expensive and rare. Sonnet is the default. Haiku for mechanical work.
|
|
240
240
|
5. **Everything is a file on disk**. `.claude/` is versioned. Harness changes are commits.
|
|
@@ -30,7 +30,7 @@ This document covers the 18 official skills of the harness, grouped by purpose.
|
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
33
|
-
##
|
|
33
|
+
## Front-controller router (ADR-041)
|
|
34
34
|
|
|
35
35
|
### project-manager
|
|
36
36
|
|
|
@@ -38,7 +38,7 @@ This document covers the 18 official skills of the harness, grouped by purpose.
|
|
|
38
38
|
|
|
39
39
|
**EN triggers**: "create endpoint", "implement controller", "create component", "review my code", "security audit", "design the database", "optimize query", "dockerize", "setup CI", "create mobile app", "n8n workflow", "refine backlog", "write tests", "wireframe", "migrate from spring boot 2", "release prep", "architecture decision", "analyze this task".
|
|
40
40
|
|
|
41
|
-
**When to fire**:
|
|
41
|
+
**When to fire**: `project-manager` is the **front-controller** (ADR-041) — it intercepts every prompt, enforces the flow order (discovery → plan → sprint → gate → brain), and covers the specialist agents without a dedicated skill. A specific skill keyword still dispatches directly; `project-manager` plus the `flow-guard` hook guarantee the order either way.
|
|
42
42
|
|
|
43
43
|
**What it does**: reads the intent, decides one of three modes (per ADR-033), and dispatches accordingly:
|
|
44
44
|
|
|
@@ -52,9 +52,9 @@ Reference: **ADR-033** — orchestrate mode fills the fast-lane gap acknowledged
|
|
|
52
52
|
|
|
53
53
|
**Output / artifacts**: ROUTE → single `Task(subagent_type="<agent>", description="...", prompt="...")` call. ORCHESTRATE → inline mini-plan table + multiple `Task` calls in the same content block. Final artifacts (code, ADR, report) come from the chosen specialist(s).
|
|
54
54
|
|
|
55
|
-
**Prerequisites**: none — it is the
|
|
55
|
+
**Prerequisites**: none — it is the front door. It runs the `flow-guard` precondition checks (DISCOVERY/PLAN present for qualified work) before dispatching.
|
|
56
56
|
|
|
57
|
-
**When NOT to fire**: when a specific skill matches (`run-sprint`, `auto-test-guard`, `prd-ready-check`, `grill-me`, `
|
|
57
|
+
**When NOT to fire**: when a specific skill matches (`run-sprint`, `auto-test-guard`, `prd-ready-check`, `grill-me`, `scaffold`, `pair-debug`, `api-integration-test`, `brain-keeper`, `test-coverage-auditor`, `update-template`, `active-project`, `caveman`). Specific skills always win by specificity. For formal sprint execution (with `PLAN_*.md`), use `run-sprint`. For tasks that need a persisted plan or discovery, escalate to `grill-me` → `analyst` first.
|
|
58
58
|
|
|
59
59
|
**Mode selection heuristic (deterministic)**: skill counts distinct domains touched (backend, frontend, mobile, database, devops, ux, security, n8n, product, tests, architecture, release). 1 domain → ROUTE. 2–5 domains, independent paths → ORCHESTRATE. >5 or any subtask needs further decomposition → ESCALATE.
|
|
60
60
|
|
|
@@ -24,8 +24,8 @@ Each item follows the pattern:
|
|
|
24
24
|
|
|
25
25
|
### Specific skill overridden by `project-manager`
|
|
26
26
|
|
|
27
|
-
- **Symptom**: when asking "review code", `project-manager` (
|
|
28
|
-
- **Cause**: no specific skill matched the exact phrase; the
|
|
27
|
+
- **Symptom**: when asking "review code", `project-manager` (front-controller) answers instead of the more specific skill.
|
|
28
|
+
- **Cause**: no specific skill matched the exact phrase; the front-controller takes over.
|
|
29
29
|
- **Solution**: prefer the canonical phrase from the skill (see the "Skills" table in `CLAUDE.md`). E.g., for PR review use "review the PR" or "audit this change". A more specific skill always wins on match.
|
|
30
30
|
|
|
31
31
|
### `caveman` cutting too much substance
|
|
@@ -194,7 +194,7 @@ tests, produce ADRs) and return to the skill, which returns to you.
|
|
|
194
194
|
| `brain-keeper` | `record in the brain`, `update brain`, `daily log`, `save ADR to vault` |
|
|
195
195
|
| `active-project` | `/active-project <path>`, `activate project at <path>` |
|
|
196
196
|
| `update-template` | `update the template`, `sync with development-utility-kit`, `pull the new skills` |
|
|
197
|
-
| `project-manager` |
|
|
197
|
+
| `project-manager` | front-controller — intercepts every prompt, enforces flow order, routes/orchestrates |
|
|
198
198
|
| `caveman` | `caveman lite`, `caveman ultra`, `stop caveman` |
|
|
199
199
|
|
|
200
200
|
---
|
|
@@ -233,7 +233,7 @@ The harness exposes skills that trigger by **keyword** in Claude Code/Cowork con
|
|
|
233
233
|
| `prd-ready-check` | GO/NO-GO for production | `is it production ready?`, `DoD` |
|
|
234
234
|
| `brain-keeper` | Record history in Obsidian | `record in brain`, `update brain` |
|
|
235
235
|
| `caveman` | Telegraphic mode (default ON) | `caveman lite/full/ultra`, `stop caveman` |
|
|
236
|
-
| `project-manager` |
|
|
236
|
+
| `project-manager` | Front-controller | Intercepts every prompt; enforces flow order |
|
|
237
237
|
|
|
238
238
|
### Detailed cards
|
|
239
239
|
|
|
@@ -302,7 +302,7 @@ The harness exposes skills that trigger by **keyword** in Claude Code/Cowork con
|
|
|
302
302
|
- **Trigger**: `caveman lite/full/ultra` or `stop caveman`.
|
|
303
303
|
- **Effect**: responses ~65-75% shorter.
|
|
304
304
|
|
|
305
|
-
#### `project-manager` (
|
|
305
|
+
#### `project-manager` (front-controller)
|
|
306
306
|
|
|
307
307
|
- **When**: any prompt that doesn't match a specific skill.
|
|
308
308
|
- **Output**: routes to ONE specialist agent via Task tool (`frontend-developer`, `ux-designer`, `qa-engineer`, etc.).
|
|
@@ -243,7 +243,7 @@ conversational.
|
|
|
243
243
|
| `brain-keeper` | `record in brain`, `update the brain` | `docs/brain/` vault |
|
|
244
244
|
| `active-project` | `/active-project <path>`, `adopt project at <path>` | Non-interactive adoption |
|
|
245
245
|
| `update-template` | `update the template` | Sync `.claude/` + `CLAUDE.md` (merge) |
|
|
246
|
-
| `project-manager` |
|
|
246
|
+
| `project-manager` | front-controller | Intercepts all; ROUTE / ORCHESTRATE / ESCALATE |
|
|
247
247
|
|
|
248
248
|
### 5.1. `bootstrap-fullstack`
|
|
249
249
|
|
|
@@ -352,8 +352,7 @@ overwritten. A backup is created (`CLAUDE.md.bak-<timestamp>`).
|
|
|
352
352
|
|
|
353
353
|
### 5.13. `project-manager`
|
|
354
354
|
|
|
355
|
-
|
|
356
|
-
**one** agent.
|
|
355
|
+
Front-controller (ADR-041): it intercepts every prompt, enforces the flow order, and routes or orchestrates to the right specialist(s).
|
|
357
356
|
|
|
358
357
|
### 5.15. Impeccable — visual polish
|
|
359
358
|
|
|
@@ -1180,7 +1179,7 @@ Big table, ordered by intent.
|
|
|
1180
1179
|
| Record in vault | `record in brain` | `brain-keeper` |
|
|
1181
1180
|
| Migrate stack | `migrate from <X> to <Y>` | `migrator` agent |
|
|
1182
1181
|
| Update template | `update the template` | `update-template` |
|
|
1183
|
-
|
|
|
1182
|
+
| Front-controller | every prompt (enforces flow order) | `project-manager` |
|
|
1184
1183
|
|
|
1185
1184
|
CLI (terminal, outside chat):
|
|
1186
1185
|
|
|
@@ -33,7 +33,7 @@ duk update # alias for `duk install`
|
|
|
33
33
|
|
|
34
34
|
## 5-min onboarding
|
|
35
35
|
|
|
36
|
-
Mobile has no `bootstrap-mobile` skill. Scaffolding is the responsibility of the `mobile-developer` agent via `project-manager` (
|
|
36
|
+
Mobile has no `bootstrap-mobile` skill. Scaffolding is the responsibility of the `mobile-developer` agent via `project-manager` (front-controller skill). Step by step:
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
39
|
# 1. Create Expo project (manual, outside the harness)
|
|
@@ -127,7 +127,7 @@ Claude (project-manager -> mobile-developer):
|
|
|
127
127
|
|
|
128
128
|
## Skills applicable to mobile
|
|
129
129
|
|
|
130
|
-
Mobile uses the harness's general skill catalog. There is no mobile-specific skill. `project-manager`
|
|
130
|
+
Mobile uses the harness's general skill catalog. There is no mobile-specific skill. `project-manager` (front-controller) routes to `mobile-developer`.
|
|
131
131
|
|
|
132
132
|
| Skill | EN trigger | Output |
|
|
133
133
|
|---|---|---|
|
|
@@ -144,7 +144,7 @@ Mobile uses the harness's general skill catalog. There is no mobile-specific ski
|
|
|
144
144
|
| `update-template` | "update template" | Sync `.claude/` + `CLAUDE.md` |
|
|
145
145
|
| `caveman` | always-on, "stop caveman" | Telegraphic output |
|
|
146
146
|
|
|
147
|
-
### `project-manager` (
|
|
147
|
+
### `project-manager` (front-controller — replaces bootstrap-mobile)
|
|
148
148
|
|
|
149
149
|
Since there is NO `bootstrap-mobile`, all scaffolding or structural changes go through `project-manager`:
|
|
150
150
|
|
|
@@ -151,7 +151,7 @@ If you adopt the harness on a real project and ship something with it, please co
|
|
|
151
151
|
|---|---|---|
|
|
152
152
|
| `duk doctor` reports Node < 18 | Old Node installed | Install Node 18+ from nodejs.org or your package manager |
|
|
153
153
|
| `duk install` aborts with "drift detected" | You modified `.claude/` after the previous install | Move your changes to `.claude/local/` (preserved across installs) OR run `duk install --force` (overwrite + backup) |
|
|
154
|
-
| Chat does not seem to trigger any skill | Keywords do not match any skill's `description` | Try a more explicit phrasing OR fall through to `project-manager` (
|
|
154
|
+
| Chat does not seem to trigger any skill | Keywords do not match any skill's `description` | Try a more explicit phrasing OR fall through to `project-manager` (front-controller) by phrasing as a normal dev request like "create endpoint POST /api/v1/foo" |
|
|
155
155
|
| `duk dashboard` says "port 4242 in use" | Another process holds the port | Pass `--port 5000` (or any free port) |
|
|
156
156
|
| RTK widget shows no data | RTK not on PATH (intentional fallback) | Install rtk separately if you want the metric; otherwise ignore |
|
|
157
157
|
| `duk lint` reports ERRORs in skills you did not touch | Frontmatter incomplete in the harness | Open an issue with the lint output — likely a regression |
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" stop-color="#0f2847"/>
|
|
5
|
+
<stop offset="100%" stop-color="#0a1628"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="core" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
8
|
+
<stop offset="0%" stop-color="#1a6bff"/>
|
|
9
|
+
<stop offset="100%" stop-color="#ff6b2b"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
<radialGradient id="glow" cx="50%" cy="50%" r="50%">
|
|
12
|
+
<stop offset="0%" stop-color="#6db3ff" stop-opacity="0.3"/>
|
|
13
|
+
<stop offset="100%" stop-color="#6db3ff" stop-opacity="0"/>
|
|
14
|
+
</radialGradient>
|
|
15
|
+
</defs>
|
|
16
|
+
|
|
17
|
+
<!-- Background -->
|
|
18
|
+
<rect width="32" height="32" rx="7" fill="url(#bg)"/>
|
|
19
|
+
|
|
20
|
+
<!-- Glow halo around center -->
|
|
21
|
+
<circle cx="16" cy="16" r="10" fill="url(#glow)"/>
|
|
22
|
+
|
|
23
|
+
<!-- Connection lines -->
|
|
24
|
+
<line x1="16" y1="16" x2="7" y2="7" stroke="#1a6bff" stroke-width="1.2" stroke-opacity="0.55" stroke-linecap="round"/>
|
|
25
|
+
<line x1="16" y1="16" x2="25" y2="7" stroke="#1a6bff" stroke-width="1.2" stroke-opacity="0.55" stroke-linecap="round"/>
|
|
26
|
+
<line x1="16" y1="16" x2="7" y2="25" stroke="#ff6b2b" stroke-width="1.2" stroke-opacity="0.55" stroke-linecap="round"/>
|
|
27
|
+
<line x1="16" y1="16" x2="25" y2="25" stroke="#ff6b2b" stroke-width="1.2" stroke-opacity="0.55" stroke-linecap="round"/>
|
|
28
|
+
|
|
29
|
+
<!-- Satellite nodes -->
|
|
30
|
+
<circle cx="7" cy="7" r="2.2" fill="#4d9aff" opacity="0.85"/>
|
|
31
|
+
<circle cx="25" cy="7" r="2.2" fill="#4d9aff" opacity="0.85"/>
|
|
32
|
+
<circle cx="7" cy="25" r="2.2" fill="#ff9a5c" opacity="0.85"/>
|
|
33
|
+
<circle cx="25" cy="25" r="2.2" fill="#ff9a5c" opacity="0.85"/>
|
|
34
|
+
|
|
35
|
+
<!-- Center node — gradient ring -->
|
|
36
|
+
<circle cx="16" cy="16" r="5.5" fill="url(#core)"/>
|
|
37
|
+
<!-- Center node — white core -->
|
|
38
|
+
<circle cx="16" cy="16" r="2.8" fill="#f0f4fa"/>
|
|
39
|
+
</svg>
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>development-utility-kit dashboard</title>
|
|
7
|
+
<link rel="icon" type="image/svg+xml" href="favicon.svg" />
|
|
7
8
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
8
9
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
9
10
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet" />
|