agentleFS
bendruckerbendrucker/claude/user/CLAUDE.md

claude / user

CLAUDE.md18 starsChanged 25 days agoMITView on GitHub

Before adding a skill, hook, rule, or CLAUDE.md line, define what evidence shows it works, what shows it doesn't, and where that evidence surfaces. Override a Claude Code default only as an experiment with removal criteria. Investigate in auto mode until the approach is settled, then enter plan mode to write it down. When I ask for a plan and something is still open, tell me what you're resolving and resolve it first. Inside an isolated worktree, write files with…

  • Commits and pushes

The file

We split this CLAUDE.md into the rules it gives an agent

11 rules. About 0 are common, 5 are distinctive, and 6 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Don't join independent clauses with semicolons or em dashes.

    line 5
  2. Distinctive:

    Don't hard-wrap markdown prose you author.

    line 8
  3. Distinctive:

    Put explanation of code you're writing in a message before the edit.

    line 10
  4. Very specific:

    Don't create or extend catch-all modules like utils.

    line 15
  5. Distinctive:

    Don't number steps or phases in code ("Phase 1:", "Step 2:").

    line 17
  6. Very specific:

    Before adding a skill, hook, rule, or CLAUDE.md line, define what evidence shows it works, what shows it doesn't, and where that evidence …

    line 21
  7. Very specific:

    Prefer analyst over general-purpose for read-only spawns.

    line 26
  8. Very specific:

    When debugging Claude Code itself (harness, classifier, hooks, plugins, startup), launch the observed session with DEBUG_SDK=1 claude, …

    line 27
  9. Distinctive:

    Never git push to the default branch unless I say so.

    line 37
  10. Very specific:

    Write commit messages with one -m per paragraph, or a heredoc for complex ones.

    line 39
  11. Very specific:

    Update a checkout with git merge --ff-only <ref>.

    line 40

≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
CLAUDE.md

Claude

Style

  • Don't join independent clauses with semicolons or em dashes. End the sentence instead. A colon or other connector in their place is not a fix.
  • Wrap filenames and code identifiers with backticks in any markdown context.
  • In chat replies, write PR, issue, MR, and tracker-key (ABC-123) references as links, like [dotfiles#827](https://github.com/bendrucker/dotfiles/pull/827), because the terminal doesn't autolink them. Take the URL that gh, glab, or the tracker tool printed, or build it from the repo's remote. With no known URL, keep the bare ID.
  • Don't hard-wrap markdown prose you author. In an existing file, follow its wrapping.
  • Include a trailing newline in all new files.
  • Put explanation of code you're writing in a message before the edit.
  • Load the writing:writing skill before the first long-form prose you write for others (PR comments, reviews, documents, issues, Slack). One load covers the session.

Organization

  • Don't create or extend catch-all modules like utils. Name modules for what they hold.
  • Split code into files before splitting it across directories.
  • Don't number steps or phases in code ("Phase 1:", "Step 2:"). Use descriptive function names called in sequence.

Customizations

Before adding a skill, hook, rule, or CLAUDE.md line, define what evidence shows it works, what shows it doesn't, and where that evidence surfaces. Override a Claude Code default only as an experiment with removal criteria.

Workflow

  • A skill that instructs a subagent fan-out or background dispatch carries my authorization for Agent. Run it as written. When Agent is absent, run it inline and say so.
  • Prefer analyst over general-purpose for read-only spawns. Pass model: haiku for pure lookup.
  • When debugging Claude Code itself (harness, classifier, hooks, plugins, startup), launch the observed session with DEBUG_SDK=1 claude, which writes ~/.claude/debug/<session-id>.txt. Set it in the launch environment, since Claude Code ignores it in settings.json env.
  • Open a PR with pull-request:create, or with an empty body when it's unavailable. Open PRs ready for review. Use draft only for speculative changes.
  • Send build output to /dev/null. Store temporary files in tmp/.

Planning

Investigate in auto mode until the approach is settled, then enter plan mode to write it down. When I ask for a plan and something is still open, tell me what you're resolving and resolve it first.

Git

  • Never git push to the default branch unless I say so.
  • Name topic branches short and hyphenated.
  • Write commit messages with one -m per paragraph, or a heredoc for complex ones. Wrap bodies at ~72 columns.
  • Update a checkout with git merge --ff-only <ref>. Revert your own edits with git restore <path>. Run a tree-wide reset, checkout, or clean only when I name it.

Worktrees

Inside an isolated worktree, write files with Write or Edit and keep each Bash command a single plain command. The isolation guard refuses heredocs, $(...), loops, and a cd into the main checkout before git.

Claude Configuration

My Claude Code setup lives in bendrucker/claude. The ~/.claude symlinks point into ~/.claude-repo, a deployed clone of main, so an edit through the symlinks lands outside any branch. Settings that apply everywhere live in managed/settings.json, installed as managed settings. user/settings.json is the local machines' user file, and platforms/local/ and platforms/remote/ hold the entries a local machine or a remote session links in place of or beside user/'s. Project-scoped .claude/ directories stay with their repo.

Dotfiles

Machine setup lives in bendrucker/dotfiles. Anything the machine or shell must provide needs a merged dotfiles PR first, because the Claude repo installs nothing. That covers binaries, $PATH entries, aliases and functions, exported env vars, install steps, symlinks, launchd agents, macOS permission grants, and recurring jobs. Claude-only env vars go in settings.json instead.

Personal Details

My username is @bendrucker. Refer to actions by that user as "you."

@~/.claude/platform.md

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

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.