Explore Component level impact during scoping - implementation details, configuration, dependencies, and technical specifics
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.mdComponent is the leaf layer - it inherits all constraints from above and implements actual behavior.
Position: LEAF (c3-{N}{NN}) | Parent: Container (c3-{N}) | Grandparent: Context (c3-0)
As the leaf:
Announce: "I'm using the c3-component-design skill to explore Component-level impact."
Reference: core-principle.md
Upper layer defines WHAT. Lower layer implements HOW.
At Component level:
Integrity rules:
Read .c3/settings.yaml and merge with defaults.md.
cat .c3/settings.yaml 2>/dev/null
Default litmus: "Could a developer implement this from the documentation?"
BEFORE proceeding, verify integrity with parent Container.
# 1. Load parent Container
cat .c3/c3-{N}-*/README.md
# 2. Check this component is listed
grep "c3-{N}{NN}" .c3/c3-{N}-*/README.md
Integrity requirements:
| Check | Pass | Fail |
|---|---|---|
| Component listed in Container inventory | Proceed | STOP - add to Container first |
| Component responsibility matches | Proceed | STOP - align with Container |
| Container archetype identified | Proceed | Ask: "What's the relationship to content?" |
If component not in Container: This is a Container-level change. Escalate to c3-container-design to add the component to Container first, then return here.
Reference: container-archetypes.md
The parent Container's archetype shapes what this component documents:
| Container Archetype | Component Documents |
|---|---|
| Service | Processing flows, business logic, orchestration |
| Data | Structure details, query patterns, migration steps |
| Boundary | Integration mechanics, API mapping, resilience |
| Platform | Operational procedures, configs, runbooks |
Ask: "What is my parent Container's relationship to content?" Then document HOW this component fulfills its part of that relationship.
Component-level indicators (ALL must be true):
Escalate to Container if (ANY):
Common "looks like Component, but isn't":
ALWAYS START HERE.
cat .c3/README.md # Context constraints
find .c3 -name "c3-{N}-*" -type d | head -1 | xargs -I {} cat {}/README.md # Container constraints
Extract inheritance chain:
| Source | What to Extract |
|---|---|
| Context | Boundary, cross-cutting patterns |
| Container | Technology, patterns, interface contract |
Escalation triggers: boundary violation, cross-cutting deviation, tech constraint violation, pattern deviation, interface change
The Container defines WHAT this component does. Component docs explain HOW.
Find the contract:
# Read Container doc to find this component's responsibility
cat .c3/c3-{N}-*/README.md | grep -A5 "c3-{N}{NN}"
Extract from Container:
This contract is what the Component doc must explain HOW to implement.
find .c3/c3-{N}-* -name "c3-{N}{NN}-*.md" 2>/dev/null | head -1 | xargs cat 2>/dev/null
Code exploration checklist:
| Check | Question | If Yes |
|---|---|---|
| Breaks interface? | Does Container need to know? | Escalate |
| Breaks patterns? | Does it deviate from Container's patterns? | Escalate |
| Needs new tech? | Outside Container's tech stack? | Escalate |
| Affects siblings? | Multiple components same way? | Escalate |
| Affects boundary? | Outside system boundary? | Escalate (Context) |
| Contained? | Just implementation details? | Proceed |
| Belongs in Component Doc | Belongs in .c3/references/ |
|---|---|
| Processing flow (diagram) | API schemas/contracts |
| Decision points (what, why) | Code examples |
| Dependencies (what it calls) | Configuration samples |
| Edge cases (behavior) | Library usage patterns |
| Error handling (strategy) | Integration guides |
Rule: If it's code or would change when code refactors, put it in .c3/references/.
Every component SHOULD have a flow diagram.
flowchart TD
A[Input] --> B{Decision?}
B -->|Yes| C[Action A]
B -->|No| D[Action B]
C --> E[Output]
D --> E
Diagrams communicate:
Text supplements diagrams, not replaces them.
---
id: c3-{N}{NN}
title: [Component Name]
type: component
parent: c3-{N}
---
# [Component Name]
## Contract
From Container (c3-{N}): "[responsibility from parent container]"
## How It Works
### Flow
[REQUIRED: Mermaid diagram showing processing steps and decisions]
### Dependencies
| Dependency | Container | Purpose |
|------------|-----------|---------|
### Decision Points
| Decision | Condition | Outcome |
|----------|-----------|---------|
## Edge Cases
| Scenario | Behavior | Rationale |
|----------|----------|-----------|
## Error Handling
| Error | Detection | Recovery |
|-------|-----------|----------|
## References
- [Link to .c3/references/ if detailed implementation docs exist]
# UserService
## Contract
From Container: "Handles user registration, authentication, and profile management"
## How It Works
### Main Flow (Registration)
```mermaid
flowchart TD
A[Receive request] --> B{Valid input?}
B -->|No| C[Return validation error]
B -->|Yes| D{User exists?}
D -->|Yes| E[Return duplicate error]
D -->|No| F[Create user]
F --> G[Send welcome email]
G --> H[Return success]
```
### Dependencies
| Dependency | Purpose | When Called |
|------------|---------|-------------|
| DBAdapter | Persist user data | After validation |
| EmailService | Send notifications | After creation |
### Decision Points
| Decision | Condition | Outcome |
|----------|-----------|---------|
| Skip email | Test environment | Don't send |
| Hash algorithm | Password length | bcrypt vs argon2 |
## Edge Cases
| Scenario | Behavior | Rationale |
|----------|----------|-----------|
| Duplicate email | Reject with specific error | Prevent enumeration |
| Very long name | Truncate to 255 chars | DB constraint |
## Error Handling
| Error | Detection | Recovery |
|-------|-----------|----------|
| DB connection lost | Timeout after 5s | Retry 3x with backoff |
| Email service down | Circuit breaker open | Queue for later |
First, confirm integrity:
Then, by container archetype:
For components in Service containers:
For components in Data containers:
For components in Boundary containers:
For components in Platform containers:
To understand edge cases (all archetypes):
<component_exploration_result component="c3-{N}{NN}">
<inherited_verification>
<container_constraints honored="[yes|no]"/>
<context_constraints honored="[yes|no]"/>
<escalation_needed>[yes|no]</escalation_needed>
</inherited_verification>
<changes>
<change type="[config|behavior|dependency]">[description]</change>
<contained>[yes|no]</contained>
</changes>
<sibling_impact>
<component id="c3-{N}{MM}" impact="[none|needs_update]"/>
</sibling_impact>
<delegation>
<to_skill name="c3-container-design" if="[escalation needed]"/>
</delegation>
</component_exploration_result>