@eltonssouza/development-utility-kit 0.10.1 → 0.12.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.
@@ -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 **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).
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, 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
 
@@ -23,8 +23,7 @@ When the user describes a task, Cowork must **deliver it 100% production-ready f
23
23
  | [`pair-debug`](pair-debug/SKILL.md) | Hypothesis-driven debug loop: state symptom → formulate hypotheses → probe one at a time → confirm cause → fix minimal → write test. Bans "try and see" approach. | "pair debug", "investigate this bug", "find the root cause", "why is this not working" |
24
24
  | [`grill-me`](grill-me/SKILL.md) | Discovery interview — one question at a time, with recommendation, until requirements are clear. Persists conclusions to `docs/plans/PLAN_*.md` or ADR. | "grill me", "interview me about", "stress-test the plan", "discover requirements with me" |
25
25
  | [`brain-keeper`](brain-keeper/SKILL.md) | Upon completing a PLAN_*: records history in the Obsidian vault (`docs/brain/`) — daily, feature, ADR, bug, tech-debt + updates MOC. Provisions `.obsidian/` with per-folder color snippet on first run. | End of PLAN_*; "record in the brain", "update brain", "log of the day", "close feature in vault" |
26
- | [`update-template`](update-template/SKILL.md) | Adopts or synchronizes an EXISTING project with the latest version of the template (merge with backup) | "update the template", "bring the new skills", "sync with development-utility-kit", "adopt the template here" |
27
- | [`active-project`](active-project/SKILL.md) | Path-driven, non-interactive adoption of a project to the template — `/active-project <path>`. Fast lane of `update-template` (no preview/checkpoint). Preferred for scripted batch adoptions. | "/active-project `<path>`", "ativar projeto em `<path>`", "adota o projeto `<path>`", "aplica o template em `<path>`" |
26
+ | [`update-template`](update-template/SKILL.md) | Adopts or synchronizes an EXISTING project with the latest version of the template (merge with backup). For scripted/batch adoption use `duk install` (single project) or `duk sync-all <dir>` (many projects) from the terminal. | "update the template", "bring the new skills", "sync with development-utility-kit", "adopt the template here" |
28
27
  | [`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
28
  | [`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
29
  | [`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" |
@@ -163,7 +162,7 @@ USER MESSAGE
163
162
  │ │ to-prd, to-issues → analyst / product-owner
164
163
  │ │
165
164
  │ └─ Pattern 3 (Standalone) → no agent; executes inline
166
- │ caveman, pair-debug, project-manager, active-project,
165
+ │ caveman, pair-debug, project-manager,
167
166
  │ prd-ready-check, api-integration-test, test-coverage-auditor
168
167
 
169
168
  └─ no specific skill → PROJECT-MANAGER SKILL (front-controller, ADR-041)
@@ -178,7 +177,7 @@ For names that exist in both skill + agent (`sprint-runner`, `gate-keeper`, `bra
178
177
 
179
178
  ### When a name exists only in one layer
180
179
 
181
- - **Skill only** (`caveman`, `pair-debug`, `grill-me`, `active-project`, `project-manager`, `to-prd`, `to-issues`, `prd-ready-check`, `api-integration-test`, `test-coverage-auditor`): execute inline or orchestrate via Bash/Read/Write/Task. No dedicated agent counterpart. See Pattern 3 in `## Pattern catalog` below. The last three were demoted to Pattern 3 in ADR-037 (their same-name agents never existed on disk; the calling session executes them inline).
180
+ - **Skill only** (`caveman`, `pair-debug`, `grill-me`, `project-manager`, `to-prd`, `to-issues`, `prd-ready-check`, `api-integration-test`, `test-coverage-auditor`): execute inline or orchestrate via Bash/Read/Write/Task. No dedicated agent counterpart. See Pattern 3 in `## Pattern catalog` below. The last three were demoted to Pattern 3 in ADR-037 (their same-name agents never existed on disk; the calling session executes them inline).
182
181
  - **Agent only** (`tech-lead`, `product-owner`, `architect`, `security-engineer`, `database-engineer`, `devops-engineer`, `code-reviewer`, `ux-designer`, `analyst`, `backend-developer`, `frontend-developer`, `qa-engineer`, `mobile-developer`, `n8n-specialist`, `migrator`, `release-engineer`, `auditor`): invoked via Task tool by skills — commonly by `project-manager` (for tasks without a dedicated skill) or by `sprint-runner` (for sprint tasks).
183
182
 
184
183
  ### Required mapping in router skills
@@ -257,7 +256,7 @@ A skill with **no companion agent**. It executes its logic inline (Bash, Read, W
257
256
  |---|---|---|
258
257
  | **Mode/style** | Changes the output style of the parent session, not a task | `caveman` |
259
258
  | **Router/front-controller** | Intercepts every prompt, enforces flow order, dispatches (no fixed agent target) | `project-manager` |
260
- | **Inline transform** | Short-lived transformation that doesn't warrant a dedicated agent | `active-project` |
259
+ | **Inline transform** | Short-lived transformation that doesn't warrant a dedicated agent | `pair-debug` |
261
260
  | **Interview / generation** | Multi-turn interview + file write, no persistent agent needed | `pair-debug`, `to-prd`, `to-issues`, `grill-me`* |
262
261
 
263
262
  *`grill-me` is listed here for its inline interview phase; its output handoff to `analyst` makes it also Pattern 2. Primary classification: Pattern 2.
@@ -269,7 +268,6 @@ A skill with **no companion agent**. It executes its logic inline (Bash, Read, W
269
268
  | `caveman` | Mode — output style toggle |
270
269
  | `pair-debug` | Inline transform — hypothesis loop, no persistent executor |
271
270
  | `project-manager` | Router/front-controller (ADR-041) — intercepts every prompt; fixed agent target undefined by design |
272
- | `active-project` | Inline transform — fast-lane adoption, no dedicated agent |
273
271
  | `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
272
  | `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 |
275
273
  | `test-coverage-auditor` | Inline scan — Glob/Grep over source + dailies, writes to tech-debt.md directly (per ADR-037); stateless instruction set |
@@ -59,7 +59,6 @@ Specific skills always win — never compete:
59
59
  | "record in the brain", "update vault" | `brain-keeper` |
60
60
  | "audit coverage", "test debt" | `test-coverage-auditor` |
61
61
  | "update template", "sync development-utility-kit" | `update-template` |
62
- | "/active-project <path>" | `active-project` |
63
62
  | "caveman lite/full/ultra", "stop caveman" | `caveman` |
64
63
 
65
64
  Also do NOT trigger for trivial single-file edits — just do them inline in the calling session.
@@ -36,7 +36,7 @@ If `Project type` is missing or unrecognized, the `scaffold` agent routes to `te
36
36
  - Implementing features after scaffold is complete — use `backend-developer` / `frontend-developer`.
37
37
  - Migrating an existing project to a newer stack — use `migrator`.
38
38
  - Updating the harness template — use `update-template`.
39
- - Adopting the template in an existing project — use `active-project`.
39
+ - Adopting the template in an existing project — use `update-template` (or `duk install` from the terminal).
40
40
 
41
41
  ## Dispatch
42
42
 
@@ -231,8 +231,8 @@ Previously the harness shipped a separate `auditor` agent (`.claude/agents/audit
231
231
 
232
232
  ### Triggering audit-only mode
233
233
 
234
- - "/active-project `<path>` --dry-run" — non-interactive audit from outside the project.
235
234
  - "audit the .claude structure here" — interactive audit from inside the project. The skill detects the audit intent in the prompt and skips Step 5 (Execute) — only Steps 1-4 (preview report) run.
235
+ - `duk install --check-only` — non-interactive audit from the terminal (detects stack + reports drift without writing).
236
236
  - PT: "audita a estrutura claude", "compara com o template", "verifica desatualizado".
237
237
 
238
238
  ### What audit mode reports
@@ -242,7 +242,7 @@ For each diff vs the template:
242
242
  - Divergent files (content drift).
243
243
  - Outdated agents/skills (older version than template).
244
244
  - Risk classification per finding: high (missing critical agent), medium (drift in non-critical file), low (cosmetic).
245
- - Recommendation: which command to run to fix (`duk install` from inside, `/active-project <path>` from outside).
245
+ - Recommendation: which command to run to fix (`duk install` from inside the project, or `duk install --check-only` to preview first).
246
246
 
247
247
  ### Safety rule (inherited from auditor agent)
248
248
 
package/CLAUDE.md CHANGED
@@ -105,7 +105,6 @@ Skills in `.claude/skills/` trigger automatically by keyword. **Single entry lay
105
105
  | `update-template` | "update template", "sync with development-utility-kit" | Syncs `.claude/`, `CLAUDE.md` (merge + backup, hash-based drift detection) — preserves `Project Identity` |
106
106
  | `to-prd` | "to-prd", "gera PRD", "cria PRD" (opt-in, after `grill-me`) | Reads `DISCOVERY_*.md` → writes `docs/prd/PRD_*.md` |
107
107
  | `to-issues` | "to-issues", "quebra em issues", "gera issues" (opt-in, after `to-prd`) | Reads `PRD_*.md` → writes `docs/issues/ISSUES_*.md` ready for `gh issue create` |
108
- | `active-project` | "ativar projeto em `<path>`", "adota o projeto `<path>`" | Path-driven, non-interactive adoption — fast lane of `update-template` |
109
108
 
110
109
  See [`.claude/skills/README.md`](.claude/skills/README.md) and [`.claude/stacks/README.md`](.claude/stacks/README.md).
111
110
 
package/README.md CHANGED
@@ -1,416 +1,53 @@
1
1
  # development-utility-kit
2
2
 
3
- > Meta-skill harness for Claude Code. Generic agents by domain, knowledge packs by stack, single-`npx` injection into any project.
3
+ > Meta-skill harness for Claude Code. Stack-agnostic agents, knowledge packs per stack, single-command injection into any project.
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/@eltonssouza/development-utility-kit)](https://www.npmjs.com/package/@eltonssouza/development-utility-kit)
6
- [![beta](https://img.shields.io/npm/v/@eltonssouza/development-utility-kit/beta?label=beta)](https://www.npmjs.com/package/@eltonssouza/development-utility-kit?activeTab=versions)
7
- [![downloads](https://img.shields.io/npm/dt/@eltonssouza/development-utility-kit)](https://www.npmjs.com/package/@eltonssouza/development-utility-kit)
8
- [![license](https://img.shields.io/npm/l/@eltonssouza/development-utility-kit)](LICENSE)
9
- [![stars](https://img.shields.io/github/stars/eltonssouza/development-utility-kit?style=social)](https://github.com/eltonssouza/development-utility-kit/stargazers)
10
- [![issues](https://img.shields.io/github/issues/eltonssouza/development-utility-kit)](https://github.com/eltonssouza/development-utility-kit/issues)
11
- [![roadmap](https://img.shields.io/badge/roadmap-public-blue)](ROADMAP.md)
12
- [![comparisons](https://img.shields.io/badge/comparisons-honest-orange)](docs/COMPARISONS.md)
13
- [![release](https://img.shields.io/github/v/release/eltonssouza/development-utility-kit)](https://github.com/eltonssouza/development-utility-kit/releases/latest)
6
+ [![license](https://img.shields.io/npm/l/@eltonssouza/development-utility-kit)](https://github.com/eltonssouza/development-utility-kit/blob/main/LICENSE)
14
7
 
15
8
  CLI binary: `duk` · Node `>=18` · License: MIT
16
9
 
17
- ```bash
18
- npx @eltonssouza/development-utility-kit install
19
- ```
20
-
21
- ---
22
-
23
- ## What it is
24
-
25
- Not an agent. Not a skill. The **bundle** that turns any repo into a Claude-Code-driven project — with:
26
-
27
- - **20 keyword-triggered skills** (front-controller `project-manager`, `run-sprint`, `auto-test-guard`, `pair-debug`, `grill-me`, `to-prd`, `to-issues`, `quick-feature`, `brain-keeper`, `stack-discovery`, `create-stack-pack`, `quality-standards`, `caveman`, etc.)
28
- - **21 specialized sub-agents** (1 Opus for `tech-lead`, 3 Haiku for mechanical work, 17 Sonnet for everything else)
29
- - **5 stack knowledge packs** (Java + Spring Boot 3/4, Angular 18/19/21) — extend with `create-stack-pack` skill
30
- - **Full discovery → delivery pipeline** (`grill-me → to-prd → to-issues → analyst → run-sprint`) with mandatory TDD
31
- - **Local sub-agent telemetry** (`SubagentStop` hook → SQLite) + **web dashboard** (Express + Vanilla JS + Chart.js CDN)
32
- - **Non-negotiable Senior+ quality gate** (coverage ≥85%, mutation ≥70%, Lighthouse ≥0.80, a11y 0 critical)
33
- - **Autonomy Matrix**: agents decide on their own; human is interrupted only in 4 PO cases or 3 TL cases
34
- - **Drift detection** via `.claude/.MANIFEST` (sha256 per file) — `duk install` refuses to overwrite local modifications without `--force`
35
-
36
- > v2.0.0+ introduces **stack-agnostic agents** consuming knowledge packs at `.claude/stacks/<lang>/<framework>-<major>.md`. The pre-1.0 era of hardcoded Java/Angular agents is gone — agents now adapt to the declared stack via `STACK CONTEXT` injection (ADR-026).
37
-
38
- ---
39
-
40
- ## Why use it
41
-
42
- | Strength | Detail |
43
- |---|---|
44
- | **Zero-friction injection** | `duk install` in the project directory. No clone, no git, no boilerplate. |
45
- | **Stack-agnostic agents** | `backend-developer`, `frontend-developer`, `mobile-developer`, etc. read `## Project Identity` and consume the matching stack pack. Works on Java, TypeScript, Python, Go, etc. |
46
- | **Knowledge packs by version** | Java SB3 vs SB4 vs SB5 each get their own `## Code patterns`, `## Security`, `## Anti-patterns` section. No pack? `create-stack-pack` skill generates one conversationally. |
47
- | **Auto stack detection** | `detect-stack.js` parses `pom.xml`, `package.json`, `pyproject.toml`, `go.mod`, `docker-compose.yml`. |
48
- | **Idempotent install + drift detection** | Previous `.claude/` becomes `.claude.bak-<timestamp>/`. `.MANIFEST` (sha256) detects local modifications and refuses unsafe overwrites. `## Project Identity` preserved verbatim. |
49
- | **Local overrides via `.claude/local/`** | Project-specific tweaks live there. Never touched by `duk install`. Loader priority: `local/` wins over harness. |
50
- | **Aggressive autonomy by design** | Agents never ask permission for routine. PO/TL hold decision power; specialists never escalate directly to human. |
51
- | **Universal TDD** | `sprint-runner` enforces `qa-engineer (failing test) → developer → gate-keeper` on every task. ADR-020. |
52
- | **Obsidian-ready brain** | `brain-keeper` provisions `docs/brain/` with vault, color snippets, MOC, ADRs, daily, features, bugs, tech-debt, migrations. |
53
- | **Caveman mode by default** | ~65–75% cheaper output in tokens, no technical loss. ULTRA in code, FULL in `.md`. Credit: [@JuliusBrussee](https://github.com/JuliusBrussee). |
54
- | **No build for dashboard** | Vanilla JS + Chart.js via CDN. Tiny tarball. ADR-014. |
55
-
56
- ---
57
-
58
- ## How it works
59
-
60
- ### 3-layer architecture
61
-
62
- ```
63
- User prompt
64
-
65
-
66
- ┌─────────────────────────────┐
67
- │ SKILLS (entry point) │ keyword match
68
- │ .claude/skills/<X>/SKILL.md│ → specific skill OR
69
- └─────────────┬───────────────┘ project-manager (front-controller)
70
-
71
- ▼ Step 0 (orchestrating skills)
72
- ┌─────────────────────────────┐
73
- │ stack-resolver (Haiku) │ reads ## Project Identity
74
- │ reads .claude/stacks/<pack>│ returns STACK CONTEXT block
75
- └─────────────┬───────────────┘
76
-
77
- ▼ Task tool dispatch (with STACK CONTEXT inlined)
78
- ┌─────────────────────────────┐
79
- │ AGENTS (executors) │ 21 specialized agents
80
- │ .claude/agents/<X>.md │ Opus | Sonnet | Haiku per matrix
81
- └─────────────┬───────────────┘
82
-
83
-
84
- Artifact (code, ADR, PRD, plan, test, deploy)
85
- ```
86
-
87
- Skill = entry point + multi-step protocol. Agent = executor with tools. Pack = stack-specific knowledge consumed by agents. No loose commands.
88
-
89
- ### Discovery → delivery flow
90
-
91
- ```
92
- grill-me → docs/discovery/DISCOVERY_<NAME>.md
93
-
94
- to-prd → docs/prd/PRD_<NAME>.md
95
-
96
- to-issues → docs/issues/ISSUES_<NAME>.md (gh issue create-ready)
97
-
98
- analyst → docs/plans/PLAN_<NAME>.md (goal-ready DoD)
99
-
100
- run-sprint (thin) → sprint-runner (single execution contract; mandatory TDD, Stage 0 stack-resolver)
101
-
102
- gate-keeper → Senior+ gate (coverage, mutation, a11y, lighthouse, pyramid)
103
-
104
- brain-keeper → docs/brain/ (daily, feature, ADR, bug, tech-debt, migration, MOC)
105
- ```
106
-
107
- For small features that don't justify the full pipeline (adding a field, fixing a search, exporting CSV): use `quick-feature` skill — bypasses discovery/PRD/issues, generates minimal PLAN, dispatches `run-sprint` directly. TDD + Senior+ gate still mandatory.
108
-
109
- ### Flow governance
110
-
111
- Every prompt passes through `flow-guard.js` (UserPromptSubmit hook) before reaching the model. It injects `[FLOW STATE]`, classifies the lane (greenfield / brownfield / sprint / small-task), and hard-blocks qualified implementation work that is missing its prerequisite artifact (DISCOVERY_*.md or PLAN_*.md). Bypass is audited in `.flow-state.json`.
10
+ ## Install
112
11
 
113
- `project-manager` is the universal front-controller: classifies the lane, enforces the stage order, then dispatches (ROUTE 1 specialist | ORCHESTRATE → ≤5 parallel with a shared `run_group_id` | ESCALATE → `sprint-runner`).
114
-
115
- ### Telemetry + Dashboard
12
+ **As a Claude Code plugin** (recommended global, every project, nothing written into your repo):
116
13
 
117
14
  ```
118
- Claude Code ─► UserPromptSubmit ─► flow-guard.js (lane classify + block)
119
-
120
- └► SubagentStop hook ─► subagent-telemetry.sh ─► telemetry-writer.js
121
-
122
-
123
- ~/.claude/telemetry.db (SQLite)
124
- events + orchestration_runs
125
-
126
- ┌─────────────────────────────────────────┘
127
-
128
- duk dashboard → Express @ :4242+ → Vanilla JS UI
129
- /api/stats
130
- /api/projects
131
- /api/projects/processes (run-groups + agent children)
132
- /api/rtk (rtk gain --format json)
15
+ /plugin marketplace add eltonssouza/development-utility-kit
16
+ /plugin install development-utility-kit
133
17
  ```
134
18
 
135
- Polling every 5s. Click a project **Processes panel** shows recent orchestration run-groups, each expandable into its parallel agent fan (agent type, model, status). Phase A: completed runs. Phase B (live in-flight): deferred — no `SubagentStart` hook available in Claude Code today.
136
-
137
- ---
138
-
139
- ## Quickstart
140
-
141
- ### Brand-new project
19
+ **Or inject per-project via npx** (writes `.claude/` + `CLAUDE.md` into the current project, and self-installs the `duk` CLI globally):
142
20
 
143
21
  ```bash
144
- duk new my-app
145
- cd my-app
146
- # Open Cowork or Claude Code in this folder, then in chat:
147
- # > "sabatina pra projeto novo"
148
- # stack-discovery skill walks you through 8 questions to declare type, language,
149
- # framework, version, database, UI lib, domain.
150
- ```
151
-
152
- ### Existing project
153
-
154
- ```bash
155
- cd <your-project>
156
22
  npx @eltonssouza/development-utility-kit install
157
23
  ```
158
24
 
159
- Injects `.claude/`, `CLAUDE.md`, `.claude/HARNESS_VERSION`, `.claude/.MANIFEST`, `.claude/local/` placeholder. Detects stack automatically.
160
-
161
- **Preview before applying** (no writes):
162
- ```bash
163
- duk install --check-only
164
- ```
165
-
166
- Reports detected stack + local vs latest harness version + pack availability.
25
+ > Run `npx install` from inside a project folder — not from a drive root.
167
26
 
168
- **Override local modifications** (skip drift detection):
169
- ```bash
170
- duk install --force
171
- ```
172
-
173
- `.claude.backup-<timestamp>/` is always created.
174
-
175
- ### Edit `## Project Identity` in `CLAUDE.md`
176
-
177
- The only section the project owns. All others are harness base and receive updates via `duk install` (with drift detection).
178
-
179
- ```markdown
180
- ## Project Identity
181
-
182
- - **Project name**: my-store
183
- - **Project type**: fullstack
184
- - **Primary stack**: Java 21 + Spring Boot 3.2
185
- - **Database**: PostgreSQL 17 + Redis 7
186
- - **Domain**: e-commerce
187
- - **Team size**: 3 fullstack
188
- ```
189
-
190
- `stack-resolver` reads this and loads `.claude/stacks/java/spring-boot-3.md`. If pack absent for declared stack: dispatches `create-stack-pack` skill to author it conversationally.
191
-
192
- ### Run the dashboard
193
-
194
- ```bash
195
- duk dashboard # auto-detects free port from 4242
196
- duk dashboard --port 5000
197
- duk dashboard --no-open # skip browser launch
198
- ```
27
+ ## What you get
199
28
 
200
- Before starting Express, prints `rtk gain` (token savings analytics). If `rtk` not in PATH: non-fatal warning, proceeds.
201
-
202
- ### Update many projects at once
203
-
204
- ```bash
205
- # Preview which projects would be updated:
206
- duk sync-all C:\development\source\projects
207
-
208
- # Apply with filters (AND logic between multiple --filter):
209
- duk sync-all C:\development\source\projects --filter stack:java --apply
210
- duk sync-all C:\development\source\projects --filter age:30d --apply
211
- duk sync-all C:\development\source\projects --filter harness-version:<2 --apply
212
-
213
- # Exclude specific projects:
214
- duk sync-all C:\development\source\projects --exclude prod-critical --apply
215
- ```
216
-
217
- ---
29
+ - **18 keyword-triggered skills** + **21 stack-agnostic agents** + stack knowledge packs (Java/Spring, TypeScript/Angular, and more)
30
+ - **Front-controller routing** (`project-manager`) + flow governance hook
31
+ - **Full discovery delivery pipeline** with mandatory TDD and a Senior+ quality gate
32
+ - **Local sub-agent telemetry** + a no-build web dashboard (`duk dashboard`)
33
+ - **Obsidian project brain** (`brain-keeper`)
218
34
 
219
35
  ## `duk` commands
220
36
 
221
37
  ```
222
- duk new <name> # scaffold new project + open conversational discovery
223
- duk install [--sub <dir>] [--dry-run] [--check-only] [--force]
224
- # inject harness into CWD (idempotent)
225
- duk update # alias of install
226
- duk sync-all <dir> [--filter <expr>]* [--exclude <name>]* [--apply]
227
- # update harness in many projects
228
- duk dashboard [--port <n>] [--no-open] # launch local dashboard
229
- duk doctor [--strict] [--json] # validate environment (Node, git, hooks, packs)
230
- duk lint [--category <name>] [--json] # validate harness .claude/ structure
231
- duk help [command] # general help or command-specific
232
- duk --version # print version
38
+ duk new <name> # scaffold a new project + conversational stack discovery
39
+ duk install # inject the harness into the current project
40
+ duk install --check-only # preview detected stack + drift, write nothing
41
+ duk sync-all <dir> # update the harness across many projects
42
+ duk dashboard # launch the local telemetry + docs dashboard
43
+ duk doctor # validate environment
44
+ duk lint # validate harness .claude/ structure
45
+ duk help [command] # help
233
46
  ```
234
47
 
235
- See `duk help <command>` for detailed per-command flags. The `doctor` and
236
- `lint` commands are deterministic and run without any LLM/API calls — safe
237
- to use in CI. See **ADR-034** for the design principle behind them.
238
-
239
- ---
240
-
241
- ## Prompts that trigger skills
242
-
243
- | You say | Skill fires |
244
- |---|---|
245
- | "sabatina pra projeto novo", "stack discovery" | `stack-discovery` → fills `## Project Identity` |
246
- | "cria pack para Django", "gera pack" | `create-stack-pack` → new `.claude/stacks/<lang>/<framework>-<major>.md` |
247
- | "grill me", "interview me about X" | `grill-me` → discovery interview |
248
- | "to-prd", "generate PRD" | `to-prd` (after `grill-me`) |
249
- | "to-issues", "break into issues" | `to-issues` (after `to-prd`) |
250
- | "run sprint 2", "execute the sprint" | `run-sprint` (Stage 0 stack-resolver) |
251
- | "quick-feature: add field X" | `quick-feature` → bypass discovery, minimal PLAN, run-sprint |
252
- | "pair debug", "investigate this bug" | `pair-debug` (Stage 0 stack-resolver) |
253
- | "audit coverage" | `test-coverage-auditor` |
254
- | "PRD-ready?", "ready for prod?" | `prd-ready-check` |
255
- | "create endpoint", "build the screen", anything else | `project-manager` (front-controller — classifies lane, enforces flow) |
256
- | "stop caveman", "normal mode" | disables caveman |
257
-
258
- ---
259
-
260
- ## Senior+ Quality Gate
261
-
262
- Non-negotiable. `gate-keeper` blocks merge if any item fails. **Thresholds are universal across stacks**; tooling specifics (JaCoCo vs coverage.py, JUnit vs pytest, etc.) come from the active stack pack:
263
-
264
- | Metric | Threshold |
265
- |---|---|
266
- | Backend coverage (lines / branches) | ≥85% / ≥80% |
267
- | Backend mutation score | ≥70% in domain + application layers |
268
- | Frontend coverage | ≥85% statements, ≥80% branches |
269
- | Static analysis (SpotBugs / mypy / golangci-lint / ESLint strict / ...) | 0 CRITICAL, 0 HIGH |
270
- | Dependency vuln scan (OWASP DC / npm audit / safety / govulncheck) | 0 CVE CVSS ≥7.0 |
271
- | Playwright E2E | 100% green, console 0 errors |
272
- | a11y (jest-axe + axe-playwright) | 0 serious, 0 critical |
273
- | Lighthouse | score ≥0.80, LCP ≤2500ms, CLS ≤0.1, TBT ≤300ms |
274
- | Testing pyramid | E2E ≤30% of total (ideal ≤15%) |
275
-
276
- Reference: ADR-007 (a11y + Lighthouse + pyramid), ADR-027 (pack `## Security` mandatory).
277
-
278
- ---
279
-
280
- ## Structure
281
-
282
- ```
283
- development-utility-kit/
284
- ├── .claude/
285
- │ ├── skills/ # 20 skills (project-manager front-controller, run-sprint, stack-discovery, ...)
286
- │ ├── agents/ # 21 agents (Opus/Sonnet/Haiku per matrix)
287
- │ ├── stacks/ # 5 stack packs (java/spring-boot-3, spring-boot-4; typescript/angular-18,19,21)
288
- │ │ ├── _template.md
289
- │ │ ├── README.md
290
- │ │ ├── CODEOWNERS
291
- │ │ ├── java/
292
- │ │ └── typescript/
293
- │ └── settings.json
294
- ├── bin/
295
- │ ├── cli.js # zero-deps `duk` CLI router (Node 18+)
296
- │ └── lib/ # 8 helper modules (detect-stack, version-check, sync-all, manifest, ...)
297
- ├── dashboard/
298
- │ ├── server.js # Express + 3 endpoints
299
- │ ├── db.js # better-sqlite3 / sql.js wrapper
300
- │ ├── rtk.js # spawns rtk gain --format json
301
- │ └── public/ # Vanilla JS + Chart.js CDN
302
- ├── scripts/
303
- │ ├── hooks/
304
- │ │ ├── subagent-telemetry.sh # SubagentStop hook
305
- │ │ └── telemetry-writer.js # triple-fallback writer
306
- │ ├── lint-harness.mjs # validates Pattern 1/2, packs, agent hardcode, drift
307
- │ └── latest-versions.json # offline fallback for version detection
308
- ├── docs/
309
- │ ├── brain/ # Obsidian vault (features, decisions, daily, bugs, migrations)
310
- │ ├── discovery/ # DISCOVERY_*.md
311
- │ ├── prd/ # PRD_*.md
312
- │ ├── issues/ # ISSUES_*.md
313
- │ └── plans/ # PLAN_*.md
314
- ├── tests/smoke/ # smoke tests (install, dashboard, telemetry)
315
- ├── .github/workflows/
316
- │ ├── publish.yml # auto-publish on GitHub Release published
317
- │ └── promote-dist-tag.yml # manual: promote beta → latest via Actions UI
318
- ├── CLAUDE.md # base template (Project Identity + plugin base)
319
- ├── CHANGELOG.md # release-please-managed
320
- └── package.json
321
- ```
322
-
323
- ---
324
-
325
- ## Key ADRs
326
-
327
- | ADR | Decision |
328
- |---|---|
329
- | **ADR-007** | Senior+ gate (a11y + Lighthouse + pyramid thresholds) |
330
- | **ADR-008** | Standard pipeline (PO → analyst → tech-lead → sprint-runner → gate-keeper → reviewer → TL) |
331
- | **ADR-011** | `grill-me` as opt-in discovery skill |
332
- | **ADR-014** | Vanilla JS + Chart.js CDN dashboard |
333
- | **ADR-015** | Triple-fallback telemetry writer |
334
- | **ADR-017** | `DISCOVERY_*.md` in `docs/discovery/` (not `docs/plans/`) |
335
- | **ADR-018** | `duk` CLI redesign — `install → adoptProject` |
336
- | **ADR-020** | Mandatory TDD in `sprint-runner` |
337
- | **ADR-026** | Generic agents + stack packs (architecture foundation) |
338
- | **ADR-027** | Pack governance (frontmatter + `## Security` mandatory + CODEOWNERS + annual review) |
339
- | **ADR-028** | `duk` workflow (new, install --check-only, sync-all with filters, help) |
340
- | **ADR-029** | Canonical pack format (10 sections, 300-450L target) |
341
- | **ADR-030** | Migrator consumes 2 packs (FROM + TO), multi-major incremental, fullstack sequential |
342
- | **ADR-032** | Drift detection (`.MANIFEST`) + `.claude/local/` overrides + opt-in propagation |
343
- | **ADR-033** | `project-manager` orchestrate mode (ROUTE / ORCHESTRATE ≤5 / ESCALATE) — fast-lane for ad-hoc multi-domain tasks without a formal `PLAN_*.md` |
344
- | **ADR-034** | CLI vs Skill design principle — mechanical/deterministic → `duk` CLI; contextual/judgment → chat (skills + agents); hybrid → CLI executes + skill orchestrates |
345
-
346
- Full vault under [`docs/brain/`](docs/brain/) — browse via Obsidian. Live ADR index also rendered at `duk dashboard` → Tech Docs tab.
347
-
348
- ---
349
-
350
- ## Commit restrictions (NON-NEGOTIABLE)
351
-
352
- - Conventional Commits (`feat(scope): ...`, `fix(scope): ...`, `feat!: ...` for breaking)
353
- - **Never** reference Anthropic, Claude, AI, LLM, or assistant in subject/body/trailers
354
- - **Never** add `Co-Authored-By: Claude`
355
- - Commits must look 100% authored by the human developer
356
- - `tech-lead` rejects merge on violation
357
-
358
- ---
359
-
360
- ## Acknowledgements
361
-
362
- `development-utility-kit` is a **meta-skill harness** — it ships its own skills and agents, but it also stands on the shoulders of skills built by other people in the Claude Code community. The bundle would not work the way it does without them, and the credit belongs to their authors.
363
-
364
- Honest thanks to:
365
-
366
- - **[`grill-me`](https://github.com/mattpocock/skills)** — by **[Matt Pocock](https://github.com/mattpocock)** ([aihero.dev](https://www.aihero.dev/my-grill-me-skill-has-gone-viral)). The relentless discovery interview that opens our `grill-me → to-prd → to-issues → analyst → run-sprint` pipeline is Matt's design. We adapted the skill to persist its output to `docs/discovery/DISCOVERY_*.md` and hand off to `analyst`, but the interview mechanic — one decision branch at a time, with a recommended answer the user just confirms — is his.
367
- - **[`caveman`](https://github.com/JuliusBrussee/caveman)** — by **[Julius Brussee](https://github.com/JuliusBrussee)**. The telegraphic communication mode that saves us 65–75% of output tokens with zero technical loss. We use it as the default style in this harness; the compression rules, the levels (lite/full/ultra), and the auto-clarity carve-outs are Julius's work.
368
- - **[`impeccable`](https://github.com/pbakaus/impeccable)** — by **[Paul Bakaus](https://github.com/pbakaus)**. The design-refinement skill (`polish | harden | audit`) that drives our visual-quality gate. Paul's `npx skills add pbakaus/impeccable` distribution pattern also directly inspired our own `npx @eltonssouza/development-utility-kit install` installer (ADR-018).
369
- - **[`rtk`](https://github.com/rtk-ai/rtk)** — by the **[rtk-ai](https://github.com/rtk-ai) team**. The Rust Token Killer CLI proxy that powers the live "RTK savings" widget on the `duk dashboard` (`rtk gain --format json` → `/api/rtk`). The 60–90% savings on dev operations we surface in the dashboard are RTK's, not ours.
370
-
371
- If you build on top of this harness, please give these projects a star — they are the load-bearing dependencies our pipeline assumes, and their authors made them available freely to the community. Any mistake in the way we integrate or describe their work is ours, not theirs.
372
-
373
- > For the full rationale on **why each plugin was selected**, **how it integrates inside the harness**, **what breaks if you disable it**, and **alternatives considered**, see the dedicated [External plugins reference](dashboard/public/content/docs/plugins.en.md) — also rendered live at `duk dashboard` → Tech Docs → "External plugins".
374
-
375
- ---
376
-
377
- ## Release Process
378
-
379
- Releases ship through GitHub Actions, not manual `npm publish`.
380
-
381
- ### Publishing a new version
382
-
383
- 1. Bump `package.json` version (e.g., `2.0.0-beta.1 → 2.0.0`) and update `CHANGELOG.md`.
384
- 2. Commit + push + tag:
385
- ```bash
386
- git commit -m "feat!: <summary>"
387
- git tag v2.0.0
388
- git push origin <branch> --tags
389
- ```
390
- 3. Create a GitHub Release pointing at the tag (UI or `gh release create`).
391
- 4. `publish.yml` workflow fires on `release: published`, runs `npm publish --access public`.
392
- 5. `publishConfig.tag` in `package.json` controls dist-tag target (`beta` or `latest`).
393
-
394
- ### Pre-release vs stable
395
-
396
- - Pre-releases use `--tag beta` (default in `publishConfig`). `npx @eltonssouza/development-utility-kit@beta install` pulls them.
397
- - After validating against real projects: **manually promote** to `latest` via the **Promote npm dist-tag** workflow (GitHub Actions → Run workflow → enter version + target tag).
398
-
399
- ### Rollback
400
-
401
- If a release breaks something, rollback by re-pointing `latest` to the prior stable:
402
-
403
- ```
404
- GitHub Actions → Promote npm dist-tag → version=1.0.1, tag=latest
405
- ```
406
-
407
- Bad version stays published (npm doesn't allow real deletion past 72h), but no one downloads it via `npx` anymore.
408
-
409
- ### Required secret
410
-
411
- The promote workflow needs a `NPM_TOKEN` repository secret — a **Granular Access Token** with read+write on `@eltonssouza/development-utility-kit`. Generated at https://www.npmjs.com/settings/eltonssouza/tokens.
48
+ ## Full documentation
412
49
 
413
- ---
50
+ See the [GitHub repository](https://github.com/eltonssouza/development-utility-kit) for the complete README, architecture, ADRs, stack packs, and the live dashboard docs.
414
51
 
415
52
  ## License
416
53
 
package/README.npm.md ADDED
@@ -0,0 +1,54 @@
1
+ # development-utility-kit
2
+
3
+ > Meta-skill harness for Claude Code. Stack-agnostic agents, knowledge packs per stack, single-command injection into any project.
4
+
5
+ [![npm](https://img.shields.io/npm/v/@eltonssouza/development-utility-kit)](https://www.npmjs.com/package/@eltonssouza/development-utility-kit)
6
+ [![license](https://img.shields.io/npm/l/@eltonssouza/development-utility-kit)](https://github.com/eltonssouza/development-utility-kit/blob/main/LICENSE)
7
+
8
+ CLI binary: `duk` · Node `>=18` · License: MIT
9
+
10
+ ## Install
11
+
12
+ **As a Claude Code plugin** (recommended — global, every project, nothing written into your repo):
13
+
14
+ ```
15
+ /plugin marketplace add eltonssouza/development-utility-kit
16
+ /plugin install development-utility-kit
17
+ ```
18
+
19
+ **Or inject per-project via npx** (writes `.claude/` + `CLAUDE.md` into the current project, and self-installs the `duk` CLI globally):
20
+
21
+ ```bash
22
+ npx @eltonssouza/development-utility-kit install
23
+ ```
24
+
25
+ > Run `npx … install` from inside a project folder — not from a drive root.
26
+
27
+ ## What you get
28
+
29
+ - **18 keyword-triggered skills** + **21 stack-agnostic agents** + stack knowledge packs (Java/Spring, TypeScript/Angular, and more)
30
+ - **Front-controller routing** (`project-manager`) + flow governance hook
31
+ - **Full discovery → delivery pipeline** with mandatory TDD and a Senior+ quality gate
32
+ - **Local sub-agent telemetry** + a no-build web dashboard (`duk dashboard`)
33
+ - **Obsidian project brain** (`brain-keeper`)
34
+
35
+ ## `duk` commands
36
+
37
+ ```
38
+ duk new <name> # scaffold a new project + conversational stack discovery
39
+ duk install # inject the harness into the current project
40
+ duk install --check-only # preview detected stack + drift, write nothing
41
+ duk sync-all <dir> # update the harness across many projects
42
+ duk dashboard # launch the local telemetry + docs dashboard
43
+ duk doctor # validate environment
44
+ duk lint # validate harness .claude/ structure
45
+ duk help [command] # help
46
+ ```
47
+
48
+ ## Full documentation
49
+
50
+ See the [GitHub repository](https://github.com/eltonssouza/development-utility-kit) for the complete README, architecture, ADRs, stack packs, and the live dashboard docs.
51
+
52
+ ## License
53
+
54
+ MIT