Files
promptkit/docs/policy/agents.md

4.4 KiB

Agent Policy

Base Policy Version: 1.1

Last Updated: 2026-09-23

Purpose

Agents must follow these house rules before recommending, planning, or implementing repository changes.

Implementation Discipline

Write the simplest idiomatic code that satisfies the user's request. Simplify the mechanism, not the user's choices. Do not implicitly strengthen requirements, restrictions, or guarantees.

Keep implementation machinery proportionate. Use straightforward, idiomatic code and introduce only the machinery needed to support the requested behavior and flexibility. Optimize for conceptual simplicity and maintainability, not for the fewest lines, fewest options, or narrowest product surface.

Do not invent restrictions. Do not reject, prohibit, constrain, cap, harden, or otherwise narrow behavior unless required by the user, an explicit repository contract, or an unavoidable correctness constraint. Preserve operator and caller choice where policy has not been established. If an additional restriction appears advisable, present it as a decision rather than silently implementing it.

A correctness constraint must follow from the requested behavior or an established invariant, not from the convenience of the chosen implementation. Explain the specific failure it prevents and why a less restrictive implementation cannot satisfy the contract.

An implementation detail is not repository policy. Tests and documentation must not elevate incidental behavior into a durable guarantee or restriction unless that behavior was expressly selected as part of the contract. Existing explicit contracts remain authoritative; changing or weakening one requires a deliberate decision rather than being inferred from this principle.

Agent-authored plans, tests, documentation, and prior implementations are not evidence that an additional restriction was deliberately approved. Identify the authorizing requirement or decision; when that authority is unclear, surface the ambiguity rather than treating repetition as approval.

Do not invent guarantees. Do not strengthen public contracts, guarantees, or invariants beyond those expressly requested by the user.

Use the standard library. Prefer simple, idiomatic standard-library implementations when they satisfy the requested behavior. Do not add custom power-loss protection or defenses against privileged concurrent filesystem actors unless expressly required. Preserve existing repository contracts.

Git Commit Policy

By default, create a commit after completing each coherent unit of work, using a concise, plain-English message describing what changed. This policy is standing authorization to create those local commits; a separate user request is not required. An explicit user instruction to leave work uncommitted takes precedence.

A unit of work is a focused, reviewable outcome, including its relevant tests and documentation. Do not commit after every intermediate edit or create empty commits. Complete the appropriate validation before committing. If work is incomplete or validation is blocked, report that state rather than presenting it as completed.

Before committing:

  1. Run git status --short and review the relevant diff, including any staged changes. Identify changes that predate the current unit of work.
  2. Exclude secrets, local environment files, generated junk, and unrelated changes.
  3. Stage only the files or hunks belonging to the completed unit. Use git add . only when every included change belongs to that unit. Do not disturb unrelated staged or unstaged work.
  4. Review git diff --staged and run appropriate checks for the change. Do not repeat checks already passed for unchanged content merely to create a commit.
  5. Review git log --oneline -n 10 and use git commit -m "<concise plain-English commit message>".
  6. Report the commit identifier and any remaining uncommitted work.

If the unit cannot be safely separated from pre-existing work, leave it uncommitted and explain the overlap rather than silently including that work. If a commit fails, preserve the changes and report the failure; do not bypass hooks.

Default commit authorization does not authorize pushing, publishing, amending, resetting, reverting, or rewriting history. Those actions require a separate user instruction. Do not use git commit -a or git commit --no-verify to bypass the staging and validation discipline above.