Project Turquoise Instructions

Project Turquoise

Welcome to Project Turquoise

In this project we compare how two coding agents — Codex CLI and Claude Code — handle the same real task, side by side.

Creating & rating Take a real coding (or coding-adjacent) task from your own work, run it in both agents on your machine, upload both conversation logs, and rate each one.
Vetting Check the task is realistic usage and the submission is complete and consistent.
Blind rating Read both transcripts and rate them independently — the first rater’s scores are never shown to you.
What counts as a task: a real coding task from your own work. Some tasks can be coding-adjacent (data, scripts, infrastructure) rather than pure software engineering — but don’t stretch the definition. Across the project we’re aiming for roughly three-quarters core software-engineering tasks.

Work through the blocks in order — each one tells you what to do.

Turquoise Guardian

Official Handshake learn hub for this project

Turquoise Guardian is the Handshake AI learning portal for Project Turquoise. Use it for project training, tasking guidance, and anything the program publishes there. You may need to sign in with your Handshake AI account.

How the pieces fit: Guardian = project hub on Handshake · these instructions = blank-slate dual-agent protocol on your Mac · tourqmd = convert session logs and submit to Drive.
URL · Turquoise Guardian
https://turquoise-guardian.learn.joinhandshake.com

End-to-end flow

From Guardian + blank agents to a Drive submission

0Guardian training / task
1Blank Codex + Claude
2Same prompt · both agents
3Path B · .jsonl → Desktop
4Convert in tourqmd
5Compare A vs B
6Submit alias → Drive
tourqmd is the converter on this site: drop Claude/Codex .jsonl from Path B (recommended — no extra model tokens), clean it to the Project Turquoise format, then upload to the team Drive folder with your alias. Agent-written .md (Path A) works too but costs another premium turn.

Step 1 — Set up two blank-slate agents

Each session runs the agent with a throwaway config home — your own setup is untouched, and the agent starts with no MCP servers, no memory, no custom instructions, and a fresh working directory.

Option A Codex

Paste this whole block into your terminal (it launches at the end):

Terminal · blank Codex
blank_codex() {
  local root codex_bin

  codex_bin="$(command -v codex 2>/dev/null)"
  if [ -z "$codex_bin" ] && [ -x "/Applications/ChatGPT.app/Contents/Resources/codex" ]; then
    codex_bin="/Applications/ChatGPT.app/Contents/Resources/codex"
  fi

  if [ -z "$codex_bin" ]; then
    echo "Codex CLI was not found. Install it or add it to PATH."
    return 1
  fi

  root="$(mktemp -d "${TMPDIR:-/tmp}/codex-blank.XXXXXX")" || return 1
  mkdir -p "$root/home" "$root/work"
  git -C "$root/work" init -q

  echo "Blank Codex root: $root"
  echo "Session logs will be under: $root/home/sessions/"
  echo "Work dir: $root/work"

  CODEX_HOME="$root/home" "$codex_bin" \
    -C "$root/work" \
    -m gpt-5.6-sol \
    -c 'model_reasoning_effort="high"'
}

blank_codex

Option B Claude Code

Recommended: paste this into any coding agent (Claude Code, Codex, Cursor, etc.) and let it launch a blank-slate Claude session for you.

Coding agent prompt · blank Claude Code
Set up a Project Turquoise blank-slate Claude Code session on this Mac.

Requirements:
1. Create two temp directories with predictable names under $TMPDIR (or /tmp):
   - config: mktemp -d "${TMPDIR:-/tmp}/claude-blank.XXXXXX"
   - work:   mktemp -d "${TMPDIR:-/tmp}/claude-blank-work.XXXXXX"
   (These prefixes matter — later we recover session .jsonl from claude-blank.*/projects.)
2. Write settings.json into the config dir with exactly:
   {"model": "claude-fable-5", "effort": "high"}
3. Launch Claude Code from the empty work dir using:
   CLAUDE_CONFIG_DIR="" claude --strict-mcp-config --mcp-config '{"mcpServers":{}}'
4. Do not add MCP servers, plugins, memory, or custom instructions.
5. Print the config dir, work dir, and the exact launch command used. Remind me that session logs live under: <config-dir>/projects/
6. If `claude` is not on PATH, locate it or tell me how to install Claude Code.
7. Remind me to sign in with Claude Max if prompted, and to confirm the UI shows Fable 5 at high effort before I send my first task prompt.

