Skip to content

CLI Reference

oh-my-sdd ships a small CLI, invoked via npx, that manages the global installation of the 6 skills.

install

npx oh-my-sdd install

Installs (or reinstalls) all 6 skills into ~/.claude/skills/, along with a copy of the knowledge base inside each one, and writes an integrity manifest at ~/.claude/skills/.oh-my-sdd-manifest.json. If the skills are already installed, asks for confirmation before reinstalling.

status

npx oh-my-sdd status

Reports:

  • Whether oh-my-sdd is installed, and the installed package version.
  • Which of the 6 skills are present (✓) or missing (✗).
  • Whether any installed file was modified manually since installation (compared against the SHA-256 manifest) — informational only, nothing is overwritten.

uninstall

npx oh-my-sdd uninstall

Asks for confirmation, then removes all 6 skill folders from ~/.claude/skills/ and the manifest file. See Safety & Data for exactly what this does and doesn't touch.

sensor

npx oh-my-sdd sensor init --yes
npx oh-my-sdd sensor run <feature-slug>
npx oh-my-sdd sensor status <feature-slug>

Executable verification for SDD features. Sensors are real commands (per-stack auto-detected or edited by you) that prove — instead of presume — code integrity after implementation.

sensor init

Scans the project (any stack: Node, Python, Go, Rust, Java) and writes .oh-my-sdd/config/sensors.json with the resolved commands for your stack:

Sensor Detects Resolved command example
tests-passing package.json scripts.test, pytest, go.mod, Cargo.toml, pom.xml, gradle npm test, pytest, go test ./..., cargo test
typecheck-clean tsconfig/jsconfig, pyrightconfig, mypy, Cargo.toml npx tsc --noEmit, pyright, mypy ., cargo check
lint eslint/biome, ruff, golangci, flake8, clippy npx eslint ., ruff check ., golangci-lint run

Detected sensors are required: true; undetected ones stay optional and are skipped with a reason at runtime. Edit the file to change commands, timeouts or requirements — it is the single source of truth.

It also writes .oh-my-sdd/config/runtime.json (behavior flags; autonomous_mode: false by default) and ensures .oh-my-sdd/runtime/ is in .gitignore (never committed).

Without --yes and on a TTY, it shows the proposal and asks before writing anything. Re-running with an existing config is a merge: newly detected sensors are added, existing entries are never removed or altered, and a declared sensor whose backing artifact disappeared is flagged as stale. In a project with no detectable stack, it writes a minimal proposal (builtins as optional + runtime.json) with a warning.

sensor run <slug>

Runs every declared sensor for the feature slug and writes evidence JSON files to .oh-my-sdd/runtime/sensors/<slug>/ (command, exit code, duration, truncated output, timestamp, fingerprint). Exits 1 and prints the failing output if any required sensor fails — this is the blocking gate the oh-my-sdd-implement skill runs before its final report.

sensor status <slug>

Read-only table of evidence per sensor, including whether each evidence is still valid against the current code fingerprint. Editing a tracked file after a sensor passed expires that evidence — re-run to refresh.

Acceptance-criteria evidence

The oh-my-sdd-implement skill may only report an acceptance criterion as met with evidence: a passing sensor (mapped in sensors.json criteria) or a manual check note in .oh-my-sdd/runtime/sensors/<slug>/manual-checks.md. Criteria without either are reported as pending verification — never as met.

report

npx oh-my-sdd report [--json]

Portfolio table of all SDD features in the current project: slug, current phase, task progress (N/M) and pending acceptance criteria. Phase derivation priority: active runtime session > tasks.md checkboxes > artifact presence. With --json, emits a stable array of {slug, phase, tasks_done, tasks_total, pending_criteria} (documented schema; breaking changes bump the major version). Read-only — in a project without .oh-my-sdd/, prints a friendly message and exits 0.

export

npx oh-my-sdd export <tool>

Writes the distilled SDD rules (pipeline, blocking checkpoints, .oh-my-sdd/ layout, evidence rule) to another AI tool's rule surface: cursor (.cursor/rules/oh-my-sdd.mdc), windsurf (.windsurf/rules/oh-my-sdd.md), zed (.zed/rules/oh-my-sdd.md), codex (marked section in AGENTS.md), gemini (marked section in GEMINI.md). File-kind surfaces are owned files (safe overwrite); section-kind surfaces merge idempotently between <!-- oh-my-sdd:start|end --> markers, preserving third-party content. Unsupported tool prints the supported list and exits 1. Exported content is tool-agnostic — no client preconditions.