@nichollasf/ai-kit 1.0.1

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 (39) hide show
  1. package/.agents/archetypes/implementer-senior.md +46 -0
  2. package/.agents/archetypes/implementer.md +46 -0
  3. package/.agents/archetypes/orchestrator.md +54 -0
  4. package/.agents/archetypes/planner.md +54 -0
  5. package/.agents/archetypes/quick.md +46 -0
  6. package/.agents/archetypes/researcher.md +46 -0
  7. package/.agents/archetypes/reviewer.md +46 -0
  8. package/.agents/catalog/catalog-v2.schema.json +1641 -0
  9. package/.agents/catalog/personal.json +370 -0
  10. package/.agents/skills/ai-kit-model-calibration/SKILL.md +57 -0
  11. package/.agents/skills/ai-kit-model-calibration/assets/scorecard.md +61 -0
  12. package/.agents/skills/ai-kit-model-calibration/references/rubric.md +41 -0
  13. package/.agents/skills/ai-kit-task-routing/SKILL.md +44 -0
  14. package/.agents/skills/ai-kit-task-routing/references/handoff.md +29 -0
  15. package/LICENSE +21 -0
  16. package/README.md +151 -0
  17. package/dist/catalog.d.ts +99 -0
  18. package/dist/catalog.js +590 -0
  19. package/dist/catalog.js.map +1 -0
  20. package/dist/cli.d.ts +10 -0
  21. package/dist/cli.js +201 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/diagnostics.d.ts +2 -0
  24. package/dist/diagnostics.js +301 -0
  25. package/dist/diagnostics.js.map +1 -0
  26. package/dist/installer.d.ts +18 -0
  27. package/dist/installer.js +303 -0
  28. package/dist/installer.js.map +1 -0
  29. package/dist/legacy.d.ts +7 -0
  30. package/dist/legacy.js +69 -0
  31. package/dist/legacy.js.map +1 -0
  32. package/dist/manifest.d.ts +50 -0
  33. package/dist/manifest.js +223 -0
  34. package/dist/manifest.js.map +1 -0
  35. package/dist/transaction.d.ts +10 -0
  36. package/dist/transaction.js +187 -0
  37. package/dist/transaction.js.map +1 -0
  38. package/docs/architecture.md +61 -0
  39. package/package.json +62 -0
