@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.
Files changed (152) 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/skills.md +64 -2
  5. package/assets/docs/contributing/smoke-testing.md +3 -3
  6. package/assets/docs/contributing/updating-model-guidance.md +2 -2
  7. package/assets/docs/contributing/verifying-cursor-pins.md +1 -1
  8. package/assets/docs/docs-tooling/add-docs-to-a-repo.md +112 -15
  9. package/assets/docs/docs-tooling/agent-instructions.md +131 -0
  10. package/assets/docs/docs-tooling/commands.md +74 -30
  11. package/assets/docs/docs-tooling/index.md +7 -6
  12. package/assets/docs/docs-tooling/meta.json +1 -1
  13. package/assets/docs/docs-tooling/workflows.md +357 -11
  14. package/assets/docs/{cli-utilities → getting-started}/bootstrap.md +60 -5
  15. package/assets/docs/{guide → getting-started}/concepts.md +28 -10
  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 +146 -15
  20. package/assets/docs/index.md +47 -48
  21. package/assets/docs/meta.json +6 -7
  22. package/assets/docs/provider-sync/commands.md +26 -3
  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 +43 -5
  26. package/assets/docs/provider-sync/manifest-and-drift.md +85 -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 +34 -34
  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/docs-index-contract.md +19 -4
  34. package/assets/docs/reference/file-locations.md +7 -2
  35. package/assets/docs/reference/index.md +13 -1
  36. package/assets/docs/reference/meta.json +7 -1
  37. package/assets/docs/reference/oat-directory-structure.md +24 -22
  38. package/assets/docs/{workflows/projects/artifacts.md → reference/project-artifacts.md} +4 -4
  39. package/assets/docs/{workflows/projects/state-machine.md → reference/project-state-machine.md} +1 -1
  40. package/assets/docs/{workflows/projects/repo-analysis.md → reference/repository-pr-comments.md} +2 -2
  41. package/assets/docs/reference/troubleshooting.md +125 -10
  42. package/assets/docs/reference/what-oat-writes.md +410 -0
  43. package/assets/docs/skills/brainstorm.md +77 -0
  44. package/assets/docs/skills/diagnostics.md +56 -0
  45. package/assets/docs/{workflows/skills → skills}/explainer-kit.md +121 -0
  46. package/assets/docs/skills/index.md +416 -0
  47. package/assets/docs/{workflows/skills → skills}/meta.json +4 -2
  48. package/assets/docs/{workflows/skills → skills}/recon.md +49 -0
  49. package/assets/docs/skills/repo-improve.md +254 -0
  50. package/assets/docs/skills/research.md +237 -0
  51. package/assets/docs/skills/session-closeout.md +61 -0
  52. package/assets/docs/workflows/advanced/autonomy.md +344 -0
  53. package/assets/docs/workflows/{projects → advanced}/cursor-cloud.md +69 -1
  54. package/assets/docs/workflows/{projects → advanced}/dispatch-ceiling.md +163 -18
  55. package/assets/docs/workflows/{projects → advanced}/evidence-layers.md +1 -1
  56. package/assets/docs/workflows/advanced/index.md +19 -0
  57. package/assets/docs/workflows/advanced/meta.json +13 -0
  58. package/assets/docs/workflows/{projects → advanced}/orchestration-model.md +63 -4
  59. package/assets/docs/workflows/{projects → advanced}/programmatic-execution.md +4 -4
  60. package/assets/docs/{cli-utilities → workflows/advanced}/workflow-gates.md +162 -8
  61. package/assets/docs/workflows/advanced/worktree-bootstrap.md +83 -0
  62. package/assets/docs/workflows/approvals-and-automation.md +261 -0
  63. package/assets/docs/workflows/backlog-and-planning/backlog-lifecycle.md +348 -0
  64. package/assets/docs/workflows/backlog-and-planning/index.md +13 -0
  65. package/assets/docs/workflows/backlog-and-planning/meta.json +4 -0
  66. package/assets/docs/workflows/backlog-and-planning/remote-project-management.md +303 -0
  67. package/assets/docs/workflows/choose-workflow.md +114 -0
  68. package/assets/docs/workflows/ideas/index.md +3 -3
  69. package/assets/docs/workflows/ideas/lifecycle.md +218 -1
  70. package/assets/docs/workflows/index.md +11 -62
  71. package/assets/docs/workflows/meta.json +10 -2
  72. package/assets/docs/workflows/projects/closeout/closeout-skills.md +538 -0
  73. package/assets/docs/workflows/projects/closeout/index.md +14 -0
  74. package/assets/docs/workflows/projects/closeout/meta.json +4 -0
  75. package/assets/docs/workflows/projects/{pr-flow.md → closeout/pr-flow.md} +1 -1
  76. package/assets/docs/workflows/projects/{retro.md → closeout/retro.md} +1 -1
  77. package/assets/docs/workflows/projects/execution/execution-skills.md +258 -0
  78. package/assets/docs/workflows/projects/{implementation-execution.md → execution/implementation-execution.md} +8 -8
  79. package/assets/docs/workflows/projects/execution/index.md +15 -0
  80. package/assets/docs/workflows/projects/execution/meta.json +9 -0
  81. package/assets/docs/workflows/projects/execution/picking-up-projects.md +376 -0
  82. package/assets/docs/{cli-utilities → workflows/projects/execution}/project-log.md +1 -1
  83. package/assets/docs/workflows/projects/index.md +38 -49
  84. package/assets/docs/workflows/projects/lifecycle.md +47 -11
  85. package/assets/docs/workflows/projects/meta.json +2 -23
  86. package/assets/docs/workflows/projects/{design-modes.md → planning/design-modes.md} +29 -0
  87. package/assets/docs/workflows/projects/planning/hill-checkpoints.md +167 -0
  88. package/assets/docs/workflows/projects/planning/index.md +16 -0
  89. package/assets/docs/workflows/projects/planning/meta.json +10 -0
  90. package/assets/docs/workflows/projects/planning/planning-skills.md +381 -0
  91. package/assets/docs/workflows/projects/{splitting.md → planning/splitting.md} +3 -3
  92. package/assets/docs/workflows/projects/planning/starting-projects.md +511 -0
  93. package/assets/docs/workflows/projects/{reviews.md → reviews/index.md} +51 -5
  94. package/assets/docs/workflows/projects/reviews/meta.json +4 -0
  95. package/assets/docs/workflows/projects/reviews/review-flavors.md +643 -0
  96. package/assets/docs/workflows/projects/{reviewing-oat-prs.md → reviews/reviewing-oat-prs.md} +3 -3
  97. package/assets/docs/workflows/waves/index.md +12 -0
  98. package/assets/docs/workflows/waves/meta.json +4 -0
  99. package/assets/docs/workflows/waves/wave-workflows.md +206 -0
  100. package/assets/public-package-versions.json +4 -4
  101. package/assets/skills/oat-docs/SKILL.md +19 -19
  102. package/assets/skills/oat-docs-analyze/SKILL.md +27 -7
  103. package/assets/skills/oat-docs-analyze/references/quality-checklist.md +16 -3
  104. package/assets/skills/oat-docs-apply/SKILL.md +20 -3
  105. package/assets/skills/oat-docs-authoring/SKILL.md +11 -7
  106. package/assets/skills/oat-docs-authoring/references/docs-root-resolution.md +12 -5
  107. package/assets/skills/oat-docs-authoring/references/lifecycle-boundaries.md +7 -7
  108. package/assets/skills/oat-docs-authoring/references/oat-fumadocs-contract.md +13 -3
  109. package/assets/skills/oat-docs-authoring/references/targeted-authoring-workflow.md +5 -4
  110. package/assets/skills/oat-docs-authoring/references/validation.md +11 -1
  111. package/assets/skills/oat-docs-bootstrap/SKILL.md +31 -8
  112. package/assets/skills/oat-docs-bootstrap/assets/AGENTS.md.template +2 -1
  113. package/assets/skills/oat-doctor/SKILL.md +25 -25
  114. package/assets/skills/oat-project-document/SKILL.md +21 -2
  115. package/assets/templates/docs-markdown/contributing.md +35 -0
  116. package/assets/templates/docs-markdown/index.md +18 -0
  117. package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
  118. package/dist/commands/docs/index-generate/index.js +41 -8
  119. package/dist/commands/docs/init/index.d.ts +17 -2
  120. package/dist/commands/docs/init/index.d.ts.map +1 -1
  121. package/dist/commands/docs/init/index.js +194 -14
  122. package/dist/commands/docs/init/markdown.d.ts +39 -0
  123. package/dist/commands/docs/init/markdown.d.ts.map +1 -0
  124. package/dist/commands/docs/init/markdown.js +317 -0
  125. package/dist/commands/docs/init/resolve-options.d.ts +3 -1
  126. package/dist/commands/docs/init/resolve-options.d.ts.map +1 -1
  127. package/dist/commands/docs/init/resolve-options.js +36 -0
  128. package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
  129. package/dist/commands/docs/init/scaffold.js +11 -0
  130. package/dist/commands/shared/agents-md.d.ts +7 -0
  131. package/dist/commands/shared/agents-md.d.ts.map +1 -1
  132. package/dist/commands/shared/agents-md.js +131 -91
  133. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
  134. package/dist/commands/tools/shared/pack-manifest.js +1 -0
  135. package/dist/config/oat-config.d.ts +2 -1
  136. package/dist/config/oat-config.d.ts.map +1 -1
  137. package/dist/config/oat-config.js +4 -2
  138. package/package.json +2 -2
  139. package/assets/docs/cli-utilities/backlog-lifecycle.md +0 -80
  140. package/assets/docs/cli-utilities/index.md +0 -74
  141. package/assets/docs/cli-utilities/meta.json +0 -13
  142. package/assets/docs/cli-utilities/remote-project-management.md +0 -191
  143. package/assets/docs/guide/index.md +0 -31
  144. package/assets/docs/guide/meta.json +0 -4
  145. package/assets/docs/quickstart.md +0 -88
  146. package/assets/docs/workflows/projects/autonomy.md +0 -196
  147. package/assets/docs/workflows/projects/hill-checkpoints.md +0 -93
  148. package/assets/docs/workflows/projects/picking-up-projects.md +0 -124
  149. package/assets/docs/workflows/projects/review-flavors.md +0 -138
  150. package/assets/docs/workflows/skills/index.md +0 -184
  151. package/assets/docs/workflows/skills/repo-improve.md +0 -89
  152. package/assets/docs/workflows/wave-workflows.md +0 -77
