@open-agent-toolkit/cli 0.1.21 → 0.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/assets/docs/contributing/documentation.md +6 -2
  2. package/assets/docs/docs-tooling/add-docs-to-a-repo.md +24 -14
  3. package/assets/docs/docs-tooling/commands.md +16 -14
  4. package/assets/docs/docs-tooling/workflows.md +15 -8
  5. package/assets/docs/reference/docs-index-contract.md +28 -6
  6. package/assets/docs/reference/index.md +1 -1
  7. package/assets/docs/workflows/projects/implementation-execution.md +1 -1
  8. package/assets/docs/workflows/skills/index.md +3 -1
  9. package/assets/public-package-versions.json +4 -4
  10. package/assets/skills/authoring-docs/SKILL.md +135 -0
  11. package/assets/skills/authoring-docs/references/categories.md +251 -0
  12. package/assets/skills/authoring-docs/references/information-architecture.md +156 -0
  13. package/assets/skills/authoring-docs/references/page-types.md +119 -0
  14. package/assets/skills/authoring-docs/references/principles.md +98 -0
  15. package/assets/skills/authoring-docs/references/review-rubric.md +169 -0
  16. package/assets/skills/authoring-docs/references/templates.md +549 -0
  17. package/assets/skills/authoring-docs/references/workflow.md +133 -0
  18. package/assets/skills/authoring-docs/references/writing-style.md +128 -0
  19. package/assets/skills/oat-docs-analyze/SKILL.md +143 -18
  20. package/assets/skills/oat-docs-analyze/references/analysis-artifact-template.md +101 -1
  21. package/assets/skills/oat-docs-analyze/references/directory-assessment-criteria.md +16 -0
  22. package/assets/skills/oat-docs-analyze/references/quality-checklist.md +83 -3
  23. package/assets/skills/oat-docs-authoring/SKILL.md +193 -0
  24. package/assets/skills/oat-docs-authoring/references/docs-root-resolution.md +64 -0
  25. package/assets/skills/oat-docs-authoring/references/lifecycle-boundaries.md +51 -0
  26. package/assets/skills/oat-docs-authoring/references/oat-fumadocs-contract.md +77 -0
  27. package/assets/skills/oat-docs-authoring/references/targeted-authoring-workflow.md +61 -0
  28. package/assets/skills/oat-docs-authoring/references/validation.md +61 -0
  29. package/assets/skills/oat-docs-bootstrap/SKILL.md +15 -11
  30. package/assets/skills/oat-docs-bootstrap/assets/AGENTS.md.template +5 -5
  31. package/dist/commands/init/tools/shared/skill-manifest.d.ts +1 -1
  32. package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
  33. package/dist/commands/init/tools/shared/skill-manifest.js +2 -0
  34. package/package.json +2 -2
