@open-agent-toolkit/cli 0.3.12 → 0.3.14
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 +1 -1
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/contributing/index.md +14 -1
- package/assets/docs/contributing/skills.md +64 -2
- package/assets/docs/contributing/smoke-testing.md +3 -3
- package/assets/docs/contributing/updating-model-guidance.md +2 -2
- package/assets/docs/contributing/verifying-cursor-pins.md +1 -1
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +112 -15
- package/assets/docs/docs-tooling/agent-instructions.md +131 -0
- package/assets/docs/docs-tooling/commands.md +74 -30
- package/assets/docs/docs-tooling/index.md +7 -6
- package/assets/docs/docs-tooling/meta.json +1 -1
- package/assets/docs/docs-tooling/workflows.md +357 -11
- package/assets/docs/{cli-utilities → getting-started}/bootstrap.md +60 -5
- package/assets/docs/{guide → getting-started}/concepts.md +28 -10
- package/assets/docs/getting-started/index.md +68 -0
- package/assets/docs/getting-started/meta.json +4 -0
- package/assets/docs/getting-started/quickstart.md +174 -0
- package/assets/docs/{cli-utilities → getting-started}/tool-packs.md +146 -15
- package/assets/docs/index.md +47 -48
- package/assets/docs/meta.json +6 -7
- package/assets/docs/provider-sync/commands.md +26 -3
- package/assets/docs/provider-sync/config.md +60 -1
- package/assets/docs/provider-sync/index.md +31 -15
- package/assets/docs/provider-sync/instruction-sync.md +43 -5
- package/assets/docs/provider-sync/manifest-and-drift.md +85 -0
- package/assets/docs/provider-sync/meta.json +1 -0
- package/assets/docs/provider-sync/pilot-with-a-team.md +236 -0
- package/assets/docs/provider-sync/scope-and-surface.md +37 -3
- package/assets/docs/reference/cli-reference.md +34 -34
- package/assets/docs/{cli-utilities → reference}/config-and-local-state.md +25 -9
- package/assets/docs/{cli-utilities → reference}/configuration.md +151 -34
- package/assets/docs/reference/docs-index-contract.md +19 -4
- package/assets/docs/reference/file-locations.md +7 -2
- package/assets/docs/reference/index.md +13 -1
- package/assets/docs/reference/meta.json +7 -1
- package/assets/docs/reference/oat-directory-structure.md +24 -22
- package/assets/docs/{workflows/projects/artifacts.md → reference/project-artifacts.md} +4 -4
- package/assets/docs/{workflows/projects/state-machine.md → reference/project-state-machine.md} +1 -1
- package/assets/docs/{workflows/projects/repo-analysis.md → reference/repository-pr-comments.md} +2 -2
- package/assets/docs/reference/troubleshooting.md +125 -10
- package/assets/docs/reference/what-oat-writes.md +410 -0
- package/assets/docs/skills/brainstorm.md +77 -0
- package/assets/docs/skills/diagnostics.md +56 -0
- package/assets/docs/{workflows/skills → skills}/explainer-kit.md +121 -0
- package/assets/docs/skills/index.md +416 -0
- package/assets/docs/{workflows/skills → skills}/meta.json +4 -2
- package/assets/docs/{workflows/skills → skills}/recon.md +49 -0
- package/assets/docs/skills/repo-improve.md +254 -0
- package/assets/docs/skills/research.md +237 -0
- package/assets/docs/skills/session-closeout.md +61 -0
- package/assets/docs/workflows/advanced/autonomy.md +344 -0
- package/assets/docs/workflows/{projects → advanced}/cursor-cloud.md +69 -1
- package/assets/docs/workflows/{projects → advanced}/dispatch-ceiling.md +163 -18
- package/assets/docs/workflows/{projects → advanced}/evidence-layers.md +1 -1
- package/assets/docs/workflows/advanced/index.md +19 -0
- package/assets/docs/workflows/advanced/meta.json +13 -0
- package/assets/docs/workflows/{projects → advanced}/orchestration-model.md +63 -4
- package/assets/docs/workflows/{projects → advanced}/programmatic-execution.md +4 -4
- package/assets/docs/{cli-utilities → workflows/advanced}/workflow-gates.md +162 -8
- package/assets/docs/workflows/advanced/worktree-bootstrap.md +83 -0
- package/assets/docs/workflows/approvals-and-automation.md +261 -0
- package/assets/docs/workflows/backlog-and-planning/backlog-lifecycle.md +348 -0
- package/assets/docs/workflows/backlog-and-planning/index.md +13 -0
- package/assets/docs/workflows/backlog-and-planning/meta.json +4 -0
- package/assets/docs/workflows/backlog-and-planning/remote-project-management.md +303 -0
- package/assets/docs/workflows/choose-workflow.md +114 -0
- package/assets/docs/workflows/ideas/index.md +3 -3
- package/assets/docs/workflows/ideas/lifecycle.md +218 -1
- package/assets/docs/workflows/index.md +11 -62
- package/assets/docs/workflows/meta.json +10 -2
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +538 -0
- package/assets/docs/workflows/projects/closeout/index.md +14 -0
- package/assets/docs/workflows/projects/closeout/meta.json +4 -0
- package/assets/docs/workflows/projects/{pr-flow.md → closeout/pr-flow.md} +1 -1
- package/assets/docs/workflows/projects/{retro.md → closeout/retro.md} +1 -1
- package/assets/docs/workflows/projects/execution/execution-skills.md +258 -0
- package/assets/docs/workflows/projects/{implementation-execution.md → execution/implementation-execution.md} +8 -8
- package/assets/docs/workflows/projects/execution/index.md +15 -0
- package/assets/docs/workflows/projects/execution/meta.json +9 -0
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +376 -0
- package/assets/docs/{cli-utilities → workflows/projects/execution}/project-log.md +1 -1
- package/assets/docs/workflows/projects/index.md +38 -49
- package/assets/docs/workflows/projects/lifecycle.md +47 -11
- package/assets/docs/workflows/projects/meta.json +2 -23
- package/assets/docs/workflows/projects/{design-modes.md → planning/design-modes.md} +29 -0
- package/assets/docs/workflows/projects/planning/hill-checkpoints.md +167 -0
- package/assets/docs/workflows/projects/planning/index.md +16 -0
- package/assets/docs/workflows/projects/planning/meta.json +10 -0
- package/assets/docs/workflows/projects/planning/planning-skills.md +381 -0
- package/assets/docs/workflows/projects/{splitting.md → planning/splitting.md} +3 -3
- package/assets/docs/workflows/projects/planning/starting-projects.md +511 -0
- package/assets/docs/workflows/projects/{reviews.md → reviews/index.md} +51 -5
- package/assets/docs/workflows/projects/reviews/meta.json +4 -0
- package/assets/docs/workflows/projects/reviews/review-flavors.md +643 -0
- package/assets/docs/workflows/projects/{reviewing-oat-prs.md → reviews/reviewing-oat-prs.md} +3 -3
- package/assets/docs/workflows/waves/index.md +12 -0
- package/assets/docs/workflows/waves/meta.json +4 -0
- package/assets/docs/workflows/waves/wave-workflows.md +206 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-docs/SKILL.md +19 -19
- package/assets/skills/oat-docs-analyze/SKILL.md +27 -7
- package/assets/skills/oat-docs-analyze/references/quality-checklist.md +16 -3
- package/assets/skills/oat-docs-apply/SKILL.md +20 -3
- package/assets/skills/oat-docs-authoring/SKILL.md +11 -7
- package/assets/skills/oat-docs-authoring/references/docs-root-resolution.md +12 -5
- package/assets/skills/oat-docs-authoring/references/lifecycle-boundaries.md +7 -7
- package/assets/skills/oat-docs-authoring/references/oat-fumadocs-contract.md +13 -3
- package/assets/skills/oat-docs-authoring/references/targeted-authoring-workflow.md +5 -4
- package/assets/skills/oat-docs-authoring/references/validation.md +11 -1
- package/assets/skills/oat-docs-bootstrap/SKILL.md +31 -8
- package/assets/skills/oat-docs-bootstrap/assets/AGENTS.md.template +2 -1
- package/assets/skills/oat-doctor/SKILL.md +25 -25
- package/assets/skills/oat-project-document/SKILL.md +21 -2
- package/assets/templates/docs-markdown/contributing.md +35 -0
- package/assets/templates/docs-markdown/index.md +18 -0
- package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
- package/dist/commands/docs/index-generate/index.js +41 -8
- package/dist/commands/docs/init/index.d.ts +17 -2
- package/dist/commands/docs/init/index.d.ts.map +1 -1
- package/dist/commands/docs/init/index.js +194 -14
- package/dist/commands/docs/init/markdown.d.ts +39 -0
- package/dist/commands/docs/init/markdown.d.ts.map +1 -0
- package/dist/commands/docs/init/markdown.js +317 -0
- package/dist/commands/docs/init/resolve-options.d.ts +3 -1
- package/dist/commands/docs/init/resolve-options.d.ts.map +1 -1
- package/dist/commands/docs/init/resolve-options.js +36 -0
- package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
- package/dist/commands/docs/init/scaffold.js +11 -0
- package/dist/commands/shared/agents-md.d.ts +7 -0
- package/dist/commands/shared/agents-md.d.ts.map +1 -1
- package/dist/commands/shared/agents-md.js +131 -91
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +1 -0
- package/dist/config/oat-config.d.ts +2 -1
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +4 -2
- package/package.json +2 -2
- package/assets/docs/cli-utilities/backlog-lifecycle.md +0 -80
- package/assets/docs/cli-utilities/index.md +0 -74
- package/assets/docs/cli-utilities/meta.json +0 -13
- package/assets/docs/cli-utilities/remote-project-management.md +0 -191
- package/assets/docs/guide/index.md +0 -31
- package/assets/docs/guide/meta.json +0 -4
- package/assets/docs/quickstart.md +0 -88
- package/assets/docs/workflows/projects/autonomy.md +0 -196
- package/assets/docs/workflows/projects/hill-checkpoints.md +0 -93
- package/assets/docs/workflows/projects/picking-up-projects.md +0 -124
- package/assets/docs/workflows/projects/review-flavors.md +0 -138
- package/assets/docs/workflows/skills/index.md +0 -184
- package/assets/docs/workflows/skills/repo-improve.md +0 -89
- package/assets/docs/workflows/wave-workflows.md +0 -77
|
@@ -19,7 +19,9 @@ This document defines the project and user sync config used by provider-interop
|
|
|
19
19
|
Discovery note:
|
|
20
20
|
|
|
21
21
|
- `oat config describe` includes both sync config scopes in its catalog so you can inspect sync/provider keys from the main config help surface.
|
|
22
|
-
-
|
|
22
|
+
- Enablement mutation lives with `oat providers set`, not `oat config set`.
|
|
23
|
+
Strategy fields are edited directly in sync config; the provider command does
|
|
24
|
+
not set them.
|
|
23
25
|
|
|
24
26
|
It is read by:
|
|
25
27
|
|
|
@@ -143,3 +145,60 @@ safe, including after interruption.
|
|
|
143
145
|
- [`commands.md`](commands.md)
|
|
144
146
|
- [`manifest-and-drift.md`](manifest-and-drift.md)
|
|
145
147
|
- [`../reference/oat-directory-structure.md`](../reference/oat-directory-structure.md)
|
|
148
|
+
|
|
149
|
+
## Choosing providers and strategy
|
|
150
|
+
|
|
151
|
+
### Which providers to enable
|
|
152
|
+
|
|
153
|
+
Enabling a provider tells OAT to maintain that agent tool's provider views (the
|
|
154
|
+
per-tool files it generates from your `.agents/` canonical assets). Set it with
|
|
155
|
+
`oat providers set --enabled <list> --disabled <list>`.
|
|
156
|
+
|
|
157
|
+
| `enabled` | Choose it when | What you give up |
|
|
158
|
+
| --------------- | ---------------------------------- | --------------------------------------------------------------------------------- |
|
|
159
|
+
| `true` | Someone on the team uses that tool | Generated files appear in your diffs, even in checkouts without the tool's folder |
|
|
160
|
+
| `false` | Nobody uses that tool | OAT stops creating, updating, or removing its files; existing views stay on disk |
|
|
161
|
+
| Unset (default) | You have not chosen yet | Predictability: the provider is active only if its folder already exists |
|
|
162
|
+
|
|
163
|
+
Interactive `oat init` writes an explicit choice for each provider. While a
|
|
164
|
+
disabled provider's folder still exists, a non-interactive `oat sync` warns
|
|
165
|
+
about it on every run, and an interactive `oat sync --scope project` offers to
|
|
166
|
+
re-enable it with that option already ticked. Untick it, or delete the folder.
|
|
167
|
+
|
|
168
|
+
- If your team uses only Claude Code, enable `claude` and disable the others.
|
|
169
|
+
- If your team mixes Claude Code, Cursor, and Codex, enable those three and
|
|
170
|
+
disable `copilot` and `gemini`, so fresh checkouts and worktrees get the same
|
|
171
|
+
views without depending on which folders happen to exist.
|
|
172
|
+
- If you stop using a tool, disable it, then delete its old views yourself.
|
|
173
|
+
|
|
174
|
+
### Links or copies
|
|
175
|
+
|
|
176
|
+
The strategy decides whether provider views are links to the canonical files or
|
|
177
|
+
copies of them. No command sets it: edit `defaultStrategy` or
|
|
178
|
+
`providers.<name>.strategy` in this file by hand, and keep `"version": 1` and
|
|
179
|
+
`"defaultStrategy"`, or sync and status stop with a validation error. The
|
|
180
|
+
"default strategy" that `oat providers inspect` prints for an adapter is not
|
|
181
|
+
used by sync; this file's setting always wins.
|
|
182
|
+
|
|
183
|
+
| Strategy | Choose it when | What you give up |
|
|
184
|
+
| ---------------- | ------------------------------------ | --------------------------------------------------------------------------------------------------------- |
|
|
185
|
+
| `auto` (default) | Almost always | Once `auto` has adopted a whole-folder link, switching strategy needs the manual recovery described above |
|
|
186
|
+
| `symlink` | You want one link per skill or agent | It refuses to sync through an existing whole-folder link |
|
|
187
|
+
| `copy` | Links really cannot work for you | Canonical edits reach the tools only after you run `oat sync` again |
|
|
188
|
+
|
|
189
|
+
Rules are always copied, whatever the strategy. If the operating system refuses
|
|
190
|
+
to create a link, `auto` and `symlink` quietly copy that entry instead, so check
|
|
191
|
+
the views sync actually produced. With `copy`, `oat status` can still report a
|
|
192
|
+
stale copy as in sync, because it compares the copy with what OAT last wrote.
|
|
193
|
+
|
|
194
|
+
> [!WARNING]
|
|
195
|
+
> The `copy` strategy stamps the absolute path of the checkout that ran sync
|
|
196
|
+
> into each copied skill. Committed copies therefore show as drifted in every
|
|
197
|
+
> other checkout (teammates, worktrees, CI), and each `oat sync` there rewrites
|
|
198
|
+
> them, so expect constant churn in Git if you commit copied views.
|
|
199
|
+
|
|
200
|
+
- If you are unsure, keep `auto`.
|
|
201
|
+
- If you want one link per entry, choose `symlink`, but remove any whole-folder
|
|
202
|
+
link first.
|
|
203
|
+
- If links truly cannot work, choose `copy`, rerun `oat sync` after every
|
|
204
|
+
canonical edit, and expect the churn described above.
|
|
@@ -11,15 +11,27 @@ or Codex.
|
|
|
11
11
|
|
|
12
12
|
You can adopt this layer on its own. It does not require tracked OAT projects, and it is the right starting point when you mainly want interoperability and drift control.
|
|
13
13
|
|
|
14
|
-
In practice, you edit the canonical layout in `.agents
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
In practice, you edit the canonical layout in `.agents/`, and choose providers
|
|
15
|
+
in `.oat/sync/config.json`; the rest of `.oat/sync/`, such as the manifest, is
|
|
16
|
+
written by OAT. OAT generates provider-specific views where required, leaves
|
|
17
|
+
native-read assets in their canonical directories, and keeps intentional
|
|
18
|
+
provider-local adoption surfaces visible.
|
|
19
|
+
|
|
20
|
+
> [!WARNING]
|
|
21
|
+
> `oat sync` and `oat init` default to scope `all`, so they also write under
|
|
22
|
+
> your home directory. Pass `--scope project` when you mean to change only this
|
|
23
|
+
> repository. Re-running `oat sync` also rewrites the files it generates in
|
|
24
|
+
> provider folders such as `.claude/` and `.codex/`, so an edit made to a
|
|
25
|
+
> generated copy there is lost. Make changes in `.agents/` instead.
|
|
26
|
+
|
|
27
|
+
Piloting with a team? Start with
|
|
28
|
+
[Pilot Provider Sync with One Team](pilot-with-a-team.md).
|
|
18
29
|
|
|
19
30
|
## Contents
|
|
20
31
|
|
|
32
|
+
- [Pilot Provider Sync with One Team](pilot-with-a-team.md) - A week-one plan for trying Provider Sync on one repository.
|
|
21
33
|
- [Provider Interop Commands](commands.md) - `oat status`, `oat sync`, and `oat providers ...` behavior.
|
|
22
|
-
- [Sync Config](config.md) - Provider config model, enablement, and scope semantics.
|
|
34
|
+
- [Sync Config (`.oat/sync/config.json`)](config.md) - Provider config model, enablement, and scope semantics.
|
|
23
35
|
- [Instruction Sync](instruction-sync.md) - Project-scoped `AGENTS.md` / `CLAUDE.md` validation, repair, and Claude-only adoption.
|
|
24
36
|
- [Manifest and Drift](manifest-and-drift.md) - How OAT tracks synced state, stray files, and adoption decisions.
|
|
25
37
|
- [Providers](providers.md) - Provider-specific mappings, capabilities, and path conventions.
|
|
@@ -27,15 +39,17 @@ surfaces visible.
|
|
|
27
39
|
|
|
28
40
|
## What This Section Is
|
|
29
41
|
|
|
30
|
-
This section explains how OAT treats `.agents/`
|
|
31
|
-
|
|
42
|
+
This section explains how OAT treats `.agents/` as the source of truth, with
|
|
43
|
+
provider settings in `.oat/sync/config.json`, when provider views are derived
|
|
44
|
+
from those canonical assets, how
|
|
32
45
|
native-read mappings avoid redundant output, and how provider-local adoption
|
|
33
46
|
surfaces remain discoverable.
|
|
34
47
|
|
|
35
48
|
## What OAT Treats As Canonical
|
|
36
49
|
|
|
37
50
|
- canonical skills, agents, and rules under `.agents/`
|
|
38
|
-
- sync
|
|
51
|
+
- provider settings in `.oat/sync/config.json`, and sync state that OAT writes
|
|
52
|
+
to `.oat/sync/manifest.json`
|
|
39
53
|
- provider-specific files as derived views when a mapping requires output
|
|
40
54
|
- native-read assets in canonical directories without mirrored provider files
|
|
41
55
|
- provider-local extension files as adoption candidates until explicitly
|
|
@@ -49,16 +63,18 @@ surfaces remain discoverable.
|
|
|
49
63
|
|
|
50
64
|
## Typical Flow
|
|
51
65
|
|
|
52
|
-
1. Run `oat init` to create the base OAT layout and setup state.
|
|
53
|
-
2. Inspect current sync state with `oat status`.
|
|
66
|
+
1. Run `oat init --scope project` to create the base OAT layout and setup state.
|
|
67
|
+
2. Inspect current sync state with `oat status --scope project`.
|
|
54
68
|
3. Adjust provider enablement with `oat providers ...` if needed.
|
|
55
|
-
4. Run `oat sync` to materialize required provider views and
|
|
56
|
-
state. Native-read assets do not produce provider-view
|
|
57
|
-
|
|
69
|
+
4. Run `oat sync --scope project` to materialize required provider views and
|
|
70
|
+
reconcile managed state. Native-read assets do not produce provider-view
|
|
71
|
+
operations.
|
|
72
|
+
5. Re-run `oat status --scope project` after edits to confirm whether anything
|
|
73
|
+
drifted or needs adoption.
|
|
58
74
|
|
|
59
75
|
## Start Here
|
|
60
76
|
|
|
61
|
-
- Use [CLI Bootstrap](../
|
|
77
|
+
- Use [CLI Bootstrap](../getting-started/bootstrap.md) when you are bootstrapping OAT and want the sync-relevant setup path.
|
|
62
78
|
- Go to [Commands](commands.md) once you are actively using `oat status`, `oat sync`, and `oat providers`.
|
|
63
79
|
- Read [Scope and Surface](scope-and-surface.md) when you need the canonical/provider-view mental model.
|
|
64
80
|
|
|
@@ -72,7 +88,7 @@ surfaces remain discoverable.
|
|
|
72
88
|
|
|
73
89
|
## Go Deeper
|
|
74
90
|
|
|
75
|
-
- [CLI Bootstrap](../
|
|
91
|
+
- [CLI Bootstrap](../getting-started/bootstrap.md) - Foundational setup before first sync.
|
|
76
92
|
- [Scope and Surface](scope-and-surface.md) - Canonical assets, provider views, scopes, and the sync surface area.
|
|
77
93
|
- [Commands](commands.md) - `oat status`, `oat sync`, and `oat providers ...` behavior.
|
|
78
94
|
- [Instruction Sync](instruction-sync.md) - Project-scoped `AGENTS.md` / `CLAUDE.md` validation, repair, and Claude-only adoption.
|
|
@@ -41,22 +41,29 @@ to fix.
|
|
|
41
41
|
|
|
42
42
|
The content root is derived from `documentation.root` in `.oat/config.json`:
|
|
43
43
|
|
|
44
|
-
-
|
|
45
|
-
|
|
44
|
+
- for tooling `markdown`, the literal configured `documentation.root`, even
|
|
45
|
+
when it contains a child directory named `docs`;
|
|
46
|
+
- for other or undeclared tooling, `<documentation.root>/docs` when that path is
|
|
47
|
+
a directory, otherwise `documentation.root` itself.
|
|
46
48
|
|
|
47
49
|
This is the same derivation `oat docs generate-index` uses to pick its default
|
|
48
50
|
docs directory, so the excluded tree and the indexed tree agree by
|
|
49
51
|
construction. (`oat docs generate-index --docs-dir` overrides the index side
|
|
50
52
|
only; it does not change what instruction sync excludes.)
|
|
51
53
|
|
|
52
|
-
**
|
|
53
|
-
|
|
54
|
+
**Framework app-level instruction files are still synced.** For framework tooling, `documentation.root`
|
|
55
|
+
names the docs _app_ root, and a file like
|
|
54
56
|
`apps/oat-docs/AGENTS.md` is instructions for working on the docs app rather
|
|
55
57
|
than a documentation page. When the app root has a `docs` child, only that
|
|
56
58
|
child is skipped, and the app root is still synced (under a shim strategy it
|
|
57
59
|
keeps receiving its `CLAUDE.md` pointer). Opt the app root out explicitly if
|
|
58
60
|
you do not want it synced.
|
|
59
61
|
|
|
62
|
+
For configured Markdown, the entire content root remains excluded, including
|
|
63
|
+
existing local AGENTS files and parent pages outside a nested `docs` subsection.
|
|
64
|
+
Bootstrap preserves local guidance and creates no docs-root AGENTS. Pointer sync
|
|
65
|
+
never replaces authored content or those local instruction files.
|
|
66
|
+
|
|
60
67
|
Add further paths with `instructions.claude.excludes`, a list of
|
|
61
68
|
repository-relative directories. Set it with
|
|
62
69
|
`oat config set instructions.claude.excludes "vendor,third_party/docs"`
|
|
@@ -460,5 +467,36 @@ oat instructions sync --force --strategy copy
|
|
|
460
467
|
|
|
461
468
|
- [Provider Interop Commands](commands.md)
|
|
462
469
|
- [Provider Interop CLI Scope and Surface](scope-and-surface.md)
|
|
463
|
-
- [Config and Local State](../
|
|
470
|
+
- [Config and Local State](../reference/config-and-local-state.md)
|
|
464
471
|
- [Troubleshooting](../reference/troubleshooting.md)
|
|
472
|
+
|
|
473
|
+
## Which instruction strategy should I choose?
|
|
474
|
+
|
|
475
|
+
A shim is a `CLAUDE.md` that OAT keeps next to an `AGENTS.md` so that Claude
|
|
476
|
+
Code setups which read only `CLAUDE.md` still see the instructions. The
|
|
477
|
+
strategy decides whether OAT keeps shims and what form they take.
|
|
478
|
+
|
|
479
|
+
| Strategy | Choose it when | What you give up |
|
|
480
|
+
| ---------------- | ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
481
|
+
| `none` (default) | Every contributor's Claude Code reads `AGENTS.md` itself, at default settings | Older releases, or a setting that loads only `CLAUDE.md`, see no instructions |
|
|
482
|
+
| `pointer` | Some contributors need a `CLAUDE.md` | One small file per directory, containing only `@AGENTS.md`; it never goes stale |
|
|
483
|
+
| `symlink` | Contributors need a `CLAUDE.md` and links work on every machine | Portability on machines where links are a problem |
|
|
484
|
+
| `copy` | A tool needs the full instruction text in `CLAUDE.md` | After each `AGENTS.md` edit, sync skips the changed copy until you run it with `--force` |
|
|
485
|
+
|
|
486
|
+
The default is `none` because Claude Code stops reading every `AGENTS.md` in the
|
|
487
|
+
project as soon as any `CLAUDE.md` exists (see
|
|
488
|
+
[Claude Code and AGENTS.md](#claude-code-and-agentsmd)), so shims in some
|
|
489
|
+
directories but not others hide the instructions in the rest. Shims are
|
|
490
|
+
maintained only by `oat instructions sync`; `oat sync` never touches them. If a
|
|
491
|
+
`CLAUDE.md` holds text that is not in its `AGENTS.md`, move that text into
|
|
492
|
+
`AGENTS.md` before removing the shim.
|
|
493
|
+
|
|
494
|
+
- If you can confirm that everyone uses a current Claude Code at default
|
|
495
|
+
settings, keep `none`.
|
|
496
|
+
- If you cannot confirm every contributor's setup, for example on a mixed team
|
|
497
|
+
or an open-source project, choose `pointer`. It works everywhere and never
|
|
498
|
+
duplicates the instruction text.
|
|
499
|
+
- If you are sure links work on every contributor's machine, `symlink` is an
|
|
500
|
+
alternative to `pointer`.
|
|
501
|
+
- Choose `copy` only when a consumer needs the full text, and plan to run
|
|
502
|
+
`oat instructions sync --force` after editing `AGENTS.md`.
|
|
@@ -13,6 +13,67 @@ This page explains how OAT remembers what it manages and how it distinguishes cl
|
|
|
13
13
|
- When to use it: when `oat status` shows drift or strays and you need to understand why OAT thinks a file is managed, missing, or adoptable.
|
|
14
14
|
- Primary commands: `oat status`, `oat init`, `oat sync`
|
|
15
15
|
|
|
16
|
+
Diagram: canonical assets produce provider views and a manifest; status reports what changed and how to resolve it.
|
|
17
|
+
|
|
18
|
+
```mermaid
|
|
19
|
+
flowchart TD
|
|
20
|
+
CANON["Canonical assets\nEdit .agents/"]
|
|
21
|
+
SYNC["oat sync\nGenerate views"]
|
|
22
|
+
VIEWS["Provider views"]
|
|
23
|
+
MANIFEST["Sync manifest"]
|
|
24
|
+
STATUS["oat status\nInspect before resolving"]
|
|
25
|
+
TRACKED["Tracked views\nin_sync / drifted / missing"]
|
|
26
|
+
STRAY["Unmanaged files\nstray"]
|
|
27
|
+
CANON --> SYNC
|
|
28
|
+
SYNC --> VIEWS
|
|
29
|
+
SYNC --> MANIFEST
|
|
30
|
+
MANIFEST --> STATUS
|
|
31
|
+
VIEWS --> STATUS
|
|
32
|
+
STATUS --> TRACKED
|
|
33
|
+
STATUS --> STRAY
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- **What you edit.** Only the canonical files under `.agents/` (skills, agents,
|
|
37
|
+
rules). `oat sync` reads them and writes provider views as symlinks or copies
|
|
38
|
+
under `.claude/`, `.cursor/`, `.github/` and `.codex/`. It records each
|
|
39
|
+
per-entry view in `.oat/sync/manifest.json`, one entry per canonical path and
|
|
40
|
+
provider. Codex roles and config are generated too, but are tracked by the
|
|
41
|
+
Codex extension, not as manifest entries.
|
|
42
|
+
- **What `oat status` reports.** A view is `in_sync` when it still matches what
|
|
43
|
+
the last sync recorded, `drifted` (`modified`, `broken` or `replaced`) when
|
|
44
|
+
its content or link changed or its target is gone, and `missing` when no view
|
|
45
|
+
exists or it was never tracked. A provider file OAT does not manage is a
|
|
46
|
+
`stray`.
|
|
47
|
+
- **What re-running `oat sync` does.** It writes unless you pass `--dry-run`.
|
|
48
|
+
It recreates missing views and rewrites drifted ones from canonical, so an
|
|
49
|
+
edit made in a provider copy is lost, not merged. A file you placed at a
|
|
50
|
+
view's path without OAT is replaced too. When a skill or rule is deleted
|
|
51
|
+
from `.agents/`, sync removes its views. When an agent is deleted or
|
|
52
|
+
renamed, it does not; see the warning below.
|
|
53
|
+
- **What to do with a stray.** In an interactive `oat status` or `oat init` you
|
|
54
|
+
can adopt it, which moves or converts it into `.agents/`. For a Cursor or
|
|
55
|
+
Copilot skill you can keep it in place; OAT records the path under
|
|
56
|
+
`knownStrays` in `.oat/sync/config.json` and leaves it out of later reports.
|
|
57
|
+
You can also list a path there by hand.
|
|
58
|
+
|
|
59
|
+
> [!WARNING]
|
|
60
|
+
> Sync does not clean up after a deleted or renamed agent. With Cursor enabled,
|
|
61
|
+
> once `.agents/agents/<name>.md` is gone, `oat sync`, `oat sync --dry-run` and
|
|
62
|
+
> `oat status` exit 1 with
|
|
63
|
+
> `Cursor agent definition is a symbolic link at .cursor/agents/<name>.md whose target escapes the sync scope.`
|
|
64
|
+
> With Codex enabled, the agent's generated files stay behind. After deleting
|
|
65
|
+
> or renaming an agent, clean up by hand:
|
|
66
|
+
>
|
|
67
|
+
> 1. Delete the link `.cursor/agents/<name>.md`.
|
|
68
|
+
> 2. Delete the link `.claude/agents/<name>.md`; until it is gone, the same
|
|
69
|
+
> error names that path instead.
|
|
70
|
+
> 3. Delete `.codex/agents/<name>.toml`.
|
|
71
|
+
> 4. In `.codex/config.toml`, delete the `[agents.<name>]` table.
|
|
72
|
+
> 5. Run `oat sync --scope project`; it should now succeed.
|
|
73
|
+
>
|
|
74
|
+
> Skills and rules are not affected: sync removes their views when the
|
|
75
|
+
> canonical file is deleted.
|
|
76
|
+
|
|
16
77
|
## Manifest locations
|
|
17
78
|
|
|
18
79
|
- Project: `.oat/sync/manifest.json`
|
|
@@ -271,3 +332,27 @@ reasoning effort, and OAT writes a role such as
|
|
|
271
332
|
- `.oat/projects/<scope>/<project>/design.md`
|
|
272
333
|
- `packages/cli/src/manifest/**`
|
|
273
334
|
- `packages/cli/src/drift/**`
|
|
335
|
+
|
|
336
|
+
## Choosing a stray disposition
|
|
337
|
+
|
|
338
|
+
A stray is a file in a provider folder (such as `.cursor/skills/`) that OAT
|
|
339
|
+
does not manage. Interactive `oat init` and `oat status` ask what to do with
|
|
340
|
+
each one.
|
|
341
|
+
|
|
342
|
+
| Choice | Choose it when | What you give up |
|
|
343
|
+
| ---------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
344
|
+
| Adopt | Every agent tool should get it | Keeping it in one tool only: OAT moves it into `.agents/`. Generated provider views receive a link; Cursor and Copilot skills are read canonically, without recreating the provider-local path or adding a managed-view manifest row. |
|
|
345
|
+
| Keep tool-only | A Cursor or Copilot skill is meant for that tool only | Other tools never see it. Its exact path is saved in `knownStrays` and no longer reported |
|
|
346
|
+
| Decide later (default) | You are not sure who should own it yet | It is reported again on every run |
|
|
347
|
+
|
|
348
|
+
Keep is offered only for Cursor and Copilot skills, and OAT refuses it when a
|
|
349
|
+
canonical skill with the same name exists; resolve that clash instead. Keeping a
|
|
350
|
+
skill only stops OAT from reporting that path. It does not check that the
|
|
351
|
+
skill is correct or up to date with anything else.
|
|
352
|
+
|
|
353
|
+
- If a skill should work in every agent tool, adopt it.
|
|
354
|
+
- If a Cursor- or Copilot-only skill is personal, keep it at user scope; if the
|
|
355
|
+
team needs it, keep it at project scope.
|
|
356
|
+
- For any other stray you want to keep, add its exact path to `knownStrays` by
|
|
357
|
+
hand, or gitignore it.
|
|
358
|
+
- If you are not sure yet, choose Decide later so it stays visible.
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Pilot Provider Sync with One Team
|
|
3
|
+
description: 'A week-one plan for trying Provider Sync on one repository with a team that mixes Claude Code, Cursor, and Codex: setup, teammate onboarding, what to watch, and how to decide.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Pilot Provider Sync with One Team
|
|
7
|
+
|
|
8
|
+
Provider Sync gives a team one set of skills, agents, and rules, kept in the
|
|
9
|
+
repository as canonical assets (the files you edit, under `.agents/`), and
|
|
10
|
+
shows them to each coding tool, or provider, in that tool's own format. When a
|
|
11
|
+
provider view (the per-tool file OAT generates, such as
|
|
12
|
+
`.claude/skills/<name>`) no longer matches what OAT wrote, OAT reports it as
|
|
13
|
+
drift.
|
|
14
|
+
|
|
15
|
+
This pilot needs no tracked workflows and no project management setup. OAT
|
|
16
|
+
does not commit or push anything during it: you review the changes, commit
|
|
17
|
+
them, and open the pull request yourself.
|
|
18
|
+
|
|
19
|
+
## Before you start
|
|
20
|
+
|
|
21
|
+
The team needs Node.js 22.17 or newer and Git 2.31 or newer. Each person
|
|
22
|
+
installs the CLI with:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install --global @open-agent-toolkit/cli
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Agree on one CLI version for the pilot. Each sync stamps its CLI version into
|
|
29
|
+
the sync manifest, so if you commit that file, mixed versions show up as small,
|
|
30
|
+
noisy changes to it. To install a specific version, add it to the package name:
|
|
31
|
+
`npm install --global @open-agent-toolkit/cli@<version>`.
|
|
32
|
+
|
|
33
|
+
One person does the setup, on a branch. The pilot adds these to the
|
|
34
|
+
repository:
|
|
35
|
+
|
|
36
|
+
- `.agents/` with your skills, agents, and rules
|
|
37
|
+
- `.oat/sync/config.json` (which providers are on) and
|
|
38
|
+
`.oat/sync/manifest.json` (what OAT last wrote)
|
|
39
|
+
- a marked OAT block in `.gitignore`, and a `.gitattributes` file or block
|
|
40
|
+
- provider views such as `.claude/skills/`, `.cursor/agents/`, and `.codex/`
|
|
41
|
+
|
|
42
|
+
[What OAT Writes](../reference/what-oat-writes.md) lists every path, what
|
|
43
|
+
creates it, and whether it is meant to be committed.
|
|
44
|
+
|
|
45
|
+
## Week one
|
|
46
|
+
|
|
47
|
+
Scope decides which tree a command works on: `project` is this repository and
|
|
48
|
+
`user` is your home directory. Every command below passes `--scope project`, so
|
|
49
|
+
nothing is written outside the repository.
|
|
50
|
+
|
|
51
|
+
1. Install the CLI (see above), then check it runs:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
oat --version
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
2. Create a branch and initialize the repository:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
git switch -c try-provider-sync
|
|
61
|
+
oat init --scope project
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
If `oat init` asks whether to run guided setup, answer no: guided setup
|
|
65
|
+
installs every tool pack into your home directory, which this pilot does not
|
|
66
|
+
need. Then look at `git status`: you should see `.gitignore`,
|
|
67
|
+
`.gitattributes`, and `.oat/` (which holds `.oat/sync/manifest.json`). The
|
|
68
|
+
empty `.agents/skills`,
|
|
69
|
+
`.agents/agents`, and `.agents/rules` folders are also created, but Git
|
|
70
|
+
shows them only once they contain files. Nothing is written in your home
|
|
71
|
+
directory.
|
|
72
|
+
|
|
73
|
+
3. Choose providers explicitly. For a team that mixes Claude Code, Cursor, and
|
|
74
|
+
Codex:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
oat providers set --scope project --enabled claude,cursor,codex --disabled copilot,gemini
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Look at the new `.oat/sync/config.json`. Set every provider explicitly,
|
|
81
|
+
because a provider you leave unset is still synced whenever its folder (for
|
|
82
|
+
example `.claude/`) exists, which differs from one checkout to the next.
|
|
83
|
+
[Sync Config](config.md#which-providers-to-enable) explains each choice.
|
|
84
|
+
|
|
85
|
+
4. Add one real skill your team already repeats. A skill is a folder with a
|
|
86
|
+
`SKILL.md` file:
|
|
87
|
+
|
|
88
|
+
```markdown title=".agents/skills/review-migration/SKILL.md"
|
|
89
|
+
---
|
|
90
|
+
name: review-migration
|
|
91
|
+
description: Use when reviewing a database migration for rollback safety.
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
# Review a migration
|
|
95
|
+
|
|
96
|
+
Check that the migration can be rolled back and that the previous release
|
|
97
|
+
still works against the new schema. Report problems; do not run the
|
|
98
|
+
migration.
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
[Writing Skills](../contributing/skills.md#frontmatter-fields-in-active-use)
|
|
102
|
+
lists the frontmatter fields. A rule is a Markdown file in `.agents/rules/`
|
|
103
|
+
instead; see
|
|
104
|
+
[Canonical rule frontmatter](providers.md#canonical-rule-frontmatter).
|
|
105
|
+
|
|
106
|
+
5. Preview the sync, then apply it:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
oat sync --scope project --dry-run
|
|
110
|
+
oat sync --scope project
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
The preview lists each planned operation and changes nothing. After the real
|
|
114
|
+
run, `.claude/skills/review-migration` should be a link to
|
|
115
|
+
`../../.agents/skills/review-migration`. Start a new session in each tool so
|
|
116
|
+
it picks up the change.
|
|
117
|
+
|
|
118
|
+
6. Check the result:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
oat status --scope project
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Every row should read `in_sync`. A `missing` row means that entry has not
|
|
125
|
+
been synced yet.
|
|
126
|
+
|
|
127
|
+
7. Review the diff and commit it. Use
|
|
128
|
+
[What to commit](../reference/what-oat-writes.md#what-to-commit) to check
|
|
129
|
+
each path.
|
|
130
|
+
|
|
131
|
+
8. Push the branch and open a pull request. The team reviews it like any other
|
|
132
|
+
change.
|
|
133
|
+
|
|
134
|
+
## What each teammate does
|
|
135
|
+
|
|
136
|
+
After the pilot branch merges, each teammate installs the same CLI version. If
|
|
137
|
+
the pilot committed its provider views, nothing else is needed to start: the
|
|
138
|
+
views are relative links into `.agents/` and generated files that contain no
|
|
139
|
+
machine-specific paths, and Cursor and Codex read skills from `.agents/skills`
|
|
140
|
+
directly. To confirm, run `oat status --scope project`; a `missing` row means a
|
|
141
|
+
view was not committed, and `oat sync --scope project` creates it. The links and
|
|
142
|
+
generated files were checked on macOS, including in a fresh clone; how Windows
|
|
143
|
+
checkouts handle committed links was not tested.
|
|
144
|
+
|
|
145
|
+
Run `oat sync --scope project`, and commit its output in the same change, when
|
|
146
|
+
you add, rename, or delete a skill, agent, or rule, or change an agent or rule.
|
|
147
|
+
Deleting or renaming an agent also needs the manual cleanup described below.
|
|
148
|
+
Rules, Codex agent files and Cursor's per-model agent variants are generated
|
|
149
|
+
copies, so they only change when sync runs. An edit inside an existing linked
|
|
150
|
+
skill reaches Claude Code at once, because the view is a link.
|
|
151
|
+
|
|
152
|
+
Make every change in `.agents/`, never in the provider folders. Re-running sync
|
|
153
|
+
overwrites edits made to generated copies, replaces an untracked file sitting
|
|
154
|
+
at a view path, and removes the view of a deleted skill or rule. Editing
|
|
155
|
+
through a link changes the canonical file itself, which is easy to miss in
|
|
156
|
+
review.
|
|
157
|
+
|
|
158
|
+
Agents are the exception. After you delete or rename an agent, delete its old
|
|
159
|
+
links in `.cursor/agents/` and `.claude/agents/` yourself: with Cursor enabled,
|
|
160
|
+
`oat sync` and `oat status` stop with an error saying the link's target
|
|
161
|
+
`escapes the sync scope` until both links are gone. Also delete its
|
|
162
|
+
`.codex/agents/<name>.toml` file and the `[agents.<name>]` table in
|
|
163
|
+
`.codex/config.toml`, which sync leaves behind.
|
|
164
|
+
|
|
165
|
+
Before committing, run `oat status --scope project`. It exits 1 when any view
|
|
166
|
+
is missing or drifted, or when a stray file sits in a provider folder. For a
|
|
167
|
+
check that ignores strays, such as a CI step, run
|
|
168
|
+
`oat status --scope project --hook`: it prints one warning line and exits 1
|
|
169
|
+
only when a view is missing or drifted.
|
|
170
|
+
|
|
171
|
+
For an automatic reminder, a teammate can add OAT's optional pre-commit hook
|
|
172
|
+
with `oat init --scope project --hook`. Git does not copy hooks when you clone,
|
|
173
|
+
so each person adds it in their own clone. The hook only warns; it never blocks
|
|
174
|
+
a commit, and it does nothing if `oat` is not installed. If the repository sets
|
|
175
|
+
Git's `core.hooksPath`, the hook goes in that folder instead, which may be
|
|
176
|
+
inside the working tree. Remove it with `oat init --scope project --no-hook`.
|
|
177
|
+
|
|
178
|
+
## Mixed tools
|
|
179
|
+
|
|
180
|
+
| Provider | What OAT generates in the repository | What the team should know |
|
|
181
|
+
| ----------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
182
|
+
| Claude Code | A relative link per skill in `.claude/skills/` and per agent in `.claude/agents/`; rules as generated copies in `.claude/rules/` | The only provider with skill views, so a new skill reaches Claude Code only after sync |
|
|
183
|
+
| Cursor | No skill files: it reads `.agents/skills`. A link per agent in `.cursor/agents/`; rules as `.cursor/rules/*.mdc` files | Its `.cursor/skills/` folder is not managed; skills found there are reported as strays |
|
|
184
|
+
| Codex | No skill files: it reads `.agents/skills`. A generated `.codex/agents/<name>.toml` per agent, registered in `.codex/config.toml` | Sync merges into an existing `.codex/config.toml`: it adds OAT's tables, turns on `multi_agent` and raises `max_depth` to at least 2, and keeps your other settings |
|
|
185
|
+
| Gemini | Nothing; it reads skills and agents from `.agents/` directly | Nothing to commit |
|
|
186
|
+
|
|
187
|
+
If OAT's own implementer and reviewer agents are installed in the repository,
|
|
188
|
+
sync also generates one file per supported model for each of them, in
|
|
189
|
+
`.cursor/agents/` and `.codex/agents/`, which can add dozens of files to the
|
|
190
|
+
first diff. The skill links, agent links, rule copies, generated agent files
|
|
191
|
+
and `.codex/config.toml` merge were observed by running the CLI in a test
|
|
192
|
+
repository. [Providers](providers.md) also covers Copilot and the user scope.
|
|
193
|
+
|
|
194
|
+
## What to watch for in week one
|
|
195
|
+
|
|
196
|
+
- **A bare `oat sync` or `oat init` can also write in your home directory.**
|
|
197
|
+
Both default to scope `all`. Use `--scope project` in shared instructions,
|
|
198
|
+
scripts, and CI.
|
|
199
|
+
- **Edits in provider folders are not safe.** Sync overwrites edits to
|
|
200
|
+
generated copies from `.agents/`, and an edit made through a link silently
|
|
201
|
+
changes the canonical file.
|
|
202
|
+
- **Disabling a provider leaves its views in place.** Delete them yourself.
|
|
203
|
+
While a disabled provider's folder exists, sync warns on every run, and an
|
|
204
|
+
interactive sync offers to re-enable it with the box already ticked; untick
|
|
205
|
+
it.
|
|
206
|
+
- **Keep the default `auto` strategy unless links cannot work.** The `copy`
|
|
207
|
+
strategy records the absolute path of the checkout that ran sync, so copies
|
|
208
|
+
show as drifted in every other checkout and churn in Git.
|
|
209
|
+
- **Strays are reported, not deleted.** A stray is a file in a provider folder
|
|
210
|
+
that OAT does not manage. See
|
|
211
|
+
[Choosing a stray disposition](manifest-and-drift.md#choosing-a-stray-disposition).
|
|
212
|
+
|
|
213
|
+
## Deciding after the pilot
|
|
214
|
+
|
|
215
|
+
The pilot is working when:
|
|
216
|
+
|
|
217
|
+
- one change in `.agents/` shows up in Claude Code, Cursor, and Codex after one
|
|
218
|
+
sync and one commit
|
|
219
|
+
- teammates on different tools use the same skill without copying it by hand
|
|
220
|
+
- `oat status --scope project` shows every row `in_sync` before commits, or in
|
|
221
|
+
CI with `--hook`
|
|
222
|
+
- nobody has had to edit a provider folder by hand
|
|
223
|
+
|
|
224
|
+
**If you stop**, follow [Backing out](../reference/what-oat-writes.md#backing-out).
|
|
225
|
+
There is no uninstall command: stopping means one commit that deletes the files
|
|
226
|
+
the pilot added and OAT's blocks in `.gitignore` and `.gitattributes`, plus
|
|
227
|
+
`oat init --scope project --no-hook` in each clone that added the hook. Your
|
|
228
|
+
skills are plain files, so you can keep them.
|
|
229
|
+
|
|
230
|
+
## Next
|
|
231
|
+
|
|
232
|
+
- [Provider Sync](index.md) and [Commands](commands.md)
|
|
233
|
+
- [Sync Config](config.md) and [Scope and Surface](scope-and-surface.md)
|
|
234
|
+
- [Manifest and Drift](manifest-and-drift.md) and [Providers](providers.md)
|
|
235
|
+
- [Quickstart](../getting-started/quickstart.md)
|
|
236
|
+
- [What OAT Writes](../reference/what-oat-writes.md)
|
|
@@ -25,7 +25,7 @@ Rules are currently project-scoped canonical content. Unlike skills and agents,
|
|
|
25
25
|
|
|
26
26
|
- Mutate by default; `--dry-run` to preview
|
|
27
27
|
- Explicit `--dry-run` for safe preview of mutations
|
|
28
|
-
-
|
|
28
|
+
- Deletions are limited to manifest-tracked entries: sync removes a skill or rule view only when the manifest records it and its canonical source is gone. Deleted agents are not cleaned up this way: with Cursor enabled, sync and status stop with an `escapes the sync scope` error until you delete the agent's dangling links in `.cursor/agents/` and `.claude/agents/`, and Codex's `.codex/agents/<name>.toml` and `[agents.<name>]` table are never removed (see [Manifest and Drift](manifest-and-drift.md#quick-look)). A provider file with no canonical source and no manifest entry is reported as a stray by `oat status`, not deleted. Writing a view is not limited this way: sync replaces whatever sits at a view's expected path, including an untracked file (see the warning under [Choosing sync scope](#choosing-sync-scope))
|
|
29
29
|
- Cross-provider compatibility via adapters
|
|
30
30
|
- Native-read assets stay canonical while provider-local adoption sources remain discoverable independently
|
|
31
31
|
- Obsolete managed mappings are deleted only when their provider paths are verified clean; changed or unverified paths are preserved and detached from manifest ownership
|
|
@@ -50,8 +50,8 @@ Rules are currently project-scoped canonical content. Unlike skills and agents,
|
|
|
50
50
|
|
|
51
51
|
## Adjacent CLI commands (commonly used with provider interop)
|
|
52
52
|
|
|
53
|
-
- `oat init` (bootstrap canonical structure and sync config) — see
|
|
54
|
-
- `oat tools ...` (install/update/remove/migrate/list/inspect tools) — see
|
|
53
|
+
- `oat init` (bootstrap canonical structure and sync config) — see [CLI Bootstrap](../getting-started/bootstrap.md)
|
|
54
|
+
- `oat tools ...` (install/update/remove/migrate/list/inspect tools) — see [Tool Packs and Installed Assets](../getting-started/tool-packs.md)
|
|
55
55
|
- `oat doctor` (environment + skill-version diagnostics) — see `../reference/cli-reference.md`
|
|
56
56
|
|
|
57
57
|
## Provider enablement model
|
|
@@ -131,3 +131,37 @@ runtime mismatch, malformed output, and missing telemetry never authorize it.
|
|
|
131
131
|
- `.oat/projects/<scope>/<project>/design.md`
|
|
132
132
|
- `.oat/projects/<scope>/<project>/plan.md`
|
|
133
133
|
- `.oat/projects/<scope>/<project>/implementation.md`
|
|
134
|
+
|
|
135
|
+
## Choosing sync scope
|
|
136
|
+
|
|
137
|
+
`oat sync` and `oat status` take `--scope project`, `--scope user`, or
|
|
138
|
+
`--scope all`. Project scope works on this repository's canonical assets (the
|
|
139
|
+
files under `.agents/`) and its provider views (the per-tool copies or links
|
|
140
|
+
such as `.claude/skills/<name>`). User scope does the same for `~/.agents/` and
|
|
141
|
+
the tool folders in your home directory. All runs project scope, then user scope.
|
|
142
|
+
|
|
143
|
+
| Scope | Choose it when | What you give up |
|
|
144
|
+
| --------------- | --------------------------------------------------- | ------------------------------------------------- |
|
|
145
|
+
| `project` | CI, scripts, or a team checkout | Your personal skills are not refreshed |
|
|
146
|
+
| `user` | You keep personal skills that you use in every repo | Rules are not synced; they exist only per project |
|
|
147
|
+
| `all` (default) | You maintain both trees on your own machine | Every run also writes into your home directory |
|
|
148
|
+
|
|
149
|
+
User scope never syncs rules: only project scope distributes the rules in
|
|
150
|
+
`.agents/rules` to provider folders. Edit the files under `.agents/` rather than
|
|
151
|
+
the provider views, because sync overwrites changes made in the views.
|
|
152
|
+
|
|
153
|
+
> [!WARNING]
|
|
154
|
+
> A bare `oat sync` uses scope `all`, so it also writes under your home
|
|
155
|
+
> directory. Every sync also overwrites edits made directly in provider folders,
|
|
156
|
+
> replaces an untracked file sitting at a view path, and removes the view of a
|
|
157
|
+
> deleted skill or rule. It does not clean up after a deleted or renamed agent;
|
|
158
|
+
> see [Manifest and Drift](manifest-and-drift.md#quick-look) for the manual
|
|
159
|
+
> steps. Pass `--scope` explicitly, and preview with `--dry-run` when you are
|
|
160
|
+
> unsure.
|
|
161
|
+
|
|
162
|
+
- If the run is in CI or a script, always pass `--scope project`, and preview
|
|
163
|
+
with `--dry-run` when you change what is synced.
|
|
164
|
+
- If you want personal skills in every repository, put them in
|
|
165
|
+
`~/.agents/skills` and run `oat sync --scope user`.
|
|
166
|
+
- If you deliberately maintain both trees on your own machine, `--scope all` (or
|
|
167
|
+
a bare `oat sync`) is fine.
|