ictechgy

Joinery — Development skill for Claude Code

Development community

The linker for agent skill stacks: extract each skill's implicit CLI/MCP/client-feature dependencies, dry-fit them against your machine, lock, and compile per-agent configs.

How to install Joinery

This entry records only its repository, not the path inside it, so there is no exact command to give. Open ictechgy/joinery and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Joinery does

The linker for agent skill stacks: extract each skill's implicit CLI/MCP/client-feature dependencies, dry-fit them against your machine, lock, and compile per-agent configs. Deterministic, local, no LLM.

Alternatives in Development

README

joinery

**The linker for agent skill stacks: assemble nothing until the joints fit.**

npm had a registry and still needed lockfiles and CI. Skills have directories overflowing and no linker. joinery measures the fit **before** assembly — "this skill needs `gsutil` and Python 3.10, your machine has neither, and it implicitly calls a Claude-only hook."

SKILL.md became the de-facto standard across 25+ agent platforms — but an empirical study ([arXiv 2602.12430](https://arxiv.org/html/2602.12430v4)) shows cross-platform portability is still aspirational, precisely because skills *implicitly* depend on specific tools, MCP servers, and client capabilities. joinery is the build-time layer that makes those joints explicit — statically, deterministically, locally.

The workflow

scan ──▶ doctor ──▶ lock ──▶ compile ──▶ ci
extract   dry-fit   freeze    emit       gate
Command What it does
joinery scan Extract the dependency graph: CLI tools, MCP servers, skill→skill edges, client-feature risks. Text / JSON / Graphviz DOT.
joinery doctor Dry-fit against the local machine: which/versions, MCP configs, feature matrix, skill install locations. Every violation carries a fix suggestion. Exit 1 when the fit fails. --no-version skips version probes (presence-only, runs no binaries).
joinery lock Freeze the verified stack into joinery.lock.yaml (content digests + extracted deps + resolved versions). --check reports drift.
joinery compile Emit claude-code / codex / gemini-cli configs. Stages under .joinery/out/ by default; --apply writes real files with timestamped backups.
joinery explain "Why doesn't this work on codex?" — matrix-driven sentences, no LLM.
joinery ci PR gates: lock drift + graph regression against a committed baseline (.joinery/baseline.json). Exit 1 blocks merge.
joinery decompile Migration on-ramp: existing