Create a Claude Code skill from a screen recording
Record the task once in Ditto AI, review the steps, and choose Claude Code when you run it. Ditto writes a skill into your Claude skills folder: SKILL.md with the procedure, mcp.json with the tool servers the task needs, and an allowed-tools list built from the permissions it derived. You then run it in Claude Code as a slash command with the skill's name.
Why record instead of writing the skill
Writing a Claude Code skill by hand means writing down a procedure you normally do from muscle memory, then working out which MCP servers it needs, installing each one, finding the right credential for each, and deciding what the agent is allowed to call. That last part is the one people skip.
Recording the task gets you all of it from one pass: the steps come from what you did, the servers are found and checked against a real call, and the allowlist is derived from the tools your recording actually used.
What you need
- A Mac with Apple silicon and macOS 15 or later, with Ditto AI installed.
- Claude Code on the same Mac, on your
PATH. Ditto only offers it as a target if it can find theclaudecommand.
Step by step
- Record the task once in Ditto AI, across the apps it really uses. Narrate the parts that change if you like.
- Review what Ditto understood: the process, each step with the frames it came from, the inputs, and every tool with its status. Fix anything wrong here.
- Connect any tool that needs your account. Ditto starts the server, does the MCP handshake and makes one read-only call. If it needs a key or a sign-in, it reads that server's README and asks you for exactly what the README names.
- Choose Claude Code as the host and run it. Ditto installs the skill, then launches the run.
- Run it again later from Claude Code directly, as a slash command named after the skill.
What Ditto writes into Claude Code
Three files, in a folder named after the agent inside your Claude skills directory:
| File | What's in it |
|---|---|
SKILL.md | The procedure: the goal, the steps in order, the inputs, and the rules for the run |
mcp.json | The MCP servers for the task, in Claude Code's mcpServers shape, with the command and credentials each one needs |
ditto-run.json | The allowed tools, the denied tools, and the prompt Ditto derived |
Nothing else on your system is touched. Removing the folder removes the agent.
The allowlist is the point
Ditto turns the permissions it derived into Claude Code's own allowedTools names, one per server or per tool (mcp__<server>__<tool>). Anything not on that list is refused. Tools Ditto marked as denied go into disallowedTools.
This is what makes a recorded agent narrower than a hand-written one: the list comes from the tools your recording used, and access for each is a lookup in a fixed table rather than something the model decided. A tool Ditto couldn't classify counts as a write. The reasoning is in Is it safe to let an AI agent use your accounts?
Running it
The agent can run two ways, and they do the same work:
- In Ditto, where you type or say what's different this time, and can have every write shown to you as a draft before it happens. Stop ends the run and every tool server it started.
- In Claude Code, as the skill Ditto installed, using your own Claude account and Claude Code's own permission prompts.
If Claude Code isn't offered
Ditto only lists hosts it can find. If Claude Code isn't in the list, the claude command isn't on the PATH that Ditto's pipeline sees. Ditto starts with your login shell's PATH, so installing Claude Code the normal way and reopening Ditto is usually enough.
Ditto can also install into Kiro CLI, or run the agent itself with its own bundled runner. See Create a Kiro agent from a screen recording.