@open-agent-toolkit/cli 0.3.13 → 0.3.15

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.
Files changed (124) hide show
  1. package/README.md +1 -1
  2. package/assets/bundle-metadata.json +1 -1
  3. package/assets/docs/contributing/index.md +14 -1
  4. package/assets/docs/contributing/markdown-features.md +38 -0
  5. package/assets/docs/contributing/skills.md +64 -2
  6. package/assets/docs/contributing/smoke-testing.md +23 -16
  7. package/assets/docs/contributing/updating-model-guidance.md +2 -2
  8. package/assets/docs/contributing/verifying-cursor-pins.md +1 -1
  9. package/assets/docs/docs-tooling/add-docs-to-a-repo.md +32 -0
  10. package/assets/docs/docs-tooling/agent-instructions.md +131 -0
  11. package/assets/docs/docs-tooling/index.md +1 -0
  12. package/assets/docs/docs-tooling/meta.json +1 -1
  13. package/assets/docs/docs-tooling/workflows.md +338 -2
  14. package/assets/docs/{cli-utilities → getting-started}/bootstrap.md +60 -5
  15. package/assets/docs/getting-started/concepts.md +120 -0
  16. package/assets/docs/getting-started/index.md +68 -0
  17. package/assets/docs/getting-started/meta.json +4 -0
  18. package/assets/docs/getting-started/quickstart.md +174 -0
  19. package/assets/docs/{cli-utilities → getting-started}/tool-packs.md +142 -14
  20. package/assets/docs/index.md +47 -48
  21. package/assets/docs/meta.json +6 -7
  22. package/assets/docs/provider-sync/commands.md +25 -2
  23. package/assets/docs/provider-sync/config.md +60 -1
  24. package/assets/docs/provider-sync/index.md +31 -15
  25. package/assets/docs/provider-sync/instruction-sync.md +32 -1
  26. package/assets/docs/provider-sync/manifest-and-drift.md +92 -0
  27. package/assets/docs/provider-sync/meta.json +1 -0
  28. package/assets/docs/provider-sync/pilot-with-a-team.md +236 -0
  29. package/assets/docs/provider-sync/scope-and-surface.md +37 -3
  30. package/assets/docs/reference/cli-reference.md +33 -33
  31. package/assets/docs/{cli-utilities → reference}/config-and-local-state.md +25 -9
  32. package/assets/docs/{cli-utilities → reference}/configuration.md +151 -34
  33. package/assets/docs/reference/file-locations.md +4 -1
  34. package/assets/docs/reference/index.md +13 -1
  35. package/assets/docs/reference/meta.json +7 -1
  36. package/assets/docs/reference/oat-directory-structure.md +1 -1
  37. package/assets/docs/{workflows/projects/artifacts.md → reference/project-artifacts.md} +4 -4
  38. package/assets/docs/{workflows/projects/state-machine.md → reference/project-state-machine.md} +28 -21
  39. package/assets/docs/{workflows/projects/repo-analysis.md → reference/repository-pr-comments.md} +2 -2
  40. package/assets/docs/reference/troubleshooting.md +125 -10
  41. package/assets/docs/reference/what-oat-writes.md +410 -0
  42. package/assets/docs/skills/brainstorm.md +77 -0
  43. package/assets/docs/skills/diagnostics.md +56 -0
  44. package/assets/docs/{workflows/skills → skills}/explainer-kit.md +121 -0
  45. package/assets/docs/skills/index.md +416 -0
  46. package/assets/docs/{workflows/skills → skills}/meta.json +4 -2
  47. package/assets/docs/{workflows/skills → skills}/recon.md +49 -0
  48. package/assets/docs/skills/repo-improve.md +254 -0
  49. package/assets/docs/skills/research.md +237 -0
  50. package/assets/docs/skills/session-closeout.md +61 -0
  51. package/assets/docs/workflows/advanced/autonomy.md +344 -0
  52. package/assets/docs/workflows/{projects → advanced}/cursor-cloud.md +69 -1
  53. package/assets/docs/workflows/{projects → advanced}/dispatch-ceiling.md +163 -18
  54. package/assets/docs/workflows/{projects → advanced}/evidence-layers.md +20 -13
  55. package/assets/docs/workflows/advanced/index.md +19 -0
  56. package/assets/docs/workflows/advanced/meta.json +13 -0
  57. package/assets/docs/workflows/{projects → advanced}/orchestration-model.md +108 -35
  58. package/assets/docs/workflows/{projects → advanced}/programmatic-execution.md +4 -4
  59. package/assets/docs/{cli-utilities → workflows/advanced}/workflow-gates.md +162 -8
  60. package/assets/docs/workflows/advanced/worktree-bootstrap.md +83 -0
  61. package/assets/docs/workflows/approvals-and-automation.md +261 -0
  62. package/assets/docs/workflows/backlog-and-planning/backlog-lifecycle.md +348 -0
  63. package/assets/docs/workflows/backlog-and-planning/index.md +13 -0
  64. package/assets/docs/workflows/backlog-and-planning/meta.json +4 -0
  65. package/assets/docs/workflows/backlog-and-planning/remote-project-management.md +303 -0
  66. package/assets/docs/workflows/choose-workflow.md +114 -0
  67. package/assets/docs/workflows/ideas/index.md +3 -3
  68. package/assets/docs/workflows/ideas/lifecycle.md +225 -1
  69. package/assets/docs/workflows/index.md +11 -62
  70. package/assets/docs/workflows/meta.json +10 -2
  71. package/assets/docs/workflows/projects/closeout/closeout-skills.md +538 -0
  72. package/assets/docs/workflows/projects/closeout/index.md +14 -0
  73. package/assets/docs/workflows/projects/closeout/meta.json +4 -0
  74. package/assets/docs/workflows/projects/{pr-flow.md → closeout/pr-flow.md} +1 -1
  75. package/assets/docs/workflows/projects/{retro.md → closeout/retro.md} +1 -1
  76. package/assets/docs/workflows/projects/execution/execution-skills.md +258 -0
  77. package/assets/docs/workflows/projects/{implementation-execution.md → execution/implementation-execution.md} +52 -38
  78. package/assets/docs/workflows/projects/execution/index.md +15 -0
  79. package/assets/docs/workflows/projects/execution/meta.json +9 -0
  80. package/assets/docs/workflows/projects/execution/picking-up-projects.md +376 -0
  81. package/assets/docs/{cli-utilities → workflows/projects/execution}/project-log.md +1 -1
  82. package/assets/docs/workflows/projects/index.md +38 -49
  83. package/assets/docs/workflows/projects/lifecycle.md +159 -74
  84. package/assets/docs/workflows/projects/meta.json +2 -23
  85. package/assets/docs/workflows/projects/{design-modes.md → planning/design-modes.md} +29 -0
  86. package/assets/docs/workflows/projects/planning/hill-checkpoints.md +167 -0
  87. package/assets/docs/workflows/projects/planning/index.md +16 -0
  88. package/assets/docs/workflows/projects/planning/meta.json +10 -0
  89. package/assets/docs/workflows/projects/planning/planning-skills.md +381 -0
  90. package/assets/docs/workflows/projects/{splitting.md → planning/splitting.md} +3 -3
  91. package/assets/docs/workflows/projects/planning/starting-projects.md +511 -0
  92. package/assets/docs/workflows/projects/{reviews.md → reviews/index.md} +51 -5
  93. package/assets/docs/workflows/projects/reviews/meta.json +4 -0
  94. package/assets/docs/workflows/projects/reviews/review-flavors.md +650 -0
  95. package/assets/docs/workflows/projects/{reviewing-oat-prs.md → reviews/reviewing-oat-prs.md} +3 -3
  96. package/assets/docs/workflows/waves/index.md +12 -0
  97. package/assets/docs/workflows/waves/meta.json +4 -0
  98. package/assets/docs/workflows/waves/wave-workflows.md +206 -0
  99. package/assets/public-package-versions.json +4 -4
  100. package/assets/skills/oat-docs/SKILL.md +19 -19
  101. package/assets/skills/oat-docs-analyze/SKILL.md +1 -1
  102. package/assets/skills/oat-docs-apply/SKILL.md +1 -1
  103. package/assets/skills/oat-docs-authoring/SKILL.md +1 -1
  104. package/assets/skills/oat-docs-bootstrap/SKILL.md +1 -1
  105. package/assets/skills/oat-doctor/SKILL.md +25 -25
  106. package/assets/templates/docs-app-fuma/app/[[...slug]]/page.tsx +14 -2
  107. package/assets/templates/docs-app-fuma/app/globals.css +1 -0
  108. package/dist/release/public-package-contract.js +1 -1
  109. package/package.json +2 -2
  110. package/assets/docs/cli-utilities/backlog-lifecycle.md +0 -80
  111. package/assets/docs/cli-utilities/index.md +0 -74
  112. package/assets/docs/cli-utilities/meta.json +0 -13
  113. package/assets/docs/cli-utilities/remote-project-management.md +0 -191
  114. package/assets/docs/guide/concepts.md +0 -88
  115. package/assets/docs/guide/index.md +0 -31
  116. package/assets/docs/guide/meta.json +0 -4
  117. package/assets/docs/quickstart.md +0 -88
  118. package/assets/docs/workflows/projects/autonomy.md +0 -196
  119. package/assets/docs/workflows/projects/hill-checkpoints.md +0 -93
  120. package/assets/docs/workflows/projects/picking-up-projects.md +0 -124
  121. package/assets/docs/workflows/projects/review-flavors.md +0 -138
  122. package/assets/docs/workflows/skills/index.md +0 -184
  123. package/assets/docs/workflows/skills/repo-improve.md +0 -89
  124. package/assets/docs/workflows/wave-workflows.md +0 -77
