← All writing

Prompt. Prove. Ship.

Prompt. Prove. Ship.: From Chat to Change

Autocomplete was the easy part.

An editor suggesting the next line of code is fairly easy to reason about. You read the suggestion, decide whether it makes sense, and accept it or you do not. The blast radius is usually sitting right in front of you.

An AI agent that can inspect a repository, edit several files, search documentation, run commands, respond to failing tests, and prepare a pull request is different. We already know these systems can produce a lot of code. The question I care about now is what makes the result trustworthy enough to use? That is where I want to go next with Prompt. Prove. Ship., a practical series about AI-assisted engineering without outsourcing judgment.


Why move from tools to workflow?

The first Git to Know You series was deliberately about building a technical mental model one tool at a time. Git gave change a history. Terraform made infrastructure reviewable. GitHub Actions automated repeatable delivery work. Kubernetes introduced reconciliation. OpenTelemetry standardized operational evidence. Argo CD connected reviewed desired state to deployment.

Those tools keep pointing toward the same larger idea: good engineering is not only about producing a change. It is about making the change understandable, reviewable, testable, and recoverable. AI agents make that operating model more important, not less.

A capable model can now move through much more of the workflow before a person touches the keyboard. That can remove a remarkable amount of friction, but it can also let one bad assumption travel through more files, more commands, and more decisions before somebody notices. So I am less interested in “ten prompts that make an agent smarter” than I am in the system around the agent:

prompt
→ context
→ bounded work
→ implementation
→ evidence
→ review
→ release

That is the path from a useful answer to dependable engineering work.


Prompt writing matters. Boundary writing matters more.

A capable agent needs a good task, but a good task is more than a clever paragraph. Before an agent starts changing a real repository, somebody should be able to explain what the actual source of truth is, which files or systems are in scope, what must not change, what evidence proves the work is complete, which failures the agent may correct on its own, and which decisions still belong to a person.

Those are familiar software-delivery questions. AI did not invent them. What changed is how much work can now happen between the initial request and the next human decision.

That is why I think boundary writing is becoming as important as prompt writing. If I tell an agent “make this better,” I have delegated taste, scope, architecture, and completion criteria in one vague sentence. If I can instead define the operating envelope—authority, scope, protected boundaries, proof, and stop conditions—the agent can have much more autonomy without quietly becoming the project owner.

The goal is not to make every task bureaucratic. It is to be explicit about the things that would be expensive to misunderstand.


Context should live close to the work

If every new AI session begins by re-explaining the architecture, build commands, security rules, naming conventions, deployment process, and current project state, the workflow has a memory problem.

Modern coding-agent platforms are moving toward repository-level context for exactly this reason. OpenAI’s Codex can be guided with repository AGENTS.md files that describe how to navigate a codebase, which commands to run, and which project practices to follow. GitHub Copilot also supports repository custom instructions that can document project structure, coding standards, and build/test expectations.

The durable lesson is not the filename:

Important project context should be recoverable from the project itself.

A healthy repository should be able to tell a new engineer or a new agent what the system is, where current authority lives, what is safe to change, how to test it, and where human approval is still required. That makes the workflow less dependent on one heroic prompt, one long-running chat, or one person’s memory.

OpenAI’s Codex introduction describes repository instructions directly, and its more recent harness-engineering write-up pushes the same idea farther: when agents do more execution, humans spend more time designing the environment, specifying intent, and building feedback loops. GitHub’s repository custom-instructions documentation provides a similar project-context mechanism for Copilot.


“The agent finished” is not evidence

One of the easiest AI mistakes is accepting some version of: “Done. Everything looks good.” Based on what?

For me, this is where AI-assisted engineering becomes regular engineering again. A CSS change needs rendered evidence. A migration needs integrity checks. A deployment change needs deployment evidence. A technical claim may need current first-party documentation. A refactor needs tests that exercise the behavior that supposedly did not change. The proof should match the claim.

That sounds obvious until an agent has made twelve coherent-looking changes in a few minutes and the temptation is to treat fluent explanation as verification. Fluent output is useful. It is not a browser, a test suite, a database integrity check, or a production deployment.

The more capable the agent becomes, the more important it is to separate what it says happened from what the real system proves happened.


Human in the loop is too vague

“Keep a human in the loop” is sensible advice, but it does not tell you where the human is useful. Requiring approval for every file read, harmless command, and routine formatting fix can turn an agent into an expensive keyboard macro. Giving the agent unrestricted authority and reviewing nothing is the opposite failure.

I would rather place human judgment where judgment actually adds something: material scope changes, architecture tradeoffs, security or privacy uncertainty, public claims, destructive actions, visual taste, and the point where a change becomes production.

Let automation handle repeatable mechanics when the boundaries and proof are clear. Keep people responsible for decisions where accountability, taste, or risk cannot be reduced to a deterministic check.

GitHub’s current coding-agent best practices follow a similar pattern: give the agent useful repository instructions and testable tasks, let it work iteratively on a branch, then bring the result back through normal review rather than silently treating generated work as trusted production state.


This portfolio is part of the experiment

The workflow behind this site is intentionally visible because the process itself is part of the portfolio. The repository carries durable project doctrine and current-state documentation. Work happens on bounded branches. Automated checks build the site, verify routes and assets, exercise browser behavior at several viewport sizes, and run accessibility checks. Public-facing decisions still have a human owner gate before merge. Production deploys automatically after an approved merge to main, and project state is updated so the next session can recover from repository truth instead of reconstructing a conversation.

That does not mean this exact governance structure belongs in every repository. It does make the larger idea tangible:

repository authority
→ bounded task
→ agent execution
→ exact evidence
→ human judgment where it matters
→ controlled release
→ durable closeout

The point is not “look what AI built.” I am much more interested in showing that AI-assisted work can still look like disciplined engineering work.

There is also a useful irony here: this article itself is being produced through that system. The publishing workflow has to protect factual claims, public safety, site behavior, and the author’s voice at the same time. Automation is helpful precisely because the acceptance standard is more than “the Markdown file exists.”


Where the series goes from here

I am intentionally not locking the next posts into a numbered calendar. The technology is changing too quickly, and the useful questions are more durable than any particular product menu.

Future installments may explore repository context, planning and scope boundaries, controlled tool access, tests and browser evidence, secrets and permissions, AI-assisted troubleshooting, review and release controls, or background and multi-agent workflows.

What I do not want is a series of feature tours. The interesting part is the operating discipline underneath the tools: what context makes autonomy useful, what evidence makes output trustworthy, where humans still add unique value, and how the workflow recovers when either the model or the system is wrong.

The products will change. Those responsibilities will not disappear nearly as fast.


Bottom Line

AI can make engineering work dramatically faster. It can also make a bad assumption travel farther before somebody notices.

So the next useful skill is not simply learning how to ask a model for more output. It is learning how to build a workflow where increasingly autonomous tools produce changes that are reviewable, testable, explainable, and safe enough to accept.

Prompt. Give the work enough context and a clear boundary.
Prove. Match the claim with evidence from the real system.
Ship. Keep human ownership at the point where the change becomes real.

That is what this next series is about.