@brainfish-ai/devdoc 0.1.32 → 0.1.34
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/ai-agents/.claude/skills/blame-doc/SKILL.md +171 -0
- package/ai-agents/.claude/skills/bootstrap-docs/SKILL.md +519 -64
- package/ai-agents/.claude/skills/check-docs/SKILL.md +107 -12
- package/ai-agents/.claude/skills/commit-doc/SKILL.md +214 -0
- package/ai-agents/.claude/skills/create-doc/SKILL.md +198 -0
- package/ai-agents/.claude/skills/delete-doc/SKILL.md +164 -0
- package/ai-agents/.claude/skills/update-doc/SKILL.md +219 -0
- package/ai-agents/.cursor/rules/devdoc-blame.mdc +114 -0
- package/ai-agents/.cursor/rules/devdoc-bootstrap.mdc +207 -41
- package/ai-agents/.cursor/rules/devdoc-commit.mdc +103 -0
- package/ai-agents/.cursor/rules/devdoc-create.mdc +89 -0
- package/ai-agents/.cursor/rules/devdoc-delete.mdc +101 -0
- package/ai-agents/.cursor/rules/devdoc-update.mdc +95 -0
- package/ai-agents/.devdoc/context.json +66 -0
- package/ai-agents/.devdoc/templates/api-reference.md +211 -0
- package/ai-agents/.devdoc/templates/guide.md +133 -0
- package/ai-agents/.devdoc/templates/quickstart.md +179 -0
- package/ai-agents/.devdoc/templates/troubleshooting.md +215 -0
- package/ai-agents/.devdoc/templates/tutorial.md +212 -0
- package/ai-agents/CLAUDE.md +15 -3
- package/ai-agents/schemas/context.schema.json +259 -0
- package/dist/cli/commands/ai.d.ts +1 -0
- package/dist/cli/commands/ai.js +115 -46
- package/dist/cli/commands/create.d.ts +12 -0
- package/dist/cli/commands/create.js +110 -62
- package/dist/cli/commands/init.js +11 -7
- package/dist/cli/index.js +4 -2
- package/package.json +1 -1
- package/renderer/components/docs-viewer/sidebar/index.tsx +118 -87
- package/ai-agents/.claude/skills/create-doc-page/SKILL.md +0 -57
- package/ai-agents/.claude/skills/docs-from-code/SKILL.md +0 -73
- package/ai-agents/.claude/skills/generate-api-docs/SKILL.md +0 -94
- package/ai-agents/.claude/skills/sync-docs/SKILL.md +0 -112
- package/ai-agents/.claude/skills/update-docs-json/SKILL.md +0 -60
- package/ai-agents/.cursor/rules/devdoc-sync.mdc +0 -70
|
@@ -1,102 +1,557 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bootstrap-docs
|
|
3
|
-
description: Analyze repository and generate
|
|
3
|
+
description: Analyze repository and generate documentation. Creates context memory for consistent AI assistance.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## Instructions
|
|
7
7
|
|
|
8
8
|
When bootstrapping documentation from a repository:
|
|
9
9
|
|
|
10
|
-
### Step 1:
|
|
10
|
+
### Step 1: Check Context Memory
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
- `README.md` - Project overview, installation, usage
|
|
14
|
-
- `package.json` / `Cargo.toml` / `pyproject.toml` - Dependencies, scripts, metadata
|
|
15
|
-
- `src/` or `lib/` - Main source code structure
|
|
16
|
-
- `api/` or `routes/` - API endpoints (REST, GraphQL)
|
|
17
|
-
- `components/` - UI components (React, Vue, etc.)
|
|
18
|
-
- `docs/` - Existing documentation
|
|
19
|
-
- `.env.example` - Environment variables
|
|
20
|
-
- `docker-compose.yml` / `Dockerfile` - Deployment info
|
|
21
|
-
- `openapi.json` / `swagger.yaml` - API specifications
|
|
22
|
-
- `schema.graphql` - GraphQL schemas
|
|
12
|
+
**First, check if `.devdoc/context.json` exists:**
|
|
23
13
|
|
|
24
|
-
|
|
14
|
+
**If context.json exists and is populated:**
|
|
15
|
+
- Read the context file
|
|
16
|
+
- Tell user: "Found existing product context. Using saved configuration."
|
|
17
|
+
- Skip to Step 5 (Generate Documentation)
|
|
25
18
|
|
|
26
|
-
|
|
19
|
+
**If context.json is empty or doesn't exist:**
|
|
20
|
+
- Proceed to Step 2 (Discovery Flow)
|
|
21
|
+
|
|
22
|
+
### Step 2: Discovery Flow (Context Creation)
|
|
23
|
+
|
|
24
|
+
#### 2a. Detect Project Structure
|
|
25
|
+
|
|
26
|
+
**If `docs.json` exists in current directory:**
|
|
27
|
+
- You're in a DevDoc docs folder
|
|
28
|
+
- Source code is likely in `../` (parent directory)
|
|
29
|
+
|
|
30
|
+
**If `package.json` and `src/` exist:**
|
|
31
|
+
- You're at repo root
|
|
32
|
+
- Create docs in `./docs/` subfolder
|
|
33
|
+
|
|
34
|
+
**If neither matches:**
|
|
35
|
+
- Ask user for the source code path
|
|
36
|
+
|
|
37
|
+
#### 2b. Scan for Existing API Specs
|
|
38
|
+
|
|
39
|
+
**Search for OpenAPI specs:**
|
|
40
|
+
```
|
|
41
|
+
openapi.json, openapi.yaml, openapi.yml
|
|
42
|
+
swagger.json, swagger.yaml, swagger.yml
|
|
43
|
+
api-spec.json, api-spec.yaml
|
|
44
|
+
**/openapi.*, **/swagger.*
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Search for GraphQL schemas:**
|
|
48
|
+
```
|
|
49
|
+
schema.graphql, schema.gql
|
|
50
|
+
*.graphql, *.gql
|
|
51
|
+
**/schema.graphql
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**If found, store the paths for later use.**
|
|
55
|
+
|
|
56
|
+
#### 2c. Auto-Discover Information
|
|
57
|
+
|
|
58
|
+
Scan the repository and extract:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
From README.md:
|
|
62
|
+
- Product name
|
|
63
|
+
- Description
|
|
64
|
+
- Key features
|
|
65
|
+
|
|
66
|
+
From package.json / pyproject.toml / Cargo.toml:
|
|
67
|
+
- Primary language
|
|
68
|
+
- Framework (from dependencies)
|
|
69
|
+
- Project type (library, cli, api, etc.)
|
|
70
|
+
|
|
71
|
+
From OpenAPI spec (if exists):
|
|
72
|
+
- API style: REST
|
|
73
|
+
- Base URL
|
|
74
|
+
- Authentication type
|
|
75
|
+
- Endpoints count
|
|
76
|
+
- Common patterns
|
|
77
|
+
|
|
78
|
+
From GraphQL schema (if exists):
|
|
79
|
+
- API style: GraphQL
|
|
80
|
+
- Types count
|
|
81
|
+
- Queries/Mutations
|
|
82
|
+
|
|
83
|
+
From source code structure:
|
|
84
|
+
- Key directories
|
|
85
|
+
- Naming conventions
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
#### 2d. Ask Key Questions
|
|
89
|
+
|
|
90
|
+
After auto-discovery, ask the user to confirm/provide:
|
|
91
|
+
|
|
92
|
+
**Question 1: Documentation Type**
|
|
93
|
+
"What type of documentation are you creating?
|
|
94
|
+
1. **internal** - For your team: setup guides, architecture, contribution guidelines
|
|
95
|
+
2. **api** - For developers using your product: API reference, SDKs, integration guides
|
|
96
|
+
3. **product** - For end users: feature guides, tutorials, FAQs"
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
**Question 2: Import Existing API Spec (if detected)**
|
|
101
|
+
|
|
102
|
+
**If OpenAPI spec found:**
|
|
103
|
+
"I found an OpenAPI specification at `{path}`:
|
|
104
|
+
- {endpoint_count} endpoints
|
|
105
|
+
- Base URL: {base_url}
|
|
106
|
+
- Auth: {auth_type}
|
|
107
|
+
|
|
108
|
+
Would you like me to:
|
|
109
|
+
1. **Import it** - Copy to `api-reference/openapi.json` and generate API Reference tab
|
|
110
|
+
2. **Reference it** - Point docs.json to existing location: `{path}`
|
|
111
|
+
3. **Skip** - Don't include API reference (I'll create manual docs instead)"
|
|
112
|
+
|
|
113
|
+
**If GraphQL schema found:**
|
|
114
|
+
"I found a GraphQL schema at `{path}`:
|
|
115
|
+
- {types_count} types
|
|
116
|
+
- {queries_count} queries
|
|
117
|
+
- {mutations_count} mutations
|
|
118
|
+
|
|
119
|
+
Would you like me to:
|
|
120
|
+
1. **Import it** - Copy to `api-reference/schema.graphql` and generate GraphQL tab
|
|
121
|
+
2. **Reference it** - Point docs.json to existing location: `{path}`
|
|
122
|
+
3. **Skip** - Don't include GraphQL playground"
|
|
123
|
+
|
|
124
|
+
**If multiple specs found:**
|
|
125
|
+
"I found multiple API specifications:
|
|
126
|
+
- OpenAPI: `{openapi_path}`
|
|
127
|
+
- GraphQL: `{graphql_path}`
|
|
128
|
+
|
|
129
|
+
Which would you like to use for the API Reference?
|
|
130
|
+
1. **OpenAPI (REST)** - Interactive REST API playground
|
|
131
|
+
2. **GraphQL** - GraphQL playground with schema explorer
|
|
132
|
+
3. **Both** - Create separate tabs for each
|
|
133
|
+
4. **Skip** - Manual documentation only"
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
**Question 3: Target Audience**
|
|
138
|
+
"Who is your primary audience?
|
|
139
|
+
(e.g., 'Backend developers integrating our payment API', 'Internal engineering team', 'Non-technical business users')"
|
|
140
|
+
|
|
141
|
+
**Question 4: Terminology (optional)**
|
|
142
|
+
"Any specific terminology I should know? For example:
|
|
143
|
+
- Brand names with specific capitalization
|
|
144
|
+
- Terms to avoid or prefer
|
|
145
|
+
- Domain-specific vocabulary
|
|
146
|
+
|
|
147
|
+
(Press Enter to skip)"
|
|
148
|
+
|
|
149
|
+
**Question 5: Code Examples**
|
|
150
|
+
"What language should I use for code examples?
|
|
151
|
+
(e.g., TypeScript, Python, curl)"
|
|
152
|
+
|
|
153
|
+
#### 2e. Create Context Memory
|
|
154
|
+
|
|
155
|
+
Create `.devdoc/` folder and `context.json` with discovered + user info:
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"$schema": "https://devdoc.sh/schemas/context.json",
|
|
160
|
+
"version": "1.0",
|
|
161
|
+
"lastUpdated": "2026-01-24T10:30:00Z",
|
|
162
|
+
"product": {
|
|
163
|
+
"name": "[from README/package.json]",
|
|
164
|
+
"description": "[from README]",
|
|
165
|
+
"type": "[api/sdk/platform/cli/library]",
|
|
166
|
+
"domain": "[inferred or asked]",
|
|
167
|
+
"targetAudience": "[from Question 3]",
|
|
168
|
+
"keyFeatures": ["[from README]"]
|
|
169
|
+
},
|
|
170
|
+
"terminology": {
|
|
171
|
+
"glossary": {},
|
|
172
|
+
"avoidTerms": [],
|
|
173
|
+
"brandNames": {}
|
|
174
|
+
},
|
|
175
|
+
"api": {
|
|
176
|
+
"style": "[REST/GraphQL/etc if detected]",
|
|
177
|
+
"specPath": "[path to imported/referenced spec]",
|
|
178
|
+
"baseUrl": "[from OpenAPI if found]",
|
|
179
|
+
"authentication": {
|
|
180
|
+
"type": "[from OpenAPI if found]",
|
|
181
|
+
"headerName": "",
|
|
182
|
+
"description": ""
|
|
183
|
+
},
|
|
184
|
+
"conventions": {},
|
|
185
|
+
"commonPatterns": []
|
|
186
|
+
},
|
|
187
|
+
"codebase": {
|
|
188
|
+
"language": "[from package.json]",
|
|
189
|
+
"framework": "[from dependencies]",
|
|
190
|
+
"sourceLocation": "../"
|
|
191
|
+
},
|
|
192
|
+
"documentation": {
|
|
193
|
+
"voice": "[based on docType]",
|
|
194
|
+
"perspective": "second_person",
|
|
195
|
+
"codeExamples": {
|
|
196
|
+
"primaryLanguage": "[from Question 5]",
|
|
197
|
+
"additionalLanguages": []
|
|
198
|
+
},
|
|
199
|
+
"templates": {
|
|
200
|
+
"guide": ".devdoc/templates/guide.md",
|
|
201
|
+
"apiReference": ".devdoc/templates/api-reference.md",
|
|
202
|
+
"tutorial": ".devdoc/templates/tutorial.md",
|
|
203
|
+
"quickstart": ".devdoc/templates/quickstart.md",
|
|
204
|
+
"troubleshooting": ".devdoc/templates/troubleshooting.md"
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
"learned": {
|
|
208
|
+
"insights": [],
|
|
209
|
+
"corrections": []
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Also copy template files to `.devdoc/templates/` if they don't exist.
|
|
215
|
+
|
|
216
|
+
Tell user:
|
|
217
|
+
"Created product context in `.devdoc/context.json`
|
|
218
|
+
- Product: {name}
|
|
219
|
+
- Type: {docType}
|
|
220
|
+
- API: {REST/GraphQL} (imported from {spec_path})
|
|
221
|
+
- Audience: {targetAudience}
|
|
222
|
+
- Code examples: {primaryLanguage}
|
|
223
|
+
|
|
224
|
+
This context will be used for consistent documentation generation."
|
|
225
|
+
|
|
226
|
+
### Step 3: Import API Spec (if selected)
|
|
227
|
+
|
|
228
|
+
**For OpenAPI (Import option):**
|
|
229
|
+
1. Copy spec to `api-reference/openapi.json` (or `.yaml`)
|
|
230
|
+
2. Validate the spec is valid OpenAPI 3.x
|
|
231
|
+
3. Extract key info for context.json
|
|
232
|
+
|
|
233
|
+
**For OpenAPI (Reference option):**
|
|
234
|
+
1. Note the relative path for docs.json
|
|
235
|
+
2. Extract key info for context.json
|
|
236
|
+
|
|
237
|
+
**For GraphQL (Import option):**
|
|
238
|
+
1. Copy schema to `api-reference/schema.graphql`
|
|
239
|
+
2. Validate the schema
|
|
240
|
+
3. Extract types/queries/mutations for context
|
|
241
|
+
|
|
242
|
+
**For GraphQL (Reference option):**
|
|
243
|
+
1. Note the relative path for docs.json
|
|
244
|
+
2. Extract schema info for context
|
|
245
|
+
|
|
246
|
+
### Step 4: Update docs.json with API Reference
|
|
247
|
+
|
|
248
|
+
**Read existing `docs.json` or create new one.**
|
|
249
|
+
|
|
250
|
+
Add the `docType` field and API reference tab:
|
|
251
|
+
|
|
252
|
+
**For OpenAPI:**
|
|
253
|
+
```json
|
|
254
|
+
{
|
|
255
|
+
"name": "Project Name",
|
|
256
|
+
"docType": "api",
|
|
257
|
+
"navigation": {
|
|
258
|
+
"tabs": [
|
|
259
|
+
{
|
|
260
|
+
"tab": "Guides",
|
|
261
|
+
"groups": [...]
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"tab": "API Reference",
|
|
265
|
+
"type": "openapi",
|
|
266
|
+
"spec": "api-reference/openapi.json"
|
|
267
|
+
}
|
|
268
|
+
]
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**For GraphQL:**
|
|
274
|
+
```json
|
|
275
|
+
{
|
|
276
|
+
"name": "Project Name",
|
|
277
|
+
"docType": "api",
|
|
278
|
+
"navigation": {
|
|
279
|
+
"tabs": [
|
|
280
|
+
{
|
|
281
|
+
"tab": "Guides",
|
|
282
|
+
"groups": [...]
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"tab": "GraphQL API",
|
|
286
|
+
"type": "graphql",
|
|
287
|
+
"schema": "api-reference/schema.graphql",
|
|
288
|
+
"endpoint": "https://api.example.com/graphql"
|
|
289
|
+
}
|
|
290
|
+
]
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
**For Both:**
|
|
296
|
+
```json
|
|
297
|
+
{
|
|
298
|
+
"navigation": {
|
|
299
|
+
"tabs": [
|
|
300
|
+
{ "tab": "Guides", "groups": [...] },
|
|
301
|
+
{ "tab": "REST API", "type": "openapi", "spec": "api-reference/openapi.json" },
|
|
302
|
+
{ "tab": "GraphQL API", "type": "graphql", "schema": "api-reference/schema.graphql" }
|
|
303
|
+
]
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
Tell user: "Configured API Reference with {spec_type} from {path}"
|
|
309
|
+
|
|
310
|
+
### Step 5: Generate Documentation
|
|
311
|
+
|
|
312
|
+
**Read context from `.devdoc/context.json` before generating.**
|
|
313
|
+
|
|
314
|
+
**Read the appropriate template** from `.devdoc/templates/` for each page type:
|
|
315
|
+
- For guides: read `.devdoc/templates/guide.md`
|
|
316
|
+
- For API reference: read `.devdoc/templates/api-reference.md`
|
|
317
|
+
- For quickstart: read `.devdoc/templates/quickstart.md`
|
|
318
|
+
- For tutorials: read `.devdoc/templates/tutorial.md`
|
|
319
|
+
|
|
320
|
+
**Apply context throughout:**
|
|
321
|
+
- Use correct product name from `product.name`
|
|
322
|
+
- Use terminology from `terminology.glossary`
|
|
323
|
+
- Avoid terms from `terminology.avoidTerms`
|
|
324
|
+
- Use code language from `documentation.codeExamples.primaryLanguage`
|
|
325
|
+
- Match voice from `documentation.voice`
|
|
326
|
+
- Reference API spec path from `api.specPath`
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## docType: "internal"
|
|
331
|
+
|
|
332
|
+
For internal team documentation, create:
|
|
27
333
|
|
|
28
334
|
```
|
|
29
335
|
docs/
|
|
30
|
-
├──
|
|
31
|
-
├──
|
|
32
|
-
|
|
33
|
-
├──
|
|
34
|
-
├──
|
|
336
|
+
├── .devdoc/
|
|
337
|
+
│ ├── context.json
|
|
338
|
+
│ └── templates/
|
|
339
|
+
├── docs.json
|
|
340
|
+
├── index.mdx # Project overview
|
|
341
|
+
├── getting-started/
|
|
342
|
+
│ ├── setup.mdx # Dev environment setup
|
|
343
|
+
│ ├── prerequisites.mdx # Required tools/versions
|
|
344
|
+
│ └── first-contribution.mdx
|
|
345
|
+
├── architecture/
|
|
346
|
+
│ ├── overview.mdx # System architecture
|
|
347
|
+
│ ├── folder-structure.mdx
|
|
348
|
+
│ └── decisions.mdx # ADRs, design decisions
|
|
349
|
+
├── development/
|
|
350
|
+
│ ├── workflow.mdx # Git workflow, PR process
|
|
351
|
+
│ ├── testing.mdx # How to run/write tests
|
|
352
|
+
│ ├── debugging.mdx # Common issues, debugging tips
|
|
353
|
+
│ └── deployment.mdx # How to deploy
|
|
354
|
+
├── api/ # Internal API docs (if applicable)
|
|
355
|
+
│ └── ...
|
|
356
|
+
└── contributing.mdx # Contribution guidelines
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
**Content focus:**
|
|
360
|
+
- How to set up local development
|
|
361
|
+
- Codebase architecture and patterns
|
|
362
|
+
- Internal APIs and services
|
|
363
|
+
- Debugging and troubleshooting
|
|
364
|
+
- Team conventions and standards
|
|
365
|
+
|
|
366
|
+
**Voice:** Technical, direct, assumes familiarity with codebase
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
## docType: "api"
|
|
371
|
+
|
|
372
|
+
For external developers using your API/SDK, create:
|
|
373
|
+
|
|
374
|
+
```
|
|
375
|
+
docs/
|
|
376
|
+
├── .devdoc/
|
|
377
|
+
│ ├── context.json
|
|
378
|
+
│ └── templates/
|
|
379
|
+
├── docs.json
|
|
380
|
+
├── index.mdx # Product intro, value prop
|
|
381
|
+
├── quickstart.mdx # 5-minute getting started
|
|
382
|
+
├── authentication.mdx # Auth setup (API keys, OAuth)
|
|
35
383
|
├── guides/
|
|
36
|
-
│ ├── overview.mdx #
|
|
37
|
-
│ └── {
|
|
384
|
+
│ ├── overview.mdx # Concepts overview
|
|
385
|
+
│ └── {use-case}.mdx # Common use case tutorials
|
|
38
386
|
├── api-reference/
|
|
39
|
-
│ ├── introduction.mdx # API overview
|
|
40
|
-
│ ├── authentication.mdx # Auth
|
|
41
|
-
│
|
|
42
|
-
├──
|
|
43
|
-
│ └──
|
|
44
|
-
|
|
387
|
+
│ ├── introduction.mdx # API overview, base URL, versioning
|
|
388
|
+
│ ├── authentication.mdx # Auth details
|
|
389
|
+
│ ├── errors.mdx # Error codes and handling
|
|
390
|
+
│ ├── openapi.json # Full API spec (if imported)
|
|
391
|
+
│ └── schema.graphql # GraphQL schema (if imported)
|
|
392
|
+
├── sdks/ # If SDKs exist
|
|
393
|
+
│ ├── javascript.mdx
|
|
394
|
+
│ ├── python.mdx
|
|
395
|
+
│ └── ...
|
|
396
|
+
├── webhooks.mdx # If webhooks exist
|
|
397
|
+
└── changelog.mdx # API changelog
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
**Content focus:**
|
|
401
|
+
- Quick time-to-first-API-call
|
|
402
|
+
- Authentication and authorization
|
|
403
|
+
- API reference with examples
|
|
404
|
+
- SDKs and client libraries
|
|
405
|
+
- Error handling and troubleshooting
|
|
406
|
+
- Rate limits and best practices
|
|
407
|
+
|
|
408
|
+
**Voice:** Professional, helpful, code-focused
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## docType: "product"
|
|
413
|
+
|
|
414
|
+
For end users of your product, create:
|
|
415
|
+
|
|
45
416
|
```
|
|
417
|
+
docs/
|
|
418
|
+
├── .devdoc/
|
|
419
|
+
│ ├── context.json
|
|
420
|
+
│ └── templates/
|
|
421
|
+
├── docs.json
|
|
422
|
+
├── index.mdx # Product overview
|
|
423
|
+
├── getting-started/
|
|
424
|
+
│ ├── quickstart.mdx # First steps
|
|
425
|
+
│ ├── account-setup.mdx # Account creation, onboarding
|
|
426
|
+
│ └── key-concepts.mdx # Core concepts explained
|
|
427
|
+
├── features/
|
|
428
|
+
│ ├── {feature-1}.mdx # Feature guides
|
|
429
|
+
│ ├── {feature-2}.mdx
|
|
430
|
+
│ └── ...
|
|
431
|
+
├── tutorials/
|
|
432
|
+
│ ├── {workflow-1}.mdx # Step-by-step tutorials
|
|
433
|
+
│ └── ...
|
|
434
|
+
├── integrations/ # If integrations exist
|
|
435
|
+
│ └── ...
|
|
436
|
+
├── troubleshooting/
|
|
437
|
+
│ ├── common-issues.mdx
|
|
438
|
+
│ └── faq.mdx
|
|
439
|
+
└── release-notes.mdx # What's new
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
**Content focus:**
|
|
443
|
+
- Non-technical language (minimal code)
|
|
444
|
+
- Screenshots and visual guides
|
|
445
|
+
- Step-by-step tutorials
|
|
446
|
+
- Use case focused
|
|
447
|
+
- FAQs and troubleshooting
|
|
448
|
+
- Feature explanations
|
|
46
449
|
|
|
47
|
-
|
|
450
|
+
**Voice:** Friendly, supportive, non-technical
|
|
48
451
|
|
|
49
|
-
|
|
50
|
-
1. Frontmatter with title and description
|
|
51
|
-
2. Clear introduction explaining the topic
|
|
52
|
-
3. Code examples extracted from source
|
|
53
|
-
4. Links to related documentation
|
|
452
|
+
---
|
|
54
453
|
|
|
55
|
-
|
|
454
|
+
## docs.json Templates (with docType)
|
|
56
455
|
|
|
57
|
-
|
|
456
|
+
### Internal Docs
|
|
58
457
|
```json
|
|
59
458
|
{
|
|
60
|
-
"name": "{Project Name
|
|
459
|
+
"name": "{Project Name}",
|
|
460
|
+
"docType": "internal",
|
|
461
|
+
"navigation": {
|
|
462
|
+
"tabs": [
|
|
463
|
+
{
|
|
464
|
+
"tab": "Documentation",
|
|
465
|
+
"groups": [
|
|
466
|
+
{ "group": "Getting Started", "pages": ["index", "getting-started/setup", "getting-started/prerequisites"] },
|
|
467
|
+
{ "group": "Architecture", "pages": ["architecture/overview", "architecture/folder-structure"] },
|
|
468
|
+
{ "group": "Development", "pages": ["development/workflow", "development/testing", "development/deployment"] },
|
|
469
|
+
{ "group": "Contributing", "pages": ["contributing"] }
|
|
470
|
+
]
|
|
471
|
+
}
|
|
472
|
+
]
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
### Customer API Docs (with OpenAPI)
|
|
478
|
+
```json
|
|
479
|
+
{
|
|
480
|
+
"name": "{Product Name}",
|
|
481
|
+
"docType": "api",
|
|
61
482
|
"navigation": {
|
|
62
483
|
"tabs": [
|
|
63
484
|
{
|
|
64
485
|
"tab": "Guides",
|
|
65
|
-
"type": "docs",
|
|
66
486
|
"groups": [
|
|
67
|
-
{
|
|
68
|
-
|
|
69
|
-
"pages": ["index", "quickstart", "installation"]
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"group": "Guides",
|
|
73
|
-
"pages": ["guides/overview"]
|
|
74
|
-
}
|
|
487
|
+
{ "group": "Getting Started", "pages": ["index", "quickstart", "authentication"] },
|
|
488
|
+
{ "group": "Guides", "pages": ["guides/overview"] }
|
|
75
489
|
]
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"tab": "API Reference",
|
|
493
|
+
"type": "openapi",
|
|
494
|
+
"spec": "api-reference/openapi.json"
|
|
76
495
|
}
|
|
77
496
|
]
|
|
78
497
|
}
|
|
79
498
|
}
|
|
80
499
|
```
|
|
81
500
|
|
|
82
|
-
|
|
501
|
+
### Customer API Docs (with GraphQL)
|
|
502
|
+
```json
|
|
503
|
+
{
|
|
504
|
+
"name": "{Product Name}",
|
|
505
|
+
"docType": "api",
|
|
506
|
+
"navigation": {
|
|
507
|
+
"tabs": [
|
|
508
|
+
{
|
|
509
|
+
"tab": "Guides",
|
|
510
|
+
"groups": [
|
|
511
|
+
{ "group": "Getting Started", "pages": ["index", "quickstart", "authentication"] },
|
|
512
|
+
{ "group": "Guides", "pages": ["guides/overview"] }
|
|
513
|
+
]
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
"tab": "GraphQL API",
|
|
517
|
+
"type": "graphql",
|
|
518
|
+
"schema": "api-reference/schema.graphql",
|
|
519
|
+
"endpoint": "https://api.example.com/graphql"
|
|
520
|
+
}
|
|
521
|
+
]
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
```
|
|
83
525
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
526
|
+
### Product Docs
|
|
527
|
+
```json
|
|
528
|
+
{
|
|
529
|
+
"name": "{Product Name}",
|
|
530
|
+
"docType": "product",
|
|
531
|
+
"navigation": {
|
|
532
|
+
"tabs": [
|
|
533
|
+
{
|
|
534
|
+
"tab": "Documentation",
|
|
535
|
+
"groups": [
|
|
536
|
+
{ "group": "Getting Started", "pages": ["index", "getting-started/quickstart", "getting-started/key-concepts"] },
|
|
537
|
+
{ "group": "Features", "pages": ["features/..."] },
|
|
538
|
+
{ "group": "Tutorials", "pages": ["tutorials/..."] },
|
|
539
|
+
{ "group": "Help", "pages": ["troubleshooting/common-issues", "troubleshooting/faq"] }
|
|
540
|
+
]
|
|
541
|
+
}
|
|
542
|
+
]
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
```
|
|
95
546
|
|
|
96
|
-
##
|
|
547
|
+
## Quality Guidelines
|
|
97
548
|
|
|
98
|
-
- Extract real code examples, don't fabricate
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
549
|
+
- Extract real code examples from source, don't fabricate
|
|
550
|
+
- Match tone to audience based on docType
|
|
551
|
+
- Add TODO markers for sections needing human review
|
|
552
|
+
- Include relevant screenshots for product docs
|
|
553
|
+
- Test all code examples work
|
|
554
|
+
- Always use terminology from context.json
|
|
555
|
+
- Update context.json if you learn new information
|
|
556
|
+
- **Import existing API specs** rather than creating manual docs
|
|
557
|
+
- **Validate specs** before importing
|