Agent skill

Repomatic Test Matrix

by kdeldycke in kdeldycke/dotfiles

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

BSD-2-ClauseAuto-check: notesFrontend & Design

Install Repomatic Test Matrix

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

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

GitHub CLI
$ gh skill install kdeldycke/dotfiles repomatic-test-matrix --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-test-matrix .claude/skills/repomatic-test-matrix && 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-test-matrix
GitHub stars
173
Token cost
~2.2k tokens
SKILL.md length
1,277 words
Files
1
Skills in repo
25
Repo updated
First seen
Licence
BSD-2-Clause

At a glance

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

  • Drop a Python version
  • SKILL.md covers Context and Instructions
  • Calls gh and pytest
  • Pin a dependency floor

What it does

Repomatic Test Matrix is an agent skill from kdeldycke/dotfiles. Choose what a repository's CI test matrix covers. Decide which Python versions, operating systems and runner images earn a cell. Mark which axes stay unstable probes, and pick where a one-off job runs. Use when you add or drop a Python version or OS, pin a dependency floor, or place a new job.

Its SKILL.md is about 2.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: Sonnet.

It sits in Frontend & Design, covering Accessibility. It works with Python. The repository describes itself as: 🍎 macOS dotfiles for Python developers. The licence is BSD-2-Clause.

When your agent uses it

  • Drop a Python version
  • Pin a dependency floor
  • Place a new job

Example prompts

  • “/repomatic-test-matrix”

Requirements

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

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
    • Edit

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • pytest

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

  • Network

    No URLs in SKILL.md. Its commands use gh, 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: Sonnet.

    From compatibility in the SKILL.md frontmatter.

Context cost

Repomatic Test Matrix loads about 2.2k tokens when it runs. Until then it costs about 79 tokens; SKILL.md has 1,277 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~79
When it runs · the whole SKILL.md, loaded when a task matches
~2.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, Edit

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,277 words, ~2,225 tokens.

