skillwire 0.2.0
skillwire: ^0.2.0 copied to clipboard
Deploys agent skills and subagents into AI coding hosts, resolving the path and file format each host expects. The infrastructure layer, not the payload.
Changelog #
0.2.0 #
The consumer-facing half of the domain, which had been sitting in a CLI by accident.
Workspace, Catalogue, Planner and Scan move in from skillwire_cli.
They import no command-line framework and never did: reading an asset tree,
resolving a host's paths, scanning directories and building a desired state know
nothing about flags. Measuring that is what separated them from the surface that
went the other way, into datajack.
Workspace— home, environment, repository root, matrix and ledger, gathered once so nothing downstream reads the environment for itself.Catalogue— a consumer's ownassets/skills/modules/<module>/<skill>/, read into materialised trees. It also answers the question R13.2 asks: which names appear in more than one module, since deployment is flat.Planner— turns a selection into desired units, observes what is at each destination, and produces the plan annotations of PRD 7.5.scanHosts— walks every directory a detected host reads, alias spellings included, and creates nothing while looking.
skillwire still depends on preview_executor and nothing else above it. What
changed is where the line falls, and it now falls where measurement put it
rather than where a rule did.
0.1.0 #
First working release: the domain model, reconciliation as a pure function, the host matrix, the ledger, and validation against the Agent Skills specification.
Reconciliation is a pure function of two values. reconcile(operation, observed, desired, actingConsumer, force) returns a plan whose steps carry a
verb decided at construction. No filesystem, no clock, no environment — I/O
lives at the edges, one read before and one write after. That is what makes
every row of the specification's state table testable without a disk, which
matters because it is the layer where a bug destroys a user's work.
Six states, and what each protects. Nothing at the destination creates;
ours-and-matching keeps; ours-and-differing replaces. The other three block:
ours-but-edited, because those edits are not ours to lose; another consumer's,
because it is not ours at all; and present-but-unrecorded, because nobody
claimed it. --force lifts the refusal of a plan, never the block on a
unit.
Adoption. A forced deploy over an unrecorded destination whose contents already match writes a ledger row and nothing to the destination. It is how a machine carrying deployments from before this package existed becomes managed without a byte being destroyed. A differing hash stays blocked either way.
The host matrix is data. Claude Code, Codex, Antigravity, OpenCode and GitHub Copilot, at user and repository scope, in a YAML document with no per-host branching anywhere in the library: adding a host is an edit to that document. Every path carries the artifact it was read from and the date, and a path without provenance throws rather than resolving — a path handed to a caller who will write to it has been presented as a fact.
The ledger. One per machine, shared by every consumer, at
$SKILLWIRE_HOME/ledger.json. Shared rather than per-consumer because the
question "which other consumer owns this?" cannot be answered by a book that
only records your own entries. Deployment is by copy, and a copy carries no
proof of who made it; the ledger is what supplies the fact the copy destroys.
Diagnosis. Classifies a machine against the ledger: intact, missing, drifted, owned by another consumer, plus occupants nobody recorded and artifacts one host can see from two directories.
Depends on preview_executor and never on modular_cli_sdk, which re-exports
the same Step, Preview and Outcome — so a step this package builds is the
type a consumer's command hands back, with no adapter between them. It
produces steps and never runs them.
0.0.1 #
Name reservation. No implementation yet.
The specification this package will implement lives in the repository, at
docs/PRD.md.
Implementation begins at phase P1: the domain model and reconciliation as a
pure function.