Repository navigation
v0.17.0
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/).--zipalso writes an upload-ready archive, which Cowork accepts.--nameand--scopenarrow the bundle, and--dry-runpreviews 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--inheritto link one), andspec supersede <old> --to <loc>replaces a spec with one at any loc.get,list,edit,link,find,grep,replaceandcheck-toolsno longer check the old numbering, and no command drops a spec from its output for its shape.registerlists specs outside the numbering underoutsideNumbering.
Improvements
- Node files carry the node's kind and collection.
memory exportandnode importnow carryrole,runnableandobjectType(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 addandnode updatedo. A file that would make a node two governed kinds at once is refused before anything is written,--dry-runincluded.
- A file without these keys changes nothing on import, and neither does an empty or blank
skill lintflagssyncedas 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 pluginreports a host with no skills by naming the empty artifact and saying why, and offers no install line for it.spec lintno longer enforces the legacy tier obligations:parent-exists,toc-edge,inheritance-edge,index-incomplete,loc-shapeandmixed-arity.
Breaking changes
spec describeis now a neutral inventory:specs,roots,maxDepth,legacyNumberedandoutsideNumbering.- The flat/product scheme is retired, so
--jsonno longer includesscheme,source,declared,derived,products,modules, the per-tiercounts,contractsorwarnings. - A scheme stored on a memory is shown as
retiredDeclarationand never applied.
- The flat/product scheme is retired, so
spec describe --declareis retired. It is refused before any request (exit 2), and nothing is written.- Exit code: the server's
ROLE_GOVERNEDrefusal 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, andhadron apiexits 2 on it too.
Bug fixes
node importonto an existing task, spec or review no longer fails withROLE_GOVERNEDwhen the file says nothing about the kind.node update <task> --runnable=false, and a role change away fromspecorreview, now go through that kind's door instead of being refused.skill pluginartifacts get ordinary permissions (0755/0644under your umask) instead of the temp files' private0700/0600.
Full changelog: v0.16.0...v0.17.0