cross-agent-skill-sync
Use this skill to manage already-installed skills across Claude Code, Codex, Gemini, OpenCode, OpenClaw, Cursor, Copilot, and other configured agent tools by comparing skill status and linking from configured source directories such as ~/.cc-switch/skills/ and ~/.agents/skills/. Trigger it in two major cases: first, when the user wants to sync, remove, repair, or align skills or agent skills across multiple agents; second, when the user does not yet know the current skill state and wants to inspect skill differences, missing skills, per-agent skill coverage, per-skill coverage, or decide what skill changes to make next. Use this skill when the topic is cross-agent skill or agent-skill management, not for general agent comparison, general model capability questions, or creating, editing, or installing skills from GitHub.
NPX Install
npx skill4agent add troyqu/skills cross-agent-skill-syncTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Cross-Agent Skill Sync
Hard boundaries
- Do not install new skills.
- Do not call ,
npx skills add,skills add, or any other installation workflow.git clone - Do not edit source skill contents.
- Do not use .
rm -rf - Only remove symlinks with , and only when the target is actually a symlink.
unlink - If a target path is a real directory or file, refuse to remove it and report the reason.
- Never execute changes before the user has confirmed the dry-run plan.
Core rule
- Explain how the workflow will proceed.
- Determine the action.
- Collect required selections in a fixed order.
- Stop at the first missing selection and ask only for that item.
- Do not continue until the user has answered that specific step.
- After all required inputs are complete, show a dry-run plan or a structured status summary.
- Apply changes only after explicit confirmation.
- End with a structured result summary.
- direct operation: the user already knows what they want to sync, remove, or repair
- status-first exploration: the user does not yet know the current skill state and wants to inspect skill differences before deciding what to do
inventorystatussyncremoveskillskillsagent skillagent skillsWhat to say first
I will handle this request in a fixed order:
1. Confirm the scope
2. If this is sync or status work, confirm the source
3. Confirm the skill selection
4. Confirm the target agents
5. Show you a dry-run plan or a status summary
6. Only execute after you confirmSupported actions
- : list available skills from selected sources
inventory - : show missing skills, linked state, external-source coverage, or sync coverage
status - : create or repair symlinks
sync - : unlink selected symlink targets
remove
- "I am not sure about the current skill state"
- "Show me the skill differences first"
- "I have not checked these agent skills in a while"
- "Analyze the agent skill state before I decide what to sync"
statusinventorysync- "I am not sure about these agents"
- "Compare these models"
- "Which agent performs better"
Config model
- User-level config default path:
~/.config/cross-agent-skill-sync/config.conf - Project-level config default path:
./.cross-agent-skill-sync.conf - Optional explicit override:
SKILL_SYNC_CONFIG=/path/to/config.conf
references/config.example.confSOURCE_<name>=/absolute/pathAGENT_<name>_USER=/absolute/pathAGENT_<name>_PROJECT=.relative/path/from/project/rootAGENT_<name>_EXTERNAL_SOURCES=source_a,source_b
AGENT_<name>_EXTERNAL_SOURCES~/.agents/skillscc-switchagents
claude-codecodexgeminiopencodeopenclawcursorcopilot
Missing config behavior
~/.config/cross-agent-skill-sync/config.conf./.cross-agent-skill-sync.conf- the file pointed to by , if present
SKILL_SYNC_CONFIG
- create a user-level default config
- create a project-level default config
- continue without creating one and use built-in defaults
Mandatory workflow
Step 0: Confirm action
inventorystatussyncremoveStep 1: Confirm scope
userprojectboth
Select a scope:
1. user
2. project
3. bothStep 2: Confirm source
remove- all configured sources
all
allStep 3: Confirm skill
- the concrete skill list from the selected sources
all
inventorystatussyncremoveallstatusinventoryStep 4: Confirm target agent
- all configured agents
all
allstatusStep 5: Resolve source conflicts
Step 6: Build the plan or status view
- : action, scope, source
inventory - : action, scope, source
status - : action, scope, source, skill, agent
sync - : action, scope, skill, agent
remove
bash scripts/sync_manager.sh inventory --sources cc-switch,agents --jsoninventoryplan-statusbash scripts/sync_manager.sh plan-status \
--sources cc-switch,agents \
--scope user \
--tools claude-code,codex \
--skills pdf,agent-browser \
--project-root "$PWD" \
--jsonbash scripts/sync_manager.sh plan-sync \
--sources cc-switch,agents \
--scope both \
--tools claude-code,cursor \
--skills pdf \
--project-root "$PWD" \
--source-choice pdf=cc-switch \
--output /tmp/skill-sync.plan \
--jsonbash scripts/sync_manager.sh plan-remove \
--scope project \
--tools cursor,codex \
--skills agent-browser \
--output /tmp/skill-remove.plan \
--project-root "$PWD" \
--jsonStep 7: Present the plan or status summary
- action
- scope
- sources when applicable
- skills
- agents
- source decisions for conflicts when applicable
- planned commands or effects
- skipped items and reasons
statusinventory- action
- scope
- sources
- inspected agents
- : which skills each agent is missing, linked, or externally covered by
Agent View - : which agents each key skill is present in, missing from, or covered externally by
Skill View - : most complete agent, biggest gap, or main pattern
Summary - : the most sensible next sync step if the user wants to continue
Next Suggestion
- treat it as available in status output
- do not count it as missing
- do not create a redundant link during sync
- if a redundant symlink already exists for the same externally loaded source, treat it as cleanup work instead of "correctly linked"
Step 8: Wait for confirmation
Step 9: Execute
bash scripts/sync_manager.sh apply --plan /tmp/skill-sync.plan --jsonInteraction rules
- Ask one step at a time.
- If scope is missing, ask only for scope.
- If the action is ,
inventory, orstatusand scope is known but source is missing, ask only for source.sync - If the action is and scope is known but skill is missing, ask only for skill.
remove - If the action is and source is known but skill is missing, ask only for skill.
sync - If the action is or
syncand skill is known but agent is missing, ask only for agent.remove - Do not batch unanswered questions together.
- Do not scan skills before source is confirmed.
- Do not ask for source during unless the user explicitly asks source-related diagnostic questions.
remove - Do not pick unless the user explicitly requested all.
all - If the user already provided a valid value, keep it and move to the next missing step.
- For broad or
statusrequests, scope and source are the main gates. After they are confirmed, you may inspect all relevant skills and agents unless the user asked for narrower filters.inventory - Whenever a list is shown, support both number-based replies and label-based replies.
Handling conflicts and missing items
- If a requested skill is in none of the selected sources, report it as unavailable.
- If a requested skill is in multiple selected sources, require a user choice.
- If the status output contains , use it for a gap-oriented answer.
missing_by_tool - If the status output contains , use it for a concise per-tool summary.
rows_by_tool - Report partial success honestly.
Result summary format
Action: sync
Scope: user
Sources: cc-switch
Skills: pdf, pptx
Agents: codex, cursor
Plan Summary
- create links: 4
- relink: 1
- covered by external source: 2
- skipped: 1
Result Summary
- linked successfully: 4
- relinked: 1
- cleaned redundant links: 1
- already correct: 2
- skipped: 1
Skipped Details
- cursor/pdf: target exists and is not a symlink
Next Notes
- no remaining conflicts
- no further confirmation neededinventorystatus- what was inspected
Agent ViewSkill View- summary conclusion
- what needs user attention next
References
references/path-model.mdreferences/operations.mdreferences/config.example.conf