Skip to content

feat(ci): implement dynamic plugin discovery for semantic-release - #30

Merged
baleen37 merged 1 commit into
mainfrom
feat/dynamic-plugin-discovery
Jan 23, 2026
Merged

feat(ci): implement dynamic plugin discovery for semantic-release#30
baleen37 merged 1 commit into
mainfrom
feat/dynamic-plugin-discovery

Conversation

@baleen37

@baleen37 baleen37 commented Jan 23, 2026

Copy link
Copy Markdown
Owner

Summary

Add automatic plugin discovery from plugins/ directory to eliminate manual maintenance of plugin list in .releaserc.js. This fixes the issue where strategic-compact was missing from version updates.

Changes

  • Add discoverPlugins() function to .releaserc.js using fs.readdirSync
  • Update release.yml to read version from marketplace.json instead of hardcoded plugin path
  • Update CLAUDE.md and README.md to use generic examples

Test plan

  • bats tests/ passes (75 tests)
  • Plugin discovery test confirms 6 plugins found (including strategic-compact)

Summary by CodeRabbit

  • New Features

    • Plugins now auto-discovered at runtime; eliminates manual list configuration.
    • New script to automatically install/update all available marketplace plugins with per-plugin success/failure reporting.
    • Expanded public plugin catalog with three additional plugins.
  • Documentation

    • Updated guides to reflect auto-discovery model and refreshed project structure examples.

✏️ Tip: You can customize this high-level summary in your review settings.

Add automatic plugin discovery from plugins/ directory to eliminate manual
maintenance of plugin list in .releaserc.js. This fixes the issue where
strategic-compact was missing from version updates.

Changes:
- Add discoverPlugins() function to .releaserc.js using fs.readdirSync
- Update release.yml to read version from marketplace.json instead of
  hardcoded plugin path
- Update CLAUDE.md and README.md to use generic examples

Co-Authored-By: Claude <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jan 23, 2026

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

This PR shifts plugin management from hardcoded plugin lists to dynamic discovery. It updates the release workflow to read versions from marketplace.json, adds plugin discovery scanning in .releaserc.js, introduces an auto-update script for plugins, and updates documentation accordingly.

Changes

Cohort / File(s) Summary
Release & Build Configuration
.github/workflows/release.yml, .releaserc.js
Release workflow now reads version from marketplace.json instead of a hardcoded plugin path; .releaserc.js adds dynamic plugin discovery by scanning the plugins directory for .claude-plugin/plugin.json subdirectories instead of using a static list.
Documentation
CLAUDE.md, README.md
Project structure examples refactored to use example-plugin as the single example; documentation updated to reflect auto-discovery approach and new plugin structure; added note that .releaserc.js requires no modification.
Plugin Auto-Update Tooling
plugins/auto-updater/commands/update-all-plugins.md, plugins/auto-updater/scripts/update-all-plugins.sh
Command documentation and user-facing guidance updated to reflect new per-plugin install/update workflow; new Bash script introduced that downloads marketplace.json, iterates through plugins, resolves their marketplace mappings, and runs claude plugin install for each with error handling and per-plugin reporting.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

released

Poem

🐰 Dynamic plugins hop and play,
No hardcoded lists in our way!
Marketplace.json guides each quest,
Auto-discovery works the best,
Release workflows now more spry! ✨

✨ Finishing touches
  • 📝 Generate docstrings

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.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant