Files
upstream-mirror e7da97194a
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00
..

Twenty Agent Skills

Official Agent Skills for building Twenty apps, shared by the skills CLI and the Codex plugin named twenty.

This package owns the five canonical skills, shared references, and Codex metadata. One build produces a distribution with self-contained skill directories for both installation methods. Generated files live in ignored dist/ locally and on the agent-skills publishing branch, never in the source tree on main.

Installation

Agent Skills

Install into Claude Code, Codex, Cursor, Pi, or any other harness supported by the skills CLI:

# List the available skills
npx skills add https://github.com/twentyhq/twenty/tree/agent-skills --list

# Install one skill
npx skills add https://github.com/twentyhq/twenty/tree/agent-skills --skill create-app
npx skills add https://github.com/twentyhq/twenty/tree/agent-skills --skill develop-app

# Install everything
npx skills add https://github.com/twentyhq/twenty/tree/agent-skills --skill '*'

The CLI prompts for target agents, or accepts --agent (for example --agent claude-code, --agent codex, or --agent '*'). Each installed skill includes the references it needs.

First publish: the agent-skills branch is created by the first successful publish from main. Before that workflow has run, use the local build below. The source package on main is not directly installable with the skills CLI because its references are shared across skills.

Use the branch URL above to select the app-development collection. The bare twentyhq/twenty repository also contains contributor and app-specific skills; see the repository's SKILLS.md for those audiences.

Codex Plugin

Search for “Twenty” in the Codex plugin directory and install. The plugin keeps its public identifier, twenty, and consumes the same built distribution as the skills CLI. It also includes the public Twenty documentation MCP server and a workspace MCP setup helper.

For a checkout or an unpublished change, use the local marketplace instructions below.

Skills

Skill Use it for
create-app Scaffold a new Twenty app with create-twenty-app.
develop-app Add or modify objects, fields, logic functions, layouts, front components, workflows.
manage-app Manage remotes, sync, build, deploy, logs, troubleshooting, CI/CD.
publish-app Prepare README, marketplace metadata, logos, screenshots, public assets.
use-twenty-mcp Connect to a workspace over MCP and present records as readable Markdown.

The four app-development skills work without MCP setup. Self-hosted instances, custom HTTPS domains, and localhost HTTP URLs are supported. Workspace URLs and credentials stay user-local.

Cross-skill operating rules live in references/concepts/operating-rules.md. AGENTS.md adds Codex-specific routing and wrapper guidance.

MCP Setup

The Codex plugin bundles the public twenty-docs server for searching official Twenty documentation. Workspace data access requires each user's own MCP endpoint in their private client configuration.

From a repository checkout:

bash packages/twenty-agent-skills/scripts/setup-mcp.sh myworkspace.twenty.com

The helper accepts Twenty subdomains, custom domains, and localhost. It normalizes the URL to an /mcp endpoint and names the server after its host, such as twenty-myworkspace. Codex may open OAuth automatically; if it does not, run codex mcp login <server-name>. Use --force-login only for terminal-only setup.

Equivalent manual setup:

codex mcp add twenty-myworkspace --url https://myworkspace.twenty.com/mcp
codex mcp login twenty-myworkspace

The same helper is included at scripts/setup-mcp.sh in the built distribution. For other clients, see references/use-twenty-mcp/setup.md.

Workspace MCP URLs and ChatGPT app declarations are user-local. This distribution ships no .app.json; a workspace MCP URL alone is not a ChatGPT connector ID.

Local Development

Run from the repository root:

# Validate canonical skills and Codex metadata
npx nx run twenty-agent-skills:validate

# Build the shared distribution into ignored dist/
npx nx run twenty-agent-skills:build

# Install from that distribution
npx skills add ./packages/twenty-agent-skills/dist --skill create-app

# Run build and validation tests
npx nx run twenty-agent-skills:test

For local Codex plugin installation, build first, then copy the marketplace template (or merge its entry into an existing config):

mkdir -p .agents/plugins
cp packages/twenty-agent-skills/templates/marketplace.example.json .agents/plugins/marketplace.json

The template points at ./packages/twenty-agent-skills/dist. Enable it through the Codex plugin manager. Adjust the path if the marketplace config is outside this checkout.

Edit skills/ and references/ directly; they are the canonical source. Keep content harness-neutral and Codex-specific settings in .codex-plugin/, .mcp.json, agents/openai.yaml, and scripts/setup-mcp.sh. Rebuild after edits; do not commit dist/.

The publish workflow builds and validates main, then publishes dist/ at the root of the agent-skills branch. Pull requests validate the distribution without publishing it. See CONTRIBUTING.md for the full checks and release process, CHECKLIST.md for Codex checks, and CHANGELOG.md for changes.

Installation is checked in CI. The workflow against a running self-hosted Twenty instance is checked separately; see SMOKE-TEST.md for the procedure and its recorded run.