@victortomaili/skill-cli 0.6.5 → 0.6.7

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.7] - 2026-07-08
15
+
16
+ ### Changed
17
+ - AGENTS.md START GATE: heavily compressed (605 → ~250 words) and made the
18
+ classification mechanical. cost/style/speed-affecting skills MUST be proposed on
19
+ EVERY task (those axes apply by definition); the rationalizations "not needed for
20
+ this task", "the user didn't request it", and "skip unless needed" are now
21
+ explicitly FORBIDDEN. Also de-hardcoded the caveman example (it overfit the test)
22
+ — the rule is now fully generic.
23
+
24
+ ## [0.6.6] - 2026-07-08
25
+
26
+ ### Changed
27
+ - AGENTS.md START GATE: the load/propose/skip decision is now driven by the four
28
+ criteria (correctness / quality / cost / speed), not "propose every ★". A skill
29
+ that affects CORRECTNESS or QUALITY → auto-load; affects COST or SPEED only →
30
+ propose; affects none → skip. Task type still does not filter candidates (a
31
+ cost/style skill is a candidate on every task), and the agent must state each
32
+ decision out loud. `skill active` footer rewritten to match.
33
+
14
34
  ## [0.6.5] - 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.5",
3
+ "version": "0.6.7",
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>",
@@ -40,8 +40,7 @@ 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(c.yellow('→ For EACH skill above: PROPOSE it now.')) + c.gray(' Task type is irrelevant \"not needed for this task\" is NOT a reason to skip. The user decides, not you.'))
44
- console.log(c.gray(' Load a skill: ') + c.cyan('skill cat <name>'))
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.'))
45
44
  }
46
45
 
47
46
  // `skill default <name>` — mark a skill as a default (active by default in every
@@ -24,50 +24,26 @@ Usage:
24
24
  - \`skill default <name>\` — mark a skill as a global default (active + auto-load)
25
25
 
26
26
  START GATE (mandatory): On the FIRST user message of a session, your VERY FIRST
27
- action — BEFORE ANYTHING ELSE: before you start thinking/reasoning about the task
28
- and before any tool call MUST be to run \`skill active\`. It prints the skill
29
- CATALOG every ACTIVE skill's name + FULL description (NOT the skill body).
30
- Read it, then for EACH skill decide FROM ITS DESCRIPTION:
31
- - AUTO-LOAD it (\`skill cat <name>\`, silently) when it is needed to do the task AT
32
- ALL, OR when it would make the work HIGHER QUALITY / more correct — domain
33
- knowledge, best-practice, standards, a quality methodology. These are not
34
- optional; they are how the job should be done.
35
- - PROPOSE it (tell the user what it does; apply ONLY after they confirm; \`/X\` =
36
- confirm) when it is an OPTIONAL change to the EXPERIENCE, not to quality:
37
- response STYLE / tone / format / a persistent mode (e.g. a brevity style);
38
- • CONTEXT-COST / token optimization;
39
- an optional ACCELERATOR / shortcut (easier or faster, but not about correctness).
40
- ENFORCEMENT for EVERY active skill you MUST state a decision OUT LOUD: LOAD it
41
- or PROPOSE it to the user. Staying silent, or "not needed for this task", is NOT
42
- a valid decision. In particular:
43
- - A default is NEVER silently skipped. STYLE / COST / shortcut skills are
44
- candidates for EVERY task type — review, debugging, refactor, anything; the task
45
- type does NOT disqualify them, and "the user didn't ask" is NOT a reason to stay
46
- quiet. If you are not loading a default, you MUST propose it. The ONLY valid
47
- reason to stay silent about a ★ is: the user already declined it this session.
48
- - Do NOT wait for the user to ask — proposing happens HERE, proactively, every turn
49
- until the user decides.
50
- When unsure whether to load or propose → PROPOSE (proposing is the safe default;
51
- loading is silent).
52
- PRIORITIES — when trading off how to do the work, rank: CORRECTNESS first, then
53
- QUALITY, then COST (cheap / token-efficient), then SPEED (fast). Never sacrifice
54
- correctness or quality for speed or cost.
55
- LOADED ≠ LISTED. A skill is loaded ONLY if you have run \`skill cat <name>\` for
56
- it THIS session. Seeing a skill in \`skill active\` / \`skill list\` does NOT load
57
- it — you then know only its name + description, nothing more. Never infer a skill
58
- is in your context from its name, the \u2605 marker, or an \`active\` status: if you
59
- haven't catted it, treat it as NOT loaded (then decide: cat it, or propose it).
60
- Do not assume a skill is already applied — \`active\`/\u2605-default = AVAILABLE, not
61
- APPLIED. ANY skill can be context-altering; judge from the description — there is
62
- no fixed list and no flag. Do this even if the task looks trivial: skills shape
63
- how you approach it, so you cannot reason about it correctly until you've reviewed
64
- them.
65
-
66
- Discovery (every message): On EVERY later user message, re-check the catalog
67
- against the new request; load any newly-relevant functional skill
68
- (\`skill cat <name>\`), and PROPOSE any newly-relevant context-altering one.
69
- Load each skill only ONCE per session (\`skill trigger <keyword>\` resolves a
70
- keyword to a skill).
27
+ action — BEFORE ANYTHING ELSE (before thinking, before any tool call) — MUST be to
28
+ run \`skill active\`. It lists each ACTIVE skill's name + FULL description (never the
29
+ body). Read it, then for EACH skill classify which axis it moves and ACT — there is
30
+ no discretion and no third option:
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.
38
+ - moves none of the above → skip.
39
+ When unsure if a skill moves an axis PROPOSE (ask). LOADED \u2260 LISTED: a skill is
40
+ loaded only if you \`cat\`-ed it this session listing it, its \u2605, or its \`active\`
41
+ status is NOT loading; active/\u2605 means AVAILABLE, not APPLIED.
42
+ PRIORITIES: correctness > quality > cost (cheap) > speed — never trade correctness
43
+ or quality for speed or cost.
44
+ Discovery: on EVERY later message, re-run this classification; load newly-relevant
45
+ correctness/quality skills, PROPOSE newly-relevant cost/style/speed ones. Load each
46
+ skill only ONCE per session (\`skill trigger <keyword>\` resolves a keyword).
71
47
 
72
48
  Triggers: when the user types \`/X\`, run \`skill trigger X\`.
73
49
  - Single match → apply the output directly.