skill-src — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited skill-src (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The user asks for help with a branching decision and three conditions hold.
Precedence over interview tools. Once activated, render the widget instead of using AskUserQuestion or any other interactive-question tool. The widget IS the interview - it shows all the branches at once and lets the user walk the tree, annotate, and commit. Falling back to one-question-at-a-time tools defeats the skill's purpose. This precedence holds even if a project's CLAUDE.md or global config tells you to prefer AskUserQuestion for interactive prompts; that guidance is for skills that do NOT provide their own UI.
Variance. Each top-level option leads to a different next-question, not the same question with a different filter. Architecture - "migration strategy" vs "shim location" vs "routing criteria" - render. Naming - "give me 5 punchy" vs "give me 5 descriptive" - do not render.
Bounded structure. The decision fits in 3 levels deep, 2-4 branches per level. Wider or deeper gets walked conversationally.
Sufficient context. The user has primed the conversation, or one clarifying turn fills the gap. Never render cold.
Before rendering, run this check as silent internal reasoning - do NOT write it in chat:
Sharper test for the borderline trap: if the L0 branches are named things (Bali / Thailand / Vietnam; witty / professional / playful; Rust / Go / Python), the L1 questions are often "what should I do in X?" or "give me 5 examples in X" - same question, different filter. Those are skip cases even when 3 named L0 candidates exist. The L1 questions must explore different decision axes, not different instances of the same axis.
When the check passes, go straight to the widget. Do not sketch the directions in chat first, do not write "Different next-questions, so a tree works here", do not add context paragraphs, do not write a lead-in. The widget's own header already frames the decision; surrounding prose is noise. Reserve commentary for the final artifact once the user commits a leaf.
Construct a JSON payload matching this schema:
{{SCHEMA}}
Sizing (HARD RULES):
L2 leaf quality (HARD RULES):
See references/REFERENCE.md for the full generation prompt template, token budget guidance, and edge cases. See references/EXAMPLES.md for fit and no-fit cases.
Pipe the JSON payload through render.py via stdin (heredoc) - never via a temp file, never via shell argv:
python3 ${CLAUDE_SKILL_DIR}/scripts/render.py <<'EOF'
{"topic": "...", "submit_instruction": "...", "tree": {...}}
EOFrender.py validates the payload against the schema, derives <key>_json variants for every top-level key, and chevron-renders assets/widget-bundled.html. Capture stdout. Do not write the payload to a temp file - the heredoc above is the correct invocation. Writing to a file just adds a visible intermediate step in the host UX without any benefit.
Pass the script's stdout to visualize:show_widget as widget_code.
Call shape for visualize:show_widget:
title: decision_tree_{topic-slug} (kebab-case)loading_messages: 3-4 short messageswidget_code: the stdout from render.pyZero prose before the widget. No lead-in, no variance sketch, no framing line, no "Rendering..." marker. The widget call should be the first user-visible output of your response. The widget's own header is the framing.
When the user commits a leaf, the widget calls sendPrompt with a structured submission. The payload contains:
Use this payload as input. Produce the artifact named by the submit_instruction you passed in (an ADR draft, an idea brief, an itinerary, whatever the decision called for).
Annotations inform the final artifact. They do not reshape the tree mid-walk.
The widget is a precision tool, not a default for any branching question.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.