src/autoskillit/skills_extended/vis-lens-always-on/SKILL.md
Create Always-On visualization triage report running three sequential analysis passes (anti-pattern, accessibility, annotation completeness) and emitting a combined PASS|WARN_N|FAIL_N verdict. Composite lens answering "What are the blocking visualization issues?"
npx skillsauth add talont-org/autoskillit vis-lens-always-onInstall 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.
Philosophical Mode: Composite Primary Question: "What are the blocking visualization issues?" Focus: Anti-Pattern Detection, Accessibility, Annotation Completeness — combined triage
/autoskillit:vis-lens-always-on [context_path] [experiment_plan_path]
/autoskillit:vis-lens-always-onNEVER:
{{AUTOSKILLIT_TEMP}}/vis-lens-always-on/ALWAYS:
Run all three passes in sequence; do not skip any pass
Tally critical_count and warning_count across all three passes
BEFORE creating any diagram, LOAD the /autoskillit:mermaid skill using the Skill tool - this is MANDATORY
If the Skill tool cannot be used (disable-model-invocation) or refuses this invocation, do NOT proceed with diagram creation. Abort this step and omit the diagram from output.
Write output to {{AUTOSKILLIT_TEMP}}/vis-lens-always-on/vis_spec_always_on_{YYYY-MM-DD_HHMMSS}.md (relative to the current working directory)
After writing the file, emit the structured output token as literal plain text with no markdown formatting on the token name (the adjudicator performs a regex match):
diagram_path = /absolute/path/to/{{AUTOSKILLIT_TEMP}}/vis-lens-always-on/vis_spec_always_on_{...}.md
If positional arg 1 (context_path) is provided and the file exists, read it to obtain IV/DV tables, H0/H1 hypotheses, controlled variables, and success criteria. If positional arg 2 (experiment_plan_path) is provided and exists, read the experiment plan for full methodology. Use this structured context as the foundation for all three passes; skip the CWD exploration for these fields if the context file supplies them.
Before running passes, build a complete figure inventory from the experiment plan, context file, code, and any existing output files. Every figure in this inventory is checked in all three passes.
Check all figures against the 16 anti-patterns from vis-lens-antipattern:
| ID | Severity | |----|----------| | ap-3d-bar | critical | | ap-dual-axis | critical | | ap-rainbow | critical | | ap-single-seed | critical | | ap-truncated-bar | critical | | ap-spider-radar | warning | | ap-spaghetti | warning | | ap-bar-no-error | warning | | ap-smoothed-hidden | warning | | ap-violin-small-n | warning | | ap-cherry-baseline | warning | | ap-overplotting | warning | | ap-tsne-distance | warning | | ap-tsne-no-perplexity | warning | | ap-embedding-single-seed | warning | | ap-area-encoding | info (counts as 0 in tally) |
Tally: pass1_critical_count, pass1_warning_count
For each figure, check all four accessibility criteria:
fontsize args in code or figure config. (PASS if ≥ 8pt or undetectable; FAIL → warning)Tally: count failures as pass2_warning_count (accessibility failures are warnings, not critical)
For each figure, check all five annotation criteria:
Tally: count failures as pass3_warning_count
critical_count = pass1_critical_count
warning_count = pass1_warning_count + pass2_warning_count + pass3_warning_count
if critical_count > 0:
verdict = f"FAIL_{critical_count}"
elif warning_count > 0:
verdict = f"WARN_{warning_count}"
else:
verdict = "PASS"
Emit the yaml:spec-index triage index (NOT yaml:figure-spec — this is a triage summary,
not a per-figure spec). Then LOAD /autoskillit:mermaid and create the triage diagram.
# Always-On Triage Report: {System / Experiment Name}
**Lens:** Always-On Triage (Composite)
**Question:** What are the blocking visualization issues?
**Date:** {YYYY-MM-DD}
**Scope:** {What was analyzed}
## Triage Index
```yaml
# yaml:spec-index — Always-On triage index
verdict: "FAIL_3" # PASS | WARN_N | FAIL_N
critical_count: 3
warning_count: 5
pass_1_antipattern: ["ap-single-seed", "ap-rainbow", "ap-dual-axis"]
pass_2_accessibility:
colorblind_safe: true
font_size_ok: false
no_color_only_encoding: true
captions_present: false
pass_3_annotation:
all_titles: true
axis_labels: false
legends_ok: true
stat_overlay_labeled: false
data_pointer: true
figures_with_critical: ["fig-01-main-results", "fig-03-ablation"]
| Figure | Anti-Patterns Found | Severity | |--------|---------------------|----------| | {fig-01} | ap-single-seed, ap-rainbow | critical, critical | | {fig-03} | ap-dual-axis | critical | | {fig-02} | ap-bar-no-error | warning |
| Check | Result | Notes | |-------|--------|-------| | colorblind_safe | PASS | wong palette used throughout | | font_size_ok | FAIL | fig-02 axis labels at 6pt | | no_color_only_encoding | PASS | shapes used alongside color | | captions_present | FAIL | fig-01, fig-03 missing captions |
| Check | Result | Notes | |-------|--------|-------| | all_titles | PASS | all figures have titles | | axis_labels | FAIL | fig-02 y-axis missing units | | legends_ok | PASS | all multi-series figures have legends | | stat_overlay_labeled | FAIL | fig-01 error bars unlabeled | | data_pointer | PASS | all figures reference source |
%%{init: {'flowchart': {'nodeSpacing': 50, 'rankSpacing': 60, 'curve': 'basis'}}}%%
flowchart TB
%% CLASS DEFINITIONS %%
classDef cli fill:#1a237e,stroke:#7986cb,stroke-width:2px,color:#fff;
classDef stateNode fill:#004d40,stroke:#4db6ac,stroke-width:2px,color:#fff;
classDef handler fill:#e65100,stroke:#ffb74d,stroke-width:2px,color:#fff;
classDef newComponent fill:#2e7d32,stroke:#81c784,stroke-width:2px,color:#fff;
classDef output fill:#00695c,stroke:#4db6ac,stroke-width:2px,color:#fff;
classDef detector fill:#b71c1c,stroke:#ef5350,stroke-width:2px,color:#fff;
classDef gap fill:#ff6f00,stroke:#ffa726,stroke-width:2px,color:#000;
subgraph Pass1 ["PASS 1: ANTI-PATTERN"]
P1["{N} critical<br/>━━━━━━━━━━<br/>{ap-ids found}"]
end
subgraph Pass2 ["PASS 2: ACCESSIBILITY"]
P2["{N} warnings<br/>━━━━━━━━━━<br/>{failed checks}"]
end
subgraph Pass3 ["PASS 3: ANNOTATION"]
P3["{N} warnings<br/>━━━━━━━━━━<br/>{failed checks}"]
end
VERDICT["{FAIL_3 / WARN_5 / PASS}<br/>━━━━━━━━━━<br/>critical={N}, warning={M}"]
P1 --> VERDICT
P2 --> VERDICT
P3 --> VERDICT
class P1 detector;
class P2 gap;
class P3 handler;
class VERDICT cli;
Color Legend: | Color | Category | Description | |-------|----------|-------------| | Red | Pass 1 Critical | Anti-pattern findings (critical) | | Amber | Pass 2 Warnings | Accessibility failures | | Orange | Pass 3 Warnings | Annotation completeness failures | | Dark Blue | Verdict | Combined PASS/WARN_N/FAIL_N |
---
## Pre-Diagram Checklist
Before creating the diagram, verify:
- [ ] LOADED `/autoskillit:mermaid` skill using the Skill tool
- [ ] Using ONLY classDef styles from the mermaid skill (no invented colors)
- [ ] Diagram will include a color legend table
- [ ] All three passes completed before computing verdict
- [ ] yaml:spec-index emitted (not yaml:figure-spec)
- [ ] verdict is FAIL_N if critical_count > 0, WARN_N if warning_count > 0, PASS otherwise
development
Generate YAML recipes for .autoskillit/recipes/. Use when user says "make script skill", "generate script", "script a workflow", "write a script", "create a script", "new recipe", "write a pipeline", or when loaded by other skills for script formatting.
data-ai
Create Uncertainty Representation visualization planning spec showing error bar definitions, distribution-aware alternatives, and multi-seed variance protocols. Statistical lens answering "How is uncertainty honestly represented?"
data-ai
Create Temporal Dynamics visualization planning spec showing axis scaling (linear vs log), smoothing disclosure, epoch/step alignment, run aggregation (mean + variance bands), early-stopping markers, and wall-clock vs step-count x-axis. Temporal lens answering "Are training dynamics shown clearly and honestly?"
data-ai
Create Narrative Story Arc visualization planning spec showing visual consistency across the report (same color = same model everywhere), logical figure progression, redundant figure detection, and narrative dependency between figures. Narrative lens answering "Do the figures tell a coherent story across the report?"