AI is now part of how I write code every day, and the workflow I run has evolved into something specific enough to be worth describing. This post is the snapshot: how I work, what I've learned along the way, and the reasoning behind building my own coding agent.
I run Claude Code in the terminal almost every day at work — and Codex too, though less often. AI does the implementation, I direct and verify. The goal is to automate as much of my workflow as possible and partner with AI on the rest, so I can focus on building things instead of repeating the routine parts of the job.
My workflow is built around skills I've codified into a phase structure: plan → build → review. They're public at https://github.com/cniska/skills, and bundled into Acolyte (the coding agent I'm building on the side) so they're available in every workspace by default. A typical chain looks like /plan → /build → /review → /pr for a feature, /debug → /review → /pr for a bug. The flow is the same every time, the work changes.
I use MCPs instead of copy/paste — connecting AI directly to Jira, Figma, the browser, etc. removes the tab-switching and keeps everything in one loop. AI develops everything, but I always read the draft PR diff myself before marking it ready and requesting reviews from other devs. That step is non-negotiable.
When I notice I'm repeating myself or fighting the same friction twice, I close the gap — new skill, updated CLAUDE.md, sharper prompt template. The workflow gets tighter over time instead of staying static.
Prompt less than you think you need to. Each turn re-sends every previous message in the session, so long conversations balloon. One carefully written prompt beats five hasty ones, not just because the result is sharper but because the token cost compounds. Bigger models and higher reasoning effort multiply the per-token cost — a snowballing conversation on Claude Opus with extended thinking is wildly more expensive than the same conversation on Haiku. Prompt caching softens it where supported, but the cache invalidates fast and not all providers offer it.
The conversation is disposable; the durable knowledge it produces is what matters. Decisions, conventions, things worth remembering — those need to outlive the session. My /handoff skill distills the session into something portable and resets the context cleanly, so I'm not paying for stale chat across task boundaries. In Acolyte I'm building it as a native command instead of a markdown skill (acolyte#242) — same outcome, zero prompt overhead.
A coding agent is two parts: the harness and the model. The harness provides structure (skills, MCPs, repo conventions); the model provides judgment. Don't try to constrain the model with walls of behavioral rules — it usually knows what it needs better than the harness can predict.
Don't outsource judgment. AI removes execution overhead, but architectural decisions, code review, and product calls stay with you.
Starting blank every session is a structural failure, not a minor annoyance. Persistent context — per-repo instructions, skills, distilled session notes — is non-negotiable for real work.
The bigger the project, the more pure vibecoding bites you. AI tends to overengineer: extra abstractions, defensive layers, premature flexibility. Complex systems are where that compounds into things falling apart later. Discipline matters more, not less, as the codebase grows.
Changing how people work with coding agents means owning the stack end-to-end, from the user interface down to the model. Repos that try to reshape an existing agent's core behavior through heavy prompt overlays — Superpowers, GSD, and similar — are workarounds. They patch the surface, but the underlying constraints don't move. Real change comes from owning the agent itself.
Skills are different. They're structured prompts for specific tasks, not attempts to reshape the agent. Mine sit at the workflow layer, not the foundation — which is why they help even outside Acolyte.
The economics push in the same direction. Model vendors make money from token usage; they have no incentive to minimize it. I do. Owning the agent lets me optimize for cost on my side and avoid vendor lock-in. The overlay repos make this worse: they burn through coding agent quotas (Claude Pro/Max, ChatGPT Pro, etc.) fast, and reports of people on higher-tier plans hitting their weekly cap in the first few days of a billing cycle aren't unusual.
- crisu.me/blog — blog posts on working with AI and building Acolyte
- Why Acolyte — longer-form rationale
- cniska/skills — the skills repo