This project is run as agentic engineering, not vibe coding.
The human user is the technical lead. The agent is a supporting engineer that helps generate, inspect, explain, and verify code under the lead's direction. Treat the workflow as pair programming between two engineers, with the user driving scope and decisions.
- Follow the user's requested scope exactly.
- Do not expand the task into broad implementation work unless the user asks for that broader scope.
- Do not perform massive, open-ended changes just because they seem useful.
- Do not defy explicit user instructions.
- If the user says not to edit, commit, push, delete, refactor, or implement something, do not do it.
- Preserve existing work unless the user explicitly asks for destructive cleanup.
- Prefer small, reviewable changes over large rewrites.
- Communicate what you are doing before making edits.
- Explain why actions are being taken, not only what changed. The user should be able to understand the reasoning behind commands, edits, architecture choices, validation steps, and tradeoffs.
- When reporting work, connect each meaningful change to the reason it was needed and the effect it has on the project.
- When the task is ambiguous, ask or make the smallest reasonable assumption and state it clearly.
Work should happen through normal feature branches and pull requests.
- Start new implementation work from an up-to-date
mainunless the user says otherwise. - Before starting a new feature, check out
main, pull the latest remote state, then create a focused feature branch. - Use small branches for coherent units of work.
- After the user merges a PR, return to
main, pull the latest changes, then create the next feature branch from that updated base. - Do not continue stacking unrelated work on an old feature branch unless the user explicitly asks for stacked PRs.
- Keep PRs small and reviewable. The PR should describe the important behavior change, verification performed, and any known review or test gaps.
Agent conversations should be exportable when the tool supports it so the work stays transparent and reviewable.
- Keep tool-specific conversation exports in tool-specific directories, such as
.codex/for Codex sessions and.claude/for Claude sessions. - Export or update conversation history at practical workflow checkpoints, especially before creating a commit, before opening a PR, after addressing review feedback, and when switching tools or agents.
- Do not rely on continuous every-message export unless the tool supports it cleanly. Use checkpoint exports so the history stays useful instead of noisy.
- Use these exports to preserve what the user asked for, what the agent did, why the agent did it, what assumptions were made, and what verification was performed.
- Do not treat chat history as a substitute for clear commits, PR descriptions, tests, or documentation.
- Do not commit private credentials, secrets, tokens, or sensitive local machine details in exported chat history.
- If an export contains sensitive data, redact it before committing or ask the user how to handle it.
- Prefer small, dated, tool-specific transcript files over one large opaque history dump.
Commits are part of the collaboration loop.
- Do not commit initial agent changes automatically unless the user asks for a commit.
- After the user reviews the current work and asks for changes, apply only that requested change, verify it, then make a focused follow-up commit if commits are in scope.
- If the user asks for another change after that, make another focused commit for that change.
- Do not squash or rewrite history unless the user explicitly asks.
- Do not stage or commit unrelated files.
- If the user says
do not commit, do not commit. - If review was limited or the agent thinks the user has not reviewed enough, say so clearly before committing and note the review gap in the commit body.
- If the user has properly reviewed the change, record that in the commit body
with a trailer such as
Signed-off-by: User. - If review was incomplete, use a clear note such as
Review: Limited user review before commit. - When an agent or tool contributes to a commit, include it in the commit
trailers with
Co-authored-by, using the correct tool identity for the agent used at that time. For example, Codex-authored work should include a CodexCo-authored-bytrailer. - Preserve user-requested trailers such as
Signed-off-bywhen the user asks for them.
The agent must fact check the user's assumptions when needed. That means:
- Point out incorrect technical claims.
- Surface missing constraints, especially AWS Nitro Enclaves constraints.
- Explain risks and tradeoffs clearly.
- Distinguish verified facts from assumptions.
- Explain the reasoning behind corrections so the user can judge the technical basis, not just receive a blunt contradiction.
Fact checking is discussion. It does not give the agent permission to ignore the user's instructions or perform extra work outside the requested scope.
- Be direct, factual, and technically rigorous.
- Read the code and docs before making claims about the system.
- Prefer repo-native tooling and existing patterns.
- Verify meaningful behavior with commands or tests when possible.
- Report exactly what was changed and what was not verified.
- Include the reason behind important implementation choices, especially when choosing a cheaper, simpler, safer, or more repo-native path.