Skip to main content
skill CX Codex

plan · archcore-ai — Claude Code skill: plan work before you build

Reads the request, open drafts and code, then writes only the documents a later reader will need. A small fix gets none.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add archcore-ai/archcore --skill plan -a claude-code
Open on GitHub

What plan does

The plan skill from the archcore set takes a topic and decides what is actually worth writing down. It searches .archcore/ with mcp__archcore__search_documents and mcp__archcore__list_documents, pulls linked documents one hop through implements, depends_on and related relations, then reads the branch, recent commits and working tree. Document types follow from the request: a new CSV export feature usually means one spec and one plan; a coordinated HTTP client upgrade across three services means a plan alone; a notifications platform adds a prd on top.

An existing draft on the topic that carries an archcore:track state block gets resumed at its earliest incomplete gate instead of starting a new track. With no .archcore/ directory at all, the skill announces initialization in one line and calls mcp__archcore__init_project without asking anything. Investigation requests route to the research type, comparisons to rnd, and when the deciding facts are already recorded and only the weights are in dispute, an rfc is created.

Know the edges. Recording a decision, documenting existing code and codifying a team standard belong to /archcore:document; checking documents against code belongs to /archcore:review. The skill leans on the archcore MCP server and the shared files under skills/_shared/, so without them the search and routing steps have nothing to run on.

What it helps with

  • work out which documents a task needs and which would be noise
  • pick up an abandoned planning draft at its last gate
  • separate gathering material from weighing alternatives
  • trace only the requirement levels an auditor asked for
  • gather code and git context before a feature discussion

Example prompts for the agent

  • Plan a new feature for CSV export
  • Investigate X before we plan
  • Compare the alternatives for Y: REST or a queue? Two teams disagree

How to install plan

1Skills CLI (Vercel)

npx skills add archcore-ai/archcore --skill plan -a claude-code

2Manually: put the files in place

~/.claude/skills/plan/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/plan/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about plan

How do I install plan in Claude Code?

Run npx skills add archcore-ai/archcore --skill plan -a claude-code. The skill lands in ~/.claude/skills/plan/SKILL.md.

What does plan do?

It reads the request, open drafts, accepted documents, the branch and the code, then creates only the documents a later reader needs. A small fix produces none.

How is plan different from /archcore:document and /archcore:review?

/archcore:document records decisions, documents existing code and codifies team standards. /archcore:review checks documents against code. plan deals with future work.

Source text

SKILL.md · Apache-2.0
---
name: plan
argument-hint: "[topic]"
description: "Plan future work, investigate before building, research a topic, or compare the alternatives for a choice. Takes optional free text. The skill reads the request, open drafts, accepted canon, branch, and code, then creates only the documents a later reader needs — none for a small fix. Use for 'plan the X redesign', 'create a roadmap', 'plan a new feature', 'plan the onboarding journey', 'investigate X before we plan', 'compare the alternatives for Y', 'REST or a queue? two teams disagree', 'I need market research before we plan', 'we are regulated — trace the requirements'. With no arguments it resumes an open planning draft or offers what to plan next. Not for recording a decision or documenting existing code — use /archcore:document. Not for checking docs against code — use /archcore:review."
---

# /archcore:plan

Plan future work from the project context. Context resolution
(`skills/_shared/gate-contract.md`, section Context resolution) records the
claims, unknowns, hazards, and authority; the conductor
(`skills/_shared/delta-routing.md`) selects the documents a later reader needs;
instruments produce them. Vision types are the primary output. Reads cover all three categories: vision supplies intent and
resumption targets, knowledge supplies constraints, experience supplies
precedent.

## When to use

- "Plan a new feature for CSV export" → typically one `spec` and one `plan`
- "Upgrade the HTTP client across three services with a coordinated rollout" → a `plan` alone
- "Plan the notifications platform" → a `prd`, one `spec` per capability, one `plan`
- "Fix the typo in the onboarding copy" → no document; implement directly
- "I need market research before we plan" → acquisition instrument
- "We must trace these requirements for the auditor" → only the requirement levels that obligation names
- "Investigate X before we plan" → `research`; "Compare the alternatives for Y" → `rnd`
- "REST or a queue for SAP? Two teams disagree", with the facts of both options recorded → `rfc`
- `research <topic>` as the first word → the type `research`

**Not plan:**

- Recording a decision → `/archcore:document`
- Documenting existing code → `/archcore:document`
- Codifying a team standard → `/archcore:document`
- Checking documents against code → `/archcore:review`

## Entry

Apply in this order:

