{"owner":"stagewise-io","repo":"stagewise","hasSkills":true,"totalSkillsCount":237,"totalTokensCount":82583,"categories":["anthropic-skill","root-instruction","claude-rule","plugin-manifest","subagent-persona"],"hasMcp":false,"mcpConfig":null,"found":[".agents/skills/vercel-react-best-practices/SKILL.md",".agents/skills/prompt-optimization/SKILL.md",".agents/skills/create-skill/SKILL.md",".agents/skills/copywriting/SKILL.md",".agents/skills/karton-best-practices/SKILL.md",".agents/skills/history-compression/SKILL.md",".agents/skills/stage-ui-design-system/SKILL.md","apps/browser/bundled/skills/preview/SKILL.md","apps/browser/bundled/skills/plan/SKILL.md","apps/browser/bundled/skills/watch/SKILL.md",".agents/skills/caveman/SKILL.md",".agents/skills/add-llm-model/SKILL.md","apps/browser/bundled/skills/learn-skill/SKILL.md","apps/browser/bundled/skills/implement/SKILL.md","apps/browser/bundled/skills/debug/SKILL.md","apps/browser/bundled/plugins/vercel/SKILL.md","apps/browser/bundled/plugins/supabase/SKILL.md","apps/browser/bundled/plugins/remotion/SKILL.md","apps/browser/bundled/plugins/posthog/SKILL.md","apps/browser/bundled/plugins/mini-apps/SKILL.md","apps/browser/bundled/plugins/javascript-sandbox/SKILL.md","apps/browser/bundled/plugins/github/SKILL.md","apps/browser/bundled/plugins/figma/SKILL.md","AGENTS.md","CLAUDE.md","packages/typescript-config/base.json","packages/typescript-config/CHANGELOG.md","packages/typescript-config/nextjs.json","packages/typescript-config/package.json","packages/typescript-config/react-library.json","packages/tailwindcss-color-modifiers/package.json","packages/tailwindcss-color-modifiers/README.md","packages/tailwindcss-color-modifiers/tsconfig.json","packages/stage-ui/CHANGELOG.md","packages/stage-ui/package.json","packages/stage-ui/README.md","packages/stage-ui/tsconfig.json","packages/karton/CHANGELOG.md","packages/karton/LICENSE.md","packages/karton/package.json","packages/karton/README.md","packages/karton/SPEC.md","packages/karton/tsconfig.json","packages/karton/turbo.json","packages/icons/package.json","packages/icons/README.md","packages/icons/tsconfig.json","packages/agent-shell/package.json","packages/agent-shell/tsconfig.json","packages/agent-core/package.json","packages/agent-core/README.md","packages/agent-core/SPEC.md","packages/agent-core/tsconfig.json",".agents/skills/vercel-react-best-practices/AGENTS.md",".agents/skills/vercel-react-best-practices/metadata.json",".agents/skills/vercel-react-best-practices/README.md",".agents/skills/stage-ui-design-system/components-reference.md",".agents/skills/caveman/README.md","packages/agent-core/src/humanspec.md",".agents/skills/vercel-react-best-practices/rules/_sections.md",".agents/skills/vercel-react-best-practices/rules/_template.md",".agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md",".agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md",".agents/skills/vercel-react-best-practices/rules/advanced-init-once.md",".agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md",".agents/skills/vercel-react-best-practices/rules/async-api-routes.md",".agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md",".agents/skills/vercel-react-best-practices/rules/async-defer-await.md",".agents/skills/vercel-react-best-practices/rules/async-dependencies.md",".agents/skills/vercel-react-best-practices/rules/async-parallel.md",".agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md",".agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md",".agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md",".agents/skills/vercel-react-best-practices/rules/bundle-conditional.md",".agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md",".agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md",".agents/skills/vercel-react-best-practices/rules/bundle-preload.md",".agents/skills/vercel-react-best-practices/rules/client-event-listeners.md",".agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md",".agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md",".agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md",".agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md",".agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md",".agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md",".agents/skills/vercel-react-best-practices/rules/js-cache-storage.md",".agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md",".agents/skills/vercel-react-best-practices/rules/js-early-exit.md",".agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md",".agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md",".agents/skills/vercel-react-best-practices/rules/js-index-maps.md",".agents/skills/vercel-react-best-practices/rules/js-length-check-first.md",".agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md",".agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md",".agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md",".agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md",".agents/skills/vercel-react-best-practices/rules/rendering-activity.md",".agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md",".agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md",".agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md",".agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md",".agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md",".agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md",".agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md",".agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md",".agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md",".agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md",".agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md",".agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md",".agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md",".agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md",".agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md",".agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md",".agents/skills/vercel-react-best-practices/rules/rerender-memo.md",".agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md",".agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md",".agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md",".agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md",".agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md",".agents/skills/vercel-react-best-practices/rules/rerender-transitions.md",".agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md",".agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md",".agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md",".agents/skills/vercel-react-best-practices/rules/server-auth-actions.md",".agents/skills/vercel-react-best-practices/rules/server-cache-lru.md",".agents/skills/vercel-react-best-practices/rules/server-cache-react.md",".agents/skills/vercel-react-best-practices/rules/server-dedup-props.md",".agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md",".agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md",".agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md",".agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md",".agents/skills/vercel-react-best-practices/rules/server-serialization.md",".agents/skills/prompt-optimization/references/agentic-prompts.md",".agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md",".agents/skills/prompt-optimization/references/clarity-and-structure.md",".agents/skills/prompt-optimization/references/compression-techniques.md",".agents/skills/prompt-optimization/references/output-control.md",".agents/skills/prompt-optimization/references/safety-and-security.md",".agents/skills/prompt-optimization/references/workflows.md",".agents/skills/karton-best-practices/references/edge-cases.md",".agents/skills/karton-best-practices/references/re-render-prevention.md",".agents/skills/karton-best-practices/references/selector-patterns.md",".agents/skills/karton-best-practices/references/state-update-model.md",".agents/skills/create-skill/references/best-practices.md",".agents/skills/create-skill/references/examples.md",".agents/skills/create-skill/references/progressive-disclosure.md",".agents/skills/create-skill/references/skill-structure.md",".agents/skills/copywriting/references/copy-frameworks.md",".agents/skills/copywriting/references/natural-transitions.md",".agents/skills/copywriting/evals/evals.json","packages/stage-ui/src/code-block/example-theme-dark.json","packages/stage-ui/src/code-block/example-theme-light.json","packages/agent-shell/src/env/shells-domain-adapter.prompt.md","packages/agent-core/src/file-read-transformer/README.md","packages/agent-core/src/env/env-state-spec.md","packages/agent-core/src/store/state-annotation.md","apps/browser/bundled/plugins/vercel/metadata.json","apps/browser/bundled/plugins/supabase/metadata.json","apps/browser/bundled/plugins/remotion/metadata.json","apps/browser/bundled/plugins/posthog/metadata.json","apps/browser/bundled/plugins/mini-apps/metadata.json","apps/browser/bundled/plugins/javascript-sandbox/metadata.json","apps/browser/bundled/plugins/github/metadata.json","apps/browser/bundled/plugins/figma/metadata.json","packages/agent-core/src/env/adapters/agents-md.prompt.md","packages/agent-core/src/env/adapters/enabled-skills.prompt.md","packages/agent-core/src/env/adapters/file-diffs.prompt.md","packages/agent-core/src/env/adapters/logs.prompt.md","packages/agent-core/src/env/adapters/memory.prompt.md","packages/agent-core/src/env/adapters/plans.prompt.md","packages/agent-core/src/env/adapters/workspace.prompt.md","packages/agent-core/src/services/diff-history/spec.md","apps/browser/bundled/skills/learn-skill/references/authoring-guide.md","apps/browser/bundled/skills/learn-skill/references/session-extraction.md","apps/browser/bundled/skills/learn-skill/references/skill-updating.md","apps/browser/bundled/skills/learn-skill/references/workflow-patterns.md","apps/browser/bundled/plugins/mini-apps/references/examples.md","apps/browser/bundled/plugins/javascript-sandbox/references/examples.md","packages/agent-core/src/agents/chat/prompts/authorities.md","packages/agent-core/src/agents/chat/prompts/environment-preamble.md","packages/agent-core/src/agents/chat/prompts/intro.md","packages/agent-core/src/agents/chat/prompts/output-style-basics.md","packages/agent-core/src/agents/chat/prompts/soul.md","apps/browser/bundled/plugins/remotion/references/styleguides/design-inspirations.md","apps/browser/bundled/plugins/remotion/references/styleguides/howto.md","apps/browser/bundled/plugins/remotion/references/styleguides/howto-elements.md","apps/browser/bundled/plugins/remotion/references/styleguides/howto-layouts.md","apps/browser/bundled/plugins/remotion/references/styleguides/howto-storyboard-templates.md","apps/browser/bundled/plugins/remotion/references/styleguides/howto-write-design-md.md","apps/browser/bundled/plugins/remotion/references/rules/3d.md","apps/browser/bundled/plugins/remotion/references/rules/animations.md","apps/browser/bundled/plugins/remotion/references/rules/assets.md","apps/browser/bundled/plugins/remotion/references/rules/audio.md","apps/browser/bundled/plugins/remotion/references/rules/audio-visualization.md","apps/browser/bundled/plugins/remotion/references/rules/calculate-metadata.md","apps/browser/bundled/plugins/remotion/references/rules/can-decode.md","apps/browser/bundled/plugins/remotion/references/rules/charts.md","apps/browser/bundled/plugins/remotion/references/rules/compositions.md","apps/browser/bundled/plugins/remotion/references/rules/display-captions.md","apps/browser/bundled/plugins/remotion/references/rules/extract-frames.md","apps/browser/bundled/plugins/remotion/references/rules/ffmpeg.md","apps/browser/bundled/plugins/remotion/references/rules/fonts.md","apps/browser/bundled/plugins/remotion/references/rules/get-audio-duration.md","apps/browser/bundled/plugins/remotion/references/rules/get-video-dimensions.md","apps/browser/bundled/plugins/remotion/references/rules/get-video-duration.md","apps/browser/bundled/plugins/remotion/references/rules/gifs.md","apps/browser/bundled/plugins/remotion/references/rules/images.md","apps/browser/bundled/plugins/remotion/references/rules/import-srt-captions.md","apps/browser/bundled/plugins/remotion/references/rules/light-leaks.md","apps/browser/bundled/plugins/remotion/references/rules/lottie.md","apps/browser/bundled/plugins/remotion/references/rules/maps.md","apps/browser/bundled/plugins/remotion/references/rules/measuring-dom-nodes.md","apps/browser/bundled/plugins/remotion/references/rules/measuring-text.md","apps/browser/bundled/plugins/remotion/references/rules/parameters.md","apps/browser/bundled/plugins/remotion/references/rules/sequencing.md","apps/browser/bundled/plugins/remotion/references/rules/sfx.md","apps/browser/bundled/plugins/remotion/references/rules/silence-detection.md","apps/browser/bundled/plugins/remotion/references/rules/subtitles.md","apps/browser/bundled/plugins/remotion/references/rules/tailwind.md","apps/browser/bundled/plugins/remotion/references/rules/tailwind-setup.md","apps/browser/bundled/plugins/remotion/references/rules/text-animations.md","apps/browser/bundled/plugins/remotion/references/rules/timing.md","apps/browser/bundled/plugins/remotion/references/rules/transcribe-captions.md","apps/browser/bundled/plugins/remotion/references/rules/transitions.md","apps/browser/bundled/plugins/remotion/references/rules/transparent-videos.md","apps/browser/bundled/plugins/remotion/references/rules/trimming.md","apps/browser/bundled/plugins/remotion/references/rules/videos.md","apps/browser/bundled/plugins/remotion/references/rules/voiceover.md","apps/browser/bundled/plugins/remotion/references/channels/facebook.md","apps/browser/bundled/plugins/remotion/references/channels/instagram.md","apps/browser/bundled/plugins/remotion/references/channels/linkedin.md","apps/browser/bundled/plugins/remotion/references/channels/tiktok.md","apps/browser/bundled/plugins/remotion/references/channels/x.md","apps/browser/bundled/plugins/remotion/references/channels/youtube.md","apps/browser/bundled/plugins/remotion/references/channels/youtube-shorts.md","apps/browser/src/backend/agents/chat/prompts/environment-preamble.md","apps/browser/src/backend/agents/chat/prompts/intro.md","apps/browser/src/backend/agents/chat/prompts/soul.md"],"skills":{".agents/skills/vercel-react-best-practices/SKILL.md":"---\nname: vercel-react-best-practices\ndescription: React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.\nlicense: MIT\nmetadata:\n  author: vercel\n  version: \"1.0.0\"\n---\n\n# Vercel React Best Practices\n\nComprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains 70 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.\n\n## When to Apply\n\nReference these guidelines when:\n- Writing new React components or Next.js pages\n- Implementing data fetching (client or server-side)\n- Reviewing code for performance issues\n- Refactoring existing React/Next.js code\n- Optimizing bundle size or load times\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Eliminating Waterfalls | CRITICAL | `async-` |\n| 2 | Bundle Size Optimization | CRITICAL | `bundle-` |\n| 3 | Server-Side Performance | HIGH | `server-` |\n| 4 | Client-Side Data Fetching | MEDIUM-HIGH | `client-` |\n| 5 | Re-render Optimization | MEDIUM | `rerender-` |\n| 6 | Rendering Performance | MEDIUM | `rendering-` |\n| 7 | JavaScript Performance | LOW-MEDIUM | `js-` |\n| 8 | Advanced Patterns | LOW | `advanced-` |\n\n## Quick Reference\n\n### 1. Eliminating Waterfalls (CRITICAL)\n\n- `async-cheap-condition-before-await` - Check cheap sync conditions before awaiting flags or remote values\n- `async-defer-await` - Move await into branches where actually used\n- `async-parallel` - Use Promise.all() for independent operations\n- `async-dependencies` - Use better-all for partial dependencies\n- `async-api-routes` - Start promises early, await late in API routes\n- `async-suspense-boundaries` - Use Suspense to stream content\n\n### 2. Bundle Size Optimization (CRITICAL)\n\n- `bundle-barrel-imports` - Import directly, avoid barrel files\n- `bundle-analyzable-paths` - Prefer statically analyzable import and file-system paths to avoid broad bundles and traces\n- `bundle-dynamic-imports` - Use next/dynamic for heavy components\n- `bundle-defer-third-party` - Load analytics/logging after hydration\n- `bundle-conditional` - Load modules only when feature is activated\n- `bundle-preload` - Preload on hover/focus for perceived speed\n\n### 3. Server-Side Performance (HIGH)\n\n- `server-auth-actions` - Authenticate server actions like API routes\n- `server-cache-react` - Use React.cache() for per-request deduplication\n- `server-cache-lru` - Use LRU cache for cross-request caching\n- `server-dedup-props` - Avoid duplicate serialization in RSC props\n- `server-hoist-static-io` - Hoist static I/O (fonts, logos) to module level\n- `server-no-shared-module-state` - Avoid module-level mutable request state in RSC/SSR\n- `server-serialization` - Minimize data passed to client components\n- `server-parallel-fetching` - Restructure components to parallelize fetches\n- `server-parallel-nested-fetching` - Chain nested fetches per item in Promise.all\n- `server-after-nonblocking` - Use after() for non-blocking operations\n\n### 4. Client-Side Data Fetching (MEDIUM-HIGH)\n\n- `client-swr-dedup` - Use SWR for automatic request deduplication\n- `client-event-listeners` - Deduplicate global event listeners\n- `client-passive-event-listeners` - Use passive listeners for scroll\n- `client-localstorage-schema` - Version and minimize localStorage data\n\n### 5. Re-render Optimization (MEDIUM)\n\n- `rerender-defer-reads` - Don't subscribe to state only used in callbacks\n- `rerender-memo` - Extract expensive work into memoized components\n- `rerender-memo-with-default-value` - Hoist default non-primitive props\n- `rerender-dependencies` - Use primitive dependencies in effects\n- `rerender-derived-state` - Subscribe to derived booleans, not raw values\n- `rerender-derived-state-no-effect` - Derive state during render, not effects\n- `rerender-functional-setstate` - Use functional setState for stable callbacks\n- `rerender-lazy-state-init` - Pass function to useState for expensive values\n- `rerender-simple-expression-in-memo` - Avoid memo for simple primitives\n- `rerender-split-combined-hooks` - Split hooks with independent dependencies\n- `rerender-move-effect-to-event` - Put interaction logic in event handlers\n- `rerender-transitions` - Use startTransition for non-urgent updates\n- `rerender-use-deferred-value` - Defer expensive renders to keep input responsive\n- `rerender-use-ref-transient-values` - Use refs for transient frequent values\n- `rerender-no-inline-components` - Don't define components inside components\n\n### 6. Rendering Performance (MEDIUM)\n\n- `rendering-animate-svg-wrapper` - Animate div wrapper, not SVG element\n- `rendering-content-visibility` - Use content-visibility for long lists\n- `rendering-hoist-jsx` - Extract static JSX outside components\n- `rendering-svg-precision` - Reduce SVG coordinate precision\n- `rendering-hydration-no-flicker` - Use inline script for client-only data\n- `rendering-hydration-suppress-warning` - Suppress expected mismatches\n- `rendering-activity` - Use Activity component for show/hide\n- `rendering-conditional-render` - Use ternary, not && for conditionals\n- `rendering-usetransition-loading` - Prefer useTransition for loading state\n- `rendering-resource-hints` - Use React DOM resource hints for preloading\n- `rendering-script-defer-async` - Use defer or async on script tags\n\n### 7. JavaScript Performance (LOW-MEDIUM)\n\n- `js-batch-dom-css` - Group CSS changes via classes or cssText\n- `js-index-maps` - Build Map for repeated lookups\n- `js-cache-property-access` - Cache object properties in loops\n- `js-cache-function-results` - Cache function results in module-level Map\n- `js-cache-storage` - Cache localStorage/sessionStorage reads\n- `js-combine-iterations` - Combine multiple filter/map into one loop\n- `js-length-check-first` - Check array length before expensive comparison\n- `js-early-exit` - Return early from functions\n- `js-hoist-regexp` - Hoist RegExp creation outside loops\n- `js-min-max-loop` - Use loop for min/max instead of sort\n- `js-set-map-lookups` - Use Set/Map for O(1) lookups\n- `js-tosorted-immutable` - Use toSorted() for immutability\n- `js-flatmap-filter` - Use flatMap to map and filter in one pass\n- `js-request-idle-callback` - Defer non-critical work to browser idle time\n\n### 8. Advanced Patterns (LOW)\n\n- `advanced-effect-event-deps` - Don't put `useEffectEvent` results in effect deps\n- `advanced-event-handler-refs` - Store event handlers in refs\n- `advanced-init-once` - Initialize app once per app load\n- `advanced-use-latest` - useLatest for stable callback refs\n\n## How to Use\n\nRead individual rule files for detailed explanations and code examples:\n\n```\nrules/async-parallel.md\nrules/bundle-barrel-imports.md\n```\n\nEach rule file contains:\n- Brief explanation of why it matters\n- Incorrect code example with explanation\n- Correct code example with explanation\n- Additional context and references\n\n## Full Compiled Document\n\nFor the complete guide with all rules expanded: `AGENTS.md`\n",".agents/skills/prompt-optimization/SKILL.md":"---\nname: prompt-optimization\ndescription: Guides building, reviewing, and optimizing system prompts and prompt templates for LLMs. Use when creating system prompts, writing prompt templates, optimizing prompt structure, reducing prompt token usage, compressing prompts, improving prompt clarity, reviewing prompts for safety and bias, or making prompts more token-efficient. Also use when the user says \"write a prompt,\" \"optimize this prompt,\" \"system prompt,\" \"prompt engineering,\" \"make this prompt better,\" \"reduce tokens,\" or \"compress this prompt.\"\n---\n\n# Prompt Optimization\n\nBuild effective, safe, and token-efficient system prompts for LLMs.\n\n## How to Use This Skill\n\n**Pick the workflow that matches the task, then follow it end-to-end:**\n\n| Task | Workflow | Reference |\n|------|----------|-----------|\n| Write a new prompt from scratch | **Create** workflow | `references/workflows.md` → Workflow 1 |\n| Review/audit an existing prompt | **Review** workflow | `references/workflows.md` → Workflow 2 |\n| Reduce token count of a working prompt | **Optimize** workflow | `references/workflows.md` → Workflow 3 |\n\nEach workflow references the specific detail pages below as needed. Do not read all references upfront — load them when the workflow step calls for them.\n\n## Core Principles\n\n1. **Clarity over cleverness** — Write prompts a new employee would follow without confusion\n2. **Positive framing** — Say what to do, not what to avoid\n3. **Structure with delimiters** — XML tags or consistent separators between content types\n4. **Progressive specificity** — Role → constraints → instructions → context → format → examples → input\n5. **Token economy** — Every token must earn its place; ≥1 constraint per 5–10 tokens\n6. **Safety by default** — Prevent injection, data leakage, and bias structurally\n\n## Prompt Architecture (ordering)\n\n```\n1. Identity / Role          — Who the model is (1–2 sentences)\n2. Core behavior rules      — Non-negotiable constraints (safety, tone)\n3. Task instructions        — What to do and how\n4. Context / Knowledge      — Domain data, schemas, reference docs\n5. Output format            — Structure, length, style requirements\n6. Examples (few-shot)      — 2–3 input/output pairs in <example> tags\n7. Dynamic input            — User content (always last, always delimited)\n```\n\n## Key Rules\n\n- **Delimit user input** — Wrap in tags like `<user_input>`; never interpolate raw\n- **Show, don't just tell** — Few-shot examples beat format descriptions\n- **Match prompt style to output style** — Markdown in prompt → markdown out; prose → prose\n- **Put long documents first** — Reference data above instructions (30%+ quality gain)\n- **Quantify, don't qualify** — \"≤100 words\" not \"keep it short\"\n- **Imperative voice** — \"Respond in JSON\" not \"You should format your response as JSON\"\n- **Test adversarially** — Injection, edge cases, ambiguous inputs before shipping\n\n## Reference Index\n\nLoad these when a workflow step calls for them:\n\n| Reference | Contents |\n|-----------|----------|\n| `references/workflows.md` | End-to-end workflows for create, review, and optimize tasks |\n| `references/clarity-and-structure.md` | XML tags, delimiters, role prompting, long-context patterns |\n| `references/output-control.md` | Format steering, verbosity control, few-shot examples |\n| `references/safety-and-security.md` | Injection prevention, bias mitigation, data leakage, red-teaming |\n| `references/compression-techniques.md` | High-density writing, token pruning, compression methods, density test |\n| `references/agentic-prompts.md` | Tool use, thinking/reasoning, state tracking, subagent orchestration |\n| `references/anti-patterns-and-checklist.md` | 8 anti-patterns, design checklist, evaluation metrics |\n",".agents/skills/create-skill/SKILL.md":"---\nname: create-skill\ndescription: Guide for creating effective skills following best practices. Use when creating or updating skills that extend agent capabilities.\n---\n\n# Create Skill\n\nGuide for creating effective skills that extend agent capabilities with specialized knowledge, workflows, and tool integrations.\n\n## About Skills\n\nSkills are modular, self-contained packages that extend agent capabilities by providing specialized knowledge, workflows, and tools. Think of them as \"onboarding guides\" for specific domains or tasks.\n\n### What Skills Provide\n\n1. Specialized workflows - Multi-step procedures for specific domains\n2. Tool integrations - Instructions for working with specific file formats or APIs\n3. Domain expertise - Company-specific knowledge, schemas, business logic\n4. Bundled resources - Scripts, references, and assets for complex and repetitive tasks\n\n## Progressive Disclosure Principle\n\n**The 200-line rule is critical.** SKILL.md must be under 200 lines. If you need more, split content into `references/` files.\n\n### Three-Level Loading System\n\n1. **Metadata (name + description)** - Always in context (~100 words)\n2. **SKILL.md body** - When skill triggers (<200 lines, ideally <500 lines for optimal performance)\n3. **Bundled resources** - As needed by agent (unlimited)\n\n### Why Progressive Disclosure Matters\n\n- 85% reduction in initial context load\n- Activation times drop from 500ms+ to under 100ms\n- Agent loads only what's needed, when it's needed\n- Skills remain maintainable and focused\n\n## Skill Structure\n\n```\nskill-name/\n├── SKILL.md (required, <200 lines)\n│   ├── YAML frontmatter metadata (required)\n│   │   ├── name: (required)\n│   │   └── description: (required)\n│   └── Markdown instructions (required)\n└── Bundled Resources (optional)\n    ├── scripts/          - Executable code\n    ├── references/       - Documentation loaded as needed\n    └── assets/           - Files used in output\n```\n\n## Core Principles\n\n### Concise is Key\n\nThe context window is a shared resource. Your skill shares it with everything else the agent needs. Be concise and challenge each piece of information:\n- Does the agent really need this explanation?\n- Can I assume the agent knows this?\n- Does this paragraph justify its token cost?\n\n### Set Appropriate Degrees of Freedom\n\n- **High freedom**: Text-based instructions for multiple valid approaches\n- **Medium freedom**: Pseudocode or scripts with parameters\n- **Low freedom**: Specific scripts with few/no parameters for fragile operations\n\n### Test with All Models\n\nSkills act as additions to models, so effectiveness depends on the underlying model. Test your skill with all models you plan to use it with.\n\n## References\n\nFor detailed guidance, see:\n- `references/progressive-disclosure.md` - 200-line rule and references pattern\n- `references/skill-structure.md` - SKILL.md format and frontmatter details\n- `references/examples.md` - Good skill examples\n- `references/best-practices.md` - Comprehensive best practices guide\n",".agents/skills/copywriting/SKILL.md":"---\nname: copywriting\ndescription: When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or product pages. Also use when the user says \"write copy for,\" \"improve this copy,\" \"rewrite this page,\" \"marketing copy,\" \"headline help,\" \"CTA copy,\" \"value proposition,\" \"tagline,\" \"subheadline,\" \"hero section copy,\" \"above the fold,\" \"this copy is weak,\" \"make this more compelling,\" or \"help me describe my product.\" Use this whenever someone is working on website text that needs to persuade or convert. For email copy, see emails. For popup copy, see popups. For editing existing copy, see copy-editing. For the offer underneath the copy (bonuses, guarantees, value framing), see offers.\nmetadata:\n  version: 2.0.1\n---\n\n# Copywriting\n\nYou are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action.\n\n## Before Writing\n\n**Check for product marketing context first:**\nIf `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.\n\nGather this context (ask if not provided):\n\n### 1. Page Purpose\n- What type of page? (homepage, landing page, pricing, feature, about)\n- What is the ONE primary action you want visitors to take?\n\n### 2. Audience\n- Who is the ideal customer?\n- What problem are they trying to solve?\n- What objections or hesitations do they have?\n- What language do they use to describe their problem?\n\n### 3. Product/Offer\n- What are you selling or offering?\n- What makes it different from alternatives?\n- What's the key transformation or outcome?\n- Any proof points (numbers, testimonials, case studies)?\n\n### 4. Context\n- Where is traffic coming from? (ads, organic, email)\n- What do visitors already know before arriving?\n\n---\n\n## Copywriting Principles\n\n### Clarity Over Cleverness\nIf you have to choose between clear and creative, choose clear.\n\n### Benefits Over Features\nFeatures: What it does. Benefits: What that means for the customer.\n\n### Specificity Over Vagueness\n- Vague: \"Save time on your workflow\"\n- Specific: \"Cut your weekly reporting from 4 hours to 15 minutes\"\n\n### Customer Language Over Company Language\nUse words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets.\n\n### One Idea Per Section\nEach section should advance one argument. Build a logical flow down the page.\n\n---\n\n## Writing Style Rules\n\n### Core Principles\n\n1. **Simple over complex** — \"Use\" not \"utilize,\" \"help\" not \"facilitate\"\n2. **Specific over vague** — Avoid \"streamline,\" \"optimize,\" \"innovative\"\n3. **Active over passive** — \"We generate reports\" not \"Reports are generated\"\n4. **Confident over qualified** — Remove \"almost,\" \"very,\" \"really\"\n5. **Show over tell** — Describe the outcome instead of using adverbs\n6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability\n\n### Quick Quality Check\n\n- Jargon that could confuse outsiders?\n- Sentences trying to do too much?\n- Passive voice constructions?\n- Exclamation points? (remove them)\n- Marketing buzzwords without substance?\n\nFor thorough line-by-line review, use the **copy-editing** skill after your draft.\n\n---\n\n## Best Practices\n\n### Be Direct\nGet to the point. Don't bury the value in qualifications.\n\n❌ Slack lets you share files instantly, from documents to images, directly in your conversations\n\n✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires.\n\n### Use Rhetorical Questions\nQuestions engage readers and make them think about their own situation.\n- \"Hate returning stuff to Amazon?\"\n- \"Tired of chasing approvals?\"\n\n### Use Analogies When Helpful\nAnalogies make abstract concepts concrete and memorable.\n\n### Pepper in Humor (When Appropriate)\nPuns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity.\n\n---\n\n## Page Structure Framework\n\n### Above the Fold\n\n**Headline**\n- Your single most important message\n- Communicate core value proposition\n- Specific > generic\n\n**Example formulas:**\n- \"{Achieve outcome} without {pain point}\"\n- \"The {category} for {audience}\"\n- \"Never {unpleasant event} again\"\n- \"{Question highlighting main pain point}\"\n\n**For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md)\n\n**For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md)\n\n**Subheadline**\n- Expands on headline\n- Adds specificity\n- 1-2 sentences max\n\n**Primary CTA**\n- Action-oriented button text\n- Communicate what they get: \"Start Free Trial\" > \"Sign Up\"\n\n### Core Sections\n\n| Section | Purpose |\n|---------|---------|\n| Social Proof | Build credibility (logos, stats, testimonials) |\n| Problem/Pain | Show you understand their situation |\n| Solution/Benefits | Connect to outcomes (3-5 key benefits) |\n| How It Works | Reduce perceived complexity (3-4 steps) |\n| Objection Handling | FAQ, comparisons, guarantees |\n| Final CTA | Recap value, repeat CTA, risk reversal |\n\n**For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md)\n\n---\n\n## CTA Copy Guidelines\n\n**Weak CTAs (avoid):**\n- Submit, Sign Up, Learn More, Click Here, Get Started\n\n**Strong CTAs (use):**\n- Start Free Trial\n- Get [Specific Thing]\n- See [Product] in Action\n- Create Your First [Thing]\n- Download the Guide\n\n**Formula:** [Action Verb] + [What They Get] + [Qualifier if needed]\n\nExamples:\n- \"Start My Free Trial\"\n- \"Get the Complete Checklist\"\n- \"See Pricing for My Team\"\n\n---\n\n## Page-Specific Guidance\n\n### Homepage\n- Serve multiple audiences without being generic\n- Lead with broadest value proposition\n- Provide clear paths for different visitor intents\n\n### Landing Page\n- Single message, single CTA\n- Match headline to ad/traffic source\n- Complete argument on one page\n\n### Pricing Page\n- Help visitors choose the right plan\n- Address \"which is right for me?\" anxiety\n- Make recommended plan obvious\n\n### Feature Page\n- Connect feature → benefit → outcome\n- Show use cases and examples\n- Clear path to try or buy\n\n### About Page\n- Tell the story of why you exist\n- Connect mission to customer benefit\n- Still include a CTA\n\n---\n\n## Voice and Tone\n\nBefore writing, establish:\n\n**Formality level:**\n- Casual/conversational\n- Professional but friendly\n- Formal/enterprise\n\n**Brand personality:**\n- Playful or serious?\n- Bold or understated?\n- Technical or accessible?\n\nMaintain consistency, but adjust intensity:\n- Headlines can be bolder\n- Body copy should be clearer\n- CTAs should be action-oriented\n\n---\n\n## Output Format\n\nWhen writing copy, provide:\n\n### Page Copy\nOrganized by section:\n- Headline, Subheadline, CTA\n- Section headers and body copy\n- Secondary CTAs\n\n### Annotations\nFor key elements, explain:\n- Why you made this choice\n- What principle it applies\n\n### Alternatives\nFor headlines and CTAs, provide 2-3 options:\n- Option A: [copy] — [rationale]\n- Option B: [copy] — [rationale]\n\n### Meta Content (if relevant)\n- Page title (for SEO)\n- Meta description\n\n---\n\n## Related Skills\n\n- **copy-editing**: For polishing existing copy (use after your draft)\n- **cro**: If page structure/strategy needs work, not just copy\n- **emails**: For email copywriting\n- **popups**: For popup and modal copy\n- **ab-testing**: To test copy variations\n",".agents/skills/karton-best-practices/SKILL.md":"---\nname: karton-best-practices\ndescription: Performance-focused guidelines for writing React code that consumes Karton state. Use when creating or reviewing components that use useKartonState, useKartonProcedure, useComparingSelector, or any Karton React hooks. Covers selector patterns, re-render prevention, structural sharing, and edge cases.\n---\n\n# Karton React Best Practices\n\nPerformance guidelines for React components consuming Karton state. Karton uses Immer internally — understanding its structural sharing model is essential for writing efficient selectors.\n\n## Core Mental Model\n\nKarton state is **deeply frozen** (Immer `freeze(state, true)`). Updates use `produce()` which creates **new references only for changed paths** — unchanged subtrees keep the same reference. `useSyncExternalStore` uses **`Object.is` (reference equality)** to decide re-renders.\n\n**The golden rule:** Your selector's return value must have a **stable reference** when nothing relevant changed. If it doesn't, wrap it with `useComparingSelector`.\n\n## Quick Rules\n\n### Selectors\n\n```typescript\n// GOOD: Select a primitive — stable when unchanged\nconst isWorking = useKartonState((s) => s.agents.instances[id]?.state.isWorking ?? false);\n\n// GOOD: Select a frozen subtree — Immer preserves the reference\nconst agent = useKartonState((s) => s.agents.instances[id]);\n\n// BAD: Creates a new object every call — always re-renders\nconst data = useKartonState((s) => ({\n  name: s.agents.instances[id]?.name,\n  status: s.agents.instances[id]?.state.isWorking,\n}));\n\n// FIX: Wrap with useComparingSelector (default: shallow equality)\nconst data = useKartonState(\n  useComparingSelector((s) => ({\n    name: s.agents.instances[id]?.name,\n    status: s.agents.instances[id]?.state.isWorking,\n  })),\n);\n\n// BAD: Object.keys/values/entries always creates a new array\nconst ids = useKartonState((s) => Object.keys(s.agents.instances));\n\n// FIX: shallow comparison handles arrays element-by-element\nconst ids = useKartonState(\n  useComparingSelector((s) => Object.keys(s.agents.instances)),\n);\n```\n\n### When to Use `useComparingSelector`\n\n| Selector returns | Needs `useComparingSelector`? |\n|---|---|\n| Primitive (boolean, string, number) | No |\n| Existing frozen subtree reference | No |\n| New object/array created in selector | **Yes** (use `shallow`) |\n| Deeply nested new structures | **Yes** (use `deep`) |\n\n### Procedures\n\n```typescript\n// GOOD: Procedures are stable proxies — select once, use freely\nconst createAgent = useKartonProcedure((p) => p.agents.create);\n\n// GOOD: Store in ref for use in callbacks to prevent effect re-triggers\nconst createAgentRef = useRef(createAgent);\ncreateAgentRef.current = createAgent;\n```\n\n### Derived State\n\n```typescript\n// GOOD: useMemo to compute derived values from selected state\nconst agent = useKartonState((s) => s.agents.instances[id]);\nconst displayName = useMemo(() => agent?.name ?? 'Unnamed', [agent]);\n\n// BAD: Expensive computation inside selector (runs on every state change)\nconst sorted = useKartonState((s) =>\n  Object.values(s.agents.instances).sort((a, b) => a.name.localeCompare(b.name)),\n);\n\n// FIX: Select raw data, compute outside\nconst instances = useKartonState(\n  useComparingSelector((s) => s.agents.instances),\n);\nconst sorted = useMemo(\n  () => Object.values(instances).sort((a, b) => a.name.localeCompare(b.name)),\n  [instances],\n);\n```\n\n## Key Pitfalls\n\n1. **Every `useKartonState` call runs its selector on every state change** — keep selectors cheap\n2. **Selectors that create new objects/arrays always cause re-renders** unless wrapped with `useComparingSelector`\n3. **`useComparingSelector` with `deep` is expensive** — prefer `shallow` or restructure state\n4. **Selecting the full state** (`useKartonState()` with no selector) re-renders on any change\n5. **Inline selector functions recreate on every render** — this is fine because `useSyncExternalStore` compares snapshot values, not function references\n6. **Connection changes (`onOpen`/`onClose`) trigger all listeners** — components using `useKartonState` may re-render briefly on reconnect even if state didn't change\n\n## References\n\nFor detailed analysis, see:\n- `references/state-update-model.md` — How Immer structural sharing affects object references\n- `references/selector-patterns.md` — Comprehensive selector patterns with examples\n- `references/re-render-prevention.md` — useComparingSelector internals and memoization strategies\n- `references/edge-cases.md` — Arrays, Maps, conditional selection, and reconnection behavior\n",".agents/skills/history-compression/SKILL.md":"---\nname: history-compression\ndescription: How stagewise's agent history compression pipeline works — boundary selection, recency bias, chained compressions, and the SQLite-backed test harness for replaying real compressions in LLM playgrounds. Use when debugging, tuning, or extending history compression, when investigating context-window overflow, or when the user wants to probe compression quality against real chat histories.\n---\n\n# History Compression\n\nStagewise summarizes long agent histories into a single briefing stored on a \"boundary\" message. Everything before the boundary is replaced by the briefing; everything after stays verbatim. Recency bias baked into both boundary math + LLM prompt.\n\n## Key files\n\nAll paths are repo-root-relative.\n\n- `apps/browser/src/backend/agents/shared/base-agent/base-agent.ts` — trigger + boundary logic (`compressHistoryInternal`, ~L1898; trigger check in `handlePostStep` ~L2208).\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/index.ts` — model cascade + `generateSimpleCompressedHistory`.\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/prompt.ts` — `COMPRESSION_SYSTEM_PROMPT`, `COMPRESSION_TARGET_CHARS = 30_000`, `buildCompressionUserMessage` (dynamic budget hint).\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/serialization.ts` — `convertAgentMessagesToCompactMessageHistoryString`, `estimateMessageTokens`.\n- `scripts/experiments/extract-compression-test-data.ts` — SQLite → playground-ready per-compression bundles.\n\n## Trigger\n\nAfter every step → `handlePostStep` checks:\n\n`usedTokens > min(compactionThreshold × contextWindow, 200k)`\n\n- `compactionThreshold` default **0.65**; chat agent overrides to **0.5**.\n- `200k` hard cap (`HISTORY_COMPRESSION_HARD_CAP_TOKENS`) = 1M-ctx models trigger at the same absolute count as a 200k-context model running near its full window.\n- Runs via `void` (async, non-blocking). Guarded by `_isCompressingHistory` flag → no concurrent runs.\n- Silent failure — agent keeps going, context overflow later surfaces normal model error.\n\n## Boundary selection (`compressHistoryInternal`)\n\nKept-budget = `min(0.2 × contextWindow, 40k tokens)` (`KEPT_BUDGET_FRACTION`, `KEPT_BUDGET_HARD_CAP_TOKENS`).\nPreferred floor = `max(5, config.minUncompressedMessages ?? 10)`.\n\nWalk backward from history end:\n\n1. Accumulate `estimateMessageTokens(msg)` until next msg would bust budget → boundary there.\n2. Else stop once kept-count ≥ floor.\n3. Edge: single last msg > budget → keep just that one, warn.\n4. `boundary < 1` → nothing to compress, skip.\n\nThen: `messagesToCompact = history.slice(0, boundary)` → compress → write result to `history[boundary].metadata.compressedHistory`.\n\n### Token estimation quirks\n\n`estimateMessageTokens` = `ceil(chars / 4)`. Includes:\n\n- Text parts.\n- Tool-call `toolName` + JSON-stringified `input` + `output`.\n- Metadata overhead: env-snapshot, compressedHistory, mentions, attachments.\n- **`PER_MESSAGE_OVERHEAD_CHARS = 400`** flat — accounts for XML wrappers/role tags the pipeline injects but aren't in `parts`. Without it, budget walk under-counts → compression triggers too late.\n\n## Chained compressions\n\nWhen `messagesToCompact` already contains a prior `compressedHistory`:\n\n- Serializer (`convertAgentMessagesToCompactMessageHistoryString`) walks **backward** and **stops at first `compressedHistory` it finds**, emitting it as `<previous-chat-history>...</previous-chat-history>`. Older raw messages never re-serialized.\n- `buildCompressionUserMessage` reads prior briefing length → injects ratio-bucketed budget hint:\n  - `<60%` target → \"incorporate verbatim, do NOT shorten\".\n  - `60–85%` → \"light condensation to oldest sections\".\n  - `≥85%` → \"condense oldest fully-resolved sections\".\n- Prompt mandates: keep every `##` heading, shorten **oldest** sections only, preserve all `[](path:...)` links + user decisions + outcomes verbatim. Recent sections untouched.\n\n→ Chain is bounded: each round re-absorbs prior briefing under the same `30k` target.\n\n## Serialization format\n\nInput to LLM is XML-ish:\n\n- `<user>` — text + `[attached: ...]`, `[mentioned: ...]` metadata annotations.\n- `<assistant>` — text + one-liner tool markers: `[read: path]`, `[edited: path (N edits)]`, `[shell: label → ✓ / exit N / timed out]`, `[lint: paths → clean / N errors, M warnings]`, `[asked user: title → field: answer; ...]`, `[searched: \"query\"]`, `[created: path]`, `[wrote: path]`.\n- `<previous-chat-history>` — inlined prior briefing (see above).\n- Error state on any tool → `✗ <msg>` suffix.\n- Unknown tool types → `[tool-xxx]` generic marker (never silently dropped).\n\n## Prompt design (`apps/browser/src/backend/agents/shared/base-agent/history-compression/prompt.ts`)\n\n- Target **30k chars soft** (\"goal, not ceiling — longer > losing detail\").\n- 2nd-person for agent, 3rd-person for user.\n- `##` headings per topic, flowing prose inside. No bullets/tables/code blocks.\n- Recency bias: old resolved = 2–4 sentences; recent/active = full detail ending with current status.\n- MUST preserve verbatim: `[](path:...)` links, markdown links, user decisions/preferences/constraints, color values, directory structures, config.\n- Output plain markdown. **Never emit `<previous-chat-history>` or any XML wrapper** in output.\n\n## Model cascade (`apps/browser/src/backend/agents/shared/base-agent/history-compression/index.ts`)\n\n1. `gemini-3.1-flash-lite` → 2. `gpt-5.4-nano` → 3. `claude-haiku-4.5`.\n\n- Each 30s abort timeout, `temperature: 0.1`, `maxOutputTokens: 20000`.\n- Min valid output: 30 chars (shorter → fallback).\n- Final fallback: active chat model (only if not already tried).\n- All fail → throws; caller (`compressHistoryInternal`) logs + reports, agent continues uncompressed.\n\n## Tuning knobs\n\n| Knob | Where | Default | Effect |\n|---|---|---|---|\n| `compactionThreshold` | `config.historyCompressionThreshold` | 0.65 (chat: 0.5) | Trigger fraction of ctx window |\n| `HISTORY_COMPRESSION_HARD_CAP_TOKENS` | `base-agent.ts` const | 200_000 | Absolute trigger cap |\n| `KEPT_BUDGET_FRACTION` | `base-agent.ts` const | 0.2 | Fraction kept uncompressed |\n| `KEPT_BUDGET_HARD_CAP_TOKENS` | `base-agent.ts` const | 40_000 | Absolute kept cap |\n| `minUncompressedMessages` | `config` | 10 | Floor on kept msg count |\n| `COMPRESSION_TARGET_CHARS` | `prompt.ts` const | 30_000 | Soft briefing size target |\n| `HISTORY_COMPRESSION_TIMEOUT_MS` | `index.ts` const | 30_000 | Per-model attempt timeout |\n| `HISTORY_COMPRESSION_MODELS` | `index.ts` const | 3-model cascade | Compression model order |\n| `PER_MESSAGE_OVERHEAD_CHARS` | `serialization.ts` | 400 | Metadata overhead fudge |\n\n**Invariant:** kept budget < compression trigger (else nothing ever compresses).\n\n## Test harness (`scripts/experiments/extract-compression-test-data.ts`)\n\nReplays every real compression from local stagewise SQLite into playground-ready bundles.\n\n```bash\nnpx tsx scripts/experiments/extract-compression-test-data.ts --channel prerelease\nnpx tsx scripts/experiments/extract-compression-test-data.ts --channel dev --min-messages 10\n```\n\nChannels map to `<appData>/{stagewise | stagewise-prerelease | stagewise-dev}/stagewise/agents/instances.sqlite`.\n\nPer chat, for each boundary message (every real compression event):\n\n- Slices `messages[0..boundary)`.\n- Runs **real** `convertAgentMessagesToCompactMessageHistoryString` + `buildCompressionUserMessage` (imported from app source → fidelity guaranteed).\n- Writes to `experiments-data/history-compression/<channel>/NNN-title/compression-NNN/`:\n  - `system-prompt.md` — static prompt.\n  - `user-message.md` — dynamic user msg with budget hint.\n  - `compact-history.xml` — raw serialized input.\n  - `actual-output.md` — what the real in-app LLM produced.\n  - `metadata.json` — indices, char counts, prev-tag leak check.\n\n→ Paste system + user into AI Studio/Claude → diff against `actual-output.md`. Covers full chain (1st → Nth compression) so chained-compression drift is testable.\n\n## Common tasks\n\n- **\"Why didn't compression trigger?\"** → check `usedTokens` vs trigger formula; verify `compactionThreshold ≥ 0`; check `_isCompressingHistory` not stuck.\n- **\"Compression is too aggressive/lossy\"** → bump `COMPRESSION_TARGET_CHARS`; lower `compactionThreshold` so it triggers earlier with smaller inputs.\n- **\"Too few kept messages after compression\"** → raise `minUncompressedMessages` or `KEPT_BUDGET_FRACTION` (but keep < trigger).\n- **\"Output leaks `<previous-chat-history>` tags\"** → check `metadata.json` `actualOutputIncludesPreviousTag`; prompt already forbids it, likely model regression → bump cascade order.\n- **\"Boundary drift after compression\"** → `compressHistoryInternal` re-finds boundary by `id` after LLM round-trip (user may have undone messages mid-compression); missing id → silent skip + warn.\n",".agents/skills/stage-ui-design-system/SKILL.md":"---\nname: stage-ui-design-system\ndescription: Stagewise UI theming, design tokens, derived utilities, and component library reference. Use when creating, editing, or reviewing UI in apps/browser, implementing new screens or components, or styling with Tailwind in the stagewise codebase.\n---\n\n# Stage UI Design System\n\nAll UI in `apps/browser/` is built on `@stagewise/stage-ui` — a shared design system using **OKLCH colors**, **Tailwind CSS 4**, and **Base UI (React)** primitives.\n\n## Importing Styles & Components\n\n**Styles** — import the CSS entry point (already done in the browser app):\n```css\n@import \"../../../../../packages/stage-ui/src/styles/index.css\";\n```\n\n**Components** — import via package alias:\n```tsx\nimport { Button } from '@stagewise/stage-ui/components/button';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@stagewise/stage-ui/components/tooltip';\n```\n\n**Utility function** — `cn()` merges Tailwind classes (clsx + twMerge):\n```tsx\nimport { cn } from '@stagewise/stage-ui/lib/utils';\n```\n\n## Color System (OKLCH)\n\nAll colors use OKLCH with a shared hue `--H: 265` (purple). The palette is defined in `palette.css`.\n\n**Base colors** (`--color-base-50` to `--color-base-950`): Low-chroma, nearly grayscale but subtly tinted. Used for 95%+ of the app.\n\n**Primary colors** (`--color-primary-50` to `--color-primary-950`): High-chroma, saturated. Used for CTAs, links, active states.\n\n**Semantic colors**: `success` (green), `error` (red), `warning` (yellow), `info` (blue) — each has `-background`, `-foreground`, `-solid` variants that auto-switch with light/dark.\n\n## Theme Tokens\n\nDefined in `theme.css`, tokens auto-switch between light and dark mode via `prefers-color-scheme`.\n\n### Backgrounds\n\n| Tailwind class | Token | Usage |\n|---|---|---|\n| `bg-app-background` | `--color-app-background` | Outermost app chrome |\n| `bg-background` | `--color-background` | Main content areas, cards, panels |\n| `bg-surface-1` | `--color-surface-1` | First elevation above background |\n| `bg-surface-2` | `--color-surface-2` | Second elevation (nested elements) |\n| `bg-surface-3` | `--color-surface-3` | Third elevation (deeply nested) |\n| `bg-surface-tinted` | `--color-surface-tinted` | Primary-tinted highlight surface |\n| `bg-overlay` | `--color-overlay` | Modal/dialog backdrops (use with opacity) |\n\n### Text\n\n| Tailwind class | Usage |\n|---|---|\n| `text-foreground` | Primary readable text |\n| `text-muted-foreground` | Secondary/less important text |\n| `text-subtle-foreground` | Hints, placeholders, disabled text |\n| `text-primary-foreground` | Accent text (links, highlights) |\n| `text-solid-foreground` | Text on solid/primary backgrounds |\n\n### Borders\n\n| Tailwind class | Usage |\n|---|---|\n| `border-border` | Regular borders |\n| `border-border-subtle` | Subtle/lighter borders |\n\n### Primary\n\n| Tailwind class | Usage |\n|---|---|\n| `bg-primary-solid` | Solid primary fill (buttons, badges) |\n\n### Semantic\n\nPattern: `(bg|text)-{success|error|warning|info}-{background|foreground|solid}`\n\n## Elevation & Shadows\n\n**Light mode**: Use `bg-background` for cards. Depth comes from shadows.\n**Dark mode**: Use escalating surfaces based on nesting depth:\n- Element on `bg-background` → use `bg-surface-1`\n- Element on `bg-surface-1` → use `bg-surface-2`\n- Element on `bg-surface-2` → use `bg-surface-3`\n\nShadow utilities (defined in `shadows.css`):\n- `shadow-elevation-1` — subtle card shadow\n- `shadow-elevation-2` — prominent popup/modal shadow\n\n## Derived Utilities\n\nThese auto-derive border/hover/active colors from an element's background. **Requires the element to have a `bg-*` class set.**\n\n### Borders (derived from background)\n- `border-derived-subtle` — light border\n- `border-derived` — regular border\n- `border-derived-strong` — strong border\n- `border-derived-lighter-subtle` / `border-derived-lighter` — explicitly lighter\n\nSame pattern for rings: `ring-derived-subtle`, `ring-derived`, `ring-derived-strong`\n\n### Hover & Active States\n- `hover:bg-hover-derived` — hover background\n- `active:bg-active-derived` — active/pressed background\n- `hover:text-hover-derived` — hover text\n- `active:text-active-derived` — active text\n\n### Explicit Lighten/Darken (ignores dark/light mode)\n- `bg-derived-lighter` / `bg-derived-lighter-subtle`\n- `bg-derived-darker` / `bg-derived-darker-subtle`\n- `text-derived-lighter` / `text-derived-lighter-subtle`\n\n## Animations\n\nDefined in `animations.css`. Use as Tailwind classes:\n\n| Class | Effect |\n|---|---|\n| `animate-progress-bar-indicator` | Repeating slide for progress bars |\n| `animate-skeleton-shimmer` | Loading shimmer for skeletons |\n| `animate-caret-blink` | Blinking caret for inputs |\n| `animate-icon-pulse` | Stroke-width pulse for icons |\n| `animate-pulse-full` | Full opacity pulse (0→1→0) |\n| `animate-text-pulse` | Muted↔foreground text pulse |\n| `animate-text-pulse-warning` | Foreground↔warning text pulse |\n| `shimmer-text` | Shimmering gradient text effect |\n| `shimmer-text-primary` | Primary-colored shimmer preset |\n| `shimmer-text-once` | One-shot shimmer that settles |\n\nShimmer config: `shimmer-duration-{ms}`, `shimmer-from-{color}`, `shimmer-to-{color}`\n\n## Component Patterns\n\nAll components follow these patterns:\n\n1. **Built on Base UI** (`@base-ui/react`) — unstyled React primitives\n2. **Variants via CVA** (`class-variance-authority`) — `variant` and `size` props\n3. **Class merging** via `cn()` — all accept `className` for overrides\n4. **Compound components** — e.g. `Dialog` + `DialogContent` + `DialogTitle`\n\n### Typical usage example\n\n```tsx\nimport { Button } from '@stagewise/stage-ui/components/button';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@stagewise/stage-ui/components/tooltip';\n\n<Tooltip>\n  <TooltipTrigger>\n    <Button variant=\"secondary\" size=\"sm\">Click me</Button>\n  </TooltipTrigger>\n  <TooltipContent side=\"top\">Helpful hint</TooltipContent>\n</Tooltip>\n```\n\n## Available Components\n\nFor detailed API and props of each component, see [components-reference.md](components-reference.md).\n\n| Component | Import path | Key props |\n|---|---|---|\n| **Button** | `components/button` | `variant`: primary, secondary, destructive, warning, success, ghost. `size`: xs, sm, md, lg, icon-2xs, icon-xs, icon-sm, icon-md |\n| **Input** | `components/input` | `size`: xs, sm, md. `debounce`: ms. Built on Base UI Input |\n| **Select** | `components/select` | `items`, `value`, `onValueChange`, `size`, `triggerVariant`: ghost/secondary, `multiple` |\n| **Checkbox** | `components/checkbox` | `size`: xs, sm, md. Built on Base UI Checkbox |\n| **Switch** | `components/switch` | `size`: xs, sm, md. Built on Base UI Switch |\n| **Radio** | `components/radio` | `RadioGroup` + `Radio` + `RadioLabel`. Built on Base UI Radio |\n| **Tabs** | `components/tabs` | `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent` |\n| **Dialog** | `components/dialog` | `Dialog`, `DialogTrigger`, `DialogContent`, `DialogTitle`, `DialogDescription`, `DialogClose`, `DialogHeader`, `DialogFooter` |\n| **Popover** | `components/popover` | `Popover`, `PopoverTrigger`, `PopoverContent`, `PopoverTitle`, `PopoverDescription`, `PopoverClose`, `PopoverFooter` |\n| **Tooltip** | `components/tooltip` | `Tooltip`, `TooltipTrigger`, `TooltipContent`, `TooltipProvider` |\n| **Menu** | `components/menu` | `Menu`, `MenuTrigger`, `MenuContent`, `MenuItem`, `MenuSeparator`, `MenuSubmenu`, `MenuSubmenuTrigger`, `MenuSubmenuContent` |\n| **Collapsible** | `components/collapsible` | `Collapsible`, `CollapsibleTrigger` (size: default/condensed), `CollapsibleContent` |\n| **Progress** | `components/progress` | `Progress`, `ProgressTrack` (variant: normal/warning, busy, slim), `ProgressLabel`, `ProgressValue` |\n| **Skeleton** | `components/skeleton` | `variant`: rectangle, circle, text. `size`: xs–full. `animate`: boolean |\n| **Form** | `components/form` | `Form`, `FormFieldset`, `FormField`, `FormFieldLabel`, `FormFieldTitle`, `FormFieldDescription`, `FormFieldError`, `FormFieldSeparator` |\n| **Resizable** | `components/resizable` | `ResizablePanelGroup`, `ResizablePanel`, `ResizableHandle`. Built on react-resizable-panels |\n| **OverlayScrollbar** | `components/overlay-scrollbar` | Custom scrollbar wrapper |\n| **Toaster** | `components/toaster` | Toast notification system |\n| **Breadcrumb** | `components/breadcrumb` | Breadcrumb navigation |\n| **Combobox** | `components/combobox` | Combobox/autocomplete input |\n| **InputOtp** | `components/input-otp` | OTP code input |\n| **SearchableSelect** | `components/searchable-select` | Searchable dropdown select |\n| **SplitText** | `components/split-text` | Text splitting utility |\n| **PreviewCard** | `components/preview-card` | Card with preview content |\n| **LogoText** | `components/logo-text` | Stagewise logo text |\n\n## Quick Decision Guide\n\n**Picking a background:**\n- Top-level page → `bg-app-background`\n- Card/panel → `bg-background`\n- Nested element → escalate: `bg-surface-1` → `bg-surface-2` → `bg-surface-3`\n\n**Picking text color:**\n- Primary content → `text-foreground`\n- Secondary info → `text-muted-foreground`\n- Placeholder/disabled → `text-subtle-foreground`\n- Links/accents → `text-primary-foreground`\n\n**Borders & states (on elements with `bg-*`):**\n- Border: `border border-derived` or `border border-derived-subtle`\n- Hover: `hover:bg-hover-derived`\n- Active: `active:bg-active-derived`\n\n**Icons:** Use `lucide-react` or `nucleo-ui-fill-18` (project-specific icon set).\n\n## Storybook\n\nPreview components and color definitions:\n```bash\npnpm --filter stagewise storybook\n```\n","apps/browser/bundled/skills/preview/SKILL.md":"---\nname: Preview\ndescription: Create an interactive design-preview in a browser tab\nuser-invocable: true\nagent-invocable: false\n---\n\nBuild a **mini-app** to fulfill the request. Use the `apps/` directory and `API.openApp(appId, { target: 'tab', title: 'Readable preview title' })` as documented in the Application Environment section.\n\n## Workflow\n\n1. **Scaffold** — create `apps/{appId}/index.html` (+ optional `styles.css`, `script.js`).\n2. **Design for a full browser tab** — the preview opens on an internal `stagewise://internal/preview/{appId}` page, so use responsive layouts that work from narrow to full-width viewports.\n3. **Open in tab** — call `await API.openApp(appId, { target: 'tab', title: 'Readable preview title' })`. The title is shown in the tab breadcrumbs. The returned `{ tabId }` can be used with `API.sendCDP()` if the preview needs inspection.\n4. **Iterate** — use file tools (`multiEdit`, `overwriteFile`) for edits, then call `API.openApp(appId, { target: 'tab', title: 'Readable preview title' })` again to open the refreshed preview.\n\n## Rules\n\n- One `index.html` per app. Sibling assets resolve via relative paths (`./styles.css`).\n- Prefer self-contained HTML (inline or sibling files) — no external build step.\n- Do not open preview apps in the chat. Use `target: 'tab'`.\n- Use `API.sendMessage` / `API.onMessage` only when bidirectional communication is needed.","apps/browser/bundled/skills/plan/SKILL.md":"---\nname: Plan\ndescription: Create a structured implementation plan before coding\nuser-invocable: true\nagent-invocable: false\n---\n\nYou must create a structured implementation plan. Follow these instructions:\n## Workflow\n\n1. **Research** — read all affected files, trace data flow, understand the full change surface.\n2. **Clarify** — if genuinely ambiguous, batch questions into one `askUserQuestions` call.\n3. **Write** — create a kebab-case `.md` in `plans/`.\n4. **Stop** — present a summary and wait for approval. Do NOT implement until the user confirms.\n\n## Plan File Spec\n\n- **Line 1:** `# Plan Title` (h1) — used as display name in UI.\n- **Line 2:** One-sentence plain-text description — used as summary in UI.\n- **Body:** Freeform markdown. Use whatever sections best explain the change — Problem, Approach, Context, Changes, File Map, Key Details, etc. No fixed structure required; scale detail to complexity. Do not use emojis.\n  - **Self-contained:** A fresh agent with no prior context should be able to implement the plan without re-researching the codebase. Include relevant file paths (mount-prefixed, e.g. `w4ba9/src/...`), current behavior, key decisions and rationale in prose sections. Omit sections that add no value.\n  - **Checkboxes:** Use GFM checkboxes (`- [ ]`) for tasks. See Checkbox Rules below.\n\n## Checkbox Rules\n\nEvery checkbox = one concrete, completable work item.\n\n- **Agent-completable only** — every checkbox MUST be doable by you alone with your own tools. Never write tasks that require the user to act (manual testing, running commands in their shell, restarting a dev server, exporting env vars, reviewing, clicking through a UI, obtaining credentials, etc.). If such work is genuinely needed, describe it in a prose `## Follow-ups for the user` section — never as a checkbox.\n- **Short label** — the `- [ ]` line is a concise, scannable summary (one sentence). It says *what* to do, not *how*.\n- **Details below** — implementation specifics (file paths, code snippets, sub-steps) go in indented content underneath the checkbox line. Never cram these into the checkbox line itself.\n- **No alternatives** — resolve choices in prose above, then write one task for the chosen approach.\n- **No optional/decorative items** — if conditional, resolve the condition; include as firm task or omit.\n- **Parent-child consistency** — parent is complete only when all children are complete.\n\n### Example\n\n```markdown\n# Rename Commands to Skills\n\nRename all \"command\" terminology to \"skill\" across shared types, backend, and UI.\n\n## Context\n\nThe codebase currently uses \"command\" (`CommandDefinition`, `CommandSource`, etc.) but the\nuser-facing terminology has shifted to \"skill\". The rename touches 3 files and 6 import sites.\n\n## Tasks\n\n- [ ] Rename `CommandDefinition` type and its source file\n\n  Rename `w4ba9/src/shared/commands.ts` → `skills.ts`. Inside the file:\n  - `CommandSource` → `SkillSource`\n  - `CommandDefinition` → `SkillDefinition`\n  - `toCommandDefinitionUI` → `toSkillDefinitionUI`\n\n  Update all 6 import sites listed in the Context section.\n\n- [ ] Update Karton state key from `commands` to `skills`\n\n  In `w4ba9/src/shared/karton-contracts/ui/index.ts` (line ~629),\n  change the state key and update the JSDoc comment above it.\n\n- [ ] Verify typecheck passes\n\n  Run `pnpm -F stagewise typecheck` for both `tsconfig.ui.json` and `tsconfig.backend.json`.\n```\n","apps/browser/bundled/skills/watch/SKILL.md":"---\nname: Watch\ndescription: Watch a local or remote condition in the background and resume when it is met\nuser-invocable: true\nagent-invocable: false\n---\n\nTreat the user's request as a background watch task. Call\n`createWatcherSession` in this turn unless the condition is already satisfied,\ncannot be checked with the available CLIs, or a matching active watcher is\nlisted in the current `<shell-sessions>`.\n\nPerform any required read-only preflight before arming the watcher. After it is\narmed, briefly tell the user and end the turn; do not wait with\n`executeShellCommand`.\n",".agents/skills/caveman/SKILL.md":"---\nname: caveman\ndescription: >\n  Ultra-compressed communication mode. Cuts output tokens 65% (measured) by speaking like caveman\n  while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra,\n  wenyan-lite, wenyan-full, wenyan-ultra.\n  Use when user says \"caveman mode\", \"talk like caveman\", \"use caveman\", \"less tokens\",\n  \"be brief\", or invokes /caveman. Also auto-triggers when token efficiency is requested.\n---\n\nRespond terse like smart caveman. All technical substance stay. Only fluff die.\n\n## Persistence\n\nACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: \"stop caveman\" / \"normal mode\".\n\nDefault: **full**. Switch: `/caveman lite|full|ultra|wenyan-lite|wenyan-full|wenyan-ultra|off`.\n\n## Rules\n\nDrop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not \"implement a solution for\"). No tool-call narration, no decorative tables/emoji, no dumping long raw error logs unless asked — quote shortest decisive line. Standard well-known tech acronyms OK (DB/API/HTTP); never invent new abbreviations (cfg/impl/req/res/fn) — tokenizer split them same as full word: zero token saved, reader still decode. Full word cheaper AND clearer. No causal arrows (→) either — own token, save nothing. Technical terms exact. Code blocks unchanged. Errors quoted exact.\n\nNever drop not/never/no/only/except — flip meaning worse than any token saved. Numbers, units exact.\n\nTool calls: fire direct. No preamble, plan, or progress note before or between calls. After result: next call direct or final answer — never announce next call. Text before call only to clarify, warn security/irreversible, or resolve ambiguity.\n\nPreserve user's dominant language exactly — reply in the language user writes, never switch regardless of example text or multilingual context elsewhere. Compress the style, not the language. Every emitted line in that language — openings, pre-tool status lines, all — not just final reply. ALWAYS keep technical terms, code, API names, CLI commands, commit-type keywords (feat/fix/...), and exact error strings verbatim — unless user explicitly ask for translation.\n\n'Drop articles' = article languages only. Where small markers carry case/role (particles, postpositions), keep them — grammar, not filler; compress politeness/filler instead.\n\nNo self-reference. Never name or announce the style. No \"caveman mode on\", \"me caveman think\", no third-person caveman tags. Output caveman-only — never normal answer plus \"Caveman:\" recap. Exception: user explicitly ask what the mode is.\n\nPattern: `[thing] [action] [reason]. [next step].`\n\nNot: \"Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by...\"\nYes: \"Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:\"\n\n## Intensity\n\n| Level | What change |\n|-------|------------|\n| **lite** | No filler/hedging. Keep articles + full sentences. Professional but tight |\n| **full** | Drop articles, fragments OK, short synonyms. Classic caveman. No tool-call narration, no decorative tables/emoji, no long raw error-log dumps unless asked. Standard acronyms OK; no invented abbreviations |\n| **ultra** | Strip conjunctions when cause-then-effect stay unambiguous. One word when one word enough. State each fact once. NO prose abbreviations (cfg/impl/req/res/fn/auth), NO arrows (X → Y) — measured zero token saving under tokenizer, cost decode clarity. Code symbols, function names, API names, error strings: never touch |\n| **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |\n| **wenyan-full** | Maximum classical terseness. Fully 文言文. 80-90% character reduction — chars, not tokens. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其) |\n| **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |\n\nExample — \"Why React component re-render?\"\n- lite: \"Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`.\"\n- full: \"New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`.\"\n- ultra: \"Inline obj prop, new ref, re-render. `useMemo`.\"\n- wenyan-lite: \"組件頻重繪，以每繪新生對象參照故。以 useMemo 包之。\"\n- wenyan-full: \"每繪新生對象參照，故重繪；以 useMemo 包之則免。\"\n- wenyan-ultra: \"新參照則重繪。useMemo 包之。\"\n\nExample — \"Explain database connection pooling.\"\n- lite: \"Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead.\"\n- full: \"Pool reuse open DB connections. No new connection per request. Skip handshake overhead.\"\n- ultra: \"Pool reuse open DB connections. No per-request handshake.\"\n- wenyan-full: \"池蓄已開之連，不逐請而新開，省握手之費。\"\n- wenyan-ultra: \"池蓄連，免逐請新開，省握手。\"\n\nClassical chars = wenyan modes only. Never swap a word to a classical char to shrink at non-wenyan levels.\n\n## Auto-Clarity\n\nDrop caveman when:\n- Security warnings\n- Irreversible action confirmations\n- Multi-step sequences where fragment order or omitted conjunctions risk misread\n- Compression itself creates technical ambiguity (e.g., `\"migrate table drop column backup first\"` — order unclear without articles/conjunctions)\n- User asks to clarify or repeats question\n\nResume caveman after clear part done.\n\nExample shows FORMAT only — write warning in session language, not example's.\n\nExample — destructive op:\n> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.\n> ```sql\n> DROP TABLE users;\n> ```\n> Caveman resume. Verify backup exist first.\n\n## Boundaries\n\nPersisted outside chat: write normal prose — code, comments, commits, docs, issue/PR/MR text, memory files, third-party messages (/caveman-compress exempt). \"stop caveman\" or \"normal mode\": revert. Level persist until changed or session end.",".agents/skills/add-llm-model/SKILL.md":"---\nname: add-llm-model\ndescription: Use when adding a new LLM/model to stagewise model catalogs, provider instances, routing, validation, docs, or showcase UI.\n---\n\n# Add LLM Model\n\nUse this workflow when adding or updating model support in stagewise.\n\n## Architecture First\n\nModels are no longer a single global enabled/disabled list. Routing and model\navailability are scoped to entries in `preferences.providerInstances`.\n\n- `apps/browser/src/shared/available-models.ts` is the curated metadata catalog.\n- `apps/browser/src/backend/agents/providers/` contains stateless provider-type\n  implementations. `registry.ts` maps each `ProviderInstanceTypeId` to its type.\n- `apps/browser/src/backend/agents/model-provider.ts` resolves a provider\n  instance, then delegates ID conversion and model creation to its provider type.\n- Each provider instance owns `enabledModelIds`, `disabledModelIds`, and\n  `discoveredModels`.\n- `apps/browser/src/shared/flagship-models.ts` curates newly discovered models\n  per provider instance. Catalog models on official APIs are considered\n  flagship. OpenRouter has its own prefixed-ID flagship set.\n\nRead those files and the relevant provider implementation before deciding the\nchange surface. Do not apply guidance written for the old global model list.\n\n## Required Checks\n\n1. **Research authoritative metadata.**\n   - Confirm the canonical ID, native provider ID, context window, modalities,\n     tool support, reasoning support, and pricing.\n   - Prefer provider documentation for native behavior and OpenRouter data for\n     the Stagewise/OpenRouter route.\n   - Keep still-supported sibling models unless removal was explicitly requested.\n\n2. **Add or update catalog metadata.**\n   - Edit `apps/browser/src/shared/available-models.ts`.\n   - Match the field order and provider options of the nearest sibling.\n   - Update `apps/browser/src/shared/model-thinking-capabilities.ts` when the\n     model supports configurable thinking/reasoning.\n\n3. **Audit provider-instance routing.**\n   - Inspect `apps/browser/src/backend/agents/providers/registry.ts` and the\n     relevant implementation in `apps/browser/src/backend/agents/providers/`.\n   - Existing providers are normally model-agnostic; do not add a per-model\n     branch unless the wire ID or API behavior genuinely differs.\n   - Put canonical-to-wire ID conversion in the provider type's\n     `toWireModelId`, not in new branches in the central model provider.\n   - Stagewise routing prefixes canonical IDs for OpenRouter in\n     `providers/stagewise.ts`.\n   - Explicit custom endpoint `modelIdMapping` values must override defaults.\n\n4. **Curate discovery intentionally.**\n   - For OpenRouter, update `OPENROUTER_FLAGSHIP_MODELS` in\n     `apps/browser/src/shared/flagship-models.ts` when the new model should be\n     enabled on first discovery. IDs must include the OpenRouter vendor prefix.\n   - Remove a superseded model from that set only if it should stop being a\n     default for *new discovery*. Existing user choices are intentionally\n     preserved by `computeDisabledModelIdsAfterDiscovery`.\n   - Official-provider catalog entries are already treated as flagship; do not\n     duplicate them in `VENDOR_FLAGSHIP_DISCOVERED_MODELS`.\n\n5. **Do not seed model deprecations in the legacy provider migration.**\n   - Never add a new model ID to the `stagewise-default.disabledModelIds`\n     literal inside `PreferencesService.migrateToProviderInstances`.\n   - That function runs only when `providerInstances` is empty. Such a change\n     affects only users crossing the legacy migration and misses users whose\n     instances already exist, creating inconsistent availability.\n   - Do not patch the ID on every startup either; that would override a user's\n     later decision to re-enable the model.\n   - If product requirements call for changing existing users' model choices,\n     ask first and implement an explicit, idempotent, versioned preference\n     migration with tests. Define which provider-instance types are in scope\n     and preserve choices after the migration has run once.\n   - If the old model remains supported, keep it in the catalog and leave\n     existing per-instance state untouched. Discovery flagship curation controls\n     defaults for newly discovered provider models.\n\n6. **Keep credential validation cheap and broadly available.**\n   - Validation now belongs to the provider type's `validateCredentials`\n     implementation, usually in `providers/official-api.ts`, rather than being\n     hardcoded in central routing.\n   - Do not switch validation to a new flagship/high-tier model by default.\n     Prefer a cheap model broadly available to provider keys.\n   - Legacy `validate-api-keys.ts` paths may still exist for compatibility;\n     inspect callers before editing them.\n\n7. **Audit other product surfaces rather than editing mechanically.**\n   - Coding plans: `apps/browser/src/shared/coding-plans.ts`.\n   - Homepage showcase:\n     `apps/website/src/app/(home)/_components/model-provider-showcase.tsx`.\n   - README files and localized variants.\n   - Thinking tests, provider tests, and model-selector tests.\n   - Historical benchmark/comparison copy must not be renamed without evidence.\n\n8. **Always verify subscription-plan base URLs.**\n   - Many providers use **different API endpoints** for subscription/token-plan keys vs. pay-as-you-go (BYOK) keys.\n   - Example: GLM uses `https://api.z.ai/api/paas/v4` for BYOK but `https://api.z.ai/api/coding/paas/v4` for coding-plan subscriptions. Xiaomi MiMo uses `https://api.xiaomimimo.com/v1` for BYOK but `https://token-plan-cn.xiaomimimo.com/v1` for token-plan subscriptions.\n   - The two key types are often **non-interchangeable** — a subscription key will be rejected by the BYOK endpoint and vice versa.\n   - Before finalizing a coding-plan entry, **always** check the provider's official documentation to confirm:\n     - Whether subscription tokens require a separate `baseUrl` / `validationBaseUrl`.\n     - The correct cluster or region-specific URL (some providers offer multiple regional endpoints for subscriptions).\n     - The API key format prefix (e.g. `tp-` for MiMo token plan vs `sk-` for BYOK).\n   - Set `baseUrl`, `validationBaseUrl`, `validationModelId`, `apiKeyPattern`, and `endpointHelpText` on the coding-plan entry accordingly.\n   - If the provider exposes documentation via `llms.txt`, fetch it — it links to raw markdown doc pages that contain the authoritative endpoint and auth details.\n   - Update `apiKeyUrl` and `helpText` to point to the subscription management page (not the BYOK API keys page) when the two are separate.\n\n## Validation\n\nAfter changes:\n\n- Run targeted tests for catalog metadata, thinking capabilities, flagship\n  discovery, provider routing, and any preference migration touched.\n- Run browser typecheck and Biome on all edited files.\n- Search for the new and superseded model IDs across browser and website code.\n- Confirm Stagewise/OpenRouter and official-provider wire IDs independently.\n- Confirm docs, coding-plan `featuredModelIds`, and showcase entries are\n  intentionally aligned.\n- If preference migration changed, test both empty and already-populated\n  `providerInstances`, idempotence, and preservation of user choices.\n","apps/browser/bundled/skills/learn-skill/SKILL.md":"# learn-skill\n\nPath: `apps/browser/bundled/skills/learn-skill/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/SKILL.md)","apps/browser/bundled/skills/implement/SKILL.md":"# implement\n\nPath: `apps/browser/bundled/skills/implement/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/implement/SKILL.md)","apps/browser/bundled/skills/debug/SKILL.md":"# debug\n\nPath: `apps/browser/bundled/skills/debug/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/debug/SKILL.md)","apps/browser/bundled/plugins/vercel/SKILL.md":"# vercel\n\nPath: `apps/browser/bundled/plugins/vercel/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/vercel/SKILL.md)","apps/browser/bundled/plugins/supabase/SKILL.md":"# supabase\n\nPath: `apps/browser/bundled/plugins/supabase/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/supabase/SKILL.md)","apps/browser/bundled/plugins/remotion/SKILL.md":"# remotion\n\nPath: `apps/browser/bundled/plugins/remotion/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/SKILL.md)","apps/browser/bundled/plugins/posthog/SKILL.md":"# posthog\n\nPath: `apps/browser/bundled/plugins/posthog/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/posthog/SKILL.md)","apps/browser/bundled/plugins/mini-apps/SKILL.md":"# mini-apps\n\nPath: `apps/browser/bundled/plugins/mini-apps/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/SKILL.md)","apps/browser/bundled/plugins/javascript-sandbox/SKILL.md":"# javascript-sandbox\n\nPath: `apps/browser/bundled/plugins/javascript-sandbox/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/SKILL.md)","apps/browser/bundled/plugins/github/SKILL.md":"# github\n\nPath: `apps/browser/bundled/plugins/github/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/github/SKILL.md)","apps/browser/bundled/plugins/figma/SKILL.md":"# figma\n\nPath: `apps/browser/bundled/plugins/figma/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/figma/SKILL.md)","AGENTS.md":"# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/AGENTS.md)","CLAUDE.md":"# Claude Agent Guidelines & System Prompt\n\nPath: `CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/CLAUDE.md)","packages/typescript-config/base.json":"# Typescript-config Skill\n\nPath: `packages/typescript-config/base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/base.json)","packages/typescript-config/CHANGELOG.md":"# Typescript-config Skill\n\nPath: `packages/typescript-config/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/CHANGELOG.md)","packages/typescript-config/nextjs.json":"# Typescript-config Skill\n\nPath: `packages/typescript-config/nextjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/nextjs.json)","packages/typescript-config/package.json":"# Typescript-config Skill\n\nPath: `packages/typescript-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/package.json)","packages/typescript-config/react-library.json":"# Typescript-config Skill\n\nPath: `packages/typescript-config/react-library.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/react-library.json)","packages/tailwindcss-color-modifiers/package.json":"# Tailwindcss-color-modifiers Skill\n\nPath: `packages/tailwindcss-color-modifiers/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/package.json)","packages/tailwindcss-color-modifiers/README.md":"# tailwindcss-color-modifiers Documentation\n\nPath: `packages/tailwindcss-color-modifiers/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/README.md)","packages/tailwindcss-color-modifiers/tsconfig.json":"# Tailwindcss-color-modifiers Skill\n\nPath: `packages/tailwindcss-color-modifiers/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/tsconfig.json)","packages/stage-ui/CHANGELOG.md":"# Stage-ui Skill\n\nPath: `packages/stage-ui/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/CHANGELOG.md)","packages/stage-ui/package.json":"# Stage-ui Skill\n\nPath: `packages/stage-ui/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/package.json)","packages/stage-ui/README.md":"# stage-ui Documentation\n\nPath: `packages/stage-ui/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/README.md)","packages/stage-ui/tsconfig.json":"# Stage-ui Skill\n\nPath: `packages/stage-ui/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/tsconfig.json)","packages/karton/CHANGELOG.md":"# Karton Skill\n\nPath: `packages/karton/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/CHANGELOG.md)","packages/karton/LICENSE.md":"# Karton Skill\n\nPath: `packages/karton/LICENSE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/LICENSE.md)","packages/karton/package.json":"# Karton Skill\n\nPath: `packages/karton/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/package.json)","packages/karton/README.md":"# karton Documentation\n\nPath: `packages/karton/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/README.md)","packages/karton/SPEC.md":"# Karton Skill\n\nPath: `packages/karton/SPEC.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/SPEC.md)","packages/karton/tsconfig.json":"# Karton Skill\n\nPath: `packages/karton/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/tsconfig.json)","packages/karton/turbo.json":"# Karton Skill\n\nPath: `packages/karton/turbo.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/turbo.json)","packages/icons/package.json":"# Icons Skill\n\nPath: `packages/icons/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/package.json)","packages/icons/README.md":"# icons Documentation\n\nPath: `packages/icons/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/README.md)","packages/icons/tsconfig.json":"# Icons Skill\n\nPath: `packages/icons/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/tsconfig.json)","packages/agent-shell/package.json":"# Agent-shell Skill\n\nPath: `packages/agent-shell/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/package.json)","packages/agent-shell/tsconfig.json":"# Agent-shell Skill\n\nPath: `packages/agent-shell/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/tsconfig.json)","packages/agent-core/package.json":"# Agent-core Skill\n\nPath: `packages/agent-core/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/package.json)","packages/agent-core/README.md":"# agent-core Documentation\n\nPath: `packages/agent-core/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/README.md)","packages/agent-core/SPEC.md":"# Agent-core Skill\n\nPath: `packages/agent-core/SPEC.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/SPEC.md)","packages/agent-core/tsconfig.json":"# Agent-core Skill\n\nPath: `packages/agent-core/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/tsconfig.json)",".agents/skills/vercel-react-best-practices/AGENTS.md":"# Vercel-react-best-practices Skill\n\nPath: `.agents/skills/vercel-react-best-practices/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/AGENTS.md)",".agents/skills/vercel-react-best-practices/metadata.json":"# Vercel-react-best-practices Skill\n\nPath: `.agents/skills/vercel-react-best-practices/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/metadata.json)",".agents/skills/vercel-react-best-practices/README.md":"# Vercel-react-best-practices Skill\n\nPath: `.agents/skills/vercel-react-best-practices/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/README.md)",".agents/skills/stage-ui-design-system/components-reference.md":"# Stage-ui-design-system Skill\n\nPath: `.agents/skills/stage-ui-design-system/components-reference.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/stage-ui-design-system/components-reference.md)",".agents/skills/caveman/README.md":"# Caveman Skill\n\nPath: `.agents/skills/caveman/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/caveman/README.md)","packages/agent-core/src/humanspec.md":"# Src Skill\n\nPath: `packages/agent-core/src/humanspec.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/humanspec.md)",".agents/skills/vercel-react-best-practices/rules/_sections.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/_sections.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/_sections.md)",".agents/skills/vercel-react-best-practices/rules/_template.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/_template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/_template.md)",".agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md)",".agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md)",".agents/skills/vercel-react-best-practices/rules/advanced-init-once.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md)",".agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md)",".agents/skills/vercel-react-best-practices/rules/async-api-routes.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-api-routes.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md)",".agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md)",".agents/skills/vercel-react-best-practices/rules/async-defer-await.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-defer-await.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md)",".agents/skills/vercel-react-best-practices/rules/async-dependencies.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-dependencies.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md)",".agents/skills/vercel-react-best-practices/rules/async-parallel.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-parallel.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-parallel.md)",".agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md)",".agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md)",".agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md)",".agents/skills/vercel-react-best-practices/rules/bundle-conditional.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md)",".agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md)",".agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md)",".agents/skills/vercel-react-best-practices/rules/bundle-preload.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-preload.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md)",".agents/skills/vercel-react-best-practices/rules/client-event-listeners.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md)",".agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md)",".agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md)",".agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md)",".agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md)",".agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md)",".agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md)",".agents/skills/vercel-react-best-practices/rules/js-cache-storage.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md)",".agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md)",".agents/skills/vercel-react-best-practices/rules/js-early-exit.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-early-exit.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md)",".agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md)",".agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md)",".agents/skills/vercel-react-best-practices/rules/js-index-maps.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-index-maps.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md)",".agents/skills/vercel-react-best-practices/rules/js-length-check-first.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md)",".agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md)",".agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md)",".agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md)",".agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md)",".agents/skills/vercel-react-best-practices/rules/rendering-activity.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-activity.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md)",".agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md)",".agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md)",".agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md)",".agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md)",".agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md)",".agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md)",".agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md)",".agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md)",".agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md)",".agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md)",".agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md)",".agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md)",".agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md)",".agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md)",".agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md)",".agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md)",".agents/skills/vercel-react-best-practices/rules/rerender-memo.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-memo.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md)",".agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md)",".agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md)",".agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md)",".agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md)",".agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md)",".agents/skills/vercel-react-best-practices/rules/rerender-transitions.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md)",".agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md)",".agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md)",".agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md)",".agents/skills/vercel-react-best-practices/rules/server-auth-actions.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md)",".agents/skills/vercel-react-best-practices/rules/server-cache-lru.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md)",".agents/skills/vercel-react-best-practices/rules/server-cache-react.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-cache-react.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md)",".agents/skills/vercel-react-best-practices/rules/server-dedup-props.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md)",".agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md)",".agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md)",".agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md)",".agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md)",".agents/skills/vercel-react-best-practices/rules/server-serialization.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-serialization.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-serialization.md)",".agents/skills/prompt-optimization/references/agentic-prompts.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/agentic-prompts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/agentic-prompts.md)",".agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md)",".agents/skills/prompt-optimization/references/clarity-and-structure.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/clarity-and-structure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/clarity-and-structure.md)",".agents/skills/prompt-optimization/references/compression-techniques.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/compression-techniques.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/compression-techniques.md)",".agents/skills/prompt-optimization/references/output-control.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/output-control.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/output-control.md)",".agents/skills/prompt-optimization/references/safety-and-security.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/safety-and-security.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/safety-and-security.md)",".agents/skills/prompt-optimization/references/workflows.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/workflows.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/workflows.md)",".agents/skills/karton-best-practices/references/edge-cases.md":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/edge-cases.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/edge-cases.md)",".agents/skills/karton-best-practices/references/re-render-prevention.md":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/re-render-prevention.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/re-render-prevention.md)",".agents/skills/karton-best-practices/references/selector-patterns.md":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/selector-patterns.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/selector-patterns.md)",".agents/skills/karton-best-practices/references/state-update-model.md":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/state-update-model.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/state-update-model.md)",".agents/skills/create-skill/references/best-practices.md":"# References Skill\n\nPath: `.agents/skills/create-skill/references/best-practices.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/best-practices.md)",".agents/skills/create-skill/references/examples.md":"# References Skill\n\nPath: `.agents/skills/create-skill/references/examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/examples.md)",".agents/skills/create-skill/references/progressive-disclosure.md":"# References Skill\n\nPath: `.agents/skills/create-skill/references/progressive-disclosure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/progressive-disclosure.md)",".agents/skills/create-skill/references/skill-structure.md":"# References Skill\n\nPath: `.agents/skills/create-skill/references/skill-structure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/skill-structure.md)",".agents/skills/copywriting/references/copy-frameworks.md":"# References Skill\n\nPath: `.agents/skills/copywriting/references/copy-frameworks.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/references/copy-frameworks.md)",".agents/skills/copywriting/references/natural-transitions.md":"# References Skill\n\nPath: `.agents/skills/copywriting/references/natural-transitions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/references/natural-transitions.md)",".agents/skills/copywriting/evals/evals.json":"# Evals Skill\n\nPath: `.agents/skills/copywriting/evals/evals.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/evals/evals.json)","packages/stage-ui/src/code-block/example-theme-dark.json":"# Code-block Skill\n\nPath: `packages/stage-ui/src/code-block/example-theme-dark.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/src/code-block/example-theme-dark.json)","packages/stage-ui/src/code-block/example-theme-light.json":"# Code-block Skill\n\nPath: `packages/stage-ui/src/code-block/example-theme-light.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/src/code-block/example-theme-light.json)","packages/agent-shell/src/env/shells-domain-adapter.prompt.md":"# Env Skill\n\nPath: `packages/agent-shell/src/env/shells-domain-adapter.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/src/env/shells-domain-adapter.prompt.md)","packages/agent-core/src/file-read-transformer/README.md":"# file-read-transformer Documentation\n\nPath: `packages/agent-core/src/file-read-transformer/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/file-read-transformer/README.md)","packages/agent-core/src/env/env-state-spec.md":"# Env Skill\n\nPath: `packages/agent-core/src/env/env-state-spec.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/env-state-spec.md)","packages/agent-core/src/store/state-annotation.md":"# Store Skill\n\nPath: `packages/agent-core/src/store/state-annotation.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/store/state-annotation.md)","apps/browser/bundled/plugins/vercel/metadata.json":"# Vercel Skill\n\nPath: `apps/browser/bundled/plugins/vercel/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/vercel/metadata.json)","apps/browser/bundled/plugins/supabase/metadata.json":"# Supabase Skill\n\nPath: `apps/browser/bundled/plugins/supabase/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/supabase/metadata.json)","apps/browser/bundled/plugins/remotion/metadata.json":"# Remotion Skill\n\nPath: `apps/browser/bundled/plugins/remotion/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/metadata.json)","apps/browser/bundled/plugins/posthog/metadata.json":"# Posthog Skill\n\nPath: `apps/browser/bundled/plugins/posthog/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/posthog/metadata.json)","apps/browser/bundled/plugins/mini-apps/metadata.json":"# Mini-apps Skill\n\nPath: `apps/browser/bundled/plugins/mini-apps/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/metadata.json)","apps/browser/bundled/plugins/javascript-sandbox/metadata.json":"# Javascript-sandbox Skill\n\nPath: `apps/browser/bundled/plugins/javascript-sandbox/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/metadata.json)","apps/browser/bundled/plugins/github/metadata.json":"# Github Skill\n\nPath: `apps/browser/bundled/plugins/github/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/github/metadata.json)","apps/browser/bundled/plugins/figma/metadata.json":"# Figma Skill\n\nPath: `apps/browser/bundled/plugins/figma/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/figma/metadata.json)","packages/agent-core/src/env/adapters/agents-md.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/agents-md.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/agents-md.prompt.md)","packages/agent-core/src/env/adapters/enabled-skills.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/enabled-skills.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/enabled-skills.prompt.md)","packages/agent-core/src/env/adapters/file-diffs.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/file-diffs.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/file-diffs.prompt.md)","packages/agent-core/src/env/adapters/logs.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/logs.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/logs.prompt.md)","packages/agent-core/src/env/adapters/memory.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/memory.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/memory.prompt.md)","packages/agent-core/src/env/adapters/plans.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/plans.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/plans.prompt.md)","packages/agent-core/src/env/adapters/workspace.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/workspace.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/workspace.prompt.md)","packages/agent-core/src/services/diff-history/spec.md":"# Diff-history Skill\n\nPath: `packages/agent-core/src/services/diff-history/spec.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/services/diff-history/spec.md)","apps/browser/bundled/skills/learn-skill/references/authoring-guide.md":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/authoring-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/authoring-guide.md)","apps/browser/bundled/skills/learn-skill/references/session-extraction.md":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/session-extraction.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/session-extraction.md)","apps/browser/bundled/skills/learn-skill/references/skill-updating.md":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/skill-updating.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/skill-updating.md)","apps/browser/bundled/skills/learn-skill/references/workflow-patterns.md":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/workflow-patterns.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/workflow-patterns.md)","apps/browser/bundled/plugins/mini-apps/references/examples.md":"# References Skill\n\nPath: `apps/browser/bundled/plugins/mini-apps/references/examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/references/examples.md)","apps/browser/bundled/plugins/javascript-sandbox/references/examples.md":"# References Skill\n\nPath: `apps/browser/bundled/plugins/javascript-sandbox/references/examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/references/examples.md)","packages/agent-core/src/agents/chat/prompts/authorities.md":"# Subagent: authorities\n\nPath: `packages/agent-core/src/agents/chat/prompts/authorities.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/authorities.md)","packages/agent-core/src/agents/chat/prompts/environment-preamble.md":"# Subagent: environment-preamble\n\nPath: `packages/agent-core/src/agents/chat/prompts/environment-preamble.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/environment-preamble.md)","packages/agent-core/src/agents/chat/prompts/intro.md":"# Subagent: intro\n\nPath: `packages/agent-core/src/agents/chat/prompts/intro.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/intro.md)","packages/agent-core/src/agents/chat/prompts/output-style-basics.md":"# Subagent: output-style-basics\n\nPath: `packages/agent-core/src/agents/chat/prompts/output-style-basics.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/output-style-basics.md)","packages/agent-core/src/agents/chat/prompts/soul.md":"# Subagent: soul\n\nPath: `packages/agent-core/src/agents/chat/prompts/soul.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/soul.md)","apps/browser/bundled/plugins/remotion/references/styleguides/design-inspirations.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/design-inspirations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/design-inspirations.md)","apps/browser/bundled/plugins/remotion/references/styleguides/howto.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto.md)","apps/browser/bundled/plugins/remotion/references/styleguides/howto-elements.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-elements.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-elements.md)","apps/browser/bundled/plugins/remotion/references/styleguides/howto-layouts.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-layouts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-layouts.md)","apps/browser/bundled/plugins/remotion/references/styleguides/howto-storyboard-templates.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-storyboard-templates.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-storyboard-templates.md)","apps/browser/bundled/plugins/remotion/references/styleguides/howto-write-design-md.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-write-design-md.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-write-design-md.md)","apps/browser/bundled/plugins/remotion/references/rules/3d.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/3d.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/3d.md)","apps/browser/bundled/plugins/remotion/references/rules/animations.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/animations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/animations.md)","apps/browser/bundled/plugins/remotion/references/rules/assets.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/assets.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/assets.md)","apps/browser/bundled/plugins/remotion/references/rules/audio.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/audio.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/audio.md)","apps/browser/bundled/plugins/remotion/references/rules/audio-visualization.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/audio-visualization.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/audio-visualization.md)","apps/browser/bundled/plugins/remotion/references/rules/calculate-metadata.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/calculate-metadata.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/calculate-metadata.md)","apps/browser/bundled/plugins/remotion/references/rules/can-decode.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/can-decode.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/can-decode.md)","apps/browser/bundled/plugins/remotion/references/rules/charts.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/charts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/charts.md)","apps/browser/bundled/plugins/remotion/references/rules/compositions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/compositions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/compositions.md)","apps/browser/bundled/plugins/remotion/references/rules/display-captions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/display-captions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/display-captions.md)","apps/browser/bundled/plugins/remotion/references/rules/extract-frames.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/extract-frames.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/extract-frames.md)","apps/browser/bundled/plugins/remotion/references/rules/ffmpeg.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/ffmpeg.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/ffmpeg.md)","apps/browser/bundled/plugins/remotion/references/rules/fonts.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/fonts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/fonts.md)","apps/browser/bundled/plugins/remotion/references/rules/get-audio-duration.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/get-audio-duration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-audio-duration.md)","apps/browser/bundled/plugins/remotion/references/rules/get-video-dimensions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/get-video-dimensions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-video-dimensions.md)","apps/browser/bundled/plugins/remotion/references/rules/get-video-duration.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/get-video-duration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-video-duration.md)","apps/browser/bundled/plugins/remotion/references/rules/gifs.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/gifs.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/gifs.md)","apps/browser/bundled/plugins/remotion/references/rules/images.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/images.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/images.md)","apps/browser/bundled/plugins/remotion/references/rules/import-srt-captions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/import-srt-captions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/import-srt-captions.md)","apps/browser/bundled/plugins/remotion/references/rules/light-leaks.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/light-leaks.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/light-leaks.md)","apps/browser/bundled/plugins/remotion/references/rules/lottie.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/lottie.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/lottie.md)","apps/browser/bundled/plugins/remotion/references/rules/maps.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/maps.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/maps.md)","apps/browser/bundled/plugins/remotion/references/rules/measuring-dom-nodes.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/measuring-dom-nodes.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/measuring-dom-nodes.md)","apps/browser/bundled/plugins/remotion/references/rules/measuring-text.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/measuring-text.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/measuring-text.md)","apps/browser/bundled/plugins/remotion/references/rules/parameters.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/parameters.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/parameters.md)","apps/browser/bundled/plugins/remotion/references/rules/sequencing.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/sequencing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/sequencing.md)","apps/browser/bundled/plugins/remotion/references/rules/sfx.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/sfx.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/sfx.md)","apps/browser/bundled/plugins/remotion/references/rules/silence-detection.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/silence-detection.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/silence-detection.md)","apps/browser/bundled/plugins/remotion/references/rules/subtitles.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/subtitles.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/subtitles.md)","apps/browser/bundled/plugins/remotion/references/rules/tailwind.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/tailwind.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/tailwind.md)","apps/browser/bundled/plugins/remotion/references/rules/tailwind-setup.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/tailwind-setup.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/tailwind-setup.md)","apps/browser/bundled/plugins/remotion/references/rules/text-animations.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/text-animations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/text-animations.md)","apps/browser/bundled/plugins/remotion/references/rules/timing.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/timing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/timing.md)","apps/browser/bundled/plugins/remotion/references/rules/transcribe-captions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/transcribe-captions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transcribe-captions.md)","apps/browser/bundled/plugins/remotion/references/rules/transitions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/transitions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transitions.md)","apps/browser/bundled/plugins/remotion/references/rules/transparent-videos.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/transparent-videos.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transparent-videos.md)","apps/browser/bundled/plugins/remotion/references/rules/trimming.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/trimming.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/trimming.md)","apps/browser/bundled/plugins/remotion/references/rules/videos.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/videos.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/videos.md)","apps/browser/bundled/plugins/remotion/references/rules/voiceover.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/voiceover.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/voiceover.md)","apps/browser/bundled/plugins/remotion/references/channels/facebook.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/facebook.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/facebook.md)","apps/browser/bundled/plugins/remotion/references/channels/instagram.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/instagram.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/instagram.md)","apps/browser/bundled/plugins/remotion/references/channels/linkedin.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/linkedin.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/linkedin.md)","apps/browser/bundled/plugins/remotion/references/channels/tiktok.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/tiktok.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/tiktok.md)","apps/browser/bundled/plugins/remotion/references/channels/x.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/x.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/x.md)","apps/browser/bundled/plugins/remotion/references/channels/youtube.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/youtube.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/youtube.md)","apps/browser/bundled/plugins/remotion/references/channels/youtube-shorts.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/youtube-shorts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/youtube-shorts.md)","apps/browser/src/backend/agents/chat/prompts/environment-preamble.md":"# Subagent: environment-preamble\n\nPath: `apps/browser/src/backend/agents/chat/prompts/environment-preamble.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/environment-preamble.md)","apps/browser/src/backend/agents/chat/prompts/intro.md":"# Subagent: intro\n\nPath: `apps/browser/src/backend/agents/chat/prompts/intro.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/intro.md)","apps/browser/src/backend/agents/chat/prompts/soul.md":"# Subagent: soul\n\nPath: `apps/browser/src/backend/agents/chat/prompts/soul.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/soul.md)"},"files":{".agents/skills/vercel-react-best-practices/SKILL.md":"---\nname: vercel-react-best-practices\ndescription: React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.\nlicense: MIT\nmetadata:\n  author: vercel\n  version: \"1.0.0\"\n---\n\n# Vercel React Best Practices\n\nComprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains 70 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.\n\n## When to Apply\n\nReference these guidelines when:\n- Writing new React components or Next.js pages\n- Implementing data fetching (client or server-side)\n- Reviewing code for performance issues\n- Refactoring existing React/Next.js code\n- Optimizing bundle size or load times\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Eliminating Waterfalls | CRITICAL | `async-` |\n| 2 | Bundle Size Optimization | CRITICAL | `bundle-` |\n| 3 | Server-Side Performance | HIGH | `server-` |\n| 4 | Client-Side Data Fetching | MEDIUM-HIGH | `client-` |\n| 5 | Re-render Optimization | MEDIUM | `rerender-` |\n| 6 | Rendering Performance | MEDIUM | `rendering-` |\n| 7 | JavaScript Performance | LOW-MEDIUM | `js-` |\n| 8 | Advanced Patterns | LOW | `advanced-` |\n\n## Quick Reference\n\n### 1. Eliminating Waterfalls (CRITICAL)\n\n- `async-cheap-condition-before-await` - Check cheap sync conditions before awaiting flags or remote values\n- `async-defer-await` - Move await into branches where actually used\n- `async-parallel` - Use Promise.all() for independent operations\n- `async-dependencies` - Use better-all for partial dependencies\n- `async-api-routes` - Start promises early, await late in API routes\n- `async-suspense-boundaries` - Use Suspense to stream content\n\n### 2. Bundle Size Optimization (CRITICAL)\n\n- `bundle-barrel-imports` - Import directly, avoid barrel files\n- `bundle-analyzable-paths` - Prefer statically analyzable import and file-system paths to avoid broad bundles and traces\n- `bundle-dynamic-imports` - Use next/dynamic for heavy components\n- `bundle-defer-third-party` - Load analytics/logging after hydration\n- `bundle-conditional` - Load modules only when feature is activated\n- `bundle-preload` - Preload on hover/focus for perceived speed\n\n### 3. Server-Side Performance (HIGH)\n\n- `server-auth-actions` - Authenticate server actions like API routes\n- `server-cache-react` - Use React.cache() for per-request deduplication\n- `server-cache-lru` - Use LRU cache for cross-request caching\n- `server-dedup-props` - Avoid duplicate serialization in RSC props\n- `server-hoist-static-io` - Hoist static I/O (fonts, logos) to module level\n- `server-no-shared-module-state` - Avoid module-level mutable request state in RSC/SSR\n- `server-serialization` - Minimize data passed to client components\n- `server-parallel-fetching` - Restructure components to parallelize fetches\n- `server-parallel-nested-fetching` - Chain nested fetches per item in Promise.all\n- `server-after-nonblocking` - Use after() for non-blocking operations\n\n### 4. Client-Side Data Fetching (MEDIUM-HIGH)\n\n- `client-swr-dedup` - Use SWR for automatic request deduplication\n- `client-event-listeners` - Deduplicate global event listeners\n- `client-passive-event-listeners` - Use passive listeners for scroll\n- `client-localstorage-schema` - Version and minimize localStorage data\n\n### 5. Re-render Optimization (MEDIUM)\n\n- `rerender-defer-reads` - Don't subscribe to state only used in callbacks\n- `rerender-memo` - Extract expensive work into memoized components\n- `rerender-memo-with-default-value` - Hoist default non-primitive props\n- `rerender-dependencies` - Use primitive dependencies in effects\n- `rerender-derived-state` - Subscribe to derived booleans, not raw values\n- `rerender-derived-state-no-effect` - Derive state during render, not effects\n- `rerender-functional-setstate` - Use functional setState for stable callbacks\n- `rerender-lazy-state-init` - Pass function to useState for expensive values\n- `rerender-simple-expression-in-memo` - Avoid memo for simple primitives\n- `rerender-split-combined-hooks` - Split hooks with independent dependencies\n- `rerender-move-effect-to-event` - Put interaction logic in event handlers\n- `rerender-transitions` - Use startTransition for non-urgent updates\n- `rerender-use-deferred-value` - Defer expensive renders to keep input responsive\n- `rerender-use-ref-transient-values` - Use refs for transient frequent values\n- `rerender-no-inline-components` - Don't define components inside components\n\n### 6. Rendering Performance (MEDIUM)\n\n- `rendering-animate-svg-wrapper` - Animate div wrapper, not SVG element\n- `rendering-content-visibility` - Use content-visibility for long lists\n- `rendering-hoist-jsx` - Extract static JSX outside components\n- `rendering-svg-precision` - Reduce SVG coordinate precision\n- `rendering-hydration-no-flicker` - Use inline script for client-only data\n- `rendering-hydration-suppress-warning` - Suppress expected mismatches\n- `rendering-activity` - Use Activity component for show/hide\n- `rendering-conditional-render` - Use ternary, not && for conditionals\n- `rendering-usetransition-loading` - Prefer useTransition for loading state\n- `rendering-resource-hints` - Use React DOM resource hints for preloading\n- `rendering-script-defer-async` - Use defer or async on script tags\n\n### 7. JavaScript Performance (LOW-MEDIUM)\n\n- `js-batch-dom-css` - Group CSS changes via classes or cssText\n- `js-index-maps` - Build Map for repeated lookups\n- `js-cache-property-access` - Cache object properties in loops\n- `js-cache-function-results` - Cache function results in module-level Map\n- `js-cache-storage` - Cache localStorage/sessionStorage reads\n- `js-combine-iterations` - Combine multiple filter/map into one loop\n- `js-length-check-first` - Check array length before expensive comparison\n- `js-early-exit` - Return early from functions\n- `js-hoist-regexp` - Hoist RegExp creation outside loops\n- `js-min-max-loop` - Use loop for min/max instead of sort\n- `js-set-map-lookups` - Use Set/Map for O(1) lookups\n- `js-tosorted-immutable` - Use toSorted() for immutability\n- `js-flatmap-filter` - Use flatMap to map and filter in one pass\n- `js-request-idle-callback` - Defer non-critical work to browser idle time\n\n### 8. Advanced Patterns (LOW)\n\n- `advanced-effect-event-deps` - Don't put `useEffectEvent` results in effect deps\n- `advanced-event-handler-refs` - Store event handlers in refs\n- `advanced-init-once` - Initialize app once per app load\n- `advanced-use-latest` - useLatest for stable callback refs\n\n## How to Use\n\nRead individual rule files for detailed explanations and code examples:\n\n```\nrules/async-parallel.md\nrules/bundle-barrel-imports.md\n```\n\nEach rule file contains:\n- Brief explanation of why it matters\n- Incorrect code example with explanation\n- Correct code example with explanation\n- Additional context and references\n\n## Full Compiled Document\n\nFor the complete guide with all rules expanded: `AGENTS.md`\n",".agents/skills/prompt-optimization/SKILL.md":"---\nname: prompt-optimization\ndescription: Guides building, reviewing, and optimizing system prompts and prompt templates for LLMs. Use when creating system prompts, writing prompt templates, optimizing prompt structure, reducing prompt token usage, compressing prompts, improving prompt clarity, reviewing prompts for safety and bias, or making prompts more token-efficient. Also use when the user says \"write a prompt,\" \"optimize this prompt,\" \"system prompt,\" \"prompt engineering,\" \"make this prompt better,\" \"reduce tokens,\" or \"compress this prompt.\"\n---\n\n# Prompt Optimization\n\nBuild effective, safe, and token-efficient system prompts for LLMs.\n\n## How to Use This Skill\n\n**Pick the workflow that matches the task, then follow it end-to-end:**\n\n| Task | Workflow | Reference |\n|------|----------|-----------|\n| Write a new prompt from scratch | **Create** workflow | `references/workflows.md` → Workflow 1 |\n| Review/audit an existing prompt | **Review** workflow | `references/workflows.md` → Workflow 2 |\n| Reduce token count of a working prompt | **Optimize** workflow | `references/workflows.md` → Workflow 3 |\n\nEach workflow references the specific detail pages below as needed. Do not read all references upfront — load them when the workflow step calls for them.\n\n## Core Principles\n\n1. **Clarity over cleverness** — Write prompts a new employee would follow without confusion\n2. **Positive framing** — Say what to do, not what to avoid\n3. **Structure with delimiters** — XML tags or consistent separators between content types\n4. **Progressive specificity** — Role → constraints → instructions → context → format → examples → input\n5. **Token economy** — Every token must earn its place; ≥1 constraint per 5–10 tokens\n6. **Safety by default** — Prevent injection, data leakage, and bias structurally\n\n## Prompt Architecture (ordering)\n\n```\n1. Identity / Role          — Who the model is (1–2 sentences)\n2. Core behavior rules      — Non-negotiable constraints (safety, tone)\n3. Task instructions        — What to do and how\n4. Context / Knowledge      — Domain data, schemas, reference docs\n5. Output format            — Structure, length, style requirements\n6. Examples (few-shot)      — 2–3 input/output pairs in <example> tags\n7. Dynamic input            — User content (always last, always delimited)\n```\n\n## Key Rules\n\n- **Delimit user input** — Wrap in tags like `<user_input>`; never interpolate raw\n- **Show, don't just tell** — Few-shot examples beat format descriptions\n- **Match prompt style to output style** — Markdown in prompt → markdown out; prose → prose\n- **Put long documents first** — Reference data above instructions (30%+ quality gain)\n- **Quantify, don't qualify** — \"≤100 words\" not \"keep it short\"\n- **Imperative voice** — \"Respond in JSON\" not \"You should format your response as JSON\"\n- **Test adversarially** — Injection, edge cases, ambiguous inputs before shipping\n\n## Reference Index\n\nLoad these when a workflow step calls for them:\n\n| Reference | Contents |\n|-----------|----------|\n| `references/workflows.md` | End-to-end workflows for create, review, and optimize tasks |\n| `references/clarity-and-structure.md` | XML tags, delimiters, role prompting, long-context patterns |\n| `references/output-control.md` | Format steering, verbosity control, few-shot examples |\n| `references/safety-and-security.md` | Injection prevention, bias mitigation, data leakage, red-teaming |\n| `references/compression-techniques.md` | High-density writing, token pruning, compression methods, density test |\n| `references/agentic-prompts.md` | Tool use, thinking/reasoning, state tracking, subagent orchestration |\n| `references/anti-patterns-and-checklist.md` | 8 anti-patterns, design checklist, evaluation metrics |\n",".agents/skills/create-skill/SKILL.md":"---\nname: create-skill\ndescription: Guide for creating effective skills following best practices. Use when creating or updating skills that extend agent capabilities.\n---\n\n# Create Skill\n\nGuide for creating effective skills that extend agent capabilities with specialized knowledge, workflows, and tool integrations.\n\n## About Skills\n\nSkills are modular, self-contained packages that extend agent capabilities by providing specialized knowledge, workflows, and tools. Think of them as \"onboarding guides\" for specific domains or tasks.\n\n### What Skills Provide\n\n1. Specialized workflows - Multi-step procedures for specific domains\n2. Tool integrations - Instructions for working with specific file formats or APIs\n3. Domain expertise - Company-specific knowledge, schemas, business logic\n4. Bundled resources - Scripts, references, and assets for complex and repetitive tasks\n\n## Progressive Disclosure Principle\n\n**The 200-line rule is critical.** SKILL.md must be under 200 lines. If you need more, split content into `references/` files.\n\n### Three-Level Loading System\n\n1. **Metadata (name + description)** - Always in context (~100 words)\n2. **SKILL.md body** - When skill triggers (<200 lines, ideally <500 lines for optimal performance)\n3. **Bundled resources** - As needed by agent (unlimited)\n\n### Why Progressive Disclosure Matters\n\n- 85% reduction in initial context load\n- Activation times drop from 500ms+ to under 100ms\n- Agent loads only what's needed, when it's needed\n- Skills remain maintainable and focused\n\n## Skill Structure\n\n```\nskill-name/\n├── SKILL.md (required, <200 lines)\n│   ├── YAML frontmatter metadata (required)\n│   │   ├── name: (required)\n│   │   └── description: (required)\n│   └── Markdown instructions (required)\n└── Bundled Resources (optional)\n    ├── scripts/          - Executable code\n    ├── references/       - Documentation loaded as needed\n    └── assets/           - Files used in output\n```\n\n## Core Principles\n\n### Concise is Key\n\nThe context window is a shared resource. Your skill shares it with everything else the agent needs. Be concise and challenge each piece of information:\n- Does the agent really need this explanation?\n- Can I assume the agent knows this?\n- Does this paragraph justify its token cost?\n\n### Set Appropriate Degrees of Freedom\n\n- **High freedom**: Text-based instructions for multiple valid approaches\n- **Medium freedom**: Pseudocode or scripts with parameters\n- **Low freedom**: Specific scripts with few/no parameters for fragile operations\n\n### Test with All Models\n\nSkills act as additions to models, so effectiveness depends on the underlying model. Test your skill with all models you plan to use it with.\n\n## References\n\nFor detailed guidance, see:\n- `references/progressive-disclosure.md` - 200-line rule and references pattern\n- `references/skill-structure.md` - SKILL.md format and frontmatter details\n- `references/examples.md` - Good skill examples\n- `references/best-practices.md` - Comprehensive best practices guide\n",".agents/skills/copywriting/SKILL.md":"---\nname: copywriting\ndescription: When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or product pages. Also use when the user says \"write copy for,\" \"improve this copy,\" \"rewrite this page,\" \"marketing copy,\" \"headline help,\" \"CTA copy,\" \"value proposition,\" \"tagline,\" \"subheadline,\" \"hero section copy,\" \"above the fold,\" \"this copy is weak,\" \"make this more compelling,\" or \"help me describe my product.\" Use this whenever someone is working on website text that needs to persuade or convert. For email copy, see emails. For popup copy, see popups. For editing existing copy, see copy-editing. For the offer underneath the copy (bonuses, guarantees, value framing), see offers.\nmetadata:\n  version: 2.0.1\n---\n\n# Copywriting\n\nYou are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action.\n\n## Before Writing\n\n**Check for product marketing context first:**\nIf `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.\n\nGather this context (ask if not provided):\n\n### 1. Page Purpose\n- What type of page? (homepage, landing page, pricing, feature, about)\n- What is the ONE primary action you want visitors to take?\n\n### 2. Audience\n- Who is the ideal customer?\n- What problem are they trying to solve?\n- What objections or hesitations do they have?\n- What language do they use to describe their problem?\n\n### 3. Product/Offer\n- What are you selling or offering?\n- What makes it different from alternatives?\n- What's the key transformation or outcome?\n- Any proof points (numbers, testimonials, case studies)?\n\n### 4. Context\n- Where is traffic coming from? (ads, organic, email)\n- What do visitors already know before arriving?\n\n---\n\n## Copywriting Principles\n\n### Clarity Over Cleverness\nIf you have to choose between clear and creative, choose clear.\n\n### Benefits Over Features\nFeatures: What it does. Benefits: What that means for the customer.\n\n### Specificity Over Vagueness\n- Vague: \"Save time on your workflow\"\n- Specific: \"Cut your weekly reporting from 4 hours to 15 minutes\"\n\n### Customer Language Over Company Language\nUse words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets.\n\n### One Idea Per Section\nEach section should advance one argument. Build a logical flow down the page.\n\n---\n\n## Writing Style Rules\n\n### Core Principles\n\n1. **Simple over complex** — \"Use\" not \"utilize,\" \"help\" not \"facilitate\"\n2. **Specific over vague** — Avoid \"streamline,\" \"optimize,\" \"innovative\"\n3. **Active over passive** — \"We generate reports\" not \"Reports are generated\"\n4. **Confident over qualified** — Remove \"almost,\" \"very,\" \"really\"\n5. **Show over tell** — Describe the outcome instead of using adverbs\n6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability\n\n### Quick Quality Check\n\n- Jargon that could confuse outsiders?\n- Sentences trying to do too much?\n- Passive voice constructions?\n- Exclamation points? (remove them)\n- Marketing buzzwords without substance?\n\nFor thorough line-by-line review, use the **copy-editing** skill after your draft.\n\n---\n\n## Best Practices\n\n### Be Direct\nGet to the point. Don't bury the value in qualifications.\n\n❌ Slack lets you share files instantly, from documents to images, directly in your conversations\n\n✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires.\n\n### Use Rhetorical Questions\nQuestions engage readers and make them think about their own situation.\n- \"Hate returning stuff to Amazon?\"\n- \"Tired of chasing approvals?\"\n\n### Use Analogies When Helpful\nAnalogies make abstract concepts concrete and memorable.\n\n### Pepper in Humor (When Appropriate)\nPuns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity.\n\n---\n\n## Page Structure Framework\n\n### Above the Fold\n\n**Headline**\n- Your single most important message\n- Communicate core value proposition\n- Specific > generic\n\n**Example formulas:**\n- \"{Achieve outcome} without {pain point}\"\n- \"The {category} for {audience}\"\n- \"Never {unpleasant event} again\"\n- \"{Question highlighting main pain point}\"\n\n**For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md)\n\n**For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md)\n\n**Subheadline**\n- Expands on headline\n- Adds specificity\n- 1-2 sentences max\n\n**Primary CTA**\n- Action-oriented button text\n- Communicate what they get: \"Start Free Trial\" > \"Sign Up\"\n\n### Core Sections\n\n| Section | Purpose |\n|---------|---------|\n| Social Proof | Build credibility (logos, stats, testimonials) |\n| Problem/Pain | Show you understand their situation |\n| Solution/Benefits | Connect to outcomes (3-5 key benefits) |\n| How It Works | Reduce perceived complexity (3-4 steps) |\n| Objection Handling | FAQ, comparisons, guarantees |\n| Final CTA | Recap value, repeat CTA, risk reversal |\n\n**For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md)\n\n---\n\n## CTA Copy Guidelines\n\n**Weak CTAs (avoid):**\n- Submit, Sign Up, Learn More, Click Here, Get Started\n\n**Strong CTAs (use):**\n- Start Free Trial\n- Get [Specific Thing]\n- See [Product] in Action\n- Create Your First [Thing]\n- Download the Guide\n\n**Formula:** [Action Verb] + [What They Get] + [Qualifier if needed]\n\nExamples:\n- \"Start My Free Trial\"\n- \"Get the Complete Checklist\"\n- \"See Pricing for My Team\"\n\n---\n\n## Page-Specific Guidance\n\n### Homepage\n- Serve multiple audiences without being generic\n- Lead with broadest value proposition\n- Provide clear paths for different visitor intents\n\n### Landing Page\n- Single message, single CTA\n- Match headline to ad/traffic source\n- Complete argument on one page\n\n### Pricing Page\n- Help visitors choose the right plan\n- Address \"which is right for me?\" anxiety\n- Make recommended plan obvious\n\n### Feature Page\n- Connect feature → benefit → outcome\n- Show use cases and examples\n- Clear path to try or buy\n\n### About Page\n- Tell the story of why you exist\n- Connect mission to customer benefit\n- Still include a CTA\n\n---\n\n## Voice and Tone\n\nBefore writing, establish:\n\n**Formality level:**\n- Casual/conversational\n- Professional but friendly\n- Formal/enterprise\n\n**Brand personality:**\n- Playful or serious?\n- Bold or understated?\n- Technical or accessible?\n\nMaintain consistency, but adjust intensity:\n- Headlines can be bolder\n- Body copy should be clearer\n- CTAs should be action-oriented\n\n---\n\n## Output Format\n\nWhen writing copy, provide:\n\n### Page Copy\nOrganized by section:\n- Headline, Subheadline, CTA\n- Section headers and body copy\n- Secondary CTAs\n\n### Annotations\nFor key elements, explain:\n- Why you made this choice\n- What principle it applies\n\n### Alternatives\nFor headlines and CTAs, provide 2-3 options:\n- Option A: [copy] — [rationale]\n- Option B: [copy] — [rationale]\n\n### Meta Content (if relevant)\n- Page title (for SEO)\n- Meta description\n\n---\n\n## Related Skills\n\n- **copy-editing**: For polishing existing copy (use after your draft)\n- **cro**: If page structure/strategy needs work, not just copy\n- **emails**: For email copywriting\n- **popups**: For popup and modal copy\n- **ab-testing**: To test copy variations\n",".agents/skills/karton-best-practices/SKILL.md":"---\nname: karton-best-practices\ndescription: Performance-focused guidelines for writing React code that consumes Karton state. Use when creating or reviewing components that use useKartonState, useKartonProcedure, useComparingSelector, or any Karton React hooks. Covers selector patterns, re-render prevention, structural sharing, and edge cases.\n---\n\n# Karton React Best Practices\n\nPerformance guidelines for React components consuming Karton state. Karton uses Immer internally — understanding its structural sharing model is essential for writing efficient selectors.\n\n## Core Mental Model\n\nKarton state is **deeply frozen** (Immer `freeze(state, true)`). Updates use `produce()` which creates **new references only for changed paths** — unchanged subtrees keep the same reference. `useSyncExternalStore` uses **`Object.is` (reference equality)** to decide re-renders.\n\n**The golden rule:** Your selector's return value must have a **stable reference** when nothing relevant changed. If it doesn't, wrap it with `useComparingSelector`.\n\n## Quick Rules\n\n### Selectors\n\n```typescript\n// GOOD: Select a primitive — stable when unchanged\nconst isWorking = useKartonState((s) => s.agents.instances[id]?.state.isWorking ?? false);\n\n// GOOD: Select a frozen subtree — Immer preserves the reference\nconst agent = useKartonState((s) => s.agents.instances[id]);\n\n// BAD: Creates a new object every call — always re-renders\nconst data = useKartonState((s) => ({\n  name: s.agents.instances[id]?.name,\n  status: s.agents.instances[id]?.state.isWorking,\n}));\n\n// FIX: Wrap with useComparingSelector (default: shallow equality)\nconst data = useKartonState(\n  useComparingSelector((s) => ({\n    name: s.agents.instances[id]?.name,\n    status: s.agents.instances[id]?.state.isWorking,\n  })),\n);\n\n// BAD: Object.keys/values/entries always creates a new array\nconst ids = useKartonState((s) => Object.keys(s.agents.instances));\n\n// FIX: shallow comparison handles arrays element-by-element\nconst ids = useKartonState(\n  useComparingSelector((s) => Object.keys(s.agents.instances)),\n);\n```\n\n### When to Use `useComparingSelector`\n\n| Selector returns | Needs `useComparingSelector`? |\n|---|---|\n| Primitive (boolean, string, number) | No |\n| Existing frozen subtree reference | No |\n| New object/array created in selector | **Yes** (use `shallow`) |\n| Deeply nested new structures | **Yes** (use `deep`) |\n\n### Procedures\n\n```typescript\n// GOOD: Procedures are stable proxies — select once, use freely\nconst createAgent = useKartonProcedure((p) => p.agents.create);\n\n// GOOD: Store in ref for use in callbacks to prevent effect re-triggers\nconst createAgentRef = useRef(createAgent);\ncreateAgentRef.current = createAgent;\n```\n\n### Derived State\n\n```typescript\n// GOOD: useMemo to compute derived values from selected state\nconst agent = useKartonState((s) => s.agents.instances[id]);\nconst displayName = useMemo(() => agent?.name ?? 'Unnamed', [agent]);\n\n// BAD: Expensive computation inside selector (runs on every state change)\nconst sorted = useKartonState((s) =>\n  Object.values(s.agents.instances).sort((a, b) => a.name.localeCompare(b.name)),\n);\n\n// FIX: Select raw data, compute outside\nconst instances = useKartonState(\n  useComparingSelector((s) => s.agents.instances),\n);\nconst sorted = useMemo(\n  () => Object.values(instances).sort((a, b) => a.name.localeCompare(b.name)),\n  [instances],\n);\n```\n\n## Key Pitfalls\n\n1. **Every `useKartonState` call runs its selector on every state change** — keep selectors cheap\n2. **Selectors that create new objects/arrays always cause re-renders** unless wrapped with `useComparingSelector`\n3. **`useComparingSelector` with `deep` is expensive** — prefer `shallow` or restructure state\n4. **Selecting the full state** (`useKartonState()` with no selector) re-renders on any change\n5. **Inline selector functions recreate on every render** — this is fine because `useSyncExternalStore` compares snapshot values, not function references\n6. **Connection changes (`onOpen`/`onClose`) trigger all listeners** — components using `useKartonState` may re-render briefly on reconnect even if state didn't change\n\n## References\n\nFor detailed analysis, see:\n- `references/state-update-model.md` — How Immer structural sharing affects object references\n- `references/selector-patterns.md` — Comprehensive selector patterns with examples\n- `references/re-render-prevention.md` — useComparingSelector internals and memoization strategies\n- `references/edge-cases.md` — Arrays, Maps, conditional selection, and reconnection behavior\n",".agents/skills/history-compression/SKILL.md":"---\nname: history-compression\ndescription: How stagewise's agent history compression pipeline works — boundary selection, recency bias, chained compressions, and the SQLite-backed test harness for replaying real compressions in LLM playgrounds. Use when debugging, tuning, or extending history compression, when investigating context-window overflow, or when the user wants to probe compression quality against real chat histories.\n---\n\n# History Compression\n\nStagewise summarizes long agent histories into a single briefing stored on a \"boundary\" message. Everything before the boundary is replaced by the briefing; everything after stays verbatim. Recency bias baked into both boundary math + LLM prompt.\n\n## Key files\n\nAll paths are repo-root-relative.\n\n- `apps/browser/src/backend/agents/shared/base-agent/base-agent.ts` — trigger + boundary logic (`compressHistoryInternal`, ~L1898; trigger check in `handlePostStep` ~L2208).\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/index.ts` — model cascade + `generateSimpleCompressedHistory`.\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/prompt.ts` — `COMPRESSION_SYSTEM_PROMPT`, `COMPRESSION_TARGET_CHARS = 30_000`, `buildCompressionUserMessage` (dynamic budget hint).\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/serialization.ts` — `convertAgentMessagesToCompactMessageHistoryString`, `estimateMessageTokens`.\n- `scripts/experiments/extract-compression-test-data.ts` — SQLite → playground-ready per-compression bundles.\n\n## Trigger\n\nAfter every step → `handlePostStep` checks:\n\n`usedTokens > min(compactionThreshold × contextWindow, 200k)`\n\n- `compactionThreshold` default **0.65**; chat agent overrides to **0.5**.\n- `200k` hard cap (`HISTORY_COMPRESSION_HARD_CAP_TOKENS`) = 1M-ctx models trigger at the same absolute count as a 200k-context model running near its full window.\n- Runs via `void` (async, non-blocking). Guarded by `_isCompressingHistory` flag → no concurrent runs.\n- Silent failure — agent keeps going, context overflow later surfaces normal model error.\n\n## Boundary selection (`compressHistoryInternal`)\n\nKept-budget = `min(0.2 × contextWindow, 40k tokens)` (`KEPT_BUDGET_FRACTION`, `KEPT_BUDGET_HARD_CAP_TOKENS`).\nPreferred floor = `max(5, config.minUncompressedMessages ?? 10)`.\n\nWalk backward from history end:\n\n1. Accumulate `estimateMessageTokens(msg)` until next msg would bust budget → boundary there.\n2. Else stop once kept-count ≥ floor.\n3. Edge: single last msg > budget → keep just that one, warn.\n4. `boundary < 1` → nothing to compress, skip.\n\nThen: `messagesToCompact = history.slice(0, boundary)` → compress → write result to `history[boundary].metadata.compressedHistory`.\n\n### Token estimation quirks\n\n`estimateMessageTokens` = `ceil(chars / 4)`. Includes:\n\n- Text parts.\n- Tool-call `toolName` + JSON-stringified `input` + `output`.\n- Metadata overhead: env-snapshot, compressedHistory, mentions, attachments.\n- **`PER_MESSAGE_OVERHEAD_CHARS = 400`** flat — accounts for XML wrappers/role tags the pipeline injects but aren't in `parts`. Without it, budget walk under-counts → compression triggers too late.\n\n## Chained compressions\n\nWhen `messagesToCompact` already contains a prior `compressedHistory`:\n\n- Serializer (`convertAgentMessagesToCompactMessageHistoryString`) walks **backward** and **stops at first `compressedHistory` it finds**, emitting it as `<previous-chat-history>...</previous-chat-history>`. Older raw messages never re-serialized.\n- `buildCompressionUserMessage` reads prior briefing length → injects ratio-bucketed budget hint:\n  - `<60%` target → \"incorporate verbatim, do NOT shorten\".\n  - `60–85%` → \"light condensation to oldest sections\".\n  - `≥85%` → \"condense oldest fully-resolved sections\".\n- Prompt mandates: keep every `##` heading, shorten **oldest** sections only, preserve all `[](path:...)` links + user decisions + outcomes verbatim. Recent sections untouched.\n\n→ Chain is bounded: each round re-absorbs prior briefing under the same `30k` target.\n\n## Serialization format\n\nInput to LLM is XML-ish:\n\n- `<user>` — text + `[attached: ...]`, `[mentioned: ...]` metadata annotations.\n- `<assistant>` — text + one-liner tool markers: `[read: path]`, `[edited: path (N edits)]`, `[shell: label → ✓ / exit N / timed out]`, `[lint: paths → clean / N errors, M warnings]`, `[asked user: title → field: answer; ...]`, `[searched: \"query\"]`, `[created: path]`, `[wrote: path]`.\n- `<previous-chat-history>` — inlined prior briefing (see above).\n- Error state on any tool → `✗ <msg>` suffix.\n- Unknown tool types → `[tool-xxx]` generic marker (never silently dropped).\n\n## Prompt design (`apps/browser/src/backend/agents/shared/base-agent/history-compression/prompt.ts`)\n\n- Target **30k chars soft** (\"goal, not ceiling — longer > losing detail\").\n- 2nd-person for agent, 3rd-person for user.\n- `##` headings per topic, flowing prose inside. No bullets/tables/code blocks.\n- Recency bias: old resolved = 2–4 sentences; recent/active = full detail ending with current status.\n- MUST preserve verbatim: `[](path:...)` links, markdown links, user decisions/preferences/constraints, color values, directory structures, config.\n- Output plain markdown. **Never emit `<previous-chat-history>` or any XML wrapper** in output.\n\n## Model cascade (`apps/browser/src/backend/agents/shared/base-agent/history-compression/index.ts`)\n\n1. `gemini-3.1-flash-lite` → 2. `gpt-5.4-nano` → 3. `claude-haiku-4.5`.\n\n- Each 30s abort timeout, `temperature: 0.1`, `maxOutputTokens: 20000`.\n- Min valid output: 30 chars (shorter → fallback).\n- Final fallback: active chat model (only if not already tried).\n- All fail → throws; caller (`compressHistoryInternal`) logs + reports, agent continues uncompressed.\n\n## Tuning knobs\n\n| Knob | Where | Default | Effect |\n|---|---|---|---|\n| `compactionThreshold` | `config.historyCompressionThreshold` | 0.65 (chat: 0.5) | Trigger fraction of ctx window |\n| `HISTORY_COMPRESSION_HARD_CAP_TOKENS` | `base-agent.ts` const | 200_000 | Absolute trigger cap |\n| `KEPT_BUDGET_FRACTION` | `base-agent.ts` const | 0.2 | Fraction kept uncompressed |\n| `KEPT_BUDGET_HARD_CAP_TOKENS` | `base-agent.ts` const | 40_000 | Absolute kept cap |\n| `minUncompressedMessages` | `config` | 10 | Floor on kept msg count |\n| `COMPRESSION_TARGET_CHARS` | `prompt.ts` const | 30_000 | Soft briefing size target |\n| `HISTORY_COMPRESSION_TIMEOUT_MS` | `index.ts` const | 30_000 | Per-model attempt timeout |\n| `HISTORY_COMPRESSION_MODELS` | `index.ts` const | 3-model cascade | Compression model order |\n| `PER_MESSAGE_OVERHEAD_CHARS` | `serialization.ts` | 400 | Metadata overhead fudge |\n\n**Invariant:** kept budget < compression trigger (else nothing ever compresses).\n\n## Test harness (`scripts/experiments/extract-compression-test-data.ts`)\n\nReplays every real compression from local stagewise SQLite into playground-ready bundles.\n\n```bash\nnpx tsx scripts/experiments/extract-compression-test-data.ts --channel prerelease\nnpx tsx scripts/experiments/extract-compression-test-data.ts --channel dev --min-messages 10\n```\n\nChannels map to `<appData>/{stagewise | stagewise-prerelease | stagewise-dev}/stagewise/agents/instances.sqlite`.\n\nPer chat, for each boundary message (every real compression event):\n\n- Slices `messages[0..boundary)`.\n- Runs **real** `convertAgentMessagesToCompactMessageHistoryString` + `buildCompressionUserMessage` (imported from app source → fidelity guaranteed).\n- Writes to `experiments-data/history-compression/<channel>/NNN-title/compression-NNN/`:\n  - `system-prompt.md` — static prompt.\n  - `user-message.md` — dynamic user msg with budget hint.\n  - `compact-history.xml` — raw serialized input.\n  - `actual-output.md` — what the real in-app LLM produced.\n  - `metadata.json` — indices, char counts, prev-tag leak check.\n\n→ Paste system + user into AI Studio/Claude → diff against `actual-output.md`. Covers full chain (1st → Nth compression) so chained-compression drift is testable.\n\n## Common tasks\n\n- **\"Why didn't compression trigger?\"** → check `usedTokens` vs trigger formula; verify `compactionThreshold ≥ 0`; check `_isCompressingHistory` not stuck.\n- **\"Compression is too aggressive/lossy\"** → bump `COMPRESSION_TARGET_CHARS`; lower `compactionThreshold` so it triggers earlier with smaller inputs.\n- **\"Too few kept messages after compression\"** → raise `minUncompressedMessages` or `KEPT_BUDGET_FRACTION` (but keep < trigger).\n- **\"Output leaks `<previous-chat-history>` tags\"** → check `metadata.json` `actualOutputIncludesPreviousTag`; prompt already forbids it, likely model regression → bump cascade order.\n- **\"Boundary drift after compression\"** → `compressHistoryInternal` re-finds boundary by `id` after LLM round-trip (user may have undone messages mid-compression); missing id → silent skip + warn.\n",".agents/skills/stage-ui-design-system/SKILL.md":"---\nname: stage-ui-design-system\ndescription: Stagewise UI theming, design tokens, derived utilities, and component library reference. Use when creating, editing, or reviewing UI in apps/browser, implementing new screens or components, or styling with Tailwind in the stagewise codebase.\n---\n\n# Stage UI Design System\n\nAll UI in `apps/browser/` is built on `@stagewise/stage-ui` — a shared design system using **OKLCH colors**, **Tailwind CSS 4**, and **Base UI (React)** primitives.\n\n## Importing Styles & Components\n\n**Styles** — import the CSS entry point (already done in the browser app):\n```css\n@import \"../../../../../packages/stage-ui/src/styles/index.css\";\n```\n\n**Components** — import via package alias:\n```tsx\nimport { Button } from '@stagewise/stage-ui/components/button';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@stagewise/stage-ui/components/tooltip';\n```\n\n**Utility function** — `cn()` merges Tailwind classes (clsx + twMerge):\n```tsx\nimport { cn } from '@stagewise/stage-ui/lib/utils';\n```\n\n## Color System (OKLCH)\n\nAll colors use OKLCH with a shared hue `--H: 265` (purple). The palette is defined in `palette.css`.\n\n**Base colors** (`--color-base-50` to `--color-base-950`): Low-chroma, nearly grayscale but subtly tinted. Used for 95%+ of the app.\n\n**Primary colors** (`--color-primary-50` to `--color-primary-950`): High-chroma, saturated. Used for CTAs, links, active states.\n\n**Semantic colors**: `success` (green), `error` (red), `warning` (yellow), `info` (blue) — each has `-background`, `-foreground`, `-solid` variants that auto-switch with light/dark.\n\n## Theme Tokens\n\nDefined in `theme.css`, tokens auto-switch between light and dark mode via `prefers-color-scheme`.\n\n### Backgrounds\n\n| Tailwind class | Token | Usage |\n|---|---|---|\n| `bg-app-background` | `--color-app-background` | Outermost app chrome |\n| `bg-background` | `--color-background` | Main content areas, cards, panels |\n| `bg-surface-1` | `--color-surface-1` | First elevation above background |\n| `bg-surface-2` | `--color-surface-2` | Second elevation (nested elements) |\n| `bg-surface-3` | `--color-surface-3` | Third elevation (deeply nested) |\n| `bg-surface-tinted` | `--color-surface-tinted` | Primary-tinted highlight surface |\n| `bg-overlay` | `--color-overlay` | Modal/dialog backdrops (use with opacity) |\n\n### Text\n\n| Tailwind class | Usage |\n|---|---|\n| `text-foreground` | Primary readable text |\n| `text-muted-foreground` | Secondary/less important text |\n| `text-subtle-foreground` | Hints, placeholders, disabled text |\n| `text-primary-foreground` | Accent text (links, highlights) |\n| `text-solid-foreground` | Text on solid/primary backgrounds |\n\n### Borders\n\n| Tailwind class | Usage |\n|---|---|\n| `border-border` | Regular borders |\n| `border-border-subtle` | Subtle/lighter borders |\n\n### Primary\n\n| Tailwind class | Usage |\n|---|---|\n| `bg-primary-solid` | Solid primary fill (buttons, badges) |\n\n### Semantic\n\nPattern: `(bg|text)-{success|error|warning|info}-{background|foreground|solid}`\n\n## Elevation & Shadows\n\n**Light mode**: Use `bg-background` for cards. Depth comes from shadows.\n**Dark mode**: Use escalating surfaces based on nesting depth:\n- Element on `bg-background` → use `bg-surface-1`\n- Element on `bg-surface-1` → use `bg-surface-2`\n- Element on `bg-surface-2` → use `bg-surface-3`\n\nShadow utilities (defined in `shadows.css`):\n- `shadow-elevation-1` — subtle card shadow\n- `shadow-elevation-2` — prominent popup/modal shadow\n\n## Derived Utilities\n\nThese auto-derive border/hover/active colors from an element's background. **Requires the element to have a `bg-*` class set.**\n\n### Borders (derived from background)\n- `border-derived-subtle` — light border\n- `border-derived` — regular border\n- `border-derived-strong` — strong border\n- `border-derived-lighter-subtle` / `border-derived-lighter` — explicitly lighter\n\nSame pattern for rings: `ring-derived-subtle`, `ring-derived`, `ring-derived-strong`\n\n### Hover & Active States\n- `hover:bg-hover-derived` — hover background\n- `active:bg-active-derived` — active/pressed background\n- `hover:text-hover-derived` — hover text\n- `active:text-active-derived` — active text\n\n### Explicit Lighten/Darken (ignores dark/light mode)\n- `bg-derived-lighter` / `bg-derived-lighter-subtle`\n- `bg-derived-darker` / `bg-derived-darker-subtle`\n- `text-derived-lighter` / `text-derived-lighter-subtle`\n\n## Animations\n\nDefined in `animations.css`. Use as Tailwind classes:\n\n| Class | Effect |\n|---|---|\n| `animate-progress-bar-indicator` | Repeating slide for progress bars |\n| `animate-skeleton-shimmer` | Loading shimmer for skeletons |\n| `animate-caret-blink` | Blinking caret for inputs |\n| `animate-icon-pulse` | Stroke-width pulse for icons |\n| `animate-pulse-full` | Full opacity pulse (0→1→0) |\n| `animate-text-pulse` | Muted↔foreground text pulse |\n| `animate-text-pulse-warning` | Foreground↔warning text pulse |\n| `shimmer-text` | Shimmering gradient text effect |\n| `shimmer-text-primary` | Primary-colored shimmer preset |\n| `shimmer-text-once` | One-shot shimmer that settles |\n\nShimmer config: `shimmer-duration-{ms}`, `shimmer-from-{color}`, `shimmer-to-{color}`\n\n## Component Patterns\n\nAll components follow these patterns:\n\n1. **Built on Base UI** (`@base-ui/react`) — unstyled React primitives\n2. **Variants via CVA** (`class-variance-authority`) — `variant` and `size` props\n3. **Class merging** via `cn()` — all accept `className` for overrides\n4. **Compound components** — e.g. `Dialog` + `DialogContent` + `DialogTitle`\n\n### Typical usage example\n\n```tsx\nimport { Button } from '@stagewise/stage-ui/components/button';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@stagewise/stage-ui/components/tooltip';\n\n<Tooltip>\n  <TooltipTrigger>\n    <Button variant=\"secondary\" size=\"sm\">Click me</Button>\n  </TooltipTrigger>\n  <TooltipContent side=\"top\">Helpful hint</TooltipContent>\n</Tooltip>\n```\n\n## Available Components\n\nFor detailed API and props of each component, see [components-reference.md](components-reference.md).\n\n| Component | Import path | Key props |\n|---|---|---|\n| **Button** | `components/button` | `variant`: primary, secondary, destructive, warning, success, ghost. `size`: xs, sm, md, lg, icon-2xs, icon-xs, icon-sm, icon-md |\n| **Input** | `components/input` | `size`: xs, sm, md. `debounce`: ms. Built on Base UI Input |\n| **Select** | `components/select` | `items`, `value`, `onValueChange`, `size`, `triggerVariant`: ghost/secondary, `multiple` |\n| **Checkbox** | `components/checkbox` | `size`: xs, sm, md. Built on Base UI Checkbox |\n| **Switch** | `components/switch` | `size`: xs, sm, md. Built on Base UI Switch |\n| **Radio** | `components/radio` | `RadioGroup` + `Radio` + `RadioLabel`. Built on Base UI Radio |\n| **Tabs** | `components/tabs` | `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent` |\n| **Dialog** | `components/dialog` | `Dialog`, `DialogTrigger`, `DialogContent`, `DialogTitle`, `DialogDescription`, `DialogClose`, `DialogHeader`, `DialogFooter` |\n| **Popover** | `components/popover` | `Popover`, `PopoverTrigger`, `PopoverContent`, `PopoverTitle`, `PopoverDescription`, `PopoverClose`, `PopoverFooter` |\n| **Tooltip** | `components/tooltip` | `Tooltip`, `TooltipTrigger`, `TooltipContent`, `TooltipProvider` |\n| **Menu** | `components/menu` | `Menu`, `MenuTrigger`, `MenuContent`, `MenuItem`, `MenuSeparator`, `MenuSubmenu`, `MenuSubmenuTrigger`, `MenuSubmenuContent` |\n| **Collapsible** | `components/collapsible` | `Collapsible`, `CollapsibleTrigger` (size: default/condensed), `CollapsibleContent` |\n| **Progress** | `components/progress` | `Progress`, `ProgressTrack` (variant: normal/warning, busy, slim), `ProgressLabel`, `ProgressValue` |\n| **Skeleton** | `components/skeleton` | `variant`: rectangle, circle, text. `size`: xs–full. `animate`: boolean |\n| **Form** | `components/form` | `Form`, `FormFieldset`, `FormField`, `FormFieldLabel`, `FormFieldTitle`, `FormFieldDescription`, `FormFieldError`, `FormFieldSeparator` |\n| **Resizable** | `components/resizable` | `ResizablePanelGroup`, `ResizablePanel`, `ResizableHandle`. Built on react-resizable-panels |\n| **OverlayScrollbar** | `components/overlay-scrollbar` | Custom scrollbar wrapper |\n| **Toaster** | `components/toaster` | Toast notification system |\n| **Breadcrumb** | `components/breadcrumb` | Breadcrumb navigation |\n| **Combobox** | `components/combobox` | Combobox/autocomplete input |\n| **InputOtp** | `components/input-otp` | OTP code input |\n| **SearchableSelect** | `components/searchable-select` | Searchable dropdown select |\n| **SplitText** | `components/split-text` | Text splitting utility |\n| **PreviewCard** | `components/preview-card` | Card with preview content |\n| **LogoText** | `components/logo-text` | Stagewise logo text |\n\n## Quick Decision Guide\n\n**Picking a background:**\n- Top-level page → `bg-app-background`\n- Card/panel → `bg-background`\n- Nested element → escalate: `bg-surface-1` → `bg-surface-2` → `bg-surface-3`\n\n**Picking text color:**\n- Primary content → `text-foreground`\n- Secondary info → `text-muted-foreground`\n- Placeholder/disabled → `text-subtle-foreground`\n- Links/accents → `text-primary-foreground`\n\n**Borders & states (on elements with `bg-*`):**\n- Border: `border border-derived` or `border border-derived-subtle`\n- Hover: `hover:bg-hover-derived`\n- Active: `active:bg-active-derived`\n\n**Icons:** Use `lucide-react` or `nucleo-ui-fill-18` (project-specific icon set).\n\n## Storybook\n\nPreview components and color definitions:\n```bash\npnpm --filter stagewise storybook\n```\n","apps/browser/bundled/skills/preview/SKILL.md":"---\nname: Preview\ndescription: Create an interactive design-preview in a browser tab\nuser-invocable: true\nagent-invocable: false\n---\n\nBuild a **mini-app** to fulfill the request. Use the `apps/` directory and `API.openApp(appId, { target: 'tab', title: 'Readable preview title' })` as documented in the Application Environment section.\n\n## Workflow\n\n1. **Scaffold** — create `apps/{appId}/index.html` (+ optional `styles.css`, `script.js`).\n2. **Design for a full browser tab** — the preview opens on an internal `stagewise://internal/preview/{appId}` page, so use responsive layouts that work from narrow to full-width viewports.\n3. **Open in tab** — call `await API.openApp(appId, { target: 'tab', title: 'Readable preview title' })`. The title is shown in the tab breadcrumbs. The returned `{ tabId }` can be used with `API.sendCDP()` if the preview needs inspection.\n4. **Iterate** — use file tools (`multiEdit`, `overwriteFile`) for edits, then call `API.openApp(appId, { target: 'tab', title: 'Readable preview title' })` again to open the refreshed preview.\n\n## Rules\n\n- One `index.html` per app. Sibling assets resolve via relative paths (`./styles.css`).\n- Prefer self-contained HTML (inline or sibling files) — no external build step.\n- Do not open preview apps in the chat. Use `target: 'tab'`.\n- Use `API.sendMessage` / `API.onMessage` only when bidirectional communication is needed.","apps/browser/bundled/skills/plan/SKILL.md":"---\nname: Plan\ndescription: Create a structured implementation plan before coding\nuser-invocable: true\nagent-invocable: false\n---\n\nYou must create a structured implementation plan. Follow these instructions:\n## Workflow\n\n1. **Research** — read all affected files, trace data flow, understand the full change surface.\n2. **Clarify** — if genuinely ambiguous, batch questions into one `askUserQuestions` call.\n3. **Write** — create a kebab-case `.md` in `plans/`.\n4. **Stop** — present a summary and wait for approval. Do NOT implement until the user confirms.\n\n## Plan File Spec\n\n- **Line 1:** `# Plan Title` (h1) — used as display name in UI.\n- **Line 2:** One-sentence plain-text description — used as summary in UI.\n- **Body:** Freeform markdown. Use whatever sections best explain the change — Problem, Approach, Context, Changes, File Map, Key Details, etc. No fixed structure required; scale detail to complexity. Do not use emojis.\n  - **Self-contained:** A fresh agent with no prior context should be able to implement the plan without re-researching the codebase. Include relevant file paths (mount-prefixed, e.g. `w4ba9/src/...`), current behavior, key decisions and rationale in prose sections. Omit sections that add no value.\n  - **Checkboxes:** Use GFM checkboxes (`- [ ]`) for tasks. See Checkbox Rules below.\n\n## Checkbox Rules\n\nEvery checkbox = one concrete, completable work item.\n\n- **Agent-completable only** — every checkbox MUST be doable by you alone with your own tools. Never write tasks that require the user to act (manual testing, running commands in their shell, restarting a dev server, exporting env vars, reviewing, clicking through a UI, obtaining credentials, etc.). If such work is genuinely needed, describe it in a prose `## Follow-ups for the user` section — never as a checkbox.\n- **Short label** — the `- [ ]` line is a concise, scannable summary (one sentence). It says *what* to do, not *how*.\n- **Details below** — implementation specifics (file paths, code snippets, sub-steps) go in indented content underneath the checkbox line. Never cram these into the checkbox line itself.\n- **No alternatives** — resolve choices in prose above, then write one task for the chosen approach.\n- **No optional/decorative items** — if conditional, resolve the condition; include as firm task or omit.\n- **Parent-child consistency** — parent is complete only when all children are complete.\n\n### Example\n\n```markdown\n# Rename Commands to Skills\n\nRename all \"command\" terminology to \"skill\" across shared types, backend, and UI.\n\n## Context\n\nThe codebase currently uses \"command\" (`CommandDefinition`, `CommandSource`, etc.) but the\nuser-facing terminology has shifted to \"skill\". The rename touches 3 files and 6 import sites.\n\n## Tasks\n\n- [ ] Rename `CommandDefinition` type and its source file\n\n  Rename `w4ba9/src/shared/commands.ts` → `skills.ts`. Inside the file:\n  - `CommandSource` → `SkillSource`\n  - `CommandDefinition` → `SkillDefinition`\n  - `toCommandDefinitionUI` → `toSkillDefinitionUI`\n\n  Update all 6 import sites listed in the Context section.\n\n- [ ] Update Karton state key from `commands` to `skills`\n\n  In `w4ba9/src/shared/karton-contracts/ui/index.ts` (line ~629),\n  change the state key and update the JSDoc comment above it.\n\n- [ ] Verify typecheck passes\n\n  Run `pnpm -F stagewise typecheck` for both `tsconfig.ui.json` and `tsconfig.backend.json`.\n```\n","apps/browser/bundled/skills/watch/SKILL.md":"---\nname: Watch\ndescription: Watch a local or remote condition in the background and resume when it is met\nuser-invocable: true\nagent-invocable: false\n---\n\nTreat the user's request as a background watch task. Call\n`createWatcherSession` in this turn unless the condition is already satisfied,\ncannot be checked with the available CLIs, or a matching active watcher is\nlisted in the current `<shell-sessions>`.\n\nPerform any required read-only preflight before arming the watcher. After it is\narmed, briefly tell the user and end the turn; do not wait with\n`executeShellCommand`.\n",".agents/skills/caveman/SKILL.md":"---\nname: caveman\ndescription: >\n  Ultra-compressed communication mode. Cuts output tokens 65% (measured) by speaking like caveman\n  while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra,\n  wenyan-lite, wenyan-full, wenyan-ultra.\n  Use when user says \"caveman mode\", \"talk like caveman\", \"use caveman\", \"less tokens\",\n  \"be brief\", or invokes /caveman. Also auto-triggers when token efficiency is requested.\n---\n\nRespond terse like smart caveman. All technical substance stay. Only fluff die.\n\n## Persistence\n\nACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: \"stop caveman\" / \"normal mode\".\n\nDefault: **full**. Switch: `/caveman lite|full|ultra|wenyan-lite|wenyan-full|wenyan-ultra|off`.\n\n## Rules\n\nDrop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not \"implement a solution for\"). No tool-call narration, no decorative tables/emoji, no dumping long raw error logs unless asked — quote shortest decisive line. Standard well-known tech acronyms OK (DB/API/HTTP); never invent new abbreviations (cfg/impl/req/res/fn) — tokenizer split them same as full word: zero token saved, reader still decode. Full word cheaper AND clearer. No causal arrows (→) either — own token, save nothing. Technical terms exact. Code blocks unchanged. Errors quoted exact.\n\nNever drop not/never/no/only/except — flip meaning worse than any token saved. Numbers, units exact.\n\nTool calls: fire direct. No preamble, plan, or progress note before or between calls. After result: next call direct or final answer — never announce next call. Text before call only to clarify, warn security/irreversible, or resolve ambiguity.\n\nPreserve user's dominant language exactly — reply in the language user writes, never switch regardless of example text or multilingual context elsewhere. Compress the style, not the language. Every emitted line in that language — openings, pre-tool status lines, all — not just final reply. ALWAYS keep technical terms, code, API names, CLI commands, commit-type keywords (feat/fix/...), and exact error strings verbatim — unless user explicitly ask for translation.\n\n'Drop articles' = article languages only. Where small markers carry case/role (particles, postpositions), keep them — grammar, not filler; compress politeness/filler instead.\n\nNo self-reference. Never name or announce the style. No \"caveman mode on\", \"me caveman think\", no third-person caveman tags. Output caveman-only — never normal answer plus \"Caveman:\" recap. Exception: user explicitly ask what the mode is.\n\nPattern: `[thing] [action] [reason]. [next step].`\n\nNot: \"Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by...\"\nYes: \"Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:\"\n\n## Intensity\n\n| Level | What change |\n|-------|------------|\n| **lite** | No filler/hedging. Keep articles + full sentences. Professional but tight |\n| **full** | Drop articles, fragments OK, short synonyms. Classic caveman. No tool-call narration, no decorative tables/emoji, no long raw error-log dumps unless asked. Standard acronyms OK; no invented abbreviations |\n| **ultra** | Strip conjunctions when cause-then-effect stay unambiguous. One word when one word enough. State each fact once. NO prose abbreviations (cfg/impl/req/res/fn/auth), NO arrows (X → Y) — measured zero token saving under tokenizer, cost decode clarity. Code symbols, function names, API names, error strings: never touch |\n| **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |\n| **wenyan-full** | Maximum classical terseness. Fully 文言文. 80-90% character reduction — chars, not tokens. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其) |\n| **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |\n\nExample — \"Why React component re-render?\"\n- lite: \"Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`.\"\n- full: \"New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`.\"\n- ultra: \"Inline obj prop, new ref, re-render. `useMemo`.\"\n- wenyan-lite: \"組件頻重繪，以每繪新生對象參照故。以 useMemo 包之。\"\n- wenyan-full: \"每繪新生對象參照，故重繪；以 useMemo 包之則免。\"\n- wenyan-ultra: \"新參照則重繪。useMemo 包之。\"\n\nExample — \"Explain database connection pooling.\"\n- lite: \"Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead.\"\n- full: \"Pool reuse open DB connections. No new connection per request. Skip handshake overhead.\"\n- ultra: \"Pool reuse open DB connections. No per-request handshake.\"\n- wenyan-full: \"池蓄已開之連，不逐請而新開，省握手之費。\"\n- wenyan-ultra: \"池蓄連，免逐請新開，省握手。\"\n\nClassical chars = wenyan modes only. Never swap a word to a classical char to shrink at non-wenyan levels.\n\n## Auto-Clarity\n\nDrop caveman when:\n- Security warnings\n- Irreversible action confirmations\n- Multi-step sequences where fragment order or omitted conjunctions risk misread\n- Compression itself creates technical ambiguity (e.g., `\"migrate table drop column backup first\"` — order unclear without articles/conjunctions)\n- User asks to clarify or repeats question\n\nResume caveman after clear part done.\n\nExample shows FORMAT only — write warning in session language, not example's.\n\nExample — destructive op:\n> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.\n> ```sql\n> DROP TABLE users;\n> ```\n> Caveman resume. Verify backup exist first.\n\n## Boundaries\n\nPersisted outside chat: write normal prose — code, comments, commits, docs, issue/PR/MR text, memory files, third-party messages (/caveman-compress exempt). \"stop caveman\" or \"normal mode\": revert. Level persist until changed or session end.",".agents/skills/add-llm-model/SKILL.md":"---\nname: add-llm-model\ndescription: Use when adding a new LLM/model to stagewise model catalogs, provider instances, routing, validation, docs, or showcase UI.\n---\n\n# Add LLM Model\n\nUse this workflow when adding or updating model support in stagewise.\n\n## Architecture First\n\nModels are no longer a single global enabled/disabled list. Routing and model\navailability are scoped to entries in `preferences.providerInstances`.\n\n- `apps/browser/src/shared/available-models.ts` is the curated metadata catalog.\n- `apps/browser/src/backend/agents/providers/` contains stateless provider-type\n  implementations. `registry.ts` maps each `ProviderInstanceTypeId` to its type.\n- `apps/browser/src/backend/agents/model-provider.ts` resolves a provider\n  instance, then delegates ID conversion and model creation to its provider type.\n- Each provider instance owns `enabledModelIds`, `disabledModelIds`, and\n  `discoveredModels`.\n- `apps/browser/src/shared/flagship-models.ts` curates newly discovered models\n  per provider instance. Catalog models on official APIs are considered\n  flagship. OpenRouter has its own prefixed-ID flagship set.\n\nRead those files and the relevant provider implementation before deciding the\nchange surface. Do not apply guidance written for the old global model list.\n\n## Required Checks\n\n1. **Research authoritative metadata.**\n   - Confirm the canonical ID, native provider ID, context window, modalities,\n     tool support, reasoning support, and pricing.\n   - Prefer provider documentation for native behavior and OpenRouter data for\n     the Stagewise/OpenRouter route.\n   - Keep still-supported sibling models unless removal was explicitly requested.\n\n2. **Add or update catalog metadata.**\n   - Edit `apps/browser/src/shared/available-models.ts`.\n   - Match the field order and provider options of the nearest sibling.\n   - Update `apps/browser/src/shared/model-thinking-capabilities.ts` when the\n     model supports configurable thinking/reasoning.\n\n3. **Audit provider-instance routing.**\n   - Inspect `apps/browser/src/backend/agents/providers/registry.ts` and the\n     relevant implementation in `apps/browser/src/backend/agents/providers/`.\n   - Existing providers are normally model-agnostic; do not add a per-model\n     branch unless the wire ID or API behavior genuinely differs.\n   - Put canonical-to-wire ID conversion in the provider type's\n     `toWireModelId`, not in new branches in the central model provider.\n   - Stagewise routing prefixes canonical IDs for OpenRouter in\n     `providers/stagewise.ts`.\n   - Explicit custom endpoint `modelIdMapping` values must override defaults.\n\n4. **Curate discovery intentionally.**\n   - For OpenRouter, update `OPENROUTER_FLAGSHIP_MODELS` in\n     `apps/browser/src/shared/flagship-models.ts` when the new model should be\n     enabled on first discovery. IDs must include the OpenRouter vendor prefix.\n   - Remove a superseded model from that set only if it should stop being a\n     default for *new discovery*. Existing user choices are intentionally\n     preserved by `computeDisabledModelIdsAfterDiscovery`.\n   - Official-provider catalog entries are already treated as flagship; do not\n     duplicate them in `VENDOR_FLAGSHIP_DISCOVERED_MODELS`.\n\n5. **Do not seed model deprecations in the legacy provider migration.**\n   - Never add a new model ID to the `stagewise-default.disabledModelIds`\n     literal inside `PreferencesService.migrateToProviderInstances`.\n   - That function runs only when `providerInstances` is empty. Such a change\n     affects only users crossing the legacy migration and misses users whose\n     instances already exist, creating inconsistent availability.\n   - Do not patch the ID on every startup either; that would override a user's\n     later decision to re-enable the model.\n   - If product requirements call for changing existing users' model choices,\n     ask first and implement an explicit, idempotent, versioned preference\n     migration with tests. Define which provider-instance types are in scope\n     and preserve choices after the migration has run once.\n   - If the old model remains supported, keep it in the catalog and leave\n     existing per-instance state untouched. Discovery flagship curation controls\n     defaults for newly discovered provider models.\n\n6. **Keep credential validation cheap and broadly available.**\n   - Validation now belongs to the provider type's `validateCredentials`\n     implementation, usually in `providers/official-api.ts`, rather than being\n     hardcoded in central routing.\n   - Do not switch validation to a new flagship/high-tier model by default.\n     Prefer a cheap model broadly available to provider keys.\n   - Legacy `validate-api-keys.ts` paths may still exist for compatibility;\n     inspect callers before editing them.\n\n7. **Audit other product surfaces rather than editing mechanically.**\n   - Coding plans: `apps/browser/src/shared/coding-plans.ts`.\n   - Homepage showcase:\n     `apps/website/src/app/(home)/_components/model-provider-showcase.tsx`.\n   - README files and localized variants.\n   - Thinking tests, provider tests, and model-selector tests.\n   - Historical benchmark/comparison copy must not be renamed without evidence.\n\n8. **Always verify subscription-plan base URLs.**\n   - Many providers use **different API endpoints** for subscription/token-plan keys vs. pay-as-you-go (BYOK) keys.\n   - Example: GLM uses `https://api.z.ai/api/paas/v4` for BYOK but `https://api.z.ai/api/coding/paas/v4` for coding-plan subscriptions. Xiaomi MiMo uses `https://api.xiaomimimo.com/v1` for BYOK but `https://token-plan-cn.xiaomimimo.com/v1` for token-plan subscriptions.\n   - The two key types are often **non-interchangeable** — a subscription key will be rejected by the BYOK endpoint and vice versa.\n   - Before finalizing a coding-plan entry, **always** check the provider's official documentation to confirm:\n     - Whether subscription tokens require a separate `baseUrl` / `validationBaseUrl`.\n     - The correct cluster or region-specific URL (some providers offer multiple regional endpoints for subscriptions).\n     - The API key format prefix (e.g. `tp-` for MiMo token plan vs `sk-` for BYOK).\n   - Set `baseUrl`, `validationBaseUrl`, `validationModelId`, `apiKeyPattern`, and `endpointHelpText` on the coding-plan entry accordingly.\n   - If the provider exposes documentation via `llms.txt`, fetch it — it links to raw markdown doc pages that contain the authoritative endpoint and auth details.\n   - Update `apiKeyUrl` and `helpText` to point to the subscription management page (not the BYOK API keys page) when the two are separate.\n\n## Validation\n\nAfter changes:\n\n- Run targeted tests for catalog metadata, thinking capabilities, flagship\n  discovery, provider routing, and any preference migration touched.\n- Run browser typecheck and Biome on all edited files.\n- Search for the new and superseded model IDs across browser and website code.\n- Confirm Stagewise/OpenRouter and official-provider wire IDs independently.\n- Confirm docs, coding-plan `featuredModelIds`, and showcase entries are\n  intentionally aligned.\n- If preference migration changed, test both empty and already-populated\n  `providerInstances`, idempotence, and preservation of user choices.\n","apps/browser/bundled/skills/learn-skill/SKILL.md":"# learn-skill\n\nPath: `apps/browser/bundled/skills/learn-skill/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/SKILL.md)","apps/browser/bundled/skills/implement/SKILL.md":"# implement\n\nPath: `apps/browser/bundled/skills/implement/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/implement/SKILL.md)","apps/browser/bundled/skills/debug/SKILL.md":"# debug\n\nPath: `apps/browser/bundled/skills/debug/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/debug/SKILL.md)","apps/browser/bundled/plugins/vercel/SKILL.md":"# vercel\n\nPath: `apps/browser/bundled/plugins/vercel/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/vercel/SKILL.md)","apps/browser/bundled/plugins/supabase/SKILL.md":"# supabase\n\nPath: `apps/browser/bundled/plugins/supabase/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/supabase/SKILL.md)","apps/browser/bundled/plugins/remotion/SKILL.md":"# remotion\n\nPath: `apps/browser/bundled/plugins/remotion/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/SKILL.md)","apps/browser/bundled/plugins/posthog/SKILL.md":"# posthog\n\nPath: `apps/browser/bundled/plugins/posthog/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/posthog/SKILL.md)","apps/browser/bundled/plugins/mini-apps/SKILL.md":"# mini-apps\n\nPath: `apps/browser/bundled/plugins/mini-apps/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/SKILL.md)","apps/browser/bundled/plugins/javascript-sandbox/SKILL.md":"# javascript-sandbox\n\nPath: `apps/browser/bundled/plugins/javascript-sandbox/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/SKILL.md)","apps/browser/bundled/plugins/github/SKILL.md":"# github\n\nPath: `apps/browser/bundled/plugins/github/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/github/SKILL.md)","apps/browser/bundled/plugins/figma/SKILL.md":"# figma\n\nPath: `apps/browser/bundled/plugins/figma/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/figma/SKILL.md)","AGENTS.md":"# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/AGENTS.md)","CLAUDE.md":"# Claude Agent Guidelines & System Prompt\n\nPath: `CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/CLAUDE.md)","packages/typescript-config/base.json":"# Typescript-config Skill\n\nPath: `packages/typescript-config/base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/base.json)","packages/typescript-config/CHANGELOG.md":"# Typescript-config Skill\n\nPath: `packages/typescript-config/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/CHANGELOG.md)","packages/typescript-config/nextjs.json":"# Typescript-config Skill\n\nPath: `packages/typescript-config/nextjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/nextjs.json)","packages/typescript-config/package.json":"# Typescript-config Skill\n\nPath: `packages/typescript-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/package.json)","packages/typescript-config/react-library.json":"# Typescript-config Skill\n\nPath: `packages/typescript-config/react-library.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/react-library.json)","packages/tailwindcss-color-modifiers/package.json":"# Tailwindcss-color-modifiers Skill\n\nPath: `packages/tailwindcss-color-modifiers/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/package.json)","packages/tailwindcss-color-modifiers/README.md":"# tailwindcss-color-modifiers Documentation\n\nPath: `packages/tailwindcss-color-modifiers/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/README.md)","packages/tailwindcss-color-modifiers/tsconfig.json":"# Tailwindcss-color-modifiers Skill\n\nPath: `packages/tailwindcss-color-modifiers/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/tsconfig.json)","packages/stage-ui/CHANGELOG.md":"# Stage-ui Skill\n\nPath: `packages/stage-ui/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/CHANGELOG.md)","packages/stage-ui/package.json":"# Stage-ui Skill\n\nPath: `packages/stage-ui/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/package.json)","packages/stage-ui/README.md":"# stage-ui Documentation\n\nPath: `packages/stage-ui/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/README.md)","packages/stage-ui/tsconfig.json":"# Stage-ui Skill\n\nPath: `packages/stage-ui/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/tsconfig.json)","packages/karton/CHANGELOG.md":"# Karton Skill\n\nPath: `packages/karton/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/CHANGELOG.md)","packages/karton/LICENSE.md":"# Karton Skill\n\nPath: `packages/karton/LICENSE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/LICENSE.md)","packages/karton/package.json":"# Karton Skill\n\nPath: `packages/karton/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/package.json)","packages/karton/README.md":"# karton Documentation\n\nPath: `packages/karton/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/README.md)","packages/karton/SPEC.md":"# Karton Skill\n\nPath: `packages/karton/SPEC.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/SPEC.md)","packages/karton/tsconfig.json":"# Karton Skill\n\nPath: `packages/karton/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/tsconfig.json)","packages/karton/turbo.json":"# Karton Skill\n\nPath: `packages/karton/turbo.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/turbo.json)","packages/icons/package.json":"# Icons Skill\n\nPath: `packages/icons/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/package.json)","packages/icons/README.md":"# icons Documentation\n\nPath: `packages/icons/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/README.md)","packages/icons/tsconfig.json":"# Icons Skill\n\nPath: `packages/icons/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/tsconfig.json)","packages/agent-shell/package.json":"# Agent-shell Skill\n\nPath: `packages/agent-shell/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/package.json)","packages/agent-shell/tsconfig.json":"# Agent-shell Skill\n\nPath: `packages/agent-shell/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/tsconfig.json)","packages/agent-core/package.json":"# Agent-core Skill\n\nPath: `packages/agent-core/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/package.json)","packages/agent-core/README.md":"# agent-core Documentation\n\nPath: `packages/agent-core/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/README.md)","packages/agent-core/SPEC.md":"# Agent-core Skill\n\nPath: `packages/agent-core/SPEC.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/SPEC.md)","packages/agent-core/tsconfig.json":"# Agent-core Skill\n\nPath: `packages/agent-core/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/tsconfig.json)",".agents/skills/vercel-react-best-practices/AGENTS.md":"# Vercel-react-best-practices Skill\n\nPath: `.agents/skills/vercel-react-best-practices/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/AGENTS.md)",".agents/skills/vercel-react-best-practices/metadata.json":"# Vercel-react-best-practices Skill\n\nPath: `.agents/skills/vercel-react-best-practices/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/metadata.json)",".agents/skills/vercel-react-best-practices/README.md":"# Vercel-react-best-practices Skill\n\nPath: `.agents/skills/vercel-react-best-practices/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/README.md)",".agents/skills/stage-ui-design-system/components-reference.md":"# Stage-ui-design-system Skill\n\nPath: `.agents/skills/stage-ui-design-system/components-reference.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/stage-ui-design-system/components-reference.md)",".agents/skills/caveman/README.md":"# Caveman Skill\n\nPath: `.agents/skills/caveman/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/caveman/README.md)","packages/agent-core/src/humanspec.md":"# Src Skill\n\nPath: `packages/agent-core/src/humanspec.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/humanspec.md)",".agents/skills/vercel-react-best-practices/rules/_sections.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/_sections.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/_sections.md)",".agents/skills/vercel-react-best-practices/rules/_template.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/_template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/_template.md)",".agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md)",".agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md)",".agents/skills/vercel-react-best-practices/rules/advanced-init-once.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md)",".agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md)",".agents/skills/vercel-react-best-practices/rules/async-api-routes.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-api-routes.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md)",".agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md)",".agents/skills/vercel-react-best-practices/rules/async-defer-await.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-defer-await.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md)",".agents/skills/vercel-react-best-practices/rules/async-dependencies.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-dependencies.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md)",".agents/skills/vercel-react-best-practices/rules/async-parallel.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-parallel.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-parallel.md)",".agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md)",".agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md)",".agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md)",".agents/skills/vercel-react-best-practices/rules/bundle-conditional.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md)",".agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md)",".agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md)",".agents/skills/vercel-react-best-practices/rules/bundle-preload.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-preload.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md)",".agents/skills/vercel-react-best-practices/rules/client-event-listeners.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md)",".agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md)",".agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md)",".agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md)",".agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md)",".agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md)",".agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md)",".agents/skills/vercel-react-best-practices/rules/js-cache-storage.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md)",".agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md)",".agents/skills/vercel-react-best-practices/rules/js-early-exit.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-early-exit.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md)",".agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md)",".agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md)",".agents/skills/vercel-react-best-practices/rules/js-index-maps.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-index-maps.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md)",".agents/skills/vercel-react-best-practices/rules/js-length-check-first.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md)",".agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md)",".agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md)",".agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md)",".agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md)",".agents/skills/vercel-react-best-practices/rules/rendering-activity.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-activity.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md)",".agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md)",".agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md)",".agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md)",".agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md)",".agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md)",".agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md)",".agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md)",".agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md)",".agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md)",".agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md)",".agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md)",".agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md)",".agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md)",".agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md)",".agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md)",".agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md)",".agents/skills/vercel-react-best-practices/rules/rerender-memo.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-memo.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md)",".agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md)",".agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md)",".agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md)",".agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md)",".agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md)",".agents/skills/vercel-react-best-practices/rules/rerender-transitions.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md)",".agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md)",".agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md)",".agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md)",".agents/skills/vercel-react-best-practices/rules/server-auth-actions.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md)",".agents/skills/vercel-react-best-practices/rules/server-cache-lru.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md)",".agents/skills/vercel-react-best-practices/rules/server-cache-react.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-cache-react.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md)",".agents/skills/vercel-react-best-practices/rules/server-dedup-props.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md)",".agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md)",".agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md)",".agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md)",".agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md)",".agents/skills/vercel-react-best-practices/rules/server-serialization.md":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-serialization.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-serialization.md)",".agents/skills/prompt-optimization/references/agentic-prompts.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/agentic-prompts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/agentic-prompts.md)",".agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md)",".agents/skills/prompt-optimization/references/clarity-and-structure.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/clarity-and-structure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/clarity-and-structure.md)",".agents/skills/prompt-optimization/references/compression-techniques.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/compression-techniques.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/compression-techniques.md)",".agents/skills/prompt-optimization/references/output-control.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/output-control.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/output-control.md)",".agents/skills/prompt-optimization/references/safety-and-security.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/safety-and-security.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/safety-and-security.md)",".agents/skills/prompt-optimization/references/workflows.md":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/workflows.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/workflows.md)",".agents/skills/karton-best-practices/references/edge-cases.md":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/edge-cases.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/edge-cases.md)",".agents/skills/karton-best-practices/references/re-render-prevention.md":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/re-render-prevention.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/re-render-prevention.md)",".agents/skills/karton-best-practices/references/selector-patterns.md":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/selector-patterns.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/selector-patterns.md)",".agents/skills/karton-best-practices/references/state-update-model.md":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/state-update-model.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/state-update-model.md)",".agents/skills/create-skill/references/best-practices.md":"# References Skill\n\nPath: `.agents/skills/create-skill/references/best-practices.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/best-practices.md)",".agents/skills/create-skill/references/examples.md":"# References Skill\n\nPath: `.agents/skills/create-skill/references/examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/examples.md)",".agents/skills/create-skill/references/progressive-disclosure.md":"# References Skill\n\nPath: `.agents/skills/create-skill/references/progressive-disclosure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/progressive-disclosure.md)",".agents/skills/create-skill/references/skill-structure.md":"# References Skill\n\nPath: `.agents/skills/create-skill/references/skill-structure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/skill-structure.md)",".agents/skills/copywriting/references/copy-frameworks.md":"# References Skill\n\nPath: `.agents/skills/copywriting/references/copy-frameworks.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/references/copy-frameworks.md)",".agents/skills/copywriting/references/natural-transitions.md":"# References Skill\n\nPath: `.agents/skills/copywriting/references/natural-transitions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/references/natural-transitions.md)",".agents/skills/copywriting/evals/evals.json":"# Evals Skill\n\nPath: `.agents/skills/copywriting/evals/evals.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/evals/evals.json)","packages/stage-ui/src/code-block/example-theme-dark.json":"# Code-block Skill\n\nPath: `packages/stage-ui/src/code-block/example-theme-dark.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/src/code-block/example-theme-dark.json)","packages/stage-ui/src/code-block/example-theme-light.json":"# Code-block Skill\n\nPath: `packages/stage-ui/src/code-block/example-theme-light.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/src/code-block/example-theme-light.json)","packages/agent-shell/src/env/shells-domain-adapter.prompt.md":"# Env Skill\n\nPath: `packages/agent-shell/src/env/shells-domain-adapter.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/src/env/shells-domain-adapter.prompt.md)","packages/agent-core/src/file-read-transformer/README.md":"# file-read-transformer Documentation\n\nPath: `packages/agent-core/src/file-read-transformer/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/file-read-transformer/README.md)","packages/agent-core/src/env/env-state-spec.md":"# Env Skill\n\nPath: `packages/agent-core/src/env/env-state-spec.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/env-state-spec.md)","packages/agent-core/src/store/state-annotation.md":"# Store Skill\n\nPath: `packages/agent-core/src/store/state-annotation.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/store/state-annotation.md)","apps/browser/bundled/plugins/vercel/metadata.json":"# Vercel Skill\n\nPath: `apps/browser/bundled/plugins/vercel/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/vercel/metadata.json)","apps/browser/bundled/plugins/supabase/metadata.json":"# Supabase Skill\n\nPath: `apps/browser/bundled/plugins/supabase/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/supabase/metadata.json)","apps/browser/bundled/plugins/remotion/metadata.json":"# Remotion Skill\n\nPath: `apps/browser/bundled/plugins/remotion/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/metadata.json)","apps/browser/bundled/plugins/posthog/metadata.json":"# Posthog Skill\n\nPath: `apps/browser/bundled/plugins/posthog/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/posthog/metadata.json)","apps/browser/bundled/plugins/mini-apps/metadata.json":"# Mini-apps Skill\n\nPath: `apps/browser/bundled/plugins/mini-apps/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/metadata.json)","apps/browser/bundled/plugins/javascript-sandbox/metadata.json":"# Javascript-sandbox Skill\n\nPath: `apps/browser/bundled/plugins/javascript-sandbox/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/metadata.json)","apps/browser/bundled/plugins/github/metadata.json":"# Github Skill\n\nPath: `apps/browser/bundled/plugins/github/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/github/metadata.json)","apps/browser/bundled/plugins/figma/metadata.json":"# Figma Skill\n\nPath: `apps/browser/bundled/plugins/figma/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/figma/metadata.json)","packages/agent-core/src/env/adapters/agents-md.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/agents-md.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/agents-md.prompt.md)","packages/agent-core/src/env/adapters/enabled-skills.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/enabled-skills.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/enabled-skills.prompt.md)","packages/agent-core/src/env/adapters/file-diffs.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/file-diffs.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/file-diffs.prompt.md)","packages/agent-core/src/env/adapters/logs.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/logs.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/logs.prompt.md)","packages/agent-core/src/env/adapters/memory.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/memory.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/memory.prompt.md)","packages/agent-core/src/env/adapters/plans.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/plans.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/plans.prompt.md)","packages/agent-core/src/env/adapters/workspace.prompt.md":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/workspace.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/workspace.prompt.md)","packages/agent-core/src/services/diff-history/spec.md":"# Diff-history Skill\n\nPath: `packages/agent-core/src/services/diff-history/spec.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/services/diff-history/spec.md)","apps/browser/bundled/skills/learn-skill/references/authoring-guide.md":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/authoring-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/authoring-guide.md)","apps/browser/bundled/skills/learn-skill/references/session-extraction.md":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/session-extraction.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/session-extraction.md)","apps/browser/bundled/skills/learn-skill/references/skill-updating.md":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/skill-updating.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/skill-updating.md)","apps/browser/bundled/skills/learn-skill/references/workflow-patterns.md":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/workflow-patterns.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/workflow-patterns.md)","apps/browser/bundled/plugins/mini-apps/references/examples.md":"# References Skill\n\nPath: `apps/browser/bundled/plugins/mini-apps/references/examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/references/examples.md)","apps/browser/bundled/plugins/javascript-sandbox/references/examples.md":"# References Skill\n\nPath: `apps/browser/bundled/plugins/javascript-sandbox/references/examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/references/examples.md)","packages/agent-core/src/agents/chat/prompts/authorities.md":"# Subagent: authorities\n\nPath: `packages/agent-core/src/agents/chat/prompts/authorities.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/authorities.md)","packages/agent-core/src/agents/chat/prompts/environment-preamble.md":"# Subagent: environment-preamble\n\nPath: `packages/agent-core/src/agents/chat/prompts/environment-preamble.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/environment-preamble.md)","packages/agent-core/src/agents/chat/prompts/intro.md":"# Subagent: intro\n\nPath: `packages/agent-core/src/agents/chat/prompts/intro.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/intro.md)","packages/agent-core/src/agents/chat/prompts/output-style-basics.md":"# Subagent: output-style-basics\n\nPath: `packages/agent-core/src/agents/chat/prompts/output-style-basics.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/output-style-basics.md)","packages/agent-core/src/agents/chat/prompts/soul.md":"# Subagent: soul\n\nPath: `packages/agent-core/src/agents/chat/prompts/soul.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/soul.md)","apps/browser/bundled/plugins/remotion/references/styleguides/design-inspirations.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/design-inspirations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/design-inspirations.md)","apps/browser/bundled/plugins/remotion/references/styleguides/howto.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto.md)","apps/browser/bundled/plugins/remotion/references/styleguides/howto-elements.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-elements.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-elements.md)","apps/browser/bundled/plugins/remotion/references/styleguides/howto-layouts.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-layouts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-layouts.md)","apps/browser/bundled/plugins/remotion/references/styleguides/howto-storyboard-templates.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-storyboard-templates.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-storyboard-templates.md)","apps/browser/bundled/plugins/remotion/references/styleguides/howto-write-design-md.md":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-write-design-md.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-write-design-md.md)","apps/browser/bundled/plugins/remotion/references/rules/3d.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/3d.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/3d.md)","apps/browser/bundled/plugins/remotion/references/rules/animations.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/animations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/animations.md)","apps/browser/bundled/plugins/remotion/references/rules/assets.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/assets.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/assets.md)","apps/browser/bundled/plugins/remotion/references/rules/audio.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/audio.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/audio.md)","apps/browser/bundled/plugins/remotion/references/rules/audio-visualization.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/audio-visualization.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/audio-visualization.md)","apps/browser/bundled/plugins/remotion/references/rules/calculate-metadata.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/calculate-metadata.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/calculate-metadata.md)","apps/browser/bundled/plugins/remotion/references/rules/can-decode.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/can-decode.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/can-decode.md)","apps/browser/bundled/plugins/remotion/references/rules/charts.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/charts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/charts.md)","apps/browser/bundled/plugins/remotion/references/rules/compositions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/compositions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/compositions.md)","apps/browser/bundled/plugins/remotion/references/rules/display-captions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/display-captions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/display-captions.md)","apps/browser/bundled/plugins/remotion/references/rules/extract-frames.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/extract-frames.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/extract-frames.md)","apps/browser/bundled/plugins/remotion/references/rules/ffmpeg.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/ffmpeg.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/ffmpeg.md)","apps/browser/bundled/plugins/remotion/references/rules/fonts.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/fonts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/fonts.md)","apps/browser/bundled/plugins/remotion/references/rules/get-audio-duration.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/get-audio-duration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-audio-duration.md)","apps/browser/bundled/plugins/remotion/references/rules/get-video-dimensions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/get-video-dimensions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-video-dimensions.md)","apps/browser/bundled/plugins/remotion/references/rules/get-video-duration.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/get-video-duration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-video-duration.md)","apps/browser/bundled/plugins/remotion/references/rules/gifs.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/gifs.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/gifs.md)","apps/browser/bundled/plugins/remotion/references/rules/images.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/images.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/images.md)","apps/browser/bundled/plugins/remotion/references/rules/import-srt-captions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/import-srt-captions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/import-srt-captions.md)","apps/browser/bundled/plugins/remotion/references/rules/light-leaks.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/light-leaks.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/light-leaks.md)","apps/browser/bundled/plugins/remotion/references/rules/lottie.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/lottie.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/lottie.md)","apps/browser/bundled/plugins/remotion/references/rules/maps.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/maps.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/maps.md)","apps/browser/bundled/plugins/remotion/references/rules/measuring-dom-nodes.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/measuring-dom-nodes.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/measuring-dom-nodes.md)","apps/browser/bundled/plugins/remotion/references/rules/measuring-text.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/measuring-text.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/measuring-text.md)","apps/browser/bundled/plugins/remotion/references/rules/parameters.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/parameters.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/parameters.md)","apps/browser/bundled/plugins/remotion/references/rules/sequencing.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/sequencing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/sequencing.md)","apps/browser/bundled/plugins/remotion/references/rules/sfx.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/sfx.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/sfx.md)","apps/browser/bundled/plugins/remotion/references/rules/silence-detection.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/silence-detection.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/silence-detection.md)","apps/browser/bundled/plugins/remotion/references/rules/subtitles.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/subtitles.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/subtitles.md)","apps/browser/bundled/plugins/remotion/references/rules/tailwind.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/tailwind.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/tailwind.md)","apps/browser/bundled/plugins/remotion/references/rules/tailwind-setup.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/tailwind-setup.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/tailwind-setup.md)","apps/browser/bundled/plugins/remotion/references/rules/text-animations.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/text-animations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/text-animations.md)","apps/browser/bundled/plugins/remotion/references/rules/timing.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/timing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/timing.md)","apps/browser/bundled/plugins/remotion/references/rules/transcribe-captions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/transcribe-captions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transcribe-captions.md)","apps/browser/bundled/plugins/remotion/references/rules/transitions.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/transitions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transitions.md)","apps/browser/bundled/plugins/remotion/references/rules/transparent-videos.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/transparent-videos.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transparent-videos.md)","apps/browser/bundled/plugins/remotion/references/rules/trimming.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/trimming.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/trimming.md)","apps/browser/bundled/plugins/remotion/references/rules/videos.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/videos.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/videos.md)","apps/browser/bundled/plugins/remotion/references/rules/voiceover.md":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/voiceover.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/voiceover.md)","apps/browser/bundled/plugins/remotion/references/channels/facebook.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/facebook.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/facebook.md)","apps/browser/bundled/plugins/remotion/references/channels/instagram.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/instagram.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/instagram.md)","apps/browser/bundled/plugins/remotion/references/channels/linkedin.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/linkedin.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/linkedin.md)","apps/browser/bundled/plugins/remotion/references/channels/tiktok.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/tiktok.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/tiktok.md)","apps/browser/bundled/plugins/remotion/references/channels/x.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/x.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/x.md)","apps/browser/bundled/plugins/remotion/references/channels/youtube.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/youtube.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/youtube.md)","apps/browser/bundled/plugins/remotion/references/channels/youtube-shorts.md":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/youtube-shorts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/youtube-shorts.md)","apps/browser/src/backend/agents/chat/prompts/environment-preamble.md":"# Subagent: environment-preamble\n\nPath: `apps/browser/src/backend/agents/chat/prompts/environment-preamble.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/environment-preamble.md)","apps/browser/src/backend/agents/chat/prompts/intro.md":"# Subagent: intro\n\nPath: `apps/browser/src/backend/agents/chat/prompts/intro.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/intro.md)","apps/browser/src/backend/agents/chat/prompts/soul.md":"# Subagent: soul\n\nPath: `apps/browser/src/backend/agents/chat/prompts/soul.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/soul.md)"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/AGENTS.md)","tokens":300,"sizeBytes":156},{"name":"SKILL.md","path":".agents/skills/add-llm-model/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/add-llm-model/SKILL.md","title":"add-llm-model","category":"anthropic-skill","format":"markdown","content":"---\nname: add-llm-model\ndescription: Use when adding a new LLM/model to stagewise model catalogs, provider instances, routing, validation, docs, or showcase UI.\n---\n\n# Add LLM Model\n\nUse this workflow when adding or updating model support in stagewise.\n\n## Architecture First\n\nModels are no longer a single global enabled/disabled list. Routing and model\navailability are scoped to entries in `preferences.providerInstances`.\n\n- `apps/browser/src/shared/available-models.ts` is the curated metadata catalog.\n- `apps/browser/src/backend/agents/providers/` contains stateless provider-type\n  implementations. `registry.ts` maps each `ProviderInstanceTypeId` to its type.\n- `apps/browser/src/backend/agents/model-provider.ts` resolves a provider\n  instance, then delegates ID conversion and model creation to its provider type.\n- Each provider instance owns `enabledModelIds`, `disabledModelIds`, and\n  `discoveredModels`.\n- `apps/browser/src/shared/flagship-models.ts` curates newly discovered models\n  per provider instance. Catalog models on official APIs are considered\n  flagship. OpenRouter has its own prefixed-ID flagship set.\n\nRead those files and the relevant provider implementation before deciding the\nchange surface. Do not apply guidance written for the old global model list.\n\n## Required Checks\n\n1. **Research authoritative metadata.**\n   - Confirm the canonical ID, native provider ID, context window, modalities,\n     tool support, reasoning support, and pricing.\n   - Prefer provider documentation for native behavior and OpenRouter data for\n     the Stagewise/OpenRouter route.\n   - Keep still-supported sibling models unless removal was explicitly requested.\n\n2. **Add or update catalog metadata.**\n   - Edit `apps/browser/src/shared/available-models.ts`.\n   - Match the field order and provider options of the nearest sibling.\n   - Update `apps/browser/src/shared/model-thinking-capabilities.ts` when the\n     model supports configurable thinking/reasoning.\n\n3. **Audit provider-instance routing.**\n   - Inspect `apps/browser/src/backend/agents/providers/registry.ts` and the\n     relevant implementation in `apps/browser/src/backend/agents/providers/`.\n   - Existing providers are normally model-agnostic; do not add a per-model\n     branch unless the wire ID or API behavior genuinely differs.\n   - Put canonical-to-wire ID conversion in the provider type's\n     `toWireModelId`, not in new branches in the central model provider.\n   - Stagewise routing prefixes canonical IDs for OpenRouter in\n     `providers/stagewise.ts`.\n   - Explicit custom endpoint `modelIdMapping` values must override defaults.\n\n4. **Curate discovery intentionally.**\n   - For OpenRouter, update `OPENROUTER_FLAGSHIP_MODELS` in\n     `apps/browser/src/shared/flagship-models.ts` when the new model should be\n     enabled on first discovery. IDs must include the OpenRouter vendor prefix.\n   - Remove a superseded model from that set only if it should stop being a\n     default for *new discovery*. Existing user choices are intentionally\n     preserved by `computeDisabledModelIdsAfterDiscovery`.\n   - Official-provider catalog entries are already treated as flagship; do not\n     duplicate them in `VENDOR_FLAGSHIP_DISCOVERED_MODELS`.\n\n5. **Do not seed model deprecations in the legacy provider migration.**\n   - Never add a new model ID to the `stagewise-default.disabledModelIds`\n     literal inside `PreferencesService.migrateToProviderInstances`.\n   - That function runs only when `providerInstances` is empty. Such a change\n     affects only users crossing the legacy migration and misses users whose\n     instances already exist, creating inconsistent availability.\n   - Do not patch the ID on every startup either; that would override a user's\n     later decision to re-enable the model.\n   - If product requirements call for changing existing users' model choices,\n     ask first and implement an explicit, idempotent, versioned preference\n     migration with tests. Define which provider-instance types are in scope\n     and preserve choices after the migration has run once.\n   - If the old model remains supported, keep it in the catalog and leave\n     existing per-instance state untouched. Discovery flagship curation controls\n     defaults for newly discovered provider models.\n\n6. **Keep credential validation cheap and broadly available.**\n   - Validation now belongs to the provider type's `validateCredentials`\n     implementation, usually in `providers/official-api.ts`, rather than being\n     hardcoded in central routing.\n   - Do not switch validation to a new flagship/high-tier model by default.\n     Prefer a cheap model broadly available to provider keys.\n   - Legacy `validate-api-keys.ts` paths may still exist for compatibility;\n     inspect callers before editing them.\n\n7. **Audit other product surfaces rather than editing mechanically.**\n   - Coding plans: `apps/browser/src/shared/coding-plans.ts`.\n   - Homepage showcase:\n     `apps/website/src/app/(home)/_components/model-provider-showcase.tsx`.\n   - README files and localized variants.\n   - Thinking tests, provider tests, and model-selector tests.\n   - Historical benchmark/comparison copy must not be renamed without evidence.\n\n8. **Always verify subscription-plan base URLs.**\n   - Many providers use **different API endpoints** for subscription/token-plan keys vs. pay-as-you-go (BYOK) keys.\n   - Example: GLM uses `https://api.z.ai/api/paas/v4` for BYOK but `https://api.z.ai/api/coding/paas/v4` for coding-plan subscriptions. Xiaomi MiMo uses `https://api.xiaomimimo.com/v1` for BYOK but `https://token-plan-cn.xiaomimimo.com/v1` for token-plan subscriptions.\n   - The two key types are often **non-interchangeable** — a subscription key will be rejected by the BYOK endpoint and vice versa.\n   - Before finalizing a coding-plan entry, **always** check the provider's official documentation to confirm:\n     - Whether subscription tokens require a separate `baseUrl` / `validationBaseUrl`.\n     - The correct cluster or region-specific URL (some providers offer multiple regional endpoints for subscriptions).\n     - The API key format prefix (e.g. `tp-` for MiMo token plan vs `sk-` for BYOK).\n   - Set `baseUrl`, `validationBaseUrl`, `validationModelId`, `apiKeyPattern`, and `endpointHelpText` on the coding-plan entry accordingly.\n   - If the provider exposes documentation via `llms.txt`, fetch it — it links to raw markdown doc pages that contain the authoritative endpoint and auth details.\n   - Update `apiKeyUrl` and `helpText` to point to the subscription management page (not the BYOK API keys page) when the two are separate.\n\n## Validation\n\nAfter changes:\n\n- Run targeted tests for catalog metadata, thinking capabilities, flagship\n  discovery, provider routing, and any preference migration touched.\n- Run browser typecheck and Biome on all edited files.\n- Search for the new and superseded model IDs across browser and website code.\n- Confirm Stagewise/OpenRouter and official-provider wire IDs independently.\n- Confirm docs, coding-plan `featuredModelIds`, and showcase entries are\n  intentionally aligned.\n- If preference migration changed, test both empty and already-populated\n  `providerInstances`, idempotence, and preservation of user choices.\n","frontmatter":{"name":"add-llm-model","description":"Use when adding a new LLM/model to stagewise model catalogs, provider instances, routing, validation, docs, or showcase UI."},"isInternal":false,"tokens":1535,"sizeBytes":7261},{"name":"README.md","path":".agents/skills/caveman/README.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/caveman/README.md","title":"Caveman Skill","category":"anthropic-skill","format":"markdown","content":"# Caveman Skill\n\nPath: `.agents/skills/caveman/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/caveman/README.md)","tokens":300,"sizeBytes":183},{"name":"SKILL.md","path":".agents/skills/caveman/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/caveman/SKILL.md","title":"caveman","category":"anthropic-skill","format":"markdown","content":"---\nname: caveman\ndescription: >\n  Ultra-compressed communication mode. Cuts output tokens 65% (measured) by speaking like caveman\n  while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra,\n  wenyan-lite, wenyan-full, wenyan-ultra.\n  Use when user says \"caveman mode\", \"talk like caveman\", \"use caveman\", \"less tokens\",\n  \"be brief\", or invokes /caveman. Also auto-triggers when token efficiency is requested.\n---\n\nRespond terse like smart caveman. All technical substance stay. Only fluff die.\n\n## Persistence\n\nACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: \"stop caveman\" / \"normal mode\".\n\nDefault: **full**. Switch: `/caveman lite|full|ultra|wenyan-lite|wenyan-full|wenyan-ultra|off`.\n\n## Rules\n\nDrop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not \"implement a solution for\"). No tool-call narration, no decorative tables/emoji, no dumping long raw error logs unless asked — quote shortest decisive line. Standard well-known tech acronyms OK (DB/API/HTTP); never invent new abbreviations (cfg/impl/req/res/fn) — tokenizer split them same as full word: zero token saved, reader still decode. Full word cheaper AND clearer. No causal arrows (→) either — own token, save nothing. Technical terms exact. Code blocks unchanged. Errors quoted exact.\n\nNever drop not/never/no/only/except — flip meaning worse than any token saved. Numbers, units exact.\n\nTool calls: fire direct. No preamble, plan, or progress note before or between calls. After result: next call direct or final answer — never announce next call. Text before call only to clarify, warn security/irreversible, or resolve ambiguity.\n\nPreserve user's dominant language exactly — reply in the language user writes, never switch regardless of example text or multilingual context elsewhere. Compress the style, not the language. Every emitted line in that language — openings, pre-tool status lines, all — not just final reply. ALWAYS keep technical terms, code, API names, CLI commands, commit-type keywords (feat/fix/...), and exact error strings verbatim — unless user explicitly ask for translation.\n\n'Drop articles' = article languages only. Where small markers carry case/role (particles, postpositions), keep them — grammar, not filler; compress politeness/filler instead.\n\nNo self-reference. Never name or announce the style. No \"caveman mode on\", \"me caveman think\", no third-person caveman tags. Output caveman-only — never normal answer plus \"Caveman:\" recap. Exception: user explicitly ask what the mode is.\n\nPattern: `[thing] [action] [reason]. [next step].`\n\nNot: \"Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by...\"\nYes: \"Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:\"\n\n## Intensity\n\n| Level | What change |\n|-------|------------|\n| **lite** | No filler/hedging. Keep articles + full sentences. Professional but tight |\n| **full** | Drop articles, fragments OK, short synonyms. Classic caveman. No tool-call narration, no decorative tables/emoji, no long raw error-log dumps unless asked. Standard acronyms OK; no invented abbreviations |\n| **ultra** | Strip conjunctions when cause-then-effect stay unambiguous. One word when one word enough. State each fact once. NO prose abbreviations (cfg/impl/req/res/fn/auth), NO arrows (X → Y) — measured zero token saving under tokenizer, cost decode clarity. Code symbols, function names, API names, error strings: never touch |\n| **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |\n| **wenyan-full** | Maximum classical terseness. Fully 文言文. 80-90% character reduction — chars, not tokens. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其) |\n| **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |\n\nExample — \"Why React component re-render?\"\n- lite: \"Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`.\"\n- full: \"New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`.\"\n- ultra: \"Inline obj prop, new ref, re-render. `useMemo`.\"\n- wenyan-lite: \"組件頻重繪，以每繪新生對象參照故。以 useMemo 包之。\"\n- wenyan-full: \"每繪新生對象參照，故重繪；以 useMemo 包之則免。\"\n- wenyan-ultra: \"新參照則重繪。useMemo 包之。\"\n\nExample — \"Explain database connection pooling.\"\n- lite: \"Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead.\"\n- full: \"Pool reuse open DB connections. No new connection per request. Skip handshake overhead.\"\n- ultra: \"Pool reuse open DB connections. No per-request handshake.\"\n- wenyan-full: \"池蓄已開之連，不逐請而新開，省握手之費。\"\n- wenyan-ultra: \"池蓄連，免逐請新開，省握手。\"\n\nClassical chars = wenyan modes only. Never swap a word to a classical char to shrink at non-wenyan levels.\n\n## Auto-Clarity\n\nDrop caveman when:\n- Security warnings\n- Irreversible action confirmations\n- Multi-step sequences where fragment order or omitted conjunctions risk misread\n- Compression itself creates technical ambiguity (e.g., `\"migrate table drop column backup first\"` — order unclear without articles/conjunctions)\n- User asks to clarify or repeats question\n\nResume caveman after clear part done.\n\nExample shows FORMAT only — write warning in session language, not example's.\n\nExample — destructive op:\n> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.\n> ```sql\n> DROP TABLE users;\n> ```\n> Caveman resume. Verify backup exist first.\n\n## Boundaries\n\nPersisted outside chat: write normal prose — code, comments, commits, docs, issue/PR/MR text, memory files, third-party messages (/caveman-compress exempt). \"stop caveman\" or \"normal mode\": revert. Level persist until changed or session end.","frontmatter":{"name":"caveman","description":"Ultra-compressed communication mode. Cuts output tokens 65% (measured) 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"},"isInternal":false,"tokens":1512,"sizeBytes":6216},{"name":"evals.json","path":".agents/skills/copywriting/evals/evals.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/evals/evals.json","title":"Evals Skill","category":"anthropic-skill","format":"json","content":"# Evals Skill\n\nPath: `.agents/skills/copywriting/evals/evals.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/evals/evals.json)","tokens":300,"sizeBytes":203},{"name":"copy-frameworks.md","path":".agents/skills/copywriting/references/copy-frameworks.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/references/copy-frameworks.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/copywriting/references/copy-frameworks.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/references/copy-frameworks.md)","tokens":300,"sizeBytes":234},{"name":"natural-transitions.md","path":".agents/skills/copywriting/references/natural-transitions.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/references/natural-transitions.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/copywriting/references/natural-transitions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/references/natural-transitions.md)","tokens":300,"sizeBytes":242},{"name":"SKILL.md","path":".agents/skills/copywriting/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/SKILL.md","title":"copywriting","category":"anthropic-skill","format":"markdown","content":"---\nname: copywriting\ndescription: When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or product pages. Also use when the user says \"write copy for,\" \"improve this copy,\" \"rewrite this page,\" \"marketing copy,\" \"headline help,\" \"CTA copy,\" \"value proposition,\" \"tagline,\" \"subheadline,\" \"hero section copy,\" \"above the fold,\" \"this copy is weak,\" \"make this more compelling,\" or \"help me describe my product.\" Use this whenever someone is working on website text that needs to persuade or convert. For email copy, see emails. For popup copy, see popups. For editing existing copy, see copy-editing. For the offer underneath the copy (bonuses, guarantees, value framing), see offers.\nmetadata:\n  version: 2.0.1\n---\n\n# Copywriting\n\nYou are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action.\n\n## Before Writing\n\n**Check for product marketing context first:**\nIf `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.\n\nGather this context (ask if not provided):\n\n### 1. Page Purpose\n- What type of page? (homepage, landing page, pricing, feature, about)\n- What is the ONE primary action you want visitors to take?\n\n### 2. Audience\n- Who is the ideal customer?\n- What problem are they trying to solve?\n- What objections or hesitations do they have?\n- What language do they use to describe their problem?\n\n### 3. Product/Offer\n- What are you selling or offering?\n- What makes it different from alternatives?\n- What's the key transformation or outcome?\n- Any proof points (numbers, testimonials, case studies)?\n\n### 4. Context\n- Where is traffic coming from? (ads, organic, email)\n- What do visitors already know before arriving?\n\n---\n\n## Copywriting Principles\n\n### Clarity Over Cleverness\nIf you have to choose between clear and creative, choose clear.\n\n### Benefits Over Features\nFeatures: What it does. Benefits: What that means for the customer.\n\n### Specificity Over Vagueness\n- Vague: \"Save time on your workflow\"\n- Specific: \"Cut your weekly reporting from 4 hours to 15 minutes\"\n\n### Customer Language Over Company Language\nUse words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets.\n\n### One Idea Per Section\nEach section should advance one argument. Build a logical flow down the page.\n\n---\n\n## Writing Style Rules\n\n### Core Principles\n\n1. **Simple over complex** — \"Use\" not \"utilize,\" \"help\" not \"facilitate\"\n2. **Specific over vague** — Avoid \"streamline,\" \"optimize,\" \"innovative\"\n3. **Active over passive** — \"We generate reports\" not \"Reports are generated\"\n4. **Confident over qualified** — Remove \"almost,\" \"very,\" \"really\"\n5. **Show over tell** — Describe the outcome instead of using adverbs\n6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability\n\n### Quick Quality Check\n\n- Jargon that could confuse outsiders?\n- Sentences trying to do too much?\n- Passive voice constructions?\n- Exclamation points? (remove them)\n- Marketing buzzwords without substance?\n\nFor thorough line-by-line review, use the **copy-editing** skill after your draft.\n\n---\n\n## Best Practices\n\n### Be Direct\nGet to the point. Don't bury the value in qualifications.\n\n❌ Slack lets you share files instantly, from documents to images, directly in your conversations\n\n✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires.\n\n### Use Rhetorical Questions\nQuestions engage readers and make them think about their own situation.\n- \"Hate returning stuff to Amazon?\"\n- \"Tired of chasing approvals?\"\n\n### Use Analogies When Helpful\nAnalogies make abstract concepts concrete and memorable.\n\n### Pepper in Humor (When Appropriate)\nPuns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity.\n\n---\n\n## Page Structure Framework\n\n### Above the Fold\n\n**Headline**\n- Your single most important message\n- Communicate core value proposition\n- Specific > generic\n\n**Example formulas:**\n- \"{Achieve outcome} without {pain point}\"\n- \"The {category} for {audience}\"\n- \"Never {unpleasant event} again\"\n- \"{Question highlighting main pain point}\"\n\n**For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md)\n\n**For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md)\n\n**Subheadline**\n- Expands on headline\n- Adds specificity\n- 1-2 sentences max\n\n**Primary CTA**\n- Action-oriented button text\n- Communicate what they get: \"Start Free Trial\" > \"Sign Up\"\n\n### Core Sections\n\n| Section | Purpose |\n|---------|---------|\n| Social Proof | Build credibility (logos, stats, testimonials) |\n| Problem/Pain | Show you understand their situation |\n| Solution/Benefits | Connect to outcomes (3-5 key benefits) |\n| How It Works | Reduce perceived complexity (3-4 steps) |\n| Objection Handling | FAQ, comparisons, guarantees |\n| Final CTA | Recap value, repeat CTA, risk reversal |\n\n**For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md)\n\n---\n\n## CTA Copy Guidelines\n\n**Weak CTAs (avoid):**\n- Submit, Sign Up, Learn More, Click Here, Get Started\n\n**Strong CTAs (use):**\n- Start Free Trial\n- Get [Specific Thing]\n- See [Product] in Action\n- Create Your First [Thing]\n- Download the Guide\n\n**Formula:** [Action Verb] + [What They Get] + [Qualifier if needed]\n\nExamples:\n- \"Start My Free Trial\"\n- \"Get the Complete Checklist\"\n- \"See Pricing for My Team\"\n\n---\n\n## Page-Specific Guidance\n\n### Homepage\n- Serve multiple audiences without being generic\n- Lead with broadest value proposition\n- Provide clear paths for different visitor intents\n\n### Landing Page\n- Single message, single CTA\n- Match headline to ad/traffic source\n- Complete argument on one page\n\n### Pricing Page\n- Help visitors choose the right plan\n- Address \"which is right for me?\" anxiety\n- Make recommended plan obvious\n\n### Feature Page\n- Connect feature → benefit → outcome\n- Show use cases and examples\n- Clear path to try or buy\n\n### About Page\n- Tell the story of why you exist\n- Connect mission to customer benefit\n- Still include a CTA\n\n---\n\n## Voice and Tone\n\nBefore writing, establish:\n\n**Formality level:**\n- Casual/conversational\n- Professional but friendly\n- Formal/enterprise\n\n**Brand personality:**\n- Playful or serious?\n- Bold or understated?\n- Technical or accessible?\n\nMaintain consistency, but adjust intensity:\n- Headlines can be bolder\n- Body copy should be clearer\n- CTAs should be action-oriented\n\n---\n\n## Output Format\n\nWhen writing copy, provide:\n\n### Page Copy\nOrganized by section:\n- Headline, Subheadline, CTA\n- Section headers and body copy\n- Secondary CTAs\n\n### Annotations\nFor key elements, explain:\n- Why you made this choice\n- What principle it applies\n\n### Alternatives\nFor headlines and CTAs, provide 2-3 options:\n- Option A: [copy] — [rationale]\n- Option B: [copy] — [rationale]\n\n### Meta Content (if relevant)\n- Page title (for SEO)\n- Meta description\n\n---\n\n## Related Skills\n\n- **copy-editing**: For polishing existing copy (use after your draft)\n- **cro**: If page structure/strategy needs work, not just copy\n- **emails**: For email copywriting\n- **popups**: For popup and modal copy\n- **ab-testing**: To test copy variations\n","frontmatter":{"name":"copywriting","description":"When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or product pages. Also use when the user says \"write copy for,\" \"improve this copy,\" \"rewrite this page,\" \"marketing copy,\" \"headline help,\" \"CTA copy,\" \"value proposition,\" \"tagline,\" \"subheadline,\" \"hero section copy,\" \"above the fold,\" \"this copy is weak,\" \"make this more compelling,\" or \"help me describe my product.\" Use this whenever someone is working on website text that needs to persuade or convert. For email copy, see emails. For popup copy, see popups. For editing existing copy, see copy-editing. For the offer underneath the copy (bonuses, guarantees, value framing), see offers.","metadata":{"version":"2.0.1"}},"isInternal":false,"tokens":1761,"sizeBytes":7627},{"name":"best-practices.md","path":".agents/skills/create-skill/references/best-practices.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/best-practices.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/create-skill/references/best-practices.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/best-practices.md)","tokens":300,"sizeBytes":234},{"name":"examples.md","path":".agents/skills/create-skill/references/examples.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/examples.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/create-skill/references/examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/examples.md)","tokens":300,"sizeBytes":222},{"name":"progressive-disclosure.md","path":".agents/skills/create-skill/references/progressive-disclosure.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/progressive-disclosure.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/create-skill/references/progressive-disclosure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/progressive-disclosure.md)","tokens":300,"sizeBytes":250},{"name":"skill-structure.md","path":".agents/skills/create-skill/references/skill-structure.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/skill-structure.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/create-skill/references/skill-structure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/skill-structure.md)","tokens":300,"sizeBytes":236},{"name":"SKILL.md","path":".agents/skills/create-skill/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/SKILL.md","title":"create-skill","category":"anthropic-skill","format":"markdown","content":"---\nname: create-skill\ndescription: Guide for creating effective skills following best practices. Use when creating or updating skills that extend agent capabilities.\n---\n\n# Create Skill\n\nGuide for creating effective skills that extend agent capabilities with specialized knowledge, workflows, and tool integrations.\n\n## About Skills\n\nSkills are modular, self-contained packages that extend agent capabilities by providing specialized knowledge, workflows, and tools. Think of them as \"onboarding guides\" for specific domains or tasks.\n\n### What Skills Provide\n\n1. Specialized workflows - Multi-step procedures for specific domains\n2. Tool integrations - Instructions for working with specific file formats or APIs\n3. Domain expertise - Company-specific knowledge, schemas, business logic\n4. Bundled resources - Scripts, references, and assets for complex and repetitive tasks\n\n## Progressive Disclosure Principle\n\n**The 200-line rule is critical.** SKILL.md must be under 200 lines. If you need more, split content into `references/` files.\n\n### Three-Level Loading System\n\n1. **Metadata (name + description)** - Always in context (~100 words)\n2. **SKILL.md body** - When skill triggers (<200 lines, ideally <500 lines for optimal performance)\n3. **Bundled resources** - As needed by agent (unlimited)\n\n### Why Progressive Disclosure Matters\n\n- 85% reduction in initial context load\n- Activation times drop from 500ms+ to under 100ms\n- Agent loads only what's needed, when it's needed\n- Skills remain maintainable and focused\n\n## Skill Structure\n\n```\nskill-name/\n├── SKILL.md (required, <200 lines)\n│   ├── YAML frontmatter metadata (required)\n│   │   ├── name: (required)\n│   │   └── description: (required)\n│   └── Markdown instructions (required)\n└── Bundled Resources (optional)\n    ├── scripts/          - Executable code\n    ├── references/       - Documentation loaded as needed\n    └── assets/           - Files used in output\n```\n\n## Core Principles\n\n### Concise is Key\n\nThe context window is a shared resource. Your skill shares it with everything else the agent needs. Be concise and challenge each piece of information:\n- Does the agent really need this explanation?\n- Can I assume the agent knows this?\n- Does this paragraph justify its token cost?\n\n### Set Appropriate Degrees of Freedom\n\n- **High freedom**: Text-based instructions for multiple valid approaches\n- **Medium freedom**: Pseudocode or scripts with parameters\n- **Low freedom**: Specific scripts with few/no parameters for fragile operations\n\n### Test with All Models\n\nSkills act as additions to models, so effectiveness depends on the underlying model. Test your skill with all models you plan to use it with.\n\n## References\n\nFor detailed guidance, see:\n- `references/progressive-disclosure.md` - 200-line rule and references pattern\n- `references/skill-structure.md` - SKILL.md format and frontmatter details\n- `references/examples.md` - Good skill examples\n- `references/best-practices.md` - Comprehensive best practices guide\n","frontmatter":{"name":"create-skill","description":"Guide for creating effective skills following best practices. Use when creating or updating skills that extend agent capabilities."},"isInternal":false,"tokens":645,"sizeBytes":3074},{"name":"SKILL.md","path":".agents/skills/history-compression/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/history-compression/SKILL.md","title":"history-compression","category":"anthropic-skill","format":"markdown","content":"---\nname: history-compression\ndescription: How stagewise's agent history compression pipeline works — boundary selection, recency bias, chained compressions, and the SQLite-backed test harness for replaying real compressions in LLM playgrounds. Use when debugging, tuning, or extending history compression, when investigating context-window overflow, or when the user wants to probe compression quality against real chat histories.\n---\n\n# History Compression\n\nStagewise summarizes long agent histories into a single briefing stored on a \"boundary\" message. Everything before the boundary is replaced by the briefing; everything after stays verbatim. Recency bias baked into both boundary math + LLM prompt.\n\n## Key files\n\nAll paths are repo-root-relative.\n\n- `apps/browser/src/backend/agents/shared/base-agent/base-agent.ts` — trigger + boundary logic (`compressHistoryInternal`, ~L1898; trigger check in `handlePostStep` ~L2208).\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/index.ts` — model cascade + `generateSimpleCompressedHistory`.\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/prompt.ts` — `COMPRESSION_SYSTEM_PROMPT`, `COMPRESSION_TARGET_CHARS = 30_000`, `buildCompressionUserMessage` (dynamic budget hint).\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/serialization.ts` — `convertAgentMessagesToCompactMessageHistoryString`, `estimateMessageTokens`.\n- `scripts/experiments/extract-compression-test-data.ts` — SQLite → playground-ready per-compression bundles.\n\n## Trigger\n\nAfter every step → `handlePostStep` checks:\n\n`usedTokens > min(compactionThreshold × contextWindow, 200k)`\n\n- `compactionThreshold` default **0.65**; chat agent overrides to **0.5**.\n- `200k` hard cap (`HISTORY_COMPRESSION_HARD_CAP_TOKENS`) = 1M-ctx models trigger at the same absolute count as a 200k-context model running near its full window.\n- Runs via `void` (async, non-blocking). Guarded by `_isCompressingHistory` flag → no concurrent runs.\n- Silent failure — agent keeps going, context overflow later surfaces normal model error.\n\n## Boundary selection (`compressHistoryInternal`)\n\nKept-budget = `min(0.2 × contextWindow, 40k tokens)` (`KEPT_BUDGET_FRACTION`, `KEPT_BUDGET_HARD_CAP_TOKENS`).\nPreferred floor = `max(5, config.minUncompressedMessages ?? 10)`.\n\nWalk backward from history end:\n\n1. Accumulate `estimateMessageTokens(msg)` until next msg would bust budget → boundary there.\n2. Else stop once kept-count ≥ floor.\n3. Edge: single last msg > budget → keep just that one, warn.\n4. `boundary < 1` → nothing to compress, skip.\n\nThen: `messagesToCompact = history.slice(0, boundary)` → compress → write result to `history[boundary].metadata.compressedHistory`.\n\n### Token estimation quirks\n\n`estimateMessageTokens` = `ceil(chars / 4)`. Includes:\n\n- Text parts.\n- Tool-call `toolName` + JSON-stringified `input` + `output`.\n- Metadata overhead: env-snapshot, compressedHistory, mentions, attachments.\n- **`PER_MESSAGE_OVERHEAD_CHARS = 400`** flat — accounts for XML wrappers/role tags the pipeline injects but aren't in `parts`. Without it, budget walk under-counts → compression triggers too late.\n\n## Chained compressions\n\nWhen `messagesToCompact` already contains a prior `compressedHistory`:\n\n- Serializer (`convertAgentMessagesToCompactMessageHistoryString`) walks **backward** and **stops at first `compressedHistory` it finds**, emitting it as `<previous-chat-history>...</previous-chat-history>`. Older raw messages never re-serialized.\n- `buildCompressionUserMessage` reads prior briefing length → injects ratio-bucketed budget hint:\n  - `<60%` target → \"incorporate verbatim, do NOT shorten\".\n  - `60–85%` → \"light condensation to oldest sections\".\n  - `≥85%` → \"condense oldest fully-resolved sections\".\n- Prompt mandates: keep every `##` heading, shorten **oldest** sections only, preserve all `[](path:...)` links + user decisions + outcomes verbatim. Recent sections untouched.\n\n→ Chain is bounded: each round re-absorbs prior briefing under the same `30k` target.\n\n## Serialization format\n\nInput to LLM is XML-ish:\n\n- `<user>` — text + `[attached: ...]`, `[mentioned: ...]` metadata annotations.\n- `<assistant>` — text + one-liner tool markers: `[read: path]`, `[edited: path (N edits)]`, `[shell: label → ✓ / exit N / timed out]`, `[lint: paths → clean / N errors, M warnings]`, `[asked user: title → field: answer; ...]`, `[searched: \"query\"]`, `[created: path]`, `[wrote: path]`.\n- `<previous-chat-history>` — inlined prior briefing (see above).\n- Error state on any tool → `✗ <msg>` suffix.\n- Unknown tool types → `[tool-xxx]` generic marker (never silently dropped).\n\n## Prompt design (`apps/browser/src/backend/agents/shared/base-agent/history-compression/prompt.ts`)\n\n- Target **30k chars soft** (\"goal, not ceiling — longer > losing detail\").\n- 2nd-person for agent, 3rd-person for user.\n- `##` headings per topic, flowing prose inside. No bullets/tables/code blocks.\n- Recency bias: old resolved = 2–4 sentences; recent/active = full detail ending with current status.\n- MUST preserve verbatim: `[](path:...)` links, markdown links, user decisions/preferences/constraints, color values, directory structures, config.\n- Output plain markdown. **Never emit `<previous-chat-history>` or any XML wrapper** in output.\n\n## Model cascade (`apps/browser/src/backend/agents/shared/base-agent/history-compression/index.ts`)\n\n1. `gemini-3.1-flash-lite` → 2. `gpt-5.4-nano` → 3. `claude-haiku-4.5`.\n\n- Each 30s abort timeout, `temperature: 0.1`, `maxOutputTokens: 20000`.\n- Min valid output: 30 chars (shorter → fallback).\n- Final fallback: active chat model (only if not already tried).\n- All fail → throws; caller (`compressHistoryInternal`) logs + reports, agent continues uncompressed.\n\n## Tuning knobs\n\n| Knob | Where | Default | Effect |\n|---|---|---|---|\n| `compactionThreshold` | `config.historyCompressionThreshold` | 0.65 (chat: 0.5) | Trigger fraction of ctx window |\n| `HISTORY_COMPRESSION_HARD_CAP_TOKENS` | `base-agent.ts` const | 200_000 | Absolute trigger cap |\n| `KEPT_BUDGET_FRACTION` | `base-agent.ts` const | 0.2 | Fraction kept uncompressed |\n| `KEPT_BUDGET_HARD_CAP_TOKENS` | `base-agent.ts` const | 40_000 | Absolute kept cap |\n| `minUncompressedMessages` | `config` | 10 | Floor on kept msg count |\n| `COMPRESSION_TARGET_CHARS` | `prompt.ts` const | 30_000 | Soft briefing size target |\n| `HISTORY_COMPRESSION_TIMEOUT_MS` | `index.ts` const | 30_000 | Per-model attempt timeout |\n| `HISTORY_COMPRESSION_MODELS` | `index.ts` const | 3-model cascade | Compression model order |\n| `PER_MESSAGE_OVERHEAD_CHARS` | `serialization.ts` | 400 | Metadata overhead fudge |\n\n**Invariant:** kept budget < compression trigger (else nothing ever compresses).\n\n## Test harness (`scripts/experiments/extract-compression-test-data.ts`)\n\nReplays every real compression from local stagewise SQLite into playground-ready bundles.\n\n```bash\nnpx tsx scripts/experiments/extract-compression-test-data.ts --channel prerelease\nnpx tsx scripts/experiments/extract-compression-test-data.ts --channel dev --min-messages 10\n```\n\nChannels map to `<appData>/{stagewise | stagewise-prerelease | stagewise-dev}/stagewise/agents/instances.sqlite`.\n\nPer chat, for each boundary message (every real compression event):\n\n- Slices `messages[0..boundary)`.\n- Runs **real** `convertAgentMessagesToCompactMessageHistoryString` + `buildCompressionUserMessage` (imported from app source → fidelity guaranteed).\n- Writes to `experiments-data/history-compression/<channel>/NNN-title/compression-NNN/`:\n  - `system-prompt.md` — static prompt.\n  - `user-message.md` — dynamic user msg with budget hint.\n  - `compact-history.xml` — raw serialized input.\n  - `actual-output.md` — what the real in-app LLM produced.\n  - `metadata.json` — indices, char counts, prev-tag leak check.\n\n→ Paste system + user into AI Studio/Claude → diff against `actual-output.md`. Covers full chain (1st → Nth compression) so chained-compression drift is testable.\n\n## Common tasks\n\n- **\"Why didn't compression trigger?\"** → check `usedTokens` vs trigger formula; verify `compactionThreshold ≥ 0`; check `_isCompressingHistory` not stuck.\n- **\"Compression is too aggressive/lossy\"** → bump `COMPRESSION_TARGET_CHARS`; lower `compactionThreshold` so it triggers earlier with smaller inputs.\n- **\"Too few kept messages after compression\"** → raise `minUncompressedMessages` or `KEPT_BUDGET_FRACTION` (but keep < trigger).\n- **\"Output leaks `<previous-chat-history>` tags\"** → check `metadata.json` `actualOutputIncludesPreviousTag`; prompt already forbids it, likely model regression → bump cascade order.\n- **\"Boundary drift after compression\"** → `compressHistoryInternal` re-finds boundary by `id` after LLM round-trip (user may have undone messages mid-compression); missing id → silent skip + warn.\n","frontmatter":{"name":"history-compression","description":"How stagewise's agent history compression pipeline works — boundary selection, recency bias, chained compressions, and the SQLite-backed test harness for replaying real compressions in LLM playgrounds. Use when debugging, tuning, or extending history compression, when investigating context-window overflow, or when the user wants to probe compression quality against real chat histories."},"isInternal":false,"tokens":2173,"sizeBytes":8963},{"name":"edge-cases.md","path":".agents/skills/karton-best-practices/references/edge-cases.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/edge-cases.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/edge-cases.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/edge-cases.md)","tokens":300,"sizeBytes":244},{"name":"re-render-prevention.md","path":".agents/skills/karton-best-practices/references/re-render-prevention.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/re-render-prevention.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/re-render-prevention.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/re-render-prevention.md)","tokens":300,"sizeBytes":264},{"name":"selector-patterns.md","path":".agents/skills/karton-best-practices/references/selector-patterns.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/selector-patterns.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/selector-patterns.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/selector-patterns.md)","tokens":300,"sizeBytes":258},{"name":"state-update-model.md","path":".agents/skills/karton-best-practices/references/state-update-model.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/state-update-model.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/state-update-model.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/state-update-model.md)","tokens":300,"sizeBytes":260},{"name":"SKILL.md","path":".agents/skills/karton-best-practices/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/SKILL.md","title":"karton-best-practices","category":"anthropic-skill","format":"markdown","content":"---\nname: karton-best-practices\ndescription: Performance-focused guidelines for writing React code that consumes Karton state. Use when creating or reviewing components that use useKartonState, useKartonProcedure, useComparingSelector, or any Karton React hooks. Covers selector patterns, re-render prevention, structural sharing, and edge cases.\n---\n\n# Karton React Best Practices\n\nPerformance guidelines for React components consuming Karton state. Karton uses Immer internally — understanding its structural sharing model is essential for writing efficient selectors.\n\n## Core Mental Model\n\nKarton state is **deeply frozen** (Immer `freeze(state, true)`). Updates use `produce()` which creates **new references only for changed paths** — unchanged subtrees keep the same reference. `useSyncExternalStore` uses **`Object.is` (reference equality)** to decide re-renders.\n\n**The golden rule:** Your selector's return value must have a **stable reference** when nothing relevant changed. If it doesn't, wrap it with `useComparingSelector`.\n\n## Quick Rules\n\n### Selectors\n\n```typescript\n// GOOD: Select a primitive — stable when unchanged\nconst isWorking = useKartonState((s) => s.agents.instances[id]?.state.isWorking ?? false);\n\n// GOOD: Select a frozen subtree — Immer preserves the reference\nconst agent = useKartonState((s) => s.agents.instances[id]);\n\n// BAD: Creates a new object every call — always re-renders\nconst data = useKartonState((s) => ({\n  name: s.agents.instances[id]?.name,\n  status: s.agents.instances[id]?.state.isWorking,\n}));\n\n// FIX: Wrap with useComparingSelector (default: shallow equality)\nconst data = useKartonState(\n  useComparingSelector((s) => ({\n    name: s.agents.instances[id]?.name,\n    status: s.agents.instances[id]?.state.isWorking,\n  })),\n);\n\n// BAD: Object.keys/values/entries always creates a new array\nconst ids = useKartonState((s) => Object.keys(s.agents.instances));\n\n// FIX: shallow comparison handles arrays element-by-element\nconst ids = useKartonState(\n  useComparingSelector((s) => Object.keys(s.agents.instances)),\n);\n```\n\n### When to Use `useComparingSelector`\n\n| Selector returns | Needs `useComparingSelector`? |\n|---|---|\n| Primitive (boolean, string, number) | No |\n| Existing frozen subtree reference | No |\n| New object/array created in selector | **Yes** (use `shallow`) |\n| Deeply nested new structures | **Yes** (use `deep`) |\n\n### Procedures\n\n```typescript\n// GOOD: Procedures are stable proxies — select once, use freely\nconst createAgent = useKartonProcedure((p) => p.agents.create);\n\n// GOOD: Store in ref for use in callbacks to prevent effect re-triggers\nconst createAgentRef = useRef(createAgent);\ncreateAgentRef.current = createAgent;\n```\n\n### Derived State\n\n```typescript\n// GOOD: useMemo to compute derived values from selected state\nconst agent = useKartonState((s) => s.agents.instances[id]);\nconst displayName = useMemo(() => agent?.name ?? 'Unnamed', [agent]);\n\n// BAD: Expensive computation inside selector (runs on every state change)\nconst sorted = useKartonState((s) =>\n  Object.values(s.agents.instances).sort((a, b) => a.name.localeCompare(b.name)),\n);\n\n// FIX: Select raw data, compute outside\nconst instances = useKartonState(\n  useComparingSelector((s) => s.agents.instances),\n);\nconst sorted = useMemo(\n  () => Object.values(instances).sort((a, b) => a.name.localeCompare(b.name)),\n  [instances],\n);\n```\n\n## Key Pitfalls\n\n1. **Every `useKartonState` call runs its selector on every state change** — keep selectors cheap\n2. **Selectors that create new objects/arrays always cause re-renders** unless wrapped with `useComparingSelector`\n3. **`useComparingSelector` with `deep` is expensive** — prefer `shallow` or restructure state\n4. **Selecting the full state** (`useKartonState()` with no selector) re-renders on any change\n5. **Inline selector functions recreate on every render** — this is fine because `useSyncExternalStore` compares snapshot values, not function references\n6. **Connection changes (`onOpen`/`onClose`) trigger all listeners** — components using `useKartonState` may re-render briefly on reconnect even if state didn't change\n\n## References\n\nFor detailed analysis, see:\n- `references/state-update-model.md` — How Immer structural sharing affects object references\n- `references/selector-patterns.md` — Comprehensive selector patterns with examples\n- `references/re-render-prevention.md` — useComparingSelector internals and memoization strategies\n- `references/edge-cases.md` — Arrays, Maps, conditional selection, and reconnection behavior\n","frontmatter":{"name":"karton-best-practices","description":"Performance-focused guidelines for writing React code that consumes Karton state. Use when creating or reviewing components that use useKartonState, useKartonProcedure, useComparingSelector, or any Karton React hooks. Covers selector patterns, re-render prevention, structural sharing, and edge cases."},"isInternal":false,"tokens":1060,"sizeBytes":4575},{"name":"agentic-prompts.md","path":".agents/skills/prompt-optimization/references/agentic-prompts.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/agentic-prompts.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/agentic-prompts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/agentic-prompts.md)","tokens":300,"sizeBytes":250},{"name":"anti-patterns-and-checklist.md","path":".agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md)","tokens":300,"sizeBytes":274},{"name":"clarity-and-structure.md","path":".agents/skills/prompt-optimization/references/clarity-and-structure.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/clarity-and-structure.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/clarity-and-structure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/clarity-and-structure.md)","tokens":300,"sizeBytes":262},{"name":"compression-techniques.md","path":".agents/skills/prompt-optimization/references/compression-techniques.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/compression-techniques.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/compression-techniques.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/compression-techniques.md)","tokens":300,"sizeBytes":264},{"name":"output-control.md","path":".agents/skills/prompt-optimization/references/output-control.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/output-control.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/output-control.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/output-control.md)","tokens":300,"sizeBytes":248},{"name":"safety-and-security.md","path":".agents/skills/prompt-optimization/references/safety-and-security.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/safety-and-security.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/safety-and-security.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/safety-and-security.md)","tokens":300,"sizeBytes":258},{"name":"workflows.md","path":".agents/skills/prompt-optimization/references/workflows.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/workflows.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/workflows.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/workflows.md)","tokens":300,"sizeBytes":238},{"name":"SKILL.md","path":".agents/skills/prompt-optimization/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/SKILL.md","title":"prompt-optimization","category":"anthropic-skill","format":"markdown","content":"---\nname: prompt-optimization\ndescription: Guides building, reviewing, and optimizing system prompts and prompt templates for LLMs. Use when creating system prompts, writing prompt templates, optimizing prompt structure, reducing prompt token usage, compressing prompts, improving prompt clarity, reviewing prompts for safety and bias, or making prompts more token-efficient. Also use when the user says \"write a prompt,\" \"optimize this prompt,\" \"system prompt,\" \"prompt engineering,\" \"make this prompt better,\" \"reduce tokens,\" or \"compress this prompt.\"\n---\n\n# Prompt Optimization\n\nBuild effective, safe, and token-efficient system prompts for LLMs.\n\n## How to Use This Skill\n\n**Pick the workflow that matches the task, then follow it end-to-end:**\n\n| Task | Workflow | Reference |\n|------|----------|-----------|\n| Write a new prompt from scratch | **Create** workflow | `references/workflows.md` → Workflow 1 |\n| Review/audit an existing prompt | **Review** workflow | `references/workflows.md` → Workflow 2 |\n| Reduce token count of a working prompt | **Optimize** workflow | `references/workflows.md` → Workflow 3 |\n\nEach workflow references the specific detail pages below as needed. Do not read all references upfront — load them when the workflow step calls for them.\n\n## Core Principles\n\n1. **Clarity over cleverness** — Write prompts a new employee would follow without confusion\n2. **Positive framing** — Say what to do, not what to avoid\n3. **Structure with delimiters** — XML tags or consistent separators between content types\n4. **Progressive specificity** — Role → constraints → instructions → context → format → examples → input\n5. **Token economy** — Every token must earn its place; ≥1 constraint per 5–10 tokens\n6. **Safety by default** — Prevent injection, data leakage, and bias structurally\n\n## Prompt Architecture (ordering)\n\n```\n1. Identity / Role          — Who the model is (1–2 sentences)\n2. Core behavior rules      — Non-negotiable constraints (safety, tone)\n3. Task instructions        — What to do and how\n4. Context / Knowledge      — Domain data, schemas, reference docs\n5. Output format            — Structure, length, style requirements\n6. Examples (few-shot)      — 2–3 input/output pairs in <example> tags\n7. Dynamic input            — User content (always last, always delimited)\n```\n\n## Key Rules\n\n- **Delimit user input** — Wrap in tags like `<user_input>`; never interpolate raw\n- **Show, don't just tell** — Few-shot examples beat format descriptions\n- **Match prompt style to output style** — Markdown in prompt → markdown out; prose → prose\n- **Put long documents first** — Reference data above instructions (30%+ quality gain)\n- **Quantify, don't qualify** — \"≤100 words\" not \"keep it short\"\n- **Imperative voice** — \"Respond in JSON\" not \"You should format your response as JSON\"\n- **Test adversarially** — Injection, edge cases, ambiguous inputs before shipping\n\n## Reference Index\n\nLoad these when a workflow step calls for them:\n\n| Reference | Contents |\n|-----------|----------|\n| `references/workflows.md` | End-to-end workflows for create, review, and optimize tasks |\n| `references/clarity-and-structure.md` | XML tags, delimiters, role prompting, long-context patterns |\n| `references/output-control.md` | Format steering, verbosity control, few-shot examples |\n| `references/safety-and-security.md` | Injection prevention, bias mitigation, data leakage, red-teaming |\n| `references/compression-techniques.md` | High-density writing, token pruning, compression methods, density test |\n| `references/agentic-prompts.md` | Tool use, thinking/reasoning, state tracking, subagent orchestration |\n| `references/anti-patterns-and-checklist.md` | 8 anti-patterns, design checklist, evaluation metrics |\n","frontmatter":{"name":"prompt-optimization","description":"Guides building, reviewing, and optimizing system prompts and prompt templates for LLMs. Use when creating system prompts, writing prompt templates, optimizing prompt structure, reducing prompt token usage, compressing prompts, improving prompt clarity, reviewing prompts for safety and bias, or making prompts more token-efficient. Also use when the user says \"write a prompt,\" \"optimize this prompt,\" \"system prompt,\" \"prompt engineering,\" \"make this prompt better,\" \"reduce tokens,\" or \"compress this prompt.\""},"isInternal":false,"tokens":844,"sizeBytes":3826},{"name":"components-reference.md","path":".agents/skills/stage-ui-design-system/components-reference.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/stage-ui-design-system/components-reference.md","title":"Stage-ui-design-system Skill","category":"anthropic-skill","format":"markdown","content":"# Stage-ui-design-system Skill\n\nPath: `.agents/skills/stage-ui-design-system/components-reference.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/stage-ui-design-system/components-reference.md)","tokens":300,"sizeBytes":256},{"name":"SKILL.md","path":".agents/skills/stage-ui-design-system/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/stage-ui-design-system/SKILL.md","title":"stage-ui-design-system","category":"anthropic-skill","format":"markdown","content":"---\nname: stage-ui-design-system\ndescription: Stagewise UI theming, design tokens, derived utilities, and component library reference. Use when creating, editing, or reviewing UI in apps/browser, implementing new screens or components, or styling with Tailwind in the stagewise codebase.\n---\n\n# Stage UI Design System\n\nAll UI in `apps/browser/` is built on `@stagewise/stage-ui` — a shared design system using **OKLCH colors**, **Tailwind CSS 4**, and **Base UI (React)** primitives.\n\n## Importing Styles & Components\n\n**Styles** — import the CSS entry point (already done in the browser app):\n```css\n@import \"../../../../../packages/stage-ui/src/styles/index.css\";\n```\n\n**Components** — import via package alias:\n```tsx\nimport { Button } from '@stagewise/stage-ui/components/button';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@stagewise/stage-ui/components/tooltip';\n```\n\n**Utility function** — `cn()` merges Tailwind classes (clsx + twMerge):\n```tsx\nimport { cn } from '@stagewise/stage-ui/lib/utils';\n```\n\n## Color System (OKLCH)\n\nAll colors use OKLCH with a shared hue `--H: 265` (purple). The palette is defined in `palette.css`.\n\n**Base colors** (`--color-base-50` to `--color-base-950`): Low-chroma, nearly grayscale but subtly tinted. Used for 95%+ of the app.\n\n**Primary colors** (`--color-primary-50` to `--color-primary-950`): High-chroma, saturated. Used for CTAs, links, active states.\n\n**Semantic colors**: `success` (green), `error` (red), `warning` (yellow), `info` (blue) — each has `-background`, `-foreground`, `-solid` variants that auto-switch with light/dark.\n\n## Theme Tokens\n\nDefined in `theme.css`, tokens auto-switch between light and dark mode via `prefers-color-scheme`.\n\n### Backgrounds\n\n| Tailwind class | Token | Usage |\n|---|---|---|\n| `bg-app-background` | `--color-app-background` | Outermost app chrome |\n| `bg-background` | `--color-background` | Main content areas, cards, panels |\n| `bg-surface-1` | `--color-surface-1` | First elevation above background |\n| `bg-surface-2` | `--color-surface-2` | Second elevation (nested elements) |\n| `bg-surface-3` | `--color-surface-3` | Third elevation (deeply nested) |\n| `bg-surface-tinted` | `--color-surface-tinted` | Primary-tinted highlight surface |\n| `bg-overlay` | `--color-overlay` | Modal/dialog backdrops (use with opacity) |\n\n### Text\n\n| Tailwind class | Usage |\n|---|---|\n| `text-foreground` | Primary readable text |\n| `text-muted-foreground` | Secondary/less important text |\n| `text-subtle-foreground` | Hints, placeholders, disabled text |\n| `text-primary-foreground` | Accent text (links, highlights) |\n| `text-solid-foreground` | Text on solid/primary backgrounds |\n\n### Borders\n\n| Tailwind class | Usage |\n|---|---|\n| `border-border` | Regular borders |\n| `border-border-subtle` | Subtle/lighter borders |\n\n### Primary\n\n| Tailwind class | Usage |\n|---|---|\n| `bg-primary-solid` | Solid primary fill (buttons, badges) |\n\n### Semantic\n\nPattern: `(bg|text)-{success|error|warning|info}-{background|foreground|solid}`\n\n## Elevation & Shadows\n\n**Light mode**: Use `bg-background` for cards. Depth comes from shadows.\n**Dark mode**: Use escalating surfaces based on nesting depth:\n- Element on `bg-background` → use `bg-surface-1`\n- Element on `bg-surface-1` → use `bg-surface-2`\n- Element on `bg-surface-2` → use `bg-surface-3`\n\nShadow utilities (defined in `shadows.css`):\n- `shadow-elevation-1` — subtle card shadow\n- `shadow-elevation-2` — prominent popup/modal shadow\n\n## Derived Utilities\n\nThese auto-derive border/hover/active colors from an element's background. **Requires the element to have a `bg-*` class set.**\n\n### Borders (derived from background)\n- `border-derived-subtle` — light border\n- `border-derived` — regular border\n- `border-derived-strong` — strong border\n- `border-derived-lighter-subtle` / `border-derived-lighter` — explicitly lighter\n\nSame pattern for rings: `ring-derived-subtle`, `ring-derived`, `ring-derived-strong`\n\n### Hover & Active States\n- `hover:bg-hover-derived` — hover background\n- `active:bg-active-derived` — active/pressed background\n- `hover:text-hover-derived` — hover text\n- `active:text-active-derived` — active text\n\n### Explicit Lighten/Darken (ignores dark/light mode)\n- `bg-derived-lighter` / `bg-derived-lighter-subtle`\n- `bg-derived-darker` / `bg-derived-darker-subtle`\n- `text-derived-lighter` / `text-derived-lighter-subtle`\n\n## Animations\n\nDefined in `animations.css`. Use as Tailwind classes:\n\n| Class | Effect |\n|---|---|\n| `animate-progress-bar-indicator` | Repeating slide for progress bars |\n| `animate-skeleton-shimmer` | Loading shimmer for skeletons |\n| `animate-caret-blink` | Blinking caret for inputs |\n| `animate-icon-pulse` | Stroke-width pulse for icons |\n| `animate-pulse-full` | Full opacity pulse (0→1→0) |\n| `animate-text-pulse` | Muted↔foreground text pulse |\n| `animate-text-pulse-warning` | Foreground↔warning text pulse |\n| `shimmer-text` | Shimmering gradient text effect |\n| `shimmer-text-primary` | Primary-colored shimmer preset |\n| `shimmer-text-once` | One-shot shimmer that settles |\n\nShimmer config: `shimmer-duration-{ms}`, `shimmer-from-{color}`, `shimmer-to-{color}`\n\n## Component Patterns\n\nAll components follow these patterns:\n\n1. **Built on Base UI** (`@base-ui/react`) — unstyled React primitives\n2. **Variants via CVA** (`class-variance-authority`) — `variant` and `size` props\n3. **Class merging** via `cn()` — all accept `className` for overrides\n4. **Compound components** — e.g. `Dialog` + `DialogContent` + `DialogTitle`\n\n### Typical usage example\n\n```tsx\nimport { Button } from '@stagewise/stage-ui/components/button';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@stagewise/stage-ui/components/tooltip';\n\n<Tooltip>\n  <TooltipTrigger>\n    <Button variant=\"secondary\" size=\"sm\">Click me</Button>\n  </TooltipTrigger>\n  <TooltipContent side=\"top\">Helpful hint</TooltipContent>\n</Tooltip>\n```\n\n## Available Components\n\nFor detailed API and props of each component, see [components-reference.md](components-reference.md).\n\n| Component | Import path | Key props |\n|---|---|---|\n| **Button** | `components/button` | `variant`: primary, secondary, destructive, warning, success, ghost. `size`: xs, sm, md, lg, icon-2xs, icon-xs, icon-sm, icon-md |\n| **Input** | `components/input` | `size`: xs, sm, md. `debounce`: ms. Built on Base UI Input |\n| **Select** | `components/select` | `items`, `value`, `onValueChange`, `size`, `triggerVariant`: ghost/secondary, `multiple` |\n| **Checkbox** | `components/checkbox` | `size`: xs, sm, md. Built on Base UI Checkbox |\n| **Switch** | `components/switch` | `size`: xs, sm, md. Built on Base UI Switch |\n| **Radio** | `components/radio` | `RadioGroup` + `Radio` + `RadioLabel`. Built on Base UI Radio |\n| **Tabs** | `components/tabs` | `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent` |\n| **Dialog** | `components/dialog` | `Dialog`, `DialogTrigger`, `DialogContent`, `DialogTitle`, `DialogDescription`, `DialogClose`, `DialogHeader`, `DialogFooter` |\n| **Popover** | `components/popover` | `Popover`, `PopoverTrigger`, `PopoverContent`, `PopoverTitle`, `PopoverDescription`, `PopoverClose`, `PopoverFooter` |\n| **Tooltip** | `components/tooltip` | `Tooltip`, `TooltipTrigger`, `TooltipContent`, `TooltipProvider` |\n| **Menu** | `components/menu` | `Menu`, `MenuTrigger`, `MenuContent`, `MenuItem`, `MenuSeparator`, `MenuSubmenu`, `MenuSubmenuTrigger`, `MenuSubmenuContent` |\n| **Collapsible** | `components/collapsible` | `Collapsible`, `CollapsibleTrigger` (size: default/condensed), `CollapsibleContent` |\n| **Progress** | `components/progress` | `Progress`, `ProgressTrack` (variant: normal/warning, busy, slim), `ProgressLabel`, `ProgressValue` |\n| **Skeleton** | `components/skeleton` | `variant`: rectangle, circle, text. `size`: xs–full. `animate`: boolean |\n| **Form** | `components/form` | `Form`, `FormFieldset`, `FormField`, `FormFieldLabel`, `FormFieldTitle`, `FormFieldDescription`, `FormFieldError`, `FormFieldSeparator` |\n| **Resizable** | `components/resizable` | `ResizablePanelGroup`, `ResizablePanel`, `ResizableHandle`. Built on react-resizable-panels |\n| **OverlayScrollbar** | `components/overlay-scrollbar` | Custom scrollbar wrapper |\n| **Toaster** | `components/toaster` | Toast notification system |\n| **Breadcrumb** | `components/breadcrumb` | Breadcrumb navigation |\n| **Combobox** | `components/combobox` | Combobox/autocomplete input |\n| **InputOtp** | `components/input-otp` | OTP code input |\n| **SearchableSelect** | `components/searchable-select` | Searchable dropdown select |\n| **SplitText** | `components/split-text` | Text splitting utility |\n| **PreviewCard** | `components/preview-card` | Card with preview content |\n| **LogoText** | `components/logo-text` | Stagewise logo text |\n\n## Quick Decision Guide\n\n**Picking a background:**\n- Top-level page → `bg-app-background`\n- Card/panel → `bg-background`\n- Nested element → escalate: `bg-surface-1` → `bg-surface-2` → `bg-surface-3`\n\n**Picking text color:**\n- Primary content → `text-foreground`\n- Secondary info → `text-muted-foreground`\n- Placeholder/disabled → `text-subtle-foreground`\n- Links/accents → `text-primary-foreground`\n\n**Borders & states (on elements with `bg-*`):**\n- Border: `border border-derived` or `border border-derived-subtle`\n- Hover: `hover:bg-hover-derived`\n- Active: `active:bg-active-derived`\n\n**Icons:** Use `lucide-react` or `nucleo-ui-fill-18` (project-specific icon set).\n\n## Storybook\n\nPreview components and color definitions:\n```bash\npnpm --filter stagewise storybook\n```\n","frontmatter":{"name":"stage-ui-design-system","description":"Stagewise UI theming, design tokens, derived utilities, and component library reference. Use when creating, editing, or reviewing UI in apps/browser, implementing new screens or components, or styling with Tailwind in the stagewise codebase."},"isInternal":false,"tokens":2502,"sizeBytes":9622},{"name":"AGENTS.md","path":".agents/skills/vercel-react-best-practices/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/AGENTS.md","title":"Vercel-react-best-practices Skill","category":"anthropic-skill","format":"markdown","content":"# Vercel-react-best-practices Skill\n\nPath: `.agents/skills/vercel-react-best-practices/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/AGENTS.md)","tokens":300,"sizeBytes":243},{"name":"metadata.json","path":".agents/skills/vercel-react-best-practices/metadata.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/metadata.json","title":"Vercel-react-best-practices Skill","category":"anthropic-skill","format":"json","content":"# Vercel-react-best-practices Skill\n\nPath: `.agents/skills/vercel-react-best-practices/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/metadata.json)","tokens":300,"sizeBytes":251},{"name":"README.md","path":".agents/skills/vercel-react-best-practices/README.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/README.md","title":"Vercel-react-best-practices Skill","category":"anthropic-skill","format":"markdown","content":"# Vercel-react-best-practices Skill\n\nPath: `.agents/skills/vercel-react-best-practices/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/README.md)","tokens":300,"sizeBytes":243},{"name":"_sections.md","path":".agents/skills/vercel-react-best-practices/rules/_sections.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/_sections.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/_sections.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/_sections.md)","tokens":300,"sizeBytes":239},{"name":"_template.md","path":".agents/skills/vercel-react-best-practices/rules/_template.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/_template.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/_template.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/_template.md)","tokens":300,"sizeBytes":239},{"name":"advanced-effect-event-deps.md","path":".agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md)","tokens":300,"sizeBytes":273},{"name":"advanced-event-handler-refs.md","path":".agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md)","tokens":300,"sizeBytes":275},{"name":"advanced-init-once.md","path":".agents/skills/vercel-react-best-practices/rules/advanced-init-once.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-init-once.md)","tokens":300,"sizeBytes":257},{"name":"advanced-use-latest.md","path":".agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/advanced-use-latest.md)","tokens":300,"sizeBytes":259},{"name":"async-api-routes.md","path":".agents/skills/vercel-react-best-practices/rules/async-api-routes.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-api-routes.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-api-routes.md)","tokens":300,"sizeBytes":253},{"name":"async-cheap-condition-before-await.md","path":".agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md)","tokens":300,"sizeBytes":289},{"name":"async-defer-await.md","path":".agents/skills/vercel-react-best-practices/rules/async-defer-await.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-defer-await.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-defer-await.md)","tokens":300,"sizeBytes":255},{"name":"async-dependencies.md","path":".agents/skills/vercel-react-best-practices/rules/async-dependencies.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-dependencies.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-dependencies.md)","tokens":300,"sizeBytes":257},{"name":"async-parallel.md","path":".agents/skills/vercel-react-best-practices/rules/async-parallel.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-parallel.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-parallel.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-parallel.md)","tokens":300,"sizeBytes":249},{"name":"async-suspense-boundaries.md","path":".agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md)","tokens":300,"sizeBytes":271},{"name":"bundle-analyzable-paths.md","path":".agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md)","tokens":300,"sizeBytes":267},{"name":"bundle-barrel-imports.md","path":".agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md)","tokens":300,"sizeBytes":263},{"name":"bundle-conditional.md","path":".agents/skills/vercel-react-best-practices/rules/bundle-conditional.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-conditional.md)","tokens":300,"sizeBytes":257},{"name":"bundle-defer-third-party.md","path":".agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md)","tokens":300,"sizeBytes":269},{"name":"bundle-dynamic-imports.md","path":".agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md)","tokens":300,"sizeBytes":265},{"name":"bundle-preload.md","path":".agents/skills/vercel-react-best-practices/rules/bundle-preload.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/bundle-preload.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/bundle-preload.md)","tokens":300,"sizeBytes":249},{"name":"client-event-listeners.md","path":".agents/skills/vercel-react-best-practices/rules/client-event-listeners.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-event-listeners.md)","tokens":300,"sizeBytes":265},{"name":"client-localstorage-schema.md","path":".agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-localstorage-schema.md)","tokens":300,"sizeBytes":273},{"name":"client-passive-event-listeners.md","path":".agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md)","tokens":300,"sizeBytes":281},{"name":"client-swr-dedup.md","path":".agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/client-swr-dedup.md)","tokens":300,"sizeBytes":253},{"name":"js-batch-dom-css.md","path":".agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-batch-dom-css.md)","tokens":300,"sizeBytes":253},{"name":"js-cache-function-results.md","path":".agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-function-results.md)","tokens":300,"sizeBytes":271},{"name":"js-cache-property-access.md","path":".agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-property-access.md)","tokens":300,"sizeBytes":269},{"name":"js-cache-storage.md","path":".agents/skills/vercel-react-best-practices/rules/js-cache-storage.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-cache-storage.md)","tokens":300,"sizeBytes":253},{"name":"js-combine-iterations.md","path":".agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-combine-iterations.md)","tokens":300,"sizeBytes":263},{"name":"js-early-exit.md","path":".agents/skills/vercel-react-best-practices/rules/js-early-exit.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-early-exit.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-early-exit.md)","tokens":300,"sizeBytes":247},{"name":"js-flatmap-filter.md","path":".agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-flatmap-filter.md)","tokens":300,"sizeBytes":255},{"name":"js-hoist-regexp.md","path":".agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-hoist-regexp.md)","tokens":300,"sizeBytes":251},{"name":"js-index-maps.md","path":".agents/skills/vercel-react-best-practices/rules/js-index-maps.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-index-maps.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-index-maps.md)","tokens":300,"sizeBytes":247},{"name":"js-length-check-first.md","path":".agents/skills/vercel-react-best-practices/rules/js-length-check-first.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-length-check-first.md)","tokens":300,"sizeBytes":263},{"name":"js-min-max-loop.md","path":".agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-min-max-loop.md)","tokens":300,"sizeBytes":251},{"name":"js-request-idle-callback.md","path":".agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-request-idle-callback.md)","tokens":300,"sizeBytes":269},{"name":"js-set-map-lookups.md","path":".agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-set-map-lookups.md)","tokens":300,"sizeBytes":257},{"name":"js-tosorted-immutable.md","path":".agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md)","tokens":300,"sizeBytes":263},{"name":"rendering-activity.md","path":".agents/skills/vercel-react-best-practices/rules/rendering-activity.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-activity.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-activity.md)","tokens":300,"sizeBytes":257},{"name":"rendering-animate-svg-wrapper.md","path":".agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md)","tokens":300,"sizeBytes":279},{"name":"rendering-conditional-render.md","path":".agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-conditional-render.md)","tokens":300,"sizeBytes":277},{"name":"rendering-content-visibility.md","path":".agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-content-visibility.md)","tokens":300,"sizeBytes":277},{"name":"rendering-hoist-jsx.md","path":".agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md)","tokens":300,"sizeBytes":259},{"name":"rendering-hydration-no-flicker.md","path":".agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md)","tokens":300,"sizeBytes":281},{"name":"rendering-hydration-suppress-warning.md","path":".agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md)","tokens":300,"sizeBytes":293},{"name":"rendering-resource-hints.md","path":".agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-resource-hints.md)","tokens":300,"sizeBytes":269},{"name":"rendering-script-defer-async.md","path":".agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md)","tokens":300,"sizeBytes":277},{"name":"rendering-svg-precision.md","path":".agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-svg-precision.md)","tokens":300,"sizeBytes":267},{"name":"rendering-usetransition-loading.md","path":".agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md)","tokens":300,"sizeBytes":283},{"name":"rerender-defer-reads.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-defer-reads.md)","tokens":300,"sizeBytes":261},{"name":"rerender-dependencies.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-dependencies.md)","tokens":300,"sizeBytes":263},{"name":"rerender-derived-state-no-effect.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md)","tokens":300,"sizeBytes":285},{"name":"rerender-derived-state.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-derived-state.md)","tokens":300,"sizeBytes":265},{"name":"rerender-functional-setstate.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md)","tokens":300,"sizeBytes":277},{"name":"rerender-lazy-state-init.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md)","tokens":300,"sizeBytes":269},{"name":"rerender-memo-with-default-value.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md)","tokens":300,"sizeBytes":285},{"name":"rerender-memo.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-memo.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-memo.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-memo.md)","tokens":300,"sizeBytes":247},{"name":"rerender-move-effect-to-event.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md)","tokens":300,"sizeBytes":279},{"name":"rerender-no-inline-components.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md)","tokens":300,"sizeBytes":279},{"name":"rerender-simple-expression-in-memo.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md)","tokens":300,"sizeBytes":289},{"name":"rerender-split-combined-hooks.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md)","tokens":300,"sizeBytes":279},{"name":"rerender-transitions.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-transitions.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-transitions.md)","tokens":300,"sizeBytes":261},{"name":"rerender-use-deferred-value.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md)","tokens":300,"sizeBytes":275},{"name":"rerender-use-ref-transient-values.md","path":".agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md)","tokens":300,"sizeBytes":287},{"name":"server-after-nonblocking.md","path":".agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-after-nonblocking.md)","tokens":300,"sizeBytes":269},{"name":"server-auth-actions.md","path":".agents/skills/vercel-react-best-practices/rules/server-auth-actions.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-auth-actions.md)","tokens":300,"sizeBytes":259},{"name":"server-cache-lru.md","path":".agents/skills/vercel-react-best-practices/rules/server-cache-lru.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-cache-lru.md)","tokens":300,"sizeBytes":253},{"name":"server-cache-react.md","path":".agents/skills/vercel-react-best-practices/rules/server-cache-react.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-cache-react.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-cache-react.md)","tokens":300,"sizeBytes":257},{"name":"server-dedup-props.md","path":".agents/skills/vercel-react-best-practices/rules/server-dedup-props.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-dedup-props.md)","tokens":300,"sizeBytes":257},{"name":"server-hoist-static-io.md","path":".agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-hoist-static-io.md)","tokens":300,"sizeBytes":265},{"name":"server-no-shared-module-state.md","path":".agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md)","tokens":300,"sizeBytes":279},{"name":"server-parallel-fetching.md","path":".agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-parallel-fetching.md)","tokens":300,"sizeBytes":269},{"name":"server-parallel-nested-fetching.md","path":".agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md)","tokens":300,"sizeBytes":283},{"name":"server-serialization.md","path":".agents/skills/vercel-react-best-practices/rules/server-serialization.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-serialization.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.agents/skills/vercel-react-best-practices/rules/server-serialization.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/rules/server-serialization.md)","tokens":300,"sizeBytes":261},{"name":"SKILL.md","path":".agents/skills/vercel-react-best-practices/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/SKILL.md","title":"vercel-react-best-practices","category":"anthropic-skill","format":"markdown","content":"---\nname: vercel-react-best-practices\ndescription: React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.\nlicense: MIT\nmetadata:\n  author: vercel\n  version: \"1.0.0\"\n---\n\n# Vercel React Best Practices\n\nComprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains 70 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.\n\n## When to Apply\n\nReference these guidelines when:\n- Writing new React components or Next.js pages\n- Implementing data fetching (client or server-side)\n- Reviewing code for performance issues\n- Refactoring existing React/Next.js code\n- Optimizing bundle size or load times\n\n## Rule Categories by Priority\n\n| Priority | Category | Impact | Prefix |\n|----------|----------|--------|--------|\n| 1 | Eliminating Waterfalls | CRITICAL | `async-` |\n| 2 | Bundle Size Optimization | CRITICAL | `bundle-` |\n| 3 | Server-Side Performance | HIGH | `server-` |\n| 4 | Client-Side Data Fetching | MEDIUM-HIGH | `client-` |\n| 5 | Re-render Optimization | MEDIUM | `rerender-` |\n| 6 | Rendering Performance | MEDIUM | `rendering-` |\n| 7 | JavaScript Performance | LOW-MEDIUM | `js-` |\n| 8 | Advanced Patterns | LOW | `advanced-` |\n\n## Quick Reference\n\n### 1. Eliminating Waterfalls (CRITICAL)\n\n- `async-cheap-condition-before-await` - Check cheap sync conditions before awaiting flags or remote values\n- `async-defer-await` - Move await into branches where actually used\n- `async-parallel` - Use Promise.all() for independent operations\n- `async-dependencies` - Use better-all for partial dependencies\n- `async-api-routes` - Start promises early, await late in API routes\n- `async-suspense-boundaries` - Use Suspense to stream content\n\n### 2. Bundle Size Optimization (CRITICAL)\n\n- `bundle-barrel-imports` - Import directly, avoid barrel files\n- `bundle-analyzable-paths` - Prefer statically analyzable import and file-system paths to avoid broad bundles and traces\n- `bundle-dynamic-imports` - Use next/dynamic for heavy components\n- `bundle-defer-third-party` - Load analytics/logging after hydration\n- `bundle-conditional` - Load modules only when feature is activated\n- `bundle-preload` - Preload on hover/focus for perceived speed\n\n### 3. Server-Side Performance (HIGH)\n\n- `server-auth-actions` - Authenticate server actions like API routes\n- `server-cache-react` - Use React.cache() for per-request deduplication\n- `server-cache-lru` - Use LRU cache for cross-request caching\n- `server-dedup-props` - Avoid duplicate serialization in RSC props\n- `server-hoist-static-io` - Hoist static I/O (fonts, logos) to module level\n- `server-no-shared-module-state` - Avoid module-level mutable request state in RSC/SSR\n- `server-serialization` - Minimize data passed to client components\n- `server-parallel-fetching` - Restructure components to parallelize fetches\n- `server-parallel-nested-fetching` - Chain nested fetches per item in Promise.all\n- `server-after-nonblocking` - Use after() for non-blocking operations\n\n### 4. Client-Side Data Fetching (MEDIUM-HIGH)\n\n- `client-swr-dedup` - Use SWR for automatic request deduplication\n- `client-event-listeners` - Deduplicate global event listeners\n- `client-passive-event-listeners` - Use passive listeners for scroll\n- `client-localstorage-schema` - Version and minimize localStorage data\n\n### 5. Re-render Optimization (MEDIUM)\n\n- `rerender-defer-reads` - Don't subscribe to state only used in callbacks\n- `rerender-memo` - Extract expensive work into memoized components\n- `rerender-memo-with-default-value` - Hoist default non-primitive props\n- `rerender-dependencies` - Use primitive dependencies in effects\n- `rerender-derived-state` - Subscribe to derived booleans, not raw values\n- `rerender-derived-state-no-effect` - Derive state during render, not effects\n- `rerender-functional-setstate` - Use functional setState for stable callbacks\n- `rerender-lazy-state-init` - Pass function to useState for expensive values\n- `rerender-simple-expression-in-memo` - Avoid memo for simple primitives\n- `rerender-split-combined-hooks` - Split hooks with independent dependencies\n- `rerender-move-effect-to-event` - Put interaction logic in event handlers\n- `rerender-transitions` - Use startTransition for non-urgent updates\n- `rerender-use-deferred-value` - Defer expensive renders to keep input responsive\n- `rerender-use-ref-transient-values` - Use refs for transient frequent values\n- `rerender-no-inline-components` - Don't define components inside components\n\n### 6. Rendering Performance (MEDIUM)\n\n- `rendering-animate-svg-wrapper` - Animate div wrapper, not SVG element\n- `rendering-content-visibility` - Use content-visibility for long lists\n- `rendering-hoist-jsx` - Extract static JSX outside components\n- `rendering-svg-precision` - Reduce SVG coordinate precision\n- `rendering-hydration-no-flicker` - Use inline script for client-only data\n- `rendering-hydration-suppress-warning` - Suppress expected mismatches\n- `rendering-activity` - Use Activity component for show/hide\n- `rendering-conditional-render` - Use ternary, not && for conditionals\n- `rendering-usetransition-loading` - Prefer useTransition for loading state\n- `rendering-resource-hints` - Use React DOM resource hints for preloading\n- `rendering-script-defer-async` - Use defer or async on script tags\n\n### 7. JavaScript Performance (LOW-MEDIUM)\n\n- `js-batch-dom-css` - Group CSS changes via classes or cssText\n- `js-index-maps` - Build Map for repeated lookups\n- `js-cache-property-access` - Cache object properties in loops\n- `js-cache-function-results` - Cache function results in module-level Map\n- `js-cache-storage` - Cache localStorage/sessionStorage reads\n- `js-combine-iterations` - Combine multiple filter/map into one loop\n- `js-length-check-first` - Check array length before expensive comparison\n- `js-early-exit` - Return early from functions\n- `js-hoist-regexp` - Hoist RegExp creation outside loops\n- `js-min-max-loop` - Use loop for min/max instead of sort\n- `js-set-map-lookups` - Use Set/Map for O(1) lookups\n- `js-tosorted-immutable` - Use toSorted() for immutability\n- `js-flatmap-filter` - Use flatMap to map and filter in one pass\n- `js-request-idle-callback` - Defer non-critical work to browser idle time\n\n### 8. Advanced Patterns (LOW)\n\n- `advanced-effect-event-deps` - Don't put `useEffectEvent` results in effect deps\n- `advanced-event-handler-refs` - Store event handlers in refs\n- `advanced-init-once` - Initialize app once per app load\n- `advanced-use-latest` - useLatest for stable callback refs\n\n## How to Use\n\nRead individual rule files for detailed explanations and code examples:\n\n```\nrules/async-parallel.md\nrules/bundle-barrel-imports.md\n```\n\nEach rule file contains:\n- Brief explanation of why it matters\n- Incorrect code example with explanation\n- Correct code example with explanation\n- Additional context and references\n\n## Full Compiled Document\n\nFor the complete guide with all rules expanded: `AGENTS.md`\n","frontmatter":{"name":"vercel-react-best-practices","description":"React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.","license":"MIT","metadata":{"author":"vercel","version":"1.0.0"}},"isInternal":false,"tokens":1756,"sizeBytes":7251},{"name":"metadata.json","path":"apps/browser/bundled/plugins/figma/metadata.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/figma/metadata.json","title":"Figma Skill","category":"anthropic-skill","format":"json","content":"# Figma Skill\n\nPath: `apps/browser/bundled/plugins/figma/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/figma/metadata.json)","tokens":300,"sizeBytes":213},{"name":"SKILL.md","path":"apps/browser/bundled/plugins/figma/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/figma/SKILL.md","title":"figma","category":"anthropic-skill","format":"markdown","content":"# figma\n\nPath: `apps/browser/bundled/plugins/figma/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/figma/SKILL.md)","tokens":300,"sizeBytes":197},{"name":"metadata.json","path":"apps/browser/bundled/plugins/github/metadata.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/github/metadata.json","title":"Github Skill","category":"anthropic-skill","format":"json","content":"# Github Skill\n\nPath: `apps/browser/bundled/plugins/github/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/github/metadata.json)","tokens":300,"sizeBytes":216},{"name":"SKILL.md","path":"apps/browser/bundled/plugins/github/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/github/SKILL.md","title":"github","category":"anthropic-skill","format":"markdown","content":"# github\n\nPath: `apps/browser/bundled/plugins/github/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/github/SKILL.md)","tokens":300,"sizeBytes":200},{"name":"metadata.json","path":"apps/browser/bundled/plugins/javascript-sandbox/metadata.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/metadata.json","title":"Javascript-sandbox Skill","category":"anthropic-skill","format":"json","content":"# Javascript-sandbox Skill\n\nPath: `apps/browser/bundled/plugins/javascript-sandbox/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/metadata.json)","tokens":300,"sizeBytes":252},{"name":"examples.md","path":"apps/browser/bundled/plugins/javascript-sandbox/references/examples.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/references/examples.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `apps/browser/bundled/plugins/javascript-sandbox/references/examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/references/examples.md)","tokens":300,"sizeBytes":262},{"name":"SKILL.md","path":"apps/browser/bundled/plugins/javascript-sandbox/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/SKILL.md","title":"javascript-sandbox","category":"anthropic-skill","format":"markdown","content":"# javascript-sandbox\n\nPath: `apps/browser/bundled/plugins/javascript-sandbox/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/javascript-sandbox/SKILL.md)","tokens":300,"sizeBytes":236},{"name":"metadata.json","path":"apps/browser/bundled/plugins/mini-apps/metadata.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/metadata.json","title":"Mini-apps Skill","category":"anthropic-skill","format":"json","content":"# Mini-apps Skill\n\nPath: `apps/browser/bundled/plugins/mini-apps/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/metadata.json)","tokens":300,"sizeBytes":225},{"name":"examples.md","path":"apps/browser/bundled/plugins/mini-apps/references/examples.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/references/examples.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `apps/browser/bundled/plugins/mini-apps/references/examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/references/examples.md)","tokens":300,"sizeBytes":244},{"name":"SKILL.md","path":"apps/browser/bundled/plugins/mini-apps/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/SKILL.md","title":"mini-apps","category":"anthropic-skill","format":"markdown","content":"# mini-apps\n\nPath: `apps/browser/bundled/plugins/mini-apps/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/mini-apps/SKILL.md)","tokens":300,"sizeBytes":209},{"name":"metadata.json","path":"apps/browser/bundled/plugins/posthog/metadata.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/posthog/metadata.json","title":"Posthog Skill","category":"anthropic-skill","format":"json","content":"# Posthog Skill\n\nPath: `apps/browser/bundled/plugins/posthog/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/posthog/metadata.json)","tokens":300,"sizeBytes":219},{"name":"SKILL.md","path":"apps/browser/bundled/plugins/posthog/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/posthog/SKILL.md","title":"posthog","category":"anthropic-skill","format":"markdown","content":"# posthog\n\nPath: `apps/browser/bundled/plugins/posthog/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/posthog/SKILL.md)","tokens":300,"sizeBytes":203},{"name":"metadata.json","path":"apps/browser/bundled/plugins/remotion/metadata.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/metadata.json","title":"Remotion Skill","category":"anthropic-skill","format":"json","content":"# Remotion Skill\n\nPath: `apps/browser/bundled/plugins/remotion/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/metadata.json)","tokens":300,"sizeBytes":222},{"name":"facebook.md","path":"apps/browser/bundled/plugins/remotion/references/channels/facebook.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/facebook.md","title":"Channels Skill","category":"anthropic-skill","format":"markdown","content":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/facebook.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/facebook.md)","tokens":300,"sizeBytes":258},{"name":"instagram.md","path":"apps/browser/bundled/plugins/remotion/references/channels/instagram.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/instagram.md","title":"Channels Skill","category":"anthropic-skill","format":"markdown","content":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/instagram.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/instagram.md)","tokens":300,"sizeBytes":260},{"name":"linkedin.md","path":"apps/browser/bundled/plugins/remotion/references/channels/linkedin.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/linkedin.md","title":"Channels Skill","category":"anthropic-skill","format":"markdown","content":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/linkedin.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/linkedin.md)","tokens":300,"sizeBytes":258},{"name":"tiktok.md","path":"apps/browser/bundled/plugins/remotion/references/channels/tiktok.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/tiktok.md","title":"Channels Skill","category":"anthropic-skill","format":"markdown","content":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/tiktok.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/tiktok.md)","tokens":300,"sizeBytes":254},{"name":"x.md","path":"apps/browser/bundled/plugins/remotion/references/channels/x.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/x.md","title":"Channels Skill","category":"anthropic-skill","format":"markdown","content":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/x.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/x.md)","tokens":300,"sizeBytes":244},{"name":"youtube-shorts.md","path":"apps/browser/bundled/plugins/remotion/references/channels/youtube-shorts.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/youtube-shorts.md","title":"Channels Skill","category":"anthropic-skill","format":"markdown","content":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/youtube-shorts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/youtube-shorts.md)","tokens":300,"sizeBytes":270},{"name":"youtube.md","path":"apps/browser/bundled/plugins/remotion/references/channels/youtube.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/youtube.md","title":"Channels Skill","category":"anthropic-skill","format":"markdown","content":"# Channels Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/channels/youtube.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/channels/youtube.md)","tokens":300,"sizeBytes":256},{"name":"3d.md","path":"apps/browser/bundled/plugins/remotion/references/rules/3d.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/3d.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/3d.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/3d.md)","tokens":300,"sizeBytes":237},{"name":"animations.md","path":"apps/browser/bundled/plugins/remotion/references/rules/animations.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/animations.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/animations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/animations.md)","tokens":300,"sizeBytes":253},{"name":"assets.md","path":"apps/browser/bundled/plugins/remotion/references/rules/assets.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/assets.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/assets.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/assets.md)","tokens":300,"sizeBytes":245},{"name":"audio-visualization.md","path":"apps/browser/bundled/plugins/remotion/references/rules/audio-visualization.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/audio-visualization.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/audio-visualization.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/audio-visualization.md)","tokens":300,"sizeBytes":271},{"name":"audio.md","path":"apps/browser/bundled/plugins/remotion/references/rules/audio.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/audio.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/audio.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/audio.md)","tokens":300,"sizeBytes":243},{"name":"calculate-metadata.md","path":"apps/browser/bundled/plugins/remotion/references/rules/calculate-metadata.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/calculate-metadata.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/calculate-metadata.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/calculate-metadata.md)","tokens":300,"sizeBytes":269},{"name":"can-decode.md","path":"apps/browser/bundled/plugins/remotion/references/rules/can-decode.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/can-decode.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/can-decode.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/can-decode.md)","tokens":300,"sizeBytes":253},{"name":"charts.md","path":"apps/browser/bundled/plugins/remotion/references/rules/charts.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/charts.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/charts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/charts.md)","tokens":300,"sizeBytes":245},{"name":"compositions.md","path":"apps/browser/bundled/plugins/remotion/references/rules/compositions.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/compositions.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/compositions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/compositions.md)","tokens":300,"sizeBytes":257},{"name":"display-captions.md","path":"apps/browser/bundled/plugins/remotion/references/rules/display-captions.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/display-captions.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/display-captions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/display-captions.md)","tokens":300,"sizeBytes":265},{"name":"extract-frames.md","path":"apps/browser/bundled/plugins/remotion/references/rules/extract-frames.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/extract-frames.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/extract-frames.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/extract-frames.md)","tokens":300,"sizeBytes":261},{"name":"ffmpeg.md","path":"apps/browser/bundled/plugins/remotion/references/rules/ffmpeg.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/ffmpeg.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/ffmpeg.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/ffmpeg.md)","tokens":300,"sizeBytes":245},{"name":"fonts.md","path":"apps/browser/bundled/plugins/remotion/references/rules/fonts.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/fonts.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/fonts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/fonts.md)","tokens":300,"sizeBytes":243},{"name":"get-audio-duration.md","path":"apps/browser/bundled/plugins/remotion/references/rules/get-audio-duration.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-audio-duration.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/get-audio-duration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-audio-duration.md)","tokens":300,"sizeBytes":269},{"name":"get-video-dimensions.md","path":"apps/browser/bundled/plugins/remotion/references/rules/get-video-dimensions.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-video-dimensions.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/get-video-dimensions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-video-dimensions.md)","tokens":300,"sizeBytes":273},{"name":"get-video-duration.md","path":"apps/browser/bundled/plugins/remotion/references/rules/get-video-duration.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-video-duration.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/get-video-duration.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/get-video-duration.md)","tokens":300,"sizeBytes":269},{"name":"gifs.md","path":"apps/browser/bundled/plugins/remotion/references/rules/gifs.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/gifs.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/gifs.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/gifs.md)","tokens":300,"sizeBytes":241},{"name":"images.md","path":"apps/browser/bundled/plugins/remotion/references/rules/images.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/images.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/images.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/images.md)","tokens":300,"sizeBytes":245},{"name":"import-srt-captions.md","path":"apps/browser/bundled/plugins/remotion/references/rules/import-srt-captions.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/import-srt-captions.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/import-srt-captions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/import-srt-captions.md)","tokens":300,"sizeBytes":271},{"name":"light-leaks.md","path":"apps/browser/bundled/plugins/remotion/references/rules/light-leaks.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/light-leaks.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/light-leaks.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/light-leaks.md)","tokens":300,"sizeBytes":255},{"name":"lottie.md","path":"apps/browser/bundled/plugins/remotion/references/rules/lottie.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/lottie.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/lottie.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/lottie.md)","tokens":300,"sizeBytes":245},{"name":"maps.md","path":"apps/browser/bundled/plugins/remotion/references/rules/maps.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/maps.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/maps.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/maps.md)","tokens":300,"sizeBytes":241},{"name":"measuring-dom-nodes.md","path":"apps/browser/bundled/plugins/remotion/references/rules/measuring-dom-nodes.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/measuring-dom-nodes.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/measuring-dom-nodes.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/measuring-dom-nodes.md)","tokens":300,"sizeBytes":271},{"name":"measuring-text.md","path":"apps/browser/bundled/plugins/remotion/references/rules/measuring-text.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/measuring-text.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/measuring-text.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/measuring-text.md)","tokens":300,"sizeBytes":261},{"name":"parameters.md","path":"apps/browser/bundled/plugins/remotion/references/rules/parameters.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/parameters.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/parameters.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/parameters.md)","tokens":300,"sizeBytes":253},{"name":"sequencing.md","path":"apps/browser/bundled/plugins/remotion/references/rules/sequencing.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/sequencing.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/sequencing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/sequencing.md)","tokens":300,"sizeBytes":253},{"name":"sfx.md","path":"apps/browser/bundled/plugins/remotion/references/rules/sfx.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/sfx.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/sfx.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/sfx.md)","tokens":300,"sizeBytes":239},{"name":"silence-detection.md","path":"apps/browser/bundled/plugins/remotion/references/rules/silence-detection.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/silence-detection.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/silence-detection.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/silence-detection.md)","tokens":300,"sizeBytes":267},{"name":"subtitles.md","path":"apps/browser/bundled/plugins/remotion/references/rules/subtitles.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/subtitles.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/subtitles.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/subtitles.md)","tokens":300,"sizeBytes":251},{"name":"tailwind-setup.md","path":"apps/browser/bundled/plugins/remotion/references/rules/tailwind-setup.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/tailwind-setup.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/tailwind-setup.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/tailwind-setup.md)","tokens":300,"sizeBytes":261},{"name":"tailwind.md","path":"apps/browser/bundled/plugins/remotion/references/rules/tailwind.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/tailwind.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/tailwind.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/tailwind.md)","tokens":300,"sizeBytes":249},{"name":"text-animations.md","path":"apps/browser/bundled/plugins/remotion/references/rules/text-animations.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/text-animations.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/text-animations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/text-animations.md)","tokens":300,"sizeBytes":263},{"name":"timing.md","path":"apps/browser/bundled/plugins/remotion/references/rules/timing.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/timing.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/timing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/timing.md)","tokens":300,"sizeBytes":245},{"name":"transcribe-captions.md","path":"apps/browser/bundled/plugins/remotion/references/rules/transcribe-captions.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transcribe-captions.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/transcribe-captions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transcribe-captions.md)","tokens":300,"sizeBytes":271},{"name":"transitions.md","path":"apps/browser/bundled/plugins/remotion/references/rules/transitions.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transitions.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/transitions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transitions.md)","tokens":300,"sizeBytes":255},{"name":"transparent-videos.md","path":"apps/browser/bundled/plugins/remotion/references/rules/transparent-videos.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transparent-videos.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/transparent-videos.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/transparent-videos.md)","tokens":300,"sizeBytes":269},{"name":"trimming.md","path":"apps/browser/bundled/plugins/remotion/references/rules/trimming.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/trimming.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/trimming.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/trimming.md)","tokens":300,"sizeBytes":249},{"name":"videos.md","path":"apps/browser/bundled/plugins/remotion/references/rules/videos.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/videos.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/videos.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/videos.md)","tokens":300,"sizeBytes":245},{"name":"voiceover.md","path":"apps/browser/bundled/plugins/remotion/references/rules/voiceover.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/voiceover.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/rules/voiceover.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/rules/voiceover.md)","tokens":300,"sizeBytes":251},{"name":"design-inspirations.md","path":"apps/browser/bundled/plugins/remotion/references/styleguides/design-inspirations.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/design-inspirations.md","title":"Styleguides Skill","category":"anthropic-skill","format":"markdown","content":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/design-inspirations.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/design-inspirations.md)","tokens":300,"sizeBytes":289},{"name":"howto-elements.md","path":"apps/browser/bundled/plugins/remotion/references/styleguides/howto-elements.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-elements.md","title":"Styleguides Skill","category":"anthropic-skill","format":"markdown","content":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-elements.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-elements.md)","tokens":300,"sizeBytes":279},{"name":"howto-layouts.md","path":"apps/browser/bundled/plugins/remotion/references/styleguides/howto-layouts.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-layouts.md","title":"Styleguides Skill","category":"anthropic-skill","format":"markdown","content":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-layouts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-layouts.md)","tokens":300,"sizeBytes":277},{"name":"howto-storyboard-templates.md","path":"apps/browser/bundled/plugins/remotion/references/styleguides/howto-storyboard-templates.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-storyboard-templates.md","title":"Styleguides Skill","category":"anthropic-skill","format":"markdown","content":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-storyboard-templates.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-storyboard-templates.md)","tokens":300,"sizeBytes":303},{"name":"howto-write-design-md.md","path":"apps/browser/bundled/plugins/remotion/references/styleguides/howto-write-design-md.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-write-design-md.md","title":"Styleguides Skill","category":"anthropic-skill","format":"markdown","content":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto-write-design-md.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto-write-design-md.md)","tokens":300,"sizeBytes":293},{"name":"howto.md","path":"apps/browser/bundled/plugins/remotion/references/styleguides/howto.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto.md","title":"Styleguides Skill","category":"anthropic-skill","format":"markdown","content":"# Styleguides Skill\n\nPath: `apps/browser/bundled/plugins/remotion/references/styleguides/howto.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/references/styleguides/howto.md)","tokens":300,"sizeBytes":261},{"name":"SKILL.md","path":"apps/browser/bundled/plugins/remotion/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/SKILL.md","title":"remotion","category":"anthropic-skill","format":"markdown","content":"# remotion\n\nPath: `apps/browser/bundled/plugins/remotion/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/remotion/SKILL.md)","tokens":300,"sizeBytes":206},{"name":"metadata.json","path":"apps/browser/bundled/plugins/supabase/metadata.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/supabase/metadata.json","title":"Supabase Skill","category":"anthropic-skill","format":"json","content":"# Supabase Skill\n\nPath: `apps/browser/bundled/plugins/supabase/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/supabase/metadata.json)","tokens":300,"sizeBytes":222},{"name":"SKILL.md","path":"apps/browser/bundled/plugins/supabase/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/supabase/SKILL.md","title":"supabase","category":"anthropic-skill","format":"markdown","content":"# supabase\n\nPath: `apps/browser/bundled/plugins/supabase/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/supabase/SKILL.md)","tokens":300,"sizeBytes":206},{"name":"metadata.json","path":"apps/browser/bundled/plugins/vercel/metadata.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/vercel/metadata.json","title":"Vercel Skill","category":"anthropic-skill","format":"json","content":"# Vercel Skill\n\nPath: `apps/browser/bundled/plugins/vercel/metadata.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/vercel/metadata.json)","tokens":300,"sizeBytes":216},{"name":"SKILL.md","path":"apps/browser/bundled/plugins/vercel/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/vercel/SKILL.md","title":"vercel","category":"anthropic-skill","format":"markdown","content":"# vercel\n\nPath: `apps/browser/bundled/plugins/vercel/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/plugins/vercel/SKILL.md)","tokens":300,"sizeBytes":200},{"name":"SKILL.md","path":"apps/browser/bundled/skills/debug/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/debug/SKILL.md","title":"debug","category":"anthropic-skill","format":"markdown","content":"# debug\n\nPath: `apps/browser/bundled/skills/debug/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/debug/SKILL.md)","tokens":300,"sizeBytes":195},{"name":"SKILL.md","path":"apps/browser/bundled/skills/implement/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/implement/SKILL.md","title":"implement","category":"anthropic-skill","format":"markdown","content":"# implement\n\nPath: `apps/browser/bundled/skills/implement/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/implement/SKILL.md)","tokens":300,"sizeBytes":207},{"name":"authoring-guide.md","path":"apps/browser/bundled/skills/learn-skill/references/authoring-guide.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/authoring-guide.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/authoring-guide.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/authoring-guide.md)","tokens":300,"sizeBytes":260},{"name":"session-extraction.md","path":"apps/browser/bundled/skills/learn-skill/references/session-extraction.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/session-extraction.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/session-extraction.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/session-extraction.md)","tokens":300,"sizeBytes":266},{"name":"skill-updating.md","path":"apps/browser/bundled/skills/learn-skill/references/skill-updating.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/skill-updating.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/skill-updating.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/skill-updating.md)","tokens":300,"sizeBytes":258},{"name":"workflow-patterns.md","path":"apps/browser/bundled/skills/learn-skill/references/workflow-patterns.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/workflow-patterns.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# References Skill\n\nPath: `apps/browser/bundled/skills/learn-skill/references/workflow-patterns.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/references/workflow-patterns.md)","tokens":300,"sizeBytes":264},{"name":"SKILL.md","path":"apps/browser/bundled/skills/learn-skill/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/SKILL.md","title":"learn-skill","category":"anthropic-skill","format":"markdown","content":"# learn-skill\n\nPath: `apps/browser/bundled/skills/learn-skill/SKILL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/learn-skill/SKILL.md)","tokens":300,"sizeBytes":213},{"name":"SKILL.md","path":"apps/browser/bundled/skills/plan/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/plan/SKILL.md","title":"Plan","category":"anthropic-skill","format":"markdown","content":"---\nname: Plan\ndescription: Create a structured implementation plan before coding\nuser-invocable: true\nagent-invocable: false\n---\n\nYou must create a structured implementation plan. Follow these instructions:\n## Workflow\n\n1. **Research** — read all affected files, trace data flow, understand the full change surface.\n2. **Clarify** — if genuinely ambiguous, batch questions into one `askUserQuestions` call.\n3. **Write** — create a kebab-case `.md` in `plans/`.\n4. **Stop** — present a summary and wait for approval. Do NOT implement until the user confirms.\n\n## Plan File Spec\n\n- **Line 1:** `# Plan Title` (h1) — used as display name in UI.\n- **Line 2:** One-sentence plain-text description — used as summary in UI.\n- **Body:** Freeform markdown. Use whatever sections best explain the change — Problem, Approach, Context, Changes, File Map, Key Details, etc. No fixed structure required; scale detail to complexity. Do not use emojis.\n  - **Self-contained:** A fresh agent with no prior context should be able to implement the plan without re-researching the codebase. Include relevant file paths (mount-prefixed, e.g. `w4ba9/src/...`), current behavior, key decisions and rationale in prose sections. Omit sections that add no value.\n  - **Checkboxes:** Use GFM checkboxes (`- [ ]`) for tasks. See Checkbox Rules below.\n\n## Checkbox Rules\n\nEvery checkbox = one concrete, completable work item.\n\n- **Agent-completable only** — every checkbox MUST be doable by you alone with your own tools. Never write tasks that require the user to act (manual testing, running commands in their shell, restarting a dev server, exporting env vars, reviewing, clicking through a UI, obtaining credentials, etc.). If such work is genuinely needed, describe it in a prose `## Follow-ups for the user` section — never as a checkbox.\n- **Short label** — the `- [ ]` line is a concise, scannable summary (one sentence). It says *what* to do, not *how*.\n- **Details below** — implementation specifics (file paths, code snippets, sub-steps) go in indented content underneath the checkbox line. Never cram these into the checkbox line itself.\n- **No alternatives** — resolve choices in prose above, then write one task for the chosen approach.\n- **No optional/decorative items** — if conditional, resolve the condition; include as firm task or omit.\n- **Parent-child consistency** — parent is complete only when all children are complete.\n\n### Example\n\n```markdown\n# Rename Commands to Skills\n\nRename all \"command\" terminology to \"skill\" across shared types, backend, and UI.\n\n## Context\n\nThe codebase currently uses \"command\" (`CommandDefinition`, `CommandSource`, etc.) but the\nuser-facing terminology has shifted to \"skill\". The rename touches 3 files and 6 import sites.\n\n## Tasks\n\n- [ ] Rename `CommandDefinition` type and its source file\n\n  Rename `w4ba9/src/shared/commands.ts` → `skills.ts`. Inside the file:\n  - `CommandSource` → `SkillSource`\n  - `CommandDefinition` → `SkillDefinition`\n  - `toCommandDefinitionUI` → `toSkillDefinitionUI`\n\n  Update all 6 import sites listed in the Context section.\n\n- [ ] Update Karton state key from `commands` to `skills`\n\n  In `w4ba9/src/shared/karton-contracts/ui/index.ts` (line ~629),\n  change the state key and update the JSDoc comment above it.\n\n- [ ] Verify typecheck passes\n\n  Run `pnpm -F stagewise typecheck` for both `tsconfig.ui.json` and `tsconfig.backend.json`.\n```\n","frontmatter":{"name":"Plan","description":"Create a structured implementation plan before coding","user-invocable":true,"agent-invocable":false},"isInternal":false,"tokens":814,"sizeBytes":3441},{"name":"SKILL.md","path":"apps/browser/bundled/skills/preview/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/preview/SKILL.md","title":"Preview","category":"anthropic-skill","format":"markdown","content":"---\nname: Preview\ndescription: Create an interactive design-preview in a browser tab\nuser-invocable: true\nagent-invocable: false\n---\n\nBuild a **mini-app** to fulfill the request. Use the `apps/` directory and `API.openApp(appId, { target: 'tab', title: 'Readable preview title' })` as documented in the Application Environment section.\n\n## Workflow\n\n1. **Scaffold** — create `apps/{appId}/index.html` (+ optional `styles.css`, `script.js`).\n2. **Design for a full browser tab** — the preview opens on an internal `stagewise://internal/preview/{appId}` page, so use responsive layouts that work from narrow to full-width viewports.\n3. **Open in tab** — call `await API.openApp(appId, { target: 'tab', title: 'Readable preview title' })`. The title is shown in the tab breadcrumbs. The returned `{ tabId }` can be used with `API.sendCDP()` if the preview needs inspection.\n4. **Iterate** — use file tools (`multiEdit`, `overwriteFile`) for edits, then call `API.openApp(appId, { target: 'tab', title: 'Readable preview title' })` again to open the refreshed preview.\n\n## Rules\n\n- One `index.html` per app. Sibling assets resolve via relative paths (`./styles.css`).\n- Prefer self-contained HTML (inline or sibling files) — no external build step.\n- Do not open preview apps in the chat. Use `target: 'tab'`.\n- Use `API.sendMessage` / `API.onMessage` only when bidirectional communication is needed.","frontmatter":{"name":"Preview","description":"Create an interactive design-preview in a browser tab","user-invocable":true,"agent-invocable":false},"isInternal":false,"tokens":350,"sizeBytes":1406},{"name":"SKILL.md","path":"apps/browser/bundled/skills/watch/SKILL.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/bundled/skills/watch/SKILL.md","title":"Watch","category":"anthropic-skill","format":"markdown","content":"---\nname: Watch\ndescription: Watch a local or remote condition in the background and resume when it is met\nuser-invocable: true\nagent-invocable: false\n---\n\nTreat the user's request as a background watch task. Call\n`createWatcherSession` in this turn unless the condition is already satisfied,\ncannot be checked with the available CLIs, or a matching active watcher is\nlisted in the current `<shell-sessions>`.\n\nPerform any required read-only preflight before arming the watcher. After it is\narmed, briefly tell the user and end the turn; do not wait with\n`executeShellCommand`.\n","frontmatter":{"name":"Watch","description":"Watch a local or remote condition in the background and resume when it is met","user-invocable":true,"agent-invocable":false},"isInternal":false,"tokens":131,"sizeBytes":578},{"name":"package.json","path":"packages/agent-core/package.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/package.json","title":"Agent-core Skill","category":"anthropic-skill","format":"json","content":"# Agent-core Skill\n\nPath: `packages/agent-core/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/package.json)","tokens":300,"sizeBytes":186},{"name":"SPEC.md","path":"packages/agent-core/SPEC.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/SPEC.md","title":"Agent-core Skill","category":"anthropic-skill","format":"markdown","content":"# Agent-core Skill\n\nPath: `packages/agent-core/SPEC.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/SPEC.md)","tokens":300,"sizeBytes":176},{"name":"agents-md.prompt.md","path":"packages/agent-core/src/env/adapters/agents-md.prompt.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/agents-md.prompt.md","title":"Adapters Skill","category":"anthropic-skill","format":"markdown","content":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/agents-md.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/agents-md.prompt.md)","tokens":300,"sizeBytes":232},{"name":"enabled-skills.prompt.md","path":"packages/agent-core/src/env/adapters/enabled-skills.prompt.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/enabled-skills.prompt.md","title":"Adapters Skill","category":"anthropic-skill","format":"markdown","content":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/enabled-skills.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/enabled-skills.prompt.md)","tokens":300,"sizeBytes":242},{"name":"file-diffs.prompt.md","path":"packages/agent-core/src/env/adapters/file-diffs.prompt.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/file-diffs.prompt.md","title":"Adapters Skill","category":"anthropic-skill","format":"markdown","content":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/file-diffs.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/file-diffs.prompt.md)","tokens":300,"sizeBytes":234},{"name":"logs.prompt.md","path":"packages/agent-core/src/env/adapters/logs.prompt.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/logs.prompt.md","title":"Adapters Skill","category":"anthropic-skill","format":"markdown","content":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/logs.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/logs.prompt.md)","tokens":300,"sizeBytes":222},{"name":"memory.prompt.md","path":"packages/agent-core/src/env/adapters/memory.prompt.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/memory.prompt.md","title":"Adapters Skill","category":"anthropic-skill","format":"markdown","content":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/memory.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/memory.prompt.md)","tokens":300,"sizeBytes":226},{"name":"plans.prompt.md","path":"packages/agent-core/src/env/adapters/plans.prompt.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/plans.prompt.md","title":"Adapters Skill","category":"anthropic-skill","format":"markdown","content":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/plans.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/plans.prompt.md)","tokens":300,"sizeBytes":224},{"name":"workspace.prompt.md","path":"packages/agent-core/src/env/adapters/workspace.prompt.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/workspace.prompt.md","title":"Adapters Skill","category":"anthropic-skill","format":"markdown","content":"# Adapters Skill\n\nPath: `packages/agent-core/src/env/adapters/workspace.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/adapters/workspace.prompt.md)","tokens":300,"sizeBytes":232},{"name":"env-state-spec.md","path":"packages/agent-core/src/env/env-state-spec.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/env-state-spec.md","title":"Env Skill","category":"anthropic-skill","format":"markdown","content":"# Env Skill\n\nPath: `packages/agent-core/src/env/env-state-spec.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/env/env-state-spec.md)","tokens":300,"sizeBytes":205},{"name":"humanspec.md","path":"packages/agent-core/src/humanspec.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/humanspec.md","title":"Src Skill","category":"anthropic-skill","format":"markdown","content":"# Src Skill\n\nPath: `packages/agent-core/src/humanspec.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/humanspec.md)","tokens":300,"sizeBytes":187},{"name":"spec.md","path":"packages/agent-core/src/services/diff-history/spec.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/services/diff-history/spec.md","title":"Diff-history Skill","category":"anthropic-skill","format":"markdown","content":"# Diff-history Skill\n\nPath: `packages/agent-core/src/services/diff-history/spec.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/services/diff-history/spec.md)","tokens":300,"sizeBytes":230},{"name":"state-annotation.md","path":"packages/agent-core/src/store/state-annotation.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/store/state-annotation.md","title":"Store Skill","category":"anthropic-skill","format":"markdown","content":"# Store Skill\n\nPath: `packages/agent-core/src/store/state-annotation.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/store/state-annotation.md)","tokens":300,"sizeBytes":215},{"name":"tsconfig.json","path":"packages/agent-core/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/tsconfig.json","title":"Agent-core Skill","category":"anthropic-skill","format":"json","content":"# Agent-core Skill\n\nPath: `packages/agent-core/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/tsconfig.json)","tokens":300,"sizeBytes":188},{"name":"package.json","path":"packages/agent-shell/package.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/package.json","title":"Agent-shell Skill","category":"anthropic-skill","format":"json","content":"# Agent-shell Skill\n\nPath: `packages/agent-shell/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/package.json)","tokens":300,"sizeBytes":189},{"name":"shells-domain-adapter.prompt.md","path":"packages/agent-shell/src/env/shells-domain-adapter.prompt.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/src/env/shells-domain-adapter.prompt.md","title":"Env Skill","category":"anthropic-skill","format":"markdown","content":"# Env Skill\n\nPath: `packages/agent-shell/src/env/shells-domain-adapter.prompt.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/src/env/shells-domain-adapter.prompt.md)","tokens":300,"sizeBytes":235},{"name":"tsconfig.json","path":"packages/agent-shell/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/tsconfig.json","title":"Agent-shell Skill","category":"anthropic-skill","format":"json","content":"# Agent-shell Skill\n\nPath: `packages/agent-shell/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-shell/tsconfig.json)","tokens":300,"sizeBytes":191},{"name":"package.json","path":"packages/icons/package.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/package.json","title":"Icons Skill","category":"anthropic-skill","format":"json","content":"# Icons Skill\n\nPath: `packages/icons/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/package.json)","tokens":300,"sizeBytes":171},{"name":"tsconfig.json","path":"packages/icons/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/tsconfig.json","title":"Icons Skill","category":"anthropic-skill","format":"json","content":"# Icons Skill\n\nPath: `packages/icons/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/tsconfig.json)","tokens":300,"sizeBytes":173},{"name":"CHANGELOG.md","path":"packages/karton/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/CHANGELOG.md","title":"Karton Skill","category":"anthropic-skill","format":"markdown","content":"# Karton Skill\n\nPath: `packages/karton/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/CHANGELOG.md)","tokens":300,"sizeBytes":174},{"name":"LICENSE.md","path":"packages/karton/LICENSE.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/LICENSE.md","title":"Karton Skill","category":"anthropic-skill","format":"markdown","content":"# Karton Skill\n\nPath: `packages/karton/LICENSE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/LICENSE.md)","tokens":300,"sizeBytes":170},{"name":"package.json","path":"packages/karton/package.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/package.json","title":"Karton Skill","category":"anthropic-skill","format":"json","content":"# Karton Skill\n\nPath: `packages/karton/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/package.json)","tokens":300,"sizeBytes":174},{"name":"SPEC.md","path":"packages/karton/SPEC.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/SPEC.md","title":"Karton Skill","category":"anthropic-skill","format":"markdown","content":"# Karton Skill\n\nPath: `packages/karton/SPEC.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/SPEC.md)","tokens":300,"sizeBytes":164},{"name":"tsconfig.json","path":"packages/karton/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/tsconfig.json","title":"Karton Skill","category":"anthropic-skill","format":"json","content":"# Karton Skill\n\nPath: `packages/karton/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/tsconfig.json)","tokens":300,"sizeBytes":176},{"name":"turbo.json","path":"packages/karton/turbo.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/turbo.json","title":"Karton Skill","category":"anthropic-skill","format":"json","content":"# Karton Skill\n\nPath: `packages/karton/turbo.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/turbo.json)","tokens":300,"sizeBytes":170},{"name":"CHANGELOG.md","path":"packages/stage-ui/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/CHANGELOG.md","title":"Stage-ui Skill","category":"anthropic-skill","format":"markdown","content":"# Stage-ui Skill\n\nPath: `packages/stage-ui/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/CHANGELOG.md)","tokens":300,"sizeBytes":180},{"name":"package.json","path":"packages/stage-ui/package.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/package.json","title":"Stage-ui Skill","category":"anthropic-skill","format":"json","content":"# Stage-ui Skill\n\nPath: `packages/stage-ui/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/package.json)","tokens":300,"sizeBytes":180},{"name":"example-theme-dark.json","path":"packages/stage-ui/src/code-block/example-theme-dark.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/src/code-block/example-theme-dark.json","title":"Code-block Skill","category":"anthropic-skill","format":"json","content":"# Code-block Skill\n\nPath: `packages/stage-ui/src/code-block/example-theme-dark.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/src/code-block/example-theme-dark.json)","tokens":300,"sizeBytes":234},{"name":"example-theme-light.json","path":"packages/stage-ui/src/code-block/example-theme-light.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/src/code-block/example-theme-light.json","title":"Code-block Skill","category":"anthropic-skill","format":"json","content":"# Code-block Skill\n\nPath: `packages/stage-ui/src/code-block/example-theme-light.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/src/code-block/example-theme-light.json)","tokens":300,"sizeBytes":236},{"name":"tsconfig.json","path":"packages/stage-ui/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/tsconfig.json","title":"Stage-ui Skill","category":"anthropic-skill","format":"json","content":"# Stage-ui Skill\n\nPath: `packages/stage-ui/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/tsconfig.json)","tokens":300,"sizeBytes":182},{"name":"package.json","path":"packages/tailwindcss-color-modifiers/package.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/package.json","title":"Tailwindcss-color-modifiers Skill","category":"anthropic-skill","format":"json","content":"# Tailwindcss-color-modifiers Skill\n\nPath: `packages/tailwindcss-color-modifiers/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/package.json)","tokens":300,"sizeBytes":237},{"name":"tsconfig.json","path":"packages/tailwindcss-color-modifiers/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/tsconfig.json","title":"Tailwindcss-color-modifiers Skill","category":"anthropic-skill","format":"json","content":"# Tailwindcss-color-modifiers Skill\n\nPath: `packages/tailwindcss-color-modifiers/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/tsconfig.json)","tokens":300,"sizeBytes":239},{"name":"base.json","path":"packages/typescript-config/base.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/base.json","title":"Typescript-config Skill","category":"anthropic-skill","format":"json","content":"# Typescript-config Skill\n\nPath: `packages/typescript-config/base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/base.json)","tokens":300,"sizeBytes":201},{"name":"CHANGELOG.md","path":"packages/typescript-config/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/CHANGELOG.md","title":"Typescript-config Skill","category":"anthropic-skill","format":"markdown","content":"# Typescript-config Skill\n\nPath: `packages/typescript-config/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/CHANGELOG.md)","tokens":300,"sizeBytes":207},{"name":"nextjs.json","path":"packages/typescript-config/nextjs.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/nextjs.json","title":"Typescript-config Skill","category":"anthropic-skill","format":"json","content":"# Typescript-config Skill\n\nPath: `packages/typescript-config/nextjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/nextjs.json)","tokens":300,"sizeBytes":205},{"name":"package.json","path":"packages/typescript-config/package.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/package.json","title":"Typescript-config Skill","category":"anthropic-skill","format":"json","content":"# Typescript-config Skill\n\nPath: `packages/typescript-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/package.json)","tokens":300,"sizeBytes":207},{"name":"react-library.json","path":"packages/typescript-config/react-library.json","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/react-library.json","title":"Typescript-config Skill","category":"anthropic-skill","format":"json","content":"# Typescript-config Skill\n\nPath: `packages/typescript-config/react-library.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/typescript-config/react-library.json)","tokens":300,"sizeBytes":219},{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/CLAUDE.md","title":"Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# Claude Agent Guidelines & System Prompt\n\nPath: `CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/CLAUDE.md)","tokens":300,"sizeBytes":163},{"name":"README.md","path":"packages/agent-core/README.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/README.md","title":"agent-core Documentation","category":"plugin-manifest","format":"markdown","content":"# agent-core Documentation\n\nPath: `packages/agent-core/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/README.md)","tokens":300,"sizeBytes":188},{"name":"README.md","path":"packages/agent-core/src/file-read-transformer/README.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/file-read-transformer/README.md","title":"file-read-transformer Documentation","category":"plugin-manifest","format":"markdown","content":"# file-read-transformer Documentation\n\nPath: `packages/agent-core/src/file-read-transformer/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/file-read-transformer/README.md)","tokens":300,"sizeBytes":251},{"name":"README.md","path":"packages/icons/README.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/README.md","title":"icons Documentation","category":"plugin-manifest","format":"markdown","content":"# icons Documentation\n\nPath: `packages/icons/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/icons/README.md)","tokens":300,"sizeBytes":173},{"name":"README.md","path":"packages/karton/README.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/README.md","title":"karton Documentation","category":"plugin-manifest","format":"markdown","content":"# karton Documentation\n\nPath: `packages/karton/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/karton/README.md)","tokens":300,"sizeBytes":176},{"name":"README.md","path":"packages/stage-ui/README.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/README.md","title":"stage-ui Documentation","category":"plugin-manifest","format":"markdown","content":"# stage-ui Documentation\n\nPath: `packages/stage-ui/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/stage-ui/README.md)","tokens":300,"sizeBytes":182},{"name":"README.md","path":"packages/tailwindcss-color-modifiers/README.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/README.md","title":"tailwindcss-color-modifiers Documentation","category":"plugin-manifest","format":"markdown","content":"# tailwindcss-color-modifiers Documentation\n\nPath: `packages/tailwindcss-color-modifiers/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/tailwindcss-color-modifiers/README.md)","tokens":300,"sizeBytes":239},{"name":"environment-preamble.md","path":"apps/browser/src/backend/agents/chat/prompts/environment-preamble.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/environment-preamble.md","title":"Subagent: environment-preamble","category":"subagent-persona","format":"markdown","content":"# Subagent: environment-preamble\n\nPath: `apps/browser/src/backend/agents/chat/prompts/environment-preamble.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/environment-preamble.md)","tokens":300,"sizeBytes":272},{"name":"intro.md","path":"apps/browser/src/backend/agents/chat/prompts/intro.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/intro.md","title":"Subagent: intro","category":"subagent-persona","format":"markdown","content":"# Subagent: intro\n\nPath: `apps/browser/src/backend/agents/chat/prompts/intro.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/intro.md)","tokens":300,"sizeBytes":227},{"name":"soul.md","path":"apps/browser/src/backend/agents/chat/prompts/soul.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/soul.md","title":"Subagent: soul","category":"subagent-persona","format":"markdown","content":"# Subagent: soul\n\nPath: `apps/browser/src/backend/agents/chat/prompts/soul.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/apps/browser/src/backend/agents/chat/prompts/soul.md)","tokens":300,"sizeBytes":224},{"name":"authorities.md","path":"packages/agent-core/src/agents/chat/prompts/authorities.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/authorities.md","title":"Subagent: authorities","category":"subagent-persona","format":"markdown","content":"# Subagent: authorities\n\nPath: `packages/agent-core/src/agents/chat/prompts/authorities.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/authorities.md)","tokens":300,"sizeBytes":243},{"name":"environment-preamble.md","path":"packages/agent-core/src/agents/chat/prompts/environment-preamble.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/environment-preamble.md","title":"Subagent: environment-preamble","category":"subagent-persona","format":"markdown","content":"# Subagent: environment-preamble\n\nPath: `packages/agent-core/src/agents/chat/prompts/environment-preamble.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/environment-preamble.md)","tokens":300,"sizeBytes":270},{"name":"intro.md","path":"packages/agent-core/src/agents/chat/prompts/intro.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/intro.md","title":"Subagent: intro","category":"subagent-persona","format":"markdown","content":"# Subagent: intro\n\nPath: `packages/agent-core/src/agents/chat/prompts/intro.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/intro.md)","tokens":300,"sizeBytes":225},{"name":"output-style-basics.md","path":"packages/agent-core/src/agents/chat/prompts/output-style-basics.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/output-style-basics.md","title":"Subagent: output-style-basics","category":"subagent-persona","format":"markdown","content":"# Subagent: output-style-basics\n\nPath: `packages/agent-core/src/agents/chat/prompts/output-style-basics.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/output-style-basics.md)","tokens":300,"sizeBytes":267},{"name":"soul.md","path":"packages/agent-core/src/agents/chat/prompts/soul.md","rawUrl":"https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/soul.md","title":"Subagent: soul","category":"subagent-persona","format":"markdown","content":"# Subagent: soul\n\nPath: `packages/agent-core/src/agents/chat/prompts/soul.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/packages/agent-core/src/agents/chat/prompts/soul.md)","tokens":300,"sizeBytes":222}],"systemPromptSnippet":"<yakaai_skills repo=\"stagewise-io/stagewise\">\n<!-- File: AGENTS.md (Tokens: ~300 | Category: root-instruction) -->\n# AI Agent Protocol & Instructions\n\nPath: `AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/AGENTS.md)\n\n<!-- File: .agents/skills/add-llm-model/SKILL.md (Tokens: ~1535 | Category: anthropic-skill) -->\n---\nname: add-llm-model\ndescription: Use when adding a new LLM/model to stagewise model catalogs, provider instances, routing, validation, docs, or showcase UI.\n---\n\n# Add LLM Model\n\nUse this workflow when adding or updating model support in stagewise.\n\n## Architecture First\n\nModels are no longer a single global enabled/disabled list. Routing and model\navailability are scoped to entries in `preferences.providerInstances`.\n\n- `apps/browser/src/shared/available-models.ts` is the curated metadata catalog.\n- `apps/browser/src/backend/agents/providers/` contains stateless provider-type\n  implementations. `registry.ts` maps each `ProviderInstanceTypeId` to its type.\n- `apps/browser/src/backend/agents/model-provider.ts` resolves a provider\n  instance, then delegates ID conversion and model creation to its provider type.\n- Each provider instance owns `enabledModelIds`, `disabledModelIds`, and\n  `discoveredModels`.\n- `apps/browser/src/shared/flagship-models.ts` curates newly discovered models\n  per provider instance. Catalog models on official APIs are considered\n  flagship. OpenRouter has its own prefixed-ID flagship set.\n\nRead those files and the relevant provider implementation before deciding the\nchange surface. Do not apply guidance written for the old global model list.\n\n## Required Checks\n\n1. **Research authoritative metadata.**\n   - Confirm the canonical ID, native provider ID, context window, modalities,\n     tool support, reasoning support, and pricing.\n   - Prefer provider documentation for native behavior and OpenRouter data for\n     the Stagewise/OpenRouter route.\n   - Keep still-supported sibling models unless removal was explicitly requested.\n\n2. **Add or update catalog metadata.**\n   - Edit `apps/browser/src/shared/available-models.ts`.\n   - Match the field order and provider options of the nearest sibling.\n   - Update `apps/browser/src/shared/model-thinking-capabilities.ts` when the\n     model supports configurable thinking/reasoning.\n\n3. **Audit provider-instance routing.**\n   - Inspect `apps/browser/src/backend/agents/providers/registry.ts` and the\n     relevant implementation in `apps/browser/src/backend/agents/providers/`.\n   - Existing providers are normally model-agnostic; do not add a per-model\n     branch unless the wire ID or API behavior genuinely differs.\n   - Put canonical-to-wire ID conversion in the provider type's\n     `toWireModelId`, not in new branches in the central model provider.\n   - Stagewise routing prefixes canonical IDs for OpenRouter in\n     `providers/stagewise.ts`.\n   - Explicit custom endpoint `modelIdMapping` values must override defaults.\n\n4. **Curate discovery intentionally.**\n   - For OpenRouter, update `OPENROUTER_FLAGSHIP_MODELS` in\n     `apps/browser/src/shared/flagship-models.ts` when the new model should be\n     enabled on first discovery. IDs must include the OpenRouter vendor prefix.\n   - Remove a superseded model from that set only if it should stop being a\n     default for *new discovery*. Existing user choices are intentionally\n     preserved by `computeDisabledModelIdsAfterDiscovery`.\n   - Official-provider catalog entries are already treated as flagship; do not\n     duplicate them in `VENDOR_FLAGSHIP_DISCOVERED_MODELS`.\n\n5. **Do not seed model deprecations in the legacy provider migration.**\n   - Never add a new model ID to the `stagewise-default.disabledModelIds`\n     literal inside `PreferencesService.migrateToProviderInstances`.\n   - That function runs only when `providerInstances` is empty. Such a change\n     affects only users crossing the legacy migration and misses users whose\n     instances already exist, creating inconsistent availability.\n   - Do not patch the ID on every startup either; that would override a user's\n     later decision to re-enable the model.\n   - If product requirements call for changing existing users' model choices,\n     ask first and implement an explicit, idempotent, versioned preference\n     migration with tests. Define which provider-instance types are in scope\n     and preserve choices after the migration has run once.\n   - If the old model remains supported, keep it in the catalog and leave\n     existing per-instance state untouched. Discovery flagship curation controls\n     defaults for newly discovered provider models.\n\n6. **Keep credential validation cheap and broadly available.**\n   - Validation now belongs to the provider type's `validateCredentials`\n     implementation, usually in `providers/official-api.ts`, rather than being\n     hardcoded in central routing.\n   - Do not switch validation to a new flagship/high-tier model by default.\n     Prefer a cheap model broadly available to provider keys.\n   - Legacy `validate-api-keys.ts` paths may still exist for compatibility;\n     inspect callers before editing them.\n\n7. **Audit other product surfaces rather than editing mechanically.**\n   - Coding plans: `apps/browser/src/shared/coding-plans.ts`.\n   - Homepage showcase:\n     `apps/website/src/app/(home)/_components/model-provider-showcase.tsx`.\n   - README files and localized variants.\n   - Thinking tests, provider tests, and model-selector tests.\n   - Historical benchmark/comparison copy must not be renamed without evidence.\n\n8. **Always verify subscription-plan base URLs.**\n   - Many providers use **different API endpoints** for subscription/token-plan keys vs. pay-as-you-go (BYOK) keys.\n   - Example: GLM uses `https://api.z.ai/api/paas/v4` for BYOK but `https://api.z.ai/api/coding/paas/v4` for coding-plan subscriptions. Xiaomi MiMo uses `https://api.xiaomimimo.com/v1` for BYOK but `https://token-plan-cn.xiaomimimo.com/v1` for token-plan subscriptions.\n   - The two key types are often **non-interchangeable** — a subscription key will be rejected by the BYOK endpoint and vice versa.\n   - Before finalizing a coding-plan entry, **always** check the provider's official documentation to confirm:\n     - Whether subscription tokens require a separate `baseUrl` / `validationBaseUrl`.\n     - The correct cluster or region-specific URL (some providers offer multiple regional endpoints for subscriptions).\n     - The API key format prefix (e.g. `tp-` for MiMo token plan vs `sk-` for BYOK).\n   - Set `baseUrl`, `validationBaseUrl`, `validationModelId`, `apiKeyPattern`, and `endpointHelpText` on the coding-plan entry accordingly.\n   - If the provider exposes documentation via `llms.txt`, fetch it — it links to raw markdown doc pages that contain the authoritative endpoint and auth details.\n   - Update `apiKeyUrl` and `helpText` to point to the subscription management page (not the BYOK API keys page) when the two are separate.\n\n## Validation\n\nAfter changes:\n\n- Run targeted tests for catalog metadata, thinking capabilities, flagship\n  discovery, provider routing, and any preference migration touched.\n- Run browser typecheck and Biome on all edited files.\n- Search for the new and superseded model IDs across browser and website code.\n- Confirm Stagewise/OpenRouter and official-provider wire IDs independently.\n- Confirm docs, coding-plan `featuredModelIds`, and showcase entries are\n  intentionally aligned.\n- If preference migration changed, test both empty and already-populated\n  `providerInstances`, idempotence, and preservation of user choices.\n\n<!-- File: .agents/skills/caveman/README.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Caveman Skill\n\nPath: `.agents/skills/caveman/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/caveman/README.md)\n\n<!-- File: .agents/skills/caveman/SKILL.md (Tokens: ~1512 | Category: anthropic-skill) -->\n---\nname: caveman\ndescription: >\n  Ultra-compressed communication mode. Cuts output tokens 65% (measured) by speaking like caveman\n  while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra,\n  wenyan-lite, wenyan-full, wenyan-ultra.\n  Use when user says \"caveman mode\", \"talk like caveman\", \"use caveman\", \"less tokens\",\n  \"be brief\", or invokes /caveman. Also auto-triggers when token efficiency is requested.\n---\n\nRespond terse like smart caveman. All technical substance stay. Only fluff die.\n\n## Persistence\n\nACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: \"stop caveman\" / \"normal mode\".\n\nDefault: **full**. Switch: `/caveman lite|full|ultra|wenyan-lite|wenyan-full|wenyan-ultra|off`.\n\n## Rules\n\nDrop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not \"implement a solution for\"). No tool-call narration, no decorative tables/emoji, no dumping long raw error logs unless asked — quote shortest decisive line. Standard well-known tech acronyms OK (DB/API/HTTP); never invent new abbreviations (cfg/impl/req/res/fn) — tokenizer split them same as full word: zero token saved, reader still decode. Full word cheaper AND clearer. No causal arrows (→) either — own token, save nothing. Technical terms exact. Code blocks unchanged. Errors quoted exact.\n\nNever drop not/never/no/only/except — flip meaning worse than any token saved. Numbers, units exact.\n\nTool calls: fire direct. No preamble, plan, or progress note before or between calls. After result: next call direct or final answer — never announce next call. Text before call only to clarify, warn security/irreversible, or resolve ambiguity.\n\nPreserve user's dominant language exactly — reply in the language user writes, never switch regardless of example text or multilingual context elsewhere. Compress the style, not the language. Every emitted line in that language — openings, pre-tool status lines, all — not just final reply. ALWAYS keep technical terms, code, API names, CLI commands, commit-type keywords (feat/fix/...), and exact error strings verbatim — unless user explicitly ask for translation.\n\n'Drop articles' = article languages only. Where small markers carry case/role (particles, postpositions), keep them — grammar, not filler; compress politeness/filler instead.\n\nNo self-reference. Never name or announce the style. No \"caveman mode on\", \"me caveman think\", no third-person caveman tags. Output caveman-only — never normal answer plus \"Caveman:\" recap. Exception: user explicitly ask what the mode is.\n\nPattern: `[thing] [action] [reason]. [next step].`\n\nNot: \"Sure! I'd be happy to help you with that. The issue you're experiencing is likely caused by...\"\nYes: \"Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:\"\n\n## Intensity\n\n| Level | What change |\n|-------|------------|\n| **lite** | No filler/hedging. Keep articles + full sentences. Professional but tight |\n| **full** | Drop articles, fragments OK, short synonyms. Classic caveman. No tool-call narration, no decorative tables/emoji, no long raw error-log dumps unless asked. Standard acronyms OK; no invented abbreviations |\n| **ultra** | Strip conjunctions when cause-then-effect stay unambiguous. One word when one word enough. State each fact once. NO prose abbreviations (cfg/impl/req/res/fn/auth), NO arrows (X → Y) — measured zero token saving under tokenizer, cost decode clarity. Code symbols, function names, API names, error strings: never touch |\n| **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |\n| **wenyan-full** | Maximum classical terseness. Fully 文言文. 80-90% character reduction — chars, not tokens. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其) |\n| **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |\n\nExample — \"Why React component re-render?\"\n- lite: \"Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`.\"\n- full: \"New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`.\"\n- ultra: \"Inline obj prop, new ref, re-render. `useMemo`.\"\n- wenyan-lite: \"組件頻重繪，以每繪新生對象參照故。以 useMemo 包之。\"\n- wenyan-full: \"每繪新生對象參照，故重繪；以 useMemo 包之則免。\"\n- wenyan-ultra: \"新參照則重繪。useMemo 包之。\"\n\nExample — \"Explain database connection pooling.\"\n- lite: \"Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead.\"\n- full: \"Pool reuse open DB connections. No new connection per request. Skip handshake overhead.\"\n- ultra: \"Pool reuse open DB connections. No per-request handshake.\"\n- wenyan-full: \"池蓄已開之連，不逐請而新開，省握手之費。\"\n- wenyan-ultra: \"池蓄連，免逐請新開，省握手。\"\n\nClassical chars = wenyan modes only. Never swap a word to a classical char to shrink at non-wenyan levels.\n\n## Auto-Clarity\n\nDrop caveman when:\n- Security warnings\n- Irreversible action confirmations\n- Multi-step sequences where fragment order or omitted conjunctions risk misread\n- Compression itself creates technical ambiguity (e.g., `\"migrate table drop column backup first\"` — order unclear without articles/conjunctions)\n- User asks to clarify or repeats question\n\nResume caveman after clear part done.\n\nExample shows FORMAT only — write warning in session language, not example's.\n\nExample — destructive op:\n> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.\n> ```sql\n> DROP TABLE users;\n> ```\n> Caveman resume. Verify backup exist first.\n\n## Boundaries\n\nPersisted outside chat: write normal prose — code, comments, commits, docs, issue/PR/MR text, memory files, third-party messages (/caveman-compress exempt). \"stop caveman\" or \"normal mode\": revert. Level persist until changed or session end.\n\n<!-- File: .agents/skills/copywriting/evals/evals.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Evals Skill\n\nPath: `.agents/skills/copywriting/evals/evals.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/evals/evals.json)\n\n<!-- File: .agents/skills/copywriting/references/copy-frameworks.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/copywriting/references/copy-frameworks.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/references/copy-frameworks.md)\n\n<!-- File: .agents/skills/copywriting/references/natural-transitions.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/copywriting/references/natural-transitions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/copywriting/references/natural-transitions.md)\n\n<!-- File: .agents/skills/copywriting/SKILL.md (Tokens: ~1761 | Category: anthropic-skill) -->\n---\nname: copywriting\ndescription: When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or product pages. Also use when the user says \"write copy for,\" \"improve this copy,\" \"rewrite this page,\" \"marketing copy,\" \"headline help,\" \"CTA copy,\" \"value proposition,\" \"tagline,\" \"subheadline,\" \"hero section copy,\" \"above the fold,\" \"this copy is weak,\" \"make this more compelling,\" or \"help me describe my product.\" Use this whenever someone is working on website text that needs to persuade or convert. For email copy, see emails. For popup copy, see popups. For editing existing copy, see copy-editing. For the offer underneath the copy (bonuses, guarantees, value framing), see offers.\nmetadata:\n  version: 2.0.1\n---\n\n# Copywriting\n\nYou are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action.\n\n## Before Writing\n\n**Check for product marketing context first:**\nIf `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.\n\nGather this context (ask if not provided):\n\n### 1. Page Purpose\n- What type of page? (homepage, landing page, pricing, feature, about)\n- What is the ONE primary action you want visitors to take?\n\n### 2. Audience\n- Who is the ideal customer?\n- What problem are they trying to solve?\n- What objections or hesitations do they have?\n- What language do they use to describe their problem?\n\n### 3. Product/Offer\n- What are you selling or offering?\n- What makes it different from alternatives?\n- What's the key transformation or outcome?\n- Any proof points (numbers, testimonials, case studies)?\n\n### 4. Context\n- Where is traffic coming from? (ads, organic, email)\n- What do visitors already know before arriving?\n\n---\n\n## Copywriting Principles\n\n### Clarity Over Cleverness\nIf you have to choose between clear and creative, choose clear.\n\n### Benefits Over Features\nFeatures: What it does. Benefits: What that means for the customer.\n\n### Specificity Over Vagueness\n- Vague: \"Save time on your workflow\"\n- Specific: \"Cut your weekly reporting from 4 hours to 15 minutes\"\n\n### Customer Language Over Company Language\nUse words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets.\n\n### One Idea Per Section\nEach section should advance one argument. Build a logical flow down the page.\n\n---\n\n## Writing Style Rules\n\n### Core Principles\n\n1. **Simple over complex** — \"Use\" not \"utilize,\" \"help\" not \"facilitate\"\n2. **Specific over vague** — Avoid \"streamline,\" \"optimize,\" \"innovative\"\n3. **Active over passive** — \"We generate reports\" not \"Reports are generated\"\n4. **Confident over qualified** — Remove \"almost,\" \"very,\" \"really\"\n5. **Show over tell** — Describe the outcome instead of using adverbs\n6. **Honest over sensational** — Fabricated statistics or testimonials erode trust and create legal liability\n\n### Quick Quality Check\n\n- Jargon that could confuse outsiders?\n- Sentences trying to do too much?\n- Passive voice constructions?\n- Exclamation points? (remove them)\n- Marketing buzzwords without substance?\n\nFor thorough line-by-line review, use the **copy-editing** skill after your draft.\n\n---\n\n## Best Practices\n\n### Be Direct\nGet to the point. Don't bury the value in qualifications.\n\n❌ Slack lets you share files instantly, from documents to images, directly in your conversations\n\n✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires.\n\n### Use Rhetorical Questions\nQuestions engage readers and make them think about their own situation.\n- \"Hate returning stuff to Amazon?\"\n- \"Tired of chasing approvals?\"\n\n### Use Analogies When Helpful\nAnalogies make abstract concepts concrete and memorable.\n\n### Pepper in Humor (When Appropriate)\nPuns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity.\n\n---\n\n## Page Structure Framework\n\n### Above the Fold\n\n**Headline**\n- Your single most important message\n- Communicate core value proposition\n- Specific > generic\n\n**Example formulas:**\n- \"{Achieve outcome} without {pain point}\"\n- \"The {category} for {audience}\"\n- \"Never {unpleasant event} again\"\n- \"{Question highlighting main pain point}\"\n\n**For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md)\n\n**For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md)\n\n**Subheadline**\n- Expands on headline\n- Adds specificity\n- 1-2 sentences max\n\n**Primary CTA**\n- Action-oriented button text\n- Communicate what they get: \"Start Free Trial\" > \"Sign Up\"\n\n### Core Sections\n\n| Section | Purpose |\n|---------|---------|\n| Social Proof | Build credibility (logos, stats, testimonials) |\n| Problem/Pain | Show you understand their situation |\n| Solution/Benefits | Connect to outcomes (3-5 key benefits) |\n| How It Works | Reduce perceived complexity (3-4 steps) |\n| Objection Handling | FAQ, comparisons, guarantees |\n| Final CTA | Recap value, repeat CTA, risk reversal |\n\n**For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md)\n\n---\n\n## CTA Copy Guidelines\n\n**Weak CTAs (avoid):**\n- Submit, Sign Up, Learn More, Click Here, Get Started\n\n**Strong CTAs (use):**\n- Start Free Trial\n- Get [Specific Thing]\n- See [Product] in Action\n- Create Your First [Thing]\n- Download the Guide\n\n**Formula:** [Action Verb] + [What They Get] + [Qualifier if needed]\n\nExamples:\n- \"Start My Free Trial\"\n- \"Get the Complete Checklist\"\n- \"See Pricing for My Team\"\n\n---\n\n## Page-Specific Guidance\n\n### Homepage\n- Serve multiple audiences without being generic\n- Lead with broadest value proposition\n- Provide clear paths for different visitor intents\n\n### Landing Page\n- Single message, single CTA\n- Match headline to ad/traffic source\n- Complete argument on one page\n\n### Pricing Page\n- Help visitors choose the right plan\n- Address \"which is right for me?\" anxiety\n- Make recommended plan obvious\n\n### Feature Page\n- Connect feature → benefit → outcome\n- Show use cases and examples\n- Clear path to try or buy\n\n### About Page\n- Tell the story of why you exist\n- Connect mission to customer benefit\n- Still include a CTA\n\n---\n\n## Voice and Tone\n\nBefore writing, establish:\n\n**Formality level:**\n- Casual/conversational\n- Professional but friendly\n- Formal/enterprise\n\n**Brand personality:**\n- Playful or serious?\n- Bold or understated?\n- Technical or accessible?\n\nMaintain consistency, but adjust intensity:\n- Headlines can be bolder\n- Body copy should be clearer\n- CTAs should be action-oriented\n\n---\n\n## Output Format\n\nWhen writing copy, provide:\n\n### Page Copy\nOrganized by section:\n- Headline, Subheadline, CTA\n- Section headers and body copy\n- Secondary CTAs\n\n### Annotations\nFor key elements, explain:\n- Why you made this choice\n- What principle it applies\n\n### Alternatives\nFor headlines and CTAs, provide 2-3 options:\n- Option A: [copy] — [rationale]\n- Option B: [copy] — [rationale]\n\n### Meta Content (if relevant)\n- Page title (for SEO)\n- Meta description\n\n---\n\n## Related Skills\n\n- **copy-editing**: For polishing existing copy (use after your draft)\n- **cro**: If page structure/strategy needs work, not just copy\n- **emails**: For email copywriting\n- **popups**: For popup and modal copy\n- **ab-testing**: To test copy variations\n\n<!-- File: .agents/skills/create-skill/references/best-practices.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/create-skill/references/best-practices.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/best-practices.md)\n\n<!-- File: .agents/skills/create-skill/references/examples.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/create-skill/references/examples.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/examples.md)\n\n<!-- File: .agents/skills/create-skill/references/progressive-disclosure.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/create-skill/references/progressive-disclosure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/progressive-disclosure.md)\n\n<!-- File: .agents/skills/create-skill/references/skill-structure.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/create-skill/references/skill-structure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/create-skill/references/skill-structure.md)\n\n<!-- File: .agents/skills/create-skill/SKILL.md (Tokens: ~645 | Category: anthropic-skill) -->\n---\nname: create-skill\ndescription: Guide for creating effective skills following best practices. Use when creating or updating skills that extend agent capabilities.\n---\n\n# Create Skill\n\nGuide for creating effective skills that extend agent capabilities with specialized knowledge, workflows, and tool integrations.\n\n## About Skills\n\nSkills are modular, self-contained packages that extend agent capabilities by providing specialized knowledge, workflows, and tools. Think of them as \"onboarding guides\" for specific domains or tasks.\n\n### What Skills Provide\n\n1. Specialized workflows - Multi-step procedures for specific domains\n2. Tool integrations - Instructions for working with specific file formats or APIs\n3. Domain expertise - Company-specific knowledge, schemas, business logic\n4. Bundled resources - Scripts, references, and assets for complex and repetitive tasks\n\n## Progressive Disclosure Principle\n\n**The 200-line rule is critical.** SKILL.md must be under 200 lines. If you need more, split content into `references/` files.\n\n### Three-Level Loading System\n\n1. **Metadata (name + description)** - Always in context (~100 words)\n2. **SKILL.md body** - When skill triggers (<200 lines, ideally <500 lines for optimal performance)\n3. **Bundled resources** - As needed by agent (unlimited)\n\n### Why Progressive Disclosure Matters\n\n- 85% reduction in initial context load\n- Activation times drop from 500ms+ to under 100ms\n- Agent loads only what's needed, when it's needed\n- Skills remain maintainable and focused\n\n## Skill Structure\n\n```\nskill-name/\n├── SKILL.md (required, <200 lines)\n│   ├── YAML frontmatter metadata (required)\n│   │   ├── name: (required)\n│   │   └── description: (required)\n│   └── Markdown instructions (required)\n└── Bundled Resources (optional)\n    ├── scripts/          - Executable code\n    ├── references/       - Documentation loaded as needed\n    └── assets/           - Files used in output\n```\n\n## Core Principles\n\n### Concise is Key\n\nThe context window is a shared resource. Your skill shares it with everything else the agent needs. Be concise and challenge each piece of information:\n- Does the agent really need this explanation?\n- Can I assume the agent knows this?\n- Does this paragraph justify its token cost?\n\n### Set Appropriate Degrees of Freedom\n\n- **High freedom**: Text-based instructions for multiple valid approaches\n- **Medium freedom**: Pseudocode or scripts with parameters\n- **Low freedom**: Specific scripts with few/no parameters for fragile operations\n\n### Test with All Models\n\nSkills act as additions to models, so effectiveness depends on the underlying model. Test your skill with all models you plan to use it with.\n\n## References\n\nFor detailed guidance, see:\n- `references/progressive-disclosure.md` - 200-line rule and references pattern\n- `references/skill-structure.md` - SKILL.md format and frontmatter details\n- `references/examples.md` - Good skill examples\n- `references/best-practices.md` - Comprehensive best practices guide\n\n<!-- File: .agents/skills/history-compression/SKILL.md (Tokens: ~2173 | Category: anthropic-skill) -->\n---\nname: history-compression\ndescription: How stagewise's agent history compression pipeline works — boundary selection, recency bias, chained compressions, and the SQLite-backed test harness for replaying real compressions in LLM playgrounds. Use when debugging, tuning, or extending history compression, when investigating context-window overflow, or when the user wants to probe compression quality against real chat histories.\n---\n\n# History Compression\n\nStagewise summarizes long agent histories into a single briefing stored on a \"boundary\" message. Everything before the boundary is replaced by the briefing; everything after stays verbatim. Recency bias baked into both boundary math + LLM prompt.\n\n## Key files\n\nAll paths are repo-root-relative.\n\n- `apps/browser/src/backend/agents/shared/base-agent/base-agent.ts` — trigger + boundary logic (`compressHistoryInternal`, ~L1898; trigger check in `handlePostStep` ~L2208).\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/index.ts` — model cascade + `generateSimpleCompressedHistory`.\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/prompt.ts` — `COMPRESSION_SYSTEM_PROMPT`, `COMPRESSION_TARGET_CHARS = 30_000`, `buildCompressionUserMessage` (dynamic budget hint).\n- `apps/browser/src/backend/agents/shared/base-agent/history-compression/serialization.ts` — `convertAgentMessagesToCompactMessageHistoryString`, `estimateMessageTokens`.\n- `scripts/experiments/extract-compression-test-data.ts` — SQLite → playground-ready per-compression bundles.\n\n## Trigger\n\nAfter every step → `handlePostStep` checks:\n\n`usedTokens > min(compactionThreshold × contextWindow, 200k)`\n\n- `compactionThreshold` default **0.65**; chat agent overrides to **0.5**.\n- `200k` hard cap (`HISTORY_COMPRESSION_HARD_CAP_TOKENS`) = 1M-ctx models trigger at the same absolute count as a 200k-context model running near its full window.\n- Runs via `void` (async, non-blocking). Guarded by `_isCompressingHistory` flag → no concurrent runs.\n- Silent failure — agent keeps going, context overflow later surfaces normal model error.\n\n## Boundary selection (`compressHistoryInternal`)\n\nKept-budget = `min(0.2 × contextWindow, 40k tokens)` (`KEPT_BUDGET_FRACTION`, `KEPT_BUDGET_HARD_CAP_TOKENS`).\nPreferred floor = `max(5, config.minUncompressedMessages ?? 10)`.\n\nWalk backward from history end:\n\n1. Accumulate `estimateMessageTokens(msg)` until next msg would bust budget → boundary there.\n2. Else stop once kept-count ≥ floor.\n3. Edge: single last msg > budget → keep just that one, warn.\n4. `boundary < 1` → nothing to compress, skip.\n\nThen: `messagesToCompact = history.slice(0, boundary)` → compress → write result to `history[boundary].metadata.compressedHistory`.\n\n### Token estimation quirks\n\n`estimateMessageTokens` = `ceil(chars / 4)`. Includes:\n\n- Text parts.\n- Tool-call `toolName` + JSON-stringified `input` + `output`.\n- Metadata overhead: env-snapshot, compressedHistory, mentions, attachments.\n- **`PER_MESSAGE_OVERHEAD_CHARS = 400`** flat — accounts for XML wrappers/role tags the pipeline injects but aren't in `parts`. Without it, budget walk under-counts → compression triggers too late.\n\n## Chained compressions\n\nWhen `messagesToCompact` already contains a prior `compressedHistory`:\n\n- Serializer (`convertAgentMessagesToCompactMessageHistoryString`) walks **backward** and **stops at first `compressedHistory` it finds**, emitting it as `<previous-chat-history>...</previous-chat-history>`. Older raw messages never re-serialized.\n- `buildCompressionUserMessage` reads prior briefing length → injects ratio-bucketed budget hint:\n  - `<60%` target → \"incorporate verbatim, do NOT shorten\".\n  - `60–85%` → \"light condensation to oldest sections\".\n  - `≥85%` → \"condense oldest fully-resolved sections\".\n- Prompt mandates: keep every `##` heading, shorten **oldest** sections only, preserve all `[](path:...)` links + user decisions + outcomes verbatim. Recent sections untouched.\n\n→ Chain is bounded: each round re-absorbs prior briefing under the same `30k` target.\n\n## Serialization format\n\nInput to LLM is XML-ish:\n\n- `<user>` — text + `[attached: ...]`, `[mentioned: ...]` metadata annotations.\n- `<assistant>` — text + one-liner tool markers: `[read: path]`, `[edited: path (N edits)]`, `[shell: label → ✓ / exit N / timed out]`, `[lint: paths → clean / N errors, M warnings]`, `[asked user: title → field: answer; ...]`, `[searched: \"query\"]`, `[created: path]`, `[wrote: path]`.\n- `<previous-chat-history>` — inlined prior briefing (see above).\n- Error state on any tool → `✗ <msg>` suffix.\n- Unknown tool types → `[tool-xxx]` generic marker (never silently dropped).\n\n## Prompt design (`apps/browser/src/backend/agents/shared/base-agent/history-compression/prompt.ts`)\n\n- Target **30k chars soft** (\"goal, not ceiling — longer > losing detail\").\n- 2nd-person for agent, 3rd-person for user.\n- `##` headings per topic, flowing prose inside. No bullets/tables/code blocks.\n- Recency bias: old resolved = 2–4 sentences; recent/active = full detail ending with current status.\n- MUST preserve verbatim: `[](path:...)` links, markdown links, user decisions/preferences/constraints, color values, directory structures, config.\n- Output plain markdown. **Never emit `<previous-chat-history>` or any XML wrapper** in output.\n\n## Model cascade (`apps/browser/src/backend/agents/shared/base-agent/history-compression/index.ts`)\n\n1. `gemini-3.1-flash-lite` → 2. `gpt-5.4-nano` → 3. `claude-haiku-4.5`.\n\n- Each 30s abort timeout, `temperature: 0.1`, `maxOutputTokens: 20000`.\n- Min valid output: 30 chars (shorter → fallback).\n- Final fallback: active chat model (only if not already tried).\n- All fail → throws; caller (`compressHistoryInternal`) logs + reports, agent continues uncompressed.\n\n## Tuning knobs\n\n| Knob | Where | Default | Effect |\n|---|---|---|---|\n| `compactionThreshold` | `config.historyCompressionThreshold` | 0.65 (chat: 0.5) | Trigger fraction of ctx window |\n| `HISTORY_COMPRESSION_HARD_CAP_TOKENS` | `base-agent.ts` const | 200_000 | Absolute trigger cap |\n| `KEPT_BUDGET_FRACTION` | `base-agent.ts` const | 0.2 | Fraction kept uncompressed |\n| `KEPT_BUDGET_HARD_CAP_TOKENS` | `base-agent.ts` const | 40_000 | Absolute kept cap |\n| `minUncompressedMessages` | `config` | 10 | Floor on kept msg count |\n| `COMPRESSION_TARGET_CHARS` | `prompt.ts` const | 30_000 | Soft briefing size target |\n| `HISTORY_COMPRESSION_TIMEOUT_MS` | `index.ts` const | 30_000 | Per-model attempt timeout |\n| `HISTORY_COMPRESSION_MODELS` | `index.ts` const | 3-model cascade | Compression model order |\n| `PER_MESSAGE_OVERHEAD_CHARS` | `serialization.ts` | 400 | Metadata overhead fudge |\n\n**Invariant:** kept budget < compression trigger (else nothing ever compresses).\n\n## Test harness (`scripts/experiments/extract-compression-test-data.ts`)\n\nReplays every real compression from local stagewise SQLite into playground-ready bundles.\n\n```bash\nnpx tsx scripts/experiments/extract-compression-test-data.ts --channel prerelease\nnpx tsx scripts/experiments/extract-compression-test-data.ts --channel dev --min-messages 10\n```\n\nChannels map to `<appData>/{stagewise | stagewise-prerelease | stagewise-dev}/stagewise/agents/instances.sqlite`.\n\nPer chat, for each boundary message (every real compression event):\n\n- Slices `messages[0..boundary)`.\n- Runs **real** `convertAgentMessagesToCompactMessageHistoryString` + `buildCompressionUserMessage` (imported from app source → fidelity guaranteed).\n- Writes to `experiments-data/history-compression/<channel>/NNN-title/compression-NNN/`:\n  - `system-prompt.md` — static prompt.\n  - `user-message.md` — dynamic user msg with budget hint.\n  - `compact-history.xml` — raw serialized input.\n  - `actual-output.md` — what the real in-app LLM produced.\n  - `metadata.json` — indices, char counts, prev-tag leak check.\n\n→ Paste system + user into AI Studio/Claude → diff against `actual-output.md`. Covers full chain (1st → Nth compression) so chained-compression drift is testable.\n\n## Common tasks\n\n- **\"Why didn't compression trigger?\"** → check `usedTokens` vs trigger formula; verify `compactionThreshold ≥ 0`; check `_isCompressingHistory` not stuck.\n- **\"Compression is too aggressive/lossy\"** → bump `COMPRESSION_TARGET_CHARS`; lower `compactionThreshold` so it triggers earlier with smaller inputs.\n- **\"Too few kept messages after compression\"** → raise `minUncompressedMessages` or `KEPT_BUDGET_FRACTION` (but keep < trigger).\n- **\"Output leaks `<previous-chat-history>` tags\"** → check `metadata.json` `actualOutputIncludesPreviousTag`; prompt already forbids it, likely model regression → bump cascade order.\n- **\"Boundary drift after compression\"** → `compressHistoryInternal` re-finds boundary by `id` after LLM round-trip (user may have undone messages mid-compression); missing id → silent skip + warn.\n\n<!-- File: .agents/skills/karton-best-practices/references/edge-cases.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/edge-cases.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/edge-cases.md)\n\n<!-- File: .agents/skills/karton-best-practices/references/re-render-prevention.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/re-render-prevention.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/re-render-prevention.md)\n\n<!-- File: .agents/skills/karton-best-practices/references/selector-patterns.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/selector-patterns.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/selector-patterns.md)\n\n<!-- File: .agents/skills/karton-best-practices/references/state-update-model.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/karton-best-practices/references/state-update-model.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/karton-best-practices/references/state-update-model.md)\n\n<!-- File: .agents/skills/karton-best-practices/SKILL.md (Tokens: ~1060 | Category: anthropic-skill) -->\n---\nname: karton-best-practices\ndescription: Performance-focused guidelines for writing React code that consumes Karton state. Use when creating or reviewing components that use useKartonState, useKartonProcedure, useComparingSelector, or any Karton React hooks. Covers selector patterns, re-render prevention, structural sharing, and edge cases.\n---\n\n# Karton React Best Practices\n\nPerformance guidelines for React components consuming Karton state. Karton uses Immer internally — understanding its structural sharing model is essential for writing efficient selectors.\n\n## Core Mental Model\n\nKarton state is **deeply frozen** (Immer `freeze(state, true)`). Updates use `produce()` which creates **new references only for changed paths** — unchanged subtrees keep the same reference. `useSyncExternalStore` uses **`Object.is` (reference equality)** to decide re-renders.\n\n**The golden rule:** Your selector's return value must have a **stable reference** when nothing relevant changed. If it doesn't, wrap it with `useComparingSelector`.\n\n## Quick Rules\n\n### Selectors\n\n```typescript\n// GOOD: Select a primitive — stable when unchanged\nconst isWorking = useKartonState((s) => s.agents.instances[id]?.state.isWorking ?? false);\n\n// GOOD: Select a frozen subtree — Immer preserves the reference\nconst agent = useKartonState((s) => s.agents.instances[id]);\n\n// BAD: Creates a new object every call — always re-renders\nconst data = useKartonState((s) => ({\n  name: s.agents.instances[id]?.name,\n  status: s.agents.instances[id]?.state.isWorking,\n}));\n\n// FIX: Wrap with useComparingSelector (default: shallow equality)\nconst data = useKartonState(\n  useComparingSelector((s) => ({\n    name: s.agents.instances[id]?.name,\n    status: s.agents.instances[id]?.state.isWorking,\n  })),\n);\n\n// BAD: Object.keys/values/entries always creates a new array\nconst ids = useKartonState((s) => Object.keys(s.agents.instances));\n\n// FIX: shallow comparison handles arrays element-by-element\nconst ids = useKartonState(\n  useComparingSelector((s) => Object.keys(s.agents.instances)),\n);\n```\n\n### When to Use `useComparingSelector`\n\n| Selector returns | Needs `useComparingSelector`? |\n|---|---|\n| Primitive (boolean, string, number) | No |\n| Existing frozen subtree reference | No |\n| New object/array created in selector | **Yes** (use `shallow`) |\n| Deeply nested new structures | **Yes** (use `deep`) |\n\n### Procedures\n\n```typescript\n// GOOD: Procedures are stable proxies — select once, use freely\nconst createAgent = useKartonProcedure((p) => p.agents.create);\n\n// GOOD: Store in ref for use in callbacks to prevent effect re-triggers\nconst createAgentRef = useRef(createAgent);\ncreateAgentRef.current = createAgent;\n```\n\n### Derived State\n\n```typescript\n// GOOD: useMemo to compute derived values from selected state\nconst agent = useKartonState((s) => s.agents.instances[id]);\nconst displayName = useMemo(() => agent?.name ?? 'Unnamed', [agent]);\n\n// BAD: Expensive computation inside selector (runs on every state change)\nconst sorted = useKartonState((s) =>\n  Object.values(s.agents.instances).sort((a, b) => a.name.localeCompare(b.name)),\n);\n\n// FIX: Select raw data, compute outside\nconst instances = useKartonState(\n  useComparingSelector((s) => s.agents.instances),\n);\nconst sorted = useMemo(\n  () => Object.values(instances).sort((a, b) => a.name.localeCompare(b.name)),\n  [instances],\n);\n```\n\n## Key Pitfalls\n\n1. **Every `useKartonState` call runs its selector on every state change** — keep selectors cheap\n2. **Selectors that create new objects/arrays always cause re-renders** unless wrapped with `useComparingSelector`\n3. **`useComparingSelector` with `deep` is expensive** — prefer `shallow` or restructure state\n4. **Selecting the full state** (`useKartonState()` with no selector) re-renders on any change\n5. **Inline selector functions recreate on every render** — this is fine because `useSyncExternalStore` compares snapshot values, not function references\n6. **Connection changes (`onOpen`/`onClose`) trigger all listeners** — components using `useKartonState` may re-render briefly on reconnect even if state didn't change\n\n## References\n\nFor detailed analysis, see:\n- `references/state-update-model.md` — How Immer structural sharing affects object references\n- `references/selector-patterns.md` — Comprehensive selector patterns with examples\n- `references/re-render-prevention.md` — useComparingSelector internals and memoization strategies\n- `references/edge-cases.md` — Arrays, Maps, conditional selection, and reconnection behavior\n\n<!-- File: .agents/skills/prompt-optimization/references/agentic-prompts.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/agentic-prompts.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/agentic-prompts.md)\n\n<!-- File: .agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/anti-patterns-and-checklist.md)\n\n<!-- File: .agents/skills/prompt-optimization/references/clarity-and-structure.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/clarity-and-structure.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/clarity-and-structure.md)\n\n<!-- File: .agents/skills/prompt-optimization/references/compression-techniques.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/compression-techniques.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/compression-techniques.md)\n\n<!-- File: .agents/skills/prompt-optimization/references/output-control.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/output-control.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/output-control.md)\n\n<!-- File: .agents/skills/prompt-optimization/references/safety-and-security.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/safety-and-security.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/safety-and-security.md)\n\n<!-- File: .agents/skills/prompt-optimization/references/workflows.md (Tokens: ~300 | Category: anthropic-skill) -->\n# References Skill\n\nPath: `.agents/skills/prompt-optimization/references/workflows.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/prompt-optimization/references/workflows.md)\n\n<!-- File: .agents/skills/prompt-optimization/SKILL.md (Tokens: ~844 | Category: anthropic-skill) -->\n---\nname: prompt-optimization\ndescription: Guides building, reviewing, and optimizing system prompts and prompt templates for LLMs. Use when creating system prompts, writing prompt templates, optimizing prompt structure, reducing prompt token usage, compressing prompts, improving prompt clarity, reviewing prompts for safety and bias, or making prompts more token-efficient. Also use when the user says \"write a prompt,\" \"optimize this prompt,\" \"system prompt,\" \"prompt engineering,\" \"make this prompt better,\" \"reduce tokens,\" or \"compress this prompt.\"\n---\n\n# Prompt Optimization\n\nBuild effective, safe, and token-efficient system prompts for LLMs.\n\n## How to Use This Skill\n\n**Pick the workflow that matches the task, then follow it end-to-end:**\n\n| Task | Workflow | Reference |\n|------|----------|-----------|\n| Write a new prompt from scratch | **Create** workflow | `references/workflows.md` → Workflow 1 |\n| Review/audit an existing prompt | **Review** workflow | `references/workflows.md` → Workflow 2 |\n| Reduce token count of a working prompt | **Optimize** workflow | `references/workflows.md` → Workflow 3 |\n\nEach workflow references the specific detail pages below as needed. Do not read all references upfront — load them when the workflow step calls for them.\n\n## Core Principles\n\n1. **Clarity over cleverness** — Write prompts a new employee would follow without confusion\n2. **Positive framing** — Say what to do, not what to avoid\n3. **Structure with delimiters** — XML tags or consistent separators between content types\n4. **Progressive specificity** — Role → constraints → instructions → context → format → examples → input\n5. **Token economy** — Every token must earn its place; ≥1 constraint per 5–10 tokens\n6. **Safety by default** — Prevent injection, data leakage, and bias structurally\n\n## Prompt Architecture (ordering)\n\n```\n1. Identity / Role          — Who the model is (1–2 sentences)\n2. Core behavior rules      — Non-negotiable constraints (safety, tone)\n3. Task instructions        — What to do and how\n4. Context / Knowledge      — Domain data, schemas, reference docs\n5. Output format            — Structure, length, style requirements\n6. Examples (few-shot)      — 2–3 input/output pairs in <example> tags\n7. Dynamic input            — User content (always last, always delimited)\n```\n\n## Key Rules\n\n- **Delimit user input** — Wrap in tags like `<user_input>`; never interpolate raw\n- **Show, don't just tell** — Few-shot examples beat format descriptions\n- **Match prompt style to output style** — Markdown in prompt → markdown out; prose → prose\n- **Put long documents first** — Reference data above instructions (30%+ quality gain)\n- **Quantify, don't qualify** — \"≤100 words\" not \"keep it short\"\n- **Imperative voice** — \"Respond in JSON\" not \"You should format your response as JSON\"\n- **Test adversarially** — Injection, edge cases, ambiguous inputs before shipping\n\n## Reference Index\n\nLoad these when a workflow step calls for them:\n\n| Reference | Contents |\n|-----------|----------|\n| `references/workflows.md` | End-to-end workflows for create, review, and optimize tasks |\n| `references/clarity-and-structure.md` | XML tags, delimiters, role prompting, long-context patterns |\n| `references/output-control.md` | Format steering, verbosity control, few-shot examples |\n| `references/safety-and-security.md` | Injection prevention, bias mitigation, data leakage, red-teaming |\n| `references/compression-techniques.md` | High-density writing, token pruning, compression methods, density test |\n| `references/agentic-prompts.md` | Tool use, thinking/reasoning, state tracking, subagent orchestration |\n| `references/anti-patterns-and-checklist.md` | 8 anti-patterns, design checklist, evaluation metrics |\n\n<!-- File: .agents/skills/stage-ui-design-system/components-reference.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Stage-ui-design-system Skill\n\nPath: `.agents/skills/stage-ui-design-system/components-reference.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/stage-ui-design-system/components-reference.md)\n\n<!-- File: .agents/skills/stage-ui-design-system/SKILL.md (Tokens: ~2502 | Category: anthropic-skill) -->\n---\nname: stage-ui-design-system\ndescription: Stagewise UI theming, design tokens, derived utilities, and component library reference. Use when creating, editing, or reviewing UI in apps/browser, implementing new screens or components, or styling with Tailwind in the stagewise codebase.\n---\n\n# Stage UI Design System\n\nAll UI in `apps/browser/` is built on `@stagewise/stage-ui` — a shared design system using **OKLCH colors**, **Tailwind CSS 4**, and **Base UI (React)** primitives.\n\n## Importing Styles & Components\n\n**Styles** — import the CSS entry point (already done in the browser app):\n```css\n@import \"../../../../../packages/stage-ui/src/styles/index.css\";\n```\n\n**Components** — import via package alias:\n```tsx\nimport { Button } from '@stagewise/stage-ui/components/button';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@stagewise/stage-ui/components/tooltip';\n```\n\n**Utility function** — `cn()` merges Tailwind classes (clsx + twMerge):\n```tsx\nimport { cn } from '@stagewise/stage-ui/lib/utils';\n```\n\n## Color System (OKLCH)\n\nAll colors use OKLCH with a shared hue `--H: 265` (purple). The palette is defined in `palette.css`.\n\n**Base colors** (`--color-base-50` to `--color-base-950`): Low-chroma, nearly grayscale but subtly tinted. Used for 95%+ of the app.\n\n**Primary colors** (`--color-primary-50` to `--color-primary-950`): High-chroma, saturated. Used for CTAs, links, active states.\n\n**Semantic colors**: `success` (green), `error` (red), `warning` (yellow), `info` (blue) — each has `-background`, `-foreground`, `-solid` variants that auto-switch with light/dark.\n\n## Theme Tokens\n\nDefined in `theme.css`, tokens auto-switch between light and dark mode via `prefers-color-scheme`.\n\n### Backgrounds\n\n| Tailwind class | Token | Usage |\n|---|---|---|\n| `bg-app-background` | `--color-app-background` | Outermost app chrome |\n| `bg-background` | `--color-background` | Main content areas, cards, panels |\n| `bg-surface-1` | `--color-surface-1` | First elevation above background |\n| `bg-surface-2` | `--color-surface-2` | Second elevation (nested elements) |\n| `bg-surface-3` | `--color-surface-3` | Third elevation (deeply nested) |\n| `bg-surface-tinted` | `--color-surface-tinted` | Primary-tinted highlight surface |\n| `bg-overlay` | `--color-overlay` | Modal/dialog backdrops (use with opacity) |\n\n### Text\n\n| Tailwind class | Usage |\n|---|---|\n| `text-foreground` | Primary readable text |\n| `text-muted-foreground` | Secondary/less important text |\n| `text-subtle-foreground` | Hints, placeholders, disabled text |\n| `text-primary-foreground` | Accent text (links, highlights) |\n| `text-solid-foreground` | Text on solid/primary backgrounds |\n\n### Borders\n\n| Tailwind class | Usage |\n|---|---|\n| `border-border` | Regular borders |\n| `border-border-subtle` | Subtle/lighter borders |\n\n### Primary\n\n| Tailwind class | Usage |\n|---|---|\n| `bg-primary-solid` | Solid primary fill (buttons, badges) |\n\n### Semantic\n\nPattern: `(bg|text)-{success|error|warning|info}-{background|foreground|solid}`\n\n## Elevation & Shadows\n\n**Light mode**: Use `bg-background` for cards. Depth comes from shadows.\n**Dark mode**: Use escalating surfaces based on nesting depth:\n- Element on `bg-background` → use `bg-surface-1`\n- Element on `bg-surface-1` → use `bg-surface-2`\n- Element on `bg-surface-2` → use `bg-surface-3`\n\nShadow utilities (defined in `shadows.css`):\n- `shadow-elevation-1` — subtle card shadow\n- `shadow-elevation-2` — prominent popup/modal shadow\n\n## Derived Utilities\n\nThese auto-derive border/hover/active colors from an element's background. **Requires the element to have a `bg-*` class set.**\n\n### Borders (derived from background)\n- `border-derived-subtle` — light border\n- `border-derived` — regular border\n- `border-derived-strong` — strong border\n- `border-derived-lighter-subtle` / `border-derived-lighter` — explicitly lighter\n\nSame pattern for rings: `ring-derived-subtle`, `ring-derived`, `ring-derived-strong`\n\n### Hover & Active States\n- `hover:bg-hover-derived` — hover background\n- `active:bg-active-derived` — active/pressed background\n- `hover:text-hover-derived` — hover text\n- `active:text-active-derived` — active text\n\n### Explicit Lighten/Darken (ignores dark/light mode)\n- `bg-derived-lighter` / `bg-derived-lighter-subtle`\n- `bg-derived-darker` / `bg-derived-darker-subtle`\n- `text-derived-lighter` / `text-derived-lighter-subtle`\n\n## Animations\n\nDefined in `animations.css`. Use as Tailwind classes:\n\n| Class | Effect |\n|---|---|\n| `animate-progress-bar-indicator` | Repeating slide for progress bars |\n| `animate-skeleton-shimmer` | Loading shimmer for skeletons |\n| `animate-caret-blink` | Blinking caret for inputs |\n| `animate-icon-pulse` | Stroke-width pulse for icons |\n| `animate-pulse-full` | Full opacity pulse (0→1→0) |\n| `animate-text-pulse` | Muted↔foreground text pulse |\n| `animate-text-pulse-warning` | Foreground↔warning text pulse |\n| `shimmer-text` | Shimmering gradient text effect |\n| `shimmer-text-primary` | Primary-colored shimmer preset |\n| `shimmer-text-once` | One-shot shimmer that settles |\n\nShimmer config: `shimmer-duration-{ms}`, `shimmer-from-{color}`, `shimmer-to-{color}`\n\n## Component Patterns\n\nAll components follow these patterns:\n\n1. **Built on Base UI** (`@base-ui/react`) — unstyled React primitives\n2. **Variants via CVA** (`class-variance-authority`) — `variant` and `size` props\n3. **Class merging** via `cn()` — all accept `className` for overrides\n4. **Compound components** — e.g. `Dialog` + `DialogContent` + `DialogTitle`\n\n### Typical usage example\n\n```tsx\nimport { Button } from '@stagewise/stage-ui/components/button';\nimport { Tooltip, TooltipTrigger, TooltipContent } from '@stagewise/stage-ui/components/tooltip';\n\n<Tooltip>\n  <TooltipTrigger>\n    <Button variant=\"secondary\" size=\"sm\">Click me</Button>\n  </TooltipTrigger>\n  <TooltipContent side=\"top\">Helpful hint</TooltipContent>\n</Tooltip>\n```\n\n## Available Components\n\nFor detailed API and props of each component, see [components-reference.md](components-reference.md).\n\n| Component | Import path | Key props |\n|---|---|---|\n| **Button** | `components/button` | `variant`: primary, secondary, destructive, warning, success, ghost. `size`: xs, sm, md, lg, icon-2xs, icon-xs, icon-sm, icon-md |\n| **Input** | `components/input` | `size`: xs, sm, md. `debounce`: ms. Built on Base UI Input |\n| **Select** | `components/select` | `items`, `value`, `onValueChange`, `size`, `triggerVariant`: ghost/secondary, `multiple` |\n| **Checkbox** | `components/checkbox` | `size`: xs, sm, md. Built on Base UI Checkbox |\n| **Switch** | `components/switch` | `size`: xs, sm, md. Built on Base UI Switch |\n| **Radio** | `components/radio` | `RadioGroup` + `Radio` + `RadioLabel`. Built on Base UI Radio |\n| **Tabs** | `components/tabs` | `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent` |\n| **Dialog** | `components/dialog` | `Dialog`, `DialogTrigger`, `DialogContent`, `DialogTitle`, `DialogDescription`, `DialogClose`, `DialogHeader`, `DialogFooter` |\n| **Popover** | `components/popover` | `Popover`, `PopoverTrigger`, `PopoverContent`, `PopoverTitle`, `PopoverDescription`, `PopoverClose`, `PopoverFooter` |\n| **Tooltip** | `components/tooltip` | `Tooltip`, `TooltipTrigger`, `TooltipContent`, `TooltipProvider` |\n| **Menu** | `components/menu` | `Menu`, `MenuTrigger`, `MenuContent`, `MenuItem`, `MenuSeparator`, `MenuSubmenu`, `MenuSubmenuTrigger`, `MenuSubmenuContent` |\n| **Collapsible** | `components/collapsible` | `Collapsible`, `CollapsibleTrigger` (size: default/condensed), `CollapsibleContent` |\n| **Progress** | `components/progress` | `Progress`, `ProgressTrack` (variant: normal/warning, busy, slim), `ProgressLabel`, `ProgressValue` |\n| **Skeleton** | `components/skeleton` | `variant`: rectangle, circle, text. `size`: xs–full. `animate`: boolean |\n| **Form** | `components/form` | `Form`, `FormFieldset`, `FormField`, `FormFieldLabel`, `FormFieldTitle`, `FormFieldDescription`, `FormFieldError`, `FormFieldSeparator` |\n| **Resizable** | `components/resizable` | `ResizablePanelGroup`, `ResizablePanel`, `ResizableHandle`. Built on react-resizable-panels |\n| **OverlayScrollbar** | `components/overlay-scrollbar` | Custom scrollbar wrapper |\n| **Toaster** | `components/toaster` | Toast notification system |\n| **Breadcrumb** | `components/breadcrumb` | Breadcrumb navigation |\n| **Combobox** | `components/combobox` | Combobox/autocomplete input |\n| **InputOtp** | `components/input-otp` | OTP code input |\n| **SearchableSelect** | `components/searchable-select` | Searchable dropdown select |\n| **SplitText** | `components/split-text` | Text splitting utility |\n| **PreviewCard** | `components/preview-card` | Card with preview content |\n| **LogoText** | `components/logo-text` | Stagewise logo text |\n\n## Quick Decision Guide\n\n**Picking a background:**\n- Top-level page → `bg-app-background`\n- Card/panel → `bg-background`\n- Nested element → escalate: `bg-surface-1` → `bg-surface-2` → `bg-surface-3`\n\n**Picking text color:**\n- Primary content → `text-foreground`\n- Secondary info → `text-muted-foreground`\n- Placeholder/disabled → `text-subtle-foreground`\n- Links/accents → `text-primary-foreground`\n\n**Borders & states (on elements with `bg-*`):**\n- Border: `border border-derived` or `border border-derived-subtle`\n- Hover: `hover:bg-hover-derived`\n- Active: `active:bg-active-derived`\n\n**Icons:** Use `lucide-react` or `nucleo-ui-fill-18` (project-specific icon set).\n\n## Storybook\n\nPreview components and color definitions:\n```bash\npnpm --filter stagewise storybook\n```\n\n<!-- File: .agents/skills/vercel-react-best-practices/AGENTS.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Vercel-react-best-practices Skill\n\nPath: `.agents/skills/vercel-react-best-practices/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/stagewise-io/stagewise/HEAD/.agents/skills/vercel-react-best-practices/AGENTS.md)\n\n<!-- ... +207 more modular skills available via /api/skills/stagewise-io/stagewise?path={path} -->\n</yakaai_skills>"}