Design and Build
Overview
This skill implements the Technical Solution (TS), Product Integration (PI), and Configuration Management (CM) process areas from the CMMI-based SDLC prescription.
Core principle: Architecture decisions require documentation (ADRs). Emergency shortcuts require retrospective documentation. "Best practice" is never justification - requirements are.
Reference: See docs/sdlc-prescription-cmmi-levels-2-4.md Section 3.2 for complete policy and practice definitions.
When to Use
Use this skill when:
-
Making architecture or design decisions (technology choice, patterns, structure)
-
Setting up build/integration systems (CI/CD, deployment pipelines)
-
Managing technical debt (tracking, prioritization, paydown)
-
Establishing configuration management (branching strategy, release process)
-
Facing "should we use X?" questions where X is trendy technology
-
Team experiencing git chaos, integration hell, or debt spiral
Do NOT use for:
-
Implementation details within existing architecture → Use domain-specific skills (python-engineering, web-backend)
-
Testing strategy → Use quality-assurance skill
-
Requirements or specification → Use requirements-lifecycle skill
Quick Reference
Situation Primary Reference Sheet Key Decision
"Should we use microservices?" Architecture & Design Requires ADR. Use decision framework: team size, domain complexity, ops maturity.
"Git workflow is chaos" Configuration Management Diagnose root cause first. GitFlow (L3 releases) vs GitHub Flow (continuous) vs Trunk (high maturity). Requires ADR.
"70% of time on bugs" Technical Debt Management CODE RED. Feature freeze, architectural audit, classify debt (architectural/tactical/unpayable).
"Setting up CI/CD" Build & Integration Requirements gathering first. Platform choice requires ADR. Start simple, add stages incrementally.
"Quick fix vs proper solution" Level 2→3→4 Scaling Level 3 requires retrospective ADR within 48 hours. Document as HOTFIX with paydown commitment.
Level-Based Governance
CRITICAL: This skill enforces governance based on project maturity level.
Level Detection
Check for project level in:
-
CLAUDE.md : CMMI Target Level: 3
-
User message: "This is a Level 3 project..."
-
Default if unspecified: Level 3
ADR Requirements by Level
Level ADR Required For Exception Protocol
Level 2 Major architecture decisions (platform choice, deployment strategy) Informal discussion OK, document decision in wiki/README
Level 3 ALL architectural decisions (tech stack, branching strategy, design patterns, CI/CD platform) Emergency HOTFIX: Retrospective ADR within 48 hours mandatory
Level 4 Everything in L3 + quantitative justification with metrics No exceptions - statistical baselines required
Emergency Exception Protocol (HOTFIX Pattern)
When: Production emergency, immediate fix needed, no time for full ADR process
Level 3 Requirements:
-
Fix the emergency (restore service)
-
Document the fix in issue tracker with "HOTFIX" label
-
Create retrospective ADR within 48 hours:
-
Incident timeline
-
Why proper fix wasn't feasible
-
Technical debt introduced
-
Paydown commitment with date (max 2 weeks)
-
Track paydown as high-priority ticket
Violation: Skipping retrospective ADR = governance failure. See Enforcement section below.
HOTFIX Frequency Limit: >5 HOTFIXes per month = systemic problem requiring architectural audit, not process exception.
What Counts as "Architectural Decision"? (Level 3)
Architectural decisions (ADR required):
-
Technology platform choice (language, framework, database, cache, message queue)
-
Branching strategy (GitFlow, GitHub Flow, trunk-based)
-
CI/CD platform (GitHub Actions, Azure Pipelines, Jenkins)
-
Deployment strategy (blue/green, canary, rolling)
-
Design patterns with broad impact (event-driven, microservices, monolith)
-
Module boundaries and interfaces (how system decomposes)
-
Authentication/authorization approach (OAuth, JWT, session-based)
-
Data storage strategy (SQL vs NoSQL, caching strategy, data partitioning)
Implementation details (no ADR required, track in code/PR):
-
Specific library choice within chosen framework (e.g., logging library in Python)
-
Variable/function naming conventions
-
Code organization within module (file structure)
-
Test framework choice (if it doesn't affect architecture)
Borderline decisions (when in doubt, write ADR):
-
If change affects >3 modules or files → ADR
-
If reversal would take >1 day → ADR
-
If future developers would ask "why did they choose this?" → ADR
Enforcement and Escalation
Level 3 Requirements:
-
Platform enforcement: Branch protection, CI gates, ADR linking
-
Process enforcement: ADR review before implementation, HOTFIX tracking
-
Metrics: % architectural changes with ADRs (target: 100%)
-
Violations escalate: Team lead → Engineering manager → Governance committee
For detailed enforcement mechanisms, escalation paths, and compliance metrics, see level-scaling.md .
Anti-Patterns and Red Flags
Resume-Driven Design
Detection: User says "I've heard X is best practice" or "Everyone uses Y"
Red Flags:
-
Technology mentioned before requirements
-
Appeal to popularity ("everyone uses microservices")
-
Buzzword bingo (serverless, Kubernetes, blockchain)
-
Can't articulate WHAT PROBLEM they're solving
Counter:
-
"What requirements drive this choice?"
-
"What alternatives exist?"
-
"Why is current approach inadequate?"
-
If they can't answer → "You're doing resume-driven design. Requirements first, technology second."
Forcing function: Require ADR with alternatives analysis. If they can't justify with measurable requirements, ADR review will reject it.
Architecture Astronaut
Detection: Over-engineered solution for simple problem
Red Flags:
-
Microservices for CRUD app
-
Service mesh for 2 services
-
Event sourcing for simple data model
-
"Future-proof" without concrete future requirements
Counter: "What's the SIMPLEST solution that meets requirements? Start there. Add complexity when demonstrated need exists, not hypothetically."
Cowboy Coding
Detection: No reviews, no standards, "works on my machine"
Red Flags:
-
Skipping pull requests
-
Force pushing to main
-
No CI/CD
-
"I'll add tests later"
Counter: Enforce basic CM practices. Level 2 minimum: branch protection, required PR reviews, CI runs on PRs.
Debt Spiral
Detection: Increasing % of time on bugs, velocity declining
Red Flags:
50% time on bugs = WARNING
60% time on bugs = CODE RED
-
Every feature breaks something else
-
Team morale declining
Counter: See Technical Debt Management reference sheet. CODE RED triggers feature freeze.
Reference Sheets
Load these on-demand for detailed guidance:
Reference Sheet When to Use Link
Architecture & Design Making technology choices, selecting patterns, designing system structure architecture-and-design.md
Implementation Standards Establishing coding standards, code review process, documentation requirements implementation-standards.md
Configuration Management Git chaos, branching strategy decisions, release management configuration-management.md
Build & Integration Setting up CI/CD, build optimization, deployment pipelines build-and-integration.md
Technical Debt Management Team spending >40% time on bugs, debt accumulating, velocity declining technical-debt-management.md
Level 2→3→4 Scaling Understanding what rigor is appropriate for your project tier level-scaling.md
Common Mistakes
Mistake Why It Fails Better Approach
"Emergency exempts process" Creates pattern where "urgent" = skip governance, accumulating undocumented debt Use HOTFIX pattern: retrospective ADR within 48 hours, mandatory
"I'll document it later" Later never comes, loses audit trail Document NOW (ADR takes 15 min) or schedule retrospective (48 hours max)
"This is too simple for ADR" Simple decisions have big impact, lose rationale for future If it's truly simple, ADR takes 10 min. If it takes longer, it wasn't simple.
"Everyone uses X, so we should" Resume-driven design, not requirements-driven Require measurable justification. "Everyone" is not a requirement.
"20% debt allocation" when 70% bugs Treats crisis as normal problem, ensures slow death
60% bugs = CODE RED. Feature freeze, not incremental paydown.
"Pick branching strategy" without diagnosis Treats symptom (conflicts) not cause (architecture? communication?) Root cause analysis FIRST. Git strategy is symptom, not disease.
Generic CI/CD template without context Wastes time on wrong solution Requirements gathering FIRST: build characteristics, deployment context, risk profile
Integration with Other Skills
When You're Doing Also Use For
Designing Python architecture axiom-python-engineering
Python-specific patterns and idioms
Designing web API axiom-web-backend
REST/GraphQL best practices
Making architecture decision governance-and-risk
Formal DAR process for critical choices
Setting up testing quality-assurance
Test strategy and coverage
Choosing platforms platform-integration
GitHub vs Azure DevOps specifics
Real-World Impact
Without this skill: Teams experience:
-
Undocumented architecture decisions that haunt future developers
-
Resume-driven design leading to over-engineered solutions
-
Git chaos with daily conflicts and lost work
-
Debt spirals consuming 70%+ of time
-
Emergency shortcuts becoming permanent anti-patterns
With this skill: Teams achieve:
-
Defensible audit trail through ADRs
-
Technology choices driven by requirements, not hype
-
Structured configuration management reducing conflicts by 80%+
-
Early crisis detection preventing debt spirals
-
Emergency protocols that maintain governance without blocking urgency
Next Steps
-
Determine project level: Check CLAUDE.md or ask user for CMMI target level (default: Level 3)
-
Identify situation: Use Quick Reference table to find relevant reference sheet
-
Load reference sheet: Read detailed guidance for specific domain
-
Enforce ADR requirements: Level 3 requires ADR for architectural decisions - no exceptions without HOTFIX protocol
-
Apply decision frameworks: Use systematic evaluation, not gut feelings or hype
-
Counter anti-patterns: Watch for resume-driven design, debt spirals, cowboy coding
-
Measure success: Establish baseline, set targets, schedule retrospectives
Remember: "Best practice" is never justification. Requirements are. If you can't articulate the requirement, you can't justify the architecture.