Agent skill

Write Plan

by jackfranklin in jackfranklin/dotfiles

Write a right-sized, reviewable implementation plan as a series of focused tasks, with exact file paths, interface contracts, behavioral test specifications, and verification commands.

MITAuto-check passedAgent Workflows

Install Write Plan

skills CLI
$ npx skills add jackfranklin/dotfiles --skill write-plan -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jackfranklin/dotfiles write-plan --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jackfranklin/dotfiles.git skills-src && mkdir -p .claude/skills && cp -r skills-src/claude/skills/write-plan .claude/skills/write-plan && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
write-plan
GitHub stars
255
Token cost
~3.3k tokens
SKILL.md length
1,504 words
Files
1
Skills in repo
19
Repo updated
First seen
Licence
MIT

At a glance

Write a right-sized, reviewable implementation plan as a series of focused tasks, with exact file paths, interface contracts, behavioral test specifications, and verification commands.

  • Works in 7 steps: Preflight Investigation & Ponytail Ladder → Map the File Structure → Right-size the Tasks → …
  • Tasks that involve Planning
  • SKILL.md covers GitHub body safety — mandatory, Scope Check, Simplicity Gate and Step 1: Preflight…, plus 7 more sections
  • Calls gh, npm and git

What it does

Write Plan is an agent skill from jackfranklin/dotfiles. Write a right-sized, reviewable implementation plan as a series of focused tasks, with exact file paths, interface contracts, behavioral test specifications, and verification commands. Focuses on architectural intent and test coverage without dumping raw test or implementation code. Performs pre-planning preflight investigation and Ponytail ladder checks before drafting. Reviews the plan with the user task by task before storing an explicitly approved plan on the relevant GitHub issue.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering Planning and Test coverage. It works with GitHub. The repository describes itself as: My dotfiles for my dev environment, compromising of tmux, vim, zsh and git. The licence is MIT.

When your agent uses it

  • Tasks that involve Planning
  • Tasks that involve Test coverage

Example prompts

  • “/write-plan”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Preflight Investigation & Ponytail Ladder
  2. Map the File Structure
  3. Right-size the Tasks
  4. Write the Plan
  5. Self-Review & Verification
  6. Review the Plan with the User
  7. Persist the Approved Plan on GitHub

What it can do on your machine

Read from SKILL.md and the folder at commit 7ec4998. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh
    • npm
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh, npm and git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Write Plan loads about 3.3k tokens when it runs. Until then it costs about 125 tokens; SKILL.md has 1,504 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~125
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jackfranklin/dotfiles at commit 7ec4998, republished under its MIT licence (© jackfranklin). 1,504 words, ~3,268 tokens.

