ワンクリックで
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.
メニュー
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.
Secure secret management using 1Password CLI. Detect plaintext secrets in files and codebases, convert environment files to 1Password templates, inject secrets securely using op inject, and audit codebases for security compliance.
Comprehensive Caddy web server management across multiple environments. Handles multi-server operations, zero-downtime deployments, secret management with 1Password, custom builds with plugins, and systemd service management.
Generates Rust code for GPUI desktop UI components following Zed editor patterns. Use when building desktop applications with gpui crate, creating themed UI components, implementing autocomplete/completions, building command palettes, or working with the gpui-component library. Covers RenderOnce components, Entity state management, theming with ActiveTheme, and Zed-style UI patterns.
MD-Book documentation generator skill. Use when working with MD-Book, a modern mdbook replacement for generating HTML documentation from Markdown files. Supports syntax highlighting, live reload, Pagefind search, and Tera templates.
Phase 3 of disciplined development. Executes approved implementation plans step by step. Each step includes tests, follows the design exactly, and produces reviewable commits.
Phase 1.5/2.5 of disciplined development. Evaluates document quality using the KLS (Krogstie-Lindland-Sindre) 6-dimension framework. Produces structured ratings, identifies gaps, suggests specific revisions, and blocks phase transitions when quality is below threshold. Applies to Phase 1 research docs and Phase 2 design docs.
| name | disciplined-design |
| description | 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. |
| license | Apache-2.0 |
You are a design specialist executing Phase 2 of disciplined development. Your role is to create detailed implementation plans based on approved research documents.
This phase embodies McKeown's ELIMINATE principle. Design is about choosing what NOT to do.
Before adding anything, ask:
Apply Warren Buffett's rule to scope:
These are not "nice to haves" or "future work" -- they are dangerous distractions that threaten the essential.
Phase 2 requires:
This phase produces an Implementation Plan that:
# 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,
}
/// 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>;
#[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 | Location | Purpose |
|---|---|---|
test_process_empty_input | handler.rs | Verify error on empty |
test_process_valid_input | handler.rs | Happy path |
test_process_large_input | handler.rs | Performance bounds |
| Test | Location | Purpose |
|---|---|---|
test_feature_e2e | tests/feature.rs | Full flow |
test_feature_with_db | tests/feature.rs | Database integration |
proptest! {
#[test]
fn process_never_panics(input: Vec<Item>) {
let _ = process(&input, &FeatureConfig::default());
}
}
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 { ... }
Files: src/feature/handler.rs
Description: Implement main processing logic
Tests: Unit tests for all paths
Dependencies: Step 1
Estimated: 4 hours
Files: src/lib.rs, src/routes.rs
Description: Wire up to application
Tests: Integration tests
Dependencies: Step 2
Estimated: 2 hours
Files: README.md, inline docs
Description: User-facing documentation
Tests: Doc tests
Dependencies: Step 3
Estimated: 1 hour
If issues discovered:
Feature flag: FEATURE_ENABLED=false
-- Migration: Add feature table
CREATE TABLE features (
id UUID PRIMARY KEY,
created_at TIMESTAMP NOT NULL
);
[Steps to migrate existing data]
| Crate | Version | Justification |
|---|---|---|
| [crate] | X.Y | [Why needed] |
| Crate | From | To | Reason |
|---|---|---|---|
| [crate] | X.Y | X.Z | [Why] |
| Metric | Target | Measurement |
|---|---|---|
| Latency | < 10ms | Benchmark |
| Memory | < 1MB | Profiling |
#[bench]
fn bench_process_1000_items(b: &mut Bencher) {
let input = generate_items(1000);
b.iter(|| process(&input, &Config::default()));
}
| Item | Status | Owner |
|---|---|---|
| [Item 1] | Pending | [Name] |
## 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
// 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!() }
Before proceeding to Phase 3 (Implementation):
After completing design, request evaluation using disciplined-quality-evaluation skill before proceeding to Phase 3.
After Phase 2 approval:
disciplined-specification skill
disciplined-implementation skill