Run the commands for me (or print them clearly if you cannot launch interactively).
Manual setup (terminal commands & notes)

Paste this into your terminal yourself:

Terminal · blank Claude Code
cfg="$(mktemp -d "${TMPDIR:-/tmp}/claude-blank.XXXXXX")"
work="$(mktemp -d "${TMPDIR:-/tmp}/claude-blank-work.XXXXXX")"
echo '{"model": "claude-fable-5", "effort": "high"}' > "$cfg/settings.json"
echo "CLAUDE_CONFIG_DIR=$cfg"
echo "Session logs will be under: $cfg/projects/"
echo "Work dir: $work"
cd "$work" && CLAUDE_CONFIG_DIR="$cfg" claude --strict-mcp-config --mcp-config '{"mcpServers":{}}'

Notes (both agents)

  • Each session starts clean, so the agent will ask you to sign in: Codex with your ChatGPT Pro account, Claude Code with your Claude Max account. That’s expected.
  • Before your first prompt, check the session shows the right model: GPT-5.6-Sol in Codex, Fable 5 in Claude Code, both at high reasoning.
  • If anything about setup fails, you can ask the agent itself to fix it.
  • Don’t add tools, MCP servers, or settings beyond these commands.
  • You’ll confirm this setup in the checklist below, and report the settings again after your sessions.

Before you begin — confirm setup

Check every box. If any of them doesn’t hold yet, fix your setup first.

These checkboxes are only for you on this page (they stay in this browser until you clear site data). Use them as a personal pre-flight list.

Step 2 — Run the same task in both agents

The exchange protocol

  1. Give the exact same initial prompt to both agents, word for word.
  2. Work the problem back and forth with each agent as you naturally would.
  3. Stop when solved, or after 15 back-and-forth exchanges — whichever comes first.

When you finish each session

Recommended (saves tokens): skip the “save a faithful transcript” agent prompt. Close or leave the session, then use Path B — the Terminal one-liners that copy the raw .jsonl to Desktop and convert in tourqmd. Asking a premium high-effort model to rewrite the whole chat can take a long time and burn a large extra turn of tokens for no research benefit.

If you still want the agent to write the .md itself, that is Path A (optional). Prefer Path B for normal token usage.

What to write up for the submission form

Block 1 — Task description

Describe what you set out to do and why, what area of coding the task sits in, the required expertise, and how long the task would take an expert to do themselves.

Block 2 — Initial prompt

Copy and paste the initial prompt you gave to both Codex and Claude Code (must be identical).

Save transcripts (two useful paths)

Project Turquoise wants a faithful Markdown transcript. Prefer recovering the raw session log and converting in tourqmd — it’s free of extra model tokens.

Option / Path B · recommended Raw session logs → tourqmd

Best for token usage. Path B uses a few Terminal commands and the browser converter only. You do not spend another premium high-effort turn asking the agent to re-narrate the whole conversation. That extra prompt can run a very long time and burn through tokens with little benefit over a mechanical .jsonl export.

After you finish each agent, recover the raw .jsonl, drop it into tourqmd, review Reader mode, then download or Submit.

Easiest — Terminal one-liner (after you finish each agent)

Project Turquoise blank-slate sessions do not write under ~/.claude or ~/.codex. They use the temp dirs from Step 1:

  • Codex (blank_codex): ${TMPDIR:-/tmp}/codex-blank.*/home/sessions/**/rollout-*.jsonl
  • Claude Code (blank setup): ${TMPDIR:-/tmp}/claude-blank.*/projects/**/*.jsonl

After you finish each agent, run the matching command in Terminal. It moves the newest session .jsonl onto your Desktop for tourqmd.

Claude Code — newest blank-slate session → Desktop:

Terminal · newest blank Claude session → Desktop
mv "$(find "${TMPDIR:-/tmp}"/claude-blank.*/projects -name '*.jsonl' -type f -print0 2>/dev/null | xargs -0 ls -t 2>/dev/null | head -1)" ~/Desktop/

Codex — newest blank-slate session → Desktop:

