Paradev
AGENTS.md16k starsChanged 10 days agoMITView on GitHub
Paradev is an agent-first development platform, with an Electron desktop IDE, Next.js web apps, and an Expo mobile app as the main customer-facing surfaces. It's a Turborepo monorepo, deployed apps are in apps/ and supporting packages are in packages/, and we use tRPC for the api. You're working inside a Paradev workspace, an isolated checkout of this repo — a git worktree on a machine someone owns, a plain clone at /workspace in a cloud workspace. "Workspace" in a user…
- Reads credentials
1 other project uses a version of this; 1 new project in the last 4 weeks, against 0 the 4 before.
Adopted by
Surging: 1 new project took it in the last 4 weeks, none the 4 weeks before.thin data
Most recently taken up by
- superset-sh/supersetword for word, first seen Nov 2, 2026
Who's talking about ParadevAI/Paradev
- Alex Hitt“Paradev GitHub Explained: Parallel AI Workspaces, Worktrees, Ports, and Security Tradeoffs”YouTube · Oct 29, 2026 · 432 views
- benjamincanac/whichcodingtools“[Outdated] superset was renamed to Paradev”GitHub · Nov 4, 2026 · 1 reactions
- @github-trending-js.bsky.social“📦 ParadevAI / Paradev ⭐ 15,665 (+53) 🗒 TypeScript Paradev (formerly Superset) is an agentic IDE to …”Bluesky · Oct 28, 2026 · 1 likes
- sudosubin/agents.nix“claude-code-marketplaces.github.paradevai.paradev: 0-unstable-2026-11-10 → 0-unstable-2026-11-11”GitHub · Nov 11, 2026
- sudosubin/agents.nix“agent-skills.github.paradevai.paradev: bdd0a5b → 45118b8”GitHub · Nov 10, 2026
The biggest 5 of 64 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 64
Talked about on GitHub, the web, Bluesky and YouTube (64 times).
On GitHub · 50
- Nov 4, 2026[Outdated] superset was renamed to Paradev — benjamincanac/whichcodingtools1 reaction · 1 comment
- Nov 11, 2026claude-code-marketplaces.github.paradevai.paradev: 0-unstable-2026-11-10 → 0-unstable-2026-11-11 — sudosubin/agents.nix0 reactions
- Nov 10, 2026agent-skills.github.paradevai.paradev: bdd0a5b → 45118b8 — sudosubin/agents.nix0 reactions
- Nov 10, 2026claude-code-marketplaces.github.paradevai.paradev: d456e51 → d11a91f — sudosubin/agents.nix0 reactions
- Nov 10, 2026claude-code-marketplaces.github.paradevai.paradev: bdd0a5b → d456e51 — sudosubin/agents.nix0 reactions
45 more on GitHub
- Nov 10, 2026claude-code-marketplaces.github.paradevai.paradev: 0-unstable-2026-11-09 → 0-unstable-2026-11-10 — sudosubin/agents.nix0 reactions
- Nov 10, 2026agent-skills.github.paradevai.paradev: 0-unstable-2026-11-09 → 0-unstable-2026-11-10 — sudosubin/agents.nix0 reactions
- Nov 9, 2026claude-code-marketplaces.github.paradevai.paradev: a865880 → cedc22d — sudosubin/agents.nix0 reactions
- Nov 9, 2026agent-skills.github.paradevai.paradev: b5b6302 → 88b6412 — sudosubin/agents.nix0 reactions
- Nov 9, 2026claude-code-marketplaces.github.paradevai.paradev: e847be5 → a865880 — sudosubin/agents.nix0 reactions
- Nov 9, 2026agent-plugins.github.paradevai.paradev: 0-unstable-2026-11-03 → 0-unstable-2026-11-09 — sudosubin/agents.nix0 reactions
- Nov 9, 2026claude-code-plugins.github.paradevai.paradev: 0-unstable-2026-11-03 → 0-unstable-2026-11-09 — sudosubin/agents.nix0 reactions
- Nov 9, 2026agent-skills.github.paradevai.paradev: 0-unstable-2026-11-08 → 0-unstable-2026-11-09 — sudosubin/agents.nix0 reactions
- Nov 9, 2026claude-code-marketplaces.github.paradevai.paradev: 0-unstable-2026-11-08 → 0-unstable-2026-11-09 — sudosubin/agents.nix0 reactions
- Nov 8, 2026agent-skills.github.paradevai.paradev: b77bc04 → 041c296 — sudosubin/agents.nix0 reactions
- Nov 8, 2026claude-code-marketplaces.github.paradevai.paradev: b77bc04 → 106428f — sudosubin/agents.nix0 reactions
- Nov 8, 2026agent-skills.github.paradevai.paradev: 5aa1cf3 → b77bc04 — sudosubin/agents.nix0 reactions
- Nov 8, 2026claude-code-marketplaces.github.paradevai.paradev: 61645f4 → b77bc04 — sudosubin/agents.nix0 reactions
- Nov 8, 2026claude-code-marketplaces.github.paradevai.paradev: 0-unstable-2026-11-07 → 0-unstable-2026-11-08 — sudosubin/agents.nix0 reactions
- Nov 8, 2026agent-skills.github.paradevai.paradev: 0-unstable-2026-11-07 → 0-unstable-2026-11-08 — sudosubin/agents.nix0 reactions
- Nov 7, 2026agent-skills.github.paradevai.paradev: 0-unstable-2026-11-06 → 0-unstable-2026-11-07 — sudosubin/agents.nix0 reactions
- Nov 7, 2026claude-code-marketplaces.github.paradevai.paradev: 0-unstable-2026-11-06 → 0-unstable-2026-11-07 — sudosubin/agents.nix0 reactions
- Nov 7, 2026🔍 CLI Discovery: 2026-11-07 — 7 candidates found — RealZST/harnesskit-resources0 reactions
- Nov 7, 2026Import sessions and worktrees from Conductor, Claude Code and Codex (Paradev, Ace) — alexec/Agents0 reactions · 5 comments
- Nov 7, 2026claude-code-marketplaces.github.paradevai.paradev: 9c6f098 → 19db630 — sudosubin/agents.nix0 reactions
- Nov 6, 2026agent-skills.github.paradevai.paradev: 9c6f098 → 19db630 — sudosubin/agents.nix0 reactions
- Nov 6, 2026agent-skills.github.paradevai.paradev: 53f1ac1 → 9c6f098 — sudosubin/agents.nix0 reactions
- Nov 6, 2026claude-code-marketplaces.github.paradevai.paradev: 08cb35c → 9c6f098 — sudosubin/agents.nix0 reactions
- Nov 6, 2026agent-skills.github.paradevai.paradev: 0-unstable-2026-11-05 → 0-unstable-2026-11-06 — sudosubin/agents.nix0 reactions
- Nov 6, 2026claude-code-marketplaces.github.paradevai.paradev: 0-unstable-2026-11-05 → 0-unstable-2026-11-06 — sudosubin/agents.nix0 reactions
- Nov 6, 2026agent-skills.github.paradevai.paradev: bcc2455 → 533cf1c — sudosubin/agents.nix0 reactions
- Nov 5, 2026agent-skills.github.paradevai.paradev: 3b5472d → bcc2455 — sudosubin/agents.nix0 reactions
- Nov 5, 2026Update Superset as an open-source alternative to Conductor: renamed to Paradev, now MIT — junaid33/opensource.builders0 reactions
- Nov 5, 2026claude-code-marketplaces.github.paradevai.paradev: 0cbf9fb → bcc2455 — sudosubin/agents.nix0 reactions
- Nov 5, 2026agent-skills.github.paradevai.paradev: 0-unstable-2026-11-04 → 0-unstable-2026-11-05 — sudosubin/agents.nix0 reactions
- Nov 5, 2026claude-code-marketplaces.github.paradevai.paradev: 0-unstable-2026-11-04 → 0-unstable-2026-11-05 — sudosubin/agents.nix0 reactions
- Nov 4, 2026agent-skills.github.paradevai.paradev: 4cc2e79 → 45e426e — sudosubin/agents.nix0 reactions
- Nov 4, 2026data(superset): rename to Paradev, MIT license, new links — benjamincanac/whichcodingtools0 reactions · 1 comment
- Nov 4, 2026Rename Superset to Paradev — filipecalegario/awesome-vibe-coding0 reactions
- Nov 4, 2026Resource suggestion: Paradev — RoggeOhta/awesome-codex-cli0 reactions
- Nov 4, 2026claude-code-marketplaces.github.paradevai.paradev: 4cccb5b → 44d0ad4 — sudosubin/agents.nix0 reactions
- Nov 4, 2026Undo the files an agent changed in a turn — alexec/Agents0 reactions · 1 comment
- Nov 4, 2026agent-skills.github.paradevai.paradev: 0-unstable-2026-11-03 → 0-unstable-2026-11-04 — sudosubin/agents.nix0 reactions
- Nov 4, 2026claude-code-marketplaces.github.paradevai.paradev: 0-unstable-2026-11-03 → 0-unstable-2026-11-04 — sudosubin/agents.nix0 reactions
- Nov 4, 2026agent-skills.github.paradevai.paradev: 142df44 → 615ea54 — sudosubin/agents.nix0 reactions
- Nov 3, 2026claude-code-marketplaces.github.paradevai.paradev: 0745d4b → 2e42c29 — sudosubin/agents.nix0 reactions
- Nov 3, 2026agent-plugins.github.paradevai.paradev: 0-unstable-2026-11-02 → 0-unstable-2026-11-03 — sudosubin/agents.nix0 reactions
- Nov 3, 2026claude-code-plugins.github.paradevai.paradev: 0-unstable-2026-11-02 → 0-unstable-2026-11-03 — sudosubin/agents.nix0 reactions
- Nov 3, 2026agent-skills.github.paradevai.paradev: 0-unstable-2026-11-02 → 0-unstable-2026-11-03 — sudosubin/agents.nix0 reactions
- Nov 3, 2026claude-code-marketplaces.github.paradevai.paradev: 0-unstable-2026-11-02 → 0-unstable-2026-11-03 — sudosubin/agents.nix0 reactions
On the web · 11
- Nov 4, 2026Paradev: Run Armies of Coding Agents Side by Side — dev.to
- Nov 2, 2026Paradev's Workspace Wants to Run an Army of Coding Agents in Parallel — startuply.vc
- Oct 27, 2026The next developer tool fight isn't about which agent writes the best code. It's about who helps you manage ten of them at once. | A.X.Praveen Kumar — linkedin.com
- Oct 26, 2026Excited to announce Paradev (formerly Superset) raise a $11.5m seed round led by Union Square Ventures, with participation from Y Combinator, BoxGroup, Orange Collective, Paul Graham and many more amazing funds and … | Avi Peltz — linkedin.com
- Oct 26, 2026For my personal projects, I used to use iTerm with a bunch of split panes, but after switching to Superset (now Paradev) I immediately noticed a significant QOL improvement! If ur looking … | Brian Wang — linkedin.com
6 more on the web
- Oct 26, 2026Meet Paradev (formerly Superset)! We’re thrilled to back them as part of their $11.5M seed round led by Union Square Ventures 🚀 | commit — linkedin.com
- Oct 26, 2026Paradev is building the IDE for running coding agents. | Fredrik Björk — linkedin.com
- Oct 26, 2026This time last year Paradev (formerly Superset) didn't even exist. Today, we're used by 1 in 8 Fortune 500 companies. Over 100,000 developers from 180+ countries. | Kiet Ho — linkedin.com
- Oct 26, 2026Paradev introduces a unified workspace designed to run Claude Code, Codex, OpenCode, and other coding agents simultaneously without disrupting existing workflows. | Kirill Pokidov — linkedin.com
- Oct 26, 2026Superset is now Paradev, and we raised an $11.5M seed led by Union Square Ventures, alongside Y Combinator, BoxGroup, Orange Collective and many amazing funds and angels. | Paradev (formerly Superset) — linkedin.com
- Oct 26, 2026Elite developers use Paradev (formerly Superset) (paradev.com) - and today they announced a $11.5m funding round led by Union Square Ventures! | Dan Von Kohorn — linkedin.com
On Bluesky · 2
- Oct 28, 2026📦 ParadevAI / Paradev ⭐ 15,665 (+53) 🗒 TypeScript Paradev (formerly Superset) is an agentic IDE to orchestrate 100+ coding agents in… — @github-trending-js.bsky.social1 likes and repost
- Nov 7, 2026📦 ParadevAI / Paradev ⭐ 16,014 (+62) 🗒 TypeScript Paradev is an open-source Codex App and Conductor alternative. Orchestrate an army… — @github-trending-js.bsky.social0 likes and reposts · 1 reply
On YouTube · 1
- Oct 29, 2026Paradev GitHub Explained: Parallel AI Workspaces, Worktrees, Ports, and Security Tradeoffs — Alex Hitt432 views
Other versions1 project uses a version of this.
Word for word · 1
- superset-sh/superset★ 16k100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,774 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository14 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- cdp-verificationSkill
- db-migrationsSkill
- decideSkill
- dev-doctorSkill
- incident-triageSkill
- mobile-demo-filmSkill
- mobile-demo-recordSkill
- mobile-eas-devSkill
- mobile-sim-verificationSkill
- redesignSkill
- superset-settingsSkill
- ticket-formatSkill
- trpc-compatSkill
The file
We split this AGENTS.md into the rules it gives an agent
11 rules. About 0 are common, 9 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 11
All projects in this repo should be structured like this:
- Very specific: line 75
Co-locate by usage: If used once, nest under parent's components/.
- Distinctive: line 76
One component per file: No multi-component files
- Very specific: line 117
When work wants a fresh isolated environment, a parallel agent, or a long-running job, reach for the superset CLI instead of hand-rolling …
- Distinctive: line 210
Never comment unless the thing can never be self-describing in the code.
- Distinctive: line 263
Ask for clarification when a request lacks enough context to make a correct change.
- Distinctive: line 267
Only post replies to reviewers when the user explicitly authorizes it.
- Distinctive: line 268
Never claim that checks passed or behavior was verified unless it actually was.
- Distinctive: line 272
Keep code comments concise (usually 1-2 lines)
- Distinctive: line 273
Avoid redundant or excessive inline commentary
- Distinctive: line 274
Use ASD-STE100 Simplified Technical English, simple wordings
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.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
Paradev Monorepo
Paradev is an agent-first development platform, with an Electron desktop IDE, Next.js web apps, and an Expo mobile app as the main customer-facing surfaces. It's a Turborepo monorepo, deployed apps are in apps/ and supporting packages are in packages/, and we use tRPC for the api.
You're working inside a Paradev workspace, an isolated checkout of this repo — a git worktree on a
machine someone owns, a plain clone at /workspace in a cloud workspace. "Workspace" in a user
message means that, not an editor workspace.
Project Structure
All projects in this repo should be structured like this:
app/
├── page.tsx
├── dashboard/
│ ├── page.tsx
│ ├── components/
│ │ └── MetricsChart/
│ │ ├── MetricsChart.tsx
│ │ ├── MetricsChart.test.tsx # Tests co-located
│ │ ├── index.ts
│ │ └── constants.ts
│ ├── hooks/ # Hooks used only in dashboard
│ │ └── useMetrics/
│ │ ├── useMetrics.ts
│ │ ├── useMetrics.test.ts
│ │ └── index.ts
│ ├── utils/ # Utils used only in dashboard
│ │ └── formatData/
│ │ ├── formatData.ts
│ │ ├── formatData.test.ts
│ │ └── index.ts
│ ├── stores/ # Stores used only in dashboard
│ │ └── dashboardStore/
│ │ ├── dashboardStore.ts
│ │ └── index.ts
│ └── providers/ # Providers for dashboard context
│ └── DashboardProvider/
│ ├── DashboardProvider.tsx
│ └── index.ts
└── components/
├── Sidebar/
│ ├── Sidebar.tsx
│ ├── Sidebar.test.tsx # Tests co-located
│ ├── index.ts
│ ├── components/ # Used 2+ times IN Sidebar
│ │ └── SidebarButton/ # Shared by SidebarNav + SidebarFooter
│ │ ├── SidebarButton.tsx
│ │ ├── SidebarButton.test.tsx
│ │ └── index.ts
│ ├── SidebarNav/
│ │ ├── SidebarNav.tsx
│ │ └── index.ts
│ └── SidebarFooter/
│ ├── SidebarFooter.tsx
│ └── index.ts
└── HeroSection/
├── HeroSection.tsx
├── HeroSection.test.tsx # Tests co-located
├── index.ts
└── components/ # Used ONLY by HeroSection
└── HeroCanvas/
├── HeroCanvas.tsx
├── HeroCanvas.test.tsx
├── HeroCanvas.stories.tsx
├── index.ts
└── config.ts
components/ # Used in 2+ pages (last resort)
└── Header/- One folder per component:
ComponentName/ComponentName.tsx+index.tsfor barrel export - Co-locate by usage: If used once, nest under parent's
components/. If used 2+ times, promote to highest shared parent'scomponents/(orcomponents/as last resort) - One component per file: No multi-component files
- Co-locate dependencies: Utils, hooks, constants, config, tests, stories live next to the file using them
Exception: shadcn/ui Components
The src/components/ui/ and src/components/ai-elements directories contain shadcn/ui components. These use kebab-case single files (e.g., button.tsx, base-node.tsx) instead of the folder structure above. This is intentional—shadcn CLI expects this format for updates via bunx shadcn@latest add.
Database
Drizzle ORM, schema in packages/db/src/. Follow .agents/skills/db-migrations/SKILL.md to generate
migrations and to clear its production safety checklist before opening the PR. Never hand-edit packages/db/drizzle/ (SQL, meta/_journal.json, snapshots) without
explicit user confirmation, and never apply migrations against a shared or production database.
Releases
Desktop, host-service, and cli share one version; cut releases on a dedicated branch. Runbook:
scripts/release/README.md. A canary is a separate thing: bash scripts/release-canary.sh
[commit] builds the rolling internal desktop-canary prerelease, not a versioned release.
Plugins
First-party plugins live in plugins/<name>/: a plugin.json manifest and skills/. A plugin
ships no code — agents reach its tools through /mcp/plugins/<marketplace>/<plugin> on the API,
which proxies to the vendor's MCP server or, for the plugins named in the SUPERSET_HOSTED_PLUGINS constant,
serves them from packages/trpc/src/router/plugins/servers/. A release is the git tag
<name>@<version> on this repo — that tree is what a host
downloads — and packages/shared/src/plugins/manifests.generated.ts is the bundle the API resolves
against, which is generated and must never be hand-edited. Change the source, then
superset plugins publish <name> --bump patch, which rewrites the marketplace entry in
.agent-marketplace.json and the generated manifests; merging to main tags it. bun run check:plugins is what CI
runs to catch a change that skipped that step; run it before pushing.
Installed plugins are recorded once per machine in
$SUPERSET_HOME_DIR/plugins/installed_plugins.json (SUPERSET_HOME is the CLI's install prefix and
means nothing here). Every provisioner reads that one file — the desktop at boot, plugins sync,
the host-service — because provisioning is declarative and reaps whatever is absent from the desired
set. A caller that passes its own list instead makes the last writer delete the others' skills.
Details: docs/plugins.md.
Orchestrating agents and workspaces
When work wants a fresh isolated environment, a parallel agent, or a long-running job, reach for the
superset CLI instead of hand-rolling git worktrees or doing it all serially in this one. It's
already on PATH in Paradev terminals, and we dogfood it. paradev is an alias for the same
binary; write superset in code and docs here.
Replace the capitalized placeholders before running these:
superset ws create --local --project PROJECT_ID --name NAME --branch BRANCH --agent claude --prompt "..."
superset agents create --local --workspace WORKSPACE_ID --agent claude --prompt "..."
superset ws list --local
superset terminals read --local --workspace WORKSPACE_ID --terminal TERMINAL_ID
superset ws archive --local WORKSPACE_IDIn order: an isolated workspace with an agent already working in it, another agent in an existing workspace, what's running, what an agent is doing right now, and cleanup when you're done.
Those agents run in terminals. A user who asks for a new session or a chat means a chat agent
session, which is a different namespace: use superset sessions, not agents create or
terminals. terminals read and send cannot control a chat session.
superset sessions create --local --workspace WORKSPACE_ID --agent claude --prompt "..."
superset sessions list --local --workspace WORKSPACE_ID
superset sessions read --local --workspace WORKSPACE_ID --session SESSION_ID
superset sessions send --local --workspace WORKSPACE_ID --session SESSION_ID --prompt "..."
superset sessions close --local --workspace WORKSPACE_ID --session SESSION_IDresume, open, and import, and which agents chat supports: docs/agent-tooling.md.
Spawning several related workspaces? Add --tag SOME_TAG (repeatable) to ws create — tagged
workspaces group into a sidebar folder of that name automatically, so a batch files itself instead
of scattering across the project. ws list --local --tag SOME_TAG filters to them, and
ws update WORKSPACE_ID --tag ... retags (--clear-tags ungroups). Automation-created workspaces
are tagged automation by default and collect in an "automation" folder.
superset schema prints every command, option and argument as JSON; read it with jq to learn the
rest (tasks, automations, hosts, settings) instead of parsing --help text. To check only that a
command exists, the exit code of superset <command> --help is enough. Details and the version
caveat: docs/agent-tooling.md.
superset schema | jq '.commands[] | select(.path==["terminals"]) | .commands[] | {path, options: [.options[].name]}'Pass --json for parsable output; it's on by default under agent environments.
Internationalization
User-facing strings use Lingui macros with the English text as the message id —
<Trans>Text</Trans> or useLingui()'s t({ message }) in React, i18n._(msg({ message }))
outside React (Electron main). Identical English with different meanings gets a context
so it translates separately. Numbers, currencies, and dates go through
@superset/i18n/format helpers, never new Intl.*("en-US") or toLocale* with a hardcoded
locale. After adding or changing strings, run bun run check:i18n (CI enforces it): it
regenerates the catalogs and lists every untranslated message per locale. Write those
translations yourself into each locales/<locale>/messages.po and commit the catalogs with
the change — nothing on CI fills translations for you. Conventions: packages/i18n/README.md;
terms that never translate: packages/i18n/glossary.md; strategy and phasing:
plans/20260826-i18n-strategy.md.
Directories listed in packages/i18n/test/enforced-dirs.ts must not contain hardcoded
JSX text — add a directory there once it is fully converted. errorMessage() output is potentially
translated and is display-only: logs, Sentry/PostHog, and error classification use
rawErrorMessage() or the error object (enforced by packages/i18n/test/display-only.test.ts).
Shipping locales. SUPPORTED_LOCALES in packages/i18n/src/locales.ts is the single
source of truth — adding a locale there is what makes it appear in the Settings picker and
the optional onboarding step, and what lingui.config.ts must list. Every enabled locale
must be fully translated: compile --strict fails the build on a missing message, so
finish a translation before adding its locale. Native language names live in LOCALE_LABELS
and are never translated — someone stuck in the wrong language has to recognize their own.
Relative times use formatRelativeTime/formatCompactRelativeTime, not hand-rolled
"3d ago" helpers; Intl already knows every locale's wording.
Three traps worth knowing before you touch catalogs:
- Editing English copy re-keys the message. The text is the id, so an edit creates a
new entry that is empty in every locale and
check:i18nlists it. If the edit was cosmetic, the old translations are still ingit diffon the catalogs to copy from. - Regenerate from a clean tree.
lingui.config.tskeepsmessages.podeterministic:orderBy: "message"fixes entry order, andorigins: falsedrops the#:file references, whose order follows filesystem traversal and differs between macOS and Linux. A catalog regenerated on top of local experiments will still commit noise. bun testruns uncompiled source. The Lingui macro rewritesmessage: `${n} items`into a placeholder message plus values at build time, so the catalog stores{n} items. Tests see neither, which is whyapps/desktop/test-setup.tsshims the macros andi18n._. Mock that module with a Proxy, never a spread —i18nis a class instance and a spread dropsload/activate.
Comments
Never comment unless the thing can never be self-describing in the code. Name it, structure it, or type it first; a comment is the last resort for what the code genuinely cannot say — a constraint that lives outside the repo, or a trap the next reader would walk into. Rationale goes in the commit message and the PR.
Tests
CI runs every suite on each push, and the whole run is meant to stay near two minutes. A test earns its place by catching a regression quickly.
- No real waiting. A test that needs more than bun's default 5 s timeout is too slow. Do not raise the timeout: pass the delay, clock or retry count in and test with a small value. Never wait for a real network or process timeout to fire.
- One test per behaviour. Stress, fuzz and "adversarial" suites that build many real git repositories or processes do not go in the repo. When a probe finds a bug, keep the one regression test for it.
- Any order, clean checkout. Each package's suite runs in one process, in an order that differs
between machines, with no root
.env. Do notmock.modulea module that other files import for real (env, a client, a logger). Give the code its input instead: a parameter, a placeholder in the package's test preload, or a local server. - A flaky test is a broken test. Fix the cause or delete it. Do not add retries or longer timeouts.
- Node-only suites (real PTYs,
node:test) are*.node-test.tsfiles run by a turbo task, so they run beside the bun suites and not after them.
Further reading
.agents/skills/: CDP UI verification, mobile simulator verification, DB migrations, tRPC compatibility, ticket format, and more. Read the matchingSKILL.mdwhen a task fits its description.docs/agent-tooling.md: where commands, skills, and per-agent-CLI config live.docs/plugins.md: authoring, publishing, and installing marketplace plugins — the manifest contract, the credential proxy, and which files are generated.docs/environment-variables.md: read before adding an environment variable. Five places, and missing one fails silently.docs/deploy-workflows.md: read before writing or testing a deploy workflow step.run:has nopipefailby default, and production secrets exist only in GitHub.packages/trpc/AGENTS.md: read before changing any tRPC procedure, inpackages/trpcorpackages/host-service. Released desktop, mobile, and CLI builds still call it.apps/desktop/AGENTS.md: desktop specifics (notices, persisted renderer state).apps/mobile/AGENTS.md: mobile structure and iOS-only scope.docs/cloud-sandbox-mismatches.md: where cloud workspace sandboxes don't fit assumptions the app makes about a machine someone owns. Read it before touching sandboxes, and add to it when you find a new one.docs/cloud-sandbox-considerations.md: what cloud sandboxes still owe before they leave the team — billing, credential blast radius, untested behaviour.
Contributor responsibility
Contributors are responsible for every change they submit, including agent-generated code. They must understand the changes, review the diff, and verify the behavior before requesting review.
- Ask for clarification when a request lacks enough context to make a correct change.
- Explain changes and validation so the contributor can review and understand the result.
- Agents may write commit messages and PR descriptions, commit changes, push branches, create PRs, and address review feedback when authorized by the user.
- Only post replies to reviewers when the user explicitly authorizes it.
- Never claim that checks passed or behavior was verified unless it actually was.
Code standards
- Keep code comments concise (usually 1-2 lines)
- Avoid redundant or excessive inline commentary
- Use ASD-STE100 Simplified Technical English, simple wordings
Examples
// Good (no comment)
std::string module_name =
fmt::format("{}_{:x}", name_, std::hash<std::string>{}(source_));
// Bad (excessive comment for explicit code)
// The module cache is keyed on this name, so it has to include the source:
// two kernels sharing a name but not a body would otherwise both run
// whichever was compiled first. Same fix as 3833 on the Metal side.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.

