@mohammadhprp/system-prompt 0.12.2 → 0.12.3

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 (117) hide show
  1. package/framework/commands/README.md +1 -1
  2. package/framework/commands/review.md +1 -1
  3. package/framework/mcps/README.md +0 -1
  4. package/framework/plugins/ponytail/README.md +0 -1
  5. package/framework/plugins/ponytail/capabilities.md +1 -1
  6. package/framework/references/standards/api.md +0 -1
  7. package/framework/references/standards/architecture.md +0 -1
  8. package/framework/references/standards/database.md +0 -1
  9. package/framework/references/standards/debugging.md +0 -1
  10. package/framework/references/standards/documentation.md +0 -1
  11. package/framework/references/standards/logging.md +0 -1
  12. package/framework/references/standards/naming.md +0 -1
  13. package/framework/references/standards/observability.md +0 -1
  14. package/framework/references/standards/performance.md +0 -1
  15. package/framework/references/standards/pull-requests.md +0 -1
  16. package/framework/references/standards/security.md +0 -1
  17. package/framework/references/standards/testing.md +0 -1
  18. package/framework/skills/README.md +1 -12
  19. package/framework/skills/improve/SKILL.md +1 -3
  20. package/framework/skills/improve/examples.md +1 -1
  21. package/framework/skills/laravel-best-practices/SKILL.md +56 -216
  22. package/framework/skills/laravel-best-practices/references/architecture.md +1 -1
  23. package/framework/skills/laravel-best-practices/references/checklist.md +139 -0
  24. package/framework/skills/laravel-best-practices/references/eloquent.md +4 -2
  25. package/framework/skills/laravel-best-practices/references/infer-conventions.md +97 -0
  26. package/framework/skills/laravel-best-practices/references/pest-testing.md +47 -18
  27. package/framework/skills/laravel-best-practices/references/security.md +1 -1
  28. package/framework/skills/laravel-best-practices/references/style.md +1 -1
  29. package/framework/skills/laravel-best-practices/references/tailwindcss.md +0 -1
  30. package/package.json +1 -1
  31. package/src/catalog.js +1 -13
  32. package/framework/mcps/notion-mcp/README.md +0 -57
  33. package/framework/mcps/notion-mcp/capabilities.md +0 -118
  34. package/framework/mcps/notion-mcp/configs/opencode.json +0 -9
  35. package/framework/mcps/notion-mcp/install.md +0 -70
  36. package/framework/mcps/notion-mcp/troubleshooting.md +0 -95
  37. package/framework/skills/brainstorming/SKILL.md +0 -159
  38. package/framework/skills/brainstorming/examples.md +0 -49
  39. package/framework/skills/brainstorming/scripts/frame-template.html +0 -213
  40. package/framework/skills/brainstorming/scripts/helper.js +0 -167
  41. package/framework/skills/brainstorming/scripts/server.cjs +0 -723
  42. package/framework/skills/brainstorming/scripts/start-server.sh +0 -209
  43. package/framework/skills/brainstorming/scripts/stop-server.sh +0 -120
  44. package/framework/skills/brainstorming/visual-companion.md +0 -291
  45. package/framework/skills/code-review/SKILL.md +0 -72
  46. package/framework/skills/code-review/examples.md +0 -31
  47. package/framework/skills/codenavi/SKILL.md +0 -306
  48. package/framework/skills/codenavi/examples.md +0 -33
  49. package/framework/skills/codenavi/references/coding-principles.md +0 -143
  50. package/framework/skills/codenavi/references/notebook-spec.md +0 -171
  51. package/framework/skills/create-adr/SKILL.md +0 -429
  52. package/framework/skills/create-adr/examples.md +0 -35
  53. package/framework/skills/design/SKILL.md +0 -399
  54. package/framework/skills/design/examples.md +0 -34
  55. package/framework/skills/great-interface/SKILL.md +0 -43
  56. package/framework/skills/great-interface/references/animations.md +0 -205
  57. package/framework/skills/great-interface/references/better-accessibility.md +0 -106
  58. package/framework/skills/great-interface/references/better-colors.md +0 -100
  59. package/framework/skills/great-interface/references/better-interface.md +0 -132
  60. package/framework/skills/great-interface/references/better-layout.md +0 -76
  61. package/framework/skills/great-interface/references/better-typography.md +0 -157
  62. package/framework/skills/great-interface/references/better-ui.md +0 -107
  63. package/framework/skills/great-interface/references/better-writing.md +0 -109
  64. package/framework/skills/great-interface/references/choosing-fonts.md +0 -64
  65. package/framework/skills/great-interface/references/color-formats.md +0 -90
  66. package/framework/skills/great-interface/references/color-usage.md +0 -118
  67. package/framework/skills/great-interface/references/contrast.md +0 -79
  68. package/framework/skills/great-interface/references/css-cheat-sheet.md +0 -65
  69. package/framework/skills/great-interface/references/details-and-accessibility.md +0 -119
  70. package/framework/skills/great-interface/references/enter-exit.md +0 -147
  71. package/framework/skills/great-interface/references/explain-interface.md +0 -126
  72. package/framework/skills/great-interface/references/find-the-effect.md +0 -94
  73. package/framework/skills/great-interface/references/focus-and-keyboard.md +0 -131
  74. package/framework/skills/great-interface/references/forms.md +0 -84
  75. package/framework/skills/great-interface/references/from-an-image.md +0 -55
  76. package/framework/skills/great-interface/references/grouping-and-alignment.md +0 -123
  77. package/framework/skills/great-interface/references/hit-areas.md +0 -94
  78. package/framework/skills/great-interface/references/icon-transitions.md +0 -102
  79. package/framework/skills/great-interface/references/icons.md +0 -110
  80. package/framework/skills/great-interface/references/interface-review.md +0 -148
  81. package/framework/skills/great-interface/references/motion-and-zoom.md +0 -79
  82. package/framework/skills/great-interface/references/no-browser.md +0 -73
  83. package/framework/skills/great-interface/references/palette-generation.md +0 -104
  84. package/framework/skills/great-interface/references/palette-structure.md +0 -76
  85. package/framework/skills/great-interface/references/performance.md +0 -88
  86. package/framework/skills/great-interface/references/picker.md +0 -76
  87. package/framework/skills/great-interface/references/read-the-system.md +0 -178
  88. package/framework/skills/great-interface/references/removed-signals.md +0 -38
  89. package/framework/skills/great-interface/references/review-format.md +0 -46
  90. package/framework/skills/great-interface/references/scope-resolution.md +0 -88
  91. package/framework/skills/great-interface/references/screen-readers.md +0 -101
  92. package/framework/skills/great-interface/references/semantics-and-aria.md +0 -84
  93. package/framework/skills/great-interface/references/spacing-and-adaptivity.md +0 -159
  94. package/framework/skills/great-interface/references/spacing-and-sizing.md +0 -121
  95. package/framework/skills/great-interface/references/surfaces.md +0 -219
  96. package/framework/skills/great-interface/references/token-naming.md +0 -97
  97. package/framework/skills/great-interface/references/variable-fonts-and-opentype.md +0 -105
  98. package/framework/skills/great-interface/references/variant.md +0 -104
  99. package/framework/skills/great-interface/references/wrapping-and-punctuation.md +0 -55
  100. package/framework/skills/learning-opportunities/SKILL.md +0 -140
  101. package/framework/skills/learning-opportunities/examples.md +0 -34
  102. package/framework/skills/learning-opportunities/references/PRINCIPLES.md +0 -42
  103. package/framework/skills/notion-mcp/SKILL.md +0 -57
  104. package/framework/skills/notion-mcp/examples.md +0 -31
  105. package/framework/skills/notion-mcp/references/comments.md +0 -112
  106. package/framework/skills/notion-mcp/references/databases.md +0 -193
  107. package/framework/skills/notion-mcp/references/pages.md +0 -235
  108. package/framework/skills/spec-driven-eval/SKILL.md +0 -341
  109. package/framework/skills/spec-driven-eval/examples.md +0 -35
  110. package/framework/skills/spec-driven-eval/references/quickstart.md +0 -118
  111. package/framework/skills/spec-driven-eval/references/reference.md +0 -295
  112. package/framework/skills/technical-design-doc-creator/README.md +0 -411
  113. package/framework/skills/technical-design-doc-creator/SKILL.md +0 -1484
  114. package/framework/skills/technical-design-doc-creator/examples.md +0 -35
  115. package/framework/skills/web-design-guidelines/SKILL.md +0 -65
  116. package/framework/skills/web-design-guidelines/examples.md +0 -32
  117. package/framework/skills/web-design-guidelines/references/guideline.md +0 -174