Terminal · newest blank Codex session → Desktop
mv "$(find "${TMPDIR:-/tmp}"/codex-blank.*/home/sessions -name 'rollout-*.jsonl' -type f -print0 2>/dev/null | xargs -0 ls -t 2>/dev/null | head -1)" ~/Desktop/
Tip: Prefer cp instead of mv if you want to keep a copy in the blank-slate sessions folder too:
Terminal · copy (keep original) · Claude
cp "$(find "${TMPDIR:-/tmp}"/claude-blank.*/projects -name '*.jsonl' -type f -print0 2>/dev/null | xargs -0 ls -t 2>/dev/null | head -1)" ~/Desktop/
Terminal · copy (keep original) · Codex
cp "$(find "${TMPDIR:-/tmp}"/codex-blank.*/home/sessions -name 'rollout-*.jsonl' -type f -print0 2>/dev/null | xargs -0 ls -t 2>/dev/null | head -1)" ~/Desktop/
Do this before the temp dirs are cleaned up. Blank-slate homes live under $TMPDIR / /tmp and can disappear after reboot or OS cleanup. If find returns nothing, re-check that you launched with the Step 1 blocks (so dirs are named codex-blank.* / claude-blank.*), or use the coding-agent staging prompt below.

Or: paste this into a coding agent and let it locate and stage the files (still cheaper than asking the research agent to rewrite the full transcript).

Coding agent prompt · find & stage session logs
Help me recover Project Turquoise blank-slate session logs for Codex and/or Claude Code on this Mac and stage them for tourqmd.

Do the following:
1. Find the newest relevant session files from the Step 1 blank-slate temp dirs (default for this project):
   - Codex:  ${TMPDIR:-/tmp}/codex-blank.*/home/sessions/**/rollout-*.jsonl
   - Claude: ${TMPDIR:-/tmp}/claude-blank.*/projects/**/*.jsonl
   Also check any printed CODEX_HOME / CLAUDE_CONFIG_DIR paths I still have open in a terminal.
2. List the newest few with full paths, sizes, and modified times.
3. Copy the ones I choose (or the newest for each tool) to a permanent folder on my Desktop, e.g.:
   ~/Desktop/turquoise-sessions/
   Name them clearly, e.g. codex-<taskid>.jsonl and claude-<taskid>.jsonl
4. Remind me to open https://tourqmd.traphic.dev/ , drop each .jsonl, review Reader mode, then Submit with my alias.
5. Do not use ~/.codex or ~/.claude unless the blank-slate temp dirs are empty — those are normal installs, not Project Turquoise blank sessions.
6. Do not upload anywhere yourself — only copy files locally and print the final paths.

If a path is missing or empty, explain what to re-run and how to save a transcript before closing the agent next time.

Option / Path A · optional Agent-written transcript

Token cost: on premium high-effort models, this extra prompt can take a long time and burn a large amount of tokens while the agent rewrites the whole chat. Use only if Path B is unavailable or you specifically want the agent’s own export. Path B is recommended for normal runs.

If you still choose Path A, send this at the end of the session:

Prompt · save faithful transcript (optional · costly)
Please save a faithful transcript of this conversation as a .md file titled "claude/codex-transcript-'first four characters of task id'.md". Do not include any reference to the model or harness used.
Note: Claude Code will most likely switch to Opus 4.8 for this part of the task. That is fine because it does not affect any of the prior work done — but it is another reason Path B is cheaper for routine exports.
  1. Use the “save a faithful transcript…” prompt only if you need it.
  2. Ask the agent to move the .md to a permanent folder (Desktop / Documents).
  3. Keep both files clearly named, e.g. codex-transcript-ab12.md and claude-transcript-ab12.md.
Manual — paths, Terminal, and Finder

For Project Turquoise, always start from the blank-slate temp dirs printed by Step 1 (not your normal home installs).

Codex log location (blank-slate)

Path · blank Codex sessions
${TMPDIR:-/tmp}/codex-blank.*/home/sessions
Shell · newest blank Codex sessions
find "${TMPDIR:-/tmp}"/codex-blank.*/home/sessions -name 'rollout-*.jsonl' -type f -print0 2>/dev/null | xargs -0 ls -lt 2>/dev/null | head
open "${TMPDIR:-/tmp}"

Files look like …/codex-blank.XXXXXX/home/sessions/YYYY/MM/DD/rollout-….jsonl (CODEX_HOME is $root/home from blank_codex).

Claude Code log location (blank-slate)

