My Skills
Public, shareable agent skills for Codex, Claude Code, and other tools that follow the Agent Skills format.
This repository keeps the skill source in one neutral format and ships install wrappers for the agent-specific ecosystems:
skills/is the canonical source of each skill.plugins/codex/my-skills/is the Codex plugin bundle generated fromskills/.plugins/claude/my-skills/is the Claude Code plugin bundle generated fromskills/..agents/plugins/marketplace.jsonlets Codex add this repo as a plugin marketplace..claude-plugin/marketplace.jsonlets Claude Code add this repo as a plugin marketplace.bin/my-skills.mjsis a convenience installer for people who prefernpx.
Quick Install
Install the first published skill, cloudflare-domain-registration, as a direct user skill:
npx github:nachoal/my-skills install cloudflare-domain-registration --target both
npx github:nachoal/my-skills install keyword-research --target both
Install only for one agent:
npx github:nachoal/my-skills install cloudflare-domain-registration --target codex
npx github:nachoal/my-skills install cloudflare-domain-registration --target claude
npx github:nachoal/my-skills install keyword-research --target codex
npx github:nachoal/my-skills install keyword-research --target claude
Direct installs copy skills to:
- Codex:
~/.agents/skills/<skill-name> - Claude Code:
~/.claude/skills/<skill-name>
Plugin Install
Codex:
codex plugin marketplace add nachoal/my-skills --ref main
codex plugin add my-skills@my-skills
Claude Code:
claude plugin marketplace add nachoal/my-skills
claude plugin install my-skills@my-skills
/reload-plugins
Plugin skills are namespaced by the plugin:
- Claude Code:
/my-skills:cloudflare-domain-registration - Codex: use the plugin or skill picker after installing
my-skills.
Use The Cloudflare Skill
Set your Cloudflare credentials first:
export CLOUDFLARE_REGISTRAR_TOKEN="..."
export CLOUDFLARE_ACCOUNT_ID="..."
Then ask your agent for the registrar task you want:
Check whether example.com is available on Cloudflare Registrar and show the current price.
Register example.com on Cloudflare Registrar for 1 year with auto-renew and WHOIS privacy on.
Verify that example.com appears in my Cloudflare Registrar domain list.
Claude Code users can invoke the plugin skill explicitly:
/my-skills:cloudflare-domain-registration check whether example.com is available
If you cloned the repo and want to run the bundled helper directly:
python3 skills/cloudflare-domain-registration/scripts/cf_domain_registration.py check example.com
python3 skills/cloudflare-domain-registration/scripts/cf_domain_registration.py register example.com --dry-run
python3 skills/cloudflare-domain-registration/scripts/cf_domain_registration.py register example.com --yes
python3 skills/cloudflare-domain-registration/scripts/cf_domain_registration.py list --find example.com
Live purchases require --yes. Premium domains are refused unless the user explicitly approves premium pricing and the helper is rerun with --allow-premium.
Use The Keyword Research Skill
Set your DataForSEO credentials first:
export DATAFORSEO_LOGIN="..."
export DATAFORSEO_PASSWORD="..."
Then ask your agent for search-backed research:
Use keyword-research to validate search demand and competitors for missed-call automation in the US.
Use keyword-research to compare SEO opportunities for local business automation in Mexico Spanish.
Claude Code users can invoke the plugin skill explicitly:
/my-skills:keyword-research validate search demand for local SEO services
If you cloned the repo and want to run the bundled helper directly:
python3 skills/keyword-research/scripts/dataforseo_keyword_research.py keyword-overview \
--keywords "local seo services,seo automation" \
--location 2840 --language en --dry-run
python3 skills/keyword-research/scripts/dataforseo_keyword_research.py keyword-overview \
--keywords "local seo services,seo automation" \
--location 2840 --language en --yes
python3 skills/keyword-research/scripts/dataforseo_keyword_research.py serp-check \
--keywords "local seo services,seo automation" \
--depth 10 --yes
python3 skills/keyword-research/scripts/dataforseo_keyword_research.py competitors \
--target example.com --limit 20 --yes
python3 skills/keyword-research/scripts/dataforseo_keyword_research.py ranked-keywords \
--target example.com --limit 200 --yes
Live DataForSEO calls require --yes; --dry-run prints the request plan without credentials or spend. The skill intentionally does not auto-load machine-specific private env files; export credentials or pass --env-file.
Skills
| Skill | Category | Description |
|---|---|---|
cloudflare-domain-registration |
cloudflare |
Check availability and register domains through Cloudflare Registrar. |
keyword-research |
marketing |
Run DataForSEO-backed keyword, SERP, competitor, backlink, gap, and brief workflows. |
Secrets Policy
This repo must stay public-safe:
- Never commit
.env,.env-keys, access tokens, account IDs, contact IDs, real purchase transcripts, or private domains. - Keep examples generic, such as
example.com. - Use
.env.examplefor variable names only. - Run
npm run scan:secretsbefore publishing.
For the Cloudflare Registrar skill, users provide their own:
export CLOUDFLARE_REGISTRAR_TOKEN="..."
export CLOUDFLARE_ACCOUNT_ID="..."
The helper never prints token values.
For the Keyword Research skill, users provide their own:
export DATAFORSEO_LOGIN="..."
export DATAFORSEO_PASSWORD="..."
The helper requires --yes for live paid API calls and records DataForSEO-reported task cost in local JSON outputs.
Development
npm run list
npm run validate
npm run sync
npm run scan:secrets
npm pack --dry-run
After changing anything in skills/, run npm run sync so both plugin bundles match the canonical source.
Repo Shape
The neutral skill format is intentionally simple:
skills/<skill-name>/
SKILL.md
agents/openai.yaml
references/
scripts/
The agent-specific plugin wrappers are generated copies:
plugins/codex/my-skills/
.codex-plugin/plugin.json
skills/<skill-name>/
plugins/claude/my-skills/
.claude-plugin/plugin.json
skills/<skill-name>/
License
MIT
No comments yet
Be the first to share your take.