@iceinvein/agent-skills 0.8.4 → 0.8.5

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/dist/cli/index.js CHANGED
@@ -21,12 +21,14 @@ var __toESM = (mod, isNodeMode, target) => {
21
21
  }
22
22
  target = mod != null ? __create(__getProtoOf(mod)) : {};
23
23
  const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
24
- for (let key of __getOwnPropNames(mod))
25
- if (!__hasOwnProp.call(to, key))
26
- __defProp(to, key, {
27
- get: __accessProp.bind(mod, key),
28
- enumerable: true
29
- });
24
+ if (mod && typeof mod === "object" || typeof mod === "function") {
25
+ for (let key of __getOwnPropNames(mod))
26
+ if (!__hasOwnProp.call(to, key))
27
+ __defProp(to, key, {
28
+ get: __accessProp.bind(mod, key),
29
+ enumerable: true
30
+ });
31
+ }
30
32
  if (canCache)
31
33
  cache.set(mod, to);
32
34
  return to;
@@ -35,7 +37,7 @@ var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports,
35
37
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
36
38
 
37
39
  // node_modules/cli-width/index.js
38
- var require_cli_width = __commonJS((exports, module) => {
40
+ var require_cli_width = __commonJS(function(exports, module) {
39
41
  module.exports = cliWidth;
40
42
  function normalizeOpts(options) {
41
43
  const defaultOpts = {
@@ -75,7 +77,7 @@ var require_cli_width = __commonJS((exports, module) => {
75
77
  });
76
78
 
77
79
  // node_modules/mute-stream/lib/index.js
78
- var require_lib = __commonJS((exports, module) => {
80
+ var require_lib = __commonJS(function(exports, module) {
79
81
  var Stream = __require("stream");
80
82
 
81
83
  class MuteStream extends Stream {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iceinvein/agent-skills",
3
- "version": "0.8.4",
3
+ "version": "0.8.5",
4
4
  "description": "Install agent skills into AI coding tools",
5
5
  "author": "iceinvein",
6
6
  "license": "MIT",
package/skills/index.json CHANGED
@@ -283,7 +283,7 @@
283
283
  "name": "sluice",
284
284
  "description": "Routes work by change shape into four channels (bypass, fast, main, deep) and applies only the rules each channel needs, so a one-line fix does not pay the cost of a multi-subsystem build. Carries seven rules as one-liners in the router and the full treatment in references read only on friction, and closes each run with a ledger read out of the session transcript: elapsed, tools, tokens, and what each dispatched agent cost where the transcript recorded it. Claude Code only; stands down where the superpowers pipeline governs the repo.",
285
285
  "type": "prompt",
286
- "version": "0.7.0"
286
+ "version": "0.8.0"
287
287
  },
288
288
  {
289
289
  "name": "temporal-coupling-detector",
@@ -112,6 +112,7 @@ plan:
112
112
  **Touches:** <path> (new) | <path> (edit) | <path> (test)
113
113
  **Flips:** <what changes, from what, or omit>
114
114
  **Review:** <reason, or omit>
115
+ **Model:** <cheaper model, and why the work is mechanical, or omit>
115
116
  - [ ] <action> -> <proof>
116
117
  ```
117
118
 
@@ -130,19 +131,20 @@ task that turns the new behaviour on with `Flips`. Then a late re-baseline,
130
131
  re-blessed snapshots, regenerated fixtures, attributes to that one point
131
132
  instead of to the branch at large.
132
133
 
133
- Pre-flight rides in that same stop: which flagged tasks get a reviewer, and
134
- whether the work runs in a worktree. Ask them as choices with the counts in
135
- them, never as a paragraph, then end the turn. Task 1 opens on their next
134
+ Pre-flight rides in that same stop: which flagged tasks get a reviewer, which
135
+ mechanical ones the plan marked for a cheaper model, and whether the work runs
136
+ in a worktree. Ask them as choices with the counts in them, never as a
137
+ paragraph, then end the turn. Task 1 opens on their next
136
138
  instruction, and an answer that already carries one is that instruction. A
137
139
  session that dispatches only when asked has not ruled dispatch out, it has made
138
140
  this question the place to ask; genuine unavailability is the tool not being
139
141
  there at all, which `references/deep-channel.md` handles separately. Review that
140
142
  turns out to be missing is only actionable while the plan can still change.
141
143
 
142
- Both answers go into the run record before Task 1's first edit, each with the
143
- reason it went that way. Those rows are what discharge pre-flight, not the
144
- approval: one reply arrives for two obligations, so a "yes" with no rows behind
145
- it signed off the plan and nothing else.
144
+ All three answers go into the run record before Task 1's first edit, each with
145
+ the reason it went that way. Those rows are what discharge pre-flight, not the
146
+ approval: one reply arrives for several obligations, so a "yes" with no rows
147
+ behind it signed off the plan and nothing else.
146
148
 
147
149
  Three from that file that catch people out: concurrent implementers need a
148
150
  worktree each and the flip runs alone, review is tiered rather than automatic,
@@ -20,6 +20,16 @@
20
20
  corrupted concurrent run.
21
21
  - A **Review** field may name why the task needs the stronger tier (auth,
22
22
  data, money, concurrency); the table below decides otherwise.
23
+ - A **Model** field may put the task on a cheaper model, and says why the work
24
+ is mechanical: the Contract is exact, the tests it has to satisfy already
25
+ exist, and nothing in it turns on judgment. Omit it and the task runs on this
26
+ session's model, so the marked tasks are the exceptions rather than the rule.
27
+ Anything the table below sends to tier 3 is disqualified, `Flips` with it:
28
+ those are the tasks where being wrong is expensive, and the saving is not
29
+ worth pricing against that. Mark it here rather than deciding at dispatch,
30
+ because whether a task is mechanical is fixed the moment its Contract and
31
+ Touches are written, and pre-flight is the last point your partner can price
32
+ it.
23
33
  - **Order the plan so the inert tasks come first.** A task is inert when it
24
34
  adds capability, config, a schema or a code path that nothing reads yet:
25
35
  landing it changes no observable behaviour, so it is safe to land alone and
@@ -45,6 +55,7 @@
45
55
  **Touches:** <path> (new) | <path> (edit) | <path> (test)
46
56
  **Flips:** <what changes, from what, or omit>
47
57
  **Review:** <reason, or omit>
58
+ **Model:** <cheaper model, and why the work is mechanical, or omit>
48
59
  - [ ] <action> -> <proof>
49
60
  ```
50
61
 
@@ -64,8 +75,8 @@ A `deep` run outlives its own context, so what it learns has to sit on disk
64
75
  rather than in the session. Open one file for the run before pre-flight and
65
76
  write it as you go. It holds what a stranger resuming tomorrow would need and
66
77
  you would otherwise be recalling: the base each task was dispatched from, each
67
- task with its status and its commits, both answers pre-flight settled, review
68
- and workspace alike, with the reason each one went that way, and any finding
78
+ task with its status and its commits, the three answers pre-flight settled,
79
+ review, model and workspace, with the reason each one went that way, and any finding
69
80
  belonging to a task other than the one that surfaced it. Those pre-flight rows
70
81
  come first and open the file, because they are also what says the stop happened
71
82
  at all.
@@ -86,7 +97,7 @@ SHA it committed and putting that in the row rather than deriving it later.
86
97
  ## Pre-flight
87
98
 
88
99
  Design signed off, plan written, nothing built yet. Before Task 1, stop once
89
- and settle two things with your partner. Ask them as questions with options,
100
+ and settle three things with your partner. Ask them as questions with options,
90
101
  not as a paragraph they have to reply to in prose: what you are after is a
91
102
  decision, and a wall of considerations asks them to extract the decision from
92
103
  it first.
@@ -103,11 +114,18 @@ your sign-off and Task 1 begins.
103
114
  **Review.** Name the tasks the table below sends to a reviewer, each with the
104
115
  trigger that qualified it, and say how many of the rest skip with a ledger
105
116
  line. Then offer the choice: dispatch a reviewer at each of them, dispatch
106
- only at the stronger-model tier, or hand back with those tasks listed as
117
+ only at tier 3, or hand back with those tasks listed as
107
118
  review outstanding. The options are what makes the cost legible.
108
119
  "Four of nine need a reviewer" is a decision your partner can price; "I will
109
120
  review where appropriate" is not.
110
121
 
122
+ **Model.** The plan already marked which tasks are mechanical, so this is a
123
+ ratification rather than a fresh judgment, and it carries the count: six of
124
+ nine on the cheaper model and three on this session's, take it, put everything
125
+ on the session model, or name the exceptions. The count is what your partner
126
+ prices. "I will use the cheaper model where it fits" prices nothing, and it
127
+ also arrives after the tokens are spent.
128
+
111
129
  **Workspace, commits and concurrency.** One worktree for the plan, one per
112
130
  concurrent implementer, or straight onto the current branch; and with it who
113
131
  commits, each agent committing its own task as it finishes or agents leaving
@@ -201,8 +219,11 @@ blocking finding. A derived one just recomputes.
201
219
  authoring a message for a diff you did not write means reading that diff,
202
220
  which is the context dispatch exists to keep out of this session. Pre-flight
203
221
  can overturn it for a given run.
204
- - Match model to task: cheap for mechanical work, stronger for judgment
205
- and final review.
222
+ - **The plan and pre-flight decide the model, not the moment of dispatch.** A
223
+ task with no `Model` line goes out on this session's, and a downshift that
224
+ was neither marked nor ratified is a saving your partner never agreed to.
225
+ Reviewers are the other half of that rule: a review never runs below the
226
+ model that built the task, so a downshifted task's reviewer comes back up.
206
227
 
207
228
  A per-task commit is not an integration event. `references/finish.md` owns
208
229
  push, PR and merge, none of which happen here, and a standing instruction to
@@ -259,8 +280,15 @@ and it fails by printing success rather than by erroring.
259
280
  | 0 | Created files only, executable tests exist and pass, Contract matches | No dispatch. Read the commit stat yourself. |
260
281
  | 1 | Modified existing code, or later tasks build on it | One reviewer dispatch |
261
282
  | 2 | No executable test covers it: prose, config, docs | One reviewer dispatch; a stat cannot confirm the words are right |
262
- | 3 | Auth, data, money, concurrency, or the plan flags it | One reviewer dispatch, stronger model |
263
- | 3 | Carries the `Flips` line | One reviewer dispatch, stronger model |
283
+ | 3 | Auth, data, money, concurrency, or the plan flags it | One reviewer dispatch; the task may not be downshifted |
284
+ | 3 | Carries the `Flips` line | One reviewer dispatch; the task may not be downshifted |
285
+
286
+ No tier buys a bigger model, because a plan that downshifted nothing has every
287
+ agent on the same one, and a tier promising something stronger would be
288
+ promising what is already in use. What a tier buys is a dispatch. The one model
289
+ rule that holds across all of them is that a review never runs below the model
290
+ that built the task, so tiers 1 and 2 over a downshifted task come back up to
291
+ this session's.
264
292
 
265
293
  A task matching more than one row takes the highest tier of them. Tier is the
266
294
  number, not the row order and not which shape sounds more serious. A task that
@@ -323,8 +351,9 @@ absorb into the next task's brief.
323
351
  ## The final review
324
352
 
325
353
  It covers cross-task integration and everything the record accumulated, not
326
- lines a per-task review already cleared. It is a dispatch, on the stronger
327
- model, and it gets the whole-plan diff and the deferred findings as a list.
354
+ lines a per-task review already cleared. It is a dispatch, on this session's
355
+ model and never a downshifted one, and it gets the whole-plan diff and the
356
+ deferred findings as a list.
328
357
 
329
358
  Size the brief to what it is actually carrying, and say which of two things it
330
359
  is. After nine per-task reviews cleared, it is an integration check. When
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sluice",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Routes work by change shape into four channels (bypass, fast, main, deep) and applies only the rules each channel needs, so a one-line fix does not pay the cost of a multi-subsystem build. Carries seven rules as one-liners in the router and the full treatment in references read only on friction, and closes each run with a ledger read out of the session transcript: elapsed, tools, tokens, and what each dispatched agent cost where the transcript recorded it. Claude Code only; stands down where the superpowers pipeline governs the repo.",
5
5
  "author": "iceinvein",
6
6
  "type": "prompt",