opencode-skills-collection 4.0.45 → 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,124 @@
1
+ # Writing the brief
2
+
3
+ A brief is the entire task as Antigravity will see it. It runs in a separate conversation with **no
4
+ memory of your conversation, no access to your prior notes, and no shared context** - only the text you
5
+ send and whatever it can inspect in the workspace. If a constraint is not in the brief or discoverable
6
+ in the repo, it does not exist for Antigravity.
7
+
8
+ ## Model choice
9
+
10
+ `agy` has a configured default model, so a fresh dispatch does not require `--model`. Pass `--model`
11
+ only when the human has named a preferred Antigravity model label for this task. `agy models` shows the
12
+ available labels.
13
+
14
+ A resumed run keeps the conversation context. Send only the delta brief.
15
+
16
+ ## The shape that works
17
+
18
+ Antigravity responds well to compact, block-structured prompts with XML tags rather than long prose.
19
+ State the task, what "done" looks like, how to behave by default, and the few constraints that actually
20
+ matter. Add a block only when the task needs it.
21
+
22
+ ```xml
23
+ <task>
24
+ One or two sentences: the concrete job and where it lives. Then the specifics - current state, what to
25
+ change, and explicitly what to leave untouched. The "leave untouched" list is what keeps Antigravity
26
+ from wandering into unrelated refactors.
27
+ </task>
28
+
29
+ <verification_loop>
30
+ Run these before finishing and fix anything they surface, don't just report it:
31
+ <the project's real test command>
32
+ <the project's real lint/format command>
33
+ <the project's real build/typecheck command>
34
+ Confirm the working tree shows only the intended changes afterward.
35
+ </verification_loop>
36
+
37
+ <action_safety>
38
+ Keep changes scoped to the task. No unrelated refactors, renames, or cleanup unless required for
39
+ correctness. Do NOT run git add or git commit - the orchestrator commits after reviewing. Leave the
40
+ work uncommitted in the working tree.
41
+ </action_safety>
42
+
43
+ <structured_output_contract>
44
+ End with a report in this exact shape:
45
+ 1. What changed and why
46
+ 2. Files touched
47
+ 3. Gate outcomes (paste the test/lint counts)
48
+ 4. Anything you deviated on, left open, or want a decision on
49
+ </structured_output_contract>
50
+ ```
51
+
52
+ That four-block skeleton covers most implementation tasks. Reach for extra blocks when the task profile
53
+ calls for them:
54
+
55
+ - **Debugging / open-ended fixes** - add `<completeness_contract>` (resolve fully, don't stop at the
56
+ first plausible fix) and `<missing_context_gating>` (don't guess missing repo facts; find them or
57
+ state what's unknown).
58
+ - **Research / recommendations** - add `<research_mode>` (separate observed facts, inferences, open
59
+ questions).
60
+
61
+ ## Always ask for the report explicitly
62
+
63
+ The relay captures `agy --print` stdout as `finalMessage`. If Antigravity finishes without a closing
64
+ summary, the result is not useful to review. The `<structured_output_contract>` block is what guarantees
65
+ a report you can read.
66
+
67
+ ## Discover the real gates
68
+
69
+ `<verification_loop>` is only useful if it names the project's *actual* commands. Read the repo's
70
+ `AGENTS.md` / `CLAUDE.md` / `Makefile` / `package.json` first and copy the real ones in (`make test`,
71
+ `npm run lint`, `cargo test`, `pytest -q`, whatever it is). A brief that says "run the tests" without
72
+ naming them gets you an implementer that guesses - or skips.
73
+
74
+ ## Honor the repo's conventions
75
+
76
+ If the project has house rules in `AGENTS.md`, `CLAUDE.md`, or a similar file, restate the load-bearing
77
+ ones in the brief. Antigravity can inspect the workspace, but compliance is more reliable when the
78
+ important rules are directly in front of it.
79
+
80
+ ## One task per brief
81
+
82
+ Keep each brief to a single, bounded job. "Review this, fix what you find, update the docs, and suggest
83
+ a roadmap" produces a muddled run; split it into separate dispatches. One brief -> one Antigravity run
84
+ -> one commit keeps review and rollback clean.
85
+
86
+ ## Premises freeze at dispatch
87
+
88
+ The implementer starts from the brief's facts and there is no steering channel mid-run. Audit the
89
+ fact block before sending — ownership, target branch, constraints, anything a judgment call rests
90
+ on. If a premise turns out wrong while the run is live, stop the run and re-dispatch a corrected
91
+ brief rather than discounting the output afterward; for a write-capable run, inspect the working
92
+ tree and reconcile any partial or premise-contaminated edits — keep or revert them — before the
93
+ re-dispatch.
94
+
95
+ ## A worked example
96
+
97
+ ```xml
98
+ <task>
99
+ In the payments service at services/billing/, the refund path double-charges when a refund is retried
100
+ after a network timeout. Make refund submission idempotent: check for an existing refund by idempotency
101
+ key before creating a new one. Touch only services/billing/refund.py and its tests. Leave the charge
102
+ path, API routes, and data models untouched.
103
+ </task>
104
+
105
+ <verification_loop>
106
+ Run and make green before finishing:
107
+ pytest tests/billing/ -q
108
+ ruff check services/billing/
109
+ Confirm git status shows only refund.py and its test file changed.
110
+ </verification_loop>
111
+
112
+ <action_safety>
113
+ Scope strictly to the refund idempotency fix. No unrelated refactors. Do NOT git add or commit; leave
114
+ changes in the working tree for review.
115
+ </action_safety>
116
+
117
+ <structured_output_contract>
118
+ Report: (1) the root cause and your fix, (2) files touched, (3) pytest + ruff outcomes with counts,
119
+ (4) anything you left open or want decided.
120
+ </structured_output_contract>
121
+ ```
122
+
123
+ Send this with `relay.mjs` (see [dispatch-and-poll.md](dispatch-and-poll.md)); review the result and
124
+ commit it yourself (see [review-and-land.md](review-and-land.md)).
@@ -0,0 +1,227 @@
1
+ ---
2
+ name: aider-delegate
3
+ description: Delegate coding tasks to Aider (`aider`) only when the user explicitly
4
+ 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 `aider` CLI (`python -m pip install aider-chat`), Node
14
+ 18+, and git. Aider must be able to authenticate to a model before dispatch - export
15
+ the provider key it expects (`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, …) or set it
16
+ in Aider's own config; a local OpenAI-compatible endpoint still needs a non-empty
17
+ `OPENAI_API_KEY`. The orchestrating agent must be able to run shell commands and
18
+ read files. Shell examples assume bash/zsh (macOS/Linux, or Git Bash/WSL on Windows).
19
+ metadata:
20
+ version: 0.5.0
21
+ ---
22
+ # Aider Delegate
23
+
24
+ ## When to Use
25
+
26
+ - You want to delegate a bounded coding task to a separate `aider` implementer (`Aider`) and then review its diff yourself.
27
+ - The user explicitly asked for delegation to this implementer.
28
+
29
+ You are the **orchestrator**. Hand a bounded coding task to a separate **implementer** - Aider - then
30
+ review what it produced and land it yourself. You write the brief and own the judgment; Aider does the
31
+ typing in its own run; you verify and commit.
32
+
33
+ The loop needs only a shell command and file access, so any comparable orchestrator can drive it.
34
+
35
+ ## The one thing to know about Aider
36
+
37
+ **Aider commits by default.** Two of its defaults would destroy the reviewable diff this skill exists
38
+ to produce:
39
+
40
+ - `--auto-commits` (default `True`) - Aider commits its own edits after each exchange.
41
+ - `--dirty-commits` (default `True`) - Aider commits **your** pre-existing uncommitted work before it
42
+ starts editing.
43
+
44
+ The relay always passes `--no-auto-commits` and `--no-dirty-commits`, and neither is configurable
45
+ through it. If you ever drive `aider` by hand instead of through the relay, pass both yourself, or the
46
+ work lands as commits you never reviewed. The relay also passes `--no-gitignore`, because Aider
47
+ otherwise writes `.aider*` into `.gitignore` on startup and dirties the tree you are about to read.
48
+
49
+ ## When NOT to use this
50
+
51
+ - The task is small enough to do inline; delegation overhead is not worth it.
52
+ - The `aider` CLI is not installed, or no model is configured for it.
53
+ - You want the implementer to manage its own commits. Aider can, but this skill deliberately turns
54
+ that off - the diff is the deliverable.
55
+
56
+ ## Prerequisites (check once)
57
+
58
+ 1. Install Aider - `python -m pip install aider-chat`, or the standalone installer from the
59
+ [Aider install docs](https://aider.chat/docs/install.html).
60
+ 2. Configure a model. Aider reads provider keys from the environment (`OPENAI_API_KEY`,
61
+ `ANTHROPIC_API_KEY`, …) or its own config; see [Aider's model docs](https://aider.chat/docs/llms.html).
62
+ 3. Confirm `aider --version` succeeds.
63
+ 4. Work in, or point `--cd` at, the target git repository.
64
+
65
+ ## Choose the model
66
+
67
+ Aider uses its own configured model when `--model` is omitted. Pass `--model <name>` to pick another.
68
+
69
+ ## Local and self-hosted models
70
+
71
+ Aider talks to any OpenAI-compatible endpoint, so this is also the skill for delegating to a model
72
+ running on the user's own hardware - llama.cpp's server, Ollama, vLLM, LM Studio, or anything else
73
+ that serves the same API. Pair `--model` with `--api-base`:
74
+
75
+ ```bash
76
+ node "<skill-dir>/scripts/relay.mjs" --brief brief.txt --cd /path/to/repo \
77
+ --model openai/<served-model-name> --api-base http://127.0.0.1:<port>/v1
78
+ ```
79
+
80
+ Three things differ from a hosted provider:
81
+
82
+ - **The `openai/` prefix is required.** It tells Aider to speak the OpenAI protocol to your endpoint;
83
+ the part after it is whatever name your server reports, not a provider catalog name.
84
+ - **A placeholder key is still needed.** Export any non-empty `OPENAI_API_KEY`. The client library
85
+ requires the header even when the server ignores its value.
86
+ - **Ask for a smaller edit format.** Local models often fail Aider's default `diff` format, which
87
+ requires exact search/replace blocks. `--edit-format whole` trades tokens for reliability; keep the
88
+ brief's scope tight with `--file` so whole-file rewrites stay cheap.
89
+
90
+ A local endpoint that is not running looks like a hang, not an error: Aider retries the connection
91
+ until the relay's `--timeout` watchdog fires and reports `status: "timeout"`. Confirm the server is up
92
+ before dispatching a long brief.
93
+
94
+ ### Staying offline
95
+
96
+ No account or provider registration is involved: Aider is a pip install, the endpoint is yours, and
97
+ `OPENAI_API_KEY` only has to be non-empty. The relay pins the flags that would otherwise reach the
98
+ network on their own - `--no-check-update`, `--no-analytics` (Aider's own default is `random`, which
99
+ opts some sessions in by itself), and `--no-detect-urls`, without which Aider offers to scrape any URL
100
+ in the brief and `--yes-always` accepts that offer silently.
101
+
102
+ `--no-suggest-shell-commands` closes the remaining path by which a run could reach the network without
103
+ being asked to. What stays outside the relay's control is the brief itself: instructions that tell
104
+ Aider to install a package or call an API will still be carried out, and `--auto-lint` runs the
105
+ repository's own tooling. Offline here means nothing in the dispatch path reaches out on its own - not
106
+ that a sandbox is stopping it.
107
+
108
+ ## The loop
109
+
110
+ Run these five steps per task. Steps 1, 4, and 5 require judgment; 2 and 3 are mechanical.
111
+
112
+ ### 1. Write the brief
113
+
114
+ Aider sees only the text you send plus the files in its editing scope - no chat history or shared
115
+ context. Include the goal, current state, what to change, what to leave untouched, the project's
116
+ **actual** gates, and a report contract. Keep one task per brief. See
117
+ [references/writing-the-brief.md](references/writing-the-brief.md).
118
+
119
+ ### 2. Dispatch
120
+
121
+ Use the bundled helper. It wraps Aider's headless `--message-file` mode, captures the run, and writes
122
+ `result.json`. (`<skill-dir>` is the installed folder containing this `SKILL.md`.)
123
+
124
+ ```bash
125
+ node "<skill-dir>/scripts/relay.mjs" --brief brief.txt --cd /path/to/repo
126
+ # choose a model: add --model <name>
127
+ # point at an OpenAI-compatible server: add --api-base <url>
128
+ # scope the edit surface: add --file <path> (repeatable), --read <path> for context only
129
+ # dry run, no files modified: add --read-only
130
+ # continue the previous chat: add --resume-last (delta brief only)
131
+ # hard time limit (watchdog): add --timeout 2h (the 30m default suits short runs; implementation briefs routinely need 1-2h)
132
+ # see all options: node .../relay.mjs --help
133
+ ```
134
+
135
+ The child process's cwd pins the workspace. The brief is delivered with `--message-file`, so it never
136
+ rides argv: it stays out of the host process list and clear of the OS argument size cap. The relay
137
+ writes artifacts under the system temp dir by default and never commits. See
138
+ [references/dispatch-and-poll.md](references/dispatch-and-poll.md).
139
+
140
+ ### 3. Wait for completion
141
+
142
+ The helper blocks until Aider finishes. Run it with the orchestrator's background-command facility, or
143
+ background it in the shell and poll for `result.json`. A pre-run usage error exits 2 and writes no
144
+ result; a missing `aider` exits 127 and writes `status: "aider_unavailable"`.
145
+
146
+ Trust process state and the working tree over a progress display. Completion means the process exited
147
+ and `result.json` exists. Aider's report is the `finalMessage` field in `result.json` (also printed in
148
+ full on stdout between the report markers).
149
+
150
+ Aider exits 0 even when it never reached a model, so the relay scans the run for Aider's own endpoint
151
+ and authentication errors and reports `status: "failed"` when it finds one. Treat a `failed` status
152
+ with an `error` mentioning the endpoint as a configuration problem, not a coding failure.
153
+
154
+ ### 4. Review - do not trust the self-report
155
+
156
+ Treat Aider's final message and gate claims as claims:
157
+
158
+ - Re-run the project's gates yourself.
159
+ - Read the diff against the brief, starting with `touchedFiles`.
160
+ - Run relevant guard skills if installed.
161
+ - Round-trip migrations and grep for dangling references after removals or renames.
162
+
163
+ Aider's `--auto-lint` is on by default, so it may have already run a linter and fixed its own
164
+ complaints. That is Aider's lint, not your gates - run yours anyway. See
165
+ [references/review-and-land.md](references/review-and-land.md).
166
+
167
+ ### 5. Land it
168
+
169
+ The implementer edits the working tree; **the orchestrator commits.** Commit only after the gates pass
170
+ and the diff holds. If rework is needed, send a delta brief with `--resume-last`, then review again.
171
+
172
+ ## Autonomy and permissions
173
+
174
+ The relay passes `--yes-always`, Aider's own term for auto-confirming every prompt, because a headless
175
+ run cannot answer one. **Understand what that consents to in advance.** Auto-confirmation applies to
176
+ every prompt Aider would otherwise raise, and Aider's prompts are not limited to file edits: left at
177
+ its defaults it also offers to run shell commands it has suggested, and `--yes-always` would accept
178
+ those with nobody reading them. The relay therefore pins `--no-suggest-shell-commands`, which removes
179
+ that path.
180
+
181
+ What remains is not a sandbox, and nothing here pretends otherwise. Aider has no permission modes and
182
+ no isolation: within its file scope it edits freely, and `--auto-lint` (on by default) runs whatever
183
+ linter the repository configures. A brief that tells Aider to run a command still gets a command run.
184
+ Delegation is the authorization; if a run must not be able to touch the host, run it in a container or
185
+ a throwaway worktree, because no flag in this relay will give you that.
186
+
187
+ **File selection is not a security boundary.** `--file`, `--read`, and `--subtree-only` set what Aider
188
+ puts in its chat context, which is a scoping and token-cost decision. They do not confine what it can
189
+ reach. See [references/writing-the-brief.md](references/writing-the-brief.md).
190
+
191
+ `--read-only` maps to Aider's `--dry-run`, which performs the run without modifying files. The relay
192
+ does not independently verify that claim - it reports what `git status --porcelain` shows and warns if
193
+ a `--read-only` run left the tree changed. `touchedFiles` and the diff, not a flag, are the guarantee.
194
+
195
+ ## Resume
196
+
197
+ Aider has no session ids. Its resume unit is the chat history file it keeps in the repository
198
+ (`.aider.chat.history.md`), so `--resume-last` maps to Aider's `--restore-chat-history` and
199
+ `--history-file` pins a specific one. Because that history lives in the repo, resume is per-worktree,
200
+ not per-user: two clones of the same project do not share it.
201
+
202
+ ## Authorization model
203
+
204
+ Delegation is something the human opts into. Once they have ("run this queue", "proceed"), committing
205
+ verified, gate-passing work is the agreed contract. Two limits remain: **surface, don't absorb**
206
+ (report Aider's design decisions, defensible-but-unasked turns, and non-blocking nitpicks) and **stop
207
+ for scope changes** (if correct completion needs going beyond the brief, ask instead of expanding the
208
+ mandate). See [references/review-and-land.md](references/review-and-land.md).
209
+
210
+ ## References
211
+
212
+ - [references/writing-the-brief.md](references/writing-the-brief.md) - structure, report contract,
213
+ real gates, file scope, and delta briefs.
214
+ - [references/dispatch-and-poll.md](references/dispatch-and-poll.md) - flags, artifacts,
215
+ `result.json`, polling, and failure recovery.
216
+ - [references/review-and-land.md](references/review-and-land.md) - review checklist, the commit
217
+ boundary, and rework through Aider's chat history.
218
+ - [references/multi-task-queues.md](references/multi-task-queues.md) - sequential queues, constraint
219
+ carry-forward, progress tracking, and the final coherence pass.
220
+
221
+
222
+ ## Limitations
223
+
224
+ - Docs-only import — executable `scripts/relay.mjs` not included; see upstream for full runtime. Requires `aider` CLI, Node 18+, git.
225
+ - Relay never commits — it only returns structured result JSON; you review and land the commit.
226
+
227
+ > Adapted from [amElnagdy/delegate-skills](https://github.com/amElnagdy/delegate-skills) (MIT) — docs-only, runtime not bundled.
@@ -0,0 +1,154 @@
1
+ # Dispatch and poll
2
+
3
+ The relay (`scripts/relay.mjs`) is the whole dispatch mechanic: it launches Aider headlessly, captures
4
+ the run, and writes a structured `result.json`. Node built-ins only, no dependencies, and it never
5
+ commits.
6
+
7
+ ## Before the first run
8
+
9
+ 1. `aider --version` succeeds.
10
+ 2. A model is configured - either Aider's own default, or the `--model` you intend to pass. Provider
11
+ keys come from the environment or Aider's config.
12
+ 3. The target directory is a git repository. Without git the relay cannot report `touchedFiles`, and
13
+ the diff is the deliverable.
14
+ 4. The working tree is clean, or you know exactly what was already dirty. `touchedFiles` reports
15
+ everything git sees, not only what Aider wrote.
16
+
17
+ ## Dispatching
18
+
19
+ ```bash
20
+ node "<skill-dir>/scripts/relay.mjs" --brief brief.txt --cd /path/to/repo
21
+ ```
22
+
23
+ | Flag | Effect |
24
+ | --- | --- |
25
+ | `--brief <file>` | Path to the brief. Omit to read it from stdin. |
26
+ | `--cd <dir>` | Working root for Aider. Default: current directory. |
27
+ | `--lane <name>` | Apply a fleet lane's dials from delegate-setup. Explicit flags win. |
28
+ | `--model <name>` | Aider's `--model`. Default: Aider's own configured model. |
29
+ | `--api-base <url>` | Aider's `--openai-api-base`, for an OpenAI-compatible server. |
30
+ | `--edit-format <fmt>` | Aider's `--edit-format` (e.g. `diff`, `whole`, `udiff`). |
31
+ | `--architect` | Aider's `--architect` edit format. Mutually exclusive with `--edit-format`. |
32
+ | `--file <path>` | Add a file to Aider's editing scope. Repeatable. |
33
+ | `--read <path>` | Add a read-only context file. Repeatable. |
34
+ | `--subtree-only` | Restrict Aider to the current subtree. |
35
+ | `--read-only` | Dispatch as Aider's `--dry-run`: no files modified. |
36
+ | `--resume-last` | Restore Aider's chat history for this repo. Send a delta brief. |
37
+ | `--history-file <path>` | Pin a specific chat history file (Aider's `--chat-history-file`). |
38
+ | `--timeout <dur>` | Relay watchdog, h/m/s. Default `30m`. |
39
+ | `--out-dir <dir>` | Where run artifacts go. Default: a fresh dir under the system temp dir. A reused directory has its previous `final.txt` and `result.json` removed before dispatch, so a poller can never read the last run's result as this one's. |
40
+
41
+ Relative `--file`, `--read`, and `--history-file` paths resolve against `--cd`, not the relay's own
42
+ cwd, so they mean what they look like they mean regardless of flag order.
43
+
44
+ ### Local and self-hosted endpoints
45
+
46
+ `--api-base` points Aider at any OpenAI-compatible server - llama.cpp's server, Ollama, vLLM,
47
+ LM Studio - so a delegated run can go to a model on the user's own hardware:
48
+
49
+ ```bash
50
+ node "<skill-dir>/scripts/relay.mjs" --brief brief.txt --cd /path/to/repo \
51
+ --model openai/<served-model-name> --api-base http://127.0.0.1:<port>/v1 \
52
+ --edit-format whole --file src/target.py
53
+ ```
54
+
55
+ The `openai/` prefix selects the protocol, not a provider catalog entry; the name after it is
56
+ whatever the server reports. Export any non-empty `OPENAI_API_KEY` - the client library requires the
57
+ header even when the server ignores its value. `--edit-format whole` is the usual choice for smaller
58
+ local models, which frequently cannot produce the exact search/replace blocks Aider's default `diff`
59
+ format needs; pair it with `--file` so whole-file rewrites stay small.
60
+
61
+ A server that is not listening reads as a hang rather than an error: Aider retries the connection
62
+ until the `--timeout` watchdog fires and the relay reports `status: "timeout"`. Check the endpoint is
63
+ up before dispatching a long brief.
64
+
65
+ The default `30m` watchdog suits short runs. Implementation briefs routinely need `--timeout 1h` or
66
+ `2h`; a watchdog that fires mid-edit leaves a partial tree.
67
+
68
+ ## What the relay always passes
69
+
70
+ These are not configurable, and the reason matters:
71
+
72
+ | Flag | Why |
73
+ | --- | --- |
74
+ | `--no-auto-commits` | Aider's `--auto-commits` defaults to `True` and would commit its own edits. |
75
+ | `--no-dirty-commits` | Aider's `--dirty-commits` defaults to `True` and would commit your pre-existing uncommitted work before starting. |
76
+ | `--no-gitignore` | Aider otherwise writes `.aider*` into `.gitignore` on startup, dirtying the tree. |
77
+ | `--yes-always` | A headless run cannot answer a confirmation prompt. |
78
+ | `--no-suggest-shell-commands` | The other half of `--yes-always`. Aider's `--suggest-shell-commands` defaults to `True`, and an auto-confirmed suggestion runs on the host with nobody reading it. This is a blast-radius reduction, not a sandbox. |
79
+ | `--no-analytics` | No telemetry from a dispatched run. Aider's own `--analytics` default is `random`, which opts some sessions in by itself. |
80
+ | `--no-check-update` | No version check on a dispatch path. |
81
+ | `--no-detect-urls` | Aider's `--detect-urls` defaults to `True` and offers to scrape any URL in the message. Under `--yes-always` that offer is auto-accepted, so a URL in the brief becomes an unannounced outbound fetch - and, with Playwright absent, a run that hangs until the watchdog fires. |
82
+ | `--no-pretty` | Colour codes would corrupt the captured report. |
83
+ | `--no-stream` | Whole responses; the relay captures text, not a live view. |
84
+
85
+ The first two are why this skill can promise a reviewable diff. If you drive `aider` by hand instead,
86
+ pass them yourself.
87
+
88
+ ## Artifacts and result fields
89
+
90
+ Everything lands in the run directory (temp by default, so the repo under review stays clean):
91
+
92
+ | File | Contents |
93
+ | --- | --- |
94
+ | `brief.txt` | The brief as dispatched - and the file Aider reads via `--message-file`. |
95
+ | `final.txt` | Aider's report, when one was captured. |
96
+ | `stderr.txt` | Aider's stderr, streamed through to your terminal as well. |
97
+ | `result.json` | The structured result, written atomically. |
98
+
99
+ `result.json` speaks `delegate-relay.result.v1`:
100
+
101
+ | Field | Meaning |
102
+ | --- | --- |
103
+ | `status` | `completed`, `failed`, `timeout`, `aborted`, or `aider_unavailable`. |
104
+ | `exitCode` | Aider's exit code, or 128+signal, or 127 when the binary is missing. An exit-0 model/endpoint failure detected in the report is remapped to `1`. |
105
+ | `signal` | The signal that killed the child, else `null`. |
106
+ | `aiderVersion` | What `aider --version` reported. |
107
+ | `finalMessage` | Aider's own report. |
108
+ | `touchedFiles` | `git status --porcelain` lines. `[]` when the tree is clean, `null` when git cannot report. |
109
+ | `readOnly` | Whether this was dispatched as a dry run. |
110
+ | `resumed` | Whether chat history was restored. |
111
+ | `error` | Present on **every** non-clean outcome, including an ordinary nonzero exit; says what went wrong. |
112
+ | `stderrTail` | Last stderr lines, on a non-clean outcome. |
113
+
114
+ ## Waiting for completion
115
+
116
+ The relay blocks until Aider exits. Run it under the orchestrator's background-command facility, or
117
+ background it and poll for `result.json` - it is published atomically via rename, so a poller never
118
+ reads a half-written file.
119
+
120
+ Completion means the process exited and `result.json` exists. Trust that over any progress display.
121
+
122
+ ## When a run misbehaves
123
+
124
+ - **Exit 2, no result file.** A usage error - bad flag, missing value, empty brief, unparseable
125
+ `--timeout`. Nothing was dispatched. Fix the command.
126
+ - **Exit 127, `status: "aider_unavailable"`.** `aider` is not on PATH. Install it, or check that the
127
+ environment running the relay sees the same PATH you do.
128
+ - **`status: "failed"` with an endpoint or authentication `error`.** Aider exits 0 even when it never
129
+ reached a model, so the relay scans the run for Aider's own errors and reports this rather than a
130
+ false success. It is a configuration problem: check the model name, `--api-base`, and provider key.
131
+ - **`status: "timeout"`.** The watchdog fired and the process tree was killed, possibly mid-edit.
132
+ Inspect `touchedFiles` before re-dispatching; re-run with a longer `--timeout`.
133
+ - **`status: "aborted"`.** The relay itself was killed and forwarded the kill to Aider. Same caution:
134
+ the tree may be partial.
135
+ - **`--read-only` run that changed something.** Aider's `--dry-run` is Aider's promise, not the
136
+ relay's measurement, so the relay warns when a read-only run leaves changed paths behind. Only the
137
+ files Aider *generates* are excluded from that check - `.aider.chat.history.md`,
138
+ `.aider.input.history`, `.aider.llm.history`, and the `.aider.tags.cache.v*` directory - because it
139
+ writes them even under `--dry-run`. Aider's user-managed settings are deliberately **not** excluded:
140
+ if `.aider.conf.yml`, `.aider.model.settings.yml`, `.aider.model.metadata.json`, or `.aiderignore`
141
+ changed during a dry run, that is exactly what the warning is for. Everything, generated or not,
142
+ still appears in `touchedFiles`, which reports git verbatim.
143
+
144
+ ## Recovering lost work
145
+
146
+ If the orchestrator loses the relay's output, the run directory still has everything: `final.txt` for
147
+ the report, `stderr.txt` for the failure, `result.json` for the structured facts. Nothing was
148
+ committed, so the working tree is exactly as Aider left it - `git diff` is the source of truth.
149
+
150
+ ## The commit boundary
151
+
152
+ The relay never runs `git commit`, `git add`, or `git push`, and it disables Aider's own committing.
153
+ Reviewing and committing are the orchestrator's job, after the gates pass. See
154
+ [review-and-land.md](review-and-land.md).
@@ -0,0 +1,68 @@
1
+ # Multi-task queues
2
+
3
+ A queue is several bounded tasks run through the same loop, one after another, with you reviewing
4
+ between them. It is not a way to dispatch a large task in parallel pieces.
5
+
6
+ ## Run sequentially, one commit per task
7
+
8
+ Dispatch task N, review it, commit it, then dispatch task N+1. The reasons are practical:
9
+
10
+ - **A clean base per task.** Reviewing a diff means reading what this task changed. If two runs edit
11
+ the tree at once, `touchedFiles` stops telling you who did what.
12
+ - **Aider's chat history is per-repository.** `--resume-last` restores the history file in the repo,
13
+ so concurrent runs in one worktree share and clobber it. Genuine parallelism needs separate
14
+ worktrees, each with its own history.
15
+ - **Failure stays contained.** A bad task N is one commit to inspect, not a tangle.
16
+
17
+ If you truly need parallelism, use `git worktree` so each run gets its own tree, its own
18
+ `.aider.chat.history.md`, and its own reviewable diff.
19
+
20
+ ## Carry decided constraints forward
21
+
22
+ Aider starts each non-resumed run with no memory of the previous one. Anything decided in task 1 that
23
+ constrains task 3 must be restated in task 3's brief:
24
+
25
+ - Names, signatures, and interfaces settled earlier.
26
+ - Patterns chosen ("we used the repository pattern here, follow it").
27
+ - Boundaries that held ("still do not touch migrations/").
28
+
29
+ A queue that does not carry constraints forward produces N locally-reasonable changes that do not
30
+ agree with each other.
31
+
32
+ ## Keep a progress file
33
+
34
+ For anything longer than three tasks, keep a small file outside the repo tracking: task, status,
35
+ commit sha, and any decision that later tasks depend on.
36
+
37
+ ```
38
+ 1. reject negative windows done a1b2c3d ValueError, not clamp
39
+ 2. propagate through scheduler done e4f5g6h callers let it raise
40
+ 3. document the new behavior pending follow decision from 1
41
+ ```
42
+
43
+ It survives a lost session, and it is what you carry forward into each brief.
44
+
45
+ ## Close with a coherence check
46
+
47
+ Individually-correct tasks can still add up to something incoherent. After the last one, review the
48
+ whole range as one diff:
49
+
50
+ ```bash
51
+ git diff <sha-before-queue>..HEAD
52
+ ```
53
+
54
+ Look for interfaces that drifted between tasks, duplicated helpers introduced independently, docs that
55
+ describe an earlier iteration, and dead code left by a later task. Fix the seams before calling the
56
+ queue done.
57
+
58
+ ## When to stop and ask
59
+
60
+ Stop the queue and go back to the human when:
61
+
62
+ - A task fails twice for the same reason. The brief is wrong, not the implementer.
63
+ - A task reveals the plan itself was wrong - a later task no longer makes sense.
64
+ - Correct completion needs a scope change: a `DO NOT TOUCH` file, a public interface, a new
65
+ dependency.
66
+ - The queue's assumptions have gone stale because reality moved under it.
67
+
68
+ Finishing a queue on a false premise is worse than stopping in the middle of it.