@damenor/agent-docs 0.1.2 → 0.4.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/README.md +65 -29
- package/dist/index.js +3834 -217
- package/package.json +5 -2
- package/templates/modules/agents/.agents/agents/doc-designer.md +39 -37
- package/templates/modules/agents/.agents/agents/doc-maintainer.md +35 -35
- package/templates/modules/agents/.agents/agents/doc-reviewer.md +55 -46
- package/templates/modules/agents/.agents/agents/doc-writer.md +34 -33
- package/templates/modules/agents/.agents/agents/reviewer.md +114 -100
- package/templates/modules/agents/.agents/skills/doc-design/SKILL.md +176 -174
- package/templates/modules/agents/.agents/skills/doc-design/references/design-system-format.md +241 -247
- package/templates/modules/agents/.agents/skills/doc-maintain/SKILL.md +61 -51
- package/templates/modules/agents/.agents/skills/doc-maintain/references/triggers.md +171 -165
- package/templates/modules/agents/.agents/skills/doc-review/SKILL.md +39 -34
- package/templates/modules/agents/.agents/skills/doc-review/references/health-checklist.md +115 -112
- package/templates/modules/agents/.agents/skills/doc-scaffold/SKILL.md +19 -12
- package/templates/modules/agents/.agents/skills/doc-scaffold/references/diataxis-quick-ref.md +110 -110
- package/templates/modules/agents/.agents/skills/doc-write/SKILL.md +44 -16
- package/templates/modules/agents/.agents/skills/doc-write/references/adr-format.md +99 -93
- package/templates/modules/agents/.agents/skills/doc-write/references/diataxis-patterns.md +221 -200
- package/templates/base/AGENTS.md +0 -177
- package/templates/base/CHANGELOG.md +0 -86
- package/templates/base/README.md +0 -105
- package/templates/base/docs/CONTEXT.md +0 -111
- package/templates/base/docs/README.md +0 -131
- package/templates/base/docs/adr/TEMPLATE.md +0 -83
- package/templates/modules/design/docs/DESIGN.md +0 -253
- package/templates/modules/explanation/docs/explanation/agent-flow.md +0 -15
- package/templates/modules/explanation/docs/explanation/architecture.md +0 -138
- package/templates/modules/guides/docs/guides/deployment.md +0 -189
- package/templates/modules/guides/docs/guides/runbooks/TEMPLATE.md +0 -86
- package/templates/modules/guides/docs/guides/troubleshooting.md +0 -65
- package/templates/modules/operations/docs/operations/README.md +0 -115
- package/templates/modules/product/docs/product/overview.md +0 -90
- package/templates/modules/product/docs/roadmap.md +0 -80
- package/templates/modules/reference/docs/reference/api.md +0 -131
- package/templates/modules/reference/docs/reference/code-style.md +0 -275
- package/templates/modules/reference/docs/reference/configuration.md +0 -117
- package/templates/modules/reference/docs/reference/infrastructure.md +0 -191
- package/templates/modules/tutorials/docs/tutorials/environment-setup.md +0 -212
- package/templates/modules/tutorials/docs/tutorials/first-task.md +0 -246
- package/templates/modules/tutorials/docs/tutorials/quick-start.md +0 -146
package/templates/modules/agents/.agents/skills/doc-scaffold/references/diataxis-quick-ref.md
CHANGED
|
@@ -1,149 +1,149 @@
|
|
|
1
1
|
---
|
|
2
|
-
created:
|
|
2
|
+
created: '2024-01-15'
|
|
3
3
|
status: active
|
|
4
4
|
type: reference
|
|
5
|
-
tags: [diataxis, framework,
|
|
5
|
+
tags: [diataxis, framework, documentation, reference]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# Diátaxis —
|
|
8
|
+
# Diátaxis — Quick Reference
|
|
9
9
|
|
|
10
|
-
##
|
|
10
|
+
## The 4 Quadrants
|
|
11
11
|
|
|
12
|
-
Diátaxis
|
|
12
|
+
Diátaxis classifies documentation into 4 types along two axes:
|
|
13
13
|
|
|
14
|
-
- **
|
|
15
|
-
- **
|
|
14
|
+
- **Horizontal axis**: Study (learn) vs Work (apply)
|
|
15
|
+
- **Vertical axis**: Practical (action) vs Theoretical (knowledge)
|
|
16
16
|
|
|
17
17
|
```
|
|
18
|
-
│
|
|
18
|
+
│ Practical (action)
|
|
19
19
|
│
|
|
20
20
|
Tutorial │ How-to
|
|
21
|
-
(
|
|
22
|
-
|
|
21
|
+
(Learning │ (Applying
|
|
22
|
+
by doing) │ solutions)
|
|
23
23
|
│
|
|
24
24
|
────────────────────┼────────────────────
|
|
25
25
|
│
|
|
26
|
-
|
|
27
|
-
(
|
|
28
|
-
|
|
26
|
+
Explanation │ Reference
|
|
27
|
+
(Understanding │ (Looking up
|
|
28
|
+
why) │ information)
|
|
29
29
|
│
|
|
30
|
-
│
|
|
30
|
+
│ Theoretical (knowledge)
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
### Tutorial
|
|
34
34
|
|
|
35
|
-
- **
|
|
36
|
-
- **
|
|
37
|
-
- **
|
|
38
|
-
- **
|
|
35
|
+
- **Orientation**: Learning
|
|
36
|
+
- **Purpose**: Guide the beginner step by step to acquire a skill
|
|
37
|
+
- **Tone**: Didactic, patient, encouraging
|
|
38
|
+
- **Example**: "Your first Express.js API" — the user learns while building
|
|
39
39
|
|
|
40
|
-
### How-to
|
|
40
|
+
### How-to
|
|
41
41
|
|
|
42
|
-
- **
|
|
43
|
-
- **
|
|
44
|
-
- **
|
|
45
|
-
- **
|
|
42
|
+
- **Orientation**: Practice
|
|
43
|
+
- **Purpose**: Solve a specific concrete problem
|
|
44
|
+
- **Tone**: Direct, assumes prior knowledge
|
|
45
|
+
- **Example**: "How to configure JWT authentication" — the user already knows Express, needs JWT
|
|
46
46
|
|
|
47
|
-
###
|
|
47
|
+
### Reference
|
|
48
48
|
|
|
49
|
-
- **
|
|
50
|
-
- **
|
|
51
|
-
- **
|
|
52
|
-
- **
|
|
49
|
+
- **Orientation**: Information
|
|
50
|
+
- **Purpose**: Describe the machinery in a factual and complete way
|
|
51
|
+
- **Tone**: Neutral, structured, no narrative
|
|
52
|
+
- **Example**: "API endpoints" — tables with methods, parameters, responses
|
|
53
53
|
|
|
54
|
-
###
|
|
54
|
+
### Explanation
|
|
55
55
|
|
|
56
|
-
- **
|
|
57
|
-
- **
|
|
58
|
-
- **
|
|
59
|
-
- **
|
|
56
|
+
- **Orientation**: Understanding
|
|
57
|
+
- **Purpose**: Clarify why, provide context, connect concepts
|
|
58
|
+
- **Tone**: Discursive, analytical
|
|
59
|
+
- **Example**: "Why we chose event-sourcing" — historical context, alternatives, trade-offs
|
|
60
60
|
|
|
61
|
-
##
|
|
61
|
+
## When to Use Each Type
|
|
62
62
|
|
|
63
|
-
|
|
|
64
|
-
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
63
|
+
| Situation | Type | Folder |
|
|
64
|
+
| ------------------------------------ | ----------- | -------------- |
|
|
65
|
+
| New user wants to get started | Tutorial | `tutorials/` |
|
|
66
|
+
| User has a specific problem | How-to | `how-to/` |
|
|
67
|
+
| User needs to look up a detail | Reference | `reference/` |
|
|
68
|
+
| User asks "why?" | Explanation | `explanation/` |
|
|
69
|
+
| New dev onboarding | Tutorial | `tutorials/` |
|
|
70
|
+
| Configure something already known | How-to | `how-to/` |
|
|
71
|
+
| Look up function parameters | Reference | `reference/` |
|
|
72
|
+
| Understand an architectural decision | Explanation | `explanation/` |
|
|
73
73
|
|
|
74
|
-
##
|
|
74
|
+
## Decision Tree
|
|
75
75
|
|
|
76
76
|
```
|
|
77
|
-
|
|
78
|
-
├──
|
|
79
|
-
│ ├──
|
|
80
|
-
│ └── NO →
|
|
81
|
-
└── NO →
|
|
82
|
-
├──
|
|
83
|
-
│ ├──
|
|
84
|
-
│ └── NO →
|
|
85
|
-
└── NO →
|
|
86
|
-
├──
|
|
87
|
-
└── NO →
|
|
77
|
+
Does the reader need to learn something new from scratch?
|
|
78
|
+
├── YES → Is it best learned by doing?
|
|
79
|
+
│ ├── YES → TUTORIAL → tutorials/
|
|
80
|
+
│ └── NO → EXPLANATION → explanation/
|
|
81
|
+
└── NO → Do they need to solve a practical problem?
|
|
82
|
+
├── YES → Do they need concrete steps?
|
|
83
|
+
│ ├── YES → HOW-TO → how-to/
|
|
84
|
+
│ └── NO → EXPLANATION → explanation/
|
|
85
|
+
└── NO → Do they need specific information?
|
|
86
|
+
├── YES → REFERENCE → reference/
|
|
87
|
+
└── NO → Re-evaluate the need
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
##
|
|
90
|
+
## Examples by Type in Web Projects
|
|
91
91
|
|
|
92
92
|
### Tutorial (tutorials/)
|
|
93
93
|
|
|
94
|
-
|
|
|
95
|
-
|
|
96
|
-
| `quick-start.md`
|
|
97
|
-
| `first-component.md` |
|
|
98
|
-
| `database-setup.md`
|
|
99
|
-
| `deploy-guide.md`
|
|
94
|
+
| Title | What it teaches |
|
|
95
|
+
| -------------------- | --------------------------------------------- |
|
|
96
|
+
| `quick-start.md` | Create the first endpoint, launch the project |
|
|
97
|
+
| `first-component.md` | Create a React/Vue component from scratch |
|
|
98
|
+
| `database-setup.md` | Set up the database for the first time |
|
|
99
|
+
| `deploy-guide.md` | Make the first deployment step by step |
|
|
100
100
|
|
|
101
101
|
### How-to (how-to/)
|
|
102
102
|
|
|
103
|
-
|
|
|
104
|
-
|
|
105
|
-
| `add-auth.md`
|
|
106
|
-
| `custom-middleware.md` |
|
|
107
|
-
| `migrate-database.md`
|
|
108
|
-
| `configure-ci.md`
|
|
109
|
-
| `add-new-endpoint.md`
|
|
110
|
-
| `debug-connection.md`
|
|
111
|
-
|
|
112
|
-
###
|
|
113
|
-
|
|
114
|
-
|
|
|
115
|
-
|
|
116
|
-
| `api.md`
|
|
117
|
-
| `configuration.md` |
|
|
118
|
-
| `cli.md`
|
|
119
|
-
| `events.md`
|
|
120
|
-
| `errors.md`
|
|
121
|
-
|
|
122
|
-
###
|
|
123
|
-
|
|
124
|
-
|
|
|
125
|
-
|
|
126
|
-
| `architecture.md`
|
|
127
|
-
| `authentication-flow.md`
|
|
128
|
-
| `database-design.md`
|
|
129
|
-
| `caching-strategy.md`
|
|
130
|
-
| `adr/001-event-sourcing.md` |
|
|
131
|
-
|
|
132
|
-
##
|
|
133
|
-
|
|
134
|
-
|
|
|
135
|
-
|
|
136
|
-
| "
|
|
137
|
-
| "
|
|
138
|
-
| "
|
|
139
|
-
| "
|
|
140
|
-
| "
|
|
141
|
-
| "
|
|
142
|
-
| "
|
|
143
|
-
| "
|
|
144
|
-
|
|
145
|
-
##
|
|
146
|
-
|
|
147
|
-
**
|
|
148
|
-
|
|
149
|
-
|
|
103
|
+
| Title | What it solves |
|
|
104
|
+
| ---------------------- | ------------------------------------- |
|
|
105
|
+
| `add-auth.md` | Add authentication to an existing API |
|
|
106
|
+
| `custom-middleware.md` | Create custom middleware |
|
|
107
|
+
| `migrate-database.md` | Run a database migration |
|
|
108
|
+
| `configure-ci.md` | Set up CI/CD pipeline |
|
|
109
|
+
| `add-new-endpoint.md` | Add a new REST endpoint |
|
|
110
|
+
| `debug-connection.md` | Diagnose connection issues |
|
|
111
|
+
|
|
112
|
+
### Reference (reference/)
|
|
113
|
+
|
|
114
|
+
| Title | What it documents |
|
|
115
|
+
| ------------------ | ---------------------------------------------- |
|
|
116
|
+
| `api.md` | All endpoints: method, route, params, response |
|
|
117
|
+
| `configuration.md` | All configuration variables and their values |
|
|
118
|
+
| `cli.md` | All CLI commands with flags and examples |
|
|
119
|
+
| `events.md` | All system events with payload |
|
|
120
|
+
| `errors.md` | Error codes with meaning and resolution |
|
|
121
|
+
|
|
122
|
+
### Explanation (explanation/)
|
|
123
|
+
|
|
124
|
+
| Title | What it explains |
|
|
125
|
+
| --------------------------- | ------------------------------------ |
|
|
126
|
+
| `architecture.md` | Architecture overview and its layers |
|
|
127
|
+
| `authentication-flow.md` | How auth flow works end-to-end |
|
|
128
|
+
| `database-design.md` | Why the current schema was chosen |
|
|
129
|
+
| `caching-strategy.md` | Caching strategy and its trade-offs |
|
|
130
|
+
| `adr/001-event-sourcing.md` | Architectural decision with context |
|
|
131
|
+
|
|
132
|
+
## Quick Table: User Goal → Type → Location
|
|
133
|
+
|
|
134
|
+
| User goal | Doc type | Location |
|
|
135
|
+
| ----------------------------------------- | ----------- | ----------------- |
|
|
136
|
+
| "I want to learn how to use this" | Tutorial | `tutorials/` |
|
|
137
|
+
| "I want to do X specific thing" | How-to | `how-to/` |
|
|
138
|
+
| "I need to look up something" | Reference | `reference/` |
|
|
139
|
+
| "I want to understand why it's like this" | Explanation | `explanation/` |
|
|
140
|
+
| "How was the architecture decided?" | ADR | `docs/adr/` |
|
|
141
|
+
| "What does this term mean?" | CONTEXT | `docs/CONTEXT.md` |
|
|
142
|
+
| "What does the system look like?" | Design | `DESIGN.md` |
|
|
143
|
+
| "What changed in each version?" | Changelog | `CHANGELOG.md` |
|
|
144
|
+
|
|
145
|
+
## Golden Rule
|
|
146
|
+
|
|
147
|
+
**One document = One purpose = One Diátaxis type.**
|
|
148
|
+
|
|
149
|
+
If a document tries to be both a tutorial AND a reference at the same time, neither works well. Separate to improve.
|
|
@@ -11,7 +11,7 @@ description: >
|
|
|
11
11
|
license: Apache-2.0
|
|
12
12
|
metadata:
|
|
13
13
|
author: damenordev
|
|
14
|
-
version:
|
|
14
|
+
version: '1.0'
|
|
15
15
|
---
|
|
16
16
|
|
|
17
17
|
# doc-write
|
|
@@ -65,6 +65,7 @@ See [ADR Format](references/adr-format.md) for full details.
|
|
|
65
65
|
### RULE #4: Update docs/README.md when adding files
|
|
66
66
|
|
|
67
67
|
The documentation map must always reflect reality:
|
|
68
|
+
|
|
68
69
|
- Add new entries when files are created
|
|
69
70
|
- Mark entries of deleted files as obsolete
|
|
70
71
|
- Update descriptions if content changed significantly
|
|
@@ -73,8 +74,8 @@ The documentation map must always reflect reality:
|
|
|
73
74
|
|
|
74
75
|
```yaml
|
|
75
76
|
---
|
|
76
|
-
created:
|
|
77
|
-
updated:
|
|
77
|
+
created: '2026-05-07'
|
|
78
|
+
updated: '2026-05-07'
|
|
78
79
|
status: active | draft | stub | deprecated
|
|
79
80
|
type: tutorial | how-to | reference | explanation | adr | design | product
|
|
80
81
|
tags: [tag1, tag2, tag3]
|
|
@@ -86,6 +87,7 @@ No `owner`. Always include `updated` when modifying.
|
|
|
86
87
|
### RULE #6: DUAL audience — humans AND AI agents
|
|
87
88
|
|
|
88
89
|
Write for:
|
|
90
|
+
|
|
89
91
|
- **Humans**: Clarity, examples, logical flow
|
|
90
92
|
- **AI agents**: Consistent structure, terms defined in CONTEXT.md, clear cross-references
|
|
91
93
|
|
|
@@ -112,9 +114,10 @@ Write for:
|
|
|
112
114
|
**Orientation**: Learning — the user learns by doing
|
|
113
115
|
|
|
114
116
|
**Structure**:
|
|
117
|
+
|
|
115
118
|
```markdown
|
|
116
119
|
---
|
|
117
|
-
created:
|
|
120
|
+
created: '...'
|
|
118
121
|
status: active
|
|
119
122
|
type: tutorial
|
|
120
123
|
tags: [...]
|
|
@@ -123,20 +126,27 @@ tags: [...]
|
|
|
123
126
|
# [Descriptive title of the learning goal]
|
|
124
127
|
|
|
125
128
|
## What you will build
|
|
129
|
+
|
|
126
130
|
[Description of the end result — 2-3 lines]
|
|
127
131
|
|
|
128
132
|
## Prerequisites
|
|
133
|
+
|
|
129
134
|
[Concrete list of what is needed before starting]
|
|
130
135
|
|
|
131
136
|
## Step 1: [Concrete action]
|
|
137
|
+
|
|
132
138
|
[Instructions + code]
|
|
139
|
+
|
|
133
140
|
### ✅ Verification
|
|
141
|
+
|
|
134
142
|
[How to confirm the step worked]
|
|
135
143
|
|
|
136
144
|
## Step 2: [Concrete action]
|
|
145
|
+
|
|
137
146
|
...
|
|
138
147
|
|
|
139
148
|
## Summary
|
|
149
|
+
|
|
140
150
|
[What was learned, what's next]
|
|
141
151
|
```
|
|
142
152
|
|
|
@@ -151,9 +161,10 @@ tags: [...]
|
|
|
151
161
|
**Orientation**: Solve a problem — the user already has prior knowledge
|
|
152
162
|
|
|
153
163
|
**Structure**:
|
|
164
|
+
|
|
154
165
|
```markdown
|
|
155
166
|
---
|
|
156
|
-
created:
|
|
167
|
+
created: '...'
|
|
157
168
|
status: active
|
|
158
169
|
type: how-to
|
|
159
170
|
tags: [...]
|
|
@@ -162,14 +173,17 @@ tags: [...]
|
|
|
162
173
|
# How to [solve specific problem]
|
|
163
174
|
|
|
164
175
|
## When to use this
|
|
176
|
+
|
|
165
177
|
[1-2 lines describing the scenario]
|
|
166
178
|
|
|
167
179
|
## Steps
|
|
180
|
+
|
|
168
181
|
1. [Direct action with code]
|
|
169
182
|
2. [Direct action with code]
|
|
170
|
-
...
|
|
183
|
+
...
|
|
171
184
|
|
|
172
185
|
## Expected result
|
|
186
|
+
|
|
173
187
|
[What should be seen/working at the end]
|
|
174
188
|
```
|
|
175
189
|
|
|
@@ -182,9 +196,10 @@ tags: [...]
|
|
|
182
196
|
**Orientation**: Factual information — the user looks up a specific piece of data
|
|
183
197
|
|
|
184
198
|
**Structure**:
|
|
199
|
+
|
|
185
200
|
```markdown
|
|
186
201
|
---
|
|
187
|
-
created:
|
|
202
|
+
created: '...'
|
|
188
203
|
status: active
|
|
189
204
|
type: reference
|
|
190
205
|
tags: [...]
|
|
@@ -195,10 +210,11 @@ tags: [...]
|
|
|
195
210
|
## [Main section — endpoints, methods, props, etc.]
|
|
196
211
|
|
|
197
212
|
| Name | Type | Description | Default |
|
|
198
|
-
|
|
213
|
+
| ---- | ---- | ----------- | ------- |
|
|
199
214
|
| ... | ... | ... | ... |
|
|
200
215
|
|
|
201
216
|
## Examples
|
|
217
|
+
|
|
202
218
|
[Minimal code for each main use case]
|
|
203
219
|
```
|
|
204
220
|
|
|
@@ -213,9 +229,10 @@ tags: [...]
|
|
|
213
229
|
**Orientation**: Understanding — the user wants to understand the why
|
|
214
230
|
|
|
215
231
|
**Structure**:
|
|
232
|
+
|
|
216
233
|
```markdown
|
|
217
234
|
---
|
|
218
|
-
created:
|
|
235
|
+
created: '...'
|
|
219
236
|
status: active
|
|
220
237
|
type: explanation
|
|
221
238
|
tags: [...]
|
|
@@ -224,15 +241,19 @@ tags: [...]
|
|
|
224
241
|
# [Topic being explained]
|
|
225
242
|
|
|
226
243
|
## Context
|
|
244
|
+
|
|
227
245
|
[Why this exists, what problem it solves]
|
|
228
246
|
|
|
229
247
|
## How it works
|
|
248
|
+
|
|
230
249
|
[Overview without going into code]
|
|
231
250
|
|
|
232
251
|
## Alternatives considered
|
|
252
|
+
|
|
233
253
|
[What other options existed and why this was chosen]
|
|
234
254
|
|
|
235
255
|
## Implications
|
|
256
|
+
|
|
236
257
|
[What this decision means for the future]
|
|
237
258
|
```
|
|
238
259
|
|
|
@@ -267,8 +288,8 @@ tags: [...]
|
|
|
267
288
|
|
|
268
289
|
```markdown
|
|
269
290
|
---
|
|
270
|
-
created:
|
|
271
|
-
updated:
|
|
291
|
+
created: '2026-05-07'
|
|
292
|
+
updated: '2026-05-07'
|
|
272
293
|
status: proposed | accepted | deprecated | superseded
|
|
273
294
|
type: adr
|
|
274
295
|
tags: [architecture, decision]
|
|
@@ -341,10 +362,10 @@ For practical steps, see [[how-to/add-new-endpoint]].
|
|
|
341
362
|
|
|
342
363
|
### Tutorial — Output example
|
|
343
364
|
|
|
344
|
-
|
|
365
|
+
````markdown
|
|
345
366
|
---
|
|
346
|
-
created:
|
|
347
|
-
updated:
|
|
367
|
+
created: '2026-05-07'
|
|
368
|
+
updated: '2026-05-07'
|
|
348
369
|
status: active
|
|
349
370
|
type: tutorial
|
|
350
371
|
tags: [auth, jwt, onboarding]
|
|
@@ -353,9 +374,11 @@ tags: [auth, jwt, onboarding]
|
|
|
353
374
|
# Implement JWT Authentication
|
|
354
375
|
|
|
355
376
|
## What you will build
|
|
377
|
+
|
|
356
378
|
A complete login/registration flow with JWT and refresh tokens.
|
|
357
379
|
|
|
358
380
|
## Prerequisites
|
|
381
|
+
|
|
359
382
|
- Project running locally (see [[tutorials/quick-start]])
|
|
360
383
|
- Basic knowledge of HTTP headers
|
|
361
384
|
|
|
@@ -365,20 +388,25 @@ A complete login/registration flow with JWT and refresh tokens.
|
|
|
365
388
|
npm install jsonwebtoken bcryptjs
|
|
366
389
|
npm install -D @types/jsonwebtoken @types/bcryptjs
|
|
367
390
|
```
|
|
391
|
+
````
|
|
368
392
|
|
|
369
393
|
### ✅ Verification
|
|
394
|
+
|
|
370
395
|
```bash
|
|
371
396
|
npm ls jsonwebtoken
|
|
372
397
|
# → jsonwebtoken@9.0.2
|
|
373
398
|
```
|
|
374
399
|
|
|
375
400
|
## Step 2: Create the auth service
|
|
401
|
+
|
|
376
402
|
...[steps with real code]
|
|
377
403
|
|
|
378
404
|
## Summary
|
|
405
|
+
|
|
379
406
|
You learned to implement JWT with refresh tokens.
|
|
380
407
|
Next: [[guides/how-to-protect-routes]]
|
|
381
|
-
|
|
408
|
+
|
|
409
|
+
````
|
|
382
410
|
|
|
383
411
|
### How-to — Output example
|
|
384
412
|
|
|
@@ -405,7 +433,7 @@ When an approved feature in staging is ready for production.
|
|
|
405
433
|
|
|
406
434
|
## Rollback
|
|
407
435
|
If something fails: Vercel Dashboard → Deployments → "Promote to Production" on the previous deploy
|
|
408
|
-
|
|
436
|
+
````
|
|
409
437
|
|
|
410
438
|
## Resources
|
|
411
439
|
|