First, thank you for Allium. Your work here is very much appreciated.
Summary
Installing allium from the marketplace registers the seven skills, the two
hooks, and the LSP server, but none of the five agents. The agent files ship
correctly and are well-formed; the explicit "agents" array in
.claude-plugin/plugin.json appears to suppress their discovery. Removing that
key makes all five register.
The install reports success and nothing warns, so the agents go missing
silently. Unlike #24, there is no /doctor error to follow.
Reproduction
/plugin marketplace add juxt/claude-plugins
/plugin install allium
claude plugin details allium@juxt-plugins
Observed:
Component inventory
Skills (7) allium, distill, elicit, propagate, tend, weed, witness
Agents (0)
Hooks (2) PreToolUse, PostToolUse (harness-only — no model context cost)
MCP servers (0)
LSP servers (1) allium (out-of-process tooling; no model context cost)
Expected: Agents (5) distill, propagate, tend, weed, witness
What we narrowed it down to
Removing the "agents" key from the installed manifest:
~/.claude/plugins/cache/juxt-plugins/allium/3.15.0/.claude-plugin/plugin.json
immediately changes the inventory to:
Agents (5) weed, witness, tend, propagate, distill
Nothing else was touched — the five agents/*.md files are unchanged, and
convention-based discovery of agents/ finds them fine on its own.
Two things we ruled out along the way:
- Agent frontmatter. We first suspected the YAML-sequence form of
tools:
in agents/weed.md, since the Claude Code docs show a comma-separated string.
Rewriting it as tools: Read, Glob, Grep, Edit, Write, Bash changed nothing —
still Agents (0). We restored the file.
- Directory layout.
agents/ at the plugin root is correct. As a control,
codex@openai-codex uses the same layout, declares no component keys at
all in its plugin.json, and registers its agent normally (Agents (1)).
So the difference between the two plugins is the presence of the explicit
declaration, not the file location or contents.
Possible fix
Dropping "agents" from plugin.json and letting convention handle it seems to
be all that's needed. We haven't checked whether the key is simply unsupported
in the current manifest schema or whether it's being parsed and then discarded —
you'll have a much better sense of which.
It may be worthwhile to look at "skills" too: those do register today, so the two keys are
evidently treated differently, and it might be worth confirming which component
keys the schema actually honours. #24 and #39 suggest this manifest has been
accreting keys over time.
Environment
|
|
| Claude Code |
2.1.247 |
| Plugin |
allium@juxt-plugins 3.15.0 (scripts/allium-ref.txt = v3.15.0) |
allium CLI |
3.5.3 (language versions: 1, 2, 3) |
| OS |
Linux (WSL2) |
| Install scope |
user |
Workaround for anyone else hitting this
Delete the "agents" key from the installed plugin.json at the path above.
Note that any plugin update restores the vendored copy and the agents disappear
again, so it isn't a durable fix.
Happy to test a patch or supply any further detail — and thanks again for the
pinned-vendoring setup in juxt/claude-plugins; sync-allium.sh plus the drift
check made it straightforward to work out exactly what we had installed.
First, thank you for Allium. Your work here is very much appreciated.
Summary
Installing
alliumfrom the marketplace registers the seven skills, the twohooks, and the LSP server, but none of the five agents. The agent files ship
correctly and are well-formed; the explicit
"agents"array in.claude-plugin/plugin.jsonappears to suppress their discovery. Removing thatkey makes all five register.
The install reports success and nothing warns, so the agents go missing
silently. Unlike #24, there is no
/doctorerror to follow.Reproduction
Observed:
Expected:
Agents (5) distill, propagate, tend, weed, witnessWhat we narrowed it down to
Removing the
"agents"key from the installed manifest:immediately changes the inventory to:
Nothing else was touched — the five
agents/*.mdfiles are unchanged, andconvention-based discovery of
agents/finds them fine on its own.Two things we ruled out along the way:
tools:in
agents/weed.md, since the Claude Code docs show a comma-separated string.Rewriting it as
tools: Read, Glob, Grep, Edit, Write, Bashchanged nothing —still
Agents (0). We restored the file.agents/at the plugin root is correct. As a control,codex@openai-codexuses the same layout, declares no component keys atall in its
plugin.json, and registers its agent normally (Agents (1)).So the difference between the two plugins is the presence of the explicit
declaration, not the file location or contents.
Possible fix
Dropping
"agents"fromplugin.jsonand letting convention handle it seems tobe all that's needed. We haven't checked whether the key is simply unsupported
in the current manifest schema or whether it's being parsed and then discarded —
you'll have a much better sense of which.
It may be worthwhile to look at
"skills"too: those do register today, so the two keys areevidently treated differently, and it might be worth confirming which component
keys the schema actually honours. #24 and #39 suggest this manifest has been
accreting keys over time.
Environment
allium@juxt-plugins3.15.0 (scripts/allium-ref.txt=v3.15.0)alliumCLIWorkaround for anyone else hitting this
Delete the
"agents"key from the installedplugin.jsonat the path above.Note that any plugin update restores the vendored copy and the agents disappear
again, so it isn't a durable fix.
Happy to test a patch or supply any further detail — and thanks again for the
pinned-vendoring setup in
juxt/claude-plugins;sync-allium.shplus the driftcheck made it straightforward to work out exactly what we had installed.