plan-feature
Use when planning a feature too big to hold in one session.
Skill by lwlee2608
Chalk Labs
Need help deploying plan-feature?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/lwlee2608-plan-feature
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/plan-feature
What's inside
- Skill name
plan-feature- Description
- Use when planning a feature too big to hold in one session. Settles every open decision by asking the user, locks the answers into one markdown plan file, then cuts the work into phases the user can verify one at a time.
- License
- MIT
- Instructions
- 104 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Plan a Feature
Two failure modes: guessing at decisions that belong to the user, and slicing by layer so nothing is visible until the last phase. Settle decisions first, then cut vertical slices. Finish stage 1 before stage 2; a task list built around an open decision gets thrown away.
The plan lives at `plans/<feature-slug>.md`, unless the repo keeps design docs elsewhere or the user names a directory. If a plan for this feature exists, resume it.
## Stage 1 — Settle every decision
**Ask the intent first.** Ask what end goal or trigger is behind the request. Offer your best guesses as options. Never infer the Why from the request; a plausible guess is still a guess. If the goal points to a smaller or different fix, say so once, then follow.
**Ask how deep to interview, next.** Record it as the first Decision. It governs every question in both stages, except intent, framing gaps, and deploys, which are always asked.
- **Key decisions only** (recommended): ask what is expensive to reverse; settle the rest as `agent`.
- **Ask everything:** ask every decision, cheap ones included; make no `agent` picks.
- **Agent decides:** settle everything else as `agent`, and show the list before stage 2.
**Read the code first.** Learn the files touched, the patterns, and the libraries in use. Offer only options the codebase can take.
**Frame the feature.** Write the four framing lines from the format below, taking The Why from the intent answer. If you cannot write a line, ask about it first.
**Answer what the code answers.** Library support, existing schema, and how a similar feature works are research, not decisions. Tag them `research`. Never ask what you could read.
**Ask about what matters.** Under key decisions only, ask what is expensive to reverse, usually scope, data model, public API, or what the user sees, and settle cheap-to-reverse calls yourself. Use the Why to rank questions: ask what bears on it, settle what does not. Tag every pick you make `agent`. Use `AskUserQuestion` with concrete options, your recommendation first, and the real trade-off in each. Batch independent questions, up to four per call; ask a follow-up only after the answer it depends on lands. Ask about decisions ("where do retries belong?"), not work ("add the retry handler").
**Plan only the technical detail that binds.** Keep invariants the reviewer must enforce, security rules, contracts outside the code (webhook URLs, flags flipped at rollout), and expensive-to-reverse choices, stated as properties ("prices per currency, in minor units"), not columns. Leave schema columns, endpoint paths, enum values, env names, and test cases to the builder and reviewer; a locked guess made before the code exists binds them to it. Leave branching to the build skill. Restate rules from other docs that bind the build; a fresh builder skips a pointer.
**Settle the demo.** One demo for the whole feature, run after every phase merges. Ask whether the user wants one and what it is: steps they run, a walkthrough you run, or an end-to-end check. `none` is valid unless a phase defers its Verify.
**Write the file as you go.** Record answers as they land and mark unanswered ones `_open_`, so an interrupted session can resume. Each answer can expose a new question; keep going until none is open.
**Disagree once, then follow.** If you disagree with any pick in this skill, say why in two lines, then record the user's call.
**Move to stage 2 only when nothing is open,** no answer is hedged, and the user has seen every `agent` pick.
## Stage 2 — Cut the work into phases
**Slice vertically.** Layer phases (`Backend`, `Frontend`, `Database`, `Tests`, `Setup`) keep the user blind until the end and push integration problems last.
```
Bad — layer slices, nothing usable until the end
Phase 1 Backend [db][api]............ user sees nothing
Phase 2 Frontend ...........[ui][wire] everything lands at once
Good — feature slices, each one usable
Phase 1 Log in [db][api][ui] user has an account
Phase 2 Generate an image [db][api][ui] user makes an image
Phase 3 Animate it [db][api][ui] user makes a clip
```
**Name phases by what the user gains.** "Log in and see an empty library", not "Auth layer".
**Give every phase a Verify line** that fails without the phase's code: a command, URL, click path, or test. "Checks pass" is not one. State the steps and the observable result; name queries or flags only when nothing visible shows the result. If you cannot write one, it is not a phase.
**Mind slow Verify steps.** The builder runs fast checks after every fix but slow ones (E2E, Playwright, integration tests that boot services or sleep) only for what changed, and in full before merge when CI doesn't. A Verify line that runs slow tests filters to the phase's cases by file or name, never the whole suite. Keep its proof fast where a test can show it; leave cross-repo runs to `## Demo`.
**Verify locally,** with a dev server, test database, or scratch account. The builder must run every Verify line without stopping. If there is no local proof, add a fixture rather than target production.
- A step that needs a deployed URL, shared database, or production credential is a rollout step. List it at the end of the plan for the user to run after merge.
- A step that needs the user's own device or personal account goes in `## Demo`.
- Never plan a deploy for a Verify line or the demo unless the user explicitly agrees.
**Defer Verify only when a phase has no local surface:** `**Verify:** deferred — <why>`, and the demo must cover it. Never defer work you have not thought through. Two deferrals in a row means the slices are wrong.
**Size each phase to one build session:** write, verify, and review fixes in one context. Put the smallest visible thing first, each phase building on what already runs. Prefer 3-6 phases; one is fine if the feature fits one session. Cut the slices, then ask the user how many phases they want, with your count first and what each option merges or splits. Never split just to hit a count.
**Give every phase a Blocked by line:** phases that must merge first, or `none`. A phase is blocked when it needs their code, shares their files, or the user chose sequential. This graph, not plan order, decides what runs in parallel. If two phases do not block each other and share no files, ask whether to run them as `2a`/`2b`.
**Write tasks as unchecked imperatives, one sitting each, naming the file:** `- [ ] Add source_generation_id to generations (internal/db/migrations)`. Say what, not how: `Retry failed uploads`, not `Loop with exponential backoff, max 3`. If the user requires a specific way, record it as a Decision. The builder ticks the boxes.
**Locked decisions stay locked.** If the build proves one wrong, amend Decisions explicitly and name the phases it affects. Never quietly re-plan around the user's choice.
**List stage 2's `agent` picks at the end** so the user can overturn any.
## Plan file format
```markdown
# <Feature>
**The Job** — <what gets built>
**The Why** — <end goal behind the ask, from the user: who needs it, what breaks or stalls without it>
**The Guardrail** — <what must not change — omit if none>
**Done means** — <observable outcome that closes the feature>
## Decisions
- **Interview depth** — <key decisions only | ask everything | agent decides>
- **<question>** — <answer, one or two lines>
- **<question>** — <answer> `agent`
- **<question>** — <answer> `research`
- **<question>** — _open_ <-- only while stage 1 is running
## Progress
Active: 1 · 0/11 tasks
### Phase 1 — <what the user gains>
<one line: what they can do now that they could not before>
**Blocked by:** <phase numbers, or `none`>
- [ ] <task>
- [ ] <task>
**Verify:** <command, URL, click path, or test — or `deferred — <why>`>
## Demo
<how the finished feature gets shown once every phase has merged — or `none`>
```
Add sections the feature needs, such as constraints, post-merge rollout steps, or what was ruled out. Nothing else.From lwlee2608/agent-skills, MIT.
More from lwlee2608/agent-skills
- 0.587score
build-feature
lwlee2608
Use when implementing a phased feature plan file.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
gh-create-pr
lwlee2608
Use when creating/raising/opening/submitting a GitHub PR.
SkillAFreshness: A★ 1Claude Code +9 - 0.586score
create-skill
lwlee2608
Use when creating a new agent skill.
SkillAFreshness: A★ 1Claude Code +9 - 0.586score
review-code
lwlee2608
Use when asked to review a local diff, a GitHub PR, or a whole codebase.
SkillAFreshness: A★ 1Claude Code +9 - 0.576score
merge-pr
lwlee2608
Merge a GitHub PR, close linked issues, and delete the branch.
SkillAFreshness: A★ 1Claude Code +9 - 0.562score
second-opinion
lwlee2608
Use when the user asks for a second-opinion review from another agent (e.g., "get a second opinion", "review with pi", "review using gpt-6-astra"…
SkillAFreshness: A★ 1Claude Code +9 - 0.562score
review-loop
lwlee2608
Use only when the user explicitly asks to review and fix in a loop until clean.
SkillAFreshness: A★ 1Claude Code +9 - 0.562score
whoami
lwlee2608
Use when the user asks for the current session's ID (e.g., "/whoami", "what's your session id", "who are you") so another agent session can find or message…
SkillAFreshness: A★ 1Claude Code +9 - 0.562score
retro
lwlee2608
Use when the user asks for a retrospective on an agent session ("/retro", "how did this session go", "what could this session do better"), for the current…
SkillAFreshness: A★ 1Claude Code +9 - 0.547score
explain-outcome
lwlee2608
Use when reporting a failed command, test, build, or deploy, an investigation into an error or incident, or the result of a multi-step task.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
generate-media
lwlee2608
Use when generating or editing an image or video with an AI model — ads, mockups, style variations, image-to-video.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
linear-issues
lwlee2608
Use when reading, searching, creating, updating, or commenting on Linear issues.
SkillBFreshness: B★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 23, 2026 (7 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/lwlee2608/agent-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from lwlee2608
- 0.587score
build-feature
lwlee2608
Use when implementing a phased feature plan file.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
gh-create-pr
lwlee2608
Use when creating/raising/opening/submitting a GitHub PR.
SkillAFreshness: A★ 1Claude Code +9 - 0.586score
review-code
lwlee2608
Use when asked to review a local diff, a GitHub PR, or a whole codebase.
SkillAFreshness: A★ 1Claude Code +9 - 0.586score
create-skill
lwlee2608
Use when creating a new agent skill.
SkillAFreshness: A★ 1Claude Code +9 - 0.576score
merge-pr
lwlee2608
Merge a GitHub PR, close linked issues, and delete the branch.
SkillAFreshness: A★ 1Claude Code +9 - 0.562score
review-loop
lwlee2608
Use only when the user explicitly asks to review and fix in a loop until clean.
SkillAFreshness: A★ 1Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get plan-feature running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
plan-feature skill. Agent Mart. https://agentmart.dev/skills/lwlee2608-plan-feature (last updated 2026-10-24)