plugins/discovery/skills/napkin-sketch/SKILL.md
ASCII wireframes + browser capture for design matching
npx skillsauth add coalesce-labs/catalyst napkin-sketchInstall 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.
Create quick wireframes as ASCII art OR capture existing UI from browser to match design systems.
/generate-ai-prototypeExample: "Sketch a settings page with tabs for Profile, Security, and Billing"
Output: Wireframe delivered inline, also saved to thoughts/shared/product/prototypes/[feature]-napkin-sketch.md
Time: 5-10 minutes per screen
ASCII Wireframes (New Designs):
Browser Capture (Existing Patterns):
Quick sketch of new UI concept using text/symbols
Screenshot existing product UI to reference for new features
Choose layout type:
Single Column (Simple):
┌────────────────────────────────────┐
│ Header │
├────────────────────────────────────┤
│ │
│ Main Content Area │
│ │
├────────────────────────────────────┤
│ Footer │
└────────────────────────────────────┘
Two Column (Dashboard):
┌──────────┬─────────────────────────┐
│ │ │
│ Sidebar │ Main Content │
│ │ │
│ │ │
└──────────┴─────────────────────────┘
Three Column (Complex):
┌──────┬────────────────────┬────────┐
│ Nav │ │ Aside │
│ │ Main Content │ │
│ │ │ │
└──────┴────────────────────┴────────┘
Common component representations:
Buttons:
[ Button Text ] ← Primary button
( Button Text ) ← Secondary button
< Back ← Navigation
Text Input:
[_______________] ← Input field
[_____________] 🔍 ← Search box
Dropdown:
[Select Option ▼]
Checkboxes/Radio:
[ ] Checkbox option
[x] Checked option
( ) Radio option
(•) Selected radio
Toggle:
[ON | OFF ] ← Toggle switch
Tabs:
┌─────┬─────┬─────┐
│ Tab1│ Tab2│ Tab3│
└─────┴─────┴─────┘
Cards:
┌─────────────────────────┐
│ Card Title │
│ ─────────────────────── │
│ Card content goes here │
│ │
│ [ Action ] │
└─────────────────────────┘
Lists:
• List item 1
• List item 2
• List item 3
Tables:
┌────────┬──────────┬────────┐
│ Col 1 │ Col 2 │ Col 3 │
├────────┼──────────┼────────┤
│ Data 1 │ Data 2 │ Data 3 │
│ Data 4 │ Data 5 │ Data 6 │
└────────┴──────────┴────────┘
Icons (use emoji):
⚙️ Settings
👤 Profile
🔔 Notifications
📊 Analytics
✏️ Edit
🗑️ Delete
+ Add
× Close
Example: User Profile Page
┌───────────────────────────────────────────────────────────┐
│ Logo Search [___________] 🔍 👤 Profile ▼ │
└───────────────────────────────────────────────────────────┘
┌──────────────┬────────────────────────────────────────────┐
│ │ │
│ Navigation │ ┌──────────────────────────────────────┐ │
│ │ │ Profile Picture │ │
│ > Dashboard │ │ [ Photo ] │ │
│ Profile │ │ │ │
│ Settings │ │ Name: John Doe │ │
│ Billing │ │ Email: [email protected] │ │
│ │ │ Role: Product Manager │ │
│ │ │ │ │
│ │ │ [ Edit Profile ] │ │
│ │ └──────────────────────────────────────┘ │
│ │ │
│ │ ┌──────────────────────────────────────┐ │
│ │ │ Recent Activity │ │
│ │ │ ────────────────────────────────── │ │
│ │ │ • Updated PRD: Feature X 2h ago │ │
│ │ │ • Commented on ticket #123 5h ago │ │
│ │ │ • Reviewed design mockups 1d ago │ │
│ │ └──────────────────────────────────────┘ │
│ │ │
└──────────────┴────────────────────────────────────────────┘
┌─────────────────────────────────────┐
│ [Search bar] 🔍 [+ New] [Filter]│ ← Actions top-right
├─────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Card 1 │ │ Card 2 │ │ ← Grid of cards
│ │ [...] │ │ [...] │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Card 3 │ │ Card 4 │ │
│ │ [...] │ │ [...] │ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────┘
↑
Pagination: < 1 2 3 4 5 >
Document different UI states:
Empty State:
┌─────────────────────────────────┐
│ │
│ No items yet │
│ │
│ [ + Create First Item ] │
│ │
└─────────────────────────────────┘
Loading State:
┌─────────────────────────────────┐
│ │
│ Loading... │
│ ⏳ │
│ │
└─────────────────────────────────┘
Error State:
┌─────────────────────────────────┐
│ ⚠️ Error │
│ Something went wrong. │
│ [ Try Again ] │
└─────────────────────────────────┘
Use browser automation to capture existing product UI:
1. Open browser to product
2. Navigate to relevant screen
3. Take screenshot of specific component
4. Annotate what to match
Target component: [e.g., "Navigation bar"]
Screenshot: [Capture of existing nav]
Annotations:
→ Match this exact color scheme
→ Use same button style
→ Keep icon placement consistent
Extract design system details:
From screenshot analysis:
Colors:
- Primary: #3B82F6 (blue)
- Secondary: #10B981 (green)
- Background: #F9FAFB (light gray)
Typography:
- Headings: 24px, bold
- Body: 16px, regular
- Labels: 14px, medium
Spacing:
- Padding: 16px
- Gaps: 12px
- Border radius: 8px
Components:
- Button height: 40px
- Input height: 40px
- Card shadow: 0 1px 3px rgba(0,0,0,0.1)
New Feature: [Feature name]
Design Requirement: Match existing [Component]
Reference Screenshot: [Link/embedded image]
What to match:
✅ Color palette (use primary blue #3B82F6)
✅ Button style (rounded, 40px height)
✅ Spacing (16px padding, 12px gaps)
✅ Typography (16px body text)
What can differ:
⚠️ Layout structure (new feature has different content)
⚠️ Icon choices (use similar style from icon library)
┌─────────────────────────────────────┐
│ │
│ [ App Logo ] │
│ │
│ Welcome Back! │
│ Sign in to continue │
│ │
│ Email │
│ [_____________________] │
│ │
│ Password │
│ [_____________________] 👁️ │
│ │
│ [x] Remember me Forgot pwd? │
│ │
│ [ Sign In ] │
│ │
│ ─────── or ─────── │
│ │
│ ( Sign in with Google ) │
│ ( Sign in with GitHub ) │
│ │
│ Don't have an account? Sign up │
│ │
└─────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────┐
│ 📊 Dashboard [Search...] 🔍 🔔 👤 ⚙️ │
└──────────────────────────────────────────────────────────────┘
┌────────┬─────────────────────────────────────────────────────┐
│ │ │
│ Home │ Overview │
│ Team │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ Files │ │ Total │ │ Active │ │ Revenue │ │
│ Reports│ │ Users │ │ Projects │ │ $125K │ │
│ Settings│ │ 1,234 │ │ 42 │ │ +12% ▲ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │
│ │ │
│ │ Recent Activity │
│ │ ┌──────────────────────────────────────────────┐ │
│ │ │ Project Alpha completed 2h ago │ │
│ │ │ New user signup: [email protected] 3h ago │ │
│ │ │ Team Beta shipped v2.0 5h ago │ │
│ │ │ [View All Activity →] │ │
│ │ └──────────────────────────────────────────────┘ │
│ │ │
└────────┴─────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────────┐
│ ⚙️ Settings │
└────────────────────────────────────────────────────────────┘
┌─────────┬──────────┬──────────┬──────────┐
│ Profile │ Security │ Billing │ Team │ ← Tabs
└─────────┴──────────┴──────────┴──────────┘
┌────────────────────────────────────────────────────────────┐
│ │
│ Profile Information │
│ ──────────────── │
│ │
│ Photo │
│ [ Avatar ] ( Upload New Photo ) │
│ │
│ Full Name │
│ [John Doe___________________________] │
│ │
│ Email Address │
│ [[email protected]___________________] │
│ │
│ Job Title │
│ [Product Manager____________________] │
│ │
│ Bio │
│ [____________________________________] │
│ [____________________________________] │
│ [____________________________________] │
│ │
│ [ Save Changes ] ( Cancel ) │
│ │
└────────────────────────────────────────────────────────────┘
┌──────────────────────┐
│ ☰ Logo 🔔 👤 │
└──────────────────────┘
│ │
│ Welcome, John! │
│ │
│ ┌────────────────┐ │
│ │ Quick Actions │ │
│ │ ────────────── │ │
│ │ + New Task │ │
│ │ 📊 View Stats │ │
│ │ 👥 Team │ │
│ └────────────────┘ │
│ │
│ Today's Tasks │
│ ──────────────── │
│ [x] Task 1 │
│ [ ] Task 2 │
│ [ ] Task 3 │
│ │
│ [View All →] │
│ │
└──────────────────────┘
Every napkin sketch delivery should follow this structure:
### [Feature Name] - Napkin Sketch
**Context:** [1-2 sentences on what this solves]
**Screens:** [N screens]
#### Screen 1: [Name]
[ASCII wireframe]
**Key interactions:** [What users can do]
**State variations:** [Empty, loading, error, success]
#### Screen 2: [Name]
[ASCII wireframe]
**Key interactions:** [What users can do]
**State variations:** [Empty, loading, error, success]
#### Flow Summary
[ASCII flow diagram showing screen-to-screen navigation]
e.g.,
[Screen 1] --click "Next"--> [Screen 2] --submit--> [Screen 3: Confirmation]
\--click "Back"--> [Screen 1]
#### Design Notes
- [Key design decisions and rationale]
- [Accessibility considerations]
- [Mobile considerations]
If the feature is primarily mobile or responsive, include a mobile viewport wireframe (320px width) alongside the desktop version.
Mobile frame format:
┌──────────┐
│ ☰ Logo │
├──────────┤
│ │
│ Content │
│ stacked │
│ vertically│
│ │
│ [Button] │
│ │
└──────────┘
When to include mobile wireframes:
Side-by-side format for responsive features:
Desktop (1024px+) Mobile (320px)
┌──────────┬────────────────────┐ ┌──────────┐
│ Sidebar │ Main Content │ │ ☰ Header │
│ │ │ ├──────────┤
│ │ │ │ Content │
└──────────┴────────────────────┘ └──────────┘
Boxes/Containers:
┌─┐ └─┘ ├─┤ ┬ ┴ ┼
Lines:
─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼
Arrows:
← → ↑ ↓ ↔ ↕
Bullets/Icons:
• ○ ◦ ■ □ ▪ ▫ ▸ ▹ ► ◄ ▲ ▼
Checkboxes:
[ ] [x] [~]
Common UI:
⚙️ 🔔 👤 📊 🗑️ ✏️ 🔍 + × ⋮ ☰
Feeds into:
/prd-draft - Include wireframes in PRDs/generate-ai-prototype - Use as reference for AI prototype prompts/catalyst-pm-ops:create-tickets - Engineers see wireframe in ticketFollows:
/interview-guide - Wireframes help structure interview questions/journey-map - Map user journey, wireframe each touchpointBefore creating any wireframe, check these sources:
| Source | Files | What to Extract |
| -------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------- |
| Active PRD | thoughts/shared/pm/prds/*.md | UI requirements, user flows, feature scope, non-goals (what NOT to design) |
| User Research | thoughts/shared/pm/*.md | Pain points to solve, user quotes about current UX frustrations |
| Stakeholder Profiles | thoughts/shared/pm/context/stakeholder-template.md | Designer preferences (e.g., Lisa wants accessibility-first), exec priorities |
| Design System | Any design docs or style references in workspace | Colors, component patterns, layout conventions to follow |
| Past Prototypes | thoughts/shared/product/prototypes/*.md | Existing wireframes for consistency, decisions already made |
| Business Context | thoughts/shared/pm/context/business-info-template.md | Product type, user personas, platform (web/mobile/both) |
Priority: PRD requirements first (the wireframe must match the spec), then user research (ground the design in real pain points), then past prototypes (maintain consistency).
Before delivering the napkin sketch, verify:
/generate-ai-prototype or /catalyst-pm-ops:create-ticketsIf any check fails, fix it before delivering. A 5-minute wireframe should save hours of miscommunication.
Remember: Wireframes are thinking tools, not art. Good enough to communicate is perfect. The best wireframe is the one you can draw in 5 minutes.
testing
Phase-agent that fixes a failing verify verdict so the pipeline self-heals instead of stalling to needs-human (CTL-653). Reads `${ORCH_DIR}/workers/<ticket>/verify.json`, fixes the `findings[]` (every severity:"high" plus the regression_risk drivers) directly via Edit/Write, commits the remediation, and emits `phase.remediate.complete.<ticket>`. The scheduler's router then re-dispatches `verify` to re-check (the verify⇄remediate cycle, cap 3). Dispatched as a `claude --bg` job by `phase-agent-dispatch`, which invokes it via slash command — hence `user-invocable: true`.
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
tools
Phase agent for the research step of the 9-phase orchestrator pipeline (CTL-450). Wraps /catalyst-dev:research-codebase and produces thoughts/shared/research/<date>-<ticket>.md, then emits phase.research.complete.<ticket>. Reads triage.json from the worker dir as its prior-phase artifact. Spawned via plugins/dev/scripts/phase-agent-dispatch, which invokes it via slash command — hence `user-invocable: true`.
development
Phase-agent wrapper that opens the pull request after implementation completes (CTL-449 Initiative 1 Phase 3). Delegates to `/catalyst-dev:create-pr` (which already auto-runs `describe-pr` and transitions Linear to `inReview`), then writes the PR number + URL into the phase signal file so the downstream `phase-monitor-merge` agent can read it without re-querying GitHub. Dispatched as a `claude --bg` job by `phase-agent-dispatch`, which invokes it via slash command — hence `user-invocable: true`.