Skip to content

feat: official skills for Cursor, Copilot, OpenCode, Windsurf - #328

Open
architdhamija wants to merge 9 commits into
mainfrom
feat/official-skills-cursor-copilot-opencode-windsurf
Open

architdhamija wants to merge 9 commits into
mainfrom
feat/official-skills-cursor-copilot-opencode-windsurf

Conversation

@architdhamija

Copy link
Copy Markdown
Contributor

What shipped

mex setup and mex skills sync now install mex-inbox, mex-relay, and mex-statechart for Cursor, GitHub Copilot, OpenCode, and Windsurf, with the same commands and approval rules as Claude Code and Codex.

There are no per-tool forks. All four tools' docs list .agents/skills/, so they share the copy Codex already uses, generated from the same packaged skills/ source.

Tool --tool Instruction file Invocation
Cursor cursor .cursorrules /mex-inbox
GitHub Copilot copilot .github/copilot-instructions.md /mex-inbox
OpenCode opencode AGENTS.md By name, through its skill tool
Windsurf windsurf .windsurfrules /mex-inbox

Changes beyond the client list:

  • Installer: it now plans a shared path once. Without this, a second tool using .agents/skills or AGENTS.md would see the first tool's write as a concurrent change and fail the apply.
  • Hub setup commit: the review scope now includes each tool's instruction file, so OpenCode's AGENTS.md isn't left out.
  • Commit checkpoint commands: each shared path is staged once.
  • mex-statechart: a new delivery step for clients that may not render Mermaid: the text view plus the image paths.

Install

mex skills sync --dry-run --tool cursor
mex skills sync --tool cursor

Use copilot, opencode, or windsurf for the others, then start a new agent session. Per-tool steps and smoke checklists are in docs/agent-skills.md.

Upgrade behavior: after upgrading, a plain mex skills sync also syncs any of these four tools recorded in .mex/config.json. Previously they were skipped. Bytes outside the managed block are preserved, and unmanaged .agents/skills/mex-* directories are reported as conflicts rather than overwritten.

Still Claude Code or Codex only

  • .claude-plugin/marketplace.json lists Inbox and Relay for Claude Code only.
  • agents/openai.yaml is installed everywhere, but only Codex reads it.
  • Inline statechart delivery is only verified on Claude Code's desktop app (PNG) and Codex CLI (Mermaid).
  • Single-session population and the finalize repair turn still run only on Claude Code or Codex, because they run mex commands.

Blockers and open points

  • Live clients not tested: discovery paths and invocation come from each vendor's docs, checked on 2026-11-04. Nobody has run the smoke checklists in Cursor, Copilot, OpenCode, or Windsurf yet.
  • Windsurf: its docs now redirect to Devin Desktop, which reads .agents/skills/ and treats .windsurf/skills/ as legacy. Older Windsurf builds may need a manual copy to .windsurf/skills/, which MEX doesn't manage.
  • OpenCode: it shares AGENTS.md with Codex, so the block names skills as $mex-inbox. OpenCode has no $ syntax and should find the skill by name. This is the first thing to check in its smoke test.
  • README hero line: it still says Claude Code or Codex, because it sits beside the pinned mex-agent@0.8.5 install command. Update it in the release that ships this.

The optional nested AGENTS.md per subsystem work isn't included.

Testing

  • Typecheck: npm run typecheck passes.
  • Related tests: 150 of 152 pass on Windows with --testTimeout=60000. At the default 15s limit, tests in commit.test.ts timed out on this machine.
  • The 2 failures: "rolls instruction replacement back portably and preserves its mode" and "detects an instruction mode change after preview". Both are Claude-only file mode checks, and Windows reads chmod 0o640 back as 666 on this machine. I didn't run them on main for comparison.
  • Real CLI: each of the four tools was installed with the built CLI in a throwaway Git repo. The dry run wrote nothing, a second sync changed nothing, and installing all five .agents/skills tools together gave 7 actions with no conflicts and left a hand-written .cursorrules line intact.
  • Not run: the full vitest suite was stopped before finishing, and npm run build:hub wasn't rerun after these changes, so this PR relies on CI for both.

🤖 Generated with Claude Code

architdhamija and others added 4 commits November 4, 2026 17:32
Install mex-inbox, mex-relay and mex-statechart for these four tools through
mex setup and mex skills sync. They share the .agents/skills copy Codex uses,
so there are no per-tool forks.

Plan each shared skill and instruction path once, since a second operation
would treat the first one's write as a concurrent change. Include each tool's
instruction file in the Hub setup commit scope and the checkpoint commands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add docs/agent-skills.md with per-tool install steps, a smoke checklist for
each tool, and what is still Claude Code or Codex only. Update the READMEs,
compatibility notes, changelog, setup templates and project memory to match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add a read-only Knowledge drift card that says whether `mex sync` has work
to do. It uses sync's own filter, now shared through src/sync/work.ts, so
the card reports only what sync would act on.

The drift check is synchronous and takes tens of seconds on a large
repository, so GET /api/v1/drift runs it in a private drift-detect process
and shares one run across callers. It never refreshes the graph or starts
an agent, and it works without Git.

The opt-in toggle, scheduling and notifications come next.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add a per-checkout toggle in Hub Settings. When it is on, MEX sends a desktop
notification when `mex sync` has new work, through each OS's own notifier.

Checks run from a Hub timer, `mex watch --interval`, and a post-commit hook
block that the setting adds and removes. They skip an unchanged checkout, wait
for source to settle unless a commit started them, and alert only on new drift.
They start no agent, change no knowledge, and never refresh the graph.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants