brainstorming
Structured design dialogue that validates ideas before implementation begins.
ascii-diagrams
Create and fix ASCII diagrams, tables, wireframes, box-drawings. Use when message contains Unicode box characters (┌┐└┘│─), user asks to create/fix text visualization, align borders, or fix broken ASCII art. Triggers on "поправ діаграму", "fix diagram", "create table", "вирівняй", "align boxes".
Full skill instructions
Create and repair pixel-perfect monospace diagrams, tables, and wireframes.
Every character counts. In monospace, misaligned borders break visual structure instantly.
Always validate diagrams before committing:
python scripts/validate_boxes.py <file.md> # Check for issues
python scripts/validate_boxes.py <file.md> --fix # Auto-fix width issues
Corners: ┌ ┐ └ ┘ (light) ╔ ╗ ╚ ╝ (double)
Lines: ─ │ (light) ═ ║ (double)
T-joins: ┬ ┴ ├ ┤ (light) ╦ ╩ ╠ ╣ (double)
Cross: ┼ (light) ╬ (double)
Rounded: ╭ ╮ ╰ ╯ (rounded corners)
┌─────────────┬────────────┬───────┐
│ Column 1 │ Column 2 │ Col 3 │
├─────────────┼────────────┼───────┤
│ Value here │ Another │ 123 │
│ More data │ Content │ 456 │
└─────────────┴────────────┴───────┘
Construction rules:
┌ + ─ × width + ┬ between columns + ┐│ separators├ + ─ × width + ┼ between columns + ┤└ + ─ × width + ┴ between columns + ┘When ASCII boxes render poorly, use pipe tables:
| Status | Count | Action |
|-------------|-------|----------|
| Connected | 42 | None |
| Pending | 7 | Review |
╭────────────────────────────────────────╮
│ Modal Title ✕ │
├────────────────────────────────────────┤
│ │
│ Content area with description │
│ text that explains the action. │
│ │
│ ┌──────────────────────────────────┐ │
│ │ Input field │ │
│ └──────────────────────────────────┘ │
│ │
│ [Cancel] [Confirm] │
│ │
╰────────────────────────────────────────╯
┌──────────────────────────────────┐
│ ◉ Card Title [···] │
├──────────────────────────────────┤
│ │
│ Card content goes here with │
│ multiple lines of text. │
│ │
│ ● Status: Active │
│ ○ Priority: Medium │
│ │
└──────────────────────────────────┘
┌────────────────────────────────────────────────┐
│ Header │
├────────────┬───────────────────────────────────┤
│ │ │
│ Sidebar │ Main Content │
│ │ │
│ ○ Nav 1 │ ┌──────────┐ ┌──────────┐ │
│ ● Nav 2 │ │ Card 1 │ │ Card 2 │ │
│ ○ Nav 3 │ └──────────┘ └──────────┘ │
│ │ │
├────────────┴───────────────────────────────────┤
│ Footer │
└────────────────────────────────────────────────┘
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Start │────▶│ Process │────▶│ End │
└─────────┘ └─────────┘ └─────────┘
┌─────────┐
│ Input │
└────┬────┘
│
▼
┌─────────┐
│ Decide │
└────┬────┘
│
┌─────┴─────┐
▼ ▼
┌─────────┐ ┌─────────┐
│ Yes │ │ No │
└────┬────┘ └────┬────┘
│ │
└─────┬─────┘
▼
┌─────────┐
│ Output │
└─────────┘
┌───────────────────────────────────────────────┐
│ Frontend │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ React │ │ Zustand │ │ Query │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
└───────┼─────────────┼─────────────┼───────────┘
│ │ │
└─────────────┼─────────────┘
│ HTTP/WS
▼
┌───────────────────────────────────────────────┐
│ Backend │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ FastAPI │──│ Services │──│ Models │ │
│ └──────────┘ └────┬─────┘ └────┬─────┘ │
└─────────────────────┼─────────────┼───────────┘
│ │
┌─────────────┴─────────────┘
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Postgres│ │ NATS │ │ Redis │
└─────────┘ └─────────┘ └─────────┘
Status: ● active ○ inactive ◐ partial
Checkbox: ☑ checked ☐ unchecked ☒ disabled
Arrows: → ← ↑ ↓ ▶ ◀ ▲ ▼ ➜ ➤
Progress: ▓▓▓▓▓░░░░░ (50%)
Stars: ★★★☆☆ (3/5)
Bullets: • ◦ ‣ ⁃
Standard: [Button] [ OK ] [Cancel]
Primary: 【Submit】 ⟦ Action ⟧
Rounded: ( Click ) ( Go )
Before manually fixing, run this diagnostic:
python3 << 'EOF'
diagram = """
PASTE_DIAGRAM_HERE
"""
print("Line-by-line analysis:\n")
for i, line in enumerate(diagram.strip().split('\n'), 1):
has_broken = '�' in line or '\ufffd' in line
marker = '⚠️ BROKEN CHAR' if has_broken else ''
print(f"{i:2d}: len={len(line):3d} {marker}")
if has_broken:
# Find position of broken chars
for j, c in enumerate(line):
if c == '�' or ord(c) == 0xFFFD:
print(f" Position {j}: replacement character (corrupted Unicode)")
EOF
Common diagnostic findings:
| Finding | Cause | Fix |
|---|---|---|
len varies by 1-2 | Missing/extra spaces | Pad to max length |
⚠️ BROKEN CHAR | Corrupted Unicode (copy/paste issue) | Replace � with ─ |
| Very different lengths | Nested box misalignment | Realign inner boxes |
─ count must equal bottom│ must be in same column┌┐ top, └┘ bottom, never mixed� (U+FFFD replacement character)Issue: Jagged right edge
❌ BROKEN ✅ FIXED
┌───────────────────┐ ┌───────────────────┐
│ Short │ │ Short │
│ Much longer text│ │ Much longer text │
└──────────────────┘ └───────────────────┘
Fix: Pad shorter lines with spaces to match longest line.
Issue: Mismatched borders
❌ BROKEN ✅ FIXED
┌───────────────────┐ ┌───────────────────┐
│ Content | │ Content │
└──────────────────-┘ └───────────────────┘
Fix: Use consistent box characters (│ not |, ─ not -).
Issue: Wrong corner characters
❌ BROKEN ✅ FIXED
+-------------------+ ┌───────────────────┐
| Content | │ Content │
+-------------------+ └───────────────────┘
Fix: Replace ASCII + - | with proper box drawing characters.
Before committing any ASCII diagram:
□ All horizontal borders same length
□ All vertical bars aligned in columns
□ Corners use correct characters (┌┐└┘)
□ Content properly padded with spaces
□ No mixed ASCII/Unicode border chars
□ Renders correctly in monospace font
□ Width fits target display (80-120 chars typical)
□ Run: python scripts/validate_boxes.py <file>
| Context | Max Width | Notes |
|---|---|---|
| Markdown docs | 80 chars | Traditional terminal width |
| Code comments | 72 chars | Leaves room for indent |
| Wide displays | 120 chars | Modern monitors |
| GitHub README | 100 chars | Optimal for web rendering |
XXX then replacevalidate_boxes.py before savingStructured design dialogue that validates ideas before implementation begins.
Comprehensive design intelligence for web and mobile UI/UX across 10 technology stacks.
Comprehensive implementation plans for multi-step tasks, breaking down specs into bite-sized, testable steps.
Introduction to the obra skills system with mandatory skill invocation rules and best practices.
Execute a written implementation plan with critical review and task checkpoints.
Delegate independent tasks to specialized agents working concurrently with isolated context.
Isolated git worktrees with smart directory selection and safety verification.
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Plan searchable and shareable content that drives traffic, builds authority, and generates leads.
README-first repository scanner that extracts commands and classifies reproduction candidates without executing them.
Brainstorm and prioritize marketing strategies tailored to your SaaS stage, budget, and goals.
Plan and optimize your website's page hierarchy, navigation, URL structure, and internal linking.
The world's fastest calendar for remote work
Capture, organize, and utilize your knowledge effortlessly.
Instant Summaries of Audio & Video Interviews with AnySummary
Transform PDFs into engaging mind maps.
Chat with any PDF instantly
Create an optimal daily plan using your voice
A productivity platform to centralize organizational knowledge and workflows with contextual AI assistance.
AskYourPDF Pricing Plans: Tailored to Your Needs