What agents should know before contributing
twentyhq/twenty
The open alternative to Salesforce, designed for AI.
Read by Bluet from 2 files written for agents and 300 merged pull requests on 2026-09-25. Not reviewed by the maintainers.
Rules its files tell agents (4)
- CLAUDE.md
mustImport icons from twenty-ui/icon, never directly from @tabler/icons-react; action and status concepts should u…
Import icons from twenty-ui/icon, never directly from @tabler/icons-react; action and status concepts should use their action or status icons.
- CLAUDE.md
mustInclude up and down; never rewrite committed command logic.
Upgrade commands (packages/twenty-server/src/database/commands/upgrade-version-command/): add or edit files only under the current TWENTY_CURRENT_VERSION directory, with a real epoch-ms timestamp strictly greater than every existing one in that directory — CI enforces both, and the upgrade cursor silently skips a command that sorts before an already-applied one. Include up and down; never rewrite committed command logic. See packages/twenty-server/docs/UPGRADE_COMMANDS.md.
- CLAUDE.md
mustShort-form // comments, never JSDoc blocks; comment only WHY (a constraint the code cannot express, still true…
Short-form // comments, never JSDoc blocks; comment only WHY (a constraint the code cannot express, still true for a reader who never saw your change), never WHAT.
- CLAUDE.md
shouldDo not commit translation catalogs unless translations are the task.
Do not commit translation catalogs unless translations are the task. lingui extract/compile regenerate packages/twenty-server/src/engine/core-modules/i18n/locales/*.po and locales/generated/* with thousands of lines of churn as a side effect of touching any msg string. The i18n pipeline maintains them; leave them out of your commit.
Decisions its pull requests settled (40)
- #26068core-id native workflow API — reads and writes
- #26070Make record sharing an enterprise feature
- #26076never freeze a null core workflow link on version mirror
- #26090unblock the 2-41 See Active Version removal on workspaces that still have the item
- #26106Send Slack files to the assistant agent as attachments
- #26110batch API writes so a mailbox sync stays inside the rate limit
- #26127refuse API access for suspended workspaces
- #26147cap workspace records with a stock limit
- #26156normalize tiptap rich text written by workflow record steps
- #26158make core workflow and workflow version syncable so definition changes broadcast
- #26177degrade unsupported runAgent attachments instead of failing the run
- #26179AI chat: tool calls render as widgets named by the tool
- #26182Only write audit log events for workspaces entitled to audit logs
- #26214Bind the application claim OAuth state to the browser that started it
- #26225add evaluation models and a Classify workflow node
- #26243private workflows on the core schema
- #26271keep runs alive for if/else and skip edges across the continuation boundary
- #26277Let apps report their own configuration state with defineHealthCheck
- #26283gate workflow node runs and logic function executions
- #26291[2/5 workflows] Improve workflow classifier configuration
- #26301dispatch an iterator loop body listed in the iterator nextStepIds
- #26302Let apps declare several settings menu items with defineSettingsMenuItem
- #26323Hide workflows from side panel search and favorites when the core index flag is on
- #26348unify record access and enable multiplayer chats
- #26355stop Bedrock cache points from stacking across AI SDK steps
- #26360land on the kanban for opportunities and a list for campaigns
- #26372perf(clickhouse) - partition objectEvent by month in ClickHouse
- #26378cap email sends with a quota limit
- #26406merge every readable field regardless of the mutation selection
- #26417honour silent channel rules outside the assistant path
- #26418Pace call recorder recovery jobs to stay under Recall's rate limit
- #26430Render app settings menu items as tabs
- #26431serialize stripe subscription webhook per customer
- #26438resolve server routes by primary key, fall back to the legacy identifier
- #26449Reload the enterprise validity token in the server process
- #26459Serve backend HTML with startup config and workspace iframe settings
- #26461consume quota on app charges
- #26471show remote edits on the open workflow canvas
- #26474fall back to the last published version before the newest one
- #26476let only an operator replace an instance default