@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.
- package/framework/commands/README.md +1 -1
- package/framework/commands/review.md +1 -1
- package/framework/mcps/README.md +0 -1
- package/framework/plugins/ponytail/README.md +0 -1
- package/framework/plugins/ponytail/capabilities.md +1 -1
- package/framework/references/standards/api.md +0 -1
- package/framework/references/standards/architecture.md +0 -1
- package/framework/references/standards/database.md +0 -1
- package/framework/references/standards/debugging.md +0 -1
- package/framework/references/standards/documentation.md +0 -1
- package/framework/references/standards/logging.md +0 -1
- package/framework/references/standards/naming.md +0 -1
- package/framework/references/standards/observability.md +0 -1
- package/framework/references/standards/performance.md +0 -1
- package/framework/references/standards/pull-requests.md +0 -1
- package/framework/references/standards/security.md +0 -1
- package/framework/references/standards/testing.md +0 -1
- package/framework/skills/README.md +1 -12
- package/framework/skills/improve/SKILL.md +1 -3
- package/framework/skills/improve/examples.md +1 -1
- package/framework/skills/laravel-best-practices/SKILL.md +56 -216
- package/framework/skills/laravel-best-practices/references/architecture.md +1 -1
- package/framework/skills/laravel-best-practices/references/checklist.md +139 -0
- package/framework/skills/laravel-best-practices/references/eloquent.md +4 -2
- package/framework/skills/laravel-best-practices/references/infer-conventions.md +97 -0
- package/framework/skills/laravel-best-practices/references/pest-testing.md +47 -18
- package/framework/skills/laravel-best-practices/references/security.md +1 -1
- package/framework/skills/laravel-best-practices/references/style.md +1 -1
- package/framework/skills/laravel-best-practices/references/tailwindcss.md +0 -1
- package/package.json +1 -1
- package/src/catalog.js +1 -13
- package/framework/mcps/notion-mcp/README.md +0 -57
- package/framework/mcps/notion-mcp/capabilities.md +0 -118
- package/framework/mcps/notion-mcp/configs/opencode.json +0 -9
- package/framework/mcps/notion-mcp/install.md +0 -70
- package/framework/mcps/notion-mcp/troubleshooting.md +0 -95
- package/framework/skills/brainstorming/SKILL.md +0 -159
- package/framework/skills/brainstorming/examples.md +0 -49
- package/framework/skills/brainstorming/scripts/frame-template.html +0 -213
- package/framework/skills/brainstorming/scripts/helper.js +0 -167
- package/framework/skills/brainstorming/scripts/server.cjs +0 -723
- package/framework/skills/brainstorming/scripts/start-server.sh +0 -209
- package/framework/skills/brainstorming/scripts/stop-server.sh +0 -120
- package/framework/skills/brainstorming/visual-companion.md +0 -291
- package/framework/skills/code-review/SKILL.md +0 -72
- package/framework/skills/code-review/examples.md +0 -31
- package/framework/skills/codenavi/SKILL.md +0 -306
- package/framework/skills/codenavi/examples.md +0 -33
- package/framework/skills/codenavi/references/coding-principles.md +0 -143
- package/framework/skills/codenavi/references/notebook-spec.md +0 -171
- package/framework/skills/create-adr/SKILL.md +0 -429
- package/framework/skills/create-adr/examples.md +0 -35
- package/framework/skills/design/SKILL.md +0 -399
- package/framework/skills/design/examples.md +0 -34
- package/framework/skills/great-interface/SKILL.md +0 -43
- package/framework/skills/great-interface/references/animations.md +0 -205
- package/framework/skills/great-interface/references/better-accessibility.md +0 -106
- package/framework/skills/great-interface/references/better-colors.md +0 -100
- package/framework/skills/great-interface/references/better-interface.md +0 -132
- package/framework/skills/great-interface/references/better-layout.md +0 -76
- package/framework/skills/great-interface/references/better-typography.md +0 -157
- package/framework/skills/great-interface/references/better-ui.md +0 -107
- package/framework/skills/great-interface/references/better-writing.md +0 -109
- package/framework/skills/great-interface/references/choosing-fonts.md +0 -64
- package/framework/skills/great-interface/references/color-formats.md +0 -90
- package/framework/skills/great-interface/references/color-usage.md +0 -118
- package/framework/skills/great-interface/references/contrast.md +0 -79
- package/framework/skills/great-interface/references/css-cheat-sheet.md +0 -65
- package/framework/skills/great-interface/references/details-and-accessibility.md +0 -119
- package/framework/skills/great-interface/references/enter-exit.md +0 -147
- package/framework/skills/great-interface/references/explain-interface.md +0 -126
- package/framework/skills/great-interface/references/find-the-effect.md +0 -94
- package/framework/skills/great-interface/references/focus-and-keyboard.md +0 -131
- package/framework/skills/great-interface/references/forms.md +0 -84
- package/framework/skills/great-interface/references/from-an-image.md +0 -55
- package/framework/skills/great-interface/references/grouping-and-alignment.md +0 -123
- package/framework/skills/great-interface/references/hit-areas.md +0 -94
- package/framework/skills/great-interface/references/icon-transitions.md +0 -102
- package/framework/skills/great-interface/references/icons.md +0 -110
- package/framework/skills/great-interface/references/interface-review.md +0 -148
- package/framework/skills/great-interface/references/motion-and-zoom.md +0 -79
- package/framework/skills/great-interface/references/no-browser.md +0 -73
- package/framework/skills/great-interface/references/palette-generation.md +0 -104
- package/framework/skills/great-interface/references/palette-structure.md +0 -76
- package/framework/skills/great-interface/references/performance.md +0 -88
- package/framework/skills/great-interface/references/picker.md +0 -76
- package/framework/skills/great-interface/references/read-the-system.md +0 -178
- package/framework/skills/great-interface/references/removed-signals.md +0 -38
- package/framework/skills/great-interface/references/review-format.md +0 -46
- package/framework/skills/great-interface/references/scope-resolution.md +0 -88
- package/framework/skills/great-interface/references/screen-readers.md +0 -101
- package/framework/skills/great-interface/references/semantics-and-aria.md +0 -84
- package/framework/skills/great-interface/references/spacing-and-adaptivity.md +0 -159
- package/framework/skills/great-interface/references/spacing-and-sizing.md +0 -121
- package/framework/skills/great-interface/references/surfaces.md +0 -219
- package/framework/skills/great-interface/references/token-naming.md +0 -97
- package/framework/skills/great-interface/references/variable-fonts-and-opentype.md +0 -105
- package/framework/skills/great-interface/references/variant.md +0 -104
- package/framework/skills/great-interface/references/wrapping-and-punctuation.md +0 -55
- package/framework/skills/learning-opportunities/SKILL.md +0 -140
- package/framework/skills/learning-opportunities/examples.md +0 -34
- package/framework/skills/learning-opportunities/references/PRINCIPLES.md +0 -42
- package/framework/skills/notion-mcp/SKILL.md +0 -57
- package/framework/skills/notion-mcp/examples.md +0 -31
- package/framework/skills/notion-mcp/references/comments.md +0 -112
- package/framework/skills/notion-mcp/references/databases.md +0 -193
- package/framework/skills/notion-mcp/references/pages.md +0 -235
- package/framework/skills/spec-driven-eval/SKILL.md +0 -341
- package/framework/skills/spec-driven-eval/examples.md +0 -35
- package/framework/skills/spec-driven-eval/references/quickstart.md +0 -118
- package/framework/skills/spec-driven-eval/references/reference.md +0 -295
- package/framework/skills/technical-design-doc-creator/README.md +0 -411
- package/framework/skills/technical-design-doc-creator/SKILL.md +0 -1484
- package/framework/skills/technical-design-doc-creator/examples.md +0 -35
- package/framework/skills/web-design-guidelines/SKILL.md +0 -65
- package/framework/skills/web-design-guidelines/examples.md +0 -32
- 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.
|