Skip to content

Introduce a skeleton directory for hosting Claude plugins#6656

Open
jrhee17 wants to merge 2 commits intoline:mainfrom
jrhee17:misc/claude-plugin
Open

Introduce a skeleton directory for hosting Claude plugins#6656
jrhee17 wants to merge 2 commits intoline:mainfrom
jrhee17:misc/claude-plugin

Conversation

@jrhee17
Copy link
Contributor

@jrhee17 jrhee17 commented Mar 6, 2026

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:

  • Plugins will be hosted in a separate directory within the repository - independent from the site
    • While it may be nice for documentation references to be embedded in the skill, testing shows that Claude can read the documentation hosted (although I assume each session will have to fetch newly if not in the context already). This may be improved on later if necessary
    • As installing the plugin is not very difficult, I don't think the additional complexity of hosting the files separately on the website is worth it. If there are any users interested, we may support later.
  • A single common plugin is published for now
    • While we may later consider publishing a plugin per-module, I think it's simplest to start with a single plugin.
      • All skills/agents aren't loaded in the context immediately from what I understand
      • If context consumption is a problem, maybe disable-model-invocation can help

Modifications:

  • Added a marketplace.json which contains the version/plugin information
  • Added a Claude related page under Community which describes how the plugin may be used
  • Created a skeleton directory for skills

Result:

ref:
스크린샷 2026-03-06 오전 11 22 50

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 6, 2026

📝 Walkthrough

Walkthrough

Adds a Claude plugin marketplace configuration and associated community documentation for Armeria. The marketplace entry points to tools/claude-plugins/armeria in the repo; docs include installation and contribution guidance and the community sidebar is updated to surface the page.

Changes

Cohort / File(s) Summary
Plugin Configuration
.claude-plugin/marketplace.json
New marketplace JSON declaring the armeria plugin with a git-subdir source pointing to https://github.com/line/armeria.git and path tools/claude-plugins/armeria.
Community Documentation
site-new/src/content/community/claude-plugin.mdx, site-new/src/content/community/index.mdx
Adds a new community page describing the Claude plugin (installation via marketplace, contributing guidelines) and moves/introduces an "Using AI assistants? 🤖" section in the community index.
Sidebar
site-new/sidebarsCommunity.ts
Updated community sidebar to include the new claude-plugin entry.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 I hopped to the repo and found a new door,
A Claude plugin market to share and explore.
Skills and commands from tools/claude-plugins/armeria gleam,
Contributors unite — a collaborative dream. ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: introducing a skeleton directory structure for Claude plugins, which matches the PR's primary objective.
Description check ✅ Passed The description clearly explains the motivation, considerations, and modifications made, with specific details about hosting Claude plugins and creating infrastructure.
Linked Issues check ✅ Passed The PR implements the core requirements from issue #6639: adds marketplace.json configuration [#6639], creates documentation page for plugin usage [#6639], and establishes skeleton directory structure for plugins [#6639].
Out of Scope Changes check ✅ Passed All changes are directly aligned with issue #6639 objectives: marketplace configuration, community documentation, sidebar update, and skeleton directory structure for hosting Claude plugins.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@jrhee17
Copy link
Contributor Author

jrhee17 commented Mar 6, 2026

@novoj Once this PR is merged, I think the proposed skill can be added to the directory.
Let me know what you think

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between eb83aad and e2dae1a.

📒 Files selected for processing (5)
  • .claude-plugin/marketplace.json
  • site-new/sidebarsCommunity.ts
  • site-new/src/content/community/claude-plugin.mdx
  • site-new/src/content/community/index.mdx
  • tools/claude-plugins/armeria/skills/.gitkeep

Comment on lines +13 to +18
"name": "armeria",
"source": {
"source": "git-subdir",
"url": "https://github.com/line/armeria.git",
"path": "tools/claude-plugins/armeria"
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 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
done

Repository: 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.

Comment on lines +18 to +20
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

find site-new -type f -name "claude-plugin.mdx" | head -5

Repository: 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 -n

Repository: 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 | sort

Repository: 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)

(docs.claude.com)

Key “skills vs commands” structure rules

  • Skills: skills/<skill-name>/SKILL.md (a directory per skill). Supporting files (reference docs, examples, scripts) live alongside SKILL.md inside that skill directory. (docs.claude.com)
  • Commands: in plugins, commands/ is treated as legacy skill markdown files; new work should prefer skills/. (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’s SKILL.md (useful for skill-local scripts/files). (docs.claude.com)

Citations:


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.

Suggested change
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.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
.claude-plugin/marketplace.json (1)

13-17: ⚠️ Potential issue | 🟠 Major

Avoid 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.json and 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' | sort

Expected 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

📥 Commits

Reviewing files that changed from the base of the PR and between e2dae1a and ab420dd.

📒 Files selected for processing (1)
  • .claude-plugin/marketplace.json

@novoj
Copy link
Contributor

novoj commented Mar 6, 2026

I"d love to contribute!

@jrhee17 jrhee17 marked this pull request as ready for review March 6, 2026 05:43
Copy link
Contributor

@ikhoon ikhoon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍👍

{
"name": "armeria",
"source": {
"source": "git-subdir",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: armeria@armeria looks repetitive. Should we use a different plugin name like assistant@armeria or helper@armeria?

Copy link
Contributor

@minwoox minwoox left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 👍 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provide a way for Armeria users to contribute/use Armeria-specific Claude plugins

4 participants