@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.
- package/.claude/skills/README.md +5 -7
- package/.claude/skills/project-manager/SKILL.md +0 -1
- package/.claude/skills/scaffold/SKILL.md +1 -1
- package/.claude/skills/update-template/SKILL.md +2 -2
- package/CLAUDE.md +0 -1
- package/README.md +24 -387
- package/README.npm.md +54 -0
- package/README.repo.md +447 -0
- package/bin/cli.js +16 -1
- package/dashboard/public/content/docs/architecture-overview.en.md +18 -1
- package/dashboard/public/content/docs/cli-reference.en.md +5 -1
- package/dashboard/public/content/docs/skills-reference.en.md +2 -21
- package/dashboard/public/content/docs/troubleshooting.en.md +2 -2
- package/dashboard/public/content/manual/backend.en.md +9 -21
- package/dashboard/public/content/manual/existing-project.en.md +73 -26
- package/dashboard/public/content/manual/frontend.en.md +2 -0
- package/dashboard/public/content/manual/fullstack.en.md +7 -16
- package/dashboard/public/content/manual/mobile.en.md +3 -2
- package/dashboard/public/content/manual/quickstart.en.md +23 -1
- package/dashboard/test/sprint2.test.js +0 -10
- package/package.json +7 -1
- package/.claude/skills/active-project/SKILL.md +0 -131
- package/dashboard/public/content/docs/honcho-memory.en.md +0 -394
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 **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,
|
|
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,
|
|
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`, `
|
|
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 | `
|
|
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 `
|
|
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,
|
|
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.
|
|
3
|
+
> Meta-skill harness for Claude Code. Stack-agnostic agents, knowledge packs per stack, single-command injection into any project.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@eltonssouza/development-utility-kit)
|
|
6
|
-
[](https://www.npmjs.com/package/@eltonssouza/development-utility-kit)
|
|
8
|
-
[](LICENSE)
|
|
9
|
-
[](https://github.com/eltonssouza/development-utility-kit/stargazers)
|
|
10
|
-
[](https://github.com/eltonssouza/development-utility-kit/issues)
|
|
11
|
-
[](ROADMAP.md)
|
|
12
|
-
[](docs/COMPARISONS.md)
|
|
13
|
-
[](https://github.com/eltonssouza/development-utility-kit/releases/latest)
|
|
6
|
+
[](https://github.com/eltonssouza/development-utility-kit/blob/main/LICENSE)
|
|
14
7
|
|
|
15
8
|
CLI binary: `duk` · Node `>=18` · License: MIT
|
|
16
9
|
|
|
17
|
-
|
|
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
|
-
|
|
114
|
-
|
|
115
|
-
### Telemetry + Dashboard
|
|
12
|
+
**As a Claude Code plugin** (recommended — global, every project, nothing written into your repo):
|
|
116
13
|
|
|
117
14
|
```
|
|
118
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
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>
|
|
223
|
-
duk install
|
|
224
|
-
|
|
225
|
-
duk
|
|
226
|
-
duk
|
|
227
|
-
|
|
228
|
-
duk
|
|
229
|
-
duk
|
|
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
|
-
|
|
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
|
+
[](https://www.npmjs.com/package/@eltonssouza/development-utility-kit)
|
|
6
|
+
[](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
|