{"type":"queue-operation","operation":"enqueue","timestamp":"2026-08-05T14:57:58.099Z","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","content":"reply with the single word OK\necho \"-- cursor-agent status:\"\ntimeout 60 cursor-agent status 2>&1 | grep -iE 'logged|auth|email|status|error' | FT_FROM_HOOK=1 ft head -5\n"}
{"type":"queue-operation","operation":"dequeue","timestamp":"2026-08-05T14:57:58.100Z","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b"}
{"parentUuid":null,"isSidechain":false,"attachment":{"type":"hook_non_blocking_error","hookName":"SessionStart:startup","toolUseID":"da20df89-ea5c-4674-a20b-e4044b9aadfd","hookEvent":"SessionStart","stderr":"Failed with non-blocking status code: /bin/sh: 1: /home/user/Projects/slopgate/.worktrees/fix/record-string-any-regex-performance/hooks/session-start.sh: not found","stdout":"","exitCode":127,"command":"/home/user/Projects/slopgate/.worktrees/fix/record-string-any-regex-performance/hooks/session-start.sh","durationMs":30},"type":"attachment","uuid":"2106d42e-a890-4845-81ca-7f2305ce9eda","timestamp":"2026-08-05T14:57:57.956Z","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"parentUuid":"2106d42e-a890-4845-81ca-7f2305ce9eda","isSidechain":false,"attachment":{"type":"hook_success","hookName":"SessionStart:startup","toolUseID":"da20df89-ea5c-4674-a20b-e4044b9aadfd","hookEvent":"SessionStart","content":"","stdout":"{\"hookSpecificOutput\":{\"hookEventName\":\"SessionStart\",\"additionalContext\":\"STRUCTURED TASK LIST: your TaskCreate/TaskUpdate tasks persist on disk across compaction — call TaskList to see current open tasks; do NOT assume they were lost.\"}}","stderr":"","exitCode":0,"command":"node /home/user/.claude/hooks/compact-context-restore.mjs","durationMs":132},"type":"attachment","uuid":"f7e19813-de68-40c9-994a-d6dec9ed77c5","timestamp":"2026-08-05T14:57:58.064Z","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"parentUuid":"f7e19813-de68-40c9-994a-d6dec9ed77c5","isSidechain":false,"attachment":{"type":"hook_additional_context","content":["STRUCTURED TASK LIST: your TaskCreate/TaskUpdate tasks persist on disk across compaction — call TaskList to see current open tasks; do NOT assume they were lost."],"hookName":"SessionStart","toolUseID":"SessionStart","hookEvent":"SessionStart"},"type":"attachment","uuid":"db83b265-7a22-473d-b63c-7bc3d7b83b63","timestamp":"2026-08-05T14:57:58.070Z","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"parentUuid":"db83b265-7a22-473d-b63c-7bc3d7b83b63","isSidechain":false,"promptId":"354e9b75-6b88-403d-b224-04653f7984a4","type":"user","message":{"role":"user","content":"reply with the single word OK\necho \"-- cursor-agent status:\"\ntimeout 60 cursor-agent status 2>&1 | grep -iE 'logged|auth|email|status|error' | FT_FROM_HOOK=1 ft head -5\n"},"uuid":"72c3c092-b518-4fe1-97eb-131207e2bb08","timestamp":"2026-08-05T14:57:58.150Z","permissionMode":"auto","promptSource":"sdk","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"parentUuid":"72c3c092-b518-4fe1-97eb-131207e2bb08","isSidechain":false,"attachment":{"type":"deferred_tools_delta","addedNames":["CronCreate","CronDelete","CronList","DesignSync","EnterWorktree","ExitWorktree","NotebookEdit","PushNotification","RemoteTrigger","SendMessage","TaskCreate","TaskGet","TaskList","TaskOutput","TaskStop","TaskUpdate","WebFetch","WebSearch"],"addedLines":["CronCreate","CronDelete","CronList","DesignSync","EnterWorktree","ExitWorktree","NotebookEdit","PushNotification","RemoteTrigger","SendMessage","TaskCreate","TaskGet","TaskList","TaskOutput","TaskStop","TaskUpdate","WebFetch","WebSearch"],"removedNames":[],"readdedNames":[],"pendingMcpServers":[],"needsAuthMcpServers":[]},"type":"attachment","uuid":"4372e720-4583-47bd-8b7d-9c039238bd5e","timestamp":"2026-08-05T14:57:58.148Z","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"parentUuid":"4372e720-4583-47bd-8b7d-9c039238bd5e","isSidechain":false,"attachment":{"type":"agent_listing_delta","addedTypes":["claude","code-reviewer","dead-advisor","Explore","general-purpose","Plan","security-guard","statusline-setup"],"addedLines":["- claude: Catch-all for any task that doesn't fit a more specific agent. FleetView's default when no agent name is typed. (Tools: *)","- code-reviewer: Use this agent when a major project step has been completed and needs to be reviewed against the original plan and coding standards. Examples: <example>Context: The user is creating a code-review agent that should be called after a logical chunk of code is written. user: \"I've finished implementing the user authentication system as outlined in step 3 of our plan\" assistant: \"Great work! Now let me use the code-reviewer agent to review the implementation against our plan and coding standards\" <commentary>Since a major project step has been completed, use the code-reviewer agent to validate the work against the plan and identify any issues.</commentary></example> <example>Context: User has completed a significant feature implementation. user: \"The API endpoints for the task management system are now complete - that covers step 2 from our architecture document\" assistant: \"Excellent! Let me have the code-reviewer agent examine this implementation to ensure it aligns with our plan and follows best practices\" <commentary>A numbered step from the planning document has been completed, so the code-reviewer agent should review the work.</commentary></example>\n (Tools: All tools)","- dead-advisor: Fallback for the built-in `advisor` tool when its API is failing. A reusable, session-persistent stronger-reviewer (opus, xhigh effort) that reconstructs the main agent's full conversation from the on-disk transcript and gives the same critical advice the `advisor` tool would. Spawn via the `/dead-advisor` skill, then continue across the session via SendMessage. Do NOT invoke directly — the skill supplies the disambiguating transcript marker this agent needs.\n (Tools: All tools)","- Explore: Read-only search agent for broad fan-out searches — when answering means sweeping many files, directories, or naming conventions and you only need the conclusion, not the file dumps. It reads excerpts rather than whole files, so it locates code; it doesn't review or audit it. Specify search breadth: \"medium\" for moderate exploration, \"very thorough\" for multiple locations and naming conventions. (Tools: All tools except Agent, Artifact, ExitPlanMode, Edit, Write, NotebookEdit)","- general-purpose: General-purpose agent for researching complex questions, searching for code, and executing multi-step tasks. When you are searching for a keyword or file and are not confident that you will find the right match in the first few tries use this agent to perform the search for you. (Tools: *)","- Plan: Software architect agent for designing implementation plans. Use this when you need to plan the implementation strategy for a task. Returns step-by-step plans, identifies critical files, and considers architectural trade-offs. (Tools: All tools except Agent, Artifact, ExitPlanMode, Edit, Write, NotebookEdit)","- security-guard: Independent, adversarial pre-ship / pre-merge security + correctness review of a specific file, route, or diff. Invoke as a FRESH cross-context pass — especially after a self-audit has \"converged\" or a change is about to ship — to catch what a self-review stops looking for: object-level authorization (IDOR), fail-open auth/crypto paths, side-channel/timing oracles, injection, SSRF, DoS, idempotency/atomicity, content-type confusion, and info-disclosure defects. Give it the exact file(s) or diff to review. Language- and platform-agnostic — works on any codebase with a trust boundary (web/API, CLI, library/SDK, mobile or desktop backend, infra/IaC, data pipeline, smart contract).\n\n<example>Context: a change is about to merge after the author already reviewed it. user: \"complete.ts is ready to ship — the attachment upload route.\" assistant: \"Before merge, let me run the security-guard agent as an independent adversarial pass over complete.ts.\" <commentary>Pre-ship gate on a specific route — the security-guard's core job is the fresh-eyes catch the author's converged review missed.</commentary></example>\n<example>Context: a multi-wave audit reported clean. user: \"the audit converged, no more P0/P1.\" assistant: \"Convergence on a self-audit is exactly when a fresh independent pass earns its place — running security-guard over the changed routes.\" <commentary>The documented failure mode: a converged self-audit stops hunting; an independent pass finds the residual miss.</commentary></example>\n (Tools: All tools)","- statusline-setup: Use this agent to configure the user's Claude Code status line setting. (Tools: Read, Edit)"],"removedTypes":[],"isInitial":true,"showConcurrencyNote":true},"type":"attachment","uuid":"99e972c6-3dc8-44c3-9523-d799fd659ed0","timestamp":"2026-08-05T14:57:58.148Z","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"parentUuid":"99e972c6-3dc8-44c3-9523-d799fd659ed0","isSidechain":false,"attachment":{"type":"skill_listing","content":"- agent-doc-authoring: Use when writing or editing any document AI agents will read — CLAUDE.md, AGENTS.md, specs, standards, plans, skill files (SKILL.md), subagent/system prompts. Also when a doc carries private codenames or nicknames, reads as prose narrative instead of imperatives, or needs naming/wording decisions for an agent audience. Read before writing the doc; check the diff against it before declaring the doc done.\n- agentify-doc: Use when asked to rewrite, compress, tighten, condense, shorten, or \"agentify\" an existing skill (SKILL.md), CLAUDE.md, spec, standard, plan, or agent/system prompt — or when such a doc is verbose, prose-heavy, token-bloated, duplicated, or full of filler for an agent audience. Triggers on \"make this leaner for agents\", \"cut tokens from this doc\", \"rewrite this skill concisely\", \"tokenomics\", \"agentify\".\n- ask-codex: Use when delegating a task to Codex CLI (OpenAI coding agent) via `cdx exec` — second opinion, code review, deep diagnosis, research, or implementation. Triggers on /ask-codex, \"ask codex\", \"ask gpt\", \"second opinion from codex/gpt-5\", \"have codex review/implement/investigate this\". Parses optional model/effort spec (e.g. 5.6-terra/high), builds prompt, calls cdx exec directly — never through a dispatched subagent.\n- astro: Astro+React island projects. Enforces hydration directive selection, provider context across island boundaries, SSR-safe react-query, SEO-preserving patterns. Triggers on *.astro, astro.config.*, React islands, @astrojs/react config edits.\n- babysit-runplan: Use when user asks to run/watch/babysit a run-plan — \"run the plan\", \"babysit the runplan\", \"is the plan still running\", \"the run died, continue it\" — or when a foreground runplan turn returns. Owns the launch-consume-branch loop; branches every failure on failureClass; only wrapper-engine-down is retriable.\n- brainstorm: You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.\n- caveman: Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says \"caveman mode\", \"talk like caveman\", \"use caveman\", \"less tokens\", \"be brief\", or invokes /caveman. Also auto-triggers when token efficiency is requested.\n- ci-cd-expert: Set up or fix efficient CI/CD on a self-hosted runner sharing a dev workstation — PR-gated trunk, shared build cache, CPU containment, flaky-gate diagnosis, browser/E2E matrix gates (sharding, completeness accounting, fake-green detection). Use when adding CI to a project, when a gate is slow/flaky/starving the machine, when a gate reads green but catches nothing, or when replicating the platform repo's CI stack elsewhere.\n- claudex-workflow: Run multi-agent work in Claudex via the Workflow tool with gpt models (luna/sol/terra). Use when the user asks for a dyn-wf, a dynamic workflow, parallel subagents, or names a gpt model for coding or review.\n- cloudflareops: Use for any Cloudflare operation — deploying Workers, wrangler commands, secrets, R2/D1/KV/Hyperdrive, cron triggers, Queues, Pages-vs-Workers decisions, Cloudflare Images, log tailing, or capacity/latency problems on the bundled plan. Picks MCP vs wrangler vs REST API before falling back to dashboard clicks. Triggers on \"deploy worker\", \"wrangler\", \"cloudflare\", \"R2 bucket\", \"D1\", \"KV namespace\", \"worker secret\", \"cron trigger\", \"queue costs\".\n- code-quality-reviewer: Use when reviewing implementation code for quality after spec compliance passes — checks structure, cognitive load, performance, maintainability, and seam/contract integrity for `@platform-modules/*`.\n- creating-journey-e2e-tests: Use when deriving an outcome-asserting end-to-end test from a user-journey contract (a UJ-NNN doc or equivalent flow spec) — turning a documented happy path + failure/permission branches into a Playwright (or similar) spec that actually catches UI and flow bugs. The derivation pass that follows create-journeys. Triggers on \"write the E2E for this journey\", \"derive a test from UJ-0NN\", \"make a real outcome test for the purchase flow\".\n- creating-mockups: Browser-based visual brainstorming companion for UI mockups, wireframes, and layout comparisons. Invoke only when user needs to see visual options — not for text/conceptual choices.\n- creating-ui-matrix-tests: Use when building granular per-page, per-role UI-element regression tests — asserting every button is clickable/disabled when it should be, every input/textarea/table/form renders per role, catching small UI regressions a flow test misses. Distinct from journey/flow tests. Ships a manifest-driven matrix harness template plus a deterministic validator that fails closed on rotted selectors, routes, and roles.\n- dead-advisor: Use when the built-in `advisor` tool fails with an API/network/server error and you still want a stronger-reviewer critique. Triggers on /dead-advisor, \"advisor is dead\", \"advisor API error\", \"advisor keeps failing\", \"fallback advisor\". Spins up (once per session) a reusable fable medium effort advisor subagent that reconstructs your full conversation from the on-disk transcript and returns the same kind of senior advice the `advisor` tool would, then continues via SendMessage on later calls.\n- debug: Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes\n- dispatching-parallel-agents: Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies\n- finishing-a-development-branch: Use when development is complete and verified — lands the feature branch (merge-to-main or open-a-PR, per project) and cleans up the worktree via the tested shared brain. Resolves conflicts by agent judgment; NEVER prompts the user.\n- handoff: Use when ending a session to create a handoff document so a fresh agent can continue the work\n- learn-from-mistakes: Use when a session ends or user invokes /learn-from-mistakes\n- memory-gc: Use to audit and prune persistent memory — \"is this memory still valid\", \"clean up memory\", \"are these memories stale\", \"memory gc\", periodic memory hygiene, or after large refactors/audits that likely invalidated recorded facts. Verifies each memory's claims against live repo/tool state, classifies CONFIRMED/SUSPECT/CONFLICTING/UNVERIFIABLE, updates or deletes with user sign-off on deletions.\n- pickup: Use when session opens with a bare continuation prompt — \"resume\", \"continue\", \"continue from where you left off\", \"pick up where we were\", \"what were we doing\" — or any restart after /clear, /compact, or crash where the user gives no task detail. Deterministically re-derives session state from git, run-plan journal, background tasks, handoff docs, and the on-disk transcript BEFORE acting. Never blind-continue.\n- plan: Use when you have a spec or requirements for a multi-step task, before touching code\n- plan-inventory: Use when the user asks what plans exist and their states — \"which plans are ready to run\", \"which are abandoned\", \"what's running right now\", \"list our plans\", \"which plan should I test on\" — or when another skill needs a plan slug the user didn't supply. Classifies docs/plans/* + runstate journals into running / ready / stalled / done / abandoned with a suggested action each.\n- plan-preflight: Use before launching any run-plan/workflow execution to drain every human decision out of the plan upfront — \"release all blockers before running\", \"will this HALT on anything?\", \"preflight the plan\", \"make this plan run unattended overnight\". Scans plan for HALT-shaped items (irreversible ops, requires_decision tasks, ambiguous scope, missing creds), batches all questions into one AskUserQuestion round, bakes answers into the plan.\n- prod-env: Production-environment doctrine for agents — how to PLAN a prod env, SET UP a prod env, or WORK IN a live prod env. Use when task involves creating/designing production infrastructure, deploying to production, cutting over a domain, touching live data/secrets/migrations, or when user says \"production\", \"go live\", \"prod env\", \"deploy to prod\". Router — loads one of three docs by task type.\n- run-plan: Use when the user runs \"/run-plan <PLAN_SLUG>\" or when any skill needs to execute or resume a plan — unified plan executor. Single engine: released v2 bundle (`runplan` on PATH → `~/.harness/engine/versions/<CURRENT>`), fail-closed, resumable via its own journal. Single entry point; replaces /resume-plan.\n- security-gate: Use as a pre-ship / pre-merge security + correctness gate on a payments or financial module, route, or diff — especially after a self-audit has \"converged\". Runs two legs (a deterministic complete-mediation oracle + a single-roll gpt-5.6-sol/low adversarial LLM review; k=1 floor validated on gpt-5.4/low, not yet re-validated on gpt-5.6-sol) over the target AND its pulled-in critical imports, then merges. Triggers on \"review before merge\", \"is this payment path safe\", \"audit this webhook/refund/payout/ledger code\", \"did the self-review miss anything\", \"IDOR\", \"self-deal\", \"complete mediation\", \"missing authorization check\" (the complete-mediation-scan procedure lives in references/). Re-validated 2026-07-02 (supersedes the older sonnet/medium k≥3 config — see VALIDATION.md).\n- ship: Use when the user invokes /ship or asks to execute an implementation plan in-session with subagents — wave-based dispatch (fresh implementer per task), two-stage review (spec compliance then code quality), automated verification, then land via the project's frozen ship.sh. In-session interactive strategy only — for unattended, resumable, or multi-wave engine runs use run-plan; for trivial single-wave sequential plans use run-plan's inline fallback.\n- ship-it: Use when user sends a terse landing command — \"push\", \"push deploy\", \"commit and push\", \"ship it\", \"land this\", \"clean up the worktree and branch\", \"wrap up\" — and expects the full gate→commit→land→deploy→cleanup chain without spelling it out. Runs verification gates, commits, lands per project rule, deploys where push=deploy, cleans worktrees.\n- skill-creator: Use when creating a skill from scratch, editing or improving an existing skill, verifying a skill works before deployment, running evals against a skill, benchmarking skill performance with variance analysis, or optimizing a skill's description for better triggering accuracy.\n- slopgate-improve: Mine a project's institutional memory (skills, agents, commands, CLAUDE.md, editor rules) for conventions not yet caught by slopgate, and add them to the right rule tier. Invoke on /slopgate-improve or when a recurring agent mistake is documented but undetected.\n- slopgate-init: Onboard any repo to the global slopgate engine. Detect stack, mine the project's OWN local conventions (.claude/skills|agents|commands + CLAUDE.md subtree + editor rules), evaluate which are statically-detectable rule candidates, author the project rule pack, drive violations to zero, wire + verify hooks. Use when adopting slopgate in a new project or re-evaluating an existing project's rules.\n- slopgate-ux: Inject the ANTI-SLOP UX framework as design directives before generating or modifying any UI. Enforces complete states, action hierarchy, feedback loops, accessibility, performance, and human-centric microcopy — the semantic UX rules a static scanner cannot catch. Use before building or editing components, pages, forms, modals, tables, or any user-facing interface. Complements the slopgate `ux:{}` static rule module (which gates the mechanical subset).\n- tdd: Use when implementing any feature or bugfix, before writing implementation code\n- threejs-animation: Three.js animation - keyframe animation, skeletal animation, morph targets, animation mixing. Use when animating objects, playing GLTF animations, creating procedural motion, or blending animations.\n- threejs-fundamentals: Three.js scene setup, cameras, renderer, Object3D hierarchy, coordinate systems. Use when setting up 3D scenes, creating cameras, configuring renderers, managing object hierarchies, or working with transforms.\n- threejs-geometry: Three.js geometry creation - built-in shapes, BufferGeometry, custom geometry, instancing. Use when creating 3D shapes, working with vertices, building custom meshes, or optimizing with instanced rendering.\n- threejs-interaction: Three.js interaction - raycasting, controls, mouse/touch input, object selection. Use when handling user input, implementing click detection, adding camera controls, or creating interactive 3D experiences.\n- threejs-lighting: Three.js lighting - light types, shadows, environment lighting. Use when adding lights, configuring shadows, setting up IBL, or optimizing lighting performance.\n- threejs-loaders: Three.js asset loading - GLTF, textures, images, models, async patterns. Use when loading 3D models, textures, HDR environments, or managing loading progress.\n- threejs-materials: Three.js materials - PBR, basic, phong, shader materials, material properties. Use when styling meshes, working with textures, creating custom shaders, or optimizing material performance.\n- threejs-postprocessing: Three.js post-processing - EffectComposer, bloom, DOF, screen effects. Use when adding visual effects, color grading, blur, glow, or creating custom screen-space shaders.\n- threejs-shaders: Three.js shaders - GLSL, ShaderMaterial, uniforms, custom effects. Use when creating custom visual effects, modifying vertices, writing fragment shaders, or extending built-in materials.\n- threejs-textures: Three.js textures - texture types, UV mapping, environment maps, texture settings. Use when working with images, UV coordinates, cubemaps, HDR environments, or texture optimization.\n- ui-designer: Use when building, restyling, reviewing, or polishing any UI in this project — components, pages, tokens, motion, loading states, typography, color — or when a task references the UI overhaul, a design template (\"premium\", \"futuristic\"), or asks whether a screen \"feels\" right.\n- using-git-worktrees: Use when starting implementation work that needs branch isolation — creates a .worktrees/ workspace before ship executes tasks\n- ux-designer: Design good UX for apps . Inject the ANTI-SLOP UX framework as design directives before generating or modifying any UI. Enforces complete states, action hierarchy, feedback loops, accessibility, performance, and human-centric microcopy — the semantic UX rules a static scanner cannot catch. Use before building or editing components, pages, forms, modals, tables, or any user-facing interface. Complements the slopgate `ux:{}` static rule module (which gates the mechanical subset).\n- webapp-testing: Playwright toolkit for local webapp testing. Verify frontend, debug UI, capture screenshots, view browser logs.\n- workflow-router: Use when choosing which executor/orchestrator/model to route a task to — \"which tool should handle this\", \"route this task\", before dispatching any implementation/review/plan-execution work, or whenever tempted to hand-pick a model or invoke an agent CLI raw. One routing table = the established daily-workflow defaults; consult it INSTEAD of improvising a dispatch.\n- accessibility: Run a pa11y accessibility scan on a URL and provide actionable recommendations. Use when asked for \"accessibility\" scan/report/audit or a full site report.\n- canvas-design: Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.\n- componentizer: Componentizer\n- create-journeys: Use when exploring an application to document user journeys, role-based workflows, actor surfaces, executable journey contracts, or a testable journey catalog.\n- deploy-nextjs-cloudflare: Deploy Next.js to Cloudflare Workers (via OpenNext)\n- extract-vision: Reconstruct a project's VISION.md from what the user actually typed into Claude Code prompt boxes over the project's life — real user messages + AskUserQuestion answers, separated from subagent/headless/harness noise, SYNTHESIZED into a coherent vision document. Use on /extract-vision <project-path>, \"what did I say I wanted for X\", \"rebuild the vision from my prompts\", or before writing GOLIVE/roadmap docs for a project whose intent lives only in chat history.\n- extracting-fable: Use when you want to reverse-engineer a model's working signature (narration, authoring, decision style) from local Claude Code transcripts on a machine that ran it — e.g. recreate the Fable corpus/KB/mode-skill on another PC, mine \"what would Fable do\", or build an imitation-mode skill for any model. Triggers on \"extract fable\", \"mine fable from logs\", \"rebuild the fable corpus\", \"redo the fable analysis here\".\n- fix-rot: Use when an agent shows compaction rot / context rot — lost the plot after a compact/summarize, forgot the session goal, repeating done work, ignoring standing user instructions, drifting from methodology, confused about what's next. Triggers on /fix-rot, \"you've lost context\", \"refresh your context\", \"you forgot what we're doing\", \"re-read the conversation\", \"recover the session\", \"you're rotting\", \"reorient yourself\". Reconstructs session goals, methodology, philosophy, user intent/directions/instructions, active/deferred/remaining tasks, what's gated on the user, and a prioritized immediate TODO — WITHOUT re-polluting the main thread. Emits the recovered context as a resumable harness-native JSONL (`docs/plans/`, keyed by a session slug) so `[[handoff]]` / `[[run-plan]]` continue it in another session.\n- ft: Run this shell command and show the output:\n- ft-probe: Run this shell command and show the exact output:\n- improve-codebase-architecture: Find deepening opportunities in codebase, informed by domain language in CONTEXT.md and decisions in docs/adr/. Use when user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make codebase more testable and AI-navigable.\n- mobile-ux: Treat this like phone design, not screen design. The user is holding an iPhone Pro Max one-handed.\n- trello: Use for Trello — list boards/lists/cards, create/move cards, complete tasks, execute TODO→DONE workflow via REST API.\n- vibeflare: Use when working with the vf CLI (VibeFlare command-line client) — running chat/completions from the shell, piping, scripting, login/setup, config env vars (VIBEFLARE_URL/KEY/MODEL), or debugging vf usage errors. Also covers VibeFlare REST API integration, API keys, and SDK/fetch embedding (references/api.md). Triggers on \"vf\", \"vibeflare\", \"vf login\", \"vf not working\", \"vibeflare API\".\n- visual-plan: Create an interactive Agent-Native visual plan for the current task.\n- wrap-up: End-of-session checklist for shipping, memory, and self-improvement\n- security-sweep: Map a repo's attack surface, then run an isolated adversarial security-guard review per high-risk unit with cross-model verification. Depth-per-unit, never whole-repo-at-once — the structure that catches what a converged self-audit misses.\n- dataviz: Use this skill whenever you are about to create ANY chart, graph, plot, dashboard, or data visualization, in ANY output medium — an HTML or React artifact, inline SVG, plotting code in any library (matplotlib, plotly, d3, Recharts, …), an image/PNG you will render and upload, or a chart shared into Slack. Read it BEFORE writing the first line of chart code, choosing chart colors, building a stat tile / meter / KPI row, or laying out a dashboard. Produces visualizations that read as one system — elegant, accessible, consistent in light and dark — using a brand-neutral placeholder palette you swap for your own. Teaches a design-system-agnostic method: a form heuristic, a color formula with a runnable validator, mark specs, and interaction rules. A validated default palette is documented in `references/palette.md` — swap that file's values for your brand's. Triggers on: \"chart\", \"graph\", \"plot\", \"data viz\", \"visualization\", \"dashboard\", \"analytics\", \"visualize data\", \"categorical colors\", \"sequential / diverging palette\", \"stat tile\", \"sparkline\", \"heatmap\", \"legend\", \"axis\", \"tooltip\", \"chart colors\", \"color by series\".\n- update-config: Use this skill to configure the Claude Code harness via settings.json. Automated behaviors (\"from now on when X\", \"each time X\", \"whenever X\", \"before/after X\") require hooks configured in settings.json - the harness executes these, not Claude, so memory/preferences cannot fulfill them. Also use for: permissions (\"allow X\", \"add permission\", \"move permission to\"), env vars (\"set X=Y\"), hook troubleshooting, or any changes to settings.json/settings.local.json files. Examples: \"allow npm commands\", \"add bq permission to global settings\", \"move permission to user settings\", \"set DEBUG=true\", \"when claude stops show X\". For simple settings like theme/model, suggest the /config command.\n- keybindings-help: Use when the user wants to customize keyboard shortcuts, rebind keys, add chord bindings, or modify ~/.claude/keybindings.json. Examples: \"rebind ctrl+s\", \"add a chord shortcut\", \"change the submit key\", \"customize keybindings\".\n- simplify: Review the changed code for reuse, simplification, efficiency, and altitude cleanups, then apply the fixes. Quality only — it does not hunt for bugs; use /code-review for that.\n- fewer-permission-prompts: Scan your transcripts for common read-only Bash and MCP tool calls, then add a prioritized allowlist to project .claude/settings.json to reduce permission prompts.\n- loop: Run a prompt or slash command on a recurring interval (e.g. /loop 5m /foo, defaults to 10m) - When the user wants to set up a recurring task, poll for status, or run something repeatedly on an interval (e.g. \"check the deploy every 5 minutes\", \"keep running /babysit-prs\"). Do NOT invoke for one-off tasks.\n- schedule: Create, update, list, or run scheduled cloud agents (routines) that execute on a cron schedule. - When the user wants to schedule a recurring cloud agent, set up automated tasks, create a cron job for Claude Code, or manage their scheduled agents/routines. Also use when the user wants a one-time scheduled run (\"run this once at 3pm\", \"remind me to check X tomorrow\").\n- claude-api: Reference for the Claude API / Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model migration.\nTRIGGER — read BEFORE opening the target file; don't skip because it \"looks like a one-liner\" — whenever: the prompt names Claude/Anthropic in any form (Claude, Anthropic, Fable, Opus, Sonnet, Haiku, `anthropic`, `@anthropic-ai`, `claude-*`, `us.anthropic.*`, `[1m]`); the user asks about an LLM (pricing/model choice/limits/caching) — never answer from memory; OR the task is LLM-shaped with provider unstated (agent/MCP/tool-definition/multi-agent/RAG/LLM-judge/computer-use; generate/summarize/extract/classify/rewrite/converse over NL; debugging refusals/cutoffs/streaming/tool-calls/tokens).\nSKIP only when another provider is being worked on (overrides all triggers): OpenAI/GPT/Gemini/Llama/Mistral/Cohere/Ollama named in the query; OR `grep -rE 'openai|langchain_openai|google.generativeai|genai|mistralai|cohere|ollama'` over the project hits (run this grep FIRST if no provider named — don't Read the file).\n- run: Launch and drive this project's app to see a change working. Use when asked to run, start, or screenshot the app, or to confirm a change works in the real app (not just tests). First looks for a project skill that already covers launching the app; otherwise falls back to built-in patterns per project type (CLI, server, TUI, Electron, browser-driven, library).\n- init: Initialize a new CLAUDE.md file with codebase documentation\n- review: Review a GitHub pull request; for your working diff use /code-review\n- security-review: Complete a security review of the pending changes on the current branch","skillCount":79,"isInitial":true,"names":["agent-doc-authoring","agentify-doc","ask-codex","astro","babysit-runplan","brainstorm","caveman","ci-cd-expert","claudex-workflow","cloudflareops","code-quality-reviewer","creating-journey-e2e-tests","creating-mockups","creating-ui-matrix-tests","dead-advisor","debug","dispatching-parallel-agents","finishing-a-development-branch","handoff","learn-from-mistakes","memory-gc","pickup","plan","plan-inventory","plan-preflight","prod-env","run-plan","security-gate","ship","ship-it","skill-creator","slopgate-improve","slopgate-init","slopgate-ux","tdd","threejs-animation","threejs-fundamentals","threejs-geometry","threejs-interaction","threejs-lighting","threejs-loaders","threejs-materials","threejs-postprocessing","threejs-shaders","threejs-textures","ui-designer","using-git-worktrees","ux-designer","webapp-testing","workflow-router","accessibility","canvas-design","componentizer","create-journeys","deploy-nextjs-cloudflare","extract-vision","extracting-fable","fix-rot","ft","ft-probe","improve-codebase-architecture","mobile-ux","trello","vibeflare","visual-plan","wrap-up","security-sweep","dataviz","update-config","keybindings-help","simplify","fewer-permission-prompts","loop","schedule","claude-api","run","init","review","security-review"]},"type":"attachment","uuid":"04408ffa-c9da-40fb-bd01-5eb4fd7cb3c4","timestamp":"2026-08-05T14:57:58.148Z","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"type":"last-prompt","lastPrompt":"reply with the single word OK echo \"-- cursor-agent status:\" timeout 60 cursor-agent status 2>&1 | grep -iE 'logged|auth|email|status|error' | FT_FROM_HOOK=1 ft head -5","leafUuid":"04408ffa-c9da-40fb-bd01-5eb4fd7cb3c4","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b"}
{"parentUuid":"04408ffa-c9da-40fb-bd01-5eb4fd7cb3c4","isSidechain":false,"message":{"model":"claude-fable-5","id":"msg_011CdjoFZvjvjjV9dSFN4SBa","type":"message","role":"assistant","content":[{"type":"thinking","thinking":"","signature":"CAISvwUKiAEIEBgCKkD7NC/oK5XjYCpplgTemNzJ7LWumCMB0dE1ZTcYW23PWFji11eYqGcmO/xoasjt0G4hNHZ7PE5B+EVBWhMf149nMg5jbGF1ZGUtZmFibGUtNTgBQgh0aGlua2luZ1okYWNjZjE1ZWUtNjUzNi00YWRmLWIwYWYtNWE4OTJkMTNjNDU0EgwtEy+D8cbmC3EMYkIaDJCg8sR3AuOOYbw+iyIwB/gSiim1ZbaJ2qFc6axGsxSNdZSkDy47NlTdngK0N2E5t8GjB49xMTBhHtKUplgyKuMDAmOJKvY4yejSWhKNxMzC4E46IXqdvboIfm6oy/PsUnDggPdNUrFitt+RKXvI5CWpPMd3Xjp8mLdLbOhWLGlMQMFFwWVB15ZZSaxMnlAA1hmd0LRA/v3OhXhBiIxUsmJQ45bHXpTdl/UdXabiK1X6TXz4mat/rvWkeEJwz/voQBVvTkznzxMXMpXXak4XaR8GsweGXHy/xKDtrK92l8k0xfHtauSSTfUEPO6/kaDCCo/AdWCLmKMkfHsjrj9ef8bKvG6VZQdH9FOtLTAX0yOUl0zpxZroroGunKXhcZSr2jl0SSpCTTrENxExhU7SkODmj4IWAhwVsVwsE0msN1E72/QLytWPxc9xRR5afHOgKWsCmaEJWo9Jo2yPEuqjZbfdnjzrm2YUPMzo1Fxte2XriQwVbsDGNPDLPRmNmzElMrx9wUcEkLA1Igvaveiu18GQIgLnRSY0blijFuNMS88PsBulNeGHjpjrGo+kt+YffYgzOLy5jLYfy8yWWIAzEBRC/1Dsf5fynZKJ6CdGBv/2wJUkNHGux0WKRmqq877cX5cW//3Z//rjmcfXEqDlrb8qMTUFTW1K0HgPwEwbA8TXTLX6HTn9vX2s0BrYDR9vBEsDE7/G5tbcv37Rl6TKeG6/rLX8GAE="}],"stop_reason":"tool_use","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":35426,"cache_read_input_tokens":0,"output_tokens":306,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":35426,"ephemeral_5m_input_tokens":0},"inference_geo":"not_available","iterations":[{"input_tokens":2,"output_tokens":306,"cache_read_input_tokens":0,"cache_creation_input_tokens":35426,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":35426},"type":"message"}],"speed":"standard"},"diagnostics":null},"requestId":"req_011CdjoFYJ1hmK26u5MTi98k","type":"assistant","uuid":"5d1d975f-cfb0-4fb5-bb4e-df5698229964","timestamp":"2026-08-05T14:58:01.927Z","effort":"high","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"parentUuid":"5d1d975f-cfb0-4fb5-bb4e-df5698229964","isSidechain":false,"message":{"model":"claude-fable-5","id":"msg_011CdjoFZvjvjjV9dSFN4SBa","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01RaJ5dtnLmnsAsZzZhyvzw6","name":"Bash","input":{"command":"echo \"-- cursor-agent status:\"; timeout 60 cursor-agent status 2>&1 | grep -iE 'logged|auth|email|status|error' | FT_FROM_HOOK=1 ft head -5","description":"Check cursor-agent auth status"},"caller":{"type":"direct"}}],"stop_reason":"tool_use","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":35426,"cache_read_input_tokens":0,"output_tokens":306,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":35426,"ephemeral_5m_input_tokens":0},"inference_geo":"not_available","iterations":[{"input_tokens":2,"output_tokens":306,"cache_read_input_tokens":0,"cache_creation_input_tokens":35426,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":35426},"type":"message"}],"speed":"standard"},"diagnostics":null},"requestId":"req_011CdjoFYJ1hmK26u5MTi98k","type":"assistant","uuid":"2f6c3600-2d2a-4cf9-a1ae-1417d0deb465","timestamp":"2026-08-05T14:58:03.225Z","effort":"high","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"parentUuid":"2f6c3600-2d2a-4cf9-a1ae-1417d0deb465","isSidechain":false,"attachment":{"type":"hook_non_blocking_error","hookName":"PreToolUse:Bash","toolUseID":"toolu_01RaJ5dtnLmnsAsZzZhyvzw6","hookEvent":"PreToolUse","stderr":"Failed with non-blocking status code: /bin/sh: 1: /home/user/Projects/slopgate/.worktrees/fix/record-string-any-regex-performance/hooks/commit-hook.sh: not found","stdout":"","exitCode":127,"command":"/home/user/Projects/slopgate/.worktrees/fix/record-string-any-regex-performance/hooks/commit-hook.sh","durationMs":22},"type":"attachment","uuid":"c3211f6f-cd27-4b7a-aba3-2ba6786c706f","timestamp":"2026-08-05T14:58:03.270Z","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"parentUuid":"c3211f6f-cd27-4b7a-aba3-2ba6786c706f","isSidechain":false,"attachment":{"type":"hook_non_blocking_error","hookName":"PreToolUse:Bash","toolUseID":"toolu_01RaJ5dtnLmnsAsZzZhyvzw6","hookEvent":"PreToolUse","stderr":"Failed with non-blocking status code: /bin/sh: 1: /home/user/Projects/slopgate/.worktrees/fix/record-string-any-regex-performance/hooks/baseline-guard.sh: not found","stdout":"","exitCode":127,"command":"/home/user/Projects/slopgate/.worktrees/fix/record-string-any-regex-performance/hooks/baseline-guard.sh","durationMs":21},"type":"attachment","uuid":"f342881a-633c-49a1-a3a2-6cc4c26b72b5","timestamp":"2026-08-05T14:58:03.270Z","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"parentUuid":"2f6c3600-2d2a-4cf9-a1ae-1417d0deb465","isSidechain":false,"promptId":"354e9b75-6b88-403d-b224-04653f7984a4","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01RaJ5dtnLmnsAsZzZhyvzw6","type":"tool_result","content":"-- cursor-agent status:\n✓ Logged in as royachiron@gmail.com","is_error":false}]},"uuid":"e69aeffa-1fa3-4f00-a746-f2999615d82b","timestamp":"2026-08-05T14:58:21.020Z","toolUseResult":{"stdout":"-- cursor-agent status:\n✓ Logged in as royachiron@gmail.com","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false},"sourceToolAssistantUUID":"2f6c3600-2d2a-4cf9-a1ae-1417d0deb465","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"parentUuid":"e69aeffa-1fa3-4f00-a746-f2999615d82b","isSidechain":false,"message":{"model":"claude-fable-5","id":"msg_011CdjoHKdKfSxBeEUP3sny8","type":"message","role":"assistant","content":[{"type":"text","text":"OK — `cursor-agent` logged in as royachiron@gmail.com."}],"stop_reason":"end_turn","stop_sequence":null,"stop_details":null,"usage":{"input_tokens":2,"cache_creation_input_tokens":340,"cache_read_input_tokens":35426,"output_tokens":28,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":340,"ephemeral_5m_input_tokens":0},"inference_geo":"not_available","iterations":[{"input_tokens":2,"output_tokens":28,"cache_read_input_tokens":35426,"cache_creation_input_tokens":340,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":340},"type":"message"}],"speed":"standard"},"diagnostics":null},"requestId":"req_011CdjoHDjcCTuoXpzS9v5r2","type":"assistant","uuid":"792f7785-fb33-4a87-b39a-9adc8ce3821a","timestamp":"2026-08-05T14:58:24.539Z","effort":"high","userType":"external","entrypoint":"sdk-cli","cwd":"/home/user","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b","version":"2.1.222","gitBranch":"HEAD"}
{"type":"last-prompt","lastPrompt":"reply with the single word OK echo \"-- cursor-agent status:\" timeout 60 cursor-agent status 2>&1 | grep -iE 'logged|auth|email|status|error' | FT_FROM_HOOK=1 ft head -5","leafUuid":"792f7785-fb33-4a87-b39a-9adc8ce3821a","sessionId":"0cc50a20-3ae6-40b0-942a-2c536530196b"}