@@ -0,0 +1,133 @@
1
+ ---
2
+ title: Documentation Authoring Workflow
3
+ description: Evidence-first workflow for creating, migrating, or improving docs.
4
+ ---
5
+
6
+ # Documentation Authoring Workflow
7
+
8
+ The job is not to write plausible documentation. The job is to extract truth
9
+ from the repository, organize it, and make it usable.
10
+
11
+ ## 1. Classify the Project
12
+
13
+ Identify the primary project type before writing:
14
+
15
+ - frontend app
16
+ - backend service
17
+ - full-stack app
18
+ - API service
19
+ - CLI
20
+ - library, package, framework, or SDK
21
+ - infrastructure module
22
+ - worker or job processor
23
+ - event-driven system
24
+ - documentation-only repo
25
+ - mixed monorepo
26
+
27
+ Repos can have multiple types. Document the dominant reader path first, then
28
+ add category-specific coverage.
29
+
30
+ ## 2. Inventory Sources of Truth
31
+
32
+ Inspect likely evidence before editing.
33
+
34
+ For package-based projects, check package metadata, lockfiles, runtime version
35
+ files, build config, source entry points, scripts, tests, and CI.
36
+
37
+ For APIs, check route definitions, controllers, middleware, schema files,
38
+ OpenAPI, GraphQL, protobuf, tests, and generated clients.
39
+
40
+ For CLIs, check `bin` entries, command definitions, flag parsing,
41
+ configuration loading, environment variables, tests, and existing examples.
42
+
43
+ For services and infrastructure, check Docker files, compose files, workflows,
44
+ Terraform, Kubernetes, Helm, serverless or CDK configuration, deployment
45
+ manifests, monitor definitions, dashboards, and runbooks.
46
+
47
+ For existing docs, check README files, docs directories, contribution guides,
48
+ changelogs, ADRs, RFCs, and migration notes.
49
+
50
+ ## 3. Build a Docs Inventory
51
+
52
+ Create a lightweight inventory before making broad changes.
53
+
54
+ | Area | Exists? | Quality | Source of Truth | Action |
55
+ | ----------------- | ------: | ------------------ | ----------------------- | --------------- |
56
+ | Landing page | Yes/No | Good/Stale/Missing | README or docs index | Update/Create |
57
+ | Getting started | Yes/No | Good/Stale/Missing | scripts, README, tests | Update/Create |
58
+ | Local development | Yes/No | Good/Stale/Missing | package scripts, config | Update/Create |
59
+ | Testing | Yes/No | Good/Stale/Missing | package scripts, CI | Update/Create |
60
+ | Deployment | Yes/No | Good/Stale/Missing | CI, infra | Verify/Create |
61
+ | API reference | Yes/No | Good/Stale/Missing | schema/routes | Generate/Create |
62
+ | CLI reference | Yes/No | Good/Stale/Missing | CLI source | Generate/Create |
63
+ | Configuration | Yes/No | Good/Stale/Missing | env/config files | Create |
64
+ | Architecture | Yes/No | Good/Stale/Missing | source, infra | Create |
65
+ | Operations | Yes/No | Good/Stale/Missing | monitors, runbooks | Create |
66
+ | Troubleshooting | Yes/No | Good/Stale/Missing | issues, tests, logs | Create |
67
+
68
+ ## 4. Identify Reader Personas
69
+
70
+ Most docs serve one or more of these readers:
71
+
72
+ - new contributor
73
+ - maintainer
74
+ - service consumer
75
+ - CLI user
76
+ - API consumer
77
+ - operator on call
78
+ - reviewer
79
+ - product stakeholder
80
+ - support engineer
81
+ - AI agent making future changes
82
+
83
+ Write pages for actual tasks, not org-chart abstractions.
84
+
85
+ ## 5. Decide the Minimum Useful Set
86
+
87
+ Most repos need a landing page, getting started, local development, testing,
88
+ configuration reference, deployment or release docs if deployable, and
89
+ ownership.
90
+
91
+ Then add category-specific pages. APIs need auth, examples, endpoint or
92
+ operation reference, and error behavior. CLIs need command reference, config,
93
+ output, exit codes, and automation behavior. Production systems need
94
+ observability, runbooks, rollback, and failure modes.
95
+
96
+ ## 6. Preserve Existing Intent
97
+
98
+ Do not blindly replace existing docs. Existing pages often contain historical
99
+ context, production details, migration notes, local setup caveats, owner
100
+ knowledge, and important links. Extract useful facts, remove duplication, and
101
+ restructure around reader needs.
102
+
103
+ ## 7. Ground Every Claim
104
+
105
+ For each factual statement, ask where it came from. Good sources include source
106
+ code, schemas, package scripts, configuration files, CI workflows, deployment
107
+ manifests, tests, generated types, and current docs that still match behavior.
108
+
109
+ Weak sources include stale comments, guessed conventions, issue titles without
110
+ details, inferred ownership, and copied docs from a similar repo. Mark weak but
111
+ useful facts as needing verification.
112
+
113
+ ## 8. Write in Layers
114
+
115
+ For each topic, prefer this order:
116
+
117
+ 1. Purpose
118
+ 2. Common path
119
+ 3. Example
120
+ 4. Verification
121
+ 5. Edge cases
122
+ 6. Troubleshooting
123
+ 7. Related reference
124
+ 8. Deeper explanation
125
+
126
+ This keeps pages useful under time pressure.
127
+
128
+ ## 9. Verify and Handoff
129
+
130
+ Run relevant checks when available: docs build, link check, formatter,
131
+ generated-reference command, examples, tests, or local preview. Handoff with
132
+ files changed, evidence inspected, verification results, unresolved facts, and
133
+ recommended next improvements.
@@ -0,0 +1,128 @@
1
+ ---
2
+ title: Writing Style
3
+ description: Style rules for clear, direct, maintainable technical documentation.
4
+ ---
5
+
6
+ # Writing Style
7
+
8
+ Technical documentation should be plain, specific, and useful under pressure.
9
+ The reader should not have to decode tone, chase implied context, or guess
10
+ whether a statement is current.
11
+
12
+ ## Voice
13
+
14
+ Use a direct, practical voice.
15
+
16
+ Prefer:
17
+
18
+ ```md
19
+ Run the tests before opening a pull request.
20
+ ```
21
+
22
+ Avoid:
23
+
24
+ ```md
25
+ It is recommended that tests are run prior to the opening of a pull request.
26
+ ```
27
+
28
+ ## Active Voice and Specific Nouns
29
+
30
+ Active voice makes responsibility clear. Specific nouns make actions
31
+ verifiable.
32
+
33
+ Weak:
34
+
35
+ ```md
36
+ The cache is invalidated after the migration is run.
37
+ ```
38
+
39
+ Stronger:
40
+
41
+ ```md
42
+ The deploy workflow invalidates the Fastly cache after the migration finishes.
43
+ ```
44
+
45
+ ## Avoid False Ease
46
+
47
+ Avoid words that make complex tasks sound trivial:
48
+
49
+ - just
50
+ - simply
51
+ - obviously
52
+ - easy
53
+ - basically
54
+
55
+ Replace hidden assumptions with exact steps, commands, or links.
56
+
57
+ ## Avoid Tribal Knowledge
58
+
59
+ Do not write "use the usual process" or "deploy normally." Name the workflow,
60
+ environment, command, approval requirement, and verification path when known.
61
+
62
+ ## Define Acronyms on First Use
63
+
64
+ Define acronyms the first time they appear. If an acronym is used only once,
65
+ avoid introducing it.
66
+
67
+ ## Prefer Present Tense
68
+
69
+ Use future tense only for future behavior that is planned and dated. Avoid
70
+ stale words such as `new`, `soon`, `currently`, `temporary`, `eventually`, and
71
+ `recent` without a date or issue link.
72
+
73
+ ## Use Concrete Examples
74
+
75
+ Show copyable examples with expected output when possible. Expected output helps
76
+ humans verify success and helps agents reason about command behavior.
77
+
78
+ ## Warn Only for Real Risk
79
+
80
+ Use warnings for production impact, destructive operations, security concerns,
81
+ and irreversible behavior.
82
+
83
+ ```md
84
+ > [!WARNING]
85
+ > This command deletes all pending jobs in the queue. Run it only during an
86
+ > active incident after confirming the queue contents.
87
+ ```
88
+
89
+ Use notes for useful context, not ordinary tips.
90
+
91
+ ## Markdown Rules
92
+
93
+ - Use one `#` heading per page.
94
+ - Do not skip heading levels.
95
+ - Use fenced code blocks with language identifiers.
96
+ - Use `sh` for shell commands.
97
+ - Use `txt` for command output.
98
+ - Do not include shell prompts unless the prompt itself matters.
99
+ - Use angle brackets for placeholders, such as `<environment>`.
100
+ - Explain every placeholder.
101
+ - Use descriptive link text.
102
+ - Use tables for reference data, not long prose.
103
+
104
+ ## Headings Should Be Descriptive
105
+
106
+ Weak headings:
107
+
108
+ ```md
109
+ ## Stuff
110
+
111
+ ## More
112
+
113
+ ## Notes
114
+
115
+ ## Misc
116
+ ```
117
+
118
+ Stronger headings:
119
+
120
+ ```md
121
+ ## Configure environment variables
122
+
123
+ ## Run database migrations
124
+
125
+ ## Verify the deployment
126
+
127
+ ## Roll back a failed deploy
128
+ ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-docs-analyze
3
- version: 1.3.0
3
+ version: 1.4.0
4
4
  description: Run when you need to evaluate documentation structure, navigation, and coverage against the OAT docs app contract. Produces a severity-rated analysis artifact for oat-docs-apply.
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
@@ -13,7 +13,8 @@ Scan a repository's documentation surface, evaluate it against the OAT docs cont
13
13
 
14
14
  ## Prerequisites
15
15
 
16
- - Git repository with either an MkDocs app, a `docs/` tree, or root-level Markdown docs.
16
+ - Git repository with either an OAT/Fumadocs docs app, an MkDocs app, a
17
+ `docs/` tree, or root-level Markdown docs.
17
18
  - `jq` available in PATH for tracking updates.
18
19
 
19
20
  ## Mode Assertion
@@ -50,6 +51,9 @@ If you catch yourself:
50
51
 
51
52
  - Editing docs content directly -> STOP and move that recommendation to the artifact.
52
53
  - Rewriting navigation while analyzing -> STOP and record the required fix instead.
54
+ - Hand-editing or regenerating generated root indexes -> STOP and record a
55
+ generated-artifact finding with the exact evidence that proves freshness or
56
+ source-contract drift.
53
57
 
54
58
  **Recovery:**
55
59
 
@@ -73,7 +77,7 @@ When executing this skill, provide lightweight progress feedback so the user can
73
77
  - `[4/10] Assessing quality + coverage…`
74
78
  - `[5/10] Verifying substantive claims…`
75
79
  - `[6/10] Finding content opportunities…`
76
- - `[7/10] Checking nav and drift…`
80
+ - `[7/10] Checking generated indexes, nav and drift…`
77
81
  - `[8/10] Writing analysis artifact…`
78
82
  - `[9/10] Reviewing artifact accuracy…`
79
83
  - `[10/10] Updating verified tracking + summary…`
@@ -82,14 +86,27 @@ When executing this skill, provide lightweight progress feedback so the user can
82
86
 
83
87
  ### Step 0: Resolve Docs Target and Analysis Mode
84
88
 
85
- Determine the documentation root using the first matching surface:
86
-
87
- 1. `apps/*/mkdocs.yml`
88
- 2. `mkdocs.yml` at repo root
89
- 3. `docs/`
90
- 4. Root-level Markdown docs (`README.md`, `CONTRIBUTING.md`, etc.) when no docs app exists
91
-
92
- Prefer the OAT docs app when multiple MkDocs apps exist and one is clearly the active repo docs surface.
89
+ Determine the documentation root using explicit docs-app evidence before generic
90
+ repo fallbacks:
91
+
92
+ 1. `.oat/config.json` `documentation.root` / `documentation.tooling`.
93
+ - When `documentation.tooling` is `fumadocs`, record the surface type as
94
+ `oat-fumadocs-app`.
95
+ - Treat `documentation.root` as the docs app root. Resolve the authored docs
96
+ source root and generated index path from `documentation.index`, app config,
97
+ package scripts, generator scripts, or local guidance.
98
+ 2. OAT/Fumadocs app candidates under `apps/*`, before root `docs/` fallback:
99
+ - `apps/*/source.config.*`
100
+ - `apps/*/next.config.*` with `apps/*/docs`
101
+ - `apps/*/docs` plus docs-app package scripts or local guidance evidence
102
+ 3. `apps/*/mkdocs.yml`
103
+ 4. `mkdocs.yml` at repo root
104
+ 5. generic root `docs/`
105
+ 6. Root-level Markdown docs (`README.md`, `CONTRIBUTING.md`, etc.) when no docs app exists
106
+
107
+ Do not select generic root `docs/` or root Markdown docs while `.oat/config.json`
108
+ or `apps/*` Fumadocs evidence identifies an active OAT/Fumadocs docs app. Prefer
109
+ the app declared in `.oat/config.json` when multiple app candidates exist.
93
110
 
94
111
  Resolve tracking and analysis mode using the shared helper:
95
112
 
@@ -109,6 +126,8 @@ Build a complete inventory of:
109
126
  - All directories containing Markdown files
110
127
  - All `index.md` files
111
128
  - Any `overview.md` files
129
+ - Generated root indexes or manifests, including warning banners such as "do not edit"
130
+ - Local guidance that identifies generated index paths or regeneration commands
112
131
  - `mkdocs.yml` nav entries when present
113
132
 
114
133
  Record the docs surface type:
@@ -116,11 +135,16 @@ Record the docs surface type:
116
135
  - `mkdocs-app`
117
136
  - `docs-tree`
118
137
  - `root-markdown`
138
+ - `oat-fumadocs-app`
119
139
 
120
140
  Capture the evidence sources that will justify later findings and recommendations. Prefer:
121
141
 
122
142
  - `mkdocs.yml` and generated nav structure
143
+ - `.oat/config.json`, package scripts, generator scripts, and local `AGENTS.md`
144
+ files that identify authored docs roots or generated root indexes
123
145
  - `docs/contributing.md`, contributor guides, and setup docs
146
+ - docs-app `AGENTS.md`, contributing pages, or authoring guides that tell
147
+ agents how to edit, analyze, apply, and validate docs
124
148
  - `package.json` scripts, `requirements.txt`, and docs bootstrap scripts
125
149
  - existing `index.md` trees and repeated directory patterns
126
150
  - exact missing or stale paths, commands, and page references
@@ -128,6 +152,21 @@ Capture the evidence sources that will justify later findings and recommendation
128
152
  Do **not** infer docs structure conventions from a tiny sample of pages when the broader
129
153
  tree or config disagrees.
130
154
 
155
+ For OAT/Fumadocs docs apps, check whether local guidance covers:
156
+
157
+ - authored docs source location
158
+ - generated root indexes or manifests and their no-hand-edit boundary
159
+ - every content directory needing `index.md`
160
+ - useful `## Contents` maps
161
+ - `.md`-suffixed relative links, including `subdir/index.md`
162
+ - `.md` as the default format and `.mdx` only for JSX/component needs
163
+ - read-only audit routing to `oat-docs-analyze`
164
+ - approved bulk edits routing to `oat-docs-apply`
165
+ - generated artifact regeneration or freshness checks after source docs changes
166
+
167
+ Flag stale local guidance that references older aliases without mapping them to
168
+ the current analyze/apply flow.
169
+
131
170
  ### Step 2: Evaluate the `index.md` Contract
132
171
 
133
172
  Use `references/quality-checklist.md` and `references/directory-assessment-criteria.md`.
@@ -136,9 +175,41 @@ For every documentation directory:
136
175
 
137
176
  1. Verify `index.md` exists.
138
177
  2. Verify `index.md` includes a `## Contents` section.
139
- 3. Verify the `## Contents` section maps sibling pages and immediate child directories.
140
- 4. Flag `overview.md` usage as a migration finding.
141
- 5. Verify single-file directories still expose an `index.md` entrypoint.
178
+ 3. Flag placeholder-only `## Contents` sections, including comments, generic
179
+ "add links here" copy, or empty lists.
180
+ 4. Verify the `## Contents` section maps sibling pages and immediate child directories.
181
+ 5. Verify parent `## Contents` maps include child directories that contain docs.
182
+ 6. Flag `overview.md` usage as a migration finding.
183
+ 7. Flag unexpected `.mdx` for plain content unless JSX/components or local
184
+ guidance justify it.
185
+ 8. Verify single-file directories still expose a useful `index.md` entrypoint
186
+ or local section map.
187
+ 9. Exempt asset-only directories that contain no Markdown content and are not
188
+ linked as navigable docs sections.
189
+
190
+ For OAT/Fumadocs docs apps, also distinguish authored source maps from generated
191
+ root indexes:
192
+
193
+ 1. Resolve the authored docs source root and generated root index path from
194
+ `.oat/config.json`, package scripts, generator scripts, or local guidance.
195
+ 2. Confirm the generated root index exists when local configuration says it is
196
+ produced, and record whether it appears tracked, ignored, or local-only.
197
+ 3. Confirm generated warning banners are present when the repo's generator emits
198
+ them or local guidance requires them.
199
+ 4. Compare generated entries against the authored `## Contents` graph.
200
+ 5. Flag stale generated entries that point to deleted or moved docs paths.
201
+ 6. Flag missing generated entries for authored pages or child directories that
202
+ are reachable from source `## Contents` maps.
203
+ 7. Flag generated entries that are not reachable from any authored parent
204
+ `## Contents` map unless local generator semantics explicitly explain them.
205
+ 8. Classify ordering drift separately from missing or stale entries.
206
+ 9. If source maps and generated output disagree but generator behavior is not
207
+ documented well enough to judge, classify the finding as unclear generator
208
+ semantics instead of guessing.
209
+
210
+ Generated index checks are read-only. Recommend regeneration, source-map fixes,
211
+ or tool investigation in the analysis artifact; do not hand-edit generated
212
+ files from this skill.
142
213
 
143
214
  ### Step 3: Assess Quality and Coverage
144
215
 
@@ -165,13 +236,28 @@ Evidence standard:
165
236
  For each evaluated page or directory:
166
237
 
167
238
  1. Read the docs file plus the local evidence needed to validate its claims.
168
- 2. Record findings with severity, exact source refs, and confidence.
169
- 3. Decide a disclosure mode for each recommendation:
239
+ 2. Resolve every local relative Markdown link from the page where it appears.
240
+ Flag broken targets. In OAT/Fumadocs docs apps, flag extensionless local
241
+ Markdown links and prefer `.md`-suffixed targets, including
242
+ `subdir/index.md`.
243
+ 3. Accept anchors on `.md` links, such as `page.md#section`, and do not flag
244
+ anchors-only, external URLs, `mailto:` links, image/asset links, or link
245
+ syntax intentionally shown inside inline code, fenced examples, or template
246
+ snippets.
247
+ 4. Check Markdown hygiene: opening code fences need language identifiers; shell
248
+ examples should follow local fence conventions, defaulting to `sh` unless
249
+ local guidance uses `bash` or the block needs Bash-only syntax.
250
+ 5. Flag empty headings, multiple document-level H1s outside intentional imported
251
+ README contexts, overlong frontmatter descriptions when local guidance
252
+ defines a limit, ellipsis-truncated descriptions, and README-copy metadata
253
+ signals that make search/navigation output look stale.
254
+ 6. Record findings with severity, exact source refs, and confidence.
255
+ 7. Decide a disclosure mode for each recommendation:
170
256
  - `inline`
171
257
  - `link_only`
172
258
  - `omit`
173
259
  - `ask_user`
174
- 4. Record canonical link targets whenever a `link_only` recommendation is used.
260
+ 8. Record canonical link targets whenever a `link_only` recommendation is used.
175
261
 
176
262
  In `delta` mode, always evaluate changed docs files plus the nearest parent `index.md` pages.
177
263
  In `full` mode, evaluate the whole docs surface.
@@ -227,9 +313,32 @@ sources only. Prefer:
227
313
  - `app/services/`, `src/services/`, or equivalent business-logic modules
228
314
  - the main application entrypoint and route registration files
229
315
  - key models, schemas, and config surfaces that define user-facing behavior
316
+ - command definitions, CLI parsers, flag schemas, and command tests
317
+ - deployment, release, monitoring, runbook, rollback, and support/escalation
318
+ files that define operational behavior
230
319
 
231
320
  Do not speculate about future roadmap items or undocumented external integrations.
232
321
 
322
+ Classify coverage by the surfaces proven in the repo:
323
+
324
+ - For app/service docs, check purpose, audience, local setup, testing,
325
+ configuration, deployment/release, observability, runbooks, rollback,
326
+ ownership, support/escalation, troubleshooting, and common failure modes.
327
+ - For API docs, check whether broad API surfaces have navigable
328
+ contract-grade reference pages with routes/endpoints, request/response
329
+ shapes, authentication, error modes, examples, and versioning where those
330
+ concepts exist in repo sources.
331
+ - For CLI docs, check command groups, flags, output modes, destructive
332
+ behavior, dry-run/force options, scripting contracts, exit-code behavior when
333
+ sourced, and examples for common workflows.
334
+ - For operations docs, flag "Future Topics" placeholders, empty runbook
335
+ outlines, unsupported deploy/monitoring claims, and missing owner-reviewed
336
+ gaps for unverifiable operations knowledge.
337
+
338
+ When a claim affects ownership, support, deployment, observability, rollback, or
339
+ external integration behavior and repo evidence cannot verify it, mark it as an
340
+ owner-review gap rather than guessing.
341
+
233
342
  For each significant feature or API capability found in the codebase:
234
343
 
235
344
  1. Capture the capability area and the evidence that proves it exists.
@@ -261,6 +370,19 @@ where the docs should live, and what specific subtopics the codebase shows shoul
261
370
 
262
371
  ### Step 6: Check Navigation and Drift
263
372
 
373
+ If a generated root index or manifest exists:
374
+
375
+ 1. Compare generated entries with the authored `## Contents` graph.
376
+ 2. Flag generated output that is missing, ignored/local-only when local guidance
377
+ expects a tracked artifact, stale, ordered differently from authored maps, or
378
+ unclear because generator semantics are undocumented.
379
+ 3. Flag generated entries that are not reachable from authored maps as either
380
+ authored-source contract drift or generator-semantics uncertainty, depending
381
+ on the evidence.
382
+ 4. Cite exact generated paths, authored source paths, package scripts, config
383
+ files, and representative links for each finding.
384
+ 5. Prefer source-of-truth fixes over generated-file edits.
385
+
264
386
  If `mkdocs.yml` exists:
265
387
 
266
388
  1. Compare nav entries with the docs tree.
@@ -295,6 +417,9 @@ Populate the artifact with:
295
417
  - Inventory summary
296
418
  - Severity-rated findings
297
419
  - Directory coverage and contract gaps
420
+ - Generated index and authored local-map findings
421
+ - Authored link, `## Contents`, and Markdown hygiene findings
422
+ - Local docs-app guidance gaps
298
423
  - Accuracy verification verdicts for repo-checkable claims
299
424
  - Content opportunities for missing or thin docs coverage
300
425
  - Navigation/drift findings
@@ -355,7 +480,7 @@ Output a summary:
355
480
  Analysis complete.
356
481
 
357
482
  Docs target: {path}
358
- Surface type: {mkdocs-app|docs-tree|root-markdown}
483
+ Surface type: {mkdocs-app|oat-fumadocs-app|docs-tree|root-markdown}
359
484
  Files evaluated: {N}
360
485
  Mode: {full|delta}
361
486
 
@@ -12,7 +12,7 @@ oat_analysis_commit: { commitHash }
12
12
  **Date:** {YYYY-MM-DD}
13
13
  **Mode:** {full|delta}
14
14
  **Docs Target:** `{docs-target-path}`
15
- **Surface Type:** {mkdocs-app|docs-tree|root-markdown}
15
+ **Surface Type:** {mkdocs-app|oat-fumadocs-app|docs-tree|root-markdown}
16
16
  **Commit:** {short-hash}
17
17
 
18
18
  ## Summary
@@ -26,6 +26,11 @@ oat_analysis_commit: { commitHash }
26
26
  - **Open questions / ask-user items:** {N}
27
27
  - **Contradicted claims:** {N}
28
28
  - **Coverage gaps / content opportunities:** {N}
29
+ - **Generated index findings:** {N}
30
+ - **Broken or extensionless local docs links:** {N}
31
+ - **Markdown hygiene findings:** {N}
32
+ - **Local guidance gaps:** {N}
33
+ - **Owner-review gaps:** {N}
29
34
 
30
35
  ## Docs Inventory
31
36
 
@@ -108,6 +113,81 @@ None | {numbered list}
108
113
 
109
114
  {Or: "No directory contract gaps identified."}
110
115
 
116
+ ## Generated Index and Local Map Findings
117
+
118
+ Use this section for OAT/Fumadocs docs apps or any docs surface with generated
119
+ root indexes, generated manifests, `meta.json`, or comparable derived navigation
120
+ files. Treat authored `docs/**/index.md` `## Contents` maps as source unless
121
+ local configuration or guidance proves a different source of truth.
122
+
123
+ | # | Classification | Generated Artifact | Authored Source Evidence | Issue | Severity | Recommended Fix |
124
+ | --- | -------------------------------- | ------------------------ | ------------------------------- | ----------------------------- | -------- | --------------------------------------- |
125
+ | 1 | {missing output} | `{index.md or manifest}` | `{config/script/guidance refs}` | Generated output is absent | Medium | Run or document the generation workflow |
126
+ | 2 | {ignored/local output} | `{index.md or manifest}` | `{gitignore/config refs}` | Local generated file is stale | Medium | Regenerate locally or clarify lifecycle |
127
+ | 3 | {stale output} | `{index.md or manifest}` | `{docs/**/index.md refs}` | Deleted path still appears | High | Regenerate derived output |
128
+ | 4 | {authored-source contract drift} | `{index.md or manifest}` | `{parent index.md refs}` | Source map omits child docs | Medium | Fix authored `## Contents` map |
129
+ | 5 | {unclear generator semantics} | `{index.md or manifest}` | `{generator/config refs}` | Ordering or inclusion unclear | Low | Document or investigate semantics |
130
+
131
+ {Or: "No generated index or local-map findings identified."}
132
+
133
+ For every generated-index finding:
134
+
135
+ - Cite exact generated artifact paths and authored source-map paths.
136
+ - Distinguish missing entries, stale entries, ordering drift, unreachable
137
+ generated entries, and unclear generator behavior.
138
+ - State whether generated warning banners are present, absent, or not expected.
139
+ - Do not recommend hand-editing generated artifacts; recommend source-map fixes,
140
+ regeneration, local guidance updates, or generator investigation.
141
+
142
+ ## Authored Links, Contents, and Markdown Hygiene
143
+
144
+ Use this section for local Markdown links, `## Contents` quality, page-extension
145
+ conventions, and Markdown syntax issues that affect rendering, navigation, or
146
+ search quality.
147
+
148
+ | # | Category | File Ref | Issue | Evidence | Severity | Recommended Fix |
149
+ | --- | -------------------------- | ----------------- | ----------------------------------------------- | ------------------------------------ | -------- | --------------------------------------- |
150
+ | 1 | {broken local link} | `{docs/path.md}` | Target does not exist | `{source line and target path}` | High | Update or remove the link |
151
+ | 2 | {extensionless local link} | `{docs/path.md}` | Link omits `.md` suffix | `{source line}` | Medium | Use `.md` or `subdir/index.md` |
152
+ | 3 | {placeholder Contents} | `{docs/index.md}` | `## Contents` is scaffold | `{source line}` | Medium | Replace with useful local map |
153
+ | 4 | {overview.md} | `{docs/topic/}` | Legacy entrypoint remains | `{overview.md refs}` | Medium | Convert to `index.md` or topic page |
154
+ | 5 | {unexpected mdx} | `{docs/page.mdx}` | Plain content uses `.mdx` | `{page and local guidance}` | Medium | Convert to `.md` or document exception |
155
+ | 6 | {unlabeled code fence} | `{docs/path.md}` | Code fence has no language | `{source line}` | Low | Add a language identifier |
156
+ | 7 | {shell fence drift} | `{docs/path.md}` | Shell fence convention drifts | `{source line and guidance}` | Low | Use the documented shell fence language |
157
+ | 8 | {heading hygiene} | `{docs/path.md}` | Empty heading or extra H1 | `{source line}` | Low | Fix heading hierarchy |
158
+ | 9 | {metadata hygiene} | `{docs/path.md}` | Description too long, truncated, or README-like | `{frontmatter refs and local limit}` | Low | Rewrite concise metadata |
159
+
160
+ {Or: "No authored link, Contents, or Markdown hygiene findings identified."}
161
+
162
+ False-positive guardrails:
163
+
164
+ - Ignore external URLs, anchors-only links, `mailto:` links, image links, and
165
+ asset/file links that are not docs pages.
166
+ - Accept anchors on `.md` links, such as `page.md#section`.
167
+ - Ignore link syntax shown inside inline code, fenced snippets, placeholder
168
+ templates, or intentional examples.
169
+ - Only enforce frontmatter description length limits when local guidance,
170
+ schemas, or generators define the limit.
171
+ - Do not flag multiple H1s in intentional imported README/generated contexts
172
+ unless local guidance says those files are authored docs.
173
+
174
+ ## Local Docs-App Guidance
175
+
176
+ Use this section when the repository has docs-app `AGENTS.md`, contributing
177
+ docs, authoring guides, generated-index docs, or legacy docs workflow guidance.
178
+
179
+ | # | Guidance Area | Source Ref | Status | Evidence | Severity | Recommended Fix |
180
+ | --- | -------------------------- | ---------------------- | ----------------------------- | -------------- | -------- | ----------------------------------- |
181
+ | 1 | Authored docs source root | `{AGENTS.md or guide}` | {covered \| missing \| stale} | `{exact refs}` | Medium | Document the source root |
182
+ | 2 | Generated root index | `{AGENTS.md or guide}` | {covered \| missing \| stale} | `{exact refs}` | Medium | Explain derived output lifecycle |
183
+ | 3 | `index.md` / `## Contents` | `{AGENTS.md or guide}` | {covered \| missing \| stale} | `{exact refs}` | Medium | Add local map contract guidance |
184
+ | 4 | `.md` links | `{AGENTS.md or guide}` | {covered \| missing \| stale} | `{exact refs}` | Medium | Document `.md` relative links |
185
+ | 5 | `.md` vs `.mdx` | `{AGENTS.md or guide}` | {covered \| missing \| stale} | `{exact refs}` | Low | Explain when `.mdx` is allowed |
186
+ | 6 | Analyze/apply boundaries | `{AGENTS.md or guide}` | {covered \| missing \| stale} | `{exact refs}` | Medium | Route audits/apply work correctly |
187
+ | 7 | Freshness checks | `{AGENTS.md or guide}` | {covered \| missing \| stale} | `{exact refs}` | Medium | Add regeneration/freshness guidance |
188
+
189
+ {Or: "No local docs-app guidance gaps identified."}
190
+
111
191
  ## Accuracy Verification
