agentleFS
imbue-aiimbue-ai/sculptor/CLAUDE.md

sculptor

CLAUDE.md246 starsChanged 5 months agoMITView on GitHub

Treat every commit message and every MR/PR title and description as permanently, world-readable. This is a public repo, so write them for an outside reader who has no access to any private context, and never include anything private. Before writing a commit message or an MR/PR description, scrub it of: State the why of a change in terms that are both useful and safe to publish. When the real motivation is sensitive, summarize it at an altitude that is safe…

The file

Show its rules and text

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

23 rules. About 0 are common, 13 are distinctive, and 10 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈13

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 10

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Distinctive:

    When the user asks a question, answer the question directly.

    line 11
  2. Distinctive:

    When the task is ambiguous, pause and ask the user how to proceed before taking action.

    line 12
  3. Distinctive:

    When the user expects you to check with them before proceeding, wait for their explicit confirmation.

    line 13
  4. Distinctive:

    Treat every commit message and every MR/PR title and description as permanently, world-readable.

    line 17
  5. Distinctive:

    Before writing a commit message or an MR/PR description, scrub it of:

    line 19
  6. Distinctive:

    Before implementing any code changes:

    line 35
  7. Distinctive:

    All commands run from the repo root via just.

    line 39
  8. Very specific:

    When asked to create or manage pull requests, use the gh CLI to view, create, diff, and edit them, and to post review comments.

    line 51
  9. Very specific:

    If you create a new worktree, clone or copy of Sculptor, run just rebuild to install the proper dependencies.

    line 53
  10. Distinctive:

    When fixing lint errors, be careful with some common gotchas:

    line 57
  11. Very specific:

    Use # noqa: F811 for pytest fixture parameters that shadow imports (don't rename them)

    line 58
  12. Very specific:

    Use # noqa: E731 for intentional lambda assignments (don't convert to functions)

    line 59
  13. Very specific:

    Use # noqa: E402 for intentional late imports

    line 60
  14. Very specific:

    Use # noqa: E712 for SQLAlchemy comparisons like column == False

    line 61
  15. Very specific:

    When placing IconButton components in a Flex, use gap="2" because Radix icon buttons apply negative margins on hover to display the hover …

    line 65
  16. Distinctive:

    Run the following command to generate types if they are missing, or you make updates:

    line 72
  17. Very specific:

    Before running tests directly, ALWAYS check for available skills.

    line 79
  18. Distinctive:

    Check the ratchets (these specific commands must be run from the root directory of the repository):

    line 83
  19. Very specific:

    NEVER run destructive/irreversible git commands (like push --force, hard reset) unless explicitly requested

    line 95
  20. Very specific:

    NEVER skip hooks (--no-verify, --no-gpg-sign) unless explicitly requested

    line 96
  21. Distinctive:

    Write clear, descriptive commit messages that explain the "why" not just the "what"

    line 97
  22. Distinctive:

    Keep commits atomic - one logical change per commit

    line 98
  23. Distinctive:

    Run tests as part of committing, not preemptively during iteration

    line 99

≈ “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
<!-- This file is also available as AGENTS.md, and the .claude/ directory as .agents/, via symlinks (AGENTS.md -> CLAUDE.md, .agents -> .claude). The CLAUDE.md file and .claude/ directory are the real, canonical paths; the AGENTS-named entries are aliases so agent tools that follow the AGENTS.md convention read the same content. Edit CLAUDE.md and .claude/, not the aliases. -->

Interaction Guidelines

  • When the user asks a question, answer the question directly. Do not treat questions as requests for code changes or other work.
  • When the task is ambiguous, pause and ask the user how to proceed before taking action.
  • When the user expects you to check with them before proceeding, wait for their explicit confirmation. Do not continue with the task until they confirm.

Public Visibility: Commit Messages and PR Descriptions

Treat every commit message and every MR/PR title and description as permanently, world-readable. This is a public repo, so write them for an outside reader who has no access to any private context, and never include anything private.

Before writing a commit message or an MR/PR description, scrub it of:

  • PII — real people's full names, personal email addresses, individual usernames, and local filesystem paths that embed a username (e.g. /Users/jdoe/...). Use generic placeholders (dev, <user>, /Users/<user>/...) or refer to roles ("the reviewer", "the team") instead.
  • Internal-only references — internal hostnames and URLs, internal service/tool/infra names, internal dashboards, and verbatim private discussion from tickets or chat. A bare Linear ticket ID (e.g. SCU-1447) as a reference is fine; pasting the private contents of that ticket is not.
  • Customer information — customer names, customer-specific data, deployment details, or anything covered by an NDA.
  • Security-sensitive detail — secrets, tokens, or credentials (never, anywhere), and exploit steps or descriptions of internal security mechanisms written in a way that would help an attacker. Describe security fixes at a safe altitude (e.g. "harden auth token validation") rather than as a reproduction recipe.
  • Candid internal commentary — business strategy, unreleased plans, speculation about competitors, or remarks about individuals.

State the why of a change in terms that are both useful and safe to publish. When the real motivation is sensitive, summarize it at an altitude that is safe for a public reader rather than omitting context entirely.

This also applies to anything a skill or workflow generates on your behalf (PR bodies, squash-commit messages). The /code-review-checklist skill checks for these same issues.

CRITICAL: Code Quality and Style

IT IS CRITICAL TO FOLLOW ALL INSTRUCTIONS IN THIS FILE AND THE STYLE GUIDE DURING YOUR WORK.

Before implementing any code changes:

  1. Read docs/development/style_guide.md
  2. Prioritize readability and simplicity - well-structured, maintainable code is the goal

All commands run from the repo root via just. See the justfile at the root of the repo.

When committing, run the following commands. Do NOT run them preemptively while iterating on changes — only when you are ready to commit:

just format
just check
just test-unit

Working with the repo and git

When asked to create or manage pull requests, use the gh CLI to view, create, diff, and edit them, and to post review comments.

If you create a new worktree, clone or copy of Sculptor, run just rebuild to install the proper dependencies.

Formatting, Linting, and Type Checking

When fixing lint errors, be careful with some common gotchas:

  • Use # noqa: F811 for pytest fixture parameters that shadow imports (don't rename them)
  • Use # noqa: E731 for intentional lambda assignments (don't convert to functions)
  • Use # noqa: E402 for intentional late imports
  • Use # noqa: E712 for SQLAlchemy comparisons like column == False

Frontend UI guidelines

  • When placing IconButton components in a Flex, use gap="2" because Radix icon buttons apply negative margins on hover to display the hover background.
  • Frontend state follows the state ownership rule — one written store per server fact; optimistic writes must have a real failure path (the WS only heals successful mutations). Before writing state code, read "State ownership" in docs/development/style/frontend.md and copy from src/common/state/mutations/, not from older call sites.

Frontend type generation

TypeScript types are generated from backend models. When adding new ElementIDs for tests you will need to regenerate types.

Run the following command to generate types if they are missing, or you make updates:

just generate-api

Testing

Before running tests directly, ALWAYS check for available skills. See the justfile to see the commands we use to run tests.

Ratchets

Check the ratchets (these specific commands must be run from the root directory of the repository):

just ratchets

Figure out which ratchets are broken:

just ratchets-broken

Git Safety Protocol

  • NEVER run destructive/irreversible git commands (like push --force, hard reset) unless explicitly requested
  • NEVER skip hooks (--no-verify, --no-gpg-sign) unless explicitly requested
  • Write clear, descriptive commit messages that explain the "why" not just the "what"
  • Keep commits atomic - one logical change per commit
  • Run tests as part of committing, not preemptively during iteration

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.