l3io-plan
Validate readiness, elaborate stories, estimate, build dependency graph, and produce an executable plan.
Skill by ravensorb
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/ravensorb-l3io-plan
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: legal
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
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/l3io-plan
What's inside
- Skill name
l3io-plan- Description
- Validate readiness, elaborate stories, estimate, build dependency graph, and produce an executable plan. Use when the user wants to plan across epics before execution, to re-estimate existing ones, or to reorganize a plan that is legal but badly shaped. Use /l3io-plan for a full plan, /l3io-plan estimate [E{nnn}|E{nnn}-S{nn}] to re-estimate only, /l3io-plan reorg to propose a better plan shape.
- License
- MIT
- Instructions
- 140 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (25)
- SKILL.md
- customize.toml
- payload-manifest.json
- ac-dimensions.md · references/
- auto-remediation.md · references/
- calibration-model.md · references/
- config-resolution.md · references/
- metrics-contract.md · references/
- status-files.md · references/
- plan-graph.py · scripts/
- reorg-derive.py · scripts/
- reorg-validate.py · scripts/
- step-lanes.md · steps/lanes/
- step-02-readiness-check.md · steps/plan/
- step-03-story-elaboration.md · steps/plan/
- step-04-load-state.md · steps/plan/
- step-05-dependency-graph.md · steps/plan/
- step-06-plan-output.md · steps/plan/
- step-backlog-intake.md · steps/plan/
- step-reorg-undo.md · steps/reorg/
- step-reorg.md · steps/reorg/
- step-00-activate.md · steps/shared/
- step-00-digest.md · steps/shared/
- step-01-classify-work.md · steps/shared/
- step-estimate.md · steps/shared/
SKILL.md (first lines)
# l3io-plan
Communicate all responses in `{communication_language}`.
## Conventions
- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).
- `{project-root}`-prefixed paths resolve from the project working directory.
- Bare paths (e.g. `steps/shared/step-00-activate.md`) resolve from `{skill-root}`.
## On Activation
Run: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`
If the script fails, resolve the `workflow` block by reading `{skill-root}/customize.toml`, then `{project-root}/_bmad/custom/l3io-plan.toml` (team), then `{project-root}/_bmad/custom/l3io-plan.user.toml` (personal) in order. Scalars override, arrays append.
`setup`, `configure`, and `install` are not recognized arguments here — `/l3io-setup` is the module's setup entry point. Config itself is resolved in step-00-activate per `{skill-root}/references/config-resolution.md`; an absent `modules.l3io-pm` section means the module has no overrides, not that it needs setup.
## Execution
**All modes — load first:**
```
{skill-root}/steps/shared/step-00-activate.md
```
Before reading any further state, apply the once-per-project setup pointer
(`{skill-root}/references/config-resolution.md` §5) — this skill is one of the two skills the
pointer is wired into. It fires only when `{l3io_pm_section_absent}` (bound in step-00-activate
§1, from config already resolved there) is `true` — a configured project gets no pointer at
all:
```bash
if [ "{l3io_pm_section_absent}" = "true" ]; then
uv run {pm_status} notice --state-root {pm_state_root} --key setup-pointer && \
echo "l3io-pm currently has no project-level configuration. /l3io-setup configures it if you want to."
fi
```
`notice` is keyed on `--key` alone, not a session — there is no cross-invocation session
identifier available (`{session_id}` is bound fresh per invocation), so this fires **at most
once ever** for this project, not once per invocation. Exit 1 means this key was already
recorded — print nothing further, permanently, for this key. Exit 2 means recording it
actually failed (never conflated with exit 1). Never halt on any branch, and never treat this
as a setup trigger.
```
{skill-root}/steps/shared/step-01-classify-work.md
```
**Mode routing.** Match the argument against this table; everything it does not match is the
full plan mode. Each mode's body lives below or in its own `steps/` file — this file routes
and carries no procedure.
| Keyword | Load | Menu | Notes |
|---|---|---|---|
| `plan` (or no argument) | the full-plan step list below | registered | the default: readiness → elaboration → graph → estimate → snapshot |
| `estimate` | `steps/shared/step-estimate.md` | registered | re-estimate only; optional `E{nnn}` or `E{nnn}-S{nn}` scope |
| `reorg` | `steps/reorg/step-reorg.md` | registered | propose, confirm and apply a better plan shape — writes planned work only |
| `lanes` | `steps/lanes/step-lanes.md` | registered | who owns what when several developers share one plan; inert unless `lane_count` > 1 |
**Undo has no keyword, by design.** A user asks for it in prose — "undo that reorg" — and the
agent resolves which journal entry they mean. Load `steps/reorg/step-reorg-undo.md` on such a
request. There is no flag for it and none of this skill's modes parse one.
**Full plan mode** (default — no args, or args that do not start with `estimate` or `reorg`):
Bind `{scope}` = `all` before loading step-estimate.
```
{skill-root}/steps/plan/step-backlog-intake.md ← offers backlog → story promotion; never automatic
{skill-root}/steps/plan/step-02-readiness-check.md
{skill-root}/steps/plan/step-03-story-elaboration.md ← no-op when readiness is green
{skill-root}/steps/plan/step-04-load-state.md
{skill-root}/steps/plan/step-05-dependency-graph.md
{skill-root}/steps/shared/step-estimate.md
{skill-root}/steps/plan/step-06-plan-output.md
```
**Estimate mode** (args start with `estimate`):
Parse scope from arg: `estimate` → `{scope}=all`; `estimate E{nnn}` → `{scope}=E{nnn}`; `estimate E{nnn}-S{nn}` → `{scope}=E{nnn}-S{nn}`. Then load:
```
{skill-root}/steps/shared/step-estimate.md
```
Output estimate summary only. No graph, no elaboration, no plan document.
Estimate mode writes state and **must not touch any plan snapshot** — snapshots are immutable
once written, and `l3io-execute` may be reading one concurrently. Their estimate blocks are a
point-in-time report stamped `estimates_as_of` (see `step-06-plan-output.md` §2); re-estimating
makes that stamp stale, which is the stamp doing its job.
Say so rather than silently leaving a stale report behind. After the summary:
```bash
test -f {planning_artifacts}/plan-output-meta.yaml && \
grep '^current_plan:' {planning_artifacts}/plan-output-meta.yaml
```
If a pointer exists, print:
```
ℹ️ Estimates updated in state. {current_plan} still shows the estimates from when it was
generated — run /l3io-plan (full) to produce a snapshot with the new numbers.
Execution is unaffected: l3io-execute reads estimates from state, not the snapshot.
```
If no pointer exists, print nothing — there is no snapshot to go stale.
**Reorg mode** (arg starts with `reorg`):
```
{skill-root}/steps/reorg/step-reorg.md
```
Proposes one improvement to the shape of the plan, shows it as a plan summary the user can
accept or reject in about a minute, and applies it only on confirmation. It writes **planned
work only**; active and archived work is read-only input. Nothing is deleted — a retired epic
is archived with its reason recorded, and the whole reorg is journaled so it can be undone.
**Undo** (a conversational request, never a flag):From ravensorb/bmad-extensions, MIT.
More from ravensorb/bmad-extensions
- 0.570score
l3io-arch-review
ravensorb
Engineering-standards architecture guardrails and review.
SkillAFreshness: AClaude Code +9 - 0.570score
l3io-execute
ravensorb
Run the l3io-pm plan — full, single epic, or single sprint.
SkillAFreshness: AClaude Code +9 - 0.570score
l3io-help
ravensorb
Read project state and recommend the exact next l3io action, or list every installed l3io skill.
SkillAFreshness: AClaude Code +9 - 0.570score
l3io-sec-redteam
ravensorb
Red team security analysis agent.
SkillAFreshness: AClaude Code +9 - 0.570score
l3io-setup
ravensorb
Sets up the LiquidLogicLabs PM module in a project.
SkillAFreshness: AClaude Code +9 - 0.570score
l3io-sync
ravensorb
Bidirectional sync between l3io-pm state and GitHub Issues.
SkillAFreshness: AClaude Code +9 - 0.570score
l3io-doctor
ravensorb
Migration and housekeeping utilities for BMad artifacts and l3io-pm state.
SkillAFreshness: AClaude Code +9 - 0.556score
l3io-pm-plan
ravensorb
DEPRECATED forwarder for /l3io-plan — renamed in 3.1.3.
SkillAFreshness: AClaude Code +9 - 0.556score
l3io-pm-help
ravensorb
DEPRECATED forwarder for /l3io-help — renamed in 3.1.3.
SkillAFreshness: AClaude Code +9 - 0.556score
l3io-pm-sync
ravensorb
DEPRECATED forwarder for /l3io-sync — renamed in 3.1.3.
SkillAFreshness: AClaude Code +9 - 0.556score
l3io-pm-execute
ravensorb
DEPRECATED forwarder for /l3io-execute — renamed in 3.1.3.
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 22, 2026 (8 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ravensorb/bmad-extensions
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ravensorb
- 0.570score
l3io-arch-review
ravensorb
Engineering-standards architecture guardrails and review.
SkillAFreshness: AClaude Code +9 - 0.570score
l3io-execute
ravensorb
Run the l3io-pm plan — full, single epic, or single sprint.
SkillAFreshness: AClaude Code +9 - 0.570score
l3io-help
ravensorb
Read project state and recommend the exact next l3io action, or list every installed l3io skill.
SkillAFreshness: AClaude Code +9 - 0.570score
l3io-sec-redteam
ravensorb
Red team security analysis agent.
SkillAFreshness: AClaude Code +9 - 0.570score
l3io-setup
ravensorb
Sets up the LiquidLogicLabs PM module in a project.
SkillAFreshness: AClaude Code +9 - 0.570score
l3io-sync
ravensorb
Bidirectional sync between l3io-pm state and GitHub Issues.
SkillAFreshness: AClaude Code +9
Cite this page
l3io-plan skill. Agent Mart. https://agentmart.dev/skills/ravensorb-l3io-plan (last updated 2026-10-24)