From claude-resources
Performs web research on libraries, APIs, best practices, and technical topics using OpenAI Codex CLI. Auto-activates on 'research', 'look up', or 'investigate' keywords.
npx claudepluginhub takazudo/claude-resourcesThis skill is limited to using the following tools:
Web research via the codex plugin companion script, synthesized by Claude Code.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
Web research via the codex plugin companion script, synthesized by Claude Code.
The codex plugin provides a companion script for running tasks. Resolve it dynamically:
CODEX_PLUGIN_ROOT=$(command ls -d "$HOME/.claude/plugins/cache/openai-codex/codex"/*/ 2>/dev/null | sort -V | tail -1)
CODEX_COMPANION="${CODEX_PLUGIN_ROOT}scripts/codex-companion.mjs"
If the file does not exist, report "Codex plugin not installed. Run /codex:setup first." and fall back to Claude Code research.
Usage for research tasks:
node "$CODEX_COMPANION" task "<research prompt>"
The task command runs Codex in read-only mode by default (no --write flag), which is appropriate for research.
Before doing anything, check if Codex is currently rate-limited:
RATE_CHECK=$(node $HOME/.claude/scripts/codex-rate-limit.js check 2>&1)
RATE_EXIT=$?
If RATE_EXIT is non-zero (rate-limited), skip all codex steps and jump directly to the Fallback step. Do NOT report the rate limit to the user — silently fall back.
Clarify what needs to be researched:
Craft a focused prompt:
Research the following topic: <topic>
Specific questions to answer:
1. <question 1>
2. <question 2>
3. <question 3>
Provide:
- Key findings with sources/URLs where possible
- Comparison of alternatives if applicable
- Concrete recommendations based on findings
- Code examples if relevant
Be thorough but concise. Cite sources.
LOGDIR=$(node $HOME/.claude/scripts/get-logdir.js)
mkdir -p "$LOGDIR"
DATETIME=$(date +%Y%m%d_%H%M%S)
# Resolve codex companion script
CODEX_PLUGIN_ROOT=$(command ls -d "$HOME/.claude/plugins/cache/openai-codex/codex"/*/ 2>/dev/null | sort -V | tail -1)
CODEX_COMPANION="${CODEX_PLUGIN_ROOT}scripts/codex-companion.mjs"
# Detect timeout command (gtimeout on macOS via coreutils, timeout on Linux/WSL)
if command -v gtimeout &>/dev/null; then
TIMEOUT_CMD="gtimeout"
elif command -v timeout &>/dev/null; then
TIMEOUT_CMD="timeout"
else
TIMEOUT_CMD=""
echo "WARNING: neither gtimeout nor timeout found. Running without timeout."
fi
${TIMEOUT_CMD:+$TIMEOUT_CMD} ${TIMEOUT_CMD:+1200} node "$CODEX_COMPANION" task \
"<research prompt>" \
> "$LOGDIR/${DATETIME}-codex-research-{topic-slug}.md" \
2>"$LOGDIR/${DATETIME}-codex-research-{topic-slug}-stderr.log"
Timeout: 20 minutes. Research can take longer than other tasks.
After codex completes (or times out), check output files for rate limit errors:
node $HOME/.claude/scripts/codex-rate-limit.js check-output \
"$LOGDIR/${DATETIME}-codex-research-{topic-slug}.md" \
"$LOGDIR/${DATETIME}-codex-research-{topic-slug}-stderr.log"
If exit code is non-zero (rate limit detected), jump to Fallback.
If codex times out, produces no output, or is rate-limited:
researcher subagent to perform the research via Claude Code tools (WebSearch, WebFetch, etc.)Save the final synthesized findings:
node $HOME/.claude/scripts/save-file.js "{logdir}/{timestamp}-research-{topic}.md" "<content>"
Then format:
pnpm dlx @takazudo/mdx-formatter --write <file>
researcher subagentresearcher subagent if codex fails~ in paths — use $HOME