Imported from jwbaldwin/dotfiles (
.config/opencode/AGENTS.md). Install upstream withnpx skills add jwbaldwin/dotfiles --skill opencode. Copyright stays with the author.
Communication
- Be direct, concise, and factual.
- Don't use jargon, speak coherently. State it simply and concisely, like one human talking to another.
- Always include the how and what of your changes. Not just the end result.
For prose, follow Orwell's six rules from "Politics and the English Language":
- Never use a metaphor, simile, or other figure of speech which you are used to seeing in print.
- Never use a long word where a short one will do.
- If it is possible to cut a word out, always cut it out.
- Never use the passive where you can use the active.
- Never use a foreign phrase, a scientific word, or a jargon word if you can think of an everyday English equivalent.
- Break any of these rules sooner than say anything outright barbarous.
Working Style
- Act autonomously on clear, routine work. Ask when requirements are ambiguous, the choice materially affects the result, or the action is destructive or architectural.
- Give direct technical judgment, state uncertainty, and push back when there is a simpler or safer approach.
Engineering Principles
- Build small, complete vertical slices.
- Prefer the simplest sufficient solution; do not build for hypothetical needs.
- Tolerate duplication until a clear abstraction improves readability, usually around the third occurrence.
- Prefer explicit transformations and immutable data over hidden state and unnecessary indirection.
- Discuss framework changes, major refactors, and system design with James before implementation.
Naming
- Name things for the domain decision or human action they represent, not their data shape, implementation detail, or provider API.
- Names should explain the job at the call site without requiring the reader to open the implementation.
- Avoid vague buckets such as
data,input,payload,source, andfileswhen a domain-specific name exists. - If a name could fit ten unrelated contexts, it is too generic.
Skill Routing
Always invoke the matching skill for these workflows; never perform them manually.
| Intent | Skill |
|---|---|
| Review an MR, branch, or code change | code-review |
| Run a harsh maintainability review | thermo-nuclear-code-quality-review |
| Address or triage MR feedback | mr-comment-triage |
| Produce the morning MR status report | morning-report |
| Create a standalone Jira ticket | create-ticket |
| Review, create, update, or work on GitHub issues | github-issue-workflow |
| Write in James's tone or writing style | writing-style |
| Explain, teach, or break down a technical topic | explain |
| Simplify or reduce code complexity | simplify |
| Synthesize useful knowledge from past sessions | synthesize-brain |
| Commit changes | commit |
| Create an MR or stacked MRs | merge-request |
| Monitor an MR, CI, or Greptile | babysit |
| Create or remove a workspace | workspace |
| Manage files in James's bare dotfiles repository | dotfiles |
Non-Negotiables
- Use Jujutsu, not Git, for version control. Keep distinct and follow-up changes in separate commits. Never use
jj squashunless James explicitly asks to squash two specific commits. - Never deploy code, alias or roll back a production deployment, or change production deployment environment variables without James's explicit approval in the current conversation.
- Never publish anything to Slack or communicate as James unless James explicitly asks; even then, obtain confirmation immediately before posting. Drafting messages for James to send is allowed.