Path · blank Claude projects
${TMPDIR:-/tmp}/claude-blank.*/projects
Shell · find blank Claude jsonl
find "${TMPDIR:-/tmp}"/claude-blank.*/projects -name '*.jsonl' -type f 2>/dev/null | head
open "${TMPDIR:-/tmp}"

With CLAUDE_CONFIG_DIR="$cfg", sessions live under $cfg/projects/ (named claude-blank.* by the Step 1 commands).

Finder (Mac)

  1. Press + Shift + G
  2. Paste /tmp or your $TMPDIR path, then open the newest codex-blank.* or claude-blank.* folder
  3. Codex: go to home/sessions · Claude: go to projects
  4. Locate the newest session .jsonl

Then convert

  1. Open tourqmd.traphic.dev
  2. Drop each .jsonl
  3. Review in Reader mode → Download or Submit with your alias

Convert with tourqmd

Clean back-and-forth transcripts for upload and rating

  1. Open the converter.
  2. Drop a Claude or Codex .jsonl (or use a sample to learn the UI).
  3. Review in Reader mode (formatted). Switch to Source for raw Markdown.
  4. Copy or Download .md for your records.

Output shape

Markdown · transcript format
# Transcript

**User:**
your message

**Assistant:**
agent reply and readable actions

**User:**
…

**Assistant:**
…
Labels are only User and Assistant — no model or harness names in the export. That matches the Project Turquoise transcript rules.

Submit to Google Drive

After both transcripts look good

  1. Convert each session (Codex + Claude) in tourqmd.
  2. Click Submit.
  3. Enter your alias only (no email).
  4. The file uploads as alias-1__….md, then alias-2__….md, and so on.
Alias ID Drive file
jane jane:1 jane-1__….md
jane again jane:2 jane-2__….md

Prefer clear names before upload when possible (e.g. include codex / claude in the source filename). Your alias still drives the unique ID.

Task write-up (for the submission form)

Fill these two blocks carefully — raters rely on them

Block 1 — What you set out to do

Include:

  • What you set out to do and why
  • What area of coding the task sits in
  • Required expertise to perform the task
  • How long an expert would take to do it themselves

Block 2 — Initial prompt (identical for both agents)

Copy and paste the exact initial prompt you gave to both Codex and Claude Code.

These text areas stay in this browser only (local draft). They are not submitted by this page — use them to compose, then paste into the real project form.

Creating · Vetting · Blind rating

How your work is used in the project

Creating & rating

You run the dual-agent protocol on a real task, upload both logs (via tourqmd when needed), and rate each agent’s run.

Vetting

Another person checks that the task is realistic usage and that the package is complete and consistent (same prompt, both agents, transcripts present).

Blind rating

Raters read both transcripts independently. The first rater’s scores are never shown to the second. Keep transcripts free of model/harness names so rating stays fair.

Troubleshooting

Problem What to do
Codex / Claude not found Install the CLI and ensure it is on PATH. For Codex Desktop, the blank_codex helper also checks /Applications/ChatGPT.app/Contents/Resources/codex.
Wrong model shown Exit and re-run the blank-slate commands. Confirm GPT-5.6-Sol (Codex) and Fable 5 (Claude) at high effort before the first prompt.
Can’t find session files Blank-slate logs live under ${TMPDIR:-/tmp}/codex-blank.*/home/sessions and ${TMPDIR:-/tmp}/claude-blank.*/projects — not ~/.codex / ~/.claude. Prefer the Path B one-liners (recommended for tokens) before temp dirs are cleaned up / reboot.
tourqmd Submit greyed out Convert a file first (preview must appear in Reader mode).
Drive upload fails Admin must finish admin Drive setup (Google connected + folder saved).
redirect_uri_mismatch Google OAuth Web client must include exactly https://tourqmd.vercel.app/api/google-callback

Useful links

URL · Turquoise Guardian (Handshake)
https://turquoise-guardian.learn.joinhandshake.com
URL · converter
https://tourqmd.vercel.app/
URL · compare (side-by-side transcripts)
https://tourqmd.vercel.app/compare.html
URL · instructions (this page)
https://tourqmd.vercel.app/instructions.html
URL · Drive setup (admin)
https://tourqmd.traphic.dev/admin.html

You’re ready

Check Turquoise Guardian for project guidance → set up blank agents → run the same task twice → save both transcripts → convert in tourqmd if needed → submit with your alias.