<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: yua</title>
    <description>The latest articles on DEV Community by yua (@yuan2080).</description>
    <link>https://dev.to/yuan2080</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4180983%2F9ca5b1f9-8dae-46cf-a341-fee321de3e53.png</url>
      <title>DEV Community: yua</title>
      <link>https://dev.to/yuan2080</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yuan2080"/>
    <language>en</language>
    <item>
      <title>How Claude Code, Muse Code and Antigravity handle plugins</title>
      <dc:creator>yua</dc:creator>
      <pubDate>Tue, 13 Oct 2026 04:36:55 +0000</pubDate>
      <link>https://dev.to/yuan2080/how-claude-code-muse-code-and-antigravity-handle-plugins-19b2</link>
      <guid>https://dev.to/yuan2080/how-claude-code-muse-code-and-antigravity-handle-plugins-19b2</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tested&lt;/strong&gt; 2026-10-07\&lt;br&gt;
&lt;strong&gt;Versions&lt;/strong&gt; Claude Code 2.1.238 · Muse Code 1.4.3 · Antigravity CLI 1.2.14\&lt;br&gt;
&lt;strong&gt;Scope&lt;/strong&gt; CLI surfaces, nothing authenticated, no plugin actually installed from a marketplace&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You install a plugin into a coding agent. Two reasonable questions follow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Does it help?&lt;/strong&gt; Is the thing I just added actually improving outcomes, or
is it burning context for nothing?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can it hurt me?&lt;/strong&gt; What is it permitted to do, and when did I agree to that?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Three terminal agents ship plugin systems. &lt;strong&gt;Each is noticeably better at one&lt;br&gt;
of those questions than the other&lt;/strong&gt;, and the gap is wide enough that you can&lt;br&gt;
tell which risk each vendor was worried about.&lt;/p&gt;
&lt;h2&gt;
  
  
  Claude Code measures whether it helped
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;claude plugin &lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="nt"&gt;--help&lt;/span&gt;

Run &lt;span class="nb"&gt;eval &lt;/span&gt;cases &lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;&lt;span class="nb"&gt;eval dir&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;/&lt;span class="k"&gt;**&lt;/span&gt;/case.yaml or prompt.md + graders/&lt;span class="k"&gt;*&lt;/span&gt;.md&lt;span class="o"&gt;)&lt;/span&gt; against
a plugin and report scored results.