@@ -0,0 +1,303 @@
1
+ ---
2
+ title: Remote Project Management
3
+ description: Safely bind OAT planning records to GitHub, Linear, or Jira through provider-neutral host capabilities.
4
+ ---
5
+
6
+ # Remote Project Management
7
+
8
+ Remote project management connects an OAT backlog item or project to a remote
9
+ GitHub, Linear, or Jira record. OAT owns policy, previews, approvals, durable
10
+ operation state, and authoritative read-back verification. The host agent owns
11
+ live execution capability discovery.
12
+
13
+ Remote management is deliberately explicit. It does not turn every plan task
14
+ into a remote issue, run background synchronization, or treat a provider result
15
+ as proof of success.
16
+
17
+ ## Prerequisite
18
+
19
+ Confirm that file-backed project management is adopted before using a remote
20
+ command:
21
+
22
+ ```bash
23
+ oat pjm doctor --json
24
+ ```
25
+
26
+ Continue only when `adoption.state` is `declared` or `inferred-legacy`. Run
27
+ `oat pjm init` first when adoption is absent or only partially initialized.
28
+
29
+ > [!WARNING]
30
+ > Running `oat pjm init` again, or running `oat pjm migrate --apply`,
31
+ > currently replaces the `pjm` section of `.oat/config.json` and deletes any
32
+ > `pjm.remote` settings, which hold the remote policy described below. Before
33
+ > you rerun either command, back up `.oat/config.json`. Afterwards, run
34
+ > `git diff .oat/config.json` and restore `pjm.remote` if it was removed.
35
+
36
+ ## Lifecycle operations
37
+
38
+ The command family is `oat pjm remote`:
39
+
40
+ ```bash
41
+ oat pjm remote intake github:example/repository#123 --to-backlog BL-123 --capability-evidence-stdin --json
42
+ oat pjm remote publish --binding rb_example --capability-evidence-stdin --json
43
+ oat pjm remote refresh --binding rb_example --capability-evidence-stdin --json
44
+ oat pjm remote reconcile --binding rb_example --capability-evidence-stdin --json
45
+ oat pjm remote closeout --project .oat/projects/shared/example --capability-evidence-stdin --json
46
+ oat pjm remote discussion --binding rb_example --limit 20 --capability-evidence-stdin --json
47
+ oat pjm remote resolve relink --binding rb_example github:example/repository#456 --capability-evidence-stdin --json
48
+ oat pjm remote resolve detach --binding rb_example --json
49
+ oat pjm remote resolve recreate --binding rb_example --capability-evidence-stdin --json
50
+ oat pjm remote doctor --json
51
+ oat pjm remote migrate --check --json
52
+ ```
53
+
54
+ Before each provider-contacting example, the host discovers live capability and
55
+ supplies only its bounded provider-neutral evidence on standard input. Mutation
56
+ commands also require the current caller-owned authority evidence requested by
57
+ their live help.
58
+
59
+ - `intake` reads one remote record into a selected local backlog target and
60
+ creates the binding.
61
+ - `publish` creates or updates one explicitly selected binding.
62
+ - `refresh` updates retained snapshots without writing remotely.
63
+ - `reconcile` classifies local, remote, and baseline changes before proposing
64
+ any write.
65
+ - `closeout` prepares a reviewed batch while preserving independent per-binding
66
+ outcomes.
67
+ - `discussion` returns one bounded, sanitized page as non-persisted evidence.
68
+ - `resolve relink`, `detach`, and `recreate` handle anomalous bindings without
69
+ discarding identity history or retrying an uncertain create blindly.
70
+ - `doctor` and `migrate` diagnose or repair local records without contacting a
71
+ provider.
72
+
73
+ Use `--help` on the live command for current options. JSON output uses one
74
+ versioned envelope and may return a nonzero shell exit for a safely persisted
75
+ `pending`, `needs-review`, `partial`, `uncertain`, or `blocked` outcome.
76
+
77
+ ## Repository-owned policy
78
+
79
+ Remote policy lives only in the shared repository config at `.oat/config.json`.
80
+ The safe defaults are local operational state, no description publication, and
81
+ read-only authority:
82
+
83
+ ```json
84
+ {
85
+ "pjm": {
86
+ "remote": {
87
+ "schemaVersion": 1,
88
+ "storage": { "state": "local" },
89
+ "policy": {
90
+ "description": "none",
91
+ "authority": { "default": "read-only" }
92
+ }
93
+ }
94
+ }
95
+ }
96
+ ```
97
+
98
+ Use the config command instead of editing nested values by hand:
99
+
100
+ ```bash
101
+ oat config set pjm.remote.policy.description managed-section --shared
102
+ oat config set pjm.remote.policy.authority.operations.update-fields user-approved --shared
103
+ oat config set pjm.remote.policy.providers.github.authority.operations.create user-approved --shared
104
+ ```
105
+
106
+ Description modes are `none`, `managed-section`, and `replace`. Authority modes
107
+ are `read-only`, `user-approved`, `user-authorized`, and `autonomous`.
108
+ For each operation, OAT resolves the repository operation override, then its
109
+ repository default, then the built-in read-only fallback. A matching provider
110
+ operation override or provider default replaces that repository result and may
111
+ broaden it. Binding defaults and operation restrictions then clamp authority,
112
+ while purpose field grants intersect to narrow the outbound fields. Provider
113
+ configuration never bypasses hard approval floors or the requirement for
114
+ current caller-owned authority evidence; missing, stale, or mismatched evidence
115
+ fails closed. Autonomous configuration is not a background grant.
116
+
117
+ Current CLI bindings have a fixed intake/source or publish/planning purpose
118
+ and empty per-binding restrictions; no command exposes additional binding
119
+ restriction or purpose-grant setters. These remain internal narrowing layers,
120
+ not extra configurable user controls.
121
+
122
+ ## Live host capability boundary
123
+
124
+ At operation time, the host agent inspects currently granted MCP or connector
125
+ descriptions for the requested semantic operation and exact account, workspace,
126
+ site, or repository context. If no capable connector is available, it may
127
+ inspect the live help of an already configured provider CLI before the first
128
+ provider-contacting command.
129
+
130
+ OAT does not store provider tool names, native schemas, captured catalogs,
131
+ executable names, flags, or CLI dialects. The host returns only bounded,
132
+ sanitized capability evidence through `--capability-evidence-stdin`. It must not
133
+ install tools, request credential values, or switch execution surfaces after an
134
+ attempt begins. The CLI may then emit one provider-neutral `externalAction`.
135
+ The host executes that exact action at most once and returns one bounded
136
+ observation with `oat pjm remote operation continue`.
137
+
138
+ ## Content and outbound safety
139
+
140
+ Inbound provider text is retained only through an allowlist of core fields and
141
+ adapter-approved extensions. If a retained text field triggers a conservative
142
+ sensitive-content signal, OAT suppresses that whole field and marks the
143
+ snapshot incomplete. This is a bounded field-safety rule, not general DLP or
144
+ credential-value parsing.
145
+
146
+ Every remote create or update consumes only an explicit normalized projection.
147
+ The universal provider-neutral pre-write gate evaluates that projection before
148
+ preview, approval, action, and authoritative read-back. It never scans the
149
+ repository, worktree, Git history, or arbitrary files for secrets. Missing,
150
+ stale, failed, or blocked safety evidence prevents execution.
151
+
152
+ ## Previews, approval floors, and uncertainty
153
+
154
+ Mutation-capable commands persist and return a preview before execution. The
155
+ preview digest binds the target, normalized fields, remote revision,
156
+ capability, safety result, and effective policy. If any load-bearing input
157
+ changes, the approval is stale.
158
+
159
+ Fresh approval is required for complete description replacement on create,
160
+ relink, detach, recreate, destructive operations, and promotion to shared
161
+ operational storage.
162
+
163
+ > [!WARNING]
164
+ > In `replace` description mode, only creating an issue always needs fresh
165
+ > approval; later updates follow your `update-fields` authority, so
166
+ > `user-authorized` or `autonomous` authority can overwrite an issue's
167
+ > description without a person approving it. If someone must review each
168
+ > overwrite, set `pjm.remote.policy.authority.operations.update-fields` to
169
+ > `user-approved`.
170
+
171
+ `user-approved` authority requires applying the exact persisted preview.
172
+ Higher configured authority cannot bypass floors that the operation enforces.
173
+
174
+ The host submits a bounded observation with `oat pjm remote operation continue`.
175
+ Only an OAT `ok` envelope after authoritative read-back means success. A
176
+ connector response, process exit, or visible remote change is evidence rather
177
+ than a verdict. If a create or update is uncertain, do not retry it blindly;
178
+ use the recovery guidance in the envelope so OAT can search, relink, recreate,
179
+ or reconcile without producing duplicates.
180
+
181
+ ## Storage and worktrees
182
+
183
+ > [!WARNING]
184
+ > OAT writes every binding record, including bindings for local projects, under
185
+ > `.oat/repo/pjm/remote/bindings/`, and it does not gitignore that directory, so
186
+ > those records are committed unless you exclude them. Review that directory
187
+ > before committing if tracker links should not appear in the repository.
188
+
189
+ Bindings are not yet stored with the project or backlog item that owns them;
190
+ the owner-specific routing design is not wired into the current store.
191
+
192
+ Operational snapshots, journals, batches, and receipts default to a
193
+ repository-fingerprinted directory under the Git common directory:
194
+ `.git/oat/pjm-remote/<repository-fingerprint>/`. All linked worktrees for one
195
+ repository therefore share the same local operational state, while another
196
+ clone gets its own store.
197
+
198
+ Shared operational storage is opt-in and may expose remote planning content to
199
+ everyone with repository access. It requires a persisted preview and fresh
200
+ approval.
201
+
202
+ > [!WARNING]
203
+ > Shared storage is meant to be refused for local projects, but the current CLI
204
+ > does not enforce that, so a local project's remote state is committed with
205
+ > everyone else's. Do not combine shared storage with local projects.
206
+
207
+ Preview with `oat pjm remote storage shared` without
208
+ `--apply`, then use the returned approval digest for the explicit apply. The
209
+ help command describes flags; it does not preview proposed storage changes.
210
+
211
+ ## Offline behavior
212
+
213
+ OAT can inspect portable bindings, the bounded local snapshot, journals,
214
+ receipts, and pending recovery instructions while offline. `remote doctor` and
215
+ `migrate` are local-only. Provider refresh, publication, reconciliation writes,
216
+ and authoritative verification remain pending or blocked until matching live
217
+ capability evidence is available; offline state never fabricates remote
218
+ freshness or success.
219
+
220
+ ## Related references
221
+
222
+ - [Configuration](../../reference/configuration.md)
223
+ - [CLI Reference](../../reference/cli-reference.md)
224
+ - [File Locations](../../reference/file-locations.md)
225
+ - [Troubleshooting](../../reference/troubleshooting.md)
226
+
227
+ ## Choosing bindings and policy
228
+
229
+ A **binding** links one local backlog item or project to one GitHub, Linear, or
230
+ Jira issue. You create a binding in one of two ways: **intake** imports an
231
+ existing tracker issue as a local backlog item, and **publish** creates a
232
+ tracker issue from a local item. Both commands need capability evidence from
233
+ the host agent (see [Live host capability boundary](#live-host-capability-boundary)),
234
+ so in practice you ask your agent to run them through the `oat-pjm-remote`
235
+ skill. OAT creates no binding unless you ask, so local work stays complete
236
+ offline.
237
+
238
+ | Choice | Choose it when | What you give up |
239
+ | ---------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
240
+ | No binding | The item matters only in the repository | Visibility in the tracker |
241
+ | Intake | The tracker owns the issue | Title, description, and priority flow only into the repository; local edits never flow back |
242
+ | Publish | The work starts locally | You need write authority (below). Title, priority, and, if the description policy allows, the description then flow both ways |
243
+
244
+ - If you maintain an open-source project on GitHub, intake reported issues and
245
+ publish only the work that maintainers start.
246
+ - If your team plans in Linear or Jira, intake the tickets that agents work on.
247
+
248
+ ### How much of the description is sent
249
+
250
+ | `pjm.remote.policy.description` | Choose it when | What you give up |
251
+ | ------------------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------- |
252
+ | `none` (default) | The local description is sensitive | OAT never sends or compares a description. Intake still copies the issue's description locally |
253
+ | `managed-section` | People also edit the issue in the tracker | OAT owns only the text between its marker comments; if the markers are broken, the write stops |
254
+ | `replace` | OAT is the only author of the description | Edits made in the tracker are overwritten (see the replace-mode warning above) |
255
+
256
+ ### Who may write, and with what approval
257
+
258
+ Authority is set with `pjm.remote.policy.authority.default`, or per operation
259
+ under `pjm.remote.policy.authority.operations.<operation>`, in shared config
260
+ only. Before any write, OAT saves a preview of exactly what it would send,
261
+ identified by a digest (a content hash).
262
+
263
+ | Authority | Choose it when | What you give up |
264
+ | --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
265
+ | `read-only` (default) | You only intake and refresh issues | All writes to the tracker |
266
+ | `user-approved` | A person must see each exact change | One approval per write: the person approves the preview digest within five minutes |
267
+ | `user-authorized` | An explicit request such as "publish BL-12 to Linear" is enough | Reviewing each change before it is sent |
268
+ | `autonomous` | An OAT workflow writes as one of its steps | Most live oversight. The workflow's evidence must still match the exact operation and item |
269
+
270
+ Deleting, recreating, relinking, or detaching a binding, and creating an issue
271
+ in `replace` mode, always need `user-approved` approval, whatever you configure.
272
+
273
+ - Start with `read-only` and intake.
274
+ - When OAT should create and maintain issues, set both `create` and
275
+ `update-fields` to `user-approved`.
276
+ - Choose `user-authorized` or `autonomous` only when you deliberately accept
277
+ that a request or a workflow step authorizes the write without a per-change
278
+ review.
279
+
280
+ A provider section, `pjm.remote.policy.providers.<github|linear|jira>`, is unset
281
+ by default and then inherits the repository policy. If one policy fits every
282
+ tracker, leave it unset. If trust differs, for example a private Linear
283
+ workspace versus public GitHub, set a provider policy, but review it carefully:
284
+ it replaces the repository value and can grant more than the repository policy
285
+ does. A provider `authority.default` also replaces the repository's
286
+ per-operation settings, so repeat any per-operation limits you still need under
287
+ that provider.
288
+
289
+ ### Where operation state is stored
290
+
291
+ Snapshots and journals (OAT's copy of each issue as last read, and its log of
292
+ remote operations) are stored locally by default, under the Git directory.
293
+ Every worktree of one clone shares them; other clones do not see them.
294
+
295
+ - Keep `local` storage unless teammates need each other's operation logs, for
296
+ example to recover a create whose outcome was unclear.
297
+ - If you do switch to shared storage, review what it exposes first: it puts
298
+ remote content and operation journals into Git history, and it does not move
299
+ existing records. Do not use it with local projects (see the warning above).
300
+
301
+ Local storage does not make binding records private, because bindings are
302
+ always written to the repository as described in
303
+ [Storage and worktrees](#storage-and-worktrees).
@@ -0,0 +1,114 @@
1
+ ---
2
+ title: Choose a Workflow
3
+ description: Choose how to run tracked, resumable work in OAT, from no project to lite, quick, spec-driven, or imported projects, and what each mode does at the end.
4
+ ---
5
+
6
+ # Choose a Workflow
7
+
8
+ Workflows are the part of OAT for tracked, resumable work. They are optional and sit on top of the CLI and provider sync.
9
+
10
+ Before you choose, read [Approvals and Automation](approvals-and-automation.md): it shows, for each mode, where a person approves, what an agent does without asking, and when OAT pushes or opens a pull request.
11
+
12
+ Use this section when you want explicit project artifacts, stable task IDs, review loops, and resumable execution across longer-running work. The workflow layer is optional; stay with direct CLI usage when the task is straightforward and the overhead of project artifacts would outweigh the value.
13
+
14
+ ## Where to go from here
15
+
16
+ - [Brainstorm Before Choosing a Workflow](../skills/brainstorm.md) - Not sure what the work is yet? Talk it through with `/oat-brainstorm` first; it ends with an answer, a document, or a handoff to an idea, a backlog item, or a project.
17
+ - [Ideas Workflow](ideas/index.md) - Lightweight idea capture, brainstorming, and promotion into tracked projects when the work becomes concrete.
18
+ - [Projects](projects/index.md) - Lifecycle, artifacts, reviews, PR flow, and repository analysis.
19
+ - [Wave Workflows](waves/wave-workflows.md) - Program-level coordination for executing a corpus of external plans as ordered wrapper projects.
20
+ - [Skills](../skills/index.md) - Workflow-oriented skill discovery and use-case routing.
21
+
22
+ ## What This Section Is
23
+
24
+ This section explains when workflow mode is worth the overhead, how OAT projects move through lifecycle phases, and how ideas, skills, reviews, and PR flow fit into that model.
25
+
26
+ ## Who It's For
27
+
28
+ - Teams doing multi-session or multi-phase work that benefits from tracked artifacts
29
+ - Users who want explicit discovery, planning, implementation, and review state
30
+ - Repos that need a repeatable human-in-the-loop execution model
31
+
32
+ ## When To Use Workflow Mode
33
+
34
+ Use workflow mode when:
35
+
36
+ - the work spans multiple sessions or contributors
37
+ - you want explicit discovery, plan, implementation, and review artifacts
38
+ - you need stable task sequencing and resumable execution
39
+ - you want human-in-the-loop checkpoints around risky transitions
40
+
41
+ Stay with direct CLI usage when:
42
+
43
+ - the task is straightforward and bounded
44
+ - you mainly need provider sync or a utility command
45
+ - the overhead of project artifacts would outweigh the value
46
+
47
+ ## Workflow Modes In Practice
48
+
49
+ - CLI only: direct commands, no tracked project artifacts
50
+ - Lite mode: a batched interview and one approval produce a single-phase `plan.md` for a single-sitting change
51
+ - Quick mode: tracked work with a lighter upfront planning path
52
+ - Spec-driven mode: explicit discovery, requirements, design, and plan artifacts
53
+ - Import mode: an externally-authored plan imported into OAT for tracked execution
54
+
55
+ ## Start Here
56
+
57
+ - Use [Skills](../skills/index.md) when you want task-oriented guidance on the most useful workflow skills.
58
+ - Go to [Workflow & Projects](projects/index.md) when you need the lifecycle and artifact model in detail.
59
+ - Use [Ideas](ideas/index.md) when the work is still exploratory.
60
+
61
+ ## Common Tasks
62
+
63
+ - Capture or refine early work in [Ideas](ideas/index.md).
64
+ - Understand how tracked projects progress in [Workflow & Projects](projects/index.md).
65
+ - Learn the artifact contract in [Artifacts](../reference/project-artifacts.md).
66
+ - Understand review and PR expectations in [Reviews](projects/reviews/index.md) and [PR Flow](projects/closeout/pr-flow.md).
67
+
68
+ ## Go Deeper
69
+
70
+ - [Skills](../skills/index.md) - Workflow-oriented skill discovery and use-case routing.
71
+ - [Ideas](ideas/index.md) - Idea capture, refinement, and promotion flows.
72
+ - [Workflow & Projects](projects/index.md) - Lifecycle, artifacts, reviews, PR flow, and repository analysis.
73
+
74
+ ## Which mode should I choose?
75
+
76
+ A mode decides how much planning happens before any code is written. You pick
77
+ it by running that mode's entry skill, and the skill creates the project for
78
+ you. An OAT project is a folder of tracked files (plan, state, reviews) that lets
79
+ an agent pick the work up again in a later session.
80
+
81
+ | Mode | Start it with | Choose it when | What you give up | At the end |
82
+ | ----------- | ----------------------------------------------- | ------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
83
+ | No project | No skill; ask your agent or run CLI commands | The work is small, or is just provider sync or a single CLI command | Resuming later, a tracked plan, and lifecycle reviews. Ad-hoc reviews still work | OAT pushes nothing and opens no pull request |
84
+ | Lite | `/oat-project-lite` | The change fits in one sitting and the outcome is clear | Discovery and design documents, multiple phases, and approval pauses between phases. You approve one plan, once | Always pushes your current branch and opens a pull request by itself; no setting removes this step |
85
+ | Quick | `/oat-project-quick-start` | The work is bounded and the requirements are clear | A formal requirements document (`spec.md`). Design is optional | Pushes your branch and opens a pull request only when `workflow.postImplementSequence` asks for it, or in an autonomous run |
86
+ | Spec-driven | `/oat-project-new` | The requirements are unclear, or the change cuts across many parts of the code | Speed: you approve discovery and design before any planning or code | Same as quick |
87
+ | Import | `/oat-project-import-plan` with the plan's path | A plan already exists in another tool or document | OAT's own discovery and design steps | Same as quick |
88
+
89
+ Type the skill names in your coding agent's chat, not a terminal; Codex uses
90
+ `$` instead of `/`. No mode ever merges a pull request. Separately,
91
+ `oat-project-complete` opens a pull request without asking when
92
+ `workflow.createPrOnComplete` is `true`. Project files of a project in the
93
+ default _synced_ scope are also pushed to `origin` whenever a skill saves
94
+ them; see [Approvals and Automation](approvals-and-automation.md#what-oat-does-without-asking).
95
+
96
+ Decide by how clear the requirements are and how risky the design is, not by
97
+ how many tasks the work has. A large but well-understood change can still be a
98
+ quick project. If you run `oat project new` yourself without `--mode`, it
99
+ creates a spec-driven project, but it only creates the files; the entry skill
100
+ is what holds the planning conversation, so start with the skill.
101
+
102
+ - If you are a solo developer fixing one well-understood bug, choose lite, or
103
+ skip the project entirely if you will not need to resume or review it later.
104
+ Lite ends by pushing your current branch and opening a pull request without
105
+ asking, so start it on a feature branch; if you do not want that, choose
106
+ quick instead, which opens a pull request only when
107
+ `workflow.postImplementSequence` asks for one or the run is autonomous.
108
+ - If your team is building a feature with agreed, bounded requirements, choose
109
+ quick. A long task list alone does not call for a formal spec.
110
+ - If the change is high-risk or regulated, or its requirements are still being
111
+ debated, choose spec-driven so discovery and design are agreed before
112
+ implementation starts.
113
+ - If you already have an approved plan from another tool, import it rather than
114
+ repeating discovery and design.
@@ -11,13 +11,13 @@ Ideas are intentionally lighter than projects: they are usually gitignored, pers
11
11
 
12
12
  ## Not Sure If It's an Idea Yet?
13
13
 
14
- > **Direct entry to `oat-idea-ideate` requires an existing target** — either a tracked idea record or an unchecked scratchpad seed in `{IDEAS_ROOT}/scratchpad.md`. For blank-slate brainstorms, route to [`oat-brainstorm`](../../cli-utilities/tool-packs.md) instead.
14
+ > **Direct entry to `oat-idea-ideate` requires an existing target** — either a tracked idea record or an unchecked scratchpad seed in `{IDEAS_ROOT}/scratchpad.md`. For blank-slate brainstorms, route to [`oat-brainstorm`](../../getting-started/tool-packs.md) instead.
15
15
 
16
- If the thought is still pre-shape — you don't know whether it should land as a quick scratchpad note, a captured idea, a scoped backlog item, or a full project — start with [`oat-brainstorm`](../../cli-utilities/tool-packs.md). It's the project-independent brainstorming entry point: Hard Activation fires only on the `brainstorm` verb ("let's brainstorm", "brainstorm this", "can we brainstorm X", "help me brainstorm X", or `/oat-brainstorm`); ambiguous exploratory phrasing answers conversationally without the banner and offers structured mode only after sustained exploration. Once entered, it runs a structured design conversation and routes the outcome into the right destination (including this ideas workflow if that's where the brainstorm lands). Use ideas directly when you already know the work is "an idea worth tracking" and you want to capture or extend one without going through the dispatcher.
16
+ If the thought is still pre-shape — you don't know whether it should land as a quick scratchpad note, a captured idea, a scoped backlog item, or a full project — start with [`oat-brainstorm`](../../getting-started/tool-packs.md). It's the project-independent brainstorming entry point: Hard Activation fires only on the `brainstorm` verb ("let's brainstorm", "brainstorm this", "can we brainstorm X", "help me brainstorm X", or `/oat-brainstorm`); ambiguous exploratory phrasing answers conversationally without the banner and offers structured mode only after sustained exploration. Once entered, it runs a structured design conversation and routes the outcome into the right destination (including this ideas workflow if that's where the brainstorm lands). Use ideas directly when you already know the work is "an idea worth tracking" and you want to capture or extend one without going through the dispatcher.
17
17
 
18
18
  ## Contents
19
19
 
20
- - [Lifecycle](lifecycle.md) - Capture, ideate, refine, and summarize an idea before promotion or discard.
20
+ - [Ideas Lifecycle](lifecycle.md) - Capture, ideate, refine, and summarize an idea before promotion or discard.
21
21
 
22
22
  ## When Ideas Fit Better Than Projects
23
23