• v2.0.1 68e08c2413

    Claude released this 2026-08-17 14:24:23 +00:00 | 140 commits to main since this release

    Cut against the merge commit of #105.

    External .pre-commit-hooks.yaml consumers: nothing to do

    No hook-relevant file changed since v2.0.0. All three exported hooks — kyberforge-vale-audit-skill, kyberforge-vale-audit-agent, kyberforge-skill-size-check — are byte-identical to v2.0.1, as are both bundled assets/ trees. scripts/check-release-needed.sh, run against main, exits 0.

    Under ADR-0014 a tag is cut when hook-relevant files change, so this release is outside that cadence: it is a checkpoint marking the documentation restructure, not a contract change. Bumping your rev: from v2.0.0 to v2.0.1 is safe and changes nothing about what the hooks accept or reject. Staying on v2.0.0 is equally fine.

    The behavioural changes described in the v2.0.0 notes still stand — the gates ship hot with no baseline, and the retrofit tracked in #99 is still open.

    What is in it

    The every-session context set is 74% smaller

    AGENTS.md is preloaded through CLAUDE.md's @AGENTS.md import, and instructed reading CONTEXT.md and docs/VISION.md. Every word was a tax paid whether or not the session needed it.

    File Before After
    AGENTS.md (preloaded) 24,219 B 6,808 B −72%
    CONTEXT.md (instructed read) 33,799 B 9,762 B −71%
    docs/VISION.md (instructed read) 4,671 B — demoted to on-demand
    Total ~15,700 tok ~4,140 tok −74%

    Nothing was deleted that was not either relocated or verified as already carried elsewhere.

    Two new documents

    • README.md — did not previously exist. One-time setup, prerequisites and test commands, moved off the preloaded path.
    • docs/spec/gates.md — gate forensics: what each pre-commit and pre-push hook enforces, why it is shaped that way, and what was tried and rejected. Every constant, hook ID, error string and verification number is preserved, including the Vale prefilter mechanics that had been a 1,444-word CONTEXT.md glossary entry.

    CONTEXT.md was restructured to conform to grill-with-docs's own CONTEXT-FORMAT.md template, which it had never followed — 23 glossary entries averaging 190 words against a documented "one sentence max".

    Published plugin metadata corrected — ADR-0021

    gitea's marketplace description advertised wikis, for which no skill exists, while omitting gitea-branches and gitea-files; git's advertised pull requests, which belong to gitea, while omitting pc-author/pc-run. This was the third occurrence of one defect, so ADR-0021 gives the two sources distinct jobs: published descriptions enumerate, architecture.md's table states routing boundaries only. They are supposed to differ, and nobody should be diffing them.

    Package versions: bin 1.1.3 → 1.1.5, git 1.3.3 → 1.3.5, gitea 1.3.4 → 1.3.6, marketplace 0.4.2 → 0.4.5. All PATCH for metadata under the per_package strategy. apm consumers resolve unpinned against the default branch and already had these at merge.

    Restored guard-rails and re-anchored citations

    A four-way review of the trim found 15 defects, all fixed before merge. Two were real content drops — the apm pack mirror-refresh warning and the plugin self-containment constraint. Both were guard-rails that fired from preloaded context, so each was placed by when it needs to fire: the first in the DRIFT failure message of the hook that catches that exact mistake, the second in architecture.md beside the mechanism.

    Eleven dangling references across eight files were re-anchored to ADR-0013 where it owns the fact, or had the citation dropped where no ADR does. ADR-0007 and ADR-0015 gained dated amendments.

    Known trade, recorded deliberately

    AGENTS.md says "14 repo-defined hooks" while the command it hands you prints 16. The reconciliation — pre-commit's two meta hooks declare no stages: — now lives in gates.md. Same shape for the pretty-format-json guard. Both previously fired from preloaded context and now require opening gates.md first. That is the cost of the trim.

    Verification

    • bash tests/run-tests.sh --strict — 24 suites passed, 0 skipped, 0 failed
    • pre-commit run --hook-stage pre-push --all-files — 16/16 Passed
    • scripts/check-release-needed.sh against main — exit 0

    Refs: #99, #105

    Downloads
  • v2.0.0 9385c77ac7

    Claude released this 2026-08-16 21:20:02 +00:00 | 157 commits to main since this release

    Cut against the merge commit of #103. Implements ADR-0020.

    Breaking — read before bumping your rev:

    This is a major bump because all three hooks exported through .pre-commit-hooks.yaml can now fail a file that passed at v1.0.0, on three independent axes. A consumer who bumps the pin without reading this will get a red build on unchanged files.

    1. kyberforge-skill-size-check gained a whole new gate family

    The agentskills.io spec backstop is unchanged — still 500 lines and 2,770 words, still counted over the whole file including frontmatter. Alongside it, a context budget measured differently:

    Gate SUGGESTION FAIL Measured over
    description 250 chars 400 chars the YAML-folded value
    body 600 words 900 words body only, after the closing ---

    A file can sit well inside one family and fail the other. Also newly enforced:

    • a missing, valueless or null description: is a hard FAIL, not a skip — a gate that declines to measure the one preloaded field reports green;
    • every boundary-clause routing target must resolve to a real skill or agent;
    • every references/<file>.md a body names must exist.

    Three further checks are SUGGESTION-only and never fail: a description with no boundary clause, a ## Gotchas section over five entries, and one over 25% of the body.

    2. Both Vale prefilters gained error-level rules

    kyberforge-vale-audit-skill and kyberforge-vale-audit-agent pick up Kyberforge.CompositionNote, which bans composition and architecture prose from a description. Every rule in these styles is level: error with no ignorable tier.

    3. PyYAML is now a hard requirement

    The hand-rolled fallback frontmatter reader has been removed, deliberately. It disagreed with PyYAML across the 400-character FAIL boundary, so the same file passed on one machine and failed on another; worse, a reader that mis-parses an unfamiliar scalar shape reports a clean pass on a file it never measured. pip install pyyaml if the hook reports it missing. python3 itself was already required.

    Fixed since v1.0.0

    Defects that passed a fully green gate — each was live while all hooks and all tests reported success:

    • A UTF-8 BOM silently disabled every check. A SKILL.md with a 550-character description and a 1,000-word body exited 0 with zero output. A leading blank line, trailing space after the opening ---, or a missing closing --- did the same.
    • An indented --- inside a block scalar truncated the frontmatter, reclassifying the rest of the description as body — an 815-char description and a dangling target both passed.
    • A non-string description was str()-coerced, so description: true measured as the 4-character "True".
    • An agent file with a valueless description: passed with no output at all — \s* crossed the newline and captured the following key.
    • The gate gave different answers on different machines. Boundary-target resolution ran through the gitignored .claude/skills/ tree, so the same commit measured 2 dangling targets on a developer machine and 6 on a fresh clone. Resolution now walks up from the file being checked to an authoring root, and consults deployed trees only in the genuine consumer case.
    • Whole-file line and word counts disagreed with the audit validators on Unicode whitespace, and their exit status was discarded — a read failure recorded a silent pass on both ceilings.

    Also in this release

    Boundary-target resolution is narrowed so it cannot block a commit on prose. A hyphenated token used as a compound modifier (pre-commit hooks) is confirm-only, and a prose-form target earns a hard error only when its own sentence names another target that resolves; route notation (/name, -> name) is exempt and always blocks. Uncorroborated targets are still reported at SUGGESTION tier on every run — only the power to block is withdrawn.

    kyberforge's own four author/audit skills are retrofitted to the contract: descriptions down 72% (3,364 → 938 chars) and bodies down 70% (8,306 → 2,487 words), all four now using the dispatch pattern.

    Upgrading

    Bump the pin and run the hooks over your existing corpus before committing:

    - repo: https://git.dev.rkdr.net/Defame1297/holocron
      rev: v2.0.0
    
    pre-commit run --all-files
    

    Expect findings on descriptions and bodies that were never measured before. The gates ship hot with no baseline file and no suppression mechanism, so plan the retrofit rather than bumping mid-feature.

    Downloads
  • v1.0.0 8f523da270

    v1.0.0 Stable

    Claude released this 2026-08-10 16:48:35 +00:00 | 261 commits to main since this release

    First tagged release.

    PR #85 added .pre-commit-hooks.yaml, exposing kyberforge-vale-audit-skill, kyberforge-vale-audit-agent, and kyberforge-skill-size-check for external repos to consume via repo: <this-repo-url>, rev: v1.0.0 in their own .pre-commit-config.yaml (see ADR-0014).

    Closes #87.

    Downloads