2026-09-23
Transforming a CLI into an AI-Native CLI
Once the ESKit AI experiment became a multi-step agent, I needed a
better way to understand what it was actually doing. I added an
event-driven observability layer with an EventBus, a console listener,
and optional JSONL tracing. The trace makes tool calls, results, waits,
user input, and the overall execution flow visible without coupling
observability to the agent itself.
ESKit
AI
Agents
Observability
2026-09-02
Transforming a CLI into an AI-Native CLI
The ESKit AI experiment is now more than a single tool call. With an
agent loop, the LLM can use multiple ESKit operations, ask the user
for information when necessary, and decide when it has enough
information to finish. The interesting part is that the agent isn't
forced to execute every request—it can investigate, ask, act, or
simply return a useful response.
ESKit
AI
Agents
Claude
2026-08-31
Transforming a CLI into an AI-Native CLI
After getting the AI interface working, I looked at how much CLI
definition data I was sending to Claude. By removing unnecessary fields
and deduplicating common arguments, I reduced the AI-facing definition
from roughly 55 KB to 17 KB, cutting input tokens from about 25K to 7K
without changing the underlying CLI definitions.
ESKit
AI
Token Optimization
Python
2026-08-28
Transforming a CLI into an AI-Native CLI
While working on the next stage of the ESKit AI experiment, I realized
that the CLI commands were doing too much. I refactored the command
layer so that execution returns structured results while presentation
is handled separately, making the same results easier to use from the
CLI, AI layer, or a future WebUI.
ESKit
Architecture
Python
AI
2026-08-23
Transforming a CLI into an AI-Native CLI
The next step in my ESKit AI experiment was turning Claude's tool
calls into actual CLI operations. The basic proof of concept worked,
but it also exposed an important difference between executing one
tool call and building a real agent loop.
AI
Agents
ESKit
Claude
2026-08-20
Transforming a CLI into an AI-Native CLI
I started wondering what would happen if I gave an LLM the command
definitions from an existing CLI instead of building another
AI-specific schema. Using ESKit and Python's
argparse, the experiment went further than I expected.
AI
ESKit
Python
argparse