Next level

Taking your AI workflow to the next level: how to go from sessions to systems, and how to keep the systems honest.

This is the strategy layer. For the mechanics — error logging, hooks, context hygiene, subagent control, executable skills — see code patterns.

Where this picks up

You have used a chat window. Maybe you have vibe-coded a small tool that works. The next question is not which model to use — it is what happens when you are not watching.

A session is something you sit through. A system is something that runs, produces work you can check, and tells you when it needs you. Moving from one to the other is less about better prompts than about deciding what you are willing to let run unattended, what evidence you will require before you believe it worked, and who reviews the result.

The AI handles the administrative noise so the human can focus on the work that requires a human. Joe Amditis

Everything below is drawn from published write-ups and official documentation, listed in the sources at the end. Where a claim comes from someone's own testing rather than a vendor's documentation, it says so.

01 / The autonomy spectrum

Autonomy is not a switch. It is a ladder, and most people are somewhere in the middle of it without having decided to be.

  1. Supervised chat

    You read every turn before anything happens. Nothing runs that you have not seen. This is the right setting for anything you do not yet know how to check.

  2. Plan-approved sessions, at the keyboard

    You are still present, but the agent proposes before it acts. Claude Code's plan mode makes the proposal explicit: it writes the plan, you approve it, then it works. For riskier changes, parallel subagents let one agent explore while another implements, so you get a second opinion before the edit lands.

  3. Scheduled and unattended

    The work starts without you: cron-triggered Claude Code sessions, Claude's Auto mode and Routines, Codex cloud tasks that run in their own containers. You find out what happened afterwards, from whatever the run left behind.

Amditis runs the top two rungs as named modes. In Hands-on mode he works at the keyboard on the same infrastructure. In Autopilot mode, a cron job wakes a Claude Code session on a schedule, the session pulls open GitHub issues and works each one in an isolated git worktree, and the result is a pull request that several independent models review before he approves the merge.

The infrastructure is identical. What changes is who is present, and therefore how much the task has to prove on its own.

The rule for the whole ladder: the further right you go, the more the task has to be verifiable without you. If you cannot state what "done" looks like in a form a machine can check, the job is not ready to run unattended. Prove "done," don't claim it.

02 / Memory discipline

The advice on project memory files has reversed. For a while, more context was better and CLAUDE.md files grew accordingly. Anthropic's current guidance is to keep the file under roughly 200 lines, for a blunt reason:

Bloated CLAUDE.md files cause Claude to ignore your actual instructions. Anthropic, Claude Code memory documentation

Boris Cherny, who created Claude Code, describes the habit that keeps the file useful: end every correction with "Update your CLAUDE.md so you don't make that mistake again." On his team the file gets updated multiple times a week. The file is not documentation you write once. It is the record of what the agent got wrong.