&lt;span class="nt"&gt;--ablation&lt;/span&gt; &amp;lt;mode&amp;gt;   Run a no-plugin baseline arm and report the score delta
                    &lt;span class="o"&gt;(&lt;/span&gt;none | with-without&lt;span class="p"&gt;;&lt;/span&gt; default: with-without ...&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Read that second flag again. &lt;code&gt;plugin eval&lt;/code&gt; does not just run your plugin's test&lt;br&gt;
cases. By default it &lt;strong&gt;also runs the same cases with the plugin absent&lt;/strong&gt;, and&lt;br&gt;
reports the difference.&lt;/p&gt;

&lt;p&gt;That is a controlled comparison, shipped as a subcommand. The question it&lt;br&gt;
answers is not "did my skill fire" but "did having it make the output better&lt;br&gt;
than not having it" — which is the question that actually matters and the one&lt;br&gt;
almost nobody checks.&lt;/p&gt;

&lt;p&gt;Alongside it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;claude plugin details &amp;lt;name&amp;gt;
Show a plugin&lt;span class="s1"&gt;'s component inventory and projected token cost
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Projected token cost.&lt;/strong&gt; Every skill you install sits in context and is paid&lt;br&gt;
for on every turn. Claude Code is the only one of the three that will tell you&lt;br&gt;
what that costs before you decide.&lt;/p&gt;

&lt;p&gt;Both of these are measurement tools. Neither restricts what a plugin may do.&lt;/p&gt;
&lt;h2&gt;
  
  
  Muse Code constrains what it may do
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ muse plugins --help

approve &amp;lt;plugin-id[[:kind]:capability-id] | stable-id&amp;gt;
        Trust and enable current runtime capability definitions
reject  &amp;lt;plugin-id[[:kind]:capability-id] | stable-id&amp;gt;
        Trust and disable current runtime capability definitions
inspect &amp;lt;id&amp;gt;     Inspect one installed plugin and its runtime capabilities
validate &amp;lt;path&amp;gt;  Validate a local plugin bundle without installing or executing it
hook test &amp;lt;plugin-id&amp;gt;:&amp;lt;hook-id&amp;gt; --fixture &amp;lt;path&amp;gt;
        Run one installed plugin hook against a fixture
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Four separate ideas here, all pointing the same way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Capability-level consent.&lt;/strong&gt; You do not approve a plugin; you approve&lt;br&gt;
&lt;code&gt;plugin-id:kind:capability-id&lt;/code&gt;. Trust is granted per capability, and the help&lt;br&gt;
says &lt;em&gt;"current&lt;/em&gt; runtime capability definitions" — implying that when a plugin&lt;br&gt;
changes what it wants, the approval does not silently carry over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Validate without executing.&lt;/strong&gt; Explicitly stated. You can inspect a bundle&lt;br&gt;
before anything in it runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hook testing against a fixture.&lt;/strong&gt; One hook, one fixture file, in isolation —&lt;br&gt;
you can see what a hook does to a given input without letting it loose on a&lt;br&gt;
repository.&lt;/p&gt;

&lt;p&gt;And marketplaces are &lt;strong&gt;snapshots&lt;/strong&gt;, not live sources:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;marketplace add &amp;lt;name&amp;gt; &amp;lt;source&amp;gt;   Add a ... source and store a snapshot
marketplace update &amp;lt;name&amp;gt;         Refresh a marketplace snapshot explicitly
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compare Claude Code's, which updates from source:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;claude plugin marketplace update [name]
        Update marketplace(s) from their source - updates all if no name specified
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muse pins by default and makes refreshing a deliberate act. That is the&lt;br&gt;
supply-chain-conscious choice, and it costs you freshness.&lt;/p&gt;

&lt;p&gt;None of this tells you whether a plugin is any good.&lt;/p&gt;
&lt;h2&gt;
  
  
  Antigravity keeps it small
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;agy plugin &lt;span class="nt"&gt;--help&lt;/span&gt;
list · import · &lt;span class="nb"&gt;install&lt;/span&gt; · uninstall · &lt;span class="nb"&gt;enable&lt;/span&gt; · disable · validate · &lt;span class="nb"&gt;link&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;code&gt;validate&lt;/code&gt; wants a manifest and says so:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ agy plugin validate
Error: missing plugin.json: stat plugin.json: no such file or directory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install accepts &lt;code&gt;plugin[@marketplace]&lt;/code&gt;, and &lt;code&gt;link &amp;lt;mp&amp;gt; &amp;lt;target&amp;gt;&lt;/code&gt; generates a&lt;br&gt;
marketplace link. It is the recognisable shape of the category with none of the&lt;br&gt;
extras — no eval, no cost projection, no capability approval, no fixtures.&lt;/p&gt;

&lt;p&gt;Given its plugin list is empty on a fresh install, this reads as earlier rather&lt;br&gt;
than as a position.&lt;/p&gt;

&lt;h2&gt;
  
  
  The table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Claude Code&lt;/th&gt;
&lt;th&gt;Muse Code&lt;/th&gt;
&lt;th&gt;Antigravity&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Validate manifest&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Validate without executing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;explicit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Run test cases&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;plugin eval&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;hook test --fixture&lt;/code&gt; (one hook)&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;No-plugin baseline arm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✓ default&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Projected token cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✓&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inspect capabilities&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Per-capability approve/reject&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✓&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marketplace&lt;/td&gt;
&lt;td&gt;live from source&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;pinned snapshot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@marketplace&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enable / disable installed&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What the shape of each one says
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Claude Code's plugin tooling is built for authors.&lt;/strong&gt; Eval cases, graders, an&lt;br&gt;
ablation arm, a token-cost projection — these are the tools you want when you&lt;br&gt;
are writing a plugin and need to know whether it earns its place. The implicit&lt;br&gt;
risk model is that your plugins are yours, and the danger is wasted context,&lt;br&gt;
not malice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Muse Code's is built for installers.&lt;/strong&gt; Capability consent, no-execute&lt;br&gt;
validation, fixture-isolated hook runs, pinned marketplace snapshots. The&lt;br&gt;
implicit risk model is that plugins come from elsewhere and the danger is what&lt;br&gt;
they do. It fits the rest of that product's surface: named permission profiles,&lt;br&gt;
&lt;code&gt;muse config&lt;/code&gt; validating &lt;em&gt;"enterprise configuration documents"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Neither is wrong. They are not the same product.&lt;/p&gt;

&lt;p&gt;The practical consequence is that &lt;strong&gt;the thing each one is missing is the thing&lt;br&gt;
the other is good at.&lt;/strong&gt; Claude Code will tell you a plugin is worth its tokens&lt;br&gt;
and nothing about what it is allowed to touch. Muse Code will let you withhold&lt;br&gt;
a single capability and give you no way to find out whether the plugin helped.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I did not test
&lt;/h2&gt;

&lt;p&gt;I installed nothing from a marketplace and ran no eval. Everything above is the&lt;br&gt;
command surface — what each vendor built and documented, not whether it works&lt;br&gt;
as described.&lt;/p&gt;

&lt;p&gt;In particular I have not verified that Claude Code's ablation arm produces a&lt;br&gt;
meaningful delta on a real plugin, or that Muse Code's capability approval&lt;br&gt;
actually blocks a capability at runtime. Both are testable and neither was&lt;br&gt;
tested here.&lt;/p&gt;

&lt;p&gt;Nothing here is about the quality of what the plugins do, either. A good eval&lt;br&gt;
harness and a bad ecosystem is a real possibility, and this comparison cannot&lt;br&gt;
see it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://mossbysea.com/tools/three-plugin-systems/" rel="noopener noreferrer"&gt;mossbysea.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>security</category>
      <category>plugins</category>
    </item>
    <item>
      <title>Muse Code bundles 20 skills, and 4 move you off Claude Code</title>
      <dc:creator>yua</dc:creator>
      <pubDate>Tue, 13 Oct 2026 04:36:52 +0000</pubDate>
      <link>https://dev.to/yuan2080/muse-code-bundles-20-skills-and-4-move-you-off-claude-code-3944</link>
      <guid>https://dev.to/yuan2080/muse-code-bundles-20-skills-and-4-move-you-off-claude-code-3944</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tested&lt;/strong&gt; 2026-10-07\&lt;br&gt;
&lt;strong&gt;Versions&lt;/strong&gt; Muse Code 1.4.3 (1.4.3-R5018.1) · Claude Code 2.1.238\&lt;br&gt;
&lt;strong&gt;Scope&lt;/strong&gt; installed and inspected; &lt;strong&gt;not&lt;/strong&gt; authenticated, so no task was run&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Meta's coding agent ships twenty built-in skills. Four of them exist for one&lt;br&gt;
purpose: moving you off Claude Code or Codex. Unfinished sessions, memory notes,&lt;br&gt;
MCP server configuration, rules, skills — five entry points, documented inside&lt;br&gt;
the agent's own skill descriptions so the model offers them unprompted.&lt;/p&gt;

&lt;p&gt;Claude Code ships an importer too — for Codex and Gemini, not for Muse.&lt;/p&gt;

&lt;p&gt;Muse Code launched on 5 August 2026 and left beta on 1 September. It is a&lt;br&gt;
terminal coding agent: same shape as Claude Code, same shape as Codex CLI. On&lt;br&gt;
macOS it is one Homebrew cask and a binary called &lt;code&gt;muse&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I installed it, read its entire surface, and ran the one thing that can be run&lt;br&gt;
without credentials. That last part turned out to be the interesting bit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this post is not:&lt;/strong&gt; a capability comparison. I have not authenticated,&lt;br&gt;
so nothing here says a word about whether Muse Code writes better code than&lt;br&gt;
Claude Code. What it covers is everything you can learn before the first&lt;br&gt;
token — the CLI surface, the bundled skills, and what both reveal about who&lt;br&gt;
the product is aimed at.&lt;/p&gt;
&lt;h2&gt;
  
  
  Twenty bundled skills, and four of them are for leaving
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;muse skills list --source built-in&lt;/code&gt; returns twenty entries. Most are what you&lt;br&gt;
would expect: planning, git safety, Python environments, frontend taste,&lt;br&gt;
scaffolding, test collateral.&lt;/p&gt;

&lt;p&gt;Four are not:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;Its stated job&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;resume-claude&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;"Continue work from a local Claude Code session in Muse Code... with or without a session ID or log path"&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;resume-codex&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The same, for Codex&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;migrate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;"Bring what Claude Code or Codex already remembers or has configured for this user into Muse Code — their memory notes and their MCP servers"&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;import&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Continuation from &lt;em&gt;"other coding agents and unnamed artifacts"&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Plus a dedicated subcommand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;muse skills import &lt;span class="nt"&gt;--from&lt;/span&gt; claude|codex &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;--scope&lt;/span&gt; user] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;--dry-run&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;--force&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And, per &lt;code&gt;migrate&lt;/code&gt;'s own text, &lt;code&gt;/rules import&lt;/code&gt; for rule files.&lt;/p&gt;

