Your Coding Agents Are Arguing. Hand Them the Same Playbook – Crushing C.O.D.ESkip to content
Blog
Hardening Your AI Agent Before It Breaks Everything
Your Coding Agents Are Arguing. Hand Them the Same Playbook<br>The Problem: Skills Drift<br>The Solution: Centralize<br>How to Install Skills<br>The .gitignore Rule<br>Telemetry<br>How to Migrate<br>That’s It
I hate writing commit messages. So I built Commit Pilot.
Handling Privacy Sensitive content in Jetpack Compose
Blazing fast app uninstalls for lazy #AndroidDevs
Unlocking Local AI: Your Private On Device ChatGPT
How to create an Expandable Text compose component
Enum serialization with fallback using Moshi
Removing ripple effect from clickable components
How to setup Share/Follow on Bluesky badge
Unlocking Local AI: Your Private Code Copilot
Cross Compilation Adventures
Cross Compilation Adventures with Python
Cross Compilation Adventures with C lang
Cross Compilation Adventures with Rust lang
Cross Compilation Adventures with Go lang
Cross Compilation Adventures with Dart lang
Cross Compilation Adventures with Kotlin Native
Cross Compilation Adventures with Nim lang
Unlocking Local AI: Your Private ChatGPT
Upgrading Xiaomi Mi A1 to Lineage OS
Rainbow console logs in Groovy
Signing Android Apps
Hunting Kotlin Synthetics For Views
Reducing mammoth gradle caches
How to convert Markdown to PDF
App Privacy Policy Generator is moving to AGPLv3 license 🙇🏻♂️
Contribution to Kodeco.com (formerly known as Raywenderlich.com)
Terminal Foo: Triggering Notifications from CMDLine 📟
Building an automated Android Localization Tool today
How I reduced my Android build times by 89%
Is your Android Library, Lifecycle-Aware?
Want To Step Up Your Android Learning Game? You Need To Read This First
Things I wish I knew when I started building Android SDK/Libraries
I could not find a simple Gesture Detection android library, so I built one
Rewriting GIT History
Do you like to ADB?
Whats in the APK?
Update Dependencies-Code-Repeat
Guide to publishing your Android Library via JitPack
Guide to publishing your Android Library via MavenCentral
Guide to publishing your Android Library via Jcenter/Bintray
Javadoc-Themer: Give your boring javadocs a splash of colors!
The curious case of dependency conflicts
Own a maven repository, like a boss! – Part 2
Own a maven repository, like a boss! – Part 1
Meet JACK & JILL , Android’s experimental toolchain
Life without wires : ADB over WiFi
Showcase
More<br>About
Archives
Tags
Talks
More<br>🌏 nisrulz.com ↗
LightDark<br>System
Light
Dark
System
Blog posts<br>Your Coding Agents Are Arguing. Hand Them the Same Playbook
Your Coding Agents Are Arguing. Hand Them the Same Playbook
July 1, 2026·Nishant Srivastava
Your coding agents are not on the same page. Claude Code got one version of the rules. Codex got another. Someone dropped a copy into .opencode/ that is three months stale. Now one agent insists on the v2 API and another keeps generating v1 code. They are not arguing because they disagree. They are arguing because you handed them different playbooks.<br>The fix is one directory and one install command. Put everything under .agents/skills/ and every agent reads from the same sheet.<br>The Problem: Skills Drift
Every agent tool has its own skill directory. Claude Code uses .claude/. Codex uses .codex/. OpenCode uses .opencode/. Support more than one agent and you either duplicate skills across those directories or find a way to share them.<br>Duplication is the naive approach. Write the skill once for Claude, copy it into Codex, and soon the two diverge. One team updates .claude/ but forgets .codex/. Now Claude runs one version of the instructions and Codex runs another. Multiple copies, different behavior.<br>The Workaround: A Skill Bridge
Some teams try something smarter. Instead of copying, they create a symlink bridge. The real instructions live in one agent’s directory and the other agent’s skill points back to it through a symlink.<br>.claude/<br>skills/<br>add-compose-preview/<br>SKILL.md # real instructions live here
.codex/<br>skills/<br>add-compose-preview/<br>SKILL.md # thin wrapper: "read references/source.md"<br>references/<br>source.md -> ../../../../.claude/skills/add-compose-preview/SKILL.md # symlink
Here .claude/skills/add-compose-preview/SKILL.md holds the real content:<br># Add Compose Preview
Add Jetpack Compose `@Preview` functions and<br>`PreviewParameterProvider` classes. Use whenever the user<br>wants to add previews to a `@Composable`.
Create a `private` wrapper per variant that calls the target<br>composable with sample data. Annotate the wrapper, not the original:
- `@Preview(showBackground = true)` — baseline<br>- `@PreviewLightDark` — light + dark mode<br>- `@PreviewFontScale` — default + large font<br>- `@PreviewScreenSizes` — phone + foldable + tablet<br>- `@PreviewDynamicColors` — dynamic color on/off
For custom configs pass `uiMode`, `fontScale`, `locale`,<br>`device = Devices.*`, `showSystemUi`. Use...