firehose> #llmops

Repo-Local Capability Binding

A portable skill names an abstract operation; a repo-local, agent-read markdown document binds that operation to whatever tooling this repo actually uses. The skill says "publish to the issue tracker." It does not say gh issue create. What the phrase means here is answered by docs/agents/issue-tracker.md in the repo, whose headings are literally the skill's verbs:

## When a skill says "publish to the issue tracker"Create a new file under .scratch/<feature-slug>/ (creating the directory if needed). ## When a skill says "fetch the relevant ticket"Read the file at the referenced path…

That document is a dispatch table written in prose, and it is the whole mechanism. It is why the answer to "how do I make your skills work with Jira / Linear / Beads?" is "it already does" — the skills were never coupled to a backend, so supporting one is a matter of writing down the binding, not branching the skill. The source's setup skill generates the binding interactively (pick GitHub / local markdown / other; "describe the workflow and I'll record it as prose") and links it from CLAUDE.md alongside the triage-label and domain-doc bindings, so every skill in the repo resolves its verbs the same way.

The durable idea is an old one arriving in a new substrate: an interface, with the implementation injected per-deployment — except both the interface and the binding are natural-language markdown read by a model, which is what makes the binding cheap enough to be worth writing for a one-person repo. It buys the same thing dependency injection buys: the skill library becomes shareable across repos whose infrastructure has nothing in common, which is the precondition for Skill Artifact Transfer at all. The vault has a prior instance of the same move at artifact scale — /to-tickets emitting one medium-agnostic artifact that reads either as a local tickets.md or as native tracker issues with blocking edges (Agent Task Graph).

The honest cost: the binding is prose, so nothing checks it. A stale or wrong binding doc fails at agent-interpretation time, in whatever way the model improvises, rather than at a type boundary.

Claims


Linked from