@open-agent-toolkit/cli 0.3.12 → 0.3.13

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 (50) hide show
  1. package/assets/bundle-metadata.json +1 -1
  2. package/assets/docs/cli-utilities/configuration.md +1 -1
  3. package/assets/docs/cli-utilities/tool-packs.md +4 -1
  4. package/assets/docs/docs-tooling/add-docs-to-a-repo.md +80 -15
  5. package/assets/docs/docs-tooling/commands.md +74 -30
  6. package/assets/docs/docs-tooling/index.md +6 -6
  7. package/assets/docs/docs-tooling/workflows.md +26 -9
  8. package/assets/docs/provider-sync/commands.md +1 -1
  9. package/assets/docs/provider-sync/instruction-sync.md +11 -4
  10. package/assets/docs/reference/cli-reference.md +2 -2
  11. package/assets/docs/reference/docs-index-contract.md +19 -4
  12. package/assets/docs/reference/file-locations.md +3 -1
  13. package/assets/docs/reference/oat-directory-structure.md +23 -21
  14. package/assets/public-package-versions.json +4 -4
  15. package/assets/skills/oat-docs-analyze/SKILL.md +27 -7
  16. package/assets/skills/oat-docs-analyze/references/quality-checklist.md +16 -3
  17. package/assets/skills/oat-docs-apply/SKILL.md +20 -3
  18. package/assets/skills/oat-docs-authoring/SKILL.md +11 -7
  19. package/assets/skills/oat-docs-authoring/references/docs-root-resolution.md +12 -5
  20. package/assets/skills/oat-docs-authoring/references/lifecycle-boundaries.md +7 -7
  21. package/assets/skills/oat-docs-authoring/references/oat-fumadocs-contract.md +13 -3
  22. package/assets/skills/oat-docs-authoring/references/targeted-authoring-workflow.md +5 -4
  23. package/assets/skills/oat-docs-authoring/references/validation.md +11 -1
  24. package/assets/skills/oat-docs-bootstrap/SKILL.md +31 -8
  25. package/assets/skills/oat-docs-bootstrap/assets/AGENTS.md.template +2 -1
  26. package/assets/skills/oat-project-document/SKILL.md +21 -2
  27. package/assets/templates/docs-markdown/contributing.md +35 -0
  28. package/assets/templates/docs-markdown/index.md +18 -0
  29. package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
  30. package/dist/commands/docs/index-generate/index.js +41 -8
  31. package/dist/commands/docs/init/index.d.ts +17 -2
  32. package/dist/commands/docs/init/index.d.ts.map +1 -1
  33. package/dist/commands/docs/init/index.js +194 -14
  34. package/dist/commands/docs/init/markdown.d.ts +39 -0
  35. package/dist/commands/docs/init/markdown.d.ts.map +1 -0
  36. package/dist/commands/docs/init/markdown.js +317 -0
  37. package/dist/commands/docs/init/resolve-options.d.ts +3 -1
  38. package/dist/commands/docs/init/resolve-options.d.ts.map +1 -1
  39. package/dist/commands/docs/init/resolve-options.js +36 -0
  40. package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
  41. package/dist/commands/docs/init/scaffold.js +11 -0
  42. package/dist/commands/shared/agents-md.d.ts +7 -0
  43. package/dist/commands/shared/agents-md.d.ts.map +1 -1
  44. package/dist/commands/shared/agents-md.js +131 -91
  45. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  46. package/dist/commands/tools/shared/pack-manifest.js +1 -0
  47. package/dist/config/oat-config.d.ts +2 -1
  48. package/dist/config/oat-config.d.ts.map +1 -1
  49. package/dist/config/oat-config.js +4 -2
  50. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: Docs Index Contract
3
- description: 'Docs source contract: authored index.md maps, generated Fumadocs manifests and meta.json navigation, and MkDocs nav sync.'
3
+ description: 'Docs source contract: authored Markdown context/maps, optional external inventories, Fumadocs manifests and meta.json navigation, and MkDocs nav sync.'
4
4
  ---
5
5
 
6
6
  # Docs Index Contract
@@ -9,7 +9,8 @@ OAT docs navigation starts from authored `docs/**/index.md` files. Each `## Cont
9
9
 
10
10
  ## Rules
11
11
 
12
- - Every documentation directory must contain an `index.md`.
12
+ - Every non-excluded Markdown-bearing content directory must contain an authored `index.md`; asset-only directories are exempt.
13
+ - Preserve useful audience/scope context, ownership guidance, and existing local instructions. Authored pages need nonempty title/description metadata.
13
14
  - Every `index.md` must include a `## Contents` section.
14
15
  - The `## Contents` section is the machine-readable local map for sibling pages and child directories.
15
16
  - Every `## Contents` link should use a `.md`-suffixed relative target, including child directory links such as `subdir/index.md`.
@@ -35,6 +36,20 @@ Notes:
35
36
  - Leaf pages should link to their `.md` filename.
36
37
  - Prose outside `## Contents` is ignored by nav generation and remains freeform; it can explain scope, reader paths, or migration status.
37
38
 
