@open-agent-toolkit/cli 0.1.20 → 0.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/agents/oat-reviewer.md +48 -10
- package/assets/docs/cli-utilities/config-and-local-state.md +12 -0
- package/assets/docs/cli-utilities/configuration.md +19 -1
- package/assets/docs/contributing/documentation.md +6 -2
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +24 -14
- package/assets/docs/docs-tooling/commands.md +16 -14
- package/assets/docs/docs-tooling/workflows.md +22 -9
- package/assets/docs/reference/cli-reference.md +6 -2
- package/assets/docs/reference/docs-index-contract.md +28 -6
- package/assets/docs/reference/index.md +1 -1
- package/assets/docs/workflows/projects/implementation-execution.md +1 -1
- package/assets/docs/workflows/projects/reviews.md +41 -0
- package/assets/docs/workflows/skills/index.md +3 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/authoring-docs/SKILL.md +135 -0
- package/assets/skills/authoring-docs/references/categories.md +251 -0
- package/assets/skills/authoring-docs/references/information-architecture.md +156 -0
- package/assets/skills/authoring-docs/references/page-types.md +119 -0
- package/assets/skills/authoring-docs/references/principles.md +98 -0
- package/assets/skills/authoring-docs/references/review-rubric.md +169 -0
- package/assets/skills/authoring-docs/references/templates.md +549 -0
- package/assets/skills/authoring-docs/references/workflow.md +133 -0
- package/assets/skills/authoring-docs/references/writing-style.md +128 -0
- package/assets/skills/oat-agent-instructions-analyze/SKILL.md +43 -13
- package/assets/skills/oat-docs-analyze/SKILL.md +183 -28
- package/assets/skills/oat-docs-analyze/references/analysis-artifact-template.md +101 -1
- package/assets/skills/oat-docs-analyze/references/directory-assessment-criteria.md +16 -0
- package/assets/skills/oat-docs-analyze/references/quality-checklist.md +83 -3
- package/assets/skills/oat-docs-authoring/SKILL.md +193 -0
- package/assets/skills/oat-docs-authoring/references/docs-root-resolution.md +64 -0
- package/assets/skills/oat-docs-authoring/references/lifecycle-boundaries.md +51 -0
- package/assets/skills/oat-docs-authoring/references/oat-fumadocs-contract.md +77 -0
- package/assets/skills/oat-docs-authoring/references/targeted-authoring-workflow.md +61 -0
- package/assets/skills/oat-docs-authoring/references/validation.md +61 -0
- package/assets/skills/oat-docs-bootstrap/SKILL.md +15 -11
- package/assets/skills/oat-docs-bootstrap/assets/AGENTS.md.template +5 -5
- package/assets/skills/oat-project-discover/SKILL.md +22 -4
- package/assets/skills/oat-project-import-plan/SKILL.md +38 -9
- package/assets/skills/oat-project-plan/SKILL.md +30 -7
- package/assets/skills/oat-project-plan-writing/SKILL.md +45 -2
- package/assets/skills/oat-project-progress/SKILL.md +9 -3
- package/assets/skills/oat-project-quick-start/SKILL.md +40 -8
- package/assets/skills/oat-project-review-provide/SKILL.md +24 -11
- package/assets/skills/oat-project-review-receive/SKILL.md +37 -17
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +36 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -0
- package/dist/commands/init/tools/shared/skill-manifest.d.ts +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.js +2 -0
- package/dist/commands/review/index.d.ts +3 -0
- package/dist/commands/review/index.d.ts.map +1 -0
- package/dist/commands/review/index.js +7 -0
- package/dist/commands/review/latest.d.ts +23 -0
- package/dist/commands/review/latest.d.ts.map +1 -0
- package/dist/commands/review/latest.js +182 -0
- 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 +12 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +4 -0
- package/package.json +2 -2
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: OAT Fumadocs authoring contract
|
|
3
|
+
description: Authored source, navigation, link, file-type, generated-index, and exception rules for OAT/Fumadocs docs apps.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OAT Fumadocs Authoring Contract
|
|
7
|
+
|
|
8
|
+
The OAT/Fumadocs contract is tooling-critical. It is not just style.
|
|
9
|
+
|
|
10
|
+
## Authored Source of Truth
|
|
11
|
+
|
|
12
|
+
- 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`.
|
|
15
|
+
- Every authored `index.md` that represents a content directory has a
|
|
16
|
+
`## Contents` section.
|
|
17
|
+
- `## Contents` lists sibling pages and immediate child directories for that
|
|
18
|
+
directory.
|
|
19
|
+
- If you create a child directory, create `child/index.md` and link it from the
|
|
20
|
+
parent as `child/index.md`.
|
|
21
|
+
|
|
22
|
+
## Links in `## Contents`
|
|
23
|
+
|
|
24
|
+
Use file-path-friendly relative Markdown links:
|
|
25
|
+
|
|
26
|
+
- leaf page: `[Title](page.md)`;
|
|
27
|
+
- child directory: `[Section](section/index.md)`;
|
|
28
|
+
- avoid extensionless local docs links for new authored navigation entries;
|
|
29
|
+
- preserve anchors only when the target heading exists and the local renderer
|
|
30
|
+
supports the anchor.
|
|
31
|
+
|
|
32
|
+
Existing extensionless links are drift, not precedent. Normalize them only when
|
|
33
|
+
the task scope or an approved recommendation covers that change.
|
|
34
|
+
|
|
35
|
+
## File Types
|
|
36
|
+
|
|
37
|
+
- Prefer `.md` for plain content pages.
|
|
38
|
+
- Use `.mdx` only for pages that need JSX, imports, custom components, or other
|
|
39
|
+
MDX-only behavior.
|
|
40
|
+
- Do not create `overview.md` as a directory entrypoint. Use `index.md` with
|
|
41
|
+
`## Contents`.
|
|
42
|
+
- Add or preserve at least `title` and `description` frontmatter on touched
|
|
43
|
+
pages unless local guidance defines a stricter schema.
|
|
44
|
+
|
|
45
|
+
## Generated Root Indexes
|
|
46
|
+
|
|
47
|
+
Many OAT/Fumadocs apps have an app-root generated `index.md` that rolls up the
|
|
48
|
+
authored docs tree. Treat it as generated output.
|
|
49
|
+
|
|
50
|
+
- Do not hand-edit generated root indexes.
|
|
51
|
+
- Regenerate or freshness-check them through local scripts when navigation
|
|
52
|
+
changes.
|
|
53
|
+
- Do not treat a generated-root entry as proof that the nearest parent
|
|
54
|
+
`## Contents` is healthy.
|
|
55
|
+
- If generated output is intentionally gitignored or locally absent, record that
|
|
56
|
+
in the handoff instead of inventing a manual replacement.
|
|
57
|
+
|
|
58
|
+
## Exceptions and Local Extensions
|
|
59
|
+
|
|
60
|
+
- Asset-only directories do not need `index.md` unless local guidance says so.
|
|
61
|
+
- Build output, hidden tool directories, and generated artifacts are not content
|
|
62
|
+
directories.
|
|
63
|
+
- Optional Fumadocs metadata files, such as `meta.json`, may refine sidebar
|
|
64
|
+
presentation when local style uses them. They do not replace `## Contents`.
|
|
65
|
+
- Preserve local audience routers, ownership notes, and app-shell
|
|
66
|
+
customizations.
|
|
67
|
+
|
|
68
|
+
## Quick Check
|
|
69
|
+
|
|
70
|
+
For every touched directory or page, confirm:
|
|
71
|
+
|
|
72
|
+
- content directory has `index.md`;
|
|
73
|
+
- local `index.md` has useful `## Contents`;
|
|
74
|
+
- new links include `.md` or `subdir/index.md`;
|
|
75
|
+
- generated root index was not hand-edited;
|
|
76
|
+
- `.mdx` has a real reason;
|
|
77
|
+
- no new `overview.md` entrypoint was introduced.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Targeted OAT docs authoring workflow
|
|
3
|
+
description: Focused edit loop for small OAT/Fumadocs documentation authoring and restructuring tasks.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Targeted OAT Docs Authoring Workflow
|
|
7
|
+
|
|
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.
|
|
10
|
+
|
|
11
|
+
## 1. Bound the Change
|
|
12
|
+
|
|
13
|
+
- Restate the requested target in terms of pages or directories.
|
|
14
|
+
- Identify whether the work is content authoring, local restructuring, link
|
|
15
|
+
repair, or review.
|
|
16
|
+
- If the task becomes setup, repo-wide audit, recommendation-driven apply,
|
|
17
|
+
project-derived documentation, or full migration work, stop and route through
|
|
18
|
+
`references/lifecycle-boundaries.md`.
|
|
19
|
+
|
|
20
|
+
## 2. Gather Evidence
|
|
21
|
+
|
|
22
|
+
- Read local instructions before editing.
|
|
23
|
+
- Inspect current docs pages in the target area.
|
|
24
|
+
- Inspect source code, package scripts, CLI help, schemas, tests, or deployment
|
|
25
|
+
files needed to support factual claims.
|
|
26
|
+
- Use `authoring-docs` for page type, evidence quality, writing style,
|
|
27
|
+
templates, and review rubric.
|
|
28
|
+
|
|
29
|
+
## 3. Preserve Local Navigation
|
|
30
|
+
|
|
31
|
+
- Read the nearest authored map before changing a page.
|
|
32
|
+
- For moves or renames, update links to the old path in the same change.
|
|
33
|
+
- Preserve local audience routers, area ownership notes, and sidebar metadata
|
|
34
|
+
when present.
|
|
35
|
+
|
|
36
|
+
For page moves and renames:
|
|
37
|
+
|
|
38
|
+
- update both the old parent and new parent `## Contents` sections;
|
|
39
|
+
- search for links to the old path before finishing;
|
|
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;
|
|
43
|
+
- do not treat a generated-root entry as proof that the nearest parent map is
|
|
44
|
+
correct.
|
|
45
|
+
|
|
46
|
+
## 4. Validate Locally
|
|
47
|
+
|
|
48
|
+
- Read package scripts before choosing validation commands.
|
|
49
|
+
- Run generation or validation scripts that are relevant to the touched files.
|
|
50
|
+
- For render-sensitive Markdown, inspect the rendered result when practical.
|
|
51
|
+
|
|
52
|
+
## 5. Report Clearly
|
|
53
|
+
|
|
54
|
+
Handoff with:
|
|
55
|
+
|
|
56
|
+
- files changed;
|
|
57
|
+
- source evidence inspected;
|
|
58
|
+
- maps and links updated;
|
|
59
|
+
- generated artifacts checked or regenerated;
|
|
60
|
+
- validation command results;
|
|
61
|
+
- unresolved facts or owner-review items.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: OAT docs authoring validation
|
|
3
|
+
description: Local validation, generated-index checks, and render spot-check guidance for targeted OAT/Fumadocs docs changes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OAT Docs Authoring Validation
|
|
7
|
+
|
|
8
|
+
Validation is local to the docs app. Read scripts and instructions before
|
|
9
|
+
choosing commands.
|
|
10
|
+
|
|
11
|
+
## Script Discovery
|
|
12
|
+
|
|
13
|
+
Inspect the docs app `package.json` and local instructions for:
|
|
14
|
+
|
|
15
|
+
- `predev` or `prebuild` generation steps;
|
|
16
|
+
- `fumadocs-mdx`;
|
|
17
|
+
- `oat docs generate-index`;
|
|
18
|
+
- docs lint, format, type-check, test, or build scripts;
|
|
19
|
+
- intentionally disabled or no-op scripts.
|
|
20
|
+
|
|
21
|
+
Use the local script names and package manager style already present in the
|
|
22
|
+
repo. Do not invent universal docs commands.
|
|
23
|
+
|
|
24
|
+
## Generated Index Checks
|
|
25
|
+
|
|
26
|
+
When navigation, file placement, or `## Contents` changes:
|
|
27
|
+
|
|
28
|
+
- regenerate the generated root index through the local command when available;
|
|
29
|
+
- if generation is tied to `predev` or `prebuild`, run the smallest local
|
|
30
|
+
command that updates or checks the generated output;
|
|
31
|
+
- inspect the generated diff for stale paths, missing pages, unexpected
|
|
32
|
+
ordering drift, or missing generated-file warning banners;
|
|
33
|
+
- leave generated output unedited by hand.
|
|
34
|
+
|
|
35
|
+
If generated output is ignored, absent by policy, or cannot be produced in the
|
|
36
|
+
current environment, record the exact reason in the handoff.
|
|
37
|
+
|
|
38
|
+
## Local Contract Checks
|
|
39
|
+
|
|
40
|
+
Before finishing:
|
|
41
|
+
|
|
42
|
+
- every touched content directory has `index.md`;
|
|
43
|
+
- every touched authored `index.md` has a meaningful `## Contents`;
|
|
44
|
+
- parent maps include new or moved immediate children;
|
|
45
|
+
- links to moved files were updated;
|
|
46
|
+
- new local navigation links use `.md` or `subdir/index.md`;
|
|
47
|
+
- no new `overview.md` or unnecessary `.mdx` page was introduced.
|
|
48
|
+
|
|
49
|
+
## Render Spot Checks
|
|
50
|
+
|
|
51
|
+
Build success is not always enough for render-sensitive content. Spot-check the
|
|
52
|
+
rendered result when changes include:
|
|
53
|
+
|
|
54
|
+
- migrated MkDocs syntax;
|
|
55
|
+
- callouts, tabs, Mermaid, images, iframes, or custom MDX components;
|
|
56
|
+
- large link rewrites or directory moves;
|
|
57
|
+
- frontmatter or metadata behavior;
|
|
58
|
+
- app-shell or layout changes.
|
|
59
|
+
|
|
60
|
+
Use the app's local dev or build workflow when practical. If rendering cannot
|
|
61
|
+
be checked, state that explicitly.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-docs-bootstrap
|
|
3
|
-
version: 1.0
|
|
3
|
+
version: 1.1.0
|
|
4
4
|
description: Use when bootstrapping a new OAT docs app in a repo. Guides the user through preflight detection, richer input gathering than the raw CLI, `oat docs init` invocation with labeled post-patches for open CLI gaps, build verification, post-scaffold config inspection, and an educational walkthrough. Supports Fumadocs (full path) and MkDocs (lean path with defined minimum contract).
|
|
5
5
|
argument-hint: '<optional-target-dir>'
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -646,7 +646,7 @@ Four sub-findings, each with its own gate, target, and idempotency check. All su
|
|
|
646
646
|
|
|
647
647
|
## Generated files
|
|
648
648
|
|
|
649
|
-
|
|
649
|
+
For Fumadocs apps, the root-level generated manifest at `<appRoot>/index.md` is regenerated from the Markdown file tree under `docs/` on every `predev` / `prebuild`. Do not hand-edit it; edit the authored source under `docs/` instead, and compare the generated manifest against authored `## Contents` when checking freshness. For MkDocs apps, the derived navigation artifact is the `nav:` section of `mkdocs.yml`, not a root manifest.
|
|
650
650
|
|
|
651
651
|
<!-- /FP-13 patch -->
|
|
652
652
|
```
|
|
@@ -844,7 +844,7 @@ If the `documentation` section is missing or malformed after a successful CLI in
|
|
|
844
844
|
For each field in `documentation`, check that the referenced path exists and has the expected type:
|
|
845
845
|
|
|
846
846
|
- `root`: must be a directory that exists on disk (absolute or resolved-relative to `$REPO_ROOT`).
|
|
847
|
-
- `index`: must be a file that exists on disk
|
|
847
|
+
- `index`: must be a file that exists on disk. For Fumadocs, this is the generated app-root manifest at `<appRoot>/index.md`, regenerated from the Markdown file tree under `docs/`. For MkDocs, this is the authored source root at `<appRoot>/docs/index.md`; generated navigation lives in `mkdocs.yml` `nav:`.
|
|
848
848
|
- `config`: MkDocs only — must be a file that exists on disk (`<appRoot>/mkdocs.yml`). For Fumadocs, this field is absent; no check needed.
|
|
849
849
|
- `tooling.framework`: must match the Input Result `framework`. Mismatch is surprising and indicates drift.
|
|
850
850
|
- `tooling.lint` / `tooling.format`: must match Input Result values.
|
|
@@ -928,7 +928,10 @@ Narrate each field actually present in their config (skip fields that are absent
|
|
|
928
928
|
|
|
929
929
|
- **`documentation.root`** — the scaffolded app directory. Downstream tools (`oat-project-document`, `oat-docs-analyze`, `oat-docs-apply`) use this to find "the docs" without the user having to tell them.
|
|
930
930
|
- **`documentation.tooling`** — framework + lint + format. `oat-docs-analyze` uses `framework` to pick the right rule set; the tooling values also get echoed into the `## Documentation` section the CLI wrote into root `AGENTS.md`.
|
|
931
|
-
- **`documentation.index`** —
|
|
931
|
+
- **`documentation.index`** — branch this narration on the inspected `documentation.tooling` and path; do not describe one meaning for every framework:
|
|
932
|
+
- **Fumadocs:** this should be the generated app-root manifest, usually `<appRoot>/index.md`, after the successful build ran `oat docs generate-index`. Explain that this machine-shaped file is how tools inspect the full Markdown file tree, and that the authored source map the user edits is a separate file at `<appRoot>/docs/index.md` with its own `## Contents`.
|
|
933
|
+
- **Fumadocs stale path warning:** if the inspected path still points inside `<appRoot>/docs/` after build verification, do not teach that as normal. Surface it as a warning that `oat docs generate-index` did not update `documentation.index` as expected, then point the user to Section B for the generated/authored split.
|
|
934
|
+
- **MkDocs:** this should point at the configured MkDocs nav/config surface, usually `<appRoot>/mkdocs.yml` and matching `documentation.config`. Explain that the YAML file contains the generated/derived `nav:` block when `oat docs nav sync` is used, while authored `docs/index.md` and nested `## Contents` sections remain the source maps the user edits.
|
|
932
935
|
- **`documentation.config`** (MkDocs only) — path to `mkdocs.yml`. Present for MkDocs because its chrome/nav is YAML-configured; absent for Fumadocs because chrome is code.
|
|
933
936
|
- **`documentation.requireForProjectCompletion`** — the opt-in collected in Step 5e. If `true`, `oat-project-complete` will block project completion until `oat-docs-analyze` reports no open recommendations. Explain whichever value is set on this project.
|
|
934
937
|
|
|
@@ -941,17 +944,18 @@ If `Scaffold Result.rootBuildPatch` is present, narrate it here before moving on
|
|
|
941
944
|
|
|
942
945
|
End with: "This config is how every OAT docs tool finds your docs. Editing it by hand is supported — but changes to `root` or `config` paths need to match reality on disk."
|
|
943
946
|
|
|
944
|
-
#### Section B (both frameworks) —
|
|
947
|
+
#### Section B (both frameworks) — Authored source and generated navigation
|
|
945
948
|
|
|
946
|
-
This section prevents the footgun from FP-13 sub-finding D: users silently hand-edit the generated `index.md` and wonder why their edits vanish on the next build.
|
|
949
|
+
This section prevents the footgun from FP-13 sub-finding D: users silently hand-edit the Fumadocs generated root `index.md` and wonder why their edits vanish on the next build.
|
|
947
950
|
|
|
948
951
|
Narrate:
|
|
949
952
|
|
|
950
953
|
- **The authored source** at `<appRoot>/docs/index.md`. This is the file the user edits. It has frontmatter (`title`, `description`) and a `## Contents` section listing direct children of the docs root. It is the top of a fractal: every directory has its own `index.md`, each with its own `## Contents`.
|
|
951
|
-
- **The generated map** at `<appRoot>/index.md
|
|
952
|
-
- **
|
|
954
|
+
- **The Fumadocs generated map** at `<appRoot>/index.md`. Regenerated on every `predev` / `prebuild` by the `oat docs generate-index` command. Machine-shaped: inventories Markdown files with titles and descriptions so tools have a single searchable map. **Hand-edits are silently clobbered.**
|
|
955
|
+
- **The MkDocs derived nav** in `mkdocs.yml` `nav:`. MkDocs does not use a Fumadocs-style generated app-root manifest; its generated/derived navigation boundary is the YAML nav block.
|
|
956
|
+
- **How to tell them apart when opening a file.** If the file sits inside `docs/`, it's authored. If it sits at `<appRoot>/index.md` (outside `docs/`), it's the Fumadocs generated manifest — and when the CLI or Scaffold-integrity FP-13/D.2 wrote the warning correctly, the first line is `<!-- AUTOGENERATED by \`oat docs generate-index\`... -->`.
|
|
953
957
|
|
|
954
|
-
End with: "Always edit `docs/index.md` and the `## Contents` sections.
|
|
958
|
+
End with: "Always edit `docs/index.md` and the `## Contents` sections. In Fumadocs, never edit the root-level `index.md` — your edits will disappear next build. In MkDocs, treat `mkdocs.yml` `nav:` as derived from authored Contents unless the local workflow says otherwise."
|
|
955
959
|
|
|
956
960
|
#### Section C (both frameworks) — The `## Contents` contract
|
|
957
961
|
|
|
@@ -962,7 +966,7 @@ Narrate:
|
|
|
962
966
|
- **Every directory under `docs/` has an `index.md`.** No exceptions, no `overview.md`, no README-as-index. Missing `index.md`s are the first thing `oat-docs-analyze` flags.
|
|
963
967
|
- **Every `index.md` has a `## Contents` section.** The section is a plain Markdown bulleted list of links to the direct children of that directory — both subdirectory `index.md`s and leaf pages.
|
|
964
968
|
- **Link targets use `.md` extensions.** Leaf pages link as `[Title](page.md)`; subdirectories link as `[Section](subdir/index.md)`. The `@open-agent-toolkit/docs-transforms` remark-links plugin normalizes these at build time for Fumadocs routing (`.md` stripped; `dir/index.md` collapsed to `dir`). `.md`-suffixed authored links render correctly **and** let agents follow each link to the target file without path inference — the best of both worlds.
|
|
965
|
-
- **The `## Contents` section is the machine-readable local map.**
|
|
969
|
+
- **The `## Contents` section is the machine-readable local map.** For Fumadocs, it remains the authored navigation intent that agents maintain and compare against the generated app-root manifest. For MkDocs, `oat docs nav sync` reads it to update `mkdocs.yml` `nav:`. `oat-docs-analyze` reads the same authored source to find orphaned pages and stale generated artifacts.
|
|
966
970
|
- **Anything not listed in `## Contents` is invisible to the tooling.** Adding a Markdown file is not enough — it must also appear under the parent `index.md`'s `## Contents`.
|
|
967
971
|
|
|
968
972
|
Show the user their own `docs/index.md` `## Contents` as a concrete example (read the file and paste the relevant 5–15 lines). If `patchesApplied` includes an `FP-16` entry with `status: 'applied'`, mention it — the skill rewrote the scaffold's extension-less links to `.md`-suffixed form so agents can follow them. Then note: "That's the pattern. Every directory you create from now on follows the same shape — `.md`-suffixed links, bulleted list, dash-separated summary per entry."
|
|
@@ -1007,7 +1011,7 @@ In scope (required — share these):
|
|
|
1007
1011
|
- **Material theme provides the default UI.** Light/dark toggle, responsive sidebar, search UI. Config lives under `theme:` in `mkdocs.yml`.
|
|
1008
1012
|
- **Plugins are pip-installed and named in `mkdocs.yml`.** The scaffold's `requirements.txt` pins the plugins currently wired in. Adding a new plugin = add to both files.
|
|
1009
1013
|
- **Python environment via `requirements.txt` + `setup-docs.sh`.** The scaffold provides a `setup-docs.sh` that creates a venv, installs `requirements.txt`, and is idempotent on re-run. Use it; the skill assumes you will.
|
|
1010
|
-
- **The shared concepts still apply.** The `## Contents` contract (Section C), the
|
|
1014
|
+
- **The shared concepts still apply.** The `## Contents` contract (Section C), the authored-source/generated-navigation model (Section B), and the three agent-instruction surfaces (Section D) all transfer directly.
|
|
1011
1015
|
|
|
1012
1016
|
Deferred (out of scope for this skill — point, don't teach):
|
|
1013
1017
|
|
|
@@ -12,13 +12,13 @@ This file tells agents how to work inside `{{APP_DIR}}`, the documentation app f
|
|
|
12
12
|
2. Add frontmatter with at minimum `title:` and `description:`. The title drives nav display and page `<title>`; the description drives search previews, social cards, and sibling summaries. Empty descriptions hurt all three.
|
|
13
13
|
3. Update the nearest `index.md`'s `## Contents` section to include a link to the new page. Use `.md`-suffixed relative links: `[Title](page.md)` for leaf pages, `[Section](subdir/index.md)` for subdirectories. The `@open-agent-toolkit/docs-transforms` remark-links plugin normalizes these for Fumadocs routing at build time (strips `.md`, collapses `dir/index.md` → `dir`), so the suffixed form renders correctly **and** lets agents follow links to the target file without path inference. The `## Contents` section is the machine-readable local map — anything not listed there is effectively invisible to the navigation tooling.
|
|
14
14
|
4. If the new page introduces a new subdirectory, create an `index.md` in that subdirectory with its own `## Contents` section. Every content directory must have an `index.md`.
|
|
15
|
-
5.
|
|
15
|
+
5. Regenerate the derived navigation artifact for this framework. For Fumadocs, run the generated-index command (`{{GENERATE_INDEX_CMD}}`) so the app-root `index.md` manifest reflects the current Markdown file tree. For MkDocs, run `oat docs nav sync` or the local equivalent so `mkdocs.yml` `nav:` reflects authored `## Contents`. Derived artifacts never replace the authored `## Contents`; keep authored maps current and compare generated output against them when checking freshness.
|
|
16
16
|
|
|
17
17
|
## When you need to restructure navigation
|
|
18
18
|
|
|
19
19
|
1. Make changes in the authored `## Contents` sections of each affected `index.md`. That is the authoritative local map.
|
|
20
|
-
2. Do **not** hand-edit generated navigation artifacts. The root
|
|
21
|
-
3. After editing `## Contents`, run the framework's
|
|
20
|
+
2. Do **not** hand-edit generated navigation artifacts. The Fumadocs app-root `index.md` manifest, `mkdocs.yml` `nav:` (for MkDocs), and any other derived nav file is rewritten by the local generation workflow.
|
|
21
|
+
3. After editing `## Contents`, run the framework's generation command to refresh derived artifacts.
|
|
22
22
|
4. If you're moving pages between directories, update both source and destination `index.md` `## Contents` entries in the same commit so the site isn't broken mid-way through history.
|
|
23
23
|
5. If you're reparenting an entire subtree, consider whether the moved directory's own `index.md` needs a revised "scope" paragraph.
|
|
24
24
|
|
|
@@ -44,7 +44,7 @@ This file tells agents how to work inside `{{APP_DIR}}`, the documentation app f
|
|
|
44
44
|
|
|
45
45
|
## What not to do
|
|
46
46
|
|
|
47
|
-
- **Don't hand-edit generated files.**
|
|
47
|
+
- **Don't hand-edit generated files.** For Fumadocs, the root-level `index.md` generated by `{{GENERATE_INDEX_CMD}}` is rewritten on every build. For MkDocs, generated or synchronized navigation lives in `mkdocs.yml` `nav:`. Edits to derived artifacts are silently clobbered. Edit the authored source (`docs/index.md` and its `## Contents`), then regenerate.
|
|
48
48
|
- **Don't default to `.mdx` when `.md` would do.** MDX adds JSX-in-Markdown capability (embedded components), which breaks simple link rewrites, confuses agent tooling, and requires imports that plain `.md` doesn't. Reach for `.mdx` only when a page actually needs a component it can't express in plain Markdown.
|
|
49
49
|
- **Don't author `## Contents` links without `.md` extensions.** Extension-less links (`[Title](page)` instead of `[Title](page.md)`) force agents to infer the target file type, break simple grep-based navigation, and diverge from the convention used throughout `{{REPO_NAME}}`. The build pipeline (`@open-agent-toolkit/docs-transforms` remark-links) strips `.md` for Fumadocs routing — so suffixed authored links render correctly and stay agent-friendly.
|
|
50
50
|
- **Don't invent new navigation conventions outside `## Contents`.** A sidebar config in a framework file, a hand-rolled TOC, a separate nav YAML — all of these diverge from the contract and break the tooling. Extend via `## Contents`.
|
|
@@ -60,4 +60,4 @@ This file tells agents how to work inside `{{APP_DIR}}`, the documentation app f
|
|
|
60
60
|
- `oat-docs-analyze` — read-only audit command.
|
|
61
61
|
- `oat-docs-apply` — apply approved audit recommendations.
|
|
62
62
|
- `oat-project-document` skill — propose evidence-backed doc updates from project artifacts.
|
|
63
|
-
- `{{GENERATE_INDEX_CMD}}` — regenerates the machine-readable root `index.md` from `docs/`. Runs automatically on `predev` / `prebuild`; don't hand-edit its output.
|
|
63
|
+
- `{{GENERATE_INDEX_CMD}}` — for Fumadocs, regenerates the machine-readable root `index.md` from `docs/`. Runs automatically on `predev` / `prebuild`; don't hand-edit its output.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-discover
|
|
3
|
-
version: 2.0.
|
|
4
|
-
description: Use when
|
|
5
|
-
disable-model-invocation:
|
|
3
|
+
version: 2.0.3
|
|
4
|
+
description: Use when the user explicitly asks to continue discovery for an active spec-driven OAT project — e.g. "continue discovery", "run discovery", or confirms a previously offered discovery step. Do NOT auto-invoke for new ideas or quick-mode projects. Gathers requirements and context before spec/design.
|
|
5
|
+
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Bash(git:*), Bash(oat:*), Bash(pnpm:*), Glob, Grep, AskUserQuestion
|
|
8
8
|
---
|
|
@@ -15,6 +15,20 @@ Gather requirements and understand the problem space through natural collaborati
|
|
|
15
15
|
|
|
16
16
|
**Required:** Knowledge base must exist. If missing, run the `oat-repo-knowledge-index` skill first.
|
|
17
17
|
|
|
18
|
+
**Required for model invocation:** An active spec-driven OAT project must already exist. If no active project exists, route to `oat-project-new` for spec-driven setup or `oat-project-quick-start` for quick workflow. If the active project is quick or import mode, decline this skill and route to the current mode's next step instead.
|
|
19
|
+
|
|
20
|
+
## Model Invocation Gate
|
|
21
|
+
|
|
22
|
+
This skill is model-invokable only for explicit discovery-continuation asks on an active spec-driven project. Do NOT auto-invoke when the user mentions a new idea, asks for a quick workflow, or has an active quick/import project.
|
|
23
|
+
|
|
24
|
+
Before acting:
|
|
25
|
+
|
|
26
|
+
1. Resolve `activeProject`.
|
|
27
|
+
2. Confirm `{PROJECT_PATH}/state.md` exists.
|
|
28
|
+
3. Confirm `oat_workflow_mode` is `spec-driven` or absent only in a legacy spec-driven project.
|
|
29
|
+
|
|
30
|
+
If any check fails, decline this skill. Offer `oat-project-new` for a new spec-driven project, `oat-project-quick-start` for a quick project, or `oat-project-open` for switching to an existing project. When the gate passes, summarize the active project and ask before continuing discovery.
|
|
31
|
+
|
|
18
32
|
## Mode Assertion
|
|
19
33
|
|
|
20
34
|
**OAT MODE: Discovery**
|
|
@@ -68,7 +82,7 @@ If you catch yourself:
|
|
|
68
82
|
|
|
69
83
|
## Process
|
|
70
84
|
|
|
71
|
-
### Step 1: Resolve Active Project
|
|
85
|
+
### Step 1: Resolve Active Spec-Driven Project
|
|
72
86
|
|
|
73
87
|
OAT stores active project context in `.oat/config.local.json` (`activeProject`, local-only).
|
|
74
88
|
|
|
@@ -84,6 +98,10 @@ PROJECTS_ROOT="${PROJECTS_ROOT%/}"
|
|
|
84
98
|
|
|
85
99
|
- Derive `project-name` from the directory name (basename of the path)
|
|
86
100
|
- Read `{PROJECT_PATH}/state.md` (if it exists) and show current status
|
|
101
|
+
- Read `oat_workflow_mode` from `{PROJECT_PATH}/state.md`
|
|
102
|
+
- If `oat_workflow_mode` is present and not `spec-driven`, stop and route:
|
|
103
|
+
- quick project: continue with `oat-project-quick-start` / `oat-project-progress`
|
|
104
|
+
- import project: continue with `oat-project-import-plan` / `oat-project-progress`
|
|
87
105
|
- Ask user:
|
|
88
106
|
- **Continue** with active project, or
|
|
89
107
|
- **Switch projects**:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-import-plan
|
|
3
|
-
version: 1.3.
|
|
3
|
+
version: 1.3.3
|
|
4
4
|
description: Use when you have an external markdown plan to execute with OAT. Preserves the source plan and normalizes it into canonical plan.md format.
|
|
5
5
|
argument-hint: '<path-to-plan.md> [--provider codex|cursor|claude] [--project <name>]'
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -56,13 +56,14 @@ When executing this skill, provide lightweight progress feedback so the user can
|
|
|
56
56
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
57
57
|
|
|
58
58
|
- Before multi-step work, print step indicators, e.g.:
|
|
59
|
-
- `[0/
|
|
60
|
-
- `[1/
|
|
61
|
-
- `[2/
|
|
62
|
-
- `[3/
|
|
63
|
-
- `[4/
|
|
64
|
-
- `[5/
|
|
65
|
-
- `[6/
|
|
59
|
+
- `[0/7] Checking inherited git state...`
|
|
60
|
+
- `[1/7] Resolving project + source plan…`
|
|
61
|
+
- `[2/7] Preserving imported source…`
|
|
62
|
+
- `[3/7] Normalizing plan to OAT task structure…`
|
|
63
|
+
- `[4/7] Updating plan metadata…`
|
|
64
|
+
- `[5/7] Running import-aware plan review…`
|
|
65
|
+
- `[6/7] Updating project state + dashboard…`
|
|
66
|
+
- `[7/7] Ensuring implementation tracker…`
|
|
66
67
|
|
|
67
68
|
## Process
|
|
68
69
|
|
|
@@ -180,7 +181,7 @@ Dispatch Profile import handling:
|
|
|
180
181
|
Set frontmatter in `"$PROJECT_PATH/plan.md"`:
|
|
181
182
|
|
|
182
183
|
- `oat_status: complete`
|
|
183
|
-
- `oat_ready_for:
|
|
184
|
+
- `oat_ready_for: null` (Step 4.5 sets this after the import-aware plan review)
|
|
184
185
|
- `oat_phase: plan`
|
|
185
186
|
- `oat_phase_status: complete`
|
|
186
187
|
- `oat_plan_source: imported`
|
|
@@ -188,6 +189,33 @@ Set frontmatter in `"$PROJECT_PATH/plan.md"`:
|
|
|
188
189
|
- `oat_import_source_path: {source-path}`
|
|
189
190
|
- `oat_import_provider: {codex|cursor|claude|null}`
|
|
190
191
|
|
|
192
|
+
### Step 4.5: Run Import-Aware Plan Artifact Review Loop
|
|
193
|
+
|
|
194
|
+
Invoke the shared `Auto Artifact-Review Loop` from `oat-project-plan-writing` with target `plan` before advancing project state or handing off to implementation.
|
|
195
|
+
|
|
196
|
+
Required payload:
|
|
197
|
+
|
|
198
|
+
- `target: plan`
|
|
199
|
+
- `type: artifact`
|
|
200
|
+
- `scope: plan`
|
|
201
|
+
- `artifact_path: "$PROJECT_PATH/plan.md"`
|
|
202
|
+
- `oat_output_mode: structured`
|
|
203
|
+
- `import_aware: true`
|
|
204
|
+
- `review_note: "Review for canonical OAT plan conformance, executable completeness, stable task IDs, required sections, review-row preservation, and verification clarity. Preserve the imported source's intent and ordering; do not rewrite the author's plan goals or product decisions unless required for OAT conformance or completeness."`
|
|
205
|
+
|
|
206
|
+
Apply the shared loop exactly:
|
|
207
|
+
|
|
208
|
+
- Resolve `workflow.autoArtifactReview.plan`; only an explicit `false` skips the loop.
|
|
209
|
+
- Resolve `oat_orchestration_retry_limit` from project state, defaulting to `2`.
|
|
210
|
+
- Dispatch `oat-reviewer` in structured mode using Tier 1 subagent when available and Tier 2 inline fallback otherwise.
|
|
211
|
+
- Apply Critical and Important artifact-local fixes when unambiguous and limited to canonical conformance/completeness; offer Medium and Minor fixes instead of silently applying them.
|
|
212
|
+
- Re-dispatch after rewrites until clean or the retry bound is exhausted.
|
|
213
|
+
- Update the `plan` artifact row in the `## Reviews` table to `passed` when clean. If residual findings remain, preserve the row and surface the residual findings before downstream handoff.
|
|
214
|
+
|
|
215
|
+
After the loop completes or is explicitly skipped, set `"$PROJECT_PATH/plan.md"` frontmatter:
|
|
216
|
+
|
|
217
|
+
- `oat_ready_for: oat-project-implement`
|
|
218
|
+
|
|
191
219
|
### Step 5: Update Project State
|
|
192
220
|
|
|
193
221
|
Set `"$PROJECT_PATH/state.md"` frontmatter:
|
|
@@ -245,6 +273,7 @@ Report:
|
|
|
245
273
|
- ✅ Imported markdown preserved at `references/imported-plan.md`.
|
|
246
274
|
- ✅ Canonical `plan.md` generated with OAT task structure.
|
|
247
275
|
- ✅ `plan.md` metadata marks `oat_plan_source: imported`.
|
|
276
|
+
- ✅ `plan.md` records the import-aware plan artifact review row unless `workflow.autoArtifactReview.plan` was explicitly disabled.
|
|
248
277
|
- ✅ `state.md` marks `oat_workflow_mode: import`.
|
|
249
278
|
- ✅ `implementation.md` is present and resumable.
|
|
250
279
|
- ✅ `oat_plan_hill_phases` left unset in frontmatter (deferred to `oat-project-implement` Step 2.5).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-plan
|
|
3
|
-
version: 1.3.
|
|
3
|
+
version: 1.3.5
|
|
4
4
|
description: Use when design.md is complete and executable implementation tasks are needed. Breaks design into bite-sized TDD tasks in canonical plan.md format.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -41,11 +41,12 @@ When executing this skill, provide lightweight progress feedback so the user can
|
|
|
41
41
|
OAT ▸ PLAN
|
|
42
42
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
43
43
|
|
|
44
|
-
- Before multi-step work (drafting/finalizing/committing), print 2–5 short step indicators, e.g.:
|
|
45
|
-
- `[1/
|
|
46
|
-
- `[2/
|
|
47
|
-
- `[3/
|
|
48
|
-
- `[4/
|
|
44
|
+
- Before multi-step work (drafting/finalizing/reviewing/committing), print 2–5 short step indicators, e.g.:
|
|
45
|
+
- `[1/5] Reading design + context…`
|
|
46
|
+
- `[2/5] Drafting phases + tasks…`
|
|
47
|
+
- `[3/5] Finalizing plan + rollups…`
|
|
48
|
+
- `[4/5] Running plan artifact review…`
|
|
49
|
+
- `[5/5] Updating state + committing…`
|
|
49
50
|
- For any operation that may take noticeable time (e.g., reading large artifacts), print a start line and a completion line (duration optional).
|
|
50
51
|
- Keep it concise; don’t print a line for every shell command.
|
|
51
52
|
|
|
@@ -293,7 +294,7 @@ This creates traceability: Requirement → Tasks → Implementation
|
|
|
293
294
|
### Step 10.1: Keep Reviews Table Rows
|
|
294
295
|
|
|
295
296
|
Follow the review table preservation rules from `oat-project-plan-writing`:
|
|
296
|
-
- Include both **code** rows (p01/p02/…/final) and **artifact** rows (`spec`, `design`)
|
|
297
|
+
- Include both **code** rows (p01/p02/…/final) and **artifact** rows (`spec`, `design`, `plan`)
|
|
297
298
|
- Add additional rows as needed (e.g., p03), but never delete existing rows
|
|
298
299
|
|
|
299
300
|
**Why stable IDs:** Using `p01-t03` instead of "Task 3" prevents broken references when tasks are inserted or reordered.
|
|
@@ -381,12 +382,34 @@ Ask: "Does this breakdown make sense? Any tasks missing?"
|
|
|
381
382
|
|
|
382
383
|
Iterate until user confirms.
|
|
383
384
|
|
|
385
|
+
### Step 12.5: Run Plan Artifact Review Loop
|
|
386
|
+
|
|
387
|
+
Invoke the shared `Auto Artifact-Review Loop` from `oat-project-plan-writing` with target `plan` before setting `plan.md` to implementation-ready.
|
|
388
|
+
|
|
389
|
+
Required payload:
|
|
390
|
+
|
|
391
|
+
- `target: plan`
|
|
392
|
+
- `type: artifact`
|
|
393
|
+
- `scope: plan`
|
|
394
|
+
- `artifact_path: "$PROJECT_PATH/plan.md"`
|
|
395
|
+
- `oat_output_mode: structured`
|
|
396
|
+
|
|
397
|
+
Apply the shared loop exactly:
|
|
398
|
+
|
|
399
|
+
- Resolve `workflow.autoArtifactReview.plan`; only an explicit `false` skips the loop.
|
|
400
|
+
- Resolve `oat_orchestration_retry_limit` from project state, defaulting to `2`.
|
|
401
|
+
- Dispatch `oat-reviewer` in structured mode using Tier 1 subagent when available and Tier 2 inline fallback otherwise.
|
|
402
|
+
- Apply Critical and Important artifact-local fixes when unambiguous; offer Medium and Minor fixes instead of silently applying them.
|
|
403
|
+
- Re-dispatch after rewrites until clean or the retry bound is exhausted.
|
|
404
|
+
- Update the `plan` artifact row in the `## Reviews` table to `passed` when clean. If residual findings remain, preserve the row and surface the residual findings before downstream handoff.
|
|
405
|
+
|
|
384
406
|
### Step 13: Mark Plan Complete
|
|
385
407
|
|
|
386
408
|
Before setting `oat_status: complete`, verify:
|
|
387
409
|
- `## Planning Checklist` exists
|
|
388
410
|
- the checklist records that checkpoint confirmation is deferred to implementation
|
|
389
411
|
- if `oat_plan_hill_phases` is already present, it is intentionally preserved and valid
|
|
412
|
+
- the `plan` artifact review row has been recorded by Step 12.5, unless `workflow.autoArtifactReview.plan` was explicitly disabled
|
|
390
413
|
|
|
391
414
|
Update frontmatter:
|
|
392
415
|
```yaml
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-plan-writing
|
|
3
|
-
version: 1.2.
|
|
3
|
+
version: 1.2.5
|
|
4
4
|
description: Use when authoring or mutating plan.md in any OAT workflow. Defines canonical format invariants — stable task IDs, required sections, review table rules, and resume guardrails.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: false
|
|
@@ -23,6 +23,49 @@ This is a sub-phase indicator; the calling skill owns the top-level banner.
|
|
|
23
23
|
|
|
24
24
|
- When invoked by a calling skill, print the sub-banner immediately before plan authoring begins.
|
|
25
25
|
|
|
26
|
+
## Auto Artifact-Review Loop
|
|
27
|
+
|
|
28
|
+
This is the canonical contract for bounded automated reviews of generated OAT artifacts. Calling skills own the concrete edits, progress indicators, and commits; this section defines the shared loop they must follow.
|
|
29
|
+
|
|
30
|
+
Use this loop after an artifact has been written and before the calling skill hands off to the downstream consumer. Current targets:
|
|
31
|
+
|
|
32
|
+
- `plan`: dispatch `oat-reviewer` with `type: artifact`, `scope: plan`, and `oat_output_mode: structured`.
|
|
33
|
+
- `analysis`: dispatch `oat-reviewer` with `type: analysis`, `scope: docs` or `agent-instructions`, `analysis_artifact`, and `oat_output_mode: structured`.
|
|
34
|
+
|
|
35
|
+
### Canonical Procedure
|
|
36
|
+
|
|
37
|
+
1. **Resolve the gate**
|
|
38
|
+
- Read `workflow.autoArtifactReview.<target>` using the same config-resolution path as other `workflow.*` keys.
|
|
39
|
+
- Missing config means enabled. Only an explicit `false` disables the loop.
|
|
40
|
+
- If disabled, skip the review loop, note the skip in the calling skill's handoff/status output, and continue without pretending the artifact was reviewed.
|
|
41
|
+
|
|
42
|
+
2. **Resolve the retry bound**
|
|
43
|
+
- Read `oat_orchestration_retry_limit` from the active project state.
|
|
44
|
+
- If absent, invalid, or unavailable, use default `2`.
|
|
45
|
+
- The bound controls rewrite/re-dispatch cycles after the initial review. A bound of `0` still permits the initial structured review, then surfaces residual findings without retrying.
|
|
46
|
+
|
|
47
|
+
3. **Dispatch `oat-reviewer` in structured mode**
|
|
48
|
+
- Tier 1: use the configured `oat-reviewer` subagent when available and authorized.
|
|
49
|
+
- Tier 2: if Tier 1 is unavailable or declined, run the same reviewer prompt inline with the same payload and checklist.
|
|
50
|
+
- Always set `oat_output_mode: structured`; the loop consumes `StructuredFindings` in-memory and the reviewer writes no artifact.
|
|
51
|
+
- Do not downgrade the checklist when falling back inline. The fallback changes only execution tier, not review requirements.
|
|
52
|
+
|
|
53
|
+
4. **Apply or offer fixes by severity**
|
|
54
|
+
- If the structured review is clean, proceed to outcome recording.
|
|
55
|
+
- Apply Critical and Important fixes by default when they are local to the reviewed artifact and the fix is unambiguous.
|
|
56
|
+
- Offer Medium and Minor fixes to the user instead of applying them silently.
|
|
57
|
+
- If a finding cannot be fixed within the artifact boundary, preserve it as residual and surface it before handoff.
|
|
58
|
+
|
|
59
|
+
5. **Rewrite and re-dispatch within the bound**
|
|
60
|
+
- After applying fixes, rewrite the artifact and re-dispatch `oat-reviewer` with the same target payload.
|
|
61
|
+
- Each rewrite/re-dispatch cycle consumes one retry.
|
|
62
|
+
- Stop when the reviewer returns no findings or when the retry bound is exhausted.
|
|
63
|
+
|
|
64
|
+
6. **Record the outcome**
|
|
65
|
+
- Record a clean pass or residual findings in the calling skill's lifecycle output before handoff.
|
|
66
|
+
- For `plan`, update the `plan` artifact row in the Reviews table without deleting any existing rows. Use `passed` when clean; if residual findings remain, preserve enough detail in the handoff for the next skill/user to act.
|
|
67
|
+
- For `analysis`, mark the analysis artifact as reviewed/verified using the calling skill's analysis-tracking convention, and surface any residual findings before the corresponding apply skill consumes it.
|
|
68
|
+
|
|
26
69
|
## Canonical Plan Format
|
|
27
70
|
|
|
28
71
|
Every `plan.md` produced or edited by any OAT skill **must** satisfy these invariants.
|
|
@@ -98,7 +141,7 @@ If any required section is missing when a skill edits `plan.md`, it must be rest
|
|
|
98
141
|
|
|
99
142
|
### Review Table Preservation Rules
|
|
100
143
|
|
|
101
|
-
- The `## Reviews` table includes both **code** rows (`p01`, `p02`, …, `final`) and **artifact** rows (`spec`, `design`).
|
|
144
|
+
- The `## Reviews` table includes both **code** rows (`p01`, `p02`, …, `final`) and **artifact** rows (`spec`, `design`, `plan`).
|
|
102
145
|
- Skills must **never delete** existing review rows.
|
|
103
146
|
- New rows may be appended (e.g., `p03` for a newly added phase).
|
|
104
147
|
- Status semantics: `pending` → `received` → `fixes_added` → `fixes_completed` → `passed`.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-progress
|
|
3
|
-
version: 1.2.
|
|
4
|
-
description: Use when
|
|
5
|
-
disable-model-invocation:
|
|
3
|
+
version: 1.2.5
|
|
4
|
+
description: Use when the user explicitly asks to check OAT project progress — e.g. "check progress", "what's next", "where are we", or confirms a previously offered progress check. Do NOT auto-invoke just because a workflow step completed. Reads project status and offers the next route.
|
|
5
|
+
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Glob, Grep, Bash(git:*), AskUserQuestion
|
|
8
8
|
---
|
|
@@ -35,6 +35,12 @@ Run `oat-project-progress` at any time to:
|
|
|
35
35
|
- See current project status
|
|
36
36
|
- Get recommended next skill
|
|
37
37
|
|
|
38
|
+
## Model Invocation Routing
|
|
39
|
+
|
|
40
|
+
This skill is model-invokable for explicit read-only status and routing asks such as "check progress" or "what's next". It has no active-project gate because it can safely report that no project is active.
|
|
41
|
+
|
|
42
|
+
Do NOT auto-invoke only because another workflow step finished. If model-invoked, offer to check progress first when the user's intent is ambiguous. After reporting status, offer the recommended next skill before routing to it.
|
|
43
|
+
|
|
38
44
|
## Process
|
|
39
45
|
|
|
40
46
|
### Step 1: Check Knowledge Base Exists
|