112
192
 
113
193
  Check only claims that are verifiable from repo sources such as code, config, schemas,
@@ -122,6 +202,22 @@ runtime-only behavior here.
122
202
 
123
203
  {Or: "No repo-checkable substantive claims required accuracy verification."}
124
204
 
205
+ ## Coverage Review by Surface
206
+
207
+ Summarize which documentable surfaces were proven by repo evidence and how well
208
+ the docs cover them. Mark owner-review gaps instead of guessing when claims
209
+ depend on unsupported ownership, support, deployment, observability, rollback,
210
+ external integration, or production behavior.
211
+
212
+ | # | Surface | Repo Evidence | Docs Coverage State | Missing or Thin Areas | Owner Review Needed |
213
+ | --- | ----------- | ---------------------------------- | ---------------------------------------- | ---------------------------------------------------------- | ------------------- |
214
+ | 1 | App/service | `{entrypoint/service/config refs}` | {adequate \| thin \| no coverage \| N/A} | `{setup/testing/config/deploy/observability/runbook refs}` | {yes/no + reason} |
215
+ | 2 | API | `{router/schema refs}` | {adequate \| thin \| no coverage \| N/A} | `{contracts/auth/errors/examples/versioning}` | {yes/no + reason} |
216
+ | 3 | CLI | `{command/flag/test refs}` | {adequate \| thin \| no coverage \| N/A} | `{flags/output/dry-run/force/scripting/exit-codes}` | {yes/no + reason} |
217
+ | 4 | Operations | `{deploy/monitoring/runbook refs}` | {adequate \| thin \| no coverage \| N/A} | `{release/rollback/support/escalation/troubleshooting}` | {yes/no + reason} |
218
+
219
+ {Or: "No app/service, API, CLI, or operations surface required coverage review."}
220
+
125
221
  ## Content Opportunities
126
222
 
127
223
  Surface only repo-checkable coverage gaps based on routers, services, models, schemas,
@@ -180,6 +276,10 @@ canonical docs/config/examples.
180
276
 
181
277
  - `oat-docs-apply` may only implement recommendations backed by evidence in this artifact.
182
278
  - Findings based on contradicted claims must be resolved against cited repo sources before `oat-docs-apply` acts on them.
279
+ - Generated artifacts must not be hand-edited by `oat-docs-apply`. If a
280
+ generated-index finding requires output changes, apply should update authored
281
+ source maps or run the documented generator only after user approval and local
282
+ workflow confirmation.
183
283
  - Content opportunity recommendations require `oat-docs-apply` to read the cited router/service/model files before generating prose; it must not synthesize feature coverage from memory.
184
284
  - Recommendations marked `omit` must stay out of generated docs changes.
185
285
  - Recommendations marked `ask_user` require explicit user confirmation before generation.