@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
@@ -0,0 +1,315 @@
1
+ # Quality Gate Senior+
2
+
3
+ The senior+ gate is **non-negotiable**. A task is only complete after `auto-test-guard` GREEN on **all** items. No exception. `tech-lead` blocks the merge if any item fails.
4
+
5
+ This policy exists because the harness was built to deliver production code, not a fragile MVP. Coverage below threshold, high vulnerability, broken a11y, or poor Lighthouse score do not pass — regardless of deadline pressure. When the gate blocks, the correct path is to **fix the code**, not lower the threshold.
6
+
7
+ ## Full threshold table
8
+
9
+ | Metric | Threshold | Tool |
10
+ |---|---|---|
11
+ | Backend coverage (lines) | >= **85%** | JaCoCo |
12
+ | Backend coverage (branches) | >= **80%** | JaCoCo |
13
+ | **Backend mutation score** | >= **70%** in `domain/` + `application/` | **PIT (Pitest)** |
14
+ | Frontend coverage (statements) | >= **85%** | Jest --coverage |
15
+ | Frontend coverage (branches) | >= **80%** | Jest --coverage |
16
+ | SpotBugs | 0 CRITICAL, 0 HIGH | SpotBugs Maven plugin |
17
+ | SonarLint/SonarQube (if configured) | 0 CRITICAL, 0 HIGH, 0 unreviewed hotspot | Sonar |
18
+ | OWASP dependency-check | 0 CVE with CVSS >= 7.0 | OWASP DC plugin |
19
+ | npm audit | 0 HIGH, 0 CRITICAL | `npm audit --audit-level=high` |
20
+ | ESLint frontend | 0 errors, 0 warnings on new code | `eslint --max-warnings 0` |
21
+ | Playwright E2E | 100% green, critical flows covered | Playwright |
22
+ | Browser console in E2E | 0 errors | Chrome MCP |
23
+ | **A11y violations (component)** | 0 `serious` / 0 `critical` | jest-axe |
24
+ | **A11y violations (E2E)** | 0 `serious` / 0 `critical` | @axe-core/playwright |
25
+ | **Performance score (Lighthouse)** | >= **0.80** (median of 3 runs) | @lhci/cli |
26
+ | **LCP (Largest Contentful Paint)** | <= **2500ms** | @lhci/cli |
27
+ | **CLS (Cumulative Layout Shift)** | <= **0.1** | @lhci/cli |
28
+ | **TBT (Total Blocking Time)** | <= **300ms** | @lhci/cli |
29
+ | **Testing pyramid ratio (E2E)** | <= **30%** of total (hard-fail above; ideal <= 15%) | `auto-test-guard` count |
30
+
31
+ ## How to run each validation
32
+
33
+ The commands below are run automatically by `gate-keeper`; they are documented here so devs can reproduce locally before the gate.
34
+
35
+ ### Backend (Java + Spring Boot)
36
+
37
+ ```bash
38
+ # Unit tests + JaCoCo coverage
39
+ ./mvnw test
40
+
41
+ # Mutation testing (PIT) — enable pitest profile
42
+ ./mvnw verify -Ppitest
43
+
44
+ # SpotBugs static analysis
45
+ ./mvnw spotbugs:check
46
+
47
+ # OWASP dependency audit
48
+ ./mvnw dependency-check:check
49
+
50
+ # Sonar (if configured)
51
+ ./mvnw verify sonar:sonar -Dsonar.host.url=<url>
52
+ ```
53
+
54
+ ### Frontend (Angular)
55
+
56
+ ```bash
57
+ # Jest with coverage
58
+ npm test -- --coverage
59
+
60
+ # Dependency audit
61
+ npm audit --audit-level=high
62
+
63
+ # ESLint with no warnings
64
+ npx eslint src --max-warnings 0
65
+
66
+ # Playwright E2E
67
+ npx playwright test
68
+
69
+ # Lighthouse CI
70
+ npx lhci autorun
71
+ ```
72
+
73
+ ### Test pyramid
74
+
75
+ ```bash
76
+ # Count done by gate-keeper
77
+ # total_e2e / (total_unit + total_integration + total_e2e) <= 0.30
78
+ ```
79
+
80
+ ## Minimal configuration
81
+
82
+ Projects generated by the harness already come configured. For legacy projects adopted (`update-template`), check the following.
83
+
84
+ ### pom.xml — JaCoCo + PIT + SpotBugs + OWASP
85
+
86
+ ```xml
87
+ <!-- JaCoCo -->
88
+ <plugin>
89
+ <groupId>org.jacoco</groupId>
90
+ <artifactId>jacoco-maven-plugin</artifactId>
91
+ <executions>
92
+ <execution>
93
+ <goals><goal>prepare-agent</goal></goals>
94
+ </execution>
95
+ <execution>
96
+ <id>report</id>
97
+ <phase>verify</phase>
98
+ <goals><goal>report</goal></goals>
99
+ </execution>
100
+ <execution>
101
+ <id>jacoco-check</id>
102
+ <goals><goal>check</goal></goals>
103
+ <configuration>
104
+ <rules>
105
+ <rule>
106
+ <element>BUNDLE</element>
107
+ <limits>
108
+ <limit><counter>LINE</counter><value>COVEREDRATIO</value><minimum>0.85</minimum></limit>
109
+ <limit><counter>BRANCH</counter><value>COVEREDRATIO</value><minimum>0.80</minimum></limit>
110
+ </limits>
111
+ </rule>
112
+ </rules>
113
+ </configuration>
114
+ </execution>
115
+ </executions>
116
+ </plugin>
117
+
118
+ <!-- PIT (mutation testing) -->
119
+ <profile>
120
+ <id>pitest</id>
121
+ <build>
122
+ <plugins>
123
+ <plugin>
124
+ <groupId>org.pitest</groupId>
125
+ <artifactId>pitest-maven</artifactId>
126
+ <configuration>
127
+ <targetClasses>
128
+ <param>com.company.project.domain.*</param>
129
+ <param>com.company.project.application.*</param>
130
+ </targetClasses>
131
+ <mutationThreshold>70</mutationThreshold>
132
+ <outputFormats><param>HTML</param><param>XML</param></outputFormats>
133
+ </configuration>
134
+ <executions>
135
+ <execution>
136
+ <goals><goal>mutationCoverage</goal></goals>
137
+ </execution>
138
+ </executions>
139
+ </plugin>
140
+ </plugins>
141
+ </build>
142
+ </profile>
143
+
144
+ <!-- SpotBugs -->
145
+ <plugin>
146
+ <groupId>com.github.spotbugs</groupId>
147
+ <artifactId>spotbugs-maven-plugin</artifactId>
148
+ <configuration>
149
+ <effort>Max</effort>
150
+ <threshold>High</threshold>
151
+ <failOnError>true</failOnError>
152
+ </configuration>
153
+ </plugin>
154
+
155
+ <!-- OWASP dependency-check -->
156
+ <plugin>
157
+ <groupId>org.owasp</groupId>
158
+ <artifactId>dependency-check-maven</artifactId>
159
+ <configuration>
160
+ <failBuildOnCVSS>7</failBuildOnCVSS>
161
+ </configuration>
162
+ </plugin>
163
+ ```
164
+
165
+ ### Jest config (jest.config.ts)
166
+
167
+ ```typescript
168
+ export default {
169
+ coverageThreshold: {
170
+ global: {
171
+ statements: 85,
172
+ branches: 80,
173
+ functions: 85,
174
+ lines: 85,
175
+ },
176
+ },
177
+ collectCoverageFrom: [
178
+ 'src/**/*.ts',
179
+ '!src/**/*.spec.ts',
180
+ '!src/main.ts',
181
+ ],
182
+ };
183
+ ```
184
+
185
+ ### Playwright + axe-core (playwright.config.ts)
186
+
187
+ ```typescript
188
+ import { defineConfig } from '@playwright/test';
189
+
190
+ export default defineConfig({
191
+ reporter: [['html'], ['list']],
192
+ use: {
193
+ baseURL: 'http://localhost:4200',
194
+ trace: 'on-first-retry',
195
+ },
196
+ projects: [
197
+ { name: 'chromium', use: { browserName: 'chromium' } },
198
+ ],
199
+ });
200
+ ```
201
+
202
+ ### Lighthouse CI (lighthouserc.json)
203
+
204
+ ```json
205
+ {
206
+ "ci": {
207
+ "collect": {
208
+ "url": ["http://localhost:4200"],
209
+ "numberOfRuns": 3
210
+ },
211
+ "assert": {
212
+ "assertions": {
213
+ "categories:performance": ["error", { "minScore": 0.80 }],
214
+ "largest-contentful-paint": ["error", { "maxNumericValue": 2500 }],
215
+ "cumulative-layout-shift": ["error", { "maxNumericValue": 0.1 }],
216
+ "total-blocking-time": ["error", { "maxNumericValue": 300 }]
217
+ }
218
+ }
219
+ }
220
+ }
221
+ ```
222
+
223
+ ## Test pyramid
224
+
225
+ The pyramid is a structural rule, not just a metric. Hard-fail if E2E exceeds 30% of total.
226
+
227
+ ```
228
+ /\
229
+ / \
230
+ /E2E \ <= 30% of total (ideal <= 15%)
231
+ /------\
232
+ / \
233
+ /Integration\ ~20-30%
234
+ /------------\
235
+ / \
236
+ / Unit \ ~50-70%
237
+ /------------------\
238
+ ```
239
+
240
+ Why this ratio?
241
+ - **Unit**: fast, isolated, great coverage of domain rules.
242
+ - **Integration**: validates boundaries (HTTP, DB, queue). Slower than unit, cheaper than E2E.
243
+ - **E2E**: expensive, fragile, validates user flow end-to-end. Use sparingly.
244
+
245
+ When E2E exceeds 30%, it usually means domain rules are being tested via UI clicks — anti-pattern. The fix is to move logic to a domain service and cover with unit tests.
246
+
247
+ ## Blocking flow
248
+
249
+ ```
250
+ sprint-runner finishes task
251
+
252
+
253
+ gate-keeper runs all checks
254
+
255
+ ├─ all GREEN ──────────────► code-reviewer ──► tech-lead ──► merge
256
+
257
+ └─ any failure ─────────────► block + return to responsible task
258
+
259
+
260
+ developer fixes
261
+
262
+
263
+ gate-keeper runs again
264
+ ```
265
+
266
+ At the end of the PLAN, before the final merge, `prd-ready-check` re-runs the full gate + adds:
267
+ - Zero `@Disabled` / `.skip()` in tests
268
+ - Zero `// TODO` in production code
269
+ - Zero hardcoded secrets (regex against common patterns + ggshield if available)
270
+ - ADRs referenced by the PLAN have Status: Accepted
271
+
272
+ ## How to request an exception
273
+
274
+ **You do not request one.** There is no exception to the senior+ gate.
275
+
276
+ What exists is the path of **documented technical debt**:
277
+
278
+ 1. If a threshold genuinely cannot be reached this sprint (e.g. external legacy lib with no way to mock), `tech-lead` creates an entry in `docs/brain/tech-debt.md` with:
279
+ - Threshold that fell below
280
+ - Technical reason
281
+ - Recovery plan (sprint, owner)
282
+ - Risk explicitly accepted
283
+ 2. An ADR is created documenting the temporary exception.
284
+ 3. Even so, the gate **runs** — the exception shows in the report as "P0 deferred".
285
+
286
+ Without an ADR + tech-debt entry, no exception. `gate-keeper` has no key to open the door.
287
+
288
+ ## ADR references
289
+
290
+ - **ADR-007**: a11y + Lighthouse + test pyramid thresholds.
291
+ - **ADR-008**: standard senior+ flow (V5.18.0+).
292
+
293
+ Both live in the harness `docs/decisions/` and are copied to new projects via scaffold.
294
+
295
+ ## Standard senior+ flow
296
+
297
+ Summary of what `gate-keeper` enforces, in order:
298
+
299
+ 1. `product-owner` decides requirements.
300
+ 2. `analyst` produces PLAN_*.md with goal-ready DoD.
301
+ 3. `architect` proposes ADR when there is a macro decision; `tech-lead` approves.
302
+ 4. `sprint-runner` executes Sprint N delegating to `backend-developer` + `frontend-developer` + `database-engineer` in parallel; `qa-engineer` writes tests.
303
+ 5. `gate-keeper` generates missing tests + runs the full senior+ gate (coverage, mutation, a11y, Lighthouse, pyramid).
304
+ 6. `code-reviewer` does initial review.
305
+ 7. `tech-lead` does final review → approves merge OR returns.
306
+
307
+ **Human never interrupted** — except in the 4 PO cases or 3 TL cases (see [Autonomy matrix](autonomy-matrix)).
308
+
309
+ ## Cross-references
310
+
311
+ - [Pipeline](pipeline) — where the gate runs in the end-to-end flow
312
+ - [Agents reference](agents-reference) — role of `gate-keeper`, `qa-engineer`, `tech-lead`
313
+ - [Stack rules](stack-rules) — test conventions per stack
314
+ - [Architecture overview](architecture-overview) — macro model
315
+ - [Autonomy matrix](autonomy-matrix) — authority of `gate-keeper` to block without human