Skillsdbhq.uk (external site)

All sixteen skills

dovetail

Claude Code + CodexLiveMIT

Checks whether your repository still agrees with itself

It maps your docs and code and reports where they have drifted apart: dead links, moved anchors and orphaned files from the exact checks, and contradictions and documentation describing behaviour the code no longer has from model reviewers. The exact checks need no model and no network, and by default only the findings they can prove fail a build. Then it walks you through the fixes one at a time, and edits only what you approve.

Install dovetail

  1. Add the DBHQ marketplace, once

    /plugin marketplace add dbhq-uk/marketplace
  2. Install the skill

    /plugin install dovetail@dbhq

Both commands work in Claude Code and in Codex. The marketplace is a public repository you can read first: dbhq-uk/marketplace (external site)

What it is good at

  • Seventeen checks, each finding marked proven or heuristic

    Links resolving to nothing, heading anchors that no longer exist, files nothing points at, duplicated and near-duplicated content, translations that have fallen behind, flags a doc claims that a script does not declare, documented calls the real signature would reject, code blocks that do not parse, manifests disagreeing about the version, conventions the repo states but does not follow, and pairs of files that changed together for months and have just stopped. A proven finding follows from the structure alone, like a link to nothing. A heuristic one is a likely problem that intent can explain: a file nothing links to may be an entry point.

  • Failing a build only on what it can prove

    A checker that produces false positives gets switched off within a week, because the triage costs more than the drift. So only proven findings fail --fail-on, and a heuristic check gates only if your config opts it in. The exact layer makes no model calls and needs no API key, no network and no third-party packages. Measured on 25 September 2026, a 922-file repository scanned in under half a minute, so it can run on every pull request.

  • Keeping the model away from what Python can settle

    Every reviewer rubric names the categories it must not report. A reviewer restating a check already computed exactly is offering a guess in place of a certainty, and the layers stay separate so you always know which one you are reading.

  • Rejecting fabricated evidence

    Every quote a reviewer returns is checked against the actual line in the file. A model inventing a plausible quote at a plausible line is the most damaging failure available, because the finding reads exactly like a true one. A quote found in neither the file nor its committed version is dropped as fabricated, and the run says what it dropped.

  • Being adoptable on a repository that already has drift

    Scoping findings to the files a change touches, including a deleted file that something still links to, means nobody has to fix everything before turning the check on. Without that, a whole-repo check turns every unrelated pull request red and gets switched off on day one.

  • A triage run that fits in the context window

    One script drives the run and keeps its state on disk. It prints one finding at a time, with the fix the scan computed where there is one, so a large repository does not fill the agent's context before the first question. A finding you mark intentional goes into a committed ledger, so the decision holds for your colleagues and for CI.

What it does not do

  • It never edits without asking

    The scan itself has no write path at all. Fixes happen only in the triage loop, one at a time, on your say-so - and a content hash of every file is compared before each edit, so if anything changed that dovetail did not apply, the run stops.

  • It does not decide which side is right

    What disagrees is decidable. Which side is correct usually is not: a broken link might mean the link is wrong or the target was deleted by mistake, and nothing in the file tree tells them apart. So a contradiction ends in a question rather than an edit.

  • It will not recommend on every finding

    Where the evidence names a winner, one option is marked as recommended and says what makes it the answer. Where it does not, nothing is marked and you get an open question. A tool that recommends every time teaches you to stop reading.

  • The judged layer never gates a build

    Contradictions between documents, docs describing behaviour the code no longer has, diagrams that have fallen behind - those come from reviewers, and no CI job here fails on them. They run on a schedule and upsert a tracking issue instead.

  • It checks external URLs only when you ask

    Links are resolved inside the repository. External URLs are skipped unless you pass --external-links, which runs lychee if it is installed, uses the network and never fails a build. Links are read from .md and .markdown files, so .mdx pages are not checked, and it is not a code reviewer or a security scanner.

Read it before you install it

Every line is public and MIT licensed. The README is the long version of this page, including the parts that are still rough.