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