@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,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`.
@@ -0,0 +1,4 @@
1
+ {
2
+ "title": "Backlog and planning",
3
+ "pages": ["remote-project-management", "backlog-lifecycle"]
4
+ }