AI Workflow Without Losing Your Mind
Michal Franc ยท 2026
Working with agents intensively...
Hobby project โ roguelike / RPG, worked on evenings and weekends.
Personal assistant powered by Claude Code โ available from phone, watch, voice.
context switching
re-explaining the same things over and over
keeping track of what each agent is doing
fixing what the previous agent broke
wondering if any of it is actually coherent
API-dependent ยท online only ยท overkill for hobby projects
Plain .md files with YAML frontmatter ยท no API ยท no internet ยท full control
each file = one issue ยท git tracked ยท agent readable
Agents could just modify the .md files directly โ no API, no tooling, just plain text.
Agents could modify any .md file freely โ change status, overwrite content, mark things done without actually doing them.
I still had to watch every agent session. Without guardrails, mistakes were silent and hard to catch.
The freedom that made agents useful also made them unpredictable.
Well... skills. Sure thing.
Reusable prompt templates that agents can invoke โ with defined inputs, outputs, and guardrails built in.
Instead of free-form file edits, agents call a skill. The skill enforces the rules.
But just telling agents how to nicely modify .md files is not enough.
The bigger the context, the less predictable the agent gets.
LLMs reliably follow ~150โ200 instructions.
Claude Code's system prompt already uses ~50.
Every instruction you add competes for attention โ and compliance decreases uniformly as count grows.
LLMs have a U-shaped attention curve โ they recall the beginning and end well, but miss the middle.
Your context file sits at the start โ make every line count.
More instructions โ more control.
What if we stop fighting non-determinism โ and contain it instead?
Mix
non-deterministic LLMs
+
deterministically behaving tools
Enter issue-cli
issue-cli in actionProjects define their own workflow โ validations, prompts, side effects โ in workflow.yaml
Each status tells the agent what to do โ injected automatically at dispatch time.
Must have checkboxes? Body not empty? Blocks the move if rules aren't met.
Auto-append sections, clear assignee, inject checklists on transition.
Managing statuses, transitions, validations, and side effects in YAML by hand gets painful.
Injected to every agent session. Defines who the agent is, project context, and global rules.
Loaded from CLAUDE.md
Injected on each status. Tells the agent exactly what to do at this stage of the workflow.
Defined in workflow.yaml
Optional extra context injected at dispatch โ issue body, metadata, related issues.
Per-issue override
Blocks a transition if conditions aren't met โ has_checkboxes, body_not_empty, assignee set.
Hard stops, not suggestions
Automatically adds structured sections to the issue on transition โ checklists, test plans, docs stubs.
Side effect on transition
Certain statuses require a human to approve before the agent can proceed. Agent waits.
backlog, human-testing
Real issue in the project:
Status prompt injected to agent:
Validation on transition โ backlog:
issue-cli processAgent runs issue-cli process first โ sets rules, workflow, and step-by-step guidance for the whole session.
Defines statuses, transitions, validations, and prompts for the whole project. Every issue follows this by default.
Per-system overrides that add extra instructions for specific domains โ injected on top of the base workflow.
Base handles the generic flow ยท subsystem overlays inject domain expertise at the right moment
Every agent dispatch assembles a fresh, precise context from its parts.
No re-explaining. No guessing. No babysitting.
Not just rules โ a signal to the agent that something went wrong.
Block a transition when the agent missed something โ no checkboxes, empty body, test plan absent.
The CLI returns a clear error. The agent reads it, self-corrects, and retries. No human needed.
Hard stops at key gates โ backlog, human-testing. Agent cannot proceed until a human explicitly approves in the UI.
Catches non-deterministic drift before it compounds.
LLMs are non-deterministic. They will occasionally skip steps, hallucinate progress, or mark things done prematurely.
Validations and approvals are checkpoints that surface undeterministic behavior before it causes damage โ without requiring you to watch every session.
The system catches the agent. Not you.
If agents already use issue-cli as their primary tool โ why not extend it?
Agent hits an unexpected failure during implementation? It files a bug issue itself.
issue-cli report-bug "description"
No context lost. Filed with full context while it's fresh.
Agent reflects on what went wrong, what was unclear, what slowed it down โ and writes it up.
issue-cli retrospective <slug> --body "..."
Structured feedback loop from the agent back to you.
The agent isn't just a worker โ it becomes a participant in the workflow.
A bot reviews retros and bugs โ and feeds findings back into the workflow.
The system gets smarter over time โ without you manually tuning it.
Tooling friction: issue-cli start is listed as step 1 in generic instructions, but it cannot work from idea status โ the workflow should branch earlier for idea issues and direct the agent to gather clarification first.
Subsystem gap: Equipment guidance should explicitly direct agents to current arc/stress/chassis seams and existing structure family files earlier so design work starts from the real implementation surface.
Tooling bug: issue-cli check reported success for multiple items but issue-cli checklist remained stale immediately afterward โ hard to know when status is truly ready for transition.
Agent surfaces its own blind spots โ feeds directly into workflow and tooling improvements.
Designed for AI consumption. If we notice agents want to do things a certain way โ we just add it and get out of the way.
Aliases โ because agents use natural names:
AI-native design principles:
Commands tell the agent exactly what to do next. No silence after success.
Failures explain why and what to fix โ not just exit code 1.
If an agent finds a workaround, that workaround becomes a command.
This tool will likely end up with tens of commands doing similar things in slightly different ways โ and that's completely fine.
Approve an issue, pick Claude or Codex โ spins up a terminal, pastes the composed prompt, agent starts immediately.