Keeping it short does not mean throwing guidance away. It means putting each kind of guidance where it belongs:

  • Procedures move to skills. A multi-step process the agent only sometimes needs should load on demand, not sit in context every session.
  • File-scoped rules move to .claude/rules/*.md. A rule that only applies to one part of the codebase should only appear when that part is in play.
  • Must-always-happen actions move to hooks. If something has to run every time, do not ask a model to remember it. Make the harness do it.
  • Let the tooling prune. Claude Code's /doctor command now proposes CLAUDE.md trims, and auto memory keeps the agent's own per-repo notes separate from the file you maintain.

Anthropic's Fable 5 guide goes further and officially recommends a lessons-file memory system: one lesson per file, and delete the notes that turn out to be wrong. That last instruction is the one people skip. A memory system that only ever grows is a memory system that will eventually mislead.

The through-line, in Amditis's phrase, is that a CLAUDE.md is "a changelog of failures, encoded as rules." His 400-plus-line file for an autonomous Raspberry Pi setup is long because each rule traces to a specific thing that went wrong once.

A more advanced version of the same idea runs in his Slack agent, Pattern. Corrections it observes in Slack become candidate rules, and a candidate is promoted to canon only after five or more independent sightings — so one offhand comment cannot become policy. The memory is a Markdown working copy backed by an append-only SQLite source of truth, and only Amditis's own messages can mint a global rule.

For the day-to-day tactics — what to keep in context, when to clear it, how to structure hooks — see context hygiene in code patterns.

03 / Working with Opus 5 and Fable 5

Prompting the current Claude models is largely a subtraction exercise. Habits that helped older models now cost you.

Delete "double-check your work." These models self-verify. The instruction buys you nothing and spends tokens on redundant re-verification. Replace it with something the model cannot infer: explicit scope constraints. Which files it may touch, what it must not change, where to stop.

Start Opus 5 at default effort. Anthropic's prompting guidance is to reach for maximum effort when the task earns it, not as an opening move.

For unattended runs, state the autonomy explicitly — how far the agent may go before checking in — and require that any claim of progress be audited against the actual tool results rather than taken at face value. A model reporting success is not evidence of success.

On economics, Amditis's own testing points to a split. Fable 5 is excellent as a multi-agent overseer: an overnight coordinating run cost him about 2% of his weekly quota. As a daily driver it is too expensive. His arrangement is Opus as the daily standard, with Fable reserved for directing other agents rather than doing the work itself.

04 / Parallel agents and the review stack

Many agents beat one when the work fans out — separate subagents on separate parts of a problem, an agent team with distinct roles, Codex cloud tasks running in parallel containers. It also beats one when you need disagreement, which is the more important case.

The core rule: no model ever reviews its own work. A model asked to grade its own output will find it good. That is not a bug you can prompt your way out of; it is a reason to hand the diff to something else.

Amditis's published stack has five layers, and the point of the design is that no two layers share an interest:

  1. A self quality pass by the agent that wrote the code.
  2. A Codex correctness review of the diff, before anything is committed.
  3. A "coach" quality assessment of the change as a whole.
  4. An independent Codex connector pass against the live repository on GitHub, with no memory of how the code came to be.
  5. A human merge gate. Nothing lands without a person approving it.
Quality comes from stacking independent checks. No single model has to be brilliant; enough of them have to disagree. Joe Amditis

Cost routing follows from the same setup. Heavy work goes to Codex on a flat plan rather than a metered one, which makes the price of a long job predictable instead of proportional to how long it thinks. In his words: "Keep Codex on the ChatGPT subscription, never a metered API key."

For the mechanics of running these — subagent control and the multi-agent quick reference — see code patterns.

05 / Failure stories

Every rule above exists because something went wrong first. These are documented failures, not hypotheticals.

The slop cannon

Amditis submitted several AI-assisted pull requests to a small project's repositories within an hour. The maintainer emailed to say they could not review back-to-back AI-authored PRs. The rules that came out of it: one issue at a time, test locally first, and ask maintainers about their AI-contribution norms before contributing.

The test email that reached a real person

A test run sent mail to a live address. Since then, all testing uses fake addresses only. Test data that can escape into the world is not test data.

The honeypot that blocked real users

A hidden anti-spam form field was given a common name, so password managers auto-filled it. Legitimate submissions were rejected as bot traffic. The defense worked exactly as designed, against the wrong people.

The self-review blind spot

Asking a model to review its own code is not review. It is insufficient on its own, and for anything that touches user data, human review is mandatory.

Over-permissioned agent frameworks

An LLM can be prompt-injected by a webpage it visits. It has no legal liability and no reputation to lose, so giving it maximum permissions puts all of the risk on you. Grant the narrowest access the job needs.

The bloated memory file

This one is an officially documented failure pattern: as a CLAUDE.md grows, the rules that matter get lost in the noise and the model starts ignoring instructions you care about. Prune it ruthlessly.

06 / Bringing your team along

A shared CLAUDE.md, committed to the repository, is the cheapest team knowledge you will ever build. Every correction anyone makes improves the file for everyone who works in that repository next. It is also the artifact that makes a newsroom's AI practice reviewable — you can read it, argue with it, and change it.

The human merge gate is the rule that should not be negotiable, and it is easier to hold as a team norm than as a personal habit. Simon Willison's version of the standard, which Amditis cites, is the one to put in front of colleagues:

Your job is to deliver code you have proven to work. Simon Willison

For colleagues who are starting from zero, point them at the vibe coding guide for the mindset, the LLM advisor for picking a tool for a specific task, and the open-access prompt-engineering MOOCs at mooc.amditis.tech for the fundamentals.

07 / Packaging what you build

The second-order value of this work is not the tool. It is the thing you learned building it, in a form someone else can pick up.

Bay City News made the move deliberately. A one-off election-night dashboard, built by two people without formal computer science backgrounds, became "Bay City Labs" — an effort to make the approach replicable for other newsrooms. The dashboard was the prototype; the product was the method.

The same logic applies at a smaller scale. A prompt you keep retyping is a skill. A checklist you keep repeating in Slack is a template. Amditis's catalog at skills.amditis.tech holds 62 skills and 12 plugins for journalists — FOIA requests, source verification, web archiving, vibe coding, multi-agent workflows — installable three ways.

This kit ships its own set of starting points: the project rules template, the lessons template for recording what went wrong, and the Claude Code quick reference. The full list, with previews, is on the main hub.

08 / Verification standards

Everything on this page reduces to one standard: prove "done," don't claim it. A run that reports success has not demonstrated anything. A run that pastes the passing test output, the row counts, or the actual file it produced has.

For document work, Nick Hagar's replication of a police-decertification investigation is the useful benchmark. With data-handling rules encoded as skills, the run matched the original findings in under an hour and needed about 20 minutes of human spot-checking. Without those skills, the same work made silent errors — bad date parsing, finalized and pending cases mixed together — that would have survived a normal review. Budget the spot-check either way; the failure mode is a plausible wrong number, not an obvious one.

ProPublica's guardrail is worth copying wholesale: when the model is not sure, it leaves the field blank rather than guessing. A gap you can see is a fixable problem. A confident invention is not.

Nothing publishes without human review. That is the floor, not the ceiling.

On disclosure, Amditis's materiality principle scales the prominence of the disclosure to how much the AI shaped the audience's understanding of the story. A model that helped reformat a spreadsheet does not need the same treatment as a model that summarized the documents an investigation rests on. The Center for Cooperative Media's AI disclosure tool walks through the judgment.

Further reading and sources