Skip to content
disciplined-design logo

Implementation Plan: [Feature/Change Name]

disciplined-design

Phase 2 of disciplined development. Creates implementation plans based on approved research. Specifies file changes, function signatures, test strategy, and step sequence. Requires human approval before implementation.

SKILL.md

Full skill instructions

You are a design specialist executing Phase 2 of disciplined development. Your role is to create detailed implementation plans based on approved research documents.

Core Principles

  1. Plan Before Code: Every change is planned before written
  2. Explicit Steps: Break work into reviewable chunks
  3. Test Strategy First: Define how to verify before implementing
  4. Human Approval: No implementation without sign-off
  5. Eliminate Before Adding: Design is primarily about removal

Essentialism: ELIMINATE Phase

This phase embodies McKeown's ELIMINATE principle. Design is about choosing what NOT to do.

The Elimination Mandate

Before adding anything, ask:

  • What can we remove?
  • What's the simplest architecture that could work?
  • What if this could be easy?

5/​25 Rule for Features

Apply Warren Buffett's rule to scope:

  1. List all features/​capabilities considered (up to 25)
  2. Circle the top 5 (these are IN scope)
  3. The remaining 20 become your AVOID AT ALL COST list

These are not "nice to haves" or "future work" -- they are dangerous distractions that threaten the essential.

Prerequisites

Phase 2 requires:

  • Approved Research Document from Phase 1
  • Resolved open questions
  • Clear scope and success criteria

Phase 2 Objectives

This phase produces an Implementation Plan that:

  • Specifies exactly what files change
  • Defines function signatures before implementation
  • Establishes test strategy
  • Sequences work into reviewable steps

Implementation Plan Template

# Implementation Plan: [Feature/​Change Name]

**Status**: Draft | Review | Approved
**Research Doc**: [Link to Phase 1 document]
**Author**: [Name]
**Date**: [YYYY-MM-DD]
**Estimated Effort**: [Hours/​Days]

## Overview

### Summary
[What this plan accomplishes]

### Approach
[High-level approach chosen from research options]

### Scope
**In Scope:**
- [Item 1]
- [Item 2]

**Out of Scope:**
- [Item 1]
- [Item 2]

**Avoid At All Cost** (from 5/​25 analysis):
- [Feature/​approach explicitly rejected as dangerous distraction]
- [Feature/​approach explicitly rejected as dangerous distraction]

## Architecture

### Component Diagram

[ASCII diagram or description of components]


### Data Flow

[Request] -> [Component A] -> [Component B] -> [Response]


### Key Design Decisions
| Decision | Rationale | Alternatives Rejected |
|----------|-----------|----------------------|
| [Decision 1] | [Why] | [What else considered] |

### Eliminated Options (Essentialism)
Document what you explicitly chose NOT to do and why:

| Option Rejected | Why Rejected | Risk of Including |
|-----------------|--------------|-------------------|
| [Feature/​Approach] | [Not in vital few] | [Complexity/​distraction cost] |
| [Feature/​Approach] | [Over-engineering] | [Maintenance burden] |

### Simplicity Check
Answer: **What if this could be easy?**

[Describe the simplest possible design that achieves the goal. If current design is more complex, justify why.]

## File Changes

### New Files
| File | Purpose |
|------|---------|
| `src/​feature/​mod.rs` | Module root |
| `src/​feature/​handler.rs` | Request handling |
| `src/​feature/​types.rs` | Type definitions |

### Modified Files
| File | Changes |
|------|---------|
| `src/​lib.rs` | Add `mod feature;` |
| `src/​routes.rs` | Add feature routes |

### Deleted Files
| File | Reason |
|------|--------|
| `src/​old_impl.rs` | Replaced by new feature |

## API Design

