jonosin/jstack-skills
Composable agent-workflow skills for planning, communication, knowledge work, and media analysis.
Scan the Meta Ad Library for advertisers and pull their ads (creative, flight dates, video files, store/landing links) with no API key or identity verification. Use when the user says /adscan, "scan the ad library", "find advertisers running ads for X", "pull [app/brand]'s Meta ads", "who's advertising X on Facebook/Instagram", or wants competitor/lead ad creative from the Meta Ad Library. Wraps the local adscan repo.
Explain a topic with a terminal-safe ASCII diagram and short legend. Use for “explain this with ASCII” or when the user requests a text diagram of a process, system, architecture, relationship, or idea.
Autonomous goal-directed iteration loop: modify, verify, keep/discard against ANY mechanical metric — until the metric stops improving or the iteration budget runs out. A faithful port of Karpathy's autoresearch (via uditgoenka/autoresearch, the generalized Claude-skill version). Use when Jono says /autoresearch, 'autoresearch this', 'iterate until [metric] improves', 'optimize X against a metric', 'run an improvement loop', 'keep tuning until the number goes up/down', or wants an unattended modify→verify→keep/revert loop on code, content, configs, or skills. Routes to per-command references: the core loop, plan (goal→config), improve (research→PRDs), evals (analyze runs), regression (stability gate). For tuning a SKILL's output specifically, see /skillify Mode B, which applies this engine to skills.
Compile pending raw evidence into canonical second-brain knowledge, run a bounded migration, or maintain the brain. Use when the user asks for brainwork, compile, migration, schema or link checks, overlay freshness, generated views, verification, or a dry run.
Find a Claude Code session by natural-language description and return the claude --resume command. Use when the user says /cc-find, find a Claude session about X, where is the Claude session where I discussed Y, search my past Claude sessions, locate an old Claude conversation, or wants to resume a Claude session they can't find by id.
Two-way bridge between a Claude Code session and Claude Design (claude.ai/design). Use when Jono says /cdesign (optionally with a mode arg: new-system | build | edit | assets), 'hand this to Claude Design', 'set up Claude design for this', 'build a design system in Claude Design', 'build this on my [name] design system', 'edit the Claude Design build', 'pull the design back', 'push this edit to the design', or 'feed/generate assets for Claude Design'. Routes by use case: create a new design system, build a deliverable on an existing one, edit an existing build with session context, or generate assets (imgen/vidgen) and feed them in. Reads from and writes to the project via the DesignSync MCP connector, so Claude Code can round-trip edits itself. Brain capture stays separate (/savetobrain).
Router for using GPT-5.5 via the OpenAI Codex CLI as a subagent. Four modes — advisor (adversarial pressure-test of the user's position; replaces jstack-challenge), review (independent code/plan review), implement (clear-spec bulk implementation), investigate (research/diagnosis/data analysis). Use when the user says "/codex", "/jstack-challenge", "challenge me", "pressure test this", "second opinion", "spawn an advisor", "stress test my thinking", "play devil's advocate", "have codex review/implement/investigate X", "send this to codex", or "run this on gpt-5.5". Global CLAUDE.md decides WHEN to route work to codex; this skill is HOW to brief it.
Author beautiful, hand-drawn-style Excalidraw diagrams and export them to PNG/SVG headlessly. Use when you need to draw a clear, designed-looking visual — a flow, architecture, system, tree, sequence, or concept — anything where a picture beats text. Routes to an auto-layout pipeline (author in Mermaid, the engine places everything) and a design methodology for diagrams that visually argue, then renders + self-validates with no browser or auth.
Wait, re-pitch that. Then stay tight: shorten ~40%, plain words, ASCII where it helps. Triggered by "/focus", "focus", "wait-what", "wait what", "re-pitch that", "less wordy", "stop explaining", "keep it short", "tired of reading". Turn off with "/focus off" or when asked for normal detail.
Use when the user asks to create, process, package, repair, or validate reusable pixel-art environment tiles and objects for a named world style.
DEPRECATED — do not invoke. Use when you would otherwise reach for ggdesign-init to initialize a design system (DESIGN.md); that trigger now routes to /init instead. New build repo needing a design system → /init (build path, can init DESIGN.md deterministically). Standalone DESIGN.md init in an existing repo → run scripts/init_design.py in init.
Install a PreToolUse hook that mechanically blocks destructive git commands (push, reset --hard, clean -f, branch -D, checkout .) before they execute. Use when setting up git safety guardrails, 'protect my repo from destructive git', or after any near-miss with a destructive git command.
Work through a code or strategic decision while maintaining its canonical workspace artifact. Use when the user wants to grill, think through, or stress-test a code, product, business, marketing, or strategy decision; choose the branch before asking questions.
Front-door router for ALL go-to-market and marketing work. Use whenever the user talks about GTM, go-to-market, launch, positioning, ICP, pricing, sales motion, growth system, competitor/market research, or any marketing execution: copywriting, landing pages, CRO, SEO/AI-SEO, paid ads, ad creative, email sequences, cold email, social content, content strategy, lead magnets, onboarding, churn, referrals, analytics, PR, offers, popups, paywalls, signup flows, marketing plans, or a marketing playbook. Also home of the cold-outbound copy doctrine: drafting, reviewing, optimizing, or A/B-testing cold emails, LinkedIn InMails/DMs, connection notes, openers, subject lines, follow-up sequences, or fixing low reply rates (absorbed coldmsg via references/cold-outreach.md). Routes strategy intents to the GTM-Strategist phase pack and execution intents to the canonical marketing playbooks under ~/.jstack/marketing-skills. Does not generate output itself.
Compact the current conversation into a handoff document for another agent to pick up. Use when you need a recap, a directed attended handoff, or a /goal prompt from an existing execution spec.
Fast deterministic single-file HTML docs and optional Chrome PDF/PNG rendering for agent reports, one-pagers, dashboards, client deliverables, briefs, comparison tables, and visual information artifacts. Use when an agent needs a repeatable on-brand HTML document quickly, not a creative frontend exploration or full web app.
Thin router to HeyGen HyperFrames — the HTML-native motion-graphics engine (write HTML, render deterministic MP4 locally via headless Chrome + FFmpeg). Use when the user says "hyperframe", "hyperframes", "animated overlay", "motion graphics", "html to video", "animated caption", "animated hook text", "kinetic captions", "kinetic titles", "end card", "lower third", or wants to author/render an HTML composition to MP4 or browse the HyperFrames block catalog. NOT for generative video (that is /vidgen) and NOT for StayFrame static text overlays (that stays on /jstack-sf-caption).
Gemini image generation CLI wrapper. General-purpose: generate images with Gemini image models (3-pro-image, 3.1-flash-image, 2.5-flash-image) via Vertex AI. Supports reference images, chroma-key post-processing, and batch generation. Use when the user says: generate an image, create a sprite, image generation, gemini image, imgen, or otherwise asks to produce a new image with Gemini.
Scaffold a new project repo and wire it into the second brain. Two paths — VENTURE (lean work-product satellite at ~/ventures/[slug]/: strategy, services, GTM) or BUILD (a codebase at ~/builds/[slug]/: app, agent, internal tool). Both born coupled to the brain (hub page + satellites registry + sb index/log/check). Use when Jono says /init, /jstack-new-venture (legacy alias), new venture, new build, new project, scaffold a repo, spin up a venture/build, start a new app/tool, create a satellite repo, or init a design system / DESIGN.md (the deprecated ggdesign-init folds into the build path here).
Research what people actually say about any topic in the last 30 days. Pulls posts and engagement from Reddit, X, YouTube, TikTok, Hacker News, Polymarket, GitHub, and the web. Use when the user wants a recency scan, a community-sentiment check, or a 'what is everyone saying about X' report.
Front door / router for LinkedIn prospecting and outreach automation; routes to the right sub-skill (lead-list builder, Sales Navigator lead extractor, or the auto-send pipeline). Use when the user wants LinkedIn lead-gen, Sales Navigator work, cold InMail automation, to scrape/find prospects, or to automate LinkedIn outreach and is unsure which LinkedIn sub-skill applies.
Use when extracting or enriching LinkedIn Sales Navigator leads from an already-open Sales Navigator people search tab via the local OpenCLI build, including requests like "extract 100 leads from the current Sales Nav tab" or "pull enriched Sales Navigator profiles".
Build the per-lead prospects.csv (subject + message + Sales Navigator /sales/people link + A/B variant) and auto-send LinkedIn Sales Navigator InMails in halt-safe batches over CDP, then track A/B reply and conversion rates (demo/call/deposit). Use when the user wants to automate Sales Navigator sends or InMails, send a cold InMail batch, burn LinkedIn InMail credits, or track which A/B variant replied or converted.
Draft outbound in the user's own voice AND keep that voice canon current. DRAFT mode (default): use before writing, rewriting, polishing, or replying to emails, DMs, LinkedIn messages, follow-ups, intros, product updates, scheduling notes, warm asks, paid-pilot framing, cold messages, OR any spoken script the user will say out loud (Looms, VSLs, video VO, call openers) where they want it to sound like a real person, not an assistant. The voice composes on two axes: a MODE (warm founder vs confident sales) and a CHANNEL (typed vs spoken). Triggers: draft in my voice, write this email/DM/cold message, script this Loom/VSL, and "in my confident/sales voice" or "in my warm voice" to force a mode. LEARN/CAPTURE mode: when the intent is learn my voice, capture my voice, remember how I talk, update my voice, or harmonize my voice, fold an approved draft or correction into the voice canon. Always enforce the user's punctuation preference: never use em dashes.
Deterministically synchronize the approved second-brain wiki/raw sources and allowlisted satellite documentation into the hosted OpenBrain retrieval database. Use when the user says OpenBrain sync, refresh OpenBrain, ingest the brain into OpenBrain, update the ChatGPT brain connector, or verify OpenBrain retrieval.
Convert any website into a CLI and run Browser Use on Jono's logged-in Brave session via the local OpenCLI build at ~/builds/OpenCLI — defaulting to the extension-free CDP bypass (Brave on port 9222), never the Browser Bridge extension. Use when Jono says /opencli, "use opencli", "run an opencli command", "turn this website into a CLI", "make an opencli tool/adapter for a site", "scrape/extract a site from my logged-in session", "drive my Brave session headlessly", or wants to run/author OpenCLI commands against a logged-in browser without the Chrome extension. Routes to the OpenCLI repo, runs commands through the CDP-bypass wrapper, and mandates that any NEW tool defaults to the bypass too.
Extract and download the full property photo gallery from an OTA listing (Booking.com verified; Agoda/Airbnb/Expedia/direct-booking engines via the same pattern) at max resolution, with optional perceptual dedupe and optional stayframe-qa review batch output. Use when the user says /otagallery, "download the photos from booking.com", "pull the gallery from the OTA listing", "get every photo of a property", "the listing has N images, download them all", or any request to collect a hotel/resort/villa's listing photos for the Stayframe pipeline.
Run a premortem on any plan, launch, product, hire, strategy, or decision. Assumes it already failed 6 months from now and works backward to find every reason why. Produces a revised plan with blind spots exposed. MANDATORY TRIGGERS: 'premortem this', 'premortem my', 'run a premortem', 'what could kill this', 'future-proof this', 'stress test this plan', 'what am i missing here', 'find the blind spots'. STRONG TRIGGERS: 'what could go wrong', 'am i missing anything', 'poke holes in this', 'where will this break', 'devil's advocate this'. Do NOT trigger on simple feedback requests, factual questions, or LLM Council requests. DO trigger when someone has a plan or commitment where the cost of being wrong is high.
Retrieve second-brain facts, decisions, context, and evidence through the Graphify-first retrieval overlay. Use when a request needs current canonical knowledge, a linked explanation or path, exact raw evidence, a quote, a disputed or stale claim, or a high-stakes answer. The skill uses bounded second-brain sb query, path, explain, and node get commands; it does not run Graphify installation or build workflows during normal retrieval.
Route research requests through Exa, Tavily, Jina, GitHub, xAI, and Apify lanes with local credential loading. Use when the user asks to research, look something up, discover or compare options, find sources, search repos/code, or check current facts — invoke at the START of any research, discovery, comparison, current-facts lookup, repo-finding, or source-collection request, before choosing a search tool.
Save durable output. Routes: (1) YouTube URL → deterministic transcript capture; (2) X/Twitter URL → deterministic source capture; (3) GitHub repository URL or owner/repo → deterministic compact repository guide capture; (4) session content → location-aware capture. Use when the user says /savetobrain, save to brain, save this to the second brain, capture this, remember this in the second brain, or provides a YouTube/X/GitHub link to save in the brain.
Extract a Claude Code session transcript from the second-brain Claude project as a raw drop, ready for /brainwork to ingest. Reuses the jstack transcript extractor but writes to raw/personal/drops/ (or raw/personal/scratch/ with --staging). Use when the user says /savetobrain-from-cc, save this Claude session to the brain, capture the current Claude session, or wants a Claude Code transcript preserved as second-brain raw material.
Run or schedule a headless Claude Code session from any harness (Claude Code, Hermes, Codex). Use when Jono says /schedule-cc, "schedule a claude run", "run a claude prompt", "every day at 3am have claude do X", "kick off claude in [dir]", "launch claude headless", "send this to claude", or "continue claude session [id]". Two modes — run now (on demand) or schedule (registers a Hermes cron job that fires the prompt on a timer). It collects working directory, prompt, model, and session (fresh or existing); when scheduling it also asks whether the job is one-shot or recurring and when. Always runs claude with --dangerously-skip-permissions (autonomous), pins --session-id so runs are resumable, scheduled runs detach so they survive the cron timeout (40 min+ ok), and they report a start + a result message to the Hermes home channel. Invoke bare to be asked everything, or in natural language and it asks only for what is missing.
Route a second-brain request to its smallest playbook. Use when the user asks for canonical facts, raw evidence, generated-map navigation, Graphify output work, capture, compilation, migration, maintenance, or satellite content.
Help the user understand the current topic visually. Use when the user asks to show how something works, see a flow, compare states, or make a concept easier to understand.
Turn a proven workflow into a reusable skill, or make a repeatable part of an existing skill run by code. Use when successful work should become a skill, or an existing skill has a repeatable step that should be scripted. Use /skilltune to measure output improvements.
Tune an EXISTING jstack skill to improve its ACCURACY or EFFICIENCY — a metric-driven autoresearch loop (adapted from GodModeAI2025/skill-forge) that, in a temp sandbox, mutates the SKILL.md one change at a time, scores each against a held-out eval set (assertions + cold judge + efficiency), keeps wins / reverts regressions, promotes on green, then deletes the sandbox. Use when Jono names an existing skill and says 'tune this skill', 'make this skill more accurate', 'make this skill's output consistent / reliable', 'improve/iterate/optimize this skill', 'make the skill more efficient', 'eval this skill', or '/skilltune [name]'. NOT for creating a new skill or restructuring one into deterministic code — that is /skillify.
Owns the jstack skill family — packaging convention AND suite setup. Use when creating, authoring, scaffolding, or packaging a jstack skill ("make a jstack skill", "new jstack skill", "add a jstack skill"), and when installing or configuring the suite ("set up jstack", "install jstack", "configure jstack", "/jstack-setup", or just cloned the repo and want it wired into Claude Code, Codex, or Hermes).
Teach the user a new skill or concept over multiple sessions, building a persistent teaching workspace under ~/.jstack/teach. Use when the user says /teach, "teach me X", "help me learn X", "walk me through X", "prep me for X", "get me up to speed on X", "I want to understand X", or "tutor me on X". Stateful: it grounds every lesson in a mission, gathers trusted resources, produces beautiful interactive HTML lessons, and tracks what the user has learned.
Create a durable, outcome-led execution spec from settled context. Use when an agreed change or delivery needs one authoritative contract for a fresh task or multi-session work.
Diagnose and fix the recurring "I just ran vercel login, but vercel whoami / vercel deploy still fails" scenario. Use when Jono hits Vercel CLI auth errors ("specified token is not valid", "missing_scope", "Provide --scope or --team explicitly") even right after logging in, on any new Vercel-deploying project. Deterministic: runs a fixed diagnostic checklist (stale VERCEL_TOKEN env var, outdated CLI with a broken --scope flag, missing default team scope), reports exactly what's wrong, and can apply the one safe automatic fix (CLI upgrade).
Universal video-generation router: invoke every time we generate a video. Enforces ask-duration+resolution, show-the-exact-prompt-and-craft-skill-used, no dup-frame; routes prompt craft to the video-prod-skills plugin and generation to the available video backend — Topview (Vidu/Seedance/Kling) or Veo 3.1 on Vertex AI (GCP credits via ADC).
Analyze images, audio, video, or PDFs using Google Gemini via Vertex AI (GCP credits). Generic multimodal router. Use when the user explicitly says "analyze with gemini", "use gemini vision", "run through gemini", "transcribe with gemini", "describe with gemini", or invokes /vision. Works on any media file the caller supplies — photos, screenshots, diagrams, UI, products, art, audio, video, documents. NOT for: live streams, real-time analysis, or when the host model's own vision/audio is acceptable.