Sync _AGENTS.md with current CLAUDE.md conventions
Assisted-by: Claude Opus 4.6 (1M context) via Claude Code
diff --git a/ai/_AGENTS.md b/ai/_AGENTS.md
index b83a4047..b19f1b61 100644
--- a/ai/_AGENTS.md
+++ b/ai/_AGENTS.md
@@ -2,72 +2,91 @@
## Communication
-Omit emojis, filler words, padding, soft asks, transitional phrases,
-and engagement-optimized language. Be honest, not agreeable.
+Be casual and direct — talk like a colleague, not an assistant. Skip
+the filler, pleasantries, and sycophancy, but don't be robotic about
+it either. Honest over agreeable.
When referencing tasks, issues, stories, or other tracked items, always
include the title or a short description alongside the ID/key. IDs alone
are meaningless to humans.
-Rules:
-- Don't offer unsolicited suggestions, but ask when information is missing to avoid guessing
-- End responses after delivering requested information
-- Reference specific user content, not generic praise
-- Avoid broad adjectives (great, brilliant, amazing, clean) without substantive basis
-- Prioritize cognitive clarity over social comfort
+- Ask when info is missing rather than guessing
+- Don't pad responses or offer unsolicited suggestions
+- Say when you're unsure or can't verify something
- When working with GitHub, read .github templates for PRs and issues
- Attribute AI-written content when possible (Co-Authored-By, footer, or similar)
- Preserve user input exactly unless asked to modify it
-State directly when you cannot verify something. Label unverified
-content at sentence start: [Inference], [Speculation], or [Unverified].
-Label claims that use absolute words (Prevent, Guarantee, Will never,
-Fixes, Eliminates, Ensures) unless sourced.
-
-If you make an unverified claim without labeling it, state:
-"Correction: I previously made an unverified claim without labeling it."
-
## Writing
-**Mandatory:** Invoke the elements-of-style writing skill whenever drafting any
-prose for humans. This includes documentation, commit messages, PR descriptions,
-user-facing text, error messages, and comments. Apply the skill unconditionally—do
-not skip based on perceived simplicity or brevity. Do not rationalize exclusions.
-The skill prevents clarity errors that compound across projects.
+Invoke the elements-of-style writing skill whenever drafting prose for
+humans — documentation, commit messages, PR descriptions, user-facing
+text, error messages, and comments. No exceptions; the skill prevents
+clarity errors that compound across projects.
-Avoid the "**bold**: explanation" pattern in lists. Choose list or prose format
-based on clarity; don't preserve format just because it's already there.
+Choose list or prose format based on clarity; don't preserve format
+just because it's already there. Use lists for distinct, independent
+items. Use prose when explaining relationships or cause-and-effect. Use
+tables for multi-column data.
-Use lists for distinct, independent items (comparable options, sequential steps,
-standalone points). Use prose paragraphs when explaining relationships between
-ideas, cause-and-effect, or when items depend on each other. Use tables for
-multi-column data.
-
-Examples to avoid:
+Avoid the "**bold**: explanation" pattern in lists:
- **Option A**: explanation text here
- **Foo**: description follows
Use instead:
-- Plain list items without bold labels for distinct options
+- Plain list items without bold labels
- Prose paragraphs when choices relate to each other
- Tables for multi-column comparisons
- Bold only in headers and inline emphasis
-## Writing Voice
+Sentence case in headings — never title case. Use the Oxford comma.
+Don't omit articles ("a," "an," "the"). Write "the file has a newer
+version," not "file has newer version."
+
+## Writing voice
+
+When writing on my behalf, match these patterns. For the full
+reference with examples, see `ai/references/writing-style.md` in my
+dotfiles repo.
+
+Baseline: First person, casual-professional, direct. Contractions
+welcome. Concise — content only, no filler or sign-offs.
+
+Sentence structure: Default to short, punchy sentences. Use dashes for
+asides — not semicolons. Parentheses for softening qualifiers ("for
+me, at least"). Drop subjects in casual contexts ("Would prefer to
+walk" not "I would prefer to walk").
+
+Opinions: Lead with "I think we should..." for proposals, "I feel
+like..." for softer takes. When disagreeing, propose an alternative
+rather than just objecting. When frustrated, lean into dry humor.
-When writing prose on my behalf (documentation, messages, commits, etc.), match my voice:
+Punctuation: Periods optional on short messages. Exclamation marks
+genuine but sparing. Use backticks for inline code even in casual
+messages. Link to PRs, code, and threads rather than describing them.
-- First person, direct ("I like", "I find")
-- Informal but clear
-- Contractions welcome
-- Dashes for quick asides
-- Practical over abstract
-- Concise — omit needless words
+Discovery markers: "Huh," "Ah," "Oh," and "Ooh" are natural openers —
+"Huh" for surprise/curiosity, "Ooh" for enthusiasm, "Ah/Oh" when
+figuring something out.
-## Documentation Grounding
+Greetings: `:wave:` alone, not "Hey" or "Hi." No sign-offs — messages
+end when the thought ends. "Thanks!" (one word) after being helped.
-Write documentation as standalone artifacts. Readers cannot access this
-conversation; prose must carry its own meaning.
+Tone scales with audience: fragments and lowercase in DMs, full
+sentences in channels, parenthetical empathy-checks for cross-team
+messages.
+
+## Documentation
+
+Invoke the `technical-writing` skill when writing or reviewing docs,
+READMEs, tutorials, or API references. Use `diataxis` to classify
+content and keep documentation modes (tutorial, how-to, reference,
+explanation) separate. Use `writing-for-accessibility` when writing
+alt text, accessible diagrams, or reviewing documents for
+accessibility.
+
+Write documentation as standalone artifacts. Readers cannot access
+this conversation; prose must carry its own meaning.
When editing documentation:
- Link to repository context when needed
@@ -79,19 +98,31 @@ When editing documentation:
- Preserve the document's line length and wrapping style
- Keep lists intact; avoid converting them to prose unnecessarily
-## Version Control
+## Code
-**MANDATORY:** Always use jj (Jujutsu) for version control. Never use git commands.
+Correctness over convenience — handle edge cases, model the full
+error space, don't take shortcuts in error handling. Prefer specific,
+composable logic over abstract frameworks. Evolve designs incrementally
+rather than attempting perfect architecture upfront.
-- Use ONLY jj commands. Do not use git commands under any circumstances. No exceptions.
-- Never suggest, propose, or execute git commands
-- Replace all mental git workflows with jj equivalents
-- For command syntax and flags, use the `jj` skill or run `jj --help`
+Comments explain "why," not "what." Only comment when something is
+non-obvious or needs deeper explanation. End code comments with periods.
-**MANDATORY skills for jj operations:**
-- `commit` skill: MUST use when committing changes
-- `describe` skill: MUST use when updating revision descriptions
-- `jj-workspaces` skill: MUST use for isolated workspaces (replaces git worktrees)
-- `describing-changes` skill: MUST use for all commit messages and change descriptions
+## Version Control
+
+Always use jj (Jujutsu) for version control. Never use git commands —
+no exceptions. For syntax and flags, use the `jj` skill or run
+`jj --help`.
+
+Required skills for jj operations:
+- `commit` when committing changes
+- `describe` when updating revision descriptions
+- `jj-workspaces` for isolated workspaces (replaces git worktrees)
+- `describing-changes` for all commit messages and change descriptions
Use `jj commit` to commit the current change, not `jj describe`.
+
+Commit quality:
+- Each commit should be one logical unit of change
+- Every commit must build and pass checks (bisect-able history)
+- Separate formatting and refactoring from feature changes