BluetOpen source

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)

  • 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.

    CLAUDE.md

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
Your agents can be told this before they touch the code. Get it for your repository: npx bluet-mcp init. What Bluet is.
twentyhq/twenty: what agents should know before contributing · Bluet