&lt;p&gt;Add those up and the covered surface is: &lt;strong&gt;unfinished session state, memory&lt;br&gt;
notes, MCP server configuration, rules, and skills.&lt;/strong&gt; That is not a convenience&lt;br&gt;
feature someone added late. That is a product decision to make switching cost&lt;br&gt;
approximately zero, implemented across five entry points and documented inside&lt;br&gt;
the agent's own skill descriptions so the model volunteers it.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;migrate&lt;/code&gt; skill even routes you correctly between the options — session&lt;br&gt;
transcripts go to &lt;code&gt;resume-claude&lt;/code&gt;, MCP servers and memory go to &lt;code&gt;migrate&lt;/code&gt;,&lt;br&gt;
skills go to &lt;code&gt;skills import&lt;/code&gt;. Somebody drew that decision tree deliberately.&lt;/p&gt;
&lt;h3&gt;
  
  
  The reverse exists, and is narrower
&lt;/h3&gt;

&lt;p&gt;Claude Code ships &lt;code&gt;claude import [codex|gemini]&lt;/code&gt;, also with &lt;code&gt;--dry-run&lt;/code&gt;. Run&lt;br&gt;
against my own machine it found three MCP servers in a Codex config, listed&lt;br&gt;
seven config keys with no mapping, and offered to write a reference skill&lt;br&gt;
documenting the unmapped items for manual porting — a nicer failure mode than&lt;br&gt;
dropping them.&lt;/p&gt;