Download SKILL.mdSave it as .claude/skills/repomatic-test-matrix/SKILL.md (or your agent's skills folder).
name
repomatic-test-matrix
description
Choose what a repository's CI test matrix covers. Decide which Python versions, operating systems and runner images earn a cell. Mark which axes stay unstable probes, and pick where a one-off job runs. Use when you add or drop a Python version or OS, pin a dependency floor, or place a new job.
allowed-tools
Bash, Read, Grep, Glob, Edit
compatibility
Designed for Claude Code. Recommended model: Sonnet.
argument-hint
[review|add <axis>|drop <axis>]

Context

!grep -A20 '^\[tool.repomatic.test-matrix' pyproject.toml 2>/dev/null || echo "NO_TEST_MATRIX_CONFIG" !grep -E '^\s*requires-python' pyproject.toml 2>/dev/null || echo "NO_REQUIRES_PYTHON"

Instructions

repomatic show-metadata builds the full and PR test matrices from [tool.repomatic.test-matrix.*]. Read the effective matrices before proposing anything:

shell-session
$ repomatic show-metadata --format json test_matrix test_matrix_pr

A matrix cell costs a runner on every push, so each one has to earn its place. These are the selection conventions.

Cover the shipped config broadly; probe unreleased axes narrowly; smoke-test released flavors

Released dependencies on stable Python get a broad spread, but broad means broad on the axis the product actually varies along, not on both at once. A tool whose behaviour changes per platform (it drives different system binaries, resolves different paths, ships a different feature set) earns a cell for every OS and architecture, because that spread is the product. Interpreter compatibility is OS-independent by construction, so the floor, the prerelease and the free-threaded build each need one runner rather than one per OS. Crossing the two axes multiplies cells to buy their interaction, which is worth paying for only where the failure history shows an interaction exists: measure it (see below) instead of assuming it, and put the floor on whichever OS its users actually run, which for a Python tool is usually Linux, where distribution packagers build against whatever interpreter their channel ships.

Unreleased dependency branches and prerelease Python run on one runner as continue-on-error probes (test-matrix.unstable), never across platforms: a probe that fails is information, and paying for it six times over buys none.

A released free-threaded build (3.14t) is a different case and runs stable on a single runner, as a python-version variation pinned with exclude and left out of unstable. It is shipped software, so a failure there is a real failure.

Ask what a cell has caught, not what it might

A cell justifies itself by having failed while its siblings passed. Anything less is a hypothesis, and the repository already holds the evidence to test it: walk recent runs of the workflow and, for every failing cell, check whether the same OS passed at its other Python version in that same run. A cell that never fails alone has never repaid its cost.

shell-session
$ gh run list --workflow tests.yaml --branch main --limit 40 --json databaseId
$ gh run view {run-id} --json jobs \
    --jq '.jobs[] | select(.name | test("py")) | "\(.name): \(.conclusion)"'

Count cancelled runs too. A busy default branch cancels most of its runs through cancel-in-progress, and the cells that had already reported a verdict inside them are where most of the failure history lives; filtering to conclusive runs alone can shrink a real sample to nothing.

Two readings make the decision. A failure hitting every cell of an OS is an OS-level or universal bug, which one cell per OS would have caught. A failure hitting one cell while its twin passed is the only kind a per-OS version pair can catch, and if that count is zero across a real sample, the pairs are redundant. Expect the second reading to also surface environment artifacts rather than code bugs (one runner of a label carrying a different tool layout than another), and do not count those as a cell earning its keep.

State the sample size and both counts when proposing the change, and record in the config comment what would justify restoring what you cut, so the next reader inherits the measurement rather than the conclusion alone.

Pin the dependency floor, and any release a workaround targets

Add the floor of a supported range as an explicit matrix value: the floor is what an install actually resolves for someone on an old environment, and nothing else in CI exercises it.

Add any mid-range release a shim works around, too. That version is the one that catches the shim regressing, and it is invisible to a matrix that only spans the endpoints.

Select runners by measured speed and workload, not architecture

Measure, do not reason from the chip:

shell-session
$ repomatic job-timings --workflow tests.yaml --limit 5

That reports median whole-job wall-clock per runner image from recent successful runs. Read it before proposing any runner change: the parallel pytest --numprocesses=auto suite favours ubuntu-26.04-arm, which is why that is the test PR Linux slot, but the ratio is workload-dependent and yours may differ.

Where one fast runner suffices, ubuntu-26.04-arm is the default: fastest and cheapest tier, against hosted macOS billing roughly ten times Linux. Reserve macos-26 and Windows for the OS coverage only they add, and drop the slower twin of an OS pair with test-matrix.remove.os.

Time whole jobs, not the tool pass

A measurement that times only tool execution misses checkout and install, which is where most of the difference between runner images lives. The lean ubuntu-slim image survived for a long time on exactly that mistake: measured end to end, the full image ran 27-32% faster.

job-timings reads the jobs API's start and end timestamps, so what it reports is whole-job by construction and this mistake is not expressible through it.

Show full SKILL.md (486 more words)Show less
Watch what is arriving and retiring

You are not the first to know an image is changing. repomatic sync-runner-images runs weekly from the autofix.yaml workflow, looks up every label this repository runs in GitHub's Available Images table, and proposes the mechanical half as a pull request. A retiring image has its literal runs-on: values moved onto a successor. A strictly newer version of an image in use gets the same rewrite, and also joins the full matrix as a continue-on-error probe unless the fleet already runs it. It opens a pull request only when something here is exposed, so its existence is the signal.

Deciding whether to merge is this skill's job, and the CI run that pull request triggers is the evidence for it. Closing the pull request alone brings the proposal back on the next run; declining one for good means naming the label in [tool.repomatic.sync-runner-images] ignore.

That table is the only source read, and it badges an image deprecated when deprecation begins rather than when it is announced, so a retirement surfaces here months after an announcement feed would have shown it. The runway is still ample, since the badge lands well before the image stops working. What the table cannot show at all is a change to the contents of an image already in use, like a default toolchain moving: the suite is what catches those.

An image is stable once validated here, not once GitHub relabels it

GitHub's preview label chiefly gates -latest alias eligibility, and no workflow here uses a floating alias, so it says nothing about whether the image runs the suite green.

Never introduce a -latest alias to sidestep the question: GitHub repoints those with no commit to review, and lint-repo rejects them.

Every job runs on a test axis

The images a job may run on are exactly those the test matrices use, and lint-repo rejects any other runs-on:. Read the effective set from repomatic show-metadata rather than from the package source, which a repository consuming repomatic does not have checked out. That keeps "where is the suite exercised" and "what may a job run on" a single question, because each extra image is one more to track, pin and migrate.

A job that genuinely needs something else widens the axes rather than naming a one-off image. This covers the Linux Nuitka hosts (a published binary is built on the image the suite is validated against, and its toolchain comes from a digest-pinned manylinux container regardless) and the light mechanical jobs.

Reporting

Propose changes as a [tool.repomatic.test-matrix.*] diff, and for each added or removed cell say what it buys or costs: a version nothing else exercises, an OS-specific failure mode, a runner-minute saving. A cell nobody can justify in one sentence is a cell to drop.

Verify with repomatic show-metadata after editing, since the config is an input to a computed matrix rather than the matrix itself.

© 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-test-matrix of kdeldycke/dotfiles.

Open the folder on GitHubat commit 7947d0f

Compare with similar skills

Repomatic Test Matrix 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 Test Matrix compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Repomatic Test Matrix this skillkdeldycke/dotfiles173—~2.2kAutomated safety check: NotesBSD-2-Clause
DocsPrefectHQ/fastmcp28k—~1kAutomated safety check: PassApache-2.0
Jarvis Setupethanplusai/jarvis838—~2.5kAutomated safety check: NotesCustom licence
Ibm A11y Route Scanlangflow-ai/langflow156k—~1.6kAutomated safety check: PassMIT
Gui Debugnatsukium/dotfiles106—~909Automated safety check: PassCC0-1.0
Implementing Navigationancoleman/ai-design-components526—~1.8kAutomated safety check: PassMIT

Similar skills

  • Docs

    PrefectHQ/fastmcp

    Write or revise a page under docs/ for gofastmcp.com. An agent skill from PrefectHQ/fastmcp.

    28k GitHub stars~1k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Jarvis Setup

    ethanplusai/jarvis

    A skill your agent uses when helping someone install, configure, or debug a fresh clone of JARVIS (this repo) — especially "the mic doesn't work", "JARVIS says his language systems are down", any…

    838 GitHub stars~2.5k tokensUpdated 28 days ago
    Frontend & DesignAuto-check: notes
  • Ibm A11y Route Scan

    langflow-ai/langflow

    Batch-scan Langflow frontend routes for accessibility issues using the Python IBM Equal Access scanner (scripts/a11y/a11yscan.py) and produce JSON/Markdown/HTML reports.

    156k GitHub stars~1.6k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Gui Debug

    natsukium/dotfiles

    Verify a rendering or window-chrome change in any macOS GUI app unattended — find its CGWindowID via JXA, capture that window alone (with per-pixel alpha) using screencapture -l, and read exact RGBA…

    106 GitHub stars~909 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Implementing Navigation

    ancoleman/ai-design-components

    Implements navigation patterns and routing for both frontend (React/TS) and backend (Python) including menus, tabs, breadcrumbs, client-side routing, and server-side route configuration.

    526 GitHub stars~1.8k tokensUpdated 10 mo ago
    Frontend & DesignAuto-check passed
  • Implementing Search Filter

    ancoleman/ai-design-components

    Implements search and filter interfaces for both frontend (React/TypeScript) and backend (Python) with debouncing, query management, and database integration.

    526 GitHub stars~1.6k tokensUpdated 10 mo ago
    Frontend & DesignAuto-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
  • Sphinx Docs Sync

    kdeldycke/dotfiles

    Compare and synchronize Sphinx documentation against the upstream kdeldycke/repomatic reference, or across sibling projects.

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

Works with

Questions about Repomatic Test Matrix

What does Repomatic Test Matrix do?

Choose what a repository's CI test matrix covers. An agent skill from kdeldycke/dotfiles. Repomatic Test Matrix is an agent skill from kdeldycke/dotfiles. Choose what a repository's CI test matrix covers.

When should I use Repomatic Test Matrix?

Repomatic Test Matrix fits situations like: drop a Python version; pin a dependency floor; place a new job.

How do I install Repomatic Test Matrix in Claude Code?

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

How do I install Repomatic Test Matrix in Codex?

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

Can I use Repomatic Test Matrix 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-test-matrix -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-test-matrix, .gemini/skills/repomatic-test-matrix, .github/skills/repomatic-test-matrix and .opencode/skills/repomatic-test-matrix in your project.

What does Repomatic Test Matrix need to run?

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

Does Repomatic Test Matrix access the network?

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

Is Repomatic Test Matrix 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 Test Matrix use?

Repomatic Test Matrix 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 Test Matrix use?

About 2.2k tokens (SKILL.md is roughly 8.9k 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 Test Matrix?

Skills that share tags, products or a category with Repomatic Test Matrix: Docs (PrefectHQ/fastmcp, 28k stars), Jarvis Setup (ethanplusai/jarvis, 838 stars), Ibm A11y Route Scan (langflow-ai/langflow, 156k stars) and Gui Debug (natsukium/dotfiles, 106 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Repomatic Test Matrix?

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.