docs/adr/0200-clankie-bundles-its-opinionated-skills.md

0200 — Clankie bundles its opinionated skills

Status: accepted; local harness launch support implemented. Global cutover remains gated on deployment and coverage of the owner's worker routes.

Date: 2026-09-27

Amended: 2026-09-28 — optional by owner choice, on by default.

Decision

Bundle proven process, leadership, review and delivery guidance with Clankie. Keep independent tool/domain knowledge and personal workflows in the owner's selection. Also bundle references for tools Clankie ships. Plain harnesses must be usable without inheriting Clankie's working methods, so their relative effectiveness can be measured.

Reusable skills retain one authoring source in Volpestyle/skills. Clankie vendors an immutable MIT-licensed snapshot at a full Git revision. Leadership guidance is exported from that same pinned revision; Swarm owns the separate coordination protocol skill. Product-specific skills remain authored in this repository. Personal account and team defaults are removed upstream before export. Checkout-only Clankie development workflows are not shipped.

Herdr is a shipped tool, not a global-only exception: fresh installs and hosted bodies ship its pinned executable and cannot depend on James's global skills. Generate its bundled skill directly from libexec/herdr --skill during release assembly, after installing the checksum-verified scripts/release/herdr.json pin. Generate the checkout skill from that same pin, and fail pnpm check if its bytes drift. The release writes and checks the product root and both Claude plugin copies; the hosted image repeats the version/content check as the runtime user. No manually authored Herdr snapshot belongs in the opinionated-skills vendor tree. James's global herdr remains available for plain-harness tool use and should mirror the resolved herdr --skill too.

Each local hire gets native discovery: a skills-only Claude plugin, Pi's explicit skill path, or a private Codex home overlay. Worker identity, permissions and existing model choices are preserved. This avoids installing process guidance into the user's global harness configuration. See the current bundle and limits.

The owner controls skills.opinionated (boolean, default true) and skills.exclude (names, default empty) through clankie skills and /skills. Repo-authored and product/tool skills always remain available. Vendored process skills, including lead, swarm-lead and herdr-lead, are optional. The captain references those skills only when available and retains its own ownership, dispatch and verification instructions, backed by swarm-mcp and herdr.

All native loaders use the same manifest-based classification, even after release assembly dereferences the links. The Claude seat makes a fresh plugin projection at launch with only included skills; this handles individual exclusions without combinatorial build variants. It retains identity, hooks and MCP, disables the older marketplace copy for that session and uses the native clankie@inline identity for its development channel. The plugin build still generates one output style from the captain instructions.

Local hire_agent accepts skills: "bundled" | "plain", defaulting to the saved setting and retaining exclusions. Its result records the selected mode, source, actual supplied names and whether the route applied it. Explicit overrides on unsupported/remote routes fail visibly. This controls Clankie's contribution; independent global/project discovery in Claude and Codex must be accounted for.

Prune whole skills, never fork upstream prose: remove linear-write (personal voice), update-review-ethos (team policy), mr-link (overlapping GitLab flow), linear-agent-session (ceremony), repo-evolution-review (niche) and work-tracking (policy consolidated into product work-items). Keep reflect and the core leadership, review, Linear and delivery guidance. The captain uses reflection as a light skills/docs improvement reminder; the heavier upstream ledger/proposal workflow needs an upstream edit, not a vendored fork.

Consequences

Dotfiles owns the reversible global_process_skills group toggle and a --skills-only installer path. The latter changes managed process-skill symlinks without rendering drifted settings, hooks or model configuration. Keep global links until the actual installed hire path is proven; source tests alone do not activate a running service. Remote fleets and Swarm adapters need their own bundle propagation and canaries before claiming universal worker coverage.

The overlay preserves already trusted hook hashes, not blanket hook trust. Existing untrusted or changed hooks still require the harness's normal review. The snapshot must be refreshed deliberately when its source changes.

A/B protocol

Run the same bounded task from the same repository revision, with the same model, effort, permissions, tools and acceptance tests. Use fresh sessions; one launches through hire_agent with skills: "plain", the other with skills: "bundled". Keep product/tool skills identical and record the result's skill condition. Work outside Clankie's checkout so project-local skill discovery does not contaminate the plain condition. Record the actual skill catalog and bundle revision. Alternate order across several tasks.

Compare acceptance-test outcomes, regressions found by blind review, wall time, tokens/cost, human interventions and unnecessary work. Distinguish the whole Clankie experience from a skill-only ablation; for the latter keep the harness, identity and all other context equal. Report failures and incomplete runs too.