Plan it, Work it, Review it, Reflect it
Everyone is talking about AI. In public forums, in private groups... everyone. Especially since Christmas, one of the hottest topics has been how it's changing the development workflow.
While some are building entire agent cities with mayors, dogs and digital ferrets1, and others throw Claude into a bash loop2 and go to sleep hoping everything will work when they wake up... we decided to look for something we could actually use in production. No circus, no blind faith.
And that's what this series of posts is about: sharing our workflow and what we're learning along the way.
We've always been very interested in Developer Experience, and we couldn't quite get on board with the vibe coding wave. We were missing something for it to be more than a toy: some guardrails, a way of working with agents that would ensure our projects would work the way we like, that agents would work the way we work (but faster 😅 or at least, autonomously).
Then we heard the term vibe engineering and we knew that was the right direction. Now we just needed to define what our workflow would be.
Over Christmas, like many others, we spent every spare moment glued to Claude and friends. As Steve Yegge says, AI is an energy vampire: it hooks you, it drains you, and you can't stop. It has bitten us all. At that point we were already clear on the importance of planning before executing and the need to properly manage the context window, but we were missing what would, for now, be the last piece of our workflow: the reflect.
Our Workflow
The reflect emerged as another piece to automate when we realized the importance of keeping both the documentation and the AGENTS.md and SKILLs of our projects up to date.
At first it was a semi-manual process, asking the agent to "review the conversation to decide if there was any pattern or decision that should be included as project documentation, a rule for AGENTS.md, or as a SKILL". After seeing that it worked, it ended up becoming a SKILL that we launched directly.
The initial version of our workflow can be summarized as follows:
/workflow:create-story:
- Creates a well-structured GitHub issue/story from an idea (free text, images, files, or links).
- Use when asked to "create issue", "new task", or "add story".
/workflow:plan:
- Plans the implementation using Claude Code's plan mode. Gathers requirements, validates resources, and creates an actionable task breakdown.
- Use when starting work on a GitHub issue or a new feature.
/workflow:implement:
- Implements the plan as part of the workflow. Executes implementation tasks in order, running tests after each change.
- Use after completing the planning phase.
/workflow:review:
- Orchestrates multiple review agents to validate the implementation. Launches UI, architecture, manual QA, and security reviewers.
- Use after completing the implementation.
/workflow:reflect:
- Reviews the conversation and extracts learnings for future reference. Updates
SKILL.md,CLAUDE.md, ordocs/based on what was learned. Also reviewsCLAUDE.mdto identify sections ready to be promoted to skills. - Use after completing a task.
We're not the only ones who've reached this conclusion. Will Larson (lethain.com)3 and Every call it "Compound Engineering"4:
In traditional engineering, you expect each feature to make the next feature harder to build—more code means more edge cases, more interdependencies, and more issues that are hard to anticipate. By contrast, in compound engineering, you expect each feature to make the next feature easier to build.
Our Setup
We realized that to start using this workflow effectively, we needed to define good guardrails, and we're not just talking about creating an AGENTS.md with instructions telling the agent which language and libraries to use, but also defining the tools to set up local environments, debug problems, or run linters.
What started as bash aliases and instructions in the AGENTS.md quickly evolved into an internal CLI to map common operations and give the agent a simple interface to operate the project.
-
GitHub Projects: Task management, plan history.
-
worktrunk (
wt): Git worktree management, environment setup. -
Internal CLI (
rum): Shortcuts for common operations: syncing worktrees, spinning up the dev environment, database operations...
worktrunk has been one of the discoveries of the year (and we're barely into it). Since agents started becoming popular, it's become more common to hear about git worktrees, but the UX wasn't great... With worktrunk it becomes much simpler, plus it provides some extras thanks to its hooks system.
# Worktrunk configuration for CarboCalc (Next.js + Supabase)
[post-create]
install = "direnv allow . && pnpm install --frozen-lockfile"
[post-start]
# Copy ignored files (like .env.local) from main worktree first
copy = "wt step copy-ignored"
# Start Next.js dev server on unique port per branch
server = "pnpm dev -- --port {{ branch | hash_port }}"
[list]
# Show URL for each branch's dev server
url = "http://localhost:{{ branch | hash_port }}"
[pre-remove]
# Kill the dev server process
server = "lsof -ti :{{ branch | hash_port }} -sTCP:LISTEN | xargs kill 2>/dev/null || true"
We'll talk in more detail about how we use worktrunk and our CLI in future posts.
Wrapping Up
In the coming weeks we'll go into more detail about each step, and surely about how it evolves, because if there's one thing we can all agree on at this point, it's that the ecosystem changes very fast.
But we can say that we believe the role of the software engineer has changed, and their main function is no longer so much about writing code, but about defining the environment, refining tasks, and managing the feedback loop that allows agents to do the work as expected5.
If you'd like to give us feedback or just chat about the topic, feel free to comment on this LinkedIn post .
Saludos, and may the force be with you.
-
Welcome to Gas Town by Steve Yegge ↩
-
Ralph Wiggum as a "software engineer" by Geoffrey Huntley ↩
-
Will Larson — Compound Engineering ↩
-
The OpenAI team recently published a blog about what they've called "Harness Engineering", we recommend giving it a read: Harness Engineering ↩