| Signal | Action |
|---|---|
| No arguments, one draft with a state block this command resumes | Resume it at its earliest incomplete gate |
| No arguments, several such drafts | Resume rule 10 in `skills/_shared/gate-contract.md` |
| No arguments, a clear request in the session or one unfinished plan | Offer a start menu of at most four items, each with the evidence that names it, the recommended item first |
| No arguments and no reliable signal | Ask one question — what outcome to plan; a dirty branch alone is not a target |
| The first word is a type slug | The explicit type request per `explicit-type-request-wins.adr`; a leading `research` requests the type `research` |
| Any other request | Context resolution, then Selection per `skills/_shared/delta-routing.md` |
| A decision surfaces at a gate | Record the `adr` through the decision instrument (`skills/_shared/tracks/decision.md`), then return to the open gate |

Research boundary: discovery feeding an `mrd` → `brd` → `urd` requirements
chain belongs to acquisition. A request naming a pending decision or a set of
candidates to choose between produces `rnd` only when the evidence to choose
is missing; any other investigation produces `research`. WHEN the deciding facts
are already recorded and the open part is whose weights win — two owners
disagree, or the owner has not chosen — the decision instrument records an
`rfc`, and no `rnd` is created. A standalone external material is filed through
`/archcore:document`. A request proposing a specific target for team review
("let's adopt Y", "draft an RFC for Y") belongs to `/archcore:document`'s
decision instrument; a lone "should we switch to Y" with the evidence to choose
missing stays here as `rnd`.

## Execution

### 1. Ground

Complete this step before asking the user any question. The research
vocabulary probe (`skills/_shared/research-compatibility.md`) runs only under
its own condition 1 — a request or type naming `research` or `evidence`, a
selection engaging the research instrument, or a grounding result of either type.
Add `research` and `evidence` to the planning-moment filter below only when
the probe returns `yes`; a topic search without a type filter finds documents
of both types on every engine. If this skill has no shell tool, use the probe
result the host supplied; if none was supplied, report `needs-vocabulary-probe`
with the helper path and stop before the first MCP call that names either type.

The actor-subject probe (`skills/_shared/actor-subject-compatibility.md`) runs
under its own condition 1 — a request naming `scenario` or `journey`, a selection
engaging the illustrate instrument, or a grounding result of either type — and
adds both types to the filter below only when it returns `yes`. The same
no-shell rule applies: report `needs-vocabulary-probe` and stop before the first
MCP call that names either type.

1. Search `.archcore/` with `mcp__archcore__search_documents` and `mcp__archcore__list_documents` across all three categories. Pass a planning-moment type filter — for example `types=["idea", "prd", "plan", "spec", "rnd", "rfc", "adr", "rule", "task-type", "cpat"]` — and add `"scenario"`, `"journey"` when the actor-subject probe returned `yes` — instead of relying on the global type ranking. Do not exclude a category from reads.
2. WHEN a found document carries `implements`, `depends_on`, or `related` relations, pull the linked documents one hop via `mcp__archcore__list_relations` and `mcp__archcore__get_document`.
3. WHEN a found draft on the topic carries an `archcore:track` state block, resume it per the resume rules in `skills/_shared/gate-contract.md` and `skills/_shared/delta-routing.md` instead of opening a new track.
4. Read git state — current branch, recent commits, working tree — and the code areas the topic names. Record the concrete files and modules for Step 5, and note owner documents whose referenced paths changed after them — the staleness input to Selection.
5. IF `.archcore/` exists but contains no documents, THEN proceed on outer-context grounding (git state and the codebase) and report that zero documents were found.
6. IF `.archcore/` does not exist, THEN announce initialization in one line and call `mcp__archcore__init_project` without asking a question.

**Global sources.** If a `list_documents` / `search_documents` result has
`global: true` / `read_only: true` / `source_kind: "global"`, load
`skills/_shared/globals.md`. Also load it when a `search_documents` response's
`coverage` names a source other than `"local"` — even when `results` is empty:
the empty page is exactly where that file's retry ladder applies. Never modify
a global document and never target one with `add_relation`. Absent any global
match, proceed as usual.

### 2. Select

Build the context record per `skills/_shared/gate-contract.md`, section Context
resolution, then run Selection per `skills/_shared/delta-routing.md` and report
its selection line. Never ask the user to choose an instrument.

### 3. Budget

Interview mechanics, question form, and the ceiling of 5 questions per
invocation: `skills/_shared/elicitation-contract.md`.

### 4. Execute the selection

