@victortomaili/skill-cli 0.6.7 → 0.6.9

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,26 @@ 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.9] - 2026-07-08
15
+
16
+ ### Changed
17
+ - AGENTS.md + `skill active`: PROPOSE is now NON-BLOCKING. The agent finally
18
+ classified correctly ("caveman is STYLE → I must propose") but then talked itself
19
+ out of asking via "asking would delay the task" / "user has a clear request" /
20
+ "I'll just do the task". The new wording makes asking non-blocking (ask at the top,
21
+ then do the task in the same reply) and explicitly forbids those excuses, plus
22
+ "mentioning/noting/available is NOT asking".
23
+
24
+ ## [0.6.8] - 2026-07-08
25
+
26
+ ### Changed
27
+ - AGENTS.md + `skill active`: reframed cost/style/speed skills as USER TRADE-OFFS
28
+ the agent must never pre-judge. The agent kept skipping proposals with "not
29
+ relevant to this task"; the new wording forbids deciding a trade-off for the
30
+ user ("not relevant here" = stealing the user's decision). Made the `skill active`
31
+ footer mechanical (LOAD/PROPOSE/SKIP grid) with an explicit callout: "cost/style
32
+ but not relevant here → that is the bug. Ask instead."
33
+
14
34
  ## [0.6.7] - 2026-07-08
15
35
 
16
36
  ### 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.9",
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,15 @@ 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 → ASK "enable <name>?" at the TOP of your reply,'))
46
+ console.log(c.gray(' THEN do the task in the SAME reply. Asking is NON-BLOCKING. A trade-off is the'))
47
+ console.log(c.gray(' USER') + c.gray("'s decision; it moves an axis on EVERY reply, so NEVER skip and NEVER"))
48
+ console.log(c.gray(' say "not relevant here". Mentioning / noting / "available" is NOT asking.'))
49
+ console.log(c.gray(' SKIP moves NONE of the above.'))
50
+ console.log(c.yellow(' ⚠ Broken-rule excuses: "not relevant here", "would delay the task",'))
51
+ console.log(c.yellow(' "user has a clear request", "I will just do the task". Each = ask instead.'))
44
52
  }
45
53
 
46
54
  // `skill default <name>` — mark a skill as a default (active by default in every
@@ -29,12 +29,19 @@ 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.
40
+ PROPOSE IS NON-BLOCKING: put the question at the TOP of your reply, then DO the
41
+ task in the SAME reply — asking never delays anything, so "the task is the
42
+ priority", "the user has a clear request", and "asking would block/delay it" are
43
+ FORBIDDEN excuses to skip asking. Mentioning / noting / "available" is NOT asking;
44
+ you must ask a yes/no question (e.g. "Enable <name>?").
38
45
  - moves none of the above → skip.
39
46
  When unsure if a skill moves an axis → PROPOSE (ask). LOADED \u2260 LISTED: a skill is
40
47
  loaded only if you \`cat\`-ed it this session — listing it, its \u2605, or its \`active\`