&lt;p&gt;What it does not accept is &lt;code&gt;muse&lt;/code&gt;. The usage line is &lt;code&gt;[codex|gemini]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So importers are table stakes in this category, not a Meta tactic. The&lt;br&gt;
interesting part is &lt;strong&gt;which competitors each one names.&lt;/strong&gt; Claude Code imports&lt;br&gt;
from Codex and Gemini — the agents it was competing with when that code was&lt;br&gt;
written. Muse Code imports from Claude Code and Codex — the ones it is&lt;br&gt;
competing with now. Each vendor's importer is a list of who they want your&lt;br&gt;
users to be leaving.&lt;/p&gt;

&lt;p&gt;The difference that remains is coverage. Claude Code's is one command over&lt;br&gt;
config and MCP servers. Muse Code's is five entry points over unfinished&lt;br&gt;
sessions, memory notes, MCP servers, rules and skills.&lt;/p&gt;
&lt;h2&gt;
  
  
  Pointing it at my own setup
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;--dry-run&lt;/code&gt; makes the importer read-only, which means it runs without&lt;br&gt;
credentials. So I aimed it at the nine skills in my actual &lt;code&gt;~/.claude/skills&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ muse skills import --from claude --dry-run

diagnostic=unsupported-skill-field severity=warning
  path=/Users/.../skills/journalist-writer/SKILL.md
  message=`allowed-tools` is recorded as advisory metadata but is not
          enforced and grants no tool permissions

