What is an AI Agent Skill?
An AI Agent Skill is a package of instructions, context, and scripts that teaches an AI assistant (like Claude Code, OpenCode, or Cursor) how to perform a specific, complex task. Instead of typing a massive prompt every time you want the AI to do something, you create a Skill. Once installed, you just type/your-skill-name and the AI instantly knows exactly what to do, what scripts to run, and what format to output.
How to Build a Skill (Step-by-Step)
Step 1: Clone the Repository
Get the code onto your local machine by opening your terminal and running:Step 2: Create Your Skill Folder
All skills live inside theskills/ directory. Create a new folder for your skill using a short, descriptive name (use dashes, no spaces).
Step 3: Choose Your Architecture
You can build a Basic Skill (just instructions) or an Advanced Skill (instructions + code execution).Option A: The Basic Skill
A basic skill is perfect for simple prompt-based tasks. It only requires two files in your folder:Option B: The Advanced Skill (Highly Recommended)
Advanced skills are production-grade tools that use external scripts (Python/Node), local databases (SQLite), or complex reference materials. This is what makes OpenDirectory powerful. Look atskills/position-me in this repository for a real-world example.
Step 4: Write Your Files
1. TheSKILL.md File
This is the brain of your skill. It MUST start with YAML frontmatter, followed by the instructions you want to give the AI agent.
compatibility is the optional list of canonical CLI targets the skill has been tested and is supported on: claude, codex, opencode, gemini, anti-gravity, openclaw, and hermes. Omit the field only if the skill supports every target. When present, it must be a non-empty YAML list of those canonical targets; values are trimmed and matched case-insensitively, and aliases, unknown values, scalars, and non-string items fail validation. To add a target, implement and test that support, update this declaration, and submit it in a pull request.
2. The README.md File
This is the public face of your skill.
Important: Every skill’sREADME.mdMUST include installation steps, how to install via the script, prerequisites, and usage instructions. We have a helper script atscripts/update_skill_readmes.pythat automatically adds the standard install section (video tutorial + Claude Desktop steps) to all skill READMEs. Run it and verify each README looks correct. This is highly appreciated and helps users get started quickly.
Step 4.5: Add Skill Metadata (Required for Advanced Skills)
To register your skill in the CLI and place it in the correct category on the main README, we recommend adding apackage.json inside your skill’s root folder. If you don’t include one, the CI will auto-detect your skill’s category from its name and description. Do not manually edit the README.md table or packages/cli/registry.json these are auto-generated by our CI.
Create skills/your-skill-name/package.json:
Available Categories:
Pick the one that best fits your skill:Visual & MediaContentLaunchGTM IntelligenceOutreachResearchDeveloper Tools
- Pick a category name : Use
Title Case(e.g.,Analytics,DevOps,Security). Keep it short (1-3 words) and descriptive. - Set it in your
package.json: - Run the sync scripts (from the repo root):
The
update-readme.tsscript will automatically:- Detect your new category
- Render it as a new section at the end of the README table (categories appear alphabetically after the predefined list)
- Place your skill under it
- Verify the README table now has your new category section with your skill listed under it.
Note: The predefined categories listed above appear in a fixed order in the README. Custom categories are appended alphabetically after them. If you want your new category to appear in a specific position among the predefined ones, add it to theBefore committing, run the sync scripts locally to automatically update the docs:CATEGORY_ORDERarray inscripts/update-readme.ts.
Step 5: Test Your Skill Locally
Before submitting a Pull Request, verify that your skill compiles and installs correctly using our CLI tool. Run these commands from the rootopendirectory folder:
~/.config/opencode/skills/my-awesome-skill folder to ensure all your scripts and files were copied perfectly!
Step 6: Submit a Pull Request
- Commit your changes:
git add .->git commit -m "feat: add my-awesome-skill" - Push to your fork and open a Pull Request against the main repository.
- Security Scan: Our automated GitHub Actions will strictly scan your code for formatting and malware.
- AI Review: Greptile and GitHub Copilot are going to review your PR if something is off.
- Merge: If everything passes, a human maintainer will merge your PR, and your skill will instantly be published to NPM and the Claude Marketplace!
Looking for Inspiration? Build One of These!
If you want to contribute but aren’t sure what to build, pick one of these high-demand, advanced Go-To-Market (GTM) ideas. Our automation script tracks these, so once your PR is merged, the box will be checked automatically!-
gh-issue-to-demand-signal- Scans the open GitHub issues of a competitor’s public repo, clusters them by theme (missing features, bugs, UX complaints), and outputs a ranked “demand gap” report. Tells you exactly what their users are begging for — which is your product’s messaging brief. -
who-viewed-my-talk- Given a conference talk URL (YouTube/Luma/Sessionize), scrapes the comments, likes, and attendee list, cross-references speakers from the event’s speaker page, and outputs a warm lead list of people who watched your category of content. -
linkedin-hiring-intent-scanner- Searches LinkedIn job posts for roles that signal buying intent — e.g., “Head of Developer Relations”, “Growth Engineer”, “RevOps Manager” — at companies in a given funding stage or industry, and outputs a prioritized list with context on why each company is interesting right now. -
npm-downloads-to-leads- Takes a list of npm package names (yours or competitors’), pulls weekly download trends via the npm API, identifies packages with breakout velocity, and maps the maintainers to Twitter/GitHub profiles. Useful for finding evangelists before they’re famous. -
sdk-adoption-tracker- Given your SDK name, searches GitHub code search for public repos that import/require it, categorizes them by company/project type, and tracks week-over-week adoption velocity. Real signal of who’s building on you — often invisible until you look. -
noise-to-linkedin-carousel- Takes a raw voice note transcript, a rough idea dump, or a messy thread of thoughts, and restructures it into a polished LinkedIn carousel script — slide-by-slide, with a hook slide, 5-7 insight slides, and a CTA slide. Designed for founders who think out loud. -
oss-launch-kit- Given a GitHub repo URL, generates the full launch kit: a Show HN post, a Product Hunt description, 5 Reddit posts tailored to relevant subreddits, a Twitter thread, and a “first week” community engagement plan. Built specifically for open-source product launches. -
competitor-churner-finder- Monitors Twitter and Reddit for posts from people expressing frustration with a specific competitor tool (e.g., “switching away from X”, “X is broken again”), extracts their profiles, and drafts a timely, empathetic DM that offers your product as the alternative — without being creepy. -
ph-daily-radar- Hits the Product Hunt API every morning, filters launches by category, extracts the makers’ Twitter/LinkedIn, and sends you a digest of who launched in your category today — with a drafted “congrats” outreach for each maker. Relationship building on autopilot. -
domain-expired-opportunity-finder- Monitors daily expired domain lists, filters for domains that still have backlinks pointing to them (via public Ahrefs/Moz data), and flags ones in your niche that you could buy cheaply and redirect — one of the most underrated SEO plays, almost nobody automates the search. -
pricing-page-psychology-audit- Takes a SaaS pricing page URL and audits it against 12 known pricing psychology principles (anchoring, decoy effect, loss aversion framing, feature-vs-value naming, etc.). Outputs specific suggestions on how to reframe each tier. Pricing is the highest-leverage GTM lever and almost nobody stress-tests it. -
content-repurpose-queue- Looks at your last 30 pieces of content (tweets, blogs, LinkedIn posts), flags every one that got above-average engagement but was never repurposed, and generates a queue of 5 repurposing formats for each one. Most people create, post once, and forget. This treats content like an asset. -
github-discussion-to-devrel-content- Monitors GitHub Discussions on your own or a competitor’s repo, surfaces threads with 10+ replies or unresolved questions, and auto-drafts a short blog post or Twitter thread that answers each one — turning your community’s questions into SEO-indexed content. -
youtube-tutorial-comment-scraper- Scrapes comments on popular tutorial videos for competitor products, identifies frustrated users, extracts channel metadata, and finds business emails for outreach. -
app-store-review-arbitrage- Scrapes iOS and Android app store reviews for competitor applications, filters for low-star reviews mentioning specific missing features using Python NLP scripts, and generates targeted ad copy highlighting those exact features in your own product.

