CLI Examples

Creating Mimeograms

Basic File Bundling

Bundle specific files into a mimeogram:

mimeogram create src/*.py

Bundle multiple types of files, each with its content type detected:

mimeogram create src/*.py README.rst

Recurse into subdirectories (subject to Git ignore rules):

mimeogram create --recurse-directories=True src/ tests/

By default, the mimeogram will be copied to the clipboard. To print to stdout instead:

mimeogram create --clipboard=False src/*.py

Adding Context

Add a message to provide context to the LLM:

mimeogram create --edit-message src/*.py

For LLM interfaces without project support, include format instructions:

mimeogram create --prepend-prompt src/*.py

Applying Mimeograms

Basic File Unpacking

Apply changes from clipboard (default):

mimeogram apply

Apply changes from standard input:

mimeogram apply --clipboard=False

Apply changes from file:

mimeogram apply --clipboard=False changes.mimeogram

Apply changes relative to a different base directory than the current working directory:

mimeogram apply --base-directory /path/to/project

Apply changes in non-interactive mode:

mimeogram apply --review-mode=silent /path/to/project

Interactive Review

By default, when running on a terminal, you will be presented with interactive review mode. For each file, you’ll see a menu like this:

src/example.py [2.5K]
Action? (a)pply, (d)iff, (e)dit, (i)gnore, (s)elect hunks, (v)iew >

Available actions:

  • a: Apply the proposed content as-is.

  • d: Show differences between current and proposed content.

  • e: Edit the proposed content.

  • i: Skip this file.

  • s: Interactively select which proposed changes to apply.

  • v: View the proposed content.

For protected paths, you’ll see a modified menu:

~/.config/sensitive.conf [1.2K] [PROTECTED]
Action? (d)iff, (i)gnore, (p)ermit changes, (v)iew >

The p option lets you override protection for that specific file.

Using the Hunk Selector

When using the s (select hunks) option, you’ll review each change block:

@@ -1,5 +1,7 @@
 def example():
-    return 42
+    """Example function with docstring."""
+    return 42

Apply this change? (y)es, (n)o, (v)iew >

This lets you cherry-pick specific changes within each file.

Setting Project Instructions

For LLM interfaces that support project-level instructions (like Claude.ai or ChatGPT), you can setup the mimeogram format prompt once and reuse it thereafter.

Copy instructions to clipboard (default behavior):

mimeogram provide-prompt

Print to stdout instead:

mimeogram provide-prompt --clipboard=False

Then paste these into your project instructions. All subsequent chats will understand mimeograms without needing to include the format instructions in each message.