@mohammadhprp/system-prompt 0.11.1 → 0.12.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.
- package/framework/agents/backend-architect.md +1 -1
- package/framework/agents/researcher.md +1 -1
- package/framework/mcps/figma-mcp-go/README.md +0 -1
- package/framework/mcps/github-mcp/README.md +1 -1
- package/framework/mcps/github-mcp/configs/.env.example +1 -1
- package/framework/mcps/gitlab-mcp/README.md +0 -1
- package/framework/mcps/jira-mcp/README.md +0 -1
- package/framework/mcps/laravel-boost/README.md +0 -1
- package/framework/mcps/notion-mcp/README.md +0 -1
- package/framework/mcps/supabase-mcp/README.md +0 -1
- package/framework/plugins/opencode-goal-plugin/README.md +0 -1
- package/framework/plugins/ponytail/README.md +1 -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 -2
- 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 +1 -2
- package/framework/references/standards/security.md +0 -1
- package/framework/references/standards/testing.md +0 -1
- package/framework/skills/README.md +16 -4
- package/framework/skills/codenavi/SKILL.md +306 -0
- package/framework/skills/codenavi/examples.md +33 -0
- package/framework/skills/codenavi/references/coding-principles.md +143 -0
- package/framework/skills/codenavi/references/notebook-spec.md +171 -0
- package/framework/skills/create-adr/SKILL.md +429 -0
- package/framework/skills/create-adr/examples.md +35 -0
- package/framework/skills/diagram-design/SKILL.md +1 -1
- package/framework/skills/docs-writer/SKILL.md +39 -0
- package/framework/skills/docs-writer/examples.md +34 -0
- package/framework/skills/docs-writer/references/style-guide.md +72 -0
- package/framework/skills/frontend-design/SKILL.md +55 -0
- package/framework/skills/frontend-design/examples.md +45 -0
- package/framework/skills/humanizer/SKILL.md +412 -0
- package/framework/skills/humanizer/examples.md +46 -0
- package/framework/skills/learning-opportunities/SKILL.md +140 -0
- package/framework/skills/learning-opportunities/examples.md +34 -0
- package/framework/skills/learning-opportunities/references/PRINCIPLES.md +42 -0
- package/framework/skills/perf-web-optimization/SKILL.md +163 -0
- package/framework/skills/perf-web-optimization/examples.md +35 -0
- package/framework/skills/perf-web-optimization/references/bundle-optimization.md +180 -0
- package/framework/skills/perf-web-optimization/references/core-web-vitals.md +154 -0
- package/framework/skills/perf-web-optimization/references/image-optimization.md +170 -0
- package/framework/skills/security-best-practices/LICENSE.txt +201 -0
- package/framework/skills/security-best-practices/SKILL.md +89 -0
- package/framework/skills/security-best-practices/examples.md +35 -0
- package/framework/skills/security-best-practices/references/golang-general-backend-security.md +988 -0
- package/framework/skills/security-best-practices/references/javascript-express-web-server-security.md +1151 -0
- package/framework/skills/security-best-practices/references/javascript-general-web-frontend-security.md +725 -0
- package/framework/skills/security-best-practices/references/javascript-jquery-web-frontend-security.md +672 -0
- package/framework/skills/security-best-practices/references/javascript-typescript-nextjs-web-server-security.md +1138 -0
- package/framework/skills/security-best-practices/references/javascript-typescript-react-web-frontend-security.md +975 -0
- package/framework/skills/security-best-practices/references/javascript-typescript-vue-web-frontend-security.md +789 -0
- package/framework/skills/security-best-practices/references/python-django-web-server-security.md +880 -0
- package/framework/skills/security-best-practices/references/python-fastapi-web-server-security.md +1030 -0
- package/framework/skills/security-best-practices/references/python-flask-web-server-security.md +835 -0
- package/framework/skills/sentry/SKILL.md +127 -0
- package/framework/skills/sentry/examples.md +34 -0
- package/framework/skills/sentry/scripts/sentry_api.py +238 -0
- package/framework/skills/show-me/SKILL.md +127 -0
- package/framework/skills/show-me/examples.md +78 -0
- package/framework/skills/spec-driven-eval/SKILL.md +341 -0
- package/framework/skills/spec-driven-eval/examples.md +35 -0
- package/framework/skills/spec-driven-eval/references/quickstart.md +118 -0
- package/framework/skills/spec-driven-eval/references/reference.md +295 -0
- package/framework/skills/taste/SKILL.md +47 -0
- package/framework/skills/taste/examples.md +73 -0
- package/framework/skills/taste/references/brandkit.md +793 -0
- package/framework/skills/taste/references/design-taste-frontend-v1.md +221 -0
- package/framework/skills/taste/references/design-taste-frontend.md +1201 -0
- package/framework/skills/taste/references/full-output-enforcement.md +44 -0
- package/framework/skills/taste/references/gpt-taste.md +69 -0
- package/framework/skills/taste/references/high-end-visual-design.md +93 -0
- package/framework/skills/taste/references/image-to-code.md +1223 -0
- package/framework/skills/taste/references/imagegen-frontend-mobile.md +1460 -0
- package/framework/skills/taste/references/imagegen-frontend-web.md +982 -0
- package/framework/skills/taste/references/industrial-brutalist-ui.md +87 -0
- package/framework/skills/taste/references/minimalist-ui.md +80 -0
- package/framework/skills/taste/references/redesign-existing-projects.md +173 -0
- package/framework/skills/taste/references/stitch-design-taste-design.md +121 -0
- package/framework/skills/taste/references/stitch-design-taste.md +179 -0
- package/framework/skills/technical-design-doc-creator/README.md +411 -0
- package/framework/skills/technical-design-doc-creator/SKILL.md +1484 -0
- package/framework/skills/technical-design-doc-creator/examples.md +35 -0
- package/framework/skills/tlc-spec-driven/SKILL.md +184 -0
- package/framework/skills/tlc-spec-driven/examples.md +34 -0
- package/framework/skills/tlc-spec-driven/references/code-analysis.md +98 -0
- package/framework/skills/tlc-spec-driven/references/coding-principles.md +72 -0
- package/framework/skills/tlc-spec-driven/references/context-limits.md +31 -0
- package/framework/skills/tlc-spec-driven/references/design.md +199 -0
- package/framework/skills/tlc-spec-driven/references/discuss.md +159 -0
- package/framework/skills/tlc-spec-driven/references/implement.md +436 -0
- package/framework/skills/tlc-spec-driven/references/lessons.md +115 -0
- package/framework/skills/tlc-spec-driven/references/memory.md +144 -0
- package/framework/skills/tlc-spec-driven/references/specify.md +228 -0
- package/framework/skills/tlc-spec-driven/references/sub-agents.md +147 -0
- package/framework/skills/tlc-spec-driven/references/tasks.md +451 -0
- package/framework/skills/tlc-spec-driven/references/validate.md +355 -0
- package/framework/skills/tlc-spec-driven/scripts/check_commit.py +115 -0
- package/framework/skills/tlc-spec-driven/scripts/lessons.py +412 -0
- package/framework/skills/tlc-spec-driven/scripts/validate_spec.py +260 -0
- package/framework/skills/tlc-spec-driven/scripts/validate_state.py +162 -0
- package/framework/skills/tlc-spec-driven/scripts/validate_tasks.py +251 -0
- package/framework/skills/web-design-guidelines/SKILL.md +65 -0
- package/framework/skills/web-design-guidelines/examples.md +32 -0
- package/framework/skills/web-design-guidelines/references/guideline.md +174 -0
- package/package.json +1 -1
- package/src/agent-configs.js +6 -2
- package/src/catalog.js +16 -3
- package/src/cli.js +82 -2
- package/src/doctor.js +84 -0
- package/src/installer.js +337 -154
- package/framework/skills/backend-engineer/SKILL.md +0 -76
- package/framework/skills/backend-engineer/examples.md +0 -31
- package/framework/skills/documentation/SKILL.md +0 -74
- package/framework/skills/documentation/examples.md +0 -31
|
@@ -0,0 +1,429 @@
|
|
|
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"
|
|
@@ -0,0 +1,35 @@
|
|
|
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.
|
|
@@ -192,7 +192,7 @@ Universal building blocks. Type-specialized primitives (lifeline, activation bar
|
|
|
192
192
|
|
|
193
193
|
- Editorial callouts → [primitive-annotation.md](references/primitive-annotation.md)
|
|
194
194
|
- Hand-drawn variant → [primitive-sketchy.md](references/primitive-sketchy.md)
|
|
195
|
-
- Icon set (laptop, server, DB, K8s, Docker, AWS, …) → [primitive-icons.md](references/primitive-icons.md). Browse the gallery at [`assets/icons.html`](
|
|
195
|
+
- Icon set (laptop, server, DB, K8s, Docker, AWS, …) → [primitive-icons.md](references/primitive-icons.md). Browse the gallery at [`assets/icons.html`](assets/icons.html).
|
|
196
196
|
- Terminal / CLI-window variant → [primitive-terminal.md](references/primitive-terminal.md)
|
|
197
197
|
|
|
198
198
|
### Background
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-writer
|
|
3
|
+
description: Write, review, and edit documentation files with consistent structure, tone, and technical accuracy. Use when creating docs, reviewing markdown files, writing READMEs, updating `/docs` directories, or when user says "write documentation", "review this doc", "improve this README", "create a guide", or "edit markdown". Do NOT use for code comments, inline JSDoc, or API reference generation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `docs-writer` skill instructions
|
|
7
|
+
|
|
8
|
+
As an expert technical writer and editor, your goal is to produce and refine documentation that is accurate, clear, consistent, and easy for users to understand. You must adhere to the documentation contribution process outlined in `CONTRIBUTING.md`.
|
|
9
|
+
|
|
10
|
+
## Step 1: Understand the goal and create a plan
|
|
11
|
+
|
|
12
|
+
1. **Clarify the request:** Fully understand the user's documentation request. Identify the core feature, command, or concept that needs work.
|
|
13
|
+
2. **Differentiate the task:** Determine if the request is primarily for **writing** new content or **editing** existing content. If the request is ambiguous (e.g., "fix the docs"), ask the user for clarification.
|
|
14
|
+
3. **Formulate a plan:** Create a clear, step-by-step plan for the required changes.
|
|
15
|
+
|
|
16
|
+
## Step 2: Investigate and gather information
|
|
17
|
+
|
|
18
|
+
1. **Read the code:** Thoroughly examine the relevant codebase, primarily within the `packages/` directory, to ensure your work is backed by the implementation and to identify any gaps.
|
|
19
|
+
2. **Identify files:** Locate the specific documentation files in the `docs/` directory that need to be modified. Always read the latest version of a file before you begin work.
|
|
20
|
+
3. **Check for connections:** Consider related documentation. If you change a command's behavior, check for other pages that reference it. If you add a new page, check if `docs/sidebar.json` needs to be updated. Make sure all links are up to date.
|
|
21
|
+
|
|
22
|
+
## Step 3: Write or edit the documentation
|
|
23
|
+
|
|
24
|
+
1. **Follow the style guide:** Adhere to the rules in `references/style-guide.md`. Read this file to understand the project's documentation standards.
|
|
25
|
+
2. Ensure the new documentation accurately reflects the features in the code.
|
|
26
|
+
3. **Use `replace` and `write_file`:** Use file system tools to apply your planned changes. For small edits, `replace` is preferred. For new files or large rewrites, `write_file` is more appropriate.
|
|
27
|
+
|
|
28
|
+
### Sub-step: Editing existing documentation (as clarified in Step 1)
|
|
29
|
+
|
|
30
|
+
- **Gaps:** Identify areas where the documentation is incomplete or no longer reflects existing code.
|
|
31
|
+
- **Tone:** Ensure the tone is active and engaging, not passive.
|
|
32
|
+
- **Clarity:** Correct awkward wording, spelling, and grammar. Rephrase sentences to make them easier for users to understand.
|
|
33
|
+
- **Consistency:** Check for consistent terminology and style across all edited documents.
|
|
34
|
+
|
|
35
|
+
## Step 4: Verify and finalize
|
|
36
|
+
|
|
37
|
+
1. **Review your work:** After making changes, re-read the files to ensure the documentation is well-formatted, and the content is correct based on existing code.
|
|
38
|
+
2. **Link verification:** Verify the validity of all links in the new content. Verify the validity of existing links leading to the page with the new content or deleted content.
|
|
39
|
+
3. **Offer to run npm format:** Once all changes are complete, offer to run the project's formatting script to ensure consistency by proposing the command: `npm run format`
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Docs Writer Examples
|
|
2
|
+
|
|
3
|
+
## Write a README from scratch
|
|
4
|
+
|
|
5
|
+
User: "Create a README for the CLI package."
|
|
6
|
+
|
|
7
|
+
Good agent behavior:
|
|
8
|
+
|
|
9
|
+
- Read the relevant code to ensure the README is backed by the actual implementation.
|
|
10
|
+
- Follow the project's style guide for structure and tone.
|
|
11
|
+
- Cover install, usage, and configuration with accurate command examples.
|
|
12
|
+
- Verify every link in the new content points at a real target.
|
|
13
|
+
|
|
14
|
+
## Review and improve existing docs
|
|
15
|
+
|
|
16
|
+
User: "Improve this markdown file, it reads awkwardly."
|
|
17
|
+
|
|
18
|
+
Good agent behavior:
|
|
19
|
+
|
|
20
|
+
- Read the latest version of the file before starting.
|
|
21
|
+
- Fix unclear phrasing, grammar, and passive voice while preserving the technical meaning.
|
|
22
|
+
- Check for consistent terminology across the edited document and related pages.
|
|
23
|
+
- Verify that links leading to the page still resolve after the edits.
|
|
24
|
+
|
|
25
|
+
## Update docs for a behavior change
|
|
26
|
+
|
|
27
|
+
User: "We renamed `build` to `compile`. Update the docs."
|
|
28
|
+
|
|
29
|
+
Good agent behavior:
|
|
30
|
+
|
|
31
|
+
- Search for every page referencing the command, not just the obvious one.
|
|
32
|
+
- Update the command docs and any tutorial, reference, or sidebar entries that mention it.
|
|
33
|
+
- Keep terminology consistent across all edited pages.
|
|
34
|
+
- Offer to run the project's formatting script to keep things consistent.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Documentation style guide
|
|
2
|
+
|
|
3
|
+
## I. Core principles
|
|
4
|
+
|
|
5
|
+
1. **Clarity:** Write for easy understanding. Prioritize clear, direct, and simple language.
|
|
6
|
+
2. **Consistency:** Use consistent terminology, formatting, and style throughout the documentation.
|
|
7
|
+
3. **Accuracy:** Ensure all information is technically correct and up-to-date.
|
|
8
|
+
4. **Accessibility:** Design documentation to be usable by everyone. Focus on semantic structure, clear link text, and image alternatives.
|
|
9
|
+
5. **Global audience:** Write in standard US English. Avoid slang, idioms, and cultural references.
|
|
10
|
+
6. **Prescriptive:** Guide the reader by recommending specific actions and paths, especially for complex tasks.
|
|
11
|
+
|
|
12
|
+
## II. Voice and tone
|
|
13
|
+
|
|
14
|
+
- **Professional yet friendly:** Maintain a helpful, knowledgeable, and conversational tone without being frivolous.
|
|
15
|
+
- **Direct:** Get straight to the point. Keep paragraphs short and focused.
|
|
16
|
+
- **Second person:** Address the reader as "you."
|
|
17
|
+
- **Present tense:** Use the present tense to describe functionality (e.g., "The API returns a JSON object.").
|
|
18
|
+
- **Avoid:** Jargon, slang, marketing hype, and overly casual language.
|
|
19
|
+
|
|
20
|
+
## III. Language and grammar
|
|
21
|
+
|
|
22
|
+
- **Active voice:** Prefer active voice over passive voice.
|
|
23
|
+
- _Example:_ "The system sends a notification." (Not: "A notification is sent by the system.")
|
|
24
|
+
- **Contractions:** Use common contractions (e.g., "don't," "it's") to maintain a natural tone.
|
|
25
|
+
- **Simple vocabulary:** Use common words. Define technical terms when necessary.
|
|
26
|
+
- **Conciseness:** Keep sentences short and focused, but don't omit helpful information.
|
|
27
|
+
- **"Please":** Avoid using the word "please."
|
|
28
|
+
|
|
29
|
+
## IV. Procedures and steps
|
|
30
|
+
|
|
31
|
+
- Start each step with an imperative verb (e.g., "Connect to the database").
|
|
32
|
+
- Number steps sequentially.
|
|
33
|
+
- Introduce lists of steps with a complete sentence.
|
|
34
|
+
- Put conditions before instructions, not after.
|
|
35
|
+
- Provide clear context for where the action takes place (e.g., "In the administration console...").
|
|
36
|
+
- Indicate optional steps clearly (e.g., "Optional: ...").
|
|
37
|
+
|
|
38
|
+
## V. Formatting and punctuation
|
|
39
|
+
|
|
40
|
+
- **Text wrap:** Wrap all text at 80 characters, with exceptions for long links or tables.
|
|
41
|
+
- **Headings, titles, and bold text:** Use sentence case. Structure headings hierarchically.
|
|
42
|
+
- **Lists:** Use numbered lists for sequential steps and bulleted lists for all other lists. Keep list items parallel in structure.
|
|
43
|
+
- **Serial comma:** Use the serial comma (e.g., "one, two, and three").
|
|
44
|
+
- **Punctuation:** Use standard American punctuation. Place periods inside quotation marks.
|
|
45
|
+
- **Dates:** Use unambiguous date formatting (e.g., "January 22, 2026").
|
|
46
|
+
|
|
47
|
+
## VI. UI, code, and links
|
|
48
|
+
|
|
49
|
+
- **UI elements:** Put UI elements in **bold**. Focus on the task when discussing interaction.
|
|
50
|
+
- **Code:** Use `code font` for filenames, code snippets, commands, and API elements. Use code blocks for multi-line samples.
|
|
51
|
+
- **Links:** Use descriptive link text that indicates what the link leads to. Avoid "click here."
|
|
52
|
+
|
|
53
|
+
## VII. Word choice and terminology
|
|
54
|
+
|
|
55
|
+
- **Consistent naming:** Use product and feature names consistently.
|
|
56
|
+
- **Specific verbs:** Use precise verbs.
|
|
57
|
+
- **Avoid:**
|
|
58
|
+
- Latin abbreviations (e.g., use "for example" instead of "e.g.").
|
|
59
|
+
- Placeholder names like "foo" and "bar" in examples; use meaningful names instead.
|
|
60
|
+
- Anthropomorphism (e.g., "The server thinks...").
|
|
61
|
+
- "Should": Be clear about requirements ("must") vs. recommendations ("we recommend").
|
|
62
|
+
|
|
63
|
+
## VIII. Files and media
|
|
64
|
+
|
|
65
|
+
- **Filenames:** Use lowercase letters, separate words with hyphens (-), and use standard ASCII characters.
|
|
66
|
+
- **Images:** Provide descriptive alt text for all images. Provide high-resolution or vector images when practical.
|
|
67
|
+
|
|
68
|
+
## IX. Accessibility quick check
|
|
69
|
+
|
|
70
|
+
- Provide descriptive alt text for images.
|
|
71
|
+
- Ensure link text makes sense out of context.
|
|
72
|
+
- Use semantic HTML elements correctly (headings, lists, tables).
|