* fix(commands): stop hardcoding the visual-type count
Integrates the final reviewed diff from PR #112.
* docs(high-level): correct effective width checklist
Integrates the final reviewed diff from PR #105.
* fix(commands): quote profile argument hint
Integrates the final reviewed diff from PR #126.
* test(sankey): gate conservation and ribbon geometry
Integrates the final reviewed diff from PR #103.
* feat(tooling): add doctor diagnostics gate
Integrates the final reviewed diff from PR #132.
* feat(scripts): lint diagrams as rendered
Integrates the final reviewed diff from PR #18.
* feat(types): add quantitative polar chart
Integrates the final reviewed diff from PR #101.
* chore(release): consolidate reviewed changes in 2.6.0
Documents every combined gate and synchronizes Claude, Codex, and Factory metadata for the 39-type release.
* fix(doctor): support installed-skill projects
---------
Co-authored-by: mysoniw <soniw1@gmail.com>
Co-authored-by: thang <76550342+thangldw@users.noreply.github.com>
Co-authored-by: YinShaokun <yinshaokun@didiglobal.com>
Co-authored-by: 0xDarkMatter <0xDarkMatter@users.noreply.github.com>
Co-authored-by: Rupam Pal <rupam.pal@euromonitor.com>
Co-authored-by: Yuvraj3905 <yuvraj202001@gmail.com>
* fix(treemap): verify every cell's area, including cells too small to label
Closes#89.
The area check derived its basis from in-cell labels, so a cell with no
label was excluded from it. That is precisely the sliver -- the cell a
4px grid distorts most, and the one that shipped 24% undersized during
review of #87. On current main, widening Oceania from 16px to 24px, a
50% area distortion, still reports OK.
Every cell now declares `data-share`, its percentage of the whole, and
the verifier checks all of them against it. Cells without it are
reported rather than skipped: a treemap whose cells cannot be parsed is
not a passing treemap, it is an unchecked one, and answering OK to it is
the defect. The label and the metadata are also cross-checked, because
two statements of one fact is a new way for the picture to lie while the
gate stays green.
Adversarial tests gain the oversized and undersized unlabelled sliver
(both pass on current main and fail here), a fail-closed case for
missing metadata, and a label/metadata divergence case.
SKILL.md `metadata.version` said 2.4 against 2.5.0 manifests. The
manifests are bumped by a script and that field is hand-maintained, so
nothing read both numbers and nothing could notice. verify-plugin-package
now asserts it tracks the manifest MAJOR.MINOR. The package test's
fixture gains the field with it -- a SKILL.md without one is not a valid
package, and a fixture missing it would only prove the gate can be
tripped by its own test data.
The examples regained the `PARTS ROUNDED, MAY NOT SUM` disclosure the
type reference requires: displayed parts round up to 8.10B against a
stated 8.09B. It was dropped when the examples were rebuilt around the
legend block. The anti-pattern list, which still forbade outright what
the honest-data rule permits once disclosed, now agrees with it.
Also nudges the info mark onto the label row of its neighbours rather
than the vertical centre of its own cell, so the bottom row reads as one
row.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(treemap): reject ambiguous share metadata
---------
Co-authored-by: 0xDarkMatter <0xDarkMatter@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Adds ten editorial diagram types with light, dark, and full-editorial examples; updates the taxonomy, gallery, descriptions, references, and synchronized plugin version; and adds maintainer/visual-proof contribution gates.
Co-authored-by: Jacopo Vendramin <vendraminjacopo@gmail.com>
Add Treemap as the 28th visual type with light, dark, and editorial variants; area, label, and information-marker verification; synchronized documentation and manifests; and plugin version 2.5.0.
Extend the verified label-mask width range to 200px while retaining the 14px height cap, with adversarial and shipped-asset coverage, and publish synchronized plugin version 2.4.7.
* feat: add client profiles
* ci: pin shell to bash for docs_sync step
The docs_sync step runs two commands in a multi-line block. Without a
pinned shell, the windows-latest matrix leg uses pwsh, where a non-zero
exit from the first command may not abort the block, masking a gate
failure. Pin shell: bash to match the icons and summary steps.
Moves six clipped labels onto free connector segments and adds scripts/verify-geometry.py with tests, CI wiring, ADR 0005, and SKILL.md rule 6 so the defect cannot recur. Fixes#45.
- SKILL.md: confirm type/pattern/size/cuts with the user before rendering;
checklist hooks for the checkpoint and the packaged self-check
- scripts/verify-docs-sync.py: CI now fails when the frontmatter description
loses a type's lexical hook, the gallery can't reach a shipped example, or
the README tree names a missing file
- skills/diagram-design/scripts/self_check.py: distilled output checker that
ships with the skill so installed agents can verify their own diagrams;
adversarial suite in scripts/test-self-check.py
- assets/index.html: six new tabs (OAuth sequence + five single-variant
examples with a data-single variant lock) so every shipped example is
browsable
- docs/adr/0001-0004: settled policies recorded (pinned controller, taxonomy
freeze, reveal-only autoplay, byte cap + trigger-rich description)
- README: It's-working-if section, new gates documented; CONTRIBUTING: gate
table, ADR guidance, type-addition invariants; CI: two new steps
Adds a draw.io import path to the skill. Points at a .drawio file and
produces an editorial diagram fitted to where it's going — not a
format conversion.
- scripts/drawio_extract.py: decodes all four containers draw.io writes
(raw XML, deflate+base64 payloads, PNG tEXt chunks, SVG content attrs),
flattens mxGraphModel into absolute-positioned nodes/edges, and reports
structural signals: hubs, containers, depth, cycles, collapsible leaf
groups, budget flags. Deterministic half — makes no design decisions.
- references/output-spec.md: the three dials. Nine size presets with
per-size-class type ramps and safe areas; faithful/balanced/simplified
detail levels with a fixed degrade ladder; engineer/mixed/executive
audience wording; fidelity ledger; CJK font fallback.
- references/import-drawio.md: the redraw procedure — extract, set dials,
pick type, build the semantic model, redraw on the grid. Includes the
draw.io palette/shape → semantic role mappings, multi-page handling,
edge cases, and anti-patterns.
- commands/import-drawio.md: /diagram-design:import slash command.
- SKILL.md: new §11 (import + output dials), taste-gate entries, §12 output.
- export.md: sizing section — scale factors and exact-pixel targets.
- assets/example-import-drawio.html: worked import of the checked-in
fixture at balanced/doc-inline, lint-clean.
- scripts/verify-drawio-import.py: drives the real extractor against the
fixture in all four containers and checks the references stay in sync.
faithful is the one documented exemption from the §7 complexity budget,
and it's conditional: zoned above 9 nodes, split above 24. The §6
connector rules never relax for imported content.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M5f1aK1zNcgnQUnXZgG2LU
All six ring connectors are now arcs of the same radius-240 circle
(clockwise sweep, station-edge landings) instead of a mix of arcs and
right-angled verticals. type-loop.md mandates ring arcs as the type's
connector grammar — a documented exception to SKILL.md §6 rule 1, same
precedent as medallion's promotion arcs — and adds the mixed
arc + orthogonal ring as an anti-pattern. Screenshot recaptured.
- New type #27: Loop — ring of 5-8 stations around exactly one hub,
solid flow arrows around the ring, dashed write-back spokes into
the hub. Reference doc with ring layout math, budget, and
anti-patterns; flagship example "The self-improving loop" in
light/dark/full variants; gallery tab; README showcase under the
hero image.
- scripts/lint-skin.py — contributor palette linter: reads allowed
tokens from style-guide.md at runtime, flags off-palette hexes,
pure black, external assets, scripts, and off-system fonts.
Baseline file grandfathers pre-2.0 examples; --all --baseline is
green.
- Linter immediately caught 36 near-miss hexes in 9 of the newly
regenerated examples; swapped to exact series-palette tokens and
recaptured the affected screenshots.
Imports the substantive work from the aristide/diagram-design fork (PR #9)
as a curated set:
- 12 new diagram types with reference docs: radar, bar, line, gantt,
scatter, it-state, high-level, process, medallion, data-flow,
dp-integration, dp-security-matrix (26 types total)
- 86-icon monochrome IT/cloud primitive, build script, and gallery
- /diagram-design:export command with PNG/SVG export reference
- Onboarding v2: URL, skill, and folder design-token sources
- Mandatory connector rules (orthogonal elbows, label gaps, fanned
attach points, bridge crossings) + architecture/ER connector upgrades
- Series palette tokens for multi-series chart types
- THIRD_PARTY_LICENSES.md covering Tabler, Simple Icons, log-z, Devicon
Not taken from the fork: plugin-manifest identity changes, the client-brand
takeover of style-guide.md, and client-branded example files. The six
affected type examples were regenerated in the neutral editorial skin with
generic content, and their README screenshots recaptured. Reference docs
for those types were rewritten to semantic tokens and typography roles.
Version: 1.0.0 -> 2.0.0.
Co-authored-by: Aristide <mendoo.aristide@gmail.com>
Applied the same clean treatment as the X-shareable meme: drop the
arrow glyphs and high/low parentheticals, use single words at each
arrow tip (REMOTE / IN-PERSON on the vertical axis, HUMAN / AI on
the horizontal). Also fixes a pre-existing bug where the axis labels
didn't match the corner tags — cells now align cleanly:
01·REMOTE/HUMAN (Distributed humans), 02·REMOTE/AI (Agent teams, focal),
03·IN-PERSON/HUMAN (Office classic), 04·IN-PERSON/AI (In-person + AI).
Screenshot regenerated at 2× DPI.
Why: the default skin was too warm/neutral and the pyramid + venn never
quite read the way they should. Also prepping for public sharing, so the
example diagrams needed to drop the littlemight-specific copy.
Changes:
- New five-color palette: jet-black ink, atomic-tangerine accent,
white-smoke paper, blue-slate muted, silver hairlines. Replaces
warm-stone + rust across every variant + dark-mode tokens.
- Default background is clean paper; dot grid + framed container are
now opt-in variants (uncomment in template to enable).
- New consultant-special quadrant variant (example-quadrant-consultant.html)
— 2×2 scenario matrix with named cells, double-ended axes, one focal
quadrant; house skin, not a separate visual language.
- Pyramid redrawn as a true triangular silhouette with shared edges on
one slope (stacked polygons on a single triangle outline, no kinks).
- Venn redesigned: dark-fill triple-intersection with white text,
circle labels moved inside non-overlap lobes, pair-overlap labels
removed, legend dropped.
- Example content genericized (content site / product timeline /
content platform instead of littlemight-branded copy).
- Screenshots regenerated at 2× DPI; added quadrant-consultant.png
(14th diagram in the gallery).
- README: hero-first opener, preserved Why-I-built-it section, UTM
tags on littlemight + bestself links, palette description updated.
Thirteen editorial diagram types (architecture, flowchart, sequence,
state, ER, timeline, swimlane, quadrant, nested, tree, layers, venn,
pyramid) as self-contained HTML files with inline SVG.
Progressive disclosure: lean SKILL.md points to per-type references.
Neutral stone+rust default skin, first-run gate that prompts users
to customize the style guide from their own website, URL-based
onboarding, annotation-callout primitive, sketchy filter variant,
live gallery at assets/index.html.