candidates:8  installed:0  quarantined:0  skipped:0  failed:0
compat:claude-code-in-slack  unavailable-binaries:start,stop,daemon,logs
compat:&amp;lt;redacted&amp;gt;            unavailable-binaries:interval,dt,cannot,sql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eight of nine recognised as candidates, nothing installed because it was a dry&lt;br&gt;
run, and three diagnostics. Two of those are worth keeping.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;code&gt;allowed-tools&lt;/code&gt; is accepted and ignored
&lt;/h3&gt;

&lt;p&gt;Claude Code skills can carry an &lt;code&gt;allowed-tools&lt;/code&gt; field in frontmatter. Muse Code&lt;br&gt;
parses it, records it, and &lt;strong&gt;grants nothing&lt;/strong&gt;. The warning says so plainly,&lt;br&gt;
which is the right behaviour — far better than silently honouring a field with&lt;br&gt;
different semantics.&lt;/p&gt;

&lt;p&gt;But if you migrate a skill that leaned on &lt;code&gt;allowed-tools&lt;/code&gt; to constrain what it&lt;br&gt;
could touch, that constraint is gone and only a warning line tells you. Worth&lt;br&gt;
knowing before you trust a migrated skill with anything destructive.&lt;/p&gt;
&lt;h3&gt;
  
  
  The compatibility checker reads prose as commands
&lt;/h3&gt;

&lt;p&gt;Look at the second compat line. The importer scans skills for binaries they&lt;br&gt;
invoke and reports which are missing. For one of my skills it reported four&lt;br&gt;
unavailable binaries: &lt;code&gt;interval&lt;/code&gt;, &lt;code&gt;dt&lt;/code&gt;, &lt;code&gt;cannot&lt;/code&gt;, &lt;code&gt;sql&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;None of those are commands. They are &lt;strong&gt;words from the skill's prose&lt;/strong&gt;, caught by&lt;br&gt;
whatever extracts command names. &lt;code&gt;sql&lt;/code&gt; appears because the skill talks about&lt;br&gt;
SQL. &lt;code&gt;cannot&lt;/code&gt; appears because a sentence contains the word "cannot".&lt;/p&gt;

&lt;p&gt;Harmless — it is a warning, not a gate. But it tells you the check is a&lt;br&gt;
heuristic over text rather than a parse, so a real missing dependency could sit&lt;br&gt;
in the same list as the noise and read as noise.&lt;/p&gt;
&lt;h2&gt;
  
  
  What the flags say about the design
&lt;/h2&gt;

