a220632186
Release / build-and-release (push) Has been cancelled
Two regressions were silently breaking /last30days for every user:
1. plugin.json declared "skills": ["./"], which newer Claude Code
rejects with "Path escapes plugin directory: ./ (skills)". The
skill loader refused to register the command, so /last30days
returned "Unknown command" even though /plugin list showed the
plugin as installed. Fix: "skills": ["skills"] so the loader
scans the real subdirectory.
2. marketplace.json pinned "version": "3.0.0" while plugin.json
advertised "3.0.1". The /plugin resolver used the marketplace
version and could install a phantom user-scope copy at a stale
SHA alongside the correct project-scope install, creating
duplicate skill-name collisions. Both manifests now agree on
3.0.2.
Prior attempt: commit 93fbed2 fixed (1) before but got reverted.
This lands both fixes together in a tagged release so users can
/plugin update to recover.
Recovery for affected users is in CHANGELOG.md under 3.0.2.
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
68 lines
2.0 KiB
JSON
68 lines
2.0 KiB
JSON
{
|
|
"name": "last30days-skill",
|
|
"version": "3.0.2",
|
|
"description": "Research a topic from the last 30 days across Reddit, X, YouTube, TikTok, Instagram, Hacker News, Polymarket, and the web.",
|
|
"settings": [
|
|
{
|
|
"name": "Extension Directory",
|
|
"description": "Extension installation directory (auto-set by Gemini CLI)",
|
|
"envVar": "GEMINI_EXTENSION_DIR",
|
|
"sensitive": false
|
|
},
|
|
{
|
|
"name": "ScrapeCreators API Key",
|
|
"description": "ScrapeCreators API Key for Reddit, TikTok, and Instagram search (required)",
|
|
"envVar": "SCRAPECREATORS_API_KEY",
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"name": "OpenAI API Key",
|
|
"description": "OpenAI API Key - optional fallback for Reddit discovery",
|
|
"envVar": "OPENAI_API_KEY",
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"name": "xAI API Key",
|
|
"description": "xAI API Key for X/Twitter search (optional)",
|
|
"envVar": "XAI_API_KEY",
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"name": "OpenRouter API Key",
|
|
"description": "OpenRouter API Key (optional)",
|
|
"envVar": "OPENROUTER_API_KEY",
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"name": "Parallel AI API Key",
|
|
"description": "Parallel AI API Key (optional)",
|
|
"envVar": "PARALLEL_API_KEY",
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"name": "Brave Search API Key",
|
|
"description": "Brave Search API Key (optional)",
|
|
"envVar": "BRAVE_API_KEY",
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"name": "Apify API Token",
|
|
"description": "Apify API Token (optional legacy)",
|
|
"envVar": "APIFY_API_TOKEN",
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"name": "Twitter AUTH_TOKEN",
|
|
"description": "Twitter browser AUTH_TOKEN cookie for direct X search (optional)",
|
|
"envVar": "AUTH_TOKEN",
|
|
"sensitive": true
|
|
},
|
|
{
|
|
"name": "Twitter CT0",
|
|
"description": "Twitter browser CT0 cookie (optional, pair with AUTH_TOKEN)",
|
|
"envVar": "CT0",
|
|
"sensitive": true
|
|
}
|
|
]
|
|
}
|