@open-agent-toolkit/cli 0.3.11 → 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.
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/configuration.md +1 -1
- package/assets/docs/cli-utilities/tool-packs.md +4 -1
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +80 -15
- package/assets/docs/docs-tooling/commands.md +74 -30
- package/assets/docs/docs-tooling/index.md +6 -6
- package/assets/docs/docs-tooling/workflows.md +26 -9
- package/assets/docs/provider-sync/commands.md +1 -1
- package/assets/docs/provider-sync/instruction-sync.md +11 -4
- package/assets/docs/reference/cli-reference.md +2 -2
- package/assets/docs/reference/docs-index-contract.md +20 -4
- package/assets/docs/reference/file-locations.md +3 -1
- package/assets/docs/reference/oat-directory-structure.md +23 -21
- package/assets/docs/workflows/skills/recon.md +4 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-docs-analyze/SKILL.md +27 -7
- package/assets/skills/oat-docs-analyze/references/quality-checklist.md +16 -3
- package/assets/skills/oat-docs-apply/SKILL.md +20 -3
- package/assets/skills/oat-docs-authoring/SKILL.md +11 -7
- package/assets/skills/oat-docs-authoring/references/docs-root-resolution.md +12 -5
- package/assets/skills/oat-docs-authoring/references/lifecycle-boundaries.md +7 -7
- package/assets/skills/oat-docs-authoring/references/oat-fumadocs-contract.md +13 -3
- package/assets/skills/oat-docs-authoring/references/targeted-authoring-workflow.md +5 -4
- package/assets/skills/oat-docs-authoring/references/validation.md +11 -1
- package/assets/skills/oat-docs-bootstrap/SKILL.md +31 -8
- package/assets/skills/oat-docs-bootstrap/assets/AGENTS.md.template +2 -1
- package/assets/skills/oat-project-document/SKILL.md +21 -2
- package/assets/skills/recon/SKILL.md +1 -1
- package/assets/skills/recon/scripts/render-packet.mjs +40 -13
- package/assets/templates/docs-markdown/contributing.md +35 -0
- package/assets/templates/docs-markdown/index.md +18 -0
- package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
- package/dist/commands/docs/index-generate/index.js +41 -8
- package/dist/commands/docs/init/index.d.ts +17 -2
- package/dist/commands/docs/init/index.d.ts.map +1 -1
- package/dist/commands/docs/init/index.js +194 -14
- package/dist/commands/docs/init/markdown.d.ts +39 -0
- package/dist/commands/docs/init/markdown.d.ts.map +1 -0
- package/dist/commands/docs/init/markdown.js +317 -0
- package/dist/commands/docs/init/resolve-options.d.ts +3 -1
- package/dist/commands/docs/init/resolve-options.d.ts.map +1 -1
- package/dist/commands/docs/init/resolve-options.js +36 -0
- package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
- package/dist/commands/docs/init/scaffold.js +11 -0
- package/dist/commands/docs/nav/fumadocs.d.ts +7 -0
- package/dist/commands/docs/nav/fumadocs.d.ts.map +1 -1
- package/dist/commands/docs/nav/fumadocs.js +28 -3
- package/dist/commands/shared/agents-md.d.ts +7 -0
- package/dist/commands/shared/agents-md.d.ts.map +1 -1
- package/dist/commands/shared/agents-md.js +131 -91
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +1 -0
- package/dist/config/oat-config.d.ts +2 -1
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +4 -2
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Docs Index Contract
|
|
3
|
-
description: 'Docs source contract: authored
|
|
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
|
|
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.
|
|
@@ -63,6 +78,7 @@ Fumadocs generated behavior:
|
|
|
63
78
|
- `pages` follows the order of the directory's `## Contents` links. The root list starts with `index`; a child directory appears by its folder name, and its own `index.md` becomes that folder's landing page. A folder whose `meta.json` keeps `root: true` also lists `index` first, because Fumadocs gives a root folder no implicit landing page.
|
|
64
79
|
- Navigation is strict: there is no `"..."` rest entry. A page or folder that no `## Contents` map lists stays out of the sidebar, and the command reports it by path in its human output and in `--json` (`unlisted`). Add the page to its directory's `## Contents` map to show it.
|
|
65
80
|
- A `## Contents` link to a page in another directory is written as a Fumadocs link entry such as `[Writing Skills](/contributing/skills)`, so each page belongs to exactly one folder.
|
|
81
|
+
- A page or folder whose name Fumadocs would read as a `pages` directive, such as `!hidden`, `z...a`, `...name`, or `---`, is written in the local-path form `./!hidden` so it stays a page entry.
|
|
66
82
|
- The folder `title` comes from the `index.md` frontmatter `title`, falling back to its first `#` heading.
|
|
67
83
|
- Keys nav sync does not own, such as `icon` or `defaultOpen`, are kept.
|
|
68
84
|
- Existing files are compared by meaning, not bytes, so a second run with no docs changes writes nothing, even after a formatter rewrites the files.
|
|
@@ -83,7 +99,7 @@ MkDocs generated behavior:
|
|
|
83
99
|
|
|
84
100
|
## Generated-file boundaries
|
|
85
101
|
|
|
86
|
-
- Edit authored files under `docs
|
|
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`.
|
|
87
103
|
- Do not hand-edit a Fumadocs app-root generated `index.md`; regenerate it from the docs source tree.
|
|
88
104
|
- Do not hand-maintain MkDocs `nav:` entries or Fumadocs `meta.json` `pages` lists when the local workflow uses `oat docs nav sync`.
|
|
89
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.
|
|
@@ -93,7 +109,7 @@ MkDocs generated behavior:
|
|
|
93
109
|
- Use `index.md` as the local discovery surface for humans and agents.
|
|
94
110
|
- Add a short topic description next to each link so agents can choose the right file without opening every page.
|
|
95
111
|
- Update `## Contents` whenever you add, remove, rename, or reorder docs files in a directory.
|
|
96
|
-
-
|
|
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.
|
|
97
113
|
- Refresh or freshness-check the generated artifact before committing structural docs changes.
|
|
98
114
|
|
|
99
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` | - |
|
|
124
|
-
| `documentation.tooling` | `string` | - | Documentation
|
|
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`
|
|
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
|
|
182
|
-
| ------------ |
|
|
183
|
-
| `--docs-dir` | `<documentation.root>/docs` when
|
|
184
|
-
| `--output` | `<
|
|
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.
|
|
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
|
|
|
@@ -304,7 +304,10 @@ scoped to it or global to its review, a coverage finding that names it, or a
|
|
|
304
304
|
non-affirming disposition) is listed under Review Downgrades with the review's
|
|
305
305
|
own text, even when it is not a key claim, so a `complete` packet cannot hide a
|
|
306
306
|
downgraded claim. A claim that a required review left without a disposition stays
|
|
307
|
-
`unresolved
|
|
307
|
+
`unresolved`. Any claim below `verified` that an incorporated assurance review,
|
|
308
|
+
core or thorough, listed in its brief but left without a disposition is listed
|
|
309
|
+
there as not reviewed by that review; a claim outside a review's brief is never
|
|
310
|
+
reported as its omission. A review's
|
|
308
311
|
`unresolvedIssues` entry may name the claim IDs it affects or apply to the
|
|
309
312
|
whole review; a legacy plain-string entry is read as review-wide. A material
|
|
310
313
|
coverage gap does not fail publication by itself: the claims it affects stay
|
|
@@ -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
|
|
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.
|
|
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
|
-
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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.
|
|
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
|
-
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
25
|
-
|
|
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
|
|
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
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
-
|
|
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
|
|
14
|
-
|
|
|
15
|
-
| New docs app setup, scaffold repair, package/app shell bootstrap
|
|
16
|
-
| Read-only docs audit, structure analysis, coverage review, drift report
|
|
17
|
-
| Applying approved analysis recommendations or batch docs changes
|
|
18
|
-
| Docs updates derived from an active OAT project
|
|
19
|
-
| Existing MkDocs app to OAT/Fumadocs migration
|
|
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
|
|
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
|
|
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
|
|
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
|
-
##
|
|
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
|
|