Philosophy: Why Four Primitives?¶
BaseCoat uses four complementary primitives — agents, skills, instructions, and prompts — because each solves a different problem:
| Primitive | What it is | When it activates | Analogy |
|---|---|---|---|
| Agent | A persona with a workflow | When explicitly invoked | A specialist on your team |
| Skill | A knowledge pack with templates | When attached to a conversation | A reference manual |
| Instruction | A set of rules and standards | Always active (ambient) | Company policy |
| Prompt | A structured invocation template | When the user calls it by name | A meeting agenda |
How They Compose¶
- An agent (e.g.,
@backend-dev) defines who does the work and how they approach it. - A skill (e.g.,
backend-dev/) provides templates and knowledge the agent draws from. - An instruction (e.g.,
backend.instructions.md) enforces standards that apply regardless of who's working.
Example: When you invoke @backend-dev, it uses its paired backend-dev skill for
templates and follows backend.instructions.md + development.instructions.md +
governance.instructions.md for standards.
┌─────────────────────────────────────────────┐
│ User: @backend-dev build a REST API │
├─────────────────────────────────────────────┤
│ │
│ Agent ─── backend-dev.agent.md │
│ ├── Skill ─── skills/backend-dev/ │
│ │ ├── api-spec-template.md │
│ │ ├── service-template.md │
│ │ └── error-catalog-template.md │
│ └── Instructions (ambient) │
│ ├── development.instructions.md │
│ ├── backend.instructions.md │
│ └── governance.instructions.md │
│ │
└─────────────────────────────────────────────┘
Why Not Just Agents?¶
Agents alone can't enforce cross-cutting standards. Instructions are ambient — they apply to ALL agents and even raw Copilot chat. Without instructions, every agent would need to duplicate security rules, naming conventions, and quality gates.
Consider: you have 50 agents. A new security policy drops. With instructions, you update one file and every agent inherits it. With agents-only, you'd edit 28 files and hope you didn't miss one.
Why Not Just Instructions?¶
Instructions are rules, not workflows. They can tell an agent "always validate input" but they can't guide a multi-step code review, plan a sprint, or design an API schema.
Agents bring structured workflows that go beyond "follow these rules":
- Step-by-step processes with decision points
- Output format specifications
- Handoff protocols between agents
- Model selection for cost/quality trade-offs
Why Skills?¶
Skills bridge the gap between agents (workflow) and instructions (rules) by providing reusable knowledge artifacts — templates, checklists, decision trees.
Key properties of skills:
- Shareable — Multiple agents can reference the same skill. The
manual-test-strategyskill is used by three different agents. - Composable — An agent can draw from multiple skills in a single session.
- Declarative — Skills are documents, not code. They're easy to audit and version.
Without skills, templates would live inside agent definitions (bloating them) or in instructions (mixing policy with reference material).
The Router: Tying It Together¶
The /basecoat router skill sits on top, providing a single entry point. Users
don't need to know about the three primitives — they just say:
and the router loads the right agent, skill, and instructions automatically.
Two modes:
| Mode | Example | What happens |
|---|---|---|
| Discover | /basecoat |
Shows categorized agent catalog |
| Delegate | /basecoat backend build a REST API |
Routes to @backend-dev with prompt |
The router reads basecoat-metadata.json to resolve discipline keywords to agents,
attach paired skills, and validate that instructions exist — all before the agent
sees its first token.
What About Prompts?¶
Prompts are lightweight — they don't carry a workflow or enforce ambient rules. They're structured invocation templates: named shortcuts users call by name to kick off a repeatable task with the right context already loaded.
/sprint-plan ← prompt template, no agent persona
/basecoat ← router skill, delegates to an agent
@backend-dev ← agent, runs a full workflow
Prompts are the entry point when the task is simple enough that it doesn't need an agent's full workflow, but structured enough that you don't want users to rephrase it from scratch every time.
Summary¶
| Question | Answer |
|---|---|
| Who does the work? | Agent |
| What knowledge do they use? | Skill |
| What rules must everyone follow? | Instruction |
| How does the user kick it off? | Prompt |
| How does the user access it all? | /basecoat router |
Four primitives. One router. Zero ambiguity about where to put things.
Vocabulary¶
BaseCoat's name is grounded in a straightforward idea: every workspace needs a solid foundation before custom work is layered on top — a base coat. The product itself avoids paint-shop language; these are the terms we use:
| Term | Meaning |
|---|---|
| BaseCoat | The product. The shared Copilot configuration distributed to consumer repos. |
| Asset | Any individual file: an agent, skill, instruction, or prompt. |
| Overlay | The .github/base-coat/ directory and Copilot-discoverable paths that sync creates. |
| Adopt | Integrate BaseCoat into a repo for the first time (run bootstrap-basecoat.ps1). |
| Sync | Pull the latest BaseCoat assets into an already-adopted repo (run sync.ps1). |
| Consumer | A repository that has adopted the overlay. |
| Contributor | Someone who adds or improves assets in the BaseCoat source repo. |
| Drift | When a consumer's installed version lags behind the current BaseCoat release. |