39
+ ## Plain Markdown Ownership
40
+
41
+ Configured Markdown uses `documentation.root` literally, even with a child named
42
+ `docs`. The configured `<root>/index.md` is authored context plus a Contents map;
43
+ edit it directly. Bootstrap/adoption creates missing baseline files and root
44
+ guidance, but content gaps remain analyze/apply work. No app package, site build,
45
+ nav sync, default manifest, or docs-root AGENTS creation is required.
46
+
47
+ Optional inventories need explicit output outside the full configured content
48
+ tree, for example `oat docs generate-index --docs-dir docs --output .oat/docs-manifest.md`.
49
+ Default generation is refused, as is output to the authored index or any part of
50
+ the full root, even with narrowed source flags or symlink aliases. Generation
51
+ never repoints the configured authored index.
52
+
38
53
  ## Fumadocs Generation
39
54
 
40
55
  For this Fumadocs app, rendered page routing comes from the Fumadocs file/source pipeline over `apps/oat-docs/docs`, and the sidebar order comes from the committed `meta.json` files that `oat docs nav sync` writes (see [Fumadocs Nav Sync](#fumadocs-nav-sync)). The generated root manifest, `apps/oat-docs/index.md`, is an inventory for agents and tooling; it is not the rendered sidebar/page-tree source.
@@ -84,7 +99,7 @@ MkDocs generated behavior:
84
99
 
85
100
  ## Generated-file boundaries
86
101
 
87
- - Edit authored files under `docs/`, especially the nearest `index.md` and `## Contents`.
102
+ - Edit authored files under the resolved content root (`docs/` inside framework apps, or the literal configured Markdown root), especially the nearest `index.md` and `## Contents`.
88
103
  - Do not hand-edit a Fumadocs app-root generated `index.md`; regenerate it from the docs source tree.
89
104
  - Do not hand-maintain MkDocs `nav:` entries or Fumadocs `meta.json` `pages` lists when the local workflow uses `oat docs nav sync`.
90
105
  - If a Fumadocs generated manifest lists pages that are missing from authored `## Contents`, treat that as authored-source drift or intentional generator-inventory behavior to verify before relying on the generated file as navigation evidence.
@@ -94,7 +109,7 @@ MkDocs generated behavior:
94
109
  - Use `index.md` as the local discovery surface for humans and agents.
95
110
  - Add a short topic description next to each link so agents can choose the right file without opening every page.
96
111
  - Update `## Contents` whenever you add, remove, rename, or reorder docs files in a directory.
97
- - Regenerate the framework-specific artifacts after structural changes: `nav sync` for MkDocs `mkdocs.yml` and Fumadocs `meta.json` navigation, plus `generate-index` for Fumadocs root manifests.
112
+ - Markdown checks authored files/links, regenerating optional external manifests only when declared. Frameworks regenerate their artifacts after structural changes: `nav sync` for MkDocs `mkdocs.yml` and Fumadocs `meta.json` navigation, plus `generate-index` for Fumadocs root manifests.
98
113
  - Refresh or freshness-check the generated artifact before committing structural docs changes.
99
114
 
100
115
  ## If You Are Trying To...
@@ -174,7 +174,7 @@ Archive sync surfaces:
174
174
  - `packages/cli/src/commands/cleanup/project/`
175
175
  - `packages/cli/src/commands/cleanup/artifacts/`
176
176
  - `packages/cli/src/commands/docs/` — `oat docs` command family
177
- - `packages/cli/src/commands/docs/init/` — scaffold a docs app (Fumadocs or MkDocs)
177
+ - `packages/cli/src/commands/docs/init/` — bootstrap/adopt authored Markdown or scaffold a docs app (Fumadocs or MkDocs)
178
178
  - `packages/cli/src/commands/docs/migrate/` — convert MkDocs admonitions to GFM callouts
179
179
  - `packages/cli/src/commands/docs/index-generate/` — generate a docs index from markdown files
180
180
  - `packages/cli/src/commands/docs/nav/` — regenerate mkdocs.yml nav or Fumadocs meta.json from index.md sections
@@ -196,3 +196,5 @@ Archive sync surfaces:
196
196
 
197
197
  - `.oat/templates/docs-app-fuma/` — Fumadocs (Next.js) scaffold template
198
198
  - `.oat/templates/docs-app-mkdocs/` — MkDocs Material scaffold template
199
+
200
+ - `.oat/templates/docs-markdown/` — authored `index.md` and `contributing.md` baseline templates; installed by the docs pack, with no app or docs-root AGENTS template
@@ -48,16 +48,16 @@ Project scope is used for project workflows and repo-local sync state. User scop
48
48
 
49
49
  ## Top-level entries
50
50
 
51
- | Path | Purpose | Notes |
52
- | ------------------------ | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
53
- | `.oat/config.json` | Shared repo runtime config for non-sync settings | Includes `worktrees.root`, `projects.root`, `git.defaultBranch`, `archive.*`, `documentation.*`, `instructions.*`, and `pjm.remote.*` |
54
- | `.oat/config.local.json` | Local per-developer runtime state | Gitignored; includes `activeProject`, `lastPausedProject`, `activeIdea` |
55
- | `.oat/state.md` | Generated repo state dashboard | Gitignored; rebuilt with `oat state refresh` from config, project artifacts, and knowledge metadata |
56
- | `.oat/projects/` | OAT project artifacts | `shared`, `synced`, `local`, and lifecycle `archived` locations |
57
- | `.oat/ideas/` | Project-level ideas store | Often gitignored |
58
- | `.oat/sync/` | Interop sync state/config | See details below |
59
- | `.oat/templates/` | Artifact templates used by OAT skills | Source for scaffolding. Includes `docs-app-fuma/` (Fumadocs) and `docs-app-mkdocs/` (MkDocs) templates. |
60
- | `.oat/repo/` | Repo-level PJM/knowledge/reference/review artifacts | Active PJM state under `pjm/`; durable references (including decisions) under `reference/` |
51
+ | Path | Purpose | Notes |
52
+ | ------------------------ | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
53
+ | `.oat/config.json` | Shared repo runtime config for non-sync settings | Includes `worktrees.root`, `projects.root`, `git.defaultBranch`, `archive.*`, `documentation.*`, `instructions.*`, and `pjm.remote.*` |
54
+ | `.oat/config.local.json` | Local per-developer runtime state | Gitignored; includes `activeProject`, `lastPausedProject`, `activeIdea` |
55
+ | `.oat/state.md` | Generated repo state dashboard | Gitignored; rebuilt with `oat state refresh` from config, project artifacts, and knowledge metadata |
56
+ | `.oat/projects/` | OAT project artifacts | `shared`, `synced`, `local`, and lifecycle `archived` locations |
57
+ | `.oat/ideas/` | Project-level ideas store | Often gitignored |
58
+ | `.oat/sync/` | Interop sync state/config | See details below |
59
+ | `.oat/templates/` | Artifact templates used by OAT skills | Source for scaffolding. Includes `docs-markdown/` (authored index/contributing), `docs-app-fuma/` (Fumadocs), and `docs-app-mkdocs/` (MkDocs) templates. |
60
+ | `.oat/repo/` | Repo-level PJM/knowledge/reference/review artifacts | Active PJM state under `pjm/`; durable references (including decisions) under `reference/` |
61
61
 
62
62
  ## `.oat/sync/` details
63
63
 
@@ -120,10 +120,10 @@ Current schema keys:
120
120
  | `projects.root` | `string` | `".oat/projects/shared"` | Default root directory for OAT projects |
121
121
  | `projects.defaultScope` | `string` | `"synced"` | Scope used by project creation when `--scope` is omitted: `shared`, `local`, or `synced`. Environment override: `OAT_PROJECTS_DEFAULT_SCOPE`. |
122
122
  | `localPaths` | `string[]` | - | Gitignored directories to sync between main repo and worktrees. Supports glob patterns. Managed via `oat local add/remove`. |
123
- | `documentation.root` | `string` | - | Docs **app root** — the directory `oat docs init` scaffolds (e.g., `apps/docs`). Authored pages live under `<root>/docs`. See [Documentation path resolution](#documentation-path-resolution). |
124
- | `documentation.tooling` | `string` | - | Documentation framework identifier (`mkdocs` or `fumadocs`) |
123
+ | `documentation.root` | `string` | - | Literal authored content root for tooling `markdown` (default `docs`); otherwise docs **app root** (e.g., `apps/docs`) with authored pages normally under `<root>/docs`. See [Documentation path resolution](#documentation-path-resolution). |
124
+ | `documentation.tooling` | `string` | - | Documentation tooling identifier (`markdown`, `mkdocs`, or `fumadocs`); parsing remains permissive |
125
125
  | `documentation.config` | `string` | - | Path to the documentation framework config file (e.g., `mkdocs.yml`, `next.config.js`) |
126
- | `documentation.index` | `string` | - | Path to the docs surface entry point: the generated app-root manifest `<root>/index.md` for Fumadocs, `mkdocs.yml` for MkDocs. Set by `oat docs init`. `oat docs generate-index` writes it only for the Fumadocs manifest transition and never for MkDocs. |
126
+ | `documentation.index` | `string` | - | Path to the docs surface entry point: authored `<root>/index.md` for Markdown, the generated app-root manifest `<root>/index.md` for Fumadocs, `mkdocs.yml` for MkDocs. Set by `oat docs init`. `oat docs generate-index` writes it only for the Fumadocs manifest transition and never for Markdown or MkDocs. |
127
127
  | `documentation.excludes` | `string[]` | - | Globs, relative to the docs directory, that `oat docs generate-index` leaves out of the generated index. See [Excluding pages from the generated index](#excluding-pages-from-the-generated-index). |
128
128
  | `documentation.requireForProjectCompletion` | `boolean` | `false` | When `true`, OAT project completion gates require documentation to be updated |
129
129
  | `git.defaultBranch` | `string` | `"main"` | Default branch for PR creation. Auto-detected during `oat init` via `gh repo view` or `origin/HEAD`. Used by `oat-project-pr-final` and `oat-project-pr-progress`. |
@@ -174,24 +174,26 @@ Example:
174
174
 
175
175
  ### Documentation path resolution
176
176
 
177
- `documentation.root` canonically names the docs **app root** — exactly the directory `oat docs init` scaffolds. Authored Markdown lives under `<root>/docs`, and the generated Fumadocs manifest is written to `<root>/index.md`, outside the tree it indexes.
177
+ With `documentation.tooling: "markdown"`, `documentation.root` is the dedicated literal content directory and `documentation.index` is authored `<root>/index.md`. A child named `docs` does not narrow it. Fresh setup/adoption creates missing baseline pages and managed root guidance, without app files, dependencies, site builds, or a docs-root AGENTS file; existing local instructions are preserved.
178
+
179
+ Framework roots retain their app-root meaning. Authored content commonly lives under `<root>/docs`; the generated Fumadocs manifest lives at `<root>/index.md`, outside its source tree.
178
180
 
179
181
  `oat docs generate-index` resolves omitted options from this configuration:
180
182
 
181
- | Option | Omitted | Supplied |
182
- | ------------ | ---------------------------------------------------------------------------------------- | ----------------------------------- |
183
- | `--docs-dir` | `<documentation.root>/docs` when that directory exists, otherwise `<documentation.root>` | Resolved from the current directory |
184
- | `--output` | `<documentation.root>/index.md` | Resolved from the current directory |
183
+ | Option | Omitted | Supplied |
184
+ | ------------ | ------------------------------------------------------------------------------------------------------- | ----------------------------------- |
185
+ | `--docs-dir` | Markdown: literal `<documentation.root>`; other tooling: `<root>/docs` when present, otherwise `<root>` | Resolved from the current directory |
186
+ | `--output` | Markdown: explicit external output required; otherwise `<root>/index.md` | Resolved from the current directory |
185
187
 
186
188
  If an omitted option has no non-empty `documentation.root` to resolve against, or the configured root is not a directory, the command fails with exit code `2` before generating or writing anything.
187
189
 
188
- **Compatibility behavior.** Preferring `<root>/docs` exists for legacy configs whose `root` names a docs _source_ directory rather than an app root; it is not a second meaning of the key. Because the rule is a plain directory-existence test, a source root that happens to contain its own `docs` subdirectory is narrowed to it. The command prints the directory it derived in both human and JSON output (`docsDir`, `docsDirSource`), and `--docs-dir` is the escape hatch when the derivation is wrong.
190
+ **Compatibility behavior.** Preferring `<root>/docs` exists for legacy configs whose `root` names a docs _source_ directory rather than an app root; it is not a second meaning of the key. For non-Markdown tooling the rule is a plain directory-existence test, so a source root that happens to contain its own `docs` subdirectory is narrowed to it. The command prints the directory it derived in both human and JSON output (`docsDir`, `docsDirSource`), and `--docs-dir` is the escape hatch when the derivation is wrong.
189
191
 
190
192
  A legacy source root with no `docs` child resolves `--docs-dir` and `--output` to the same tree, so a bare run is refused rather than allowed to overwrite an authored page. Pass an explicit `--output` outside the source tree, or repoint `documentation.root` at the app root.
191
193
 
192
- **Refused output targets.** Checked before generation for derived and explicit paths alike, the command refuses to write an output that is inside the docs directory it indexes, equals `documentation.config`, or ends in `.yml` / `.yaml`. A derived output whose existing file lacks the `AUTOGENERATED by oat docs generate-index` header is also refused; naming that same path with `--output` overwrites it explicitly.
194
+ **Refused output targets.** Checked before generation for derived and explicit paths alike, the command refuses to write an output that is inside the docs directory it indexes, equals `documentation.config`, or ends in `.yml` / `.yaml`. A derived output whose existing file lacks the `AUTOGENERATED by oat docs generate-index` header is also refused; naming that same path with `--output` overwrites it explicitly only when no other guard applies. Configured Markdown additionally protects the full canonical configured content root and authored `documentation.index`, even with narrowed `--docs-dir` or symlink aliases. Default Markdown generation is refused; use explicit output outside the full content tree. The authored index remains configured.
193
195
 
194
- **Configuration writes.** The only configuration write generation performs is the Fumadocs manifest transition: when the written manifest lies inside `documentation.root` and `documentation.tooling` is `fumadocs`, the repo-relative output path is recorded in `documentation.index`. A config that declares neither `documentation.tooling` nor `documentation.config` is treated as the same Fumadocs-shaped case. Any other declared tooling — `mkdocs` included — is never written, and neither are `documentation.root` and `documentation.config`. The value is always repo-relative: when `documentation.root` points outside the repository, the manifest is still generated but the key is left untouched rather than recording a machine-specific path.
196
+ **Configuration writes.** The only configuration write generation performs is the Fumadocs manifest transition: when the written manifest lies inside `documentation.root` and `documentation.tooling` is `fumadocs`, the repo-relative output path is recorded in `documentation.index`. A config that declares neither `documentation.tooling` nor `documentation.config` is treated as the same Fumadocs-shaped case. Any other declared tooling — `markdown` and `mkdocs` included — is never written, and neither are `documentation.root` and `documentation.config`. The value is always repo-relative: when `documentation.root` points outside the repository, the manifest is still generated but the key is left untouched rather than recording a machine-specific path.
195
197
 
196
198
  ### Excluding pages from the generated index
197
199
 
@@ -1,6 +1,6 @@
1
1
  {
2
- "cli": "0.3.12",
3
- "docs-config": "0.3.12",
4
- "docs-theme": "0.3.12",
5
- "docs-transforms": "0.3.12"
2
+ "cli": "0.3.13",
3
+ "docs-config": "0.3.13",
4
+ "docs-theme": "0.3.13",
5
+ "docs-transforms": "0.3.13"
6
6
  }
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: oat-docs-analyze
3
- 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.
3
+ description: Run when you need to evaluate documentation structure, navigation, and coverage against the OAT documentation contract. Produces a severity-rated analysis artifact for oat-docs-apply.
4
4
  disable-model-invocation: true
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Bash(git:*), Bash(oat docs nav sync --check:*), Glob, Grep, AskUserQuestion, Task
7
7
  metadata:
8
- version: 1.6.0
8
+ version: 1.6.1
9
9
  ---
10
10
 
11
11
  # Docs Analysis
@@ -93,7 +93,11 @@ repo fallbacks:
93
93
  1. `.oat/config.json` `documentation.root` / `documentation.tooling`.
94
94
  - When `documentation.tooling` is `fumadocs`, record the surface type as
95
95
  `oat-fumadocs-app`.
96
- - Treat `documentation.root` as the docs app root. Resolve the authored docs
96
+ - When tooling is `markdown`, record `docs-tree`; `documentation.root` is
97
+ the literal authored content root, even with a child named `docs`. The
98
+ configured `documentation.index` is authored, not a generated manifest.
99
+ Honor configured excludes and existing local instructions.
100
+ - For framework tooling, treat `documentation.root` as the docs app root. Resolve the authored docs
97
101
  source root and generated index path from `documentation.index`, app config,
98
102
  package scripts, generator scripts, or local guidance.
99
103
  2. OAT/Fumadocs app candidates under `apps/*`, before root `docs/` fallback:
@@ -121,6 +125,12 @@ TRACKING=$(bash "$TRACKING_SCRIPT" read docs 2>/dev/null || true)
121
125
  - If the stored commit exists, run in `delta` mode and scope drift checks to changed docs directories.
122
126
  - Otherwise run in `full` mode.
123
127
 
128
+ Configured tooling/root take precedence over discovery. Markdown needs no app
129
+ package, site config, docs-root AGENTS, site build, or generated manifest. Read
130
+ managed root guidance, contributing pages, and any existing local AGENTS files;
131
+ do not mark their absence as a missing app shell. A successful adoption only
132
+ establishes config/baseline/guidance; audit incomplete authored content normally.
133
+
124
134
  ### Step 1: Inventory the Docs Surface
125
135
 
126
136
  Build a complete inventory of:
@@ -155,7 +165,7 @@ Capture the evidence sources that will justify later findings and recommendation
155
165
  Do **not** infer docs structure conventions from a tiny sample of pages when the broader
156
166
  tree or config disagrees.
157
167
 
158
- For OAT/Fumadocs docs apps, check whether local guidance covers:
168
+ For configured Markdown and OAT/Fumadocs docs apps, check whether local guidance covers:
159
169
 
160
170
  - authored docs source location
161
171
  - generated root indexes or manifests and their no-hand-edit boundary
@@ -174,7 +184,7 @@ the current analyze/apply flow.
174
184
 
175
185
  Use `references/quality-checklist.md` and `references/directory-assessment-criteria.md`.
176
186
 
177
- For every documentation directory:
187
+ For every non-excluded Markdown-bearing documentation directory:
178
188
 
179
189
  1. Verify `index.md` exists.
180
190
  2. Verify `index.md` includes a `## Contents` section.
@@ -190,6 +200,13 @@ For every documentation directory:
190
200
  9. Exempt asset-only directories that contain no Markdown content and are not
191
201
  linked as navigable docs sections.
192
202
 
203
+ For Markdown, assess useful audience/scope context, nonempty title/description
204
+ metadata, populated Contents, and relative `.md` links. Do not overwrite or
205
+ recommend replacing existing context just to satisfy structure. Optional external
206
+ manifests are separate derived artifacts: assess them only when local guidance
207
+ actually declares one. Never require default generation or repoint an authored
208
+ `documentation.index` to a manifest.
209
+
193
210
  For OAT/Fumadocs docs apps, also distinguish authored source maps from generated
194
211
  root indexes:
195
212
 
@@ -240,7 +257,7 @@ For each evaluated page or directory:
240
257
 
241
258
  1. Read the docs file plus the local evidence needed to validate its claims.
242
259
  2. Resolve every local relative Markdown link from the page where it appears.
243
- Flag broken targets. In OAT/Fumadocs docs apps, flag extensionless local
260
+ Flag broken targets. In configured Markdown and OAT/Fumadocs docs apps, flag extensionless local
244
261
  Markdown links and prefer `.md`-suffixed targets, including
245
262
  `subdir/index.md`.
246
263
  3. Accept anchors on `.md` links, such as `page.md#section`, and do not flag
@@ -419,7 +436,10 @@ If `mkdocs.yml` exists:
419
436
  4. Flag directories whose `index.md` `## Contents` section appears inconsistent with nav structure.
420
437
  5. Flag docs guidance that claims structure, plugin support, or workflow rules not backed by current repo evidence.
421
438
 
422
- If neither `mkdocs.yml` nor a Fumadocs app exists, record whether the repo should be migrated to an OAT docs app.
439
+ For Markdown, verify the authored Contents graph and file/link contract without
440
+ site nav generation or builds. Lack of `mkdocs.yml`, a generated manifest, or an
441
+ app package is expected, not a migration finding. For other unconfigured surfaces,
442
+ record whether app migration is relevant only when evidence or user intent supports it.
423
443
 
424
444
  ### Step 7: Severity-Rate Findings
425
445
 
@@ -4,7 +4,10 @@ Use this checklist when evaluating a docs surface.
4
4
 
5
5
  ## Structure
6
6
 
7
- - Every docs directory has an `index.md`.
7
+ - Every non-excluded Markdown-bearing docs directory has an authored `index.md`.
8
+ - Authored entrypoints preserve useful audience, scope, ownership, and context.
9
+ - Authored pages have nonempty `title` and `description` metadata.
10
+ - Configured excludes and existing local instructions are respected.
8
11
  - Every `index.md` includes a `## Contents` section.
9
12
  - `## Contents` is useful content, not a placeholder comment, empty list, or
10
13
  generic "add links here" scaffold.
@@ -22,7 +25,7 @@ Use this checklist when evaluating a docs surface.
22
25
  ## Links
23
26
 
24
27
  - Local relative Markdown links resolve from the page where they appear.
25
- - OAT/Fumadocs docs apps use `.md`-suffixed local links for docs pages,
28
+ - Configured Markdown and OAT/Fumadocs docs apps use `.md`-suffixed local links for docs pages,
26
29
  including `subdir/index.md` for child directory maps.
27
30
  - Anchors on `.md` links are allowed, such as `page.md#section`.
28
31
  - Extensionless local docs links are flagged when local guidance follows the
@@ -58,7 +61,17 @@ Use this checklist when evaluating a docs surface.
58
61
  - Topic names are specific enough for agents to select the right page quickly.
59
62
  - Large sections summarize what each child page covers.
60
63
 
61
- ## Docs App Contract
64
+ ## Documentation Surface Contract
65
+
66
+ - For configured Markdown, `documentation.root` is the literal content root,
67
+ including when it contains a nested `docs` directory.
68
+ - For Markdown, `documentation.index` is authored; optional generated manifests
69
+ live outside the full configured content tree and do not replace its entrypoint.
70
+ - Markdown needs no app package, framework config, docs-root AGENTS, default
71
+ manifest, nav generation, installation, or site build. Use applicable existing
72
+ file/link/lint checks. Adoption alone is not proof of complete content conformity.
73
+ - Managed root guidance, contributing guidance, and preserved local instructions
74
+ identify the root and authoring/audit/apply workflow.
62
75
 
63
76
  - For `mkdocs-app`, `mkdocs.yml` exists.
64
77
  - For `mkdocs-app`, navigation is consistent with the docs tree.
@@ -5,7 +5,7 @@ disable-model-invocation: true
5
5
  user-invocable: true
6
6
  allowed-tools: Read, Write, Edit, Bash(git:*), Bash(gh:*), Glob, Grep, AskUserQuestion
7
7
  metadata:
8
- version: 1.3.2
8
+ version: 1.4.1
9
9
  ---
10
10
 
11
11
  # Docs Apply
@@ -106,6 +106,12 @@ Validate that each recommendation in the artifact includes:
106
106
 
107
107
  If the artifact is missing that detail, stop and tell the user to re-run `oat-docs-analyze`.
108
108
 
109
+ Resolve the artifact target against `.oat/config.json` and cited local guidance.
110
+ With `documentation.tooling: markdown`, the configured root is the literal
111
+ content tree even when it contains a child `docs`; the configured index is
112
+ authored. Preserve excludes, useful audience/context/ownership prose and existing
113
+ local AGENTS files. A changed or incompatible target requires fresh analysis.
114
+
109
115
  ### Step 1: Build the Recommendation Plan
110
116
 
111
117
  Read the analysis artifact and build the plan from its recommendations.
@@ -117,7 +123,8 @@ Common docs actions:
117
123
  - Add or repair `## Contents`
118
124
  - Convert `overview.md` usage to the `index.md` contract
119
125
  - Add or update `docs/contributing.md` plugin guidance
120
- - Scaffold an OAT docs app when no docs app exists
126
+ - Route approved setup/adoption to `oat-docs-bootstrap`; a Markdown tree does
127
+ not require app scaffolding
121
128
  - Run `oat docs nav sync` after approved structural changes
122
129
 
123
130
  Carry forward the artifact's evidence refs, confidence, disclosure mode, and link targets into the apply plan.
@@ -214,7 +221,17 @@ Negative rules:
214
221
 
215
222
  ### Step 5: Verify and Sync Navigation
216
223
 
217
- Run the smallest relevant verification set based on what changed:
224
+ For configured Markdown, check touched authored indexes/context, nonempty
225
+ title/description metadata, Contents reachability, sibling `.md` and child
226
+ `section/index.md` destinations, configured excludes and local instructions.
227
+ Keep existing context while applying only approved repairs. Run documented
228
+ existing file/link/lint/format checks; no install or site build is required.
229
+ Do not invoke default `generate-index` or site `nav sync`. Regenerate an optional
230
+ external manifest only when locally declared, with explicit output outside the
231
+ full configured content tree; keep the authored config index unchanged.
232
+
233
+ For framework apps, discover actual scripts and run the smallest relevant
234
+ verification set based on what changed; these examples apply only when present:
218
235
 
219
236
  - `oat docs nav sync`
220
237
  - `pnpm --dir <docs-app> docs:lint` (no-op when no linter is configured)
@@ -1,28 +1,28 @@
1
1
  ---
2
2
  name: oat-docs-authoring
3
- description: Use when authoring or restructuring targeted content inside an existing OAT/Fumadocs docs app. Preserves OAT docs navigation, generated indexes, and validation boundaries.
3
+ description: Use when authoring or restructuring targeted content inside an existing OAT Markdown surface or OAT/Fumadocs docs app. Preserves OAT docs navigation, generated indexes, and validation boundaries.
4
4
  argument-hint: '[docs task or target path]'
5
5
  disable-model-invocation: false
6
6
  allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
7
7
  user-invocable: true
8
8
  metadata:
9
- version: 1.0.2
9
+ version: 1.1.1
10
10
  ---
11
11
 
12
12
  # OAT Docs Authoring
13
13
 
14
14
  Use this skill for targeted documentation authoring and small structural edits
15
- inside an existing OAT/Fumadocs docs app.
15
+ inside an existing OAT Markdown surface or OAT/Fumadocs docs app.
16
16
 
17
17
  This is a thin wrapper over `authoring-docs`. Load `authoring-docs` for
18
18
  universal evidence gathering, page-type selection, writing style, templates,
19
- and review standards. Keep this wrapper focused on OAT/Fumadocs placement,
19
+ and review standards. Keep this wrapper focused on OAT Markdown/Fumadocs placement,
20
20
  navigation, generated artifacts, validation, and lifecycle boundaries.
21
21
 
22
22
  ## Prerequisites
23
23
 
24
- - The repository already has an OAT/Fumadocs docs app or a clearly identified
25
- target docs app that follows OAT conventions.
24
+ - The repository already has an OAT Markdown surface, OAT/Fumadocs docs app,
25
+ or clearly identified documentation target that follows OAT conventions.
26
26
  - The task is a targeted authoring, restructuring, repair, or review task, not
27
27
  a new docs-app bootstrap, broad audit, or approved bulk-apply workflow.
28
28
 
@@ -31,7 +31,7 @@ navigation, generated artifacts, validation, and lifecycle boundaries.
31
31
  **OAT MODE: Docs Authoring Wrapper**
32
32
 
33
33
  **Purpose:** Author or restructure focused docs content while preserving the
34
- OAT/Fumadocs source-of-truth contract.
34
+ OAT authored-source contract.
35
35
 
36
36
  **BLOCKED Activities:**
37
37
 
@@ -135,6 +135,10 @@ defaults, and asset-only exceptions.
135
135
  Prefer plain Markdown for content pages. Use MDX only when local guidance and
136
136
  the task require JSX or custom components.
137
137
 
138
+ Markdown uses its literal configured root and authored index; preserve context,
139
+ excludes, and local instructions even with a nested `docs` directory. No app
140
+ package or docs-root AGENTS creation is needed.
141
+
138
142
  ### Step 4: Check Generated Artifacts and Validation
139
143
 
140
144
  Regenerate or freshness-check derived docs artifacts using local scripts when
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: OAT docs root resolution
3
- description: How to resolve OAT/Fumadocs app roots, authored docs roots, generated index outputs, and local instruction surfaces before editing.
3
+ description: How to resolve Markdown content roots and OAT/Fumadocs app roots, authored docs roots, generated index outputs, and local instruction surfaces before editing.
4
4
  ---
5
5
 
6
6
  # OAT Docs Root Resolution
@@ -15,9 +15,15 @@ roots before editing.
15
15
  index file.
16
16
  - A docs-app `AGENTS.md` may override or narrow the repo-level guidance.
17
17
  2. Inspect `.oat/config.json`.
18
- - Prefer documented `documentation.root` values for the docs app root.
19
- - Treat `documentation.index` as the generated root index when present; it
20
- may not be the same as the authored docs root.
18
+ - Declared tooling is authoritative. For `markdown`, `documentation.root`
19
+ is the literal authored content root, even with a child named `docs`, and
20
+ `documentation.index` is authored (normally `<root>/index.md`). Honor excludes.
21
+ - For framework tooling, prefer `documentation.root` as the docs app root.
22
+ Resolve authored source and generated ownership from app/local evidence;
23
+ a configured index alone is not proof that it is generated.
24
+ - Markdown requires no app package, framework config, site build, or manifest;
25
+ skip app-only discovery. An optional manifest must be external to the full
26
+ configured content tree and never replace the authored config index.
21
27
  - If config is incomplete, keep resolving from local files instead of
22
28
  guessing.
23
29
  3. Inspect package scripts in likely docs app directories.
@@ -34,7 +40,8 @@ roots before editing.
34
40
  paths can be wired separately. Preserve local customizations unless the
35
41
  user explicitly asked for app-shell work.
36
42
  5. Resolve the authored docs root.
37
- - The common root is `<docs-app>/docs`, but local guidance is authoritative.
43
+ - Markdown uses the configured root itself. Framework apps commonly use
44
+ `<docs-app>/docs`, but local guidance is authoritative.
38
45
  - Find the top-level authored `index.md`, then follow `## Contents` maps to
39
46
  the target area.
40
47
 
@@ -10,13 +10,13 @@ Route larger lifecycle work to its owner.
10
10
 
11
11
  ## Routing Rules
12
12
 
13
- | Request shape | Owner | Why |
14
- | ----------------------------------------------------------------------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
15
- | New docs app setup, scaffold repair, package/app shell bootstrap | `oat-docs-bootstrap` | Bootstrap owns preflight, inputs, `oat docs init`, post-scaffold checks, config inspection, and walkthrough. |
16
- | Read-only docs audit, structure analysis, coverage review, drift report | `oat-docs-analyze` | Analyze owns inventory, evidence gathering, severity-rated findings, and analysis artifacts. |
17
- | Applying approved analysis recommendations or batch docs changes | `oat-docs-apply` | Apply owns branch creation, approved changes, deterministic nav sync, verification, commit, and optional PR. |
18
- | Docs updates derived from an active OAT project | `oat-project-document` | Project-document owns artifact/code scanning, docs delta planning, approval, and project provenance. |
19
- | Existing MkDocs app to OAT/Fumadocs migration | Standalone migration guide | Migration needs inventory, syntax conversion, app-shell work, render checks, config/CI changes, and owner-review handling. |
13
+ | Request shape | Owner | Why |
14
+ | ----------------------------------------------------------------------------------------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
15
+ | New Markdown setup/adoption, docs app setup, scaffold repair, package/app shell bootstrap | `oat-docs-bootstrap` | Bootstrap owns preflight, inputs, `oat docs init`, post-scaffold checks, config inspection, and walkthrough. |
16
+ | Read-only docs audit, structure analysis, coverage review, drift report | `oat-docs-analyze` | Analyze owns inventory, evidence gathering, severity-rated findings, and analysis artifacts. |
17
+ | Applying approved analysis recommendations or batch docs changes | `oat-docs-apply` | Apply owns branch creation, approved changes, deterministic nav sync, verification, commit, and optional PR. |
18
+ | Docs updates derived from an active OAT project | `oat-project-document` | Project-document owns artifact/code scanning, docs delta planning, approval, and project provenance. |
19
+ | Existing MkDocs app to OAT/Fumadocs migration | Standalone migration guide | Migration needs inventory, syntax conversion, app-shell work, render checks, config/CI changes, and owner-review handling. |
20
20
 
21
21
  If a request mixes targeted authoring with lifecycle work, split it:
22
22
 
@@ -5,13 +5,15 @@ description: Authored source, navigation, link, file-type, generated-index, and
5
5
 
6
6
  # OAT Fumadocs Authoring Contract
7
7
 
8
- The OAT/Fumadocs contract is tooling-critical. It is not just style.
8
+ The authored-source rules below also apply to configured plain Markdown.
9
+ Framework-specific generated output and metadata controls remain conditional.
9
10
 
10
11
  ## Authored Source of Truth
11
12
 
12
13
  - Author content under the authored docs root, usually `docs/` inside the docs
13
- app.
14
- - Every Markdown-bearing content directory has an authored `index.md`.
14
+ app; configured Markdown uses `documentation.root` literally.
15
+ - Every non-excluded Markdown-bearing content directory has an authored `index.md`.
16
+ - Preserve useful audience/scope context, ownership notes, and local instructions.
15
17
  - Every authored `index.md` that represents a content directory has a
16
18
  `## Contents` section.
17
19
  - `## Contents` lists sibling pages and immediate child directories for that
@@ -42,6 +44,14 @@ the task scope or an approved recommendation covers that change.
42
44
  - Add or preserve at least `title` and `description` frontmatter on touched
43
45
  pages unless local guidance defines a stricter schema.
44
46
 
47
+ ## Markdown Authored Index Ownership
48
+
49
+ With `documentation.tooling: markdown`, `documentation.index` is authored.
50
+ Edit its context and Contents directly within approved scope. No manifest is
51
+ required. Optional generation needs explicit output outside the full configured
52
+ content tree and cannot overwrite the authored index, even with narrowed source
53
+ flags. Never repoint the config index to generated output.
54
+
45
55
  ## Generated Root Indexes
46
56
 
47
57
  Many OAT/Fumadocs apps have an app-root generated `index.md` that rolls up the
@@ -6,7 +6,7 @@ description: Focused edit loop for small OAT/Fumadocs documentation authoring an
6
6
  # Targeted OAT Docs Authoring Workflow
7
7
 
8
8
  Use this workflow when the user asks for a focused docs addition, repair, move,
9
- or review inside an existing OAT/Fumadocs docs app.
9
+ or review inside an existing OAT Markdown surface or OAT/Fumadocs docs app.
10
10
 
11
11
  ## 1. Bound the Change
12
12
 
@@ -38,14 +38,15 @@ For page moves and renames:
38
38
  - update both the old parent and new parent `## Contents` sections;
39
39
  - search for links to the old path before finishing;
40
40
  - preserve optional local sidebar metadata, such as `meta.json`, when present;
41
- - regenerate or freshness-check the generated root index after authored maps
42
- change;
41
+ - regenerate or freshness-check declared derived output after authored maps
42
+ change; Markdown manifests are optional and external to the full content tree;
43
43
  - do not treat a generated-root entry as proof that the nearest parent map is
44
44
  correct.
45
45
 
46
46
  ## 4. Validate Locally
47
47
 
48
- - Read package scripts before choosing validation commands.
48
+ - Read existing local scripts/instructions before choosing validation commands;
49
+ Markdown needs file/link checks, not an app package or site build.
49
50
  - Run generation or validation scripts that are relevant to the touched files.
50
51
  - For render-sensitive Markdown, inspect the rendered result when practical.
51
52
 
@@ -8,7 +8,17 @@ description: Local validation, generated-index checks, and render spot-check gui
8
8
  Validation is local to the docs app. Read scripts and instructions before
9
9
  choosing commands.
10
10
 
11
- ## Script Discovery
11
+ ## Markdown File Checks
12
+
13
+ For configured Markdown, use the literal content root, honor excludes and local
14
+ instructions, and verify context, title/description metadata, Contents and actual
15
+ relative `.md` destinations. Discover existing repository lint/link/format checks;
16
+ no package creation, install, site build, or site nav generation is required.
17
+ An external generated manifest is optional; regenerate only when local guidance
18
+ declares one, with explicit output outside the full content tree. Keep authored
19
+ indexes and `documentation.index` intact.
20
+
21
+ ## Script Discovery (Framework Apps)
12
22
 
13
23
  Inspect the docs app `package.json` and local instructions for:
14
24