@open-agent-toolkit/cli 0.3.8 → 0.3.10
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/README.md +3 -3
- package/assets/agents/oat-codebase-mapper.md +3 -2
- package/assets/agents/oat-reviewer.md +5 -13
- package/assets/agents/skeptical-evaluator.md +6 -2
- package/assets/bundle-metadata.json +1 -1
- package/assets/config/dispatch-matrix-recommendation.json +6 -6
- package/assets/docs/cli-utilities/backlog-lifecycle.md +3 -2
- package/assets/docs/cli-utilities/bootstrap.md +5 -2
- package/assets/docs/cli-utilities/config-and-local-state.md +13 -6
- package/assets/docs/cli-utilities/configuration.md +22 -17
- package/assets/docs/cli-utilities/tool-packs.md +60 -10
- package/assets/docs/cli-utilities/workflow-gates.md +1 -1
- package/assets/docs/contributing/code.md +9 -5
- package/assets/docs/contributing/updating-model-guidance.md +34 -6
- package/assets/docs/contributing/verifying-cursor-pins.md +38 -9
- package/assets/docs/provider-sync/commands.md +11 -8
- package/assets/docs/provider-sync/instruction-sync.md +241 -39
- package/assets/docs/provider-sync/providers.md +4 -4
- package/assets/docs/provider-sync/scope-and-surface.md +1 -1
- package/assets/docs/reference/cli-reference.md +2 -0
- package/assets/docs/reference/oat-directory-structure.md +12 -11
- package/assets/docs/reference/troubleshooting.md +19 -4
- package/assets/docs/workflows/projects/dispatch-ceiling.md +21 -14
- package/assets/docs/workflows/projects/implementation-execution.md +26 -9
- package/assets/docs/workflows/projects/lifecycle.md +4 -6
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-agent-instructions-analyze/SKILL.md +4 -4
- package/assets/skills/oat-agent-instructions-analyze/references/analysis-artifact-template.md +5 -5
- package/assets/skills/oat-agent-instructions-analyze/references/docs/rules-files.md +14 -11
- package/assets/skills/oat-agent-instructions-analyze/references/quality-checklist.md +2 -2
- package/assets/skills/oat-agent-instructions-analyze/scripts/resolve-instruction-files.sh +4 -3
- package/assets/skills/oat-agent-instructions-apply/SKILL.md +3 -3
- package/assets/skills/oat-agent-instructions-apply/references/docs/rules-files.md +14 -11
- package/assets/skills/oat-dispatch-subagents/SKILL.md +1 -1
- package/assets/skills/oat-dispatch-subagents/references/provider-cursor.md +5 -2
- package/assets/skills/oat-doctor/SKILL.md +17 -13
- package/assets/skills/oat-project-implement/SKILL.md +2 -2
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +33 -11
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +1 -1
- package/assets/skills/oat-project-implement/references/phase-execution.md +109 -8
- package/assets/skills/oat-project-lite/SKILL.md +23 -1
- package/assets/skills/oat-project-next/SKILL.md +3 -3
- package/assets/skills/oat-project-plan-writing/SKILL.md +3 -3
- package/assets/skills/oat-project-progress/SKILL.md +2 -2
- package/assets/skills/subagent-orchestration/SKILL.md +1 -1
- package/assets/skills/subagent-orchestration/references/evidence-and-refresh.md +20 -8
- package/assets/skills/subagent-orchestration/references/provider-claude.md +25 -12
- package/assets/skills/subagent-orchestration/references/provider-codex.md +27 -18
- package/assets/skills/subagent-orchestration/references/provider-cursor.md +40 -10
- package/assets/templates/docs-app-mkdocs/docs/contributing.md +1 -3
- package/assets/templates/pjm-agents.md +7 -3
- package/assets/templates/state.md +2 -2
- package/dist/commands/backlog/archive.d.ts +10 -2
- package/dist/commands/backlog/archive.d.ts.map +1 -1
- package/dist/commands/backlog/archive.js +22 -6
- package/dist/commands/backlog/index.d.ts.map +1 -1
- package/dist/commands/backlog/index.js +5 -1
- package/dist/commands/backlog/rewrite-references.d.ts +41 -0
- package/dist/commands/backlog/rewrite-references.d.ts.map +1 -0
- package/dist/commands/backlog/rewrite-references.js +516 -0
- package/dist/commands/config/index.d.ts +1 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +69 -34
- package/dist/commands/init/index.d.ts +6 -0
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +27 -4
- package/dist/commands/init/tools/index.d.ts +18 -1
- package/dist/commands/init/tools/index.d.ts.map +1 -1
- package/dist/commands/init/tools/index.js +84 -17
- package/dist/commands/init/tools/project-guidance.d.ts +19 -4
- package/dist/commands/init/tools/project-guidance.d.ts.map +1 -1
- package/dist/commands/init/tools/project-guidance.js +58 -15
- package/dist/commands/init/tools/workflows/index.d.ts.map +1 -1
- package/dist/commands/init/tools/workflows/index.js +5 -1
- package/dist/commands/instructions/instructions.types.d.ts +105 -4
- package/dist/commands/instructions/instructions.types.d.ts.map +1 -1
- package/dist/commands/instructions/instructions.types.js +4 -5
- package/dist/commands/instructions/instructions.utils.d.ts +161 -6
- package/dist/commands/instructions/instructions.utils.d.ts.map +1 -1
- package/dist/commands/instructions/instructions.utils.js +650 -12
- package/dist/commands/instructions/sync/sync.d.ts.map +1 -1
- package/dist/commands/instructions/sync/sync.js +256 -18
- package/dist/commands/instructions/validate/validate.d.ts.map +1 -1
- package/dist/commands/instructions/validate/validate.js +36 -8
- package/dist/commands/pjm/index.d.ts.map +1 -1
- package/dist/commands/pjm/index.js +19 -4
- package/dist/commands/pjm/init.d.ts +3 -0
- package/dist/commands/pjm/init.d.ts.map +1 -1
- package/dist/commands/pjm/init.js +23 -5
- package/dist/commands/shared/agents-md.d.ts +26 -5
- package/dist/commands/shared/agents-md.d.ts.map +1 -1
- package/dist/commands/shared/agents-md.js +182 -3
- package/dist/commands/tools/guidance/index.d.ts +15 -0
- package/dist/commands/tools/guidance/index.d.ts.map +1 -0
- package/dist/commands/tools/guidance/index.js +81 -0
- package/dist/commands/tools/index.d.ts.map +1 -1
- package/dist/commands/tools/index.js +2 -0
- package/dist/config/oat-config.d.ts +49 -3
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +107 -14
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +12 -2
- package/dist/providers/claude/dispatch-envelope.d.ts.map +1 -1
- package/dist/providers/claude/dispatch-envelope.js +1 -0
- package/dist/providers/claude/targets.d.ts +1 -0
- package/dist/providers/claude/targets.d.ts.map +1 -1
- package/dist/providers/claude/targets.js +3 -1
- package/dist/providers/codex/codec/shared.d.ts +3 -0
- package/dist/providers/codex/codec/shared.d.ts.map +1 -1
- package/dist/providers/codex/codec/shared.js +4 -0
- package/dist/providers/cursor/codec/catalog.d.ts +2 -2
- package/dist/providers/cursor/codec/catalog.d.ts.map +1 -1
- package/dist/providers/cursor/codec/catalog.js +45 -0
- package/dist/providers/cursor/codec/mapping-validation.d.ts +4 -0
- package/dist/providers/cursor/codec/mapping-validation.d.ts.map +1 -0
- package/dist/providers/cursor/codec/mapping-validation.js +25 -0
- package/dist/providers/cursor/codec/materialize.d.ts.map +1 -1
- package/dist/providers/cursor/codec/materialize.js +2 -11
- package/dist/providers/cursor/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/cursor/codec/sync-extension.js +2 -11
- package/package.json +2 -2
|
@@ -134,6 +134,7 @@ Notable commands introduced in the current CLI surface:
|
|
|
134
134
|
`refs/oat/completed/<project>` result counts as absence. Transport,
|
|
135
135
|
authentication, and other lookup failures fail the command closed; they are
|
|
136
136
|
never converted into a `recorded-absent` row or pull guidance.
|
|
137
|
+
- `oat tools guidance` - print the managed `OAT tools` `AGENTS.md` block for the currently installed packs without installing, upgrading, or writing anything; `--json` returns `status`, `sectionKey`, `target`, `packs`, `otherProjectSkills`, and `managedBlock`. See [Tool Packs](../cli-utilities/tool-packs.md#oat-tools-guidance).
|
|
137
138
|
- `oat tools migrate --pack <pack> --from <scope> --to <scope>` - move one installed pack between project and user scope. Always previews first, installs and re-inventories the destination before touching the source, and offers source removal only after the destination is verified complete. Declining or running non-interactively leaves the pack installed at both scopes rather than failing. `--dry-run` stops after the preview; there is no force flag. See [Tool Packs](../cli-utilities/tool-packs.md#oat-tools-migrate).
|
|
138
139
|
- `oat pjm doctor --json` - read-only repository PJM diagnostics whose result carries an additive `adoption` object (`state` of `declared` | `inferred-legacy` | `partial-initialization` | `none`, `repoRoot`, and `recovery`). This, not `oat tools has project-management`, is the check that answers whether _this repository_ adopted PJM.
|
|
139
140
|
- `oat pjm remote ... --json` - operate one explicit provider-neutral binding.
|
|
@@ -165,6 +166,7 @@ Notable commands introduced in the current CLI surface:
|
|
|
165
166
|
- `oat gate target set <id> --timeout-ms <milliseconds>` - persist a validated per-target gate budget.
|
|
166
167
|
- `oat gate target list --json` - inspect resolved gate targets without selecting or executing a reviewer. Each entry reports its config origin, whether it is explicitly configured and enabled, current availability, and normalized configured invocation values (`unknown` when omitted).
|
|
167
168
|
- `oat gate cross-provider-exec <prompt...>` - choose an available exec target while avoiding the current runtime by default, then run the prompt with the chosen target's configured base command and exit with the child status.
|
|
169
|
+
- `oat instructions sync [--dry-run] [--strategy none|pointer|symlink|copy]` - apply the effective `CLAUDE.md` strategy (`--strategy`, else `instructions.claude.shims`, else `none`). Under the default `none` it removes the `CLAUDE.md` shims OAT created — none at all while any `CLAUDE.md` has content of its own — keeps and reports every other `CLAUDE.md`, and warns about any `CLAUDE.md`, `.claude/CLAUDE.md`, or `CLAUDE.local.md` that would make Claude Code ignore `AGENTS.md`. `oat instructions validate` checks the same strategy read-only. See [Instruction Sync](../provider-sync/instruction-sync.md).
|
|
168
170
|
|
|
169
171
|
## `oat config` surface flags
|
|
170
172
|
|
|
@@ -48,16 +48,16 @@ Project scope is used for project workflows and repo-local sync state. User scop
|
|
|
48
48
|
|
|
49
49
|
## Top-level entries
|
|
50
50
|
|
|
51
|
-
| Path | Purpose | Notes
|
|
52
|
-
| ------------------------ | --------------------------------------------------- |
|
|
53
|
-
| `.oat/config.json` | Shared repo runtime config for non-sync settings | Includes `worktrees.root`, `projects.root`, `git.defaultBranch`, `archive.*`, `documentation.*`, and `pjm.remote.*` |
|
|
54
|
-
| `.oat/config.local.json` | Local per-developer runtime state | Gitignored; includes `activeProject`, `lastPausedProject`, `activeIdea`
|
|
55
|
-
| `.oat/state.md` | Generated repo state dashboard | Gitignored; rebuilt with `oat state refresh` from config, project artifacts, and knowledge metadata
|
|
56
|
-
| `.oat/projects/` | OAT project artifacts | `shared`, `synced`, `local`, and lifecycle `archived` locations
|
|
57
|
-
| `.oat/ideas/` | Project-level ideas store | Often gitignored
|
|
58
|
-
| `.oat/sync/` | Interop sync state/config | See details below
|
|
59
|
-
| `.oat/templates/` | Artifact templates used by OAT skills | Source for scaffolding. Includes `docs-app-fuma/` (Fumadocs) and `docs-app-mkdocs/` (MkDocs) templates.
|
|
60
|
-
| `.oat/repo/` | Repo-level PJM/knowledge/reference/review artifacts | Active PJM state under `pjm/`; durable references (including decisions) under `reference/`
|
|
51
|
+
| Path | Purpose | Notes |
|
|
52
|
+
| ------------------------ | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
53
|
+
| `.oat/config.json` | Shared repo runtime config for non-sync settings | Includes `worktrees.root`, `projects.root`, `git.defaultBranch`, `archive.*`, `documentation.*`, `instructions.*`, and `pjm.remote.*` |
|
|
54
|
+
| `.oat/config.local.json` | Local per-developer runtime state | Gitignored; includes `activeProject`, `lastPausedProject`, `activeIdea` |
|
|
55
|
+
| `.oat/state.md` | Generated repo state dashboard | Gitignored; rebuilt with `oat state refresh` from config, project artifacts, and knowledge metadata |
|
|
56
|
+
| `.oat/projects/` | OAT project artifacts | `shared`, `synced`, `local`, and lifecycle `archived` locations |
|
|
57
|
+
| `.oat/ideas/` | Project-level ideas store | Often gitignored |
|
|
58
|
+
| `.oat/sync/` | Interop sync state/config | See details below |
|
|
59
|
+
| `.oat/templates/` | Artifact templates used by OAT skills | Source for scaffolding. Includes `docs-app-fuma/` (Fumadocs) and `docs-app-mkdocs/` (MkDocs) templates. |
|
|
60
|
+
| `.oat/repo/` | Repo-level PJM/knowledge/reference/review artifacts | Active PJM state under `pjm/`; durable references (including decisions) under `reference/` |
|
|
61
61
|
|
|
62
62
|
## `.oat/sync/` details
|
|
63
63
|
|
|
@@ -125,9 +125,10 @@ Current schema keys:
|
|
|
125
125
|
| `documentation.config` | `string` | - | Path to the documentation framework config file (e.g., `mkdocs.yml`, `next.config.js`) |
|
|
126
126
|
| `documentation.index` | `string` | - | Path to the docs surface entry point: the generated app-root manifest `<root>/index.md` for Fumadocs, `mkdocs.yml` for MkDocs. Set by `oat docs init`. `oat docs generate-index` writes it only for the Fumadocs manifest transition and never for MkDocs. |
|
|
127
127
|
| `documentation.excludes` | `string[]` | - | Globs, relative to the docs directory, that `oat docs generate-index` leaves out of the generated index. See [Excluding pages from the generated index](#excluding-pages-from-the-generated-index). |
|
|
128
|
-
| `documentation.instructionPointerExcludes` | `string[]` | - | Repo-relative directories `oat instructions sync`/`validate` must not treat as pointer sites, additive to the documentation content root they skip by default. Normalized and de-duplicated; a malformed value (non-array, or an empty or non-string entry) is rejected with exit code `2`. Set as one comma-separated value with `oat config set`; absolute paths and paths escaping the repository are refused. See [Instruction Sync](../provider-sync/instruction-sync.md#documentation-trees). |
|
|
129
128
|
| `documentation.requireForProjectCompletion` | `boolean` | `false` | When `true`, OAT project completion gates require documentation to be updated |
|
|
130
129
|
| `git.defaultBranch` | `string` | `"main"` | Default branch for PR creation. Auto-detected during `oat init` via `gh repo view` or `origin/HEAD`. Used by `oat-project-pr-final` and `oat-project-pr-progress`. |
|
|
130
|
+
| `instructions.claude.shims` | `string` | `"none"` | CLAUDE.md shim strategy for `oat instructions sync`/`validate`: `none` (no shims; sync removes OAT-managed ones, all or nothing: none while any `CLAUDE.md` has content; see [All or nothing](../provider-sync/instruction-sync.md#all-or-nothing)), `pointer`, `symlink`, or `copy`. `--strategy` overrides it for one run; any other value is rejected with exit code `2`. See [Instruction Sync](../provider-sync/instruction-sync.md#choosing-a-strategy). |
|
|
131
|
+
| `instructions.claude.excludes` | `string[]` | - | Repo-relative directories `oat instructions sync`/`validate` must not treat as pointer sites, additive to the documentation content root they skip by default. Normalized and de-duplicated; a malformed value (non-array, or an empty or non-string entry) is rejected with exit code `2`. Set as one comma-separated value with `oat config set`; absolute paths and paths escaping the repository are refused. See [Instruction Sync](../provider-sync/instruction-sync.md#documentation-trees). |
|
|
131
132
|
| `workflow.autoReviewAtHillCheckpoints` | `boolean` | unset | When `true`, completing a HiLL checkpoint automatically runs the extra lifecycle review. Does not control Tier 1 per-phase `oat-reviewer` gates. Can be overridden per-project via `oat_auto_review_at_hill_checkpoints` in `plan.md` frontmatter. Legacy `autoReviewAtCheckpoints` remains a fallback. |
|
|
132
133
|
| `workflow.dispatchPolicy.mode` | `string` | unset | Dispatch policy mode: `managed` lets OAT select model/effort controls; `inherit` leaves controls to the host/provider defaults. |
|
|
133
134
|
| `workflow.dispatchPolicy.policy` | `string` | unset | Managed dispatch policy: `economy`, `balanced`, `high`, `frontier`, or `uncapped`. Capped policies compile to provider targets; `uncapped` keeps OAT-managed preferred selection without provider caps. `inherit` mode is separate and leaves controls to the host/provider. |
|
|
@@ -56,12 +56,27 @@ when a same-name canonical skill exists; rename one package before retrying.
|
|
|
56
56
|
- `oat providers set --scope project --enabled <providers> --disabled <providers>`
|
|
57
57
|
- Re-run `oat sync --scope project` after updating config.
|
|
58
58
|
|
|
59
|
-
## `instructions validate` reports `missing`, `content_mismatch`, or `
|
|
59
|
+
## `instructions validate` reports `missing`, `content_mismatch`, `stray`, or `managed_shim`
|
|
60
60
|
|
|
61
|
+
- Check the effective strategy (`strategy:` in the output). The default is `none`, which expects no `CLAUDE.md`; `missing` is only reported under a configured shim strategy.
|
|
61
62
|
- Run `oat instructions sync --dry-run` to preview changes.
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
63
|
+
- Under `none`, `managed_shim` entries are `CLAUDE.md` files OAT created; `oat instructions sync` removes them, unless a `CLAUDE.md` with its own content blocks removal (see below).
|
|
64
|
+
- To keep shims instead, run `oat config set instructions.claude.shims pointer` (or `symlink` / `copy`) and then `oat instructions sync`.
|
|
65
|
+
- Under a shim strategy, if mismatched `CLAUDE.md` files should be overwritten, run `oat instructions sync --force`.
|
|
66
|
+
- If `stray` is reported, `oat instructions sync` will adopt the Claude-only file into `AGENTS.md`, then regenerate `CLAUDE.md` under a shim strategy or remove it under `none`.
|
|
67
|
+
|
|
68
|
+
## `instructions sync` removed no shims because a `CLAUDE.md` has content
|
|
69
|
+
|
|
70
|
+
- Under `none`, removal is all or nothing: while any `CLAUDE.md`, `.claude/CLAUDE.md`, or `CLAUDE.local.md` has content of its own, sync removes no `CLAUDE.md` at all, reports each held-back removal as skipped, and exits `1`. The finding (`claude_md_blocks_shim_removal` under `--json`) names the files with content (`paths`) and the `CLAUDE.md` files kept (`wouldRemove`); `linkedBy` names any `AGENTS.md` link to a file with content, which you replace with that file's content before removing it. `oat instructions validate` reports the same finding.
|
|
71
|
+
- Either remove each named file or move its content into an `AGENTS.md`, then rerun `oat instructions sync`; or set `instructions.claude.shims` to `pointer`, `symlink`, or `copy` to keep `CLAUDE.md` files.
|
|
72
|
+
- See [Instruction Sync](../provider-sync/instruction-sync.md#all-or-nothing).
|
|
73
|
+
|
|
74
|
+
## `instructions sync` warns that a `CLAUDE.md` makes Claude Code ignore every `AGENTS.md`
|
|
75
|
+
|
|
76
|
+
- Under the default `none` strategy, a remaining `CLAUDE.md`, `.claude/CLAUDE.md`, or `CLAUDE.local.md` makes Claude Code's `agents-md` plugin stand down: for every session when the file is at the repository root, and for sessions started in its directory or below when it is in a subdirectory.
|
|
77
|
+
- Either remove the named file, or set `instructions.claude.shims` to a shim strategy and rerun `oat instructions sync` to add shims everywhere.
|
|
78
|
+
- If the warning names an `AGENTS.md` that links to the file (`linkedBy` under `--json`), that file holds the only copy of those instructions: replace each linking `AGENTS.md` with the file's content first, then remove the file.
|
|
79
|
+
- Sync never deletes a hand-written or modified `CLAUDE.md` itself; see [Instruction Sync](../provider-sync/instruction-sync.md#leftover-claudemd-warnings).
|
|
65
80
|
- If a broken or unreadable instruction path is reported, fix the underlying file or symlink target first; sync will intentionally skip manual-repair cases instead of forcing recovery.
|
|
66
81
|
- If a directory you expected to see is missing from the scan, confirm it is not under `.git`, `.oat`, `.worktrees`, or `node_modules`.
|
|
67
82
|
- Re-run `oat instructions validate` and confirm status is `ok`.
|
|
@@ -85,13 +85,15 @@ Run the same command without `--dry-run` to replace bundled cells. Use
|
|
|
85
85
|
`--shared` or `--local` instead when that scope owns the ladder. Add
|
|
86
86
|
`--keep-existing` to fill only missing cells and preserve existing choices.
|
|
87
87
|
|
|
88
|
-
Version `2026-
|
|
89
|
-
GPT-6 Luna and Sol in Codex, then Sol xhigh, Astra high, and Astra xhigh in
|
|
88
|
+
Version `2026-10-01.1` is the current bundled recommendation. It prefers
|
|
89
|
+
GPT-6 Luna and GPT-6.1 Sol in Codex, then Sol 6.1 xhigh, Astra high, and Astra xhigh in
|
|
90
90
|
Codex Frontier. Astra's task advantage has not been measured locally; this is
|
|
91
91
|
an explicit user-directed preference, not acceptance by the separately
|
|
92
|
-
maintained model-selection policy.
|
|
92
|
+
maintained model-selection policy. Sonnet 5.5 medium replaces Sonnet 5 medium
|
|
93
|
+
in Claude Economy; the older generation stays supported for explicit cells.
|
|
94
|
+
Opus 5.5 low/medium/high remains in Claude High.
|
|
93
95
|
The Claude low option suits bounded intelligent recon in Balanced or High;
|
|
94
|
-
medium remains the implementation starting point under High. GPT-5.6 targets remain
|
|
96
|
+
medium remains the implementation starting point under High. GPT-6 Sol and GPT-5.6 targets remain
|
|
95
97
|
supported for explicit Codex and Cursor configurations. Cursor's preferred
|
|
96
98
|
ladder interleaves verified GPT-5.6 and Opus 5.5 mappings: Balanced adds
|
|
97
99
|
Opus 5.5 low above Terra high, High orders Sol medium, Opus low, Sol high,
|
|
@@ -249,19 +251,23 @@ oat_dispatch_policy:
|
|
|
249
251
|
The bundled ladder is a curated subset of the supported targets:
|
|
250
252
|
|
|
251
253
|
- **Codex:** GPT-6 Luna at `low` through `max` across Economy and Balanced;
|
|
252
|
-
GPT-6 Sol at `low` through `high` in High and `xhigh` in Frontier; then
|
|
254
|
+
GPT-6.1 Sol at `low` through `high` in High and `xhigh` in Frontier; then
|
|
253
255
|
GPT-6 Astra at `high` and `xhigh` in Frontier. Astra and Sol remain supported
|
|
254
|
-
at `low`, `medium`, `high`, `xhigh`, and `max`, while GPT-5.6 variants remain
|
|
256
|
+
at `low`, `medium`, `high`, `xhigh`, and `max`, while GPT-6 Sol and GPT-5.6 variants remain
|
|
255
257
|
available outside this preferred ladder.
|
|
256
|
-
- **Claude:** `haiku` and Sonnet 5 at Economy
|
|
257
|
-
|
|
258
|
+
- **Claude:** `haiku` and Sonnet 5.5 medium at Economy; Opus 5.5 low at
|
|
259
|
+
Balanced, low/medium/high at High, and xhigh/max at Frontier; Fable 5.1
|
|
260
|
+
high ends Frontier. Sonnet 5 remains supported for explicit configurations.
|
|
258
261
|
- **Cursor:** the preferred ladder uses approved Composer 2.5, GPT-5.6, Grok
|
|
259
262
|
4.6, Opus 5.5, and Fable 5.1 targets. The catalogue maps each flat ladder ID
|
|
260
|
-
to its separately verified
|
|
263
|
+
to its separately verified frontmatter model. Sonnet 5.5 exact-ID pins
|
|
264
|
+
remain supported outside the ladder; existing families keep their bracket
|
|
265
|
+
selectors. Grok 4.6 (`low`
|
|
261
266
|
through `xhigh`) and Fable 5.1 (`low` through `max`, thinking variants) were
|
|
262
267
|
approved from a 2026-09-25 [native desktop probe](../../contributing/verifying-cursor-pins.md);
|
|
263
268
|
targets outside the ladder remain available for explicit selection. Grok
|
|
264
|
-
4.7
|
|
269
|
+
4.7 stays outside the shipped catalogue pending its own approved mapping
|
|
270
|
+
and per-pin evidence; exact-ID support does not admit arbitrary CLI IDs.
|
|
265
271
|
|
|
266
272
|
The final candidate in a named tier defines that tier's reviewer ceiling. Lower
|
|
267
273
|
reviewer selection requires a separate reviewed contract; a normal reviewer
|
|
@@ -363,9 +369,9 @@ branch replaces, rather than supplements, preferred selection.
|
|
|
363
369
|
|
|
364
370
|
An effort-pinned Claude candidate must establish the exact generation and that
|
|
365
371
|
generation's supported effort. Current directly recognized generations include
|
|
366
|
-
`claude-fable-5-1`, `claude-fable-5`, `claude-opus-5-5`, `claude-sonnet-5`,
|
|
372
|
+
`claude-fable-5-1`, `claude-fable-5`, `claude-opus-5-5`, `claude-sonnet-5-5`, `claude-sonnet-5`,
|
|
367
373
|
`claude-opus-4-7`, `claude-opus-4-6`, and `claude-sonnet-4-6`.
|
|
368
|
-
Opus 5.5
|
|
374
|
+
Opus 5.5 and Sonnet 5.5 support `low`, `medium`, `high`, `xhigh`, and `max`; consult the
|
|
369
375
|
[updating guide](../../contributing/updating-model-guidance.md) before adding
|
|
370
376
|
further generations or rungs. Retired Opus 5.0 and 4.8 are no longer directly
|
|
371
377
|
recognized for effort-pinned dispatch.
|
|
@@ -413,8 +419,9 @@ Cursor selection, pin mapping, catalogue availability, and runtime identity are
|
|
|
413
419
|
separate evidence layers:
|
|
414
420
|
|
|
415
421
|
- The candidate ladder and resolver use an opaque flat ID.
|
|
416
|
-
- The materialized definition uses the mapping's explicit
|
|
417
|
-
|
|
422
|
+
- The materialized definition uses the mapping's explicit frontmatter model,
|
|
423
|
+
either a verified bracket selector or a separately verified exact ID.
|
|
424
|
+
Sonnet 5.5 uses exact IDs; existing families keep their bracket mappings.
|
|
418
425
|
- Mapping-specific native-launch evidence authorizes the shipped mapping data.
|
|
419
426
|
An approved mapping may carry a probe record whose `submittedSelector` must
|
|
420
427
|
equal the mapping's `frontmatterModel` and whose `resolvedModel` must equal
|
|
@@ -47,8 +47,9 @@ flowchart LR
|
|
|
47
47
|
|
|
48
48
|
P --> Report["Phase report\nverification + commits"]
|
|
49
49
|
Report --> Root
|
|
50
|
-
Root -->
|
|
51
|
-
|
|
50
|
+
Root --> Ledger["Commit task ledger\npre-review bookkeeping"]
|
|
51
|
+
Ledger --> R["Independent phase reviewer"]
|
|
52
|
+
R -->|pass| Book["Review-outcome bookkeeping\n+ next phase"]
|
|
52
53
|
R -->|blocking findings| Fix["Resume phase implementer\nbounded fix scope"]
|
|
53
54
|
Fix --> R2["Fresh root-owned review round"]
|
|
54
55
|
```
|
|
@@ -241,7 +242,14 @@ already part of the next phase's base.
|
|
|
241
242
|
|
|
242
243
|
The root sends the reviewer a fresh scope containing the authoritative phase
|
|
243
244
|
commit range, task IDs and boundaries, project artifacts, and verification
|
|
244
|
-
evidence. The
|
|
245
|
+
evidence. The root commits the phase's task ledger — task rows, the resume
|
|
246
|
+
pointer, and any settled recovery marker — before it dispatches the reviewer,
|
|
247
|
+
so the reviewed head is never stale by construction. Review-outcome
|
|
248
|
+
bookkeeping — the Reviews row and its disposition, the Orchestration Run, and
|
|
249
|
+
the deferred project-log entries — is out of scope at the reviewed head: the
|
|
250
|
+
root writes it after the review returns. In a parallel group the phase worktree
|
|
251
|
+
does not carry the root ledger, so the reviewer brief names the task ledger out
|
|
252
|
+
of scope as well. The review passes with zero Critical and zero High findings.
|
|
245
253
|
Medium and Low findings are recorded without blocking the phase.
|
|
246
254
|
|
|
247
255
|
## Final Exit-Gate Boundary
|
|
@@ -278,14 +286,20 @@ contradictory, or ambiguous correlation fails closed. A valid accepted run or
|
|
|
278
286
|
completed receive is never duplicated.
|
|
279
287
|
|
|
280
288
|
Freshness is bound to the reviewed HEAD and a versioned implementation
|
|
281
|
-
fingerprint. New generations use an `effective-delta-
|
|
289
|
+
fingerprint. New generations use an `effective-delta-v2` fingerprint over
|
|
282
290
|
Git's canonical NUL-delimited raw tree delta. The generation persists the
|
|
283
291
|
logical PR/default-branch base ref, requires one merge base, and hashes full
|
|
284
292
|
base and final modes and object IDs with rename detection disabled. This makes
|
|
285
293
|
same-file base changes visible while excluding commit history and human diff
|
|
286
294
|
context. Every effective-delta path is included except the exact project
|
|
287
|
-
`state.md` file that carries the digest and would otherwise be self-referential
|
|
288
|
-
that structured state is validated independently
|
|
295
|
+
`state.md` file that carries the digest and would otherwise be self-referential
|
|
296
|
+
(that structured state is validated independently) and everything under
|
|
297
|
+
`.oat/projects/` and `.oat/repo/`: project artifacts and repository records
|
|
298
|
+
such as reviews, summaries, backlog items, and decisions never make the exit
|
|
299
|
+
gate stale. `.oat/templates/`, `.oat/scripts/`, `.oat/config*.json`, and
|
|
300
|
+
`.oat/sync/` stay fingerprinted. A stored `effective-delta-v1` value keeps its
|
|
301
|
+
original meaning (only the `state.md` carrier excluded) and is never
|
|
302
|
+
reinterpreted; the next generation after it goes stale uses v2.
|
|
289
303
|
|
|
290
304
|
Recognized closeout-only descendants preserve a valid result: gate artifacts
|
|
291
305
|
and receipts, project tracking and project-log appends,
|
|
@@ -301,8 +315,8 @@ A merge, rebase, or base update preserves the result only when its full
|
|
|
301
315
|
effective delta matches that rolling checkpoint. Conflict resolution or
|
|
302
316
|
branch-owned implementation, test, skill, template, or workflow changes that
|
|
303
317
|
alter the delta make the result stale, require a current final lifecycle review,
|
|
304
|
-
and start a new gate generation.
|
|
305
|
-
excluded from the comparison. Legacy unqualified fingerprints retain the older
|
|
318
|
+
and start a new gate generation. Beyond the version's own exclusion set, no
|
|
319
|
+
implementation or closeout output path is excluded from the comparison. Legacy unqualified fingerprints retain the older
|
|
306
320
|
fail-closed descendant-path behavior and are not migrated in place.
|
|
307
321
|
|
|
308
322
|
This narrow merge-only exemption relies on fresh repository CI, automated
|
|
@@ -375,8 +389,11 @@ Provider controls remain exact: Codex uses
|
|
|
375
389
|
`providers.claude.dispatchArgs.variant` for an effort-pinned target and
|
|
376
390
|
`providers.claude.dispatchArgs.model` only for a legacy model-only target; and
|
|
377
391
|
Cursor uses `providers.cursor.dispatchArgs.variant`. Cursor launches that exact
|
|
378
|
-
resolver-selected native agent type first; the flat ID and
|
|
392
|
+
resolver-selected native agent type first; the flat ID and frontmatter pin
|
|
379
393
|
remain inside the explicit mapping and are never normalized by workflow prose.
|
|
394
|
+
A mapping may retain a verified bracket-form selector or use a separately
|
|
395
|
+
verified exact ID, as Sonnet 5.5 does. Exact IDs require an approved mapping
|
|
396
|
+
and native probe evidence; catalog presence alone never enables pass-through.
|
|
380
397
|
The launcher records this selection as `configured`, while runtime identity
|
|
381
398
|
remains `not-reported` without independent observation. Only a pre-start native
|
|
382
399
|
role-selection rejection permits another target-preserving route.
|
|
@@ -158,13 +158,11 @@ filesystem operation. Deleting or archiving the old scaffold does not make the
|
|
|
158
158
|
roadmap stop promising its work, so completion checks the claim against the
|
|
159
159
|
prose that still makes it.
|
|
160
160
|
|
|
161
|
-
When a quick project consolidates earlier scaffolds,
|
|
161
|
+
When a quick or lite project consolidates earlier scaffolds, the workflow that
|
|
162
|
+
scaffolds it (`oat-project-quick-start` or `oat-project-lite`) records
|
|
162
163
|
`absorbed_projects` and `absorbed_backlog_ids` in that project's `state.md`
|
|
163
|
-
frontmatter. Those two fields are the
|
|
164
|
-
|
|
165
|
-
Recording them is a quick-mode step today. A lite project that consolidates
|
|
166
|
-
earlier scaffolds records nothing, so the sweep finds no inputs and degrades to
|
|
167
|
-
its recorded note rather than checking that project's surfaces.
|
|
164
|
+
frontmatter, with the same field shapes in both modes. Those two fields are the
|
|
165
|
+
only inputs the sweep takes.
|
|
168
166
|
|
|
169
167
|
Inside the project-log completion gate — after the log status probe and before
|
|
170
168
|
the roll-up and seal — completion searches the active planning surfaces for each
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Bash(git:*), Glob, Grep, AskUserQuestion, Task
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.12.
|
|
8
|
+
version: 1.12.4
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Agent Instructions Analysis
|
|
@@ -259,7 +259,7 @@ documentation inventory from Step 2 to:
|
|
|
259
259
|
**Provider-specific validation:**
|
|
260
260
|
|
|
261
261
|
- **AGENTS.md**: Check section structure, command accuracy, size budget.
|
|
262
|
-
- **CLAUDE.md**:
|
|
262
|
+
- **CLAUDE.md**: Read the shim strategy with `oat config get instructions.claude.shims`. Under a shim strategy (`pointer`, `symlink`, or `copy`), verify the `@AGENTS.md` import if present and check for content duplication with AGENTS.md. Under `none` (the default), Claude Code reads AGENTS.md itself through its built-in `agents-md` plugin, which stands down while a `CLAUDE.md`, `.claude/CLAUDE.md`, or `CLAUDE.local.md` exists on the session's path: a root file affects the whole project, a nested file affects sessions started in its directory or below; record each such file as a High finding whose fix is to remove it or to configure a shim strategy and run `oat instructions sync`. Take the authoritative list from `oat instructions validate --json` `.warnings[]` (code `claude_md_hides_agents_md`), which covers the whole repository including `CLAUDE.local.md` (exact-case names only); the discovery script also lists `CLAUDE.local.md` under the claude provider. When a warning's `linkedBy` is non-empty, that file holds the only copy of the instructions behind those AGENTS.md links: the fix is to replace each linking AGENTS.md with the file's content first and only then remove the file; never recommend plain removal for it. When `.warnings[]` also holds a `claude_md_blocks_shim_removal` item, removal under `none` is all or nothing and is blocked: report its `paths` (the files with content of their own) as the High finding, whose fix is to move each file's content into an AGENTS.md or remove it (for a file its `linkedBy` maps to AGENTS.md links, replace each linking AGENTS.md with the file's content first) and then rerun `oat instructions sync`; list its `wouldRemove` as the CLAUDE.md files that sync then removes. Those files get no `claude_md_hides_agents_md` warning of their own while the block holds, so read them from the block item rather than reporting them as missing.
|
|
263
263
|
- **Claude rules** (`.claude/rules/*.md`): Validate `paths` frontmatter if conditional.
|
|
264
264
|
- **Cursor rules** (`.cursor/rules/*.mdc`): Validate frontmatter fields (`alwaysApply`, `globs`, `description`).
|
|
265
265
|
- **Copilot instructions** (`.github/instructions/*.instructions.md`): Validate `applyTo` frontmatter.
|
|
@@ -306,7 +306,7 @@ These checks are mandatory even when the missing file does not appear in the dis
|
|
|
306
306
|
|
|
307
307
|
Provider baseline examples:
|
|
308
308
|
|
|
309
|
-
- **Claude**: if a directory has `AGENTS.md` and the claude provider is active but the matching `CLAUDE.md` shim is missing, record an explicit recommendation to create `CLAUDE.md` with the canonical `@AGENTS.md` import. This applies to **every** directory with an `AGENTS.md` — root and nested alike (e.g., `packages/cli/AGENTS.md` → `packages/cli/CLAUDE.md`).
|
|
309
|
+
- **Claude**: only when a shim strategy is configured (`instructions.claude.shims` is `pointer`, `symlink`, or `copy`): if a directory has `AGENTS.md` and the claude provider is active but the matching `CLAUDE.md` shim is missing, record an explicit recommendation to create `CLAUDE.md` with the canonical `@AGENTS.md` import. This applies to **every** directory with an `AGENTS.md` — root and nested alike (e.g., `packages/cli/AGENTS.md` → `packages/cli/CLAUDE.md`). Under `none`, the default, recommend no `CLAUDE.md`: Claude Code loads AGENTS.md natively, and a shim in some directories but not others makes it ignore the AGENTS.md files that lack one.
|
|
310
310
|
- **Copilot**: if the copilot provider is active but `.github/copilot-instructions.md` is missing, record an explicit recommendation to create the minimal Copilot shim.
|
|
311
311
|
- **agents_md / codex**: no extra always-on shim beyond `AGENTS.md`.
|
|
312
312
|
|
|
@@ -314,7 +314,7 @@ Do not leave these as implied apply-time behavior. They must appear in the analy
|
|
|
314
314
|
|
|
315
315
|
**Chained recommendations for new AGENTS.md files:**
|
|
316
316
|
|
|
317
|
-
When a coverage-gap recommendation proposes creating a **new** `AGENTS.md` in a subdirectory, also emit the corresponding provider-baseline recommendations for that directory in the same artifact. For example, if the analysis recommends creating `packages/cli/AGENTS.md
|
|
317
|
+
When a coverage-gap recommendation proposes creating a **new** `AGENTS.md` in a subdirectory, also emit the corresponding provider-baseline recommendations for that directory in the same artifact. For example, if the analysis recommends creating `packages/cli/AGENTS.md`, the claude provider is active, and a shim strategy is configured, it must also recommend creating `packages/cli/CLAUDE.md` with `@AGENTS.md`. Do not defer these to a follow-up analysis — they belong in the same artifact so `oat-agent-instructions-apply` can generate both files in one pass.
|
|
318
318
|
|
|
319
319
|
**In delta mode:** Only assess directories that contain files changed since the last tracked commit. Skip unchanged directories.
|
|
320
320
|
|
package/assets/skills/oat-agent-instructions-analyze/references/analysis-artifact-template.md
CHANGED
|
@@ -119,11 +119,11 @@ None | {numbered list}
|
|
|
119
119
|
|
|
120
120
|
Missing always-on provider compatibility files that should exist even when no corresponding file was discovered during inventory.
|
|
121
121
|
|
|
122
|
-
| # | Provider | Required Path | Format | Reason
|
|
123
|
-
| --- | --------- | --------------------------------- | ------------------ |
|
|
124
|
-
| 1 | `claude` | `CLAUDE.md` | Claude import shim | {claude active + AGENTS.md present + shim missing} | {exact refs} | {High/Medium} |
|
|
125
|
-
| 2 | `copilot` | `.github/copilot-instructions.md` | Copilot shim | {copilot active + shim missing}
|
|
126
|
-
| ... | | | |
|
|
122
|
+
| # | Provider | Required Path | Format | Reason | Evidence | Severity |
|
|
123
|
+
| --- | --------- | --------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------- |
|
|
124
|
+
| 1 | `claude` | `CLAUDE.md` | Claude import shim | {claude active + shim strategy configured (`instructions.claude.shims` is not `none`) + AGENTS.md present + shim missing} | {exact refs} | {High/Medium} |
|
|
125
|
+
| 2 | `copilot` | `.github/copilot-instructions.md` | Copilot shim | {copilot active + shim missing} | {exact refs} | {High/Medium} |
|
|
126
|
+
| ... | | | | | | |
|
|
127
127
|
|
|
128
128
|
{Or: "No provider baseline gaps identified."}
|
|
129
129
|
|
|
@@ -125,13 +125,16 @@ User-level rules go in `~/.claude/rules/` and apply to all projects (lower prior
|
|
|
125
125
|
|
|
126
126
|
### 2.6 AGENTS.md Support
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
Source: `anthropics/claude-code` `mods/agents-md` README, as of v2.1.278.
|
|
129
129
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
**Claude Code reads AGENTS.md natively** through its built-in `agents-md` plugin. Its `instructionFiles` option defaults to `claude-md-or-agents-md`; the other values are `claude-md`, `claude-md-and-agents-md`, and `managed-only`.
|
|
131
|
+
|
|
132
|
+
- **Default mode stands down on any CLAUDE.md.** In `claude-md-or-agents-md`, the plugin loads no AGENTS.md for the session when any `CLAUDE.md`, `.claude/CLAUDE.md`, or `CLAUDE.local.md` exists in the working directory or any directory above it up to the project root; the engine then loads only CLAUDE.md files. A root `CLAUDE.md` or a personal `CLAUDE.local.md` therefore hides every AGENTS.md, and shims in some directories but not others hide every AGENTS.md without one.
|
|
133
|
+
- **`claude-md-and-agents-md`** loads both; an AGENTS.md that a CLAUDE.md already imports or links is not loaded twice.
|
|
134
|
+
- **Only user or managed settings can set the option** (`~/.claude/settings.json`, `--settings`, or managed settings); a project's `.claude/settings.json` cannot.
|
|
135
|
+
- **Nested gaps:** nested AGENTS.md files attach on a text `Read` only (not on `@`-mentions, IDE selections, or notebook, image, or PDF reads), and `--add-dir` directories contribute no AGENTS.md.
|
|
133
136
|
|
|
134
|
-
|
|
137
|
+
The one-line `CLAUDE.md` shim (`@AGENTS.md`, or `ln -s AGENTS.md CLAUDE.md`) is now **opt-in**: use it for Claude Code releases before the plugin, for users who set `instructionFiles` to `claude-md`, or when the nested gaps above matter, and then keep a shim beside every AGENTS.md. In OAT this is `instructions.claude.shims` (`none` by default; `pointer`, `symlink`, or `copy` to opt in), applied by `oat instructions sync`; see the OAT docs page `provider-sync/instruction-sync.md` (§ Claude Code and AGENTS.md).
|
|
135
138
|
|
|
136
139
|
### 2.7 Skills vs CLAUDE.md vs Rules
|
|
137
140
|
|
|
@@ -411,12 +414,12 @@ All three providers support file-pattern-based activation — this is the unifyi
|
|
|
411
414
|
|
|
412
415
|
### 5.4 AGENTS.md Support
|
|
413
416
|
|
|
414
|
-
| Provider | Native support
|
|
415
|
-
| ----------- |
|
|
416
|
-
| Claude Code | **
|
|
417
|
-
| Cursor | **Yes** (first-class)
|
|
418
|
-
| Copilot | **Yes** (`**/AGENTS.md`)
|
|
419
|
-
| Codex | **Yes** (primary format)
|
|
417
|
+
| Provider | Native support | Nested | Import mechanism |
|
|
418
|
+
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ------------------------------------- |
|
|
419
|
+
| Claude Code | **Yes** (built-in `agents-md` plugin; stands down while any CLAUDE.md, `.claude/CLAUDE.md`, or `CLAUDE.local.md` is on the path to the working directory) | Yes (attached on a text `Read`) | Opt-in `@AGENTS.md` shim in CLAUDE.md |
|
|
420
|
+
| Cursor | **Yes** (first-class) | Yes (hierarchical) | N/A — read directly |
|
|
421
|
+
| Copilot | **Yes** (`**/AGENTS.md`) | Yes (nearest wins) | N/A — read directly |
|
|
422
|
+
| Codex | **Yes** (primary format) | Yes (override pattern) | N/A — native |
|
|
420
423
|
|
|
421
424
|
---
|
|
422
425
|
|
|
@@ -27,7 +27,7 @@ Per-file evaluation criteria for agent instruction files. Use this checklist to
|
|
|
27
27
|
|
|
28
28
|
### 4. Size Within Budget
|
|
29
29
|
|
|
30
|
-
- [ ] Root files (AGENTS.md, CLAUDE.md): <300 lines (hard max 500)
|
|
30
|
+
- [ ] Root files (AGENTS.md, and CLAUDE.md when a shim strategy is configured): <300 lines (hard max 500)
|
|
31
31
|
- [ ] Scoped/package files: 40–150 lines
|
|
32
32
|
- [ ] Individual rules files: <80 lines
|
|
33
33
|
- [ ] Always-on baseline load is estimated and kept comfortably below the task budget
|
|
@@ -44,7 +44,7 @@ Per-file evaluation criteria for agent instruction files. Use this checklist to
|
|
|
44
44
|
|
|
45
45
|
### 6. Precedence Clear
|
|
46
46
|
|
|
47
|
-
- [ ] Override semantics are explicit (nearest-wins for AGENTS.md, import directives for CLAUDE.md)
|
|
47
|
+
- [ ] Override semantics are explicit (nearest-wins for AGENTS.md, import directives for CLAUDE.md when a shim strategy is configured)
|
|
48
48
|
- [ ] No ambiguous or conflicting instructions across scope levels
|
|
49
49
|
- **Severity if failing:** Medium
|
|
50
50
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#
|
|
11
11
|
# File patterns per provider:
|
|
12
12
|
# agents_md → **/AGENTS.md
|
|
13
|
-
# claude → **/CLAUDE.md, .claude/rules/*.md
|
|
13
|
+
# claude → **/CLAUDE.md, **/CLAUDE.local.md, .claude/rules/*.md
|
|
14
14
|
# cursor → .cursor/rules/*.mdc, .cursor/rules/*.md
|
|
15
15
|
# copilot → .github/copilot-instructions.md, .github/instructions/*.instructions.md
|
|
16
16
|
# cline → .cline/rules/*
|
|
@@ -58,8 +58,9 @@ discover_agents_md() {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
discover_claude() {
|
|
61
|
-
# CLAUDE.md files
|
|
62
|
-
|
|
61
|
+
# CLAUDE.md and personal CLAUDE.local.md files (either one makes Claude
|
|
62
|
+
# Code's default agents-md mode ignore AGENTS.md)
|
|
63
|
+
find_exclude -name 'CLAUDE.md' -o -name 'CLAUDE.local.md' | while read -r f; do
|
|
63
64
|
local rel="${f#"$REPO_ROOT"/}"
|
|
64
65
|
printf 'claude\t%s\n' "$rel"
|
|
65
66
|
done
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash(git:*), Bash(gh:*), Glob, Grep, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.7.
|
|
8
|
+
version: 1.7.3
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Agent Instructions Apply
|
|
@@ -204,7 +204,7 @@ recommendation so plan review and generation stay aligned to the same pack file.
|
|
|
204
204
|
**For provider baseline gaps (always-on provider files):**
|
|
205
205
|
|
|
206
206
|
- Treat them as first-class recommendations from the artifact, not as implied apply-time behavior
|
|
207
|
-
- Examples include missing Claude `CLAUDE.md` import shims and missing `.github/copilot-instructions.md` shims
|
|
207
|
+
- Examples include missing Claude `CLAUDE.md` import shims (recommended only when `instructions.claude.shims` is a shim strategy: `pointer`, `symlink`, or `copy`) and missing `.github/copilot-instructions.md` shims
|
|
208
208
|
- Carry forward the artifact's evidence refs, confidence, and disclosure mode into the plan
|
|
209
209
|
- If the artifact marks a provider-baseline recommendation `omit`, do not include it in the apply plan
|
|
210
210
|
- If the artifact marks a provider-baseline recommendation `ask_user`, include it with the evidence and require explicit user approval
|
|
@@ -240,7 +240,7 @@ recommendation so plan review and generation stay aligned to the same pack file.
|
|
|
240
240
|
**Multi-format composition order:**
|
|
241
241
|
|
|
242
242
|
1. **AGENTS.md first** — the canonical, provider-agnostic file
|
|
243
|
-
2. **CLAUDE.md** — if claude provider is active, ensure `@AGENTS.md` import exists
|
|
243
|
+
2. **CLAUDE.md** — only if the claude provider is active and a shim strategy is configured (`oat config get instructions.claude.shims` returns `pointer`, `symlink`, or `copy`), ensure the `@AGENTS.md` import exists. Under `none`, the default, create no `CLAUDE.md`: Claude Code reads AGENTS.md itself, and a CLAUDE.md makes it ignore AGENTS.md for sessions started in that file's directory or below (project-wide for a root file)
|
|
244
244
|
3. **Glob-scoped rules** — author once in canonical format at `.agents/rules/{name}.md` with YAML frontmatter (`description`, `globs`, `activation`)
|
|
245
245
|
- `activation` MUST be one of `always`, `glob`, `agent-requested`, `manual` — any other value (e.g. `auto`) is rejected by `oat sync`. Use `glob` (with `globs`) for file-targeted rules; see `frontmatter/canonical-rule.md` for the full activation matrix.
|
|
246
246
|
- Provider-specific rule files are generated by `oat sync --scope project`
|
|
@@ -125,13 +125,16 @@ User-level rules go in `~/.claude/rules/` and apply to all projects (lower prior
|
|
|
125
125
|
|
|
126
126
|
### 2.6 AGENTS.md Support
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
Source: `anthropics/claude-code` `mods/agents-md` README, as of v2.1.278.
|
|
129
129
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
**Claude Code reads AGENTS.md natively** through its built-in `agents-md` plugin. Its `instructionFiles` option defaults to `claude-md-or-agents-md`; the other values are `claude-md`, `claude-md-and-agents-md`, and `managed-only`.
|
|
131
|
+
|
|
132
|
+
- **Default mode stands down on any CLAUDE.md.** In `claude-md-or-agents-md`, the plugin loads no AGENTS.md for the session when any `CLAUDE.md`, `.claude/CLAUDE.md`, or `CLAUDE.local.md` exists in the working directory or any directory above it up to the project root; the engine then loads only CLAUDE.md files. A root `CLAUDE.md` or a personal `CLAUDE.local.md` therefore hides every AGENTS.md, and shims in some directories but not others hide every AGENTS.md without one.
|
|
133
|
+
- **`claude-md-and-agents-md`** loads both; an AGENTS.md that a CLAUDE.md already imports or links is not loaded twice.
|
|
134
|
+
- **Only user or managed settings can set the option** (`~/.claude/settings.json`, `--settings`, or managed settings); a project's `.claude/settings.json` cannot.
|
|
135
|
+
- **Nested gaps:** nested AGENTS.md files attach on a text `Read` only (not on `@`-mentions, IDE selections, or notebook, image, or PDF reads), and `--add-dir` directories contribute no AGENTS.md.
|
|
133
136
|
|
|
134
|
-
|
|
137
|
+
The one-line `CLAUDE.md` shim (`@AGENTS.md`, or `ln -s AGENTS.md CLAUDE.md`) is now **opt-in**: use it for Claude Code releases before the plugin, for users who set `instructionFiles` to `claude-md`, or when the nested gaps above matter, and then keep a shim beside every AGENTS.md. In OAT this is `instructions.claude.shims` (`none` by default; `pointer`, `symlink`, or `copy` to opt in), applied by `oat instructions sync`; see the OAT docs page `provider-sync/instruction-sync.md` (§ Claude Code and AGENTS.md).
|
|
135
138
|
|
|
136
139
|
### 2.7 Skills vs CLAUDE.md vs Rules
|
|
137
140
|
|
|
@@ -411,12 +414,12 @@ All three providers support file-pattern-based activation — this is the unifyi
|
|
|
411
414
|
|
|
412
415
|
### 5.4 AGENTS.md Support
|
|
413
416
|
|
|
414
|
-
| Provider | Native support
|
|
415
|
-
| ----------- |
|
|
416
|
-
| Claude Code | **
|
|
417
|
-
| Cursor | **Yes** (first-class)
|
|
418
|
-
| Copilot | **Yes** (`**/AGENTS.md`)
|
|
419
|
-
| Codex | **Yes** (primary format)
|
|
417
|
+
| Provider | Native support | Nested | Import mechanism |
|
|
418
|
+
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ------------------------------------- |
|
|
419
|
+
| Claude Code | **Yes** (built-in `agents-md` plugin; stands down while any CLAUDE.md, `.claude/CLAUDE.md`, or `CLAUDE.local.md` is on the path to the working directory) | Yes (attached on a text `Read`) | Opt-in `@AGENTS.md` shim in CLAUDE.md |
|
|
420
|
+
| Cursor | **Yes** (first-class) | Yes (hierarchical) | N/A — read directly |
|
|
421
|
+
| Copilot | **Yes** (`**/AGENTS.md`) | Yes (nearest wins) | N/A — read directly |
|
|
422
|
+
| Codex | **Yes** (primary format) | Yes (override pattern) | N/A — native |
|
|
420
423
|
|
|
421
424
|
---
|
|
422
425
|
|
|
@@ -46,8 +46,11 @@ prohibited.
|
|
|
46
46
|
|
|
47
47
|
Outer lifecycle implementer and reviewer dispatch uses the exact
|
|
48
48
|
`providers.cursor.dispatchArgs.variant` returned by the lifecycle resolver.
|
|
49
|
-
The resolver maps an opaque flat model ID
|
|
50
|
-
inside the materialized definition
|
|
49
|
+
The resolver maps an opaque flat model ID to the mapping's explicit frontmatter
|
|
50
|
+
pin inside the materialized definition. Existing families keep their verified
|
|
51
|
+
bracket-form pins; Sonnet 5.5 uses verified exact-ID pins. Each exact ID needs
|
|
52
|
+
its own native evidence and approved registry entry: this is not generic
|
|
53
|
+
pass-through of any CLI catalog ID. Skills never parse, normalize, or
|
|
51
54
|
reconstruct either model string.
|
|
52
55
|
|
|
53
56
|
1. Require a non-empty resolver-returned variant for managed dispatch.
|