&lt;p&gt;Two terminal agents, same category. The differences in surface are where the&lt;br&gt;
design shows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reasoning effort has more tiers.&lt;/strong&gt; Each value below was read out of the tool&lt;br&gt;
itself, by passing a deliberately invalid one and letting it print the list:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Muse Code    none | minimal | low | medium | high | xhigh | max | ultra    (8)
Claude Code  low | medium | high | xhigh | max                            (5)
Antigravity  low | medium | high | max                                    (4)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whether eight beats five is an empirical question I cannot answer here. The&lt;br&gt;
spread at the bottom is the interesting bit: only Muse offers &lt;code&gt;none&lt;/code&gt; and&lt;br&gt;
&lt;code&gt;minimal&lt;/code&gt;, which is a product expecting you to turn reasoning down for cheap&lt;br&gt;
work rather than only up for hard work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Permission models differ in kind, not degree.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Code  --permission-mode  acceptEdits | auto | bypassPermissions |
                                manual | dontAsk | plan                   (6)
Antigravity  --mode             accept-edits | plan                       (2)
Muse Code    --permission-profile &amp;lt;ID&amp;gt;        named profiles, not an enum
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muse is the only one that treats permissions as a named, presumably shareable&lt;br&gt;
profile rather than a per-session switch — which fits an enterprise story, and&lt;br&gt;
&lt;code&gt;muse config&lt;/code&gt; validating "enterprise configuration documents" points the same&lt;br&gt;
way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git worktrees are a top-level flag in both&lt;/strong&gt; Muse Code and Claude Code, so&lt;br&gt;
this is a category convention rather than a differentiator:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;muse   &lt;span class="nt"&gt;-w&lt;/span&gt; / &lt;span class="nt"&gt;--worktree&lt;/span&gt; off|create|existing  &lt;span class="nt"&gt;--worktree-base&lt;/span&gt;  &lt;span class="nt"&gt;--worktree-existing&lt;/span&gt;
claude &lt;span class="nt"&gt;-w&lt;/span&gt; / &lt;span class="nt"&gt;--worktree&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;name]               &lt;span class="nt"&gt;--tmux&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Muse exposes more knobs; Claude Code can drop the worktree straight into a tmux&lt;br&gt;
session. I did not find an equivalent in Antigravity's help.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It has its own wire protocol.&lt;/strong&gt; &lt;code&gt;muse schema&lt;/code&gt; exports an "MSP wire schema" as&lt;br&gt;
JSON Schema or TypeScript, and &lt;code&gt;muse serve&lt;/code&gt; runs an MSP session host over&lt;br&gt;
stdio. There is also &lt;code&gt;session-message&lt;/code&gt;, for sending messages &lt;em&gt;between&lt;/em&gt; sessions.&lt;br&gt;
Multi-agent coordination is a first-class concept with a published schema, not&lt;br&gt;
an emergent pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Oddities worth noting.&lt;/strong&gt; &lt;code&gt;muse voice&lt;/code&gt; transcribes an audio clip. &lt;code&gt;--provider&lt;/code&gt;&lt;br&gt;
takes &lt;code&gt;echo&lt;/code&gt;, &lt;code&gt;meta&lt;/code&gt; or &lt;code&gt;local&lt;/code&gt; — a stub provider and a local-model path are&lt;br&gt;
built in. &lt;code&gt;--preset&lt;/code&gt; offers &lt;code&gt;native-basic&lt;/code&gt;, &lt;code&gt;miniswe&lt;/code&gt; and &lt;code&gt;openai-apply-patch&lt;/code&gt;,&lt;br&gt;
the last of which is an OpenAI-compatible edit format, bundled.&lt;/p&gt;

&lt;p&gt;And &lt;code&gt;model-profile&lt;/code&gt; prints internal architecture-decision-record IDs at you:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;re-resolution (ADR 42674 D7)&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="s"&gt;default_reasoning_effort  startupFixed — it SELECTS the session tier, so&lt;/span&gt;
                            &lt;span class="s"&gt;re-resolving it mid-session would fight the&lt;/span&gt;
                            &lt;span class="s"&gt;user's own /effort choice&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Shipping your ADR numbers in CLI output is a choice. I rather like it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The price of the cheap tier
&lt;/h2&gt;

