home / skills / petekp / agent-skills / deep-work

deep-work skill

/skills/deep-work

This skill guides you through a structured deep-work workflow, creating research and planning artifacts before any non-trivial code changes.

npx playbooks add skill petekp/agent-skills --skill deep-work

Review the files below or copy the command above to add this skill to your agents.

Files (4)
SKILL.md
5.3 KB
---
name: deep-work
description: >
  Structured development workflow that separates research, planning, and implementation
  into distinct phases with persistent markdown artifacts. Use when starting any non-trivial
  feature, refactor, bug investigation, or codebase change. Trigger on: "deep work",
  "research and plan", "plan before coding", "write a plan", "research this codebase",
  "don't code yet", "understand then implement", or when the user wants a disciplined
  approach to a complex task. Also use when the user says "research", "plan", "annotate",
  "implement the plan", or references research.md/plan.md artifacts.
---

# Deep Work

Structured workflow that separates thinking from typing. Never write code until a written plan has been reviewed and approved.

## Workflow Overview

```
Research → Plan → Annotate (repeat 1-6x) → Todo List → Implement → Feedback
```

All artifacts persist as markdown files in `.claude/` (not the project root).

## Phase 1: Research

Deeply read the relevant codebase before doing anything else. Write findings to `.claude/research.md`.

**How to research:**
1. Read every file in the target area — not just signatures, but implementations, edge cases, error handling
2. Trace data flows end-to-end
3. Identify existing patterns, conventions, utilities, and caching layers
4. Note integration points with other parts of the system
5. Write a detailed report to `.claude/research.md`

**Research depth signals:** Read deeply. Understand intricacies. Go through everything. Surface-level reading is not acceptable. Continue until you have a thorough understanding.

**Template:** See [references/research-template.md](references/research-template.md) for the research document structure.

**Critical rule:** Stop after writing research.md. Do not proceed to planning until the user has reviewed the research and confirmed it's accurate.

## Phase 2: Plan

Write a detailed implementation plan to `.claude/plan.md`. Base the plan on the actual codebase — read source files before suggesting changes.

**Plan contents:**
- Explanation of the approach and rationale
- Code snippets showing actual changes (not pseudocode)
- File paths that will be modified or created
- Considerations and trade-offs
- Things explicitly not being changed and why

**Template:** See [references/plan-template.md](references/plan-template.md) for the plan document structure.

**Reference implementations:** If the user provides reference code from other projects, study it and adapt the approach to fit the current codebase's patterns.

**Critical rule:** End the plan with "Ready for your review. Add inline notes directly to `.claude/plan.md` and tell me when to address them." Do not implement.

## Phase 3: Annotation Cycle

The user adds inline notes directly into plan.md. When they say "address my notes" or similar:

1. Read `.claude/plan.md` thoroughly, finding all user annotations
2. User annotations are any text that wasn't in your original plan — look for corrections, questions, overrides, and constraints
3. Address every single annotation: update sections, remove rejected approaches, incorporate domain knowledge
4. Remove the annotation text itself after addressing it (keep the plan clean)
5. End with: "All notes addressed. Review again or say 'add the todo list' when satisfied."

**Critical rule:** Do not implement. The phrase "don't implement yet" is a hard constraint. Repeat the annotation cycle until the user explicitly approves.

## Phase 4: Todo List

When the user approves the plan, add a granular task checklist to `.claude/plan.md`:

```markdown
## Tasks

### Phase 1: [Phase Name]
- [ ] Task 1 — specific, actionable description
- [ ] Task 2 — specific, actionable description

### Phase 2: [Phase Name]
- [ ] Task 3 — specific, actionable description
- [ ] Task 4 — specific, actionable description
```

Each task should be small enough to complete in one focused step. Include all phases needed to fully implement the plan.

**Critical rule:** Do not implement yet. Wait for user confirmation to begin.

## Phase 5: Implementation

When the user says "implement" or "go":

1. Execute every task in the plan sequentially
2. After completing each task, update `.claude/plan.md` — change `- [ ]` to `- [x]`
3. Do not stop until all tasks are completed
4. Run the project's type checker / linter after each phase to catch issues early
5. Do not add unnecessary comments, docstrings, or type workarounds (`any`, `unknown`)

**Code quality rules during implementation:**
- No unnecessary comments or jsdocs
- No `any` or `unknown` types (TypeScript projects)
- Run typecheck/lint continuously
- Follow existing codebase patterns exactly

## Phase 6: Feedback

During implementation, the user may provide terse corrections. These are sufficient because full context exists in the plan and session:

- "You missed the dedup function" → implement what was missed
- "Move this to the admin app" → relocate as directed
- "Wider" / "2px gap" / "still cropped" → adjust and re-check
- "Make it look like the users table" → read that reference, match it exactly

**On reverts:** If the user says "I reverted everything" — re-read the current file state, narrow scope to exactly what they specify, and re-implement cleanly.

## Prompt Reference

See [references/prompts.md](references/prompts.md) for ready-to-use prompts for each phase that the user can copy and adapt.

Overview

This skill provides a disciplined "deep work" development workflow that separates research, planning, annotation, and implementation into distinct phases with persistent markdown artifacts. It enforces thorough codebase investigation and a written plan before any code is touched, reducing rework and integration surprises. Artifacts are stored under .claude/ so findings, plans, and task lists persist across the effort.

How this skill works

Begin with an exhaustive research pass of the target area and write a detailed report to .claude/research.md. Next, author a concrete implementation plan in .claude/plan.md with real code snippets, file paths, and trade-offs. Iterate via annotation cycles until the plan is approved, convert the plan into a granular todo checklist, then implement tasks sequentially while updating the plan file as work completes.

When to use it

  • Starting any non-trivial feature that touches multiple files or systems
  • Beginning a significant refactor or architecture change
  • Investigating a difficult bug that requires end-to-end tracing
  • When you want a strict "plan before coding" discipline
  • Onboarding to an unfamiliar codebase area before making changes

Best practices

  • Read implementations, not just signatures; trace data flows and edge cases
  • Stop after research.md and get user review before writing a plan
  • Plans must include real file paths and concrete code diffs, not pseudocode
  • Keep tasks small and checkable; each task should be completable in one focused session
  • Run type checks and linters after each implementation phase and update the checklist immediately

Example use cases

  • Add a cross-cutting feature that requires database, API, and frontend changes
  • Refactor a shared utility while preserving multiple integration points
  • Triage and fix an intermittent production bug with unclear causes
  • Adopt a reference implementation from another repo, adapting it to local patterns
  • Prepare a safe rollout plan for a backwards-incompatible change

FAQ

What files are created and where?

Research, plan, and task artifacts are written to persistent markdown files inside the .claude/ directory (e.g., .claude/research.md and .claude/plan.md).

When do I allow implementation to start?

Only after the research is reviewed and the plan is explicitly approved. The workflow enforces annotations and review cycles prior to any coding.