The kit and the adapt engine
What the kit contains, how the adapt engine projects it into each provider, and why an unverified target is skipped.
On this page
#The kit
The kit is authored once, in the canonical Agent Skills format, and embedded into the standalone binary. It contains:
- Skills — installed as
av:<name>. Most are ported from the kit this project grew out of and are left alone apart from rebranding; skills this project authors meet one bar: a real workflow, an output-format contract, quality-gate self-checks, and a workflow position so they read as one graph. - Agents —
av-explore,av-planner,av-reviewer,av-tester,av-debugger,av-developer,av-git-manager,av-simplifier,av-brainstormer,av-researcher,av-docs-manager,av-project-manager,av-journal-writer: persona, behavioural checklist, status protocol, no external CLI coupling. - Rules, scripts, and an environment example shared across providers.
- Hooks and a statusline for Claude Code only — session-init, rules-inject, privacy-block, scout-block, session-state, subagent-init — fail-open and covered by tests.
- Workflows — the three canonical graphs
av runexecutes.
ariadnev validate lints all of it — frontmatter shape, sizes, cross-skill av:<slug> references — and prints the live counts. Those counts are deliberately not repeated here; the skill catalog is generated from the release instead.
#The adapt engine
Installation is a projection, not a copy. The adapt engine is a set of pure functions that map each artifact kind onto each provider's verified path and format:
| artifact | example target (Claude Code) |
|---|---|
| skill | .claude/skills/ |
| agent | .claude/agents/*.md |
| command | .claude/commands/*.md |
| rules | .claude/rules/*.md |
| scripts | .claude/scripts/ |
| hook | .claude/hooks/av/*.cjs |
Where a provider has no verified target for an artifact, the engine skips it and lists the skip in the install summary. It never invents a path. The full provider × artifact table is the provider reference, and ariadnev contract prints it from the binary.
Skip, do not guess. An artifact kind with no verified target on a provider is refused, reported by name in the install summary, and left absent on disk. A silent "best guess" path would create a file that neither the provider nor
doctorrecognizes, so the engine chooses a named skip over an unattributable write.
The kit → adapt → projection → receipt/cache pipeline reads left to right: the kit is the authored source, adapt is the pure projection layer, the receipt records what was actually written, and the cache holds the extracted-but-unmodified distribution the binary shipped with.
#The receipt
Every install writes .ariadnev/receipt.json (or ~/.ariadnev/receipt.json for global scope): the exact files written, their hashes, and the version that wrote them. Everything else builds on the receipt:
ariadnev doctorhealth-checks the install against it.ariadnev auditclassifies every installed file asok,modified,missing, oruntracked.ariadnev uninstallremoves exactly what the receipt lists and preserves files you edited.ariadnev adapters regeneraterebuilds a projection other tools can read; nothing in ariadnev reads it back.
#The cache
The binary extracts its embedded kit into a versioned cache under ~/.cache/ariadnev. That cache is the install distribution, not a custom-kit workspace: ariadnev kit refresh discards and re-extracts it, and authoring commands such as ariadnev add-skill are meant to run from a source checkout.
