delegation-layer 0.1.17 → 0.1.19
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/README.md +23 -0
- package/package.json +1 -1
- package/plugins/delegation-layer/.claude-plugin/plugin.json +2 -2
- package/plugins/delegation-layer/.codex-plugin/plugin.json +4 -4
- package/plugins/delegation-layer/skills/agent-integration/SKILL.md +133 -163
- package/plugins/delegation-layer/skills/agent-integration/evals/routing.json +203 -0
- package/plugins/delegation-layer/skills/agent-integration/references/ccr.md +33 -0
- package/plugins/delegation-layer/skills/agent-integration/references/command-reference.md +51 -3
- package/plugins/delegation-layer/skills/agent-integration/references/continuation.md +4 -1
- package/plugins/delegation-layer/skills/agent-integration/references/result-handling.md +14 -7
- package/skills/agent-integration/SKILL.md +133 -163
- package/skills/agent-integration/evals/routing.json +203 -0
- package/skills/agent-integration/references/ccr.md +33 -0
- package/skills/agent-integration/references/command-reference.md +51 -3
- package/skills/agent-integration/references/continuation.md +4 -1
- package/skills/agent-integration/references/result-handling.md +14 -7
|
@@ -1,16 +1,45 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agent-integration
|
|
3
|
-
description: Use
|
|
3
|
+
description: Delegate external tasks to CCR (Claude Code Router) and other agents. Use for Codex, Claude, AGY, and other external agent or model collaboration for reviews, research, implementation, testing, second opinions, comparisons, and debates, including collaboration you choose during a task. Discover other supported harnesses such as Pi and OpenCode through Delegate. Not for ordinary native subagents, provider setup, or questions merely about a tool.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Delegation Layer
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
## When to use
|
|
9
|
+
|
|
10
|
+
Use this skill before selecting a provider-specific plugin or launching an
|
|
11
|
+
external harness to do work. Requests such as “ask Codex to review this”,
|
|
12
|
+
“get Antigravity’s opinion”, and “have Claude investigate” are external
|
|
13
|
+
collaboration even when the user never mentions Delegate. The same applies
|
|
14
|
+
when you decide external expertise is useful to fulfill the user's task.
|
|
15
|
+
These names are examples; discover supported destinations through the CLI.
|
|
16
|
+
“Claude Code Router” and “CCR” mean `ccr:print`, not ordinary Claude Code.
|
|
17
|
+
For that request, use Delegate with a CCR model alias; a Claude-specific skill
|
|
18
|
+
or subscription model does not fulfill the requested route.
|
|
19
|
+
|
|
20
|
+
Ordinary subagents within the current harness remain available. Naming the
|
|
21
|
+
current harness (for example, “have Claude investigate” while using Claude)
|
|
22
|
+
also permits native delegation unless the user requests a separate session.
|
|
23
|
+
A separate CLI session uses Delegate even when its brand matches yours. A subagent
|
|
24
|
+
or plugin that calls an external harness is still external collaboration and
|
|
25
|
+
uses Delegate. Merely discussing a provider, editing documentation about it,
|
|
26
|
+
or troubleshooting its installation does not trigger delegation. Respect an
|
|
27
|
+
explicit user choice of another integration; this skill does not override it.
|
|
28
|
+
|
|
29
|
+
The local `delegate` CLI is the integration surface for external work. Do not
|
|
30
|
+
replace it with a provider command, a provider-specific plugin, or an API call.
|
|
31
|
+
Do not inspect, authenticate, install, or repair provider CLIs to bypass a
|
|
32
|
+
Delegate blocker.
|
|
33
|
+
|
|
34
|
+
A reported blocker is a valid final response to a delegation request. It does
|
|
35
|
+
not turn that request into an environment-repair task. When a response says
|
|
36
|
+
`failure.next_action: "stop_and_report"`, that attempt is finished. Include its
|
|
37
|
+
failure in your final response without opening a clarification dialog to choose
|
|
38
|
+
a fallback. For `task_record: not_created`, identify the requested destination
|
|
39
|
+
and quote the returned `task_id` (if present), `task_record`, `failure`, and
|
|
40
|
+
`error`. Do not append inferred state paths or provider-setup diagnoses. Do not run diagnostic commands, retry it, or use another integration.
|
|
41
|
+
Troubleshooting requires a separate user request. Other independently requested
|
|
42
|
+
tasks may proceed; the failed attempt must remain reported as failed or blocked.
|
|
14
43
|
|
|
15
44
|
## Rules
|
|
16
45
|
|
|
@@ -19,11 +48,14 @@ and do not replace delegation with a provider's native subagent or team feature.
|
|
|
19
48
|
never installs or repairs the CLI itself. If `delegate` is still missing or
|
|
20
49
|
unusable, report the bootstrap failure and stop; never fall back to a native
|
|
21
50
|
provider command.
|
|
22
|
-
2.
|
|
51
|
+
2. Preserve a named harness or provider, even when the user supplied a natural
|
|
52
|
+
name rather than a provider ID. Use `dispatch --auto` when none was chosen.
|
|
23
53
|
Provider selection, executable checks, compatibility checks, authentication
|
|
24
54
|
gates, and supervisor admission belong inside Delegation Layer.
|
|
25
|
-
3. Give every turn an absolute workspace,
|
|
26
|
-
|
|
55
|
+
3. Give every turn an absolute workspace, an explicit permission mode, and a
|
|
56
|
+
finite budget. Keep the state root outside the workspace. Reuse a supplied
|
|
57
|
+
`DELEGATE_ROOT` for all providers and tasks; do not invent per-provider or
|
|
58
|
+
per-task state roots. Task IDs separate work within that root.
|
|
27
59
|
4. Use `--json` and save the returned `task_id`. Read `admission`, `liveness`,
|
|
28
60
|
`publication`, `status`, `outcome`, `continuation`, `task_record`, `failure`,
|
|
29
61
|
and `error` as separate fields.
|
|
@@ -66,27 +98,20 @@ Do not substitute a provider command.
|
|
|
66
98
|
|
|
67
99
|
### 2. Discover only when useful
|
|
68
100
|
|
|
69
|
-
|
|
70
|
-
|
|
101
|
+
If no destination was named, use automatic selection directly. If the user
|
|
102
|
+
named a harness (for example, “Codex”), resolve its exact provider ID from:
|
|
71
103
|
|
|
72
104
|
```sh
|
|
73
105
|
delegate providers --json
|
|
74
106
|
```
|
|
75
107
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Replace `REQUESTED_MODE` with `read-only` for investigation or
|
|
86
|
-
`workspace-write` for authorized edits. Preflight reports static admission only.
|
|
87
|
-
It does not create a task, start the supervisor, or launch a provider. Do not keep
|
|
88
|
-
retrying preflight when it says
|
|
89
|
-
`blocked` or `unsupported`; report the bounded reason.
|
|
108
|
+
Use the matching catalog ID with `--provider`; do not silently substitute
|
|
109
|
+
`--auto` or another provider. If the name is ambiguous, clarify the intended
|
|
110
|
+
destination. If it is absent, report that this build does not support it.
|
|
111
|
+
The catalog is not proof that a provider is installed, authenticated, or ready.
|
|
112
|
+
Dispatch performs admission checks; a separate preflight is not needed for a
|
|
113
|
+
normal task. For an explicitly requested readiness check, see
|
|
114
|
+
[preflight guidance](references/command-reference.md#checking-readiness).
|
|
90
115
|
|
|
91
116
|
The catalog and `capabilities` response expose supported permission modes,
|
|
92
117
|
request options, continuation, and the read-only mechanism. A read-only
|
|
@@ -95,64 +120,52 @@ behavior but is not an independent delegate-owned sandbox. Static discovery
|
|
|
95
120
|
does not prove authentication or live acceptance; use the dispatch or live
|
|
96
121
|
acceptance result for that evidence.
|
|
97
122
|
|
|
98
|
-
|
|
99
|
-
|
|
123
|
+
Read `required_options` in provider discovery before dispatch. Supply every
|
|
124
|
+
required option; a provider's optional defaults do not replace required inputs.
|
|
125
|
+
For CCR / Claude Code Router or a CCR model request, read
|
|
126
|
+
[CCR model selection](references/ccr.md). A CCR route is external collaboration
|
|
127
|
+
even when you are already using Claude. Do not assume every open-source model
|
|
128
|
+
name belongs to CCR; clarify only if discovery leaves the destination ambiguous.
|
|
100
129
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
Omit `--cwd` to use the current directory. Run discovery only when the caller
|
|
106
|
-
needs a non-default choice; provider defaults are valid. The command uses the
|
|
107
|
-
state-rooted supervisor and a bounded `model-discovery-v1` five-minute native
|
|
108
|
-
inspection to allow first-run provider model/cache initialization. It creates
|
|
109
|
-
inspection evidence without admitting a provider task, and may contact the
|
|
110
|
-
provider CLI. It is advisory and never an admission allowlist. Do not reject a
|
|
111
|
-
requested value merely because discovery did not list it, and do not infer
|
|
112
|
-
per-model effort support from the harness-wide list. If a selected model has
|
|
113
|
-
`efforts: null` or `efforts: []`, omit `--effort` unless the caller explicitly
|
|
114
|
-
requested it; do not invent model aliases or combine options by guessing.
|
|
115
|
-
|
|
116
|
-
The response includes `schema_version`, `command: "models"`, `provider`,
|
|
117
|
-
`observed_at`, `status`, `reason_code`, `complete`, `source`, nullable
|
|
118
|
-
`efforts`, and model rows with exact `id` values plus optional `name`, nullable
|
|
119
|
-
`efforts`, and optional `default_effort`. `complete` describes model
|
|
120
|
-
enumeration, not effort metadata. `null` means effort metadata is unknown;
|
|
121
|
-
`[]` means the provider explicitly reported no choices. Discovery exits `0`
|
|
122
|
-
for `available` or `partial`, `2` for `blocked` or `unavailable`, and `1` for
|
|
123
|
-
`failed`. Preserve a blocked or unavailable discovery result as unresolved;
|
|
124
|
-
defaults remain allowed.
|
|
130
|
+
Keep provider defaults when no model or effort was requested and neither is required. When an explicit
|
|
131
|
+
choice is needed, read [model and effort guidance](references/command-reference.md#choosing-models-and-effort).
|
|
132
|
+
Pass requested choices through Delegate's public `--model` and `--effort`
|
|
133
|
+
fields; discovery is advisory, never an allowlist.
|
|
125
134
|
|
|
126
135
|
### 3. Prepare separate paths and a finite brief
|
|
127
136
|
|
|
128
137
|
Use an existing task brief when one is supplied. Otherwise create a bounded
|
|
129
138
|
brief file that contains the requested work and its acceptance criteria. Keep
|
|
130
|
-
the state root outside the workspace
|
|
139
|
+
the state root outside the workspace and provider-writable trees (which can
|
|
140
|
+
include the system temporary directory). Use `DELEGATE_ROOT` when supplied:
|
|
131
141
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
cat >"$BRIEF" <<'EOF'
|
|
137
|
-
Describe the delegated task, the files or behavior to change, and the checks
|
|
138
|
-
that must pass. Keep the response concise and report validation evidence.
|
|
139
|
-
EOF
|
|
140
|
-
```
|
|
142
|
+
Run path preparation and dispatch in **one shell/tool invocation**, as shown
|
|
143
|
+
below. Shell variables may disappear between tool calls. For later commands,
|
|
144
|
+
use the actual saved absolute paths or assign them again in that invocation;
|
|
145
|
+
never pass an empty `--root`, `--brief`, or `--cwd`.
|
|
141
146
|
|
|
142
|
-
Replace the example brief with the actual user request. Do not place the state
|
|
147
|
+
Replace the example brief below with the actual user request. Do not place the state
|
|
143
148
|
root inside the workspace or place secrets in either path’s task data. Keep it
|
|
144
149
|
outside provider configuration and runtime directories as well. If delegate
|
|
145
|
-
rejects
|
|
146
|
-
|
|
147
|
-
|
|
150
|
+
rejects a caller-supplied state root, report the placement error rather than
|
|
151
|
+
silently replacing that root. If no root was supplied, choose one outside the
|
|
152
|
+
workspace and reuse it. Do not change provider settings. Retain the selected
|
|
153
|
+
root for every observation and continuation.
|
|
148
154
|
|
|
149
155
|
### 4. Dispatch one bounded turn
|
|
150
156
|
|
|
151
|
-
Use automatic selection unless the user
|
|
152
|
-
For a named provider, replace `--auto` with `--provider PROVIDER_ID`; never
|
|
157
|
+
Use automatic selection unless the user named a destination.
|
|
158
|
+
For a named harness or provider resolved in step 2, replace `--auto` with `--provider PROVIDER_ID`; never
|
|
153
159
|
combine the two:
|
|
154
160
|
|
|
155
161
|
```sh
|
|
162
|
+
STATE_ROOT="${DELEGATE_ROOT:-$HOME/delegation-state}"
|
|
163
|
+
WORKSPACE="$PWD"
|
|
164
|
+
BRIEF="$(mktemp)"
|
|
165
|
+
cat >"$BRIEF" <<'EOF'
|
|
166
|
+
Describe the delegated task, the files or behavior to change, and the checks
|
|
167
|
+
that must pass. Keep the response concise and report validation evidence.
|
|
168
|
+
EOF
|
|
156
169
|
delegate --root "$STATE_ROOT" dispatch --auto \
|
|
157
170
|
--brief "$BRIEF" \
|
|
158
171
|
--cwd "$WORKSPACE" \
|
|
@@ -174,28 +187,21 @@ independent. Do not configure Pueue or wait for one task before dispatching the
|
|
|
174
187
|
next solely to serialize ordinary work. Inspect each returned task separately
|
|
175
188
|
with `status` and `collect`.
|
|
176
189
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
`not_created`, do not run `status`, `collect`, or `continue`; correct the request
|
|
193
|
-
only when `failure.next_action` is `correct_request`, otherwise report the
|
|
194
|
-
delegate failure and stop. If it is `created`, use `status` before taking any
|
|
195
|
-
other action. If it is `unknown`, stop and report the failure: with an
|
|
196
|
-
explicit task ID, absence can race another dispatch that is creating the same
|
|
197
|
-
ID. Never retry that ID, run Pueue commands, or silently try another provider
|
|
198
|
-
after a task may have been admitted.
|
|
190
|
+
Save the exact `task_id` from the JSON response. Apply this decision separately
|
|
191
|
+
for **each attempt**, including requests issued together:
|
|
192
|
+
|
|
193
|
+
| Response | Next action |
|
|
194
|
+
|---|---|
|
|
195
|
+
| Usage error, no JSON response | Correct the reported syntax using Delegate help or `providers --json`, then invoke that request again. Parsing failed before admission. |
|
|
196
|
+
| `task_record: not_created` and `failure.next_action: correct_request` | Correct that request and retry it. |
|
|
197
|
+
| `task_record: not_created` with any other next action | Report that attempt's failure and stop it. Do not diagnose provider setup or substitute an integration. |
|
|
198
|
+
| `task_record: created` | Use `status` before taking any other action. Do not dispatch again. |
|
|
199
|
+
| `task_record: unknown` or an ambiguous response | Stop and report; do not retry an uncertain task creation. |
|
|
200
|
+
|
|
201
|
+
One attempt's `stop_and_report` does not prevent correcting another independent
|
|
202
|
+
request's usage error. Keep the failed attempt reported as failed. With an
|
|
203
|
+
explicit task ID, absence can race another dispatch creating the same ID;
|
|
204
|
+
never retry that uncertain ID or run Pueue commands.
|
|
199
205
|
|
|
200
206
|
### 5. Observe and collect
|
|
201
207
|
|
|
@@ -220,82 +226,46 @@ copy unrestricted provider output into the control response.
|
|
|
220
226
|
|
|
221
227
|
### 6. Continue a timed out turn
|
|
222
228
|
|
|
223
|
-
When `status` or `collect`
|
|
224
|
-
continuation
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
If `continue` returns an error, use its `failure` and `task_record` fields just
|
|
258
|
-
as for dispatch: when the record is `created`, check the returned successor
|
|
259
|
-
`task_id` with `status`; when it is `not_created`, correct the request only if
|
|
260
|
-
`failure.next_action` is `correct_request`; and when it is `unknown`, stop and
|
|
261
|
-
report the failure. Do not repeat `continue` while successor creation is
|
|
262
|
-
unknown.
|
|
263
|
-
|
|
264
|
-
## JSON decisions
|
|
265
|
-
|
|
266
|
-
The capability projection uses the stable `runtime-capability-v1` contract.
|
|
267
|
-
Catalog responses have `verification: "catalog"` and `status: "unknown"`.
|
|
268
|
-
Preflight responses have `verification: "preflight"` and describe static
|
|
269
|
-
readiness. A dispatch response can report `verification: "runtime"` only after
|
|
270
|
-
the supervised runtime probe has observed the required behavior and executable
|
|
271
|
-
identity.
|
|
272
|
-
|
|
273
|
-
Versions and help text are observations. Accept any valid nonempty version
|
|
274
|
-
reported by the CLI; never apply a semantic-version allowlist or web lookup.
|
|
275
|
-
The adapter’s required flags and runtime behavior decide compatibility.
|
|
276
|
-
|
|
277
|
-
Authentication is a separate live gate. `live_acceptance.status` values are
|
|
278
|
-
`not_run`, `passed`, or `blocked`; a blocked authentication prerequisite is
|
|
279
|
-
neutral evidence and must not be relabeled. Report the missing authentication
|
|
280
|
-
prerequisite and stop that attempt; do not retry or authenticate the provider.
|
|
281
|
-
|
|
282
|
-
The task response separates:
|
|
283
|
-
|
|
284
|
-
- `admission`: whether the request was accepted by the durable boundary;
|
|
285
|
-
- `liveness`: the observed supervisor state;
|
|
286
|
-
- `publication`: whether validated evidence was committed or rejected;
|
|
287
|
-
- `outcome`: the terminal authority, when available;
|
|
288
|
-
- `continuation`: whether the exact session can make a linked successor; and
|
|
289
|
-
- `error`: bounded operational diagnostics.
|
|
290
|
-
|
|
291
|
-
See [references/command-reference.md](references/command-reference.md) for
|
|
292
|
-
the command matrix, [references/result-handling.md](references/result-handling.md)
|
|
293
|
-
for decision rules, and [references/continuation.md](references/continuation.md)
|
|
294
|
-
for timeout recovery. The examples and machine-readable checks in `examples/`
|
|
295
|
-
and `evals/` are part of this skill package.
|
|
229
|
+
When `status` or `collect` reports `timed_out`, read
|
|
230
|
+
[continuation and timeout recovery](references/continuation.md). If
|
|
231
|
+
`continuation.resumable` is true, use `continue --task TASK_ID` with the original
|
|
232
|
+
state root and a finite budget, then observe the returned successor ID. Do not
|
|
233
|
+
wait indefinitely for pending publication or restart the task as an unrelated
|
|
234
|
+
dispatch. If continuation is unavailable, report its reason. Apply the same
|
|
235
|
+
`failure` and `task_record` decisions as for dispatch; never repeat an uncertain
|
|
236
|
+
successor creation.
|
|
237
|
+
|
|
238
|
+
## Comparisons, debate, and follow-up
|
|
239
|
+
|
|
240
|
+
Choose a finite scope and number of rounds appropriate to the user's request.
|
|
241
|
+
For independent opinions, dispatch separate briefs to the chosen destinations
|
|
242
|
+
and collect each result. Summarize the relevant findings as task data in the
|
|
243
|
+
next brief; do not forward credentials or unrestricted output. Use a supported
|
|
244
|
+
`continue` for an exact-session follow-up, or a new bounded task for an
|
|
245
|
+
independent question. Preserve which agent supplied each finding, explain
|
|
246
|
+
agreements and disagreements, and stop at the agreed scope or a blocker.
|
|
247
|
+
An external worker should perform its assigned work; do not ask it to recursively
|
|
248
|
+
recruit more agents unless that is explicitly part of the task.
|
|
249
|
+
|
|
250
|
+
## Details when needed
|
|
251
|
+
|
|
252
|
+
- Read [command reference](references/command-reference.md) when choosing
|
|
253
|
+
model/effort options or another public command.
|
|
254
|
+
- Read [result handling](references/result-handling.md) when interpreting
|
|
255
|
+
admission, publication, authentication, errors, or exit codes.
|
|
256
|
+
- Read [continuation](references/continuation.md) for timeout recovery or an
|
|
257
|
+
exact-session follow-up.
|
|
258
|
+
- Use [read-only example](examples/read-only-task.md),
|
|
259
|
+
[write example](examples/workspace-write-task.md), and
|
|
260
|
+
[JSON examples](examples/json-results.md) when constructing a task or parsing
|
|
261
|
+
unfamiliar output. Do not load every reference for a routine dispatch.
|
|
296
262
|
|
|
297
263
|
## Completion report
|
|
298
264
|
|
|
265
|
+
Build the report from observed CLI responses and collected evidence. Copy
|
|
266
|
+
returned values; do not reconstruct paths from example commands or shell
|
|
267
|
+
defaults. Omit unobserved configuration details.
|
|
268
|
+
|
|
299
269
|
Report the original task ID, selected provider ID when the CLI returns one,
|
|
300
270
|
the final admission/liveness/publication fields, the terminal outcome and
|
|
301
271
|
evidence descriptors, and any continuation or blocked-authentication state.
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"name": "codex-review",
|
|
6
|
+
"prompt": "Ask Codex to review pricing.py for correctness. Return the finding without editing files.",
|
|
7
|
+
"external": true,
|
|
8
|
+
"provider": "codex:exec",
|
|
9
|
+
"split": "development",
|
|
10
|
+
"native_alternative_for": "codex"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "agy-opinion",
|
|
14
|
+
"prompt": "Get Antigravity\u2019s opinion on the discount calculation in pricing.py. Do not edit files.",
|
|
15
|
+
"external": true,
|
|
16
|
+
"provider": "antigravity:print",
|
|
17
|
+
"split": "development"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "claude-investigate",
|
|
21
|
+
"prompt": "Have Claude investigate why discounted_price(200, 10) returns the wrong value. Do not change files.",
|
|
22
|
+
"external": true,
|
|
23
|
+
"provider": "claude:print",
|
|
24
|
+
"split": "development",
|
|
25
|
+
"native_alternative_for": "claude"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "external-write",
|
|
29
|
+
"prompt": "Ask Codex to fix pricing.py so discounts are percentages. Authorize edits only in this workspace and verify 200 with 10 percent gives 180.",
|
|
30
|
+
"external": true,
|
|
31
|
+
"provider": "codex:exec",
|
|
32
|
+
"split": "development",
|
|
33
|
+
"native_alternative_for": "codex"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "external-testing",
|
|
37
|
+
"prompt": "Have Claude independently test the pricing calculation against the requirement in README.md. Report evidence without editing.",
|
|
38
|
+
"external": true,
|
|
39
|
+
"provider": "claude:print",
|
|
40
|
+
"split": "development",
|
|
41
|
+
"native_alternative_for": "claude"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "external-research",
|
|
45
|
+
"prompt": "Consult another AI harness on how to represent percentage discounts without floating-point surprises. Give one concise recommendation.",
|
|
46
|
+
"external": true,
|
|
47
|
+
"provider": null,
|
|
48
|
+
"split": "development"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "comparison",
|
|
52
|
+
"prompt": "Ask Codex and Claude independently whether pricing.py meets README.md, then compare their findings. No edits.",
|
|
53
|
+
"external": true,
|
|
54
|
+
"provider": [
|
|
55
|
+
"codex:exec",
|
|
56
|
+
"claude:print"
|
|
57
|
+
],
|
|
58
|
+
"split": "validation"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "debate",
|
|
62
|
+
"prompt": "Ask Codex for a critique of pricing.py, then ask Claude to challenge that critique. One round each, no edits.",
|
|
63
|
+
"external": true,
|
|
64
|
+
"provider": [
|
|
65
|
+
"codex:exec",
|
|
66
|
+
"claude:print"
|
|
67
|
+
],
|
|
68
|
+
"split": "validation"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "unavailable-destination",
|
|
72
|
+
"prompt": "Ask the NebulaReview9000 harness to review pricing.py. If it is unavailable, report that; do not substitute another harness.",
|
|
73
|
+
"external": true,
|
|
74
|
+
"provider": "unavailable",
|
|
75
|
+
"split": "validation"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"name": "follow-up",
|
|
79
|
+
"prompt": "Get a second opinion from a separate Codex CLI session on the calculation, then ask that same session one follow-up about the simplest correction. Do not edit.",
|
|
80
|
+
"external": true,
|
|
81
|
+
"provider": "codex:exec",
|
|
82
|
+
"split": "validation"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "local-review",
|
|
86
|
+
"prompt": "Review pricing.py yourself for correctness. Do not consult another harness or change files.",
|
|
87
|
+
"external": false,
|
|
88
|
+
"provider": null,
|
|
89
|
+
"split": "development"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"name": "native-subagent",
|
|
93
|
+
"prompt": "Use an ordinary native subagent within this harness to examine pricing.py if available; otherwise examine it yourself. No external harness and no edits.",
|
|
94
|
+
"external": false,
|
|
95
|
+
"provider": null,
|
|
96
|
+
"split": "development"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"name": "explain-codex",
|
|
100
|
+
"prompt": "Explain what Codex is. Do not run it or ask it to do any work.",
|
|
101
|
+
"external": false,
|
|
102
|
+
"provider": null,
|
|
103
|
+
"split": "development"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "claude-docs",
|
|
107
|
+
"prompt": "Add one sentence to README.md saying that Claude can review code. Do not ask it to review anything.",
|
|
108
|
+
"external": false,
|
|
109
|
+
"provider": null,
|
|
110
|
+
"split": "development"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "provider-install",
|
|
114
|
+
"prompt": "Explain how to diagnose a command-not-found error for Codex. Do not install or run it.",
|
|
115
|
+
"external": false,
|
|
116
|
+
"provider": null,
|
|
117
|
+
"split": "development"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"name": "local-fix",
|
|
121
|
+
"prompt": "Fix pricing.py yourself so discounts are percentages. No external consultation.",
|
|
122
|
+
"external": false,
|
|
123
|
+
"provider": null,
|
|
124
|
+
"split": "development"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"name": "agy-question",
|
|
128
|
+
"prompt": "What does a read-only mode mean in an AI coding tool such as Antigravity? Answer conceptually without invoking it.",
|
|
129
|
+
"external": false,
|
|
130
|
+
"provider": null,
|
|
131
|
+
"split": "validation"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"name": "quote-request",
|
|
135
|
+
"prompt": "In README.md, quote the example sentence \"Ask Codex to review this\" as documentation. Do not execute the example.",
|
|
136
|
+
"external": false,
|
|
137
|
+
"provider": null,
|
|
138
|
+
"split": "validation"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "compare-tools",
|
|
142
|
+
"prompt": "Explain the difference between a CLI and a plugin. Mention Claude and Codex as examples, without consulting them.",
|
|
143
|
+
"external": false,
|
|
144
|
+
"provider": null,
|
|
145
|
+
"split": "validation"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "local-test",
|
|
149
|
+
"prompt": "Check the discount function yourself against README.md and report the result. No other agents.",
|
|
150
|
+
"external": false,
|
|
151
|
+
"provider": null,
|
|
152
|
+
"split": "validation"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "ccr-review",
|
|
156
|
+
"prompt": "Ask Claude Code Router to review pricing.py for correctness without editing. Choose an appropriate configured model and report which one you used.",
|
|
157
|
+
"external": true,
|
|
158
|
+
"provider": "ccr:print",
|
|
159
|
+
"split": "development"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"name": "ccr-explicit-alias",
|
|
163
|
+
"prompt": "Ask CCR using the alias local-review to investigate pricing.py. Do not edit files.",
|
|
164
|
+
"external": true,
|
|
165
|
+
"provider": "ccr:print",
|
|
166
|
+
"model": "local-review",
|
|
167
|
+
"split": "validation"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"name": "ccr-write",
|
|
171
|
+
"prompt": "Have CCR with the alias local-review fix pricing.py so discounts are percentages, and test the correction. Authorize edits in this workspace.",
|
|
172
|
+
"external": true,
|
|
173
|
+
"provider": "ccr:print",
|
|
174
|
+
"model": "local-review",
|
|
175
|
+
"split": "validation"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"name": "ccr-follow-up",
|
|
179
|
+
"prompt": "Ask CCR using local-review to critique pricing.py, then ask that same session one follow-up about its recommendation. No edits.",
|
|
180
|
+
"external": true,
|
|
181
|
+
"provider": "ccr:print",
|
|
182
|
+
"model": "local-review",
|
|
183
|
+
"split": "validation"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"name": "ccr-explain",
|
|
187
|
+
"prompt": "Explain what Claude Code Router does. Do not ask it to perform work.",
|
|
188
|
+
"external": false,
|
|
189
|
+
"provider": null,
|
|
190
|
+
"split": "validation"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"name": "ccr-compare",
|
|
194
|
+
"prompt": "Ask CCR using local-review and a separate Codex session for independent reviews of pricing.py, then compare their findings. No edits.",
|
|
195
|
+
"external": true,
|
|
196
|
+
"provider": [
|
|
197
|
+
"ccr:print",
|
|
198
|
+
"codex:exec"
|
|
199
|
+
],
|
|
200
|
+
"split": "validation"
|
|
201
|
+
}
|
|
202
|
+
]
|
|
203
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# CCR model selection
|
|
2
|
+
|
|
3
|
+
Use this reference when asked to consult Claude Code Router (CCR), use one of
|
|
4
|
+
its configured model aliases, or compare its models with other harnesses.
|
|
5
|
+
CCR runs Claude Code against a configured third-party or local provider.
|
|
6
|
+
|
|
7
|
+
1. Resolve CCR through `delegate providers --json`; its profile is `ccr:print`.
|
|
8
|
+
2. Preserve an explicitly requested CCR alias as `--model ALIAS`. Do not replace
|
|
9
|
+
it with an upstream model ID or reject it solely because discovery omitted it.
|
|
10
|
+
3. If no alias was chosen, run
|
|
11
|
+
`delegate models --provider ccr:print --cwd ABSOLUTE_WORKSPACE --json`.
|
|
12
|
+
Choose a suitable configured alias from the available metadata and report
|
|
13
|
+
the choice. Clarify when the intended model remains ambiguous. If discovery
|
|
14
|
+
is unavailable and no alias is known, report the blocker; do not guess.
|
|
15
|
+
4. Dispatch through Delegate with `--provider ccr:print --model ALIAS`, the brief,
|
|
16
|
+
workspace, permission, finite budget, and `--json`. Use the normal status,
|
|
17
|
+
collect, and continuation procedure from the main skill.
|
|
18
|
+
|
|
19
|
+
CCR requires an explicit alias. Unspecified external collaboration still uses
|
|
20
|
+
`dispatch --auto`; do not prefer CCR unless the request calls for it. Multiple
|
|
21
|
+
aliases can be assigned independent tasks for comparison or debate.
|
|
22
|
+
|
|
23
|
+
Read-only selects native Claude plan behavior; workspace-write selects native
|
|
24
|
+
unattended tool execution. Neither is an independent Delegate sandbox. Preserve
|
|
25
|
+
requested effort through `--effort`; unknown effort metadata is not an allowlist
|
|
26
|
+
or a reason to invent a level. Leave effort unspecified unless requested.
|
|
27
|
+
|
|
28
|
+
Delegate uses CCR's foreground provider-only route. Model/provider setup and
|
|
29
|
+
credentials belong to CCR. Never run `ccr launch`, configure CCR, inspect its
|
|
30
|
+
SQLite database, call Claude directly, or select another integration to bypass a
|
|
31
|
+
Delegate error. Ordinary questions about CCR or installation do not trigger
|
|
32
|
+
external collaboration. An explicit request to use another integration remains
|
|
33
|
+
an explicit user choice.
|