plugins/pm/skills/prototype/SKILL.md
Advanced prototyping (Artifacts/Lovable/v0/Bolt)
npx skillsauth add coalesce-labs/catalyst prototypeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
What to provide: A PRD, feature description, or napkin sketch you want turned into a prototype.
/prototype → I'll check your latest PRD and ask what type
/prototype lovable → Generate a Lovable.dev prompt from your PRD
/prototype v0 → Generate a v0.dev prompt
/prototype bolt → Generate a Bolt.new prompt
/prototype artifacts → Build HTML/React right here
/prototype [paste feature description] → I'll recommend the right prototype type
What you get: A ready-to-use prototype prompt or interactive prototype, matched to your PRD requirements, with all edge cases and states covered.
Time: 5-15 minutes depending on complexity.
When the PM types /prototype, help them build interactive prototypes that bring PRD requirements to life. Choose the right tool for the job, generate detailed specs, and connect to the feedback loop.
The $1-$10-$100 Rule:
Prototyping is the cheapest way to validate your solution before committing engineering time.
Automatic Context Checks: When this skill is invoked, immediately check:
| Source | Files/Folders | Search Terms | What to Extract |
| -------------------- | ----------------------------------------------------------- | ------------------ | ------------------------------------------------------- |
| Active PRDs | thoughts/shared/pm/prds/*.md | feature name | Requirements, user flows, success metrics, edge cases |
| Previous Prototypes | thoughts/shared/product/prototypes/*.md | feature name | Previous versions, iteration history, feedback received |
| User Research | thoughts/shared/pm/*.md | user pain, problem | User quotes, pain points, workflows to design for |
| Napkin Sketches | thoughts/shared/product/prototypes/*-napkin*.md | feature name | ASCII wireframes to convert to prototype |
| Stakeholder Profiles | Stakeholder templates | design reviewers | Who will review this and what they care about |
| Business Info | thoughts/shared/pm/context/business-info-template.md | brand, product | Brand guidelines, product context, existing UI patterns |
| Competitor Analysis | thoughts/shared/pm/competitive-*.md | feature name | Competitor implementations for reference |
Context Priority:
Cross-Skill Links:
/prd-draft first ("Prototype without requirements = guessing")/interview-guide ("Who are you designing for?")/prototype-feedback for structured review/generate-ai-prototype for prompt generation/napkin-sketch first for quick layout/prd-draft first)When the PM types /prototype, start by gathering context:
Let's build a prototype. First, let me check what we're working with...
Silently check:
thoughts/shared/pm/prds/thoughts/shared/product/prototypes/ for previous versions/napkin-sketchThen present what you found:
Here's what I know about this feature:
**From PRD:** [Summary of requirements, user flow, key interactions]
**User Research:** [Relevant pain points, quotes, user expectations]
**Previous Prototypes:** [Any existing versions and what feedback they got]
**Napkin Sketch:** [If one exists, reference it]
A few questions before we prototype:
1. [Only ask what's genuinely missing -- skip if PRD covers it]
2. What's the primary user flow to prototype? (If multiple, which is highest priority?)
3. Who will review this? (Stakeholder context affects fidelity level)
If no PRD exists:
I don't see a PRD for this feature yet. Prototyping without requirements
is risky -- we might build the wrong thing beautifully.
Options:
1. Run `/prd-draft` first (recommended -- 15 min)
2. Give me a quick verbal brief and we'll prototype from that
3. We're just exploring -- build something rough and iterate
Which works for you?
Based on the requirements and context, recommend the right tool:
| Prototype Type | Best For | Fidelity | Time to Build | Shareable? | | -------------------- | ------------------------------------------- | --------- | ------------- | ------------------ | | v0.dev | UI components, pages, forms | High | 2-5 min | Yes (deployed URL) | | Lovable.dev | Full-stack apps with data, auth, multi-page | Very High | 5-15 min | Yes (deployed URL) | | Bolt.new | Quick full-stack, rapid iteration | High | 3-8 min | Yes (deployed URL) | | Claude Artifacts | Simple interactions, quick validation | Medium | 2-5 min | In Claude only | | HTML/CSS Static | Email templates, simple landing pages | Medium | 5-10 min | HTML file |
Decision logic:
IF feature is a single UI component or page
→ Recommend v0.dev ("Fast, high-quality, shareable URL")
IF feature is multi-page with data models or auth
→ Recommend Lovable.dev ("Full app, Supabase backend, deployed")
IF feature needs rapid iteration and you want to move fast
→ Recommend Bolt.new ("Quick to spin up, easy to modify")
IF feature is simple interaction or quick concept test
→ Recommend Claude Artifacts ("Build it right here, test immediately")
IF feature is static content (email, landing page, docs)
→ Recommend HTML/CSS ("Simple, no framework needed")
Present the recommendation:
Based on your requirements, I'd recommend **[Type]** because [reason].
But here are your options:
1. **v0.dev** - [Why it fits or doesn't]
2. **Lovable.dev** - [Why it fits or doesn't]
3. **Bolt.new** - [Why it fits or doesn't]
4. **Claude Artifacts** - [Why it fits or doesn't]
Which would you like?
Generate a detailed prompt the PM can paste into v0.dev.
v0.dev Prompt Template:
# v0.dev Prototype Prompt: [Feature Name]
## Paste this into v0.dev:
---
Create a [component/page type] for [product context].
**User Goal:** [What the user is trying to accomplish]
**Layout:**
- [Header/nav description]
- [Main content area]
- [Sidebar/secondary content]
- [Footer/actions]
**Key Components:**
1. [Component 1] - [Behavior: what happens on click/hover/input]
2. [Component 2] - [Behavior]
3. [Component 3] - [Behavior]
**Data to Display:**
- [Field 1]: [Sample data]
- [Field 2]: [Sample data]
- [List/table]: [Sample items]
**Interactions:**
- When user [action], [result]
- When user [action], [result]
- When user [action], [result]
**States to Handle:**
- Default: [What the user sees first]
- Empty state: [What to show when no data]
- Loading state: [Skeleton/spinner/placeholder]
- Error state: [What to show on failure]
- Success state: [Confirmation/feedback]
**Style:**
- [Modern/minimal/playful/enterprise]
- Color palette: [Primary, secondary, accent] or [brand colors from business-info]
- Typography: [Clean sans-serif / specific font]
- Spacing: [Generous/compact]
**Responsive:**
- Desktop: [Layout description]
- Mobile: [How it adapts]
**Do NOT include:** [Things to exclude -- e.g., auth flows, payment, admin panel]
---
Save to: thoughts/shared/product/prototypes/[feature-name]-v0-prompt.md
Generate a comprehensive prompt for Lovable.dev that produces a deployable app.
Lovable.dev Prompt Template:
# Lovable.dev Prototype Prompt: [Feature Name]
## Paste this into Lovable.dev:
---
Build a [app type] for [product context].
**Overview:**
[2-3 sentence description of what this app does and who it's for]
**Pages/Views:**
1. **[Page Name]** (route: /path)
- Purpose: [What this page does]
- Components:
- [Component]: [Behavior]
- [Component]: [Behavior]
- Data needed: [What data this page displays/collects]
2. **[Page Name]** (route: /path)
- Purpose: [What this page does]
- Components: [...]
- Data needed: [...]
**Data Model:**
- [Entity 1]: [Fields: name, type, description]
- [Entity 2]: [Fields]
- [Relationships between entities]
**User Flows:**
1. [Flow name]: [Step 1] → [Step 2] → [Step 3] → [Outcome]
2. [Flow name]: [Step 1] → [Step 2] → [Decision] → [Branch A / Branch B]
**Authentication:** [None / Email login / OAuth / Magic link]
**Sample Data:**
[Provide 3-5 realistic data entries so the prototype looks real, not empty]
**Key Interactions:**
- [User action] → [System response]
- [User action] → [System response]
- [Edge case] → [How to handle]
**Style & Branding:**
- Feel: [Professional/playful/minimal/data-heavy]
- Colors: [Palette]
- Inspiration: [Reference apps or screenshots if available]
**States:**
- Empty state: [What to show]
- Loading: [Behavior]
- Error: [Message and recovery]
- Success: [Confirmation]
**Out of Scope:**
- [What NOT to build -- keep the prototype focused]
---
Save to: thoughts/shared/product/prototypes/[feature-name]-lovable-prompt.md
Bolt.new Prompt Template:
# Bolt.new Prototype Prompt: [Feature Name]
## Paste this into Bolt.new:
---
Build a [app type] using [React/Next.js/vanilla].
**What it does:**
[Clear, concise description]
**Main screen:**
- [Layout description]
- [Key interactive elements]
- [Data display]
**Interactions:**
- [Action] → [Result]
- [Action] → [Result]
**Sample data:**
[Provide inline JSON or describe sample entries]
**Style:** [Minimal/modern] with [Tailwind/custom CSS]
**Important:** Keep it simple. This is a prototype, not production code.
---
Save to: thoughts/shared/product/prototypes/[feature-name]-bolt-prompt.md
Build the prototype directly in the conversation.
Approach:
Structure:
- Header/navigation
- Main content area with primary user flow
- Interactive elements that respond to user input
- State transitions (show how the UI changes)
- Footer/secondary actions
Save the code to: thoughts/shared/product/prototypes/[feature-name]-artifacts-v[N].md
After generating the prototype prompt, include a checklist showing PRD requirement coverage. This ensures the prototype is traceable to the PRD and the PM knows what's covered vs what's not.
**Requirements Verified:**
- [x] [Requirement from PRD that IS covered by this prototype]
- [x] [Another covered requirement]
- [ ] [Requirement NOT covered -- explain why: out of scope for this prototype / deferred to iteration 2]
How to build this checklist:
[x] and a brief note on how it's addressed[ ] and state the reason (out of scope, deferred, not prototypable, etc.)This checklist goes at the end of the prototype output, before the "Next steps" section.
After generating the prototype, offer next steps:
Prototype ready! Saved to thoughts/shared/product/prototypes/[filename].
**Next steps:**
1. **Test it:** [Instructions specific to type -- paste into v0, open in Lovable, etc.]
2. **Get feedback:** Run `/prototype-feedback` for structured review
3. **Iterate:** Come back with feedback and I'll generate v2
4. **Share:** [How to share with stakeholders]
**Want me to also:**
- Generate a second option with a different approach?
- Create a `/napkin-sketch` for a different screen in this flow?
- Draft talking points for presenting this prototype?
- Run `/generate-ai-prototype` for AI-specific behavior prompts?
When the PM comes back with feedback:
thoughts/shared/product/prototypes/[feature]-* for historyVersion naming: [feature-name]-[type]-v[N].md
Before generating any prototype, ensure you have:
If any are missing, ask before generating.
Prototyping without requirements:
/prd-draft.Over-engineering a throwaway prototype:
Prototyping the wrong thing:
Skipping states:
Not using real-ish data:
Building the whole app:
Not connecting to feedback:
/prototype-feedback after sharing.Before:
/prd-draft - Define requirements (most important input)/napkin-sketch - Quick ASCII wireframe to establish layout/generate-ai-prototype - Generate AI-specific prompt behaviorAfter:
/prototype-feedback - Structured review and iteration loop/prd-draft - Update PRD based on prototype learnings/create-tickets - Turn approved prototype into engineering tasksRelated:
/prd-review-panel - Validate with Designer sub-agent/user-interview - Test prototype with real users/ralph-wiggum - Challenge whether this is the right solutionBefore presenting the prototype or prompt, verify:
[feature-name]-[type]-v[N].mdBefore this:
/prd-draft - Clear requirements/napkin-sketch - Quick wireframe first/generate-ai-prototype - AI behavior promptsAfter this:
/prototype-feedback - Structured review loop/create-tickets - Engineering handoff/feature-results - Measure impact post-launchParallel use:
/user-interview - Test with real users/ralph-wiggum - Challenge the solution approachdevelopment
Migrate a single-harness repo to the dual-harness layout so both Claude Code and Codex load the same instructions and skills — AGENTS.md as the portable canonical doc, a thin CLAUDE.md `@AGENTS.md` bridge, and a `.agents/skills` dir with a `.claude/skills` symlink onto it. Use when asked to migrate to dual-harness, make this repo work in both Claude and Codex, or for agent metadata cleanup.
tools
Goal-driven senior-engineer pipeline-unstick sweep (CTL-1176 rung 3). Given the stuck/failed/needs-human set (or ONE ticket handed by the recovery router), its GOAL is to get the pipeline MOVING again — not to fix one ticket's review findings (that is phase-remediate). It runs AFTER the eyes (diagnostician evidence) and the hands (deterministic unstuck-sweep seams) have already tried, and it CONSUMES their output from a recovery-pass.json brief rather than re-diagnosing or redoing their narrow work. It acts like a senior engineer with full tool access — it resolves merge conflicts, rebases, force-pushes, merges green PRs, and re-dispatches stalled phases AUTONOMOUSLY — and escalates to the operator ONLY for a genuine value judgment / something that degrades other functionality / a real cost-benefit trade-off / a serious architecture change / an ADR conflict. On escalation it AUTHORS the operator inbox row + the push notification (executive-voiced). Dispatched as a `claude --bg` job by phase-agent-dispatch via slash command, AND invocable bare by the operator as a sweep — hence `user-invocable: true`. Ships behind CATALYST_RECOVERY_PASS (off by default — no live behavior change until shadow/enforce).
tools
Diagnose and fix Catalyst setup issues. Validates tools, database, config, OTel, direnv, and thoughts. Automatically fixes what it can — creates directories, initializes the database, sets WAL mode, runs migrations. Use for new installs, upgrades, or when something isn't working.
tools
--- name: phase-triage description: Phase agent that triages a Linear ticket — expands acronyms, classifies (feature/bug/docs/refactor/chore), identifies genuine blockers (a semantic second-pass over the backlog — NOT a prose scrape; CTL-838), estimates scope, writes triage.json, and posts a triage analysis comment to Linear. Triage completion is signaled by that comment plus the local triage.json — there is no `triaged` label. Emits phase.triage.complete.<TICKET> on success and phase.triage.fai