@eltonssouza/development-utility-kit 0.10.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 (131) hide show
  1. package/.claude/agents/README.md +24 -0
  2. package/.claude/agents/analyst.md +198 -0
  3. package/.claude/agents/backend-developer.md +126 -0
  4. package/.claude/agents/brain-keeper.md +229 -0
  5. package/.claude/agents/code-reviewer.md +181 -0
  6. package/.claude/agents/database-engineer.md +94 -0
  7. package/.claude/agents/devops-engineer.md +141 -0
  8. package/.claude/agents/frontend-developer.md +97 -0
  9. package/.claude/agents/gate-keeper.md +118 -0
  10. package/.claude/agents/migrator.md +291 -0
  11. package/.claude/agents/mobile-developer.md +80 -0
  12. package/.claude/agents/n8n-specialist.md +94 -0
  13. package/.claude/agents/product-owner.md +115 -0
  14. package/.claude/agents/qa-engineer.md +232 -0
  15. package/.claude/agents/release-engineer.md +204 -0
  16. package/.claude/agents/scaffold.md +87 -0
  17. package/.claude/agents/security-engineer.md +199 -0
  18. package/.claude/agents/sprint-runner.md +46 -0
  19. package/.claude/agents/stack-resolver.md +104 -0
  20. package/.claude/agents/tech-lead.md +182 -0
  21. package/.claude/agents/update-template.md +54 -0
  22. package/.claude/agents/ux-designer.md +118 -0
  23. package/.claude/hooks/flow-guard.js +261 -0
  24. package/.claude/hooks/flow-state.js +197 -0
  25. package/.claude/local/CLAUDE.md +71 -0
  26. package/.claude/settings.json +55 -0
  27. package/.claude/skills/README.md +331 -0
  28. package/.claude/skills/active-project/SKILL.md +131 -0
  29. package/.claude/skills/api-integration-test/SKILL.md +84 -0
  30. package/.claude/skills/auto-test-guard/SKILL.md +239 -0
  31. package/.claude/skills/auto-test-guard/resources/backend-tests.md +20 -0
  32. package/.claude/skills/auto-test-guard/resources/e2e-tests.md +24 -0
  33. package/.claude/skills/auto-test-guard/resources/execution-report.md +49 -0
  34. package/.claude/skills/auto-test-guard/resources/frontend-tests.md +18 -0
  35. package/.claude/skills/auto-test-guard/resources/initial-setup.md +108 -0
  36. package/.claude/skills/auto-test-guard/resources/run-suite.md +48 -0
  37. package/.claude/skills/auto-test-guard/resources/senior-gate.md +19 -0
  38. package/.claude/skills/brain-keeper/SKILL.md +62 -0
  39. package/.claude/skills/brain-keeper/obsidian/app.json +9 -0
  40. package/.claude/skills/brain-keeper/obsidian/appearance.json +4 -0
  41. package/.claude/skills/brain-keeper/obsidian/core-plugins.json +20 -0
  42. package/.claude/skills/brain-keeper/obsidian/daily-notes.json +5 -0
  43. package/.claude/skills/brain-keeper/obsidian/graph.json +32 -0
  44. package/.claude/skills/brain-keeper/obsidian/snippets/folder-colors.css +90 -0
  45. package/.claude/skills/brain-keeper/obsidian/templates.json +5 -0
  46. package/.claude/skills/brain-keeper/templates/README.md +51 -0
  47. package/.claude/skills/brain-keeper/templates/adr.md +40 -0
  48. package/.claude/skills/brain-keeper/templates/bug.md +35 -0
  49. package/.claude/skills/brain-keeper/templates/daily.md +38 -0
  50. package/.claude/skills/brain-keeper/templates/feature.md +62 -0
  51. package/.claude/skills/brain-keeper/templates/meeting.md +34 -0
  52. package/.claude/skills/brain-keeper/templates/tech-debt.md +21 -0
  53. package/.claude/skills/caveman/SKILL.md +189 -0
  54. package/.claude/skills/create-stack-pack/SKILL.md +281 -0
  55. package/.claude/skills/grill-me/SKILL.md +80 -0
  56. package/.claude/skills/pair-debug/SKILL.md +288 -0
  57. package/.claude/skills/prd-ready-check/SKILL.md +86 -0
  58. package/.claude/skills/project-manager/SKILL.md +334 -0
  59. package/.claude/skills/quality-standards/SKILL.md +203 -0
  60. package/.claude/skills/quick-feature/SKILL.md +266 -0
  61. package/.claude/skills/run-sprint/SKILL.md +41 -0
  62. package/.claude/skills/scaffold/SKILL.md +60 -0
  63. package/.claude/skills/stack-discovery/SKILL.md +161 -0
  64. package/.claude/skills/test-coverage-auditor/SKILL.md +87 -0
  65. package/.claude/skills/to-issues/SKILL.md +163 -0
  66. package/.claude/skills/to-prd/SKILL.md +130 -0
  67. package/.claude/skills/update-template/SKILL.md +256 -0
  68. package/.claude/stacks/CODEOWNERS +30 -0
  69. package/.claude/stacks/README.md +97 -0
  70. package/.claude/stacks/_template.md +116 -0
  71. package/.claude/stacks/dotnet/aspire-9.md +528 -0
  72. package/.claude/stacks/go/gin-1.10.md +570 -0
  73. package/.claude/stacks/java/spring-boot-3.md +376 -0
  74. package/.claude/stacks/java/spring-boot-4.md +438 -0
  75. package/.claude/stacks/node/express-5.md +538 -0
  76. package/.claude/stacks/python/django-5.md +483 -0
  77. package/.claude/stacks/python/fastapi-0.115.md +522 -0
  78. package/.claude/stacks/typescript/angular-18.md +420 -0
  79. package/.claude/stacks/typescript/angular-19.md +397 -0
  80. package/.claude/stacks/typescript/angular-21.md +494 -0
  81. package/CLAUDE.md +472 -0
  82. package/README.md +412 -0
  83. package/bin/cli.js +848 -0
  84. package/bin/lib/adr.js +146 -0
  85. package/bin/lib/backup.js +62 -0
  86. package/bin/lib/detect-stack.js +476 -0
  87. package/bin/lib/doctor.js +527 -0
  88. package/bin/lib/help.js +328 -0
  89. package/bin/lib/identity.js +108 -0
  90. package/bin/lib/lint-allowlist.json +15 -0
  91. package/bin/lib/lint.js +798 -0
  92. package/bin/lib/local-dir.js +68 -0
  93. package/bin/lib/manifest.js +236 -0
  94. package/bin/lib/sync-all.js +394 -0
  95. package/bin/lib/version-check.js +398 -0
  96. package/dashboard/db.js +321 -0
  97. package/dashboard/package.json +22 -0
  98. package/dashboard/public/app.js +853 -0
  99. package/dashboard/public/content/docs/agents-reference.en.md +911 -0
  100. package/dashboard/public/content/docs/architecture-overview.en.md +252 -0
  101. package/dashboard/public/content/docs/autonomy-matrix.en.md +186 -0
  102. package/dashboard/public/content/docs/cli-reference.en.md +538 -0
  103. package/dashboard/public/content/docs/git-flow.en.md +525 -0
  104. package/dashboard/public/content/docs/honcho-memory.en.md +394 -0
  105. package/dashboard/public/content/docs/hooks-reference.en.md +404 -0
  106. package/dashboard/public/content/docs/pipeline.en.md +414 -0
  107. package/dashboard/public/content/docs/plugins.en.md +289 -0
  108. package/dashboard/public/content/docs/quality-gate.en.md +315 -0
  109. package/dashboard/public/content/docs/skills-reference.en.md +484 -0
  110. package/dashboard/public/content/docs/stack-rules.en.md +362 -0
  111. package/dashboard/public/content/docs/troubleshooting.en.md +565 -0
  112. package/dashboard/public/content/manifest.json +114 -0
  113. package/dashboard/public/content/manual/backend.en.md +1053 -0
  114. package/dashboard/public/content/manual/existing-project.en.md +848 -0
  115. package/dashboard/public/content/manual/frontend.en.md +1008 -0
  116. package/dashboard/public/content/manual/fullstack.en.md +1459 -0
  117. package/dashboard/public/content/manual/mobile.en.md +837 -0
  118. package/dashboard/public/content/manual/quickstart.en.md +169 -0
  119. package/dashboard/public/index.html +217 -0
  120. package/dashboard/public/style.css +857 -0
  121. package/dashboard/public/vendor/marked.min.js +69 -0
  122. package/dashboard/rtk.js +143 -0
  123. package/dashboard/server-app.js +421 -0
  124. package/dashboard/server.js +104 -0
  125. package/dashboard/test/sprint1.test.js +406 -0
  126. package/dashboard/test/sprint2.test.js +571 -0
  127. package/dashboard/test/sprint3.test.js +560 -0
  128. package/package.json +33 -0
  129. package/scripts/hooks/subagent-telemetry.sh +14 -0
  130. package/scripts/hooks/telemetry-writer.js +250 -0
  131. package/scripts/latest-versions.json +56 -0