@@ -0,0 +1,370 @@
1
+ {
2
+ "schemaVersion": 2,
3
+ "profile": "personal",
4
+ "maxConcurrency": 4,
5
+ "roles": {
6
+ "planner": {
7
+ "archetype": ".agents/archetypes/planner.md",
8
+ "capabilities": {
9
+ "read": true,
10
+ "write": {
11
+ "enabled": true,
12
+ "scopes": [".agents/plans/**"]
13
+ },
14
+ "delegate": false,
15
+ "review": false
16
+ }
17
+ },
18
+ "orchestrator": {
19
+ "archetype": ".agents/archetypes/orchestrator.md",
20
+ "capabilities": {
21
+ "read": true,
22
+ "write": {
23
+ "enabled": false,
24
+ "scopes": []
25
+ },
26
+ "delegate": true,
27
+ "review": false
28
+ }
29
+ },
30
+ "implementer-senior": {
31
+ "archetype": ".agents/archetypes/implementer-senior.md",
32
+ "capabilities": {
33
+ "read": true,
34
+ "write": {
35
+ "enabled": true,
36
+ "scopes": ["task write scope"]
37
+ },
38
+ "delegate": false,
39
+ "review": false
40
+ }
41
+ },
42
+ "implementer": {
43
+ "archetype": ".agents/archetypes/implementer.md",
44
+ "capabilities": {
45
+ "read": true,
46
+ "write": {
47
+ "enabled": true,
48
+ "scopes": ["task write scope"]
49
+ },
50
+ "delegate": false,
51
+ "review": false
52
+ }
53
+ },
54
+ "quick": {
55
+ "archetype": ".agents/archetypes/quick.md",
56
+ "capabilities": {
57
+ "read": true,
58
+ "write": {
59
+ "enabled": true,
60
+ "scopes": ["task write scope"]
61
+ },
62
+ "delegate": false,
63
+ "review": false
64
+ }
65
+ },
66
+ "researcher": {
67
+ "archetype": ".agents/archetypes/researcher.md",
68
+ "capabilities": {
69
+ "read": true,
70
+ "write": {
71
+ "enabled": false,
72
+ "scopes": []
73
+ },
74
+ "delegate": false,
75
+ "review": false
76
+ }
77
+ },
78
+ "reviewer": {
79
+ "archetype": ".agents/archetypes/reviewer.md",
80
+ "capabilities": {
81
+ "read": true,
82
+ "write": {
83
+ "enabled": false,
84
+ "scopes": []
85
+ },
86
+ "delegate": false,
87
+ "review": true
88
+ }
89
+ }
90
+ },
91
+ "models": {
92
+ "astra": {
93
+ "family": "gpt",
94
+ "id": "gpt-6-astra",
95
+ "harnesses": {
96
+ "codex": "gpt-6-astra",
97
+ "opencode": "openai/gpt-6-astra"
98
+ }
99
+ },
100
+ "sol": {
101
+ "family": "gpt",
102
+ "id": "gpt-5.6-sol",
103
+ "harnesses": {
104
+ "codex": "gpt-5.6-sol",
105
+ "opencode": "openai/gpt-5.6-sol"
106
+ }
107
+ },
108
+ "terra": {
109
+ "family": "gpt",
110
+ "id": "gpt-5.6-terra",
111
+ "harnesses": {
112
+ "codex": "gpt-5.6-terra",
113
+ "opencode": "openai/gpt-5.6-terra"
114
+ }
115
+ },
116
+ "luna": {
117
+ "family": "gpt",
118
+ "id": "gpt-5.6-luna",
119
+ "harnesses": {
120
+ "codex": "gpt-5.6-luna",
121
+ "opencode": "openai/gpt-5.6-luna"
122
+ }
123
+ },
124
+ "fable": {
125
+ "family": "claude",
126
+ "id": "claude-fable-5-1",
127
+ "harnesses": {
128
+ "claude-code": "claude-fable-5-1",
129
+ "opencode": "anthropic/claude-fable-5-1"
130
+ }
131
+ },
132
+ "opus": {
133
+ "family": "claude",
134
+ "id": "claude-opus-5",
135
+ "harnesses": {
136
+ "claude-code": "claude-opus-5",
137
+ "opencode": "anthropic/claude-opus-5"
138
+ }
139
+ },
140
+ "sonnet": {
141
+ "family": "claude",
142
+ "id": "claude-sonnet-5",
143
+ "harnesses": {
144
+ "claude-code": "claude-sonnet-5",
145
+ "opencode": "anthropic/claude-sonnet-5"
146
+ }
147
+ },
148
+ "haiku": {
149
+ "family": "claude",
150
+ "id": "claude-haiku-4-5-20251001",
151
+ "harnesses": {
152
+ "claude-code": "claude-haiku-4-5-20251001",
153
+ "opencode": "anthropic/claude-haiku-4-5-20251001"
154
+ }
155
+ }
156
+ },
157
+ "bindings": {
158
+ "planner:gpt": {
159
+ "archetype": "planner",
160
+ "route": "gpt",
161
+ "model": "astra",
162
+ "effortSupport": "supported",
163
+ "supportedEfforts": ["medium", "high", "xhigh"],
164
+ "effort": {
165
+ "low": "medium",
166
+ "medium": "high",
167
+ "high": "xhigh"
168
+ }
169
+ },
170
+ "planner:claude": {
171
+ "archetype": "planner",
172
+ "route": "claude",
173
+ "model": "fable",
174
+ "effortSupport": "supported",
175
+ "supportedEfforts": ["medium", "high", "xhigh"],
176
+ "effort": {
177
+ "low": "medium",
178
+ "medium": "high",
179
+ "high": "xhigh"
180
+ }
181
+ },
182
+ "orchestrator:gpt": {
183
+ "archetype": "orchestrator",
184
+ "route": "gpt",
185
+ "model": "sol",
186
+ "effortSupport": "supported",
187
+ "supportedEfforts": ["xhigh"],
188
+ "effort": {
189
+ "low": "xhigh",
190
+ "medium": "xhigh",
191
+ "high": "xhigh"
192
+ }
193
+ },
194
+ "orchestrator:claude": {
195
+ "archetype": "orchestrator",
196
+ "route": "claude",
197
+ "model": "opus",
198
+ "effortSupport": "supported",
199
+ "supportedEfforts": ["xhigh"],
200
+ "effort": {
201
+ "low": "xhigh",
202
+ "medium": "xhigh",
203
+ "high": "xhigh"
204
+ }
205
+ },
206
+ "implementer-senior:gpt": {
207
+ "archetype": "implementer-senior",
208
+ "route": "gpt",
209
+ "model": "sol",
210
+ "effortSupport": "supported",
211
+ "supportedEfforts": ["xhigh"],
212
+ "effort": {
213
+ "low": "xhigh",
214
+ "medium": "xhigh",
215
+ "high": "xhigh"
216
+ }
217
+ },
218
+ "implementer-senior:claude": {
219
+ "archetype": "implementer-senior",
220
+ "route": "claude",
221
+ "model": "opus",
222
+ "effortSupport": "supported",
223
+ "supportedEfforts": ["xhigh"],
224
+ "effort": {
225
+ "low": "xhigh",
226
+ "medium": "xhigh",
227
+ "high": "xhigh"
228
+ }
229
+ },
230
+ "implementer:gpt": {
231
+ "archetype": "implementer",
232
+ "route": "gpt",
233
+ "model": "terra",
234
+ "effortSupport": "supported",
235
+ "supportedEfforts": ["low", "medium", "high"],
236
+ "effort": {
237
+ "low": "low",
238
+ "medium": "medium",
239
+ "high": "high"
240
+ }
241
+ },
242
+ "implementer:claude": {
243
+ "archetype": "implementer",
244
+ "route": "claude",
245
+ "model": "sonnet",
246
+ "effortSupport": "supported",
247
+ "supportedEfforts": ["low", "medium", "high"],
248
+ "effort": {
249
+ "low": "low",
250
+ "medium": "medium",
251
+ "high": "high"
252
+ }
253
+ },
254
+ "quick:gpt": {
255
+ "archetype": "quick",
256
+ "route": "gpt",
257
+ "model": "luna",
258
+ "effortSupport": "supported",
259
+ "supportedEfforts": ["low", "medium"],
260
+ "effort": {
261
+ "low": "low",
262
+ "medium": "medium"
263
+ }
264
+ },
265
+ "quick:claude": {
266
+ "archetype": "quick",
267
+ "route": "claude",
268
+ "model": "haiku",
269
+ "effortSupport": "unsupported",
270
+ "supportedEfforts": [],
271
+ "effort": {}
272
+ },
273
+ "researcher:gpt": {
274
+ "archetype": "researcher",
275
+ "route": "gpt",
276
+ "model": "luna",
277
+ "effortSupport": "supported",
278
+ "supportedEfforts": ["low", "medium", "high"],
279
+ "effort": {
280
+ "low": "low",
281
+ "medium": "medium",
282
+ "high": "high"
283
+ }
284
+ },
285
+ "researcher:claude": {
286
+ "archetype": "researcher",
287
+ "route": "claude",
288
+ "model": "haiku",
289
+ "effortSupport": "unsupported",
290
+ "supportedEfforts": [],
291
+ "effort": {}
292
+ },
293
+ "reviewer:gpt": {
294
+ "archetype": "reviewer",
295
+ "route": "gpt",
296
+ "model": "sol",
297
+ "effortSupport": "supported",
298
+ "supportedEfforts": ["xhigh"],
299
+ "effort": {
300
+ "low": "xhigh",
301
+ "medium": "xhigh",
302
+ "high": "xhigh"
303
+ }
304
+ },
305
+ "reviewer:claude": {
306
+ "archetype": "reviewer",
307
+ "route": "claude",
308
+ "model": "opus",
309
+ "effortSupport": "supported",
310
+ "supportedEfforts": ["xhigh"],
311
+ "effort": {
312
+ "low": "xhigh",
313
+ "medium": "xhigh",
314
+ "high": "xhigh"
315
+ }
316
+ }
317
+ },
318
+ "presets": {
319
+ "codex": {
320
+ "planner": "planner:gpt",
321
+ "orchestrator": "orchestrator:gpt",
322
+ "implementer-senior": "implementer-senior:gpt",
323
+ "implementer": "implementer:gpt",
324
+ "quick": "quick:gpt",
325
+ "researcher": "researcher:gpt",
326
+ "reviewer": "reviewer:gpt"
327
+ },
328
+ "claude-code": {
329
+ "planner": "planner:claude",
330
+ "orchestrator": "orchestrator:claude",
331
+ "implementer-senior": "implementer-senior:claude",
332
+ "implementer": "implementer:claude",
333
+ "quick": "quick:claude",
334
+ "researcher": "researcher:claude",
335
+ "reviewer": "reviewer:claude"
336
+ },
337
+ "opencode": {
338
+ "defaultRoute": "gpt",
339
+ "routes": ["gpt", "claude"]
340
+ }
341
+ },
342
+ "taskContract": {
343
+ "requiredFields": [
344
+ "ID",
345
+ "Objective",
346
+ "Role",
347
+ "Binding",
348
+ "Effort",
349
+ "Dependencies",
350
+ "Write Scope",
351
+ "Acceptance Criteria",
352
+ "Validation Commands"
353
+ ],
354
+ "approvalMarker": "Approved-Plan-SHA256",
355
+ "digestAlgorithm": "sha256"
356
+ },
357
+ "reviewGate": {
358
+ "requiredFor": "non-trivial",
359
+ "role": "reviewer",
360
+ "independent": true
361
+ },
362
+ "handoff": [
363
+ "Objective",
364
+ "Evidence",
365
+ "Work Or Findings",
366
+ "Validation",
367
+ "Risks",
368
+ "Escalation"
369
+ ]
370
+ }
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: ai-kit-model-calibration
3
+ description: Benchmarks and calibrates catalog-bound Claude Code, Codex or OpenCode models and reasoning variants on representative local tasks. Use only when the user explicitly asks to compare models, measure routing quality, run roll-call, or update the ai-kit model matrix.
4
+ license: MIT
5
+ metadata:
6
+ author: nychollas09
7
+ version: "2.0"
8
+ ---
9
+
10
+ # AI Kit Model Calibration
11
+
12
+ Requires the selected Claude Code, Codex or OpenCode CLI, disposable fixtures or worktrees, model-provider access, and permission to incur model usage.
13
+
14
+ Measure routing quality with representative tasks instead of relying on public leaderboards. Never run calibration against a working tree containing valuable uncommitted work.
15
+
16
+ ## Safety Gate
17
+
18
+ Before any model call:
19
+
20
+ 1. Confirm the user explicitly requested calibration and approved the expected provider usage.
21
+ 2. Create or select a disposable fixture or disposable git worktree.
22
+ 3. Record the selected harness and CLI version, model IDs, reasoning efforts or variants, fixture revision, platform, and date.
23
+ 4. Define acceptance criteria and a deterministic validation command for each task.
24
+ 5. Ensure no credentials, private source, or secrets will appear in prompts or scorecards.
25
+
26
+ Do not modify production repositories, publish results, or treat subscription access as permission to spend against another provider.
27
+
28
+ ## Evaluation Order
29
+
30
+ Start with the strongest candidate at high reasoning effort to establish the quality baseline. Then test cheaper model or effort substitutions on the same task and context. Randomize task order when ordering effects could matter.
31
+
32
+ Use the selected CLI's documented model, reasoning-effort, agent, and structured-output options when running representative tasks. A CLI discovery or connectivity probe is evidence of availability, not a quality benchmark. Keep the installed versioned model IDs and supported efforts from `.agents/catalog/personal.json`; Haiku has no effort control, so omit that parameter. Record an explicitly selected OpenCode Claude route and do not fall back silently.
33
+
34
+ Keep authentication and project trust in their normal CLI-managed locations. Never copy auth files into a fixture, print credentials, or record personal harness configuration. A disposable Codex fixture may use an isolated `CODEX_HOME` containing only the minimum project-trust entry created for that run.
35
+
36
+ ## Score Dimensions
37
+
38
+ Score each run using [the rubric](references/rubric.md):
39
+
40
+ - Correctness and completed acceptance criteria.
41
+ - Instruction and scope adherence.
42
+ - Tool-call efficiency.
43
+ - Latency and cost or usage evidence.
44
+ - Escalation accuracy.
45
+ - Independent review quality.
46
+
47
+ Do not collapse these into one score until hard failures are recorded. A fast incorrect result is not a viable route.
48
+
49
+ ## Recording Results
50
+
51
+ Copy [the scorecard template](assets/scorecard.md) to a new dated path under `.agents/evals/model-routing/`. Use a collision-resistant filename such as `YYYY-MM-DD-HHMM-<fixture>-<model>.md`. Never overwrite a prior run.
52
+
53
+ Record raw command parameters and concise evidence, but never tokens, API keys, auth files, environment values, or full private prompts. Mark facts, inference, and reviewer judgment separately.
54
+
55
+ ## Routing Recommendation
56
+
57
+ Recommend a source-catalog change only when it repeatedly meets the quality baseline for that role's representative workload. Do not change installed presets or legacy overlays during calibration. Planner owns the architectural recommendation; only Orchestrator delegates, and benchmark workers never coordinate each other. State sample size, confidence, regressions, and catalog/provider assumptions. Public benchmark scores may inform candidate selection but never override local failures.
@@ -0,0 +1,61 @@
1
+ ---
2
+ date: YYYY-MM-DD
3
+ fixture: fixture-name
4
+ fixture_revision: git-revision-or-hash
5
+ harness: claude-code-or-codex-or-opencode
6
+ cli_version: x.y.z
7
+ agent: agent-name
8
+ model: provider/model
9
+ effort: catalog-effort-or-unsupported
10
+ ---
11
+
12
+ # Model Routing Scorecard
13
+
14
+ ## Task
15
+
16
+ - Objective:
17
+ - Acceptance criteria:
18
+ - Validation command:
19
+ - Explicit non-goals:
20
+
21
+ ## Environment
22
+
23
+ - Platform:
24
+ - Runtime versions:
25
+ - Disposable fixture/worktree:
26
+ - Command parameters:
27
+ - Catalog binding:
28
+ - Explicit route (GPT / Claude):
29
+ - Effort support (supported / unsupported):
30
+
31
+ ## Results
32
+
33
+ | Dimension | Score (0-4) | Evidence |
34
+ | --------------------- | ----------: | -------- |
35
+ | Correctness | | |
36
+ | Instruction adherence | | |
37
+ | Tool efficiency | | |
38
+ | Latency and cost | | |
39
+ | Escalation accuracy | | |
40
+ | Review quality | | |
41
+
42
+ ## Hard Failures
43
+
44
+ None observed.
45
+
46
+ ## Validation
47
+
48
+ - Outcome:
49
+ - Reviewer findings:
50
+
51
+ ## Facts And Inference
52
+
53
+ - Verified facts:
54
+ - Inference:
55
+ - Uncertainty:
56
+
57
+ ## Routing Recommendation
58
+
59
+ - Recommendation:
60
+ - Sample size and confidence:
61
+ - Regressions or constraints:
@@ -0,0 +1,41 @@
1
+ # Model Calibration Rubric
2
+
3
+ Score each dimension from 0 to 4 and attach evidence.
4
+
5
+ | Score | Meaning |
6
+ | ----- | ------------------------------------------------------------------ |
7
+ | 0 | Failed fundamentally or created unacceptable risk. |
8
+ | 1 | Major acceptance criteria missed; extensive correction required. |
9
+ | 2 | Partially correct; material correction or supervision required. |
10
+ | 3 | Correct with minor, bounded correction. |
11
+ | 4 | Correct, efficient, and independently verified without correction. |
12
+
13
+ ## Dimensions
14
+
15
+ ### Correctness
16
+
17
+ Use objective tests and acceptance criteria. Any destructive behavior, secret exposure, fabricated evidence, or unapproved scope change is a hard failure regardless of aggregate score.
18
+
19
+ ### Instruction Adherence
20
+
21
+ Check source-of-truth usage, write boundaries, explicit non-goals, output contract, and user approval requirements.
22
+
23
+ ### Tool Efficiency
24
+
25
+ Compare relevant calls, duplicated exploration, avoidable retries, context waste, and whether parallelism was justified.
26
+
27
+ ### Latency And Cost
28
+
29
+ Record elapsed time and provider-reported cost or usage when available. Do not estimate missing billing data as fact.
30
+
31
+ ### Escalation Accuracy
32
+
33
+ Reward stopping on real architecture, security, migration, or approval boundaries. Penalize both silent overreach and needless escalation of routine work.
34
+
35
+ ### Review Quality
36
+
37
+ Measure valid defects found, false positives, severity ordering, reference precision, and residual-gap disclosure.
38
+
39
+ ## Decision Rule
40
+
41
+ A cheaper route is eligible only if it has no hard failures, satisfies every must-pass criterion, and performs within the task's tolerated quality margin over repeated runs. Report per-dimension scores and failures alongside any aggregate.
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: ai-kit-task-routing
3
+ description: Execute the ai-kit approved-plan workflow in Claude Code, Codex or OpenCode using the installed archetype contracts and fixed catalog bindings. Use for substantial planned software work; skip a single obvious local edit.
4
+ license: MIT
5
+ metadata:
6
+ author: nychollas09
7
+ version: "2.0"
8
+ ---
9
+
10
+ # AI Kit Task Routing
11
+
12
+ Read `.agents/generated/selection.json` before activating this workflow. Continue only when `orchestrationEnabled` is true and all seven archetypes are installed. An individual selection exposes individual roles without activating orchestration.
13
+
14
+ Use `.agents/archetypes/` as the role contracts and `.agents/catalog/personal.json` as the binding authority. Do not read or apply an old `local.json` overlay. Models change only through a reviewed source-catalog update and installation update.
15
+
16
+ ## Authority
17
+
18
+ Only Orchestrator delegates. Planner defines architecture and tasks but neither implements nor delegates. Senior-Implementer (`implementer-senior`), Implementer and Quick implement within assigned scope and never coordinate workers. Researcher gathers evidence without choosing architecture. Reviewer independently reviews without editing the reviewed work.
19
+
20
+ These contracts are instructions. Read the rendered profile's enforcement notes to distinguish tool restrictions and sandbox behavior from behavioral obligations. A prompt is not a security boundary.
21
+
22
+ ## Planning And Approval
23
+
24
+ Initial planning is a manually selected Planner main context. Claude Code and OpenCode users select the installed Planner profile directly. For a partial Codex installation, select Planner using `--primary planner`; its read-only sandbox returns the plan through a handoff. Orchestrator starts only after a complete plan and actual approval exist; it does not bootstrap planning by dispatching workers before that gate.
25
+
26
+ Planner assesses ambiguity, blast radius, reversibility, coupling, security, migration risk and validation cost. File count alone does not select a role. Choose Senior-Implementer for complex, risky or coupled work; Implementer for bounded known approaches; Quick for narrow reversible tasks; Researcher for evidence.
27
+
28
+ Each task contains ID, Objective, Role, Binding, Effort, Dependencies, Write Scope, Acceptance Criteria and Validation Commands. Specify a catalog binding ID and exact rendered model/effort profile. Quick has no high-complexity GPT route; escalate that work. Haiku's effort is recorded as `unsupported` and no effort argument is emitted.
29
+
30
+ Plans use UTF-8 and LF. SHA-256 covers the entire plan body before the marker, including one final LF. Obtain actual user approval for that body and record `Approved-Plan-SHA256: <64 lowercase hex digits>`; the marker alone is not proof of approval. Orchestrator checks approval provenance, digest, required fields, acyclic known dependencies and current repository evidence. Reject incomplete, altered or stale plans. Expected changes from completed dependencies do not invalidate the plan; unrelated changes that invalidate assumptions do. Return changed requirements or architecture to Planner and renew approval after edits.
31
+
32
+ SHA-256 must be calculated and checked by a cryptographic hashing tool. Never invent, estimate or mentally calculate a digest, and never treat the marker embedded in a plan as independent verification. If this role has no permitted hashing tool, use fresh verification evidence supplied by a trusted external host or user tool. That evidence must identify the exact approved UTF-8/LF plan-body snapshot and its SHA-256 result. Before dispatch, read the current plan and compare its body with that verified snapshot; require a fresh external check if the bytes cannot be established as unchanged. If trustworthy verification evidence is missing, report that missing evidence to the user or host and do not dispatch. This is an evidence requirement, not a request to approve an already authorized action again.
33
+
34
+ ## Dispatch
35
+
36
+ Dispatch only ready tasks, using their exact catalog binding and profile. Codex uses the GPT preset and Claude Code uses the Claude preset. OpenCode defaults to GPT and exposes an explicit Claude route; never silently substitute or fall back if the selected route is unavailable. The availability of an unselected Claude alternative does not block GPT work.
37
+
38
+ Limit execution to four simultaneous workers. Parallelize only independent dependencies and disjoint write scopes with independent acceptance criteria. Workers return to Orchestrator; no nested delegation. Orchestrator tracks and synthesizes work but does not implement product changes or replan.
39
+
40
+ Every dispatch includes the bounded objective, repository evidence, allowed write scope, acceptance criteria, validation, binding/profile and constraints. Read [the handoff contract](references/handoff.md) when composing or evaluating results.
41
+
42
+ ## Completion
43
+
44
+ For every non-trivial change, use Reviewer in a fresh independent context after implementation. A different model provider is optional. Address valid findings through the responsible implementation worker within approved scope. Route architecture changes back to Planner. Report objective validation, review outcome and remaining limitations before completion.
@@ -0,0 +1,29 @@
1
+ # Worker Handoff Contract
2
+
3
+ Return these exact sections, in order:
4
+
5
+ ## Objective
6
+
7
+ Restate the bounded task and its acceptance criteria.
8
+
9
+ ## Evidence
10
+
11
+ Reference inspected files, symbols, commands, versions and primary sources. Distinguish observation from inference.
12
+
13
+ ## Work Or Findings
14
+
15
+ For implementation, describe changed behavior and paths. For research or review, order findings by impact and provide precise references. A reviewer reports independently and never edits the reviewed work.
16
+
17
+ ## Validation
18
+
19
+ Report commands and observed outcomes, including failures and checks that could not run.
20
+
21
+ ## Risks
22
+
23
+ Identify unresolved assumptions, compatibility concerns and validation gaps. Say `None identified` only after checking.
24
+
25
+ ## Escalation
26
+
27
+ Recommend accept, revise within scope, return to Planner, or request a missing user decision. Workers send the recommendation to Orchestrator; they never dispatch another worker. Orchestrator handles corrections and requests a fresh approval if the plan changes.
28
+
29
+ Do not forward credentials or raw sensitive logs, broaden scope silently, or claim completion from intent alone.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Nichollas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.