Invoke each selected instrument, in conductor order, per the instrument
registry and sequencing rules in `skills/_shared/delta-routing.md`. Run each
instrument's gates per `skills/_shared/gate-contract.md`: evaluate `skip_when`
first at every gate, keep track state only in the `archcore:track` block
inside the draft artifact (with the `claims:` field this command adds), persist each gate close in one `mcp__archcore__update_document` call,
and follow the resume rules on re-entry. Gate bodies, per-gate questions, and
relation wiring live in the track files — do not restate them.

Before delegating research or evidence work, pass the current vocabulary probe
result and absolute plugin root to the assistant. If the assistant returns
`needs-vocabulary-probe`, run the helper and resume the same task.
Before delegating any other document write or relation work, pass the absolute
plugin root to the assistant. The assistant reads
`skills/_shared/relation-authoring.md` under that root.

### 5. Map tasks to files

WHEN the selection produced a `plan` document:

1. Annotate each task in the plan's Tasks section with the concrete files or modules that grounding surfaced for it, using `@path/to/file` notation, in one `mcp__archcore__update_document` call.
2. WHEN grounding surfaced no file or module for a task, state that no target was found for that task. Do not guess a path.
3. Confirm the plan carries its `## Declared Delta` section per sequencing rule 9 of `skills/_shared/delta-routing.md`.

WHEN the selection produced no `plan` document, skip to Result — the exit gate
or the selection line names the follow-ups.

### 6. Implement fork

WHEN a blocking exit check stopped the selection, skip this step and go to Result.
Otherwise, offer exactly two exits and let the user choose:

- **Implement now** — start on the mapped task list, first phase first, against the files mapped in Step 5.
- **Stop here** — the draft documents and relations stay in `.archcore/`; a later `/archcore:plan` invocation resumes any draft that still carries a state block.

## Result

Report:

- The selection line, and the inferred scope when no argument set it.
- Produced documents grouped by category — vision, knowledge, experience — with each document's path and status.
- Relations created, plus candidate `mcp__archcore__add_relation` targets among existing documents, or a statement that none match.
- `retire` claims reported for closeout discharge, when any exist.
- Next actions, naming only v2 commands: `/archcore:plan` to continue the selection, `/archcore:document <subject>` to record a decision or document code touched during implementation, `/archcore:review` to check the implementation against the recorded plan and reconcile its Declared Delta.
- WHEN contract drafting remains open on a material user-owned choice, name the draft `spec`, the unanswered choice, and the behavior it changes. Do not offer implementation until that check passes. Name the three ways to continue — answer the choice, delegate it ("you decide"), or proceed anyway — and the resume command `/archcore:plan <spec title>`.
- Name instruments and stages in plain words; do not print a gate address of the form `<track>.<stage>`.

© archcore-ai · Apache-2.0 · archcore-ai/archcore

Similar skills

All skills for Agent setup: memory, context, orchestration →

plan by other authors comes first.

plan codewithmukesh Builds an architecture-aware implementation plan for .NET work before code changes begin. Use it for changes spanning layers, modules, or architectural decisions. CX Codex +1 2,800installs plan boshu2 Turns a vague request into a single end-to-end slice with observable behavior and clear edit boundaries. Handy before you start coding. CX Codex +1 1,500installs plan owainlewis Turns an approved spec or brief into ordered vertical tasks for separate agent runs. It groups work into usable milestones with acceptance checks. CX Codex +1 747installs plan launchdarkly Generates a tailored LaunchDarkly SDK integration plan from detected repository tech. Chooses server or client libraries, entrypoints, and env variables. CX Codex +1 2,300installs plan hyperb1iss Turns a messy feature into tasks with dependencies and exact checks before you touch code. Useful when the work outgrows one session. CX Codex +1 604installs make-plan thedotmack Turns a feature request into a phased plan built on real documentation instead of guesses. Useful right before you run do. CX Codex +1 7,200installs html-plan plannotator Turns project notes and requirements into a self-contained HTML plan. Useful for organizing phases, dependencies, and owners without turning the doc into a dashboard. CX Codex +1 3,800installs ce-plan EveryInc Builds structured technical implementation plans without touching production code. Useful when scoping features before passing work to execution agents. CX Codex +1 3,700installs ralph-plan mastra-ai An interactive planning skill for Claude Code and coding agents. It helps build structured ralph-loop commands through guided dialog and codebase exploration. CX Codex +1 2,600installs speckit-plan github-spec-kit Executes implementation planning workflows inside spec-kit projects to produce research notes and interface contracts. CX Codex +1 2,500installs alan-plan tryalan-ai Walks the agent through planning: analyze the task, ask clarifying questions, draft the plan and persist it as an Alan artifact. CX Codex +1 1,800installs

From the same set2

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor