@olegkoval/agent-skills
v1.11.0
Published
Agent-agnostic skill catalog for Codex, Claude, Cursor, and other skill-aware tools.
Downloads
2,593
Readme
Agent-agnostic skill collection for Codex, Claude, Cursor, and other skill-aware tools.
These skills are opinionated by design. They encode working defaults, preferred tools, and repeatable workflows instead of trying to be neutral snippets. Treat them as starting points with taste: useful out of the box, easy to inspect, and specific enough for an agent to execute consistently.
Structure
packages/— canonical skill packages organized by categorycatalog/— machine-readable inventorycollections/— grouped package bundlesscripts/— sync and validation helpers
Principles
- Keep one canonical skill package per workflow.
- Put agent-specific wrappers in
adapters/instead of duplicating the core skill. - Keep catalogs neutral and machine-readable.
- Add marketplace-specific metadata on top of the canonical package, not instead of it.
Quick Start
Install all package symlinks into your local Codex skills directory:
git clone https://github.com/oleg-koval/agent-skills.git
cd agent-skills
./scripts/install-codex-symlinks.shThen mention a lookup name in a new Codex session:
Use the olko:semantic-release-beta skill to add prereleases on a beta branch.The repository includes a generated Claude marketplace manifest at .claude-plugin/marketplace.json.
For marketplace installs:
/plugin marketplace add oleg-koval/agent-skillsThen install the catalog plugin:
/plugin install olko-agent-skills@olko-agent-skillsFor local development:
Clone the repo and point Claude Code at the plugin directory:
git clone https://github.com/oleg-koval/agent-skills.git
claude --plugin-dir /path/to/agent-skillsSee Publishing to Marketplaces below for full submission details.
The repository includes a generated Cursor plugin index at .cursor-plugin/index.json and per-package Cursor adapters under packages/*/*/adapters/cursor/.
For plugin marketplace:
Install from Cursor's extension marketplace using the published repository.
For a single project:
Copy the relevant SKILL.md or adapter content into .cursor/rules/, or reference the full package directory from your Cursor rules.
See Publishing to Marketplaces for registry submission.
Use the generated repository instructions and prompt files:
.github/copilot-instructions.md
.github/prompts/*.prompt.mdTo use in your GitHub workspace:
Copy .github/copilot-instructions.md to your repository and enable Copilot. It will automatically apply skill guidance.
To customize per-skill:
Use files from .github/prompts/*.prompt.md in your Copilot configuration.
See Publishing to Marketplaces for integration details.
The repository includes generated Windsurf Cascade Rules at .windsurf/rules/.
For a single project:
Copy the relevant .windsurf/rules/{skill-name}.md into your project's .windsurf/rules/ directory. Windsurf picks them up automatically as Cascade Rules.
For all skills at once:
git clone https://github.com/oleg-koval/agent-skills.git
cp agent-skills/.windsurf/rules/*.md /path/to/your/project/.windsurf/rules/Each rule file has a description frontmatter field that Windsurf displays in the rules panel.
The repository includes generated Kiro steering documents at .kiro/steering/.
For a single project:
Copy the relevant .kiro/steering/{skill-name}.md into your project's .kiro/steering/ directory.
For all skills at once:
git clone https://github.com/oleg-koval/agent-skills.git
cp agent-skills/.kiro/steering/*.md /path/to/your/project/.kiro/steering/Each steering doc uses inclusion: manual so Kiro only loads it when you explicitly reference it, keeping context lean.
Skills are plain Markdown. Use the canonical package file directly:
packages/{category}/{skill}/SKILL.mdAgent-specific wrappers live under:
packages/{category}/{skill}/adapters/All 19 Skills
These packages are the entry points. Each one is a structured workflow with concrete trigger conditions and execution steps. You can reference any skill directly by its olko:* lookup name.
Software development
| Skill | What It Does | Use When |
|-------|-------------|----------|
| docs-index-keeper | Keeps a Markdown docs index in sync through pre-commit, CI, or one-off maintenance flows | A repo has docs/ and needs docs/README.md or another Markdown index updated automatically |
| semantic-release-beta | Sets up semantic-release-npm-github-publish with stable main releases and beta prereleases | A Node package needs stable npm publishing plus beta prereleases from a beta branch |
| gh-cli | Guides GitHub CLI usage for repos, PRs, Actions, releases, issues, and related GitHub operations | Working with GitHub from the command line and needing reliable gh commands |
| git-commit | Creates conventional commits with diff-aware staging and message generation | The user asks to commit changes or wants a conventional commit message from the current diff |
| promptctl | Uses promptctl for reusable prompt templates, scoring, and workflow automation | A project needs prompt conventions, prompt review, prompt scoring, or reusable prompt workflows |
| product-builder | Builds a full-stack web app or SaaS product from a user description using production-oriented defaults | The user asks to build a complete app, SaaS, dashboard, or product rather than a prototype |
| cloudflare-block-countries | Blocks specific countries via Cloudflare WAF Custom Rules using the API | Geo-blocking traffic, setting up WAF country rules, or blocking regions across single or multiple zones |
| starter-rules | Loads and enforces hard rules for every oleg-koval/* starter | Ensuring 300-line files, E2E tests, pre-commit hooks, Vertical Slice architecture, and KISS/DRY/SOLID |
| open-source-publisher | Prepares an open-source repository for public publishing with branding, CI/CD, and release hygiene | Releasing a private project publicly with proper GitHub Pages, README, and social preview |
| obsidian-pr-sync | Fetches open GitHub PRs assigned to you or requesting review, and writes a grouped age-sorted section into today's Obsidian daily note | Syncing GitHub review queue to Obsidian at the start of the day or on demand |
| obsidian-task-rollover | Migrates unchecked tasks from today's Obsidian daily note to the next workday under ## Carried over, marking source tasks as [>] | End-of-day bullet-journal task migration, rolling unfinished work to the next workday |
| review-past-performance | Self-improvement loop: pulls 24h of ICM memories, git history, and skill analytics; detects repeated mistakes, slow workflows, and missing coverage; proposes 1-3 concrete fixes | Reviewing a day's coding sessions for patterns, wanting to codify a repeated workflow, or running a daily self-improvement loop |
Music
| Skill | What It Does | Use When | |-------|-------------|----------| | fill-music-player | Fills a portable music player with a curated random music selection while balancing formats, artists, albums, and capacity | Copying music from a NAS or local library to a Walkman, iPod, USB drive, or similar device |
Marketing
| Skill | What It Does | Use When | |-------|-------------|----------| | viral-launch | Sets up a project repository and launch plan for shareable marketing, public launch readiness, and growth loops | Preparing a repo, product, open-source package, waitlist, or creator tool for public launch | | search-console-indexing-audit | Audits Google Search Console Coverage exports against sitemap, robots, canonical, redirect, and noindex signals | Diagnosing GSC indexing issues such as redirects, canonical alternates, and discovered but not indexed pages |
Photography
| Skill | What It Does | Use When | |-------|-------------|----------| | gallery | Creates photo galleries with AI-assisted layout curation and sequencing | Building a gallery from photos or planning photo layout, sequencing, and curation |
How to use skills
Install the Codex symlinks, then mention a skill by its lookup name in a new agent session:
./scripts/install-codex-symlinks.shUse the olko:semantic-release-beta skill to add prereleases on a beta branch.Use the olko:gallery skill to build a photo gallery from this image folder.Use the olko:add-to-my-skills skill to copy a skill from another repo into this catalog, update the README, and push the change.Use the olko:viral-launch skill to make this project launch-ready.Each package has a canonical SKILL.md under packages/{category}/{skill}/. Agent-specific wrappers live under that package's adapters/ directory.
When adding or changing a skill:
- Update the canonical
SKILL.mdfirst. - Keep instructions concrete and operational.
- Add references only when the agent needs extra detail to execute the workflow.
- Update
catalog/skills.jsonif the skill name, category, description, path, tags, or adapters change. - Run local validation before publishing changes.
Root manifests
| Harness | File | Format |
|---------|------|--------|
| Claude Code | .claude-plugin/marketplace.json | Marketplace plugin registry |
| Claude Code | .claude-plugin/plugin.json | Plugin manifest |
| Cursor | .cursor-plugin/index.json | Plugin index |
| GitHub Copilot | .github/copilot-instructions.md | Repository instructions |
| GitHub Copilot | .github/prompts/*.prompt.md | Per-skill prompt files |
| Windsurf | .windsurf/rules/*.md | Cascade rules |
| Kiro | .kiro/steering/*.md | Steering documents |
All root manifests are generated from catalog/skills.json by ./scripts/build-adapters.sh.
How Skills Work
Every package follows a consistent anatomy:
packages/{category}/{skill}/
├── SKILL.md # Required canonical skill definition
├── references/ # Optional supporting material loaded only when needed
└── adapters/ # Agent-specific wrappers (all generated by build-adapters.sh)
├── codex/ # OpenAI Codex — README.md stub
├── claude/ # Claude Code — plugin.json + skills/SKILL.md copy
├── cursor/ # Cursor — plugin.json + skills/SKILL.md copy
├── windsurf/ # Windsurf — rules/{name}.md (Cascade Rules format)
└── kiro/ # Amazon Kiro — steering/{name}.md (steering doc format)Key design choices:
- Process over prose: skills are workflows agents follow, not generic reference essays.
- Progressive disclosure:
SKILL.mdis the entry point; supporting files load only when needed. - Adapter separation: Codex, Claude, Cursor, Copilot, Windsurf, and Kiro metadata wrap the canonical package instead of forking it.
- Verifiable changes: catalog and manifest changes should pass
./scripts/validate-catalog.sh.
See docs/skill-anatomy.md for the package format.
Project Structure
agent-skills/
├── packages/ # Canonical skill packages
│ ├── software-development/
│ │ ├── docs-index-keeper/
│ │ ├── semantic-release-beta/
│ │ ├── gh-cli/
│ │ ├── git-commit/
│ │ ├── promptctl/
│ │ └── product-builder/
│ ├── music/
│ │ └── fill-music-player/
│ ├── marketing/
│ │ └── viral-launch/
│ └── photography/
│ └── gallery/
├── catalog/ # Machine-readable package inventory
├── collections/ # Grouped package bundles
├── scripts/ # Build, validation, sync, and install helpers
├── .claude-plugin/ # Generated Claude marketplace manifest
├── .cursor-plugin/ # Generated Cursor plugin index
├── .github/prompts/ # Generated GitHub Copilot prompt files
├── .windsurf/rules/ # Generated Windsurf Cascade Rules
├── .kiro/steering/ # Generated Kiro steering documents
└── docs/ # Contributor and package format docsInstall and test
Codex
Install all canonical packages into your local Codex skills directory:
./scripts/install-codex-symlinks.shThis creates symlinks from the package catalog into ${CODEX_HOME:-~/.codex}/skills using the lookup format olko:{skill_name}.
To test a skill in a fresh Codex session, mention it explicitly:
Use the olko:docs-index-keeper skill to set up docs index automation in this repo.Use the olko:semantic-release-beta skill to add prereleases on a beta branch.Status: Stable — ready for daily use
Claude Code
The repository includes a generated marketplace manifest at .claude-plugin/marketplace.json and per-package Claude adapter stubs under packages/*/*/adapters/claude/.
Local development:
git clone https://github.com/oleg-koval/agent-skills.git
claude --plugin-dir /path/to/agent-skillsMarketplace installation:
See Publishing to Marketplaces → Claude Marketplace for submission and user installation instructions.
Status: Ready for marketplace — fully generated manifests, ready to publish
Cursor
The repository includes a generated plugin index at .cursor-plugin/index.json and per-package Cursor adapter stubs under packages/*/*/adapters/cursor/.
See Publishing to Marketplaces → Cursor Plugin Registry for submission instructions.
Status: Ready for marketplace — plugin index generated and ready to submit
GitHub Copilot
The repository includes generated repository instructions at .github/copilot-instructions.md and per-skill prompt files under .github/prompts/.
To use in your GitHub workspace, copy .github/copilot-instructions.md to your repository.
See Publishing to Marketplaces → GitHub Copilot for integration details.
Status: Ready to use — copy instructions to any GitHub repository
Source sync
./scripts/sync-from-sources.sh syncs package content only for catalog entries that explicitly define sourcePath. If no package has sourcePath, the script exits successfully and reports that there is nothing to sync.
Publishing to Marketplaces
Claude Marketplace
The repository includes a generated marketplace manifest at .claude-plugin/marketplace.json that is compatible with Claude Code's plugin system.
To submit to Claude marketplace:
Ensure the repository is public and contains this structure:
├── .claude-plugin/ │ └── marketplace.json # Generated from catalog/skills.json └── packages/ └── {category}/{skill}/ ├── SKILL.md # Required canonical definition └── adapters/ └── claude/ # Optional Claude-specific wrapperPush to GitHub with a public repository:
git push origin mainSubmit the repository URL to Claude's plugin marketplace:
- In Claude Code:
/plugin marketplace add oleg-koval/agent-skills - Or visit the Claude plugin marketplace and add
https://github.com/oleg-koval/agent-skills
- In Claude Code:
The marketplace will:
- Read
.claude-plugin/marketplace.jsonfor plugin metadata - Index all skills from
catalog/skills.json - Auto-register skills by their
namefield - Use
adapters: ["claude"]entries to provide Claude-specific hints
- Read
After publishing:
- Users install with:
/plugin install olko-agent-skills@olko-agent-skills - All 12 skills become available as
olko:*lookup names in Claude Code
Cursor Plugin Registry
Cursor plugin index is generated at .cursor-plugin/index.json.
To submit to Cursor:
Ensure Cursor plugin metadata is present:
.cursor-plugin/index.json(generated)packages/*/*/adapters/cursor/(optional Cursor-specific guidance)
Submit the repository to Cursor's plugin marketplace with the
.cursor-plugin/manifestUsers install from Cursor's extension marketplace and reference skills by lookup name
GitHub Copilot
Generated Copilot instructions are at .github/copilot-instructions.md and per-skill prompts under .github/prompts/.
To use in a GitHub workspace:
- Copy
.github/copilot-instructions.mdto your repository - Copilot reads this file automatically when enabled
- Per-skill prompts can be referenced or imported into custom Copilot configurations
Codex
Codex installation uses symlinks:
./scripts/install-codex-symlinks.shCodex looks up skills by olko:* lookup names from the installed symlink directories.
Local validation
Rebuild generated manifests:
./scripts/build-adapters.shValidate the neutral catalog and generated root manifests:
./scripts/validate-catalog.shRun both before pushing marketplace updates:
./scripts/build-adapters.sh && ./scripts/validate-catalog.shSmoke-tested workflows
The following package workflows have been smoke-tested locally before first push:
docs-index-keeper- installed from npm in a temporary git repo
- initialized hook generation with
npx docs-index-keeper init - updated
docs/README.mdfrom a staged Markdown file - passed
docs-index-keeper check
semantic-release-beta- configured a temporary git repo with
mainandbetabranches - used
semantic-release-npm-github-publishas the release preset - ran
semantic-release --dry-run --no-cionbeta - verified prerelease calculation to
1.0.0-beta.1
- configured a temporary git repo with
The semantic-release smoke test was intentionally self-contained and used a local bare git remote plus a valid file:// repository URL so dry-run behavior could be validated without real npm or GitHub publishing credentials.
Licensing notes
fill-music-playerincludes an MIT license and is safe to carry as-is in this repository.product-buildernow has an MIT license file added in the source repo clone and in this catalog package, matching the existing MIT claim in its README.
