@open-agent-toolkit/cli 0.3.12 → 0.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/contributing/index.md +14 -1
- package/assets/docs/contributing/skills.md +64 -2
- package/assets/docs/contributing/smoke-testing.md +3 -3
- package/assets/docs/contributing/updating-model-guidance.md +2 -2
- package/assets/docs/contributing/verifying-cursor-pins.md +1 -1
- package/assets/docs/docs-tooling/add-docs-to-a-repo.md +112 -15
- package/assets/docs/docs-tooling/agent-instructions.md +131 -0
- package/assets/docs/docs-tooling/commands.md +74 -30
- package/assets/docs/docs-tooling/index.md +7 -6
- package/assets/docs/docs-tooling/meta.json +1 -1
- package/assets/docs/docs-tooling/workflows.md +357 -11
- package/assets/docs/{cli-utilities → getting-started}/bootstrap.md +60 -5
- package/assets/docs/{guide → getting-started}/concepts.md +28 -10
- package/assets/docs/getting-started/index.md +68 -0
- package/assets/docs/getting-started/meta.json +4 -0
- package/assets/docs/getting-started/quickstart.md +174 -0
- package/assets/docs/{cli-utilities → getting-started}/tool-packs.md +146 -15
- package/assets/docs/index.md +47 -48
- package/assets/docs/meta.json +6 -7
- package/assets/docs/provider-sync/commands.md +26 -3
- package/assets/docs/provider-sync/config.md +60 -1
- package/assets/docs/provider-sync/index.md +31 -15
- package/assets/docs/provider-sync/instruction-sync.md +43 -5
- package/assets/docs/provider-sync/manifest-and-drift.md +85 -0
- package/assets/docs/provider-sync/meta.json +1 -0
- package/assets/docs/provider-sync/pilot-with-a-team.md +236 -0
- package/assets/docs/provider-sync/scope-and-surface.md +37 -3
- package/assets/docs/reference/cli-reference.md +34 -34
- package/assets/docs/{cli-utilities → reference}/config-and-local-state.md +25 -9
- package/assets/docs/{cli-utilities → reference}/configuration.md +151 -34
- package/assets/docs/reference/docs-index-contract.md +19 -4
- package/assets/docs/reference/file-locations.md +7 -2
- package/assets/docs/reference/index.md +13 -1
- package/assets/docs/reference/meta.json +7 -1
- package/assets/docs/reference/oat-directory-structure.md +24 -22
- package/assets/docs/{workflows/projects/artifacts.md → reference/project-artifacts.md} +4 -4
- package/assets/docs/{workflows/projects/state-machine.md → reference/project-state-machine.md} +1 -1
- package/assets/docs/{workflows/projects/repo-analysis.md → reference/repository-pr-comments.md} +2 -2
- package/assets/docs/reference/troubleshooting.md +125 -10
- package/assets/docs/reference/what-oat-writes.md +410 -0
- package/assets/docs/skills/brainstorm.md +77 -0
- package/assets/docs/skills/diagnostics.md +56 -0
- package/assets/docs/{workflows/skills → skills}/explainer-kit.md +121 -0
- package/assets/docs/skills/index.md +416 -0
- package/assets/docs/{workflows/skills → skills}/meta.json +4 -2
- package/assets/docs/{workflows/skills → skills}/recon.md +49 -0
- package/assets/docs/skills/repo-improve.md +254 -0
- package/assets/docs/skills/research.md +237 -0
- package/assets/docs/skills/session-closeout.md +61 -0
- package/assets/docs/workflows/advanced/autonomy.md +344 -0
- package/assets/docs/workflows/{projects → advanced}/cursor-cloud.md +69 -1
- package/assets/docs/workflows/{projects → advanced}/dispatch-ceiling.md +163 -18
- package/assets/docs/workflows/{projects → advanced}/evidence-layers.md +1 -1
- package/assets/docs/workflows/advanced/index.md +19 -0
- package/assets/docs/workflows/advanced/meta.json +13 -0
- package/assets/docs/workflows/{projects → advanced}/orchestration-model.md +63 -4
- package/assets/docs/workflows/{projects → advanced}/programmatic-execution.md +4 -4
- package/assets/docs/{cli-utilities → workflows/advanced}/workflow-gates.md +162 -8
- package/assets/docs/workflows/advanced/worktree-bootstrap.md +83 -0
- package/assets/docs/workflows/approvals-and-automation.md +261 -0
- package/assets/docs/workflows/backlog-and-planning/backlog-lifecycle.md +348 -0
- package/assets/docs/workflows/backlog-and-planning/index.md +13 -0
- package/assets/docs/workflows/backlog-and-planning/meta.json +4 -0
- package/assets/docs/workflows/backlog-and-planning/remote-project-management.md +303 -0
- package/assets/docs/workflows/choose-workflow.md +114 -0
- package/assets/docs/workflows/ideas/index.md +3 -3
- package/assets/docs/workflows/ideas/lifecycle.md +218 -1
- package/assets/docs/workflows/index.md +11 -62
- package/assets/docs/workflows/meta.json +10 -2
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +538 -0
- package/assets/docs/workflows/projects/closeout/index.md +14 -0
- package/assets/docs/workflows/projects/closeout/meta.json +4 -0
- package/assets/docs/workflows/projects/{pr-flow.md → closeout/pr-flow.md} +1 -1
- package/assets/docs/workflows/projects/{retro.md → closeout/retro.md} +1 -1
- package/assets/docs/workflows/projects/execution/execution-skills.md +258 -0
- package/assets/docs/workflows/projects/{implementation-execution.md → execution/implementation-execution.md} +8 -8
- package/assets/docs/workflows/projects/execution/index.md +15 -0
- package/assets/docs/workflows/projects/execution/meta.json +9 -0
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +376 -0
- package/assets/docs/{cli-utilities → workflows/projects/execution}/project-log.md +1 -1
- package/assets/docs/workflows/projects/index.md +38 -49
- package/assets/docs/workflows/projects/lifecycle.md +47 -11
- package/assets/docs/workflows/projects/meta.json +2 -23
- package/assets/docs/workflows/projects/{design-modes.md → planning/design-modes.md} +29 -0
- package/assets/docs/workflows/projects/planning/hill-checkpoints.md +167 -0
- package/assets/docs/workflows/projects/planning/index.md +16 -0
- package/assets/docs/workflows/projects/planning/meta.json +10 -0
- package/assets/docs/workflows/projects/planning/planning-skills.md +381 -0
- package/assets/docs/workflows/projects/{splitting.md → planning/splitting.md} +3 -3
- package/assets/docs/workflows/projects/planning/starting-projects.md +511 -0
- package/assets/docs/workflows/projects/{reviews.md → reviews/index.md} +51 -5
- package/assets/docs/workflows/projects/reviews/meta.json +4 -0
- package/assets/docs/workflows/projects/reviews/review-flavors.md +643 -0
- package/assets/docs/workflows/projects/{reviewing-oat-prs.md → reviews/reviewing-oat-prs.md} +3 -3
- package/assets/docs/workflows/waves/index.md +12 -0
- package/assets/docs/workflows/waves/meta.json +4 -0
- package/assets/docs/workflows/waves/wave-workflows.md +206 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-docs/SKILL.md +19 -19
- package/assets/skills/oat-docs-analyze/SKILL.md +27 -7
- package/assets/skills/oat-docs-analyze/references/quality-checklist.md +16 -3
- package/assets/skills/oat-docs-apply/SKILL.md +20 -3
- package/assets/skills/oat-docs-authoring/SKILL.md +11 -7
- package/assets/skills/oat-docs-authoring/references/docs-root-resolution.md +12 -5
- package/assets/skills/oat-docs-authoring/references/lifecycle-boundaries.md +7 -7
- package/assets/skills/oat-docs-authoring/references/oat-fumadocs-contract.md +13 -3
- package/assets/skills/oat-docs-authoring/references/targeted-authoring-workflow.md +5 -4
- package/assets/skills/oat-docs-authoring/references/validation.md +11 -1
- package/assets/skills/oat-docs-bootstrap/SKILL.md +31 -8
- package/assets/skills/oat-docs-bootstrap/assets/AGENTS.md.template +2 -1
- package/assets/skills/oat-doctor/SKILL.md +25 -25
- package/assets/skills/oat-project-document/SKILL.md +21 -2
- package/assets/templates/docs-markdown/contributing.md +35 -0
- package/assets/templates/docs-markdown/index.md +18 -0
- package/dist/commands/docs/index-generate/index.d.ts.map +1 -1
- package/dist/commands/docs/index-generate/index.js +41 -8
- package/dist/commands/docs/init/index.d.ts +17 -2
- package/dist/commands/docs/init/index.d.ts.map +1 -1
- package/dist/commands/docs/init/index.js +194 -14
- package/dist/commands/docs/init/markdown.d.ts +39 -0
- package/dist/commands/docs/init/markdown.d.ts.map +1 -0
- package/dist/commands/docs/init/markdown.js +317 -0
- package/dist/commands/docs/init/resolve-options.d.ts +3 -1
- package/dist/commands/docs/init/resolve-options.d.ts.map +1 -1
- package/dist/commands/docs/init/resolve-options.js +36 -0
- package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
- package/dist/commands/docs/init/scaffold.js +11 -0
- package/dist/commands/shared/agents-md.d.ts +7 -0
- package/dist/commands/shared/agents-md.d.ts.map +1 -1
- package/dist/commands/shared/agents-md.js +131 -91
- package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -1
- package/dist/commands/tools/shared/pack-manifest.js +1 -0
- package/dist/config/oat-config.d.ts +2 -1
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +4 -2
- package/package.json +2 -2
- package/assets/docs/cli-utilities/backlog-lifecycle.md +0 -80
- package/assets/docs/cli-utilities/index.md +0 -74
- package/assets/docs/cli-utilities/meta.json +0 -13
- package/assets/docs/cli-utilities/remote-project-management.md +0 -191
- package/assets/docs/guide/index.md +0 -31
- package/assets/docs/guide/meta.json +0 -4
- package/assets/docs/quickstart.md +0 -88
- package/assets/docs/workflows/projects/autonomy.md +0 -196
- package/assets/docs/workflows/projects/hill-checkpoints.md +0 -93
- package/assets/docs/workflows/projects/picking-up-projects.md +0 -124
- package/assets/docs/workflows/projects/review-flavors.md +0 -138
- package/assets/docs/workflows/skills/index.md +0 -184
- package/assets/docs/workflows/skills/repo-improve.md +0 -89
- package/assets/docs/workflows/wave-workflows.md +0 -77
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Backlog Lifecycle
|
|
3
|
+
description: The states a file-backed backlog item moves through, how oat backlog archive closes it out atomically, and how oat pjm doctor catches lifecycle drift.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Backlog Lifecycle
|
|
7
|
+
|
|
8
|
+
The file-backed backlog under `.oat/repo/pjm/backlog/` tracks work as one Markdown file per item. This page describes the lifecycle those items move through, the atomic close-out command that keeps the pieces in sync, and the diagnostics that flag drift when a close-out is done by hand and something is missed.
|
|
9
|
+
|
|
10
|
+
For the flag-by-flag command reference, see [`oat backlog archive`](../../reference/config-and-local-state.md#oat-backlog-archive). For the two-layer PJM (project management: OAT's file-backed backlog, roadmap, and decision records) surface that hosts the backlog, see [Tool Packs](../../getting-started/tool-packs.md#install-vs-initialize).
|
|
11
|
+
|
|
12
|
+
## Adoption comes first
|
|
13
|
+
|
|
14
|
+
`oat backlog` mutations require this repository to have adopted PJM. Installing
|
|
15
|
+
the `project-management` pack makes the capability available — including at user
|
|
16
|
+
scope, which is the default — but it does not adopt PJM for a repository, and
|
|
17
|
+
`oat backlog init` is not an alternate adoption path.
|
|
18
|
+
|
|
19
|
+
Run `oat pjm init` once per repository. Until adoption is recorded, backlog
|
|
20
|
+
mutations write nothing and return an error naming the repository path and
|
|
21
|
+
`oat pjm init` as the recovery. Check the current state with
|
|
22
|
+
`oat pjm doctor --json` and read its `adoption.state` field.
|
|
23
|
+
|
|
24
|
+
> [!WARNING]
|
|
25
|
+
> Running `oat pjm init` again, or running `oat pjm migrate --apply`,
|
|
26
|
+
> currently replaces the `pjm` section of `.oat/config.json` and deletes any
|
|
27
|
+
> `pjm.remote` settings (your remote project management policy). Several
|
|
28
|
+
> skills below tell you to rerun `oat pjm init` to repair a partial setup or
|
|
29
|
+
> missing index markers. Before you do, back up `.oat/config.json`;
|
|
30
|
+
> afterwards, check `git diff .oat/config.json` and restore `pjm.remote` if
|
|
31
|
+
> it was removed.
|
|
32
|
+
|
|
33
|
+
## Where a backlog item lives
|
|
34
|
+
|
|
35
|
+
- **`items/<id>.md`** - active, file-backed records. Each carries frontmatter with a `status` and an `updated` timestamp.
|
|
36
|
+
- **`archived/<id>.md`** - the resting place for closed-out items, preserving the full item file as history.
|
|
37
|
+
- **`completed.md`** - a newest-first summary log of completed work, one line per entry (`YYYY-MM-DD — BL-YYMMDD-slug — Title — one-line outcome`).
|
|
38
|
+
- **`index.md`** - the human-facing curated overview plus a managed, generated index table rebuilt from item frontmatter.
|
|
39
|
+
|
|
40
|
+
## Item statuses
|
|
41
|
+
|
|
42
|
+
An item's `status` frontmatter field is one of exactly four values:
|
|
43
|
+
|
|
44
|
+
- `open` - captured, not yet started.
|
|
45
|
+
- `in_progress` - actively being worked.
|
|
46
|
+
- `closed` - completed.
|
|
47
|
+
- `wont_do` - abandoned or intentionally declined.
|
|
48
|
+
|
|
49
|
+
`closed` and `wont_do` are the two **terminal** statuses. These are the only valid values — never invent variants like `done`. A terminal item belongs in `archived/`, not `items/`.
|
|
50
|
+
|
|
51
|
+
## Closing out an item
|
|
52
|
+
|
|
53
|
+
When an item reaches a terminal state, close it out with the atomic command rather than editing files by hand:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# completed work
|
|
57
|
+
oat backlog archive BL-260705-example --summary "shipped the thing"
|
|
58
|
+
|
|
59
|
+
# abandoned work
|
|
60
|
+
oat backlog archive BL-260705-example --wont-do --summary "superseded by BL-260706-other"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
A single `oat backlog archive` run performs the whole close-out so its parts cannot drift apart:
|
|
64
|
+
|
|
65
|
+
1. Sets the terminal `status` (`closed` by default, `wont_do` with `--wont-do`) and stamps `updated`.
|
|
66
|
+
2. Validates and trims a nonblank `--summary` before mutating a `closed` item, then appends its canonical (standard OAT format) newest-first `completed.md` entry. `wont_do` items may omit the summary and get an entry only when one is provided.
|
|
67
|
+
3. Moves `items/<id>.md` into `archived/` — with `git mv` inside a work tree, or a plain rename outside git.
|
|
68
|
+
4. Rewrites inbound references to the moved file across Markdown under `.oat/repo/**` (tracked and untracked files that Git does not ignore; a code span whose whole content is the item's path, such as an external plan's source citation, is rewritten, while other code spans and fenced code are left as written with a warning) — external plans, decision records, and other backlog items — so no link dangles at `items/<id>.md`, and reports each rewritten file. A reference it cannot resolve is left alone with a warning.
|
|
69
|
+
5. Regenerates the managed backlog index.
|
|
70
|
+
|
|
71
|
+
The command is safe to re-run: an item already in `archived/` produces a no-op warning and only retries the reference rewrite and index regeneration, so an interrupted close-out finishes on the next run. A missing closed-item summary or an out-of-enum current status (for example a hand-set `done`) is a hard error before mutation and includes recovery guidance. See the [command reference](../../reference/config-and-local-state.md#oat-backlog-archive) for exit codes and the `--json` payload.
|
|
72
|
+
|
|
73
|
+
## Catching lifecycle drift
|
|
74
|
+
|
|
75
|
+
The manual close-out this command replaces is exactly where the two motivating repos drifted — an item was marked closed in frontmatter and summarized in `completed.md` but never moved to `archived/`, and one shipped with the invalid status `done`. `oat pjm doctor` (and therefore `oat doctor`, which aggregates the `pjm:*` checks) now surfaces that drift:
|
|
76
|
+
|
|
77
|
+
- **`pjm:backlog_terminal_in_items`** (fail) - a `closed` or `wont_do` item is still sitting in `items/`. Fix: run `oat backlog archive <id>` to finish the move.
|
|
78
|
+
- **`pjm:backlog_invalid_status`** (fail) - an item carries an out-of-enum or missing `status`. The message lists the offending file paths and the valid statuses.
|
|
79
|
+
- **`pjm:backlog_archived_open`** (warn) - an `open` or `in_progress` item is in `archived/`, which usually means it was archived prematurely.
|
|
80
|
+
- **`pjm:backlog_completed_unarchived`** (warn) - `completed.md` references an item whose file still lives in `items/`.
|
|
81
|
+
- **`pjm:backlog_duplicate_id`** (fail) - the same `<id>.md` exists in both `items/` and `archived/`. `oat backlog archive` refuses to auto-resolve this (it would clobber the archived record), so the duplicate must be reconciled by hand.
|
|
82
|
+
|
|
83
|
+
These backlog checks run once the repository is adopted. `oat doctor` keys the
|
|
84
|
+
`pjm:*` family on repository adoption state rather than on
|
|
85
|
+
`tools.project-management`, so a repository whose PJM capability lives at user
|
|
86
|
+
scope still gets full backlog diagnostics. An unadopted repository reports
|
|
87
|
+
`pjm:adoption` with the `oat pjm init` recovery instead of backlog drift.
|
|
88
|
+
|
|
89
|
+
Doctor reports drift; it never auto-fixes. A human or agent runs `oat backlog archive` (or corrects the status) and re-runs doctor to confirm the backlog is clean again.
|
|
90
|
+
|
|
91
|
+
## oat-pjm-add-backlog-item
|
|
92
|
+
|
|
93
|
+
**Invocation:** Ask, “Use oat-pjm-add-backlog-item to capture a retry-safety
|
|
94
|
+
review for imports, including acceptance criteria.” Use the skill name,
|
|
95
|
+
`/oat-pjm-add-backlog-item`, or `$oat-pjm-add-backlog-item` in Codex. These
|
|
96
|
+
forms are agent instructions, not shell commands; the same convention
|
|
97
|
+
applies to the other PJM skills below.
|
|
98
|
+
|
|
99
|
+
**Prerequisites:** Repository PJM adoption and enough context to describe the
|
|
100
|
+
work. Like every PJM skill that writes files on this page, it refuses to
|
|
101
|
+
write until the repository has adopted PJM with `oat pjm init`. The skill
|
|
102
|
+
first runs `oat pjm doctor --json` and inspects `adoption.state`; only
|
|
103
|
+
`declared` or `inferred-legacy` permits writes. For `none` or
|
|
104
|
+
`partial-initialization` it stops and tells you to run `oat pjm init` (read
|
|
105
|
+
the [warning about rerunning it](#adoption-comes-first) first). Installed
|
|
106
|
+
tools alone do not establish adoption. No active OAT project is required.
|
|
107
|
+
|
|
108
|
+
**Example scenario:** A support incident exposed uncertainty about duplicate
|
|
109
|
+
records after retries. Capture an investigation with acceptance criteria
|
|
110
|
+
covering the write path, relevant failure cases, and an evidence-backed
|
|
111
|
+
recommendation, rather than creating an implementation project before the
|
|
112
|
+
problem is understood.
|
|
113
|
+
|
|
114
|
+
The skill collects the title, context, criteria, and optional triage fields,
|
|
115
|
+
then proposes a scope estimate for confirmation. The CLI creates the item
|
|
116
|
+
and managed index atomically. A collision requires a more specific title,
|
|
117
|
+
not overwriting an active or archived record. After creation, the agent
|
|
118
|
+
fills confirmed acceptance criteria while preserving generated frontmatter.
|
|
119
|
+
|
|
120
|
+
**Expected output:** A `BL-YYMMDD-slug` item under
|
|
121
|
+
`.oat/repo/pjm/backlog/items/`, a refreshed managed index, and any useful
|
|
122
|
+
curated-overview note. The summary includes the actual ID/path and confirmed
|
|
123
|
+
scope estimate. Creating the item records work to consider; it does not
|
|
124
|
+
start execution or publish an external issue.
|
|
125
|
+
|
|
126
|
+
**What it does without asking:** After you confirm the scope estimate, it
|
|
127
|
+
runs `oat backlog new`, which writes the item file and regenerates the
|
|
128
|
+
managed backlog index. It then fills in the acceptance criteria you
|
|
129
|
+
confirmed and may add a short note to the curated overview in
|
|
130
|
+
`.oat/repo/pjm/backlog/index.md`. Its workflow has no commit or push step
|
|
131
|
+
and sends nothing to an external tracker.
|
|
132
|
+
|
|
133
|
+
**Next step:** Prioritize it with [oat-pjm-review-backlog](#oat-pjm-review-backlog)
|
|
134
|
+
or explicitly start a suitable project. Follow the atomic close-out flow
|
|
135
|
+
above when the work reaches a terminal state.
|
|
136
|
+
|
|
137
|
+
## oat-pjm-review-backlog
|
|
138
|
+
|
|
139
|
+
**Invocation:** `/oat-pjm-review-backlog`, optionally with a backlog root and
|
|
140
|
+
`--roadmap=<path>` or `--output=<path>`. The default source is the file-backed
|
|
141
|
+
repository backlog. `--archive-dated` also saves a dated snapshot alongside
|
|
142
|
+
the living review.
|
|
143
|
+
|
|
144
|
+
**Prerequisites:** Adopted repository PJM, verified through
|
|
145
|
+
`oat pjm doctor --json` before writes, and accessible backlog items. A
|
|
146
|
+
roadmap is optional alignment evidence; an active OAT project is not
|
|
147
|
+
required. The skill stops and tells you to run `oat pjm init` if adoption
|
|
148
|
+
is absent or partial (see the [warning about rerunning it](#adoption-comes-first)).
|
|
149
|
+
|
|
150
|
+
**Example scenario:** Your team has time for one maintenance initiative, but
|
|
151
|
+
the backlog mixes isolated fixes with work blocked on shared infrastructure.
|
|
152
|
+
Review item value, effort, and dependencies against the roadmap, then
|
|
153
|
+
discuss a realistic kickoff stack rather than treating every high-priority
|
|
154
|
+
item as safe to run concurrently.
|
|
155
|
+
|
|
156
|
+
**Expected output:** A living review at
|
|
157
|
+
`.oat/repo/pjm/backlog/reviews/backlog-and-roadmap-review.md` unless overridden,
|
|
158
|
+
with ratings, dependency mapping, parallel lanes, roadmap alignment, and a
|
|
159
|
+
recommended sequence. Dated snapshots remain beside the living report.
|
|
160
|
+
References pair each backlog ID with a human-readable title so readers do
|
|
161
|
+
not need a separate board lookup.
|
|
162
|
+
|
|
163
|
+
Priority alignment and kickoff handoffs are optional collaborative steps.
|
|
164
|
+
They need operator context and an agreed kickoff stack; the review does not
|
|
165
|
+
silently choose capacity, lane count, or project starts. Any generated
|
|
166
|
+
handoff points back to the item and authoritative inputs rather than
|
|
167
|
+
replacing them. The execution view is written to
|
|
168
|
+
`.oat/repo/pjm/backlog/reviews/priority-alignment.md` and each handoff to
|
|
169
|
+
`.oat/repo/pjm/handoffs/<BL-id>.md`; handoffs for items dropped from the
|
|
170
|
+
kickoff stack are deleted with `git rm`.
|
|
171
|
+
|
|
172
|
+
**What it does without asking:** It writes the living review (and the dated
|
|
173
|
+
snapshot when you pass `--archive-dated`), creating the `reviews/` folder if
|
|
174
|
+
needed. Only after you accept the walkthrough and agree a kickoff stack does
|
|
175
|
+
it write or update `priority-alignment.md`, write or refresh handoff files,
|
|
176
|
+
and `git rm` handoffs for items that left the stack. It hands items to
|
|
177
|
+
`oat-repo-improve` only if you accept that offer, and it never generates
|
|
178
|
+
external plans itself.
|
|
179
|
+
|
|
180
|
+
**Next step:** Accept a priority walkthrough if you need an execution view,
|
|
181
|
+
or explicitly choose items for external-plan generation through
|
|
182
|
+
`oat-repo-improve`. A review recommendation is not implementation approval.
|
|
183
|
+
|
|
184
|
+
## oat-pjm-decision
|
|
185
|
+
|
|
186
|
+
**Invocation:** Ask, “Use oat-pjm-decision to record our choice to make import
|
|
187
|
+
retries idempotent, with its context and trade-offs.” This skill is for an
|
|
188
|
+
explicit request or confirmed capture, not automatic recording of every
|
|
189
|
+
routine choice.
|
|
190
|
+
|
|
191
|
+
**Prerequisites:** Repository PJM adoption verified with
|
|
192
|
+
`oat pjm doctor --json`, the decision scaffold, and meaningful context,
|
|
193
|
+
decision, and consequences. No active OAT project is required.
|
|
194
|
+
Review existing relevant decisions before finalizing a durable choice.
|
|
195
|
+
|
|
196
|
+
**Example scenario:** The team confirmed that a stable import identity must
|
|
197
|
+
span retries, accepting additional storage and cleanup work. Record why
|
|
198
|
+
this approach was chosen and what it enables or constrains so a future
|
|
199
|
+
maintainer does not reverse it based only on the extra implementation cost.
|
|
200
|
+
|
|
201
|
+
**Expected output:** A CLI-created `DR-YYMMDD-slug` record under
|
|
202
|
+
`.oat/repo/reference/decisions/`, completed Context, Decision, and
|
|
203
|
+
Consequences sections, and a generated index entry. The default status is
|
|
204
|
+
`proposed`; select `accepted` only when that is the actual decision state.
|
|
205
|
+
Preserve generated identity and use the CLI to refresh indexed metadata,
|
|
206
|
+
never hand-editing the managed index or replacing a collision.
|
|
207
|
+
|
|
208
|
+
**What it does without asking:** It runs `oat decision new`, which writes
|
|
209
|
+
the record and regenerates the managed decision index, then fills in the
|
|
210
|
+
Context, Decision, and Consequences sections and reruns
|
|
211
|
+
`oat decision regenerate-index` if it changed the status or title. Its
|
|
212
|
+
workflow has no commit or push step. If the decision index markers are
|
|
213
|
+
missing, it stops and tells you to repair the repository with
|
|
214
|
+
`oat pjm init`; that is a rerun, so read the
|
|
215
|
+
[warning about rerunning it](#adoption-comes-first) first.
|
|
216
|
+
|
|
217
|
+
**Next step:** Review the record and link relevant work to it. If later
|
|
218
|
+
evidence changes the choice, preserve history through the appropriate
|
|
219
|
+
decision status or successor record rather than silently rewriting the
|
|
220
|
+
original rationale.
|
|
221
|
+
|
|
222
|
+
## oat-pjm-remote
|
|
223
|
+
|
|
224
|
+
This skill connects OAT records to a remote tracker such as GitHub, Linear,
|
|
225
|
+
or Jira. A binding is OAT's stored link between one local backlog item or
|
|
226
|
+
project and one remote issue. Intake reads a remote issue into a local
|
|
227
|
+
backlog item and creates a binding. Publish creates or updates the remote
|
|
228
|
+
issue from a local record.
|
|
229
|
+
|
|
230
|
+
**Invocation:** Ask, “Use oat-pjm-remote to refresh this repository's existing
|
|
231
|
+
remote binding from the configured tracker.” Name the intended operation and
|
|
232
|
+
exact remote context; do not assume local backlog capture authorizes
|
|
233
|
+
publishing it remotely. The skill supports these operations:
|
|
234
|
+
|
|
235
|
+
- `intake` reads one remote issue into a local backlog item
|
|
236
|
+
(`--to-backlog <id>`) and creates the binding.
|
|
237
|
+
- `publish` creates or updates the remote issue for one selected binding,
|
|
238
|
+
backlog item, or project.
|
|
239
|
+
- `refresh` updates OAT's saved copy of a binding without writing remotely.
|
|
240
|
+
- `reconcile` compares local, remote, and last-known changes before
|
|
241
|
+
proposing any write.
|
|
242
|
+
- `operation continue` submits the result of a pending step so the same
|
|
243
|
+
operation can finish.
|
|
244
|
+
|
|
245
|
+
Run these through the skill rather than as one-line shell commands. Each
|
|
246
|
+
`oat pjm remote` command expects a host agent (the AI coding tool running
|
|
247
|
+
the skill) to supply capability evidence on standard input: a short,
|
|
248
|
+
sanitized description of which connector or provider CLI it can use for
|
|
249
|
+
that tracker. The skill gathers that evidence for you.
|
|
250
|
+
|
|
251
|
+
**Prerequisites:** PJM adoption verified by `oat pjm doctor --json` (the
|
|
252
|
+
skill stops and points you to `oat pjm init` otherwise; rerunning init
|
|
253
|
+
deletes `pjm.remote`, as the [warning above](#adoption-comes-first)
|
|
254
|
+
explains), applicable local
|
|
255
|
+
policy, and an available host capability matching the provider, operation,
|
|
256
|
+
and exact account, workspace, site, or repository. No active OAT project is
|
|
257
|
+
required. Remote mutation authority defaults to `read-only`, so `publish`
|
|
258
|
+
and every other remote write are refused until your repository policy
|
|
259
|
+
grants a higher authority (`user-approved`, `user-authorized`, or
|
|
260
|
+
`autonomous`). Mutations also need the current caller-owned authority
|
|
261
|
+
evidence (a record of who authorized this write) that the CLI asks for. The
|
|
262
|
+
skill looks for granted connectors first; if none matches, it can inspect
|
|
263
|
+
an already configured provider CLI with live help before the first attempt.
|
|
264
|
+
If neither surface qualifies, it stops rather than installing tools,
|
|
265
|
+
requesting credentials, or improvising a route.
|
|
266
|
+
|
|
267
|
+
The way a binding was created controls which fields can move. A binding
|
|
268
|
+
created by intake only pulls the title, description, and priority into OAT.
|
|
269
|
+
A binding created by publish lets those fields flow in both directions. See
|
|
270
|
+
[Remote Project Management](remote-project-management.md) for policy,
|
|
271
|
+
previews, approvals, and the remaining commands.
|
|
272
|
+
|
|
273
|
+
**Example scenario:** A tracker item changed after its OAT binding was last
|
|
274
|
+
refreshed. Request a refresh of that binding, preserving the local policy
|
|
275
|
+
boundary. A successful host read or visible tracker update is only evidence
|
|
276
|
+
for the CLI to verify, not an authoritative success verdict.
|
|
277
|
+
|
|
278
|
+
The host discovers live capability, executes only the exact semantic action
|
|
279
|
+
emitted by the OAT CLI (the provider-neutral step the CLI asks it to perform,
|
|
280
|
+
such as reading or updating one issue) at most once, and submits one bounded
|
|
281
|
+
sanitized observation (a short summary of the result with credentials and
|
|
282
|
+
raw provider responses removed). Continue only when the same durable
|
|
283
|
+
operation emits another action; do not broaden a field mask (the list of
|
|
284
|
+
fields the action may touch) or switch execution surfaces mid-attempt.
|
|
285
|
+
Discussion reads remain bounded read-only evidence, not comment
|
|
286
|
+
synchronization or an invitation to persist raw threads.
|
|
287
|
+
|
|
288
|
+
**Expected output:** The CLI's terminal operation envelope and verified
|
|
289
|
+
binding state, or an explicit pending/blocked outcome. Only `ok` after
|
|
290
|
+
authoritative read-back establishes remote success. Durable evidence excludes
|
|
291
|
+
credentials, native requests/responses, tool catalogs, and raw provider
|
|
292
|
+
payloads.
|
|
293
|
+
|
|
294
|
+
**What it does without asking:** It runs the adoption preflight
|
|
295
|
+
(`oat pjm doctor --json`), inspects the connectors your host has granted,
|
|
296
|
+
runs the operation you asked for, and executes each action the CLI emits
|
|
297
|
+
against the tracker at most once. The CLI saves operation state and
|
|
298
|
+
snapshots under `.git/oat/pjm-remote/`, and saves backlog bindings under
|
|
299
|
+
`.oat/repo/pjm/remote/bindings/`, which is not gitignored. When the target
|
|
300
|
+
backlog item does not exist yet, intake creates it from the remote title,
|
|
301
|
+
description, and priority. A remote write
|
|
302
|
+
happens only when your policy grants mutation authority and any preview or
|
|
303
|
+
approval the CLI requires has been given; under the default `read-only`
|
|
304
|
+
authority, the CLI refuses it. See the storage notes on the
|
|
305
|
+
[Remote Project Management](remote-project-management.md#storage-and-worktrees)
|
|
306
|
+
page before committing.
|
|
307
|
+
|
|
308
|
+
**Next step:** Inspect the CLI verdict and address a stated policy, authority,
|
|
309
|
+
or capability blocker before another action. Make any requested local
|
|
310
|
+
distillation a separately scoped edit, not a hidden remote mutation.
|
|
311
|
+
|
|
312
|
+
## oat-pjm-update-repo-reference
|
|
313
|
+
|
|
314
|
+
**Invocation:** Ask, “Use oat-pjm-update-repo-reference to reconcile the retry
|
|
315
|
+
work's shipped outcome, deferred follow-ups, and decision history.” Identify
|
|
316
|
+
the actual changed capability and the evidence to use.
|
|
317
|
+
|
|
318
|
+
**Prerequisites:** Repository PJM adoption verified with
|
|
319
|
+
`oat pjm doctor --json`, canonical backlog/reference scaffolds, and evidence
|
|
320
|
+
of what changed. It uses recent project artifacts when they exist, but you
|
|
321
|
+
do not need an active OAT project to run it.
|
|
322
|
+
|
|
323
|
+
**Example scenario:** Retry handling shipped, but an operator dashboard was
|
|
324
|
+
deferred and the roadmap still lists the whole effort as upcoming. Reconcile
|
|
325
|
+
the shipped portion, capture the deferred work, and preserve the decision
|
|
326
|
+
behind the retry model without declaring the dashboard complete.
|
|
327
|
+
|
|
328
|
+
**Expected output:** Applicable updates to current-state, Now/Next/Later
|
|
329
|
+
roadmap guidance, curated backlog context, item records, completed history,
|
|
330
|
+
and durable decisions. Completed items use `oat backlog archive` for atomic
|
|
331
|
+
status/history/move/index close-out; decisions use the canonical decision
|
|
332
|
+
commands. Managed indexes are regenerated, not hand-edited. The final
|
|
333
|
+
sanity check distinguishes valid active paths from retired references.
|
|
334
|
+
|
|
335
|
+
**What it does without asking:** It edits `current-state.md`, `roadmap.md`,
|
|
336
|
+
the curated overview, and backlog item files under `.oat/repo/pjm/` as it
|
|
337
|
+
judges applicable, with no separate approval step. It runs
|
|
338
|
+
`oat backlog archive` for completed items, which moves each item file into
|
|
339
|
+
`archived/` (with `git mv` inside a Git work tree), and it creates decision
|
|
340
|
+
records with `oat decision new`. Its workflow has no commit or push step,
|
|
341
|
+
so review the working-tree diff afterwards. If the backlog index markers
|
|
342
|
+
are missing, it stops and tells you to repair the repository with
|
|
343
|
+
`oat pjm init`; that is a rerun, so read the
|
|
344
|
+
[warning about rerunning it](#adoption-comes-first) first.
|
|
345
|
+
|
|
346
|
+
**Next step:** Review the changes against the implementation evidence and
|
|
347
|
+
rerun diagnostics for lifecycle consistency. Start deferred work separately;
|
|
348
|
+
reference synchronization must not turn a follow-up into a shipped claim.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Backlog and planning
|
|
3
|
+
description: 'Backlog lifecycle and provider-neutral remote project planning.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Backlog and planning
|
|
7
|
+
|
|
8
|
+
Use these guides for file-backed backlog lifecycle and remote project-management bindings.
|
|
9
|
+
|
|
10
|
+
## Contents
|
|
11
|
+
|
|
12
|
+
- [Remote Project Management](remote-project-management.md) - Provider-neutral remote bindings, policy, previews, approvals, storage, and recovery.
|
|
13
|
+
- [Backlog Lifecycle](backlog-lifecycle.md) - Backlog item states, atomic close-out with `oat backlog archive`, and lifecycle drift detection in `oat pjm doctor`.
|