0:30 · Name yourself, not the tool. The tool comes much later. Ask for hands: who used more than one AI coding tool this year? Keep your hand up if it was in the same repo. Do not comment, move on.
1:00 · Ask the question to the room before showing the list. Take two or three answers. Then reveal: most of what they said is here. This is the frame for the whole talk. We care about outcomes. The files come second.
1:00 · Read the left column, then the right. Seven parts, and every AI coding tool has some version of each. Names differ, the jobs do not. Next three slides: what each part is good at, in one sentence.
1:00 · Instructions are the always-on context. Rules are the same idea, loaded only where they matter, so the payments rules stay out of the frontend work. The key word is hints. The model can ignore them, and on a long session it sometimes does.
1:00 · The most important slide of part 1. Hooks are commands the tool runs on events: before a tool call, after an edit, at the end of a session. Permissions decide what the agent may touch at all. Neither depends on the model paying attention. Remember this, it comes back when we talk about drift.
1:00 · Skills are how the team's way of working becomes repeatable. Agents keep a side task out of the main context. MCP gives both of them reach. This is where most of the real investment goes: weeks of skills tuned to your codebase.
0:40 · Last piece of the map. Two levels. A hook that lives only in your home folder protects only you. Now we have the words. Let's see what happens to all of this when you change tools.
0:50 · Everyone in the room has lived this. Part 1's seven parts, now in one tool's folder. The point to land: all that value lives in a folder only one tool reads.
0:30 · No numbers. Everyone has their own pricing story, let them fill it in. Land the loss: weeks of skills and hooks, and the new tool reads none of it.
1:00 · Walk two rows, not five. Point at the labels: these are the parts from part 1. Instructions and skills copy over. Agents and hooks need translating. An afternoon of careful work, correct on the day you finish it.
1:00 · Nobody wants to throw away the work, so both copies stay. Read the beats as a timeline. Pause on 04 and call back to the hooks slide: a hook was the thing that must happen. On half the team it silently stopped happening. That is what drift costs. Not files. Outcomes.
0:50 · Let them scan the tree. Everyone recognises their own repo. No tool made a bad choice. Each picked its own layout, and your repo collected all of them.
0:30 · The question part 3 answers. Say it slowly, then stop for two seconds. Someone in the room is already thinking: symlinks.
0:50 · Take the idea seriously, most teams try it first, and it is half right. Notice which half breaks: agents and hooks, the parts that do the work. A link cannot translate. Windows: git with core.symlinks=false checks a link out as a text file holding the path.
1:00 · Be fair. Symlinks win the last two rows. They lose the moment a second format shows up, and a broken link never tells you. sync.shared-skills links skill folders whose bytes match.
0:50 · One sentence per column. The left side is the map from part 1. The right side is every folder from part 2. You edit the left. Then: let me show you, two minutes.
2:30 · Terminal font 20pt or larger. Prepare the repo before the talk: git init, agnostic-ai init (claude, codex), one rule, one skill already written. Live:
agnostic-ai sync
tree -a -I .git (point at .claude/ and .agents/, same skill, both tools)
echo "hand edit" >> AGENTS.md
agnostic-ai sync --check (exit 1, drift)
agnostic-ai sync && agnostic-ai sync --check (green)
If anything hangs past ten seconds, skip to the backup recap slide. The check is the beat that matters.
1:10 · Lead with the disqualifier, loudly. That is what makes the rest credible. Write CLAUDE.md and go home. Then both columns, quickly. The last con matters most: sync spreads a bad rule as fast as a good one. The spec still needs review.
1:00 · Read them, do not answer them. These are the questions I want back from the room. Every answer tells me what the spec should cover next. Leave this up for a few seconds before the closing slide.
0:20 · Call back to the first question: what do you want from an agent? That does not change when the tool does. Say the playground is linked from the repo, no install needed. Then ask for questions and leave this slide up. Backup slides follow for CI, monorepos, imports and hooks.
Only shown when a question needs it. Jump straight to the matching slide.
Fallback if the demo failed. The shared .agents/skills/ tree is the one Codex reads. Same folder from the story, now generated.
The last one is a real choice: ignored outputs keep the repo clean, committed outputs work for people without the CLI. The CI setup depends on it.
That afternoon of translation is now one import. Say the review warning out loud, it is the one people skip.
One spec, four scoping mechanisms. Be honest about Codex: it walks from the repo root down to the directory you launched it in, once per run. Start it at the root and the payments AGENTS.md never loads. Copilot applies applyTo in VS Code, JetBrains, the cloud agent and Copilot CLI, not in github.com chat. Aider, Zed, Junie, Crush, Jules and Antigravity skip scoped rules; their root rules still work. Worth it in monorepos, skip it in small repos.
The "yours or the team's" slide, as a command.
Committed outputs: check, never sync right before it, that would erase the evidence. Ignored outputs: validate and generate. The action installs the binary for you. Add --format=github for inline annotations.
Two hooks, two jobs. pre-commit catches drift before CI does. post-checkout matters when outputs are ignored: switch branches and the files follow. It saves agents running in fresh worktrees.
why is the favourite: point at any generated file and get the spec that wrote it.