Implement GitOps workflows with ArgoCD and Flux for automated, declarative Kubernetes...
npx skills add ryanthedev/code-foundations --skill "cc-integration-practices"
Install specific skill from multi-skill repository
# Description
Audit integration strategy and daily build processes (CHECKER) or select optimal integration approach and configure CI/CD (APPLIER). Use when integrating components, planning integration order, setting up build processes, or diagnosing integration failures. Triggers on: integration hell, late-stage defects, unclear integration order, no daily build, broken builds, Big Bang integration, smoke test stale. Produce integration strategy recommendations, build process configuration, 13-item checklist assessment with severity ratings.
# SKILL.md
name: cc-integration-practices
description: "Audit integration strategy and daily build processes (CHECKER) or select optimal integration approach and configure CI/CD (APPLIER). Use when integrating components, planning integration order, setting up build processes, or diagnosing integration failures. Triggers on: integration hell, late-stage defects, unclear integration order, no daily build, broken builds, Big Bang integration, smoke test stale. Produce integration strategy recommendations, build process configuration, 13-item checklist assessment with severity ratings."
Skill: cc-integration-practices
STOP - Integration Rules
- Never Big Bang integration - Add components one at a time
- Fix broken builds immediately - Within 1 hour; stop all other work
- Daily build is MINIMUM - Not a ceiling; modern CI/CD goes faster
Quick Reference
| Threshold/Rule | Value | Source |
|---|---|---|
| Interface errors | 39% of all errors | Basili and Perricone 1984 |
| Debugging time | Up to 50% of development | CC2 p.689 |
| Daily build adoption | Only 20-25% of projects | Cusumano et al. 2003 |
| Check-in frequency | No more than 2 days without | CC2 p.703 |
| Build fix priority | Immediately; stop all other work | CC2 p.704 |
Key Principles:
- Integrate incrementally, not all at once (Big Bang)
- Each integration step must produce a working system
- Build daily, test with smoke test
- Fix broken builds immediately
Key Definitions
- Smoke test: Small (<15 tests), fast (<5 min), automated end-to-end sanity check. NOT a full test suite.
- Working system: Compiles without errors, existing tests pass, smoke test passes.
- Immediately: Within 1 hour; escalate if blocked. Revert counts as a fix.
- Daily build: Main branch builds successfully at least once per calendar day.
Core Patterns
Big Bang -> Incremental Integration
// BEFORE: Big Bang Integration [ANTI-PATTERN]
Phase 1: Develop all units separately
Phase 2: Combine everything at once
Phase 3: "System dis-integration" - debug the mess
Result: All problems surface at once, interact, mask each other
// AFTER: Incremental Integration
Step 1: Integrate component A, test
Step 2: Add component B, test combination
Step 3: Add component C, test combination
...continue until complete
Result: Each problem isolated to most recent addition
No Build Process -> Daily Build + Smoke Test
// BEFORE: Ad-hoc Builds [ANTI-PATTERN]
- Build when "ready" (days or weeks apart)
- No automated verification
- "Works on my machine" syndrome
- Integration problems accumulate undetected
// AFTER: Daily Build + Smoke Test
- Automatic compile/link/combine every day
- Smoke test runs end-to-end verification
- Broken build = immediate fix priority
- Problems caught within 24 hours of introduction
Architecture-Ignorant -> Strategy-Aligned Integration
// BEFORE: Bottom-Up Driven by Convenience [ANTI-PATTERN]
- Start with whatever is "ready"
- Let low-level code drive high-level design
- Contradicts information hiding
- High-level must adapt to low-level decisions
// AFTER: Strategy-Aligned Integration
- Choose strategy based on project needs
- High-level drives low-level (top-down), OR
- Risk-critical components first, OR
- Feature-oriented slices, OR
- T-shaped vertical slice to verify architecture
Modes
CHECKER
Purpose: Execute integration strategy and daily build checklists
Triggers:
- "review our integration approach"
- "check our build process"
- "assess integration readiness"
Non-Triggers:
- "which integration strategy should we use" -> APPLIER
- "set up daily builds" -> APPLIER
Checklist: See checklists.md
Output Format:
| Item | Status | Evidence | Location |
|------|--------|----------|----------|
Severity:
- VIOLATION: Big Bang integration, no daily build, stale smoke test
- WARNING: Infrequent builds, incomplete smoke test
- PASS: Meets integration and build requirements
APPLIER
Purpose: Select integration strategy and establish daily build process
Triggers:
- "plan integration strategy"
- "how should we integrate these components"
- "set up our build process"
- "which integration order"
Non-Triggers:
- "review our current integration" -> CHECKER
Integration Strategy Selection
Evaluate in sequence. Stop at first YES - that determines your strategy.
1. Is there high architectural risk or uncertainty?
(>3 external integrations, unproven tech, novel patterns)
YES -> T-Shaped Integration (vertical slice to verify architecture early)
NO -> Continue
2. Are there clear high-risk components?
YES -> Risk-Oriented Integration (hardest parts first)
NO -> Continue
3. Is the system hierarchical with clear layers?
YES -> Does high-level need early exercise?
YES -> Top-Down (stubs for lower classes)
NO -> Does low-level need early verification?
YES -> Bottom-Up (test drivers for higher)
NO -> Sandwich (high + low first, middle last)
NO -> Continue
4. Are there distinct feature sets?
YES -> Feature-Oriented (one feature tree at a time)
NO -> Use Incremental with any sensible order
Daily Build Setup Procedure
1. Can you compile/link/combine into executable automatically?
NO -> Set up automated build script FIRST
YES -> Continue
2. Is build run at least daily?
NO -> Schedule daily build (fixed time, off-peak)
YES -> Continue
3. Is there a smoke test?
NO -> Create smoke test covering end-to-end execution
YES -> Does it cover recent additions?
NO -> Update smoke test (stale test = self-deception)
YES -> Continue
4. What happens when build breaks?
"Fix tomorrow" -> WRONG: Fix immediately, stop all other work
"Skip smoke test once" -> WRONG: Smoke test is the sentry
Fix immediately -> Correct
Produces:
- Integration strategy recommendation with rationale
- Integration order/sequence
- Daily build configuration
- Smoke test requirements
Constraints:
- Never let build stay broken overnight (p.704)
- Smoke test must exercise end-to-end (p.705)
- Check-in at least every 2 days (p.703)
Already Built Everything Separately?
If you've built all components in isolation and are about to combine them: STOP.
Building separately is fine. Combining all at once means ALL interface bugs surface simultaneously - that's Big Bang. Your components aren't wasted, but add them one at a time to isolate issues to each addition.
Rationalization Counters
| Excuse | Reality |
|---|---|
| "Our project is too large for daily builds" | Windows 2000 (50M LOC, 19-hour builds) used daily builds successfully |
| "Daily builds slow our progress" | Daily builds reveal true progress rate - you just don't like what you see |
| "We don't have time under schedule pressure" | Under stress, discipline matters more, not less |
| "Continuous integration is better than daily" | Daily is a MINIMUM. Modern CI/CD with automated testing is fine; the principle is frequent integration, not a specific ceiling |
| "We can build weekly instead of daily" | One broken week = lose virtually all benefit of frequent integration |
| "Our code changes too slowly" | More than 2 days without check-in = accumulated integration risk |
| "The build is broken but we'll fix it tomorrow" | Fix immediately; stop all other work until build works |
| "We can skip the smoke test just this once" | Smoke test is the sentry; without it, daily build is just a compile exercise |
| "Our smoke test doesn't need updating" | Stale smoke test = self-deception about system health |
| "We'll integrate when all pieces are done" | Big Bang = panicky debugging; all problems interact and mask each other |
| "It worked fine without this before" | Survivorship bias: you don't remember defects you didn't catch early |
| "I already built everything, too late for incremental" | Your components are built - good. But combine one at a time to isolate interface bugs |
| "5 projects succeeded without daily builds" | Each success without discipline accumulates invisible integration debt |
Benefits of Careful Integration
- Easier defect diagnosis (isolated to recent addition)
- Fewer defects slip through
- Less scaffolding code needed
- Shorter time to first working product
- Shorter overall development schedules
- Better customer relations (demonstrable progress)
- Improved developer morale
- Improved chance of project completion
- More reliable schedule estimates
- Accurate status reporting
- Improved code quality
- Less integration documentation needed
Chain
| After | Next |
|---|---|
| Integration failing | cc-debugging (STABILIZE phase) |
| Integration passing | cc-quality-practices (smoke test verification) |
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.