Skip to content

Plugin review findings #52

@bryan-anthropic

Description

@bryan-anthropic

Plugin review findings

Thank you for submitting the LaunchDarkly agent skills plugin. While reviewing the repository we identified a few items in the plugin manifest and skills layout that prevent the plugin from being accepted into the public Claude Code plugin marketplace in its current shape. None are security concerns — they are structural and schema-conformance issues. Details below.

Findings

1. Non-schema logo key in plugin.json (fix)

Location: .claude-plugin/plugin.json"logo": "logo.svg" entry.

The documented plugin manifest schema does not include a logo field. Remove "logo" from plugin.json. The logo.svg asset in the repo root can still be referenced from the README or other documentation.

2. Skills layout — nested under category directories, exposed via symlinks (blocker)

Locations:

  • skills/ai-configs/, skills/feature-flags/, skills/metrics/ (category directories; no SKILL.md)
  • 15 symlinks at skills/<skill-name>skills/<category>/<skill-name>/

The documented skill layout is skills/<skill-name>/SKILL.md — one SKILL.md per directory directly under skills/. See https://docs.claude.com/en/docs/claude-code/skills.

The current repository layout places 15 skills under three category directories (ai-configs/, feature-flags/, metrics/) and exposes them at the expected top-level path via symlinks. The three category directories themselves contain no SKILL.md, so a strict reader counts them as broken skills.

The symlink workaround may resolve correctly on macOS and Linux at install time due to OS-level symlink handling, but symlink traversal inside skills/ is not a documented or supported part of the plugin loader contract — the loader is documented to discover skills at exactly skills/<name>/SKILL.md. Relying on symlinks is risky for long-term portability.

Recommended fix: flatten skills/ so each skill is a direct child (skills/aiconfig-migrate/, skills/flag-archive/, etc.) and remove the category-grouping layer + symlinks. Category metadata, if useful for organization, can be captured in each skill's frontmatter (e.g., category: feature-flags) rather than in directory structure.

3. No marketplace.json (recommended)

Location: .claude-plugin/ (currently absent).

A .claude-plugin/marketplace.json is recommended if you want users to be able to run /plugin marketplace add launchdarkly/ai-tooling to install directly from your repo. It is not strictly required for inclusion in the public Claude Code plugin marketplace — entries there are managed centrally — but it makes direct installs possible. Most single-plugin repos place marketplace.json at .claude-plugin/marketplace.json pointing the single entry at ./.

References

Next steps

Once items 1 and 2 above are addressed we can re-run the review. Item 3 is optional. Happy to answer questions on any of the above.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions