planners
Tools for managing plain-text plans with a documented schema, CLI commands, and an installable skillstub. It is designed to automate the mechanical components of generating and updating plain-text plans with standardized frontmatter for a given project. To facilitate tracking and reviewing plans, it also automatically generates and maintains an index table of all existing plans and their statuses.
These tools can be used manually via CLI commands, but they are largely intended to be used in conjunction with a language model. To guide usage by a language model, it ships with built-in skills and rules that offer an opinionated approach to managing the full plan-file lifecycle and automating usage of this package. These skills and rules can be installed on your system via the CLI commands listed in the instructions below. Once installed, the rules will enforce conventions around how plan files are named, filled, and updated, and the skills will facilitate the addition, implementation, and closing out of plans, which includes the use of git branches and worktrees as specified by the user. While its core functionality and plan files are model-agnostic, some aspects of its built-in support (e.g., the skill files, rule files, and pre-commit validation hook) are currently only available for use with Claude Code.
Getting Started
planners is designed to run as a global uv tool, but you can also install it as a per-project dependency.
-
Install the CLI as a uv tool (once per machine), so
plannersis on yourPATH:uv tool install planners
Or (re)install from GitHub:
uv tool install --force git+https://github.com/gitronald/planners.git
-
Install the global rules and skills — This installs a global Claude Code rule file and a skills stub: the actual skills are included within this package and are accessible via the CLI; the skills stub just tells the model how to access them and allows you to use the skills via slash commands.
planners installThis will:
- (Re)generate the global
~/.claude/skills/planners/SKILL.mdholder and~/.claude/rules/planners.mdconvention rule, which can change as the package version advances. - Wire the
planners-validatepre-commit hook into the project folder/repo's.pre-commit-config.yaml(registering it whenpre-commitis available). - Give the generated index its merge semantics: a
.planners/README.md merge=unionline in the repo's.gitattributes, so a local merge whose two sides both added or closed plans stops conflicting on it.unionis built into git, so the one committed line is the whole fix — nothing to configure per clone. GitHub's server-side merge does not apply it, so a PR can still report a conflict on the index; merging the base in locally then resolves it without hand-editing a generated file.
planners install --checkreports each part (holder,rule,gitattr) and exits non-zero if any has drifted, plus ahookline saying whether the git hook is actually registered in this clone — registration is per-clone state that a fresh clone silently lacks, so it is reported rather than assumed. - (Re)generate the global
-
Start planning — scaffold your first plan using the
addcommand.This can be done within a Claude Code terminal via the installed
/plannersskill and itsaddsubcommand:/planners add my first featureOr via the CLI directly in your preferred terminal:
planners add my-first-feature --title "My first feature"
Either case will create a new plan file (
.planners/plans/000-my-first-feature/plan.md) and refresh the index (.planners/README.md), though using the skill may produce a slightly different filename.
Usage
planners add <slug> --title "<Title>" # scaffold a new plan (--defer: stage it unnumbered)
planners finalize # number and commit the deferred batch, in one commit
planners activate <NNN> # flip a plan to active, fill branch:, and commit
planners base # print the repo's mainline branch (--all: every one)
planners index . # regenerate .planners/README.md
planners validate .planners/plans # validate plan frontmatter (and that the index agrees)
planners schema # show the plan metadata schema
planners skill <name> # print a bundled skill body
planners rule <name> # print a bundled convention rule body
planners install # install holder + rule + repo hook + merge attr (--local: per-repo)
planners permissions --level assist # print an automation-level permission profile (--apply to write it)
Plan commits land on the mainline.
add,finalize, andactivaterefuse to commit whenHEADis off it, so a plan is recorded on the mainline even if the feature branch never merges. The accepted set isdev(when that branch exists) plus the repo's default branch —planners base --allprints it. Detection reads git's current refs and goes inert rather than blocking a repo it can't resolve;--allow-branchoverrides the refusal where the mainline isn't detectable by name.
Per-repo (local) mode. To pin planners as a project dependency instead of a global tool, add it with
uv add --dev plannersand run everything asuv run planners …; thenplanners install --localwrites the holder and rule into the repo's own.claude/rather than~/.claude/.
Plans
Each plan is a directory under .planners/plans/ ({NNN}-{slug}/plan.md) and can carry scoped
sidecar files. The generated .planners/README.md is the plans index, which
GitHub auto-renders on folder browse.
Convention rule
planners install writes a version-stamped, auto-loaded ~/.claude/rules/planners.md (global) or
.claude/rules/planners.md (per-repo). The rule is owned by the package — edit the convention in
the package and reinstall; don't hand-edit the installed file. A hand-maintained plan-files.md is
superseded by the generated planners.md (install warns, never deletes it).
See CHANGELOG.md for release notes.
Metadata
Release files for planners 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| planners-0.6.0.tar.gz | 72.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| planners-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 154.7 kB
Release files / planners-0.6.0.tar.gz
| Download URL | planners-0.6.0.tar.gz |
|---|---|
| Size | 72.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3c3a6c7797c04b7e995d350d4957fd7c7fd51478521029bb7b30f53e1ee2fb3b
|
|
BLAKE2b-256 checksum How to use checksums |
2fb40e0353339c0700fcd9e1693e9727abed6db8d684cd5448f1bb64b915f78b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / planners-0.6.0-py3-none-any.whl
| Download URL | planners-0.6.0-py3-none-any.whl |
|---|---|
| Size | 82.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
722f3c2d704efee534948ff59dc124e43a21d69aefce4abad0c7b116fe4f4a42
|
|
BLAKE2b-256 checksum How to use checksums |
586bc42eefe3086bca45b01e731e34a7746f096c05b9f24019b630345dc470e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logSecurity for planners 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for planners-0.6.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.