Symphony Component
When to use
- User asks to implement a named Symphony component
- User asks to build, add, or complete a specific component (e.g., "build the orchestrator", "add tracker client", "implement workspace manager")
When NOT to use
- Starting a brand-new project from scratch -> use Symphony Scaffold skill
- Auditing or checking conformance -> use Symphony Conformance skill
Steps
1. Read the component spec
Identify which of the 7 components is being requested and read its spec:
| Component |
Spec file |
| Workflow Loader |
docs/specs/workflow-loader.md |
| Config Layer |
docs/specs/config-layer.md |
| Issue Tracker Client |
docs/specs/tracker-client.md |
| Orchestrator |
docs/specs/orchestrator.md |
| Workspace Manager |
docs/specs/workspace-manager.md |
| Agent Runner |
docs/specs/agent-runner.md |
| Observability |
docs/specs/observability.md |
2. Read domain models
Read docs/specs/domain-models.md to understand the data structures the component operates on (Issue, Workspace, RunAttempt, RetryEntry, OrchestratorRuntimeState).
3. Check architecture layers and constraints
Read docs/architecture/LAYERS.md and docs/architecture/CONSTRAINTS.md before writing any code.
Determine which layer the component belongs to:
- Domain: pure data models and business rules, no external dependencies
- Application: Orchestrator, WorkspaceManager — coordinate domain objects via interfaces
- Infrastructure: LinearApiClient, FileSystem, Git, Logger — concrete external-system adapters
- Presentation: CLI entrypoint, HTTP handler
Ensure the implementation does not introduce any dependency direction violations.
4. Implement following clean architecture pattern
Read AGENTS.md § Conventions before writing any code.
Rules:
- Domain layer must not import from Application, Infrastructure, or Presentation
- Application layer accesses Infrastructure only through interfaces (dependency inversion)
- Infrastructure layer implements Domain interfaces; no business decisions
- No secrets in code — all credentials come from environment variables via Config Layer
- Validate external inputs at the boundary (issue body, API responses, env vars); trust internal objects
Use the stack-idiomatic patterns from docs/stacks/{stack}.md.
5. Write unit tests
Write tests alongside the implementation, not after. Coverage must include:
- Happy path
- Boundary conditions
- Error cases (e.g., missing config, Linear API failure, git command failure)
Place tests according to the stack's convention (co-located or in a tests/ directory).
6. Verify with lint and arch check
Run the project's validation script:
./scripts/harness/validate.sh
Fix all lint errors and architecture violations before finishing. Do not skip the check.
References
docs/specs/ — component interface specs and domain models
docs/architecture/LAYERS.md — dependency direction rules
docs/architecture/CONSTRAINTS.md — forbidden patterns
docs/architecture/enforcement/ — linter config per stack
docs/stacks/ — stack-specific implementation patterns
AGENTS.md — conventions, golden principles, required env vars
1---2name: symphony-component3description: Implements one of the 7 Symphony components (Workflow Loader, Config Layer, Tracker Client, Orchestrator, Workspace Manager, Agent Runner, Observability). Use when user asks to "implement [component name]", "build orchestrator", or "add tracker client".4---56# Symphony Component78## When to use910- User asks to implement a named Symphony component11- User asks to build, add, or complete a specific component (e.g., "build the orchestrator", "add tracker client", "implement workspace manager")1213## When NOT to use1415- Starting a brand-new project from scratch -> use Symphony Scaffold skill16- Auditing or checking conformance -> use Symphony Conformance skill1718## Steps1920### 1. Read the component spec2122Identify which of the 7 components is being requested and read its spec:2324| Component | Spec file |25|---|---|26| Workflow Loader | `docs/specs/workflow-loader.md` |27| Config Layer | `docs/specs/config-layer.md` |28| Issue Tracker Client | `docs/specs/tracker-client.md` |29| Orchestrator | `docs/specs/orchestrator.md` |30| Workspace Manager | `docs/specs/workspace-manager.md` |31| Agent Runner | `docs/specs/agent-runner.md` |32| Observability | `docs/specs/observability.md` |3334### 2. Read domain models3536Read `docs/specs/domain-models.md` to understand the data structures the component operates on (Issue, Workspace, RunAttempt, RetryEntry, OrchestratorRuntimeState).3738### 3. Check architecture layers and constraints3940Read `docs/architecture/LAYERS.md` and `docs/architecture/CONSTRAINTS.md` before writing any code.4142Determine which layer the component belongs to:43- Domain: pure data models and business rules, no external dependencies44- Application: Orchestrator, WorkspaceManager — coordinate domain objects via interfaces45- Infrastructure: LinearApiClient, FileSystem, Git, Logger — concrete external-system adapters46- Presentation: CLI entrypoint, HTTP handler4748Ensure the implementation does not introduce any dependency direction violations.4950### 4. Implement following clean architecture pattern5152Read `AGENTS.md` § Conventions before writing any code.5354Rules:55- Domain layer must not import from Application, Infrastructure, or Presentation56- Application layer accesses Infrastructure only through interfaces (dependency inversion)57- Infrastructure layer implements Domain interfaces; no business decisions58- No secrets in code — all credentials come from environment variables via Config Layer59- Validate external inputs at the boundary (issue body, API responses, env vars); trust internal objects6061Use the stack-idiomatic patterns from `docs/stacks/{stack}.md`.6263### 5. Write unit tests6465Write tests alongside the implementation, not after. Coverage must include:66- Happy path67- Boundary conditions68- Error cases (e.g., missing config, Linear API failure, git command failure)6970Place tests according to the stack's convention (co-located or in a `tests/` directory).7172### 6. Verify with lint and arch check7374Run the project's validation script:7576```bash77./scripts/harness/validate.sh78```7980Fix all lint errors and architecture violations before finishing. Do not skip the check.8182## References8384- `docs/specs/` — component interface specs and domain models85- `docs/architecture/LAYERS.md` — dependency direction rules86- `docs/architecture/CONSTRAINTS.md` — forbidden patterns87- `docs/architecture/enforcement/` — linter config per stack88- `docs/stacks/` — stack-specific implementation patterns89- `AGENTS.md` — conventions, golden principles, required env vars