@@ -0,0 +1,32 @@
1
+ {
2
+ "collapse-filter": true,
3
+ "search": "",
4
+ "showTags": false,
5
+ "showAttachments": false,
6
+ "hideUnresolved": false,
7
+ "showOrphans": true,
8
+ "collapse-color-groups": false,
9
+ "colorGroups": [
10
+ { "query": "path:_templates", "color": { "a": 1, "rgb": 9741240 } },
11
+ { "query": "path:api", "color": { "a": 1, "rgb": 3900150 } },
12
+ { "query": "path:architecture", "color": { "a": 1, "rgb": 11032055 } },
13
+ { "query": "path:bugs", "color": { "a": 1, "rgb": 15680580 } },
14
+ { "query": "path:daily", "color": { "a": 1, "rgb": 2278750 } },
15
+ { "query": "path:database", "color": { "a": 1, "rgb": 16347926 } },
16
+ { "query": "path:decisions", "color": { "a": 1, "rgb": 15381256 } },
17
+ { "query": "path:features", "color": { "a": 1, "rgb": 440020 } },
18
+ { "query": "path:meetings", "color": { "a": 1, "rgb": 15485081 } }
19
+ ],
20
+ "collapse-display": true,
21
+ "showArrow": false,
22
+ "textFadeMultiplier": 0,
23
+ "nodeSizeMultiplier": 1,
24
+ "lineSizeMultiplier": 1,
25
+ "collapse-forces": true,
26
+ "centerStrength": 0.518713248970312,
27
+ "repelStrength": 10,
28
+ "linkStrength": 1,
29
+ "linkDistance": 250,
30
+ "scale": 1,
31
+ "close": true
32
+ }
@@ -0,0 +1,90 @@
1
+ /*
2
+ * folder-colors.css
3
+ * Cores por pasta no file explorer do Obsidian.
4
+ * Aplicado a:
5
+ * - Título da pasta no nav lateral
6
+ * - Arquivos dentro da pasta (cor mais clara/diluída)
7
+ *
8
+ * Editar paleta? Troque os valores hex abaixo.
9
+ */
10
+
11
+ /* _templates — slate */
12
+ .nav-folder-title[data-path="_templates"] .nav-folder-title-content,
13
+ .nav-file-title[data-path^="_templates/"] .nav-file-title-content {
14
+ color: #94a3b8;
15
+ }
16
+ .nav-folder-title[data-path="_templates"]::before {
17
+ content: "🩶 ";
18
+ }
19
+
20
+ /* api — azul */
21
+ .nav-folder-title[data-path="api"] .nav-folder-title-content,
22
+ .nav-file-title[data-path^="api/"] .nav-file-title-content {
23
+ color: #3b82f6;
24
+ }
25
+ .nav-folder-title[data-path="api"]::before {
26
+ content: "🔵 ";
27
+ }
28
+
29
+ /* architecture — roxo */
30
+ .nav-folder-title[data-path="architecture"] .nav-folder-title-content,
31
+ .nav-file-title[data-path^="architecture/"] .nav-file-title-content {
32
+ color: #a855f7;
33
+ }
34
+ .nav-folder-title[data-path="architecture"]::before {
35
+ content: "🟣 ";
36
+ }
37
+
38
+ /* bugs — vermelho */
39
+ .nav-folder-title[data-path="bugs"] .nav-folder-title-content,
40
+ .nav-file-title[data-path^="bugs/"] .nav-file-title-content {
41
+ color: #ef4444;
42
+ }
43
+ .nav-folder-title[data-path="bugs"]::before {
44
+ content: "🔴 ";
45
+ }
46
+
47
+ /* daily — verde */
48
+ .nav-folder-title[data-path="daily"] .nav-folder-title-content,
49
+ .nav-file-title[data-path^="daily/"] .nav-file-title-content {
50
+ color: #22c55e;
51
+ }
52
+ .nav-folder-title[data-path="daily"]::before {
53
+ content: "🟢 ";
54
+ }
55
+
56
+ /* database — laranja */
57
+ .nav-folder-title[data-path="database"] .nav-folder-title-content,
58
+ .nav-file-title[data-path^="database/"] .nav-file-title-content {
59
+ color: #f97316;
60
+ }
61
+ .nav-folder-title[data-path="database"]::before {
62
+ content: "🟠 ";
63
+ }
64
+
65
+ /* decisions — amarelo */
66
+ .nav-folder-title[data-path="decisions"] .nav-folder-title-content,
67
+ .nav-file-title[data-path^="decisions/"] .nav-file-title-content {
68
+ color: #eab308;
69
+ }
70
+ .nav-folder-title[data-path="decisions"]::before {
71
+ content: "🟡 ";
72
+ }
73
+
74
+ /* features — ciano */
75
+ .nav-folder-title[data-path="features"] .nav-folder-title-content,
76
+ .nav-file-title[data-path^="features/"] .nav-file-title-content {
77
+ color: #06b6d4;
78
+ }
79
+ .nav-folder-title[data-path="features"]::before {
80
+ content: "🔷 ";
81
+ }
82
+
83
+ /* meetings — rosa */
84
+ .nav-folder-title[data-path="meetings"] .nav-folder-title-content,
85
+ .nav-file-title[data-path^="meetings/"] .nav-file-title-content {
86
+ color: #ec4899;
87
+ }
88
+ .nav-folder-title[data-path="meetings"]::before {
89
+ content: "🩷 ";
90
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "folder": "_templates",
3
+ "dateFormat": "YYYY-MM-DD",
4
+ "timeFormat": "HH:mm"
5
+ }
@@ -0,0 +1,51 @@
1
+ ---
2
+ title: Project Brain — MOC
3
+ type: moc
4
+ created: YYYY-MM-DD
5
+ updated: YYYY-MM-DD
6
+ tags: [moc]
7
+ ---
8
+
9
+ # 🧠 Project Brain
10
+
11
+ Map of Content (MOC) — main index of the Obsidian vault. Updated automatically by `brain-keeper` upon completing each PLAN_*.
12
+
13
+ ## Structure
14
+
15
+ ```
16
+ docs/brain/
17
+ ├── _templates/ 🩶 templates (adr, feature, bug, daily, meeting)
18
+ ├── api/ 🔵 REST contracts, endpoint changelog
19
+ ├── architecture/ 🟣 system view, diagrams, tech-debt.md
20
+ ├── bugs/ 🔴 postmortems
21
+ ├── daily/ 🟢 daily log
22
+ ├── database/ 🟠 model, migrations, schema
23
+ ├── decisions/ 🟡 ADRs
24
+ ├── features/ 🔷 notes per feature
25
+ └── meetings/ 🩷 minutes
26
+ ```
27
+
28
+ ## Recent decisions
29
+
30
+ _Added by brain-keeper._
31
+
32
+ ## Active features
33
+
34
+ _Added by brain-keeper._
35
+
36
+ ## Open / recent bugs
37
+
38
+ _Added by brain-keeper._
39
+
40
+ ## Technical debt
41
+
42
+ → [[architecture/tech-debt]]
43
+
44
+ ## How to navigate
45
+
46
+ - **Why did we decide X?** → [[decisions/]]
47
+ - **How does Y work?** → [[features/]]
48
+ - **What was done yesterday?** → [[daily/]]
49
+ - **Did we have a bug with Z?** → [[bugs/]]
50
+ - **What's the contract for endpoint E?** → [[api/]]
51
+ - **How is table T modeled?** → [[database/]]
@@ -0,0 +1,40 @@
1
+ ---
2
+ title: ADR-NNN — <short title>
3
+ type: ADR
4
+ status: Accepted
5
+ created: YYYY-MM-DD
6
+ updated: YYYY-MM-DD
7
+ tags: [decision]
8
+ ---
9
+
10
+ # ADR-NNN: <short title>
11
+
12
+ - **Status**: Proposed | Accepted | Superseded by ADR-XXX | Deprecated
13
+ - **Date**: YYYY-MM-DD
14
+
15
+ ## Context
16
+
17
+ _Why is this decision necessary? What problem or force is pushing toward a decision?_
18
+
19
+ ## Decision
20
+
21
+ _What was decided, clearly and affirmatively._
22
+
23
+ ## Consequences
24
+
25
+ **Gains:**
26
+ - ...
27
+
28
+ **Losses / costs:**
29
+ - ...
30
+
31
+ ## Alternatives discarded
32
+
33
+ - **Alternative A**: why it was rejected
34
+ - **Alternative B**: why it was rejected
35
+
36
+ ## References
37
+
38
+ - [[../daily/YYYY-MM-DD|Daily]]
39
+ - [[../features/slug|Feature]]
40
+ - Related commits / PRs
@@ -0,0 +1,35 @@
1
+ ---
2
+ title: <short description>
3
+ type: bug
4
+ status: fixed
5
+ severity: P0|P1|P2|P3
6
+ created: YYYY-MM-DD
7
+ updated: YYYY-MM-DD
8
+ tags: [bug]
9
+ ---
10
+
11
+ # 🐛 <short description>
12
+
13
+ ## Symptom
14
+
15
+ _How did the bug manifest? Error message, observed behavior, impact._
16
+
17
+ ## Root cause
18
+
19
+ _Technical analysis. Don't confuse symptom with cause._
20
+
21
+ ## Fix applied
22
+
23
+ _What was changed to resolve. Cite files/lines._
24
+
25
+ ## Prevention
26
+
27
+ - New test: ...
28
+ - Lint rule / review rule: ...
29
+ - ADR: [[../decisions/ADR-NNN-slug|ADR-NNN]] (if applicable)
30
+
31
+ ## References
32
+
33
+ - [[../daily/YYYY-MM-DD|Daily]]
34
+ - [[../features/slug|Related feature]]
35
+ - Commit / PR
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: YYYY-MM-DD — <day summary>
3
+ type: daily
4
+ created: YYYY-MM-DD
5
+ updated: YYYY-MM-DD
6
+ tags: [daily]
7
+ ---
8
+
9
+ # 📅 YYYY-MM-DD
10
+
11
+ ## Summary
12
+
13
+ _1-2 lines about the main goal of the day._
14
+
15
+ ## Done
16
+
17
+ - Feature: [[../features/slug|name]]
18
+ - Fix: [[../bugs/slug|description]]
19
+ - Refactor: ...
20
+
21
+ ## Decisions
22
+
23
+ - [[../decisions/ADR-NNN-slug|ADR-NNN]] — title
24
+
25
+ ## Files
26
+
27
+ **Created:** ...
28
+ **Changed:** ...
29
+ **Deleted:** ...
30
+
31
+ ## Blockers
32
+
33
+ _What stalled progress? Waiting on whose decision? External dependency?_
34
+
35
+ ## Tomorrow
36
+
37
+ - Next step 1
38
+ - Next step 2
@@ -0,0 +1,62 @@
1
+ ---
2
+ title: <feature name>
3
+ type: feature
4
+ status: in-progress
5
+ created: YYYY-MM-DD
6
+ updated: YYYY-MM-DD
7
+ plan: docs/plans/PLAN_<NAME>.md
8
+ tags: [feature]
9
+ ---
10
+
11
+ # ✨ <feature name>
12
+
13
+ ## Goal
14
+
15
+ _What business problem does this feature solve? What value is delivered?_
16
+
17
+ ## Requirements
18
+
19
+ - [ ] FR: ...
20
+ - [ ] NFR: ...
21
+ - [ ] BR: ...
22
+ - [ ] IR: ...
23
+
24
+ ## Decisions made
25
+
26
+ - [[../decisions/ADR-NNN-slug|ADR-NNN]] — decision title
27
+ - Minor decisions (without ADR) recorded here
28
+
29
+ ## Implementation
30
+
31
+ ### Backend
32
+
33
+ - Endpoints: `GET /api/v1/...`, `POST /api/v1/...`
34
+ - Entities: ...
35
+ - Use cases: ...
36
+ - Migrations: `V202X__description.sql`
37
+
38
+ ### Frontend
39
+
40
+ - Routes: `/path`
41
+ - Components: `FeatureListComponent`, `FeatureFormComponent`
42
+ - Services: `FeatureService`
43
+
44
+ ## Tests
45
+
46
+ - Backend (JUnit + Mockito + Testcontainers): N
47
+ - Frontend (Jest + Testing Library): N
48
+ - E2E (Playwright): N
49
+ - Coverage: backend X% / frontend Y%
50
+
51
+ ## References
52
+
53
+ - Plan: [[../../plans/PLAN_<NAME>|PLAN_<NAME>]]
54
+ - Start daily: [[../daily/YYYY-MM-DD]]
55
+ - Commits: ...
56
+ - PR: ...
57
+
58
+ ## History
59
+
60
+ | Date | Change |
61
+ |------|--------|
62
+ | YYYY-MM-DD | Created |
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: YYYY-MM-DD — <title>
3
+ type: meeting
4
+ created: YYYY-MM-DD
5
+ updated: YYYY-MM-DD
6
+ tags: [meeting]
7
+ ---
8
+
9
+ # 🗓️ <title>
10
+
11
+ - **Date**: YYYY-MM-DD
12
+ - **Attendees**: ...
13
+
14
+ ## Agenda
15
+
16
+ 1. ...
17
+ 2. ...
18
+
19
+ ## Discussion
20
+
21
+ _Relevant points._
22
+
23
+ ## Decisions
24
+
25
+ - [[../decisions/ADR-NNN-slug|ADR-NNN]] — title (if it became an ADR)
26
+ - Minor decision: ...
27
+
28
+ ## Actions
29
+
30
+ - [ ] @person — action — deadline
31
+
32
+ ## References
33
+
34
+ - [[../daily/YYYY-MM-DD|Daily]]
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: Technical debt
3
+ type: tech-debt
4
+ created: YYYY-MM-DD
5
+ updated: YYYY-MM-DD
6
+ tags: [tech-debt, architecture]
7
+ ---
8
+
9
+ # 🔧 Technical debt
10
+
11
+ Items accepted as debt during development. Append by `brain-keeper` at the end of each PLAN_*.
12
+
13
+ Severity:
14
+ - **P0**: blocks production. Resolve before next release.
15
+ - **P1**: high risk / impact. Next sprint.
16
+ - **P2**: relevant but not urgent. Backlog next quarter.
17
+ - **P3**: cosmetic / improvement. Long backlog.
18
+
19
+ ---
20
+
21
+ ## Items
@@ -0,0 +1,189 @@
1
+ ---
2
+ name: caveman
3
+ description: Caveman style — telegraphic output, no articles/fillers/flourishes, ~65–75% token savings. Triggers automatically in this project (always on) and via "caveman", "caveman mode", "caveman lite|full|ultra", "stop caveman", "back to normal". Fixed default rule — ULTRA for code/files .java .ts .py .sh .yml .json etc., LITE/FULL for .md. Does not change technical semantics, just removes fluff. Preserves YAML frontmatter, symbol names, paths, exact commands. Do NOT use to suppress error messages, schema details, ADR semantics, or any non-cosmetic content — caveman only removes filler words, never technical substance. PT triggers: 'modo caveman', 'caveman lite', 'caveman full', 'caveman ultra', 'stop caveman', 'volta normal'.
4
+ tools: Read, Write, Edit
5
+ model: sonnet
6
+ ---
7
+
8
+ # Caveman — Telegraphic Style
9
+
10
+ Always reply in American English. Code and short text. No fluff.
11
+
12
+ ---
13
+
14
+ ## 1. Master rule (non-negotiable)
15
+
16
+ | Context | Level | Example |
17
+ |---|---|---|
18
+ | Code (`.java`, `.ts`, `.py`, `.sh`, `.yml`, `.json`, `.html`, `.css`) | **ULTRA** | Comment only if critical. 1 line. No narrative. |
19
+ | Chat / spoken explanation | **FULL** | Direct. No preamble. |
20
+
21
+ When in doubt → **FULL**.
22
+
23
+ User asked `stop caveman` / `back to normal` → off. User asked `caveman ultra` → ultra everywhere in that response.
24
+
25
+ ### 1.1 Context override — high-stakes documents auto-promote to FULL
26
+
27
+ When the task is producing one of these artifacts, **temporarily promote to FULL** (or normal prose) even if a code file is involved — compression here loses substance that matters:
28
+
29
+ | Trigger context | Why FULL | What stays uncompressed |
30
+ |---|---|---|
31
+ | **ADR draft** ("write ADR", "registra decisão", `docs/decisions/ADR-*`) | Justification + trade-offs need full reasoning | Considered options, decision framework scoring, consequences |
32
+ | **Security audit** ("security audit", "OWASP", "LGPD", "audita vulnerabilidade") | Legal/compliance text must be faithful | Vuln descriptions, CVSS reasoning, remediation steps |
33
+ | **PRD / requirements doc** ("PRD document", "documento de requisitos", "user stories") | Acceptance criteria must be unambiguous | BR/FR/NFR statements, BDD Given/When/Then |
34
+ | **Incident / post-mortem report** ("incident report", "post-mortem", "RCA") | Timeline + root cause must be precise | Event timeline, root cause chain, action items |
35
+ | **Contract / API spec** ("OpenAPI", "API contract", "schema") | Already covered by §3 rule 5 — never compress | DTO shapes, schema fields, examples |
36
+
37
+ Promotion is **scoped to that artifact only** — code files in the same task still follow ULTRA. After the artifact is done, revert to the §1 master rule. This is automatic; the user does not need to ask.
38
+
39
+ ---
40
+
41
+ ## 2. Levels
42
+
43
+ ### LITE — soft
44
+ - Removes: "basically", "it's worth noting", "it's important to note", "in other words", hedge.
45
+ - Keeps: grammar, articles, normal punctuation.
46
+
47
+ **Example**
48
+ > Before: "It's important to note that basically the JWT token expires after 15 minutes."
49
+ > After: "JWT token expires in 15 min."
50
+
51
+ ### ULTRA — telegraphic
52
+ - Removes: everything FULL removes + redundant conjunctions.
53
+ - Style: command/bullet, arrows (`→`), standard abbreviations (`w/`, `for`, `w/o`).
54
+ - Code: 1-line docstring or absent if name is self-explanatory.
55
+
56
+ **Java example**
57
+ ```java
58
+ // FULL
59
+ /** Returns the product by ID. Throws ProductNotFoundException if not found. */
60
+ public Product findById(UUID id) { ... }
61
+
62
+ // ULTRA
63
+ /** Find product. Throws ProductNotFoundException if missing. */
64
+ public Product findById(UUID id) { ... }
65
+ ```
66
+
67
+ **Commit example**
68
+ ```
69
+ # FULL
70
+ fix(auth): fix premature token expiration on refresh
71
+
72
+ # ULTRA
73
+ fix(auth): token expires early on refresh
74
+ ```
75
+
76
+ ### WENYAN — optional, never default
77
+ Classical Chinese. Only if the user explicitly requests.
78
+
79
+ ---
80
+
81
+ ## 3. Non-negotiable rules (DO NOT compress)
82
+
83
+ Never compress:
84
+
85
+ 1. **Symbol names, files, paths, commands, URLs** — exact.
86
+ 2. **YAML frontmatter** — preserve `name`, `description`, fields.
87
+ 3. **Executable code** — no removing imports, types, annotations.
88
+ 4. **Error/log messages** — faithful copy.
89
+ 5. **Contract snippets (DTO, schema, migration)** — full semantics.
90
+ 6. **Legal/LGPD/security terms** — legal text preserved.
91
+ 7. **Project `CLAUDE.md` rules** — thresholds, paths, ADRs.
92
+ 8. **Literal translations** when the user asked.
93
+
94
+ When in doubt → preserve.
95
+
96
+ ---
97
+
98
+ ## 4. Compression dictionary (English)
99
+
100
+ | Before | After |
101
+ |---|---|
102
+ | "in order to" | "to" |
103
+ | "with" | "w/" (informal) |
104
+ | "without" | "w/o" (informal) |
105
+ | "it's important that / you must / it's necessary" | direct imperative |
106
+ | "basically / essentially / in short" | (remove) |
107
+ | "in case of / if there is" | "if" |
108
+ | "so as to / in order that" | "to" |
109
+ | "by means of" | "via" / "by" |
110
+ | "around / about / approximately" | "~" |
111
+ | "and / also / besides" | "+" or (remove) |
112
+ | "on the other hand / however" | "but" |
113
+ | "therefore / thus" | "so" / "→" |
114
+ | "instead of" | "vs" |
115
+ | "since / because" | "because" |
116
+
117
+ Ultra abbreviations: `req`, `res`, `cfg`, `env`, `db`, `pk`, `fk`, `impl`, `intf`, `pkg`, `fn`, `arg`, `ret`, `err`, `ctx`, `auth`, `val`, `max`, `min`.
118
+
119
+ ---
120
+
121
+ ## 5. Operation in the project
122
+
123
+ - This skill activates **automatically** in every session of this template.
124
+ - Default: code = ULTRA, `.md` = FULL.
125
+ - Runtime switch:
126
+ - "caveman lite" → all in LITE
127
+ - "caveman full" → all in FULL
128
+ - "caveman ultra" → all in ULTRA
129
+ - "stop caveman" / "back to normal" → off
130
+ - Per-file override: if user says "write this ADR formally" → LITE even if ULTRA is active.
131
+
132
+ ---
133
+
134
+ ## 6. Anti-examples (DO NOT do)
135
+
136
+ 1. Compress code to the point of breaking compilation.
137
+ 2. Remove class/method names.
138
+ 3. Translate established technical terms (`SecurityFilterChain`, `ProblemDetail`, `Signal`).
139
+ 4. Use caveman jargon in messages to the end user / PRD / public contract.
140
+ 5. Remove `TODO`/`FIXME` left by the user.
141
+ 6. Erase API usage examples — only compress narrative around them.
142
+
143
+ ---
144
+
145
+ ## 7. Quick checklist before answering
146
+
147
+ 1. Code? → ULTRA, 1-line docstring, no narrative.
148
+ 2. `.md`? → FULL (LITE if ADR/contract).
149
+ 3. Frontmatter intact?
150
+ 4. Names/paths/commands exact?
151
+ 5. Technical semantics preserved?
152
+ 6. Fluff removed (basically, it's important, essentially, it's worth noting)?
153
+
154
+ All OK → reply.
155
+
156
+ ---
157
+
158
+ ## 8. Ready examples
159
+
160
+ ### Code review ultra
161
+ ```
162
+ ## Review order.service.ts
163
+
164
+ L42 — null check missing on `order.items`. NPE risk.
165
+ L58 — `forEach` + `await` breaks sequence. Use `for…of`.
166
+ L77 — magic number `3600`. Extract const `TOKEN_TTL_S`.
167
+ ```
168
+
169
+ ```markdown
170
+ # Bug: session expires before TTL
171
+
172
+ **Symptom**: user logged out after ~5 min (TTL configured 15 min).
173
+ **Root**: cookie `Max-Age` in seconds, code sending in min → 300s vs 900s.
174
+ **Fix**: multiply by 60 before setting.
175
+ **Prevention**: test `sessionCookieExpiresIn(15, MINUTES)`.
176
+ ```
177
+ ```markdown
178
+ # 2026-04-23
179
+
180
+ **Done**: endpoint `POST /api/v1/products` + Testcontainers test + `ProductForm` component.
181
+ **Decisions**: [[decisions/ADR-012-cursor-pagination]] (cursor > offset for listings >10k).
182
+ **Next**: integrate fulltext search (pg_trgm).
183
+ **Blocker**: none.
184
+ ```
185
+ ## 9. Final rule
186
+
187
+ Caveman serves precision + economy. Does not serve rudeness. Tone direct, not rude. User's question is answered with fact, not softening.
188
+
189
+ Preserve meaning. Cut words. End.