Explore Context level impact during scoping - system boundaries, actors, cross-component interactions, and high-level concerns
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
defaults.mdContext is the eagle-eye introduction to your architecture. Two core jobs:
Position: ROOT (c3-0) | Parent: None | Children: All Containers
As the introduction:
Announce: "I'm using the c3-context-design skill to explore Context-level impact."
Reference: core-principle.md
Upper layer defines WHAT. Lower layer implements HOW.
At Context level:
Integrity rule: Containers cannot exist without being listed in Context.
Read .c3/settings.yaml and merge with defaults.md.
cat .c3/settings.yaml 2>/dev/null
Default litmus: "Would changing this require coordinating multiple containers or external parties?"
Context changes are rare. Most changes happen at Container or Component level.
Context-level triggers (ANY):
Delegate to Container if (ALL):
| Container | ID | Type | Responsibility (one sentence) |
|---|---|---|---|
| [Name] | c3-{N} | Code/Infra | [What it does] |
Context says: "These are the boxes" Container says: "Here's what's inside each box"
| From | To | Protocol | Purpose |
|---|---|---|---|
| c3-1 | c3-2 | [REST/Queue/etc] | [Why] |
Context says: "Container A talks to Container B via Protocol X" Container says: "Our IntegrationClient component implements that protocol"
cat .c3/README.md
Extract: Container inventory, protocols, actors, boundary
| Change Type | Impact | Action |
|---|---|---|
| New container | Create doc | Delegate to c3-container-design |
| Remove container | Remove doc | Audit affected protocols |
| New protocol | Both containers | Update both docs |
| Protocol change | All consumers/providers | Coordinate updates |
| Boundary change | All containers | Full audit |
<contract container="c3-{N}">
<protocol name="[name]" role="[consumer|provider]"/>
<boundary>
<can_access>[internal]</can_access>
<cannot_access>[external]</cannot_access>
</boundary>
</contract>
Containers: "What would be separately deployed? What has its own codebase?" Protocols: "How do containers talk? Sync or async? What's the contract?" Boundary: "What's inside vs external? What external systems integrate?" Actors: "Who initiates interactions? Humans? Other systems?"
A container relationship diagram is REQUIRED at Context level.
Why: A diagram communicates container relationships faster than tables. Reviewers can grasp the system in seconds.
flowchart LR
subgraph boundary["System Boundary"]
FE[Frontend]
BE[Backend]
DB[(Database)]
FE -->|REST| BE
BE -->|SQL| DB
end
User((User)) --> FE
BE -->|API| Stripe[Stripe]
BE -->|API| Resend[Resend]
Diagram must show:
Tables supplement the diagram for details, not replace it.
---
id: c3-0
title: [System Name] Overview
---
# [System Name] Overview
## Overview {#c3-0-overview}
[System purpose in 1-2 sentences]
## System Architecture {#c3-0-architecture}
[REQUIRED: Mermaid diagram showing all containers, external systems, and their relationships]
## Actors {#c3-0-actors}
| Actor | Type | Interacts Via |
|-------|------|---------------|
## Containers {#c3-0-containers}
| Container | ID | Archetype | Responsibility |
|-----------|-----|-----------|----------------|
## Container Interactions {#c3-0-interactions}
| From | To | Protocol | Purpose |
|------|-----|----------|---------|
Note: Use Container names (e.g., "Backend → Database"), NOT component IDs.
## Cross-Cutting Concerns {#c3-0-cross-cutting}
- **Auth:** [approach]
- **Logging:** [approach]
- **Errors:** [approach]
<context_exploration_result>
<changes>
<change type="[container|protocol|boundary|actor]">[description]</change>
</changes>
<downstream_impact>
<container id="c3-{N}" action="[update|create|remove]">
<reason>[what this container must do]</reason>
</container>
</downstream_impact>
<delegation>
<to_skill name="c3-container-design" container_ids="[c3-1, c3-2]"/>
</delegation>
</context_exploration_result>