| name | create-fixture |
| description | Create a new eval fixture for whoami.wiki from the user's personal archive data |
| triggers | ["create-fixture","new fixture","add fixture"] |
| user_invocable | true |
Create Fixture
Interactively create a new eval fixture for the whoami.wiki evaluation suite.
Usage
/create-fixture [page-type]
Examples:
/create-fixture — start interactive fixture creation
/create-fixture person — create a person page fixture
/create-fixture episode — create an episode page fixture
/create-fixture project — create a project page fixture
Steps
1. Determine page type
If no page type was provided as an argument, ask the user:
What type of page is this fixture for?
- Person — a biography of someone in your archive (friend, family, colleague)
- Episode — a specific event, trip, or milestone
- Project — a software project, creative work, or collaborative effort
2. Gather basic information
Ask the user for:
- Subject name: The primary subject (e.g., "Sarah Kim", "Tokyo trip", "Raycast plugin")
- Description: One sentence describing the eval task
- Suite name: Which suite to place this in (default:
incremental)
3. Identify data sources
Ask the user what archive data they have available for this subject. For each source, collect:
- Path: Absolute path to the data on their machine
- Type: One of:
instagram, whatsapp, messages, photos, location, transactions, shazam, uber_trips, github, slack
Guide them based on page type:
- Person: Typically needs messaging sources (instagram, whatsapp, messages). Photos are a bonus.
- Episode: Typically needs photos, location history, and messages. Transactions and transport data add richness.
- Project: Typically needs a git repository and communication data (slack, messages).
4. Design the checkpoint sequence
Based on the page type and available sources, design the checkpoint sequence. Use the examples in evals/fixtures/examples/ as templates.
Standard checkpoint patterns by page type:
Person:
survey — Snapshot first source, create source page
draft — Write initial person page from first source (skipReference: true)
new-source — Add remaining sources, revise page
episodes — Create episode sub-pages for rich events
owner-input — Integrate owner testimony (if anecdotes provided)
verify — Final review + citation manifest
Episode:
survey — Snapshot photos/location, create source pages
draft — Write day-by-day itinerary from spatial data (skipReference: true)
new-source — Add messages/transactions, weave into narrative
persons — Create person stubs for trip participants
owner-input — Integrate owner memories (if anecdotes provided)
verify — Final review + citation manifest
Project:
survey — Snapshot git repo, create source page
draft — Write project page from code/commits (skipReference: true)
new-source — Add Slack/messages, integrate collaboration context
episodes — Create episode pages for key development moments
verify — Final review + citation manifest
For each checkpoint, set appropriate grade targets using the subject name and roles. Set threshold: 0.3 on the survey checkpoint.
5. Ask about owner anecdotes
Ask:
Do you have personal memories or corrections about this subject that you'd like the agent to incorporate? These are things the digital sources can't capture — personal stories, context, corrections to what the data shows.
If yes, collect entries interactively. For each entry ask:
- What's the memory or correction?
- What topic does it relate to?
- Does it contradict anything in the digital sources?
Write these to owner-anecdotes.json in the fixture directory.
6. Ask about reference pages
Ask:
Do you want to write gold-standard reference pages for grading? These are optional — they let the reference grader compare the agent's output against an ideal version.
You can:
- Skip for now — the other graders (completeness, citations, editorial) still work without references
- Write them later — run the eval once, review the agent's output, then refine it into a reference
- Write them now — I'll help you draft reference pages following the editorial guide
If they want to write references now, help them draft wikitext pages following the editorial guide conventions. Save to the references/ subdirectory and add entries to the references map in case.json.
7. Generate the fixture
Determine the next available case number by listing existing directories in evals/fixtures/<suite>/:
ls evals/fixtures/<suite>/
Use the next sequential number with zero-padding (e.g., 004-person, 005-trip).
Create the fixture directory and write all files:
evals/fixtures/<suite>/<NNN-type>/
├── case.json
├── owner-anecdotes.json (if anecdotes were provided)
└── references/
├── <subject>.wiki (if reference pages were written)
└── talk-<subject>.wiki (if talk reference was written)
8. Validate
After writing the files:
- Read back the
case.json and verify it parses correctly
- Check that all source paths referenced in
case.json exist on the user's machine
- Check that all files referenced in
references and ownerInput exist in the fixture directory
- Confirm the fixture follows the TypeScript types in
evals/src/types.ts
9. Summary
Print a summary:
Created fixture: evals/fixtures/<suite>/<case-id>/
Page type: Person
Subject: Sarah Kim
Sources: instagram, whatsapp
Checkpoints: survey → draft → new-source → episodes → owner-input → verify
References: yes/no
Owner anecdotes: 4 entries
Run it with:
cd evals && pnpm eval --suite <suite> --case <case-id> --harness claude-code
Important notes
- Source paths must be absolute paths on the user's machine
- Fixture directories under
fixtures/incremental/ are gitignored — personal data stays local
- The
snapshotId field in sources starts empty and is populated at runtime by wai snapshot
- Reference file paths in
case.json are relative to the fixture directory
- Use
slug-case for reference filenames (e.g., alex-chen.wiki, talk-alex-chen.wiki)