@victortomaili/skill-cli 0.6.7 → 0.6.8

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/CHANGELOG.md CHANGED
@@ -11,6 +11,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
  - Cursor adapter (`.cursor/rules` format) for `init -g` bootstrap.
12
12
  - Per-agent hook adapters for automatic `/X` triggering (push model).
13
13
 
14
+ ## [0.6.8] - 2026-07-08
15
+
16
+ ### Changed
17
+ - AGENTS.md + `skill active`: reframed cost/style/speed skills as USER TRADE-OFFS
18
+ the agent must never pre-judge. The agent kept skipping proposals with "not
19
+ relevant to this task"; the new wording forbids deciding a trade-off for the
20
+ user ("not relevant here" = stealing the user's decision). Made the `skill active`
21
+ footer mechanical (LOAD/PROPOSE/SKIP grid) with an explicit callout: "cost/style
22
+ but not relevant here → that is the bug. Ask instead."
23
+
14
24
  ## [0.6.7] - 2026-07-08
15
25
 
16
26
  ### Changed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@victortomaili/skill-cli",
3
- "version": "0.6.7",
3
+ "version": "0.6.8",
4
4
  "description": "Cross-agent skill manager — one global store, clean agent folders, activation via skill.config",
5
5
  "license": "MIT",
6
6
  "author": "Victor Tomaili <victor@tomaili.com>",
@@ -16,7 +16,7 @@ export function cmdActive() {
16
16
  const eff = computeEffective(installed, globalCfg, projCfg)
17
17
  const defs = new Set((globalCfg.defaults || []).map(d => String(d).toLowerCase()))
18
18
 
19
- console.log(c.bold('skill active') + c.gray(' — active skills (descriptions only). AUTO-LOAD what is necessary or quality-improving; PROPOSE style/cost/shortcut skills and wait for confirmation.'))
19
+ console.log(c.bold('skill active') + c.gray(' — active skills (descriptions only). LOAD correctness/quality ones; PROPOSE every cost/style/speed one (a trade-off is the USER') + c.gray("'s call — never skip it)."))
20
20
  console.log()
21
21
 
22
22
  if (eff.length === 0) {
@@ -40,7 +40,13 @@ export function cmdActive() {
40
40
  if (s.description) console.log(c.gray(' ' + String(s.description).replace(/[\r\n]+/g, ' ').trim()))
41
41
  }
42
42
  console.log()
43
- console.log(c.bold('→ Decide each skill by the criteria:') + c.gray(' affects ') + c.cyan('CORRECTNESS/QUALITY') + c.gray(' → load (') + c.cyan('skill cat <name>') + c.gray('); affects ') + c.cyan('COST/SPEED') + c.gray(' → propose; affects none → skip. Task type is irrelevant; when unsure → propose.'))
43
+ console.log(c.bold('→ For EACH skill above, decide in your reply:'))
44
+ console.log(c.gray(' LOAD moves CORRECTNESS/QUALITY → run ') + c.cyan('skill cat <name>') + c.gray(' now.'))
45
+ console.log(c.gray(' PROPOSE moves COST, STYLE, or SPEED → you MUST ASK "enable <name>?". A trade-off is the'))
46
+ console.log(c.gray(' USER') + c.gray("'s decision — these move an axis on EVERY reply, so NEVER skip one and"))
47
+ console.log(c.gray(' NEVER say "not relevant to this task" (that = you deciding for the user).'))
48
+ console.log(c.gray(' SKIP moves NONE of the above.'))
49
+ console.log(c.yellow(' ⚠ If you wrote "cost/style but not relevant here" → that is the bug. Ask instead.'))
44
50
  }
45
51
 
46
52
  // `skill default <name>` — mark a skill as a default (active by default in every
@@ -29,12 +29,14 @@ run \`skill active\`. It lists each ACTIVE skill's name + FULL description (neve
29
29
  body). Read it, then for EACH skill classify which axis it moves and ACT — there is
30
30
  no discretion and no third option:
31
31
  - moves CORRECTNESS or QUALITY → load it now: \`skill cat <name>\`.
32
- - moves COST, SPEED, or response STYLE → PROPOSE it: in THIS reply, ask the user
33
- "Enable <name>? It <one-line benefit>." and apply only on yes. These three axes
34
- apply to EVERY task by definition (every reply costs tokens and time), so the
35
- thoughts "not needed for this task", "the user didn't request it", and "skip
36
- unless needed" are FORBIDDEN they are the exact error. Listing the skill in a
37
- table is NOT proposing; you must actually ask.
32
+ - moves COST, SPEED, or response STYLE → PROPOSE it. These are TRADE-OFFS the
33
+ USER decides them, NEVER you. Even if you are SURE one would hurt THIS task, you
34
+ still ASK: "Enable <name>? It <one-line benefit>." (apply only on yes). They move
35
+ an axis on EVERY task by definition (every reply has a token cost, a length, a
36
+ style, a speed), so the thoughts "not relevant to this task", "not needed here",
37
+ "the user didn't request it", and "skip unless needed" are FORBIDDEN — each one
38
+ is you STEALING the user's decision. Deciding a trade-off is not your role;
39
+ surfacing it is. A line in a table is NOT proposing — you must actually ask.
38
40
  - moves none of the above → skip.
39
41
  When unsure if a skill moves an axis → PROPOSE (ask). LOADED \u2260 LISTED: a skill is
40
42
  loaded only if you \`cat\`-ed it this session — listing it, its \u2605, or its \`active\`