Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/scolladon/craft/integratenpx skills add scolladon/craft --skill integrategit clone --depth 1 https://github.com/scolladon/craftWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/scolladon/craft/integrate)<a href="https://agentmods.dev/skills/scolladon/craft/integrate"><img src="https://agentmods.dev/badge/skills/scolladon/craft/integrate.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00028 | $0.00884 |
| Opus 5 | $0.00014 | $0.00442 |
| Sonnet 5 | $0.00006 | $0.00177 |
| Haiku 4.5 | $0.00003 | $0.00088 |
Grade A, and why
integrate scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 57 lines — stays where its author put it; the contents beside it link to each section on GitHub.
craft:integrate
Preamble (always runs — non-overridable)
- Manifest read (lint if standalone). Policy:
merge-flags,non-blocking-jobs,scripts.pre-teardownfrom the manifest.
Procedure (default body — a manifest override: replaces everything below)
-
Monitor CI → fix to green, ignoring jobs listed in
non-blocking-jobs. Fixes land as conventional commits through the same gates as review fixes. -
Consult
integrateaction (seedocs/contributing/specs/policy.mdfor surface semantics). Obey the returned surface:ask(default, ADR-127) — ask the user to confirm the merge, exactly as today; on approval proceed, on decline recordPOLICY(ask:integrate→declined)and block.never— refuse; recordPOLICY(never:integrate); phase no-ops.always— proceed with no confirmation; recordPOLICY(always:integrate); supersedes the former hardcoded merge confirmation (ADR-128 — Supersede).
Then invoke the VCS port
integrate(prUrl)(seedocs/contributing/specs/vcs.md); the adapter owns the host CLI.--squash/--delete-branch/merge-flagssemantics live in the adapter binding. Always delete-branch: no merged branch lingers on the remote. -
Derive the
Done-bound memory delta, then consultteardown. First, read this run's run-id lines from the on-disk ledger (docs/contributing/specs/run-record.md) into the in-sessiondeltaand hold it — the teardown below removes the worktree and the ledger inside it, so this is the last point at which it can be read. AMEMORY-RETRACT(<concern>): <merge-key>line derives to{ concern, payload, retract: true }rather than to a plain observation; for thefindingsconcern the<merge-key>is the payload split on the first run of whitespace, first fieldfile, remainderpattern(seedocs/contributing/specs/run-record.mdToken vocabulary). The single-writer rule (R4) is untouched — the phase emits the ledger line, the orchestrator appends it and derives the delta from it here.saveitself still runs once, atomically, atDone. Then consult theteardownaction separately before worktree teardown (per-verb granularity, ADR-126; seedocs/contributing/specs/policy.md) and:"${CRAFT_ROOT:-${CLAUDE_PLUGIN_ROOT}}/scripts/worktree-teardown.sh" <main-repo-dir> <worktree-path> \ [--pre-teardown <manifest scripts.pre-teardown>]The script refuses while the validation run-lock is alive (dead-PID locks auto-clear; a live lock needs
--force, which is recorded in the run record). The pre-teardown script is the matched pair of workspace-phase tooling activation — every activation gets its prune. -
Drift-baseline refresh offer: when the merged change touched
skills/oragents/(the prompt surface whose economics the drift signal watches), offer the user a baseline refresh perskills/metrics/SKILL.md§ Refreshing the committed baseline — the per-phase economics shifted on purpose, so the pre-changedocs/contributing/metrics-baseline.report.jsonwould flag the intended shift as drift forever. Declining is fine (the offer is advisory, like the signal itself); never refresh silently. -
Close the run record; deliver the final summary (PR URL, what shipped, record).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 57 lines · 28 tokens per session scan A d719c2e6f6d1
integrate is a skill published in the GitHub repository scolladon/craft (2 stars, last pushed 15d ago), licensed MIT. It adds 28 tokens to every session and 884 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
shipwrights-loop
Drive multiple Jira tickets sequentially through the /shipwrights-epic pipeline. Auto-picks the next ticket, watches the PR until merged, transitions Jira to shipped, repeats. Resumable across Claude Code sessions via .shipwrights/loop-state.json. Invoked as /shipwrights-loop [N] | --status | --abort.
fable-ship
Use when finishing a task — writing the final report or status, shipping a change, or handing off — to produce a calibrated done-claim and the docs that make the work reproducible by someone else.
release
Cut a brooks-lint release: set the version in package.json, propagate it across all four plugin manifests and every version-bearing text file (README badges, docs site metadata), write the CHANGELOG entry, validate, then commit, push, tag, and publish the GitHub release. Triggers when the maintainer asks to "release"…
new
Use when user asks to create a release, cut a release, or publish a version. Auto-detects GitHub vs GitLab vs Gitea, calculates semantic version, generates release notes from PRs/MRs or commits, shows preview for confirmation before publishing.
create-manifest
Create a Trellis migration manifest and matching docs-site changelogs for a target release by analyzing commits since the previous release. Use when preparing a patch, beta, rc, or minor release manifest.
check-pr
Read-only inspection of a single GitHub PR lifecycle — checks CI, review threads, description sync, and mergeability, and returns PASS or FAIL with per-gate findings. Never invokes the merge button. Use when verifying a PR is ready to merge, polling lifecycle progress, checking mergeability, or babysitting a GitHub PR…