Use when skill copies drift across repositories or agent globals and you need canonicalization, drift auditing, and safe synchronization across local and global skills directories.
Standardizes and unifies skills across canonical, global, and local mirrors.
Use this skill when you see recurring problems like:
SKILL.md behaviorThis skill provides a deterministic workflow:
Default policy:
skills/ is canonical when discoverable.~/.agents/skills~/.codex/skills~/.claude/skills~/.claude/plugins/cache) are excluded by default.If no canonical repo is discoverable from current working directory, operate in global/local audit mode and avoid canonical overwrite actions.
Default local policy is prefer-global-link:
Default global policy is prefer-primary-link:
~/.agents/skills by default).~/.codex/skills, ~/.claude/skills) as symlinks to that primary copy.--global-policy mirror-copy when fully independent per-global copies are required.Codex/Agents dedupe guard (enabled by default):
--codex-agents-dedupe keeps ~/.agents/skills authoritative for Codex-facing catalogs.~/.codex/skills/<skill> is relinked to ~/.agents/skills/<skill> to avoid duplicate entries in Codex dropdowns.--no-codex-agents-dedupe only if you explicitly need separate Codex copies.Preferred global precedence:
~/.agents/skills~/.codex/skills~/.claude/skillsDeprecated skill names can be mapped to canonical replacements.
Current built-in mapping:
json-canvas -> obsidian-canvasimagegen -> gpt-imagenWhen a deprecated skill name is found:
Run from anywhere; scripts auto-discover repo root when possible.
scripts/discover.py
scripts/audit.py
--skill <name> to limit planning to one skill; repeat for multiple skills.0 no drift, 2 drift found (one or more actions planned), 1 error.--ignore-dir <name> to treat a directory as a non-skill support dir; repeat for multiple names.scripts/sync.py
--skill <name> to apply only the selected skill's planned changes.--ignore-dir <name> as with audit.py.--apply to execute.A directory inside a skills root that has no SKILL.md is normally reported as
INVALID_SKILL_DIR — or as DANGLING_SKILL_LINK when the entry is a symlink
whose target no longer exists, since that is repaired by recreating the link
rather than by authoring a file. Three kinds are exempt:
skills/_fragments) — the convention for support
directories this repo owns. Preferred for anything you control.KNOWN_NON_SKILL_DIRS in
scripts/skill_standardizer_lib.py, keyed by root kind so an exemption cannot
leak into a root it was not meant for. codex-primary-runtime in
~/.codex/skills is exempt this way: Codex owns that path, so it cannot be
renamed to the underscore convention.--ignore-dir <name> — ad-hoc, for a directory you cannot rename and that
is not worth a built-in entry.Add a built-in entry when a directory is permanent and tool-owned; use the flag otherwise.
python3 <skill-dir>/scripts/discover.py
python3 <skill-dir>/scripts/audit.py \
--global-policy prefer-primary-link \
--format text
Optional JSON report:
python3 <skill-dir>/scripts/audit.py \
--format json \
--report-out /tmp/skill-drift-report.json
python3 <skill-dir>/scripts/sync.py \
--global-policy prefer-primary-link \
--apply
python3 <skill-dir>/scripts/audit.py \
--global-policy prefer-primary-link \
--format text
When a skill appears multiple times in a client catalog, normalize globals to primary+links:
python3 <skill-dir>/scripts/sync.py \
--global-policy prefer-primary-link \
--enforce-mirror \
--apply
For targeted fixes, scope the operation to the affected skill:
python3 <skill-dir>/scripts/sync.py \
--skill api-design \
--global-policy prefer-primary-link \
--enforce-mirror \
--apply
--skill is repeatable. In selected-skill mode, audits and sync plans hide unrelated invalid directories and unrelated canonical skills. Deprecated aliases remain in scope when either the alias or replacement is selected.
Use --only-existing to restrict canonical sync to skills already installed in target roots. This prevents adding new skills that happen to exist in the canonical repo but were never installed globally.
python3 <skill-dir>/scripts/sync.py \
--only-existing \
--global-policy prefer-primary-link \
--apply
Use --normalize-primary to promote concrete skills from secondary globals (~/.codex/skills, ~/.claude/skills) to the primary global root (~/.agents/skills) and replace the secondary copies with symlinks. This is useful when skills were originally installed in a secondary root and need to be consolidated.
python3 <skill-dir>/scripts/sync.py \
--normalize-primary \
--global-policy prefer-primary-link \
--apply
Keep core policy and decision logic model-agnostic in SKILL.md and scripts.
Platform-specific command syntax or orchestration belongs in optional wrappers or references.
See references/policy.md for policy details and tradeoffs.
0 (no drift remaining). Remaining warning-level
issues about non-skill directories are informational and do not fail this check.Part of the skill-management toolchain (maintenance).
skill-installer — common upstream. Use this skill after installing across multiple agent homes to consolidate copies.skill-evals — run after sync to confirm copies still pass the contract.find-skills — discovery. Orthogonal to drift management.npx skills add davisbuilds/skill-standardizer下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer