@open-agent-toolkit/cli 0.3.16 → 0.3.17
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/assets/agents/oat-phase-implementer.md +26 -6
- package/assets/agents/oat-reviewer.md +51 -1
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/contributing/documentation.md +4 -0
- package/assets/docs/contributing/skills.md +3 -1
- package/assets/docs/getting-started/bootstrap.md +1 -1
- package/assets/docs/getting-started/index.md +0 -4
- package/assets/docs/getting-started/tool-packs.md +0 -7
- package/assets/docs/reference/cli-reference.md +42 -1
- package/assets/docs/reference/config-and-local-state.md +11 -2
- package/assets/docs/reference/project-artifacts.md +43 -8
- package/assets/docs/skills/repo-improve.md +9 -7
- package/assets/docs/workflows/advanced/autonomy.md +40 -0
- package/assets/docs/workflows/backlog-and-planning/backlog-lifecycle.md +25 -24
- package/assets/docs/workflows/backlog-and-planning/remote-project-management.md +0 -7
- package/assets/docs/workflows/ideas/lifecycle.md +2 -7
- package/assets/docs/workflows/projects/reviews/review-flavors.md +8 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-agent-instructions-apply/SKILL.md +14 -4
- package/assets/skills/oat-brainstorm/SKILL.md +17 -13
- package/assets/skills/oat-docs-apply/SKILL.md +13 -3
- package/assets/skills/oat-doctor/SKILL.md +11 -1
- package/assets/skills/oat-explainer-kit/SKILL.md +1 -1
- package/assets/skills/oat-explainer-kit/references/lifecycle-contract.md +6 -3
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +2 -2
- package/assets/skills/oat-pjm-update-repo-reference/SKILL.md +28 -3
- package/assets/skills/oat-project-autonomous/SKILL.md +60 -5
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +44 -6
- package/assets/skills/oat-project-capture/SKILL.md +7 -3
- package/assets/skills/oat-project-complete/SKILL.md +39 -34
- package/assets/skills/oat-project-complete/scripts/execute-synced-archive-entry.mjs +106 -28
- package/assets/skills/oat-project-complete/scripts/parse-synced-archive-resume-fields.mjs +30 -3
- package/assets/skills/oat-project-design/SKILL.md +12 -9
- package/assets/skills/oat-project-discover/SKILL.md +8 -4
- package/assets/skills/oat-project-document/SKILL.md +14 -5
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +44 -6
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +6 -6
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +44 -6
- package/assets/skills/oat-project-implement/references/phase-execution.md +20 -6
- package/assets/skills/oat-project-import-plan/SKILL.md +20 -6
- package/assets/skills/oat-project-lite/SKILL.md +7 -5
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +44 -6
- package/assets/skills/oat-project-new/SKILL.md +6 -2
- package/assets/skills/oat-project-plan/SKILL.md +14 -6
- package/assets/skills/oat-project-pr-final/SKILL.md +1 -1
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +44 -6
- package/assets/skills/oat-project-progress/SKILL.md +13 -1
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +7 -3
- package/assets/skills/oat-project-quick-start/SKILL.md +17 -12
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +44 -6
- package/assets/skills/oat-project-reconcile/SKILL.md +8 -4
- package/assets/skills/oat-project-retro/SKILL.md +1 -1
- package/assets/skills/oat-project-retro/references/apply-procedure.md +6 -6
- package/assets/skills/oat-project-retro-file/SKILL.md +7 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +23 -4
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +19 -1
- package/assets/skills/oat-project-review-receive/SKILL.md +37 -12
- package/assets/skills/oat-project-review-receive-remote/SKILL.md +7 -3
- package/assets/skills/oat-project-revise/SKILL.md +13 -5
- package/assets/skills/oat-project-spec/SKILL.md +8 -4
- package/assets/skills/oat-project-summary/SKILL.md +11 -7
- package/assets/skills/oat-repo-knowledge-index/SKILL.md +54 -20
- package/assets/skills/oat-repo-knowledge-index/scripts/refresh-owned.mjs +118 -0
- package/assets/skills/oat-review-provide/SKILL.md +7 -3
- package/assets/skills/oat-review-receive-remote/SKILL.md +14 -4
- package/assets/skills/oat-wave-execute/SKILL.md +24 -11
- package/assets/skills/oat-wave-execute/assets/wrapper-plan-template.md +16 -2
- package/assets/skills/oat-worktree-bootstrap-auto/SKILL.md +45 -17
- package/assets/templates/pjm-agents.md +38 -8
- package/assets/templates/repo-agents.md +5 -0
- package/assets/templates/repo-readme.md +5 -0
- package/dist/commands/backlog/archive.d.ts +3 -0
- package/dist/commands/backlog/archive.d.ts.map +1 -1
- package/dist/commands/backlog/archive.js +63 -26
- package/dist/commands/backlog/index.d.ts.map +1 -1
- package/dist/commands/backlog/index.js +3 -0
- package/dist/commands/backlog/rewrite-references.d.ts +5 -0
- package/dist/commands/backlog/rewrite-references.d.ts.map +1 -1
- package/dist/commands/backlog/rewrite-references.js +39 -1
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +1 -0
- package/dist/commands/internal/commit-paths.d.ts +3 -0
- package/dist/commands/internal/commit-paths.d.ts.map +1 -0
- package/dist/commands/internal/commit-paths.js +31 -0
- package/dist/commands/internal/index.d.ts.map +1 -1
- package/dist/commands/internal/index.js +2 -0
- package/dist/commands/pjm/init.d.ts.map +1 -1
- package/dist/commands/pjm/init.js +37 -8
- package/dist/commands/project/archive/archive-utils.d.ts +6 -3
- package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
- package/dist/commands/project/archive/archive-utils.js +510 -104
- package/dist/commands/project/archive/push-runner.d.ts.map +1 -1
- package/dist/commands/project/archive/push-runner.js +1 -0
- package/dist/commands/project/log/append.d.ts +2 -3
- package/dist/commands/project/log/append.d.ts.map +1 -1
- package/dist/commands/project/log/append.js +55 -101
- package/dist/commands/project/migrate/index.d.ts +1 -2
- package/dist/commands/project/migrate/index.d.ts.map +1 -1
- package/dist/commands/project/migrate/index.js +8 -2
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +4 -4
- package/dist/commands/project/promote/promote.d.ts +8 -0
- package/dist/commands/project/promote/promote.d.ts.map +1 -1
- package/dist/commands/project/promote/promote.js +37 -6
- package/dist/commands/project/status.d.ts.map +1 -1
- package/dist/commands/project/status.js +3 -0
- package/dist/commands/project/sync/ref-sync.d.ts +12 -1
- package/dist/commands/project/sync/ref-sync.d.ts.map +1 -1
- package/dist/commands/project/sync/ref-sync.js +347 -23
- package/dist/commands/shared/exact-path-commit.d.ts +32 -0
- package/dist/commands/shared/exact-path-commit.d.ts.map +1 -0
- package/dist/commands/shared/exact-path-commit.js +691 -0
- package/dist/validation/skills.d.ts.map +1 -1
- package/dist/validation/skills.js +138 -11
- package/package.json +3 -2
|
@@ -36,6 +36,14 @@ for the deep review request/receive mechanics.
|
|
|
36
36
|
`oat-project-dispatch-subagents` lifecycle-role table, and the OAT design
|
|
37
37
|
decision that defined these four flavors.
|
|
38
38
|
|
|
39
|
+
Reviews of changed trust or input-limit boundaries require focused probes for
|
|
40
|
+
credible failure modes. Record the failure and accepted controls, their source,
|
|
41
|
+
and any concrete execution limitations. Independently verified implementer
|
|
42
|
+
evidence can satisfy the obligation when the reviewer cannot run the probe;
|
|
43
|
+
unsupported consequential guarantees remain blocking findings. Keep probes
|
|
44
|
+
proportional to the changed boundary and preserve review independence and
|
|
45
|
+
containment.
|
|
46
|
+
|
|
39
47
|
## Flow map
|
|
40
48
|
|
|
41
49
|
=== "Diagram"
|
|
@@ -5,13 +5,17 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash(git:*), Bash(gh:*), Glob, Grep, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.7.
|
|
8
|
+
version: 1.7.4
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Agent Instructions Apply
|
|
12
12
|
|
|
13
13
|
Generate or update agent instruction files based on an analysis artifact, with user review and PR-based workflow.
|
|
14
14
|
|
|
15
|
+
## Hook-safe exact-path commits
|
|
16
|
+
|
|
17
|
+
Before a parent-branch commit, verify `oat internal commit-paths --help` succeeds. If unavailable, stop and update the OAT CLI; never fall back to a staged-index or pathspec-only commit. Set `COMMIT_IDENTITY` to a unique operation/artifact identity before the first attempt and retain it for every retry; use a new identity for a new operation. Pass only the exact produced file list, including tracked removals and both names of a rename. A blocked/failed result stops the workflow; retain its receipt and follow its diagnostics. Hooks remain enabled. Synced project artifacts continue through `oat project push`.
|
|
18
|
+
|
|
15
19
|
## Prerequisites
|
|
16
20
|
|
|
17
21
|
- Git repository with a recent analysis artifact in `.oat/repo/analysis/`.
|
|
@@ -317,6 +321,12 @@ If branch creation fails (e.g., uncommitted changes), ask the user to resolve an
|
|
|
317
321
|
|
|
318
322
|
### Step 5: Generate/Update Instruction Files
|
|
319
323
|
|
|
324
|
+
Before the first approved write, initialize `OWNED_OUTPUT_FILES=()`. Append
|
|
325
|
+
each exact successfully created, modified or removed path at that write,
|
|
326
|
+
including both names of a rename and any generated navigation/index file this
|
|
327
|
+
step actually changes. Retain the complete list through verification and commit
|
|
328
|
+
retries; do not substitute a directory or staged-index diff.
|
|
329
|
+
|
|
320
330
|
For each approved recommendation, in the order from Step 2:
|
|
321
331
|
|
|
322
332
|
- When the companion bundle exists, load the approved recommendation's manifest entry and matching pack before
|
|
@@ -382,11 +392,11 @@ not from repo-root `.agents/docs/`.
|
|
|
382
392
|
**Stage and commit:**
|
|
383
393
|
|
|
384
394
|
```bash
|
|
385
|
-
|
|
386
|
-
|
|
395
|
+
OWNED_COMMIT_PATHS=("${OWNED_OUTPUT_FILES[@]}")
|
|
396
|
+
oat internal commit-paths --identity "${COMMIT_IDENTITY:?set once and retain for retries}:oat-agent-instructions-apply:1" --message "chore: update agent instruction files
|
|
387
397
|
|
|
388
398
|
Generated by oat-agent-instructions-apply from analysis artifact.
|
|
389
|
-
Files: {count} created, {count} updated."
|
|
399
|
+
Files: {count} created, {count} updated." -- "${OWNED_COMMIT_PATHS[@]}" || exit 1
|
|
390
400
|
```
|
|
391
401
|
|
|
392
402
|
**Offer to open a PR:**
|
|
@@ -5,13 +5,17 @@ disable-model-invocation: false
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.3.
|
|
8
|
+
version: 1.3.8
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Brainstorm
|
|
12
12
|
|
|
13
13
|
Project-independent brainstorming dispatcher. Owns the explicit activation gate (see `## Activation Contract`), the Superpowers-style conversational cadence, the visual-need assessment and conditional visual-companion offer, the destination identification, and the per-destination handoff to existing OAT skills.
|
|
14
14
|
|
|
15
|
+
## Hook-safe exact-path commits
|
|
16
|
+
|
|
17
|
+
Before a parent-branch commit, verify `oat internal commit-paths --help` succeeds. If unavailable, stop and update the OAT CLI; never fall back to a staged-index or pathspec-only commit. Set `COMMIT_IDENTITY` to a unique operation/artifact identity before the first attempt and retain it for every retry; use a new identity for a new operation. Pass only the exact produced file list, including tracked removals and both names of a rename. A blocked/failed result stops the workflow; retain its receipt and follow its diagnostics. Hooks remain enabled. Synced project artifacts continue through `oat project push`.
|
|
18
|
+
|
|
15
19
|
## Activation Contract
|
|
16
20
|
|
|
17
21
|
Brainstorm-quality response (options, tradeoffs, open questions, no premature implementation, no destination guess) is the **default** for any exploratory phrasing without a named destination. Mode assertion + banner is **reserved** for explicit hard-activation triggers or user confirmation. The banner is a workflow commitment marker, not a quality marker.
|
|
@@ -662,8 +666,8 @@ beside another dirty project file must take Step 4.
|
|
|
662
666
|
FOLD_BACK_PUSH=$(oat project push "$ACTIVE_PROJECT" --message "chore(oat): integrate brainstorm into <artifact-basename> for <project-name>" --json) || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
663
667
|
FOLD_BACK_COMMIT_SHA=$(parse_synced_push_receipt "$FOLD_BACK_PUSH") || { printf '%s\n' "$FOLD_BACK_PUSH" >&2; echo "Recovery: run oat project pull \"$ACTIVE_PROJECT\", resolve conflicts, then retry this push." >&2; exit 1; }
|
|
664
668
|
else
|
|
665
|
-
|
|
666
|
-
|
|
669
|
+
OWNED_COMMIT_PATHS=("$ARTIFACT_PATH")
|
|
670
|
+
oat internal commit-paths --identity "${COMMIT_IDENTITY:?set once and retain for retries}:oat-brainstorm:1" --message "chore(oat): integrate brainstorm into <artifact-basename> for <project-name>" -- "${OWNED_COMMIT_PATHS[@]}" || exit 1
|
|
667
671
|
FOLD_BACK_COMMIT_SHA=$(git rev-parse HEAD)
|
|
668
672
|
fi
|
|
669
673
|
```
|
|
@@ -690,8 +694,8 @@ failures remain fail-closed.
|
|
|
690
694
|
CURRENT_ARTIFACT_PUSH=$(oat project push "$ACTIVE_PROJECT" --message "$CURRENT_ARTIFACT_SUBJECT" --json) || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
691
695
|
CURRENT_ARTIFACT_COMMIT_SHA=$(parse_synced_push_receipt "$CURRENT_ARTIFACT_PUSH") || { printf '%s\n' "$CURRENT_ARTIFACT_PUSH" >&2; echo "Recovery: run oat project pull \"$ACTIVE_PROJECT\", resolve conflicts, then retry this push." >&2; exit 1; }
|
|
692
696
|
else
|
|
693
|
-
|
|
694
|
-
|
|
697
|
+
OWNED_COMMIT_PATHS=("$ARTIFACT_PATH")
|
|
698
|
+
oat internal commit-paths --identity "${COMMIT_IDENTITY:?set once and retain for retries}:oat-brainstorm:2" --message "$CURRENT_ARTIFACT_SUBJECT" -- "${OWNED_COMMIT_PATHS[@]}" || exit 1
|
|
695
699
|
CURRENT_ARTIFACT_COMMIT_SHA=$(git rev-parse HEAD)
|
|
696
700
|
fi
|
|
697
701
|
```
|
|
@@ -705,8 +709,8 @@ failures remain fail-closed.
|
|
|
705
709
|
FOLD_BACK_PUSH=$(oat project push "$ACTIVE_PROJECT" --message "chore(oat): integrate brainstorm into <artifact-basename> for <project-name>" --json) || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
706
710
|
FOLD_BACK_COMMIT_SHA=$(parse_synced_push_receipt "$FOLD_BACK_PUSH") || { printf '%s\n' "$FOLD_BACK_PUSH" >&2; echo "Recovery: run oat project pull \"$ACTIVE_PROJECT\", resolve conflicts, then retry this push." >&2; exit 1; }
|
|
707
711
|
else
|
|
708
|
-
|
|
709
|
-
|
|
712
|
+
OWNED_COMMIT_PATHS=("$ARTIFACT_PATH")
|
|
713
|
+
oat internal commit-paths --identity "${COMMIT_IDENTITY:?set once and retain for retries}:oat-brainstorm:3" --message "chore(oat): integrate brainstorm into <artifact-basename> for <project-name>" -- "${OWNED_COMMIT_PATHS[@]}" || exit 1
|
|
710
714
|
FOLD_BACK_COMMIT_SHA=$(git rev-parse HEAD)
|
|
711
715
|
fi
|
|
712
716
|
```
|
|
@@ -722,8 +726,8 @@ failures remain fail-closed.
|
|
|
722
726
|
MIXED_FOLD_BACK_PUSH=$(oat project push "$ACTIVE_PROJECT" --message "chore(oat): integrate brainstorm + prior edits into <artifact-basename> for <project-name>" --json) || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
723
727
|
FOLD_BACK_COMMIT_SHA=$(parse_synced_push_receipt "$MIXED_FOLD_BACK_PUSH") || { printf '%s\n' "$MIXED_FOLD_BACK_PUSH" >&2; echo "Recovery: run oat project pull \"$ACTIVE_PROJECT\", resolve conflicts, then retry this push." >&2; exit 1; }
|
|
724
728
|
else
|
|
725
|
-
|
|
726
|
-
|
|
729
|
+
OWNED_COMMIT_PATHS=("$ARTIFACT_PATH")
|
|
730
|
+
oat internal commit-paths --identity "${COMMIT_IDENTITY:?set once and retain for retries}:oat-brainstorm:4" --message "chore(oat): integrate brainstorm + prior edits into <artifact-basename> for <project-name>" -- "${OWNED_COMMIT_PATHS[@]}" || exit 1
|
|
727
731
|
FOLD_BACK_COMMIT_SHA=$(git rev-parse HEAD)
|
|
728
732
|
fi
|
|
729
733
|
```
|
|
@@ -773,7 +777,7 @@ The filename was confirmed at step 8 (default `YYYY-MM-DD-<topic>.md`). Resolve
|
|
|
773
777
|
|
|
774
778
|
If `<ACTIVE_PROJECT>/brainstorming/` does not exist, create it (`mkdir -p`). The `brainstorming/` subdirectory is parallel to existing `pr/` and `reviews/` subdirectories — explicit purpose, naturally discoverable.
|
|
775
779
|
|
|
776
|
-
Render `${SKILL_DIR}/templates/brainstorm-doc.md` (resolve `${SKILL_DIR}` per the rule in step 3) with the synthesized payload (same shape as the doc-to-path destination) and write to
|
|
780
|
+
Set `REFERENCE_PATH` to the exact resolved file path before writing. Render `${SKILL_DIR}/templates/brainstorm-doc.md` (resolve `${SKILL_DIR}` per the rule in step 3) with the synthesized payload (same shape as the doc-to-path destination) and write to `REFERENCE_PATH`. Retain that produced filename for commit/retry.
|
|
777
781
|
|
|
778
782
|
After writing, persist the file with the same fail-closed scope guard:
|
|
779
783
|
|
|
@@ -784,13 +788,13 @@ if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
|
784
788
|
REFERENCE_PUSH=$(oat project push "$ACTIVE_PROJECT" --message "chore(oat): capture brainstorming reference for <project-name>" --json) || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
785
789
|
REFERENCE_COMMIT_SHA=$(parse_synced_push_receipt "$REFERENCE_PUSH") || { printf '%s\n' "$REFERENCE_PUSH" >&2; echo "Recovery: run oat project pull \"$ACTIVE_PROJECT\", resolve conflicts, then retry this push." >&2; exit 1; }
|
|
786
790
|
else
|
|
787
|
-
|
|
788
|
-
|
|
791
|
+
OWNED_COMMIT_PATHS=("$REFERENCE_PATH")
|
|
792
|
+
oat internal commit-paths --identity "${COMMIT_IDENTITY:?set once and retain for retries}:oat-brainstorm:5" --message "chore(oat): capture brainstorming reference for <project-name>" -- "${OWNED_COMMIT_PATHS[@]}" || exit 1
|
|
789
793
|
REFERENCE_COMMIT_SHA=$(git rev-parse HEAD)
|
|
790
794
|
fi
|
|
791
795
|
```
|
|
792
796
|
|
|
793
|
-
For shared/local scope,
|
|
797
|
+
For shared/local scope, commit only the exact produced path through `oat internal commit-paths` with the retained operation identity, stop on a nonzero result, then capture `git rev-parse --short HEAD`. For synced scope, use the validated push receipt SHA and never stage the artifact on the parent branch. Report the resulting SHA alongside the absolute path written, then end mode assertion.
|
|
794
798
|
|
|
795
799
|
For synced projects, the preceding short-hash sentence is superseded by the
|
|
796
800
|
full `REFERENCE_COMMIT_SHA` returned from `oat project push --json`; no parent
|
|
@@ -5,13 +5,17 @@ disable-model-invocation: true
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash(git:*), Bash(gh:*), Glob, Grep, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: '1.4.
|
|
8
|
+
version: '1.4.3'
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Docs Apply
|
|
12
12
|
|
|
13
13
|
Generate or update documentation files from a docs analysis artifact, with explicit approval and branch-based workflow.
|
|
14
14
|
|
|
15
|
+
## Hook-safe exact-path commits
|
|
16
|
+
|
|
17
|
+
Before a parent-branch commit, verify `oat internal commit-paths --help` succeeds. If unavailable, stop and update the OAT CLI; never fall back to a staged-index or pathspec-only commit. Set `COMMIT_IDENTITY` to a unique operation/artifact identity before the first attempt and retain it for every retry; use a new identity for a new operation. Pass only the exact produced file list, including tracked removals and both names of a rename. A blocked/failed result stops the workflow; retain its receipt and follow its diagnostics. Hooks remain enabled. Synced project artifacts continue through `oat project push`.
|
|
18
|
+
|
|
15
19
|
## Prerequisites
|
|
16
20
|
|
|
17
21
|
- A recent docs analysis artifact in `.oat/repo/analysis/`.
|
|
@@ -196,6 +200,12 @@ If branch creation fails because of unrelated local changes, ask the user to res
|
|
|
196
200
|
|
|
197
201
|
### Step 4: Apply Approved Changes
|
|
198
202
|
|
|
203
|
+
Before the first approved write, initialize `OWNED_OUTPUT_FILES=()`. Append
|
|
204
|
+
each exact successfully created, modified or removed path at that write,
|
|
205
|
+
including both names of a rename and any generated navigation/index file this
|
|
206
|
+
step actually changes. Retain the complete list through verification and commit
|
|
207
|
+
retries; do not substitute a directory or staged-index diff.
|
|
208
|
+
|
|
199
209
|
For each approved recommendation:
|
|
200
210
|
|
|
201
211
|
1. Read only the affected docs files and the evidence sources cited by the artifact.
|
|
@@ -245,8 +255,8 @@ If no docs app exists yet, use file-level verification and confirm the structura
|
|
|
245
255
|
Commit the approved changes:
|
|
246
256
|
|
|
247
257
|
```bash
|
|
248
|
-
|
|
249
|
-
|
|
258
|
+
OWNED_COMMIT_PATHS=("${OWNED_OUTPUT_FILES[@]}")
|
|
259
|
+
oat internal commit-paths --identity "${COMMIT_IDENTITY:?set once and retain for retries}:oat-docs-apply:1" --message "docs: apply approved docs recommendations" -- "${OWNED_COMMIT_PATHS[@]}" || exit 1
|
|
250
260
|
```
|
|
251
261
|
|
|
252
262
|
**Offer to open a PR:**
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: true
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Bash, Glob, Grep, AskUserQuestion
|
|
8
8
|
metadata:
|
|
9
|
-
version: 2.0.
|
|
9
|
+
version: 2.0.4
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# OAT Doctor
|
|
@@ -223,6 +223,16 @@ State the adoption state (`declared`, `inferred-legacy`, `partial-initialization
|
|
|
223
223
|
| `pjm:remote_schema`, `pjm:remote_binding_ids`, `pjm:remote_metadata_state`, `pjm:remote_storage_content`, `pjm:remote_policy`, `pjm:remote_concurrent_intents`, `pjm:remote_operations`, `pjm:remote_retention`, `pjm:remote_host_capability` | emitted only when a remote binding is adopted: `oat-pjm-remote` (reconcile or refresh) and `workflows/backlog-and-planning/remote-project-management.md` |
|
|
224
224
|
| any other `pjm:*` name | `info` with the check's message; no fix path is invented |
|
|
225
225
|
|
|
226
|
+
When applying a backlog close-out fix, use `oat backlog archive <id> --summary
|
|
227
|
+
"outcome" --json` (or the agreed `--wont-do` outcome). Capture its complete
|
|
228
|
+
`affectedPaths`, append only an owned handoff's filesystem deletion, format
|
|
229
|
+
existing affected text with the repository command, and commit the exact paths
|
|
230
|
+
via `oat internal commit-paths` with a unique retained identity and enabled
|
|
231
|
+
hooks. Include tracked old/new item names, ledger/index and rewritten
|
|
232
|
+
references. Verify helper availability and stop on an unavailable or
|
|
233
|
+
blocked/failed helper; preserve unrelated staged/unstaged work. Follow the
|
|
234
|
+
repository's PJM Backlog Lifecycle; do not stage only the missing old path.
|
|
235
|
+
|
|
226
236
|
#### Agent instructions dive
|
|
227
237
|
|
|
228
238
|
Explain the sync strategy in use (`oat instructions validate --json` `.strategy`: `none`, the default, keeps no CLAUDE.md because Claude Code reads AGENTS.md itself; `pointer`, `symlink`, and `copy` keep a shim beside each AGENTS.md) and each non-`ok` entry and leftover-CLAUDE.md warning with its path. Explain each missing heading: what the CLI writes there and why an agent needs it (`getting-started/bootstrap.md` for `## Tool Packs`; `workflows/backlog-and-planning/backlog-lifecycle.md` § Adoption comes first for the PJM sections). Offer `oat instructions sync`, `oat tools guidance` (read-only: prints the `OAT tools` block to add), or `oat pjm init` (appends absent PJM blocks) as the finding names; for wording and coverage beyond presence, hand off to `oat-agent-instructions-analyze` then `oat-agent-instructions-apply`.
|
|
@@ -126,9 +126,12 @@ roll back an approved plan.
|
|
|
126
126
|
|
|
127
127
|
At project completion, pass only a selected satisfied `project-recap` run to
|
|
128
128
|
`oat project archive --project-recap-run`. Consume
|
|
129
|
-
`projectRecapExport.sourceRunRoot`, `
|
|
130
|
-
`
|
|
131
|
-
|
|
129
|
+
`projectRecapExport.sourceRunRoot`, `exportRoot`, `runId`,
|
|
130
|
+
`page.sourceRelativePath`, `page.originalSha256`, `page.exportedSha256`, and
|
|
131
|
+
`verifiedArtifactCount` from the archive JSON response. Do not infer the dated
|
|
132
|
+
export path: `exportRoot` is one tracked HTML page. The complete original run,
|
|
133
|
+
manifest, source, and QA evidence remain in the archived project. Persisted
|
|
134
|
+
legacy package receipts remain readable; new exports have no tracked sidecars.
|
|
132
135
|
|
|
133
136
|
Project-explainer runs remain active-project working artifacts and are never
|
|
134
137
|
exported as completion reference products. Local-scope projects do not export a
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: true
|
|
|
6
6
|
allowed-tools: Read, Write, Glob, Grep, Bash(git:*), AskUserQuestion, Task
|
|
7
7
|
user-invocable: true
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.6.
|
|
9
|
+
version: 1.6.3
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Review Backlog
|
|
@@ -259,7 +259,7 @@ This step mirrors the **Project Kickoff Handoffs** section of the pjm instructio
|
|
|
259
259
|
- the recommended project mode (`oat-project-lite` for single-sitting work, `oat-project-quick-start` for quick work, or `oat-project-new` for spec-driven work), including which artifacts (spec/design/plan) to pre-populate from existing research when it exists;
|
|
260
260
|
- authoritative input pointers (research directories, decision records, code paths);
|
|
261
261
|
- repo conventions and verification gates the item file does not restate;
|
|
262
|
-
- a close-out section requiring (a) the **Backlog Lifecycle** — `oat backlog archive <id
|
|
262
|
+
- a close-out section requiring (a) the **Backlog Lifecycle** — `oat backlog archive <id> --summary "outcome" --json` — in the same PR that ships the item, and (b) filesystem deletion of its owned handoff. Consume the complete returned `affectedPaths`, append the tracked handoff deletion, format existing text with the repository command, and commit the exact list via `oat internal commit-paths` with a unique retained identity and enabled hooks; stop if unavailable or blocked/failed. Include both old/new item names, ledger, index and rewritten references; preserve unrelated staged/unstaged work.
|
|
263
263
|
|
|
264
264
|
**Staleness:** if this alignment pass drops an item from the kickoff stack, delete its handoff (`git rm .oat/repo/pjm/handoffs/<BL-id>.md`) in the same pass rather than letting it drift.
|
|
265
265
|
|
|
@@ -5,7 +5,7 @@ disable-model-invocation: false
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
7
7
|
metadata:
|
|
8
|
-
version: 1.4.
|
|
8
|
+
version: 1.4.2
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Update Repo Reference
|
|
@@ -120,8 +120,8 @@ To close out a completed backlog item, run the atomic close-out command rather
|
|
|
120
120
|
than moving files by hand:
|
|
121
121
|
|
|
122
122
|
```bash
|
|
123
|
-
oat backlog archive <id> --summary "one-line outcome"
|
|
124
|
-
# abandoned work: oat backlog archive <id> --wont-do --summary "why"
|
|
123
|
+
oat backlog archive <id> --summary "one-line outcome" --json
|
|
124
|
+
# abandoned work: oat backlog archive <id> --wont-do --summary "why" --json
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
This flips the item's `status` to a terminal value (`closed`/`wont_do` — never
|
|
@@ -135,6 +135,31 @@ backlog files by hand outside this command (curated overview text, an enriched
|
|
|
135
135
|
oat backlog regenerate-index
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
+
Archive never stages files. Capture each successful `--json` result and retain
|
|
139
|
+
its complete `affectedPaths` array, including the old tracked item deletion,
|
|
140
|
+
the archived destination, completed ledger, index and rewritten references.
|
|
141
|
+
On retry use the returned operation paths; do not reconstruct ownership from
|
|
142
|
+
all files that mention the item. If this close-out owns a kickoff handoff,
|
|
143
|
+
remove it with a filesystem operation and append its tracked deletion path.
|
|
144
|
+
Convert returned absolute paths to literal repository-relative files using
|
|
145
|
+
the same repository root (avoiding checkout/scratch-path aliases).
|
|
146
|
+
Deduplicate the exact file list, format only existing supported text files
|
|
147
|
+
with the repository's documented formatter, and commit that list through
|
|
148
|
+
`oat internal commit-paths` with enabled hooks. Verify helper availability
|
|
149
|
+
first; if unavailable, stop and update the CLI. Set a unique `COMMIT_IDENTITY`
|
|
150
|
+
before the first attempt and retain the identity, message and literal paths
|
|
151
|
+
through retries; a blocked/failed helper result stops close-out. Unrelated
|
|
152
|
+
staged and unstaged work must remain intact. An empty settled-noop path list
|
|
153
|
+
needs no commit; omit a missing source path only if Git proves it was never
|
|
154
|
+
tracked, never omit a tracked old path or the new destination.
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
oat internal commit-paths --help || exit 1
|
|
158
|
+
# ARCHIVE_OWNED_FILES is the literal affectedPaths union plus owned handoff deletion.
|
|
159
|
+
# Format the existing text members with the repository's documented write command.
|
|
160
|
+
oat internal commit-paths --identity "${COMMIT_IDENTITY:?set once and retain for retries}:backlog-closeout" --message "chore(pjm): archive completed backlog work" -- "${ARCHIVE_OWNED_FILES[@]}" || exit 1
|
|
161
|
+
```
|
|
162
|
+
|
|
138
163
|
### Step 5: Sanity Checks
|
|
139
164
|
|
|
140
165
|
Use the `Grep` tool for focused searches:
|
|
@@ -6,7 +6,7 @@ disable-model-invocation: true
|
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion, Task
|
|
8
8
|
metadata:
|
|
9
|
-
version: 1.0.
|
|
9
|
+
version: 1.0.19
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Autonomous OAT Project
|
|
@@ -15,6 +15,10 @@ Run an OAT project from its persisted entry state to final PR by chaining the
|
|
|
15
15
|
existing lifecycle skills. This skill supplies policy and sequencing; each
|
|
16
16
|
lifecycle skill continues to own its artifacts, gates, reviews, and state.
|
|
17
17
|
|
|
18
|
+
## Hook-safe exact-path commits
|
|
19
|
+
|
|
20
|
+
Before a parent-branch commit, verify `oat internal commit-paths --help` succeeds. If unavailable, stop and update the OAT CLI; never fall back to a staged-index or pathspec-only commit. Set `COMMIT_IDENTITY` to a unique operation/artifact identity before the first attempt and retain it for every retry; use a new identity for a new operation. Pass only the exact produced file list, including tracked removals and both names of a rename. A blocked/failed result stops the workflow; retain its receipt and follow its diagnostics. Hooks remain enabled. Synced project artifacts continue through `oat project push`.
|
|
21
|
+
|
|
18
22
|
## When to Use
|
|
19
23
|
|
|
20
24
|
Use this skill only when the user explicitly requests autonomous end-to-end OAT
|
|
@@ -233,6 +237,57 @@ Select the earliest incomplete lifecycle owner:
|
|
|
233
237
|
An approved plan enters at implementation. Never replay completed phases solely
|
|
234
238
|
because this is a new session.
|
|
235
239
|
|
|
240
|
+
### Step 1.5: Disclose Effective Limits and Hard Stops
|
|
241
|
+
|
|
242
|
+
Before lifecycle execution, read the owning contracts: the vendored autonomy
|
|
243
|
+
contract/gate inventory, `oat-project-implement/references/phase-execution.md`
|
|
244
|
+
and `oat-phase-implementer` recovery contract, the current project dispatch
|
|
245
|
+
adapter and generic dispatch contract, and each applicable lifecycle gate's
|
|
246
|
+
configuration and failure policy. Do not infer permission from an allowance.
|
|
247
|
+
|
|
248
|
+
For an existing project, resolve `oat_phase_recovery_policy` from `state.md`:
|
|
249
|
+
use `phase_attempt_limits.<pNN>` when present, otherwise
|
|
250
|
+
`default_attempt_limit` (default `10`); require integer limits from `0` through
|
|
251
|
+
`20`. Read prior durable `used_attempts` and `pending_attempt` from
|
|
252
|
+
`phase_attempt_usage.<pNN>` and reconcile pending identities before work. Report
|
|
253
|
+
remaining capacity as `max(0, effective limit - used_attempts)`, the source and
|
|
254
|
+
any phase override. A fully reconciled pending attempt completes the same
|
|
255
|
+
reserved attempt, even at the limit; it receives no new reservation.
|
|
256
|
+
|
|
257
|
+
Print the effective project default and every known phase's values at kickoff:
|
|
258
|
+
|
|
259
|
+
```text
|
|
260
|
+
Recovery: project default={limit}; source={state.md | owning default 10}
|
|
261
|
+
Phase {pNN}: effective={limit}; source={phase override | project default | owning default}
|
|
262
|
+
prior durable usage={used}; remaining capacity={remaining}; pending={none | reconciled attempt/status}
|
|
263
|
+
Dispatch/review: {resolved route retry limit, review-cycle cap, gate maxAttempts and their sources}
|
|
264
|
+
Stops: {applicable owning stop conditions and evidence/next action}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
For a new project, disclose the owning defaults and mark phase-specific values
|
|
268
|
+
unresolved until scaffolding/planning supplies them; refresh the report before
|
|
269
|
+
implementation and on resume or a configured limit change. Never invent phase
|
|
270
|
+
usage. An unavailable or malformed policy/ledger stops before dispatch.
|
|
271
|
+
|
|
272
|
+
Capacity is not permission. A `failed-attempt` disposition is terminal even
|
|
273
|
+
with remaining capacity. Applicable hard stops include recovery eligibility or
|
|
274
|
+
proof failure; budget exhaustion for a new attempt; malformed ledger or
|
|
275
|
+
unresolved pending attempt; immediate direction-required stop for a lost or
|
|
276
|
+
unbindable exact target, with no fallback; accepted-launch failure when neither
|
|
277
|
+
same-handle continuation nor a lifecycle-authorized fresh recover launch at the
|
|
278
|
+
same exact target can continue; blocking review policy;
|
|
279
|
+
missing credentials; repository authority or ownership limits; unresolved
|
|
280
|
+
product judgment; unauthorized destructive risk; and inventory gaps. Apply the
|
|
281
|
+
owning gate's validated `block`/`prompt`/`warn` semantics without weakening its
|
|
282
|
+
operational or provenance stops. Name the exact inventory boundary and its
|
|
283
|
+
owner when reporting a stop.
|
|
284
|
+
|
|
285
|
+
Route retries, implementation recovery events, reserved recovery attempts,
|
|
286
|
+
review-fix rounds and gate attempts are separate counters. The elevated warning
|
|
287
|
+
at three recovery events does not grant recovery permission or change a limit.
|
|
288
|
+
Remaining allowance covers separate eligible events. Continue-after-failure is
|
|
289
|
+
a separate future policy choice, not authority supplied by this kickoff.
|
|
290
|
+
|
|
236
291
|
### Step 2: Select Workflow Mode by Review Density
|
|
237
292
|
|
|
238
293
|
For a new goal, choose mode as a rigor selector:
|
|
@@ -299,8 +354,8 @@ PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || {
|
|
|
299
354
|
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
300
355
|
oat project push "$PROJECT_PATH" --message "chore(oat): persist autonomous explainer intent" || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
301
356
|
else
|
|
302
|
-
|
|
303
|
-
|
|
357
|
+
OWNED_COMMIT_PATHS=("$PROJECT_PATH/state.md")
|
|
358
|
+
oat internal commit-paths --identity "${COMMIT_IDENTITY:?set once and retain for retries}:oat-project-autonomous:1" --message "chore(oat): persist autonomous explainer intent" -- "${OWNED_COMMIT_PATHS[@]}" || exit 1
|
|
304
359
|
fi
|
|
305
360
|
```
|
|
306
361
|
|
|
@@ -351,8 +406,8 @@ PROJECT_SCOPE=$(oat project scope "$PROJECT_PATH" --format value) || {
|
|
|
351
406
|
if [ "$PROJECT_SCOPE" = "synced" ]; then
|
|
352
407
|
oat project push "$PROJECT_PATH" --message "chore(oat): update autonomous execution learnings" || { echo "oat: project push failed; run oat project pull, resolve the reported state, and retry" >&2; exit 1; }
|
|
353
408
|
else
|
|
354
|
-
|
|
355
|
-
|
|
409
|
+
OWNED_COMMIT_PATHS=("$PROJECT_PATH/oat-execution-learnings.md")
|
|
410
|
+
oat internal commit-paths --identity "${COMMIT_IDENTITY:?set once and retain for retries}:oat-project-autonomous:2" --message "chore(oat): update autonomous execution learnings" -- "${OWNED_COMMIT_PATHS[@]}" || exit 1
|
|
356
411
|
fi
|
|
357
412
|
```
|
|
358
413
|
|