Open Agent Skills — self-contained instruction packages that teach coding agents to do a specific job well.
A skill is Markdown an agent reads at runtime, plus any scripts and reference material it needs. Install one and your agent gains a capability it keeps: it knows when to reach for it, what steps to follow, and what to check before claiming it worked.
Works with Claude Code, Cursor, GitHub Copilot, Codex, Gemini CLI, Windsurf and 20+ other agents.
# see what's here
npx skills add prashant-cr/skills --list
# install just the one you want
npx skills add prashant-cr/skills --skill stock-deep-diveSkills are independent — take one, take all six. See Installing for the difference between picking one and taking the lot.
| Skill | What it does |
|---|---|
scrape-feasibility-audit |
Audits a site before you build a scraper — bot-detection vendor, CAPTCHA type, robots.txt rules, server- or client-rendered — then recommends tooling proportionate to what it actually found. |
structured-data-extraction |
Extracts data without CSS selectors, by reading what a page already publishes: JSON-LD, microdata, Open Graph, embedded state JSON, tables and feeds. Find a field by name, get a JSON path. |
fix-broken-scraper |
Diagnoses why a scraper broke and repairs it one verified step at a time — separating stale selectors from real blocking, changed routing, and content that moved into embedded JSON. |
Together they cover the life of a scraping project: audit before you build, extract without brittle selectors, diagnose when something breaks.
| Skill | What it does |
|---|---|
news-stock-impact |
Turns today's news into a ranked shortlist of listed companies genuinely exposed to it — the event, the transmission mechanism to a revenue or cost line, how much the stock has already moved, and what would invalidate the idea. Any market, any cap. |
stock-deep-dive |
Full fundamental analysis of one company — business, moat, earnings quality, management, and what the current price already implies — scored 0–10 across six dimensions, with bull/base/bear scenarios and separate verdicts for the long term and the next year. |
ipo-rating |
Rates an IPO and says whether to apply — scoring the business, valuation against listed peers, and the fresh-issue vs offer-for-sale split. Gives two separate verdicts, listing-day gain and long-term hold, because they often disagree. Reads grey market premium and subscription data, and maps the lock-in expiries. |
structured-data-extraction surveys what a page publishes, then locates a field by name:
$ python3 extract.py https://github.com/orgs/vercel/repositories --find starsCount
Keys matching 'starsCount':
json_blocks[5].data.payload.orgReposPageRoute.repositories[0].starsCount = 30801
json_blocks[5].data.payload.orgReposPageRoute.repositories[1].starsCount = 2264
json_blocks[5].data.payload.orgReposPageRoute.repositories[2].starsCount = 15996
json_blocks[5].data.payload.orgReposPageRoute.repositories[3].starsCount = 4163
json_blocks[5].data.payload.orgReposPageRoute.repositories[4].starsCount = 25874
json_blocks[5].data.payload.orgReposPageRoute.repositories[5].starsCount = 141153A JSON path and an exact value, with no DOM inspection. That last one is the argument for this
approach: the page renders it as 141k, so scraping the markup silently loses three digits and
looks perfectly fine doing it. (Counts drift — that was a real run.)
Anyone can write instructions an agent will nod along to. These aim higher:
- Runnable tools, not just prose. Deterministic work belongs in a script the agent executes rather than reasoning through. The bundled scripts use the standard library only — nothing to install, nothing to break.
- Claims are verified, not asserted. Where a skill says a site behaves a certain way, that was checked against the live target. Where a claim turned out to be wrong, it was removed rather than softened.
- Tested against real prompts. Each skill carries eval cases in
evals/written the way users actually ask — including prompts whose premise is wrong, because the valuable answer is often the one that corrects the question. - Honest about scope. A skill that says where it stops is worth more than one that improvises past the edge of what it knows.
- The least powerful tool that works. Recommending a headless browser for a job a plain HTTP request handles is a failure, not caution.
Just one skill — the common case, since the skills are independent and span different domains:
npx skills add prashant-cr/skills --skill stock-deep-diveSeveral at once, comma-separated:
npx skills add prashant-cr/skills --skill stock-deep-dive,news-stock-impactEverything, to every detected agent, without prompts:
npx skills add prashant-cr/skills --allOne thing worth knowing, because it surprises people: the bare command is not a "browse" command.
npx skills add prashant-cr/skills # <- installs ALL six when run inside a coding agentRun in a plain terminal it prompts you to choose. But run inside a coding agent it detects that,
prints Agent detected — installing non-interactively, and installs every skill in the repo to
every agent it finds — no picker, no confirmation. Use --skill when you want one, and --list
when you only want to look.
Skills land in ./.agents/skills/ in the current project, with symlinks into each agent's own
directory. Add -g to install user-level in ~/.agents/skills/ instead.
| Flag | Effect |
|---|---|
-g, --global |
Install user-level (~/.agents/skills/) instead of into the current project |
-s, --skill <skills> |
Install specific skills ('*' for all) |
-a, --agent <agents> |
Target specific agents ('*' for all) |
-l, --list |
List the skills in this repo without installing |
-y, --yes |
Skip confirmation prompts |
--copy |
Copy files instead of symlinking into agent directories |
--all |
Shorthand for --skill '*' --agent '*' -y |
Try a skill without installing it:
npx skills use prashant-cr/skills --skill <skill-name>Update and remove:
npx skills update
npx skills remove <skill-name>skills/
<skill-name>/ # flat: skills/my-skill/SKILL.md
SKILL.md # required: frontmatter + instructions
scripts/ # optional: executable helpers
references/ # optional: docs loaded on demand
evals/ # optional: test cases for the skill
assets/ # optional: templates, images, fonts
<category>/<skill-name>/ # or catalogued: skills/web-scraping/my-skill/SKILL.md
template/
SKILL.md.template # starting point for a new skill (not itself a skill)
scripts/ # repo tooling
The CLI discovers skills at exactly those two depths. Anything deeper is invisible without
--full-depth.
Two traps worth knowing if you fork this:
- There is deliberately no
SKILL.mdat the repository root. A shallowerSKILL.mdwins, so one there makes the CLI treat the whole repo as a single skill and hides everything underskills/. - The template is named
SKILL.md.template, notSKILL.md. Being outsideskills/is not enough to hide it — the CLI scans sibling directories too, and atemplate/SKILL.mdgets published as an installable placeholder skill.
mkdir -p skills/my-new-skill
cp template/SKILL.md.template skills/my-new-skill/SKILL.md
python3 scripts/validate_skills.pyThe name in the frontmatter must match the directory name. The description is the entire
triggering mechanism — it is the only part of a skill always resident in an agent's context, so it
has to say both what the skill does and the concrete phrases that should summon it. Agents
systematically under-trigger skills; a vague description is the usual reason.
python3 scripts/validate_skills.py # all skills
python3 scripts/validate_skills.py skills/my-new-skillNo dependencies required. Exits non-zero on any problem.
Installability and discoverability are different things, and only the first is automatic.
Push to a public GitHub repo and the skills are immediately installable by owner/repo — the CLI
reads GitHub directly, with no registry in between, no submission form and no approval queue.
Appearing in npx skills find or on the skills.sh leaderboard is separate, and is driven purely by
anonymous install telemetry from the CLI. Nothing in a repository changes that ranking; only real
installs do.
MIT