@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 +20 -0
- package/package.json +1 -1
- package/src/commands/defaults.js +1 -2
- package/src/lib/agents-md.js +20 -44
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.
|
|
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>",
|
package/src/commands/defaults.js
CHANGED
|
@@ -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(
|
|
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
|
package/src/lib/agents-md.js
CHANGED
|
@@ -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
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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.
|