@iceinvein/agent-skills 0.10.1 → 0.10.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iceinvein/agent-skills",
3
- "version": "0.10.1",
3
+ "version": "0.10.2",
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. Checks the finished plan with plan.sh validate rather than trusting it to memory, seeds the run state from it, keeps a deep run's task breakdown in .sluice/run.json so a statusline segment and one status command can answer where the run is, 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.12.1"
286
+ "version": "0.12.2"
287
287
  },
288
288
  {
289
289
  "name": "temporal-coupling-detector",
@@ -36,9 +36,11 @@ follow from that being worth guaranteeing: a value beginning with `--` is
36
36
  rejected rather than accepted as a value, and a flag with no value at all is
37
37
  rejected rather than taking the next flag as one.
38
38
 
39
- Gitignore `.sluice/`. It is working state, and everything durable in it lands
40
- somewhere else anyway: the commits are in git and the reasons are in the record,
41
- which is the file that does get committed.
39
+ The directory ignores itself: `init` drops a `.gitignore` holding `*` next to
40
+ the state, so no project has to add a line of its own. It is working state, and
41
+ everything durable in it lands somewhere else anyway: the commits are in git and
42
+ the reasons are in the record, which is the file that does get committed. Delete
43
+ that `.gitignore` if you want a run tracked; it is only written when absent.
42
44
 
43
45
  Open it with `init` when you open the run record, at the same point and for the
44
46
  same reason, then seed the rows with `plan.sh import <plan>` rather than a
@@ -19,7 +19,8 @@
19
19
  # status.sh close
20
20
  #
21
21
  # --dir <path> selects the tree to read (default: $PWD). State lives at
22
- # <dir>/.sluice/run.json and closed runs at <dir>/.sluice/archive/.
22
+ # <dir>/.sluice/run.json and closed runs at <dir>/.sluice/archive/. The
23
+ # directory ignores itself, so no project needs a .gitignore line for it.
23
24
  #
24
25
  # Exit: 0 ok, 1 the state could not be written, 2 no live run, 3 a run is
25
26
  # already live, 4 bad arguments, 5 jq missing, 6 the state file is unreadable.
@@ -220,6 +221,17 @@ require_readable() {
220
221
  }
221
222
  }
222
223
 
224
+ # The run state is working state, not history: the run record is what gets
225
+ # committed. So the directory ignores itself, rather than every repo sluice ever
226
+ # runs in having to add a line to its own .gitignore. `*` matches the .gitignore
227
+ # file too, so the whole directory drops out of `git status`. An existing file is
228
+ # left alone, and a tree that refuses the write still gets its run.
229
+ mk_dir() { # <directory to create under .sluice>
230
+ mkdir -p "$1" || { err "could not create $1"; exit 1; }
231
+ local ignore="$DIR/.sluice/.gitignore"
232
+ [ -e "$ignore" ] || printf '*\n' >"$ignore" 2>/dev/null || true
233
+ }
234
+
223
235
  # Written through a temporary file so an interrupted write cannot leave the
224
236
  # run state half-serialised, which would read as a corrupted run rather than
225
237
  # as a failed command.
@@ -263,7 +275,7 @@ case "$SUB" in
263
275
  exit 3
264
276
  fi
265
277
 
266
- mkdir -p "$DIR/.sluice"
278
+ mk_dir "$DIR/.sluice"
267
279
  jq -n \
268
280
  --arg topic "$TOPIC" \
269
281
  --arg channel "$CHANNEL" \
@@ -526,7 +538,7 @@ case "$SUB" in
526
538
  stamp="$(printf '%s' "$started" | tr -cd '0-9TZ')"
527
539
  slug="$(printf '%s' "${topic:-run}" | tr -cs 'A-Za-z0-9._-' '-')"
528
540
  [ -n "$stamp" ] || stamp="unknown"
529
- mkdir -p "$ARCHIVE"
541
+ mk_dir "$ARCHIVE"
530
542
 
531
543
  # The archive holds the only copy of a closed run, and two runs sharing a
532
544
  # start second and a topic name the same file. mv would leave one of them,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sluice",
3
- "version": "0.12.1",
3
+ "version": "0.12.2",
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. Checks the finished plan with plan.sh validate rather than trusting it to memory, seeds the run state from it, keeps a deep run's task breakdown in .sluice/run.json so a statusline segment and one status command can answer where the run is, 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",