Generate Explainer Html logo

Generate Explainer Html

Community
hirokita117
generate-explainer-html

turn core.yaml + view.yaml (the explainer's meaning + presentation strategy) — plus quiz.yaml when present — into a self-contained html bundle that helps users understand documents, repositories, pull requests, design notes, or specifications. the bundle has a light/dark shell whose right pane switches between multiple iframe view documents, and copyable prompt templates that ask a local-file-reading ai to add another switchable view. an interactive quiz tab (comprehension check with instant grading) is added by default unless the user explicitly declines. use when the user has (or wants) a core.yaml/view.yaml pair and wants a visual html explainer, or wants to add a new representation (table, worktree, cards, faq, beginner, engineer, pdm view, quiz, …) to an existing bundle. produce the yaml first with the generate-explainer-yaml skill.

Overview

Publisherhirokita117
Repositoryyaml-to-html-skill
Skill namegenerate-explainer-html
Stars
78
Forks
3
Bundled files
11
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 11 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by hirokita117 on GitHub. Read the source before you install it.

Installation

Install the Generate Explainer Html AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/hirokita117/yaml-to-html-skill/tree/main/skills/generate-explainer-html
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/hirokita117/yaml-to-html-skill.git /tmp/yaml-to-html-skill
mkdir -p .claude/skills
cp -r /tmp/yaml-to-html-skill/skills/generate-explainer-html .claude/skills/generate-explainer-html
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Generate Explainer Html in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Generate Explainer Html on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Generate Explainer Html is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

generate-explainer-html

Turn a core.yaml (meaning) + view.yaml (presentation strategy) pair into a self-contained HTML bundle that:

  • shows a tailored explanation UI inside an iframe, with a view switcher in the right pane so the reader can flip between multiple representations, and
  • offers copyable prompt templates outside the iframe so the user can ask another local-file-reading AI to add another switchable view.

This is the second half of the pipeline. The core.yaml / view.yaml come from the generate-explainer-yaml skill (or the user). This skill reads them by absolute path, authors iframe view documents, and assembles the bundle.

core.yaml + view.yaml (+ quiz.yaml)  (from generate-explainer-yaml)
  ↓ design + generate (this skill)
HTML bundle: index.html (light/dark shell + view switcher + prompt cards)
             + views/NN-<id>.html  (one switchable iframe view each, incl. a quiz tab)

The bundle (the output)

The output is a directory, not a single file:

<bundle>/
  index.html          shell: header (theme toggle) + left prompt pane + right view switcher + ONE <iframe>
  views.json          ordered manifest of views {id, label, file}
  core.yaml           copied in (its absolute path is cited by the prompts)
  view.yaml           copied in
  quiz.yaml           copied in when present (comprehension-check questions)
  views/
    01-<id>.html       an iframe view document (full <!DOCTYPE html>, light default)
    02-<id>.html

The right-pane iframe loads one view at a time via src="views/<file>"; the tab switcher swaps it. Views are additive — each new one becomes another tab; existing views and the shell/prompts are never rewritten.

Do not hand-edit index.html or the prompts — scripts/build_html.py is their only author. You author iframe view documents only. Do not build a web app, server, API, or chat UI, and do not depend on any external CDN/CSS/JS.

Steps

  1. Get the YAML files. Take the absolute paths to core.yaml, view.yaml, and (by default) quiz.yaml (from the generate-explainer-yaml skill, or the user). Read them. If they don't exist yet, produce them with generate-explainer-yaml first.

  2. Author one iframe view document — a full <!DOCTYPE html> document tailored to the target and reader. Choose the form(s) from view.yaml (table, worktree, cards, faq, comparison, sequence, reading path, risk/dependency/impact map, glossary, tutorial, review checklist, …). It must include source references, important concepts, relations, what to read next, and next questions, and have real visual structure. It must be light by default and read #theme from its own URL hash (load + hashchange). Inline CSS/JS only; no network. Follow references/html-generation-rules.md. Example: references/sample-iframe.html.

  3. Author the quiz view document (default — skip only on explicit opt-out). Unless the user explicitly declined a quiz, also author an interactive quiz view from quiz.yaml (or, if no quiz.yaml exists, derive items from core.yaml): answer → instant grading → explanation, order adapted to the view.yaml audience and per-item difficulty. Rules: references/quiz-view-rules.md. Example: references/sample-quiz-iframe.html.

  4. Author the prompt templates as a prompts.json array — the "add a view" cards (table, worktree, beginner, engineer, PdM/Biz, quiz, free-form). Each cites the YAML via {{core_yaml_path}} / {{view_yaml_path}} (the quiz card also {{quiz_yaml_path}}) and must not embed YAML content. Patterns: references/prompt-template-patterns.md. Starter set: references/sample-prompts.json.

  5. Build the bundle with scripts/build_html.py (see below). Pass --core / --view / --quiz (copied in; their absolute paths feed the prompt placeholders) and one or more --view-html "ラベル=その.html" — including the quiz view, e.g. --view-html "クイズ=quiz.html".

  6. Validate the bundle with scripts/validate_html.py on index.html and every views/*.html. Fix any error and re-validate until it exits 0.

  7. Hand the user the bundle folder with open instructions (below). Summarize which views exist and which "add a view" templates are available.

Adding a view later (the additive flow)

To add a representation next to the existing ones — do not overwrite:

  1. Author one more iframe view document (or have a local-file-reading AI do it via a copied prompt — those prompts already say "read the YAML at the given path; return one new view").
  2. Re-run the build with only the new view:
    bash
    python scripts/build_html.py --bundle <dir> --prompts <prompts.json> \
      --view-html "テーブル=table.html"
    It appends the view to views.json and regenerates index.html with a new tab. The existing views, the shell, and the prompts are preserved. (Re-running with an existing label updates that view in place instead of duplicating it.)

Using the scripts

Note: invoke with python3 if python is not on PATH.

Build / grow the bundle:

bash
python scripts/build_html.py \
  --bundle ./explainer-bundle \
  --core /abs/path/core.yaml \
  --view /abs/path/view.yaml \
  --quiz /abs/path/quiz.yaml \
  --prompts prompts.json \
  --view-html "エンジニア=engineer.html" \
  --view-html "クイズ=quiz.html"

--bundle and --prompts are required; --core / --view / --quiz are optional (recommended — the prompts cite their absolute path) and are left in place on a re-run if omitted; --view-html is repeatable and appends/updates views.

Validate (safety / self-containment check), including every view file:

bash
python scripts/validate_html.py ./explainer-bundle/index.html ./explainer-bundle/views/*.html

build_html.py is an assembler, not a renderer: it never turns core.yaml into a fixed diagram. The understanding UI is the iframe view document(s) you authored in step 2.

Opening the bundle

  • Chrome/Edge block file:// iframe loads. Open index.html in Firefox over file://, or serve the folder with a trivial local static server (e.g. python3 -m http.server run inside the bundle dir — it reads only local files; the no-network rule constrains the content, not how you serve the folder).
  • The right-pane tabs switch views; the header toggle flips light/dark for the shell and propagates the theme into the iframe via the #theme hash.

Troubleshooting

  • validate_html.py fails on an http:// / https:// string — a URL leaked into a source_ref or a prompt body. URLs are labels here, not live links: drop the scheme (write example.com/path) or remove the URL, then re-validate.
  • validate_html.py fails on fetch( / XMLHttpRequest / localStorage / etc. — the forbidden token appears literally inside a prompt body or a view. Reword it generically; see references/prompt-template-patterns.md → "Safety wording inside prompt bodies".
  • Iframe is blank in Chrome over file:// — expected; use Firefox or serve the folder.
  • build_html.py: --view-html must be "LABEL=PATH" — pass each view as ラベル=パス.
  • build_html.py: no views to build — pass at least one --view-html, or build into a bundle that already has a views.json.
  • A view tab 404s — its views/NN-*.html was removed; rebuild it with --view-html.
  • Empty or trivial input — if there is no real target to explain, ask the user for the actual document / repo / PR and produce the YAML first; do not emit an empty explainer.

Try it with the bundled sample

bash
python scripts/build_html.py \
  --bundle ./sample-bundle \
  --core ../generate-explainer-yaml/references/sample-core.yaml \
  --view ../generate-explainer-yaml/references/sample-view.yaml \
  --quiz ../generate-explainer-yaml/references/sample-quiz.yaml \
  --prompts references/sample-prompts.json \
  --view-html "エンジニア=references/sample-iframe.html" \
  --view-html "クイズ=references/sample-quiz-iframe.html"

python scripts/validate_html.py ./sample-bundle/index.html ./sample-bundle/views/*.html

Open sample-bundle/index.html (Firefox / served). The right pane shows an engineer-oriented PR explanation (worktree + reading order + review checklist) plus an interactive quiz tab; the left pane has the copyable "add a view" templates and the YAML viewers.

Reference material

  • references/html-generation-rules.md — safety + UI rules for view documents (src-loaded iframe, light default, #theme hash)
  • references/quiz-view-rules.md — rules for the interactive quiz view (per-type rendering, grading contract, audience adaptation)
  • references/output-bundle-structure.md — the bundle's structure and shell
  • references/prompt-template-patterns.md — "add a view" prompt templates + path placeholders
  • references/sample-iframe.html — sample iframe view (engineer)
  • references/sample-quiz-iframe.html — sample interactive quiz view
  • references/sample-prompts.json — sample "add a view" templates
  • references/examples.md — three worked reader views
  • agents/openai.yaml — portable description of this skill for non-Claude agents
  • YAML schema (produced by the sibling skill): ../generate-explainer-yaml/references/ (core-yaml-schema.md, view-yaml-schema.md, quiz-yaml-schema.md)

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Generate Explainer Html AI skill do?

turn core.yaml + view.yaml (the explainer's meaning + presentation strategy) — plus quiz.yaml when present — into a self-contained html bundle that helps users understand documents, repositories, pull requests, design notes, or specifications. the bundle has a light/dark shell whose right pane switches between multiple iframe view documents, and copyable prompt templates that ask a local-file-reading ai to add another switchable view. an interactive quiz tab (comprehension check with instant grading) is added by default unless the user explicitly declines. use when the user has (or wants) a...

Why use Generate Explainer Html on TypingMind?

Because you install it once and use it with any model. Generate Explainer Html is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Generate Explainer Html in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/hirokita117/yaml-to-html-skill/tree/main/skills/generate-explainer-html. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Generate Explainer Html?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Generate Explainer Html?

As many as you like. As long as a model supports skills, you can use Generate Explainer Html with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Generate Explainer Html AI skill free?

Yes. It is published on GitHub by hirokita117 under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