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…
In this repository23 other files it gives its agents.
- openhost-agent/AGENTS.mdAGENTS.md
- address-commentsSkill
- auto-qa-changesSkill
- auto-qa-iphoneSkill
- batch-claude-runnerSkill
- code-review-checklistSkill
- cut-releaseSkill
- debug-integration-testSkill
- frontend-design-tokensSkill
- manually-qa-branchSkill
- measure-react-rendersSkill
- openhost-frontend-previewSkill
- openhost-sculptorSkill
- post-pr-to-slackSkill
- profile-sculptor-backendSkill
- promote-releaseSkill
- run-integration-testSkill
- storybook-screenshotSkill
- update-help-docsSkill
- update-review-rulesSkill
- update-specsSkill
- write-integration-testSkill
- write-release-notesSkill
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
- Distinctive: line 11
When the user asks a question, answer the question directly.
- Distinctive: line 12
When the task is ambiguous, pause and ask the user how to proceed before taking action.
- Distinctive: line 13
When the user expects you to check with them before proceeding, wait for their explicit confirmation.
- Distinctive: line 17
Treat every commit message and every MR/PR title and description as permanently, world-readable.
- Distinctive: line 19
Before writing a commit message or an MR/PR description, scrub it of:
- Distinctive: line 35
Before implementing any code changes:
- Distinctive: line 39
All commands run from the repo root via just.
- Very specific: line 51
When asked to create or manage pull requests, use the gh CLI to view, create, diff, and edit them, and to post review comments.
- Very specific: line 53
If you create a new worktree, clone or copy of Sculptor, run just rebuild to install the proper dependencies.
- Distinctive: line 57
When fixing lint errors, be careful with some common gotchas:
- Very specific: line 58
Use # noqa: F811 for pytest fixture parameters that shadow imports (don't rename them)
- Very specific: line 59
Use # noqa: E731 for intentional lambda assignments (don't convert to functions)
- Very specific: line 60
Use # noqa: E402 for intentional late imports
- Very specific: line 61
Use # noqa: E712 for SQLAlchemy comparisons like column == False
- Very specific: line 65
When placing IconButton components in a Flex, use gap="2" because Radix icon buttons apply negative margins on hover to display the hover …
- Distinctive: line 72
Run the following command to generate types if they are missing, or you make updates:
- Very specific: line 79
Before running tests directly, ALWAYS check for available skills.
- Distinctive: line 83
Check the ratchets (these specific commands must be run from the root directory of the repository):
- Very specific: line 95
NEVER run destructive/irreversible git commands (like push --force, hard reset) unless explicitly requested
- Very specific: line 96
NEVER skip hooks (--no-verify, --no-gpg-sign) unless explicitly requested
- Distinctive: line 97
Write clear, descriptive commit messages that explain the "why" not just the "what"
- Distinctive: line 98
Keep commits atomic - one logical change per commit
- Distinctive: line 99
Run tests as part of committing, not preemptively during iteration
≈ “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.
Files
<!--
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:
- Read
docs/development/style_guide.md - 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-unitWorking 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: F811for pytest fixture parameters that shadow imports (don't rename them) - Use
# noqa: E731for intentional lambda assignments (don't convert to functions) - Use
# noqa: E402for intentional late imports - Use
# noqa: E712for SQLAlchemy comparisons likecolumn == False
Frontend UI guidelines
- When placing
IconButtoncomponents in aFlex, usegap="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.mdand copy fromsrc/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-apiTesting
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 ratchetsFigure out which ratchets are broken:
just ratchets-brokenGit 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
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
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.

