Skip to content

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 16:38
· 71 commits to main since this release
f65b093

New commands & capabilities

  • hadron skill plugin --out <dir>: builds an installable plugin per host from your enabled skill declarations. You get a Claude Code plugin (hadron/) that is also a one-plugin marketplace, and a Codex skills folder (hadron-codex/).
    • --zip also writes an upload-ready archive, which Cowork accepts.
    • --name and --scope narrow the bundle, and --dry-run previews it.
    • The plugin version is a hash of its content, so hosts update when a skill changes.
    • The command never replaces anything it didn't write.
  • Specs at any loc. spec new <loc> creates a spec at exactly that loc, with no derived parent, contract or allocation (add --inherit to link one), and spec supersede <old> --to <loc> replaces a spec with one at any loc. get, list, edit, link, find, grep, replace and check-tools no longer check the old numbering, and no command drops a spec from its output for its shape. register lists specs outside the numbering under outsideNumbering.

Improvements

  • Node files carry the node's kind and collection. memory export and node import now carry role, runnable and objectType (JSON: role, isRunnable, objectType), in the same format the server's git mirror uses.
    • A file without these keys changes nothing on import, and neither does an empty or blank objectType.
    • Import writes through the door the node's kind requires (task, spec, review), as node add and node update do. A file that would make a node two governed kinds at once is refused before anything is written, --dry-run included.
  • skill lint flags synced as a reserved name for Claude skills, in any capitalization. Claude Code keeps its own synced skills in a folder of that name, so an exported skill there would never load. The server already refuses it.
  • skill plugin reports a host with no skills by naming the empty artifact and saying why, and offers no install line for it.
  • spec lint no longer enforces the legacy tier obligations: parent-exists, toc-edge, inheritance-edge, index-incomplete, loc-shape and mixed-arity.

Breaking changes

  • spec describe is now a neutral inventory: specs, roots, maxDepth, legacyNumbered and outsideNumbering.
    • The flat/product scheme is retired, so --json no longer includes scheme, source, declared, derived, products, modules, the per-tier counts, contracts or warnings.
    • A scheme stored on a memory is shown as retiredDeclaration and never applied.
  • spec describe --declare is retired. It is refused before any request (exit 2), and nothing is written.
  • Exit code: the server's ROLE_GOVERNED refusal now exits 2, not 1. That's a write sent through the wrong door for a task, spec or review, or a governed revision restore that no door can make yet. It now matches the CLI's own refusal of the same case, and hadron api exits 2 on it too.

Bug fixes

  • node import onto an existing task, spec or review no longer fails with ROLE_GOVERNED when the file says nothing about the kind.
  • node update <task> --runnable=false, and a role change away from spec or review, now go through that kind's door instead of being refused.
  • skill plugin artifacts get ordinary permissions (0755/0644 under your umask) instead of the temp files' private 0700/0600.

Full changelog: v0.16.0...v0.17.0