Loading...
Loading...
Curate, install, and manage Codex skills from the awesome-codex-skills collection for AI coding agents.
npx skill4agent add aradotso/codex-skills awesome-codex-skills-curatorSkill by ara.so — Codex Skills collection.
SKILL.md# Clone the repository
git clone https://github.com/ComposioHQ/awesome-codex-skills.git
cd awesome-codex-skills
# The skill installer is at skill-installer/scripts/install-skill-from-github.py
# It installs skills to $CODEX_HOME/skills (defaults to ~/.codex/skills)# Install a skill from the main repository
python skill-installer/scripts/install-skill-from-github.py \
--repo ComposioHQ/awesome-codex-skills \
--path meeting-notes-and-actions
# Install a skill from an external repository
python skill-installer/scripts/install-skill-from-github.py \
--repo yujiachen-y/codebase-recon-skill \
--path skills/codebase-recon \
--name codebase-recon
# Install from a different branch
python skill-installer/scripts/install-skill-from-github.py \
--repo ComposioHQ/awesome-codex-skills \
--path codebase-migrate \
--branch dev# Copy a skill folder directly to your Codex skills directory
cp -r ./spreadsheet-formula-helper ~/.codex/skills/
# Restart Codex to load the new skill
# The skill will be available based on its triggerspython skill-installer/scripts/install-skill-from-github.py [OPTIONS]--repo OWNER/NAME--path PATH--name NAME--branch BRANCH--skills-dir DIR# Set custom Codex home directory
export CODEX_HOME=~/my-codex-config
# Skills will be installed to $CODEX_HOME/skillsbrooks-lintcodebase-migratecodebase-recongh-fix-cisentry-triagemeeting-notes-and-actionsnotion-knowledge-captureissue-triagesupport-ticket-triageemail-draft-polishcontent-research-writerchangelog-generatorspreadsheet-formula-helperdatadog-logslead-research-assistantimport subprocess
import os
def install_meeting_notes_skill():
"""Install the meeting-notes-and-actions skill."""
repo = "ComposioHQ/awesome-codex-skills"
path = "meeting-notes-and-actions"
cmd = [
"python",
"skill-installer/scripts/install-skill-from-github.py",
"--repo", repo,
"--path", path
]
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode == 0:
print(f"✓ Skill installed to {os.environ.get('CODEX_HOME', '~/.codex')}/skills/{path}")
print("Restart Codex to load the skill.")
else:
print(f"✗ Installation failed: {result.stderr}")
return result.returncode == 0
# Usage
install_meeting_notes_skill()import subprocess
from typing import List, Tuple
def batch_install_skills(skills: List[Tuple[str, str]]):
"""
Install multiple skills from the awesome-codex-skills collection.
Args:
skills: List of (repo, path) tuples
"""
results = []
for repo, path in skills:
print(f"Installing {path} from {repo}...")
cmd = [
"python",
"skill-installer/scripts/install-skill-from-github.py",
"--repo", repo,
"--path", path
]
result = subprocess.run(cmd, capture_output=True, text=True)
success = result.returncode == 0
results.append({
"skill": path,
"success": success,
"output": result.stdout if success else result.stderr
})
status = "✓" if success else "✗"
print(f"{status} {path}")
return results
# Install a productivity suite
productivity_skills = [
("ComposioHQ/awesome-codex-skills", "meeting-notes-and-actions"),
("ComposioHQ/awesome-codex-skills", "issue-triage"),
("ComposioHQ/awesome-codex-skills", "email-draft-polish"),
]
results = batch_install_skills(productivity_skills)
print(f"\nInstalled {sum(r['success'] for r in results)}/{len(results)} skills")# Install brooks-lint from external repo
python skill-installer/scripts/install-skill-from-github.py \
--repo hyhmrright/brooks-lint \
--path skills/brooks-lint \
--name brooks-lint
# Install codebase-recon
python skill-installer/scripts/install-skill-from-github.py \
--repo yujiachen-y/codebase-recon-skill \
--path skills/codebase-recon \
--name codebase-recon
# Install unslop (removes AI writing patterns)
python skill-installer/scripts/install-skill-from-github.py \
--repo MohamedAbdallah-14/unslop \
--path skills/unslop \
--name unslopimport os
from pathlib import Path
def list_installed_skills():
"""List all installed Codex skills with their metadata."""
codex_home = os.environ.get("CODEX_HOME", os.path.expanduser("~/.codex"))
skills_dir = Path(codex_home) / "skills"
if not skills_dir.exists():
print(f"Skills directory not found: {skills_dir}")
return []
skills = []
for skill_path in skills_dir.iterdir():
if not skill_path.is_dir() or skill_path.name.startswith("."):
continue
skill_md = skill_path / "SKILL.md"
if not skill_md.exists():
continue
# Parse frontmatter for name and description
with open(skill_md, "r") as f:
content = f.read()
if content.startswith("---"):
frontmatter = content.split("---")[1]
name = None
description = None
for line in frontmatter.split("\n"):
if line.startswith("name:"):
name = line.split(":", 1)[1].strip()
elif line.startswith("description:"):
description = line.split(":", 1)[1].strip()
skills.append({
"path": skill_path.name,
"name": name,
"description": description
})
return skills
# Usage
skills = list_installed_skills()
for skill in skills:
print(f"• {skill['name']}: {skill['description']}")def install_category(category: str):
"""Install all skills from a specific category."""
categories = {
"dev-tools": [
"codebase-migrate",
"gh-fix-ci",
"sentry-triage",
"webapp-testing"
],
"productivity": [
"meeting-notes-and-actions",
"issue-triage",
"notion-knowledge-capture",
"support-ticket-triage"
],
"writing": [
"email-draft-polish",
"changelog-generator",
"content-research-writer"
]
}
if category not in categories:
print(f"Unknown category: {category}")
return
skills = [(f"ComposioHQ/awesome-codex-skills", path)
for path in categories[category]]
return batch_install_skills(skills)
# Install all productivity skills
install_category("productivity")# Install connect skill for app integrations
python skill-installer/scripts/install-skill-from-github.py \
--repo ComposioHQ/awesome-codex-skills \
--path connect
# Connect to apps (requires Composio CLI)
composio login
composio add slack
composio add github
composio add notion
# Now use skills that leverage these connections
# e.g., "send a Slack message summarizing the PR review"# Use a custom skills directory
export CODEX_HOME=/opt/codex-config
python skill-installer/scripts/install-skill-from-github.py \
--repo ComposioHQ/awesome-codex-skills \
--path meeting-notes-and-actions \
--skills-dir /opt/codex-config/skills
# Or specify directly in command
python skill-installer/scripts/install-skill-from-github.py \
--repo ComposioHQ/awesome-codex-skills \
--path issue-triage \
--skills-dir ~/my-project/.codex/skillsskill-name/
├── SKILL.md # Main skill definition
├── examples/ # Optional: example files
├── templates/ # Optional: templates
└── README.md # Optional: additional docs---
name: skill-name
description: One-line description of what the skill does
triggers:
- "phrase users might say"
- "another natural trigger"
- "install X"
---
# Skill Name
> Skill by [ara.so](https://ara.so) — Codex Skills collection.
[Detailed instructions, examples, patterns]# Check if skill is in the right location
ls -la ~/.codex/skills/
# Verify SKILL.md exists and has frontmatter
cat ~/.codex/skills/meeting-notes-and-actions/SKILL.md | head -n 10
# Restart Codex completely
# (Method varies by Codex implementation)# Check Python and git are available
import subprocess
def check_dependencies():
"""Verify installation dependencies."""
checks = {
"python": ["python", "--version"],
"git": ["git", "--version"]
}
for name, cmd in checks.items():
try:
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode == 0:
print(f"✓ {name}: {result.stdout.strip()}")
else:
print(f"✗ {name}: not working")
except FileNotFoundError:
print(f"✗ {name}: not found")
check_dependencies()# List all skills and check for duplicate names
find ~/.codex/skills -name "SKILL.md" -exec grep -H "^name:" {} \;
# Remove conflicting skill
rm -rf ~/.codex/skills/duplicate-skill-name
# Reinstall with custom name
python skill-installer/scripts/install-skill-from-github.py \
--repo ComposioHQ/awesome-codex-skills \
--path meeting-notes-and-actions \
--name meeting-notes-v2# Install from a local clone
git clone https://github.com/ComposioHQ/awesome-codex-skills.git /tmp/skills
cp -r /tmp/skills/meeting-notes-and-actions ~/.codex/skills/
# Or use a specific branch for stability
python skill-installer/scripts/install-skill-from-github.py \
--repo ComposioHQ/awesome-codex-skills \
--path meeting-notes-and-actions \
--branch stable~/.codex/skills/---
name: my-awesome-skill
description: Does something specific and useful
triggers:
- "do the thing"
- "help me with X"
---
# My Awesome Skill
> Skill by [ara.so](https://ara.so) — Codex Skills collection.
[Your skill documentation here]# awesome-codex-skills works with Bernstein for parallel agents
git clone https://github.com/chernistry/bernstein
cd bernstein
# Skills are available to all agents in isolated worktrees# Skills work across AI coding agents
# Install to shared location or symlink
ln -s ~/.codex/skills ~/cursor/skills
ln -s ~/.codex/skills ~/claude/skills