Skills move to skills/<name>/SKILL.md and the repo gains both manifests, so it is now a marketplace hosting exactly one plugin whose root is the repo root (source: "."). Claude Code installs it from git; no symlinks involved. Why: install.sh wired the library into every consuming repo as an ABSOLUTE symlink to $CHECKOUT_DIR. The checkout moved three times, most recently when local-dev@1966d5a dropped the embedded .skills/ copy, and nothing migrated the links — 243 dangling links across 12 repos, hidden from git by the **/.claude/skills/ ignore rule. Worse, ~/dev spans two path roots (/Users/mathias on the iCloud-shared Macs, /home/mathias on koala), so an absolute link stored there is broken on one side by construction. Re-running the installer cannot fix that; only removing the mechanism can. install.sh keeps the harnesses with no plugin system and drops from 42 links per harness to one directory link, via the convergent ~/.agents/skills convention that Pi and OpenCode both read: ~/.agents/skills -> $CHECKOUT_DIR/skills ~/.config/crush/skills -> ~/.agents/skills ~/.config/opencode/skills -> ~/.agents/skills wire_claude_repo is deleted outright rather than gated behind a flag — on a mixed-root fleet it cannot be made correct. Antigravity and Vibe targets go too; both unused. CHECKOUT_DIR keeps its host-local default deliberately: pointing it into ~/dev would put a git working tree inside iCloud with two concurrent writers. Taskfile drops five near-identical wiring loops (they had already drifted) and delegates to install.sh. `task check` gains frontmatter validation, a stray-root-entry gate, and manifest/tag version parity — the loose secret-hygiene.md sat unloadable for months because nothing checked layout. Verified: claude plugin validate . passes clean; a probe skill loaded as skills:zzprobe through --plugin-dir; task check green at 42 skills. Refs: #23 Bump-Type: minor Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BeAp5LTscnz2W7Ubt4eJ6m
1.8 KiB
1.8 KiB
Copilot CLI Tool Mapping
Skills use Claude Code tool names. When you encounter these in a skill, use your platform equivalent:
| Skill references | Copilot CLI equivalent |
|---|---|
Read (file reading) |
view |
Write (file creation) |
create |
Edit (file editing) |
edit |
Bash (run commands) |
bash |
Grep (search file content) |
grep |
Glob (search files by name) |
glob |
Skill tool (invoke a skill) |
skill |
WebFetch |
web_fetch |
Task tool (dispatch subagent) |
task with agent_type: "general-purpose" or "explore" |
Multiple Task calls (parallel) |
Multiple task calls |
| Task status/output | read_agent, list_agents |
TodoWrite (task tracking) |
sql with built-in todos table |
WebSearch |
No equivalent — use web_fetch with a search engine URL |
EnterPlanMode / ExitPlanMode |
No equivalent — stay in the main session |
Async shell sessions
Copilot CLI supports persistent async shell sessions, which have no direct Claude Code equivalent:
| Tool | Purpose |
|---|---|
bash with async: true |
Start a long-running command in the background |
write_bash |
Send input to a running async session |
read_bash |
Read output from an async session |
stop_bash |
Terminate an async session |
list_bash |
List all active shell sessions |
Additional Copilot CLI tools
| Tool | Purpose |
|---|---|
store_memory |
Persist facts about the codebase for future sessions |
report_intent |
Update the UI status line with current intent |
sql |
Query the session's SQLite database (todos, metadata) |
fetch_copilot_cli_documentation |
Look up Copilot CLI documentation |
GitHub MCP tools (github-mcp-server-*) |
Native GitHub API access (issues, PRs, code search) |