🎯

pattern-schema

🎯Skill

from commontoolsinc/labs

VibeIndex|
What it does

Generates TypeScript schemas with Input/Output types for patterns, ensuring type safety and testability through structured type definitions.

pattern-schema

Installation

Install skill:
npx skills add https://github.com/commontoolsinc/labs --skill pattern-schema
1
AddedJan 27, 2026

Skill Details

SKILL.md

Design schemas.tsx with Input/Output types for patterns

Overview

Use Skill("ct") for ct CLI documentation when running commands.

# Schema Design Phase

Goal

Create schemas.tsx with all data types and Input/Output types BEFORE any pattern code.

Read First

  • docs/common/concepts/types-and-schemas/default.md
  • docs/common/concepts/types-and-schemas/writable.md
  • docs/common/concepts/pattern.md (Input/Output section)

Rules

  1. ALWAYS use pattern() - Never use single-type pattern(). Single-type patterns cannot be tested via .send().
  2. Every editable field needs Writable<> in Input type (for write access)
  3. Output types never use Writable<> - they reflect returned data shape
  4. Fields that could be undefined initially: use Default
  5. Actions in Output type: Stream (enables testing and linking)
  6. Sub-patterns need [NAME]: string and [UI]: VNode in Output type

Template

```tsx

import { Default, NAME, Stream, UI, VNode, Writable } from "commontools";

// ============ DATA TYPES ============

export interface Item {

name: Default;

done: Default;

}

// ============ PATTERN INPUT/OUTPUT ============

export interface ItemInput {

item: Writable; // Writable in Input = pattern will modify

}

export interface ItemOutput {

[NAME]: string; // Required for sub-patterns

[UI]: VNode; // Required for sub-patterns

item: Item; // No Writable in Output

toggle: Stream; // Actions as Stream

}

```

Done When

  • All data types defined with correct Writable/Default wrapping
  • All Input/Output types defined for each sub-pattern
  • No TypeScript errors: deno task ct check schemas.tsx --no-run