@@ -5,16 +5,99 @@ description: 'Common issues and fixes for skills visibility, worktrees, sync, an
5
5
 
6
6
  # Troubleshooting
7
7
 
8
+ The commands on this page use the installed `oat` command. A few entries also
9
+ give a `pnpm run ...` form; those work only inside a checkout of the OAT source
10
+ repository and are labelled that way.
11
+
8
12
  ## Skills not visible in host UI
9
13
 
10
- - Run: `pnpm run cli -- sync --scope all`
11
- - Reload/restart host app session
12
- - Verify `AGENTS.md` skills table matches `.agents/skills/*/SKILL.md`
14
+ A skill shows up in your coding tool only when two things are true: the skill
15
+ is installed (a folder with a `SKILL.md` under `.agents/skills/` in this
16
+ repository, or under `~/.agents/skills/` in your home directory), and the
17
+ tool can read it. Some tools, such as Claude Code, read a provider view: a
18
+ link or copy that OAT creates in the tool's own folder, such as
19
+ `.claude/skills`. Others, such as Cursor, read `.agents/skills` directly.
20
+
21
+ **Diagnose first.** These commands only read; they change nothing.
22
+
23
+ 1. Check whether the skill is installed, and where:
24
+
25
+ ```bash
26
+ oat tools info <skill-name>
27
+ ```
28
+
29
+ It prints the skill's pack, its scope (`project` for this repository,
30
+ `user` for your home directory) and its status, then a "Provider views"
31
+ block for each scope with one row per coding tool.
32
+ - `Tool '<skill-name>' not found.` means the skill is not installed at
33
+ either scope. Install the pack that contains it (see the fixes below), or
34
+ create the skill at `.agents/skills/<skill-name>/SKILL.md`. To see every
35
+ installed skill with its pack and scope, run `oat tools list`.
36
+ - `in-sync` on your tool's row means its view of the skill is in place, so
37
+ go to the last fix step and start a new session.
38
+ - `missing-additive`, `removed` or `modified` means your tool's view is
39
+ absent or out of date. The block ends with a `Repair:` line that gives
40
+ the exact `oat sync --scope ...` command to run.
41
+ - `inactive` means that tool is not active at that scope, so OAT creates
42
+ no view for it. Enable it, as shown in the fixes below.
43
+
44
+ 2. Check whether the repository's provider views are in sync:
45
+
46
+ ```bash
47
+ oat status --scope project
48
+ ```
49
+
50
+ Each row names a tool and a skill. `✓ in_sync` means the view is in place.
51
+ `✗ missing provider entry missing` means the view has not been created
52
+ yet; `oat sync` creates it. `No managed entries found.` means OAT manages
53
+ no provider views in this repository, which usually means no tool that
54
+ needs views is enabled. Run `oat providers list --scope project` to see
55
+ which tools are enabled or detected.
56
+
57
+ **Then fix**, always with an explicit scope:
58
+
59
+ - Enable the tool if step 1 or 2 showed it is not active, for example
60
+ `oat providers set --scope project --enabled claude`.
61
+ - For skills in this repository (`.agents/skills`), preview and then
62
+ regenerate the provider views:
63
+
64
+ ```bash
65
+ oat sync --scope project --dry-run
66
+ oat sync --scope project
67
+ ```
68
+
69
+ - For skills installed at user scope (`~/.agents/skills`, where a tool pack
70
+ installs when you give no `--scope`), run `oat sync --scope user`. This
71
+ writes provider views in your home directory, such as `~/.claude/skills`.
72
+ - If the skill comes from a pack that is not installed, install that pack with
73
+ an explicit scope, for example `oat tools install research --scope project`
74
+ (this repository) or `oat tools install research --scope user` (your home
75
+ directory). If you installed a pack with `--no-sync`, running the install
76
+ again does not create the views; run `oat sync` for that scope instead.
77
+ - Reload the tool or start a new session: most tools read their skill list
78
+ when a session starts.
79
+ - If your repository's `AGENTS.md` names skills or packs, check that it
80
+ matches what `oat tools list` reports. The `<!-- OAT tools -->` block that
81
+ `--project-guidance` writes lists the installed packs and the folders
82
+ agents should scan for skills; it does not list each skill.
83
+ - If you are working in the OAT source repository: run
84
+ `pnpm run cli -- sync --scope all`, which runs the CLI from source and syncs
85
+ both project and user scope.
13
86
 
