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,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debate-review
|
|
3
|
+
description: Two-model debate review of a GitHub PR, GitLab MR, Azure DevOps PR, or
|
|
4
|
+
local working tree, posted as inline comments or printed. Use for any PR/MR review
|
|
5
|
+
request, or a local review before a PR exists.
|
|
6
|
+
risk: safe
|
|
7
|
+
category: code-quality
|
|
8
|
+
source: https://github.com/amElnagdy/review-skills
|
|
9
|
+
source_repo: amElnagdy/review-skills
|
|
10
|
+
source_type: community
|
|
11
|
+
date_added: '2026-08-26'
|
|
12
|
+
license: MIT
|
|
13
|
+
license_source: https://github.com/amElnagdy/review-skills/blob/master/LICENSE
|
|
14
|
+
compatibility: Requires Node 18+, Git 2.31+ for Azure DevOps, `gh` (GitHub), `glab`
|
|
15
|
+
(GitLab) or `az` (Azure DevOps) authenticated, and delegate-skills installed for
|
|
16
|
+
the main/debate lanes.
|
|
17
|
+
metadata:
|
|
18
|
+
version: 0.2.0
|
|
19
|
+
---
|
|
20
|
+
# debate-review
|
|
21
|
+
|
|
22
|
+
## When to Use
|
|
23
|
+
|
|
24
|
+
- You have a GitHub PR or GitLab MR that needs a thorough pre-merge review.
|
|
25
|
+
- You want a two-model debate (main reviewer vs. debate reviewer) to catch blind spots before posting inline comments.
|
|
26
|
+
|
|
27
|
+
Two models argue before anything is posted. A main reviewer finds issues. A debate reviewer tries to
|
|
28
|
+
knock them down and may add its own. The main reviewer then makes the final call, and one review with
|
|
29
|
+
inline comments lands on the PR or MR. It posts from the user's own `gh`, `glab` or `az` account as a
|
|
30
|
+
non-approval review or comment. It never approves and never requests changes.
|
|
31
|
+
|
|
32
|
+
You are the orchestrator. You run one command and relay the result. You do not review the diff
|
|
33
|
+
yourself, and you do not touch the PR.
|
|
34
|
+
|
|
35
|
+
## Run it
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
node "<skill-dir>/scripts/review-pr.mjs" --local [--base <ref>]
|
|
39
|
+
node "<skill-dir>/scripts/review-pr.mjs" <pr-url | number> [--dry-run]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
- If the user wants a review and there is no PR/MR URL, run `--local` from the repo (or `--repo-dir`). Do not invent a URL. Relay stdout. `--local` never talks to a forge and rejects non-UTF-8 Git paths rather than decoding them lossily.
|
|
43
|
+
- `<pr-url>` is a GitHub `/pull/N`, GitLab `/-/merge_requests/N`, or Azure DevOps
|
|
44
|
+
`/_git/<repo>/pullrequest/N` URL (`dev.azure.com` or the legacy `*.visualstudio.com`). A bare number
|
|
45
|
+
resolves against the cwd's `origin`, including Azure DevOps https and `ssh.dev.azure.com:v3/` remotes.
|
|
46
|
+
- `--dry-run` prints a live PR review instead of posting it. It does not combine with `--local`.
|
|
47
|
+
- Azure DevOps needs `az` logged in (`az login`) with access to the project. No extension is required,
|
|
48
|
+
the script talks to the REST API through `az rest`. A review there is N inline comment threads plus
|
|
49
|
+
one closed summary thread, since Azure DevOps has no single review object; the alert blockquotes
|
|
50
|
+
render as plain quotes, which still read.
|
|
51
|
+
- The reviewers are two delegate-skills lanes, `review-main` and `review-debate`. If either is missing
|
|
52
|
+
the script says so. Add them with `delegate-setup`. Pick two different implementers, since the debate
|
|
53
|
+
is only worth something when the second model doesn't share the first one's blind spots (main
|
|
54
|
+
`claude` or `grok`, debate `codex` at high effort is a good pair). For a one-off, pass
|
|
55
|
+
`--main <implementer>` or `--debate <implementer>`. Only implementers whose relay has `--read-only`
|
|
56
|
+
are accepted. These two lanes belong to the reviewer. Don't point them at a lane you use for other
|
|
57
|
+
work, such as a plan-debate lane.
|
|
58
|
+
- Exit code `3` means this head sha already has a debate-review. Re-run with `--force` to post again.
|
|
59
|
+
- A run takes minutes, since it is two or three implementer sessions back to back. Run it in the
|
|
60
|
+
background and report the printed URL when it finishes. Don't poll tightly.
|
|
61
|
+
|
|
62
|
+
All flags: `--help`. Contracts: [references/schema.md](references/schema.md). What gets posted:
|
|
63
|
+
[references/comment-format.md](references/comment-format.md). The reviewer briefs live in `assets/prompts/`
|
|
64
|
+
and the script fills them in; you don't need to read them.
|
|
65
|
+
|
|
66
|
+
## After it posts
|
|
67
|
+
|
|
68
|
+
Each posted comment carries a `<!-- debate-review:<id> status=... -->` marker. `babysit-pr` handles
|
|
69
|
+
GitHub and GitLab rounds (verify, fix blockers, reply, resolve). It cannot harvest Azure DevOps yet,
|
|
70
|
+
so relay Azure findings directly to the user. Don't act on the findings yourself unless asked.
|
|
71
|
+
|
|
72
|
+
## Artifacts
|
|
73
|
+
|
|
74
|
+
`~/.cache/debate-review/<owner>__<repo>/<N>/<head>/` holds `run.json` (all three documents, timings,
|
|
75
|
+
what was posted) plus `main/`, `debate/`, and `final/`, each with the brief sent and the relay's
|
|
76
|
+
`result.json`.
|
|
77
|
+
`--local` writes under `~/.cache/debate-review/local/<repo>/<branch>/<head>/` instead.
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
## Limitations
|
|
81
|
+
|
|
82
|
+
- Requires `delegate-skills` with `review-main` and `review-debate` lanes and authenticated `gh`/`glab`.
|
|
83
|
+
- Docs-only import — executable helpers (`scripts/`) not included; see upstream for full runtime. Posts a single `COMMENT` review only.
|
|
84
|
+
|
|
85
|
+
> Adapted from [amElnagdy/review-skills](https://github.com/amElnagdy/review-skills) (MIT) — docs-only, runtime not bundled.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
You are the debate reviewer. A prior review pass produced the findings below. Judge them on the code,
|
|
2
|
+
not on who wrote them. Treat every claim as unattributed. Your job is to break confidence in those
|
|
3
|
+
findings and in the change itself, not to validate either. You review; you never edit. Return exactly
|
|
4
|
+
one fenced ```json block matching `debate-review.debate.v1` and nothing after it.
|
|
5
|
+
|
|
6
|
+
## Input
|
|
7
|
+
- Repository checked out at the PR head. Base: `{{BASE}}`. Head: `{{HEAD}}`.
|
|
8
|
+
- Diff: `git diff {{BASE}}...{{HEAD}}`.
|
|
9
|
+
- Findings under review:
|
|
10
|
+
{{FINDINGS_JSON}}
|
|
11
|
+
|
|
12
|
+
## Stance
|
|
13
|
+
Default to skepticism in both directions. The three verdicts are not symmetric. `refute` has the
|
|
14
|
+
highest bar.
|
|
15
|
+
|
|
16
|
+
- `refute` only when the refutation is constructible from the code. The claim is factually wrong
|
|
17
|
+
(quote the actual line). It is provably impossible (show the type, constant, or invariant). It is
|
|
18
|
+
already guarded in this diff (cite the guard). Or it has no observable effect.
|
|
19
|
+
- `downgrade` when the defect is real but severity or confidence is overstated. That includes realistic
|
|
20
|
+
but unverified state (a race, nil on a rare but reachable path, a cold cache, an absent optional
|
|
21
|
+
field) when the finding was written as always-on or blocking.
|
|
22
|
+
- `confirm` when you traced the path yourself and it holds. Realistic runtime state you cannot disprove
|
|
23
|
+
from the code is not grounds to refute.
|
|
24
|
+
|
|
25
|
+
Do not refute a finding for being speculative or "dependent on runtime state" when that state is
|
|
26
|
+
realistic. Re-read the code. Do not treat the finding's quoted evidence as proof that the line says
|
|
27
|
+
what it claims.
|
|
28
|
+
|
|
29
|
+
Then attack the change where the first pass did not look. `new_findings` is a gap sweep, not a second
|
|
30
|
+
review. Add one only when it is `blocking`, you can name the trigger and the wrong result, and it is
|
|
31
|
+
one of: auth or trust boundaries, data loss or duplication, idempotency or partial failure, races and
|
|
32
|
+
ordering, schema drift or migrations. Do not relabel a non-blocking issue as blocking to get it
|
|
33
|
+
through. Zero new findings is the expected outcome on most PRs. Do not pad.
|
|
34
|
+
|
|
35
|
+
## Bar
|
|
36
|
+
- Every verdict and every new finding carries evidence: `file:line` or quoted code. Where a grep or a
|
|
37
|
+
test settles it, run it and quote the command and output. A refutation without evidence is a
|
|
38
|
+
downgrade.
|
|
39
|
+
- Do not invent files, lines, or runtime behaviour. If a conclusion rests on an inference, say so and
|
|
40
|
+
keep the confidence honest.
|
|
41
|
+
- Material only. No style, naming, or cleanup.
|
|
42
|
+
- New finding ids are `D1`, `D2`, and so on. Same shape as the findings under review.
|
|
43
|
+
|
|
44
|
+
## Before you emit
|
|
45
|
+
Check each verdict and each new finding. Is it adversarial rather than stylistic? Tied to a location
|
|
46
|
+
you actually read? Plausible under a failure scenario you can state? Actionable? Drop anything that
|
|
47
|
+
fails one. Every `F*` id still needs exactly one verdict. A verdict on an `F*` does not suppress a `D*`
|
|
48
|
+
at the same location for a different failure. Record both.
|
|
49
|
+
|
|
50
|
+
## Schema
|
|
51
|
+
{{SCHEMA_DEBATE}}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
You are the main reviewer of a pull request. You review; you never edit. Return exactly one fenced
|
|
2
|
+
```json block matching `debate-review.findings.v1` (schema below) and nothing after it.
|
|
3
|
+
|
|
4
|
+
## Input
|
|
5
|
+
- Repository checked out at the PR head. Base ref: `{{BASE}}`. Head: `{{HEAD}}`.
|
|
6
|
+
- Diff to review: `git diff {{BASE}}...{{HEAD}}`. Commits: `git log {{BASE}}..{{HEAD}} --oneline`.
|
|
7
|
+
- PR title and body: {{PR_TITLE}}. {{PR_BODY}}
|
|
8
|
+
- Spec source (issue or PRD), if any: {{SPEC}}
|
|
9
|
+
- Standards sources found in the repo (CONTRIBUTING, CODING_STANDARDS, CLAUDE.md, AGENTS.md): {{STANDARDS}}
|
|
10
|
+
|
|
11
|
+
## Review on these axes
|
|
12
|
+
1. Correctness and security. Bugs, broken edge cases, auth, data, and idempotency hazards in the
|
|
13
|
+
changed code. Run three passes in order, and don't let one pass suppress another:
|
|
14
|
+
- Every hunk line by line, then its enclosing function. A defect on an unchanged line of a function
|
|
15
|
+
this PR touches is in scope. For each line ask what input, state, timing, or config makes it wrong.
|
|
16
|
+
- Every deleted or replaced line. Name the invariant it enforced, then find where the new code
|
|
17
|
+
re-establishes it. If you cannot find it, that is a finding.
|
|
18
|
+
- Every changed signature or contract. Grep the callers. Check each for a new precondition, a changed
|
|
19
|
+
return shape, a new exception, or an ordering dependency.
|
|
20
|
+
2. Spec. Requirements asked for but missing or partial. Behaviour nobody asked for. Implemented but
|
|
21
|
+
wrong. Quote the spec line. If there is no spec, skip the axis and say so in `summary`.
|
|
22
|
+
3. Standards. Violations of the repo's documented rules. Quote the exact rule text and the exact line
|
|
23
|
+
that breaks it. No "spirit of the doc". Do not invent a finding because a standards file exists.
|
|
24
|
+
Skip anything tooling enforces.
|
|
25
|
+
4. Tests and docs, only when the diff touches them. Tests that don't pin behaviour. Docs that drift
|
|
26
|
+
from code.
|
|
27
|
+
|
|
28
|
+
## Bar
|
|
29
|
+
You are reviewing for precision. The passes above find candidates. Only candidates that clear this
|
|
30
|
+
bar become findings.
|
|
31
|
+
|
|
32
|
+
- Report a finding only if all of these hold:
|
|
33
|
+
1. It materially affects one of the axes above.
|
|
34
|
+
2. It is one discrete, actionable defect at one location.
|
|
35
|
+
3. Fixing it does not demand more rigour than the rest of this codebase already shows.
|
|
36
|
+
4. This diff introduced it, or it sits on an unchanged line of a function this PR touches, or it is
|
|
37
|
+
an unchanged caller broken by a contract this PR changed. Other pre-existing defects are out of
|
|
38
|
+
scope even when real.
|
|
39
|
+
5. If you claim it breaks code elsewhere, you identified that code and can cite it. "May affect" is
|
|
40
|
+
not a finding.
|
|
41
|
+
6. It does not rest on an unstated assumption about intent. A behaviour change stated in the PR body
|
|
42
|
+
is not a bug.
|
|
43
|
+
- Never report what CI already catches (type errors, lint, formatting, missing imports, failing tests).
|
|
44
|
+
Never report naming, style, or "consider extracting".
|
|
45
|
+
- `evidence` names the trigger (input, state, timing, or config) and the wrong result (output, crash,
|
|
46
|
+
or violated invariant). Where a grep or a test settles it, run it and quote the command and output.
|
|
47
|
+
If you cannot name the trigger, you do not have a finding.
|
|
48
|
+
- `confidence`. Findings below the pipeline's `min_confidence` (default 0.5) are dropped before debate.
|
|
49
|
+
- `0.9` to `1.0`: you traced the trigger through to the wrong result.
|
|
50
|
+
- `0.7` to `0.9`: mechanism quoted, trigger realistic but unverified (concurrency, cold cache, absent
|
|
51
|
+
optional field, timeout).
|
|
52
|
+
- `0.5` to `0.7`: plausible, but a guard elsewhere was not ruled out. Say which guard you looked for.
|
|
53
|
+
- below `0.5`: do not emit it.
|
|
54
|
+
- Anchor `line_start` and `line_end` to the new side of the diff. Pick the one to three lines that show
|
|
55
|
+
the defect, never more than ten. If the defect is outside the diff, anchor the nearest changed line
|
|
56
|
+
and say so in `evidence`.
|
|
57
|
+
- `claim`, `evidence`, and `recommendation` are posted as an inline comment on a colleague's PR. One
|
|
58
|
+
short paragraph each. At most three lines of quoted code. Matter-of-fact, plain punctuation (no em
|
|
59
|
+
dashes). No flattery. No severity inflation. Say which inputs the bug depends on.
|
|
60
|
+
- Do not stop at the first qualifying finding, and do not pad. Zero findings with `verdict: approve`
|
|
61
|
+
is the correct answer for a clean diff. Under 15 findings. `summary` under 300 words.
|
|
62
|
+
|
|
63
|
+
## Schema
|
|
64
|
+
{{SCHEMA_FINDINGS}}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
You are the main reviewer again, making the final call. Two positions about this pull request are
|
|
2
|
+
below. Treat both as unattributed arguments about the code. Not yours, not a peer's verdict. Decide
|
|
3
|
+
each one from the repository. You review; you never edit. Return exactly one fenced ```json block
|
|
4
|
+
matching `debate-review.final.v1` and nothing after it.
|
|
5
|
+
|
|
6
|
+
## Input
|
|
7
|
+
- Repository checked out at the PR head. Base: `{{BASE}}`. Head: `{{HEAD}}`.
|
|
8
|
+
- Position A, the original findings (`F*`):
|
|
9
|
+
{{FINDINGS_JSON}}
|
|
10
|
+
- Position B, verdicts on each `F*` plus any additional findings (`D*`):
|
|
11
|
+
{{DEBATE_JSON}}
|
|
12
|
+
|
|
13
|
+
## Rules
|
|
14
|
+
- Re-read the code for every `refute` and `downgrade` before deciding.
|
|
15
|
+
- `withdrawn` requires a positive reason of your own. Name the line, guard, type, invariant, or spec
|
|
16
|
+
clause that makes the original claim wrong, and put it in `debate_note`. "Position B disagreed" is
|
|
17
|
+
not a reason. Neither is the absence of a counter-argument.
|
|
18
|
+
- If the challenge is wrong and you can show why, use `contested`, with the why in `debate_note`.
|
|
19
|
+
- Accept a valid `downgrade` by changing `severity` and marking `agreed`.
|
|
20
|
+
- If every challenge really does collapse, withdraw them all. Do not keep a finding in order to
|
|
21
|
+
have kept one.
|
|
22
|
+
- For each `D*`, apply the same bar as any finding. This diff introduced it (or it sits on an unchanged
|
|
23
|
+
line of a function this PR touches, or an unchanged caller broken by a changed contract). It is
|
|
24
|
+
discrete. `evidence` names a trigger and a wrong result. CI would not already catch it.
|
|
25
|
+
- Holds: `agreed`.
|
|
26
|
+
- Does not hold: `withdrawn`, with your evidence in `debate_note`. A rejected `D*` is never posted.
|
|
27
|
+
`contested` is reserved for `F*` findings you hold against a refutation.
|
|
28
|
+
- Restates an `F*` at the same location for the same failure: `withdrawn` with `debate_note`
|
|
29
|
+
"duplicate of F<n>". Keep the `F*`.
|
|
30
|
+
- Carry every finding through with its final `status`. Drop nothing silently.
|
|
31
|
+
- `claim`, `evidence`, `recommendation`, `debate_note`, and `summary` are posted on the PR for a
|
|
32
|
+
reader who never saw this exchange. Write them for that reader: no `F1`/`D2` ids, no "Position A"
|
|
33
|
+
or "Position B", no "main" or "debate" labels. Say "the second pass" or "the challenge" if you must
|
|
34
|
+
refer to it. One short paragraph each, at most three lines of quoted code, matter-of-fact, plain
|
|
35
|
+
punctuation (no em dashes), no flattery, no severity inflation.
|
|
36
|
+
- `debate_note` is one sentence: what the challenge said and why the finding stands, moved, or was
|
|
37
|
+
dropped.
|
|
38
|
+
- `summary` is the ship/no-ship read after debate, one paragraph under 120 words. Name what is still
|
|
39
|
+
blocking. Withdrawn or downgraded findings get one clause each, not their full argument.
|
|
40
|
+
|
|
41
|
+
## Schema
|
|
42
|
+
{{SCHEMA_FINAL}}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# What gets posted
|
|
2
|
+
|
|
3
|
+
One review run per head sha. GitHub uses a `COMMENT` review; GitLab and Azure DevOps use comment
|
|
4
|
+
threads plus a summary. None can approve or request changes on the author's behalf. Inline comments
|
|
5
|
+
anchor to `line_start` through `line_end` on the new side of the diff.
|
|
6
|
+
|
|
7
|
+
## Levels
|
|
8
|
+
|
|
9
|
+
Severity is shown on the PR as a level, computed by the script from the contract's fields:
|
|
10
|
+
|
|
11
|
+
| Level | Meaning | Alert |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| P0 | blocking on the security axis | `[!CAUTION]` (red) |
|
|
14
|
+
| P1 | any other blocking finding | `[!WARNING]` (yellow) |
|
|
15
|
+
| P2 | non-blocking | `[!NOTE]` (blue) |
|
|
16
|
+
|
|
17
|
+
GitHub and GitLab (17.10+) render those alert blockquotes with colour; anything else, Azure DevOps
|
|
18
|
+
included, shows a plain quote, which still reads.
|
|
19
|
+
|
|
20
|
+
## Review body
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
<!-- debate-review head=<sha> main=<implementer> debate=<implementer> agreed=<n> contested=<m> p0=<a> p1=<b> p2=<c> -->
|
|
24
|
+
| Level | Count |
|
|
25
|
+
| --- | ---: |
|
|
26
|
+
| P0 | <a> |
|
|
27
|
+
| P1 | <b> |
|
|
28
|
+
| P2 | <c> |
|
|
29
|
+
| contested | <m> |
|
|
30
|
+
|
|
31
|
+
**debate-review** on `<sha7>`, main `<implementer>`, second `<implementer>`.
|
|
32
|
+
|
|
33
|
+
<final.summary>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Inline comment
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
<!-- debate-review:<id> status=<agreed|contested> severity=<blocking|non-blocking> level=<P0|P1|P2> -->
|
|
40
|
+
> [!CAUTION | WARNING | NOTE]
|
|
41
|
+
> **<level>, agreed by both reviewers.** <claim>
|
|
42
|
+
|
|
43
|
+
<evidence>
|
|
44
|
+
|
|
45
|
+
Suggested: <recommendation>
|
|
46
|
+
|
|
47
|
+
_<debate_note>_
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Azure DevOps prepends `<!-- debate-review finding=<content-hash> head=<sha> [attempt=<id>] -->` to
|
|
51
|
+
identify threads that landed before a posting failure. A retry without `--force` resumes the exact
|
|
52
|
+
saved payload from `run.json` before checkout; inline and summary threads are reused, and forced runs
|
|
53
|
+
use the attempt id to avoid matching an older completed review. `--force` always starts a fresh review.
|
|
54
|
+
|
|
55
|
+
A contested finding's first line reads `**<level>, contested. The second reviewer disagreed; the
|
|
56
|
+
main reviewer holds it, reasons below.** <claim>`.
|
|
57
|
+
|
|
58
|
+
## Why the HTML markers
|
|
59
|
+
|
|
60
|
+
- `babysit-pr` finds these threads by the `<!-- debate-review` marker, not by a `[bot]` author. The
|
|
61
|
+
review is posted from the user's own account, so there is no bot author to match on.
|
|
62
|
+
- `head=<sha>` lets a re-run detect that this push already has a review and skip it (or `--force`).
|
|
63
|
+
- Replies inside a thread keep babysit-pr's attribution line: `I am <model-slug> writing on behalf of <user>.`
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# debate-review JSON contracts
|
|
2
|
+
|
|
3
|
+
Three documents flow through one run. Each implementer returns its document as the only fenced
|
|
4
|
+
```json block in its final message. The script extracts it and checks it against the contract below.
|
|
5
|
+
Anything that fails the check stops the run. Nothing gets posted.
|
|
6
|
+
|
|
7
|
+
The script reads sections 1, 2, and 3 below by heading order and pastes them into the briefs. Don't
|
|
8
|
+
reorder them or add a `##` heading above section 3.
|
|
9
|
+
|
|
10
|
+
## 1. `debate-review.findings.v1`, main reviewer to script
|
|
11
|
+
|
|
12
|
+
```json
|
|
13
|
+
{
|
|
14
|
+
"schema": "debate-review.findings.v1",
|
|
15
|
+
"head": "<head sha reviewed>",
|
|
16
|
+
"verdict": "approve | needs-attention",
|
|
17
|
+
"summary": "one-paragraph ship/no-ship read",
|
|
18
|
+
"findings": [
|
|
19
|
+
{
|
|
20
|
+
"id": "F1",
|
|
21
|
+
"file": "src/foo.py",
|
|
22
|
+
"line_start": 42,
|
|
23
|
+
"line_end": 48,
|
|
24
|
+
"severity": "blocking | non-blocking",
|
|
25
|
+
"axis": "correctness | security | spec | standards | tests | docs",
|
|
26
|
+
"claim": "what is wrong, one sentence",
|
|
27
|
+
"evidence": "why: the code path, the quoted line, the spec line",
|
|
28
|
+
"recommendation": "concrete change",
|
|
29
|
+
"confidence": 0.0
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- `id` is `F<n>` for the main reviewer and `D<n>` for findings the debate reviewer adds.
|
|
36
|
+
- `line_start` and `line_end` must be lines on the new side of the PR diff, because GitHub and GitLab
|
|
37
|
+
can only anchor comments there. If the problem is outside the diff, anchor the nearest changed line
|
|
38
|
+
and say so in `evidence`.
|
|
39
|
+
- `severity` follows babysit-pr. Blocking means it ships a defect, a security or data exposure, a spec
|
|
40
|
+
violation, a migration hazard, or a failing check. Everything else is non-blocking.
|
|
41
|
+
- `confidence` is 0 to 1. Findings under `min_confidence` (default 0.5) are dropped before debate.
|
|
42
|
+
|
|
43
|
+
## 2. `debate-review.debate.v1`, debate reviewer to script
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"schema": "debate-review.debate.v1",
|
|
48
|
+
"head": "<same sha>",
|
|
49
|
+
"verdicts": [
|
|
50
|
+
{ "id": "F1", "verdict": "confirm | refute | downgrade", "reason": "one sentence", "evidence": "file:line or quoted code" }
|
|
51
|
+
],
|
|
52
|
+
"new_findings": [ /* same shape as findings[], ids D1, D2, ... */ ]
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- Every `F*` id gets exactly one verdict. A missing id counts as `confirm` with reason "no objection".
|
|
57
|
+
- `downgrade` means the defect is real but severity or confidence was overstated.
|
|
58
|
+
- `refute` must carry evidence. A bare "I disagree" is recorded but weighted as `downgrade`.
|
|
59
|
+
- `new_findings` is a gap sweep, not a second review. Blocking only, with a named trigger. Entries
|
|
60
|
+
below `min_confidence` are dropped the same way the main findings are. Zero new findings is the
|
|
61
|
+
expected outcome on most PRs.
|
|
62
|
+
|
|
63
|
+
## 3. `debate-review.final.v1`, main reviewer (rebuttal pass) to script, then to the PR
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"schema": "debate-review.final.v1",
|
|
68
|
+
"head": "<same sha>",
|
|
69
|
+
"summary": "final ship/no-ship read after debate",
|
|
70
|
+
"findings": [
|
|
71
|
+
{
|
|
72
|
+
"id": "F1",
|
|
73
|
+
"status": "agreed | contested | withdrawn",
|
|
74
|
+
"severity": "blocking | non-blocking",
|
|
75
|
+
"file": "...", "line_start": 0, "line_end": 0,
|
|
76
|
+
"claim": "...", "evidence": "...", "recommendation": "...",
|
|
77
|
+
"debate_note": "one line: what the challenge said and why the finding was kept, dropped, or changed"
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
- `agreed`: both models stand behind it. Posted.
|
|
84
|
+
- `contested`: the debate reviewer refuted it and the main reviewer holds, with evidence. Posted with a
|
|
85
|
+
`contested` tag, or dropped with `--contested drop`.
|
|
86
|
+
- `withdrawn`: the main reviewer accepts the refutation. Never posted, kept in the run log.
|
|
87
|
+
- `D*` findings can only end as `agreed` or `withdrawn`. A `D*` the main reviewer rejects with evidence
|
|
88
|
+
is `withdrawn` with the objection in `debate_note`. It is never `contested`, so a rejected claim from
|
|
89
|
+
the second model is never posted. A `D*` that duplicates an `F*` is `withdrawn` with `debate_note`
|
|
90
|
+
"duplicate of F<n>".
|
|
91
|
+
|
|
92
|
+
## Run log
|
|
93
|
+
|
|
94
|
+
`<out-dir>/run.json` keeps all three documents plus timings, implementers, lanes, and the posted
|
|
95
|
+
comment ids, keyed by `owner/repo#N@head`. Re-running on the same head does nothing unless `--force`.
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: delegate-setup
|
|
3
|
+
description: Configure approved delegation lanes across installed implementer CLIs,
|
|
4
|
+
including optional model and effort choices, then write global or project config
|
|
5
|
+
only after explicit user approval.
|
|
6
|
+
risk: safe
|
|
7
|
+
category: agent-orchestration
|
|
8
|
+
source: https://github.com/amElnagdy/delegate-skills
|
|
9
|
+
source_repo: amElnagdy/delegate-skills
|
|
10
|
+
source_type: community
|
|
11
|
+
date_added: '2026-08-26'
|
|
12
|
+
license: MIT
|
|
13
|
+
license_source: https://github.com/amElnagdy/delegate-skills/blob/master/LICENSE
|
|
14
|
+
compatibility: Requires Node 18+. No implementer CLIs are required — the skill discovers
|
|
15
|
+
what is available.
|
|
16
|
+
metadata:
|
|
17
|
+
version: 0.5.0
|
|
18
|
+
---
|
|
19
|
+
# Delegate Setup
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
- You want to configure which implementer CLI handles which kind of work (fleet lanes).
|
|
24
|
+
- You need to discover installed implementers and write lane config after user approval.
|
|
25
|
+
|
|
26
|
+
You are the **orchestrator** in **setup mode**. Discover installed implementer CLIs, propose a
|
|
27
|
+
**fleet of lanes**, and write configuration only after the user approves.
|
|
28
|
+
|
|
29
|
+
This skill does **not** dispatch coding work. It only authors the lane map.
|
|
30
|
+
|
|
31
|
+
One concept: **lanes**. Never say “routes.”
|
|
32
|
+
|
|
33
|
+
Example lane: **feature** → implementer `opencode`, model `opencode/grok`, variant `high`
|
|
34
|
+
(OpenCode uses `variant` for reasoning intensity, not `effort`).
|
|
35
|
+
|
|
36
|
+
## When NOT to use this
|
|
37
|
+
|
|
38
|
+
- The user wants a task implemented — use the matching `*-delegate` skill instead.
|
|
39
|
+
- A one-off model change on a single dispatch — pass `--model` / `--effort` / `--variant` on that relay.
|
|
40
|
+
|
|
41
|
+
## Hard rules
|
|
42
|
+
|
|
43
|
+
1. Every lane **must** include `implementer`.
|
|
44
|
+
2. Put dials on the same object (`model`, `effort` or `variant`, …) only if that implementer supports them — see [references/schema.md](references/schema.md).
|
|
45
|
+
3. Show a human-readable lane table **and** the full JSON before every write; re-show after every tweak.
|
|
46
|
+
4. Write **only** after an explicit approval (“yes”, “approve”, “write it”).
|
|
47
|
+
5. Ask scope unless already clear: **global** (all projects) vs **this repo only**. Never create a project file just because cwd is a git repo. If there is no git repo, default to global and say so.
|
|
48
|
+
6. Do not invent model identifiers.
|
|
49
|
+
7. In interview or usage-scan mode, never write **any** dial the user did not give you and the schema does not require — omit it, so the CLI’s or relay’s own default applies.
|
|
50
|
+
8. Prefer 3–5 useful lanes over a kitchen-sink map.
|
|
51
|
+
9. Never edit `AGENTS.md`, `CLAUDE.md`, or other user agent-instruction files.
|
|
52
|
+
10. Never run a `*-delegate` relay from this skill.
|
|
53
|
+
|
|
54
|
+
(`<skill-dir>` is this skill’s install directory — the folder that contains this `SKILL.md`.)
|
|
55
|
+
|
|
56
|
+
## Flow
|
|
57
|
+
|
|
58
|
+
`discover → load → grounding menu → propose (with Basis) → scope → approve → write`
|
|
59
|
+
|
|
60
|
+
### 1. Discover
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
node "<skill-dir>/scripts/discover.mjs"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Summarize installed vs missing, auth (`true` / `false` / `null` = unknown), and whether models were
|
|
67
|
+
`reported`, `aliases` (curated aliases in the registry, not live discovery — full model names also
|
|
68
|
+
work), `unsupported`, or `failed`.
|
|
69
|
+
|
|
70
|
+
### 2. Load existing (effective map)
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
node "<skill-dir>/scripts/config.mjs" load --cwd "$PWD"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
- Neither present → “No lanes configured yet.”
|
|
77
|
+
- Otherwise → table of **effective** lanes with a Source column (`global` / `project`). Do not paste
|
|
78
|
+
both raw files unless asked.
|
|
79
|
+
- If `projectPresent` is true and `projectTrusted` is false, label the project lanes **untrusted**.
|
|
80
|
+
They cannot dispatch until the user reviews and approves a project write.
|
|
81
|
+
|
|
82
|
+
### 3. Propose
|
|
83
|
+
|
|
84
|
+
Discovery reports capability, never task fit. So ask **one** grounding question before proposing
|
|
85
|
+
anything — one question, three options, not a wizard:
|
|
86
|
+
|
|
87
|
+
> How should I pick the lanes? **(1) Quick defaults** — I decide, no questions.
|
|
88
|
+
> **(2) Interview** — about four questions on how you want work allocated.
|
|
89
|
+
> **(3) Usage scan** — I re-read your CLIs’ local session folders (counts and dates only, never the
|
|
90
|
+
> conversations) and let the numbers place your lanes — if one CLI dominates, expect one question
|
|
91
|
+
> about its role. Happy to do 2 and 3 together.
|
|
92
|
+
|
|
93
|
+
- **Quick defaults** → propose immediately.
|
|
94
|
+
- **Interview** → the four questions (allocation policy, never model rankings) and how to ask them
|
|
95
|
+
(one medium per round) live in [references/setup-dialogue.md](references/setup-dialogue.md) — read
|
|
96
|
+
it before you ask.
|
|
97
|
+
- **Usage scan** → `node "<skill-dir>/scripts/discover.mjs" --usage`. Tell the user it is metadata
|
|
98
|
+
only before running it. Each discovered CLI gains `usage: { sessions, lastUsed }`; `null` means no
|
|
99
|
+
probe is wired — unknown, not unused.
|
|
100
|
+
- **Both** → run the scan first, then ask only what the numbers cannot answer.
|
|
101
|
+
- Inside a git repo, repo signals (languages, test weight, frontend share) are a fourth source of
|
|
102
|
+
evidence. They do not change the menu; they feed the proposal and the `repo` basis.
|
|
103
|
+
|
|
104
|
+
**That menu is also the consent surface** — the option chosen sets how much of the map is yours to
|
|
105
|
+
decide:
|
|
106
|
+
|
|
107
|
+
- **Quick defaults** — the user hired your opinion. A full map is legitimate, dials included; label
|
|
108
|
+
every lane `my opinion`, say plainly that the map is your opinion, and keep it cheap to revise.
|
|
109
|
+
- **Interview / usage scan** — evidence modes, so **every** dial is gated (rule 7): set one only from
|
|
110
|
+
the user’s answer, or where the schema requires it (opencode lanes require `model`). Omitting is
|
|
111
|
+
always safe — every dial has a default the user already lives with, and a CLI’s configured default
|
|
112
|
+
is their standing choice, better evidence than your priors. Choosing which installed implementer
|
|
113
|
+
gets a lane is still yours — Basis `my opinion` — but a dial that raises spend is not: offer your
|
|
114
|
+
dial picks only as an addendum after the proposal, see
|
|
115
|
+
[references/setup-dialogue.md](references/setup-dialogue.md).
|
|
116
|
+
- **An unanswered question shrinks the map; it never licenses a substitution.** Propose fewer, more
|
|
117
|
+
conservative lanes, name the axis you are blind on (no quota answer → say the map is quota-blind),
|
|
118
|
+
and invite the answer anytime. Re-ask once at most; never backfill silence with priors.
|
|
119
|
+
|
|
120
|
+
**Delegation economics.** The orchestrator reviews and lands every result — the review is the
|
|
121
|
+
quality gate, so optimize total cost, not implementer prestige:
|
|
122
|
+
|
|
123
|
+
- Prefer capable, authenticated, burnable, **low-usage** CLIs for bounded, objectively gated work
|
|
124
|
+
(tests, mechanical refactors, straightforward fixes) when their reliability keeps review and
|
|
125
|
+
rework economical — lanes push token burn away from the subscriptions the user is protecting.
|
|
126
|
+
Low usage alone does not establish burnable: discovery cannot see plans, limits, or per-run
|
|
127
|
+
cost, and a rarely-used CLI may be metered or deliberately avoided. Burnable comes from the
|
|
128
|
+
user's quota answer — or, in quick defaults, from your labeled opinion.
|
|
129
|
+
- Avoid binding a lane to a CLI the user is protecting or orchestrates from, by default; bind it
|
|
130
|
+
only when the user asks for it or no acceptable alternative exists. Lanes are
|
|
131
|
+
**orchestrator-blind**: the same lane fires from every seat the user drives from, and from that
|
|
132
|
+
CLI's own seat it dispatches the CLI to itself.
|
|
133
|
+
- Surplus placement breaks down when rework and review cost exceed the savings; when the
|
|
134
|
+
implementer is flaky; when correctness rides on security, concurrency, migrations, or unstated
|
|
135
|
+
domain knowledge; and when the output **is** the product (debate, architecture, research) —
|
|
136
|
+
review limits damage, it does not manufacture a good first attempt. Bind those lanes to stronger
|
|
137
|
+
implementers.
|
|
138
|
+
- An explicit "spare X" answer removes X from proposed lanes by default, and overrides blanket
|
|
139
|
+
posture answers on any lane the user explicitly retains for X — ask whether the posture applies
|
|
140
|
+
there; omit the dial if unanswered. Never silently stretch one answer across an axis it
|
|
141
|
+
conflicts with.
|
|
142
|
+
|
|
143
|
+
Question phrasings for the burn/spare and trust interview live in
|
|
144
|
+
[references/setup-dialogue.md](references/setup-dialogue.md).
|
|
145
|
+
|
|
146
|
+
Then propose the lanes. Name them after the work the user described; fall back to `feature`, `tests`,
|
|
147
|
+
`ui`, `fast`, `complex`. Installed implementers only.
|
|
148
|
+
|
|
149
|
+
Show:
|
|
150
|
+
|
|
151
|
+
| Lane | Implementer | Model | Effort / variant | Basis | Source (if updating) |
|
|
152
|
+
| --- | --- | --- | --- | --- | --- |
|
|
153
|
+
| feature | opencode | opencode/grok | variant: high | your answer + schema requirement | — |
|
|
154
|
+
| tests | codex | — | — | usage data | — |
|
|
155
|
+
| ui | claude | — | — | my opinion (implementer) | — |
|
|
156
|
+
|
|
157
|
+
**Basis** is mandatory on every lane: `your answer` / `usage data` / `repo` / `my opinion` /
|
|
158
|
+
`schema requirement` (a dial the schema forces is neither evidence nor opinion — say so). A lane you
|
|
159
|
+
picked from model-quality priors is `my opinion` — never present it as something the tooling
|
|
160
|
+
determined, and “installed and authenticated” is capability, not evidence of fit. When a lane’s
|
|
161
|
+
implementer and its dials come from different places, split the label — see
|
|
162
|
+
[references/setup-dialogue.md](references/setup-dialogue.md).
|
|
163
|
+
|
|
164
|
+
Then the **complete** JSON (`version`: `delegate-fleet.v1`). One line of why per lane; flag auth or
|
|
165
|
+
model uncertainty.
|
|
166
|
+
|
|
167
|
+
Schema and dial table: [references/schema.md](references/schema.md).
|
|
168
|
+
|
|
169
|
+
### 4. Scope
|
|
170
|
+
|
|
171
|
+
- User said global / all projects / outside the project → `global`.
|
|
172
|
+
- No git repo → `global` (say so).
|
|
173
|
+
- Else ask once: global vs this repo only.
|
|
174
|
+
|
|
175
|
+
### 5. Approve and write
|
|
176
|
+
|
|
177
|
+
On explicit yes, write **only** the chosen scope (validate first). Build the payload from that
|
|
178
|
+
scope’s raw file (or an empty `lanes` object if new) — not from the effective merged `load` view,
|
|
179
|
+
or a project write will shadow global-only lanes and a global write will promote project-only ones.
|
|
180
|
+
|
|
181
|
+
Create a uniquely named file under the platform temporary directory (`$TMPDIR`, `%TEMP%`, or Node
|
|
182
|
+
`os.tmpdir()`; never hard-code `/tmp`, which breaks on native Windows), write the **exact approved
|
|
183
|
+
JSON** into it with the orchestrator's file-writing tool, and use that populated path as
|
|
184
|
+
`<lanes-json>` below. Never validate an empty temp file. Remove the temp file after the
|
|
185
|
+
validation/write attempt, whether it succeeds or fails.
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
node "<skill-dir>/scripts/config.mjs" validate "<lanes-json>"
|
|
189
|
+
node "<skill-dir>/scripts/config.mjs" write --scope global "<lanes-json>"
|
|
190
|
+
# or: write --scope project --cwd /path/to/repo "<lanes-json>"
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Re-read with `load`, then confirm the path written and the active lane names. Project writes bind
|
|
194
|
+
approval to the exact config content; later changes fail closed until re-approved. On update, a short
|
|
195
|
+
before/after is enough.
|
|
196
|
+
|
|
197
|
+
### 6. Ready to delegate
|
|
198
|
+
|
|
199
|
+
Stop after confirming. Tell the user the map is ready. For later work: read the lane’s
|
|
200
|
+
`implementer`, load that `*-delegate` skill, and dispatch with `--lane <name>` (explicit
|
|
201
|
+
`--model` / `--effort` / `--variant` still win when passed). Do not start a delegate task
|
|
202
|
+
unless they ask.
|
|
203
|
+
|
|
204
|
+
## Reconfigure
|
|
205
|
+
|
|
206
|
+
Same flow. Show the effective current map, propose changes, approve, write one scope’s file.
|
|
207
|
+
Reinstalling the skills package must not rewrite these files — they live outside the package.
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
## Limitations
|
|
211
|
+
|
|
212
|
+
- Never dispatches work itself — only discovers CLIs and writes config after explicit approval.
|
|
213
|
+
- Docs-only import — executable helpers (`scripts/`) not included; see upstream for full runtime. Requires Node 18+.
|
|
214
|
+
|
|
215
|
+
> Adapted from [amElnagdy/delegate-skills](https://github.com/amElnagdy/delegate-skills) (MIT) — docs-only, runtime not bundled.
|