dotfiles/.claude/skills/benchmark-update/SKILL.md
Create or update a competitive benchmark page (docs/benchmark.md) comparing the current project against alternatives in the same space. Checks maintenance status, feature accuracy, new candidates, and badge health.
npx skillsauth add kdeldycke/dotfiles benchmark-updateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
![ -f pyproject.toml ] && grep '^name' pyproject.toml | head -1 || echo "No pyproject.toml"
![ -f docs/benchmark.md ] && head -15 docs/benchmark.md || echo "No docs/benchmark.md yet"
![ -f docs/benchmark.md ] && grep -c '^|' docs/benchmark.md || echo 0
![ -f CLAUDE.md ] && grep -i 'ordering\|benchmark\|comparison' CLAUDE.md | head -5 || echo "No ordering conventions found"
You create and maintain docs/benchmark.md, a competitive benchmark page comparing the current project against alternatives in the same space. The page follows a standard template with feature tables, GitHub activity badges, popularity charts, distribution info, and metadata.
Fetch these files as reference when building or auditing a benchmark page:
kdeldycke/meta-package-manager/docs/benchmark.md: package manager comparison with features, operations, OS support, distribution, activity, popularity, and metadata tables.kdeldycke/click-extra/docs/benchmark.md: CLI framework comparison with DX/UX feature tables, parser flag scoping, unique strengths, gaps with upstream issue references, and an "Excluded frameworks" section.audit (default): Run all checks on an existing benchmark page and report findings. Do not edit unless the user confirms.init: Create a benchmark page from scratch. Research competitors, build feature tables, and populate all sections.add <project>: Research a specific project and add it to all tables in the correct position.refresh-badges: Verify all badge URLs resolve. Fix broken ones (repos that moved, renamed packages).If CLAUDE.md defines a benchmark ordering convention, follow it. Otherwise, place the current project first, its direct dependencies/foundation second, then remaining projects sorted by GitHub stars (descending).
init)Read pyproject.toml for the project name, description, and keywords. Determine what category of software this project is (CLI framework, package manager, static site generator, linter, etc.).
Search for alternatives in the same space:
gh search repos "<domain keywords>" --sort stars --limit 30For each candidate, collect: name, GitHub owner/repo, approximate star count, one-line description, and language/ecosystem.
Present the candidates and ask the user which to include.
For each included project, research its feature set by reading its documentation, README, and changelog. Build comparison tables relevant to the domain. Common table categories:
Use ✓ for supported features, ~ for basic/partial support, empty for unsupported, N/A where not applicable.
After building the feature tables, analyze them to identify:
gh issue list --repo <upstream> --search "<feature>" --state open.This analysis turns the benchmark from a static comparison into an actionable roadmap.
Follow this template structure:
# {octicon}`trophy` Benchmark
<intro paragraph about why this comparison exists>
## <Feature category 1>
<legend if needed>
| Feature | `this-project` | `competitor-1`[^1] | ... |
| ... | :---: | :---: | ... |
<brief prose highlighting key differences>
## <Feature category 2>
...
## Unique strengths
<bullet list of features where this project leads, with brief explanations>
## Gaps and opportunities
### <Gap title>
<description of the gap, with links to upstream issues like `[owner/repo#N](url)` including demand signals>
<what this project could do to close the gap>
### <Gap title>
...
## Activity
| Metrics | `this-project` | `competitor-1`[^1] | ... |
(GitHub badge rows: watchers, contributors, commit activity, etc.)
## Popularity
[](<star-history-link>)
| Metrics | `this-project` | `competitor-1`[^1] | ... |
(Stars, SourceRank, Dependent repos)
## Distribution
| Registry | `this-project` | `competitor-1`[^1] | ... |
(PyPI, crates.io, npm, Homebrew downloads)
## Metadata
| Metadata | `this-project` | `competitor-1`[^1] | ... |
(License, main language, latest version, benchmark date)
## Excluded projects
~~~{note}
<Project name> is not included because <reason>.
~~~
## Project URLs
[^1]: [<url>](<url>)
Badge format follows shields.io conventions:  for compact badges with no label text.
Star history chart: [](https://star-history.com/#<ampersand-separated>&Date)
audit)For each project in the benchmark, check via gh api:
Classify each as: active, slow but maintained, stale (no activity in 12+ months), or abandoned/archived.
Stale or abandoned projects should be moved to the "Excluded projects" section with a {note} admonition explaining why.
For each feature row, spot-check 2-3 projects against their current documentation or changelog. Flag cells that look wrong (features added or removed since the benchmark was written).
For each item in "Gaps and opportunities", check whether the linked upstream issues have changed status:
Also check whether new gaps have appeared (competitors added features this project lacks).
Search for projects in the same space with significant GitHub stars not already in the benchmark. Report candidates with: name, GitHub repo, stars, one-line description, and maintenance status.
Verify the GitHub owner/repo in badge URLs matches the current canonical location. Repos get transferred. Check via gh api repos/{owner}/{repo} --jq '.full_name'.
Verify the star-history.com URL includes all current projects and no excluded ones.
add)For audit, produce a summary table:
| Project | Status | Issues found | | ------- | -------------------- | ------------------------------------ | | ... | active / stale / ... | badge broken / feature changed / ... |
Then list recommended actions. Do not edit the file until the user confirms.
docs/upstream.mdThe gap analysis surfaces upstream issues and PRs that overlap with what docs/upstream.md tracks. When the benchmark discovers new upstream issues (reported, workaround in place, declined, or fixed), check whether they belong in docs/upstream.md too. Suggest running /upstream-audit sync-git afterward if new references were added to the benchmark.
tools
Create or update an upstream contributions page (docs/upstream.md) tracking the project's relationship with its dependencies. Discovers merged PRs, reported issues, workarounds, and declined features.
documentation
Detect stale translations in readme.*.md and contributing.*.md files by comparing structure and content against the English source, then draft updated translations for changed sections.
testing
Two-way comparison and synchronization of Sphinx documentation across sibling projects. Discovers discrepancies in conf.py, install.md, index.md toctree, pyproject.toml docs dependencies, extra-deps sections, readme badges, and static assets. Use when you want to align documentation structure, catch stale dependencies, or push improvements across your Sphinx-enabled repositories.
tools
Optimize GitHub topics for discoverability by analyzing competition on topic pages.