14
87
  ## Worktree checkout missing provider links
15
88
 
16
- - Run: `pnpm run worktree:init`
17
- - This command installs dependencies, builds the workspace, and runs `oat sync --scope project`.
89
+ - In the new worktree, run `oat sync --scope project` to recreate the
90
+ project's provider views. Add `--dry-run` first to preview.
91
+ - To prepare the whole worktree, including local-only files and the
92
+ repository's setup and readiness checks, invoke
93
+ `/oat-worktree-bootstrap --existing` in your coding agent. See
94
+ [Worktree bootstrap](../workflows/advanced/worktree-bootstrap.md).
95
+ - If you are working in the OAT source repository: run
96
+ `pnpm run worktree:init`. This command copies local-only files from the main
97
+ worktree, installs dependencies, configures Git hooks, builds the workspace,
98
+ and runs `oat sync` with no scope flag. A bare `oat sync` uses
99
+ `--scope all`, so it refreshes user-scope provider views in your home
100
+ directory as well as the project's.
18
101
 
19
102
  ## Codex appears detected but no skill sync actions are listed
20
103
 
@@ -85,12 +168,18 @@ Use [Instruction Sync](../provider-sync/instruction-sync.md) for the full strate
85
168
 
86
169
  ## `doctor` warns about canonical directories
87
170
 
88
- - Run `oat init` for the relevant scope.
171
+ - Run `oat init` for the relevant scope. The check's name says which scope is
172
+ missing directories: for `project:canonical_directories` run
173
+ `oat init --scope project`, and for `user:canonical_directories` run
174
+ `oat init --scope user`. A bare `oat init` initializes both.
89
175
  - Re-run `oat doctor` after initialization.
90
176
 
91
177
  ## `doctor` warns about outdated installed OAT skills
92
178
 
93
- - Run `oat init tools` to install/update bundled OAT tool packs.
179
+ - Run `oat tools update --pack <pack> --scope <project|user>` to update an
180
+ installed pack, or `oat tools install <pack> --scope <project|user>` to
181
+ install one. The older form `oat init tools` is a legacy command that still
182
+ installs or updates the bundled tool packs.
94
183
  - In TTY mode, select which outdated skills to update when prompted.
95
184
  - In non-interactive mode, run the scoped command doctor prints:
96
185
  `oat tools update --pack <pack> --scope <scope>`.
@@ -212,7 +301,7 @@ Both commands report managed pack state with a scoped recovery command:
212
301
  contract and does not clear this finding. `oat tools update` cannot fix it.
213
302
  Enable a provider with `oat providers set --scope user --enabled <provider>`
214
303
  and run `oat sync --scope user`; reinstalling at project scope is not
215
- required. See [Tool packs](../cli-utilities/tool-packs.md) for how
304
+ required. See [Tool packs](../getting-started/tool-packs.md) for how
216
305
  user-scope agents reach each provider.
217
306
 
218
307
  ## `status` or `doctor` reports `packs:inventory`
@@ -229,7 +318,21 @@ and the home root becomes `~` when user scope is checked. Redaction is a literal
229
318
  replacement of those exact root paths, so a path outside them, such as a global
230
319
  bundle path in an assets error, stays absolute in the message.
231
320
 
232
- Rebuild the CLI workspace, then rerun the command named in the diagnostic:
321
+ With an installed CLI, reinstall it so its bundled assets are complete and
322
+ match the CLI version, then rerun the command named in the diagnostic. If you
323
+ set `OAT_ASSETS_DIR`, point it at a complete asset bundle built for this CLI
324
+ version, or unset it to use the bundled copy.
325
+
326
+ ```bash
327
+ npm install --global @open-agent-toolkit/cli
328
+ oat status # or: oat doctor
329
+ ```
330
+
331
+ The diagnostic's own recovery line says to run `pnpm build`. That applies only
332
+ when you run the CLI from a checkout of the OAT source repository.
333
+
334
+ If you are working in the OAT source repository: rebuild the CLI workspace,
335
+ then rerun the command named in the diagnostic:
233
336
 
