Date: Dec 29, 2025
Over the last few months, I've quietly but completely changed how I build software.
This wasn't a single "aha" moment. It was more like a slow realization that a lot of the friction I'd accepted as normal—planning overhead, missing context, endless clicking, poorly scoped tasks—wasn't actually required anymore.
The biggest shift? I now treat GitHub Issues as both my project management system and my planning document, and I use Claude at the command line as my primary collaborator to get work scoped, built, reviewed, and shipped.
This post walks through that workflow end-to-end, why it works so well, and why some tools I expected to matter (Jira, Asana, MCP servers) ended up being mostly unnecessary.
I've used Jira and Asana for years. They're fine tools. Powerful, even.
But once I started doing serious work with AI agents, they stopped fitting the way I actually work.
The issues I ran into weren't philosophical—they were practical:
I can make Jira or Asana work. With enough effort, plugins, or MCP servers, I'm sure I could recreate parts of this workflow.
But GitHub Issues and GitHub Projects have quietly become very good.
And more importantly: They live where the code lives.
That matters a lot once AI enters the picture.
I don't do a separate "planning phase" anymore.
I don't switch into some explicit AI planning mode.
Instead, planning naturally happens during the conversation with Claude, and the final output of that planning is a fully-fleshed-out GitHub issue.
That issue becomes:
If a junior developer were handed the issue, they'd have everything they need.
That's the bar.
My workflow almost always starts at the command line, inside the repository I'm working on.
I launch Claude CLI right there. This is important.
Claude now has:
ghIf I'm working on a frontend feature that depends on a backend API, I'll feed Claude everything relevant:
"Here's everything you'd need if you were another senior dev joining this project."
This is where things start to feel different from traditional task creation.
We talk.
I'll brainstorm out loud:
Claude might:
I'll often ask for:
At this point, I'm wearing two hats:
Project Manager
Defining goals and constraints
Lead Developer
Highlighting technical expectations
Flesh this out so thoroughly that a junior developer could pick it up and succeed without interrupting anyone.
Once the task is fully thought through, I tell Claude to create the GitHub issue.
This is where the magic really kicks in.
Claude:
No copying. No pasting. No forgetting to assign something. No "I'll fix that later."
The output is simply:
"Here's the issue: [link]"
I click it. I review it.
If something's off, I tell Claude:
Claude updates the issue directly.
The issue evolves through conversation, not clicking.
One thing that dramatically improved this workflow is using Wispr Flow on macOS.
It's near-perfect voice-to-text.
So instead of typing long explanations, I often just talk.
It feels like:
While Claude is thinking or working (sometimes for several minutes), I'll jump to something else.
Parallelism—both human and AI—is a real productivity unlock.
Once the issue is ready and I decide to work on it, I run a single command:
From there, Claude already knows:
mainClaude reads the GitHub issue exactly like a junior developer would—and then starts coding.
Depending on the task:
Eventually, Claude pushes a PR and gives me the link.
I also have a notification system that tells me when it's done.
This part is important: I do not treat Claude's code as magical.
I review it exactly how I would another human's PR.
Instead of inline comments, I usually go back to the CLI and just tell Claude:
Claude updates the PR.
We go back and forth—just like real life.
Once I'm happy:
GitHub automation moves the issue to the correct state automatically.
A few other small but powerful patterns:
I frequently paste screenshots into Claude
Errors, UI bugs, logs—Claude is very good at reading them.
I'll sometimes let Claude inspect a local database
Never production, obviously.
Debugging API mismatches together
"Here's the JSON response. Now go look at the DB and tell me what's wrong."
This feels exactly like working with a junior developer—except faster and always available.
I've experimented with MCP servers.
They're interesting.
But honestly? If there's a CLI, I almost always prefer that.
The GitHub CLI alone can:
Claude using real tools feels more reliable than abstract integrations.
Less glue. Less indirection. More leverage.
The biggest frustration of my career hasn't been hard problems.
It's been starting a task without enough context.
That's usually not negligence—it's time pressure.
AI changes this.
A lead developer plus Claude can create a task with 150% of the needed context for roughly the same effort it used to take to create one with 10%.
That's a massive quality-of-life improvement for everyone.
I've been running this workflow for months now.
It's not fragile. It doesn't feel experimental. It just works.
GitHub Issues became my planning docs. Claude became my project manager, junior developer, and coding partner. And I spend more time thinking, reviewing, and shipping—and less time clicking.
This isn't about replacing developers.
It's about finally removing the overhead that never needed to be there in the first place.
Help a brother out -- follow me on Twitter.