# Tlamatini Flw Doctor

> Validate a .flw workflow file: check connection topology, terminal agents, Parametrizer single-lane queue, missing connectors, dangling target_agents.

- Skill: `xaiht/tlamatini-flw-doctor` (Agent Skill)
- Install (CLI): `npx skillmds@latest add xaiht/tlamatini-flw-doctor`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xaiht/tlamatini-flw-doctor/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: XAIHT (https://skillmd.com/u/xaiht)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/xaiht/tlamatini-flw-doctor

---

<!--
═══════════════════════════════════════════════════════════════════
  ✦  T L A M A T I N I  ✦   —   "one who knows"
  Created by  Angela López Mendoza   ·   @angelahack1
  Developer · Architect · Creator of Tlamatini
  Tlamatini Author Banner — do not remove (Angela's name is kept in every build)
═══════════════════════════════════════════════════════════════════
-->

# .flw doctor

Statically validate a .flw file.

Checks:

1. JSON parses; required keys present (`version`, `agents`, `connections`).
2. Every node's `type` is a known agent type (mirrors the agent-folder list).
3. Every connection's `from` and `to` reference real node ids.
4. No `target_agents` connection points at Stopper / Ender / Cleaner —
   those use `output_agents` per the agent contract.
5. Parametrizer nodes have at most one inbound and one outbound
   `target_agents` edge (single-lane queue invariant).
6. Terminal agents (Emailer / Notifier / RecMailer / Monitor-*)
   have NO outbound `target_agents`.
7. Logic gates: OR / AND have exactly 2 inbound source connections;
   Barrier has N>=2; Asker / Forker have exactly 2 outbound branches
   (`target_agents_a` / `target_agents_b`); Counter has 2
   (`target_agents_l` / `target_agents_g`).

Return `{ ok, problems: [{node_id, kind, message}, ...], summary }`.

## Current installed-agent contract — 2026-09-15

Use `agent/agents/flowcreator/flow_catalog.json` for canonical names, current config schemas, output/input slots, lifecycle flags and structured fields for all 89 installed types. GUI-Manager is design only. After changing a template/contract/reference, run `python scripts/update_flow_catalog.py` and its `--check` mode in the repository. Deployment refreshes runtime snapshots.

FlowCreator selects capabilities before detailed design, validates the generated plan, and uses bounded repair. Declare Ender input connections explicitly; Ender `target_agents` is a kill list. Counter uses L/G slots; source dependencies do not choose a conditional output branch. Generated Parametrizers require valid `_parametrizer_mappings`, one source and one target. Do not maintain a separate hardcoded Parametrizer producer list.

For desktop flows, use explicit physical/screenshot geometry and verified target windows. `input_sent` is input delivery only; errors may be partial and must not be blindly replayed. Read `docs/desktop-input-and-flow-contracts.md` and `docs/agent-coverage.md` for the full contract and verification scope.