234
337
  ```bash
235
338
  pnpm build
@@ -373,7 +476,11 @@ failure, which is intentional — you asked for a scope that does not exist here
373
476
 
374
477
  ## Manifest not found or invalid
375
478
 
376
- - Missing manifest: run `sync` or `init`
479
+ - Missing manifest: run `sync` or `init`. For the repository's manifest
480
+ (`.oat/sync/manifest.json`), use `oat sync --scope project` or
481
+ `oat init --scope project`; without `--scope`, both commands also write to
482
+ your home directory. For the user manifest (`~/.oat/sync/manifest.json`),
483
+ use `--scope user`.
377
484
  - Invalid manifest: repair/remove file and rerun
378
485
 
379
486
  ## Status/output mismatches with lifecycle expectations
@@ -405,10 +512,18 @@ package.
405
512
 
406
513
  ## Reference artifacts
407
514
 
515
+ In your own repository, these project files hold the evidence most entries on
516
+ this page refer to:
517
+
408
518
  - `.oat/projects/<scope>/<project>/implementation.md`
409
519
  - `.oat/projects/<scope>/<project>/reviews/`
410
520
  - `.oat/projects/<scope>/<project>/explainers/<slug>/manifest.json`
411
521
  - `.oat/projects/<scope>/<project>/explainers/<slug>/qa/result.json`
522
+
523
+ If you are working on OAT itself, in a checkout of the OAT source repository,
524
+ the checks behind `oat doctor`, `oat status` and `oat instructions` live in
525
+ these source files:
526
+
412
527
  - `packages/cli/src/commands/doctor/index.ts`
413
528
  - `packages/cli/src/commands/status/index.ts`
414
529
  - `packages/cli/src/commands/tools/shared/pack-inventory.ts`
@@ -0,0 +1,410 @@
1
+ ---
2
+ title: What OAT Writes
3
+ description: 'Every file, link and Git ref that OAT commands create in your repository, under your home directory and on origin, what to commit, and how to remove all of it.'
4
+ ---
5
+
6
+ # What OAT Writes
7
+
8
+ This page lists what each OAT command writes in your repository, under your
9
+ home directory and on your shared `origin` remote, which of those files belong
10
+ in Git, and how to back out of OAT completely. Everything here was observed by
11
+ running OAT CLI version 0.3.14 on macOS. The removal procedure in
12
+ [Remove everything](#remove-everything) was run end to end twice, once
13
+ originally and once in an independent re-run, and both times it returned the
14
+ repository and the home directory to their pre-OAT state.
15
+
16
+ A few terms used below. **Canonical assets** are the skills and agent
17
+ definitions OAT keeps under `.agents/`; they are the source you edit. A
18
+ **provider view** is the copy or link OAT creates from a canonical asset in the
19
+ folder a coding tool reads, such as `.claude/skills/`. **Scope** says where a
20
+ command works: `project` means the current repository, `user` means your home
21
+ directory, and `all` means both. A **tool pack** is a named bundle of skills,
22
+ agents, templates and scripts that `oat tools install` adds.
23
+
24
+ ## The short version
25
+
26
+ - With `--scope project`, `oat init`, `oat sync` and `oat tools install <pack>`
27
+ write only inside the repository. Two forms are exceptions:
28
+ `oat tools install --scope project` without a pack name also installs the
29
+ `core` pack under your home directory, and `oat init --scope project --setup`
30
+ installs every pack there.
31
+ - Without `--scope`, `oat init` and `oat sync` use scope `all`, so they can
32
+ also write under your home directory, and `oat tools install <pack>` installs
33
+ a pack that is not yet installed under your home directory (user scope).
34
+ - The `core` pack is user-only: it installs under your home directory or not at
35
+ all.
36
+ - Tracked projects default to **synced** scope, which keeps a project's files on
37
+ a dedicated Git ref. Creating one commits a small pointer file to your current
38
+ branch and pushes `refs/oat/projects/<name>` to `origin`. Apart from
39
+ `oat project prune`, which deletes that ref again, no other command observed
40
+ here changed `origin`, and none pushed a branch.
41
+ - There is no single uninstall command. The manual steps in
42
+ [Remove everything](#remove-everything) return the repository's files and your
43
+ home directory to their pre-OAT state; Git history keeps OAT's commits.
44
+
45
+ ## What each command writes
46
+
47
+ Where a file already existed, OAT appended its own marked block instead of
48
+ replacing it. This held for `.gitignore`, `.gitattributes`, an existing
49
+ `pre-commit` hook and the other settings in an existing `.codex/config.toml`
50
+ (OAT does change `multi_agent` and `max_depth` there; see the
51
+ [provider table](#syncing-provider-views)). A pre-existing
52
+ `~/.claude/settings.json` was left untouched.
53
+
54
+ ### Setting up
55
+
56
+ | Command | In the repository | Under your home directory | On `origin` |
57
+ | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ----------- |
58
+ | `oat init --scope project` | `.gitignore` and `.gitattributes` (created, or an `# OAT core` block appended); `.oat/sync/manifest.json`; empty `.agents/skills`, `.agents/agents`, `.agents/rules` | Nothing | Nothing |
59
+ | `oat init` (scope `all`) | The same as above | `~/.oat/sync/manifest.json` and an empty `~/.agents/skills` | Nothing |
60
+
61
+ `oat init` creates no `AGENTS.md` and no `.oat/config.json`. Run
62
+ non-interactively, it installs no hook unless you pass `--hook`.
63
+
64
+ ### The optional pre-commit hook
65
+
66
+ | Command | Writes |
67
+ | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
68
+ | `oat init --scope project --hook` | `.git/hooks/pre-commit`. If a hook already exists, OAT appends a marked block and keeps your lines. |
69
+ | The same, with `core.hooksPath` set | The hook goes to that path instead. With `core.hooksPath .githooks`, it was written to `.githooks/pre-commit` inside the working tree, where it can be committed. |
70
+
71
+ The hook runs `oat status --scope project --hook` only if an `oat` binary is on
72
+ your `PATH`. When provider views are out of date it prints
73
+ `oat: managed provider views are out of sync - run 'oat sync --scope project'`.
74
+ It never blocks a commit.
75
+
76
+ ### Syncing provider views
77
+
78
+ `oat providers set --scope project --enabled <providers>` writes
79
+ `.oat/sync/config.json`. `oat sync` then creates views for each enabled
80
+ provider and rewrites `.oat/sync/manifest.json`, the file that records which
81
+ views OAT manages. A provider does not have to be enabled: an existing
82
+ `.claude/` directory in the repository, or `~/.claude/` in your home directory,
83
+ is enough for `oat sync` to create Claude views.
84
+
85
+ | Provider | Repository views created by `oat sync --scope project` |
86
+ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
87
+ | Claude | `.claude/skills/<name>` and `.claude/agents/<name>.md`, relative symlinks into `.agents/` |
88
+ | Cursor | `.cursor/agents/`: relative symlinks for agents, plus generated model-variant files marked `# oat-managed: true` |
89
+ | Copilot | `.github/agents/`, relative symlinks |
90
+ | Codex | `.codex/agents/*.toml` and `.codex/config.toml`, generated files. In an existing `config.toml`, OAT adds its `[agents.<name>]` tables and sets `[features] multi_agent = true` and `[agents] max_depth` to at least 2, changing those two values if you had set them lower; your other settings stay. |
91
+ | Gemini | Nothing |
92
+
93
+ OAT creates skill views only for Claude. It reports the other providers' skill
94
+ support as `native-read` and creates no skill views for them. No generated
95
+ file contained an absolute path.
96
+
97
+ | Command | Under your home directory |
98
+ | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
99
+ | `oat sync --scope project` | Nothing |
100
+ | `oat sync` (scope `all`) | When it detects a provider in your home directory (observed: an existing `~/.claude/`), relative symlinks in `~/.claude/skills/` and `~/.claude/agents/` for your user-scope skills and agents, and `~/.oat/sync/manifest.json`. With no `~/.claude/` and nothing installed at user scope, nothing. |
101
+
102
+ ### Installing tool packs
103
+
104
+ | Command | In the repository | Under your home directory |
105
+ | ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
106
+ | `oat tools install <pack> --scope project` | The pack's skills in `.agents/skills/`, plus any agents in `.agents/agents/`, templates in `.oat/templates/` and scripts in `.oat/scripts/` it ships; `tools.<pack>: true` in `.oat/config.json`. Views for enabled providers, unless you pass `--no-sync`. | Nothing |
107
+ | `oat tools install --scope user` | Nothing, unless the workflows pack is already installed at project scope (see [surprises](#known-surprises-in-0314)) | `~/.agents/skills/`, `~/.agents/agents/`, `~/.oat/config.json`, `~/.oat/docs/`, `~/.oat/ideas/`, `~/.oat/scripts/`, `~/.oat/templates/`. Provider links only if a provider is detected. |
108
+ | `oat tools install core` | Nothing | `~/.oat/config.json`, `~/.agents/skills/oat-docs`, `~/.agents/skills/oat-doctor`, and `~/.oat/docs/` (a bundled copy of these docs) |
109
+
110
+ Some packs write more at project scope. The ideas pack adds
111
+ `.oat/ideas/backlog.md` and `.oat/ideas/scratchpad.md`. The workflows pack adds
112
+ `.oat/projects-root`, `.oat/projects/local/.gitkeep`,
113
+ `.oat/projects/archived/.gitkeep` and a `projects.root` setting. Passing
114
+ `--project-guidance` adds a marked `<!-- OAT tools -->` block to `AGENTS.md`,
115
+ creating the file if needed. Installing every pack at once with
116
+ `oat tools install --scope project` puts core in your home directory and the
117
+ other seven packs in the repository, and also adds a `localPaths` setting and a
118
+ `# OAT local paths` block to `.gitignore`.
119
+
120
+ No tool pack command wrote to `origin`.
121
+
122
+ ### Creating tracked projects
123
+
124
+ A tracked project is the set of planning and implementation files OAT keeps for
125
+ one piece of work. Its scope decides where those files live.
126
+
127
+ | Command | In the repository | On `origin` |
128
+ | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
129
+ | `oat project new <name>` (synced default) | Commits `.oat/projects/synced/<name>.json`, a small pointer file, to the current branch. Creates the project files in an ignored linked Git worktree at `.oat/projects/synced/<name>/`. | Pushes `refs/oat/projects/<name>`. The branch is not pushed. |
130
+ | `oat project new <name> --scope shared` | Commits six Markdown files under `.oat/projects/shared/<name>/` to the current branch. The commit contains only those files; other staged or unstaged changes are left alone. | Nothing |
131
+ | `oat project new <name> --scope local` | Writes the project under `.oat/projects/local/<name>/`, which is ignored. No commit. | Nothing |
132
+
133
+ Every scope also writes two ignored files: `.oat/config.local.json`, which
134
+ records the active project, and `.oat/state.md`, a generated dashboard. A
135
+ synced project also adds Git's own `.git/worktrees/<name>` and a local
136
+ `refs/oat/projects/<name>` ref.
137
+
138
+ Without an `origin` remote, the default command exits with
139
+ `Synced project creation requires a configured origin remote. Configure origin or use --scope local.`
140
+ and writes nothing. To make another scope the default, run
141
+ `oat config set projects.defaultScope shared` (or `local`), which edits the
142
+ tracked `.oat/config.json`.
143
+
144
+ ## What to commit
145
+
146
+ "Ignored" means OAT's own `.gitignore` block matches the path. "Machine data"
147
+ is anything that differs between machines.
148
+
149
+ ### Setup and configuration
150
+
151
+ | Path | What it is | Ignored? | Machine data? | Commit it? |
152
+ | ----------------------------------------- | --------------------------------------------------- | -------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
153
+ | `.gitignore` (OAT blocks) | Rules that keep OAT's local files out of Git | No | No | Yes: these rules are what keep the local-only files below out of commits |
154
+ | `.gitattributes` (OAT block) | Marks `.oat/projects/shared/**` as generated | No | No | Safe to commit: nothing in it differs between machines |
155
+ | `.oat/config.json` | Installed packs, project settings | No | No | Yes: `projects.defaultScope` can only be set in this file, and `projects.root` and `localPaths` are always written here |
156
+ | `.oat/sync/config.json` | Which providers the repository enables | No | No | Yes: without it, `oat sync` falls back to detecting provider folders |
157
+ | `.oat/sync/manifest.json` | Record of the views OAT manages | No | Timestamps and OAT version; no paths | Team choice (see below) |
158
+ | `.oat/config.local.json`, `.oat/state.md` | Active project; generated dashboard | Yes | Yes | Ignored by OAT's own rules |
159
+ | `AGENTS.md` (OAT block) | Guidance for agents, only with `--project-guidance` | No | No | Team choice (see below) |
160
+ | `<hooksPath>/pre-commit` | The hook, when `core.hooksPath` is inside the tree | No | No | Team choice (see below) |
161
+
162
+ ### Canonical assets and pack files
163
+
164
+ | Path | What it is | Ignored? | Machine data? | Commit it? |
165
+ | ----------------------------------------------------------------------- | -------------------------------------- | -------- | ------------- | --------------------------------------------------------------------- |
166
+ | `.agents/skills/`, `.agents/agents/` | Canonical skills and agents | No | No | Yes: it is the source your team edits, and committed views link to it |
167
+ | `.oat/templates/`, `.oat/scripts/`, `.oat/ideas/`, `.oat/projects-root` | Files a pack installs at project scope | No | No | Team choice (see below) |
168
+ | `.oat/projects/local/.gitkeep`, `.oat/projects/archived/.gitkeep` | Placeholders | No | No | Yes: OAT's own rules explicitly un-ignore them |
169
+
170
+ ### Provider views
171
+
172
+ | Path | What it is | Ignored? | Machine data? | Commit it? |
173
+ | -------------------------------------------------------------------------------------------- | --------------------------------- | -------- | ------------- | ---------------------------------------------- |
174
+ | `.claude/skills/`, `.claude/agents/`, `.github/agents/`, symlinks in `.cursor/agents/` | Relative symlinks into `.agents/` | No | No | Yes: relative links, the same on every machine |
175
+ | Generated files in `.cursor/agents/`, `.codex/agents/`, OAT's tables in `.codex/config.toml` | Generated copies | No | No | Team choice (see below) |
176
+
177
+ ### Projects
178
+
179
+ | Path | What it is | Ignored? | Machine data? | Commit it? |
180
+ | ------------------------------------------------------------ | ---------------------------------------- | ----------------------------------------------- | ------------------------------- | --------------------------------------------------------- |
181
+ | `.oat/projects/shared/<name>/` | A shared project's files | No | Dates only | OAT commits it for you |
182
+ | `.oat/projects/synced/<name>.json` | Pointer to the synced project's ref | No | A creation timestamp | OAT commits it for you |
183
+ | `.oat/projects/synced/<name>/` | Linked Git worktree | Yes | Yes: an absolute `gitdir:` path | No: contains an absolute path; ignored by OAT's own rules |
184
+ | `.oat/projects/local/<name>/` | A local project's files | Yes | Dates only | Ignored by OAT's own rules |
185
+ | `.oat/projects/**/pr/`, `.oat/projects/**/reviews/archived/` | Project PR material and archived reviews | Only if the `# OAT local paths` block was added | No | Team choice (see below) |
186
+
187
+ **Where "Team choice" applies:**
188
+
189
+ - **`.oat/sync/manifest.json`.** A sync that changes a view, or that runs with
190
+ a different CLI version than the last one, rewrites it with new timestamps
191
+ and its own version, so committing it adds diffs to sync commits and to
192
+ mixed-version teams. Leaving it out means a fresh clone
193
+ has no record of which views OAT manages. How OAT behaves in a clone without
194
+ it is not covered here.
195
+ - **Generated provider files** (Cursor model variants, Codex agents and
196
+ `config.toml` tables). Committed, they arrive with every clone. Not
197
+ committed, each teammate runs `oat sync --scope project` to generate them.
198
+ Either way, `oat tools remove` does not delete them; see
199
+ [Backing out](#backing-out).
200
+ - **Pack files in `.oat/`** (templates, scripts, ideas, `projects-root`).
201
+ Committed, every clone has them. Not committed, each teammate needs the same
202
+ `oat tools install` to get them.
203
+ - **`AGENTS.md` guidance block.** It tells agents how to refresh views, but the
204
+ command it recommends, `oat sync --scope all`, also writes under each
205
+ reader's home directory.
206
+ - **A hook inside the working tree.** Committed, everyone using that hooks path
207
+ gets the drift warning. A hook in `.git/hooks` is never committed.
208
+ - **`pr/` and `reviews/archived/` folders.** Whether PR material and archived
209
+ reviews are shared through Git or stay on each machine. Whether OAT ignores
210
+ them depends on which install command you ran; see
211
+ [surprises](#known-surprises-in-0314).
212
+
213
+ ## A new teammate after cloning
214
+
215
+ 1. **Install the CLI.** The README gives
216
+ `npm install --global @open-agent-toolkit/cli` and requires Node.js 22.17 or
217
+ newer and Git 2.31 or newer.
218
+ 2. **Check the views.** Run `oat status --scope project`. Committed symlink
219
+ views are relative links into `.agents/`, so they point at the same files in
220
+ every clone. A row marked `✗ missing` means a view was not committed or not
221
+ yet generated; run `oat sync --scope project` to create it. Generated Cursor
222
+ and Codex files exist only if your team committed them. After a sync, OAT
223
+ reports Claude views as `restart-required`: start a new Claude Code session
224
+ to pick them up.
225
+ 3. **Add the hook if you want it.** `.git/hooks` is not part of a clone, so
226
+ each teammate who wants the drift warning runs
227
+ `oat init --scope project --hook`.
228
+ 4. **Install personal packs separately.** User-scope packs live under each
229
+ person's `~/.agents` and `~/.oat`, so nobody receives them from the
230
+ repository. A teammate who wants them runs `oat tools install --scope user`,
231
+ which installs all eight packs. Run inside a repository where the workflows
232
+ pack is installed at project scope, it also edits that repository; see
233
+ [surprises](#known-surprises-in-0314).
234
+ 5. **Fetch synced projects explicitly.** A fresh clone does not receive
235
+ `refs/oat/*`, so synced projects are not in it. See
236
+ [Picking Up Projects](../workflows/projects/execution/picking-up-projects.md)
237
+ to list and pull them. Ignored files (`.oat/config.local.json`,
238
+ `.oat/state.md`, local projects) never travel.
239
+
240
+ ## Backing out
241
+
242
+ ### Stop without removing anything
243
+
244
+ Disabling a provider does not remove its views.
245
+ `oat providers set --scope project --disabled claude` only updates
246
+ `.oat/sync/config.json`. The existing `.claude/skills/` links stay, and a
247
+ following `oat sync` removes nothing. `oat status` then reports
248
+ `No managed entries found.` while the manifest still lists those links. To
249
+ remove views, use the commands below or delete them yourself.
250
+
251
+ The hook does nothing when no `oat` binary is on `PATH`, and
252
+ `oat init --scope project --no-hook` removes it.
253
+
254
+ ### Supported removal commands
255
+
256
+ | Command | Removes | Leaves behind |
257
+ | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
258
+ | `oat tools remove --pack <pack> --scope project` (one pack at a time) | The pack's skills and agents in `.agents/`, their symlink views (Claude, Copilot, Cursor symlinks), and its `.oat/scripts/*.sh` | `.oat/templates/`, `.oat/ideas/`, `.oat/projects-root`, `.oat/config.json` (with a stale `tools.requiredBy` entry), `.oat/sync/`, both `.gitignore` blocks, `.gitattributes`, projects, empty folders, and all generated Cursor and Codex files |
259
+ | `oat tools remove --all` | Nothing: exits 2 with `Pack core does not allow project scope`, with or without `--scope project` | Everything |
260
+ | `oat tools remove --all --scope user` | With only core installed at user scope: `~/.agents/skills/oat-docs`, `~/.agents/skills/oat-doctor`, `~/.oat/docs/` and their `~/.claude/skills/` links | `~/.oat/config.json` (now `{"version": 1}`), `~/.oat/sync/manifest.json`, an empty `~/.agents/skills/` and an empty `~/.claude/skills/` |
261
+ | `oat remove skill <name> --scope project` | The canonical skill, its Claude view and its manifest entry | Nothing for that skill |
262
+ | `oat project prune <name>` (synced projects only) | The worktree, the pointer file, the local ref and the ref on `origin`; commits `chore(oat): prune synced project <name>` on the current branch | An empty `.oat/projects/synced/` |
263
+ | `oat init --scope project --no-hook` | OAT's hook block. If the file holds only OAT's block, the whole `pre-commit` file is deleted. | Your own hook lines, byte for byte |
264
+
265
+ No command deletes a shared or local project. `oat project prune` refuses a
266
+ shared project, and `oat project archive` moves a project to
267
+ `.oat/projects/archived/<name>` rather than deleting it.
268
+
269
+ ### Remove everything
270
+
271
+ These steps were run in a repository that had adopted OAT with Claude as its
272
+ only provider, the hook, packs at project scope, core at user scope, and one
273
+ project of each scope. Afterwards the repository's files, its `.git/hooks`
274
+ folder, its local Git config and the home directory matched their pre-OAT
275
+ state exactly, and no `refs/oat/*` ref remained locally or on `origin`. The
276
+ run started with a `.gitignore` but no `.gitattributes`; adjust steps 5 and 6
277
+ if yours differ.
278
+
279
+ > [!WARNING]
280
+ > These steps delete files. Run `git status` first and commit or set aside
281
+ > anything you want to keep. `rm -r .agents` also deletes skills your team
282
+ > wrote, and `rm -r .oat` deletes every shared and local project. The home
283
+ > directory steps were verified only for a machine where `~/.oat` and
284
+ > `~/.agents` did not exist before OAT and `~/.claude/skills` was an empty
285
+ > folder OAT had created. If yours held anything of your own, remove only
286
+ > what OAT created. The same applies to a `.claude/` folder that existed in the
287
+ > repository before OAT.
288
+
289
+ 1. Remove the hook: `oat init --scope project --no-hook`. In a terminal,
290
+ `oat init` first shows the provider selection; keep the current choices.
291
+ 2. Delete each synced project, including its ref on `origin`:
292
+ `oat project prune <name>`. Without the command, run
293
+ `git worktree remove .oat/projects/synced/<name>`,
294
+ `git update-ref -d refs/oat/projects/<name>` and
295
+ `git push origin --delete refs/oat/projects/<name>`, then
296
+ `git rm .oat/projects/synced/<name>.json`.
297
+ 3. Remove user-scope packs and their links in `~/.claude`:
298
+ `oat tools remove --all --scope user`.
299
+ 4. Remove each pack you installed at project scope, one command per pack:
300
+ `oat tools remove --pack <pack> --scope project`, where `<pack>` is any of
301
+ `ideas`, `docs`, `workflows`, `utility`, `research`, `brainstorm` and
302
+ `project-management` that you installed. The PACK column of
303
+ `oat tools list --scope project` shows them.
304
+ 5. Untrack and delete OAT's repository files:
305
+
306
+ ```sh
307
+ git rm -r -q --cached .agents .claude .oat .gitattributes
308
+ rm -r .agents .claude .oat .gitattributes
309
+ ```
310
+
311
+ Leave out any path that does not exist or that Git does not track;
312
+ otherwise `git rm` stops without removing anything. If `.gitattributes`
313
+ existed before
314
+ OAT, leave it out too and delete only its `# OAT core` block.
315
+
316
+ 6. In `.gitignore`, delete the `# OAT core` … `# END OAT core` block, the
317
+ `# OAT local paths` … `# END OAT local paths` block if present, and the
318
+ blank line OAT added before each.
319
+ 7. Commit: `git add .gitignore && git commit -m "remove oat"`.
320
+ 8. Clean the home directory. If `~/.oat` and `~/.agents` did not exist before
321
+ OAT, run `rm -r ~/.oat ~/.agents`. Otherwise delete only `~/.oat` and the
322
+ skills and agents OAT installed under `~/.agents`; other tools also read
323
+ `~/.agents/skills` directly, so it may hold your own skills. Then run
324
+ `rmdir ~/.claude/skills`, which fails safely if the folder still holds
325
+ anything.
326
+
327
+ If you had enabled Cursor, Copilot or Codex, OAT also created the paths in the
328
+ [provider table](#syncing-provider-views). Removing those was not part of this
329
+ run.
330
+
331
+ Git history still contains the OAT commits: your commit that added OAT's files,
332
+ the project scaffold commits and the prune commit stay on your branch, and
333
+ anything you pushed stays on `origin`. Deleting `refs/oat/projects/<name>`
334
+ removes the ref, not the data: the project files it pointed to stay in
335
+ `origin`'s storage until the host garbage-collects them, so do not rely on
336
+ prune to erase sensitive content. Rewriting history is not covered here.
337
+
338
+ ## Known surprises in 0.3.14
339
+
340
+ These are current behaviors as of version 0.3.14.
341
+
342
+ - `oat tools install core --scope project` prints `Installed core tool pack.`
343
+ but writes nothing.
344
+ - `oat init --scope project --setup` installs all eight packs under your home
345
+ directory, and runs `gh repo view`, which makes the `gh` CLI write
346
+ `~/.local/state/gh/device-id`.
347
+ - `oat tools install --scope user` writes into the current repository when the
348
+ workflows pack is already installed there at project scope: it adds
349
+ `localPaths` to `.oat/config.json` and a `# OAT local paths` block to
350
+ `.gitignore`.
351
+ - `oat tools install workflows --scope project` does not add that block, but
352
+ `oat tools install --scope project` does, so `pr/` and `reviews/archived/`
353
+ folders are committable in one setup and ignored in the other.
354
+ - `oat tools remove --all` fails unless you add `--scope user`.
355
+ - After removing packs, a stale `tools.requiredBy` entry stays in
356
+ `.oat/config.json`, and `oat status` reports the utility pack as missing and
357
+ suggests `oat tools update`.
358
+ - Removing a pack leaves its generated Cursor and Codex files, and a later
359
+ `oat sync` reports no changes.
360
+ - An existing `.claude/` folder, in the repository or your home directory, is
361
+ enough for `oat sync` to create Claude views without enabling Claude.
362
+ - After `oat tools install <pack> --no-sync`, running the same install again
363
+ reports `unchanged` and creates no views; run `oat sync --scope project`.
364
+ - The `AGENTS.md` block from `--project-guidance` recommends
365
+ `oat sync --scope all`, which also writes under your home directory.
366
+ - `oat project new --scope local` prints `Scaffold commit: skipped (--no-commit)`
367
+ even when you did not pass that flag.
368
+ - Piping `oat tools list` or `oat status` into `head` crashes with an
369
+ `Error: write EPIPE` stack trace.
370
+
371
+ ## Not covered here
372
+
373
+ - **Interactive prompts.** Every run here was non-interactive. The hook,
374
+ provider and local-path questions that `oat init` and `--setup` ask are
375
+ described in [CLI Bootstrap](../getting-started/bootstrap.md).
376
+ - **Installing and upgrading the CLI.** See
377
+ [Quickstart](../getting-started/quickstart.md) and
378
+ [Upgrading from an earlier CLI](../getting-started/tool-packs.md#upgrading-from-an-earlier-cli).
379
+ - **Other platforms.** Only macOS was observed, where every view was a relative
380
+ symlink or a generated file. For the copy strategy, see
381
+ [Sync Config](../provider-sync/config.md#links-or-copies).
382
+ - **User scope for providers other than Claude.** See
383
+ [Scope and Surface](../provider-sync/scope-and-surface.md).
384
+ - **Project management adoption** (`oat pjm init` and the `.oat/repo/` tree).
385
+ See [Install vs. initialize](../getting-started/tool-packs.md#install-vs-initialize).
386
+ - **Instruction files and rules.** `CLAUDE.md` shims from
387
+ `oat instructions sync`, and syncing rules from `.agents/rules`, including how
388
+ to remove them. See [Instruction Sync](../provider-sync/instruction-sync.md).
389
+ - **Later project commands.** `oat project push`, `pull`, `archive`, `migrate`,
390
+ archive storage, and what later lifecycle steps push to `origin`. See
391
+ [Picking Up Projects](../workflows/projects/execution/picking-up-projects.md)
392
+ and [Closeout Skills](../workflows/projects/closeout/closeout-skills.md).
393
+ - **Other maintenance commands.** `oat remove skills --pack`, `oat local`,
394
+ `oat tools update`, `outdated` and `migrate`. See
395
+ [Tool Packs](../getting-started/tool-packs.md) and
396
+ [Config and Local State](config-and-local-state.md).
397
+ - **Files you place at a view path yourself.** See
398
+ [Manifest and Drift](../provider-sync/manifest-and-drift.md).
399
+ - **`gh repo view` against a real GitHub remote**, and Git versions older than
400
+ 2.31.
401
+
402
+ ## Related
403
+
404
+ - [Quickstart](../getting-started/quickstart.md)
405
+ - [CLI Bootstrap](../getting-started/bootstrap.md)
406
+ - [Tool Packs and Installed Assets](../getting-started/tool-packs.md)
407
+ - [Manifest and Drift](../provider-sync/manifest-and-drift.md)
408
+ - [Provider Interop CLI Scope and Surface](../provider-sync/scope-and-surface.md)
409
+ - [File Locations](file-locations.md)
410
+ - [Starting Projects](../workflows/projects/planning/starting-projects.md)