Download SKILL.mdSave it as .claude/skills/write-plan/SKILL.md (or your agent's skills folder).
name
write-plan
description
Write a right-sized, reviewable implementation plan as a series of focused tasks, with exact file paths, interface contracts, behavioral test specifications, and verification commands. Focuses on architectural intent and test coverage without dumping raw test or implementation code. Performs pre-planning preflight investigation and Ponytail ladder checks before drafting. Reviews the plan with the user task by task before storing an explicitly approved plan on the relevant GitHub issue.
disable-model-invocation
true

Write Plan

Write a rigorous implementation plan assuming the engineer has zero context about the codebase and will execute tasks in isolation. Every step must contain everything they need — no references to "fill in later", no vague instructions, no placeholders.

DRY. YAGNI. TDD. Frequent commits. Focus on clear contracts, behavioral specs, and independent verification rather than premature code dumps. Prefer designs that are easy to explain, reason about locally, and change.

GitHub body safety — mandatory

Never place a Markdown plan in a shell-quoted gh --body argument. Backticks, $, and command examples in Markdown are shell syntax inside double-quoted Bash strings and can execute commands or leak their output into GitHub.

Write every issue body/comment to a temporary Markdown file outside the repository with the file-writing tool, then pass it with --body-file. Never use --body "...", --body "$(...)", backticks in a shell string, or an unquoted heredoc. If a heredoc is unavoidable, use a single-quoted delimiter: <<'EOF'.

After publication, verify that GitHub stored literal Markdown. If shell output or credentials appear, immediately delete/replace the affected comment, stop work, and tell the user to rotate exposed credentials.

Scope Check

Before investigation, state the proposed scope in three short bullets:

  • Required outcome: the behavior explicitly requested by the issue or spec.
  • Non-goals: adjacent features, refactors, generalization, cleanup, and future-proofing that are not required for that outcome.
  • Simplest likely approach: the smallest change expected to deliver the required outcome, using existing patterns where possible.

Treat the issue or spec as a strict boundary. Every task, changed file, dependency, test, and design decision must map to an explicit requirement or a demonstrated correctness need. Do not infer new product requirements or add infrastructure, abstractions, migrations, or extra capabilities merely because they may be useful later. Record relevant ideas that are not necessary under Out of scope rather than adding them to the plan.

If the scope is ambiguous, or investigation shows the simplest approach would materially exceed it, stop and ask the user to clarify or approve the expansion before planning it.

If the task spans multiple independent subsystems, suggest breaking it into separate plans — one per subsystem. Each plan should produce working, testable software on its own.

Simplicity Gate

Before defining tasks, make the case for the smallest viable design:

  1. Explain the proposed design in at most two plain-English sentences.
  2. List every new moving part—file, abstraction, dependency, state model, configuration option, or extension point—and the current requirement or demonstrated correctness need that justifies it.
  3. Name the simpler direct alternative where one exists, and explain why it is insufficient.
  4. State what is intentionally not being built. Put speculative future ideas under Out of scope, not into the plan.

A design that cannot be explained simply or justify its moving parts is not ready to plan. Simplify it or ask the user to approve the necessary complexity.

Step 1: Preflight Investigation & Ponytail Ladder

Before planning or writing anything, run the Ponytail decision ladder to establish the minimal correct implementation and verify assumptions against the live codebase.

  1. Verify Workspace State:
    • Run the build/tests (e.g. npm test) to ensure a clean starting state.
    • Confirm git status (git status --porcelain) is clean.
  2. Apply the Ponytail Ladder:
    • Is it necessary? Does this feature actually need code, or can it be config/data?
    • stdlib/runtime: Can built-ins cover this?
    • Framework: Is there a native framework feature?
    • Dependencies: Do installed dependencies cover this? (Check package files)
    • Minimal implementation: What is the smallest possible implementation composing what exists?
  3. Verify Codebase Assumptions:
    • Scan the codebase to ensure assumed class names, file paths, exports, and schemas exist.
  4. Identify What We're Not Building:
    • Explicitly list features or complexity eliminated by the ladder.

Step 2: Map the File Structure

Before defining tasks, map out which files will be created or modified and what each is responsible for. Decomposition decisions get locked in here.

  • Each file should have one clear responsibility
  • Files that change together should live together — split by responsibility, not by technical layer
  • In existing codebases, follow established patterns
  • Prefer cohesive, easy-to-navigate files; do not split a cohesive change into extra files merely to make them smaller

Step 3: Right-size the Tasks

A task is the smallest unit that carries its own test cycle and is worth a fresh reviewer's gate.

  • Fold setup, configuration, and scaffolding into the task whose deliverable needs them
  • Split only where a reviewer could meaningfully reject one task while approving its neighbour
  • Each task ends with an independently testable deliverable
  • Do not split a cohesive implementation merely to create more tasks or commits
  • Specify tests for distinct required behaviours; do not add speculative cases that do not follow from the requirements or the system's real boundaries

Step 4: Write the Plan

Document Header
markdown
# [Feature Name] Implementation Plan

**Goal:** [One sentence describing what this builds]

**Architecture:** [2-3 sentences about the approach]

## Simplicity Rationale

**Plain-language design:** [Explain the design in at most two sentences.]

**New moving parts:** [For each new file, abstraction, dependency, state model, configuration option, or extension point: its present-day justification.]

**Intentionally omitted:** [The complexity and speculative capabilities excluded from this plan.]

**Tech Stack:** [Key technologies and libraries]

## Adversarial Audit & Security

[List key edge cases, security hazards, sanitization needs, or potential race conditions identified, and how they are handled in this plan.]

## Global Constraints

[Project-wide requirements — version floors, dependency limits, naming rules,
platform requirements — one line each. Every task implicitly includes this
section.]

---
Task Structure
markdown
### Task N: [Component Name]

**Files:**
- Create: `exact/path/to/file.ts`
- Modify: `exact/path/to/existing.ts`
- Test: `tests/exact/path/to/test.ts`

**Interfaces:**
- Consumes: [what this task uses from earlier tasks or existing modules — exact signatures and types]
- Produces: [what later tasks rely on — exact function names, parameter and return types]

**Key Changes & Logic:**
- [Bullet points describing the concrete logic, algorithmic changes, or state updates]
- [Type definitions or function signatures where relevant; omit complete method bodies]

**Test Plan & Coverage:**
- [Target test file: `tests/exact/path/to/test.ts`]
- [Specific scenario 1: Input/condition -> Expected outcome]
- [Specific scenario 2: Edge case or boundary condition -> Expected behavior]
- [Specific scenario 3: Error state or failure mode -> Expected handling/rejection]

**Verification & Commit:**
- Run: `npm test -- tests/exact/path/to/test.ts`
- Commit message: `feat(scope): concise description of deliverable`

No Placeholders and No Code Dumps

Every task must contain clear architectural contracts and behavioral specs an engineer needs.

Avoid vague plan failures:

  • "TBD", "TODO", "implement later", "fill in details"
  • "Add appropriate error handling" / "handle edge cases" (without naming specific conditions and expected behavior)
  • "Write tests for the above" (without naming concrete test scenarios, inputs, and expected outcomes)
  • "Similar to Task N" (state the specific contract — tasks may be read or reviewed independently)
  • Referencing types or functions that are neither existing nor defined in a preceding task

Avoid premature code dumps:

  • Do not write full test function bodies or large fixture/mock data payloads in the plan.
  • Do not draft complete production method bodies in the plan.
  • Focus on interfaces, signatures, algorithms, and test coverage requirements. Code belongs in the implementation phase under compiler and linter enforcement.
Show full SKILL.md (608 more words)Show less

Step 5: Self-Review & Verification

After writing the complete plan, check it against the original spec and the live codebase.

  1. Spec coverage — can you point to a task for each requirement? List gaps.
  2. Placeholder scan — search for any of the patterns listed above. Fix them.
  3. Codebase alignment — double-check that every modified file, function signature, or imported module exists or is explicitly created in a preceding task.
  4. Type consistency — do types, method signatures, and property names match across tasks? A function called clearLayers() in Task 3 but clearAllLayers() in Task 7 is a bug.
  5. Simplicity — can the design be explained in its two-sentence summary, and does every new moving part have a present-day justification? Remove or explicitly defer anything that does not.

Fix issues inline. If a spec requirement has no task, add the task.

Step 6: Review the Plan with the User

Do not write the plan to GitHub yet. After self-review, walk the user through the plan slowly, one task at a time, so they can validate the approach, ask questions, and request changes before it becomes canonical.

  1. Briefly present the document header, file map, and task list.
  2. Present Task 1 in full, explain its deliverable and dependencies, then stop and ask for feedback. Do not continue to the next task until the user has had an opportunity to respond.
  3. Repeat for every remaining task. Incorporate agreed changes into the plan before moving on; keep interfaces, tests, and task boundaries consistent when a change affects multiple tasks.
  4. After the final task, show or summarize the revised complete plan and ask for explicit approval to persist it. Approval must be unambiguous (for example, "approve the plan" or "post it to GitHub"). Questions, silence, or approval of an individual task are not approval to publish the plan.
  5. If the user requests changes, revise the plan and repeat the affected parts of the walkthrough and final approval request.

Step 7: Persist the Approved Plan on GitHub

Only after the user explicitly approves the complete plan:

  1. Verify there is a GitHub remote: gh repo view --json nameWithOwner — if it fails, stop and tell the user.
  2. Determine the destination:
    • Existing implementation/feature/bug issue: when the user supplied an issue number, or the plan is clearly for an existing issue, that issue is the canonical destination. Do not create a separate [PLAN] issue. Post the full final plan as a new comment on that issue:
      gh issue comment <issue-number> --body-file /tmp/<repository>-issue-<issue-number>-plan.md
      Keep the issue body as a concise problem/scope summary with a link to the canonical plan comment; do not leave a second, less precise plan in the body.
    • No existing issue: create one standalone plan issue:
      gh issue create --title "[PLAN] <feature-name>" --body-file /tmp/<repository>-plan.md
  3. Before posting to an existing issue, inspect its comments for earlier implementation plans:
    gh api repos/<owner>/<repo>/issues/<issue-number>/comments --paginate
    Remove superseded plan comments so there is exactly one canonical implementation plan. Delete only comments authored by the current user/agent; if an obsolete plan comment belongs to someone else, ask the user before deleting it.
  4. After posting, verify the issue has one canonical plan and no obsolete plan comments.
  5. Label the issue ready-for-impl so it's easy to find issues with a fully formed plan versus ones still needing investigation:
    gh issue edit <issue-number> --add-label ready-for-impl
    If the label doesn't exist yet in the repo, create it first:
    gh label create ready-for-impl --description "Has a fully formed implementation plan, ready for automated/manual implementation" --color 0E8A16
  6. Tell the user the issue URL and ask how they want to proceed: inline execution in this session, or they'll drive it themselves.

© jackfranklin, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in claude/skills/write-plan of jackfranklin/dotfiles.

Open the folder on GitHubat commit 7ec4998

Compare with similar skills

Write Plan next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Write Plan compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Write Plan this skilljackfranklin/dotfiles255—~3.3kAutomated safety check: PassMIT
Improvefossasia/eventyay-interpretation1.6k10 repos~3.7kAutomated safety check: WarnMIT
Test-First Implementation Plangittower/git-flow-next458—~1.3kAutomated safety check: NotesCustom licence
Dev PlanFHIR/fhir-codegen154—~6.1kAutomated safety check: PassMIT
Ask NavigatorYeachan-Heo/oh-my-claudecode40k—~4.1kAutomated safety check: PassMIT
Reuse Before BuildAi-Eastern/reuse-before-build101—~5kAutomated safety check: PassMIT

Similar skills

  • Improve

    fossasia/eventyay-interpretation

    Survey any codebase as a senior advisor and produce prioritized, self-contained implementation plans for OTHER models/agents to execute.

    1.6k GitHub starsUsed in 10 repos~3.7k tokens
    Agent WorkflowsAuto-check: warnings
  • Test-First Implementation Plan

    gittower/git-flow-next

    Builds a two-phase implementation plan from a spec issue, analysis or concept, writing a detailed test plan first and the implementation outline second.

    458 GitHub stars~1.3k tokensUpdated 29 days ago
    Agent WorkflowsAuto-check: notes
  • Dev Plan

    FHIR/fhir-codegen

    Builds and iterates on a detailed implementation plan in the role of a staff-level Engineering Lead, working from either a featurerequest.md (from dev-request) or a bugreport.md (from dev-report).

    154 GitHub stars~6.1k tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check passed
  • Ask Navigator

    Yeachan-Heo/oh-my-claudecode

    Charts a foggy effort into a map of decision tickets on the repo's issue tracker and works through them one per session, producing decisions rather than deliverables.

    40k GitHub stars~4.1k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Reuse Before Build

    Ai-Eastern/reuse-before-build

    Discover reusable implementations and tests before architecture design, substantial changes, or test work.

    101 GitHub stars~5k tokensUpdated 11 days ago
    Testing & QAAuto-check passed
  • Dev Report

    FHIR/fhir-codegen

    Drafts and iterates on local-development bug reports in the role of a staff-level Tech Lead.

    154 GitHub stars~4.1k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed

More from jackfranklin/dotfiles

All 19 skills in this repo
  • GitHub Code Review

    jackfranklin/dotfiles

    Perform a thorough, read-only review of one GitHub pull request.

    255 GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Adr

    jackfranklin/dotfiles

    Capture an Architecture Decision Record (ADR) for a significant decision made in the current project.

    255 GitHub stars~962 tokensUpdated today
    Auto-check passed
  • Jack References

    jackfranklin/dotfiles

    Manage Jack's personal technical reference library at ~/git/references.

    255 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Later

    jackfranklin/dotfiles

    Log items to come back to later — bugs found mid-task, feature ideas, project feedback — as GitHub Issues.

    255 GitHub stars~767 tokensUpdated today
    Auto-check passed
  • New Deno App

    jackfranklin/dotfiles

    Scaffold a new Deno 2 + Hono + Deno KV + Eta + HTMX app with password auth and PWA support.

    255 GitHub stars~3.6k tokensUpdated today
    Auto-check: notes
  • Resolve Merge Conflict

    jackfranklin/dotfiles

    A skill your agent uses when you need to resolve an in-progress git merge/rebase conflict.

    255 GitHub starsUsed in 21 repos~427 tokens
    Auto-check passed

Works with

Questions about Write Plan

What does Write Plan do?

Write a right-sized, reviewable implementation plan as a series of focused tasks, with exact file paths, interface contracts, behavioral test specifications, and verification commands. Write Plan is an agent skill from jackfranklin/dotfiles. Write a right-sized, reviewable implementation plan as a series of focused tasks, with exact file paths, interface contracts, behavioral test specifications, and verification commands.

When should I use Write Plan?

Write Plan fits situations like: tasks that involve Planning; tasks that involve Test coverage.

How do I install Write Plan in Claude Code?

Run `npx skills add jackfranklin/dotfiles --skill write-plan -a claude-code`. Or copy the skill folder (claude/skills/write-plan in jackfranklin/dotfiles) into .claude/skills/write-plan in your project. Claude Code loads it when a task matches its description.

How do I install Write Plan in Codex?

Run `npx skills add jackfranklin/dotfiles --skill write-plan -a codex`. Or copy the skill folder (claude/skills/write-plan in jackfranklin/dotfiles) into .agents/skills/write-plan in your project. Codex loads it when a task matches its description.

Can I use Write Plan in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jackfranklin/dotfiles --skill write-plan -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/write-plan, .gemini/skills/write-plan, .github/skills/write-plan and .opencode/skills/write-plan in your project.

What does Write Plan need to run?

Going by SKILL.md and its folder, Write Plan needs the command-line tools its instructions call (gh, npm and git).

Does Write Plan access the network?

SKILL.md contains no URLs. Its commands use gh, npm and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Write Plan safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Write Plan use?

Write Plan is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Write Plan use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Write Plan?

Skills that share tags, products or a category with Write Plan: Improve (fossasia/eventyay-interpretation, 1.6k stars), Test-First Implementation Plan (gittower/git-flow-next, 458 stars), Dev Plan (FHIR/fhir-codegen, 154 stars) and Ask Navigator (Yeachan-Heo/oh-my-claudecode, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Write Plan?

jackfranklin (a GitHub user) maintains it in jackfranklin/dotfiles, which has 255 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 7, 2026.

Source: jackfranklin/dotfiles on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.