@open-agent-toolkit/cli 0.3.22 → 0.3.24
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/docs-tooling/add-docs-to-a-repo.md +3 -9
- package/assets/docs/docs-tooling/workflows.md +39 -5
- package/assets/docs/reference/cli-reference.md +1 -1
- package/assets/docs/reference/configuration.md +4 -2
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/authoring-docs/SKILL.md +18 -8
- package/assets/skills/authoring-docs/references/guidance-sources.md +95 -0
- package/assets/skills/authoring-docs/references/information-architecture.md +121 -86
- package/assets/skills/authoring-docs/references/page-types.md +35 -7
- package/assets/skills/authoring-docs/references/review-rubric.md +12 -12
- package/assets/skills/authoring-docs/references/templates.md +54 -0
- package/assets/skills/authoring-docs/references/workflow.md +6 -1
- package/assets/skills/authoring-docs/references/writing-style.md +1 -1
- package/assets/skills/authoring-docs/scripts/resolve-guidance.mjs +53 -0
- package/assets/skills/oat-docs/SKILL.md +14 -28
- package/assets/skills/oat-docs-analyze/SKILL.md +39 -4
- package/assets/skills/oat-docs-analyze/references/analysis-artifact-template.md +12 -0
- package/assets/skills/oat-docs-analyze/references/legacy-scaffold-checks.md +16 -0
- package/assets/skills/oat-docs-apply/SKILL.md +20 -2
- package/assets/skills/oat-docs-apply/references/apply-plan-template.md +9 -0
- package/assets/skills/oat-docs-authoring/SKILL.md +21 -9
- package/assets/skills/oat-docs-authoring/references/lifecycle-boundaries.md +1 -2
- package/assets/skills/oat-docs-authoring/references/mkdocs-to-oat-fumadocs-refactor-guide.md +73 -0
- package/assets/skills/oat-docs-bootstrap/SKILL.md +96 -321
- package/assets/templates/docs-app-fuma/docs/contributing.md +6 -0
- package/assets/templates/docs-app-fuma/docs/getting-started.md +1 -1
- package/assets/templates/docs-app-fuma/next.config.js +5 -1
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +78 -1
- package/dist/commands/docs/analyze.js +1 -1
- package/dist/commands/docs/apply.js +1 -1
- package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
- package/dist/commands/docs/init/scaffold.js +35 -2
- package/dist/config/oat-config.d.ts +5 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +38 -4
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +1 -0
- package/package.json +2 -2
|
@@ -53,18 +53,18 @@ Production runbooks should be especially strong on operational safety.
|
|
|
53
53
|
Public-facing docs should be especially strong on examples, accuracy, and
|
|
54
54
|
audience boundary.
|
|
55
55
|
|
|
56
|
-
| Area | 0 | 1 | 2 | 3
|
|
57
|
-
| ------------------------ | --------------------------- | ---------------------- | --------------------------- |
|
|
58
|
-
| Purpose | No clear reason page exists | Purpose is implied | Purpose is stated | Purpose, reader, and outcome are clear
|
|
59
|
-
| Accuracy | Incorrect or invented | Partially accurate | Mostly accurate | Grounded and verified
|
|
60
|
-
| Structure | Hard to scan | Some headings | Clear sections |
|
|
61
|
-
| Task support | Cannot complete task | Can partially complete | Can complete with some gaps | Can complete safely with verification
|
|
62
|
-
| Reference quality | Missing facts | Facts scattered | Most fields documented | Types, defaults, constraints, examples, errors documented
|
|
63
|
-
| Operational safety | Risky or absent | Mentions risk | Includes basic verification | Includes verification, rollback, escalation, failure modes
|
|
64
|
-
| Agent usefulness | Ambiguous | Some exact data | Mostly explicit | Exact commands, paths, constraints, and uncertainty
|
|
65
|
-
| Maintainability | Duplicated or stale | Hard to update | Mostly maintainable | Clear source of truth and generated markers where needed
|
|
66
|
-
| Public/internal boundary | Leaks or omits key context | Boundary unclear | Mostly appropriate | Correct assumptions and safe content
|
|
67
|
-
| Links and navigation | Broken or absent | Sparse | Useful | Strong cross-links and clear next steps
|
|
56
|
+
| Area | 0 | 1 | 2 | 3 |
|
|
57
|
+
| ------------------------ | --------------------------- | ---------------------- | --------------------------- | ------------------------------------------------------------------------- |
|
|
58
|
+
| Purpose | No clear reason page exists | Purpose is implied | Purpose is stated | Purpose, reader, and outcome are clear |
|
|
59
|
+
| Accuracy | Incorrect or invented | Partially accurate | Mostly accurate | Grounded and verified |
|
|
60
|
+
| Structure | Hard to scan | Some headings | Clear sections | Reader-first [IA method](information-architecture.md) and strong headings |
|
|
61
|
+
| Task support | Cannot complete task | Can partially complete | Can complete with some gaps | Can complete safely with verification |
|
|
62
|
+
| Reference quality | Missing facts | Facts scattered | Most fields documented | Types, defaults, constraints, examples, errors documented |
|
|
63
|
+
| Operational safety | Risky or absent | Mentions risk | Includes basic verification | Includes verification, rollback, escalation, failure modes |
|
|
64
|
+
| Agent usefulness | Ambiguous | Some exact data | Mostly explicit | Exact commands, paths, constraints, and uncertainty |
|
|
65
|
+
| Maintainability | Duplicated or stale | Hard to update | Mostly maintainable | Clear source of truth and generated markers where needed |
|
|
66
|
+
| Public/internal boundary | Leaks or omits key context | Boundary unclear | Mostly appropriate | Correct assumptions and safe content |
|
|
67
|
+
| Links and navigation | Broken or absent | Sparse | Useful | Strong cross-links and clear next steps |
|
|
68
68
|
|
|
69
69
|
## Minimum Acceptable Scores
|
|
70
70
|
|
|
@@ -547,3 +547,57 @@ docs/
|
|
|
547
547
|
|
|
548
548
|
- <Explicitly out-of-scope docs>
|
|
549
549
|
```
|
|
550
|
+
|
|
551
|
+
## IA Proposal
|
|
552
|
+
|
|
553
|
+
Use for bootstrap or an existing-tree `--ia` analysis. This proposes structure;
|
|
554
|
+
it neither persists an IA decision nor materializes a preset. Feature and QA
|
|
555
|
+
validation page templates are not included; use the page-type guidance to
|
|
556
|
+
plan their content.
|
|
557
|
+
|
|
558
|
+
````markdown
|
|
559
|
+
# IA Proposal: {surface}
|
|
560
|
+
|
|
561
|
+
## Evidence and guidance
|
|
562
|
+
|
|
563
|
+
- Resolved sources, in order: {path/URL, provenance: explicit/conversation/shared/user/builtin}
|
|
564
|
+
- Local authority: {AGENTS/contributing paths and relevant rules}
|
|
565
|
+
- Repo signals: {manifests, navigators, bin, routers, IaC, e2e, docs, units}
|
|
566
|
+
- Readers and work contexts: {who must succeed at what}
|
|
567
|
+
- Entry key per track: {task/domain/capability/unit/command/page type}
|
|
568
|
+
- Page purposes: {one primary job per representative page}
|
|
569
|
+
- Verification overlay: {triad/agent-only/none and evidence}
|
|
570
|
+
- Size gate: {page count and amount of structure justified}
|
|
571
|
+
- Canonical facts elsewhere and links to preserve: {paths/URLs}
|
|
572
|
+
- Unresolved conflicts: {ask_user finding with source citations, or none}
|
|
573
|
+
|
|
574
|
+
## Candidate A: {reader-facing name}
|
|
575
|
+
|
|
576
|
+
Nearest preset: {approved label}. Choose when: {signals and tradeoffs}.
|
|
577
|
+
|
|
578
|
+
```text
|
|
579
|
+
{track-or-section}/
|
|
580
|
+
{page.md} — {page's one job}
|
|
581
|
+
{page.md} — {page's one job}
|
|
582
|
+
{track-or-section}/
|
|
583
|
+
{page.md} — {page's one job}
|
|
584
|
+
{page.md} — {page's one job}
|
|
585
|
+
{page.md} — {page's one job}
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
Use a two-level tree and 5–8 representative page placements. For Flat Small,
|
|
589
|
+
first-level labels are grouped headings in one index, not new directories.
|
|
590
|
+
|
|
591
|
+
## Candidate B: {alternative reader-facing name}
|
|
592
|
+
|
|
593
|
+
Nearest preset: {approved label}. Choose when: {different plausible signals}.
|
|
594
|
+
|
|
595
|
+
{Second two-level tree with 5–8 representative page placements and page jobs.}
|
|
596
|
+
|
|
597
|
+
## Recommendation and open decisions
|
|
598
|
+
|
|
599
|
+
{Preferred candidate, evidence and tradeoffs. Ask only decision-changing
|
|
600
|
+
questions. Record an explicit choice before replacement or a second app.
|
|
601
|
+
Existing docs default to analyze → apply of approved recommendations.
|
|
602
|
+
No private exemplar text, copied external contents or unapproved moves.}
|
|
603
|
+
````
|
|
@@ -80,7 +80,12 @@ Most docs serve one or more of these readers:
|
|
|
80
80
|
- support engineer
|
|
81
81
|
- AI agent making future changes
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
Map personas to tracks by work context: consumers and CLI/API users usually
|
|
84
|
+
enter through tasks or contracts; maintainers through domains and operations;
|
|
85
|
+
product stakeholders through behavior; independent QA through validation;
|
|
86
|
+
agents through exact task inputs and checks. One person may use several tracks.
|
|
87
|
+
Use the five axes in [Information Architecture](information-architecture.md)
|
|
88
|
+
before naming a preset. Write pages for actual tasks, not org-chart abstractions.
|
|
84
89
|
|
|
85
90
|
## 5. Decide the Minimum Useful Set
|
|
86
91
|
|
|
@@ -93,7 +93,7 @@ Use notes for useful context, not ordinary tips.
|
|
|
93
93
|
- Use one `#` heading per page.
|
|
94
94
|
- Do not skip heading levels.
|
|
95
95
|
- Use fenced code blocks with language identifiers.
|
|
96
|
-
- Use `
|
|
96
|
+
- Use `bash` for shell commands unless the example is POSIX-only (`sh`) or local repository conventions require another fence.
|
|
97
97
|
- Use `txt` for command output.
|
|
98
98
|
- Do not include shell prompts unless the prompt itself matters.
|
|
99
99
|
- Use angle brackets for placeholders, such as `<environment>`.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { parseArgs } from 'node:util';
|
|
3
|
+
|
|
4
|
+
// Select inputs only. The consuming skill reads Markdown and checks Contents,
|
|
5
|
+
// local authority and conflicts; this helper never fetches or writes a source.
|
|
6
|
+
const { values } = parseArgs({
|
|
7
|
+
options: {
|
|
8
|
+
builtin: { type: 'string' },
|
|
9
|
+
'ia-guidance': { type: 'string', multiple: true },
|
|
10
|
+
'conversation-guidance': { type: 'string', multiple: true },
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
const explicit = values['ia-guidance'];
|
|
14
|
+
const conversation = values['conversation-guidance'];
|
|
15
|
+
if (explicit && conversation) {
|
|
16
|
+
throw new Error(
|
|
17
|
+
'Use one explicit source list; reconcile argument/conversation disagreement with the user first.',
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
const input = JSON.parse(readFileSync(0, 'utf8'));
|
|
21
|
+
if (input.status !== 'ok' || input.key !== 'documentation.guidance') {
|
|
22
|
+
throw new Error(
|
|
23
|
+
'Expected successful oat config get documentation.guidance --json output.',
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
let locations;
|
|
27
|
+
let source;
|
|
28
|
+
if (explicit || conversation) {
|
|
29
|
+
locations = explicit ?? conversation;
|
|
30
|
+
source = explicit ? 'explicit' : 'conversation';
|
|
31
|
+
} else if (input.value !== null && input.value !== undefined) {
|
|
32
|
+
if (!['shared', 'user'].includes(input.source)) {
|
|
33
|
+
throw new Error(
|
|
34
|
+
`Unsupported documentation.guidance config source: ${input.source}`,
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
locations = Array.isArray(input.value) ? input.value : [input.value];
|
|
38
|
+
source = input.source;
|
|
39
|
+
} else {
|
|
40
|
+
locations = [values.builtin];
|
|
41
|
+
source = 'builtin';
|
|
42
|
+
}
|
|
43
|
+
if (
|
|
44
|
+
!locations.length ||
|
|
45
|
+
locations.some((location) => typeof location !== 'string' || !location.trim())
|
|
46
|
+
) {
|
|
47
|
+
throw new Error(
|
|
48
|
+
'Guidance requires non-empty path/URL strings (or --builtin for fallback).',
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
process.stdout.write(
|
|
52
|
+
`${JSON.stringify({ sources: locations.map((location) => ({ location: location.trim(), source })) }, null, 2)}\n`,
|
|
53
|
+
);
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: false
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Glob, Grep, AskUserQuestion
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.0.
|
|
9
|
+
version: 1.0.7
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# OAT Docs
|
|
@@ -89,29 +89,15 @@ Read the user's question from `$ARGUMENTS`. If no question was provided or the q
|
|
|
89
89
|
|
|
90
90
|
> "What would you like to know about OAT? I can help with workflows, CLI commands, skill authoring, configuration, project lifecycle, and more."
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
| ---------------- | --------------------------------------------------------------- | -------------------------------------------- |
|
|
96
|
-
| Getting started | `getting-started/quickstart.md`, `getting-started/bootstrap.md` | Installation, first project setup |
|
|
97
|
-
| Concepts | `getting-started/concepts.md` | Core OAT concepts and terminology |
|
|
98
|
-
| CLI commands | `reference/cli-reference.md` | Full CLI command reference |
|
|
99
|
-
| Tool packs | `getting-started/tool-packs.md` | Installing and managing skill packs |
|
|
100
|
-
| Skills | `contributing/skills.md` | Skill authoring, SKILL.md format |
|
|
101
|
-
| Workflows | `workflows/projects/` | Project lifecycle, state machine, artifacts |
|
|
102
|
-
| Ideas | `workflows/ideas/` | Idea capture and brainstorming |
|
|
103
|
-
| Provider sync | `provider-sync/` | Multi-provider sync, config, commands |
|
|
104
|
-
| Documentation | `docs-tooling/` | Docs analysis and apply workflows |
|
|
105
|
-
| Contributing | `contributing/` | Code contributions, design principles, hooks |
|
|
106
|
-
| File locations | `reference/file-locations.md` | Where OAT puts things |
|
|
107
|
-
| Directory layout | `reference/oat-directory-structure.md` | `.oat/` and `.agents/` structure |
|
|
108
|
-
| Troubleshooting | `reference/troubleshooting.md` | Common issues and fixes |
|
|
92
|
+
Read `DOCS_ROOT/index.md` and its `## Contents` section. Derive a temporary topic map from the installed labels, summaries, and link targets; do not assume OAT's repository layout or a fixed set of topic paths. Choose the entries that match the question and descend through their authored `index.md` Contents maps when needed. Resolve each link relative to its containing file and verify it exists before reading it.
|
|
93
|
+
|
|
94
|
+
If the installed index has no usable Contents or a linked target is missing, report that specific stale or incomplete installation. Search within `DOCS_ROOT` for the requested terms to find existing evidence, and recommend updating the installed docs when appropriate. Never invent a replacement path or fall back to the repository.
|
|
109
95
|
|
|
110
96
|
### Step 3: Search and Read Documentation
|
|
111
97
|
|
|
112
98
|
Based on the topic classification:
|
|
113
99
|
|
|
114
|
-
1. **Read the most relevant docs file(s)** — start with the primary match from the topic
|
|
100
|
+
1. **Read the most relevant docs file(s)** — start with the primary match from the topic map derived in Step 2. All paths are relative to `DOCS_ROOT` (`~/.oat/docs/`).
|
|
115
101
|
2. **Search for specific terms** — if the question mentions specific concepts, commands, or features, use Grep to find mentions across `~/.oat/docs/`.
|
|
116
102
|
3. **Follow cross-references** — if the primary doc references other pages, read those for complete context.
|
|
117
103
|
4. **Check the index** — read the `index.md` of relevant directories to discover additional relevant pages.
|
|
@@ -143,7 +129,7 @@ Frame these as suggestions, not automatic actions. Let the user decide.
|
|
|
143
129
|
```
|
|
144
130
|
Based on the docs, here's how OAT project workflows work: [answer]
|
|
145
131
|
|
|
146
|
-
|
|
132
|
+
Cite the installed workflow page discovered through Contents.
|
|
147
133
|
|
|
148
134
|
Would you like me to:
|
|
149
135
|
- Start a new project? (I'd invoke oat-project-lite for single-sitting work, oat-project-brief for one delivery planned as a Project Brief, oat-project-goal for an outcome delivered over several milestones, or oat-project-quick-start for a larger quick workflow)
|
|
@@ -190,7 +176,7 @@ Both create a project directory under your projects root
|
|
|
190
176
|
state.md, plan.md, and implementation.md; quick and spec-driven modes also use
|
|
191
177
|
discovery.md.
|
|
192
178
|
|
|
193
|
-
See:
|
|
179
|
+
See: the actual installed workflow and getting-started pages found through Contents.
|
|
194
180
|
|
|
195
181
|
Would you like me to create a project for you?
|
|
196
182
|
```
|
|
@@ -203,20 +189,20 @@ Would you like me to create a project for you?
|
|
|
203
189
|
|
|
204
190
|
```
|
|
205
191
|
Tool packs are bundles of related OAT skills that you install together.
|
|
206
|
-
|
|
192
|
+
Describe the packs listed by the installed tool-pack documentation, for example:
|
|
207
193
|
|
|
208
|
-
- **core** — Diagnostics and docs skills
|
|
209
|
-
|
|
194
|
+
- **core** — Diagnostics and docs skills.
|
|
195
|
+
Read the installed docs for scope and current membership.
|
|
210
196
|
- **workflows** — Project lifecycle skills (discover, plan, implement,
|
|
211
|
-
review, PR).
|
|
212
|
-
- **ideas** — Brainstorming and idea capture skills.
|
|
197
|
+
review, PR).
|
|
198
|
+
- **ideas** — Brainstorming and idea capture skills.
|
|
213
199
|
- **utility** — Cross-cutting tools (docs analysis, code review,
|
|
214
|
-
skill creation).
|
|
200
|
+
skill creation).
|
|
215
201
|
|
|
216
202
|
Install with: oat init tools
|
|
217
203
|
Manage with: oat tools list, oat tools update, oat tools outdated
|
|
218
204
|
|
|
219
|
-
See:
|
|
205
|
+
See: the installed tool-pack page discovered through Contents.
|
|
220
206
|
|
|
221
207
|
Would you like me to check which packs you have installed? (I'd run /oat-doctor --summary)
|
|
222
208
|
```
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-docs-analyze
|
|
3
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
|
+
argument-hint: '[target] [--ia] [--ia-guidance <path|url>]'
|
|
4
5
|
disable-model-invocation: true
|
|
5
6
|
user-invocable: true
|
|
6
|
-
allowed-tools: Read, Write, Bash(git:*), Bash(oat docs nav sync --check:*), Glob, Grep, AskUserQuestion, Task
|
|
7
|
+
allowed-tools: Read, Write, Bash(git:*), Bash(oat config:*), Bash(oat docs nav sync --check:*), Bash(pnpm:*), Bash(bash:*), Bash(jq:*), Bash(node:*), Bash(mkdir:*), Bash(date:*), Bash(echo:*), Bash(cd:*), Bash(pwd:*), Glob, Grep, AskUserQuestion, Task
|
|
7
8
|
metadata:
|
|
8
|
-
version: '1.
|
|
9
|
+
version: '1.7.0'
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# Docs Analysis
|
|
@@ -85,6 +86,38 @@ When executing this skill, provide lightweight progress feedback so the user can
|
|
|
85
86
|
|
|
86
87
|
## Process
|
|
87
88
|
|
|
89
|
+
### Shared authoring method and optional IA proposal
|
|
90
|
+
|
|
91
|
+
Independently probe each exact `authoring-docs/SKILL.md` in order:
|
|
92
|
+
`${SKILL_DIR}/..` from the loaded skill (`SKILL_DIR` is the absolute directory
|
|
93
|
+
containing that loaded `SKILL.md`), `${HOME}/.agents/skills`, then
|
|
94
|
+
`<repo-root>/.agents/skills`. Bind the first matching `authoring-docs` directory
|
|
95
|
+
once as `AUTHORING_DOCS_ROOT`; load `${AUTHORING_DOCS_ROOT}/SKILL.md` and use
|
|
96
|
+
that same root for every authoring-docs reference and script, never ambient
|
|
97
|
+
discovery. If none is found, name `authoring-docs`, stop this handoff, and give
|
|
98
|
+
the intended-scope recovery command: `oat tools install docs --scope <user|project>`
|
|
99
|
+
or `oat tools update --pack docs --scope <user|project>`.
|
|
100
|
+
|
|
101
|
+
Always use its landing-page contract, section entries and one-purpose-per-page
|
|
102
|
+
rule for the quality pass even without `--ia`. For IA work, read
|
|
103
|
+
`${AUTHORING_DOCS_ROOT}/references/guidance-sources.md` and use the source-aware config-get
|
|
104
|
+
interface/helper: explicit `--ia-guidance` or conversation → repo → user →
|
|
105
|
+
built-in. Preserve selected source order and cite locators/provenance in the
|
|
106
|
+
analysis artifact. External Markdown packs require `index.md` and `## Contents`;
|
|
107
|
+
non-repo inputs stay read-only and private contents never enter the artifact.
|
|
108
|
+
|
|
109
|
+
`--ia` is a skill argument, not a CLI docs command. It adds the shared IA Proposal
|
|
110
|
+
to the **same analysis artifact and existing artifact-review loop**. Read manifests,
|
|
111
|
+
UI navigators/journeys, CLI `bin`, routers, IaC, `e2e/`/`.maestro/`, existing docs
|
|
112
|
+
and independent monorepo units. Ask only decision-changing questions about reader
|
|
113
|
+
work contexts, independent verification, canonical facts and link survival.
|
|
114
|
+
Use the five axes before presets and show two plausible two-level trees with
|
|
115
|
+
5–8 representative page placements each, page jobs, nearest approved presets
|
|
116
|
+
and tradeoffs. A UI alone does not justify Product/Engineering/QA; size chooses
|
|
117
|
+
depth, not audience. For an existing tree respect AGENTS/contributing authority;
|
|
118
|
+
conflicts are `ask_user`, with both source citations. Propose only: no IA
|
|
119
|
+
persistence, restructure action or scaffold materialization in this stage.
|
|
120
|
+
|
|
88
121
|
### Step 0: Resolve Docs Target and Analysis Mode
|
|
89
122
|
|
|
90
123
|
Determine the documentation root using explicit docs-app evidence before generic
|
|
@@ -162,6 +195,8 @@ Capture the evidence sources that will justify later findings and recommendation
|
|
|
162
195
|
- existing `index.md` trees and repeated directory patterns
|
|
163
196
|
- exact missing or stale paths, commands, and page references
|
|
164
197
|
|
|
198
|
+
For framework apps, also read [Legacy scaffold checks](references/legacy-scaffold-checks.md). Apply those checks to the actual installed app, cite the observed file and source contract, and report discrepancies in Findings and Recommendations. These are read-only checks, not bootstrap post-patches. Do not change app-shell configuration during analysis or assume docs-apply can edit it; identify the manual upgrade needed when outside apply's current scope.
|
|
199
|
+
|
|
165
200
|
Do **not** infer docs structure conventions from a tiny sample of pages when the broader
|
|
166
201
|
tree or config disagrees.
|
|
167
202
|
|
|
@@ -265,8 +300,8 @@ For each evaluated page or directory:
|
|
|
265
300
|
syntax intentionally shown inside inline code, fenced examples, or template
|
|
266
301
|
snippets.
|
|
267
302
|
4. Check Markdown hygiene: opening code fences need language identifiers; shell
|
|
268
|
-
examples should follow local fence conventions, defaulting to `
|
|
269
|
-
|
|
303
|
+
examples should follow local fence conventions, defaulting to `bash` unless
|
|
304
|
+
the example is POSIX-only (`sh`) or local guidance requires another fence.
|
|
270
305
|
5. Flag empty headings, multiple document-level H1s outside intentional imported
|
|
271
306
|
README contexts, overlong frontmatter descriptions when local guidance
|
|
272
307
|
defines a limit, ellipsis-truncated descriptions, and README-copy metadata
|
|
@@ -15,6 +15,18 @@ oat_analysis_commit: { commitHash }
|
|
|
15
15
|
**Surface Type:** {mkdocs-app|oat-fumadocs-app|docs-tree|root-markdown}
|
|
16
16
|
**Commit:** {short-hash}
|
|
17
17
|
|
|
18
|
+
## IA guidance and proposal
|
|
19
|
+
|
|
20
|
+
- Selected sources in order: {locator + explicit/conversation/shared/user/builtin provenance}
|
|
21
|
+
- Resolved index entries: {entry paths/URLs; external Markdown has index.md + Contents}
|
|
22
|
+
- Local authority: {AGENTS/contributing source citations}
|
|
23
|
+
- Conflicts/unreadable sources: {ask_user with both citations, or none}
|
|
24
|
+
- IA proposal: {when --ia, embed the shared authoring-docs IA Proposal template:
|
|
25
|
+
two two-level trees, 5–8 placements each, page jobs, nearest approved presets,
|
|
26
|
+
evidence and tradeoffs; otherwise not requested}
|
|
27
|
+
|
|
28
|
+
Do not copy private guidance contents or persist an IA decision from this report.
|
|
29
|
+
|
|
18
30
|
## Summary
|
|
19
31
|
|
|
20
32
|
- **Files evaluated:** {N}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Legacy scaffold checks
|
|
2
|
+
|
|
3
|
+
Evaluate existing framework apps against the current contracts below. A match produces an evidence-backed finding in the analysis artifact, never an automatic rewrite. Cite the actual app path and line, the missing contract, confidence and a specific repair. Respect intentional user customization; when intent is unclear, use `ask_user`.
|
|
4
|
+
|
|
5
|
+
| Observed older shape | Finding and repair | Contract source |
|
|
6
|
+
| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
|
|
7
|
+
| Fumadocs `next.config.js` replaces `createDocsConfig` with `createMDX()({ reactStrictMode: true, turbopack: { root: __dirname } })` | High: static-export settings are missing and `__dirname` is invalid in ESM. Recommend a manual app-config upgrade to `createDocsConfig({ basePath, turbopack: { root: dirname(fileURLToPath(import.meta.url)) } })`, preserving `output: 'export'`, `trailingSlash`, `images.unoptimized`, base path and client environment. Verify the installed docs-config supports forwarding the root first. | `@open-agent-toolkit/docs-config` factory and the current Fumadocs template |
|
|
8
|
+
| Layout lacks Next `metadata`, or site title differs between branding, metadata and authored headings | Medium: site identity or document metadata is inconsistent. Report exact mismatches; titles belong in layout metadata and branding, not `createDocsConfig`. | Fumadocs layout template and Next metadata export |
|
|
9
|
+
| Getting Started has an empty description, bare commands with no working directory, or claims lint runs when package scripts disable it | Medium: setup guidance disagrees with package scripts or page metadata. Recommend corrected prose backed by the actual scripts. | Rendered scaffold package scripts and page frontmatter |
|
|
10
|
+
| Node prerequisite is a fixed old major or tells readers to guess from repo pins | Medium: compare `.nvmrc` first, then root `package.json` `engines.node`; quote the detected requirement. When neither exists, disclose the CLI minimum rather than claiming a repo pin. | Repository Node pin and current scaffold renderer |
|
|
11
|
+
| Authored `docs/index.md` says it is generated, or contributing lacks the generated-files boundary | Medium: distinguish authored `docs/index.md` from the generated app-root manifest. Document committed `docs/**/meta.json` and `oat docs nav sync` separately. | `oat docs generate-index` and `oat docs nav sync` |
|
|
12
|
+
| Contents links omit `.md` despite real Markdown targets | Medium: recommend `.md`-suffixed source links, which the build transforms into routes. | Authored Contents contract and docs-transforms links plugin |
|
|
13
|
+
| Contributing duplicates agent runtime rules rather than pointing to app-root `AGENTS.md` | Low: recommend consolidating runtime instructions into the existing agent guidance after approval; preserve custom rules. | Docs-app guidance and contributing audience boundary |
|
|
14
|
+
| MkDocs setup says `setup-docs.sh` creates a virtual environment, config calls `tooling` an object, or index points at an assumed `docs/index.md` | Medium: verify the actual script and `.oat/config.json`. The scaffold installs with the selected Python, uses a framework string, and seeds index/config as `mkdocs.yml`. | MkDocs setup script, documentation schema and scaffold config |
|
|
15
|
+
|
|
16
|
+
A user-owned dynamic app may intentionally omit static export. Do not apply a static-export finding to it without evidence that static output is required. Likewise, verify commands and filenames against the target repository; these patterns identify discrepancies, not authority to overwrite customization.
|
|
@@ -3,9 +3,9 @@ name: oat-docs-apply
|
|
|
3
3
|
description: Run when you have a docs analysis artifact and want to generate or update documentation structure and content. Creates a branch, applies approved changes, and optionally opens a PR.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
user-invocable: true
|
|
6
|
-
allowed-tools: Read, Write, Edit, Bash(git:*), Bash(gh:*), Glob, Grep, AskUserQuestion
|
|
6
|
+
allowed-tools: Read, Write, Edit, Bash(git:*), Bash(gh:*), Bash(oat:*), Bash(pnpm:*), Bash(bash:*), Bash(jq:*), Bash(mkdir:*), Bash(date:*), Bash(echo:*), Bash(cd:*), Bash(pwd:*), Glob, Grep, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: '1.4.
|
|
8
|
+
version: '1.4.5'
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Docs Apply
|
|
@@ -200,6 +200,24 @@ If branch creation fails because of unrelated local changes, ask the user to res
|
|
|
200
200
|
|
|
201
201
|
### Step 4: Apply Approved Changes
|
|
202
202
|
|
|
203
|
+
Independently probe each exact `authoring-docs/SKILL.md` in order:
|
|
204
|
+
`${SKILL_DIR}/..` from the loaded skill (`SKILL_DIR` is the absolute directory
|
|
205
|
+
containing that loaded `SKILL.md`), `${HOME}/.agents/skills`, then
|
|
206
|
+
`<repo-root>/.agents/skills`. Bind the first matching `authoring-docs` directory
|
|
207
|
+
once as `AUTHORING_DOCS_ROOT`; load `${AUTHORING_DOCS_ROOT}/SKILL.md` and use
|
|
208
|
+
that same root for every authoring-docs reference and script, never ambient
|
|
209
|
+
discovery. If none is found, name `authoring-docs`, stop this handoff, and give
|
|
210
|
+
the intended-scope recovery command: `oat tools install docs --scope <user|project>`
|
|
211
|
+
or `oat tools update --pack docs --scope <user|project>`.
|
|
212
|
+
|
|
213
|
+
Before content actions, use its page-purpose, landing, placement and five-axis IA
|
|
214
|
+
method within the approved recommendation scope. Carry the analysis artifact's ordered guidance
|
|
215
|
+
locators/provenance into the apply plan; do not silently re-resolve different
|
|
216
|
+
sources. Verify cited inputs still exist and remain read-only outside the repo.
|
|
217
|
+
Local AGENTS/contributing rules stay authoritative; a conflict is `ask_user`
|
|
218
|
+
and blocks that recommendation pending a fresh analysis/user decision. Cite
|
|
219
|
+
sources without copying private contents. This hook adds no restructure action.
|
|
220
|
+
|
|
203
221
|
Before the first approved write, initialize `OWNED_OUTPUT_FILES=()`. Append
|
|
204
222
|
each exact successfully created, modified or removed path at that write,
|
|
205
223
|
including both names of a rename and any generated navigation/index file this
|
|
@@ -12,6 +12,15 @@ oat_docs_target: { docs-target-path }
|
|
|
12
12
|
**Source Analysis:** `{analysis-artifact-path}`
|
|
13
13
|
**Docs Target:** `{docs-target-path}`
|
|
14
14
|
|
|
15
|
+
## Guidance provenance
|
|
16
|
+
|
|
17
|
+
- Analysis-selected IA sources, in order: {locators + provenance}
|
|
18
|
+
- Local authority: {AGENTS/contributing citations}
|
|
19
|
+
- Read-only sources verified: {resolved entries or blocked recommendation IDs}
|
|
20
|
+
- Conflicts: {ask_user disposition or none}
|
|
21
|
+
|
|
22
|
+
Keep the analysis selection; do not copy private contents or invent missing evidence.
|
|
23
|
+
|
|
15
24
|
## Instructions
|
|
16
25
|
|
|
17
26
|
Review the full recommendation set first, then choose a review mode:
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-docs-authoring
|
|
3
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
|
-
argument-hint: '[docs task or target path]'
|
|
4
|
+
argument-hint: '[docs task or target path] [--ia-guidance <path|url>]'
|
|
5
5
|
disable-model-invocation: false
|
|
6
|
-
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
6
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
7
7
|
user-invocable: true
|
|
8
8
|
metadata:
|
|
9
|
-
version: '1.
|
|
9
|
+
version: '1.2.0'
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# OAT Docs Authoring
|
|
@@ -14,9 +14,8 @@ metadata:
|
|
|
14
14
|
Use this skill for targeted documentation authoring and small structural edits
|
|
15
15
|
inside an existing OAT Markdown surface or OAT/Fumadocs docs app.
|
|
16
16
|
|
|
17
|
-
This is a thin wrapper over `authoring-docs
|
|
18
|
-
|
|
19
|
-
and review standards. Keep this wrapper focused on OAT Markdown/Fumadocs placement,
|
|
17
|
+
This is a thin wrapper over `authoring-docs` for universal evidence gathering,
|
|
18
|
+
page-type selection, writing style, templates, and review standards. Keep this wrapper focused on OAT Markdown/Fumadocs placement,
|
|
20
19
|
navigation, generated artifacts, validation, and lifecycle boundaries.
|
|
21
20
|
|
|
22
21
|
## Prerequisites
|
|
@@ -111,9 +110,22 @@ Use `references/docs-root-resolution.md` before assuming any path. OAT docs apps
|
|
|
111
110
|
commonly live outside `apps/oat-docs`, and `.oat/config.json` may describe the
|
|
112
111
|
generated root index separately from the authored docs root.
|
|
113
112
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
113
|
+
Independently probe each exact `authoring-docs/SKILL.md` in order:
|
|
114
|
+
`${SKILL_DIR}/..` from the loaded skill (`SKILL_DIR` is the absolute directory
|
|
115
|
+
containing that loaded `SKILL.md`), `${HOME}/.agents/skills`, then
|
|
116
|
+
`<repo-root>/.agents/skills`. Bind the first matching `authoring-docs` directory
|
|
117
|
+
once as `AUTHORING_DOCS_ROOT`; load `${AUTHORING_DOCS_ROOT}/SKILL.md` and use
|
|
118
|
+
that same root for every authoring-docs reference and script, never ambient
|
|
119
|
+
discovery. If none is found, name `authoring-docs`, stop this handoff, and give
|
|
120
|
+
the intended-scope recovery command: `oat tools install docs --scope <user|project>`
|
|
121
|
+
or `oat tools update --pack docs --scope <user|project>`.
|
|
122
|
+
|
|
123
|
+
Use the bound skill's reference map for evidence gathering, page type, writing
|
|
124
|
+
style, templates and review rubric. For IA work use its five-axis method and
|
|
125
|
+
`${AUTHORING_DOCS_ROOT}/references/guidance-sources.md`: explicit `--ia-guidance` or
|
|
126
|
+
conversation → repo config → user config → built-in. Cite ordered source
|
|
127
|
+
locators/provenance in the handoff; respect AGENTS/contributing authority,
|
|
128
|
+
keep non-repo sources read-only and report conflicts as `ask_user`.
|
|
117
129
|
|
|
118
130
|
### Step 2: Inspect Evidence and Local Maps
|
|
119
131
|
|
|
@@ -42,8 +42,7 @@ Stop and reroute when you notice:
|
|
|
42
42
|
## Migration Pointer
|
|
43
43
|
|
|
44
44
|
Full MkDocs-to-OAT-Fumadocs migration is not bootstrap and is not targeted
|
|
45
|
-
authoring. Use the
|
|
46
|
-
when available, and keep the migration in an OAT project or explicit migration
|
|
45
|
+
authoring. Use the bundled [MkDocs-to-OAT-Fumadocs migration guide](mkdocs-to-oat-fumadocs-refactor-guide.md), and keep the migration in an OAT project or explicit migration
|
|
47
46
|
branch with owner-review items for unverifiable claims.
|
|
48
47
|
|
|
49
48
|
For migration-sensitive follow-up after the migration workflow has created a
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# MkDocs to OAT/Fumadocs migration guide
|
|
2
|
+
|
|
3
|
+
Use this standalone handoff for an explicitly approved migration of an existing MkDocs site. Bootstrap creates an app; targeted authoring edits content; neither performs a full migration. Keep migration work in an OAT project or an explicit migration branch, with the agreed scope and owner recorded before changes.
|
|
4
|
+
|
|
5
|
+
This guide is reconstructed from current OAT CLI, template and authoring contracts. The older project-local handoff mentioned in OAT's docs-authoring project summary was unavailable; this is not a copy of that historical document.
|
|
6
|
+
|
|
7
|
+
## Preflight: inventory before mutation
|
|
8
|
+
|
|
9
|
+
1. Read repository and docs-local instructions, `mkdocs.yml`, `.oat/config.json`, Python dependency files, docs package scripts and deployment workflows. Resolve the actual content root, published URL/base path and build output; do not assume `docs/` or GitHub Pages.
|
|
10
|
+
2. Inventory every source page, attachment, image, local link, anchor, nav entry and public URL. Record pages outside nav too. Keep a before/after mapping for every source path and URL; never silently drop an unlisted page.
|
|
11
|
+
3. Inventory MkDocs-specific features: admonitions, tabs, includes/macros, plugin-generated pages, API generation, Mermaid, custom assets/theme, search and redirects. Distinguish supported conversion from manual work and unsupported features.
|
|
12
|
+
4. Find claims requiring code/config evidence, confidential material, unresolved product behavior and owner-only knowledge. Record owner-review items rather than guessing or publishing uncertain claims.
|
|
13
|
+
5. Discover validation commands and required runtimes from scripts, CI and contributor instructions. Establish a baseline with exact commands and exit codes, including existing failures. Agree on the target app location, dependency policy, URL preservation strategy and deployment change with the user.
|
|
14
|
+
|
|
15
|
+
Produce an inventory and proposed migration scope for approval. Do not overwrite the MkDocs app, clear its configuration, delete Python tooling or switch deployment as a side effect of preparing a proposal.
|
|
16
|
+
|
|
17
|
+
## Phase 1: create the approved target app
|
|
18
|
+
|
|
19
|
+
Use `oat docs init --help` to inspect installed capabilities. Scaffold Fumadocs into an empty, approved destination with `--framework fumadocs`, a package/app name, site name, description and target directory. Bootstrap can guide this step, but creating a second app does not imply support for two active `documentation` entries: the current config describes one surface. Explicitly agree when the configured docs root will switch, and preserve the old config for rollback.
|
|
20
|
+
|
|
21
|
+
Read the rendered package scripts and configuration. The current Fumadocs template uses Next static export, trailing slashes and unoptimized images through `createDocsConfig`. For nested-standalone repos only, it forwards an ESM-safe app directory as `turbopack.root`; monorepo and single-package scaffolds use Next.js root discovery. Preserve the site's base path and `NEXT_PUBLIC_BASE_PATH`; set site identity through layout metadata and `DocsLayout` branding, not factory title options.
|
|
22
|
+
|
|
23
|
+
Install using the repository's package-manager conventions. Keep dependency or workspace changes visible in the migration diff. Do not delete the old site yet.
|
|
24
|
+
|
|
25
|
+
## Phase 2: migrate content without losing source
|
|
26
|
+
|
|
27
|
+
Copy approved content and assets into the target content root, retaining the source until parity is verified. Use the inventory to account for every file.
|
|
28
|
+
|
|
29
|
+
`oat docs migrate` converts supported MkDocs admonitions and injects missing frontmatter in `.md` files. It is a dry run by default; `--apply` writes changes. `--config` supplies MkDocs nav title hints, not a complete navigation or app migration. For example, from the repository root:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Replace paths with the approved destination and preserved source config.
|
|
33
|
+
oat docs migrate --docs-dir apps/handbook/docs --config documentation/mkdocs.yml
|
|
34
|
+
# Review the preview and approve the content conversion before writing.
|
|
35
|
+
oat docs migrate --docs-dir apps/handbook/docs --config documentation/mkdocs.yml --apply
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The command does not migrate app shells, deployment, plugins, macros, redirects or all Markdown extensions. Review seeded descriptions for meaningful content; metadata injection is not editorial completion. Convert unsupported syntax manually within the approved scope, preferring `.md` and using `.mdx` only where components require it. Preserve code examples, cautions, provenance and external attributions.
|
|
39
|
+
|
|
40
|
+
## Phase 3: preserve navigation, links and URLs
|
|
41
|
+
|
|
42
|
+
Create authored `index.md` pages with purpose and `## Contents` maps in each content directory. Map every retained page into the approved tree; use `.md` or `subdir/index.md` targets and the current dash-bullet Contents grammar. When consolidating `overview.md`, carry its content and inbound references into `index.md` and retain the old-URL mapping.
|
|
43
|
+
|
|
44
|
+
Run `oat docs nav sync --target-dir <app-root>` to generate committed `docs/**/meta.json` navigation from authored maps. Resolve unlisted pages explicitly. Do not hand-edit generated navigation. The separate app-root `index.md` manifest is generated by `oat docs generate-index` through the scaffold's `predev`/`prebuild`; it is not the authored root page.
|
|
45
|
+
|
|
46
|
+
Rewrite inbound links, relative assets and anchors using the before/after map. Test public URLs under the real base path. Choose an approved host-compatible recovery for moved URLs; do not assume Next redirects work with static export. If old URLs cannot be preserved, report the exact break and obtain a decision before deployment changes or source deletion.
|
|
47
|
+
|
|
48
|
+
## Phase 4: validate the migration
|
|
49
|
+
|
|
50
|
+
Discover and run the target app's actual lint, format, build and any link checks. Do not treat disabled/no-op scripts as validation. Run nav sync's read-only `--check` form to check committed navigation. Run existing repository gates required for package, config and workflow changes; keep exact exit codes and distinguish new failures from the baseline.
|
|
51
|
+
|
|
52
|
+
Inspect the static output and use the available browser to spot-check:
|
|
53
|
+
|
|
54
|
+
- landing and deeply nested pages, sidebar labels/order and search;
|
|
55
|
+
- old and new URLs, anchors, relative links and base-path assets;
|
|
56
|
+
- admonitions, tabs, tables, Mermaid, code blocks and custom components;
|
|
57
|
+
- title/description metadata, theme and layout behavior.
|
|
58
|
+
|
|
59
|
+
A successful build does not prove rendering or link parity. If a check cannot run, record the missing evidence and owner action; do not mark it verified. Review every inventory entry as migrated, deliberately retained, or explicitly approved for retirement, with a reason.
|
|
60
|
+
|
|
61
|
+
## Phase 5: review, switch and retain rollback
|
|
62
|
+
|
|
63
|
+
Present the content conservation diff, URL map, validation evidence, unresolved owner-review items, config changes and deployment proposal. Obtain user approval before switching the configured docs surface, changing publication workflows or retiring the old site. Use `oat-docs-analyze` for a read-only audit and the appropriate reviewed workflow for follow-up changes; do not assume docs-apply may edit app-shell or deployment configuration.
|
|
64
|
+
|
|
65
|
+
Only after parity and approval, remove obsolete MkDocs dependencies/configuration and update repository guidance to the new authored source, generated artifacts and commands. Keep an explicit rollback reference to the prior site/config/deployment. Package publishing and production deployment require their own authorization.
|
|
66
|
+
|
|
67
|
+
## Final report
|
|
68
|
+
|
|
69
|
+
Report the approved scope, changed files and commits; source-to-target page and URL dispositions; commands and exit codes; rendered spot checks; the configured docs root and publication behavior; known failures and unverified evidence; owner-review items and decisions; and the rollback reference. State whether the migration is ready for owner acceptance, rather than treating the absence of build errors as acceptance.
|
|
70
|
+
|
|
71
|
+
## Current contract references
|
|
72
|
+
|
|
73
|
+
Within this installed skill, read [lifecycle boundaries](lifecycle-boundaries.md), [the Fumadocs contract](oat-fumadocs-contract.md) and [validation](validation.md). Load `authoring-docs` from installed scope for universal evidence and writing guidance. Inspect installed CLI help and rendered templates before executing commands; the consuming repository's instructions and approved migration scope remain authoritative.
|