# Pattern Debug

> Debug pattern errors systematically

- Skill: `majiayu000/pattern-debug-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add majiayu000/pattern-debug-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/pattern-debug-2/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/majiayu000/pattern-debug-2

---


# Debug Pattern

Use `Skill("ct")` for ct CLI documentation if debugging deployment or piece issues.

## Read First
- `docs/development/debugging/workflow.md` - 5-step debugging process
- `docs/development/debugging/README.md` - Error reference matrix

## Process

1. **Check TypeScript errors:**
   ```bash
   deno task ct check pattern.tsx --no-run
   ```

2. **Match error to documentation:**
   - Read the error message carefully
   - Check `docs/development/debugging/README.md` for matching errors

3. **Check gotchas:**
   - `docs/development/debugging/gotchas/handler-inside-pattern.md`
   - `docs/development/debugging/gotchas/filter-map-find-not-a-function.md`
   - `docs/development/debugging/gotchas/onclick-inside-computed.md`

4. **Simplify to minimal reproduction:**
   - Comment out code until error disappears
   - Add back piece by piece to find root cause

5. **Fix and verify:**
   - Apply fix
   - Run tests to confirm

## Common Issues

**Handler defined inside pattern body:**
- Move handler() to module scope
- Only bind it inside pattern: `onClick={myHandler({ state })}`

**Type errors with Writable/Default:**
- Check if field needs write access → use Writable<>
- Check if field could be undefined → use Default<T, value>

**Action not triggering:**
- Ensure Output type includes action as Stream<void>
- Use .send() not .get() to trigger

## Done When
- Root cause identified
- Error fixed
- Tests pass again

