plan

An interactive planning workflow for turning a parent DevStride item into a structured set of releases and smaller stories with dependencies.

In plain words
What is it for?
Use it to discover requirements, create a delivery hierarchy, define each work item, and connect items that must wait for one another.
Why use it?
It helps turn a broad project idea into work that developers can execute in order, without relying on repeated clarification during implementation.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/devstride/claude-plugin/plan
Any agent
npx skills add devstride/claude-plugin --skill plan
Clone the repo
git clone --depth 1 https://github.com/devstride/claude-plugin

Made for: Claude Code, Codex.

Per session 23 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 7,717 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00023 $0.07717
Opus 5 $0.00012 $0.03859
Sonnet 5 $0.00005 $0.01543
Haiku 4.5 $0.00002 $0.00772

Measured yesterday against content hash cf59f454a3e1, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

plan scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/plan/SKILL.md · 284 lines

How it starts

The opening of the file, as written. The whole thing — 284 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Human output. Read ${CLAUDE_PLUGIN_ROOT}/skills/build-item/references/plain-language-output.md once per top-level run; composed skills reuse it. Apply it to every message.

Drive a top-2%-quality DevStride plan into existence under a parent item (any grouping level of the organization's hierarchy; this org's Module/Capability/Epic) through an interactive discovery loop with the user — NOT a one-shot autogenerated document. Ends with a full grouping-item → release-unit → leaf hierarchy (this org: Capability→Epic→Story), every level specced to the depth ultracode-build can execute from unattended, and every leaf wired into a real blocked_by/blocks dependency chain so /devstride:build-item can walk the whole plan from its first root story with minimal back-and-forth.

Argument — a parent item number to plan under (any grouping level of your organization's hierarchy, e.g. this org's Module/Capability/Epic; I20100), optionally followed by a short description of what's being planned, and optionally one delivery profile — the bare word prototype, standard or enterprise anywhere in the arguments (/devstride:plan I20100 prototype; step 0 resolves it, and it shapes leaf grain and spec depth per ${CLAUDE_PLUGIN_ROOT}/skills/plan/references/delivery-profiles.md); empty → ask which parent item to plan under: $ARGUMENTS

User-facing vocabulary. Container is internal shorthand in this file for a non-executable hierarchy item that can own child items. Never use it as the noun in a user-facing question, confirmation or report: developers reasonably read “container” as Docker. Say parent item when referring to the supplied I#####, grouping item when the exact type is not yet known, or — best of all — use the organization’s actual work type name (Capability, Epic, Initiative, and so on) once step 0 resolves it. Internal algorithms may continue to use container/leaf classification.

IMPORTANT — the DevStride MCP targets PRODUCTION (api.devstride.com). Every create_item, update_item, add_relationship, and bulk_update_items call this skill makes writes real, live data into the org's roadmap immediately — there is no draft/sandbox mode. Get explicit sign-off before creating anything.

IMPORTANT — this is fundamentally an INTERACTIVE, LOOP-BASED skill, not a document generator. The core value is the qualifying-question loop with the user: scope boundaries, sequencing tradeoffs, deviations from any existing design doc, what's V1 vs deferred, what parallelizes vs what's a hard gate. Do not skip ahead to mass item-creation before the human has actually made those calls. If you find yourself about to invent an architecture decision the user hasn't weighed in on, STOP and ask.

IMPORTANT — keep interactive scope and architecture decisions in the main conversation: a Workflow cannot ask the human mid-run. Use Workflow only after the hierarchy is approved, with parallel() for independent release units and pipeline() for dependent stages. Its agents draft only; they never call MCP write tools. Return proposals to the user before any live write.

Engineering economy and agent routing. Read ${CLAUDE_PLUGIN_ROOT}/skills/ultracode-build/references/engineering-economy.md before choosing a custom approach or opening Workflow. It is the canonical DRY/YAGNI, reuse, parallelism, and model/effort contract; this skill applies its task-sized routes rather than running every drafting task on the most expensive model.

0. Orientation — resolve the root and learn this org's shape

  • Resolve the parent item number from $ARGUMENTS (or ask which parent item to plan under — do not guess).
  • get_item(view: 'full') / resolve_item on the parent to confirm its work type — this determines what level you're planning at. Read the FULL view here: the profile resolution below needs the parent's description, which the default projection omits.
  • Resolve the delivery profile and say so. The canonical contract — table, resolution order, root-marker format — is ${CLAUDE_PLUGIN_ROOT}/skills/plan/references/delivery-profiles.md; this skill honours its grain and specDepth rows and writes its root marker. Resolve per that order, with three plan-specific rules: the marker step walks upward — read the parent's own full description, and if it carries none, walk hierarchy up with get_item(view: 'full') per ancestor until one does (a parent is often a release unit BELOW a marked root; stopping early silently re-gates the subtree), noting whether the marker was the parent's own or inherited (the step-2 sign-off writes a marker only when the parent has none and the profile came from elsewhere than an ancestor's marker); profileOverrides.grain / profileOverrides.specDepth (when the repo is known — planning never REQUIRES the config) each name another profile's column for that one knob (an absent key changes nothing; an unknown VALUE is reported and ignored, never guessed at); and an argument that disagrees with an existing marker is a QUESTION, never an override — the marker is a recorded decision; ask which profile this pass plans under (a "change it" answer means rebalance first, per step 2). A descendant container may carry its own marker — it wins for its subtree; shape leaves beneath it to that profile. State the result, its source, and any override in the orientation message.
  • get_work_type_hierarchy and get_workspace_context to learn this org's REAL work type names, lanes, and priorities. This runtime resolution is THE normative mechanism for the vocabulary this skill reasons in: every role used below — plan-root and intermediate containers, the release-unit container (the level whose completion cuts a release — this org's Epic type), and the executable leaf types (this org's Story/Defect) — binds to the type names resolved HERE. Do not assume canonical naming — some orgs have typos or custom hierarchies (e.g. a real org's Capability-level work type is literally spelled Capabilty). Plan against what the org actually has. The release-unit level you shape here MUST be the same level the delivery loop branches and releases at: when the org has multiple container levels and the release boundary is ambiguous from structure alone, check the repo's .claude/ds-config.json hierarchyRoles.releaseUnit as the tie-breaker if the repo is known (planning never REQUIRES that file), and otherwise ASK the user which level is the release unit — then suggest recording the answer in hierarchyRoles so planning and delivery can never diverge (Feature-sized plans against Epic-sized releases undermine the production-safety boundary).

Read the full file on GitHub · 284 lines

Files

What ships with it

4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 284 lines · 23 tokens per session scan A cf59f454a3e1

Subscribe to this mod's changes

plan is a skill published in the GitHub repository devstride/claude-plugin (2 stars, last pushed 3d ago), licensed MIT. It adds 23 tokens to every session and 7,717 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

next-cache-components-adoption

Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…

vercel/next.js · 95 tokens

babysit-pr

Babysit a GitHub pull request after creation by continuously polling review comments, CI checks/workflow runs, and mergeability state until the PR is merged/closed or user help is required. Diagnose failures, retry likely flaky failures up to 3 times, auto-fix/push branch-related issues when appropriate, and keep…

openai/codex · 114 tokens

imagegen

Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output…

openai/codex · 113 tokens

cpu-profile-analysis

Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…

microsoft/vscode · 71 tokens

next-cache-components-optimizer

Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route at a time; the shipped test then…

vercel/next.js · 170 tokens