On the wave of my journey with AI coding agents, I am happy to announce AgentSync, an experimental .NET global tool designed to manage GitHub Copilot assets in a more structured way. If you work with custom agents, skills, prompts, and instructions, you probably know the pain points: duplicated files, missing dependencies, and different setups between repositories and user machines. AgentSync is available in agents-sync-tool GitHub repository. The repository includes source code, command documentation, catalog examples, and implementation notes.
Why this project is useful
Inspired by The Library Meta-Skill and by the idea of having a structured way to share agents, skills, and prompts across projects and teams, AgentSync was created to make that process repeatable and easier to maintain. AgentSync helps when you or your team needs a shared and controlled way to distribute Copilot customizations. Some key benefits:
- Catalog-first workflow with
catalog.jsonas source of truth - Install and sync operations for both repo scope and user scope
- Dependency-aware installs through typed
requiresreferences - Import workflow to migrate unmanaged assets into tracked state
- Push workflow to send managed local updates back to source
In short, it shifts asset sharing from manual copy-paste to explicit, auditable operations. If you like, you can think of it as a package manager for your Copilot agents, skills, prompts, and instructions: like NuGet organizes packages for .NET, here the catalog defines the packages, and AgentSync handles installation, updates, and tracking.
How it works
At high level, AgentSync follows this lifecycle:
- Load and validate
catalog.json. - Resolve platform and scope targets.
- Execute command workflows (
use,install,sync,import,add,remove,push). - Persist install-state to track managed assets over time.
This model separates desired state (catalog) from managed installed state, which is important for safe refresh and maintenance workflows.
Typical command surface:
AgentSync list: list catalog assets and their statusAgentSync search: search catalog with filtersAgentSync use: install an asset and its dependencies to target scopeAgentSync install: install all catalog assets to target scopeAgentSync sync: refresh tracked managed assetsAgentSync import: import unmanaged assets into tracked stateAgentSync add: add new assets to the catalogAgentSync remove: remove assets from the catalogAgentSync push: push local updates back to the source
How to organize a private catalog
You can organize your catalog however it makes sense for you and/or your team(s). Catalogs can be public or private, and can reference local paths or remote GitHub repositories as sources. A catalog is a Git repository. You can find a sample catalog on GitHub here: agents-catalog repository. Ideally, it starts simple and grows with time, by adding assets and organizing them in a way that makes sense for your use cases. A minimal catalog structure looks like this, but you can organize it differently as long as the catalog.json entries correctly reference the asset files:
agents-catalog/
catalog.json
agents/
agent-1.agent.md
agent-2.agent.md
skills/
skill-1.skill.md
skill-2.skill.md
prompts/
prompt-1.prompt.md
prompt-2.prompt.md
instructions/
instruction-1.instruction.md
instruction-2.instruction.md
You can find an example catalog.json in the sample catalog repository. The catalog.json file is the source of truth for the catalog and defines the assets, their types, sources, and dependencies. Each asset file (e.g., agent-1.agent.md) contains the actual content for that asset, following a specific markdown format depending on the type (agent, skill, prompt, instruction).
Quick start example
# List assets from your catalog
AgentSync list --catalog C:\Projects\agents-catalog --local .
# Install one asset and typed dependencies
AgentSync use agent-architect --type agent --catalog C:\Projects\agents-catalog --local .
# Refresh tracked managed assets
AgentSync sync --catalog C:\Projects\agents-catalog --local .
If you already have unmanaged content, start with import, then optionally use --add-unmapped to register discovered assets in catalog.json.
Next steps and contribution
AgentSync is currently in early stages, experimental and still evolving. Give it a try, feedback and contributions are very welcome on the agents-sync-tool GitHub repository. Please share your use cases, pain points, and any features you would find useful!