&lt;p&gt;Muse Code is pay-as-you-go. Two rates:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Standard&lt;/td&gt;
&lt;td&gt;$1.25 / M&lt;/td&gt;
&lt;td&gt;$4.25 / M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;If you let Meta train on your code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.10 / M&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.20 / M&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Twelve times cheaper for input, twenty-one times for output&lt;/strong&gt;, in exchange for&lt;br&gt;
your code entering a training set.&lt;/p&gt;

&lt;p&gt;For a weekend project that may be an easy yes. For anything under an employer's&lt;br&gt;
confidentiality terms it is not your decision to make, and the discount is&lt;br&gt;
large enough to be tempting to someone who has not thought about it. The rate&lt;br&gt;
card is the clearest statement of what the data is worth to Meta.&lt;/p&gt;

&lt;p&gt;Authentication offers the same kind of choice. &lt;code&gt;muse login&lt;/code&gt; runs a browser&lt;br&gt;
approval against a Meta account; &lt;code&gt;META_API_KEY&lt;/code&gt; skips it entirely, and the help&lt;br&gt;
text states that the key takes priority over the account login. An API-key path&lt;br&gt;
that works without an account is not something every vendor still offers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I did not test
&lt;/h2&gt;

&lt;p&gt;Everything that matters most.&lt;/p&gt;

&lt;p&gt;No task was run, so there is nothing here about code quality, instruction&lt;br&gt;
following, long-context behaviour, tool use, or how it recovers from its own&lt;br&gt;
mistakes. No elapsed times, no rework counts, no cost in practice.&lt;/p&gt;

&lt;p&gt;The import was &lt;code&gt;--dry-run&lt;/code&gt;, so I have not confirmed that an imported skill&lt;br&gt;
actually works once installed — only that the importer recognises it and what&lt;br&gt;
it warns about.&lt;/p&gt;

&lt;p&gt;A real comparison needs one identical task, run on both, with acceptance&lt;br&gt;
criteria fixed in advance. That is a longer piece and this is not it.&lt;/p&gt;




&lt;p&gt;What I will say after a day of reading its surface: Muse Code is not positioned&lt;br&gt;
as an alternative for people choosing their first agent. It is built for people&lt;br&gt;
who already have one. The twenty bundled skills include four for leaving a&lt;br&gt;
competitor, the importer handles sessions and memory and MCP servers and rules&lt;br&gt;
and skills, and the pricing undercuts by an order of magnitude if you will pay&lt;br&gt;
in code.&lt;/p&gt;

&lt;p&gt;That is a switching strategy. Every vendor in this category now ships one;&lt;br&gt;
what is unusual here is the surface area, and that the agent itself is told&lt;br&gt;
to offer it.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Corrections, 2026-10-07.&lt;/strong&gt; Three, all the same mistake: I explored Muse Code&lt;br&gt;
properly and compared it against what I assumed about Claude Code instead of&lt;br&gt;
checking.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The post said Claude Code ships no equivalent importer. It does —
&lt;code&gt;claude import [codex|gemini]&lt;/code&gt;, with &lt;code&gt;--dry-run&lt;/code&gt;. The conclusion changed as
a result: migration tooling is standard in this category, and the finding is
about coverage and about which competitors each vendor names.&lt;/li&gt;
&lt;li&gt;Claude Code's effort tiers were given as four. There are five — &lt;code&gt;xhigh&lt;/code&gt; was
missing. The lists above are now read out of each tool directly.&lt;/li&gt;
&lt;li&gt;Git worktrees were presented as a Muse Code design signal. Claude Code has
&lt;code&gt;-w/--worktree&lt;/code&gt; too, so it is a category convention.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The common failure: every "A has X and B doesn't" needs a command run against&lt;br&gt;
B. One-sided evidence reads exactly like research until someone checks.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://mossbysea.com/tools/muse-code-ships-the-door-out/" rel="noopener noreferrer"&gt;mossbysea.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
