Agent skill

Repomatic Audit

by kdeldycke in kdeldycke/dotfiles

Audit how far a downstream repo has drifted from the upstream repomatic reference.

BSD-2-ClauseAuto-check: notes

Install Repomatic Audit

skills CLI
$ npx skills add kdeldycke/dotfiles --skill repomatic-audit -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install kdeldycke/dotfiles repomatic-audit --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/kdeldycke/dotfiles.git skills-src && mkdir -p .claude/skills && cp -r skills-src/dotfiles/.agents/skills/repomatic-audit .claude/skills/repomatic-audit && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
repomatic-audit
GitHub stars
173
Token cost
~4.2k tokens
SKILL.md length
1,877 words
Files
1
Skills in repo
25
Repo updated
First seen
Licence
BSD-2-Clause

At a glance

Audit how far a downstream repo has drifted from the upstream repomatic reference.

  • Works in 3 steps: Workflow audit (workflows) → Config file audit (configs) → Upstream contribution opportunities…
  • SKILL.md covers Context and Instructions
  • Calls gh and uvx

What it does

Repomatic Audit is an agent skill from kdeldycke/dotfiles. Audit how far a downstream repo has drifted from the upstream repomatic reference. Cover workflows, configs and conventions.

Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Designed for Claude Code. Recommended model: Opus.

The repository describes itself as: 🍎 macOS dotfiles for Python developers. The licence is BSD-2-Clause.

Example prompts

  • “/repomatic-audit”

Requirements

  • Python 3
  • Compatibility (from SKILL.md): Designed for Claude Code. Recommended model: Opus.
  • Pre-approved tools (allowed-tools): Bash, Read, Grep, Glob, WebFetch, Agent

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Workflow audit (workflows)
  2. Config file audit (configs)
  3. Upstream contribution opportunities (upstream)

What it can do on your machine

Read from SKILL.md and the folder at commit 7947d0f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Grep
    • Glob
    • WebFetch
    • Agent

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • uvx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh and uvx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Designed for Claude Code. Recommended model: Opus.

    From compatibility in the SKILL.md frontmatter.

Context cost

Repomatic Audit loads about 4.2k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 1,877 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~35
When it runs · the whole SKILL.md, loaded when a task matches
~4.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Grep, Glob, WebFetch, Agent

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from kdeldycke/dotfiles at commit 7947d0f, republished under its BSD-2-Clause licence (© kdeldycke). 1,877 words, ~4,161 tokens.

