Plan
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
Produce a concrete, step-by-step implementation plan for a task — grounded in the real state of the
codebase — and write it to implementation_plan.md at the repository root. This skill does not modify
source code; its only output artifact is the plan file itself.
Purpose
iru-plan turns a tracked ticket (a GitHub issue or a Jira ticket, auto-detected like iru-explore) or a
free-form task description into a reviewable, checkbox-driven list of implementation steps before any code
changes begin. If implementation_plan.md already exists at the repository root, it determines whether that
plan matches the requested task and asks the user whether to resume it as-is, discard and regenerate it, or
update it while preserving already-completed work. It grounds itself in the actual codebase (via iru-explore),
resolves only genuinely ambiguous decisions with the user, groups tasks into dependency-aware task groups (each
marked whether its tasks can be implemented in parallel), and determines which <key>-code-one-task skill (e.g.
iru-java-code-one-task, iru-dotnet-code-one-task) each task belongs to — once for the whole plan if uniform,
tagged per top-level task otherwise — so the iru-code skill that later executes it, via
iru-code-one-task-group, knows exactly which language-specific group skill to dispatch each task group to
without re-inferring it. When a tracked ticket is involved, the plan’s Task summary records an explicit Source:
line (e.g. Source: GitHub issue #42 or Source: Jira PROJ-123) so iru-code’s own archiving step can name the
archived plan after the exact ticket it resolved, rather than falling back to a timestamp. Everything is written
to `implementation_plan.md — the artifact iru-code later executes group by group.
Inputs
| Argument | Required | Description | Default |
|---|---|---|---|
|
No |
A GitHub issue number or a Jira key (e.g. |
None — if neither a ticket id nor a free-form description is provided, the skill asks the user which one they want to plan around. |
Free-form task description |
No |
A manually described piece of work (given in the invocation or immediately preceding messages) to plan instead of a ticket. |
None — mutually exclusive with |
Outputs
-
implementation_plan.mdat the repository root — overwritten if the user chose to discard an existing plan, merged into (preserving completed tasks) if the user chose to update one, or left completely untouched if the user chose to skip planning and resume execution of the existing file as-is. -
The plan is structured as: a task summary (including a
Source:line naming the originating GitHub issue or Jira ticket, if any, and a plan-wide Language/framework line if every task shares one key), a summary of the current relevant code state (concrete file paths and class/method names), and implementation steps organized into task groups — each group naming itsParallelizableverdict and containing its tasks/sub-tasks, every one carrying its own empty markdown checkbox ([ ]) foriru-codeto check off later, numbered continuously across the whole plan (Task N/Task N.M) and tagged with its own language/framework key. -
The distinct set of
<key>-code-one-taskkeys involved, resolved against which such skills are actually installed in this repository (find .claude/skills -maxdepth 1 -type d -name "*-code-one-task") — a task whose language/framework has no matching skill installed is still recorded accurately, just without a dispatchable tag. -
Any decisions made on the user’s behalf (per the ambiguity-resolution step) are stated in the plan itself, with a one-line rationale, rather than asked upfront.
-
No source code, configuration, or documentation outside
implementation_plan.mdis ever modified. -
A short summary in the conversation once the plan is written — including how many task groups were formed and which, if any, are non-parallelizable and why — asking the user to review it before implementation starts.
Execution flow
Dependencies
Invokes
-
Explore — grounds the plan in the real codebase (scoped to the issue id, if any), unless equivalent exploration already happened earlier in the conversation.
Invoked by
-
Issue — Step 5 runs
iru-plan(scoped to the ticket id) right afteriru-explore, as part of its explore → plan → code → PR pipeline. After a reviewableimplementation_plan.mdexists,iru-issueoffers to hand the resulting plan off toiru-codefor automatic implementation.
Related agents
iru-plan itself does not spawn any Agent — it calls the iru-explore skill directly and otherwise only reads the
codebase and writes the plan file. However, the implementation_plan.md it writes explicitly instructs
whoever executes that plan (normally the iru-code skill, via iru-code-one-task-group and the language-specific
<key>-code-one-task-group skill it dispatches to) to delegate each task’s test run to the
iru-gate-runner agent, if installed, rather than running tests inline, so test
output doesn’t consume the executing agent’s main context window. This is an instruction iru-plan embeds in its
output file for a later execution step to follow — not an Agent() call iru-plan makes itself.
Source
SKILL.md on GitHub — the file this page was generated from.