**224 lines → 49**, restructured along the [Claude 5 context-engineering guidance](https://claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models): keep the file lightweight, spend it on what a session won't get right on its own. Two load-bearing sections: ## House rules — standing conventions that contradict model defaults Models write JSDoc, interfaces, enums, and hand-rolled guards unprompted; these are the rules that push back, one line each: short-form `//` comments only (WHY, never WHAT), types over interfaces, string literals over enums, no `any`, named exports only, functional components, event handlers over `useEffect`, no abbreviations, `twenty-shared` guards before hand-rolled ones, Lingui/Linaria, test behavior not implementation. All carried over from the old file — cut in the first revision of this PR, restored on review: "match surrounding code" is not sufficient for counter-default preferences, especially in new files. ## Gotchas — what a session cannot discover from the code - `twenty-shared/dist` is per-branch state → rebuild with `--skip-nx-cache` before trusting a failure. - Nx cache can serve a stale typecheck pass → verify with `tsgo` directly. - **Never commit lingui-regenerated catalogs unless translations are the task** — `extract`/`compile` churn thousands of `.po`/`locales/generated` lines as a side effect of touching any `msg` string. - Commit-attribution CI check (`@anthropic.com` trailers rejected). - Upgrade-command rules incl. the silent-skip: a timestamp sorting before an already-applied command never runs. ## What was cut Tech-stack prose, the package tree, command sprawl, architecture descriptions — discoverable in seconds. The dead Context7 instruction. The style sections' *long forms* — each survives as one line above. ## Open question: `.cursor/rules/` The team no longer uses Cursor, so this PR removes CLAUDE.md's *dependence* on those files (everything load-bearing is now inline) and keeps a single neutral mention. What to do with the 16 `.mdc` files themselves — move to `docs/guidelines/`, keep for Cursor-using community contributors, or delete — is left as a separate decision. ## AGENTS.md Added as a **symlink** to CLAUDE.md so Codex/OpenCode/other agents read the same instructions with no duplicate to drift. The repo's sub-app packages currently ship byte-identical CLAUDE.md/AGENTS.md *copies* — exactly the drift this avoids. Those pairs are left as real files because they feed npm-published scaffolds (`create-twenty-app`) where symlinks don't survive every checkout. Caveat: on a Windows checkout without `core.symlinks`, AGENTS.md materializes as a one-line text file containing `CLAUDE.md` — degraded but self-describing.
The #1 Open-Source CRM
Website ·
Documentation ·
Roadmap ·
Discord ·
Figma
Why Twenty
Twenty gives technical teams the building blocks for a custom CRM that meets complex business needs and quickly adapts as the business evolves. Twenty is the CRM you build, ship, and version like the rest of your stack.
Learn more about why we built Twenty
Installation
Cloud
The fastest way to get started. Sign up at twenty.com and spin up a workspace in under a minute, with no infrastructure to manage and always up to date.
Build an app
Scaffold a new app with the Twenty CLI:
npx create-twenty-app my-app
Define objects, fields, and views as code:
import { defineObject, FieldType } from 'twenty-sdk/define';
export default defineObject({
nameSingular: 'deal',
namePlural: 'deals',
labelSingular: 'Deal',
labelPlural: 'Deals',
fields: [
{ name: 'name', label: 'Name', type: FieldType.TEXT },
{ name: 'amount', label: 'Amount', type: FieldType.CURRENCY },
{ name: 'closeDate', label: 'Close Date', type: FieldType.DATE_TIME },
],
});
Then ship it to your workspace:
npx twenty app:publish --private
See the app development guide for objects, views, agents, and logic functions.
Self-hosting
Run Twenty on your own infrastructure with Docker Compose, or contribute locally via the local setup guide.
Everything you need
Twenty gives you the building blocks of a modern CRM (objects, views, workflows, and agents) and lets you extend them as code. Here's a tour of what's in the box.
Want to go deeper? Read the User Guide for product walkthroughs, or the
Documentation for developer reference.
|
|
|
|
|
|
Stack
TypeScript
Nx
NestJS, with BullMQ,
PostgreSQL,
Redis
React, with Jotai, Linaria and Lingui
Thanks
Thanks to these amazing services that we use and recommend for code review (Greptile), catching bugs (Sentry) and translating (Crowdin).
Join the Community
Star the repo ·
Discord ·
Feature requests ·
Releases ·
X ·
LinkedIn ·
Crowdin ·
Contribute





