Agent Pack Installer
Keeps your Copilot and Claude customizations in sync with one or more git repositories.
Point the extension at a repo (optionally a specific branch), and it installs the
agents, skills, prompts, instructions and chat modes it contains into your local
Copilot and Claude folders. Updates are a force checkout, never a pull or a
merge, so a repo can never land you in a conflict.
Commands
| Command |
What it does |
Agent Pack: Add Repository |
Asks for a clone URL and an optional branch, saves it, then syncs. |
Agent Pack: Remove Repository |
Removes a repo and deletes the files it installed. |
Agent Pack: Change Branch |
Picks a repo, lists its remote branches, switches to the chosen one and resyncs. Files only on the old branch are removed. |
Agent Pack: Sync Now |
Forces an immediate refresh of every enabled repo. |
Agent Pack: Show Log |
Opens the output channel with the sync history. |
Repository layout
Only the folders you actually use need to exist.
| Folder in the repo |
Installed to |
Read by |
skills/ |
~/.copilot/skills |
Copilot |
agents/ |
~/.copilot/agents |
Copilot custom agents |
instructions/ |
~/.copilot/instructions + VS Code prompts folder |
Copilot, Local agent |
rules/ |
~/.copilot/instructions |
Copilot |
commands/ |
~/.claude/commands |
Claude only (Copilot has no equivalent) |
prompts/ |
VS Code prompts folder |
Local agent only (deprecated) |
chatmodes/ |
VS Code prompts folder |
Local agent only (legacy) |
.github/…, .copilot/…, copilot/… with skills/, instructions/, agents/ |
matching ~/.copilot folder (instructions/ also to VS Code prompts) |
Copilot only |
.github/…, .copilot/…, copilot/… with prompts/, chatmodes/ |
VS Code prompts folder |
Local agent only |
.claude/…, claude/… with skills/, agents/, commands/, rules/ |
matching ~/.claude folder |
Claude only |
Folders at the repo root go to Copilot only (Copilot Chat also reads
~/.claude and ~/.agents, so installing to all of them showed duplicates).
To install for Claude, put the folders under .claude/ or claude/. Folders
under .github/, .copilot/ or .claude/ go only to that harness.
Subfolders are preserved, so skills/my-skill/SKILL.md lands as
~/.copilot/skills/my-skill/SKILL.md.
If your repo uses a different structure, add an agent-pack.json at its root
(the older copilot-pack.json name is still read):
{
"map": [
{ "from": "shared/agents", "to": ["vscodePrompts"] },
{ "from": "shared/skills", "to": ["copilotSkills", "claudeSkills"] }
]
}
Valid to values: copilotSkills, claudeSkills, agentSkills,
copilotInstructions, copilotAgents, claudeAgents, claudeCommands,
claudeRules, vscodePrompts.
How updating works
Each repo is cached under the extension's global storage. On every sync the cache
is brought to exactly match origin/<branch>:
git fetch --no-tags --prune --force origin <branch>
git checkout -f -B <branch> origin/<branch>
git reset --hard origin/<branch>
git clean -ffdx
Local edits inside the cache are discarded. Files that a repo installed
previously but no longer provides are deleted from the install targets — and
only files this extension wrote are ever deleted.
By default a sync runs when VS Code starts if the last one was more than 24 hours
ago, plus whenever you run Agent Pack: Sync Now.
Settings
| Setting |
Default |
Description |
agentPack.repositories |
[] |
Array of { url, branch, name, enabled }. Empty branch follows the repo's default branch. |
agentPack.autoUpdate |
true |
Refresh automatically once the interval has elapsed. |
agentPack.updateIntervalHours |
24 |
Hours between automatic refreshes. |
agentPack.targets |
all true |
Toggle the vscode, copilotCli, claude and agentsStandard install targets. |
agentPack.vscodePromptsPath |
auto |
Override the VS Code prompts folder. Needed for non-default profiles. |
agentPack.copilotHome |
~/.copilot |
Override the Copilot home folder. |
agentPack.claudeHome |
~/.claude |
Override the Claude home folder. |
agentPack.agentsHome |
~/.agents |
Override the harness-neutral Agent Skills home folder. |
Settings saved under the old copilotPack.* keys are copied to agentPack.*
automatically on first start, unless the new key is already set.
Notes and limitations
- Supported URL schemes:
https://, ssh://, git@host:path and file://.
ext:: and option-like URLs are rejected.
- Private repos must already be authenticated via your git credential helper.
Syncs run with
credential.interactive=never, so they fail with an error
rather than hanging on a prompt.
- Symlinks inside a repo are skipped rather than installed.
- Custom agents at user scope are read from the host folder
(
~/.copilot/agents, ~/.claude/agents), not from VS Code profile data. That
is why agents/ does not install into the VS Code prompts folder.
- Chat modes are legacy: rename
.chatmode.md files to .agent.md and move them
to agents/ so they reach Agent Host.
- Prompt files are deprecated for Agent Host and only load in the Local agent,
which is slated for removal. Prefer
skills/ for anything reusable.
- The VS Code prompts folder is detected from the running build. If you use a
custom profile, set
agentPack.vscodePromptsPath to
<userDataDir>/User/profiles/<id>/prompts. VS Code does not document this path
as public API, so treat it as a best-effort target.
~/.claude/commands is supported as a target but is a native Claude Code
location, not one documented by VS Code.
- If two repos provide the same file name in the same target, the one later in
agentPack.repositories wins.