framework/engineering/skills/flowai-skill-interactive-teaching-materials/SKILL.md
Creates interactive HTML teaching materials with clickable state diagrams. Use when the user asks to produce an explorable tutorial artifact, not to answer a question.
npx skillsauth add korchasa/flowai flowai-skill-interactive-teaching-materialsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The diagram is a navigation surface. Every element is clickable and opens a detail panel with rich text. The value is in the details, not in the arrows.
When one-word labels on arrows are enough — use Mermaid (flowai-skill-draw-mermaid-diagrams). This format is for when every state and transition deserves paragraphs of context, config snippets, HTTP payloads, and debugging tips.
document.createElementNS if offline use is requireddetails: {} — every element must teach somethingDetails is an HTML string combining:
<pre> (the exact artifact)<ul> (what varies)If details is a JS object instead of a string, the template renders it as highlighted JSON — useful for API payloads but not the primary mode.
const TITLE = "string"; // Page title
const DOC_URL = "string"; // Optional link to external docs (shown in toolbar)
const ACTORS = ["A", "B", "C"]; // Horizontal actor columns, left to right
const STEPS = [
{
name: "string", // Required. Short label on the arrow (3-5 words)
from: "A", // Required. Actor name (must match ACTORS)
to: "B", // Required. Actor name (must match ACTORS)
preview: "string", // Optional. Secondary label below the arrow (e.g. "GET /authorize")
description: "string", // Required. 1-3 sentences for the inspector summary
details: "html string" // Required. Rich HTML for the inspector detail panel
}
];
const TITLE = "string";
const DOC_URL = "string";
const NODES = [
{
id: "string", // Required. Unique identifier, used in EDGES
type: "action|state|decision|start|end", // Required. Determines shape
label: "string", // Required. Short label inside the shape (2-4 words)
x: 320, // Required. Center X position in pixels
y: 160, // Required. Center Y position in pixels
description: "string", // Required. 1-3 sentences for the inspector summary
details: "html string" // Required. Rich HTML for the inspector detail panel
}
];
const EDGES = [
{
from: "node_id", // Required. Source node id
to: "node_id", // Required. Target node id
label: "string", // Optional. Short label on the edge (e.g. "ok", "fail")
fromSide: "bottom", // Optional. Attach point: "top"|"bottom"|"left"|"right". Default: "bottom"
toSide: "top", // Optional. Attach point. Default: "top"
description: "string", // Required. 1-3 sentences for the inspector summary
details: "html string" // Required. Rich HTML for the inspector detail panel
}
];
Node types and their shapes:
action — rounded rectangle (140x44). General processing stepstate — rounded rectangle with gray fill. Resting/waiting statedecision — diamond (60x44). Branching pointstart — filled circle (r=22). Entry pointend — filled circle with inner ring. Terminal stateassets/ — it has a full working example// === DATA === and // === END DATA ===) with your data following the schema abovefromSide/toSide on edgestools
Delegate a task to another AI IDE's CLI (codex / claude / opencode / cursor-agent) through an isolated-context subagent. Triggers on "delegate to <ide>", "have <ide> do <task>", "execute <task> in <ide>", "offload to <ide>". For one-shot relay or fan-out comparison use `ai-ide-runner` instead.
tools
Run prompts in Claude Code, OpenCode, Cursor, or Codex CLIs from the current session — pick one IDE, fan out across several, or compare models. You are a courier that relays the other runtime's stdout verbatim, do not synthesise your own answer. Use on "run in <ide>", "compare <ide> vs <ide>", "try on <model>", "which IDE handles X better", "run across models".
tools
Recommend which LLM model to use for a task. Use when asked "which model / best LLM for X", "pick a model for this task", or for a model shortlist ranked by live leaderboard evidence (coding, reasoning, agentic, tool-use, price, speed). Live-fetches public leaderboards and ranks models with per-axis rationale and citations.
development
Produce a comprehensive Product Requirements Document (PRD). Use when the user asks to write a PRD or formalize a feature's scope, goals, and success metrics.