Intent in-plan
Planning kickoff: show workplan, invoke coding skills, enforce rules before coding
git clone https://github.com/matthewsinclair/intent
T=$(mktemp -d) && git clone --depth=1 https://github.com/matthewsinclair/intent "$T" && mkdir -p ~/.claude/skills && cp -r "$T/intent/plugins/claude/skills/in-plan" ~/.claude/skills/matthewsinclair-intent-in-plan && rm -rf "$T"
intent/plugins/claude/skills/in-plan/SKILL.mdPlanning Kickoff
Structure the next piece of work before writing any code. Plans are documented in steel threads before implementation begins.
Procedure
1. Document the work first
ALWAYS create or update steel thread and work package docs BEFORE coding:
- If no ST exists for this work, create one:
intent st new "Title" - If no WP exists, create one:
intent wp new <STID> "Title" - Write the plan in the ST's
or WP'sdesign.mdinfo.md
2. Show detailed workplan
Present the workplan with:
- What will be built or changed
- Which files will be modified (check MODULES.md first)
- What new modules are needed (register in MODULES.md first)
- Expected test approach
3. Plan quality standards
Every plan must meet these standards before presenting to the user:
No placeholders: Plans must not contain "TBD", "TODO", "handle edge cases", "implement as needed", or similar deferred language. If you don't know the answer yet, that's a question for the user, not a placeholder.
Specific file paths: Every step must name the files it will create or modify. "Update the config" is not a step. "Add pool_size to config/runtime.exs" is.
Small steps: Each step should be independently verifiable. If a step modifies more than 3 files, split it. If a step takes more than a few minutes of coding, split it.
Verification per step: Each step includes how to verify it worked (test command, build command, or manual check). A step without verification is not a step.
4. Invoke relevant coding skills
Load the appropriate enforcement skills for the work:
-- always/in-essentials
-- for Elixir code/in-elixir-essentials
-- for Ash/Ecto code/in-ash-ecto-essentials
-- for LiveView code/in-phoenix-liveview
-- for test code/in-elixir-testing
5. Enforce project rules
These rules apply to ALL languages (Elixir, Rust, Swift, Lua):
- Highlander Rule: No duplicated code paths. Check MODULES.md.
- Thin Coordinators: Controllers, LiveViews, CLI commands are thin. Business logic in services.
- PFIC: Pure-Functional Idiomatic Code. Prefer pure functions, tagged tuples, pattern matching.
6. Wait for user review
Present the plan and wait for approval before proceeding. Do not start coding until the user confirms.
Skill Chain
After planning is approved, consider:
-- pick the first work unit from the plan/in-next
Red Flags
| Rationalization | Reality |
|---|---|
| "This is simple, no plan needed" | Simple tasks grow. The plan takes 2 minutes. |
| "I'll figure it out as I go" | Ad-hoc coding produces ad-hoc results. |
| "The user wants speed, skip planning" | Plans prevent rework. Rework is slower than planning. |
| "I already know the codebase" | Check MODULES.md anyway. Memory drifts. |