manaflow-ai/cmux

cmux-dev-workflow

Contributor workflow rules for cmux setup, Xcode project normalization, tagged sidebar ExtensionKit development, and dev builds.

소스 보기
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

cmux Dev Workflow

Initial setup

./scripts/setup.sh initializes submodules, builds GhosttyKit, and installs the pbxproj normalization pre-commit hook.

Tagged local dev

Build the Debug app after every code change:

bash
./scripts/reload.sh --tag <short-tag>

It builds without launching; pass --launch only when you need the app open. Never run bare xcodebuild or open an untagged cmux DEV.app: untagged builds share the default debug socket and bundle ID with other agents, causing conflicts and stealing focus.

For CLI or socket dogfood against a tagged Debug app:

bash
CMUX_TAG=<tag> scripts/cmux-debug-cli.sh list-workspaces

Do not use /tmp/cmux-cli for tagged dogfood; that symlink points at the most recently reloaded build. See references/tagged-builds.md.

Xcode toolchain

The team is pinned to Xcode 26.x. .xcode-version is the single source of truth for the major; cmux.xcodeproj/project.pbxproj carries objectVersion = 60, what Xcode 26 writes by default. (objectVersion = 77 is reserved for synchronized folder groups, which cmux does not use.)

Intel Macs on macOS 14 with Xcode 16.2 (Swift 6.0.3) can still build the macOS app and run tagged reload.sh dev builds as a best-effort pathway. Keep app-linked Swift within Swift 6.0 syntax: no trailing commas in parameter or argument lists (SE-0439), no nonisolated on type declarations (SE-0449), and the #if compiler(>=6.2) / #else @Sendable split for @concurrent (SE-0461 is Swift 6.2; Swift 6.0 only warns that the attribute was renamed and does not implement its semantics). See "Intel Macs, Xcode 16.2, Swift 6.0" in AGENTS.md.

scripts/setup.sh installs the tracked scripts/git-hooks/pre-commit, which runs scripts/normalize-pbxproj.py on any staged project.pbxproj so Xcode's nondeterministic reordering never reaches a commit. The hook is idempotent. CI runs scripts/check-pbxproj.sh to enforce both the objectVersion pin and normalization, so skipping the hook gives a clear PR failure. Bumping the pin is a deliberate team decision: see references/xcode-project-normalization.md.

Sidebar extension point (dev tagging)

Each tagged dev build gets its own ExtensionKit sidebar extension point so concurrent dev builds do not collide. Three build settings drive it:

  • CMUX_SIDEBAR_EXTENSION_POINT_ID (default com.cmuxterm.app.cmux.sidebar): the extension point identifier baked into Info.plist at build time.
  • CMUX_BUNDLE_ID_SUFFIX (default empty): inserted into the app and appex bundle ids so a tagged extension gets a distinct identity that pkd records separately.
  • CMUX_DISPLAY_NAME_SUFFIX (default empty): appended to the appex CFBundleDisplayName. The OS groups sidebar extensions by display name for the enable/disable and availability counts the host reads, so two same-named appexes installed side by side are treated as one logical extension and toggling one perturbs the other.

The host resolves its point id at runtime from the Info.plist key CMUXSidebarExtensionPointIdentifier via CmuxSidebarExtensionPoint.identifier(in:). ./scripts/reload.sh --tag <tag> scopes the host point to com.cmuxterm.app.debug.<tag>.cmux.sidebar. Build a matching tag-scoped sample extension with:

bash
./scripts/reload-extension.sh --tag <tag> [--host-bundle-id <id>] [--example sample|tabs|both]

See references/sidebar-extension-tagging.md for the settings it passes, the no-re-signing rule, and the checklist for authoring a new tag-ready sample extension.

같은 저장소의 Skills

더 많은 Skills

모든 Skills
manaflow-ai
커뮤니티

cmux

End-user control of cmux topology and routing (windows, workspaces, panes/surfaces, focus, moves, reorder, identify, trigger flash). Use when automation needs deterministic placement and navigation in a multi-pane cmux layout.

설치 수
4
GitHub Stars
2.7만
업데이트
9월 18일
manaflow-ai
커뮤니티

cmux-billing

Stripe checkout, pricing, subscription, Pro plan, webhook, and entitlement runbook for cmux billing work. Use when editing or debugging billing, pricing, Stripe Checkout, subscription recording, Pro plan status, webhooks, entitlement metadata, or pricing dev/prod tooling.

설치 수
2
GitHub Stars
2.7만
업데이트
9월 18일
manaflow-ai
커뮤니티

cmux-browser

End-user browser automation with cmux. Use when you need to open sites, inspect or interact with browser surfaces, wait for page state, and extract data without stealing focus.

설치 수
3
GitHub Stars
2.7만
업데이트
9월 18일
manaflow-ai
커뮤니티

cmux-cloud-vm

Route work to cmux Cloud machines from the plain cmux vm CLI (alias cmux cloud): route/run/agent pick a machine, vm tree and surface ls catalog This Mac and cloud surfaces, and open, exec, transfer, workspace, terminal, port, checkpoint, and domain operations share the same app paths. Use when an agent should run builds, tests, servers, desktop/browser tasks, or another agent on a cloud machine, or when the user says \"cloud machine\", \"cloud VM\", \"run it in the cloud\", \"cmux vm\", or \"cmux cloud\".

설치 수
2
GitHub Stars
2.7만
업데이트
9월 18일