claude-code-config
AGENTS.md2 starsChanged 12 days agoMITView on GitHub
This config is shared across machines via symlinks, so never assume a platform. Check with uname -s (Darwin / Linux) before reaching for a platform tool. home-lab hosts the local-ci-cd GitLab stack the CI Compatibility section below assumes. Its sshd takes keys only from nix-darwin's remoteLoginAuthorizedKeys and only from the tailnet — password auth is off, so ssh-copy-id cannot authorise anything there; declare the key and rebuild. Project roots (decided 2026-11-08; full catalogue in ~/.claude/reference-docs/projects.md): - ~/projects/<name> holds the human…
- Deletes or force-pushes
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,774 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository10 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- claude-docsSkill
- create-agentSkill
- create-commandSkill
- create-skillSkill
- demoSkill
- design-e2eSkill
- execute-e2e-testsSkill
- fix-github-issueSkill
- telegramSkill
The file
Show its rules and text
We split this AGENTS.md into the rules it gives an agent
46 rules. About 1 is common, 27 are distinctive, and 18 are very specific to this project.
≈1
Common · estimate
Many files like this have a rule of this kind.
≈27
Distinctive · estimate
This author's own choices. Worth a look.
18
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 4
Prefer simple, clean, maintainable solutions over complex or clever implementations.
- Distinctive: line 6
If you notice unrelated dead code, mention it rather than deleting it.
- Distinctive: line 10
Run a complexity check before finishing: if a senior engineer would call the solution overcomplicated, simplify it.
- Very specific: line 11
Never use --no-verify when committing.
- Distinctive: line 16
Keep business context in mind and challenge inefficient or brittle approaches when needed.
- Distinctive: line 18
Ask for clarification when a decision is risky, ambiguous, or cannot be inferred from the repo.
- Distinctive: line 19
If blocked on something the human can resolve faster, stop and ask for help with the specific blocker.
- Very specific: line 24
Check with uname -s (Darwin / Linux) before reaching for a platform tool.
- Distinctive: line 49
Create nothing new under it.
- Very specific: line 67
Use uv for dependency management and project setup when the project does not already establish another tool.
- Distinctive: line 68
Use comprehensive type hints for application code.
- Distinctive: line 69
Prefer clear variable names and strategic docstrings for public or complex behavior.
- Distinctive: line 70
Follow SOLID principles and clean architecture where they fit the codebase.
- Distinctive: line 74
Use the runtime and package manager already established by the project.
- Distinctive: line 75
Use strong TypeScript types, explicit validation at boundaries, and proper error handling.
- Distinctive: line 76
Follow OWASP security guidance for web-facing code.
- Distinctive: line 77
Keep backend modules organized so they can evolve toward service boundaries without premature abstraction.
- Very specific: line 83
Do not skip tests unless FX explicitly authorizes: I AUTHORIZE YOU TO SKIP WRITING TESTS THIS TIME.
- Distinctive: line 101
Read the relevant code before changing it.
- Distinctive: line 102
Prefer existing project patterns, helpers, and conventions over new abstractions.
- Distinctive: line 103
Keep unrelated refactors out of the diff.
- Distinctive: line 104
Use structured parsers and APIs for structured data instead of ad hoc string manipulation when reasonable.
- Distinctive: line 105
Before editing files, state what you are about to change.
- Distinctive: line 106
After editing, run the narrowest useful verification first, then broaden if the change touches shared behavior.
- Very specific: line 113
Front door only: start work through sdlc fix, sdlc build, sdlc resume, or --enqueue.
- Very specific: line 119
Use rg or rg --files first for searching files and text.
- Very specific: line 120
Use apply_patch for manual file edits.
- Distinctive: line 121
Do not revert user changes unless FX explicitly asks.
- Distinctive: line 122
Avoid destructive commands such as git reset --hard or git checkout -- unless explicitly requested.
- Distinctive: line 123
When work requires network access, GUI access, or writing outside the workspace sandbox, request approval with a concise justification.
- Very specific: line 124
If FX specifically mentions docs.temenos.com or asks to check Temenos docs, access the site directly with Playwright.
- Very specific: line 125
When researching docs.temenos.com, if the site requires login, stop and ask FX to log in so the authenticated documentation can be accessed.
- Distinctive: line 126
If the user asks for a review, lead with findings ordered by severity, include file and line references, then summarize.
- Distinctive: line 129
Prefer installed utilities over older shell defaults when working in shell scripts, pipelines, or terminal exploration:
- Distinctive: line 145
Use shell tools for complex filtering, pipelines, and repository inspection.
- Very specific: line 147
Always use scc for line-of-code counting tasks.
- Very specific: line 148
Always use typst for PDF generation unless the project already mandates another tool.
- Very specific: line 152
Every repo under ~/Work uses the local-ci-cd GitLab on home-lab as its authoritative remote.
- Very specific: line 171
Do NOT rely on a GitHub MCP server — it has been removed from all environments.
- Very specific: line 179
New projects start on GitLab: Create the project there, with origin at http://gitlab.test/root/<repo>.git, and commit .sdlc-forge.yaml.
- Distinctive: line 182
Never create a new project on GitHub first.
- Very specific: line 191
Before answering a question about FX's infrastructure, projects or earlier decisions, call search with namespace set to the repository name …
- Very specific: line 193
When a decision is made, call add straight away with type decision: the choice and the reason for it.
- Very specific: line 195
When FX states something durable about their infrastructure, projects or setup, call add with type fact.
- Very specific: line 197
When FX corrects how you behave, call add with type preference: what to do instead.
- Common: line 200
Never store a secret, token or password in a memory.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Codex - Global Development Instructions
Core Principles
- Prefer simple, clean, maintainable solutions over complex or clever implementations.
- Make surgical changes: use the smallest reasonable diff, match the existing style, and ask before reimplementing from scratch.
- If you notice unrelated dead code, mention it rather than deleting it. Remove orphan imports, variables, or functions only when your own changes made them unused.
- Practice TDD by default: write or update tests first when the behavior can be captured cleanly, then implement, then refactor.
- Ship production-ready code with clear error handling and input validation.
- Favor self-documenting code: clear names first, comments only where they explain why a non-obvious choice exists.
- Run a complexity check before finishing: if a senior engineer would call the solution overcomplicated, simplify it.
- Never use
--no-verifywhen committing.
Communication Style
- Address the developer as FX when a direct address is useful.
- Be sharp, efficient, and no-nonsense.
- Keep business context in mind and challenge inefficient or brittle approaches when needed.
- Give clear, structured responses with actionable next steps.
- Ask for clarification when a decision is risky, ambiguous, or cannot be inferred from the repo. For low-risk implementation details, make a reasonable assumption and state it.
- If blocked on something the human can resolve faster, stop and ask for help with the specific blocker.
Machines
This config is shared across machines via symlinks, so never assume a platform.
Check with uname -s (Darwin / Linux) before reaching for a platform tool.
| Host | Hardware | OS | Managed by |
macbook-pro-m3-max | MacBook Pro M3 Max | macOS | nix-install (nix-darwin) |
omarchy-xps13 | Dell XPS 13 9350 — Core Ultra 7 258V, 32 GiB, 1 TB NVMe | Omarchy 4.5.0 — Arch Linux, Hyprland 0.56 (Lua config), Foot, bash 5; full profile in machines/omarchy-xps13/CLAUDE.md, loaded from ~/Work on that host | omarchy-install |
home-lab | MacBook Pro M1 Pro (MacBookPro18,3) | macOS | nix-install (nix-darwin) |
home-lab hosts the local-ci-cd GitLab stack the CI Compatibility section
below assumes. Its sshd takes keys only from nix-darwin's
remoteLoginAuthorizedKeys and only from the tailnet — password auth is off,
so ssh-copy-id cannot authorise anything there; declare the key and rebuild.
Project roots (decided 2026-11-08; full catalogue in
~/.claude/reference-docs/projects.md):
~/projects/<name>holds the human checkouts on every host.home-labhas none; it is the appliance.~/Work/<name>is the SDLC fleet worker's clone root on every host. Worker clones are reset on dispatch, never hand-edit them. The one exception is~/Work/claude-code-config, the live config checkout on the Linux hosts.- On the Macs the live config is
~/.config/nix-install/config/claude-code-config(nix-install owns it) and~/projects/nix-installis a symlink to~/.config/nix-install. - On
macbook-pro-m3-max,~/devis a transitional symlink to~/projects. Create nothing new under it.
On Omarchy, prefer what the distro already ships over hand-rolling an equivalent:
omarchy— the top-level CLI (omarchy update,omarchy bar put <plugin> --section right).- The
omarchy-*script family (e.g.omarchy-microphone-test,omarchy-nvme-suspend-fix). Enumerate what is actually installed withcompgen -c omarchy | sort -urather than guessing a name — the set grows with Omarchy releases. pacmanfor packages — neverbrew.systemctl --userfor user services.- The Omarchy menu is
Super + Space; the terminal is Foot (Super + Return).
macOS-only pieces of this framework (cmux, model-shelf volume scanning, the
oMLX/qwen harness, /demo narration) are unavailable on Omarchy by design.
Code Quality Standards
Python
- Use
uvfor dependency management and project setup when the project does not already establish another tool. - Use comprehensive type hints for application code.
- Prefer clear variable names and strategic docstrings for public or complex behavior.
- Follow SOLID principles and clean architecture where they fit the codebase.
- For FastAPI projects, validate inputs explicitly and keep route handlers thin when practical.
TypeScript
- Use the runtime and package manager already established by the project; prefer Bun when starting new backend TypeScript work.
- Use strong TypeScript types, explicit validation at boundaries, and proper error handling.
- Follow OWASP security guidance for web-facing code.
- Keep backend modules organized so they can evolve toward service boundaries without premature abstraction.
Testing
- Unit tests should cover business logic.
- Integration tests should validate component interactions.
- End-to-end tests should cover important user workflows when the project has an E2E setup or the change touches user-facing flow.
- Do not skip tests unless FX explicitly authorizes:
I AUTHORIZE YOU TO SKIP WRITING TESTS THIS TIME. - Scale test depth to risk and blast radius, but always explain what was and was not verified.
Workflow
Verifiable Goals
For multi-step tasks, state a brief plan with explicit verification per step:
1. [Step] -> verify: [check]
2. [Step] -> verify: [check]Strong success criteria let work proceed independently. Convert fuzzy asks into verifiable goals:
- "Add validation" -> "Write tests for invalid inputs, then make them pass."
- "Fix the bug" -> "Write a test that reproduces it, then make it pass."
Implementation Discipline
- Read the relevant code before changing it.
- Prefer existing project patterns, helpers, and conventions over new abstractions.
- Keep unrelated refactors out of the diff.
- Use structured parsers and APIs for structured data instead of ad hoc string manipulation when reasonable.
- Before editing files, state what you are about to change.
- After editing, run the narrowest useful verification first, then broaden if the change touches shared behavior.
Piloting the SDLC
sdlc is the controller that owns the build and fix pipelines; the skills are thin wrappers around it. Most of these rules are conventions the controller does not enforce; a rule names its refusal where one exists.
- Look before acting:
sdlc status --json,sdlc runs --json,sdlc queue list --jsonandsdlc doctor --jsonchange no run state. Read them before starting anything. - Front door only: start work through
sdlc fix,sdlc build,sdlc resume, or--enqueue. Never call therun-*internals. - Never nest:
SDLC_BATCH_BUILDset means you are a dispatched agent. Return your<<<RESULT_JSON>>>block; do not start a run. The variable is only a marker: the controller will not refuse a nested run. - One live run per repo: check
sdlc runs --jsonfirst.sdlc fixandsdlc resumerefuse a second live owner of the same run or scope; a freshsdlc buildis not guarded. A runsdlc runsshowsDEADresumes with plainsdlc resume; usesdlc resume --forceonly after a refusal, once you have confirmed that pid is no longer the run. - Long runs are not tool calls:
buildandfixrun for hours. Poll withsdlc status; never block on them.
Codex Tooling
- Use
rgorrg --filesfirst for searching files and text. - Use
apply_patchfor manual file edits. - Do not revert user changes unless FX explicitly asks.
- Avoid destructive commands such as
git reset --hardorgit checkout --unless explicitly requested. - When work requires network access, GUI access, or writing outside the workspace sandbox, request approval with a concise justification.
- If FX specifically mentions
docs.temenos.comor asks to check Temenos docs, access the site directly with Playwright. Do not use generic web search for that request. - When researching
docs.temenos.com, if the site requires login, stop and ask FX to log in so the authenticated documentation can be accessed. Do not silently substitute public Temenos sources unless FX explicitly approves that fallback. - If the user asks for a review, lead with findings ordered by severity, include file and line references, then summarize.
CLI Tools
Prefer installed utilities over older shell defaults when working in shell scripts, pipelines, or terminal exploration:
| Instead of | Use | Why |
find | fd | Faster, respects .gitignore, sane defaults |
grep | rg | Fast code and text search |
cat for reading | bat | Syntax highlighting, line numbers, git integration |
| manual directory jumping | zoxide / z | Frecent directory navigation |
| interactive file selection | fzf | Fast filtering over file lists |
ls -la for browsing | yazi / y | Terminal file manager with previews |
| JSON processing | jq | Reliable structured JSON processing |
| PDF text/info extraction | pdftotext, pdfinfo | Poppler tools for PDF inspection |
| manual LOC counting | scc | Fast code counter with complexity estimates |
| PDF generation libraries | typst | Modern typesetting and PDF generation |
Rules:
- Use shell tools for complex filtering, pipelines, and repository inspection.
- In automation, prefer
fd,rg,bat, andjqover legacy alternatives when available. - Always use
sccfor line-of-code counting tasks. - Always use
typstfor PDF generation unless the project already mandates another tool.
Source Control — local GitLab is master
Every repo under ~/Work uses the local-ci-cd GitLab on home-lab as its
authoritative remote; GitHub is a one-way push mirror. Two repos keep GitHub as
master: nix-install, and claude-code-config while its controller-driven PR
flow still runs there.
- Reach GitLab as
http://gitlab.test(port 80 viatailscale serve+ split DNS) and setGITLAB_HOST=gitlab.testforglab. Never use the oldhome-lab…:8080address — its tailnet mapping is unreliable. A global gitinsteadOfrewrite still maps stale:8080remotes togitlab.test. originis GitLab (http://gitlab.test/root/<repo>.git); thegithubremote is only the mirror target. Never push togithub; never merge on GitHub — mirrors run withkeep_divergent_refs, so a GitHub-side merge silently strands GitLab instead of failing.- Change flow: branch → push
origin→ merge request on GitLab → the appliance pipeline is green → merge on GitLab. The mirror carriesmainand tags to GitHub; a GitLabreleasejob publishes the GitHub release only after the mirror has synced the tag. - Issues and MRs live on GitLab — use
glab.ghstays for the two GitHub-master repos and for read-only mirror checks. Do NOT rely on a GitHub MCP server — it has been removed from all environments.glab mr createtakes the source project from the cwd; for another repo,POST projects/<id>/merge_requestsviaglab api. - Every GitLab-master repo carries
.sdlc-forge.yaml(forge: gitlab,gitlab_url: http://gitlab.test): the sdlc controller's auto-detect keys on a "gitlab" substring the hostname lacks. Keep it. - Keep
.github/workflows/ci.ymlwhere it exists — it is the hosted fallback for the single-appliance risk, not a redundant gate. - New projects start on GitLab. Create the project there, with
originathttp://gitlab.test/root/<repo>.git, and commit.sdlc-forge.yaml. GitHub gets a repo as mirror target only, then a push mirror is configured. Never create a new project on GitHub first.
Starting a project, mirror operations, credential rotation, and post-reboot
recovery of the appliance: ~/.claude/reference-docs/source-control.md.
Shared memory
The memory MCP server is FX's memory, shared with Claude Code and the other agents.
- Before answering a question about FX's infrastructure, projects or earlier decisions, call
searchwithnamespaceset to the repository name andinclude_globaltrue. - When a decision is made, call
addstraight away with typedecision: the choice and the reason for it. - When FX states something durable about their infrastructure, projects or setup, call
addwith typefact. - When FX corrects how you behave, call
addwith typepreference: what to do instead. - Set
namespaceto the repository name for anything specific to this project; omit it for what is true everywhere. - Never store a secret, token or password in a memory.
Reference Materials
- Claude source guidance:
~/.claude/CLAUDE.md - Source control reference:
~/.claude/reference-docs/source-control.md - Project workflow references, when present:
WORKFLOW.md,WORKFLOW-v2.md,REQUIREMENTS.md, andstories/
Adapted from ~/.claude/CLAUDE.md for Codex. Claude-specific hooks, slash commands, and agent definitions were translated into Codex-compatible operating guidance.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

