compound-engineering

A development methodology where each unit of work makes subsequent work easier—not harder.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "compound-engineering" with this command: npx skills add 5dlabs/cto/5dlabs-cto-compound-engineering

Compound Engineering

A development methodology where each unit of work makes subsequent work easier—not harder.

Core Philosophy

"Each unit of engineering work should make subsequent units of work easier—not harder."

Traditional development accumulates technical debt. Every feature adds complexity. Compound engineering inverts this by creating a learning loop where each bug, failed test, or problem-solving insight gets documented and reused.

The Compound Loop

Plan (40%) → Work (20%) → Review (20%) → Compound (20%)

80% of compound engineering is in planning and review. 20% is in execution.

Phase 1: Plan (40% of effort)

Before writing any code, create a comprehensive plan.

Research Phase

  • Codebase Analysis: Search for similar patterns, conventions, and prior art

  • Commit History: Use git log to understand how related features were built

  • Documentation: Check AGENTS.md files in relevant directories

  • External Research: Search for best practices relevant to the problem

Plan Structure

Feature: [Name]

Context

  • What problem does this solve?
  • Who is affected?
  • Current vs desired behavior?

Research Findings

  • Similar patterns in codebase: [file links]
  • Relevant prior implementations: [commit refs]
  • Best practices discovered: [references]

Acceptance Criteria

  • Criterion 1 (testable)
  • Criterion 2 (testable)

Technical Approach

  1. Step 1: [specific action]
  2. Step 2: [specific action]

Risks & Mitigations

  • Risk 1: [mitigation]

Phase 2: Work (20% of effort)

Execute the plan systematically.

Execution Workflow

  • Create isolated environment: Feature branch or worktree

  • Break into tasks: One task at a time

  • Validate continuously: Run tests after each change

  • Commit incrementally: Small, focused commits

Working Principles

  • Follow existing patterns discovered in research

  • Run tests after every meaningful change

  • If something fails, understand WHY before proceeding

  • Keep changes focused—no scope creep

Quality Checks

After each change:

cargo fmt --all --check # or npm run lint cargo clippy --all-targets # or npm run typecheck cargo test # or npm test

Phase 3: Review (20% of effort)

Before completing, perform comprehensive review.

Review Checklist

Code Quality

  • Follows existing codebase patterns and conventions

  • No unnecessary complexity

  • Clear naming that matches project conventions

  • No debug code left behind

Testing

  • Tests cover acceptance criteria

  • Edge cases considered

  • Tests are maintainable, not brittle

Architecture

  • Change is consistent with system design

  • No unnecessary coupling introduced

Multi-Perspective Review

Consider code from different angles:

  • Maintainer: Will this be easy to modify in 6 months?

  • Performance: Any bottlenecks?

  • Security: Any vulnerabilities?

  • Simplicity: Can this be simpler?

Phase 4: Compound (20% of effort)

Capture learnings to make future work easier.

What to Compound

Patterns: Document new patterns discovered

Pattern: [Name]

When to use: [context] Implementation: [example] See: [file reference]

Decisions: Record why approaches were chosen

Decision: [Choice Made]

Context: [situation] Options: [alternatives] Rationale: [why this choice]

Failures: Turn every bug into a lesson

Lesson: [What Went Wrong]

Symptom: [observed] Root cause: [actual problem] Fix: [solution] Prevention: [how to avoid]

Where to Codify Learnings

Type Location Duration

Feature-specific context progress.txt

Current feature only

Permanent patterns AGENTS.md

Forever

Code-level gotchas Inline comments With the code

Regression prevention Test cases Forever

Task Discovery (During Work)

Liberally create new tasks when you discover issues during implementation.

What Triggers a New Task

Discovery Action

Failing test or test gap Create task: "Write tests for X"

Code needing refactoring Create task: "Refactor Y for clarity"

Missing error handling Create task: "Add error handling for Z"

Documentation gap Create task: "Document A module"

TODOs or FIXMEs in code Create task with specific fix

Build/lint warnings Create task: "Fix linting in B"

Performance issues Create task: "Optimize C operation"

How to Create Tasks

Use the Linear API or MCP tools to create immediately:

Create task:

  • Title: "Fix: [specific issue]"
  • Description: "[What you found, why it matters]"
  • Dependencies: Set appropriately
  • Agent: Same service agent that found it

Do NOT batch for later. Create the task when you discover the issue, then continue your current work.

Compounding Questions

After completing work, ask:

  • What did I learn that others should know?

  • What mistake can be prevented?

  • What pattern did I discover or create?

  • What decision was made and why?

Document in appropriate location so future work benefits.

Memory Architecture

Short-Term Memory: progress.txt

For the current feature only. Reset between features.

Progress Log

Started: [date] Feature: [name] Parent Task: [parent-task-id]

Codebase Patterns ← SCANNED FIRST EACH ITERATION

  • Pattern 1 discovered
  • Pattern 2 discovered

[Date] - [Task]

  • What was implemented
  • Files changed
  • Learnings for future iterations

Long-Term Memory: AGENTS.md

Permanent learnings that anyone should know.

Learnings

[Category]

  • Pattern: [description]
  • Gotcha: [what to avoid]
  • Dependency: [what relies on what]

Rule: If it only matters for this feature → progress.txt. If anyone editing this code should know → AGENTS.md.

Progress Archiving (Feature Boundaries)

When starting a new feature, archive the previous progress.txt.

When to Archive

  • Starting work on a different parent task

  • Parent task ID in progress.txt differs from current task

  • Previous feature is complete

Archive Process

1. Check if progress.txt has content from previous feature

cat progress.txt

2. If different feature, archive it

DATE=$(date +%Y-%m-%d) FEATURE="previous-feature-name" mkdir -p archive/$DATE-$FEATURE mv progress.txt archive/$DATE-$FEATURE/

3. Create fresh progress.txt

cat > progress.txt << 'EOF'

Progress Log

Started: [today's date] Feature: [new feature name] Parent Task: [new-parent-task-id]

Codebase Patterns

(Patterns discovered during this feature - copy relevant ones from archive)


EOF

4. Commit the archive

git add archive/ progress.txt git commit -m "chore: archive progress for [previous-feature]"

Preserving Valuable Patterns

When resetting progress.txt:

  • Review the archived "Codebase Patterns" section

  • Copy patterns that are still relevant to the new progress.txt

  • Do NOT copy task-specific entries (those belong in archive)

Why Archive?

  • Fresh context prevents tunnel vision

  • Each feature starts clean

  • Valuable patterns preserved, noise discarded

  • Easy to reference past feature learnings

Success Metrics

You're doing compound engineering well when:

  • Each feature takes less effort than the last similar feature

  • Bugs become one-time events (documented and prevented)

  • New work can be started quickly (patterns are established)

  • Code reviews surface fewer issues (patterns are followed)

  • Technical debt decreases over time

Iron Law

DOCUMENT BEFORE MOVING ON

If you learned something, write it down before starting the next task.

Quick Reference

Phase Time Key Activities

Plan 40% Research, find patterns, write plan

Work 20% Execute plan, validate continuously

Review 20% Multi-perspective check, quality gates

Compound 20% Document patterns, decisions, lessons

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

code-review

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

github-mcp

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

codeql

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

test-driven-development

No summary provided by upstream source.

Repository SourceNeeds Review