cursor-skills-for-claude
AGENTS.md0 starsChanged 11 days agoMITView on GitHub
This repository redistributes skills from cursor/plugins. No skill content is authored here. main is protected by a ruleset with no bypass, so nothing lands by pushing to it. Branch, push the branch, open a PR, merge it yourself. To merge, a PR needs the verify check green and squash as its merge method; it needs no approvals. Every commit must be signed. Local commits inherit commit.gpgsign; the sync job's commits are signed because sign-commits: true makes the action commit through…
- Reads credentials
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,774 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository19 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- check-compiler-errorsSkill
- control-cliSkill
- control-uiSkill
- deslopSkill
- fix-ciSkill
- fix-merge-conflictsSkill
- get-pr-commentsSkill
- loop-on-ciSkill
- make-pr-easy-to-reviewSkill
- new-branch-and-prSkill
- pr-review-canvasSkill
- review-and-shipSkill
- run-smoke-testsSkill
- thermo-nuclear-code-quality-reviewSkill
- verify-thisSkill
- weekly-reviewSkill
- what-did-i-get-doneSkill
- workflow-from-chatsSkill
The file
We split this AGENTS.md into the rules it gives an agent
4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 13
Every commit must be signed.
- Very specific: line 58
Only plugins with "mirror": true reach the flat tree.
- Distinctive: line 94
Every condition the script reports is a decision for a human: upstream content changed in a way the config no longer describes.
- Very specific: line 131
Only one plugin may mirror a given skill name.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Maintaining this repository
This repository redistributes skills from cursor/plugins. No skill content is authored here.
Working in this repository
main is protected by a ruleset with no bypass, so nothing lands by pushing to
it. Branch, push the branch, open a PR, merge it yourself. To merge, a PR needs
the verify check green and squash as its merge method; it needs no approvals.
Every commit must be signed. Local commits inherit commit.gpgsign; the sync
job's commits are signed because sign-commits: true makes the action commit
through the GitHub API.
Repository policy also requires every action to be pinned to a full commit SHA. A tag reference does not fail review, it fails the run.
Dependabot owns action versions and bumps all three in one grouped PR monthly. Bumping a SHA by hand only creates a conflict with the next one.
A workflow file registers with GitHub only when a push modifies it. A workflow
added in a repository's first push stays invisible — absent from the Actions
list, and workflow_dispatch returns 404 — until some later commit touches the
file.
Generated vs authored
Authored — sync.config.json, scripts/, .github/, README.md outside
its markers, this file, NOTICE.
Generated, rewritten from scratch on every sync — plugins/, skills/,
.claude-plugin/marketplace.json, .sync-state.json, AGENTS.md, and the
region of README.md between <!-- skills:start --> and <!-- skills:end -->.
AGENTS.md is a byte-identical copy of this file, so agents that read one or
the other get the same context. Edit this file; the sync produces the copy and
CI fails if the two diverge.
To change anything generated, change sync.config.json or scripts/sync.mjs
and re-run the sync. Skill and subagent counts belong to the generated README
region, so prose that states a count belongs there too.
Two trees
plugins/<plugin>/skills/ canonical, what Claude Code installs
skills/<skill>/ flat mirror, what `npx skills` installsClaude Code wants each plugin rooted in its own directory so skills/ and
agents/ auto-discover per plugin. The Vercel skills CLI only scans known
container directories, so it needs a root-level skills/. Hence two trees, both
written by the same generator in the same run, with CI asserting they stay
byte-identical.
Only plugins with "mirror": true reach the flat tree. Every plugin vendored
today mirrors. The flag exists for a plugin whose skills delegate to subagents:
npx skills installs skills only, so mirroring those would ship instructions
to spawn agents that were never delivered.
What is deliberately not vendored
Upstream thermos is not packaged, and neither is the cursor-team-kit
thermo-nuclear-code-quality-review.md agent. Both agents open with "load the
thermo-nuclear-* skill" and fall back to a rougher inline rubric when they
cannot. In Claude Code they never can: the rubric skills carry
disable-model-invocation: true, which hides them from the Skill tool, and the
agents preload nothing. Installed as-is they always ran the fallback while
claiming the full audit. The rubric skills themselves are self-contained and
work as slash commands, so cursor-team-kit still ships
thermo-nuclear-code-quality-review. The agent sits in that plugin's skip
list; thermos is simply not in the config. Making the agents work would need a
Claude-specific skills: preload injected at sync time; do that before
allowlisting either again.
Running a sync
node scripts/sync.mjs regenerate from upstream
node scripts/sync.mjs --verify offline checks, no networksync.yml runs the first daily and opens a PR when output differs. verify.yml
runs the second on every push and pull request.
Most upstream commits touch nothing this repository vendors and move only
.sync-state.json, so the sync opens a PR only when generated content changed
or upstream grew a skill the allowlist does not cover. The state file then stays
on the last content sync, which widens the commit range the next report lists
and changes nothing else.
Every condition the script reports is a decision for a human: upstream content changed in a way the config no longer describes. Fix the config, or accept the upstream change deliberately. Keep the sync failing on anything it fails on today.
The sync also reports every path in an upstream plugin directory the config does
not name, whether that is an unallowlisted skill, an unallowlisted agent, or a
new top-level file or directory. assets/ and rules/ are deliberately skipped
and stay unreported: nothing references the imagery, and Cursor .mdc rules have
no Claude Code equivalent. A reported path opens a PR on its own, even when
nothing vendored changed. To turn one down for good, list it under the plugin's
skip in sync.config.json with a reason; otherwise the report, and the PR,
return on every run. A skip whose path vanished upstream fails the sync, since
the decision it records has nothing left to apply to.
Invariants
Preserve these through any refactor of .github/workflows/:
- Actions pinned to commit SHAs, enforced by repository policy rather than
convention.
create-pull-requestholdscontents: write; a moved tag is a write path into this repository. - PR body passed as
body-path. It embeds upstream commit subjects. Routed throughGITHUB_OUTPUT, a subject matching the heredoc delimiter lets upstream write arbitrary step outputs. verify.ymltriggers onpull_request. It runs PR-head code, sopull_request_targetwould hand fork PRs write access and secrets.- Symlinks and executables refused at copy time. Upstream chooses what sits in a skill directory, and whatever lands here is redistributed to everyone who installs the marketplace.
- Upstream README text escaped before entering
README.md. A description containing a catalog marker would otherwise hijack the generated region on the next run.
Gotchas
disable-model-invocationis valid Claude Code frontmatter. Leave it in place.- Only one plugin may mirror a given skill name. The CLI installs flat by
frontmatter
name, so a second one clobbers the first. rewritesrun before mirroring, so the flat copy inherits them. Each rule breaks when upstream rewords its line, so keep the set small.- Sync PR commits are signed only because
sign-commits: trueruns on the defaultGITHUB_TOKEN. Swapping in a PAT keeps the PR working and drops the signature without warning.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

