@victortomaili/skill-cli 0.7.1 → 0.7.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/CHANGELOG.md CHANGED
@@ -11,6 +11,17 @@ 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.7.2] - 2026-07-08
15
+
16
+ ### Changed
17
+ - Hardened the PROPOSE gate: the proposal turn must contain ONLY the questions
18
+ (enable + parameters) and then END the turn — NO exploration, NO tool calls, NO
19
+ task work. The agent must not start the task until the user answers. Previously
20
+ the wording said "stop and wait" but allowed the agent to keep exploring; now
21
+ "END YOUR TURN" is explicit in both the AGENTS.md block and the `skill active`
22
+ footer. Also added "I'll start exploring while I wait" to the forbidden-excuses
23
+ list.
24
+
14
25
  ## [0.7.1] - 2026-07-08
15
26
 
16
27
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@victortomaili/skill-cli",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
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>",
@@ -43,17 +43,18 @@ export function cmdActive() {
43
43
  console.log(c.bold('→ For EACH skill above, decide in your reply:'))
44
44
  console.log(c.gray(' LOAD moves CORRECTNESS/QUALITY → run ') + c.cyan('skill cat <name>') + c.gray(' now.'))
45
45
  console.log(c.gray(' PROPOSE moves COST, STYLE, or SPEED → ASK "enable <name>?" about ALL of them,'))
46
- console.log(c.gray(' then STOP and WAIT for the answer. Do NOT start the task until they answer.'))
47
- console.log(c.gray(' The wait is the POINT a trade-off is the USER') + c.gray("'s decision; it moves an axis") )
48
- console.log(c.gray(' on EVERY reply, so NEVER skip and NEVER say "not relevant here".'))
46
+ console.log(c.gray(' then END YOUR TURN and WAIT. That turn contains ONLY the questions NO exploration,'))
47
+ console.log(c.gray(' NO tool calls, NO task work. Do NOT start the task until they answer. The wait is'))
48
+ console.log(c.gray(' the POINT a trade-off is the USER') + c.gray("'s decision; it moves an axis on EVERY") )
49
+ console.log(c.gray(' reply, so NEVER skip and NEVER say "not relevant here".'))
49
50
  console.log(c.gray(' Mentioning / noting / "available" is NOT asking.'))
50
51
  console.log(c.gray(' PARAMS if a proposed skill lists activation options (level / language / mode /'), )
51
52
  console.log(c.gray(' format / strictness), ask the user to choose them in the SAME proposal — do not pick'))
52
53
  console.log(c.gray(' for them. Gate stays up until enable decision + parameters are both given.'))
53
54
  console.log(c.gray(' SKIP moves NONE of the above.'))
54
- console.log(c.yellow(' ⚠ Breaking the gate: starting the task before the user answers,'))
55
+ console.log(c.yellow(' ⚠ Breaking the gate: starting the task / exploring before the user answers,'))
55
56
  console.log(c.yellow(' "would delay it", "user has a clear request", "I will just do the task",'))
56
- console.log(c.yellow(' "not relevant here". → ASK first, then wait.'))
57
+ console.log(c.yellow(' "not relevant here". → ASK first, then END your turn.'))
57
58
  }
58
59
 
59
60
  // `skill default <name>` — mark a skill as a default (active by default in every
@@ -38,12 +38,15 @@ no discretion and no third option:
38
38
  is you STEALING the user's decision. Deciding a trade-off is not your role;
39
39
  surfacing it is. A line in a table is NOT proposing — you must actually ask.
40
40
  PROPOSE IS A GATE: ASK "Enable <name>?" (ask about ALL such skills in ONE message),
41
- then STOP and WAIT for the user's answer. Do NOT start the actual task until they
42
- answer (yes apply it, no → proceed without). The one-turn wait is the POINT —
41
+ then END YOUR TURN and WAIT do nothing else that turn. The proposal turn contains
42
+ ONLY the questions (enable + any parameters): NO exploration, NO tool calls, NO
43
+ reading files, NO starting the task. Do NOT begin the actual task until the user
44
+ answers (yes → apply it, no → proceed without). The one-turn wait is the POINT —
43
45
  the user chooses the trade-off BEFORE you start — so "asking would delay the task",
44
- "the user has a clear request", "I'll just do the task first", and "I'll mention it
45
- and proceed" are FORBIDDEN: each is you deciding for the user. Mentioning / noting /
46
- "available" is NOT asking — you must ASK a yes/no question and then wait.
46
+ "the user has a clear request", "I'll just do the task first", "I'll mention it and
47
+ proceed", and "I'll start exploring while I wait" are FORBIDDEN: each is you
48
+ deciding for the user. Mentioning / noting / "available" is NOT asking — you must
49
+ ASK a yes/no question and then END your turn.
47
50
  PARAMETERS (2nd rule): if the skill's description lists activation options to pick
48
51
  from — e.g. a level, a language, a mode, a format, or a strictness — you MUST ask
49
52
  the user to choose them in the SAME proposal (do NOT pick for them), and the gate