Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
manaflow-ai avatar

Cmux Dev Workflow

  • 2.6k installs
  • 25.6k repo stars
  • Updated August 5, 2026
  • manaflow-ai/cmux

cmux-dev-workflow is a Claude Code skill that standardizes cmux contributor workflow including branching, local setup, task breakdown, and agent-assisted implementation loops for developers working on the terminal multip

About

cmux-dev-workflow is a Claude Code skill that standardizes how contributors work on cmux day to day. It covers branching strategy, local development setup, breaking work into tasks, and running agent-assisted implementation loops inside the cmux terminal environment. Developers reach for cmux-dev-workflow when onboarding to the cmux repo or when coordinating multi-pane agent sessions with git workflow. The skill keeps contributor practices consistent so architecture and testing skills can assume a shared development rhythm across the project.

  • Repo-specific contribution rituals
  • Task decomposition for cmux
  • Agent-friendly implementation steps
  • Cross-feature coordination norms

Cmux Dev Workflow by the numbers

  • 2,604 all-time installs (skills.sh)
  • +304 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #203 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/manaflow-ai/cmux --skill cmux-dev-workflow

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs2.6k
repo stars25.6k
Last updatedAugust 5, 2026
Repositorymanaflow-ai/cmux

What is the cmux contributor development workflow?

Standardize day-to-day cmux contributor workflow: branching, local setup, task breakdown, and agent-assisted implementation loops.

Who is it for?

cmux contributors who need a repeatable git branching and agent-assisted implementation routine on the multiplexer codebase.

Skip if: Developers not contributing to cmux or teams wanting organization-wide git policy unrelated to terminal multiplexer development.

When should I use this skill?

A developer onboards to cmux, starts a feature branch, or runs agent-assisted implementation loops in cmux panes.

What you get

Branch plan, local dev environment, task breakdown, and agent implementation loop checklist.

  • Branch and setup checklist
  • Task breakdown for features
  • Agent implementation loop steps

Files

SKILL.mdMarkdownGitHub ↗

cmux Dev Workflow

Tagged local dev

After making code changes, always run the reload script with a tag to build the Debug app:

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

By default, reload.sh builds but does not launch the app. Pass --launch only when you need to open it automatically.

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, use the tag-bound helper and set CMUX_TAG:

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.

When rebuilding cmuxd for release/bundling, always use ReleaseFast:

cd cmuxd && zig build -Doptimize=ReleaseFast

Initial setup

Run the setup script to initialize submodules, build GhosttyKit, and install the pbxproj normalization pre-commit hook:

./scripts/setup.sh

Xcode toolchain

The team is pinned to Xcode 26.x. .xcode-version records the major; cmux.xcodeproj/project.pbxproj carries objectVersion = 60, which is what Xcode 26 writes by default. (objectVersion 77 is reserved for projects that adopt synchronized folder groups, which cmux does not use yet. Bumping to a different value requires a deliberate team decision.)

scripts/setup.sh installs a tracked pre-commit hook (scripts/git-hooks/pre-commit) that runs scripts/normalize-pbxproj.py on any staged cmux.xcodeproj/project.pbxproj, sorting the high-churn sections 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 anyone who skips the hook (or never ran setup) gets a clear failure on their PR.

.xcode-version is the single source of truth. To bump the pin: edit .xcode-version, open cmux.xcodeproj in the new Xcode (which rewrites objectVersion automatically when it touches the file), and add a case for the new Xcode major in scripts/check-pbxproj.sh mapping it to the objectVersion that major writes.

Sidebar extension point (dev tagging)

Each tagged dev build gets its own ExtensionKit sidebar extension point so concurrent dev builds don't collide. Three build settings drive this:

  • 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 + availability counts the host reads (AppExtensionIdentity exposes only bundleIdentifier, localizedName, extensionPointIdentifier, id — cmux already keys its own identity off the stable bundleIdentifier, but the OS-level grouping is by name). Two same-named appexes installed side by side (a base build and a tagged build) are treated as one logical extension, so toggling one perturbs the other; a per-tag display name keeps them distinct.

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. ./scripts/reload-extension.sh --tag <tag> [--host-bundle-id <id>] [--example sample|tabs|both] builds a matching tag-scoped sample extension, passing CMUX_SIDEBAR_EXTENSION_POINT_ID=<host-bundle-id>.cmux.sidebar, CMUX_BUNDLE_ID_SUFFIX=.<tag>, and CMUX_DISPLAY_NAME_SUFFIX=" <tag>". It installs exactly what xcodebuild produced (xcodebuild ad-hoc signs with entitlements intact) — it does NOT re-sign, because a bare codesign --force --sign - strips the appex entitlements and the extension then drops its host XPC connection. pkd ingests the tagged copy because its bundle id is distinct. Verify with pluginkit -m -p <host-bundle-id>.cmux.sidebar.

To author a NEW sample extension that is tag-ready:

  • appex Info.plist: EXAppExtensionAttributes:EXExtensionPointIdentifier = $(CMUX_SIDEBAR_EXTENSION_POINT_ID).
  • add CMUX_SIDEBAR_EXTENSION_POINT_ID (default com.cmuxterm.app.cmux.sidebar), CMUX_BUNDLE_ID_SUFFIX (default empty), and CMUX_DISPLAY_NAME_SUFFIX (default empty) build settings to the app and appex targets in all build configs.
  • PRODUCT_BUNDLE_IDENTIFIER = <appBase>$(CMUX_BUNDLE_ID_SUFFIX) for the app target and <appBase>$(CMUX_BUNDLE_ID_SUFFIX).<leaf> for the appex (suffix before the appex leaf so the appex id stays prefixed by the app id).
  • appex INFOPLIST_KEY_CFBundleDisplayName (or the CFBundleDisplayName Info.plist value) = <Name>$(CMUX_DISPLAY_NAME_SUFFIX).
  • it must be ad-hoc signed by xcodebuild (Info.plist bound, entitlements intact) for pkd to ingest the tagged copy; do not re-sign post-build.

Detailed references

  • Read references/tagged-builds.md for detailed tagged reload, app link, socket, and cleanup behavior.
  • Read references/xcode-project-normalization.md before touching .xcode-version or cmux.xcodeproj/project.pbxproj.
  • Read references/sidebar-extension-tagging.md when changing ExtensionKit sidebar extension identifiers, tagged sample extensions, or pluginkit verification.

Related skills

FAQ

What practices does cmux-dev-workflow standardize?

cmux-dev-workflow covers cmux git branching, local environment setup, task breakdown, and agent-assisted implementation loops so contributors follow the same day-to-day rhythm on the multiplexer codebase.

When should cmux contributors invoke cmux-dev-workflow?

cmux-dev-workflow applies at cmux repo onboarding, when opening a feature branch, or when coordinating multi-step agent sessions across cmux terminal panes during feature work.

How does cmux-dev-workflow connect to other cmux skills?

cmux-dev-workflow assumes cmux-architecture decisions are set and feeds cmux-testing by producing implementable task units before release or refactor coverage is added.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.