opencode-skills-collection 4.0.44 → 4.0.46
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/bundled-skills/.antigravity-install-manifest.json +25 -1
- package/bundled-skills/agy-delegate/SKILL.md +168 -0
- package/bundled-skills/agy-delegate/references/dispatch-and-poll.md +140 -0
- package/bundled-skills/agy-delegate/references/multi-task-queues.md +59 -0
- package/bundled-skills/agy-delegate/references/review-and-land.md +103 -0
- package/bundled-skills/agy-delegate/references/writing-the-brief.md +124 -0
- package/bundled-skills/aider-delegate/SKILL.md +227 -0
- package/bundled-skills/aider-delegate/references/dispatch-and-poll.md +154 -0
- package/bundled-skills/aider-delegate/references/multi-task-queues.md +68 -0
- package/bundled-skills/aider-delegate/references/review-and-land.md +101 -0
- package/bundled-skills/aider-delegate/references/writing-the-brief.md +142 -0
- package/bundled-skills/babysit-pr/SKILL.md +343 -0
- package/bundled-skills/claude-delegate/SKILL.md +182 -0
- package/bundled-skills/claude-delegate/references/dispatch-and-poll.md +220 -0
- package/bundled-skills/claude-delegate/references/multi-task-queues.md +66 -0
- package/bundled-skills/claude-delegate/references/review-and-land.md +117 -0
- package/bundled-skills/claude-delegate/references/writing-the-brief.md +158 -0
- package/bundled-skills/cline-delegate/SKILL.md +140 -0
- package/bundled-skills/cline-delegate/references/dispatch-and-poll.md +142 -0
- package/bundled-skills/cline-delegate/references/multi-task-queues.md +58 -0
- package/bundled-skills/cline-delegate/references/review-and-land.md +80 -0
- package/bundled-skills/cline-delegate/references/writing-the-brief.md +129 -0
- package/bundled-skills/codex-delegate/SKILL.md +177 -0
- package/bundled-skills/codex-delegate/references/dispatch-and-poll.md +161 -0
- package/bundled-skills/codex-delegate/references/multi-task-queues.md +66 -0
- package/bundled-skills/codex-delegate/references/review-and-land.md +126 -0
- package/bundled-skills/codex-delegate/references/writing-the-brief.md +125 -0
- package/bundled-skills/commandcode-delegate/SKILL.md +188 -0
- package/bundled-skills/commandcode-delegate/references/dispatch-and-poll.md +222 -0
- package/bundled-skills/commandcode-delegate/references/multi-task-queues.md +81 -0
- package/bundled-skills/commandcode-delegate/references/review-and-land.md +144 -0
- package/bundled-skills/commandcode-delegate/references/writing-the-brief.md +147 -0
- package/bundled-skills/copilot-delegate/SKILL.md +159 -0
- package/bundled-skills/copilot-delegate/references/dispatch-and-poll.md +143 -0
- package/bundled-skills/copilot-delegate/references/multi-task-queues.md +58 -0
- package/bundled-skills/copilot-delegate/references/review-and-land.md +80 -0
- package/bundled-skills/copilot-delegate/references/writing-the-brief.md +140 -0
- package/bundled-skills/cursor-delegate/SKILL.md +170 -0
- package/bundled-skills/cursor-delegate/references/dispatch-and-poll.md +162 -0
- package/bundled-skills/cursor-delegate/references/multi-task-queues.md +59 -0
- package/bundled-skills/cursor-delegate/references/review-and-land.md +93 -0
- package/bundled-skills/cursor-delegate/references/writing-the-brief.md +126 -0
- package/bundled-skills/debate-review/SKILL.md +85 -0
- package/bundled-skills/debate-review/assets/prompts/review-debate.md +51 -0
- package/bundled-skills/debate-review/assets/prompts/review-main.md +64 -0
- package/bundled-skills/debate-review/assets/prompts/review-rebuttal.md +42 -0
- package/bundled-skills/debate-review/references/comment-format.md +63 -0
- package/bundled-skills/debate-review/references/schema.md +95 -0
- package/bundled-skills/delegate-setup/SKILL.md +215 -0
- package/bundled-skills/delegate-setup/references/schema.md +100 -0
- package/bundled-skills/delegate-setup/references/setup-dialogue.md +101 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +1 -1
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/aas-core.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +3 -3
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/falsify/SKILL.md +263 -0
- package/bundled-skills/falsify/references/bias-catalog.md +42 -0
- package/bundled-skills/falsify/references/mental-models.md +135 -0
- package/bundled-skills/falsify/templates/thinking-ledger.md +104 -0
- package/bundled-skills/graceful-shutdown/SKILL.md +379 -0
- package/bundled-skills/grok-delegate/SKILL.md +179 -0
- package/bundled-skills/grok-delegate/references/dispatch-and-poll.md +171 -0
- package/bundled-skills/grok-delegate/references/multi-task-queues.md +67 -0
- package/bundled-skills/grok-delegate/references/review-and-land.md +130 -0
- package/bundled-skills/grok-delegate/references/writing-the-brief.md +119 -0
- package/bundled-skills/kimi-delegate/SKILL.md +137 -0
- package/bundled-skills/kimi-delegate/references/dispatch-and-poll.md +134 -0
- package/bundled-skills/kimi-delegate/references/multi-task-queues.md +58 -0
- package/bundled-skills/kimi-delegate/references/review-and-land.md +92 -0
- package/bundled-skills/kimi-delegate/references/writing-the-brief.md +132 -0
- package/bundled-skills/omp-delegate/SKILL.md +186 -0
- package/bundled-skills/omp-delegate/references/dispatch-and-poll.md +155 -0
- package/bundled-skills/omp-delegate/references/multi-task-queues.md +59 -0
- package/bundled-skills/omp-delegate/references/review-and-land.md +95 -0
- package/bundled-skills/omp-delegate/references/writing-the-brief.md +149 -0
- package/bundled-skills/opencode-delegate/SKILL.md +189 -0
- package/bundled-skills/opencode-delegate/references/dispatch-and-poll.md +156 -0
- package/bundled-skills/opencode-delegate/references/multi-task-queues.md +68 -0
- package/bundled-skills/opencode-delegate/references/review-and-land.md +125 -0
- package/bundled-skills/opencode-delegate/references/writing-the-brief.md +142 -0
- package/bundled-skills/pi-delegate/SKILL.md +148 -0
- package/bundled-skills/pi-delegate/references/dispatch-and-poll.md +146 -0
- package/bundled-skills/pi-delegate/references/multi-task-queues.md +59 -0
- package/bundled-skills/pi-delegate/references/review-and-land.md +95 -0
- package/bundled-skills/pi-delegate/references/writing-the-brief.md +132 -0
- package/bundled-skills/qoder-delegate/SKILL.md +151 -0
- package/bundled-skills/qoder-delegate/references/dispatch-and-poll.md +119 -0
- package/bundled-skills/qoder-delegate/references/multi-task-queues.md +43 -0
- package/bundled-skills/qoder-delegate/references/review-and-land.md +66 -0
- package/bundled-skills/qoder-delegate/references/writing-the-brief.md +85 -0
- package/bundled-skills/sandbase-mcp/SKILL.md +194 -0
- package/bundled-skills/ui-slop-score/SKILL.md +2 -2
- package/bundled-skills/unsloth-finetuning/SKILL.md +352 -0
- package/bundled-skills/vibe-delegate/SKILL.md +147 -0
- package/bundled-skills/vibe-delegate/references/dispatch-and-poll.md +144 -0
- package/bundled-skills/vibe-delegate/references/multi-task-queues.md +59 -0
- package/bundled-skills/vibe-delegate/references/review-and-land.md +87 -0
- package/bundled-skills/vibe-delegate/references/writing-the-brief.md +131 -0
- package/bundled-skills/warp-delegate/SKILL.md +192 -0
- package/bundled-skills/warp-delegate/references/dispatch-and-poll.md +163 -0
- package/bundled-skills/warp-delegate/references/multi-task-queues.md +80 -0
- package/bundled-skills/warp-delegate/references/review-and-land.md +123 -0
- package/bundled-skills/warp-delegate/references/writing-the-brief.md +105 -0
- package/bundled-skills/zcode-delegate/SKILL.md +202 -0
- package/bundled-skills/zcode-delegate/references/dispatch-and-poll.md +113 -0
- package/bundled-skills/zcode-delegate/references/multi-task-queues.md +87 -0
- package/bundled-skills/zcode-delegate/references/review-and-land.md +81 -0
- package/bundled-skills/zcode-delegate/references/writing-the-brief.md +120 -0
- package/package.json +1 -1
- package/skills_index.json +660 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Multi-task queues
|
|
2
|
+
|
|
3
|
+
The single-task loop scales to a queue: a removal across layers, a migration across files, or a
|
|
4
|
+
refactor sweep. Sequencing and bookkeeping make it trustworthy.
|
|
5
|
+
|
|
6
|
+
## Run sequentially, one commit per task
|
|
7
|
+
|
|
8
|
+
Run tasks **one at a time, in dependency order**, landing each after review and gates before
|
|
9
|
+
dispatching the next:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
node "<skill-dir>/scripts/relay.mjs" --brief task-01.txt --cd /path/to/repo
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- Later briefs can rely on earlier work only after it lands.
|
|
16
|
+
- One commit per task keeps history reviewable and each step revertible.
|
|
17
|
+
- A clean tree before each dispatch keeps `touchedFiles` honest.
|
|
18
|
+
|
|
19
|
+
Use parallel runs only for genuinely independent tasks in separate working trees. Sequential is the
|
|
20
|
+
default because it preserves clean task boundaries.
|
|
21
|
+
|
|
22
|
+
## Carry decided constraints forward
|
|
23
|
+
|
|
24
|
+
Fresh Vibe sessions do not remember earlier tasks. If task 2 chooses a helper name, fixture location,
|
|
25
|
+
or interface that task 5 needs, write that fact into task 5's brief.
|
|
26
|
+
|
|
27
|
+
Use a resumed Vibe session only for rework on the same task. Send a delta brief with `--resume-last`;
|
|
28
|
+
use `--session <id>` only for an id obtained outside the relay because Vibe's stream does not expose
|
|
29
|
+
one. Start unrelated queue items in fresh sessions.
|
|
30
|
+
|
|
31
|
+
## Keep a progress file
|
|
32
|
+
|
|
33
|
+
For more than two or three tasks, maintain one progress file beside the work:
|
|
34
|
+
|
|
35
|
+
- **Status table** — queued / at-implementer / reviewed+committed, with the commit hash.
|
|
36
|
+
- **Per-task review notes** — what landed, what you verified, and gate outcomes.
|
|
37
|
+
- **Needs your eyes** — design decisions, non-blocking nitpicks, and questions for the human.
|
|
38
|
+
- **End-of-run checklist** — the final cross-task verification.
|
|
39
|
+
|
|
40
|
+
Update it when each task lands, not in one batch at the end.
|
|
41
|
+
|
|
42
|
+
## Close with a coherence check
|
|
43
|
+
|
|
44
|
+
After the last task:
|
|
45
|
+
|
|
46
|
+
- Run the full test/build once more.
|
|
47
|
+
- Search repo-wide for the thing the queue changed.
|
|
48
|
+
- Replay migrations from a clean state and check drift when applicable.
|
|
49
|
+
- Push and open or update the PR only after the final tree is coherent.
|
|
50
|
+
|
|
51
|
+
## When to stop and ask
|
|
52
|
+
|
|
53
|
+
Proceed on work that follows from the agreed plan. Stop and surface when:
|
|
54
|
+
|
|
55
|
+
- A task cannot be completed correctly within its brief.
|
|
56
|
+
- Review calls the plan itself into question.
|
|
57
|
+
- Gates reveal a problem affecting already-landed tasks.
|
|
58
|
+
|
|
59
|
+
Report the landed state, commit hashes, and open question, then wait.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Review and land
|
|
2
|
+
|
|
3
|
+
Vibe did the typing; you own the judgment. Verify against reality, never the self-report, and read the
|
|
4
|
+
diff as generated code because a green gate cannot catch every failure mode.
|
|
5
|
+
|
|
6
|
+
## Check tests before trusting gates
|
|
7
|
+
|
|
8
|
+
If the diff touches existing tests, review those edits first:
|
|
9
|
+
|
|
10
|
+
- Treat unbriefed test edits as a contract change, not part of the fix.
|
|
11
|
+
- Treat newly skipped, disabled, or commented-out tests as failing until proven otherwise.
|
|
12
|
+
- Treat loosened assertions the same way: contains/truthy replacing exact matches, broadened error
|
|
13
|
+
types, and widened tolerances all weaken the gate.
|
|
14
|
+
|
|
15
|
+
## Re-run the gates yourself
|
|
16
|
+
|
|
17
|
+
`result.json` carries Vibe's claims, not evidence. Re-run the project's actual test, lint, and build
|
|
18
|
+
commands in the working tree and read their output. Passing is necessary, not sufficient.
|
|
19
|
+
|
|
20
|
+
For changes with a specialized verification shape:
|
|
21
|
+
|
|
22
|
+
- **Migrations or schema:** round-trip them and check for drift.
|
|
23
|
+
- **Removals or renames:** grep for dangling references.
|
|
24
|
+
- **Stateful behavior:** exercise the behavior, not just compilation.
|
|
25
|
+
|
|
26
|
+
## Read the diff against the brief
|
|
27
|
+
|
|
28
|
+
Start with `touchedFiles`, open the diff, and compare it to the brief:
|
|
29
|
+
|
|
30
|
+
- **Scope creep** — changes the brief excluded.
|
|
31
|
+
- **Scope shortfall** — missed behavior, edges, or cleanup.
|
|
32
|
+
- **Quiet judgment calls** — defensible but unasked decisions that need review.
|
|
33
|
+
|
|
34
|
+
## The implementer sweep
|
|
35
|
+
|
|
36
|
+
Check every diff for patterns gates often miss:
|
|
37
|
+
|
|
38
|
+
- Hardcoded success or fixture data on a real-work path.
|
|
39
|
+
- Catch-all error handling that returns a default instead of propagating or recovering.
|
|
40
|
+
- Imports, dependencies, methods, and signatures not present in the installed version.
|
|
41
|
+
- Unused imports, uncalled helpers, unreachable branches, and scaffolding comments.
|
|
42
|
+
- A second client, error idiom, or logging style beside the repo's existing one.
|
|
43
|
+
- Tests that assert internals instead of behavior, or near-duplicate test bodies.
|
|
44
|
+
- Optional parameters, config flags, and abstractions with no caller.
|
|
45
|
+
- Guards for impossible cases that hide trust-boundary validation.
|
|
46
|
+
|
|
47
|
+
Send anything blocking back to Vibe as a delta brief, or fix it in the tree, and report either choice
|
|
48
|
+
to the human. Run relevant guard skills if installed.
|
|
49
|
+
|
|
50
|
+
## The commit boundary
|
|
51
|
+
|
|
52
|
+
When the gates pass and the diff holds, **the orchestrator commits**, never the implementer. Write a
|
|
53
|
+
clear message describing what landed.
|
|
54
|
+
|
|
55
|
+
From dispatch until that commit, the uncommitted working tree is the authoritative copy of Vibe's
|
|
56
|
+
work. Never reflexively run `git checkout`, `reset`, `clean`, or switch branches after an interrupted
|
|
57
|
+
run. Inspect `git status`, `git diff`, `git diff --cached` for staged changes, and open every untracked
|
|
58
|
+
file (`??`) directly because no diff shows its contents. After inspection, discarding a bad or
|
|
59
|
+
premise-contaminated change can be correct; the rule is to preserve the evidence until it is reviewed.
|
|
60
|
+
|
|
61
|
+
## Rework: send the delta
|
|
62
|
+
|
|
63
|
+
Continue the same session with only the correction:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
echo "The fix is right, but the test mocks the DB session. Use the real migrated fixture and remove
|
|
67
|
+
the unused import." | node "<skill-dir>/scripts/relay.mjs" --resume-last --cd /path/to/repo
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Vibe's stream does not expose a session id, so use `--resume-last` normally. Use `--session <id>` only
|
|
71
|
+
when the id came from outside the relay. Rework gets the same gate rerun, test review, diff review, and
|
|
72
|
+
implementer sweep.
|
|
73
|
+
|
|
74
|
+
Default `accept-edits` runs cannot execute most gates headlessly; the orchestrator runs them.
|
|
75
|
+
`--full-access` permits arbitrary shell/tool execution and requires explicit human authorization.
|
|
76
|
+
|
|
77
|
+
## Surface, do not absorb
|
|
78
|
+
|
|
79
|
+
The human opted into delegation, so committing verified, gate-passing work is the contract. Keep them
|
|
80
|
+
in the loop when the work changes shape:
|
|
81
|
+
|
|
82
|
+
- Report design decisions and defensible-but-unrequested turns.
|
|
83
|
+
- Note non-blocking nitpicks you did not block on.
|
|
84
|
+
- Stop and ask if correct completion requires going beyond the brief.
|
|
85
|
+
|
|
86
|
+
For a queue, keep these notes in the progress file described in
|
|
87
|
+
[multi-task-queues.md](multi-task-queues.md).
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Writing the brief
|
|
2
|
+
|
|
3
|
+
A brief is the entire task as Vibe will see it. It runs in a separate session with **no memory of your
|
|
4
|
+
conversation, no access to prior notes, and no shared context** — only the text you send and whatever
|
|
5
|
+
it can inspect in the workspace. If a constraint is not in the brief or discoverable in the repo, it
|
|
6
|
+
does not exist for Vibe.
|
|
7
|
+
|
|
8
|
+
## Resumed sessions
|
|
9
|
+
|
|
10
|
+
A resumed run keeps the session context. Send only the delta brief with `--resume-last` or
|
|
11
|
+
`--session <id>`.
|
|
12
|
+
|
|
13
|
+
## The shape that works
|
|
14
|
+
|
|
15
|
+
Use a compact, block-structured brief. State the task, what done means, the few constraints that
|
|
16
|
+
matter, and the report Vibe must return.
|
|
17
|
+
|
|
18
|
+
```xml
|
|
19
|
+
<task>
|
|
20
|
+
One or two sentences: the concrete job and where it lives. Then the specifics — current state, what to
|
|
21
|
+
change, and explicitly what to leave untouched. The leave-untouched list prevents unrelated refactors.
|
|
22
|
+
</task>
|
|
23
|
+
|
|
24
|
+
<verification_loop>
|
|
25
|
+
These are the real project gates the orchestrator will run after dispatch:
|
|
26
|
+
<the project's real test command>
|
|
27
|
+
<the project's real lint/format command>
|
|
28
|
+
<the project's real build/typecheck command>
|
|
29
|
+
If shell execution was explicitly authorized for this run, run them and fix what they surface.
|
|
30
|
+
Otherwise do not claim they ran; perform the inspections available to you and report the gates as not run.
|
|
31
|
+
</verification_loop>
|
|
32
|
+
|
|
33
|
+
<action_safety>
|
|
34
|
+
Keep changes scoped to the task. No unrelated refactors, renames, or cleanup unless required for
|
|
35
|
+
correctness. Do NOT run git add or git commit — the orchestrator commits after reviewing. Leave the
|
|
36
|
+
work uncommitted in the working tree.
|
|
37
|
+
</action_safety>
|
|
38
|
+
|
|
39
|
+
<structured_output_contract>
|
|
40
|
+
End with a report in this exact shape:
|
|
41
|
+
1. What changed and why
|
|
42
|
+
2. Files touched
|
|
43
|
+
3. Gate outcomes with counts, or exactly which gates were not run
|
|
44
|
+
4. Anything you deviated on, left open, or want a decision on
|
|
45
|
+
</structured_output_contract>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Add extra blocks only when the task needs them:
|
|
49
|
+
|
|
50
|
+
- **Debugging or open-ended fixes** — add `<completeness_contract>` (resolve fully, not just the
|
|
51
|
+
first plausible cause) and `<missing_context_gating>` (find missing repo facts or state what is
|
|
52
|
+
unknown).
|
|
53
|
+
- **Research or recommendations** — add `<research_mode>` (separate observed facts, inferences, and
|
|
54
|
+
open questions).
|
|
55
|
+
|
|
56
|
+
## Always ask for the report explicitly
|
|
57
|
+
|
|
58
|
+
The relay uses Vibe's last non-empty assistant message as `finalMessage`. Without a
|
|
59
|
+
closing summary, the edits may exist but the result is hard to review. The
|
|
60
|
+
`<structured_output_contract>` block makes the expected report explicit.
|
|
61
|
+
|
|
62
|
+
## Discover the real gates
|
|
63
|
+
|
|
64
|
+
Read the repo's `AGENTS.md`, `CLAUDE.md`, `Makefile`, `package.json`, or equivalent first and copy the
|
|
65
|
+
actual commands into `<verification_loop>`. Default `accept-edits` runs cannot execute most gates
|
|
66
|
+
headlessly, but naming them lets the orchestrator run the same commands after dispatch. Ask Vibe to
|
|
67
|
+
run them only when the human explicitly authorized `--full-access`.
|
|
68
|
+
|
|
69
|
+
## Honor repo conventions
|
|
70
|
+
|
|
71
|
+
Restate the load-bearing house rules in the brief. Vibe can inspect the workspace, but the important
|
|
72
|
+
constraints should be directly in front of it.
|
|
73
|
+
|
|
74
|
+
## One task per brief
|
|
75
|
+
|
|
76
|
+
Keep each brief bounded. One brief → one Vibe run → one reviewed commit keeps the diff and rollback
|
|
77
|
+
clean. Split mixed implementation, review, documentation, and roadmap requests into separate
|
|
78
|
+
dispatches.
|
|
79
|
+
|
|
80
|
+
## Premises freeze at dispatch
|
|
81
|
+
|
|
82
|
+
Vibe starts from the brief's facts and there is no steering channel mid-run. Audit ownership, target
|
|
83
|
+
branch, constraints, and other judgment-bearing premises before dispatch. If one proves wrong while
|
|
84
|
+
the run is live, stop it and inspect the working tree before sending a corrected brief; reconcile any
|
|
85
|
+
partial or premise-contaminated edits rather than discounting them after the fact.
|
|
86
|
+
|
|
87
|
+
## A worked example
|
|
88
|
+
|
|
89
|
+
```xml
|
|
90
|
+
<task>
|
|
91
|
+
In the payments service at services/billing/, the refund path double-charges when a refund is retried
|
|
92
|
+
after a network timeout. Make refund submission idempotent: check for an existing refund by idempotency
|
|
93
|
+
key before creating a new one. Touch only services/billing/refund.py and its tests. Leave the charge
|
|
94
|
+
path, API routes, and data models untouched.
|
|
95
|
+
</task>
|
|
96
|
+
|
|
97
|
+
<verification_loop>
|
|
98
|
+
The orchestrator will run:
|
|
99
|
+
pytest tests/billing/ -q
|
|
100
|
+
ruff check services/billing/
|
|
101
|
+
If shell execution is authorized for this run, run them and fix failures. Otherwise report them as
|
|
102
|
+
not run and confirm only refund.py and its test file changed.
|
|
103
|
+
</verification_loop>
|
|
104
|
+
|
|
105
|
+
<action_safety>
|
|
106
|
+
Scope strictly to the refund idempotency fix. No unrelated refactors. Do NOT git add or commit; leave
|
|
107
|
+
changes in the working tree for review.
|
|
108
|
+
</action_safety>
|
|
109
|
+
|
|
110
|
+
<structured_output_contract>
|
|
111
|
+
Report: (1) the root cause and fix, (2) files touched, (3) pytest and ruff outcomes with counts or
|
|
112
|
+
that they were not run,
|
|
113
|
+
(4) anything left open or needing a decision.
|
|
114
|
+
</structured_output_contract>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Argv delivery limits
|
|
118
|
+
|
|
119
|
+
Vibe's headless mode requires the brief as a command-line argument via `--prompt`. The relay reads a
|
|
120
|
+
file or stdin for convenience, then passes the text with `--prompt=<brief>`. The equals form binds a
|
|
121
|
+
brief that starts with `-` instead of treating it as another flag.
|
|
122
|
+
|
|
123
|
+
This has two consequences:
|
|
124
|
+
|
|
125
|
+
- The brief is visible in the host process list (`ps`, `/proc`). Keep secrets out of it on shared
|
|
126
|
+
machines; reference workspace files or environment variables instead.
|
|
127
|
+
- A brief over 120 KB on POSIX or 12 KB on Windows is rejected before launch because the platforms
|
|
128
|
+
cap command arguments. Put large context in the workspace and tell Vibe which file to read.
|
|
129
|
+
|
|
130
|
+
Dispatch with [dispatch-and-poll.md](dispatch-and-poll.md), then review and commit with
|
|
131
|
+
[review-and-land.md](review-and-land.md).
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: warp-delegate
|
|
3
|
+
description: Delegate coding tasks to the Warp Agent CLI (`oz`) only when the user
|
|
4
|
+
explicitly requests it, while the orchestrator retains review and landing responsibility.
|
|
5
|
+
risk: safe
|
|
6
|
+
category: agent-orchestration
|
|
7
|
+
source: https://github.com/amElnagdy/delegate-skills
|
|
8
|
+
source_repo: amElnagdy/delegate-skills
|
|
9
|
+
source_type: community
|
|
10
|
+
date_added: '2026-08-26'
|
|
11
|
+
license: MIT
|
|
12
|
+
license_source: https://github.com/amElnagdy/delegate-skills/blob/master/LICENSE
|
|
13
|
+
compatibility: Requires the `oz` CLI (Warp Agent CLI) installed and authenticated
|
|
14
|
+
(`oz login`, or `WARP_API_KEY` for a headless host; Warp AI features need an eligible
|
|
15
|
+
Warp plan or your own provider key), Node 18+, and git. The orchestrating agent
|
|
16
|
+
must be able to run shell commands and read files. Shell examples assume bash/zsh
|
|
17
|
+
(macOS/Linux, or Git Bash/WSL on Windows).
|
|
18
|
+
metadata:
|
|
19
|
+
version: 0.5.0
|
|
20
|
+
---
|
|
21
|
+
# Warp Delegate
|
|
22
|
+
|
|
23
|
+
## When to Use
|
|
24
|
+
|
|
25
|
+
- You want to delegate a bounded coding task to a separate `warp` implementer (`Warp Agent CLI`) and then review its diff yourself.
|
|
26
|
+
- The user explicitly asked for delegation to this implementer.
|
|
27
|
+
|
|
28
|
+
You are the **orchestrator**. Delegate a bounded coding task to a separate **implementer** - the
|
|
29
|
+
Warp Agent CLI - then review what it produced and land it yourself. You write the brief and own the
|
|
30
|
+
judgment; the implementer makes changes in its own conversation; you verify and commit.
|
|
31
|
+
|
|
32
|
+
The loop needs only a shell command and file access, so any comparable orchestrator can drive it.
|
|
33
|
+
|
|
34
|
+
## The binary is `oz`, not `warp`
|
|
35
|
+
|
|
36
|
+
Warp ships two different programs, and only one of them can be delegated to:
|
|
37
|
+
|
|
38
|
+
- **`oz`** - the Warp Agent CLI. Headless and scriptable; `oz agent run` executes an agent against a
|
|
39
|
+
local directory. **This is what the relay drives.**
|
|
40
|
+
- **`warp`** - the interactive Warp TUI. It requires a terminal device, has no prompt or print flag
|
|
41
|
+
(its only options are `--resume`, `--auto-approve`, `--api-key`, and the provider-key commands),
|
|
42
|
+
and exits with `Device not configured` when stdin is a pipe. It cannot be relayed.
|
|
43
|
+
|
|
44
|
+
If `oz` is missing but `warp` is installed, you have the TUI, not the CLI.
|
|
45
|
+
|
|
46
|
+
## When NOT to use this
|
|
47
|
+
|
|
48
|
+
- The task is small enough to do inline; delegation overhead is not worth it.
|
|
49
|
+
- The `oz` CLI is not installed or authenticated.
|
|
50
|
+
- You need a sandboxed or read-only implementer. `oz agent run` has **no sandbox, no permission
|
|
51
|
+
mode, and no read-only run** - see [Autonomy and permissions](#autonomy-and-permissions).
|
|
52
|
+
- The work must stay off Warp's servers. `oz agent run` uploads an end-of-run workspace snapshot
|
|
53
|
+
unless `--no-snapshot` is passed, and conversations live server-side.
|
|
54
|
+
|
|
55
|
+
## Prerequisites (check once)
|
|
56
|
+
|
|
57
|
+
1. Install the Warp Agent CLI - see <https://docs.warp.dev/cli/>.
|
|
58
|
+
2. Authenticate: `oz login`, or set `WARP_API_KEY` for CI, a container, or any headless host.
|
|
59
|
+
3. Confirm the account has AI quota. **A working login is not enough** - unlike the other CLIs in
|
|
60
|
+
this package. `oz whoami` can succeed while every dispatch fails with `In order to use Warp's AI
|
|
61
|
+
features, subscribe to a Warp plan, or bring your own inference.` Warp records this internally as
|
|
62
|
+
`QuotaLimit` / "lack of AI quota", so it is a credit condition on the account rather than a
|
|
63
|
+
CLI-specific entitlement: `oz` runs the same agent harness as the Warp app and draws on the same
|
|
64
|
+
account, plan, and credits. Check that `oz whoami` names the account holding the plan - if it
|
|
65
|
+
does not, `oz logout && oz login` fixes it. Otherwise confirm the plan's AI credits are not
|
|
66
|
+
spent, or store your own provider key -
|
|
67
|
+
`warp --set-provider-api-key <openai|anthropic|google|grok>`, or `/api-keys` inside the TUI.
|
|
68
|
+
Bring-your-own-key needs no paid Warp plan.
|
|
69
|
+
4. Confirm `oz --version` succeeds and `oz whoami` prints your user.
|
|
70
|
+
5. Work in, or point `--cd` at, the target git repository.
|
|
71
|
+
|
|
72
|
+
On macOS the CLI is distributed as a signed Developer ID binary; a first run may be held by
|
|
73
|
+
Gatekeeper until it is approved.
|
|
74
|
+
|
|
75
|
+
## Choose the model (optional)
|
|
76
|
+
|
|
77
|
+
Omit `--model` to use Warp's configured default. To pick another, choose an id from `oz model list`
|
|
78
|
+
and pass it verbatim. The relay accepts letters, digits, and `. _ : / -` only, so a value cannot be
|
|
79
|
+
mistaken for another `oz` flag.
|
|
80
|
+
|
|
81
|
+
## The loop
|
|
82
|
+
|
|
83
|
+
Run these five steps per task. Steps 1, 4, and 5 require judgment; 2 and 3 are mechanical.
|
|
84
|
+
|
|
85
|
+
### 1. Write the brief
|
|
86
|
+
|
|
87
|
+
Warp sees only the text you send plus what it can inspect in the workspace - no chat history or
|
|
88
|
+
shared context. Include the goal, current state, what to change, what to leave untouched, the
|
|
89
|
+
project's **actual** gates, and a report contract. Tell it not to commit. Keep one task per brief.
|
|
90
|
+
The brief is delivered as the `--prompt` value on argv, so it is visible in the host process list -
|
|
91
|
+
keep secrets out of it and reference workspace files instead. See
|
|
92
|
+
[references/writing-the-brief.md](references/writing-the-brief.md).
|
|
93
|
+
|
|
94
|
+
### 2. Dispatch
|
|
95
|
+
|
|
96
|
+
Use the bundled relay. It runs `oz agent run --output-format ndjson`, captures the event stream, and
|
|
97
|
+
writes `result.json`. (`<skill-dir>` is the installed folder containing this `SKILL.md`.)
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
node "<skill-dir>/scripts/relay.mjs" --brief brief.txt --cd /path/to/repo
|
|
101
|
+
# choose a model: add --model <id from oz model list>
|
|
102
|
+
# use an agent profile: add --profile <id>
|
|
103
|
+
# label the run: add --name <label>
|
|
104
|
+
# continue an existing conversation: add --conversation <id> (delta brief only)
|
|
105
|
+
# base the run on a Warp skill: add --skill <name|repo:name|org/repo:name>
|
|
106
|
+
# start MCP servers: add --mcp <path-or-inline-json> (repeatable)
|
|
107
|
+
# suppress the workspace snapshot upload: add --no-snapshot
|
|
108
|
+
# hard time limit (watchdog): add --timeout 2h (the 30m default suits short runs; implementation briefs routinely need 1-2h)
|
|
109
|
+
# see all options: node .../relay.mjs --help
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The relay pins the workspace with both the child process's cwd and Warp's own `--cwd`. It writes
|
|
113
|
+
artifacts under the system temp dir by default and never commits. See
|
|
114
|
+
[references/dispatch-and-poll.md](references/dispatch-and-poll.md).
|
|
115
|
+
|
|
116
|
+
### 3. Wait for completion
|
|
117
|
+
|
|
118
|
+
The relay blocks until `oz` finishes. Run it with the orchestrator's background-command facility, or
|
|
119
|
+
background it in the shell and poll for `result.json`. A pre-run usage error exits 2 and writes no
|
|
120
|
+
result; a missing `oz` exits 127 and writes `status: "warp_unavailable"`.
|
|
121
|
+
|
|
122
|
+
Trust process state and the working tree over a progress display. Completion means the process
|
|
123
|
+
exited and `result.json` exists. Warp's report is the `finalMessage` field in `result.json` (also
|
|
124
|
+
printed on stdout between the report markers); the raw event stream is always in `events.jsonl`.
|
|
125
|
+
|
|
126
|
+
### 4. Review - do not trust the self-report
|
|
127
|
+
|
|
128
|
+
Treat Warp's final message and gate claims as claims:
|
|
129
|
+
|
|
130
|
+
- Re-run the project's gates yourself.
|
|
131
|
+
- Read the diff against the brief, starting with `touchedFiles`.
|
|
132
|
+
- Run relevant guard skills if installed.
|
|
133
|
+
- Round-trip migrations and grep for dangling references after removals or renames.
|
|
134
|
+
|
|
135
|
+
Because there is no read-only mode to fall back on, the diff is the **only** record you get - and it
|
|
136
|
+
records what git can see in the workspace afterward, not everything the run did. Dispatch from a
|
|
137
|
+
clean tree so the two are as close as they can be. See
|
|
138
|
+
[references/review-and-land.md](references/review-and-land.md).
|
|
139
|
+
|
|
140
|
+
### 5. Land it
|
|
141
|
+
|
|
142
|
+
The implementer edits the working tree; **the orchestrator commits.** Commit only after the gates
|
|
143
|
+
pass and the diff holds. If rework is needed, send a delta brief with `--conversation <id>` using the
|
|
144
|
+
`conversationId` from `result.json`, then review again.
|
|
145
|
+
|
|
146
|
+
## Autonomy and permissions
|
|
147
|
+
|
|
148
|
+
`oz agent run` has **no sandbox, no permission mode, and no read-only mode**. A headless run reads,
|
|
149
|
+
writes, edits, and executes commands with your own user permissions and never prompts. There is
|
|
150
|
+
nothing in the CLI to restrict that surface, so this relay ships no `--read-only` flag - offering one
|
|
151
|
+
would imply an enforcement that does not exist. The controls you actually have are:
|
|
152
|
+
|
|
153
|
+
1. **Scope by directory.** `--cd` pins the workspace, and the relay passes it to Warp's own `--cwd`.
|
|
154
|
+
Treat this as *aim*, not a fence: on oz 0.2026.05.27 shell commands did run in the pinned
|
|
155
|
+
workspace, but the agent's file tool resolved bare relative paths against `$HOME`. Name absolute
|
|
156
|
+
paths in the brief - see [references/writing-the-brief.md](references/writing-the-brief.md).
|
|
157
|
+
2. **Review the diff.** `touchedFiles` is `git status --porcelain` taken after the run - post-run,
|
|
158
|
+
git-visible worktree state, not a log of what the agent did. It cannot show an ignored file, an
|
|
159
|
+
edit the run made and then reverted, or a write outside the repository (see item 1), and it
|
|
160
|
+
carries anything that was already dirty before dispatch. Dispatch from a clean tree so those are
|
|
161
|
+
the same set, and treat the diff as the best available record, not a complete one.
|
|
162
|
+
3. **Snapshot egress.** `--no-snapshot` forwards Warp's flag so the end-of-run workspace snapshot is
|
|
163
|
+
not uploaded. Without it, the upload is Warp's default.
|
|
164
|
+
|
|
165
|
+
`--auto-approve` belongs to the interactive `warp` TUI and has no bearing on `oz agent run`.
|
|
166
|
+
|
|
167
|
+
## Authorization model
|
|
168
|
+
|
|
169
|
+
Delegation is something the human opts into. Once they have ("run this queue", "proceed"),
|
|
170
|
+
committing verified, gate-passing work is the agreed contract. Two limits remain: **surface, don't
|
|
171
|
+
absorb** (report Warp's design decisions, defensible-but-unasked turns, and non-blocking nitpicks)
|
|
172
|
+
and **stop for scope changes** (if correct completion needs going beyond the brief, ask instead of
|
|
173
|
+
expanding the mandate). See [references/review-and-land.md](references/review-and-land.md).
|
|
174
|
+
|
|
175
|
+
## References
|
|
176
|
+
|
|
177
|
+
- [references/writing-the-brief.md](references/writing-the-brief.md) - structure, report contract,
|
|
178
|
+
real gates, argv delivery, and delta briefs.
|
|
179
|
+
- [references/dispatch-and-poll.md](references/dispatch-and-poll.md) - flags, artifacts,
|
|
180
|
+
`result.json`, polling, and failure recovery.
|
|
181
|
+
- [references/review-and-land.md](references/review-and-land.md) - review checklist, commit
|
|
182
|
+
boundary, and rework through Warp conversations.
|
|
183
|
+
- [references/multi-task-queues.md](references/multi-task-queues.md) - sequential queues,
|
|
184
|
+
constraint carry-forward, progress tracking, and the final coherence pass.
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
## Limitations
|
|
188
|
+
|
|
189
|
+
- Docs-only import — executable `scripts/relay.mjs` not included; see upstream for full runtime. Requires `warp` CLI, Node 18+, git.
|
|
190
|
+
- Relay never commits — it only returns structured result JSON; you review and land the commit.
|
|
191
|
+
|
|
192
|
+
> Adapted from [amElnagdy/delegate-skills](https://github.com/amElnagdy/delegate-skills) (MIT) — docs-only, runtime not bundled.
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Dispatch and poll
|
|
2
|
+
|
|
3
|
+
The relay is the only Warp-specific machinery in this skill. It launches `oz agent run`, captures
|
|
4
|
+
the event stream, and writes one result file the orchestrator can read.
|
|
5
|
+
|
|
6
|
+
## What the relay runs
|
|
7
|
+
|
|
8
|
+
```text
|
|
9
|
+
oz agent run --output-format ndjson --cwd <cd> [--model …] [--profile …] [--name …]
|
|
10
|
+
[--conversation …] [--skill …] [--mcp … …] [--no-snapshot] --prompt <brief>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
`--output-format ndjson` makes Warp emit one JSON object per line, so a long run reports progress
|
|
14
|
+
instead of buffering to the end. The workspace is pinned twice: the child process's cwd and Warp's
|
|
15
|
+
own `--cwd`.
|
|
16
|
+
|
|
17
|
+
## Flags
|
|
18
|
+
|
|
19
|
+
| Flag | Effect |
|
|
20
|
+
| --- | --- |
|
|
21
|
+
| `--brief <file>` | Path to the brief. Omit to read it from stdin. |
|
|
22
|
+
| `--cd <dir>` | Working root (default: current directory). Also passed as Warp's `--cwd`. |
|
|
23
|
+
| `--lane <name>` | Resolve dials from a `delegate-setup` fleet lane. Explicit flags win. |
|
|
24
|
+
| `--model <id>` | Warp model id from `oz model list`. Letters, digits, and `. _ : / -` only. |
|
|
25
|
+
| `--profile <id>` | Warp agent profile. |
|
|
26
|
+
| `--name <label>` | Labels the run in Warp's own run list. |
|
|
27
|
+
| `--conversation <id>` | Continue an existing Warp conversation. Send a delta brief only. |
|
|
28
|
+
| `--skill <spec>` | Warp skill as the base prompt: `name`, `repo:name`, or `org/repo:name`. |
|
|
29
|
+
| `--mcp <spec>` | MCP config path or inline JSON. Repeatable. |
|
|
30
|
+
| `--no-snapshot` | Forward Warp's `--no-snapshot` so no end-of-run workspace snapshot is uploaded. |
|
|
31
|
+
| `--timeout <dur>` | Relay watchdog, h/m/s (default `30m`). Warp has no timeout flag of its own. |
|
|
32
|
+
| `--out-dir <dir>` | Artifact directory (default: a fresh dir under the system temp dir). |
|
|
33
|
+
|
|
34
|
+
Values for `--model`, `--profile`, and `--conversation` are token-validated. `--skill`, `--mcp`, and
|
|
35
|
+
`--name` accept freer text but must not start with `-`, which `oz` would read as another flag.
|
|
36
|
+
|
|
37
|
+
## Artifacts
|
|
38
|
+
|
|
39
|
+
Written to `--out-dir`:
|
|
40
|
+
|
|
41
|
+
- `brief.txt` — exactly what was sent.
|
|
42
|
+
- `events.jsonl` — the raw ndjson stream, byte for byte. The fallback whenever a parsed field looks
|
|
43
|
+
wrong.
|
|
44
|
+
- `final.txt` — the assembled report, when one was captured.
|
|
45
|
+
- `stderr.txt` — everything Warp wrote to stderr.
|
|
46
|
+
- `result.json` — the structured result, written atomically via a temp file and rename, so a polling
|
|
47
|
+
reader never sees a half-written file.
|
|
48
|
+
|
|
49
|
+
## `result.json`
|
|
50
|
+
|
|
51
|
+
Schema id `delegate-relay.result.v1`. Synthetic example:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"schema": "delegate-relay.result.v1",
|
|
56
|
+
"tool": "oz",
|
|
57
|
+
"status": "completed",
|
|
58
|
+
"exitCode": 0,
|
|
59
|
+
"signal": null,
|
|
60
|
+
"ozVersion": "Oz v0.0000.00.00.00.00.stable_01",
|
|
61
|
+
"workdir": "/path/to/repo",
|
|
62
|
+
"model": null,
|
|
63
|
+
"profile": null,
|
|
64
|
+
"snapshotDisabled": false,
|
|
65
|
+
"resumed": false,
|
|
66
|
+
"runId": "00000000-0000-0000-0000-000000000000",
|
|
67
|
+
"runUrl": "https://oz.warp.dev/runs/00000000-0000-0000-0000-000000000000",
|
|
68
|
+
"conversationId": null,
|
|
69
|
+
"finalMessage": "Changed src/export/csv.ts …",
|
|
70
|
+
"touchedFiles": [" M src/export/csv.ts", "?? src/export/csv.test.ts"],
|
|
71
|
+
"startedAt": "2026-01-01T00:00:00.000Z",
|
|
72
|
+
"finishedAt": "2026-01-01T00:04:12.000Z"
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Field notes:
|
|
77
|
+
|
|
78
|
+
- **`status`** — `completed`, `failed`, `timeout`, `aborted`, or `warp_unavailable`.
|
|
79
|
+
- **`touchedFiles`** — `git status --porcelain` lines. `null` when git cannot report (not a
|
|
80
|
+
repository, git missing); `[]` when the tree is genuinely clean. `[]` and `null` mean different
|
|
81
|
+
things — do not collapse them.
|
|
82
|
+
- **`runId` / `runUrl`** — from Warp's `run_started` system event. `runUrl` opens the run in Warp.
|
|
83
|
+
- **`conversationId`** — the handle to pass back as `--conversation` for rework. Present only when
|
|
84
|
+
Warp emitted it on the stream.
|
|
85
|
+
- **`finalMessage`** — Warp's own report. Assembled from the text-bearing events in the stream; see
|
|
86
|
+
the caveat below.
|
|
87
|
+
- **`stderrTail`** — last 20 stderr lines, included on every non-clean outcome.
|
|
88
|
+
|
|
89
|
+
### What `finalMessage` actually contains
|
|
90
|
+
|
|
91
|
+
Confirmed against a live edit run on oz 0.2026.05.27. The stream carries:
|
|
92
|
+
|
|
93
|
+
| Event | Meaning |
|
|
94
|
+
| --- | --- |
|
|
95
|
+
| `{"type":"system","event_type":"run_started","run_id":…,"run_url":…}` | Run registered. |
|
|
96
|
+
| `{"type":"system","event_type":"conversation_started","conversation_id":…}` | The `--conversation` handle. Re-emitted on a resumed run carrying the *same* id, so `conversationId` stays stable across a rework chain. |
|
|
97
|
+
| `{"type":"agent","text":…}` | Agent output. **This is what `finalMessage` is built from.** |
|
|
98
|
+
| `{"type":"agent_reasoning","text":…}` | Private reasoning. Same shape, deliberately **excluded**. |
|
|
99
|
+
| `{"type":"tool_call"\|"tool_result"\|"tool_error",…}` | Tool traffic. No `text` field. |
|
|
100
|
+
|
|
101
|
+
Two consequences:
|
|
102
|
+
|
|
103
|
+
- **`finalMessage` is the whole narration, not just the closing report.** Warp emits no distinct
|
|
104
|
+
final-message event, so every `agent` chunk is concatenated — including running commentary like
|
|
105
|
+
"Now let me run both gates." This is why the brief must specify a report contract: `FILES:` /
|
|
106
|
+
`GATES:` / `NOTES:` at the end gives you a stable anchor to read instead of parsing prose.
|
|
107
|
+
- **`agent_reasoning` must stay excluded.** It carries a `text` field of exactly the same shape, so
|
|
108
|
+
matching on `text` alone splices the model's reasoning into the report.
|
|
109
|
+
|
|
110
|
+
Past those two rules the extraction stays tolerant — it also accepts `agent_output`, `content`, and
|
|
111
|
+
a nested `message.content` — so a renamed output event still reports rather than yielding an empty
|
|
112
|
+
`finalMessage`. If one ever does come back empty on a successful run, `events.jsonl` holds the raw
|
|
113
|
+
stream and `collectText` is the one place to correct.
|
|
114
|
+
|
|
115
|
+
## Exit codes
|
|
116
|
+
|
|
117
|
+
| Code | Meaning |
|
|
118
|
+
| --- | --- |
|
|
119
|
+
| `0` | Warp exited 0 and reported no stream error. |
|
|
120
|
+
| `1` | Generic failure, or a stream-reported agent error even when `oz` exited 0. |
|
|
121
|
+
| `2` | Usage error — bad flag, bad `--timeout`, missing or empty brief. **No result file is written.** |
|
|
122
|
+
| `124` | The bounded `oz --version` preflight timed out; Warp was never dispatched. |
|
|
123
|
+
| `127` | `oz` is not on PATH. A result file **is** written, with `status: "warp_unavailable"`. |
|
|
124
|
+
| `128 + n` | The child died on signal *n*; `signal` records which. |
|
|
125
|
+
|
|
126
|
+
## Polling
|
|
127
|
+
|
|
128
|
+
The relay blocks until the run ends. Background it and poll for `result.json`:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
node "<skill-dir>/scripts/relay.mjs" --brief brief.txt --cd /path/to/repo \
|
|
132
|
+
--out-dir /tmp/warp-run-1 &
|
|
133
|
+
until [ -f /tmp/warp-run-1/result.json ]; do sleep 5; done
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Completion means the process exited **and** `result.json` exists. Do not infer completion from
|
|
137
|
+
stdout going quiet — a long tool call looks identical to a finished run.
|
|
138
|
+
|
|
139
|
+
## Timeouts and aborts
|
|
140
|
+
|
|
141
|
+
`oz` has no timeout flag, so the watchdog is the relay's. When `--timeout` expires the relay kills
|
|
142
|
+
the whole process group (SIGTERM, then SIGKILL after 10s) and writes `status: "timeout"`.
|
|
143
|
+
|
|
144
|
+
If the relay itself is killed, it still writes `status: "aborted"`, forwards the kill to `oz`, and
|
|
145
|
+
re-snapshots `touchedFiles` after a 2-second grace window so files flushed during shutdown are
|
|
146
|
+
recorded. On Windows the process tree is felled with `taskkill /t /f`; Windows delivers no catchable
|
|
147
|
+
SIGTERM, so the aborted path cannot be driven there.
|
|
148
|
+
|
|
149
|
+
**A timed-out or aborted run leaves a partially edited tree.** Inspect `git status` and `git diff`
|
|
150
|
+
before re-dispatching. If the state is incoherent, discard it against the recorded baseline rather
|
|
151
|
+
than stashing — a bare `git stash` leaves behind every file the run created. See
|
|
152
|
+
[review-and-land.md](review-and-land.md#rework-through-a-conversation).
|
|
153
|
+
|
|
154
|
+
## Failure recovery
|
|
155
|
+
|
|
156
|
+
| Symptom | What it means | Do |
|
|
157
|
+
| --- | --- | --- |
|
|
158
|
+
| `warp_unavailable`, exit 127 | `oz` is not on PATH | Install the Warp Agent CLI; check `oz --version`. |
|
|
159
|
+
| stderr `subscribe to a Warp plan, or bring your own inference` | Authenticated, but the account has no AI quota. Warp logs it as `QuotaLimit` / "lack of AI quota". `oz` shares the Warp app's account, plan, and credits, so this is a credit condition, not a CLI-only gate | Check `oz whoami` names the account holding the plan - if not, `oz logout && oz login`. Otherwise confirm its AI credits are not spent, or store your own provider key: `warp --set-provider-api-key <openai\|anthropic\|google\|grok>` (or `/api-keys` in the TUI). Bring-your-own-key needs no paid plan. Warp's log is at `~/Library/Logs/oz/warp.log` on macOS. |
|
|
160
|
+
| `Device not configured` | The `warp` TUI was launched, not `oz` | Use `oz`; the TUI cannot be relayed. |
|
|
161
|
+
| exit 2, no result file | Usage error | Read the relay's stderr line; fix the flag. |
|
|
162
|
+
| `status: "timeout"` | The watchdog fired | Raise `--timeout`, or split the brief. |
|
|
163
|
+
| Empty `finalMessage`, exit 0 | Text extraction missed the event shape | Read `events.jsonl`; see the caveat above. |
|