Metadata-Version: 2.4
Name: unharness
Version: 3.7.1
Summary: Compile a manifesto stack into a session's system prompt and launch Claude Code with it.
Keywords: claude-code,system-prompt,manifesto
Author: Arthur Ryzhak
License-Expression: MIT
License-File: LICENSE
Classifier: Environment :: Console
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.11
Project-URL: Homepage, https://github.com/ryzhakar/llm-manifestos
Project-URL: Repository, https://github.com/ryzhakar/llm-manifestos
Project-URL: Documentation, https://github.com/ryzhakar/llm-manifestos/blob/v3.7.1/plugin/unharness/README.md
Description-Content-Type: text/markdown

# unharness

Compile a project's manifesto stack into a Claude Code session's system prompt, and launch the session with the harness's own instructions switched off.

```
/compile-commitments
uvx unharness prompt | uvx unharness launch -- claude
```

To run the source at the v3.7.1 tag instead, use `uvx --from "git+https://github.com/ryzhakar/llm-manifestos@v3.7.1#subdirectory=plugin/unharness" unharness` in place of `uvx unharness`. The launcher's input is reopened on the terminal.

The strip table in the Unharness section of [`plugin/README.md`](https://github.com/ryzhakar/llm-manifestos/blob/v3.7.1/plugin/README.md) lists every switch launch passes, and `unharness switches` prints it.

A `pypi-<version>` tag on a commit whose `pyproject.toml` carries that version publishes it to PyPI; `v<version>` tags release the plugin and do not publish.

- `unharness prompt [--config PATH] [--digests] [--stack-digests] [--overlap] [--minified]` prints the compiled prompt. `--digests` and `--stack-digests` swap manifesto texts for digests, `--overlap` lets stack digests share a manifesto, and `--minified` loads the min pair, the two `.min.md` session files; the Unharness section of [`plugin/README.md`](https://github.com/ryzhakar/llm-manifestos/blob/v3.7.1/plugin/README.md) states the cover rule.
- `unharness stack [--config PATH] [SLUG ...]` prints the `<stack>` block and the constitution; given slugs, it prints those manifestos alone.
- `unharness stamp DIGEST [--config PATH]` writes the digest's entry into its `index.json`, as in `unharness stamp .claude/digests/dry.md`.
- `unharness doctor [--config PATH] [--digests] [--stack-digests] [--overlap] [--minified] [--claude-version X.Y.Z]` prints one `OK`, `WARN`, or `FAIL` line per check and exits 1 on any FAIL; `--claude-version` replaces the detected claude version in its switch lines.
- `unharness switches` prints the strip table from the switch registry.
- `unharness launch [--keep-claude-md] [--keep-web-search] [--no-hooks] [--claude-version X.Y.Z] [PROMPT] [-- LAUNCHER [ARGS...]]` caches the prompt and runs the launcher, or prints the command when none follows `--`.

`launch` runs `LAUNCHER ARGS... --version`, directly for a program on PATH and through `$SHELL -ic` otherwise, and `claude --version` when no launcher follows `--`. It passes the switches verified at the detected version when the registry holds it, else at the nearest registry version below it, else at the oldest registry version, and writes `unharness: claude <D> is not in the switch registry; using switches verified at <C>` on stderr. A launcher that times out, fails to start, or prints no version gets the newest registry version and `unharness: <launcher> --version printed no version; using switches verified at <newest>` on stderr. `--claude-version X.Y.Z` states the version and runs nothing.

The config schema is in [`plugin/SCHEMA.md`](https://github.com/ryzhakar/llm-manifestos/blob/v3.7.1/plugin/SCHEMA.md). The strip table and the text that stays are in the Unharness section of [`plugin/README.md`](https://github.com/ryzhakar/llm-manifestos/blob/v3.7.1/plugin/README.md).

Test with `uv run --project plugin/unharness pytest -q` from the repository root.
