Skip to main content

Modus Operandi 🤌

Automate spec-driven "planner -> executor" workflows in LLM clients (opencode and cursor): task planning, task implementing and code review.

Quick start

pip install modus-operandi
modus-operandi task "<task-description>"

No configuration needed: the defaults use the free OpenCode Zen model opencode/big-pickle for planning, review and implementation, which works out of the box. To switch models or backends, run modus-operandi edit.

Install

modus-operandi works right after install: the first run renders the pipeline files (agents, scripts, workflows, prompts) into ~/.config/modus-operandi/ and ~/.config/opencode/, and creates ~/.config/modus-operandi/config.yml from the example. Updates arrive through PyPI (pip install -U modus-operandi); the render is re-applied automatically on the next run.

Requirements: Python >= 3.12, and one backend CLI on PATH — opencode (default) or cursor-agent (see --backend cursor below).

The dev flow (python3 install.py from a checkout) additionally installs a checkout-based modus-operandi command into ~/.local/bin and keeps that directory on PATH in your existing shell rc files (~/.bashrc, ~/.zshrc, ~/.profile), so the command is available in every newly opened terminal.

Usage

Task

If you have a workflow like this

1. Studying the motivation of the task with a planner-agent
2. Creating an ADR
3. Writing an implementation plan for the executor
4. The executor-agent asking clarifying questions about the task
5. The planner-agent answering these questions
6. Implementing the task
7. Reviewing for SRP violations
8. Reviewing for bugs
9. General review (correctness and quality)
10. Comment review (readability)
11. Fixing the issues found

The ADR records the decision (what and why) and is published to the architecture/ directory at the end of the run in its final version; the implementation plan stays internal to the executor.

then you can use this command

modus-operandi task "<task-description>"

The description can also come from a file: modus-operandi task path/to/description.md (a single argument naming an existing file is read as the description; file and inline text input are mutually exclusive).

Review

If you have a workflow like this

1. Reviewing the whole project for SRP violations
2. Reviewing the whole project for bugs
3. Comment review (readability)
4. Fixing the issues found

then you can use this command

modus-operandi review

To review only the changes between the current branch and the default branch:

modus-operandi review --branch-diff

Backend

By default, opencode is used. If you need the cursor backend, use the --backend cursor flag:

modus-operandi --backend cursor task "<task-description>"

Config

modus-operandi edit

opens ~/.config/modus-operandi/config.yml in your terminal editor. On save and close it validates the file: a valid config is applied, an invalid one is rolled back and the error is reported with its line number; a config left unchanged is not re-applied.

Uninstall

modus-operandi uninstall
pip uninstall modus-operandi

removes the rendered pipeline files (~/.config/modus-operandi and the modus-operandi files under ~/.config/opencode) — run pip uninstall modus-operandi afterwards to remove the package itself.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modus_operandi-0.2.0.tar.gz (476.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modus_operandi-0.2.0-py3-none-any.whl (526.3 kB view details)

Uploaded Python 3

File details

Details for the file modus_operandi-0.2.0.tar.gz.

File metadata

  • Download URL: modus_operandi-0.2.0.tar.gz
  • Upload date:
  • Size: 476.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for modus_operandi-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4f91afc2bffd5670cef6c3816e5a30780f8b90f7df7b6796978e3e54a870dc1c
MD5 411f265606bff61eccd1e7a440858d3b
BLAKE2b-256 ab32e9bce19c30f03f602891d2f6426256fd440dc24e6e7550e26456ace9b8a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for modus_operandi-0.2.0.tar.gz:

Publisher: publish.yml on DenisRyazantsev/modus-operandi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file modus_operandi-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: modus_operandi-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 526.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for modus_operandi-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 987d370e71a5ff99c543efe3aa49156b58638150bc2ae572bc4a94b775aed529
MD5 b1b29290d0740c2baa56aba689fcd21f
BLAKE2b-256 03af5d4d14158f04fd7191a7234260849b279fe03ce35650f539ea482c3c7ec0

See more details on using hashes here.

Provenance

The following attestation bundles were made for modus_operandi-0.2.0-py3-none-any.whl:

Publisher: publish.yml on DenisRyazantsev/modus-operandi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page