@@ -1,171 +0,0 @@
1
- # .notebook/ Specification
2
-
3
- Read this file when you need to create or update notes during the
4
- Debrief phase, or when you need to understand the notebook format
5
- during Briefing.
6
-
7
- ## Structure
8
-
9
- ```
10
- .notebook/
11
- ├── INDEX.md # Always read first. Compact index of all notes.
12
- ├── auth-flow.md # Individual note files — flat by default.
13
- ├── error-handling.md
14
- └── checkout-race.md
15
- ```
16
-
17
- Notes start flat in the root of `.notebook/`. When volume exceeds
18
- ~15 notes, organize into subdirectories by category:
19
-
20
- ```
21
- .notebook/
22
- ├── INDEX.md
23
- ├── flows/
24
- │ ├── auth-flow.md
25
- │ └── checkout-flow.md
26
- ├── patterns/
27
- │ └── error-handling.md
28
- ├── gotchas/
29
- │ └── checkout-race.md
30
- └── domain/
31
- └── coupon-types.md
32
- ```
33
-
34
- Categories:
35
-
36
- - **flows** — How things work. Integrations, sequences, data paths.
37
- - **patterns** — How things are done here. Conventions, recurring structures.
38
- - **gotchas** — Traps. Bugs, quirks, counterintuitive behavior.
39
- - **domain** — Business concepts. Terminology, rules, logic not obvious in code.
40
-
41
- These categories are guidelines, not rigid rules. If a note fits
42
- multiple categories, pick the primary one. If none fits, put it in root.
43
-
44
- ## INDEX.md Format
45
-
46
- The index must be compact. One line per note. The AI reads this every
47
- session, so every byte counts.
48
-
49
- ```markdown
50
- # .notebook
51
- > Project intelligence — read before every mission
52
-
53
- Last updated: 2026-02-22
54
-
55
- - [auth-flow](auth-flow.md) — OAuth2 + refresh rotation | flow | auth, security
56
- - [error-handling](error-handling.md) — Error boundaries + custom hook | pattern | react, errors
57
- - [checkout-race](checkout-race.md) — Race condition on cart update | gotcha | checkout, cart
58
- - [coupon-types](coupon-types.md) — Percentage vs fixed vs BOGO rules | domain | coupons, pricing
59
- ```
60
-
61
- Format per line:
62
-
63
- ```
64
- - [slug](path) — summary (max ~80 chars) | category | tags
65
- ```
66
-
67
- Rules for INDEX.md:
68
-
69
- - Keep summaries short and scannable.
70
- - Tags are lowercase, comma-separated. Use them for quick grep.
71
- - Update `Last updated` whenever the index changes.
72
- - If using subdirectories, paths include the folder: `flows/auth-flow.md`.
73
- - Sort by most recently updated, not alphabetically.
74
-
75
- ## Individual Note Format
76
-
77
- Notes are telegraphic. Think field notes, not documentation.
78
-
79
- ```markdown
80
- # Auth Flow
81
- > OAuth2 with refresh token rotation
82
-
83
- Entry: `src/middleware/auth.ts:authMiddleware()` (L12)
84
- Flow: middleware → `services/auth/jwt.ts:verify()` → `services/user/find.ts:findById()`
85
-
86
- Refresh: `services/auth/refresh.ts:rotateToken()`
87
- - Single-use tokens — consumed on refresh, new pair issued
88
- - Stored in Redis with TTL (see `lib/redis.ts:sessionStore`)
89
-
90
- OAuth providers: `config/oauth.ts` — Google, GitHub
91
- - Each provider maps to `services/auth/oauth/[provider].ts`
92
-
93
- Session: Redis-backed via `lib/redis.ts` (L45-62)
94
-
95
- Updated: 2026-02-22
96
- ```
97
-
98
- ### Format principles
99
-
100
- 1. **Pointers, not copies.** Always reference as:
101
- - `file/path.ts:functionName()` for functions
102
- - `file/path.ts` (L10-25) for specific line ranges
103
- - `file/path.ts:ClassName.method()` for class methods
104
- Never paste code blocks into notes. Code changes; pointers
105
- can be re-checked. Pasted code becomes stale lies.
106
-
107
- 2. **One concept per note.** If it needs scrolling, split it.
108
- A note about auth flow should not also cover session management
109
- unless they're inseparable.
110
-
111
- 3. **Minimal prose.** Use fragments, arrows, dashes. Not sentences.
112
- "middleware → verify JWT → load user → attach to req" is better
113
- than "The middleware first verifies the JWT token, then loads
114
- the user from the database, and finally attaches it to the
115
- request object."
116
-
117
- 4. **Always include Entry point.** Every note should have a clear
118
- starting point so the reader knows where to begin exploring.
119
-
120
- 5. **Always include Updated date.** So the reader knows how fresh
121
- the information is.
122
-
123
- 6. **No opinions, only observations.** "Uses Redux for state" not
124
- "Uses Redux instead of a better solution." If something is
125
- genuinely problematic, state the observable impact:
126
- "Redux store has 47 top-level keys — finding relevant state
127
- requires searching across 12 reducers."
128
-
129
- ## Creating the .notebook/ for the First Time
130
-
131
- When `.notebook/` doesn't exist yet:
132
-
133
- 1. Create the directory.
134
- 2. Create INDEX.md with the header only:
135
-
136
- ```markdown
137
- # .notebook
138
- > Project intelligence — read before every mission
139
-
140
- Last updated: [today]
141
- ```
142
-
143
- 3. Do NOT do a full project analysis. Notes are created organically
144
- as you work. The first notes will come from your first mission's
145
- Debrief.
146
-
147
- ## Updating Notes
148
-
149
- When updating an existing note:
150
-
151
- 1. Read the current content.
152
- 2. Add, modify, or remove information based on what you discovered.
153
- 3. Update the `Updated` date at the bottom.
154
- 4. If the summary in INDEX.md changed, update it too.
155
-
156
- When information becomes invalid (e.g., a flow changed because of
157
- your work), update the note immediately — stale notes are worse
158
- than no notes.
159
-
160
- ## Token Budget
161
-
162
- The entire `.notebook/` system is designed for progressive disclosure:
163
-
164
- - **INDEX.md** is read every session (~5-50 lines). Cost: minimal.
165
- - **Individual notes** are read only when relevant to the current
166
- mission. The AI decides which to open based on INDEX.md tags.
167
- - **Total cost per session:** INDEX.md + 0-3 relevant notes.
168
-
169
- If INDEX.md grows beyond 50 entries, consider archiving old notes
170
- into an `archive/` subdirectory and removing them from the active
171
- index. Archived notes are still searchable but not loaded by default.
@@ -1,429 +0,0 @@
1
- ---
2
- name: create-adr
3
- description: Creates Architecture Decision Records (ADRs) to document significant architectural choices and their rationale for future team members. Use when the user says "write an ADR", "document this decision", "record why we chose X", "add an architecture decision record", "create an ADR for", or wants to capture the reasoning behind a technical choice so the team understands it later. Do NOT use when the decision hasn't been made yet (use create-rfc instead), for implementation planning (use technical-design-doc-creator), or for general documentation.
4
- license: CC-BY-4.0
5
- metadata:
6
- author: Tech Leads Club - github.com/tech-leads-club
7
- version: '1.0.0'
8
- ---
9
-
10
- # ADR Creator
11
-
12
- You are an expert in creating Architecture Decision Records (ADRs) — concise, durable documents that capture the context, decision, and consequences of significant architectural choices so future team members understand *why* things are the way they are.
13
-
14
- ## When to Use This Skill
15
-
16
- Use this skill when:
17
-
18
- - User asks to "write an ADR", "create an ADR", "add an architecture decision record"
19
- - User wants to "document why we chose X", "record this decision", "capture this architectural choice"
20
- - A significant technical decision has been made (or is being finalized) and needs to be recorded
21
- - The team wants to preserve the reasoning behind a choice for future engineers
22
- - User asks "why did we choose X" and the answer should be written down permanently
23
-
24
- Do NOT use for:
25
-
26
- - Decisions not yet made — use `create-rfc` to drive the decision process first
27
- - Implementation planning after the decision — use `technical-design-doc-creator`
28
- - Simple configuration choices or trivial code decisions
29
- - Meeting notes or general documentation
30
-
31
- ## ADR vs RFC — Critical Distinction
32
-
33
- | Aspect | ADR | RFC |
34
- |--------|-----|-----|
35
- | **Timing** | Decision already made (or being finalized) | Before the decision (seeking input) |
36
- | **Purpose** | Record for future team members | Proposal seeking approval |
37
- | **Audience** | Engineers joining months or years later | Current stakeholders |
38
- | **Length** | Short — 200–500 words | Long — thorough comparison |
39
- | **Mutability** | Immutable — superseded, never edited | Iterative — evolves during review |
40
- | **Tone** | Historical record | Deliberative proposal |
41
-
42
- If the user says "I need to decide whether to do X" → use `create-rfc`.
43
- If the user says "We decided to do X, let me document it" → use this skill.
44
-
45
- ## Language Adaptation
46
-
47
- **CRITICAL**: Always generate the ADR in the **same language as the user's request**. Detect the language automatically.
48
-
49
- - Keep technical terms in English when appropriate (e.g., "ADR", "API", "microservices")
50
- - All section headers and content should be in the user's language
51
- - Company/product names remain in original form
52
-
53
- ## ADR Format Selection
54
-
55
- Three formats are widely used. Detect the right one from context, or ask:
56
-
57
- | Format | Best For | Length |
58
- |--------|----------|--------|
59
- | **MADR** (Markdown ADR) | Teams that want structured options comparison | Medium |
60
- | **Nygard** (original) | Minimal, fast recording; obvious decisions | Short |
61
- | **Y-Statement** | Inline documentation, very compact contexts | One paragraph |
62
-
63
- Default to **MADR** unless the user specifies otherwise or the decision is very simple.
64
-
65
- ---
66
-
67
- ## Interactive Workflow
68
-
69
- ### Step 1: Gather Context (if not provided)
70
-
71
- If the user provides minimal context, use **AskQuestion** to collect essential information:
72
-
73
- ```json
74
- {
75
- "title": "ADR Information",
76
- "questions": [
77
- {
78
- "id": "adr_decision",
79
- "prompt": "What was the decision made? (e.g., 'Use PostgreSQL for primary storage')",
80
- "options": [
81
- { "id": "free_text", "label": "I'll describe it in my next message" }
82
- ]
83
- },
84
- {
85
- "id": "adr_format",
86
- "prompt": "Which ADR format would you like to use?",
87
- "options": [
88
- { "id": "madr", "label": "MADR — structured, with options comparison (recommended)" },
89
- { "id": "nygard", "label": "Nygard — minimal: Context / Decision / Consequences" },
90
- { "id": "y_statement", "label": "Y-Statement — single paragraph, very compact" }
91
- ]
92
- },
93
- {
94
- "id": "adr_status",
95
- "prompt": "What is the current status of this decision?",
96
- "options": [
97
- { "id": "accepted", "label": "Accepted — decision is final" },
98
- { "id": "proposed", "label": "Proposed — decision is being finalized" },
99
- { "id": "deprecated", "label": "Deprecated — this approach is no longer recommended" },
100
- { "id": "superseded", "label": "Superseded — replaced by a newer decision" }
101
- ]
102
- },
103
- {
104
- "id": "adr_supersedes",
105
- "prompt": "Does this ADR supersede a previous decision?",
106
- "options": [
107
- { "id": "yes", "label": "Yes — I'll provide the ADR number/title" },
108
- { "id": "no", "label": "No — this is a new decision" }
109
- ]
110
- }
111
- ]
112
- }
113
- ```
114
-
115
- ### Step 2: Validate Mandatory Fields
116
-
117
- **MANDATORY fields — ask if missing**:
118
-
119
- - **Decision title** (noun phrase, not a question — e.g., "Use Redis for session storage")
120
- - **Date** of the decision (or today's date)
121
- - **Status** (Accepted / Proposed / Deprecated / Superseded)
122
- - **Context** — the forces, constraints, and situation that made this decision necessary
123
- - **The decision itself** — what was chosen and why
124
- - **Consequences** — what becomes easier, harder, or different as a result
125
-
126
- **RECOMMENDED fields**:
127
- - **Decision drivers** — the key criteria or constraints
128
- - **Options considered** — what alternatives were evaluated
129
- - **Pros/cons per option** — honest trade-off assessment
130
- - **Decision outcome rationale** — why this option over the others
131
- - **Links** — related ADRs, RFCs, tickets, or documentation
132
-
133
- If any mandatory fields are missing, ask IN THE USER'S LANGUAGE before generating the document.
134
-
135
- ### Step 3: Assign ADR Number
136
-
137
- Scan the existing ADR directory for the next sequential number:
138
-
139
- 1. Check if an ADR directory exists (`docs/adr/`, `docs/decisions/`, `.adr/`, or `adr/`)
140
- 2. Find the highest existing number
141
- 3. Assign the next number (e.g., if ADR-007 exists, this becomes ADR-008)
142
- 4. If no directory exists, start at ADR-001 and suggest creating the directory
143
-
144
- ### Step 4: Generate the ADR
145
-
146
- Generate the ADR following the format selected in Step 1.
147
-
148
- ### Step 5: Offer File Placement
149
-
150
- After generating, ask where to save it:
151
-
152
- ```
153
- ADR Created: "ADR-{NNN}: {Title}"
154
-
155
- Suggested file path: docs/adr/{NNN}-{kebab-case-title}.md
156
-
157
- Would you like me to:
158
- 1. Save it to docs/adr/ (recommended convention)
159
- 2. Save it to a different location
160
- 3. Just show the content (I'll place it manually)
161
- ```
162
-
163
- ---
164
-
165
- ## Document Templates
166
-
167
- ### MADR Format (Default)
168
-
169
- ```markdown
170
- # ADR-{NNN}: {Title}
171
-
172
- - **Date**: YYYY-MM-DD
173
- - **Status**: Accepted | Proposed | Deprecated | Superseded by [ADR-NNN]({link})
174
- - **Deciders**: {who was involved in the decision}
175
- - **Tags**: {optional: architecture, security, performance, database, etc.}
176
-
177
- ## Context and Problem Statement
178
-
179
- {Describe the context and the problem or question that led to this decision.
180
- 2–4 sentences. What situation forced this choice?}
181
-
182
- ## Decision Drivers
183
-
184
- - {Driver 1 — e.g., "Must support 10k concurrent users"}
185
- - {Driver 2 — e.g., "Team has no Go experience"}
186
- - {Driver 3 — e.g., "Must be deployable on-premise"}
187
-
188
- ## Considered Options
189
-
190
- - {Option A}
191
- - {Option B}
192
- - {Option C — "Do nothing / status quo" when relevant}
193
-
194
- ## Decision Outcome
195
-
196
- Chosen option: **"{Option A}"**, because {concise rationale tied to decision drivers}.
197
-
198
- ### Positive Consequences
199
-
200
- - {Benefit 1}
201
- - {Benefit 2}
202
-
203
- ### Negative Consequences
204
-
205
- - {Trade-off 1 — be honest}
206
- - {Trade-off 2}
207
-
208
- ## Pros and Cons of the Options
209
-
210
- ### {Option A} ✅ Chosen
211
-
212
- - ✅ {Pro 1}
213
- - ✅ {Pro 2}
214
- - ❌ {Con 1}
215
-
216
- ### {Option B}
217
-
218
- - ✅ {Pro 1}
219
- - ❌ {Con 1}
220
- - ❌ {Con 2}
221
-
222
- ### {Option C}
223
-
224
- - ✅ {Pro 1}
225
- - ❌ {Con 1}
226
-
227
- ## Links
228
-
229
- - {Related ADR, RFC, ticket, or documentation}
230
- - Supersedes: [ADR-{NNN}: {Title}]({link}) (if applicable)
231
- - Superseded by: [ADR-{NNN}: {Title}]({link}) (if applicable)
232
- ```
233
-
234
- ---
235
-
236
- ### Nygard Format (Minimal)
237
-
238
- ```markdown
239
- # ADR-{NNN}: {Title}
240
-
241
- ## Status
242
-
243
- Accepted | Proposed | Deprecated | Superseded by ADR-{NNN}
244
-
245
- ## Context
246
-
247
- {What is the situation that led to this decision?
248
- What forces are at play — technical, business, organizational?
249
- What constraints exist? 2–5 sentences.}
250
-
251
- ## Decision
252
-
253
- {What did we decide to do?
254
- State it directly, in active voice: "We will use X" or "We decided to adopt Y."
255
- Include a brief rationale — why this option over the alternatives.}
256
-
257
- ## Consequences
258
-
259
- {What becomes easier or better as a result?}
260
- {What becomes harder or worse? Be honest about trade-offs.}
261
- {What new concerns or constraints does this introduce?}
262
- ```
263
-
264
- ---
265
-
266
- ### Y-Statement Format (Compact)
267
-
268
- ```markdown
269
- # ADR-{NNN}: {Title}
270
-
271
- **Date**: YYYY-MM-DD | **Status**: Accepted
272
-
273
- In the context of **{situation/use case}**,
274
- facing **{concern or constraint}**,
275
- we decided **{the option chosen}**,
276
- to achieve **{quality attribute or goal}**,
277
- accepting **{the downside or trade-off}**.
278
-
279
- **Deciders**: {names or roles}
280
- **Links**: {related ADRs, tickets}
281
- ```
282
-
283
- ---
284
-
285
- ## ADR Quality Checklist
286
-
287
- Before finalizing, verify:
288
-
289
- - [ ] **Title** is a noun phrase describing the decision (not a question, not a vague label)
290
- - [ ] **Date** is included (decisions without dates lose context quickly)
291
- - [ ] **Status** is set correctly — Accepted, Proposed, Deprecated, or Superseded
292
- - [ ] **Context** explains the *forces* that made this decision necessary, not just what was done
293
- - [ ] **Decision** is stated directly and tied to the context
294
- - [ ] **Consequences** include honest trade-offs — not just positives
295
- - [ ] **Options** (MADR format) include at least 2 alternatives actually considered
296
- - [ ] **Supersedes / superseded by** links are included when applicable
297
- - [ ] **File** follows naming convention: `NNN-kebab-case-title.md`
298
- - [ ] **Number** is sequential in the ADR directory
299
-
300
- ---
301
-
302
- ## ADR File Naming Convention
303
-
304
- ```
305
- docs/adr/
306
- ├── 001-use-postgresql-for-primary-storage.md
307
- ├── 002-adopt-event-driven-architecture.md
308
- ├── 003-replace-jenkins-with-github-actions.md ← supersedes ADR-001 if relevant
309
- └── README.md ← optional index
310
- ```
311
-
312
- - Zero-padded numbers: `001`, `002`, ... `099`, `100`
313
- - Kebab-case title
314
- - `.md` extension
315
- - Common directories: `docs/adr/`, `docs/decisions/`, `adr/`, `.adr/`
316
-
317
- ---
318
-
319
- ## Common Anti-Patterns to Avoid
320
-
321
- ### Title as a Question
322
-
323
- **BAD**: `# ADR-001: Should we use PostgreSQL?`
324
-
325
- **GOOD**: `# ADR-001: Use PostgreSQL for Primary Storage`
326
-
327
- Titles should record the decision, not the question. Future readers need to know *what was decided*, not what was considered.
328
-
329
- ---
330
-
331
- ### Vague Context
332
-
333
- **BAD**:
334
- ```
335
- We needed a database and chose PostgreSQL.
336
- ```
337
-
338
- **GOOD**:
339
- ```
340
- Our application requires a relational database with strong ACID guarantees.
341
- The team has deep PostgreSQL experience. MySQL was evaluated but lacks
342
- native support for JSONB columns, which our schema design requires.
343
- Our cloud provider (AWS) offers managed PostgreSQL via RDS at acceptable cost.
344
- ```
345
-
346
- Context should explain the *forces* — why wasn't the alternative obviously better?
347
-
348
- ---
349
-
350
- ### Consequences Without Trade-offs
351
-
352
- **BAD**:
353
- ```
354
- ## Consequences
355
- PostgreSQL is fast and reliable.
356
- ```
357
-
358
- **GOOD**:
359
- ```
360
- ## Consequences
361
- - Enables JSONB columns and advanced indexing for our query patterns
362
- - Team expertise means fast onboarding and fewer operational surprises
363
- - Adds operational burden compared to a managed NoSQL service
364
- - Schema migrations require careful planning in a relational model
365
- ```
366
-
367
- Honest trade-offs are what make ADRs valuable years later.
368
-
369
- ---
370
-
371
- ### Editing Instead of Superseding
372
-
373
- **BAD**: Editing an old ADR to change the decision after the fact.
374
-
375
- **GOOD**: Creating a new ADR with `Status: Superseded by ADR-{NNN}` on the old one and linking back.
376
-
377
- ADRs are historical records. The old decision was correct *given what was known at the time*. Superseding preserves that context.
378
-
379
- ---
380
-
381
- ### Missing the "Why Not" Rationale
382
-
383
- **BAD**:
384
- ```
385
- ## Decision
386
- We will use Redis for session storage.
387
- ```
388
-
389
- **GOOD**:
390
- ```
391
- ## Decision
392
- We will use Redis for session storage. We considered storing sessions in PostgreSQL
393
- (already in our stack) but Redis's built-in TTL support and in-memory performance
394
- make it significantly better suited for high-frequency session reads. The operational
395
- cost of an additional service is justified by the simplified session expiry logic.
396
- ```
397
-
398
- The rationale is *why this option and not the others* — not just what was chosen.
399
-
400
- ---
401
-
402
- ## Important Notes
403
-
404
- - **ADRs are immutable** — never edit the decision. Supersede with a new ADR.
405
- - **Short is better** — 200–500 words is ideal. If it needs to be longer, move detail to a linked TDD or RFC.
406
- - **Context ages** — always date the ADR; what seems obvious now won't be in 3 years.
407
- - **Honest consequences** — a one-sided ADR loses credibility. Future engineers will hit the downsides regardless.
408
- - **Link everything** — related ADRs, the RFC that drove the decision, tickets, PR references.
409
- - **Language adaptation** — always write in the user's language.
410
- - **Number sequentially** — check the directory before assigning a number.
411
-
412
- ## Example Prompts that Trigger This Skill
413
-
414
- ### English
415
- - "Write an ADR for using PostgreSQL as our primary database"
416
- - "Document our decision to adopt GraphQL"
417
- - "Create an ADR for moving our frontend to Next.js"
418
- - "I need to record why we chose Kafka over RabbitMQ"
419
- - "Add an architecture decision record for our authentication approach"
420
-
421
- ### Portuguese
422
- - "Escreva um ADR sobre a decisão de usar PostgreSQL"
423
- - "Documente a decisão de adotar GraphQL no projeto"
424
- - "Crie um ADR explicando por que escolhemos Kafka"
425
-
426
- ### Spanish
427
- - "Escribe un ADR sobre la decisión de usar PostgreSQL"
428
- - "Documenta la decisión de adoptar microservicios"
429
- - "Crea un ADR explicando por qué elegimos Next.js"
@@ -1,35 +0,0 @@
1
- # Create ADR Examples
2
-
3
- ## Record a finalized database decision
4
-
5
- User: "Write an ADR for using PostgreSQL as our primary database."
6
-
7
- Good agent behavior:
8
-
9
- - Detect the user's language and generate the ADR in it, keeping technical terms like "ADR" and "API" in English.
10
- - Gather the mandatory fields: decision title, date, status, context, decision, and consequences.
11
- - Scan the ADR directory for the next sequential number before assigning one.
12
- - Default to the MADR format with a structured comparison of the options considered.
13
- - Include honest trade-offs in the consequences, not just positives.
14
-
15
- ## Capture a decision that supersedes an old one
16
-
17
- User: "We're replacing Jenkins with GitHub Actions. Document why."
18
-
19
- Good agent behavior:
20
-
21
- - Create a new ADR with status "Accepted" rather than editing the old one.
22
- - Link it as superseding the Jenkins decision, and note that the old ADR should be marked "Superseded by ADR-{NNN}".
23
- - Explain the forces behind the change and why the new choice wins given the current constraints.
24
- - Follow the file naming convention with a zero-padded sequential number.
25
-
26
- ## The decision hasn't been made yet
27
-
28
- User: "I'm trying to decide whether to adopt GraphQL."
29
-
30
- Good agent behavior:
31
-
32
- - Recognize this is an RFC situation, not an ADR: the decision is not yet made.
33
- - Point the user to `create-rfc` to drive the decision process first.
34
- - Explain that ADRs record decisions that are finalized, while RFCs are proposals seeking input.
35
- - Offer to create the RFC instead of forcing an ADR before the decision exists.