Skip to content

Releases: ssheleg/make-skill

v0.33.4 — make-skill

Choose a tag to compare

@github-actions github-actions released this 27 Oct 13:49
1bd8c0e
  • Codex edits are audited (hub board row B-211). Codex sends every file edit as one tool,
    apply_patch, with the patch text in tool_input.command and no file_path. The PostToolUse
    hook matched Write|Edit|MultiEdit and took file_path with sed, so a SKILL.md written in
    Codex was never audited. The matcher now names apply_patch, and skill-md-audit.sh parses the
    payload as JSON: for apply_patch every *** Add File:, *** Update File:,
    *** Delete File: and *** Move to: path (relative ones against the payload's cwd), for the
    other tools tool_input.file_path. Each SKILL.md that exists after the call is audited, and
    the gaps of several skills come back in one systemMessage. A payload with no SKILL.md in it
    starts no interpreter; a malformed one stays silent. New test/hook_test.py (17 cases, run by
    npm test and CI); five of them fail on 0.33.3's hook.
  • Trigger: "check a skill against the standard" / «проверь скилл по стандарту» joins the
    ## Triggers section of make-skill (the description is unchanged), with eval query q23 in
    test/evals/triggers.json (not yet measured on a model).

v0.33.3 — make-skill

Choose a tag to compare

@github-actions github-actions released this 26 Oct 03:08
faabd12
  • The description target is 300 characters (hub board row B-257): the family moved to a
    300-character budget on 2026-10-26 (B-255), but the canon new members and retrofits read
    still said 400, so a skill written to it would raise the family total the hub ratchet holds.
    SKILL.md, references/authoring.md, retrofit.md, agent-skills-spec.md, the
    SKILL.template.md description, README.md, CONTRIBUTING.md, the eval scenario and both
    DESC_TARGET constants (audit_skill.py, test/validate.py) now say 300. The soft cap
    (500, WARN) and the spec cap (1024, FAIL) are unchanged: only the advisory target moved.

v0.33.2 — make-skill

Choose a tag to compare

@github-actions github-actions released this 25 Oct 21:45
eaad435
  • Descriptions within a 300-character budget (hub board row B-255 (a)): Claude Code lists every
    skill's description in one ~30,000-character budget, and on the operator's machine the listing
    stood at 51,178. make-skill falls from 470 to 290 characters and skill-search from 397 to 297
    (hub measure). Both gain a ## Triggers section holding the phrases the descriptions dropped;
    make-skill's body trims two clauses so it stays inside its 4,750-token working limit (~4,740).

v0.33.1 — make-skill

Choose a tag to compare

@github-actions github-actions released this 24 Oct 01:50
c59b076
  • test/family_gate.py, the family's canonical member gate (hub B-108, B-109): the board
    parses (every row as wide as its header, no id twice) and release.yml keeps the tag-ancestry
    check (fetch-depth: 0, git merge-base --is-ancestor), each watched failing on a plant by
    --self-test. Wired into the gate; a byte-for-byte copy of the hub's member-gate/family_gate.py.

v0.33.0 — make-skill

Choose a tag to compare

@github-actions github-actions released this 20 Oct 04:18
7745e2c
  • Why. Claude Code fits every skill's description into one listing budget and
    shows the rest as bare names. Measured on the operator's machine 2026-10-20: a
    29,995-char listing for 134 skills, 81 of them with no description, against about
    80,000 chars of descriptions on offer. Family descriptions sat at 870-965 chars
    because the old house rule ("5% headroom", 970 of 1024) read as a target. Plugin
    skills cannot be hidden with skillOverrides, so the length is the author's lever.
  • The rule. One "Use when ..." sentence naming the job, the 4-8 highest-signal
    triggers in English and Russian as one compact list, one "NOT for ..." boundary
    with the refusal phrase if any. Target 400 chars, house soft cap 500, spec cap 1024.
    Longer trigger lists, examples and caveats go in the body. Stated in SKILL.md,
    references/authoring.md (new section The description budget),
    agent-skills-spec.md (norm table and checklist), retrofit.md (item 1),
    claude-code-plugin.md (the 2026-10-20 measurement), the SKILL.template.md
    placeholder, the Cursor rule, the /skill-audit command and the skill-auditor
    agent (which now also sums a family's descriptions against the listing budget).
  • The checks. audit_skill.py --house replaces DESC_HEADROOM (GAP past 970)
    with DESC_BUDGET: a WARN past 500 that does not change the exit code; past 1024
    DESC_LENGTH stays the GAP. The text summary counts WARN lines. test/validate.py
    prints WARN: past 500 for every shipped skill (it read make-skill alone before)
    and fails only past 1024. The shared constants are DESC_TARGET = 400 and
    DESC_SOFT_CAP = 500, compared by the drift guard. The CI deschead negative case
    (fail at 1000 chars) is gone; the auditor step now asserts a WARN instead.
  • Own descriptions. make-skill 943 to 470 chars (it keeps the five English and
    Russian pairs the sshlg-skills routing table requires, so it sits above the 400
    target and under the 500 cap); skill-search 540 to 397. The dropped trigger
    phrases moved into each body. To pay for the rule inside the body budget, two
    gotchas (two token counters, time-branching text) now point at authoring.md
    Content guidelines, where the long form lives.
  • Tests. Six new cases in test/checker_parity_test.py: the auditor WARNs and
    does not GAP past the soft cap; it passes inside the cap and skips the rule without
    --house; past 1024 only DESC_LENGTH fires; the validator WARNs and exits 0 on a
    planted 600-char description in either shipped skill, stays silent on the shipped
    ones, and fails at 1100 chars. fix-ms-01.02.py pins the two new thresholds' owner.

v0.32.0 — make-skill

Choose a tag to compare

@github-actions github-actions released this 19 Oct 19:10
837821b
  • Supply-chain checks SC-1..SC-5. references/enterprise.md names five shapes a
    pre-install review must resolve: an unpinned runtime installer or a pipe into a
    shell (SC-1), an unknown skill pack or marketplace (SC-2), a write to the user's
    global instruction file (SC-3), an impersonation fork (SC-4, by hand from the SC-2
    list) and a step that turns a security feature off (SC-5). Each carries the
    primary source it rests on, read 2026-10-19.
  • audit_skill.py --supply-chain reports SC-1, SC-2, SC-3 and SC-5 as named GAPs
    with file:line over the skill's text files and its plugin's hooks/ and bin/.
    Off by default, so a skill that teaches installation keeps a clean conformance
    audit. 14 cases in test/audit_regressions/sc-supply-chain.py (a planted positive
    and a near-miss per check); the test fails against the 0.31.2 auditor.
  • claude plugin eval re-measured. On Claude Code 2.1.299 (2026-10-19)
    claude plugin eval --help prints its usage and exits 0, and eval init --bare
    writes a case and exits 0. references/authoring.md no longer says every path
    prints "early access" and exits 1 (that was 2.1.236, 2026-08-31); retrofit.md
    and distribution.md drop "gated". No scored run was made.
    The validate.yml negative self-tests for this claim now plant against the new
    wording and date.
  • Codex AGENTS.md byte budget. references/distribution.md records, from the
    Codex guide, that Codex takes one file per directory from the project root down,
    concatenates root first and stops adding files at project_doc_max_bytes
    (32 KiB by default), so the deepest guidance is what a long chain loses.
    test/validate.py measures this repository's chain on every run, with a self-test.

v0.31.2 — make-skill

Choose a tag to compare

@github-actions github-actions released this 13 Oct 03:17
78d6765
  • FW01 expands the Python temporary-tree source check to the owning repository,
    with the documented excluded directories and lexical limits preserved.
  • Only the exact ledger path, allocation count and call shape receive the existing
    exception. Negative controls cover absent/wrong-path ledgers and changed calls.
  • Validation follows nightly and deliberate frozen-candidate promotion policy.
    This patch packages source-validation maintenance; no new model-eval result or
    broader lexical/dataflow guarantee is claimed.
  • FW01 source evidence.

v0.31.1 — make-skill

Choose a tag to compare

@github-actions github-actions released this 12 Oct 16:34
b4418bc

Correction to v0.31.0's MS-05 entry. That entry said the check refuses a temp-dir call
"through any receiver". Measured against temp_maker_hit(): it catches a direct call through
one receiver or none (tempfile.mkdtemp(, tf.mkdtemp(, mkdtemp() and a one-line renaming
from-import (from tempfile import mkdtemp as m); only whole-line # comments and """
blocks are skipped (chained receivers, function references, getattr and parenthesised
multi-line imports are not seen). A trailing # comment or a ''' block that names a
maker is read as code and refused, which errs toward a false refusal, not a miss.
The missing-back-link message says how the routing runs. test/validate.py told an
author that "the adapter skills route authors here and this skill must route them back";
only creating-fabric-agents routes here. The message now reads no back-link to <name> —
creating-fabric-agents routes packaging here; this skill names all three builders and
handling-secrets in return
, and an in-gate self-test refuses the old wording.
HANDOFF records v0.31.0 as published (tag, release run, npm, hub pin) and keeps W4-C as
the single next task.

v0.31.0 — make-skill

Choose a tag to compare

@github-actions github-actions released this 12 Oct 11:20
5556e88

MS-05: a source check that every test temp tree goes through the residue ledger.
test/validate.py now refuses a mkdtemp() or TemporaryDirectory() call through any
receiver (tempfile., an alias, or none) and a from-import that renames either, anywhere
under test/ (recursively; comments and """ docstrings are not read as calls). It reads
Python only: installer_test.js keeps its own ledger, and mkstemp/NamedTemporaryFile
make files, not trees. Ported from
agent-stack, widened to subdirectories — and it found six real bypasses in
test/audit_regressions/, now routed through residue.workspace().
Back-links to the skills this one routes work to. references/mcp.md now points a
skill about a Fabric agent or service at fabric-agent-adapter:creating-fabric-agents,
:adapting-projects-to-fabric and :building-fabric-services, and credentials at
observatory-log:handling-secrets; the validator checks the names appear (not that the
targets still say what the one-liners say — read against fabric-agent-adapter 0.20.0). Only
creating-fabric-agents points back here.
skill-search trigger evals (authored, not yet model-run). 20 queries in English and
Russian, both classes in both languages on each side of the split, in
test/evals/skill-search/triggers.json; test/evals_validate.py validates them and is
now part of npm test.

v0.30.1 — make-skill

Choose a tag to compare

@github-actions github-actions released this 11 Oct 02:41
60ca8e2

references/distribution.md step 6 told a release to refresh this machine with
npx skills update <name> --global --yes for every skill. For a member of a family
with its own launcher that is the wrong door: a bare skills-CLI update of a plugin
member recreates the plain ~/.claude/skills shadow and bypasses the family's pins.
The step now sends a family member through its launcher (npx --yes sshlg-skills@latest update, no member argument), a non-family plugin through its
full id, and keeps the update-plus-prune recipe for standalone skills. Reported
2026-10-11 by a peer session against the operator's standing rule.