Files
bw-copilot-resources/docs/architecture.md

2.2 KiB

Architecture

Overview

This repository is the canonical source of truth for shared Copilot resources. It separates reusable workflows from tool-specific adapters and keeps propagation Git-based after a resource is published.

Layers

  • resources/skills/: portable workflows for VS Code, Copilot CLI, and cloud agents
  • resources/prompts/: VS Code slash-command adapters
  • resources/instructions/: shared instruction packs
  • resources/agents/: shared custom agents for local chat and overlays
  • resources/hooks/: shared hook definitions
  • config/mcp/: tracked MCP templates and example machine-local overrides
  • install/merge-managed-mcp-config.mjs: managed MCP merge and prune logic for user config files
  • install/mcp/: wrapper scripts for MCP servers that need runtime adaptation
  • templates/repo-overlay/: files that can be copied into another repository for repository-scoped behavior

Discovery Model

Bootstrap prefers linking default discovery paths back to this repository:

  • ~/.copilot/skills -> resources/skills
  • ~/.copilot/agents -> resources/agents
  • ~/.copilot/instructions -> resources/instructions
  • ~/.copilot/hooks -> resources/hooks
  • VS Code user prompts directory -> resources/prompts

This keeps the repository authoritative while still using default discovery locations whenever possible.

For MCP, bootstrap uses generated user-level config instead of links:

  • VS Code user mcp.json
  • Copilot CLI user ~/.copilot/mcp-config.json

Those generated files come from tracked templates plus machine-local data in .local/mcp.local.jsonc.

Propagation Model

There are only two supported creation paths:

  • repo-first
  • local-first followed by publish-to-repo

Once a resource lands in the repository, commit and push it. Other systems pick it up through install/update.* or future scheduled sync.

Managed MCP propagation follows the same rule, but with a split between shared and local inputs:

  • Shared defaults and server definitions are tracked in the repo
  • Machine-local secrets and enablement stay in .local/
  • install/update.* pulls the repo and reruns bootstrap so the generated MCP files refresh from the latest templates on every machine