@open-agent-toolkit/cli 0.3.13 → 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 +32 -0
- package/assets/docs/docs-tooling/agent-instructions.md +131 -0
- package/assets/docs/docs-tooling/index.md +1 -0
- package/assets/docs/docs-tooling/meta.json +1 -1
- package/assets/docs/docs-tooling/workflows.md +331 -2
- 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 +142 -14
- package/assets/docs/index.md +47 -48
- package/assets/docs/meta.json +6 -7
- package/assets/docs/provider-sync/commands.md +25 -2
- 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 +32 -1
- 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 +33 -33
- 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/file-locations.md +4 -1
- package/assets/docs/reference/index.md +13 -1
- package/assets/docs/reference/meta.json +7 -1
- package/assets/docs/reference/oat-directory-structure.md +1 -1
- 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 +1 -1
- package/assets/skills/oat-docs-apply/SKILL.md +1 -1
- package/assets/skills/oat-docs-authoring/SKILL.md +1 -1
- package/assets/skills/oat-docs-bootstrap/SKILL.md +1 -1
- package/assets/skills/oat-doctor/SKILL.md +25 -25
- 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
|
@@ -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`](../../
|
|
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`](../../
|
|
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
|
|