2f16ff1ee8
Add gemini-extension.json manifest with correct array-format settings, symlink skills/last30days/SKILL.md to root SKILL.md for Gemini skill discovery, add Gemini install paths to bash for-loop in both main and open variant, and add Gemini CLI install instructions to README. Incorporates the good parts of PR #53 (manifest, paths, README) while avoiding duplicate SKILL.md, tool name scattering, and allowed-tools pollution that would have created maintenance issues. Closes #45 Co-Authored-By: Alex Ferrari <alex@thealexferrari.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
name, version, description, argument-hint, allowed-tools
| name | version | description | argument-hint | allowed-tools |
|---|---|---|---|---|
| last30days | 2.1-open | Research topics, manage watchlists, get briefings, query history. Also triggered by 'last30'. Sources: Reddit, X, YouTube, web. | last30 AI video tools, last30 watch my competitor every week, last30 give me my briefing | Bash, Read, Write, AskUserQuestion, WebSearch |
last30days (open variant): Research + Watchlist + Briefings
Multi-mode research skill with persistent knowledge accumulation.
Command Routing
Parse the user's first argument to determine the mode:
| First word | Mode | Reference |
|---|---|---|
watch |
Watchlist management | references/watchlist.md |
briefing |
Morning briefing | references/briefing.md |
history |
Query accumulated knowledge | references/history.md |
| (anything else) | One-shot research | references/research.md |
Setup: Find Skill Root
for dir in \
"." \
"${CLAUDE_PLUGIN_ROOT:-}" \
"${GEMINI_EXTENSION_DIR:-}" \
"$HOME/.gemini/extensions/last30days-skill" \
"$HOME/.gemini/extensions/last30days" \
"$HOME/.claude/skills/last30days" \
"$HOME/.agents/skills/last30days" \
"$HOME/.codex/skills/last30days"; do
[ -n "$dir" ] && [ -f "$dir/scripts/last30days.py" ] && SKILL_ROOT="$dir" && break
done
if [ -z "${SKILL_ROOT:-}" ]; then
echo "ERROR: Could not find scripts/last30days.py" >&2
exit 1
fi
Use $SKILL_ROOT for all script and reference file paths.
Load Context
At session start, read ${SKILL_ROOT}/variants/open/context.md for user preferences and source quality notes. Update it after interactions.
Shared Configuration
- Database:
~/.local/share/last30days/research.db(SQLite, WAL mode) - Briefings:
~/.local/share/last30days/briefs/ - API keys:
~/.config/last30days/.envor environment variables - Key priority: env vars > config file
API Keys
| Key | Required | Purpose |
|---|---|---|
OPENAI_API_KEY |
For Reddit | Reddit search via OpenAI responses API |
XAI_API_KEY |
For X (fallback) | X search via xAI Grok API |
PARALLEL_API_KEY |
Optional | Web search via Parallel AI |
BRAVE_API_KEY |
Optional | Web search via Brave Search |
OPENROUTER_API_KEY |
Optional | Web search via Perplexity Sonar Pro |
Bird CLI provides free X search if installed. YouTube search uses yt-dlp (free).
Run python3 "${SKILL_ROOT}/scripts/last30days.py" --diagnose to check source availability.
Routing Logic
After determining the mode, read the corresponding reference file using the Read tool:
Read: ${SKILL_ROOT}/variants/open/references/{mode}.md
Then follow the instructions in that reference file exactly.