Skip to main content
The freeze workflow is built around a simple idea: do real work first, then capture it. You open your agent — Claude, Cursor, Codex, or any other supported tool — and work through the problem the normal way. You deploy, migrate, scrape, transform, whatever needs doing. When you have something that works, you say the freeze phrase and the doppel-freeze skill takes over. It reads your session, writes a Capability and Recipe in YAML, validates them with the CLI, and asks for your sign-off. From that point forward, the same operation runs locally for zero tokens, every time.
doppel freeze is a skill for AI agents — not a CLI subcommand. There is no doppels freeze command in the binary. The agent writes the YAML; the CLI validates and runs it.

Step 1: Install the freeze skill

Install the skill once per machine or per project. It registers itself with your agent environment so that any supported agent can pick it up.
This works with all supported agents:
  • Claude
  • Cursor
  • Codex
  • OpenCode
  • Windsurf
  • VS Code
You only need to do this once. After installation, every agent session on that machine has access to the freeze skill.
You also need the doppels CLI on your PATH. If you haven’t installed it yet, see the installation guide.

Step 2: Do real work in your agent

Open a session in your agent of choice and work through the task you want to capture. There is nothing special to do at this stage — write code, run commands, call APIs, fix the migration, whatever the job is. The freeze skill will read the session history, so the more concrete and complete the work, the better the resulting Capability. Good candidates for freezing include:
  • Fetching data from an API and writing it to a file
  • Running a database migration
  • Building and packaging a release artifact
  • Rotating credentials or applying configuration changes
  • Generating a report from raw data

Step 3: Say the freeze phrase

When the work is done and you’re satisfied with the result, tell your agent to freeze it. Use natural language — something like:
“doppel freeze — turn what we just did into a Capability”
or
“doppel freeze this as hn-top-stories
The agent recognizes the doppel freeze trigger and activates the skill. You don’t need to use an exact incantation; the skill is designed to recognize intent.

What the freeze skill does

Once triggered, the skill works through a fixed sequence without requiring further prompting from you:
1

Check for the doppels CLI

The skill verifies that doppels is available on your PATH. If it isn’t, it tells you exactly how to install it before proceeding.
2

Initialize the Space if needed

If the current folder doesn’t have a .doppels/ directory yet, the skill runs doppels spaces init to create the standard layout: capabilities/, recipes/, and .doppels/.
3

Identify what to capture

The skill asks you to confirm what outcome to capture. Each distinct outcome becomes one Capability. If the session produced multiple separable results, you can freeze them individually.
4

Write the YAML by hand

The agent reads through the session — commands run, files written, inputs received, outputs produced — and writes capabilities/<name>.yaml and recipes/<name>.yaml directly. There is no code generator or doppels freeze command doing this work; the agent is authoring the YAML.
5

Validate and test

The skill loops doppels validate and a test doppels run until the manifests are clean and the Capability executes correctly. It fixes any schema errors or expression problems it finds.
6

Ask for your sign-off

The skill shows you the full contract — inputs, outputs, steps — and waits for your approval before treating the Capability as done.

Step 4: Review and commit the YAML

After the skill finishes, you’ll have two new files in your project:
  • capabilities/<name>.yaml — the public contract (inputs and outputs)
  • recipes/<name>.yaml — how it runs (steps, shell commands, return values)
Open them in your editor and review the diff. Check that the inputs match what you actually provided, that the steps reflect what happened in the session, and that the outputs capture what you care about. Then commit both files to Git like any other source file.

Sample frozen YAML

Here is what a frozen Capability and Recipe look like for a Hacker News story fetcher — the kind of task you might build in a single agent session and want to replay indefinitely. capabilities/hn-top-stories.yaml
recipes/hn-top-stories.yaml
You can freeze any repeatable operation: data pipelines, API integrations, web scraping, report generation, data transforms, DevOps tasks, and more. If you did it once with an agent and it worked, it’s a good candidate for a Capability.