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.
Files changed (117) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +25 -1
  2. package/bundled-skills/agy-delegate/SKILL.md +168 -0
  3. package/bundled-skills/agy-delegate/references/dispatch-and-poll.md +140 -0
  4. package/bundled-skills/agy-delegate/references/multi-task-queues.md +59 -0
  5. package/bundled-skills/agy-delegate/references/review-and-land.md +103 -0
  6. package/bundled-skills/agy-delegate/references/writing-the-brief.md +124 -0
  7. package/bundled-skills/aider-delegate/SKILL.md +227 -0
  8. package/bundled-skills/aider-delegate/references/dispatch-and-poll.md +154 -0
  9. package/bundled-skills/aider-delegate/references/multi-task-queues.md +68 -0
  10. package/bundled-skills/aider-delegate/references/review-and-land.md +101 -0
  11. package/bundled-skills/aider-delegate/references/writing-the-brief.md +142 -0
  12. package/bundled-skills/babysit-pr/SKILL.md +343 -0
  13. package/bundled-skills/claude-delegate/SKILL.md +182 -0
  14. package/bundled-skills/claude-delegate/references/dispatch-and-poll.md +220 -0
  15. package/bundled-skills/claude-delegate/references/multi-task-queues.md +66 -0
  16. package/bundled-skills/claude-delegate/references/review-and-land.md +117 -0
  17. package/bundled-skills/claude-delegate/references/writing-the-brief.md +158 -0
  18. package/bundled-skills/cline-delegate/SKILL.md +140 -0
  19. package/bundled-skills/cline-delegate/references/dispatch-and-poll.md +142 -0
  20. package/bundled-skills/cline-delegate/references/multi-task-queues.md +58 -0
  21. package/bundled-skills/cline-delegate/references/review-and-land.md +80 -0
  22. package/bundled-skills/cline-delegate/references/writing-the-brief.md +129 -0
  23. package/bundled-skills/codex-delegate/SKILL.md +177 -0
  24. package/bundled-skills/codex-delegate/references/dispatch-and-poll.md +161 -0
  25. package/bundled-skills/codex-delegate/references/multi-task-queues.md +66 -0
  26. package/bundled-skills/codex-delegate/references/review-and-land.md +126 -0
  27. package/bundled-skills/codex-delegate/references/writing-the-brief.md +125 -0
  28. package/bundled-skills/commandcode-delegate/SKILL.md +188 -0
  29. package/bundled-skills/commandcode-delegate/references/dispatch-and-poll.md +222 -0
  30. package/bundled-skills/commandcode-delegate/references/multi-task-queues.md +81 -0
  31. package/bundled-skills/commandcode-delegate/references/review-and-land.md +144 -0
  32. package/bundled-skills/commandcode-delegate/references/writing-the-brief.md +147 -0
  33. package/bundled-skills/copilot-delegate/SKILL.md +159 -0
  34. package/bundled-skills/copilot-delegate/references/dispatch-and-poll.md +143 -0
  35. package/bundled-skills/copilot-delegate/references/multi-task-queues.md +58 -0
  36. package/bundled-skills/copilot-delegate/references/review-and-land.md +80 -0
  37. package/bundled-skills/copilot-delegate/references/writing-the-brief.md +140 -0
  38. package/bundled-skills/cursor-delegate/SKILL.md +170 -0
  39. package/bundled-skills/cursor-delegate/references/dispatch-and-poll.md +162 -0
  40. package/bundled-skills/cursor-delegate/references/multi-task-queues.md +59 -0
  41. package/bundled-skills/cursor-delegate/references/review-and-land.md +93 -0
  42. package/bundled-skills/cursor-delegate/references/writing-the-brief.md +126 -0
  43. package/bundled-skills/debate-review/SKILL.md +85 -0
  44. package/bundled-skills/debate-review/assets/prompts/review-debate.md +51 -0
  45. package/bundled-skills/debate-review/assets/prompts/review-main.md +64 -0
  46. package/bundled-skills/debate-review/assets/prompts/review-rebuttal.md +42 -0
  47. package/bundled-skills/debate-review/references/comment-format.md +63 -0
  48. package/bundled-skills/debate-review/references/schema.md +95 -0
  49. package/bundled-skills/delegate-setup/SKILL.md +215 -0
  50. package/bundled-skills/delegate-setup/references/schema.md +100 -0
  51. package/bundled-skills/delegate-setup/references/setup-dialogue.md +101 -0
  52. package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
  53. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
  54. package/bundled-skills/docs/maintainers/repo-growth-seo.md +1 -1
  55. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  56. package/bundled-skills/docs/users/aas-core.md +1 -1
  57. package/bundled-skills/docs/users/bundles.md +1 -1
  58. package/bundled-skills/docs/users/claude-code-skills.md +1 -1
  59. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  60. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  61. package/bundled-skills/docs/users/usage.md +3 -3
  62. package/bundled-skills/docs/users/visual-guide.md +4 -4
  63. package/bundled-skills/falsify/SKILL.md +263 -0
  64. package/bundled-skills/falsify/references/bias-catalog.md +42 -0
  65. package/bundled-skills/falsify/references/mental-models.md +135 -0
  66. package/bundled-skills/falsify/templates/thinking-ledger.md +104 -0
  67. package/bundled-skills/graceful-shutdown/SKILL.md +379 -0
  68. package/bundled-skills/grok-delegate/SKILL.md +179 -0
  69. package/bundled-skills/grok-delegate/references/dispatch-and-poll.md +171 -0
  70. package/bundled-skills/grok-delegate/references/multi-task-queues.md +67 -0
  71. package/bundled-skills/grok-delegate/references/review-and-land.md +130 -0
  72. package/bundled-skills/grok-delegate/references/writing-the-brief.md +119 -0
  73. package/bundled-skills/kimi-delegate/SKILL.md +137 -0
  74. package/bundled-skills/kimi-delegate/references/dispatch-and-poll.md +134 -0
  75. package/bundled-skills/kimi-delegate/references/multi-task-queues.md +58 -0
  76. package/bundled-skills/kimi-delegate/references/review-and-land.md +92 -0
  77. package/bundled-skills/kimi-delegate/references/writing-the-brief.md +132 -0
  78. package/bundled-skills/omp-delegate/SKILL.md +186 -0
  79. package/bundled-skills/omp-delegate/references/dispatch-and-poll.md +155 -0
  80. package/bundled-skills/omp-delegate/references/multi-task-queues.md +59 -0
  81. package/bundled-skills/omp-delegate/references/review-and-land.md +95 -0
  82. package/bundled-skills/omp-delegate/references/writing-the-brief.md +149 -0
  83. package/bundled-skills/opencode-delegate/SKILL.md +189 -0
  84. package/bundled-skills/opencode-delegate/references/dispatch-and-poll.md +156 -0
  85. package/bundled-skills/opencode-delegate/references/multi-task-queues.md +68 -0
  86. package/bundled-skills/opencode-delegate/references/review-and-land.md +125 -0
  87. package/bundled-skills/opencode-delegate/references/writing-the-brief.md +142 -0
  88. package/bundled-skills/pi-delegate/SKILL.md +148 -0
  89. package/bundled-skills/pi-delegate/references/dispatch-and-poll.md +146 -0
  90. package/bundled-skills/pi-delegate/references/multi-task-queues.md +59 -0
  91. package/bundled-skills/pi-delegate/references/review-and-land.md +95 -0
  92. package/bundled-skills/pi-delegate/references/writing-the-brief.md +132 -0
  93. package/bundled-skills/qoder-delegate/SKILL.md +151 -0
  94. package/bundled-skills/qoder-delegate/references/dispatch-and-poll.md +119 -0
  95. package/bundled-skills/qoder-delegate/references/multi-task-queues.md +43 -0
  96. package/bundled-skills/qoder-delegate/references/review-and-land.md +66 -0
  97. package/bundled-skills/qoder-delegate/references/writing-the-brief.md +85 -0
  98. package/bundled-skills/sandbase-mcp/SKILL.md +194 -0
  99. package/bundled-skills/ui-slop-score/SKILL.md +2 -2
  100. package/bundled-skills/unsloth-finetuning/SKILL.md +352 -0
  101. package/bundled-skills/vibe-delegate/SKILL.md +147 -0
  102. package/bundled-skills/vibe-delegate/references/dispatch-and-poll.md +144 -0
  103. package/bundled-skills/vibe-delegate/references/multi-task-queues.md +59 -0
  104. package/bundled-skills/vibe-delegate/references/review-and-land.md +87 -0
  105. package/bundled-skills/vibe-delegate/references/writing-the-brief.md +131 -0
  106. package/bundled-skills/warp-delegate/SKILL.md +192 -0
  107. package/bundled-skills/warp-delegate/references/dispatch-and-poll.md +163 -0
  108. package/bundled-skills/warp-delegate/references/multi-task-queues.md +80 -0
  109. package/bundled-skills/warp-delegate/references/review-and-land.md +123 -0
  110. package/bundled-skills/warp-delegate/references/writing-the-brief.md +105 -0
  111. package/bundled-skills/zcode-delegate/SKILL.md +202 -0
  112. package/bundled-skills/zcode-delegate/references/dispatch-and-poll.md +113 -0
  113. package/bundled-skills/zcode-delegate/references/multi-task-queues.md +87 -0
  114. package/bundled-skills/zcode-delegate/references/review-and-land.md +81 -0
  115. package/bundled-skills/zcode-delegate/references/writing-the-brief.md +120 -0
  116. package/package.json +1 -1
  117. 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.