Introduce a skeleton directory for hosting Claude plugins#6656
Introduce a skeleton directory for hosting Claude plugins#6656
Conversation
📝 WalkthroughWalkthroughAdds a Claude plugin marketplace configuration and associated community documentation for Armeria. The marketplace entry points to Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@novoj Once this PR is merged, I think the proposed skill can be added to the directory. |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.claude-plugin/marketplace.json:
- Around line 13-18: The marketplace entry for "armeria" points to a plugin
directory that only contains placeholders; create a proper
.claude-plugin/plugin.json manifest in the armeria plugin (include required
fields like name, version, description, author, entrypoint/handler, and any
permissions) and add at least one real component under the skills/ directory
(replace the .gitkeep with a skill folder that includes its own skill manifest
and implementation/command files), then ensure the new skill's entrypoint
matches the plugin manifest so the marketplace can install and load the plugin.
In `@site-new/src/content/community/claude-plugin.mdx`:
- Around line 18-20: Update the step that instructs contributors to add
documentation under tools/claude-plugins/armeria so it points to the discovered
locations: instruct them to create or update files under
tools/claude-plugins/armeria/skills/<skill-name>/SKILL.md or
tools/claude-plugins/armeria/commands/<command-name>.md (not the plugin root),
and note that Claude Code only loads SKILL.md in skills/ and .md files in
commands/ so content placed elsewhere will be ignored.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 5a6b70f0-382a-4cf9-9fc1-46179060b4c0
📒 Files selected for processing (5)
.claude-plugin/marketplace.jsonsite-new/sidebarsCommunity.tssite-new/src/content/community/claude-plugin.mdxsite-new/src/content/community/index.mdxtools/claude-plugins/armeria/skills/.gitkeep
| "name": "armeria", | ||
| "source": { | ||
| "source": "git-subdir", | ||
| "url": "https://github.com/line/armeria.git", | ||
| "path": "tools/claude-plugins/armeria" | ||
| } |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Check if plugin manifest exists
if [ -f tools/claude-plugins/armeria/.claude-plugin/plugin.json ]; then
echo "✓ Plugin manifest found"
cat tools/claude-plugins/armeria/.claude-plugin/plugin.json
else
echo "✗ Plugin manifest NOT found"
fi
echo
echo "=== Directory structure under tools/claude-plugins/armeria ==="
fd -HI . tools/claude-plugins/armeria -t f 2>/dev/null | head -30
echo
echo "=== Checking for component directories ==="
for dir in skills commands tools integrations; do
if [ -d "tools/claude-plugins/armeria/$dir" ]; then
echo "✓ Found /$dir"
fd -HI . tools/claude-plugins/armeria/$dir -t f 2>/dev/null
fi
doneRepository: line/armeria
Length of output: 297
The referenced plugin directory lacks required manifest and components for marketplace installation.
This marketplace entry cannot function: tools/claude-plugins/armeria/ is missing the required .claude-plugin/plugin.json manifest and contains only empty placeholder directories. The skills/ directory exists but has no actual components (only .gitkeep). Create the plugin manifest and add at least one skill or command before users can install this plugin via the marketplace.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.claude-plugin/marketplace.json around lines 13 - 18, The marketplace entry
for "armeria" points to a plugin directory that only contains placeholders;
create a proper .claude-plugin/plugin.json manifest in the armeria plugin
(include required fields like name, version, description, author,
entrypoint/handler, and any permissions) and add at least one real component
under the skills/ directory (replace the .gitkeep with a skill folder that
includes its own skill manifest and implementation/command files), then ensure
the new skill's entrypoint matches the plugin manifest so the marketplace can
install and load the plugin.
| 1. Create or update a markdown file in `<project dir>/tools/claude-plugins/armeria` | ||
| 2. Reference official Armeria documentation URLs if applicable | ||
| 3. Submit a pull request for review |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
find site-new -type f -name "claude-plugin.mdx" | head -5Repository: line/armeria
Length of output: 104
🏁 Script executed:
# Once we locate the file, read the specific lines
sed -n '1,30p' site-new/src/content/community/claude-plugin.mdx 2>/dev/null | cat -nRepository: line/armeria
Length of output: 902
🏁 Script executed:
# Check if tools/claude-plugins/armeria directory exists and what structure it has
find tools/claude-plugins/armeria -type f -o -type d 2>/dev/null | sortRepository: line/armeria
Length of output: 165
🌐 Web query:
Claude Code plugin skills commands directory structure reference docs
💡 Result:
Official reference docs for Claude Code plugins / skills / commands (including directory layout):
- Plugins reference (schema + directory structure + troubleshooting): “Plugins reference” (docs.claude.com)
- Create plugins (tutorial + manifest + testing): “Create plugins” (docs.claude.com)
- Skills authoring guide (SKILL.md format, supporting files, env vars): “Extend Claude with skills” (docs.claude.com)
Canonical plugin directory structure (skills + commands)
A plugin is a normal folder; only the manifest lives under .claude-plugin/. Everything else (skills/commands/etc.) must be at the plugin root. (docs.claude.com)
my-plugin/
├── .claude-plugin/
│ └── plugin.json
├── skills/
│ └── my-skill/
│ ├── SKILL.md
│ ├── reference.md (optional)
│ └── scripts/ (optional)
├── commands/ (legacy; markdown files)
│ └── something.md
├── agents/
├── hooks/
│ └── hooks.json
├── settings.json (optional)
├── .mcp.json (optional)
└── .lsp.json (optional)
Key “skills vs commands” structure rules
- Skills:
skills/<skill-name>/SKILL.md(a directory per skill). Supporting files (reference docs, examples, scripts) live alongsideSKILL.mdinside that skill directory. (docs.claude.com) - Commands: in plugins,
commands/is treated as legacy skill markdown files; new work should preferskills/. (docs.claude.com) - Useful paths:
${CLAUDE_PLUGIN_ROOT}→ absolute path to the plugin root (useful for scripts/hooks). (docs.claude.com)${CLAUDE_SKILL_DIR}→ directory containing the active skill’sSKILL.md(useful for skill-local scripts/files). (docs.claude.com)
Citations:
- 1: https://docs.claude.com/en/docs/claude-code/plugins-reference
- 2: https://docs.claude.com/en/docs/claude-code/plugins
- 3: https://docs.claude.com/en/docs/claude-code/skills
- 4: https://docs.claude.com/en/docs/claude-code/plugins-reference
- 5: https://docs.claude.com/en/docs/claude-code/plugins-reference
- 6: https://docs.claude.com/en/docs/claude-code/skills
- 7: https://docs.claude.com/en/docs/claude-code/plugins-reference
- 8: https://docs.claude.com/en/docs/claude-code/plugins-reference
- 9: https://docs.claude.com/en/docs/claude-code/skills
Point contributors at skills/ or commands/, not the plugin root.
Line 18 currently tells people to add markdown directly under tools/claude-plugins/armeria, but Claude Code only discovers plugin functionality from skills/<skill-name>/SKILL.md or commands/<command-name>.md at the plugin root. As written, contributors can follow these steps and still add files that Claude Code never loads.
✏️ Proposed doc fix
-1. Create or update a markdown file in `<project dir>/tools/claude-plugins/armeria`
+1. Create or update a plugin component under `<project dir>/tools/claude-plugins/armeria`, for example:
+ - `skills/<skill-name>/SKILL.md` for a skill, or
+ - `commands/<command-name>.md` for a command
2. Reference official Armeria documentation URLs if applicable
3. Submit a pull request for review📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 1. Create or update a markdown file in `<project dir>/tools/claude-plugins/armeria` | |
| 2. Reference official Armeria documentation URLs if applicable | |
| 3. Submit a pull request for review | |
| 1. Create or update a plugin component under `<project dir>/tools/claude-plugins/armeria`, for example: | |
| - `skills/<skill-name>/SKILL.md` for a skill, or | |
| - `commands/<command-name>.md` for a command | |
| 2. Reference official Armeria documentation URLs if applicable | |
| 3. Submit a pull request for review |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@site-new/src/content/community/claude-plugin.mdx` around lines 18 - 20,
Update the step that instructs contributors to add documentation under
tools/claude-plugins/armeria so it points to the discovered locations: instruct
them to create or update files under
tools/claude-plugins/armeria/skills/<skill-name>/SKILL.md or
tools/claude-plugins/armeria/commands/<command-name>.md (not the plugin root),
and note that Claude Code only loads SKILL.md in skills/ and .md files in
commands/ so content placed elsewhere will be ignored.
There was a problem hiding this comment.
♻️ Duplicate comments (1)
.claude-plugin/marketplace.json (1)
13-17:⚠️ Potential issue | 🟠 MajorAvoid publishing a marketplace entry before the target plugin is installable.
Line 17 points at
tools/claude-plugins/armeria, but the PR context still describes that tree as a skeleton. If it still lacks.claude-plugin/plugin.jsonand at least one real skill/command, installs from this marketplace entry will fail.#!/bin/bash set -euo pipefail plugin_root="tools/claude-plugins/armeria" if [ ! -d "$plugin_root" ]; then echo "missing plugin directory: $plugin_root" exit 0 fi echo "== plugin manifest ==" if [ -f "$plugin_root/.claude-plugin/plugin.json" ]; then sed -n '1,160p' "$plugin_root/.claude-plugin/plugin.json" else echo "missing: $plugin_root/.claude-plugin/plugin.json" fi echo echo "== non-placeholder files under plugin root ==" find "$plugin_root" -type f ! -name '.gitkeep' | sortExpected result: the manifest exists, and the file listing includes at least one actual plugin asset beyond placeholders.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.claude-plugin/marketplace.json around lines 13 - 17, The marketplace entry named "armeria" points to a git-subdir path but the plugin sub-tree is still a skeleton; either remove this marketplace entry or make the plugin installable by adding a valid manifest at .claude-plugin/plugin.json and at least one real skill/command file (not just placeholders) under the plugin root so installs succeed; update the entry only after verifying the manifest and assets exist for the "armeria" plugin source.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In @.claude-plugin/marketplace.json:
- Around line 13-17: The marketplace entry named "armeria" points to a
git-subdir path but the plugin sub-tree is still a skeleton; either remove this
marketplace entry or make the plugin installable by adding a valid manifest at
.claude-plugin/plugin.json and at least one real skill/command file (not just
placeholders) under the plugin root so installs succeed; update the entry only
after verifying the manifest and assets exist for the "armeria" plugin source.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: f32ea7d5-f928-4d12-95d0-601686d09d68
📒 Files selected for processing (1)
.claude-plugin/marketplace.json
|
I"d love to contribute! |
| { | ||
| "name": "armeria", | ||
| "source": { | ||
| "source": "git-subdir", |
There was a problem hiding this comment.
Noted Claude partially clones to fetch the sub directory.
https://code.claude.com/docs/en/plugin-marketplaces#git-subdirectories
|
|
||
| ```bash | ||
| /plugin marketplace add line/armeria | ||
| /plugin install armeria@armeria |
There was a problem hiding this comment.
nit: armeria@armeria looks repetitive. Should we use a different plugin name like assistant@armeria or helper@armeria?
Motivation:
Recently, there was an agreement to host claude plugins with useful features (skills/agents) that may aid in development using Armeria.
This PR introduces a basic skeleton directory, and a page on the armeria site explaining the motivation.
Considerations:
disable-model-invocationcan helpModifications:
marketplace.jsonwhich contains the version/plugin informationClauderelated page underCommunitywhich describes how the plugin may be usedResult:
ref:
