Minto is an installable skill for Claude Code and Codex that applies the Minto Pyramid Principle to business writing and thinking.
Website: welltraum.github.io/minto
It turns a topic into the reader's question, puts one answer at the top, groups supporting ideas by kind, checks the logic for overlaps and gaps, and makes the result easy to scan. The instructions are written in English, but the skill answers in the language of the source material or request, including Russian.
Minto routes a request into one of five modes:
intent: interview the author and turn a vague goal into a reader question, one-sentence answer, and provisional key line.audit: diagnose pyramid-logic defects without rewriting the document.write: draft or restructure an answer-first memo, email, one-pager, decision note, chat update, or deck storyline.digest: report on read sources answer-first in chat, with source references and cross-source synthesis; for one long source (a talk, a transcript) the digest shows three levels — the claim, its conclusions, and the concrete supports with locators.viz: render the pyramid and SCQ flow in Mermaid, with an optional self-contained HTML view when explicitly requested.
The skill preserves source facts, marks unsupported gaps instead of inventing evidence, and adapts directness and context to the document's reader and genre.
claude plugin marketplace add welltraum/minto
claude plugin install minto@mintoRestart Claude Code or run /reload-plugins, then invoke the skill explicitly:
/minto:minto
Claude can also invoke the skill automatically when a request matches its description. See the official Claude Code plugin and marketplace documentation for scopes and update behavior.
codex plugin marketplace add welltraum/minto
codex plugin add minto@mintoStart a new Codex session, then invoke:
$minto
You can also open /plugins in Codex CLI and install Minto from the configured
marketplace. Plugins are not available in the Codex IDE extension; this
repository includes a .agents/skills/minto symlink so the skill is available
when developing the repository itself. See the official
Codex plugin packaging guide.
Use Minto intent mode to clarify what this board note must achieve.
Audit this proposal for pyramid logic. Do not rewrite it.
Rewrite these notes as a one-page decision memo, answer first.
Show the resulting pyramid and SCQ flow in Mermaid.
For a deliberately unstructured input, use
messy-memo.md.
.
├── .agents/plugins/marketplace.json
├── .claude-plugin/marketplace.json
├── plugins/minto/
│ ├── .claude-plugin/plugin.json
│ ├── .codex-plugin/plugin.json
│ └── skills/minto/
│ ├── SKILL.md
│ ├── agents/openai.yaml
│ ├── assets/
│ └── references/
└── eval/
plugins/minto/skills/minto/SKILL.md is the only copy of the skill. Both
plugin manifests package that same directory.
Validate and test Claude Code directly from the checkout:
claude plugin validate --strict ./plugins/minto
claude plugin validate --strict .
claude --plugin-dir ./plugins/mintoValidate the Codex package:
python3 /path/to/plugin-creator/scripts/validate_plugin.py ./plugins/minto
python3 /path/to/skill-creator/scripts/quick_validate.py \
./plugins/minto/skills/mintoBuild the evaluation prompts and run the pinned benchmark:
bash eval/build-prompts.sh
PARALLEL_ENGINES=1 NEURALDEEP_API_KEY=... \
NEURALDEEP_MODELS="gpt-oss-120b qwen3.6-35b-a3b qwen3.6-fp8 qwen3.8-27b" \
NEURALDEEP_MAX_TOKENS=24576 bash eval/run-cli.sh eval/runs/v1.7.0-final \
"skill control" "" \
"gpt-oss-120b qwen3.6-35b-a3b qwen3.6-fp8 qwen3.8-27b codex haiku45 sonnet5 opus5"
SHUFFLE_SEED=v1.7.0-final bash eval/shuffle.sh eval/runs/v1.7.0-final
bash eval/run-judge.sh eval/runs/v1.7.0-final
python3 eval/aggregate.py eval/runs/v1.7.0-final --allow-partial
bash eval/build-report.sh eval/runs/v1.7.0-final eval/report-v1.7.0.mdThe benchmark on the site (v1.7.0-final) uses eleven English fixtures, eight
engines, and two arms (skill and control) for 172 judged cells, all generated
at low reasoning effort; it measures the 1.7.0 skill text. The 1.8.0 revision
was measured on the twelfth fixture only, against the 1.7.0 text and through
removal tests of each edit — see CHANGELOG.md and eval/report-v1.8.0.md; the
site figures were not re-run for it. Model identifiers, CLI versions, effort settings, UTC time, and the commit
SHA are recorded with the run. Every published figure is computed from the verdicts
by eval/aggregate.py; nothing downstream recomputes it. See eval/README.md for
the arms, the isolation each engine runs under, and which release a given run
belongs to.
The book-derived fixtures are faithful paraphrases of examples in Barbara Minto's The Minto Pyramid Principle: Logic in Writing, Thinking and Problem Solving (2010), including Big Chief, TTV, Period Graph Books, the meeting note, the board-role memo, and the project-team headings example.
The source book and online course are copyrighted and are not distributed with this repository. Fixtures preserve the structural problem and evaluation target without reproducing long source passages. The modern technical-debt fixture is an original paraphrase inspired by a Planio article. The digest, rollout-review, and plain-list fixtures are modeled on real usage patterns with every company, product, person, system, and number invented for the benchmark. The talk-digest fixture is a condensed English translation of a public 2026 conference talk on agent-driven development, with the speaker anonymized and one company name in an example replaced.
The version string is what both hosts use to decide that an update exists: Codex
caches a plugin under <name>/<version>/ and Claude Code records the installed
version, so skill text that changes without a bump never reaches an installed
user. Three files carry that string:
.claude-plugin/marketplace.jsonplugins/minto/.claude-plugin/plugin.jsonplugins/minto/.codex-plugin/plugin.json
Bump all three together, add the matching ## <version> - <date> section to
CHANGELOG.md, and verify before pushing:
python3 scripts/check_manifest_versions.pyThe check fails when the manifests disagree, when the changelog has no section
for the version, and when plugins/minto has changed since the latest tag while
the version has not. It runs in CI on pull requests and on main, and with
--tag against the tag name when a v* tag is pushed.
Both hosts install from the default branch, so a release reaches users only once
it is merged into main and tagged vX.Y.Z.
Claude Code:
claude plugin marketplace update minto
claude plugin update minto@mintoCodex:
codex plugin marketplace upgrade minto
codex plugin add minto@mintoStart a new session after an update so the host loads the new skill contents.
The plugin code and original documentation are available under the MIT License. Minto Pyramid Principle source material remains the property of its respective rights holders.