@electric_coding/execmap
v0.8.0
Published
A lightweight planning system for bounded execution maps.
Maintainers
Readme
execmap
A lightweight planning system for mapping scoped work from start to finish.
execmap is a Bun-first CLI and skill bundle for planning bounded work before
implementation starts.
What It Is
execmap is a simple way to plan bounded work before implementation starts.
It is built around three ideas:
- the repo root has a small
PLAN.mdindex that points to the active initiative or records that none is active - every meaningful initiative gets one top-level execution map
- each meaningful step can have a small step doc when it needs more thought
The system is meant to help an agent work independently without turning project planning into overhead.
Core Model
The repo root has one entrypoint document:
PLAN.md
That file points to the active initiative map, or records - None when no
initiative is active. It is an index, not the place where step status is
tracked.
Each initiative then has one control document:
EXECMAP.md
That file defines:
- the goal
- the guardrails
- the ordered execution path
- the definition of done
The execution path is a checkbox list. The next unchecked item is the default
next step once the active initiative is selected from PLAN.md.
If a step needs real thought, risk management, or constraints, it gets its own small step doc.
Why Use It
execmap is designed for situations where implementation goes better after the
full path is mapped first.
It is useful for:
- releases
- features
- refactors
- migrations
- cleanup passes
The Rules
- Map the full initiative before implementation starts.
- Use one ordered top-level map per initiative.
- Use checkboxes only for status.
- Keep the top-level map as the source of truth.
- Create step docs only for meaningful steps.
- Mark a step complete only after its exit criteria are true.
- If the work changes, update the map first.
Standard Shape
An EXECMAP.md file uses four sections:
GoalGuardrailsExecution MapDone When
A step doc uses four sections:
GoalTasksConstraintsExit Criteria
Suggested Layout
PLAN.md
plans/
<initiative-name>/
EXECMAP.md
01-... (optional step doc)
02-... (optional step doc)
03-... (optional step doc)This repo provides templates and examples, but each project keeps its own local execution maps.
Authoring Conventions
- Keep a root
PLAN.mdthat points to the activeEXECMAP.md, or setActive Planto- Nonewhen the repo has no active initiative. - Keep initiative folders self-contained.
- Name step docs with a numeric prefix so the files match execution order.
- If a step doc exists, link to it from the execution map.
- Keep step status only in
EXECMAP.md, not duplicated in step docs. - Keep
PLAN.mdas an index only; do not duplicate checkbox state there.
Roadmap
If a repo wants a roadmap, keep it separate from the active execmap step
state, but it may still carry minimal version-level lifecycle state.
- Use a roadmap for version order, version scope, and minimal version status.
- Do not put roadmap entries in
PLAN.md. - Do not pre-create
plans/<version>/EXECMAP.mdfiles only to represent future ideas. - If the roadmap carries status, keep it version-level only, such as
planned,active,completed, orblocked. - Keep detailed execution progress in the promoted
EXECMAP.md, not in the roadmap. - When a roadmap item becomes real work, promote it into
plans/<version>/and pointPLAN.mdat that initiative. - Treat roadmap completion as internal delivery completion. Public package release and publication stay separate.
In This Repo
- CHANGELOG.md: shipped package history
- docs/roadmap.md: version order, lifecycle, and non-goals
- docs/spec.md: canonical system definition
- docs/release.md: generic publication runbook
- templates/PLAN.md: root plan index template
- templates/EXECMAP.md: top-level map template
- templates/STEP.md: step-doc template
- examples/portable-package-release/EXECMAP.md: example initiative
- skills/execmap/SKILL.md: tracked Codex skill
src/cli.ts: minimal Bun CLI for scaffolding, progression, and validation
Install
execmap is published as a Bun-first package. Use Bun 1.3+.
bunx @electric_coding/execmap init "portable package release"For a persistent install:
bun install -g @electric_coding/execmap
execmap init "portable package release"Quick Start
- Keep a root
PLAN.mdthat points to the active initiative. - Run
execmap init "<initiative>"to scaffoldplans/<initiative>/. - Fill in
EXECMAP.mdbefore implementation starts. - Add step docs only for steps that need more definition with
execmap stepdoc <target> <step>. - Use
execmap statusto inspect the current plan state,execmap nextto identify the current step, andexecmap donewhen that step is actually complete. - If the repo keeps a roadmap, use
execmap roadmapto inspect the current roadmap version alongside the active plan without merging the two. - Use
execmap activateorexecmap closewhen the repo's active plan changes.
CLI
This repo ships a small CLI so the format is usable without manual
copy-pasting. In a checkout, use bun run src/cli.ts .... From an installed
package, use execmap ....
bun install
bun run check
bun run src/cli.ts init "portable package release"
bun run src/cli.ts status
bun run src/cli.ts roadmap
bun run src/cli.ts stepdoc plans/portable-package-release 2
bun run src/cli.ts rename plans/portable-package-release 2 "Define the packaged runtime contract"
bun run src/cli.ts next plans/portable-package-release
bun run src/cli.ts done plans/portable-package-release
bun run src/cli.ts activate plans/portable-package-release
bun run src/cli.ts close
bun run src/cli.ts check examples/portable-package-releaseCommands:
init: scaffold a new initiative folder with anEXECMAP.mdand default plain-text stepsnext: print the next unchecked step from an execution mapstatus: print the current active plan or explicit target plus the next actionable steproadmap: print the current roadmap version and the repo's active plan from repo rootdone: mark the first unchecked step complete in an execution mapstepdoc: create and link a step doc for one existing execution-map itemrename: rewrite one execution-map item label and keep a linked step doc alignedactivate: pointPLAN.mdat an existing execution mapclose: clear the active plan and archive it under completed planscheck: validate required sections, step links, and step docstypecheck: validate the Bun TypeScript CLI and tests withtsc --noEmit
Releases
Normal PRs do not need release metadata.
When you want to cut a release, run:
bun run release -- <patch|minor|major|x.y.z>That command:
- bumps the package version
- updates
CHANGELOG.md - runs the release gate
- commits and tags the release
- pushes the tag for publication
The GitHub Actions release workflow then publishes the tagged version and uses
the matching CHANGELOG.md entry for the GitHub release notes.
Use CHANGELOG.md for shipped history and docs/release.md for the maintainer runbook.