Download SKILL.mdSave it as .claude/skills/repomatic-audit/SKILL.md (or your agent's skills folder).
name
repomatic-audit
description
Audit how far a downstream repo has drifted from the upstream repomatic reference. Cover workflows, configs and conventions.
allowed-tools
Bash, Read, Grep, Glob, WebFetch, Agent
compatibility
Designed for Claude Code. Recommended model: Opus.
argument-hint
[all|workflows|configs|upstream]

Context

!ls .github/workflows/*.yaml 2>/dev/null !grep -h 'uses:.*kdeldycke/repomatic' .github/workflows/*.yaml 2>/dev/null | head -5 !grep -A5 '\[tool.repomatic\]' pyproject.toml 2>/dev/null || echo "No [tool.repomatic] section" !grep -E '^(subagents|skills|gitignore)\.location' pyproject.toml 2>/dev/null ![ -f repomatic/__init__.py ] && echo "CANONICAL_REPO" || echo "DOWNSTREAM"

Instructions

You perform a comprehensive audit of a downstream repository against the upstream kdeldycke/repomatic reference. This goes beyond what repomatic init workflows handles: it catches stale action versions in custom job content, missing workarounds, outdated configs, and conventions that can be borrowed from upstream.

This skill is for downstream repos only. If the context shows CANONICAL_REPO, tell the user this skill is not applicable.

Distinguishing real drift from intended absence

Before flagging an issue, verify that the gap isn't deliberate or covered by a runtime mechanism. Common false positives:

  • [tool.repomatic] exclude is authoritative. Files listed there (like workflows/changelog.yaml or labels) are intentionally absent on disk. Do not report them as MISSING.
  • Bundled defaults applied at runtime. Some config is materialized from the bundled template at runtime when the file is absent, so no on-disk copy is needed. Absence of these files is not a problem: it is the intended state when the user is happy with the bundled policy. Only flag DRIFT if the user wants to deviate from it. Exactly five tools carry such a fallback, the ones whose ToolSpec sets default_config in repomatic/tooling/tool_registry.py: actionlint, mdformat, ruff, yamllint and zizmor.
  • A [tool.X] section is never a candidate for deletion. The inverse of the rule above, and the more expensive mistake. Every other tool has no default_config, so its resolution chain has no level 3 to fall back on: lychee, typos, mypy, pytest, coverage, bumpversion and uv are deployed into pyproject.toml by repomatic init, and that section is the only config the tool will ever see. Deleting it does not restore inheritance from a bundled default, it drops the tool to level 4 and runs it bare, silently discarding every rule the section held. Read the tool's default_config before proposing a section be dropped "to inherit upstream updates". Re-running repomatic init fixes a stale section only for the components marked SyncMode.ONGOING in repomatic/registry.py (lychee, typos, bumpversion, uv). It never revisits a mypy, pytest or coverage section after the first write: lint-repo warns on each bundled template entry such a section lacks, to copy by hand or decline on purpose.
  • Generator artifacts vs user error. When local thin-callers diverge from upstream (e.g., extra workflow_dispatch:, missing paths:), the cause may be the upstream generator, not downstream tampering. Inspect repomatic/github/workflow_sync.py (generate_thin_caller, _adapt_trigger_paths, generate_workflow_header) before recommending the user re-run repomatic init to "fix" something init itself produced.
  • Project-level claude.md may live under a sub-directory. [tool.repomatic] subagents.location and skills.location indicate a project where .claude/ is not at the root (e.g., dotfiles repos with dotfiles/.claude/CLAUDE.md). Search the configured location, not just ./CLAUDE.md.

When in doubt, search the upstream codebase to confirm whether a behavior is intentional. Read [tool.repomatic] in the local pyproject.toml carefully before declaring anything missing.

Scope selection
  • all (default when $ARGUMENTS is empty): Run all audits below.
  • workflows: Audit workflow files only.
  • configs: Audit non-workflow config files only.
  • upstream: Identify downstream innovations that could be contributed back to repomatic.
Fetching reference files

Fetch every reference file at the version the downstream repo has actually adopted, never at the tip of main. The Context block above prints the uses: pins; take the tag from there and pass it as ref on every call:

shell-session
$ gh api "repos/kdeldycke/repomatic/contents/{path}?ref=vX.Y.Z" --jq '.content' | base64 -d

An unpinned fetch resolves to main, which carries unreleased work. Audited against it, every change waiting for the next release reads as downstream drift, and the "fix" that follows can be worse than the phantom problem: a [tool.X] section matching its adopted bundled template exactly gets reported as stale, because main has since grown entries no release has shipped yet.

Keep the two axes apart in the report, because only one of them is actionable:

  • Drift is a difference against the adopted tag. Report it.
  • Available in a newer release is a difference between the adopted tag and a later published one. That is an upgrade note, never a DRIFT row. Confirm the version actually exists with gh api repos/kdeldycke/repomatic/releases --jq '.[].tag_name'.
  • Only on main is unreleased and belongs in neither list. The changelog's top section is headed with a .devN version and a "not released yet" warning; anything described there is not yet available to any downstream repo.
1. Workflow audit (workflows)
Thin-caller workflows

Compare each local thin-caller workflow against its reference. These should be identical (except for files listed in exclude). Flag:

  • Extra triggers (e.g., spurious workflow_dispatch).
  • Missing triggers.
  • Version pin drift (different @vX.Y.Z tag).
Header-only workflows (e.g., tests.yaml)

The header (name, on:, concurrency:) is synced automatically, but custom job content is not. Compare the job content against the reference for:

  • Stale action versions: e.g., actions/checkout, astral-sh/setup-uv — compare pinned versions. setup-uv carries a second, independent pin: a with: version: "X.Y.Z" input naming the uv it downloads. Absent, the runner installs whatever uv is newest, leaving the tool that enforces every cooldown without one; split across two values, the fleet silently tests two resolvers. lint-repo's setup-uv-version-pin check reports both, non-fatally.
  • Inline upstream pin with no cooldown exemption: a run: command pinning the toolkit (uvx 'repomatic==X.Y.Z' …) under a workflow that sets UV_EXCLUDE_NEWER must carry --exclude-newer-package repomatic=P0D on the same command line, since uvx reads no project configuration and the pin routinely names a release published hours ago. Without it the command cannot resolve, and every needs: metadata job dies with it. lint-repo's self-pin-cooldown-exemption check is fatal on this.
  • Missing workarounds: e.g., the "Force native ARM64 Python on Windows ARM64" step that sets UV_PYTHON.
  • Missing matrix exclusions: e.g., windows-11-arm + Python 3.10 (no native ARM64 build).
  • Outdated integration patterns: e.g., a third-party action still in use where upstream replaced it with a repomatic run tool.
  • Missing coverage floor: e.g., no report.fail_under under [tool.coverage], so a coverage regression never fails the suite.
  • YAML scalar style issues: e.g., run: | where run: > is needed for multi-line single commands.
paths: filters that don't fit the downstream project

Header-only sync inherits the canonical paths: filter verbatim (after repomatic/** substitution). When the project's filesystem layout doesn't match, two outcomes are possible:

  • Inherited entries that don't exist locally (e.g., tests/**, uv.lock in a non-Python repo): the trigger never fires for them. Coverage is missing, not noisy. Recommend [tool.repomatic.workflow.ignore-paths] to drop them.
  • Locally relevant paths not in the canonical filter (e.g., install.sh, dotfiles/** in a config repo): the trigger silently skips PRs that should run CI. Recommend [tool.repomatic.workflow.extra-paths] to append them globally, or [tool.repomatic.workflow.paths] keyed by filename for a per-workflow wholesale replacement.

The relevant config schema lives in WorkflowConfig (repomatic/config.py): source_paths, extra_paths, ignore_paths, and paths (per-workflow override dict, keyed by workflow filename). Per-workflow override is authoritative — it replaces the entire paths: list and ignores the other knobs.

Excluded workflows

Respect exclude entries from [tool.repomatic] in pyproject.toml. Report excluded files but do not flag them as drift.

Show full SKILL.md (742 more words)Show less
2. Config file audit (configs)

Compare these files against the upstream reference. Before flagging absence as DRIFT, verify the file is not deliberately omitted (see "Distinguishing real drift" above):

FileWhat to checkAbsence is OK when
pyproject.toml [tool.typos]Missing default.extend-identifiers for common capitalizations (GitHub, macOS, PyPI, iOS, etc.)Never: typos carries no bundled fallback, so an absent section means the canonical proper-noun map is simply inactive. Recommend repomatic init typos.
pyproject.toml [tool.bumpversion]Missing ignore_missing_filesProject is not Python-versioned (no [project] table).
pyproject.toml [tool.ruff]Missing or divergent lint rules, preview settingsAlways: ruff falls back to the bundled ruff.toml at runtime. Only flag when a local section overrides it and diverges.
pyproject.toml [tool.mypy]Missing settings compared to referenceNo Python source.
.github/ISSUE_TEMPLATE/Filename conventions (hyphens, not underscores), missing labelsPersonal/internal repo without external bug reporters.
.github/code-of-conduct.mdTitle-case headings vs upstream sentence case, plaintext email vs anti-scrape obfuscation, stale attribution URLsReplace verbatim with upstream when divergence is detected.
.github/funding.ymlCompare with reference—
.gitignoreMust be a real file: git skips an in-tree .gitignore reached via symlink; otherwise content vs upstreamAuto-generated by repomatic; drift means the user should re-run sync.
pyproject.toml [tool.lychee]Note differences (usually project-specific, just flag for review); a root lychee.toml wins as native configProject doesn't run lychee.

Skip files that are intentionally excluded via exclude in [tool.repomatic]. Cross-check [tool.ruff] extend-exclude and similar before flagging "missing" entries.

3. Upstream contribution opportunities (upstream)

Scan the downstream repo for patterns, workarounds, or configurations that are better than or missing from the upstream reference. These are candidates for contributing back to kdeldycke/repomatic. Look for:

  • Broader test matrices: e.g., more OS variants, extra Python versions, additional architecture coverage that upstream could adopt as defaults.
  • Workarounds for known issues: Steps or configs that fix CI failures or edge cases that upstream hasn't addressed yet.
  • Better tool configurations: e.g., ruff extend-include patterns, pytest addopts, coverage settings that are more complete than upstream.
  • Useful pyproject.toml patterns: e.g., dependency group definitions, build config, or tool settings that could be generalized.
  • Custom workflow steps: Reusable patterns in header-only workflows (e.g., package install verification, environment variable passing) that could become part of the reference workflow.
  • Documentation improvements: bundled skill or subagent guidance, issue templates, or repo metadata patterns that would benefit all downstream repos. Upstream no longer syncs instructions-file content into a consuming repo, so a convention worth spreading belongs in a skill or a subagent, never in a proposed claude.md section.

For each candidate, assess:

  1. Generalizability: Would this benefit most downstream repos, or is it project-specific?
  2. Complexity: Is it a simple config change or a significant workflow redesign?
  3. Action: Suggest filing as a GitHub issue or PR at kdeldycke/repomatic, with a draft title and description.
Output format

For each audit area, produce:

  1. A summary table: item, status (MATCH / DRIFT / MISSING / N/A), brief description.
  2. For each issue: what the current state is, what the reference has, and the recommended fix.
  3. Prioritize: group by severity (breaking/functional issues first, then consistency, then cosmetic).

Status guide:

  • MATCH — local matches reference (or differs only cosmetically with no functional impact).
  • DRIFT — local exists and diverges from reference in a way the user likely wants to fix.
  • MISSING — file expected but absent. Reserve for cases where absence is genuinely a problem; if the absence is covered by [tool.repomatic] exclude, runtime materialization, or a tool-registry default, mark N/A instead.
  • N/A — file does not apply to this project (excluded, opt-out, or outside the project's scope).

When unsure between DRIFT and N/A, lean N/A and explain in the description; over-flagging produces noisy reports the user has to refute.

After running

Suggest the user run:

  • Apply mechanical fixes by pushing to main: the sync-repomatic autofix job reconciles thin-caller workflow drift, and lint.yaml flags remaining metadata issues.
  • Make manual edits for header-only workflow drift and config changes that sync cannot fix.
  • /sphinx-docs-sync to audit docs/ against the upstream kdeldycke/repomatic reference when this repo has a Sphinx documentation tree. The sphinx-docs agent (.claude/agents/sphinx-docs.md, opt-in via repomatic init subagents/sphinx-docs) holds the canonical conventions for configuration.md, cli.md, install.md, conf.py, and the standard page roster — recommend opting in when the repo has Sphinx docs that drift from upstream patterns.

If the audit surfaces a generator behavior that produces unwanted output (e.g., a thin-caller trigger the user wants gone, a header paths: filter that doesn't fit), fix it in the upstream tool (repomatic/github/workflow_sync.py, repomatic/config.py) rather than asking the user to hand-patch the generated file every time repomatic init runs.

© kdeldycke, BSD-2-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in dotfiles/.agents/skills/repomatic-audit of kdeldycke/dotfiles.

Open the folder on GitHubat commit 7947d0f

Compare with similar skills

Repomatic Audit next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Repomatic Audit compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Repomatic Audit this skillkdeldycke/dotfiles173—~4.2kAutomated safety check: NotesBSD-2-Clause
Driftalsk1992/CloddsBot2.9k—~299Automated safety check: PassMIT
Upstream Protocol Drift Watchrebornix/Agmente545—~914Automated safety check: PassMIT
Harness Drift From Historyruvnet/ruflo74k—~632Automated safety check: NotesMIT
Upstream PRyc-software/qm15k—~2.3kAutomated safety check: NotesMIT
SEO Driftsickn33/agentic-awesome-skills47k1 repos~1.8kAutomated safety check: PassMIT

Similar skills

  • Drift

    alsk1992/CloddsBot

    Drift Protocol - perpetuals and prediction markets on Solana

    2.9k GitHub stars~299 tokensUpdated 6 days ago
    Auto-check passed
  • Dynamically inspect ACP and Codex upstream repos using .agmente.paths, detect protocol/API/spec drift, and produce a risk-scored regression report.

    545 GitHub stars~914 tokensUpdated 4 mo ago
    Backend & APIsAuto-check passed
  • One-command drift detection. An agent skill from ruvnet/ruflo.

    74k GitHub stars~632 tokensUpdated today
    DevelopmentAuto-check: notes
  • Upstream PR

    yc-software/qm

    Send a change to upstream qm without leaking organization-specific context.

    15k GitHub stars~2.3k tokensUpdated today
    DevelopmentAuto-check: notes
  • SEO Drift

    sickn33/agentic-awesome-skills

    Snapshot a site's SEO state and detect ranking, indexation, metadata, canonical, robots, schema, and on-page regressions over time.

    47k GitHub starsUsed in 1 repo~1.8k tokens
    Marketing & SEOAuto-check passed
  • Compares two dated research reports on one company to separate real factual change from price moves and rewording, then reports whether the investment thesis has drifted.

    17k GitHub stars~1.5k tokensUpdated today
    Business, Finance & HRAuto-check passed

More from kdeldycke/dotfiles

All 25 skills in this repo
  • Agent Config Self Tune

    kdeldycke/dotfiles

    Audit and tune the configuration of coding agents across Claude Code and pi - settings files (settings.json, settings.local.json), permission rules, instruction files (CLAUDE.md, AGENTS.md), skill…

    173 GitHub stars~3.4k tokensUpdated 4 days ago
    Auto-check: notes
  • Audit Repo Issues

    kdeldycke/dotfiles

    Analyze a GitHub repository's issues and PRs to find unaddressed feature requests, dismissed ideas, maintenance signals, and opportunities relevant to the current project.

    173 GitHub stars~2.5k tokensUpdated 4 days ago
    Auto-check passed
  • Brand Assets

    kdeldycke/dotfiles

    Create project logo and banner SVGs, then export them to light and dark PNG variants.

    173 GitHub stars~4.7k tokensUpdated 4 days ago
    Auto-check passed
  • Fill Web Form

    kdeldycke/dotfiles

    Fill a web form using data extracted from local documents (PDFs, images, spreadsheets).

    173 GitHub stars~2.3k tokensUpdated 4 days ago
    Auto-check passed
  • Rename With Dates

    kdeldycke/dotfiles

    Rename documents and files (PDFs, images, screenshots, etc.) by reading their content to extract the effective/publication date, then renaming them with a "YYYY-MM-DD - Clear descriptive title.ext"…

    173 GitHub stars~3.5k tokensUpdated 4 days ago
    Auto-check passed
  • Repomatic Test Matrix

    kdeldycke/dotfiles

    Choose what a repository's CI test matrix covers. An agent skill from kdeldycke/dotfiles.

    173 GitHub stars~2.2k tokensUpdated 4 days ago
    Auto-check: notes

Questions about Repomatic Audit

What does Repomatic Audit do?

Audit how far a downstream repo has drifted from the upstream repomatic reference. Repomatic Audit is an agent skill from kdeldycke/dotfiles. Audit how far a downstream repo has drifted from the upstream repomatic reference.

How do I install Repomatic Audit in Claude Code?

Run `npx skills add kdeldycke/dotfiles --skill repomatic-audit -a claude-code`. Or copy the skill folder (dotfiles/.agents/skills/repomatic-audit in kdeldycke/dotfiles) into .claude/skills/repomatic-audit in your project. Claude Code loads it when a task matches its description.

How do I install Repomatic Audit in Codex?

Run `npx skills add kdeldycke/dotfiles --skill repomatic-audit -a codex`. Or copy the skill folder (dotfiles/.agents/skills/repomatic-audit in kdeldycke/dotfiles) into .agents/skills/repomatic-audit in your project. Codex loads it when a task matches its description.

Can I use Repomatic Audit in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kdeldycke/dotfiles --skill repomatic-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/repomatic-audit, .gemini/skills/repomatic-audit, .github/skills/repomatic-audit and .opencode/skills/repomatic-audit in your project.

What does Repomatic Audit need to run?

Going by SKILL.md and its folder, Repomatic Audit needs the command-line tools its instructions call (gh and uvx). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Bash, Read, Grep, Glob, WebFetch, Agent. Compatibility (from SKILL.md): Designed for Claude Code. Recommended model: Opus..

Does Repomatic Audit access the network?

SKILL.md contains no URLs. Its commands use gh and uvx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Repomatic Audit safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Repomatic Audit use?

Repomatic Audit is published under the BSD-2-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Repomatic Audit use?

About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Repomatic Audit?

Skills that share tags, products or a category with Repomatic Audit: Drift (alsk1992/CloddsBot, 2.9k stars), Upstream Protocol Drift Watch (rebornix/Agmente, 545 stars), Harness Drift From History (ruvnet/ruflo, 74k stars) and Upstream PR (yc-software/qm, 15k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Repomatic Audit?

kdeldycke (a GitHub user) maintains it in kdeldycke/dotfiles, which has 173 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on October 4, 2026.

Source: kdeldycke/dotfiles on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.