Feature · @linda/skills

Eight skills you can install.

Each skill is a directory: an instructions file the LLM reads, a JSON schema for outputs, optional examples. The LLM opts into the ones it needs and ignores the rest.

The shape of a skill

/skills/installed/resume-intake/
├── SKILL.md          # natural-language instructions the LLM reads
├── schema.json       # JSON schema for the structured output
└── examples/
    ├── good-1.json
    └── good-2.json

The LLM doesn't read every skill into context at startup. It reads /skills/index.json to know what's available, then opens SKILL.md for the one it picks. Context-efficient.

The eight built-ins

resume-intake

Read a dropped resume (PDF/DOCX), extract structured fields, auto-fill the form.

kyc-id-check

ID photo → OCR → structured fields. Capability-gated on file/camera support.

payment-intake

Card details captured one field at a time with PCI-friendly mode (offload to provider).

signature-capture

Trackpad/touch signature → base64 PNG → posted to your endpoint.

consent-flow

Read T&Cs aloud, capture explicit consent, log timestamp + IP for audit.

multi-step-wizard

Page-by-page wizard pattern — auto-detects sections, shows progress.

calendar-booking

Pick a slot via natural language; integrates with Cal.com / Google Calendar.

address-verify

Free-text → structured address, hit a verification service if mounted.

Define your own

import { defineSkill } from "@linda/skills";

export const lead_qualifier = defineSkill({
  name: "lead-qualifier",
  instructions: `
    Ask BANT questions one at a time. Score the lead 0-100.
    Return tier: hot | warm | cold.
  `,
  schema: {
    type: "object",
    required: ["score", "tier"],
    properties: {
      score: { type: "number" },
      tier: { type: "string", enum: ["hot", "warm", "cold"] },
    },
  },
});

Read the full skills docs →

Ship an agent-driven flow this afternoon.

Install Linda, paste a config, and your form turns into an agent that fills its own inputs.