- Breaking: the
agentscomponent is renamedsubagents, its config keyagents.locationbecomingsubagents.location. Naming the old component in[tool.repomatic] includeorexcludefails the init; the old config key is ignored with a warning. - Breaking:
repomatic init claudeis renamedrepomatic init agent, and its destination follows[tool.repomatic] agent.location(defaulting per[tool.repomatic.flavor] agent) rather than a fixed root-levelclaude.md, reaching instructions kept asAGENTS.mdor outside the root. - Breaking: the
runner-imagescommand, its workflow job and its[tool.repomatic] runner-imagesconfig key are gone, along with the issue they maintained;sync-runner-imagescloses that issue on its first run. - Breaking: the Cloudflare Pages deploy needs only
CLOUDFLARE_API_TOKEN: a token scoped toCloudflare Pages: Editresolves its own account, soCLOUDFLARE_ACCOUNT_IDbecomes an override for a credential spanning several accounts;cloudflare-pages --account-idprints the identifier for that case. - Breaking: the VirusTotal scan history moves from
docs/assets/virustotal-scans.jsontovirustotal-scans.csv. The firstscan-virustotalrun after upgrading converts the old JSON on its own; delete the stale.jsonafterwards. - New
[tool.repomatic] site.deployconfig choosing where the built site publishes:github-pages, the default, orcloudflare-pagesthroughwrangler pages deploy, withsite.cloudflare-projectnaming a Pages project that predates the repository. - New
cloudflare-pagescommand reconciling the live Pages project against the declaredsite.*state:--check,--apply,--dump, and--createfor rebuilding from nothing. Warns a month before the API token expires, which Cloudflare never signals. - New
cloudflare-pages --attach-domainserving a project at a custom domain, creating the proxiedCNAMErecord the bare API leaves missing. - New
cloudflare-config-driftjob in the Docs workflow running that check apart from the deploy, so drift is loud without holding up publishing. lint-reponow fails a committed_redirectsfile that would lose rules to the Cloudflare Pages engine's silent budget accounting, naming each URL a dropped rule leaves dead or silently misredirected.lint-reponow warns whenwrangler.tomlcontradicts the declared Cloudflare Pages project name or compatibility date, and checks a migrated site keeps its GitHub Pages custom domain pointing at the new host so publishedgithub.ioURLs keep redirecting.- The Cloudflare deploy job now drops files over Direct Upload's 25 MiB per-file limit, naming each in the log, instead of failing the whole upload on the first one.
- The Docs workflow now runs monthly, mirrored into downstream callers: a lapsed Cloudflare token becomes a red run, and link rot surfaces between pushes.
- The Docs workflow no longer publishes Sphinx's parse cache: doctrees now build in the runner's temp directory instead of riding the Pages upload, 118 MB of a 182 MB artifact on an autodoc-heavy project.
- Every setup guide step is rewritten to the actions it asks for; the guide and
lint-reponow ask about whichever hostsite.deploynames, and the Cloudflare step hands out a pre-filled account-owned token form. - New
sample-metricscommand recording what forges say about the repositories a project tracks into one committed CSV: star count, newest release or tag, and newest commit, read from GitHub, GitLab and Forgejo instances. sample-metricsrenders the accumulated history as themeable SVG charts, replacing the star-history embeds GitHub's 2026 stargazer restriction broke. Star history recovers from per-star timestamps, archived pages with--backfill-wayback, or a star-history.com export with--import-csv.- New
[tool.repomatic.metrics] chartsoptionscale = "logarithmic", measuring the vertical axis in powers of ten so series orders of magnitude apart stay legible on one chart. - New opt-in
metrics.yamlworkflow running the sampler weekly and committing its store. Enable with[tool.repomatic] metrics.sync = trueand declare the repositories to follow in[tool.repomatic.metrics] subjects. - New
sync-runner-imagescommand and weekly job opening a pull request that moves a deprecated runner image onto its successor, or probes a strictly newer one ascontinue-on-error. Decline a proposal for good with[tool.repomatic.sync-runner-images] ignore. - New
job-timingscommand reporting median whole-job wall-clock per runner image, read from recent successful runs. lint-depsnow warns about a dependency floor comment running past[tool.repomatic] lint-deps.comment-word-thresholdwords, 40 by default.- New
lint-anchorscommand checking every authored same-page fragment link against the anchors the built site actually carries, run by the Docs workflow before each deploy. - New
pr-bodyandpr-syncoption--template-arg-file KEY=PATH, reading a template value from a file for a value with no ceiling on its size. - New
git-commit-pushoption--all-changes, staging everything the working tree carries instead of a named path list. - New bundled
repomatic-test-matrixskill deciding which Python versions, operating systems and runner images earn a test-matrix cell. - Bundled guidance moves its release-repair, label-retirement and test-matrix procedures out of
claude.mdand into the skills that run them, leaving the always-loaded file carrying rules rather than checklists. - The bundled
repomatic-shipskill now names all three shapes an unanswered hardware-key signing prompt produces, treating a silent hang as a missed prompt rather than a slow command. - The bundled
sphinx-docsagent's page roster gains theplugin,commit-messagesandhistorypages. - The release PR's unshippable-dependency warning is now a single line naming each package, each linked to the line declaring it, instead of a paragraph and a four-column table.
- The binaries catalog now leaves the VirusTotal cell empty unless a scan record backs it, instead of linking every binary to an analysis page that was never created.
- The bundled
[tool.typos]config now acceptsPNGsandPATCHed, which typos otherwise splits and rewrites toONGsandPATCHead. repomatic initno longer drops the comment documenting a bundled template's first key: six of the nine templates were losing their opening comment, the[tool.typos]proper-noun map among them.- Fix
ci-status --helpcollapsing everything after its first example into one garbled line. update-dep-graphnow reads the root's direct dependencies fromuv.lock: uv's SBOM export promoted a dependency-group package to a primary dependency whenever an extra pulled it in transitively.- New Cloudflare Pages documentation page covering Direct Upload, token scoping and rotation, the drift check, and the redirects engine's undocumented accounting. It opens on a runbook taking a bare domain name to a published site in seven commands.
- This project's documentation moves to repomatic.net, and its links move with it: every reference now names the extensionless URL Cloudflare Pages serves. The old
kdeldycke.github.io/repomaticaddresses keep redirecting.
Full changelog: v7.12.1...v7.13.0