loadout-ai 0.6.0 → 0.7.0
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 +122 -19
- package/catalog/discovered.json +25557 -24308
- package/dist/src/cli.js +2 -2
- package/dist/src/commands/agents.js +6 -23
- package/dist/src/commands/catalog.js +130 -33
- package/dist/src/commands/health.js +6 -6
- package/dist/src/commands/inventory.js +19 -120
- package/dist/src/commands/lifecycle.js +13 -51
- package/dist/src/commands/mcp.js +10 -73
- package/dist/src/commands/setup.js +5 -5
- package/dist/src/commands/sharing.js +11 -108
- package/dist/src/commands/support.js +20 -9
- package/dist/src/core/{adapters.js → agents/adapters.js} +2 -2
- package/dist/src/core/{agent-inspection.js → agents/agent-inspection.js} +26 -6
- package/dist/src/core/{codex-mcp.js → agents/codex-mcp.js} +1 -1
- package/dist/src/core/{health-score-evidence.js → agents/health-score-evidence.js} +8 -8
- package/dist/src/core/{runtime-tools.js → agents/runtime-tools.js} +2 -2
- package/dist/src/core/{audit.js → catalog/audit.js} +4 -4
- package/dist/src/core/{catalog.js → catalog/catalog.js} +5 -5
- package/dist/src/core/{components.js → catalog/components.js} +2 -2
- package/dist/src/core/{conformance.js → catalog/conformance.js} +2 -2
- package/dist/src/core/{profiles.js → catalog/profiles.js} +2 -2
- package/dist/src/core/{provenance.js → catalog/provenance.js} +3 -3
- package/dist/src/core/{registry.js → catalog/registry.js} +1 -1
- package/dist/src/core/{skill-compare.js → catalog/skill-compare.js} +1 -1
- package/dist/src/core/{skill-inventory.js → catalog/skill-inventory.js} +3 -3
- package/dist/src/core/{skills.js → catalog/skills.js} +1 -1
- package/dist/src/core/{candidate-intelligence.js → discovery/candidate-intelligence.js} +6 -6
- package/dist/src/core/{discovery-connector.js → discovery/discovery-connector.js} +2 -2
- package/dist/src/core/{evaluate.js → discovery/evaluate.js} +2 -2
- package/dist/src/core/{mcp-registry-discovery.js → discovery/mcp-registry-discovery.js} +1 -1
- package/dist/src/core/{observations.js → discovery/observations.js} +3 -3
- package/dist/src/core/{review-queue.js → discovery/review-queue.js} +2 -2
- package/dist/src/core/{skills-sh-discovery.js → discovery/skills-sh-discovery.js} +1 -1
- package/dist/src/core/{adopt.js → install/adopt.js} +3 -3
- package/dist/src/core/{catalog-install.js → install/catalog-install.js} +11 -11
- package/dist/src/core/{file-lock.js → install/file-lock.js} +1 -1
- package/dist/src/core/{install.js → install/install.js} +5 -5
- package/dist/src/core/{package.js → install/package.js} +3 -3
- package/dist/src/core/{reconcile.js → install/reconcile.js} +5 -5
- package/dist/src/core/{remove.js → install/remove.js} +4 -4
- package/dist/src/core/{snapshot.js → install/snapshot.js} +1 -1
- package/dist/src/core/{source.js → install/source.js} +1 -1
- package/dist/src/core/{sync.js → install/sync.js} +9 -9
- package/dist/src/core/{transaction.js → install/transaction.js} +1 -1
- package/dist/src/core/{uninstall.js → install/uninstall.js} +4 -4
- package/dist/src/core/{update.js → install/update.js} +4 -4
- package/dist/src/core/{cli-guide.js → reporting/cli-guide.js} +29 -45
- package/dist/src/core/{doctor.js → reporting/doctor.js} +3 -6
- package/dist/src/core/{freshness-alerts.js → reporting/freshness-alerts.js} +5 -5
- package/dist/src/core/{health.js → reporting/health.js} +6 -6
- package/dist/src/core/{loadout-card.js → reporting/loadout-card.js} +1 -1
- package/dist/src/core/{readme-claims.js → reporting/readme-claims.js} +1 -1
- package/dist/src/core/{readme-facts.js → reporting/readme-facts.js} +2 -2
- package/dist/src/core/{share-report.js → reporting/share-report.js} +3 -3
- package/dist/src/core/{upgrade.js → reporting/upgrade.js} +7 -7
- package/dist/src/core/routing/first-party-skills.js +118 -0
- package/dist/src/core/{handoff.js → routing/handoff.js} +120 -3
- package/dist/src/core/{model-config.js → routing/model-config.js} +4 -4
- package/dist/src/core/{route.js → routing/route.js} +325 -34
- package/dist/src/core/{api.js → runtime/api.js} +4 -4
- package/dist/src/core/{canary.js → runtime/canary.js} +1 -1
- package/dist/src/core/{github.js → runtime/github.js} +1 -1
- package/dist/src/core/{mcp-recipes.js → runtime/mcp-recipes.js} +1 -1
- package/dist/src/core/{mcp.js → runtime/mcp.js} +2 -2
- package/dist/src/core/{scheduler.js → runtime/scheduler.js} +4 -4
- package/dist/src/core/{active-policy.js → workspace/active-policy.js} +2 -2
- package/dist/src/core/{active-set.js → workspace/active-set.js} +2 -2
- package/dist/src/core/{improve.js → workspace/improve.js} +3 -3
- package/dist/src/core/{manifest.js → workspace/manifest.js} +2 -2
- package/dist/src/core/{outcomes.js → workspace/outcomes.js} +3 -3
- package/dist/src/core/{portable.js → workspace/portable.js} +3 -3
- package/dist/src/core/{profile-state.js → workspace/profile-state.js} +1 -1
- package/dist/src/core/{recommend.js → workspace/recommend.js} +1 -1
- package/dist/src/core/{state.js → workspace/state.js} +3 -3
- package/docs/DISCOVERED.md +247 -246
- package/docs/evidence/readme-claims.json +22 -19
- package/package.json +2 -1
- package/skills/loadout-curator/SKILL.md +105 -0
- package/skills/loadout-router/SKILL.md +120 -0
- /package/dist/src/core/{agent-health-score.js → agents/agent-health-score.js} +0 -0
- /package/dist/src/core/{agent-versions.js → agents/agent-versions.js} +0 -0
- /package/dist/src/core/{conversion.js → agents/conversion.js} +0 -0
- /package/dist/src/core/{paths.js → agents/paths.js} +0 -0
- /package/dist/src/core/{runtime-tool-recipe.js → agents/runtime-tool-recipe.js} +0 -0
- /package/dist/src/core/{catalog-coverage.js → catalog/catalog-coverage.js} +0 -0
- /package/dist/src/core/{safety.js → catalog/safety.js} +0 -0
- /package/dist/src/core/{skill-security.js → catalog/skill-security.js} +0 -0
- /package/dist/src/core/{community.js → discovery/community.js} +0 -0
- /package/dist/src/core/{github-discovery.js → discovery/github-discovery.js} +0 -0
- /package/dist/src/core/{private-discovery.js → discovery/private-discovery.js} +0 -0
- /package/dist/src/core/{ranking.js → discovery/ranking.js} +0 -0
- /package/dist/src/core/{atomic-file.js → install/atomic-file.js} +0 -0
- /package/dist/src/core/{diff.js → install/diff.js} +0 -0
- /package/dist/src/core/{update-watch.js → install/update-watch.js} +0 -0
- /package/dist/src/core/{completion.js → reporting/completion.js} +0 -0
- /package/dist/src/core/{loadout-badge.js → reporting/loadout-badge.js} +0 -0
- /package/dist/src/core/{terminal.js → reporting/terminal.js} +0 -0
- /package/dist/src/core/{access.js → routing/access.js} +0 -0
- /package/dist/src/core/{credentials.js → routing/credentials.js} +0 -0
- /package/dist/src/core/{sandbox.js → runtime/sandbox.js} +0 -0
- /package/dist/src/core/{active-limit.js → workspace/active-limit.js} +0 -0
- /package/dist/src/core/{target-occupancy.js → workspace/target-occupancy.js} +0 -0
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"status": "proven",
|
|
22
22
|
"evidence": [
|
|
23
23
|
"catalog/packages.json",
|
|
24
|
-
"src/core/catalog-coverage.ts",
|
|
24
|
+
"src/core/catalog/catalog-coverage.ts",
|
|
25
25
|
"tests/catalog-coverage.test.ts"
|
|
26
26
|
]
|
|
27
27
|
},
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"summary": "Stable selection is defined by the checked-in policy and allowlist.",
|
|
32
32
|
"evidenceClass": "policy-selected",
|
|
33
33
|
"status": "proven",
|
|
34
|
-
"evidence": ["src/core/profiles.ts", "tests/profiles.test.ts"]
|
|
34
|
+
"evidence": ["src/core/catalog/profiles.ts", "tests/profiles.test.ts"]
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
"id": "selection.power",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"summary": "Power selection is defined by the checked-in policy and allowlist.",
|
|
40
40
|
"evidenceClass": "policy-selected",
|
|
41
41
|
"status": "proven",
|
|
42
|
-
"evidence": ["src/core/profiles.ts", "tests/profiles.test.ts"]
|
|
42
|
+
"evidence": ["src/core/catalog/profiles.ts", "tests/profiles.test.ts"]
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
"id": "selection.maximum",
|
|
@@ -47,7 +47,10 @@
|
|
|
47
47
|
"summary": "Maximum selection keeps optional components in Loadout's managed library rather than activating every component.",
|
|
48
48
|
"evidenceClass": "integration-verified",
|
|
49
49
|
"status": "bounded",
|
|
50
|
-
"evidence": [
|
|
50
|
+
"evidence": [
|
|
51
|
+
"src/core/workspace/active-set.ts",
|
|
52
|
+
"tests/active-set.test.ts"
|
|
53
|
+
]
|
|
51
54
|
},
|
|
52
55
|
{
|
|
53
56
|
"id": "agents.support",
|
|
@@ -56,7 +59,7 @@
|
|
|
56
59
|
"evidenceClass": "integration-verified",
|
|
57
60
|
"status": "bounded",
|
|
58
61
|
"evidence": [
|
|
59
|
-
"src/core/adapters.ts",
|
|
62
|
+
"src/core/agents/adapters.ts",
|
|
60
63
|
"tests/adapters.test.ts",
|
|
61
64
|
"tests/adapter-conformance.test.ts"
|
|
62
65
|
]
|
|
@@ -79,7 +82,7 @@
|
|
|
79
82
|
"evidenceClass": "integration-verified",
|
|
80
83
|
"status": "proven",
|
|
81
84
|
"evidence": [
|
|
82
|
-
"src/core/install.ts",
|
|
85
|
+
"src/core/install/install.ts",
|
|
83
86
|
"tests/transaction.test.ts",
|
|
84
87
|
"tests/install.test.ts"
|
|
85
88
|
]
|
|
@@ -90,7 +93,7 @@
|
|
|
90
93
|
"summary": "Update workflows present a bounded local plan before an explicit apply step.",
|
|
91
94
|
"evidenceClass": "integration-verified",
|
|
92
95
|
"status": "proven",
|
|
93
|
-
"evidence": ["src/core/update.ts", "tests/update.test.ts"]
|
|
96
|
+
"evidence": ["src/core/install/update.ts", "tests/update.test.ts"]
|
|
94
97
|
},
|
|
95
98
|
{
|
|
96
99
|
"id": "updates.saved-profile",
|
|
@@ -99,8 +102,8 @@
|
|
|
99
102
|
"evidenceClass": "integration-verified",
|
|
100
103
|
"status": "proven",
|
|
101
104
|
"evidence": [
|
|
102
|
-
"src/core/profile-state.ts",
|
|
103
|
-
"src/core/update.ts",
|
|
105
|
+
"src/core/workspace/profile-state.ts",
|
|
106
|
+
"src/core/install/update.ts",
|
|
104
107
|
"tests/profile-state.test.ts",
|
|
105
108
|
"tests/update.test.ts"
|
|
106
109
|
]
|
|
@@ -111,7 +114,7 @@
|
|
|
111
114
|
"summary": "Managed installation treats recursively empty leftover skill directories as unoccupied while retaining collision protection for files and symlinks.",
|
|
112
115
|
"evidenceClass": "integration-verified",
|
|
113
116
|
"status": "proven",
|
|
114
|
-
"evidence": ["src/core/install.ts", "tests/install.test.ts"]
|
|
117
|
+
"evidence": ["src/core/install/install.ts", "tests/install.test.ts"]
|
|
115
118
|
},
|
|
116
119
|
{
|
|
117
120
|
"id": "rollback.snapshot",
|
|
@@ -120,7 +123,7 @@
|
|
|
120
123
|
"evidenceClass": "integration-verified",
|
|
121
124
|
"status": "proven",
|
|
122
125
|
"evidence": [
|
|
123
|
-
"src/core/snapshot.ts",
|
|
126
|
+
"src/core/install/snapshot.ts",
|
|
124
127
|
"tests/snapshot.test.ts",
|
|
125
128
|
"tests/transaction.test.ts"
|
|
126
129
|
]
|
|
@@ -131,7 +134,7 @@
|
|
|
131
134
|
"summary": "Recommendations expose bounded repository and local evidence rather than universal quality claims.",
|
|
132
135
|
"evidenceClass": "unit-verified",
|
|
133
136
|
"status": "bounded",
|
|
134
|
-
"evidence": ["src/core/recommend.ts", "tests/recommend.test.ts"]
|
|
137
|
+
"evidence": ["src/core/workspace/recommend.ts", "tests/recommend.test.ts"]
|
|
135
138
|
},
|
|
136
139
|
{
|
|
137
140
|
"id": "trust.stages",
|
|
@@ -140,7 +143,7 @@
|
|
|
140
143
|
"evidenceClass": "structural",
|
|
141
144
|
"status": "proven",
|
|
142
145
|
"evidence": [
|
|
143
|
-
"src/core/profiles.ts",
|
|
146
|
+
"src/core/catalog/profiles.ts",
|
|
144
147
|
"tests/profiles.test.ts",
|
|
145
148
|
"docs/CATALOG_POLICY.md"
|
|
146
149
|
]
|
|
@@ -152,7 +155,7 @@
|
|
|
152
155
|
"evidenceClass": "integration-verified",
|
|
153
156
|
"status": "proven",
|
|
154
157
|
"evidence": [
|
|
155
|
-
"src/core/github-discovery.ts",
|
|
158
|
+
"src/core/discovery/github-discovery.ts",
|
|
156
159
|
"tests/daily-discovery.test.ts",
|
|
157
160
|
"tests/review-queue.test.ts"
|
|
158
161
|
]
|
|
@@ -177,7 +180,7 @@
|
|
|
177
180
|
"status": "proven",
|
|
178
181
|
"evidence": [
|
|
179
182
|
"src/cli.ts",
|
|
180
|
-
"src/core/mcp-recipes.ts",
|
|
183
|
+
"src/core/runtime/mcp-recipes.ts",
|
|
181
184
|
"tests/cli-help.test.ts",
|
|
182
185
|
"tests/mcp-recipes.test.ts"
|
|
183
186
|
]
|
|
@@ -188,7 +191,7 @@
|
|
|
188
191
|
"summary": "MCP configuration uses explicit plans and keeps credentials outside persisted shared manifests.",
|
|
189
192
|
"evidenceClass": "integration-verified",
|
|
190
193
|
"status": "proven",
|
|
191
|
-
"evidence": ["src/core/mcp.ts", "tests/mcp-config.test.ts"]
|
|
194
|
+
"evidence": ["src/core/runtime/mcp.ts", "tests/mcp-config.test.ts"]
|
|
192
195
|
},
|
|
193
196
|
{
|
|
194
197
|
"id": "manifests.portability",
|
|
@@ -197,7 +200,7 @@
|
|
|
197
200
|
"evidenceClass": "structural",
|
|
198
201
|
"status": "proven",
|
|
199
202
|
"evidence": [
|
|
200
|
-
"src/core/manifest.ts",
|
|
203
|
+
"src/core/workspace/manifest.ts",
|
|
201
204
|
"src/shared/schemas.ts",
|
|
202
205
|
"tests/manifest.test.ts"
|
|
203
206
|
]
|
|
@@ -209,8 +212,8 @@
|
|
|
209
212
|
"evidenceClass": "integration-verified",
|
|
210
213
|
"status": "bounded",
|
|
211
214
|
"evidence": [
|
|
212
|
-
"src/core/uninstall.ts",
|
|
213
|
-
"src/core/remove.ts",
|
|
215
|
+
"src/core/install/uninstall.ts",
|
|
216
|
+
"src/core/install/remove.ts",
|
|
214
217
|
"tests/uninstall.test.ts"
|
|
215
218
|
]
|
|
216
219
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "loadout-ai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Universal upgrade manager for AI coding agents",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"files": [
|
|
12
12
|
"dist/src",
|
|
13
13
|
"catalog",
|
|
14
|
+
"skills",
|
|
14
15
|
"docs",
|
|
15
16
|
"README.md",
|
|
16
17
|
"CHANGELOG.md",
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loadout-curator
|
|
3
|
+
description: Decide which agent skills, MCP servers, and tools should be active for the current repository, and keep that set current. Use when the user asks what skills they should install, why an agent is missing context about their stack, whether their setup is up to date, or when starting work in an unfamiliar codebase.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Loadout Curator
|
|
7
|
+
|
|
8
|
+
Match the active skill set to the repository in front of you. Too few skills and
|
|
9
|
+
the agent lacks context; too many and every prompt carries weight it does not
|
|
10
|
+
need.
|
|
11
|
+
|
|
12
|
+
This skill wraps the `loadout` CLI so the catalog, provenance, and safety
|
|
13
|
+
findings stay current rather than being copied into this file.
|
|
14
|
+
|
|
15
|
+
## Prerequisite
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
loadout --version
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
If that fails, tell the user to install it (`npm install --global loadout-ai`)
|
|
22
|
+
and stop; do not guess at catalog contents.
|
|
23
|
+
|
|
24
|
+
## Starting work in a repository
|
|
25
|
+
|
|
26
|
+
Read what the codebase actually is before suggesting anything:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
loadout recommend --project .
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
This prints detected signals (languages, frameworks, test runners) and
|
|
33
|
+
rule-based suggestions with a confidence label. The signals are the useful part
|
|
34
|
+
— they tell you what the repository is without you reading every file.
|
|
35
|
+
|
|
36
|
+
Report the detected stack first, then the suggestions worth acting on. Skip
|
|
37
|
+
low-confidence suggestions unless the user asks for the full list.
|
|
38
|
+
|
|
39
|
+
`recommend` reads the project and the catalog. It does not prove quality, and it
|
|
40
|
+
says so; repeat that framing rather than presenting suggestions as verified.
|
|
41
|
+
|
|
42
|
+
## Proposing an active set
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
loadout optimize --project .
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
This proposes which already-downloaded library skills should be active here.
|
|
49
|
+
Use it when the user has a Maximum-mode library, or after `recommend` shows the
|
|
50
|
+
project needs something different from what is on.
|
|
51
|
+
|
|
52
|
+
Present the proposal as a diff in plain words — what turns on, what turns off,
|
|
53
|
+
and why — before the user approves. Both commands are read-only until `--yes`.
|
|
54
|
+
|
|
55
|
+
## Installing something new
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
loadout setup --mode custom --package <id> # preview
|
|
59
|
+
loadout setup --mode custom --package <id> --yes # apply
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Never run the `--yes` form on your own initiative. Show the preview, summarize
|
|
63
|
+
what it adds and to which agents, and let the user approve. Loadout snapshots
|
|
64
|
+
before writing, and `loadout rollback` undoes the last apply — say so, because
|
|
65
|
+
it lowers the cost of trying something.
|
|
66
|
+
|
|
67
|
+
If the preview reports safety findings (scripts, network domains, instruction
|
|
68
|
+
overrides), read them out specifically. Do not summarize a finding as "minor."
|
|
69
|
+
|
|
70
|
+
## Checking whether the setup is current
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
loadout status # health grade and what is managed
|
|
74
|
+
loadout health # safer updates and local drift
|
|
75
|
+
loadout alerts # archived, stale, or changed upstream sources
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Run these when the user asks whether their setup is up to date, or when an agent
|
|
79
|
+
behaves oddly and stale or drifted skills could explain it.
|
|
80
|
+
|
|
81
|
+
`alerts` reporting an archived upstream is worth raising unprompted — an
|
|
82
|
+
archived source will not receive fixes.
|
|
83
|
+
|
|
84
|
+
## Inspecting before trusting
|
|
85
|
+
|
|
86
|
+
For a source not yet in the catalog:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
loadout inspect --repository <owner/name>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
This clones at an immutable commit and classifies what it finds. Use it when the
|
|
93
|
+
user asks about a repository you cannot otherwise vouch for. Report what it
|
|
94
|
+
actually contains rather than what its README claims.
|
|
95
|
+
|
|
96
|
+
## Judgment this skill does not replace
|
|
97
|
+
|
|
98
|
+
- A large active set is not automatically wrong; a monorepo touching several
|
|
99
|
+
stacks legitimately needs more than a single-purpose service.
|
|
100
|
+
- Detected signals describe dependencies, not intent. A repository with a test
|
|
101
|
+
runner installed but no tests still needs testing skills.
|
|
102
|
+
- The catalog is a review queue with provenance, not a quality ranking. High
|
|
103
|
+
star counts are evidence of popularity only.
|
|
104
|
+
- Never enable an MCP server that needs credentials without walking the user
|
|
105
|
+
through what it will access first.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loadout-router
|
|
3
|
+
description: Choose the right model tier and agent for a coding task, and hand work off between Claude Code and Codex. Use when the user asks which model to use, mentions running low on usage or quota, wants to save tokens or cost, asks whether to switch to Opus/Sonnet/Haiku or a GPT tier, or wants to delegate a task to another agent.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Loadout Router
|
|
7
|
+
|
|
8
|
+
Route each coding task to the cheapest model that still does it well, and hand
|
|
9
|
+
work between agents when a different one is better suited.
|
|
10
|
+
|
|
11
|
+
This skill wraps the `loadout` CLI, so the model catalog and pricing stay
|
|
12
|
+
current with the installed version rather than going stale in this file.
|
|
13
|
+
|
|
14
|
+
## Prerequisite
|
|
15
|
+
|
|
16
|
+
Check once per session:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
loadout --version
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
If that fails, tell the user to install it (`npm install --global loadout-ai`)
|
|
23
|
+
and answer from general knowledge instead of guessing at specifics.
|
|
24
|
+
|
|
25
|
+
## Choosing a model
|
|
26
|
+
|
|
27
|
+
Run the router with the task described in plain words:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
loadout route <task description>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
It classifies the task into one of six phases — plan, implement, review, test,
|
|
34
|
+
debug, document — and prints the recommended tier, the models in that tier with
|
|
35
|
+
current prices, which of the user's installed agents can run them, and a cheaper
|
|
36
|
+
fallback with its tradeoff.
|
|
37
|
+
|
|
38
|
+
Report the recommendation and the reason. Name the actual model, not just the
|
|
39
|
+
tier. If the output lists a `Conserve:` alternative, mention it only when the
|
|
40
|
+
user cares about cost or quota, otherwise it is noise.
|
|
41
|
+
|
|
42
|
+
When the user is explicit about the phase, skip classification:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
loadout route --phase review
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## When the user is low on usage
|
|
49
|
+
|
|
50
|
+
If the user mentions running out, being rate limited, conserving quota, or
|
|
51
|
+
stretching a plan, add `--conserve`:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
loadout route --conserve <task description>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
This drops each phase one tier and prints the tradeoff you are accepting. Say
|
|
58
|
+
what is being given up — "shallower architectural reasoning, so review the plan
|
|
59
|
+
more carefully" — rather than presenting it as a free win.
|
|
60
|
+
|
|
61
|
+
Neither Claude Code nor Codex exposes remaining quota programmatically, so never
|
|
62
|
+
claim to know how much the user has left. `--conserve` is a user-driven choice,
|
|
63
|
+
not a measurement.
|
|
64
|
+
|
|
65
|
+
## Comparing models and cost
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
loadout route --models
|
|
69
|
+
loadout route --models --provider anthropic
|
|
70
|
+
loadout route --models --tier fast
|
|
71
|
+
loadout route --cost
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Use these when the user asks what is available or what something costs. Prices
|
|
75
|
+
are per-million-token list rates; actual spend depends on prompt size, so give
|
|
76
|
+
ratios ("roughly 4x cheaper") rather than predicting a dollar total.
|
|
77
|
+
|
|
78
|
+
## Handing work to another agent
|
|
79
|
+
|
|
80
|
+
When a different agent suits the task better — or the user asks to delegate —
|
|
81
|
+
use the handoff log. Check it is set up:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
loadout handoff status
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
If uninitialized, run `loadout handoff init` first. Then send the task:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
loadout handoff send codex "write unit tests for the auth module" --context "see src/auth.ts"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Put anything the receiving agent needs into `--context`: file paths, the
|
|
94
|
+
decision you already made, what you deliberately left out. The other agent has
|
|
95
|
+
none of this conversation.
|
|
96
|
+
|
|
97
|
+
Sending a task is a real side effect on a shared file. Confirm with the user
|
|
98
|
+
before sending unless they asked for the handoff themselves.
|
|
99
|
+
|
|
100
|
+
## Reading your own inbox
|
|
101
|
+
|
|
102
|
+
At the start of a session, and after finishing a task, check whether another
|
|
103
|
+
agent left you work:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
loadout handoff inbox claude-code
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
If it lists tasks, work them in order and run the `loadout handoff done <id>`
|
|
110
|
+
command it prints for each one. If it reports none, continue as normal and do
|
|
111
|
+
not mention it.
|
|
112
|
+
|
|
113
|
+
## Judgment this skill does not replace
|
|
114
|
+
|
|
115
|
+
- A "simple" task in an unfamiliar or high-risk area still deserves a stronger
|
|
116
|
+
model. The classifier reads keywords, not stakes.
|
|
117
|
+
- Security-sensitive, migration, and data-loss paths are worth frontier tier
|
|
118
|
+
regardless of what phase they classify as.
|
|
119
|
+
- If the user has already chosen a model, do not argue unless the choice is
|
|
120
|
+
clearly wrong for the work.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|