Skip to content

feat: convert to Claude Code marketplace plugin#1

Closed
galligan wants to merge 2 commits intomvanhorn:mainfrom
galligan:galligan/feat/add-claude-plugin
Closed

feat: convert to Claude Code marketplace plugin#1
galligan wants to merge 2 commits intomvanhorn:mainfrom
galligan:galligan/feat/add-claude-plugin

Conversation

@galligan
Copy link
Copy Markdown

@galligan galligan commented Jan 26, 2026

Yo @mvanhorn! This is a really cool skill. Going to play around with a bit more for myself. But in the meantime, I saw that it wasn't yet set up as a Claude Code plugin, and figured that might make it easier for some to install it vs. go through forking/installing, etc. Plus that way you can version it, make updates, and anyone with it installed via Claude will get the updates.

Happy Claude-ing!

Summary

  • Restructure repository from standalone skill to Claude Code marketplace plugin format
  • Add .claude-plugin/marketplace.json with marketplace name last30days
  • Add last30days/.claude-plugin/plugin.json with plugin manifest
  • Move skill files into last30days/ plugin directory structure
  • Update script paths to use ${CLAUDE_PLUGIN_ROOT}
  • Update README with plugin installation instructions

Installation

Users can now install with:

claude plugin marketplace add mvanhorn/last30days-skill
claude plugin install last30days@last30days

Test plan

  • Validate marketplace.json syntax with jq
  • Verify skill frontmatter intact
  • Test script invocation in mock mode
  • Test local plugin installation with claude plugin marketplace add

Restructure repository from standalone skill to Claude Code marketplace plugin
format for easier installation via `claude plugin marketplace add`.

Changes:
- Add .claude-plugin/marketplace.json with marketplace name 'l30d'
- Add last30days/.claude-plugin/plugin.json with plugin manifest
- Move skill files into last30days/ plugin directory structure
- Update script paths to use ${CLAUDE_PLUGIN_ROOT}
- Update README with plugin installation instructions

Users can now install with:
  claude plugin marketplace add mvanhorn/last30days-skill
  claude plugin install last30days@l30d

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@mplacona
Copy link
Copy Markdown

Please merge this!

@mvanhorn
Copy link
Copy Markdown
Owner

Love this! One small request: can you change the marketplace name from l30d to last30days in marketplace.json? I think it'll be more discoverable. Once you push that I'll merge!

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@galligan
Copy link
Copy Markdown
Author

Done! @mvanhorn — renamed to last30days in both marketplace.json and the README install command. Also threw in a .gitignore while I was in there (that __pycache__ was bugging me).

Ready when you are.

mvanhorn added a commit that referenced this pull request Feb 7, 2026
- Add .claude-plugin/marketplace.json and plugin.json manifests
- Use ${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/skills/last30days} for script path
- Plugin install: uses CLAUDE_PLUGIN_ROOT when set
- Manual install: falls back to ~/.claude/skills/last30days (no breakage)
- SKILL.md stays at root, plugin.json points skills to "./"

Users can now install via:
  claude plugin marketplace add mvanhorn/last30days-skill
  claude plugin install last30days@last30days

Inspired by PR #1 (galligan) — lighter approach without repo restructure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@mvanhorn
Copy link
Copy Markdown
Owner

mvanhorn commented Feb 7, 2026

Thanks for this PR, Matt! We took a lighter approach to marketplace plugin support in V2 — shipping a .claude-plugin/plugin.json inspired by your conversion work here. Your PR was the catalyst for adding plugin compatibility. 🙏

Closing this PR since we went a different direction on implementation, but you're credited in the README for the inspiration. Appreciate you pushing on this early.

@mvanhorn mvanhorn closed this Feb 7, 2026
mvanhorn added a commit that referenced this pull request Feb 15, 2026
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
MrMaksimize pushed a commit to MrMaksimize/last30days-skill that referenced this pull request Feb 24, 2026
…vanhorn#3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
mvanhorn added a commit that referenced this pull request Feb 28, 2026
…s an outcome

The Gamma API only searches event titles/slugs, missing markets where the
topic is an outcome (e.g., "Arizona" in NCAA Tournament Winner). This adds:

- All-word query expansion (not just first word): "Arizona Basketball" now
  searches "Arizona", "Basketball" independently
- Tag-based domain expansion: extracts category tags (e.g., "NCAA") from
  first-pass results and searches those as a second pass
- Neg-risk binary market synthesis: shows team names from market questions
  instead of generic Yes/No outcomes
- Question shortening: extracts "Arizona" from "Will Arizona win the NCAA
  Tournament?" for clean display
- Increased depth (3 pages) and result caps (15) for more coverage

Live results: "Arizona Basketball" now finds NCAA Tournament Winner (12%),
#1 Seed (88%), Big 12 Champion (69%). "Iran War" returns 15 markets (up
from 9) with no regression.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
mvanhorn added a commit that referenced this pull request Feb 28, 2026
…d Anthropic odds example

Reorder v2.5 features: Polymarket prediction markets and HN lead as #1,
multi-signal quality-ranked relevance scoring as #2. Add Anthropic Odds
example showcasing 11 live markets from a two-word query. Add Anthropic
and OpenAI Polymarket transcripts to launch tweets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
KevynCyber added a commit to KevynCyber/last30days-skill that referenced this pull request Mar 8, 2026
…traversal, prompt injection

Security hardening based on comprehensive audit:

1. Browser cookie extraction now requires explicit opt-in via
   BIRD_ALLOW_BROWSER_COOKIES=1 env var. Previously, bird-search silently
   accessed OS keystore (DPAPI/Keychain/keyring) when AUTH_TOKEN/CT0 were
   not set. Fixes Finding mvanhorn#1 (High).

2. SKILL.md bash snippet moves $ARGUMENTS after -- separator to prevent
   flag injection into the Python script. Fixes Finding mvanhorn#2 (Medium).

3. Added untrusted-source warning in synthesis instructions to defend
   against indirect prompt injection from fetched social media content.
   Fixes Finding mvanhorn#5 (Medium).

4. --save-dir now validated to be within home directory, preventing
   path traversal writes. Fixes Finding mvanhorn#7 (Low).

5. Security & Permissions section corrected — no longer claims "no browser
   session access" (was inaccurate). Now accurately documents browser
   cookie fallback behavior. Fixes Finding mvanhorn#1 disclosure.

6. Codex auth docstring updated to note implicit credential usage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

3 participants