Loading...
Loading...
Create or update a skill in this repository the right way — canonical home in .agents/skills, internal-vs-public marking, symlink mirroring into .claude/skills, and public docs registration for product skills. Use whenever adding a new skill, converting a workflow into a skill, or when .claude/skills and .agents/skills look out of sync.
npx skill4agent add every-app/open-seo create-repo-skill.agents/skills/<kebab-name>/SKILL.mdmerge-readypapercutsnpx skills add every-app/open-seo.claude/skills/.agents/skills/.agents/skills/.claude/skills/.claudeprettier --check .skills-lock.jsonwebapp-testinganthropics/skillsskills.agents/skills/**AGENTS.mdmkdir .agents/skills/<kebab-name>SKILL.md---
name: <kebab-name> # must match the directory name
description: <what it does + explicit "use when ..." triggers>
metadata:
internal: true # ONLY for internal repo skills — omit for product skills
---metadata.internal: trueln -s ../../.agents/skills/<name> .claude/skills/<name>internal.claude/skillsweb/content/docs/skills/<name>.mdxcompetitor-analysis.mdxweb/content/docs/skills/index.mdweb/content/docs/skills/meta.json.agents/skills/seo-coach/SKILL.mdweb/src/lib/feature-pages.tsweb/content/docs/skills/setup.mdsrc/server/mcp/server.tspnpm format:write.agents/skillsopenseo-review-web-contentfor d in .claude/skills/*/; do n=$(basename "$d")
[ -L "${d%/}" ] || echo "DRIFT RISK — not a symlink: $n"
[ -e ".agents/skills/$n" ] || echo "BROKEN — no canonical source: $n"
done.agents/skills/<name>/.claude