From grep-research-skills
Create research-backed slidedecks via Grep. Use when the user asks for a presentation, pitch deck, slides, "deck about X", or "presentation on Y". Covers market research, competitive analysis, product pitches, technical overviews, sales enablement. Returns an HTML slidedeck (slides.html or deck.html) in the job workspace. Routes to the app-builder expert with output_type=slidedeck — v2 translates that to expert_id=app-builder + effort=build + a "Create a slidedeck about: " question prefix (~$2.00, 10-15 min).
How this skill is triggered — by the user, by Claude, or both
Slash command
/grep-research-skills:grep-build-slidedeckThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Routes a presentation request to Grep's app-builder expert with `output_type=slidedeck` — a sugar form that pins `expert_id=app-builder + effort=build + "Create a slidedeck about: " prefix`. The result is an HTML slidedeck (typically `slides.html` or `deck.html`) in the job's workspace, with arrow-key navigation and `?print-pdf` export support.
Routes a presentation request to Grep's app-builder expert with output_type=slidedeck — a sugar form that pins expert_id=app-builder + effort=build + "Create a slidedeck about: " prefix. The result is an HTML slidedeck (typically slides.html or deck.html) in the job's workspace, with arrow-key navigation and ?print-pdf export support.
| User wants | Use |
|---|---|
| Slides / presentation / pitch deck / deck | /grep-build-slidedeck (you are here) |
| Interactive HTML app (dashboard, tool) | /grep-build-app |
| Spreadsheet / table / comparison matrix | /grep-build-spreadsheet |
| Plain research report | /research, /grep-domain-expert |
Concrete signals: "deck about", "presentation on", "pitch deck for", "slides covering", "investor presentation", "sales enablement deck".
node "$SCRIPTS_DIR/update-check.js" 2>/dev/null &
The user must be authenticated. Slidedeck jobs run at effort=build (~$2.00 PAYG, 10-15 min).
node "$SCRIPTS_DIR/auth.js" status
If "authenticated": false, automatically invoke /grep-login.
SCRIPTS_DIR="$(dirname "$(dirname "$(dirname "$(readlink -f "${CLAUDE_SKILL_DIR}/SKILL.md")")")")/scripts"
RESOURCES_DIR="$(dirname "$SCRIPTS_DIR")/resources"
"Slidedeck jobs take 10-15 minutes and cost about $2 (PAYG) or count against your subscription. I'll submit now and stream live updates."
If the request is short/specific ("pitch deck for Anthropic Series E investors"), skip clarification.
If scope is fuzzy ("make me a deck about AI"), use AskUserQuestion with these options:
Skip if the answers are obvious from the prompt.
If the user wants a specific deck structure (e.g. enforced sections, citation format, chart slots), plan to pass --json-schema-file="$RESOURCES_DIR/slidedeck_schema.json" to the submit command in Step 5 (do NOT submit yet — refine the prompt in Step 4 first).
The schema constrains slides to a structured form: title + subtitle + slides[], each with heading, body (string or bullet array), layout (title / bullets / two-column / image / chart / quote), optional chart spec, optional citations.
For free-form decks, omit the schema flag — the app-builder picks layout, styling, and length on its own.
Don't submit here. This step decides whether the schema flag will be added to Step 5's command. The actual submit happens once, in Step 5.
Refine the user's raw request into a deck brief:
Example:
Submit ONCE here, using the refined prompt from Step 4. Append --json-schema-file=... only if Step 3 said to use the schema.
Free-form (no schema):
node "$SCRIPTS_DIR/grep-api.js" run "<refined>" \
--output-type=slidedeck --max-wait=1800 2>&1
Schema-constrained:
node "$SCRIPTS_DIR/grep-api.js" run "<refined>" \
--output-type=slidedeck \
--json-schema-file="$RESOURCES_DIR/slidedeck_schema.json" \
--max-wait=1800 2>&1
--output-type=slidedeck is sugar for --expert-id=app-builder --effort=build with a "Create a slidedeck about: " prefix added server-side. You don't need both.
Run with Monitor (timeout_ms: 1800000, persistent: false). Only one submit per skill invocation — the build tier is ~$2 each, double-submitting is bad UX.
"Slidedeck job
<slug>started — 10-15 min. I'll stream updates and post the URL when ready."
When the job completes:
node "$SCRIPTS_DIR/grep-api.js" files <slug>
Find the deck — typically:
slides.html (most common)deck.htmlindex.html (fallback)Print the URL — use $GREP_API_BASE (or fall back to https://api.grep.ai) so staging / preview environments work too:
API_BASE="${GREP_API_BASE:-https://api.grep.ai}"
echo "$API_BASE/api/v2/research/<slug>/files/slides.html"
Tell the user how to view:
"Your slidedeck is ready:
$API_BASE/api/v2/research/<slug>/files/slides.html
- Navigate: arrow keys (left/right) to step through slides
- Export PDF: open the URL with
?print-pdfappended, then your browser's Print → Save as PDF- Local copy:
curl -L "$API_BASE/api/v2/research/<slug>/files/slides.html" -H 'Authorization: Bearer <token>' > /tmp/deck.html && open /tmp/deck.html"
The URL is auth-protected (workspace files require the user's session token).
If the user wants tweaks (different palette, swap a section, add a slide), suggest /grep-continue <slug> "<follow-up>" — re-runs at the same effort tier and builds on the same workspace, cheaper than a fresh job.
--effort=low or --effort=medium with --output-type=slidedeck — the sugar already pins effort=build. Mixing them is a contract violation; the API will pick the explicit --effort and produce a draft, not a deck./grep-build-app — slidedecks have a slide-template assumption baked into the prefix).--max-wait=540 — slidedeck builds need 10-15 min. Always --max-wait=1800 + Monitor.Exit code 2 means --max-wait elapsed but the job is still running server-side. Tell the user "Still building (job: ). Checking back in 5 min." Then result <slug> once enough time passes, or switch to the /ultra-research polling pattern (/loop cron every 5 min).
npx claudepluginhub parcha-ai/grep-research-skills --plugin grep-research-skillsCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.