plumb-line-audit
Use when auditing a diff or repository against the plumb-line principles — finds laundered uncertainty, boundary leaks, hardcoded priors, overstated maturity,…
Use when a builder wonders what plumb-line would do for their codebase or which part to adopt — or when, mid-task, their work shows a fit signal (adding a mock or fallback near a production path, mixing fixture, cached, or LLM/agent-produced data with real data) and visible
$ npx -y skills add slopstopper/plumb-line --skill plumb-line-adopt --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/plumb-line-adoptContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when a builder wonders what plumb-line would do for their codebase or which part to adopt — or when, mid-task, their work shows a fit signal (adding a mock or fallback near a production path, mixing fixture, cached, or LLM/agent-produced data with real data) and visible
name: plumb-line-adopt description: Use when a builder wonders what plumb-line would do for their codebase or which part to adopt — or when, mid-task, their work shows a fit signal (adding a mock or fallback near a production path, mixing fixture, cached, or LLM/agent-produced data with real data) and visible uncertainty would help. Inspects the repo, routes to the right skills and, where the fit map matches, the right primitive integration. Read-only: recommends and hands off, never edits or installs.
REQUIRED READING FIRST: `reference/fit-map.md` (plugin root). If this file cannot be read, stop immediately and report: "Cannot route: `reference/fit-map.md` is missing or unreadable. Do not recommend from memory — the fit map is the source of truth for what the primitives are for." Read `reference/portable-principles.md` only if the conversation needs the principles named; the fit map is sufficient for routing.
This skill is a concierge for the whole toolkit — the four sibling skills AND the run-time primitives. Its job is the question the docs cannot answer for a specific repo: *"what would I use this on, here?"* It recommends only. It never edits files, installs anything, or scaffolds code; every action belongs to the skill it hands off to.
Scan the repository for **routing signals only** (this is not an audit — do not read whole files; filenames, imports, and greps suffice):
feed computation; caching or retry-with-cache logic.
or demo CSVs loadable by production-adjacent code.
agent-generated artifacts consumed downstream.
stub data on non-test paths.
file (`AGENTS.md` / `CLAUDE.md`) declaring layers; installed hooks.
**State your denominator.** Say in one line what the scan covered (e.g. "scanned imports and top-level layout; did not read function bodies") — a routing recommendation must not imply deeper knowledge than the scan had.
Fill only the gaps scanning cannot see. Good questions: what the builder is actually worried about; whether the mock/fixture data ever reaches users or stored outputs; whether they want enforcement or just visibility. Skip any question the scan already answered. If no builder is present to answer, route from the scan alone and say so.
Always answer both halves, in plain language, assuming no prior reading:
**Skills surface (applies to every repo).** Recommend which of the four to run and in what order, with one line each on what it produces:
the discipline in minutes.
repo and reports; needs nothing installed.
(ruleset, hooks, boundary checks).
**Primitives surface (fit-mapped).** Match the scan + answers against the fit map's profiles and say which profile matched and *why, citing what was seen* ("you call OpenAI with a static fallback in `llm/client.py` — profile 1"). Before showing code, give a one-minute mechanics primer in plain words — builders hesitate when the envelope feels opaque: `mark` wraps a value with metadata at the point it enters; `derive` runs the builder's own function on the plain values and combines the metadata by law (taint ORs and cannot be cleared, confidence takes the weakest); `metaOf`/`meta_of` reads it back; `auditMeta`/`audit_meta` checks the envelope is consistent. Say plainly what this bounds: the library never computes or modifies a value, so a labeling mistake misdescribes data but cannot corrupt it, and a forgotten `mark` fails visibly rather than silently (the fit map's "Worried about using it wrong?" section is the source). Then show the profile's smallest useful integration **adapted to the builder's actual code**: their filenames, their variable names, the right language, and the right adapter (`taggedFetch` / `tag_requests` / `PlumbDataFrame` / plain `mark`+`derive`) for their stack. Show the pattern as a suggestion in conversation — never apply it.
**Non-fit is a first-class outcome.** If the repo matches the fit map's anti-profile, say plainly: "you do not need the primitives" — then still give the skills-surface answer, and name what future change would revisit the verdict (the fit map's anti-profile section closes the same way). Do not soften the no; a wrong-fit adoption costs the builder more than an honest walk-away.
**Defuse the greenfield misconception.** Builders commonly assume provenance must be adopted at a project's start and hesitate on an existing codebase. When that worry appears — or when the repo is clearly mature — say what the fit map's "Mid-project is the normal case" section says: envelopes attach at boundaries, the smallest integration is a few lines at one call site, nothing is retrofitted, and repo-wide enforcement is a separate, opt-in, later decision.
**Mixed or uncertain fit is stated as such.** If signals are ambiguous, say what would settle it, with the builder's own code as the test — never present a guessed fit as a match.
The audit and remediate siblings emit versioned, checker-validated shapes; this skill's routing recommendation is a public output and carries one too (#269, P7 applied to our own output). The contract is deliberately light — conversational prose stays conversational; five elements are pinn
Stop uncertain data becoming confident-looking results. plumb-line carries provenance, confidence and mock-taint with values through JavaScript and Python, and its review-time checks and GitHub Action catch uncertainty laundered into a claim in AI-assisted code.
Repo: slopstopper/plumb-line
Use when auditing a diff or repository against the plumb-line principles — finds laundered uncertainty, boundary leaks, hardcoded priors, overstated maturity,…
Use when setting up a project with the plumb-line discipline — interviews the builder to find their source-truth layer and layering, generates a domain-neutral…
Use when a builder wants to learn or be reminded of the plumb-line method — the discipline of epistemic honesty enforced by tooling. Teaches the thesis, the…
Use when applying findings from a plumb-line audit report — the builder has a report (or pasted findings) and wants the fixes made. Opt-in and separate from…