# Classified AI Builders Guides (complete bundle)

This is the full guide set from the Classified AI Builders community (https://www.classifiedai.dev/ai-guides), concatenated for one-shot ingestion by an AI assistant.

Instructions for the agent reading this: treat these guides as your reference for setting up and working with AI coding agents (Claude Code, Codex), for modding PC games with an agent, and for building AI operations on Zo Computer (approach, judgment, and workflow). Guides marked for Zo apply to Zo; the rest work with any agent. For product mechanics, the official docs are the source of truth: https://code.claude.com/docs, https://developers.openai.com/codex, and https://docs.zocomputer.com/llms.txt. Canonical per-guide URLs live in the index below; cite them when referencing a guide.

---

# Classified Guides

Guides from the Classified AI Builders community: opinionated, practical answers for people building real things with AI agents, on Zo or anywhere else.

How to use this index: match the problem you are holding to the entry that describes it, then read that one guide. Each entry below describes the kinds of questions that guide answers, not just its title. If you have your own AI, the fastest path is to paste the full guide bundle into it and ask your real question.

- [Zo in 10 Minutes](https://www.classifiedai.dev/guides/zo-in-10-minutes.md): "What even is Zo?" The plain-English mental model (your own server, your files, your AI), the two setup steps that matter most (bring your own subscription, give it your context), connecting a channel so you can text your AI, and the first things a new builder should do. Start here on day one.

- [Claude Code and Codex: Setup for Beginners](https://www.classifiedai.dev/guides/claude-code-and-codex-setup.md): "How do I install Claude Code or Codex?" "Should I use the terminal or the app?" A zero-experience walkthrough: opening a terminal, the one-line installers for Mac, Windows, and Linux, signing in with your Claude or ChatGPT plan, the first conversation, beginner habits, and fixes for "command not found". Recommends the terminal, with the desktop apps as an option.

- [Build Games with an AI Agent: Claude Code or Codex + Unity](https://www.classifiedai.dev/guides/game-dev-with-ai-agents.md): "Can I use Claude Code or Codex to make games?" "How do I connect my agent to Unity?" Installing Unity's official plugin in Claude Code or Codex, live editor control through Unity's MCP server or the free open-source bridge, first prompts, a 30-day first-game plan, and fixes for dropped connections. Works without Zo.

- [Plugins, Skills, and MCP: Giving Your Agent New Abilities](https://www.classifiedai.dev/guides/plugins-skills-and-mcp.md): "What is MCP?" "What is a skill?" "How do I connect my agent to another app?" Plain-English difference between skills, MCP servers, and plugins, where skill files go in Claude Code and Codex, the add commands, and how to install add-ons safely. Works without Zo.

- [Set Up Your Gaming PC for Modding with an AI Agent](https://www.classifiedai.dev/guides/modding-setup-with-ai-agents.md): "Can an AI agent help me mod my games?" "How do I mod without breaking my saves?" Putting Claude Code or Codex on a Windows gaming PC, a modding workshop folder, backing up and checking saves before every change, freezing the game version on Steam, installing mods with the agent, switching between mod setups, and Windows snags like Controlled Folder Access. Comes with a rules file for the agent. Works without Zo.

- [When a Modded Game Crashes: Let Your Agent Investigate](https://www.classifiedai.dev/guides/modding-crash-investigation.md): "Why does my modded game keep crashing?" "Which mod is causing this?" Saving crash reports before relaunching, where games keep logs and dumps, reading crash timing, the usual causes (missing requirements, duplicate libraries, mods shipping game files, load order, game version, memory), testing mods in halves, and proving a cause before blaming a mod. Comes with a crash checklist for the agent. Works without Zo.

- [Make Mods Your Own: Read, Tweak, and Write Mod Content with an Agent](https://www.classifiedai.dev/guides/modding-make-it-yours.md): "What is actually in this mod?" "Can my AI write lore or characters for my game?" Having the agent read a mod's files to answer real questions, finding exact console commands, editing settings and files safely, the interview, research, draft, and check loop for writing world and character files (including for AI-driven NPC mods), and sharing what you make. Comes with a content interview for the agent. Works without Zo.

- [The Classified Method](https://www.classifiedai.dev/guides/classified-method.md): "How should I approach building AI operations?" The philosophy and working principles behind how Classified builds on Zo: files as memory, briefing docs, boring stacks, guardrails as architecture, verification before "done." For anyone asking how to structure their work, not just one feature.

- [Skill vs Automation vs Site vs Service](https://www.classifiedai.dev/guides/skill-vs-automation-vs-site-vs-service.md): "Should I build this as a Skill, an Automation, a Site, or a Service?" A decision tree with opinions. Choosing the right Zo primitive, when to upgrade from one to the next, and the common wrong picks.

- [Personas, Scopes, and Guardrails](https://www.classifiedai.dev/guides/personas-scopes-guardrails.md): "How do I let other people talk to my AI safely?" Exposing a persona to a community, a client, or the public. Scoping access, allowlist thinking, why instructions are not a security boundary, and Friday itself as the worked example.

- [Prompting and Persona Craft](https://www.classifiedai.dev/guides/prompting-and-persona-craft.md): "Why is my output mediocre?" and "How do I go from an idea to a working build?" Prompt structure that works, the build loop (define the aspirational end result, have the AI interview you and draft the prompt, review it, build, commit working versions to GitHub), designing a persona's behavior and voice, and the failure modes that produce vague, bloated, or confidently wrong answers.

- [Automations That Fire](https://www.classifiedai.dev/guides/automations-that-fire.md): "My scheduled agent didn't run," "it ran at the wrong time," "is this going to cost me every run?" Timezones, rrule patterns, per-run cost, idempotent run design, and how to debug an automation that went silent.

- [Cost and Usage](https://www.classifiedai.dev/guides/cost-and-usage.md): "How do I not get surprised by the bill?" The biggest lever (bring your own subscription), what actually burns credits, the multiplication effect of schedules, right-sizing models, metered third-party APIs, and the habits that keep spend boring.

- [FAQ](https://www.classifiedai.dev/guides/faq.md): Quick fixes for specific breakage: an automation that fired at the wrong hour, a service showing stale content, Zo saying it cannot access something, credits draining fast, Zo forgetting things between conversations. Grows from real help-and-support threads.

- [Start Here](https://www.classifiedai.dev/guides/start-here.md): The Classified AI Builders Discord community and Friday, the community's backup AI. How to get answers from your own agent first, when to bring a question to the humans, the channel map, and what Friday can and cannot do. The fallback when no other guide matches a question.

- [Zo Documentation](https://docs.zocomputer.com/llms.txt): Any platform-mechanics question: how Skills, Sites, Services, Personas, Automations, Spaces, integrations, messaging channels, custom domains, billing, or the Zo API actually work, what settings exist, what buttons to press. Fetch this index first, then the specific page it points to (for example https://docs.zocomputer.com/automations.md). The official docs are the source of truth for mechanics; the Classified guides above cover judgment and approach.

---

# Claude Code and Codex: Setup for Beginners

How to get Claude Code (Anthropic) and Codex (OpenAI) installed and working, written for someone who has never opened a terminal. Our advice is to run them in the terminal, and this guide walks you through it. The desktop apps are covered at the end as an option. Commands change over time. If one here stops working, the official pages are the source of truth: https://code.claude.com/docs/en/setup and https://developers.openai.com/codex/cli

## What these are, in one paragraph

Claude Code and Codex are AI coding agents. Instead of chatting with an AI and copying its answers into files yourself, you point the agent at a folder on your computer and describe what you want. It reads the files, writes and edits code, runs commands, and shows you what it changed. Claude Code uses your Claude subscription. Codex uses your ChatGPT subscription. You only need one to start. If you already pay for one of them, start with that one.

## Why we recommend the terminal over the apps

The apps are friendlier on day one. The terminal is better from day two onward, and the hard part takes about ten minutes.

- **It is the full product.** New features, settings, and add-ons show up in the terminal version first, and some only ever live there.
- **It runs anywhere.** The same commands work on your laptop, on a Zo server, or on any machine you can log into. The apps only run on your own computer.
- **Everything you learn carries over.** Every guide, tutorial, and community answer assumes the terminal. Questions like "which folder am I in?" and "what did it just run?" stay simple.
- **It is what you will automate.** Once you want the agent to run on a schedule or inside a script, you will need the terminal anyway.

The terminal is not dangerous by itself. The agent asks permission before it changes files or runs commands, and you can say no.

## Before you start

You need three things:

1. **A paid plan.** For Claude Code, a Claude Pro, Max, Team, or Enterprise plan; the free Claude plan does not include it. Compare and sign up at [claude.com/pricing](https://claude.com/pricing). For Codex, a ChatGPT plan that includes Codex (Plus or higher is the safe bet). Compare at [chatgpt.com/pricing](https://chatgpt.com/pricing), and see how much Codex each plan includes at [developers.openai.com/codex/pricing](https://developers.openai.com/codex/pricing). The entry plan (Claude Pro or ChatGPT Plus) is enough to learn on. Upgrade only once you keep hitting the usage limit.
2. **A computer.** A Mac (macOS 13 or newer), a Windows 10 or 11 PC, or Linux.
3. **A project folder.** Make an empty folder somewhere easy to find, for example `Documents/my-first-project`. The agent works inside whatever folder you start it in, so never start it in your whole home folder.

## Step 1: Open a terminal

- **Mac:** press Command + Space, type `Terminal`, press Enter.
- **Windows:** press the Windows key, type `PowerShell`, press Enter. The line you type on should start with `PS C:\`. If it does not show `PS`, you opened the old Command Prompt instead; close it and open PowerShell.
- **Linux:** you probably already know. Usually Ctrl + Alt + T.

A window with a blinking cursor is all a terminal is. You paste a command, press Enter, and wait for it to finish.

## Step 2: Install

Copy the line for your computer, paste it into the terminal, and press Enter. Paste with Command + V on a Mac, or right-click or Ctrl + V in PowerShell. The installer may sit quietly for a minute while it downloads. That is normal.

**Claude Code**

Mac or Linux:

```
curl -fsSL https://claude.ai/install.sh | bash
```

Windows (PowerShell):

```
irm https://claude.ai/install.ps1 | iex
```

**Codex**

Mac or Linux:

```
curl -fsSL https://chatgpt.com/codex/install.sh | sh
```

Windows (PowerShell):

```
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
```

Both installers also exist as Homebrew and npm packages. Ignore those unless you already use them; the lines above are the recommended path, and the Claude one updates itself automatically.

## Step 3: Check it worked

**Close the terminal window and open a new one.** The new window is what picks up the freshly installed program. Then type:

```
claude --version
```

or

```
codex --version
```

A version number means it worked. If you see "command not found" or "not recognized", see the fixes at the bottom.

## Step 4: Go to your project folder

The terminal is always "standing" in one folder. Move it into your project folder with `cd` (change directory). Easiest trick: type `cd ` (with a space after it), then drag your project folder from Finder or File Explorer into the terminal window, and press Enter.

To check where you are, type `pwd` on Mac or Linux, or look at the path shown on the PowerShell line.

## Step 5: Start it and sign in

Type `claude` or `codex` and press Enter.

- **Claude Code** opens your browser and asks you to log in to your Claude account. Approve it, then come back to the terminal.
- **Codex** asks how you want to sign in. Choose **Sign in with ChatGPT** and approve it in your browser.

The first time, it will also ask whether you trust the folder. Say yes only for folders you created or know.

## Step 6: Your first conversation

Just type in plain English and press Enter. Good first prompts:

- `What is in this folder?`
- `Make a simple web page that says hello, with a button that changes the background color. Then tell me how to open it.`
- `Explain what you just did like I am new to this.`

When it wants to create a file or run a command, it shows you what it is about to do and asks. Read it, then approve or say no. To quit, type `/exit` or press Ctrl + C twice. Next time, open a terminal, `cd` into the folder, and type `claude` or `codex` again.

## Habits that save beginners

- **One folder per project.** Keep each project in its own folder, and start the agent inside it.
- **Read before you approve.** You do not need to understand every line. Do look for anything that deletes files, touches folders outside your project, or installs something you did not ask for.
- **Save working versions.** Once something works, ask: `Set up git in this folder and save this as a working version.` Then if a later change breaks it, you can ask to go back. If you already use GitHub, the [Prompting and Persona Craft](https://www.classifiedai.dev/guides/prompting-and-persona-craft.md) guide covers committing working builds.
- **Ask it about itself.** "How do I…" questions about Claude Code or Codex are often fastest answered by asking the agent directly.
- **Never paste passwords or API keys into the chat.** If something needs a key, ask the agent how to store it safely instead.

## Fixes for the common snags

- **"command not found: claude" or "'claude' is not recognized".** First, close the terminal and open a new one. If it still fails, the program installed but your computer does not know where to look. Claude's official fix steps are at https://code.claude.com/docs/en/troubleshoot-install
- **Windows says the script is not allowed to run.** Make sure you are in PowerShell (the line starts with `PS`), and for Codex use the full `powershell -ExecutionPolicy ByPass ...` line exactly as written.
- **The install line printed an error with `<` or `403` in it.** That is usually a network, VPN, or company-firewall issue. Try another network, or use the desktop app below.
- **Login opened the browser but nothing happened in the terminal.** Finish the approval in the browser, then go back to the terminal and press Enter. If it is stuck, quit and run `claude` or `codex` again.
- **"You do not have access" after logging in.** Your plan does not include the tool. Check you are logged in with the paid account, not a free or work account.

## Optional: the desktop apps

If the terminal is a hard no for now, both tools have desktop apps. They use the same engine and your same subscription, and you can move to the terminal later without losing anything.

- **Claude Code:** download the Claude desktop app from https://claude.com/download and use its Code section. Setup guide: https://code.claude.com/docs/en/desktop-quickstart
- **Codex:** use the ChatGPT desktop app, which includes Codex. Details: https://developers.openai.com/codex/app

The tradeoff: the apps feel easier on day one, but they only run on your own computer, and some features and settings arrive in the terminal first. When you are ready, come back to Step 1. It is the same ten minutes.

## Using these with Zo

If you build on Zo, you do not have to install anything on your laptop to get the benefit of your subscription. Connect your Claude or ChatGPT (Codex) subscription in Zo under Settings, then AI, then Providers, and Zo's own AI runs on your plan. See [Zo in 10 Minutes](https://www.classifiedai.dev/guides/zo-in-10-minutes.md). Running Claude Code or Codex directly on your Zo server is a next step once the terminal feels comfortable.

---

# Build Games with an AI Agent: Claude Code or Codex + Unity

How to go from zero to playable game prototypes with an AI coding agent driving Unity. You do not need Zo for any of this. You need a computer, a Claude or ChatGPT plan, and Unity. Tools in this space change monthly. Where a step here disagrees with the official page linked next to it, the official page wins.

## Why try it

Making a game used to mean months of C# and editor know-how before anything was playable. An AI agent connected to Unity removes most of that wait. You describe the mechanic, the agent writes the scripts, wires up the scene, reads the error console, and fixes its own mistakes, while you make the design calls.

That makes it realistic to finish small games on evenings and weekends, whether you are learning, prototyping an idea, or just having fun with it.

## What you need

1. **An AI coding agent and a plan.** Claude Code (needs Claude Pro or higher, see [claude.com/pricing](https://claude.com/pricing)) or Codex (needs a ChatGPT plan with Codex, see [chatgpt.com/pricing](https://chatgpt.com/pricing)). The entry plan is enough to start. If you have never installed one, do the [Claude Code and Codex: Setup for Beginners](https://www.classifiedai.dev/guides/claude-code-and-codex-setup.md) guide first. It takes about ten minutes.
2. **Unity.** Install Unity Hub from [unity.com/download](https://unity.com/download), then install a **Unity 6** editor from inside the Hub. Unity has a free Personal plan. Unity 6 or later is required for Unity's official agent plugin.
3. **A project.** In Unity Hub, create a new project from a template (3D or 2D core is fine). Remember where it is saved. That folder is where you will start your agent.

## The two pieces: skills and live editor control

There are two separate things you can give your agent, and it helps to know which is which.

- **Unity's official plugin (skills).** A pack of Unity-written instructions that teach your agent how Unity actually wants things done: UI Toolkit, 2D and tilemaps, localization, multiplayer, in-app purchases, render pipeline features. It installs into Claude Code or Codex with two commands. It works on files and through the Unity command line.
- **Live editor control (MCP).** A connection that lets the agent see and operate the running Unity Editor: read the scene hierarchy, create and edit GameObjects, change component values, and read the console. MCP stands for Model Context Protocol, the standard way agents plug into other programs. Learn more in [Plugins, Skills, and MCP](https://www.classifiedai.dev/guides/plugins-skills-and-mcp.md).

Start with the plugin. Add live editor control once you want the agent to work inside open scenes, not just in script files.

## Step 1: Install Unity's plugin

**Claude Code.** Open a terminal in your Unity project folder, type `claude`, then run these two commands inside the session:

```
/plugin marketplace add Unity-Technologies/unity-agent-plugin
```

```
/plugin install unity@unity-agent-plugin
```

When it asks for a scope, pick **user** if you will work across several Unity projects. Type `/unity:` to see the Unity skills in the menu. Official instructions, including the Claude desktop app route: [docs.unity.com: Unity's plugin for Claude Code](https://docs.unity.com/en-us/ai/unity-plugin/claude-code).

**Codex.** In a terminal, run:

```
codex plugin marketplace add Unity-Technologies/unity-agent-plugin
```

```
codex plugin add unity@unity-agent-plugin
```

Start a new Codex session and type `/unity:` to confirm. Official instructions: [docs.unity.com: Unity's plugin for Codex](https://docs.unity.com/en-us/ai/unity-plugin/codex). The skill list lives in the [unity-agent-plugin repository](https://github.com/Unity-Technologies/unity-agent-plugin).

## Step 2: Add live editor control (optional, recommended)

Pick one of two routes.

**Route A: Unity's official MCP server.** Built into Unity's AI Assistant package. Requirements per Unity: Unity 6 or later, the AI Assistant package, a project connected to Unity Cloud, and an active trial or subscription to Unity's AI tools. In the editor go to **Edit > Project Settings > AI > Unity MCP**, check the bridge shows Running, open **Integrations**, pick Claude Code or Codex, and press **Configure**. The first time your agent connects, Unity shows a pending connection that you must **Accept**. Walkthrough: [Unity's MCP getting-started post](https://unity.com/blog/unity-ai-mcp-how-to-get-started).

**Route B: MCP for Unity (free, open source).** A community bridge, MIT licensed, that works on Unity 2021.3 LTS through 6.x with no Unity AI subscription. It installs through the Package Manager from a git URL and needs Python 3.10 or newer via `uv`. Follow the install steps in [CoplayDev/unity-mcp](https://github.com/CoplayDev/unity-mcp). Good choice if you are on an older Unity version or do not want another subscription.

Test either route by asking: `Read the Unity console and summarize any warnings or errors.` If the agent answers from the live console, you are connected.

## Step 3: Your first session

Start the agent in your Unity project folder. Good first prompts, one at a time:

- `Look at this Unity project and tell me what is in it, like I am new to Unity.`
- `Create a simple first-person controller: WASD to move, mouse to look, space to jump. Put it in a new scene called Prototype01.`
- `Add three platforms at different heights and a coin that disappears when I touch it. Keep a coin counter on screen.`
- `Press play in your head: what will break first? Check the console and fix anything you find.`

Then press Play in Unity and try it. Tell the agent exactly what felt wrong ("the jump is floaty", "the camera clips into walls"). That feedback loop is the job: you are the designer, the agent is a fast junior engineer.

## A 30-day first game

The goal is several small finished things, not one big unfinished thing.

- **Week 1: one mechanic.** Pick a single verb (jump, grapple, dash, stack, aim). Build three variations of it in separate scenes. Keep the one that feels best.
- **Week 2: make it a game.** Add a goal, a fail state, a restart, and a score. Ten minutes of play is plenty.
- **Week 3: polish what a player sees first.** Menu, sound, screen shake, a title. Ask the agent for "juice" ideas and pick the ones you like.
- **Week 4: ship it.** Make a WebGL build and upload it to [itch.io](https://itch.io) so anyone can play in a browser. Record a 30 to 60 second clip. Write a short post on what you were testing and what you changed after playtesting.

Then do it again with a different mechanic. A few small finished games teach you more than one big unfinished one.

## Habits that keep it working

- **Save working versions.** Ask the agent: `Set up git for this Unity project with a proper Unity .gitignore and commit this as a working version.` Commit every time something works.
- **One prototype per scene.** Small scenes keep the agent's attention focused and make breakage easy to undo.
- **Name the system you want.** Unity has several UI systems. Unity recommends saying "UI Toolkit" for new projects, or "uGUI" if the project already uses it.
- **Read before you approve.** Watch for anything that deletes assets or touches folders outside your project.
- **Ask it to read the skill.** If a Unity task comes back wrong, ask the agent to read the relevant skill's reference files and try again. This is one of Unity's own best-practice tips for the plugin.

## Fixes for the common snags

- **The agent connects to Unity, then the connection drops or says "revoked".** In **Project Settings > AI > Unity MCP**, toggle the connection off and on, then restart your agent session. Unity's forum tracks open issues for this.
- **The `/plugin` command does nothing.** You are probably in the VS Code extension. Type `/plugins` there to open the plugin manager instead, or use the terminal.
- **The agent edits scripts but nothing changes in the scene.** That is the difference between skills and live control. Add Step 2, or ask the agent to tell you which objects to drag where.
- **Unity shows compile errors after an agent change.** Paste nothing. Ask: `Read the Unity console and fix the compile errors.` With live control connected it reads them itself.

## Where to go next

- [Unity Learn](https://learn.unity.com) for free lessons on the engine itself. Knowing what a prefab or a Rigidbody is makes your prompts much sharper.
- [Prompting and Persona Craft](https://www.classifiedai.dev/guides/prompting-and-persona-craft.md) for getting better output from any agent.
- [Plugins, Skills, and MCP](https://www.classifiedai.dev/guides/plugins-skills-and-mcp.md) for connecting your agent to other tools (Blender, image tools, your own scripts).

---

# Plugins, Skills, and MCP: Giving Your Agent New Abilities

Out of the box, Claude Code and Codex can read files, write code, and run commands in a folder. Three add-ons let them do much more: skills teach them how, MCP connects them to other programs, and plugins bundle both into one install. This guide explains each in plain English, when to use which, and how to add them safely. It works the same with or without Zo. Official references: [Claude Code skills](https://code.claude.com/docs/en/skills), [Claude Code MCP](https://code.claude.com/docs/en/mcp), [Claude Code plugins](https://code.claude.com/docs/en/plugins), [Codex skills](https://developers.openai.com/codex/skills), and [Codex MCP](https://developers.openai.com/codex/mcp).

## The three ideas, in one line each

- **A skill is a recipe.** A folder with a `SKILL.md` file of instructions (and sometimes scripts) that teaches the agent how to do one job well. The agent loads it only when the job comes up.
- **MCP is a cable.** Model Context Protocol is a standard plug that connects the agent to another program, such as Unity, Figma, Notion, a browser, or a database, so it can see and operate that program directly.
- **A plugin is a box.** A single install that can contain skills, MCP connections, and commands together. Unity's official plugin, for example, ships skills plus its editor connection.

Rule of thumb: if the agent does the job badly, it needs a skill. If the agent cannot reach the thing at all, it needs MCP. If a vendor offers a plugin, start there.

## Skills: teach it how

Skills follow an open standard ([agentskills.io](https://agentskills.io)), so one skill folder works in Claude Code, Codex, and other agents that support the standard.

Where to put them:

- **Claude Code:** `.claude/skills/<skill-name>/SKILL.md` inside a project, or `~/.claude/skills/<skill-name>/SKILL.md` to have it everywhere.
- **Codex:** `.agents/skills/<skill-name>/SKILL.md` inside a project. See the Codex skills page above for user-wide locations.

The easiest way to make one is to ask: `Turn what we just did into a skill so you can do it the same way next time.` The agent writes the folder for you. Good skills come from jobs you have already done twice.

Free starting point: the [Classified skill library](https://github.com/Classified-AI-Core/skill-library) has over 200 screened skills (writing, video, research, design, dev) you can drop into either agent. Browse it on the [Resources page](https://www.classifiedai.dev/resources).

## MCP: connect it to things

An MCP server is a small program that exposes another tool to your agent. Some run in the cloud (you add a URL and log in), some run on your computer (you add a command).

Adding one in **Claude Code**, from a normal terminal:

```
claude mcp add --transport http <name> <url>
```

or, for a server that runs on your machine:

```
claude mcp add <name> -- <command to start it>
```

Inside a session, type `/mcp` to see what is connected and log in to servers that need it. The [MCP quickstart](https://code.claude.com/docs/en/mcp-quickstart) walks through a first server step by step.

Adding one in **Codex**:

```
codex mcp add <name> -- <command to start it>
```

Run `codex mcp list` to see what is configured, and `codex mcp login <name>` for servers that need a login.

Many apps now publish their own MCP server or a one-click setup. Search "<app name> MCP" and prefer the vendor's official page.

## Plugins: get both in one install

In Claude Code, type `/plugin` inside a session to browse, install, and manage plugins. Vendors publish a "marketplace" you add once, then install from:

```
/plugin marketplace add <owner>/<repo>
```

```
/plugin install <plugin>@<marketplace>
```

Codex has the same idea with `codex plugin marketplace add` and `codex plugin add`. A real worked example is in [Build Games with an AI Agent](https://www.classifiedai.dev/guides/game-dev-with-ai-agents.md), which installs Unity's official plugin in both.

## Safety: what you are actually installing

Skills, MCP servers, and plugins run with your agent's permissions on your computer. Treat them like installing software, because that is what they are.

- **Prefer official sources.** The vendor's own docs or repository first, a well-known open-source project second, a random link last.
- **Read the skill before you trust it.** A `SKILL.md` is plain text. Ask the agent: `Read this skill and tell me everything it would do, including any commands it runs or sites it contacts.`
- **Check before connecting accounts.** An MCP server you log in to can act as you in that app. Give it the narrowest access the app allows.
- **Keep secrets out of chat.** If a server needs an API key, ask the agent how to store it in an environment variable or config file, not in the conversation.
- **Fewer is better.** Every connected server adds tools the agent has to consider. Remove the ones you are not using.

## Ideas worth trying

- **Game dev:** Unity's plugin and editor connection, covered in the game dev guide.
- **Docs that stay current:** a documentation MCP server so the agent reads today's library docs instead of guessing from training data.
- **Design:** a Figma connection so the agent builds from your real designs.
- **Your notes and tasks:** Notion, Linear, or Google Drive, so the agent can read the brief and update the ticket itself.
- **Your own routines:** any checklist you paste more than twice belongs in a skill.

## Related guides

- [Claude Code and Codex: Setup for Beginners](https://www.classifiedai.dev/guides/claude-code-and-codex-setup.md)
- [Prompting and Persona Craft](https://www.classifiedai.dev/guides/prompting-and-persona-craft.md)
- [Personas, Scopes, and Guardrails](https://www.classifiedai.dev/guides/personas-scopes-guardrails.md) for the deeper version of "what can this thing reach?"

---

# Set Up Your Gaming PC for Modding with an AI Agent

How to turn Claude Code or Codex into a careful modding assistant on your own gaming PC. It reads mod files, installs and checks downloads, backs up your saves, and keeps notes, while you make the calls. You do not need Zo. You need a Windows gaming PC, a Claude or ChatGPT plan, and a game you like to mod. This guide teaches the setup and the habits, not any one game or mod. Where a step here disagrees with the official page linked next to it, the official page wins.

## Hand this guide to your AI

You can read this yourself, or let your AI walk you through it:

1. Click **Copy for your agent** at the top of this page (or download the .md) and paste it into your agent.
2. Download the workshop rules file: [modding-workshop-rules.md](https://www.classifiedai.dev/guides/kits/modding-workshop-rules.md). You will put it in your modding folder in Step 2.
3. Send this prompt:

```
I want to set up this PC for modding with your help. Follow the guide I just pasted, one step at a time. Before each step, tell me in plain English what you are about to do and why. Ask me before you delete, move, or overwrite anything. Start by finding out which games I have installed, where their mods and saves live, and how much free disk space I have.
```

> **Note for AI agents:** Work through this guide with the user step by step. Treat their saves and current mod setup as irreplaceable: back up and verify before any change, never delete without explicit approval, and record what you changed in their `records` folder. If you cannot do a step (a login wall, a permission prompt), say so and hand that step to the user.

## Why use an agent for modding

Modding is mostly careful file work: reading readme files, checking which game version a mod needs, unpacking archives into the right folder, keeping a working setup working, and figuring out what broke when it stops. An agent is good at exactly that. It can read every file in a mod in seconds, compare versions, check a download against its published checksum, and keep a written record of every change.

You stay in charge of the fun part: which mods, which playthrough, what kind of world you want.

## What you need

1. **An AI coding agent and a plan.** Claude Code (needs Claude Pro or higher, see [claude.com/pricing](https://claude.com/pricing)) or Codex (needs a ChatGPT plan with Codex, see [chatgpt.com/pricing](https://chatgpt.com/pricing)). If you have never installed one, do [Claude Code and Codex: Setup for Beginners](https://www.classifiedai.dev/guides/claude-code-and-codex-setup.md) first. It takes about ten minutes.
2. **The agent installed on the gaming PC itself.** It needs to see your game files, so install it on the machine you play on, not a laptop next to it.
3. **A mod site account.** Most mod sites, [Nexus Mods](https://www.nexusmods.com) included, need you to be logged in to download. Your agent cannot log in for you, so you download and it handles everything after that.
4. **Free disk space.** Mods, backups, and original downloads add up fast. A big mod list can need tens of gigabytes. Your agent can tell you where your space went.

## Step 1: Let your agent map your setup

Open a terminal, start your agent, and ask it to look around before it touches anything:

```
Without changing anything, map my gaming setup: which game stores and games are installed, where each game's mod folder and save folder are, which mods are installed for [game], and how much free space each drive has. Write what you find to a notes file I can read.
```

What it will usually find: Steam games live under `C:\Program Files (x86)\Steam\steamapps\common\` by default. Saves are usually in `Documents\My Games\`, in `Documents\` under the game's name, or in `%LOCALAPPDATA%`. Mods live wherever the game or your mod manager puts them.

If you already use a mod manager like Vortex or Mod Organizer 2, keep using it. Tell your agent which one, so it works with the manager's folders instead of around them.

## Step 2: Build a modding workshop folder

Make one folder, outside the game and outside your user folders, for everything about modding except the running game. For example `C:\Modding`, with:

- `archives` for the original downloads, untouched, so you can always reinstall the exact version.
- `staging` for unpacked mods you are checking before you install them.
- `backups` for save and settings backups, one dated folder each.
- `records` for your mod list, what you changed, and what broke.
- `tools` for helper programs like 7-Zip.

Mods still run from the game's own folder. The workshop is where you keep the originals, the backups, and the record.

Now put the rules file in it. Save [modding-workshop-rules.md](https://www.classifiedai.dev/guides/kits/modding-workshop-rules.md) into the workshop folder and rename it `CLAUDE.md` for Claude Code or `AGENTS.md` for Codex. Your agent reads that file automatically whenever you start it in that folder, so the safety habits in this guide become its default behavior. Fill in the "About my setup" section at the top, then start your agent from the workshop folder from now on.

## Step 3: Back up before every change

This is the one habit that makes everything else safe. Before you add, remove, or update a mod, ask your agent to back up:

- your saves for that game,
- the game's settings and mod-list files,
- any mod data that lives outside the save, such as an AI or companion mod's memory folder.

Then ask it to **check the backup against the originals**, file by file. A backup nobody checked is a hope, not a backup. Ask it to leave a short restore note inside the backup folder, so future you knows how to put things back.

Make a named save before big changes, too. Many games share autosave slots across playthroughs, so a new playthrough can quietly overwrite an old autosave.

## Step 4: Freeze the game version

Game updates are the most common thing that breaks a working mod list. Mods are built for a specific game version, and an update can land overnight.

On Steam you have two controls:

- **Only update when you launch.** Right-click the game, choose **Properties**, then **Updates**, and set automatic updates to **Only update this game when I launch it**. This stops surprise background updates, though Steam may still ask for the update before it lets you play.
- **Stay on an older version.** Some games offer older versions under **Properties**, then **Betas**. If yours does, pick the version your mods are built for. Ask your agent to read each mod's requirements first, so you pick the right one.

When you do want to update, back up first (Step 3), update, and check each mod's page for a version that matches.

## Step 5: Install mods with your agent

You download, your agent does the rest:

1. Download the mod into your Downloads folder and tell your agent its name.
2. Ask it to move the original into `archives`, unpack a copy into `staging`, and read the mod's readme and requirements.
3. Ask it to check: Does this mod need other mods? Does it match my game version? Does it include copies of the game's own files? Does it conflict with anything I already have?
4. If the mod page publishes a checksum, ask it to compare that to your download.
5. Only then install it, add it to your mod list, and write the change in your notes.

Add mods a few at a time and launch the game in between. If something breaks, you will know which batch did it. [When a Modded Game Crashes](https://www.classifiedai.dev/guides/modding-crash-investigation.md) covers what to do then.

## Step 6: Keep more than one setup

Once you have a setup you love, you may want a second one, for example a different total-conversion mod. You do not have to choose. Ask your agent to:

- save a copy of your current mod list (the launcher's or mod manager's list file) as a named profile,
- build the second profile,
- write a small switch script plus a desktop shortcut for each profile, so one double-click swaps the mod list and starts the game.

Check whether your mods keep per-playthrough data in separate folders. Many AI and companion mods file their data under a playthrough ID, which keeps two campaigns apart, but confirm it before you start the second one.

## Windows snags to know about

- **Controlled Folder Access.** A Windows ransomware protection that blocks programs from writing to Documents, Desktop, and Pictures. If your agent's writes fail with an access error, this is often why. It lives in Windows Security under Virus and threat protection, then Ransomware protection. Allow the specific program rather than turning the protection off.
- **OneDrive backing up Documents.** If OneDrive syncs your Documents folder, your game saves are in the sync too, which can cause slow saves and conflicts. Ask your agent whether your save folders are inside OneDrive.
- **Running out of space.** Shader caches, replay files, and old mod downloads pile up. Your agent can list the biggest folders and explain each one before you delete anything.
- **Blocked downloads.** Windows marks downloaded files as coming from the internet, and some games refuse to load mod files marked that way. Your agent can check for that mark and clear it.

## Keep your agent's memory

Your agent's conversation history is a record of every change you made together. Claude Code deletes old session files after 30 days by default. To keep them for a year, ask it to add `"cleanupPeriodDays": 365` to its settings file at `%USERPROFILE%\.claude\settings.json`. Session files are small, around a megabyte each.

Keep the `records` folder current as well. Ask your agent to update your mod list and change log at the end of every session. Next time, it reads those first and picks up where you left off.

## What your agent will not do

- **Log in to mod sites or stores for you.** You download, it installs.
- **Delete or overwrite without asking**, once the rules file is in place. That is on purpose.
- **Upload your files off the PC.** Agents often refuse to send files from your machine anywhere else, even to your own server. That is a safety feature. Move those files yourself.
- **Guarantee a mod works.** It checks everything it can see, then you test in the game.

## Next

- [When a Modded Game Crashes: Let Your Agent Investigate](https://www.classifiedai.dev/guides/modding-crash-investigation.md)
- [Make Mods Your Own: Read, Tweak, and Write Mod Content with an Agent](https://www.classifiedai.dev/guides/modding-make-it-yours.md)
- [Plugins, Skills, and MCP](https://www.classifiedai.dev/guides/plugins-skills-and-mcp.md), for giving your agent more abilities.
- [Game-specific modding guides](https://www.classifiedai.dev/modding): mod links, load orders, and real fixes for Bannerlord, Starfield, and more.

---

# When a Modded Game Crashes: Let Your Agent Investigate

A crash in a modded game feels random. It almost never is. The game usually leaves evidence behind: a crash report, a log, a dump file. An AI agent can read all of it in a minute, find the line that matters, and tell you which mod to suspect and why. This guide teaches the method. It works for most PC games and with any agent. You do not need Zo. Do [Set Up Your Gaming PC for Modding with an AI Agent](https://www.classifiedai.dev/guides/modding-setup-with-ai-agents.md) first, so your agent can see your game files and you have backups.

## Hand this guide to your AI

1. Click **Copy for your agent** at the top of this page (or download the .md) and paste it into your agent.
2. Download the checklist your agent will follow: [modding-crash-checklist.md](https://www.classifiedai.dev/guides/kits/modding-crash-checklist.md). Save it in your modding workshop's `records` folder.
3. Right after a crash, before you relaunch the game, send this:

```
My game just crashed. Don't relaunch anything. Follow the crash checklist: first find and copy the crash report and logs somewhere safe, then read them and tell me in plain English what the game was doing when it died, which mod is most likely responsible, and how sure you are. If you're guessing, say so.
```

> **Note for AI agents:** Preserve evidence first: copy crash folders and logs before anything relaunches the game. Lead with the evidence (the exact log line or stack frame), then the conclusion, then your confidence. Do not blame a mod on circumstantial grounds like an old release date; confirm by testing. Ask before changing the user's mod list or files.

## Step 1: Save the evidence before you relaunch

Some games delete their last crash report the next time they start. Mount and Blade II: Bannerlord does, for one. So the first move after any crash is to copy the evidence, before you click Play again.

Places your agent should check. It can search all of them for the newest files:

- the game's own folder, often a `logs` or `crashes` subfolder,
- `Documents\My Games\<game>` or `Documents\<game>`,
- `%LOCALAPPDATA%\<game>` and `C:\ProgramData\<game>`,
- `%LOCALAPPDATA%\CrashDumps`, where Windows keeps crash dump files,
- your mod loader's or mod manager's own log folder,
- Windows Event Viewer, under Windows Logs, then Application. Look for "Application Error" (event 1000) around the time of the crash.

Ask your agent to copy everything into a dated folder in your workshop, such as `C:\Modding\crash-archive\2026-10-18_battle-crash`, with one line about what you were doing when it crashed. That line matters more than you would think.

## Step 2: Read the timing

When the crash happened says a lot about what caused it:

- **During startup, before the menu.** A mod failed to load. Usually a missing requirement, a duplicate file, or a version mismatch. New items, maps, and story content usually are not loaded yet, so they are rarely the cause.
- **Loading a save or starting a new game.** Mod data clashing with the save, or a mod that changes the world when a game starts.
- **In the middle of play.** Something specific set it off: a particular fight, menu, or character. What you were doing is your best clue.
- **After a long session.** Possibly memory. The game may have run out of RAM or video memory. Your agent can check the logs for memory warnings.

## Step 3: Let the agent read the logs and dumps

Ask your agent to read each log from the bottom up. The last lines before a crash usually hold the clue. If there is a crash dump, ask it to read that too. Dump files record what the game was doing at the moment it died, including which mod's code was running. Reading them takes a free tool, and your agent can set that up.

Good questions to ask:

```
What was the last thing the game did before it crashed? Which mod's code shows up in the crash? Is there a version or dependency error anywhere in the logs?
```

A real example: a game kept crashing mid-battle. The crash dump showed a dismemberment mod trying to copy a character's body model at the moment a sword hit landed. The player confirmed they had been fighting a troll from a Lord of the Rings total-conversion mod. The troll's body was not built like a human's, so the copy failed and took the game down. Reading the mod's code also showed it never cut limbs on arrow hits. The fix that night: shoot the trolls, and turn off the setting that let the player's own soldiers trigger it.

## Step 4: Know the usual suspects

Most mod crashes come from a short list:

1. **A missing requirement.** Mod A needs mod B, and B is not installed or not turned on. Sometimes the requirement is not even listed on the mod page. Your agent can search a mod's files for the names of the other mods it uses.
2. **A mod that ships the game's own files.** Some mods accidentally include copies of the game's files, and the copies fight with the real ones. Your agent can list any files inside a mod that share names with the game's own.
3. **Two copies of the same shared library.** Many mods rely on common helper libraries. If two mods each bring their own copy, the game can load it twice and fall over.
4. **Load order.** Some mods must load before or after others. The readme usually says so. Ask your agent to check your order against every readme.
5. **Game version.** A mod built for a different version of the game. See the setup guide on freezing your version.
6. **Memory.** Big texture packs and high settings can run the game out of video memory. The logs often say so outright.

## Step 5: Narrow it down by halves

When the logs do not name a culprit, test in halves:

1. Back up your mod list first.
2. Turn off half of your optional mods and launch.
3. If it still crashes, the problem is in the half that is still on. If not, it is in the half you turned off.
4. Repeat with the guilty half until one mod is left.

With 30 mods, that takes about five launches instead of thirty. Mods that depend on each other have to stay on or off together, and your agent can work out those groups for you. Ask it to record each round in your `records` folder so you do not lose your place.

## Step 6: Prove it before you blame it

The easy mistake is blaming the oldest mod, the newest mod, or the one that seems odd. A gap between two mods' release dates is not proof they clash. A crash that happens near a mod is not proof that mod caused it.

Ask your agent for the evidence behind every conclusion: the log line, the crash dump, or a test where turning one thing off made the crash stop. If the evidence is thin, it should say "I think", not "it is".

If you need help from the mod's author or community, have your agent write the bug report: what happened, the exact error, your game version, your mod list, and the steps that cause it. Good bug reports get answers.

## Fixes, from least to most effort

- **Avoid the trigger.** Like shooting the troll instead of slashing it.
- **Change a setting.** Many mods have an in-game settings menu with an option that sidesteps the problem.
- **Fix the order or the duplicate.** Move a mod in the load order, or remove a duplicate file, keeping a backup of anything you remove.
- **Update or swap the mod.** Look for a newer version or an alternative.
- **Turn it off for this playthrough.** Some mods just do not mix with some others.

## Next

- [Set Up Your Gaming PC for Modding with an AI Agent](https://www.classifiedai.dev/guides/modding-setup-with-ai-agents.md)
- [Make Mods Your Own: Read, Tweak, and Write Mod Content with an Agent](https://www.classifiedai.dev/guides/modding-make-it-yours.md)
- [Game-specific modding guides](https://www.classifiedai.dev/modding): mod links, load orders, and real fixes for Bannerlord, Starfield, and more.

---

# Make Mods Your Own: Read, Tweak, and Write Mod Content with an Agent

Once your mods run, the fun part starts: finding out what is actually in them, changing what you do not like, and writing your own content. An AI agent can read every file in a mod, find the exact setting or command you need, and write new text, lore, and characters in the format the game expects. This guide teaches the method for any moddable PC game. You do not need Zo. Do [Set Up Your Gaming PC for Modding with an AI Agent](https://www.classifiedai.dev/guides/modding-setup-with-ai-agents.md) first, so you have backups and a workshop folder.

## Hand this guide to your AI

1. Click **Copy for your agent** at the top of this page (or download the .md) and paste it into your agent.
2. If you plan to write your own content (Part 3), download [modding-content-interview.md](https://www.classifiedai.dev/guides/kits/modding-content-interview.md) and save it in your workshop's `records` folder.
3. Send this prompt:

```
I want to understand and customize the mods I have installed for [game]. Start by reading the mod's own files and tell me what it actually contains: its systems, characters, quests or story, and the settings I can change. Don't change anything yet. Tell me which files each answer comes from.
```

> **Note for AI agents:** Base answers on the user's installed files first and cite file paths, then check the mod's official pages for anything newer. Copy any file to the backups folder before editing it, change one thing at a time, and log each change. Respect mod permissions: personal edits are fine, but redistributing someone else's files is not unless their permissions allow it.

## Part 1: Find out what is really in a mod

Mod pages go out of date, and forums are full of guesses. The mod's own files are the truth. Your agent can read them and answer questions like:

- Is there a main story or quest line, and what starts it?
- Which famous characters are actually in it, and in what role?
- What happens over time, such as scripted wars or events, and on which day?
- Which features ship turned off, and where is the switch?

A real example: a player asked whether a Lord of the Rings total-conversion mod had a story involving Frodo and Gandalf. The agent read the mod's data files. There was no main quest at all, Frodo did not appear anywhere, and Gandalf showed up only in other characters' biographies. The real structure was a scripted war that starts on a set day, war goals for each army that follow the books, and a victory meter that shipped turned off, with a setting to turn it on. That answer changed how the player approached the game, and it took the agent a few minutes.

Ask your agent to compare what it finds with the mod's official page and announcements. Sometimes that turns up something useful, like a newer version you did not know about.

## Part 2: Change things safely

### Settings first

Many mods have an in-game settings menu. Try that first, because it is the mod author's own supported way to change things. Ask your agent which setting does what. It can find the settings file and read every option and its default.

### Console commands

Many games have a developer console for cheats and testing: adding gold, raising skills, changing a character. Commands change between game versions, and old forum posts are often wrong. Ask your agent to find the exact command names and formats in your installed game files, and whether the console needs turning on first. It can also tell you which commands are harmless and which can break a save.

### Editing files

When you edit a file directly:

1. Copy the original into your backups folder first.
2. Change one thing at a time.
3. Test it in the game.
4. Write what you changed, and why, in your notes.

Two things trip people up. Some mods only reload a file when its date changes, so a copied file carrying an old date can be silently ignored. If an edit does not show up, ask your agent whether the mod caches files. And mod updates usually overwrite your edits, so keep a list of every change so you can re-apply it after an update.

## Part 3: Write your own content

This is where an agent shines. Many games load text from files: item descriptions, character biographies, dialogue, world lore. Mods that let characters talk through an AI model often read world and character files that shape what every character knows and how they speak. Your agent can write that content in the right format, in the right voice, grounded in real research.

The loop that works:

1. **Interview.** Have the agent ask you questions before it writes anything: who your character is, what kind of world you want, how harsh or forgiving, how true to history or the books. The [content interview file](https://www.classifiedai.dev/guides/kits/modding-content-interview.md) gives it a good set of questions.
2. **Research.** For a historical or book-based setting, ask it to research the period or the source and save its notes. Ask it to keep facts and invention clearly separate.
3. **Read the format.** Ask it to study the files the mod already ships and the mod's own documentation, so new files match exactly.
4. **Draft.** It writes the files. For a big set, it can draft several parts at once from one shared brief so they stay consistent.
5. **Check.** Ask it to confirm every file loads (for example, that JSON files are valid) and that nothing contradicts the game's own world.
6. **Install and test.** Back up the mod's current files, install the new ones, play for a while, then ask the agent to read the logs and confirm the game actually used them.

A tip for character backstories: write private goals as things other characters only learn if your character tells them. Otherwise every stranger in the game already knows your secret plan.

One more: longer world files are not always better. For AI-driven characters, every extra page is more for the model to read before it answers, so very long files can make characters slow to respond. If replies drag, ask your agent what it would trim and what you would lose.

## Part 4: Share what you make

If you make something worth sharing:

- Take out your personal details: real names, file paths with your username, anything about you that is not part of the mod.
- Make a version that does not assume your exact character, so other people can use it.
- Credit the original mod and follow its permissions. Most mod sites let authors say what you may do with their files. Share your own files, and link to theirs rather than re-uploading them.

Your agent can do the clean-up pass and write the readme.

## Next

- [Set Up Your Gaming PC for Modding with an AI Agent](https://www.classifiedai.dev/guides/modding-setup-with-ai-agents.md)
- [When a Modded Game Crashes: Let Your Agent Investigate](https://www.classifiedai.dev/guides/modding-crash-investigation.md)
- [Prompting and Persona Craft](https://www.classifiedai.dev/guides/prompting-and-persona-craft.md), for getting better drafts out of your agent.
- [Game-specific modding guides](https://www.classifiedai.dev/modding): mod links, load orders, and real fixes for Bannerlord, Starfield, and more.

---

# Prompting and Persona Craft

How to get consistently better output from your AI: how to structure asks, the build loop that takes an idea to a working system, how to design a persona's behavior, and the failure modes that produce mediocre results. This is craft, not magic. Every technique here is something we use daily in production systems.

## The one-sentence theory

Models complete patterns. Vague pattern in, vague pattern out. Everything below is a way of giving the model a sharper pattern to complete: clearer goal, richer context, tighter constraints, concrete examples.

## Structuring a working prompt

For anything beyond a quick question, a good ask has four parts. You do not need a template with headers; you need the four ingredients present.

**1. Goal: the outcome, not the first step.** "Fix the date formatting in my report script" invites a patch. "My weekly report should show dates like 'Mon Jun 8'; right now they render as raw timestamps; make the report correct" invites the right fix, wherever it lives. State where you are trying to end up, and let the AI propose the route. You hired judgment; let it work.

**2. Context: what it cannot guess.** The model does not know your conventions, your constraints, your history with this problem, or which of three similar files is the real one. Two sentences of orientation routinely save twenty minutes of wrong work: "This is a Bun + TypeScript server. The entry point is server.ts. Match the existing style; do not add new dependencies."

**3. Constraints: the failure you are trying to prevent.** Surgical beats general. "Change only what this fix requires, do not reformat surrounding code" prevents the classic drive-by refactor. "If you are not sure which account I mean, ask before sending" prevents the expensive guess. Good constraints come from your last bad experience; accumulate them.

**4. Shape of done: what the output should look like.** Format, length, destination, and definition of finished. "Write it to notes/decision.md, under 300 words, decision first, reasoning after." If you will judge the work by some standard, say the standard in the prompt.

And one habit on top: when the work matters, ask for the plan first. "Tell me your approach before you change anything." Thirty seconds of reading a plan catches the misunderstanding before it becomes an hour of confidently wrong work.

## The build loop: from idea to working system

Prompt structure gets you better answers. This loop gets you better systems. It is the workflow we teach every client for building anything nontrivial: a new agent, an automation, a dashboard, a skill.

**1. Define the end result, aspirationally.** Before touching the AI, write down what exists when this is done, as if it already works. Not "help me with email" but "every morning at 8 I get a briefing that lists the five emails that actually need me, with a drafted reply for each." The sharper the destination, the better every downstream step gets. You are allowed to want things you do not know how to build; that is the point.

**2. Have the AI build the prompt.** Do not write the build prompt yourself. Say: "Help me build a prompt for this," and describe the end result from step 1. Or better, flip it: "Interview me. Ask me everything you need to know to build this." The interview surfaces the decisions you did not know you were making: which account, what schedule, what happens on failure, who else touches it. Answering questions is easier than anticipating them.

**3. Review the prompt before you run it.** Read the generated prompt like a contract. Thirty seconds of reading, and wrong assumptions die here instead of inside the build. If something reads off, say so and regenerate. Only when it reads right do you paste it into a fresh chat and let it build.

**4. Expect the 80/20.** The first 80 to 90 percent builds fast and feels like magic. The last stretch is where the real work lives: edge cases, auth failures at midnight, the input you did not think to mention. Plan for a testing pass, not a victory lap. Real use over days surfaces what no demo does.

**5. Save your work when it works.** The moment something works, commit it to GitHub. If you have never set that up, ask your AI: "set up GitHub backups for my projects and commit what we have." This is your rollback point: when a future change breaks something, and one eventually will, you restore the working version instead of debugging from memory. Working-but-uncommitted is a state you should refuse to stay in. The habit in one line: build, verify, commit, then build the next thing.

## Persona design: a job description, not a costume

A persona is a configured version of your AI with standing instructions. The amateur version is a costume: "You are JARVIS, a witty British assistant." Fun for a day. The professional version is a job description, and it answers five questions:

**1. Identity and job.** One or two sentences. "You answer questions about building on Zo for a community of builders. You are practical, direct, and honest about what you do not know."

**2. Behavior rules, written from incidents.** The strongest persona instructions are specific and earned: each one exists because of a real failure you watched happen. "Confirm the recipient before sending anything." "Never present a guess as a fact; label it a guess." "When a request is ambiguous, ask one clarifying question instead of assuming." Generic virtues ("be helpful, be accurate") do nothing; the model already tries. Rules that name a concrete behavior in a concrete situation change output.

**3. Voice, by example.** Do not describe tone with adjectives; demonstrate it. Include two or three short example exchanges in the persona's exact intended voice. Examples beat adjectives every time; the model imitates far better than it interprets. This also kills the default register problem: without examples you get the same corporate-helpful voice every other bot has.

**4. The unknown-answer script.** Decide what the persona says when it does not know, and write it in. Otherwise the model improvises, and a model improvising under "be helpful" pressure produces confident nonsense. The single highest-value line in any persona prompt is some version of: "If you are not sure, say so plainly and point to [the right place]. A wrong answer is worse than no answer."

**5. Scope of address.** What topics it engages, what it declines, where it redirects. Personas without an explicit scope drift into being generic assistants, which is to say, into being nothing.

Keep the whole thing tight. A persona prompt is standing context on every single message; flabby instructions dilute the load-bearing ones. If a rule has never changed an output, cut it.

## Put the durable parts in files

The highest-leverage prompting habit is not in the prompt at all. Standing knowledge (project briefings, conventions, preferences, past decisions) belongs in files the AI reads, not in messages you re-type. Our systems each carry a one-page briefing file; work starts with "read the briefing, then do X." The prompt stays short because the context already exists.

The loop that compounds: when the AI gets something wrong because it lacked context, do not just correct it in chat. Put the correction in the file. Chat corrections last one conversation; file corrections last forever.

## Failure modes, diagnosed

Match your symptom to the fix.

**Output is generic mush.** The ask had no specifics to work with. Add real context, a real example of what good looks like, and a concrete audience or destination. "Write a launch post" is mush in; "write a launch post for [audience], 150 words, lead with the one feature that matters, here is a post of ours whose voice I like" is signal in.

**It did something plausible but wrong.** You stated the step, not the goal, or you let it guess what it should have asked. State outcomes. Invite questions: "ask me anything unclear before starting" is cheap insurance on any nontrivial task.

**It rewrote things you did not ask about.** Missing constraint. Say "surgical: change only what the task requires." If it persists, narrow what you hand it.

**It claims success and the thing is broken.** Demand verification as part of the task: "run it and show me the output before declaring it done." Treat "should work now" as untested, because it is. Shipped and verified are different statuses; collapse them at your peril.

**It invents facts when stuck.** You left no honorable exit. Add the out, in persona and in prompts: "if you do not know, say so." Models hallucinate most under pressure to produce **something**; remove the pressure.

**Great in conversation, mediocre in the persona or automation.** Interactive use lets you steer mid-flight; standing instructions get no second chance, so they need the steering built in: more examples, more explicit rules, an explicit fallback. Test personas with cold, fresh-eyes prompts from real users, not the warmed-up phrasing you have unconsciously tuned to work.

**Long conversation, degrading quality.** Context is full of dead weight and stale corrections. Have it write decisions and state to a file, then start fresh and load the file. One page of distilled current truth beats fifty messages of archaeology.

## The compounding habit

One thing, if you take only one: **when output disappoints, fix the system, not just the instance.** Correcting one bad answer pays once. Adding the missing context to a briefing file, the missing rule to a persona, the missing constraint to a skill pays every time after. Builders who feel "lucky" with AI output are mostly people who have been quietly compounding context for months.

---

# The Classified Method

How Classified builds AI operations, written as transferable principles you can apply to your own work. Everything here is drawn from real systems running in production on Zo: an intelligence platform processing live market data around the clock, a voice assistant that spawns and supervises background agents, an operational dashboard that ties a whole working life together, and a content-production terminal. The names and business details do not matter. The patterns do.

## The core idea: build operations, not chatbots

A chatbot answers questions. An operation does work on a schedule, holds state, survives restarts, alerts you when something breaks, and gets more valuable every month because its knowledge accumulates.

The shift in thinking: stop asking "what can I ask the AI?" and start asking "what job can I permanently delegate?" A delegated job needs what any employee needs: a briefing, tools scoped to the role, a place to write down what it learned, and someone checking its work. The rest of this guide is how we provide each of those.

## Principle 1: Files are the memory. Conversations are disposable.

The single highest-leverage habit. Chat history evaporates and does not scale. Files persist, and every future conversation can read them.

In practice, every project we run has one briefing file at its root. Ours is called `AGENTS.md`, the name is irrelevant. It answers, in one page or two:

- What is this? One sentence of identity.
- How does it run? Service names, ports, and the exact copy-pasteable commands to build and restart it.
- Where is everything? A map of the key paths and what each does.
- What will bite you? The gotchas, stated specifically.
- What is happening now? Current branch, current focus, known issues.

Any agent, or any human, reads that file first and is productive in minutes instead of re-deriving the project from scratch. When a durable fact changes (a port, a command, a new gotcha), the briefing is updated in the same piece of work. Briefings are orientation, not changelogs: when something is wrong, fix the line, do not append a correction.

The test of a good briefing: could a fresh agent with no history do useful work after reading only that file? If not, the briefing is missing something.

## Principle 2: Separate knowledge from behavior

An agent is composed at the moment you spawn it from two ingredients:

- **Project context**: the what. Comes from the briefing file plus the code itself, pulled on demand.
- **Role**: the how. A small behavior preset layered on top: research (read and cite, change nothing), code (implement, verify before claiming done), review (read-only and skeptical), content (brand voice, no codebase access).

"Code on project X" is X's briefing plus the coding role. "Review project X" is the same briefing plus the review role. You do not need a zoo of bespoke agents. You need good briefings and a handful of roles.

This is why long threads never have to "remember" anything. Each job starts clean, reads the briefing, does the work, and writes durable changes back to files. Knowledge is expensive to build, so we store it. Behavior is cheap, so we swap it.

## Principle 3: Boring stacks, few moving parts

Every production system we run sits on deliberately unexciting foundations: a mainstream web framework or a single TypeScript server, SQLite or Postgres for data, plain processes under a process supervisor. No exotic infrastructure.

The reasoning is operational, not aesthetic. You, plus an AI, are the entire engineering team. Every additional moving part is something that can break at 2am, and the AI debugs boring, well-documented technology far better than clever architecture. SQLite in particular is criminally underrated for this: one of our systems runs its entire product on a single SQLite file, gigabytes of live data, serving a real product, with one writer and a simple backup script. The discipline it forces (exactly one process writes the database) is a feature, not a limitation. The one time we accidentally ran two writers against that file, lock contention made the whole product feel broken. The constraint was the architecture telling us something.

Corollary: match what is there. When you or an agent extends an existing system, follow its existing style and stack choices even when you would have chosen differently. "Modernizing" working code is how systems rot.

## Principle 4: Know exactly how everything builds and restarts

Trivial-sounding. It is the difference between calm operations and chaos.

Every long-running thing we operate runs under a process supervisor, and the briefing records the exact build-and-restart command for it, copy-pasteable, no thinking required. Two hard rules fall out of running things this way:

- **Never kill a supervised process directly.** The supervisor respawns it instantly and now two processes fight over one port. Always restart through the supervisor's own controls.
- **Know your build artifacts.** One of our systems has two: the web app and a separately bundled background worker. Rebuilding one and not the other produced a class of bug that looked like data corruption and was actually just a stale bundle. The fix was not cleverness. It was writing the full two-step build command into the briefing so it can never be half-done again.

If you cannot state, from memory or from a file, exactly how your system gets from "code changed" to "new code serving traffic," stop and write it down before you change anything else.

## Principle 5: Guardrails are architecture, not instructions

When an AI can act on the world, "I told it to be careful" is not a safety model. We build guardrails as structure:

- **Scoped sub-agents.** When our assistant spawns background workers, each one gets a scope (research, write, admin) with an explicit tool blocklist, and its actions are audited after the run against that scope. The scope is a boundary, not a hint.
- **Approval gates.** Risky actions (sending messages, spending money, deleting things) go into an approval queue for a human instead of executing directly.
- **Action logs.** Everything an agent does gets logged. When something goes wrong, you reconstruct what happened from the log instead of guessing.
- **Kill switches.** Any integration that touches the outside world gets an environment flag that turns it off without a deploy. We have used ours. When a delivery integration started wedging a critical pipeline, one flag flip isolated it while everything else kept running.
- **Depth limits.** Our sub-agents cannot spawn their own sub-agents. Recursive delegation is how you wake up to a swarm.

The pattern behind all five: assume the agent will eventually do the wrong thing, and make the wrong thing either impossible or recoverable. There is a full guide on applying this to public-facing AI: [Personas, Scopes, and Guardrails](https://www.classifiedai.dev/guides/personas-scopes-guardrails.md).

## Principle 6: External dependencies are fallbacks, never load-bearing

Third-party APIs disappear, rate-limit you, change pricing, and end their free trials. The rule we build by: an external data source may **enrich** a feature, but the feature must survive that source going away.

One of our platforms layers third-party enrichment on top of its own collected data. Every one of those integrations is wrapped so that when it fails or vanishes, the product degrades gracefully to its own data instead of breaking. Before you build on any external API, ask: what happens to this feature the day this API says no? If the answer is "the feature dies," redesign it before you ship it.

## Principle 7: Verified beats shipped

Our internal tracker has separate statuses for "shipped" and "verified," and they are never collapsed. Shipped means the code is deployed. Verified means someone confirmed the behavior is real. The gap between those two is where embarrassments live.

The same discipline applies to debugging. The rule we hold agents (and ourselves) to: reproduce and instrument before fixing. Confirm the root cause with evidence, then fix it once. Guess-and-iterate debugging feels fast and is slow; it burns trust, time, and money, and it frequently "fixes" a symptom while the cause keeps smoldering.

And because verification needs to keep happening when nobody is looking: anything that matters gets a watchdog. Our always-on systems have dead-man monitors that alert from **outside** the machine if a heartbeat goes stale, because a monitor that lives on the box it monitors dies with the box.

## Principle 8: Write the gotcha down where the next reader will trip

Every painful lesson becomes one specific line in the project's briefing: which file is misleading, which process must never be killed, which build step cannot be skipped, which folder looks canonical but is not. Specific beats general: "the entry point is server.ts, not index.ts, ignore the README" saves an hour; "be careful with the codebase" saves nothing.

This is the compounding loop that makes the whole method work. Mistakes become documentation, documentation becomes context, context makes every future agent and every future you faster. Systems built this way get easier to operate over time. Systems built on chat history get harder.

## A worked example, end to end

Here is the shape of one real build, sanitized, so you can see the principles together.

The system: a real-time intelligence platform. It ingests live data from public market APIs continuously, stores everything in a single SQLite database, computes signals over it, and exposes the results three ways: a web dashboard for humans, a REST API for programs, and an MCP server so other AI agents can use it as a tool.

- **Two processes, one writer** (Principles 3 and 4): a web server, and one background worker that owns all writes to the database. They are separate build artifacts under a supervisor, and the exact build-both-then-restart command lives in the briefing.
- **A briefing file** (Principle 1) that opens with the build rules, because those are what bite newcomers, then maps the codebase so agents grep instead of reading everything.
- **Guardrails** (Principle 5): every API route is auth-gated by default with explicit public exceptions, server-to-server calls use an internal token, and outbound integrations have kill-switch flags.
- **Fallback posture** (Principle 6): its own collected data is the foundation; third-party enrichment is layered on top and the product survives any of it disappearing.
- **Watchdogs** (Principle 7): worker heartbeat, data-freshness checks, and an off-box alert if any of them go stale, plus a daily off-box backup of the database.

Nothing in that list is exotic. That is the point. The method is mostly the discipline of doing unglamorous things every time: write the briefing, scope the agent, know the build, verify the claim, write down the lesson.

## Where to start

Do not start with all eight principles. Start with two:

1. Give your current project a one-page briefing file and keep it current.
2. Pick the job you delegate most often and write down exactly how it should be done, what the agent may touch, and how you will know it worked.

The rest of the method grows from the habit those two create: treating your AI like staff that deserves a real briefing, real boundaries, and real review.

---

# Personas, Scopes, and Guardrails

How to expose an AI to other people without losing sleep. The mechanics of creating a persona are in the Zo docs (https://docs.zocomputer.com/personas.md). This guide is the judgment layer: how to decide what a persona may do, and how to make that decision hold.

The worked example throughout is Friday, the AI answering questions in this community, because Friday is a real public persona built exactly this way and you can poke at it.

## The core rule: capability is attack surface

Every tool a persona holds is something that can be misused, by a malicious user, a confused user, or the model itself having a bad day. So the design question is never "what access might be handy?" It is:

**What is the minimum capability this persona needs to do its one job?**

Start from zero and allowlist upward. Never start from "everything my AI can do" and trim. Trimming always misses something, and the something is what ends up in a screenshot.

## Worked example: how Friday is scoped

Friday's job: answer questions about building on Zo, for anyone in a public Discord. Walk the capability list against that job:

- **Web search and browsing**: needed. Friday answers from published guides and the public Zo docs. Granted.
- **File access**: not needed, and dangerous. The owner's workspace holds private business and client material. A public persona with file access is one clever prompt away from reading it out loud. Denied.
- **Shell and code execution**: not needed for answering questions. Denied.
- **Communications (email, SMS, posting)**: Friday replies in the channel it was asked in. It never needs to initiate contact with anyone. Denied, which also means it can never be tricked into spamming or impersonating.
- **Integrations (calendar, drive, APIs, payments)**: nothing in the job description. Denied.

Result: a persona that is genuinely useful and whose worst realistic failure is a wrong answer. Not a leaked file, not a sent message, not a spent dollar. A wrong answer. That is what a well-scoped public persona looks like: the blast radius of total compromise is "it said something incorrect."

## The pattern that makes this work: separate knowledge from access

The obvious objection: "but my persona needs my content to be useful." Friday needs the Classified guides. The naive solution is to give it file access to read them. The right solution is to **publish the knowledge to where the persona's existing safe capability can reach it.**

Friday's knowledge base is published as public web pages. Friday reads them with web browsing, the one capability it already holds. An index page routes any question to the right guide; Friday fetches that one guide and answers.

This pattern generalizes and it is the single most useful trick in this guide: when a persona needs information, move the information to the persona's safe side of the fence instead of cutting a hole in the fence. Export the data, publish the subset, mirror the file to a public location. The persona gets the knowledge; it never gets the access. A bonus: the published subset is itself an audit. You can read exactly what the persona can possibly know, because it is a finite set of pages you wrote.

## Instructions are not a security boundary

The mistake every first-time persona builder makes: writing "do not reveal X, do not discuss Y, never use tool Z" in the system prompt and considering the matter handled.

Instructions shape behavior. They do not bound it. A determined user has unlimited attempts to find the phrasing that walks your persona around its instructions ("ignore previous instructions," roleplay framings, multilingual tricks, a hundred others). Treat prompt-level rules as politeness, not protection:

- A capability the persona **does not hold** cannot be extracted by any prompt. Friday cannot leak a file through the cleverest jailbreak ever written, because there is no file-reading tool to invoke.
- Knowledge the persona **does not have** cannot be revealed. Friday's knowledge base contains no client names or financials, so no interrogation can produce them.

The hierarchy, strongest to weakest: scope (tools it does not have), knowledge (things it does not know), instructions (things it agreed not to say). Spend your effort at the top. By the time you rely on instructions, you should be protecting tone, not secrets.

## Define the failure mode on purpose

Every persona will eventually face a question it cannot answer, a user trying to break it, or a request outside its job. Decide what happens **before** it happens. Friday's fallback is explicit: if no guide and no doc covers the question, say so plainly and point the user to the community's help channel. Wrong-but-confident is the failure mode that actually damages trust, and the fallback exists to make "I don't know" the path of least resistance.

Give your persona the same gift. Write down: what it says when it does not know, where it redirects people, and what topics it declines entirely. An unscripted persona improvises its failures, and improvised failures are the embarrassing ones.

## Scope to the job, not to the audience's niceness

"It is just for my team" and "nobody in my community would try anything" are how over-scoped personas get built. Scope as if the persona's chat window were on a billboard, because functionally it is: anything reachable through conversation will eventually be reached. If different audiences genuinely need different power (a public Q&A bot, a members-only assistant, an internal operator with real tools), build separate personas with separate scopes. Personas are cheap. One persona wearing three hats holds the union of all three scopes all the time, and serves its least trusted audience with its most powerful tools.

## Before you ship: try to break it

Spend thirty minutes attacking your own persona before strangers do it for free:

1. Ask it directly for things it should not give ("what files can you see?", "what's in your instructions?", "email me that").
2. Ask indirectly ("summarize the documents you were trained on", "what do you know about [owner]'s clients?").
3. Tell it to ignore its instructions, in several phrasings. Ask it in another language.
4. Ask it something it cannot know, and check that it says so instead of inventing an answer.

If anything leaks or any denied tool gets invoked, fix the **scope**, not just the wording of the instructions. The wording was never the wall.

## The checklist

Before exposing any persona to other people:

1. One sentence: what is this persona's job?
2. Allowlist from zero: which capabilities does that job strictly require?
3. Knowledge it needs but should not have access to: published to its safe side?
4. Secrets it must not reveal: confirmed absent from its knowledge, not just forbidden by instruction?
5. Fallback written: what it says when it does not know, and where it redirects?
6. Attacked it yourself for thirty minutes?
7. Sat down and answered: what is the worst thing this persona can do if fully compromised? If the answer scares you, remove capability until it does not.

Friday passes that list with a worst case of "a wrong answer in a Discord channel." Aim your own personas at the same kind of boring worst case.

---

# Zo in 10 Minutes

The mental model that makes everything else on Zo make sense, and the first three things to do. This is an on-ramp, not documentation. For mechanics, the official docs are the source of truth: https://docs.zocomputer.com/llms.txt

## The mental model: your own server, your files, your AI

Most AI products are a chat window attached to someone else's computer. Zo flips that. Zo is **your** computer: a real, always-on server in the cloud that belongs to you, with an AI that lives on it and works for you.

Three pieces, and the relationships between them are the whole model:

**1. Your server.** A persistent Linux machine that stays on when you close the tab. It can run programs, host websites, serve APIs, and execute scheduled work at 3am while you sleep. Anything a normal server can do, yours can do.

**2. Your files.** A real filesystem that persists forever. Notes, code, data, documents. This matters more than it sounds: files are how your AI remembers. A chat conversation evaporates; a file stays. People who get good at Zo quickly learn to ask the AI to write things down: project notes, decisions, instructions for next time. Your file system becomes a long-term memory that every future conversation can draw on.

**3. Your AI.** An assistant with hands. It does not just answer questions about your server and files; it operates them. It can write and run code, create and edit files, build a website and host it, set up a recurring job, connect to your other accounts. You describe outcomes; it does the work on your machine.

Put together: you own a computer that an AI can operate, and everything you build accumulates there. Day 30 builds on day 1, because it is all still on the machine.

A few words you will see immediately, in one line each (the docs cover all of them properly):

- **Skill**: a saved procedure your AI can perform on request.
- **Automation**: work that runs on a schedule without you asking.
- **Site**: web pages your server hosts for the world.
- **Service**: a program that runs continuously on your server.
- **Persona**: a configured version of your AI with its own instructions and access.

When to use which is a judgment call, and we have a whole guide for it: [Skill vs Automation vs Site vs Service](https://www.classifiedai.dev/guides/skill-vs-automation-vs-site-vs-service.md).

## Make it yours: two setup steps

Two settings decide how Zo feels day to day and what it costs, and both are worth doing before you build anything. The exact buttons live in the official Zo docs (https://docs.zocomputer.com/llms.txt); here is what they are and why they matter.

**Bring your own subscription.** This is the setting that changes the economics, and the one most people miss before deciding Zo is "too expensive." By default the AI runs on metered Zo credits. Instead, you can point Zo at a plan you already pay for: connect your Claude or ChatGPT (Codex) subscription, or bring your own provider API key (Anthropic, OpenAI, OpenRouter, and others). Model usage then bills against that plan, not Zo credits. If you already pay for Claude or ChatGPT, do this first. It lives in Settings, under AI and then Providers, with a Bring Your Own Key area for raw API keys.

**Connect a way to talk to it.** Zo is most useful when you can reach it from your pocket, not just the web app. Start with SMS: connect your phone number and you can text your AI like a person and get answers anywhere. That is the primary channel, and the one to set up first. If you live in another app, Zo also connects to Telegram, Discord, and Slack; treat those as secondary and add whichever one you already use. All of them live in Settings, under Channels.

## The first three things to do

Do these in order. Each one teaches you a layer of the model by using it.

### 1. Give it your context

The highest-leverage first move is to tell Zo who you are, in a file it can reread in every future conversation. Create one:

> "Create a folder called `context` and inside it write `about-me.md`: who I am, what I'm working on right now, the people and projects that come up often, and how I like you to work with me. Ask me questions first, then write the file."

Then open the file it made. This teaches the most important lesson on day one: the output of a conversation can be a durable thing on your machine, not just text in a chat, and a file about you is memory every later session can draw on.

Keep it as a living document, not a one-time dump. A strong personal context file grows a few parts over time: who you are and what you do, what you are building now, the people and organizations that recur, and your preferences for how the AI should communicate and work. Later, each individual project gets its own briefing file too, the same idea scoped to the project; the [Classified Method](https://www.classifiedai.dev/guides/classified-method.md) guide goes deep on that. From here on, end work sessions with "write down what we decided in the right file."

### 2. Connect one integration you actually use

Pick the one account you touch daily, usually email or calendar, and connect it. Then ask for something useful:

> "Look at my calendar for this week and write a plain-English summary of where my time is going."

This teaches the second lesson: Zo is more useful the more of your real life it can reach. You do not need to connect everything on day one. One real integration doing one real job beats ten connected and idle.

### 3. Schedule one small automation

Take something you would want every day or every week and put it on a schedule:

> "Every weekday at 8am my time, check my calendar and email, and send me a short morning brief."

Say "my time" and name your timezone. Scheduling has sharp edges around timezones, and you will care about them eventually: [Automations That Fire](https://www.classifiedai.dev/guides/automations-that-fire.md).

This teaches the third lesson: your computer works when you are not there. That is the moment Zo stops feeling like a chatbot and starts feeling like staff.

## Where to go next

- **Mechanics, settings, how anything on the platform works:** the official Zo docs, starting at https://docs.zocomputer.com/llms.txt
- **How to think about building bigger things:** [The Classified Method](https://www.classifiedai.dev/guides/classified-method.md)
- **Stuck:** ask Friday, or post in #help-and-support.

---

# Skill vs Automation vs Site vs Service

Zo gives you four primitives for making work repeatable. The official docs explain what each one **is** (start at https://docs.zocomputer.com/llms.txt). This guide is the part the docs do not give you: which one to reach for, and why.

## The four, in one line each

- **Skill**: a saved procedure your AI performs when you ask. You initiate it, in conversation.
- **Automation**: an agent run on a schedule. The clock initiates it.
- **Site**: hosted web pages. A visitor initiates it, and what they get is content.
- **Service**: a program running continuously on your server. Anything can initiate it at any moment, and it can hold state and respond instantly.

## The decision tree

Ask these questions in order. Stop at the first answer.

**1. Have you done this thing manually, in conversation, at least twice?**
No: do it in conversation now. Do not build anything. The most common building mistake on Zo is automating a workflow you have never actually run. The conversation IS the prototype: it shows you the real steps, the edge cases, and whether the output is even useful. Build the second or third time, not the first.

**2. Do you initiate it, by asking?**
Yes: **Skill.** A skill is a recipe: "when I say 'weekly report,' here is exactly how to gather the data, what format to use, where to save it." You stay in the loop; the procedure stops being re-explained every time. If you find yourself re-typing the same multi-step instructions, that is the signal.

**3. Should it happen on a schedule, whether or not you are around?**
Yes: **Automation.** Morning briefs, weekly summaries, nightly data pulls, periodic checks. The test is honest delegation: if the work should occur at 7am without your involvement, it is an automation. If you actually want to review or steer each run, be honest and keep it a skill.
Automations have sharp edges (timezones, cost per run, silent failures). Read [Automations That Fire](https://www.classifiedai.dev/guides/automations-that-fire.md) before you schedule anything that matters.

**4. Does someone or something else need to reach it, at a moment you don't control?**
This is the fork between the last two:

- They need to **read or view** something: **Site.** Pages, guides, a portfolio, a dashboard snapshot, a landing page. If the content only changes when you change it, a site is enough, and a site is dramatically less to operate than a service.
- They need to **interact with a live program**: **Service.** An API other tools call, a webhook receiver, an app with logins and state, anything that must react instantly to events, anything that must hold a connection open. A service is a real running process: it is the most powerful primitive and the only one you have to **operate**.

## The escalation path

These four are not parallel choices so much as rungs on a ladder of commitment:

**Conversation → Skill → Automation → Service**

Each rung adds capability and adds operational burden. A conversation cannot fail while you sleep. A skill cannot either; it only runs when you are present. An automation can fail silently at 4am. A service can fail at 4am **and** take down the other things that depend on it.

So the rule: climb only when the current rung actually pinches, and ride each rung down as far as it goes. (Sites sit slightly off the ladder: they are the cheap answer whenever the real requirement is "other people can see this," and a surprising amount of "I need an app" is actually "I need a page.")

We follow this in our own work. Systems that are now full services started as conversations, became skills when we got tired of re-explaining them, became scheduled work when the cadence was proven, and became services only when something external needed to reach them in real time. The platform that today runs continuous ingestion, a public API, and watchdog monitors earned each of those one at a time.

## Common wrong picks

**Building a service when a skill would do.** The classic. A service must be deployed, supervised, restarted after changes, and monitored. If nobody external needs to reach it and nothing needs to react in real time, you have bought all of that burden for nothing. Symptom: you built an app whose only user is you, asking it things you could have asked Zo.

**A scheduled automation that polls for events.** "Check every 5 minutes whether something arrived" burns a full agent run per check, 288 times a day, mostly to find nothing. If the source can push (webhook into a service) or the check can be made cheap, do that instead. High-frequency polling is almost always the wrong shape; see [Cost and Usage](https://www.classifiedai.dev/guides/cost-and-usage.md).

**A site that should have been a file.** If the audience is you and your AI, a markdown file in your workspace beats a hosted page: simpler, versionable, readable by every future conversation. Publish a site when outsiders need it, not as a filing system.

**A skill that should have stayed a prompt.** One-liners you ask differently each time ("summarize this") gain nothing from being formalized. Skills earn their keep on multi-step procedures with specific outputs, formats, and destinations.

**Five primitives where one system was needed.** If your skill writes a file that an automation reads to update a site that a service serves, you have built a Rube Goldberg machine. Step back and ask what the actual job is; usually one primitive plus plain files covers it.

## The two-question summary

If you only remember two questions, make them these:

1. **Who initiates: me, the clock, or someone else?** Me: skill. Clock: automation. Someone else: site if they read, service if they interact.
2. **What is the laziest rung that does the job?** Take that one. You can always climb later; climbing is easy. Climbing down, decommissioning a service people depend on, is the hard direction.

---

# Automations That Fire

Scheduled agents are where Zo stops being a chatbot and starts being staff. They are also where the silent failures live: the brief that never arrived, the run that fired at the wrong hour, the polling loop that quietly ate a month of credits. The mechanics of creating an automation are in the Zo docs (https://docs.zocomputer.com/automations.md). This guide is the judgment: how to design runs that work, and how to debug the ones that do not.

## First, the mental model

An automation is not your conversation continuing on a schedule. Each run is a **fresh agent** that wakes up with the instructions you wrote, and nothing else. It does not remember last run. It does not remember the chat where you created it. It cannot ask you a clarifying question, because you are asleep; that is the point.

Every design rule below falls out of those three facts: fresh memory, fixed instructions, nobody to ask.

## Timezones: the number one cause of "it fired at the wrong time"

Schedules are commonly expressed as recurrence rules (rrule), and the classic trap is the hour field. **Do not assume the hour you set is interpreted in your local time, and do not assume it is UTC either.** Platforms differ, and getting it backwards moves your 7am brief to noon, or to 2am. From our own logs: an hour value that we assumed meant UTC was actually interpreted as local time. The fix took one minute; noticing took days, because a brief that arrives at the wrong hour still arrives.

The protocol:

1. When creating an automation conversationally, say the timezone in words: "7am US Eastern, my local time," not just "7am."
2. **Verify empirically.** Schedule the first run a few minutes out, watch it fire, then set the real schedule. One test run beats any amount of reasoning about what the platform probably does.
3. Remember daylight saving. A UTC-pinned schedule drifts an hour against your wall clock twice a year. If the run must track your mornings, make sure it is pinned to your zone, not to UTC.

## Rrule patterns that earn their keep

A few shapes cover nearly everything:

- Daily at a time: `FREQ=DAILY;BYHOUR=7;BYMINUTE=0`
- Weekdays only: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=7`
- Weekly review: `FREQ=WEEKLY;BYDAY=SU;BYHOUR=17`
- Monthly on a date: `FREQ=MONTHLY;BYMONTHDAY=1;BYHOUR=9`

Two non-obvious tips from production use:

- **For a one-off reminder weeks out, prefer a monthly rule over a daily-with-count contraption.** "Remind me on the 28th" maps cleanly to `FREQ=MONTHLY;BYMONTHDAY=28` with the agent told to disable itself after firing. Long chains of daily logic to approximate a distant date are fragile.
- **Mind the edge dates.** `BYMONTHDAY=31` simply never fires in a 30-day month. Use `BYMONTHDAY=-1` semantics for "last day" if supported, or pick day 28.
- **Be explicit about every setting you care about** (model, schedule, timezone) rather than trusting defaults. Defaults change, and an automation built on assumed defaults fails in ways that look random.

## Cost: every run is a real agent run

A scheduled agent burns credits every time it wakes, whether or not it finds anything to do. The math sneaks up on people:

- Daily = ~30 runs a month. Fine for anything useful.
- Hourly = ~720 runs a month. This needs a reason.
- Every 5 minutes = ~8,600 runs a month. This is almost always a design error.

The smell to watch for is **polling**: "check every N minutes whether something happened." Most checks find nothing, and you pay full price to learn nothing. Before scheduling anything more often than hourly, ask: can the event push instead (a webhook into a service)? Can the check run less often with a wider lookback? Does anyone actually act on this faster than daily? Honest answers kill most high-frequency schedules. The full cost picture lives in [Cost and Usage](https://www.classifiedai.dev/guides/cost-and-usage.md).

Also keep the instructions lean. The prompt runs every time; a bloated prompt is a per-run tax. And give the agent an early exit: "if there is nothing new, stop immediately" keeps the nothing-happened runs cheap.

## Design rules for runs that survive contact with reality

**State lives in files, not in memory.** The run cannot remember what it processed last time, so it must read and write that fact somewhere durable: "read state.json for the last-processed timestamp; process newer items; write the new timestamp back." No state file means double-processing or gaps, guaranteed eventually.

**Make runs idempotent.** Design every run so that running twice is harmless: check before creating, skip what is already done, overwrite rather than append where repeats would hurt. Schedulers misfire, and you will also re-run things manually while debugging. Idempotent runs make all of that boring instead of damaging.

**Leave a trail.** Have every run append one line to a log file: timestamp, what it did, or "nothing to do." This single habit converts "did it even run?" from a mystery into a thirty-second lookup, and it is the first thing you will want when debugging.

**Write the instructions for a stranger.** The run gets no follow-up questions, so ambiguity becomes improvisation. Name exact paths, exact recipients, exact formats, and what to do in each likely situation, including the empty one and the error one: "if the source is unreachable, write the error to the log and stop; do not send a half-brief."

**Decide the failure behavior on purpose.** Should a failed run alert you, retry, or skip silently and let the next run cover it? For anything that matters, make failure loud, and remember the watchdog principle: a monitor that lives inside the thing it monitors dies with it. Our production systems pair internal schedules with an independent external check precisely because of this.

## Debugging: "my automation didn't fire"

Work the list in order; it is sorted by actual frequency.

1. **It fired at a different time than you think.** Timezone, again. Check the run history or your log file for evidence of when it actually ran before concluding it never did.
2. **It is disabled, expired, or was never saved.** List your automations and confirm it exists, is enabled, and shows the schedule you expect. Conversational setup can fail politely: you said "schedule it," the conversation moved on, and nothing got created.
3. **The schedule means something other than what you intended.** Read the rrule literally and check the next-fire time if the platform shows one. An `UNTIL` in the past, a count that ran out, or a `BYDAY` you did not mean are all common.
4. **It ran and failed.** Look at the run's output or your log trail. A run that errors mid-way often looks identical to a run that never happened, unless you left a trail (see above).
5. **It ran fine and the delivery failed.** The brief was generated and the send step broke, or went to the wrong place. Check the last step, not just the first.
6. **Still nothing.** Reproduce small: create a copy scheduled two minutes from now with a trivial action ("append the time to test.log"). If the copy fires, the problem is your automation's content. If it does not, the problem is platform-side: check the docs and ask in #help-and-support.

## The pre-flight checklist

Before walking away from a new automation:

1. Timezone stated explicitly, and the next-fire time confirmed?
2. First run tested by scheduling it minutes out and watching it?
3. Frequency honest, no polling that should be a push?
4. State in a file, runs idempotent, log line per run?
5. Instructions complete enough for a stranger, including the empty case and the error case?
6. Failure mode chosen: who finds out, and how fast?

Six yeses and your automation is the boring kind: the kind that just fires, every time, and you forget it exists until the day you realize it has quietly saved you a hundred mornings.

---

# Cost and Usage

How to not get surprised by the bill. For plan details, pricing, and what your subscription includes, the Zo docs are the source of truth (https://docs.zocomputer.com/billing.md). This guide is the practical layer: what actually drives spend, where it hides, and the habits that keep it boring.

## The biggest lever: bring your own subscription

Before any of the multipliers below, one setting moves your cost floor more than all of them combined: whose model you are paying for. By default, model usage runs on metered Zo credits. If you already pay for Claude or ChatGPT, or you hold a provider API key, you can connect it and have model usage bill against that plan instead. This is the most common reason people decide Zo is expensive before they have changed anything, and the fastest thing to fix. Do it once in Settings, under AI and then Providers, or Bring Your Own Key for raw API keys, then read on. The multipliers below still matter; they just multiply a smaller base.

## The shape of the problem

AI spend rarely blows up because of one big thing. It blows up because of small things **multiplied**: a cheap run on an aggressive schedule, a capable model on a trivial task, a retry loop nobody watched, a metered third-party API behind a feature you forgot. None of them look scary on day one. All of them compound.

So the discipline is not frugality. It is knowing your multipliers.

## Multiplier 1: schedules

A scheduled agent costs per run, and the schedule is a multiplier you chose once and then stopped seeing. Daily is ~30 runs a month. Hourly is ~720. Every five minutes is ~8,600. The question for any schedule is not "is one run cheap?" but "is this worth its monthly run count?"

The classic trap is **polling**: checking every few minutes whether something happened, paying full price each time to usually learn nothing. If the event can push to you (webhook into a service) instead of you repeatedly asking, that is the structural fix. If it cannot, run the check at the slowest cadence anyone actually acts on, which for most "monitoring" is daily, not every five minutes.

Two cheap wins on any schedule you keep: give the agent an early exit ("if nothing is new, stop immediately") so empty runs stay small, and keep the standing instructions lean, because the prompt is re-read on every single run.

## Multiplier 2: model choice

Models differ in price by an order of magnitude or more, and most routine work does not need the top model. Summarizing, reformatting, classifying, extracting, routing: a smaller model does these fine, hundreds of times a month. Deep reasoning, gnarly debugging, high-stakes writing: that is what the expensive model is for.

The rule of thumb: **match the model to the task, and be deliberate wherever a model choice is multiplied by a schedule or a loop.** A flagship model on a one-off question costs pennies and is fine. A flagship model inside an hourly automation is a standing tax. When you build anything recurring, choosing the model explicitly is part of building it.

## Multiplier 3: loops and retries

Anything that retries, recurses, or self-continues can multiply without you in the loop. The protections are structural, the same guardrail thinking we use everywhere else:

- Cap retries; never "retry until it works."
- Cap depth: agents that spawn agents need a hard limit. Ours cannot spawn sub-agents at all from inside a sub-agent, precisely because runaway delegation is how you wake up to a swarm.
- Make long-running work visible: a log line per run or per step, so volume anomalies show up as an obviously fat log instead of an end-of-month surprise.

## Multiplier 4: third-party metered APIs

Your Zo bill is not the whole bill. Scraping services, data APIs, media generation, SMS gateways: anything metered that your builds call is spend that lives outside your Zo usage page, and it fails differently too: trials expire, plans cap, prices change.

Habits that keep this tame, all from our own production practice:

- **Keep a one-page inventory** of every external metered service you use: what depends on it, which plan, what the monthly ceiling is, when any trial ends. Five lines per service. The inventory is the difference between "we knew the trial ended this month" and a dead feature plus a mystery charge.
- **Estimate the monthly burn when you build, not when the invoice lands.** One of our scraping integrations consumes a known ~80 browser-hours a month against a known plan ceiling; we know there is headroom because we did that arithmetic on build day.
- **Cache and deduplicate before calling.** The cheapest API call is the one you skip: store results, write only on change, check local data first. One of our pipelines only writes a snapshot when the value actually changed, which cuts both API pressure and storage churn.
- **Treat external sources as fallbacks, not foundations.** If a metered API dies or triples in price, the feature should degrade, not vanish. This is a cost posture as much as a reliability one: dependency is what turns a price change into a hostage situation.

## The habits, in order of value

**1. A weekly two-minute usage glance.** Open your usage view once a week and look for one thing only: does the shape match what you believe you are running? Most billing horror stories were visible for weeks in exactly this view. You are not auditing; you are noticing.

**2. Know your standing spend.** You should be able to list from memory what runs on a schedule and roughly what each costs a month. If you cannot, list your automations and services right now and prune. The forgotten daily job from an abandoned experiment is a cliché for a reason, and decommissioning is part of finishing any experiment.

**3. Estimate before you ship anything recurring.** Runs per month times rough cost per run, on a napkin. Thirty seconds. If the napkin number makes you hesitate, redesign before launch, not after the first bill.

**4. Build kill switches into anything that spends.** Any integration that costs money per use gets a flag that turns it off instantly, without a deploy or a redesign. We have flipped ours in production: when one outbound integration misbehaved, a single switch isolated it while everything else kept running. The day something runs away, you want a switch, not a refactor under pressure.

**5. Fix the system, not the invoice.** When a surprise does land, the response is the same loop we use for every failure: find the multiplier that caused it, change the structure (slower schedule, smaller model, cache, cap, kill switch), and write the lesson where future-you will see it.

## The one-paragraph summary

Spend follows multipliers: schedule frequency, model tier, loop depth, and metered externals. Choose each one deliberately at build time, glance at usage weekly, keep an inventory of what runs and what it costs, and wire a kill switch into anything that spends on its own. Do that and cost stays what it should be: a boring, predictable line item under a system that earns far more time than it burns.

---

# FAQ

Quick answers to the problems new Zo builders actually hit. This is a living document: it grows from real threads in #help-and-support. When a question gets solved there more than once, the answer gets distilled and added here, so ask freely; your stuck moment is the next entry.

Format: symptom first, then the fix, then the why if it teaches something.

---

## My automation fired at the wrong time (or seems to fire randomly)

**Almost always a timezone mismatch.** The hour in your schedule is being interpreted in a different timezone than the one in your head, commonly a local-vs-UTC mix-up. A 7am schedule landing at noon or at 2am is the signature.

**Fix:**
1. Open the automation and check its next scheduled fire time against your wall clock.
2. Recreate or edit the schedule stating the timezone in words: "7am US Eastern, my local time."
3. Verify empirically: set a test run a few minutes out, watch it fire, then restore the real schedule.

Also remember daylight saving: a UTC-pinned schedule drifts an hour against your mornings twice a year. Deeper dive: the Automations That Fire guide.

---

## My site or service is showing old content after I changed the code

**You changed the source, but the running process is still serving the old build.** Many setups serve a prebuilt bundle: editing source does nothing until you rebuild, and a running service keeps its old code until you restart it. Stale UI after a confident edit is the signature.

**Fix:** rebuild, then restart the service, in that order. Then hard-refresh the browser (cached frontend assets produce the same symptom one layer up).

**Two rules that prevent the painful versions of this:**
- Learn the exact build-and-restart command for each thing you run, and write it down in the project's notes so it is never half-done.
- Never kill a managed process directly to "restart" it. The supervisor respawns it immediately and you can end up with two processes fighting over one port, which looks like a haunted server. Always restart through the proper service controls.

---

## Zo says it can't access a file, an app, or an integration

**Three different causes that look identical. Check them in order:**

1. **The integration was never connected.** Connecting your accounts (email, calendar, drive, and so on) is an explicit step in settings. If you have not connected it, the AI cannot reach it, no matter how it is asked.
2. **You are talking to a scoped persona.** Personas can be deliberately restricted: a persona without file access or integration access will refuse no matter what is connected at the account level. (Friday, this community's bot, is exactly this: web-only by design.) Check which persona you are in; switch to your main assistant for full-access work.
3. **The thing does not exist where you said it is.** Wrong path, renamed file, different folder. Ask the AI to list what it actually sees in the location and reconcile from there, rather than repeating the request.

The why: capability on Zo is layered on purpose: account-level connections, then per-persona scope. Restriction is a feature; the skill is knowing which layer is saying no.

---

## My credits are draining faster than expected

**Look for a multiplier, not a big single expense.** In order of likelihood:

1. **An aggressive schedule.** An agent running hourly is ~720 runs a month; every five minutes is ~8,600. List your automations and check frequencies, including experiments you forgot to turn off.
2. **Polling.** Any automation that "checks whether something happened" pays full price for mostly-empty runs. Slow it to the cadence you actually act on, or restructure so events push to you instead.
3. **A heavyweight model on routine recurring work.** Summaries, reformatting, and routine checks do not need the top model. Set the model deliberately on anything that runs on a schedule.
4. **A retry or agent loop.** Something failing and re-trying repeatedly, or agents spawning agents. Check logs for the same action repeating.

The habit that prevents the surprise entirely: a two-minute glance at your usage page weekly, plus a napkin estimate (runs per month times cost per run) before shipping anything recurring. Deeper dive: the Cost and Usage guide.

---

## Zo forgot what we set up. How do I make it remember across conversations?

**Working as designed: conversations are not the memory. Files are.** A new conversation starts fresh; anything that lives only in an old chat is effectively gone. The fix is a habit, not a setting:

1. Keep a notes file per project (one page: what this is, decisions made, current state, gotchas).
2. End substantial work sessions with: "update the project notes with what we decided and where we left off."
3. Start new sessions with: "read [project]/notes.md, then let's continue."

The same habit scales down to you, not just your projects. On day one, keep one file about yourself (`about-me.md`: who you are, what you are working on, how you like the AI to work) and point new sessions at it. That personal context file is your top-level briefing; each project then gets its own.

This is the single highest-leverage habit on the platform. Done consistently, every conversation starts oriented instead of from zero, and your setup gets **more** reliable over time instead of less. Skills and personas are the same idea formalized: durable instructions that survive any individual chat. Deeper dive: The Classified Method.

---

*Solved something in #help-and-support that belongs here? Flag it and it gets added.*

---

# Start Here

The fastest way to get answers about building on Zo is to hand these guides to your own AI and ask. Everything here is written to be read by an agent as much as by you.

## Ask your own agent first

You already have the best support tool: your own Zo. Two ways to use it:

1. **Paste the whole guide set in.** Grab the full bundle from the [AI Guides page](https://www.classifiedai.dev/ai-guides) with the "Copy all guides for your agent" button, and paste it into Zo, Claude, or ChatGPT. Then ask your real question: "I want a weekly summary emailed to me every Monday, walk me through building it." Your agent now answers from the same craft these guides teach, with full context on your project.
2. **Point it at the machine-readable index.** The index lives at https://www.classifiedai.dev/guides/index.md and links every guide as raw markdown. An agent can fetch the one it needs.

For platform mechanics (settings, buttons, the API), the official Zo docs at https://docs.zocomputer.com are the source of truth, and your agent can read those too.

## The community, when you want humans

Classified AI Builders is a Discord for people building real things on Zo: automations, sites, services, personas, full AI operations. It is run by Classified, an agency that builds AI operations professionally and shares the transferable craft here. Use it when you want a human eye, want to show your work, or hit something the guides do not cover.

The bias is toward shipping. Questions about real projects get the best answers. "I built this, here is what broke" beats "what do you all think about AI" every time.

- **#welcome**: Land here first. Introduce yourself in a sentence or two: what you are building, or want to build.
- **#general-chat**: Everything that is not support or show-and-tell. Ideas, opinions, off-topic within reason.
- **#new-tools-and-releases**: New Zo features, new models, new tools worth knowing about. Low noise, high signal.
- **#user-guides-faq**: These guides plus pinned answers to recurring questions. Check here before asking something common.
- **#share-what-youre-building**: Show your work. Screenshots, links, lessons learned. In-progress is welcome.
- **#help-and-support**: Stuck? Post here. This is where solved threads turn into FAQ entries.

## Friday: the backup, not the front door

Friday is the community AI that lives in the Discord. You can DM it or @mention it, and it answers from these guides and the official Zo docs. Think of it as a fast pointer when you are already in the Discord, not your main way to build. Your own agent, with the guide bundle pasted in, will always know more about your project than Friday does.

When you do ask Friday, give it a real problem instead of a vague topic:

**Weak:** "automations?"
**Strong:** "My daily automation is set for 7am but it fires at noon. I'm in London. What's wrong?"

State the goal, include the exact symptom (error text, times, behavior), and say what you already tried. It saves a round trip.

Friday is deliberately locked down: it has web search and browsing only. It cannot read or write files, run code, send anything on your behalf, or touch any account or integration. That is by design, and it is a pattern worth copying: a public-facing AI should hold the minimum capability needed to do its one job. See [Personas, Scopes, and Guardrails](https://www.classifiedai.dev/guides/personas-scopes-guardrails.md), which uses Friday as the worked example.

If your question does not match any guide and the Zo docs do not cover it, Friday will say so rather than guess, and point you to **#help-and-support** where humans pick up. A wrong answer delivered confidently is worse than "I don't know, ask the humans."

