@eltonssouza/development-utility-kit 0.11.0 → 0.13.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/agents/frontend-developer.md +1 -0
- package/.claude/agents/ux-designer.md +8 -2
- package/.claude/skills/README.md +5 -7
- package/.claude/skills/project-manager/SKILL.md +79 -4
- 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 +23 -409
- package/README.npm.md +54 -0
- package/README.repo.md +447 -0
- 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 +4 -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 +29 -10
- package/dashboard/public/content/manual/fullstack.en.md +13 -17
- 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/README.md
CHANGED
|
@@ -1,439 +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
|
-
|
|
10
|
+
## Install
|
|
11
|
+
|
|
12
|
+
**As a Claude Code plugin** (recommended — global, every project, nothing written into your repo):
|
|
18
13
|
|
|
19
14
|
```
|
|
20
15
|
/plugin marketplace add eltonssouza/development-utility-kit
|
|
21
16
|
/plugin install development-utility-kit
|
|
22
17
|
```
|
|
23
18
|
|
|
24
|
-
**Or inject per-project via npx** (writes `.claude/` + `CLAUDE.md` into the current project):
|
|
19
|
+
**Or inject per-project via npx** (writes `.claude/` + `CLAUDE.md` into the current project, and self-installs the `duk` CLI globally):
|
|
25
20
|
|
|
26
21
|
```bash
|
|
27
22
|
npx @eltonssouza/development-utility-kit install
|
|
28
23
|
```
|
|
29
24
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
## What it is
|
|
33
|
-
|
|
34
|
-
Not an agent. Not a skill. The **bundle** that turns any repo into a Claude-Code-driven project — with:
|
|
35
|
-
|
|
36
|
-
- **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.)
|
|
37
|
-
- **21 specialized sub-agents** (1 Opus for `tech-lead`, 3 Haiku for mechanical work, 17 Sonnet for everything else)
|
|
38
|
-
- **5 stack knowledge packs** (Java + Spring Boot 3/4, Angular 18/19/21) — extend with `create-stack-pack` skill
|
|
39
|
-
- **Full discovery → delivery pipeline** (`grill-me → to-prd → to-issues → analyst → run-sprint`) with mandatory TDD
|
|
40
|
-
- **Local sub-agent telemetry** (`SubagentStop` hook → SQLite) + **web dashboard** (Express + Vanilla JS + Chart.js CDN)
|
|
41
|
-
- **Non-negotiable Senior+ quality gate** (coverage ≥85%, mutation ≥70%, Lighthouse ≥0.80, a11y 0 critical)
|
|
42
|
-
- **Autonomy Matrix**: agents decide on their own; human is interrupted only in 4 PO cases or 3 TL cases
|
|
43
|
-
- **Drift detection** via `.claude/.MANIFEST` (sha256 per file) — `duk install` refuses to overwrite local modifications without `--force`
|
|
44
|
-
|
|
45
|
-
> 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).
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Why use it
|
|
50
|
-
|
|
51
|
-
| Strength | Detail |
|
|
52
|
-
|---|---|
|
|
53
|
-
| **Zero-friction injection** | `duk install` in the project directory. No clone, no git, no boilerplate. |
|
|
54
|
-
| **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. |
|
|
55
|
-
| **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. |
|
|
56
|
-
| **Auto stack detection** | `detect-stack.js` parses `pom.xml`, `package.json`, `pyproject.toml`, `go.mod`, `docker-compose.yml`. |
|
|
57
|
-
| **Idempotent install + drift detection** | Previous `.claude/` becomes `.claude.bak-<timestamp>/`. `.MANIFEST` (sha256) detects local modifications and refuses unsafe overwrites. `## Project Identity` preserved verbatim. |
|
|
58
|
-
| **Local overrides via `.claude/local/`** | Project-specific tweaks live there. Never touched by `duk install`. Loader priority: `local/` wins over harness. |
|
|
59
|
-
| **Aggressive autonomy by design** | Agents never ask permission for routine. PO/TL hold decision power; specialists never escalate directly to human. |
|
|
60
|
-
| **Universal TDD** | `sprint-runner` enforces `qa-engineer (failing test) → developer → gate-keeper` on every task. ADR-020. |
|
|
61
|
-
| **Obsidian-ready brain** | `brain-keeper` provisions `docs/brain/` with vault, color snippets, MOC, ADRs, daily, features, bugs, tech-debt, migrations. |
|
|
62
|
-
| **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). |
|
|
63
|
-
| **No build for dashboard** | Vanilla JS + Chart.js via CDN. Tiny tarball. ADR-014. |
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
## How it works
|
|
68
|
-
|
|
69
|
-
### 3-layer architecture
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
User prompt
|
|
73
|
-
│
|
|
74
|
-
▼
|
|
75
|
-
┌─────────────────────────────┐
|
|
76
|
-
│ SKILLS (entry point) │ keyword match
|
|
77
|
-
│ .claude/skills/<X>/SKILL.md│ → specific skill OR
|
|
78
|
-
└─────────────┬───────────────┘ project-manager (front-controller)
|
|
79
|
-
│
|
|
80
|
-
▼ Step 0 (orchestrating skills)
|
|
81
|
-
┌─────────────────────────────┐
|
|
82
|
-
│ stack-resolver (Haiku) │ reads ## Project Identity
|
|
83
|
-
│ reads .claude/stacks/<pack>│ returns STACK CONTEXT block
|
|
84
|
-
└─────────────┬───────────────┘
|
|
85
|
-
│
|
|
86
|
-
▼ Task tool dispatch (with STACK CONTEXT inlined)
|
|
87
|
-
┌─────────────────────────────┐
|
|
88
|
-
│ AGENTS (executors) │ 21 specialized agents
|
|
89
|
-
│ .claude/agents/<X>.md │ Opus | Sonnet | Haiku per matrix
|
|
90
|
-
└─────────────┬───────────────┘
|
|
91
|
-
│
|
|
92
|
-
▼
|
|
93
|
-
Artifact (code, ADR, PRD, plan, test, deploy)
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Skill = entry point + multi-step protocol. Agent = executor with tools. Pack = stack-specific knowledge consumed by agents. No loose commands.
|
|
97
|
-
|
|
98
|
-
### Discovery → delivery flow
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
grill-me → docs/discovery/DISCOVERY_<NAME>.md
|
|
102
|
-
↓
|
|
103
|
-
to-prd → docs/prd/PRD_<NAME>.md
|
|
104
|
-
↓
|
|
105
|
-
to-issues → docs/issues/ISSUES_<NAME>.md (gh issue create-ready)
|
|
106
|
-
↓
|
|
107
|
-
analyst → docs/plans/PLAN_<NAME>.md (goal-ready DoD)
|
|
108
|
-
↓
|
|
109
|
-
run-sprint (thin) → sprint-runner (single execution contract; mandatory TDD, Stage 0 stack-resolver)
|
|
110
|
-
↓
|
|
111
|
-
gate-keeper → Senior+ gate (coverage, mutation, a11y, lighthouse, pyramid)
|
|
112
|
-
↓
|
|
113
|
-
brain-keeper → docs/brain/ (daily, feature, ADR, bug, tech-debt, migration, MOC)
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
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.
|
|
117
|
-
|
|
118
|
-
### Flow governance
|
|
119
|
-
|
|
120
|
-
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`.
|
|
121
|
-
|
|
122
|
-
`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`).
|
|
123
|
-
|
|
124
|
-
### Telemetry + Dashboard
|
|
125
|
-
|
|
126
|
-
```
|
|
127
|
-
Claude Code ─► UserPromptSubmit ─► flow-guard.js (lane classify + block)
|
|
128
|
-
│
|
|
129
|
-
└► SubagentStop hook ─► subagent-telemetry.sh ─► telemetry-writer.js
|
|
130
|
-
│
|
|
131
|
-
▼
|
|
132
|
-
~/.claude/telemetry.db (SQLite)
|
|
133
|
-
events + orchestration_runs
|
|
134
|
-
│
|
|
135
|
-
┌─────────────────────────────────────────┘
|
|
136
|
-
▼
|
|
137
|
-
duk dashboard → Express @ :4242+ → Vanilla JS UI
|
|
138
|
-
/api/stats
|
|
139
|
-
/api/projects
|
|
140
|
-
/api/projects/processes (run-groups + agent children)
|
|
141
|
-
/api/rtk (rtk gain --format json)
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
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.
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Quickstart
|
|
149
|
-
|
|
150
|
-
### Two ways to install
|
|
151
|
-
|
|
152
|
-
| | **Plugin** (recommended) | **npx injection** |
|
|
153
|
-
|---|---|---|
|
|
154
|
-
| Command | `/plugin marketplace add eltonssouza/development-utility-kit` then `/plugin install development-utility-kit` | `npx @eltonssouza/development-utility-kit install` |
|
|
155
|
-
| Scope | Global — every project, every session | Per-project (writes `.claude/` + `CLAUDE.md`) |
|
|
156
|
-
| Lands in | `~/.claude/plugins/` | the project directory |
|
|
157
|
-
| Updates | `/plugin update` (or auto on version bump) | re-run `npx … install` |
|
|
158
|
-
| Per-project stack | declare in a small `CLAUDE.md` `## Project Identity` (or let agents auto-detect) | written into the injected `CLAUDE.md` |
|
|
159
|
-
|
|
160
|
-
Both deliver the same 19 skills + 21 agents + stack packs. The plugin keeps them global and out of your repo; the npx path injects them into the project (and self-installs `duk` globally). Skills, agents and the flow-governance hook load identically either way.
|
|
161
|
-
|
|
162
|
-
> **Note on `## Project Identity`:** Claude Code plugins cannot ship a project `CLAUDE.md` (plugin context arrives via skills/agents/hooks, not CLAUDE.md). When you install via the plugin, declare your stack in a short per-project `CLAUDE.md` block so `stack-resolver` picks the right pack — or rely on `detect-stack.js` auto-detection. The npx path still writes the full `CLAUDE.md` for you.
|
|
163
|
-
|
|
164
|
-
### Brand-new project
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
duk new my-app
|
|
168
|
-
cd my-app
|
|
169
|
-
# Open Cowork or Claude Code in this folder, then in chat:
|
|
170
|
-
# > "sabatina pra projeto novo"
|
|
171
|
-
# stack-discovery skill walks you through 8 questions to declare type, language,
|
|
172
|
-
# framework, version, database, UI lib, domain.
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
### Existing project
|
|
176
|
-
|
|
177
|
-
```bash
|
|
178
|
-
cd <your-project>
|
|
179
|
-
npx @eltonssouza/development-utility-kit install
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
Injects `.claude/`, `CLAUDE.md`, `.claude/HARNESS_VERSION`, `.claude/.MANIFEST`, `.claude/local/` placeholder. Detects stack automatically.
|
|
183
|
-
|
|
184
|
-
**Preview before applying** (no writes):
|
|
185
|
-
```bash
|
|
186
|
-
duk install --check-only
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
Reports detected stack + local vs latest harness version + pack availability.
|
|
190
|
-
|
|
191
|
-
**Override local modifications** (skip drift detection):
|
|
192
|
-
```bash
|
|
193
|
-
duk install --force
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
`.claude.backup-<timestamp>/` is always created.
|
|
197
|
-
|
|
198
|
-
### Edit `## Project Identity` in `CLAUDE.md`
|
|
199
|
-
|
|
200
|
-
The only section the project owns. All others are harness base and receive updates via `duk install` (with drift detection).
|
|
201
|
-
|
|
202
|
-
```markdown
|
|
203
|
-
## Project Identity
|
|
204
|
-
|
|
205
|
-
- **Project name**: my-store
|
|
206
|
-
- **Project type**: fullstack
|
|
207
|
-
- **Primary stack**: Java 21 + Spring Boot 3.2
|
|
208
|
-
- **Database**: PostgreSQL 17 + Redis 7
|
|
209
|
-
- **Domain**: e-commerce
|
|
210
|
-
- **Team size**: 3 fullstack
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
`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.
|
|
214
|
-
|
|
215
|
-
### Run the dashboard
|
|
216
|
-
|
|
217
|
-
```bash
|
|
218
|
-
duk dashboard # auto-detects free port from 4242
|
|
219
|
-
duk dashboard --port 5000
|
|
220
|
-
duk dashboard --no-open # skip browser launch
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
Before starting Express, prints `rtk gain` (token savings analytics). If `rtk` not in PATH: non-fatal warning, proceeds.
|
|
224
|
-
|
|
225
|
-
### Update many projects at once
|
|
25
|
+
> Run `npx … install` from inside a project folder — not from a drive root.
|
|
226
26
|
|
|
227
|
-
|
|
228
|
-
# Preview which projects would be updated:
|
|
229
|
-
duk sync-all C:\development\source\projects
|
|
27
|
+
## What you get
|
|
230
28
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
# Exclude specific projects:
|
|
237
|
-
duk sync-all C:\development\source\projects --exclude prod-critical --apply
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
---
|
|
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`)
|
|
241
34
|
|
|
242
35
|
## `duk` commands
|
|
243
36
|
|
|
244
37
|
```
|
|
245
|
-
duk new <name>
|
|
246
|
-
duk install
|
|
247
|
-
|
|
248
|
-
duk
|
|
249
|
-
duk
|
|
250
|
-
|
|
251
|
-
duk
|
|
252
|
-
duk
|
|
253
|
-
duk lint [--category <name>] [--json] # validate harness .claude/ structure
|
|
254
|
-
duk help [command] # general help or command-specific
|
|
255
|
-
duk --version # print version
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
See `duk help <command>` for detailed per-command flags. The `doctor` and
|
|
259
|
-
`lint` commands are deterministic and run without any LLM/API calls — safe
|
|
260
|
-
to use in CI. See **ADR-034** for the design principle behind them.
|
|
261
|
-
|
|
262
|
-
---
|
|
263
|
-
|
|
264
|
-
## Prompts that trigger skills
|
|
265
|
-
|
|
266
|
-
| You say | Skill fires |
|
|
267
|
-
|---|---|
|
|
268
|
-
| "sabatina pra projeto novo", "stack discovery" | `stack-discovery` → fills `## Project Identity` |
|
|
269
|
-
| "cria pack para Django", "gera pack" | `create-stack-pack` → new `.claude/stacks/<lang>/<framework>-<major>.md` |
|
|
270
|
-
| "grill me", "interview me about X" | `grill-me` → discovery interview |
|
|
271
|
-
| "to-prd", "generate PRD" | `to-prd` (after `grill-me`) |
|
|
272
|
-
| "to-issues", "break into issues" | `to-issues` (after `to-prd`) |
|
|
273
|
-
| "run sprint 2", "execute the sprint" | `run-sprint` (Stage 0 stack-resolver) |
|
|
274
|
-
| "quick-feature: add field X" | `quick-feature` → bypass discovery, minimal PLAN, run-sprint |
|
|
275
|
-
| "pair debug", "investigate this bug" | `pair-debug` (Stage 0 stack-resolver) |
|
|
276
|
-
| "audit coverage" | `test-coverage-auditor` |
|
|
277
|
-
| "PRD-ready?", "ready for prod?" | `prd-ready-check` |
|
|
278
|
-
| "create endpoint", "build the screen", anything else | `project-manager` (front-controller — classifies lane, enforces flow) |
|
|
279
|
-
| "stop caveman", "normal mode" | disables caveman |
|
|
280
|
-
|
|
281
|
-
---
|
|
282
|
-
|
|
283
|
-
## Senior+ Quality Gate
|
|
284
|
-
|
|
285
|
-
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:
|
|
286
|
-
|
|
287
|
-
| Metric | Threshold |
|
|
288
|
-
|---|---|
|
|
289
|
-
| Backend coverage (lines / branches) | ≥85% / ≥80% |
|
|
290
|
-
| Backend mutation score | ≥70% in domain + application layers |
|
|
291
|
-
| Frontend coverage | ≥85% statements, ≥80% branches |
|
|
292
|
-
| Static analysis (SpotBugs / mypy / golangci-lint / ESLint strict / ...) | 0 CRITICAL, 0 HIGH |
|
|
293
|
-
| Dependency vuln scan (OWASP DC / npm audit / safety / govulncheck) | 0 CVE CVSS ≥7.0 |
|
|
294
|
-
| Playwright E2E | 100% green, console 0 errors |
|
|
295
|
-
| a11y (jest-axe + axe-playwright) | 0 serious, 0 critical |
|
|
296
|
-
| Lighthouse | score ≥0.80, LCP ≤2500ms, CLS ≤0.1, TBT ≤300ms |
|
|
297
|
-
| Testing pyramid | E2E ≤30% of total (ideal ≤15%) |
|
|
298
|
-
|
|
299
|
-
Reference: ADR-007 (a11y + Lighthouse + pyramid), ADR-027 (pack `## Security` mandatory).
|
|
300
|
-
|
|
301
|
-
---
|
|
302
|
-
|
|
303
|
-
## Structure
|
|
304
|
-
|
|
305
|
-
```
|
|
306
|
-
development-utility-kit/
|
|
307
|
-
├── .claude/
|
|
308
|
-
│ ├── skills/ # 20 skills (project-manager front-controller, run-sprint, stack-discovery, ...)
|
|
309
|
-
│ ├── agents/ # 21 agents (Opus/Sonnet/Haiku per matrix)
|
|
310
|
-
│ ├── stacks/ # 5 stack packs (java/spring-boot-3, spring-boot-4; typescript/angular-18,19,21)
|
|
311
|
-
│ │ ├── _template.md
|
|
312
|
-
│ │ ├── README.md
|
|
313
|
-
│ │ ├── CODEOWNERS
|
|
314
|
-
│ │ ├── java/
|
|
315
|
-
│ │ └── typescript/
|
|
316
|
-
│ └── settings.json
|
|
317
|
-
├── bin/
|
|
318
|
-
│ ├── cli.js # zero-deps `duk` CLI router (Node 18+)
|
|
319
|
-
│ └── lib/ # 8 helper modules (detect-stack, version-check, sync-all, manifest, ...)
|
|
320
|
-
├── dashboard/
|
|
321
|
-
│ ├── server.js # Express + 3 endpoints
|
|
322
|
-
│ ├── db.js # better-sqlite3 / sql.js wrapper
|
|
323
|
-
│ ├── rtk.js # spawns rtk gain --format json
|
|
324
|
-
│ └── public/ # Vanilla JS + Chart.js CDN
|
|
325
|
-
├── scripts/
|
|
326
|
-
│ ├── hooks/
|
|
327
|
-
│ │ ├── subagent-telemetry.sh # SubagentStop hook
|
|
328
|
-
│ │ └── telemetry-writer.js # triple-fallback writer
|
|
329
|
-
│ ├── lint-harness.mjs # validates Pattern 1/2, packs, agent hardcode, drift
|
|
330
|
-
│ └── latest-versions.json # offline fallback for version detection
|
|
331
|
-
├── docs/
|
|
332
|
-
│ ├── brain/ # Obsidian vault (features, decisions, daily, bugs, migrations)
|
|
333
|
-
│ ├── discovery/ # DISCOVERY_*.md
|
|
334
|
-
│ ├── prd/ # PRD_*.md
|
|
335
|
-
│ ├── issues/ # ISSUES_*.md
|
|
336
|
-
│ └── plans/ # PLAN_*.md
|
|
337
|
-
├── tests/smoke/ # smoke tests (install, dashboard, telemetry)
|
|
338
|
-
├── .github/workflows/
|
|
339
|
-
│ ├── publish.yml # auto-publish on GitHub Release published
|
|
340
|
-
│ └── promote-dist-tag.yml # manual: promote beta → latest via Actions UI
|
|
341
|
-
├── CLAUDE.md # base template (Project Identity + plugin base)
|
|
342
|
-
├── CHANGELOG.md # release-please-managed
|
|
343
|
-
└── package.json
|
|
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
|
|
344
46
|
```
|
|
345
47
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
## Key ADRs
|
|
349
|
-
|
|
350
|
-
| ADR | Decision |
|
|
351
|
-
|---|---|
|
|
352
|
-
| **ADR-007** | Senior+ gate (a11y + Lighthouse + pyramid thresholds) |
|
|
353
|
-
| **ADR-008** | Standard pipeline (PO → analyst → tech-lead → sprint-runner → gate-keeper → reviewer → TL) |
|
|
354
|
-
| **ADR-011** | `grill-me` as opt-in discovery skill |
|
|
355
|
-
| **ADR-014** | Vanilla JS + Chart.js CDN dashboard |
|
|
356
|
-
| **ADR-015** | Triple-fallback telemetry writer |
|
|
357
|
-
| **ADR-017** | `DISCOVERY_*.md` in `docs/discovery/` (not `docs/plans/`) |
|
|
358
|
-
| **ADR-018** | `duk` CLI redesign — `install → adoptProject` |
|
|
359
|
-
| **ADR-020** | Mandatory TDD in `sprint-runner` |
|
|
360
|
-
| **ADR-026** | Generic agents + stack packs (architecture foundation) |
|
|
361
|
-
| **ADR-027** | Pack governance (frontmatter + `## Security` mandatory + CODEOWNERS + annual review) |
|
|
362
|
-
| **ADR-028** | `duk` workflow (new, install --check-only, sync-all with filters, help) |
|
|
363
|
-
| **ADR-029** | Canonical pack format (10 sections, 300-450L target) |
|
|
364
|
-
| **ADR-030** | Migrator consumes 2 packs (FROM + TO), multi-major incremental, fullstack sequential |
|
|
365
|
-
| **ADR-032** | Drift detection (`.MANIFEST`) + `.claude/local/` overrides + opt-in propagation |
|
|
366
|
-
| **ADR-033** | `project-manager` orchestrate mode (ROUTE / ORCHESTRATE ≤5 / ESCALATE) — fast-lane for ad-hoc multi-domain tasks without a formal `PLAN_*.md` |
|
|
367
|
-
| **ADR-034** | CLI vs Skill design principle — mechanical/deterministic → `duk` CLI; contextual/judgment → chat (skills + agents); hybrid → CLI executes + skill orchestrates |
|
|
368
|
-
|
|
369
|
-
Full vault under [`docs/brain/`](docs/brain/) — browse via Obsidian. Live ADR index also rendered at `duk dashboard` → Tech Docs tab.
|
|
370
|
-
|
|
371
|
-
---
|
|
372
|
-
|
|
373
|
-
## Commit restrictions (NON-NEGOTIABLE)
|
|
374
|
-
|
|
375
|
-
- Conventional Commits (`feat(scope): ...`, `fix(scope): ...`, `feat!: ...` for breaking)
|
|
376
|
-
- **Never** reference Anthropic, Claude, AI, LLM, or assistant in subject/body/trailers
|
|
377
|
-
- **Never** add `Co-Authored-By: Claude`
|
|
378
|
-
- Commits must look 100% authored by the human developer
|
|
379
|
-
- `tech-lead` rejects merge on violation
|
|
380
|
-
|
|
381
|
-
---
|
|
382
|
-
|
|
383
|
-
## Acknowledgements
|
|
384
|
-
|
|
385
|
-
`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.
|
|
386
|
-
|
|
387
|
-
Honest thanks to:
|
|
388
|
-
|
|
389
|
-
- **[`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.
|
|
390
|
-
- **[`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.
|
|
391
|
-
- **[`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).
|
|
392
|
-
- **[`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.
|
|
393
|
-
|
|
394
|
-
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.
|
|
395
|
-
|
|
396
|
-
> 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".
|
|
397
|
-
|
|
398
|
-
---
|
|
399
|
-
|
|
400
|
-
## Release Process
|
|
401
|
-
|
|
402
|
-
Releases ship through GitHub Actions, not manual `npm publish`.
|
|
403
|
-
|
|
404
|
-
### Publishing a new version
|
|
405
|
-
|
|
406
|
-
1. Bump `package.json` version (e.g., `2.0.0-beta.1 → 2.0.0`) and update `CHANGELOG.md`.
|
|
407
|
-
2. Commit + push + tag:
|
|
408
|
-
```bash
|
|
409
|
-
git commit -m "feat!: <summary>"
|
|
410
|
-
git tag v2.0.0
|
|
411
|
-
git push origin <branch> --tags
|
|
412
|
-
```
|
|
413
|
-
3. Create a GitHub Release pointing at the tag (UI or `gh release create`).
|
|
414
|
-
4. `publish.yml` workflow fires on `release: published`, runs `npm publish --access public`.
|
|
415
|
-
5. `publishConfig.tag` in `package.json` controls dist-tag target (`beta` or `latest`).
|
|
416
|
-
|
|
417
|
-
### Pre-release vs stable
|
|
418
|
-
|
|
419
|
-
- Pre-releases use `--tag beta` (default in `publishConfig`). `npx @eltonssouza/development-utility-kit@beta install` pulls them.
|
|
420
|
-
- After validating against real projects: **manually promote** to `latest` via the **Promote npm dist-tag** workflow (GitHub Actions → Run workflow → enter version + target tag).
|
|
421
|
-
|
|
422
|
-
### Rollback
|
|
423
|
-
|
|
424
|
-
If a release breaks something, rollback by re-pointing `latest` to the prior stable:
|
|
425
|
-
|
|
426
|
-
```
|
|
427
|
-
GitHub Actions → Promote npm dist-tag → version=1.0.1, tag=latest
|
|
428
|
-
```
|
|
429
|
-
|
|
430
|
-
Bad version stays published (npm doesn't allow real deletion past 72h), but no one downloads it via `npx` anymore.
|
|
431
|
-
|
|
432
|
-
### Required secret
|
|
433
|
-
|
|
434
|
-
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
|
|
435
49
|
|
|
436
|
-
|
|
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.
|
|
437
51
|
|
|
438
52
|
## License
|
|
439
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
|