A professional devcontainer feature for managing AI Agent configurations, prompts, and skills across development environments. Sync your .clinerules, MCP configs, custom prompts, and other AI agent settings from a centralized Git repository.
- Modular & Version-Controlled: Install via standard devcontainer features syntax
- Centralized Configuration: Clone and sync AI agent configs from any Git repository
- Automatic Symlinks: Automatically link config files to workspace and user directories
- Multi-Agent Support: Works with Claude CLI, Cline, Roo Code, and other AI agents
- Easy Updates: Built-in utilities to refresh configurations from remote repo
- Privacy-Friendly: Your config repo can be private (just configure authentication)
{
"name": "My Project",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/your-username/ai-agent-skills:1": {
"configRepoUrl": "https://github.com/your-username/my-ai-configs.git",
"configBranch": "main",
"enableSymlinks": true,
"syncMcpConfigs": true
}
}
}Create a repository with your AI agent configurations:
my-ai-configs/
├── .clinerules # Cline/Roo Code rules
├── .clauderc # Claude CLI configuration
├── prompts/ # Custom AI prompts
│ ├── code-review.md
│ ├── debugging.md
│ └── documentation.md
└── mcp-servers/ # MCP server configs
└── config.json
Your AI agent configurations will be automatically cloned and linked when the container is built.
| Option | Type | Default | Description |
|---|---|---|---|
configRepoUrl |
string | "" |
Git repository URL containing your AI configs |
targetPath |
string | /usr/local/share/ai-configs |
Container path for storing configs |
enableSymlinks |
boolean | true |
Auto-create symlinks to workspace |
configBranch |
string | main |
Branch to clone from config repo |
syncMcpConfigs |
boolean | true |
Sync MCP server configurations |
After installation, the following commands are available in your container:
Creates symbolic links from the config repository to your workspace directory.
setup-ai-configsThis command automatically runs when the container starts, but you can run it manually if needed.
Pull the latest configurations from your remote repository.
update-ai-configsUse this to refresh your AI configs without rebuilding the container.
The feature sets the following environment variables:
AI_SKILLS_PATH: Path to the cloned configuration repositoryAI_CONFIGS_REPO: URL of the configuration repository
{
"features": {
"ghcr.io/your-username/ai-agent-skills:1": {
"configRepoUrl": "https://github.com/your-org/ai-configs.git"
}
}
}{
"features": {
"ghcr.io/your-username/ai-agent-skills:1": {
"configRepoUrl": "git@github.com:your-org/private-ai-configs.git",
"configBranch": "production",
"targetPath": "/workspace/.ai-configs",
"enableSymlinks": true,
"syncMcpConfigs": true
}
},
"postCreateCommand": "setup-ai-configs"
}Your config repository can include configurations for multiple AI agents:
my-ai-configs/
├── .clinerules # For Cline/Roo Code
├── .clauderc # For Claude CLI
├── .cursor-rules # For Cursor AI
├── prompts/
│ ├── system/
│ │ ├── senior-engineer.md
│ │ └── code-reviewer.md
│ └── tasks/
│ ├── refactoring.md
│ └── testing.md
└── mcp-servers/
├── config.json
└── custom-tools/
To use a private Git repository, you need to configure authentication:
{
"features": {
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/your-username/ai-agent-skills:1": {
"configRepoUrl": "git@github.com:your-org/private-configs.git"
}
},
"mounts": [
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached"
]
}{
"features": {
"ghcr.io/your-username/ai-agent-skills:1": {
"configRepoUrl": "https://${localEnv:GITHUB_TOKEN}@github.com/your-org/private-configs.git"
}
}
}This feature works with:
- Claude Code (Official CLI)
- Cline (VS Code extension)
- Roo Code (VS Code extension)
- Cursor AI
- Aider
- Any agent that supports
.clinerules, MCP configs, or custom prompts
The feature automatically creates symlinks for common AI agent configuration files:
| Source File | Symlink Target | Purpose |
|---|---|---|
.clinerules |
${workspace}/.clinerules |
Cline/Roo Code rules |
.clauderc |
${workspace}/.clauderc |
Claude CLI config |
prompts/ |
${workspace}/.ai-prompts/ |
Custom prompt library |
mcp-configs/ |
~/.config/mcp/ |
MCP server configs |
To test the feature locally before publishing:
# Run the test script
./test/ai-agent-skills/test.sh
# Or test in a container
devcontainer features test \
--base-image mcr.microsoft.com/devcontainers/base:ubuntu \
--features ai-agent-skillsThe feature is automatically published to GitHub Container Registry when you push to the main branch:
- Push changes to
src/ai-agent-skills/ - GitHub Actions automatically builds and publishes
- Use the feature with version tag:
ghcr.io/your-username/ai-agent-skills:1
Update the version in src/ai-agent-skills/devcontainer-feature.json:
{
"version": "1.1.0"
}- Tag specific versions of your feature (
:1,:1.0.1) - Roll back to previous configurations if needed
- Maintain stable development environments
- Feature code can be public while config details remain private
- Support for SSH keys and authentication tokens
- Keep sensitive prompts and rules in private repos
- Share AI agent configurations across your team
- Maintain consistency in AI-assisted development
- Onboard new developers with pre-configured agents
- Reuse the same feature across multiple projects
- Customize per-project with different config branches
- Maintain organization-wide AI agent standards
Check that the repository URL is accessible:
git clone <your-config-repo-url>Manually run the setup command:
setup-ai-configsEnsure SSH keys or tokens are properly mounted and configured in your devcontainer.json.
Verify that your config repository has the mcp-servers/ directory structure.
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Test your changes
- Submit a pull request
Apache License 2.0 - See LICENSE for details.
- Devcontainer Features Specification
- Publishing Features to GHCR
- Claude Code Documentation
- MCP Protocol
For issues and questions:
- Open an issue on GitHub
- Check existing discussions
- Review the troubleshooting section above