Development Workflow: Slow is Fast
SkillProductivityResearch → Plan → Code workflow. Enforces evidence-based reasoning, codebase research, and structured planning before code modifications. Applied automatically for moderate+ tasks.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Development Workflow: Slow is Fast skill
What this skill tells your AI
The instructions your AI receives, as published by ahonn/dotfiles in .claude/skills/slow-is-fast/SKILL.md and read by ahel’s review.
Core rule: Never modify code based on assumptions alone. Ground every decision in evidence.
Complexity Assessment
| Complexity | Characteristics | Workflow |
|---|---|---|
| Trivial | Typo, formatting, <10 lines, single API | Answer directly, quick grep for context |
| Moderate | Non-trivial logic in single file, local refactoring | Standard: all phases below |
| Complex | Cross-module design, concurrency, new architecture | Deep: use Explore agent, WebSearch, context7 |
Auto-reclassification: if Phase 1 reveals an external contract surface (third-party API, undocumented system behavior, shared type exported to callers, schema/migration), bump up one tier and note why.
Skip Conditions
Research can be minimal when:
- Pure formatting, typo, or rename fixes
- User explicitly provides the exact solution or says "just do it"
- Follow-up changes in same conversation where research was already done
- The change is within code you just wrote in this conversation
Phase 0: Reasoning Principles
Before any action, apply these internally (do not output unless requested).
Constraint Priority
Analyze in this order:
- Rules and Constraints — never violate for convenience
- Operation Order and Reversibility — ensure no step blocks subsequent steps
- Prerequisites and Missing Information — only ask when missing info significantly affects solution choice
- User Preferences — style, language (without violating higher priorities)
Risk Assessment
- Low-risk (searches, simple refactoring): Proceed with existing information
- High-risk (data modifications, API changes, history rewrites): State risks, provide safer alternatives
Abductive Reasoning
When encountering problems:
- Don't just treat symptoms — infer deeper causes
- Construct 1–3 hypotheses ordered by likelihood
- Verify most likely first; update when invalidated
Conflict Resolution Priority
- Readability and Maintainability
- Correctness and Safety
- Explicit business requirements
- Performance and resource usage
- Code length and local elegance
Phase 1: Research
Execute before entering Plan mode. Summarize findings before proposing any approach.
For moderate+ tasks, use Explore agent to run research in an isolated context.
1.1 Codebase Search
Understand what already exists. Do not reinvent or contradict existing patterns.
- Grep for related function names, types, patterns, error messages
- Glob for related files by naming convention
- Read key files to understand existing architecture and conventions
- For broad exploration, use Explore agent to parallelize searches
1.2 Documentation Lookup
Verify API behavior, library usage, and framework conventions against official sources.
- Use context7 (
resolve-library-id→query-docs) for libraries/frameworks involved - Use WebSearch when context7 lacks coverage or for newer APIs
- Check changelogs/migration guides if version-specific behavior is involved
1.3 Solution Survey & Reuse Decision
Apply the reuse decision matrix (see references/research-patterns.md).
- Search for common pitfalls, edge cases, and known issues
- Identify trade-offs between candidate approaches
- Produce 1-3 candidate approaches with evidence-backed pros/cons
Scope Mode
Name the mode at the start of Plan phase. The mode shapes how aggressively to expand or constrain options.
| Mode | When | Posture |
|---|---|---|
| expand | New feature, blank slate | Push scope up. Ask what would make this 10x better. |
| shape | Adding to existing code | Hold the baseline, surface expansion options one at a time. |
| hold | Bug fix, tight constraints | Scope is locked. Make it correct. |
| cut | Plan that grew too large | Strip to the minimum that solves the real problem. |
Phase 2: Plan Mode (Analysis / Alignment)
-
Briefly restate: objective, key constraints, current state, and the Scope Mode for this task
-
State test mode (from AGENTS.md):
Test mode: skip | verify-only | add-tests | tdd — <rationale>. Do not default totdd. Code mode must honor this choice. -
Analyze top-down, find root causes, not just patch symptoms
-
Provide 2–3 feasible options, each including:
- Summary approach
- Impact scope (modules/interfaces involved)
- Pros and cons
- Potential risks
- Verification methods (aligned with the chosen test mode)
Always include one minimal option and one architecturally complete option. A homogeneous list of three near-identical plans is not a plan set.
-
Self-attack the recommendation. Before presenting, ask what would make the chosen option fail. If the attack holds, present the deformed version. If the attack shatters it, discard and pick again — and tell the user why.
-
Mark hard-to-undo decisions. Slow down on those; spend more analysis on anything that cannot be cheaply reversed.
-
State explicit non-goals. Name what is being deliberately not built, so scope can stay honest later.
-
Only ask clarifying questions when missing info would block progress
-
Avoid providing essentially identical plans
No Placeholders in Approved Plans
Before the user approves, every step must be concrete. Forbidden patterns: TBD, TODO, "implement later", "similar to step N", "details to be determined", "as needed". A plan with placeholders is not a plan — it is a promise to plan later.
If a section cannot be evaluated from available information, say so explicitly: "Cannot assess X without seeing Y." Do not guess to fill the gap.
Exit Gate: Confidence Check
Before handing off to Code mode, score confidence on three axes:
- Problem understood? State in one sentence what the user actually needs and why.
- Approach is the simplest that works? Is there a cheaper path I have not considered?
- Unknowns resolved or explicitly deferred? No hidden
TBD.
If any axis is low: loop back.
- Low on (1) → return to Phase 1 (more research)
- Low on (2) → re-enter Phase 2 with the cheaper alternative explicitly evaluated
- Low on (3) → name each unresolved unknown; resolve it or mark it as an explicit deferral
If all three are solid AND (user explicitly chose an option OR one option is clearly superior): state the confidence assessment in 2–3 sentences, then enter Code mode directly.
Phase 3: Code Mode (Execute Plan)
- Before providing code, briefly state which files/modules will be modified and why
- Prefer minimal, reviewable changes: local snippets/patches over complete files
- Verify according to the planned test mode only: invoke
tddsolely when mode istdd; do not invent tests underskip/verify-only - Indicate how to verify: commands to run, new tests only if mode requires them
- If major problems discovered → pause, switch back to Plan mode
Output Should Include
- What changes were made, where
- How to verify
- Known limitations or follow-up TODOs
Anti-Patterns
- Cargo-cult coding: Copying patterns without understanding why they exist
- Stale knowledge: Using remembered API behavior instead of checking current docs
- Premature implementation: Jumping to code after reading only one file
- Research theater: Searching but ignoring findings that contradict your initial idea
- Dependency bloat: Adding a library when a 5-line solution exists in the project
- NIH syndrome: Rewriting what already exists because you didn't search thoroughly
- Symptom patching: Fixing symptoms without investigating root causes
- Hasty conclusions: Providing answers before completing reasoning
See also: references/research-patterns.md for anti-rationalization table and reuse decision matrix.
Signals
- GitHub stars
- 62
- Forks
- 2
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
slow-is-fast- Source
- github.com/ahonn/dotfiles