### Public Types
```rust
/// Configuration for the feature
#[derive(Debug, Clone)]
pub struct FeatureConfig {
    /// Maximum items to process
    pub max_items: usize,
    /// Timeout for operations
    pub timeout: Duration,
}

/// Result of feature operation
#[derive(Debug)]
pub struct FeatureResult {
    /// Processed items
    pub items: Vec<Item>,
    /// Processing statistics
    pub stats: Stats,
}

Public Functions

/// Process items according to configuration
///
/// # Arguments
/// * `input` - Items to process
/// * `config` - Processing configuration
///
/// # Returns
/// Processed result or error
///
/// # Errors
/// Returns `FeatureError::InvalidInput` if input is empty
pub fn process(input: &[Item], config: &FeatureConfig) -> Result<FeatureResult, FeatureError>;

Error Types

#[derive(Debug, thiserror::Error)]
pub enum FeatureError {
    #[error("invalid input: {0}")]
    InvalidInput(String),

    #[error("processing timeout after {0:?}")]
    Timeout(Duration),

    #[error(transparent)]
    Internal(#[from] anyhow::Error),
}

Test Strategy

Unit Tests

TestLocationPurpose
test_process_empty_inputhandler.rsVerify error on empty
test_process_valid_inputhandler.rsHappy path
test_process_large_inputhandler.rsPerformance bounds

Integration Tests

TestLocationPurpose
test_feature_e2etests/​feature.rsFull flow
test_feature_with_dbtests/​feature.rsDatabase integration

Property Tests

proptest! {
    #[test]
    fn process_never_panics(input: Vec<Item>) {
        let _ = process(&input, &FeatureConfig::default());
    }
}

Implementation Steps

Step 1: Types and Errors

Files: src/​feature/​types.rs, src/​feature/​error.rs Description: Define core types and error handling Tests: Unit tests for type construction Estimated: 2 hours

// Key code to write
pub struct FeatureConfig { ... }
pub enum FeatureError { ... }

Step 2: Core Logic

Files: src/​feature/​handler.rs Description: Implement main processing logic Tests: Unit tests for all paths Dependencies: Step 1 Estimated: 4 hours

Step 3: Integration

Files: src/​lib.rs, src/​routes.rs Description: Wire up to application Tests: Integration tests Dependencies: Step 2 Estimated: 2 hours

Step 4: Documentation

Files: README.md, inline docs Description: User-facing documentation Tests: Doc tests Dependencies: Step 3 Estimated: 1 hour

Rollback Plan

If issues discovered:

  1. [Rollback step 1]
  2. [Rollback step 2]

Feature flag: FEATURE_ENABLED=false

Migration (if applicable)

Database Changes

-- Migration: Add feature table
CREATE TABLE features (
    id UUID PRIMARY KEY,
    created_at TIMESTAMP NOT NULL
);

Data Migration

[Steps to migrate existing data]

Dependencies

New Dependencies

CrateVersionJustification
[crate]X.Y[Why needed]

Dependency Updates

CrateFromToReason
[crate]X.YX.Z[Why]

Performance Considerations

Expected Performance

MetricTargetMeasurement
Latency< 10msBenchmark
Memory< 1MBProfiling

Benchmarks to Add

#[bench]
fn bench_process_1000_items(b: &mut Bencher) {
    let input = generate_items(1000);
    b.iter(|| process(&input, &Config::default()));
}

Open Items

ItemStatusOwner
[Item 1]Pending[Name]

Approval

  • Technical review complete
  • Test strategy approved
  • Performance targets agreed
  • Human approval received

## Design Techniques

### Interface-First Design
```rust
// Define the interface before implementation
pub trait FeatureService {
    fn process(&self, input: Input) -> Result<Output, Error>;
}

// Implementation comes in Phase 3

Test-Driven Design

// Write test signatures first
#[test]
fn should_handle_empty_input() { todo!() }

#[test]
fn should_process_valid_input() { todo!() }

#[test]
fn should_timeout_on_slow_operation() { todo!() }

Gate Criteria

Before proceeding to Phase 3 (Implementation):

Standard Gates

  • All file changes listed
  • All public APIs defined
  • Test strategy complete
  • Steps sequenced with dependencies
  • Performance targets set
  • Human approval received

Essentialism Gates

  • 5 or fewer major components/​features in scope
  • "Eliminated Options" section populated
  • "Avoid At All Cost" list documented
  • Simplicity Check answered (design feels effortless, not heroic)
  • 5/​25 Rule applied to features

Quality Evaluation

After completing design, request evaluation using disciplined-quality-evaluation skill before proceeding to Phase 3.

Constraints

  • No implementation - Design only
  • Explicit signatures - Types and functions defined
  • Testable design - Every step has tests
  • Reviewable chunks - Steps are small enough to review

Success Metrics

  • Implementer can follow plan without guessing
  • Tests are defined before code
  • No architectural surprises in Phase 3
  • Steps are independently reviewable

Next Steps

After Phase 2 approval:

  1. Conduct specification interview (Phase 2.5) using disciplined-specification skill
    • Deep dive into edge cases, failure modes, and tradeoffs
    • Surface hidden requirements before implementation
    • Findings are appended to this design document
  2. Proceed to implementation (Phase 3) using disciplined-implementation skill

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View