Added descriptions for the shipped datalake examples (example-datalake.html,
-datalake-dark.html, -datalake-full.html) to the High-Level type reference,
categorising the five-phase data stack as an unclustered High-Level variant.
Fold all line-boundary forms and escape Markdown/HTML syntax in draw.io digest headings, lists, and tables; add adversarial injection coverage; publish synchronized plugin version 2.5.1. Fixes#81.
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.
Recognize compact Mermaid edge labels without phantom nodes while preserving near-miss operators and chained links, with regression coverage and synchronized plugin version 2.4.8. Fixes#80.
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.
Align the documented draw.io import and diagram export commands with the shipped plugin command filenames, and publish synchronized plugin version 2.4.5.
* fix(mermaid): parse quoted participants, create, and the full sequence arrow vocabulary
The shipped sequenceDiagram extractor silently dropped or rejected
Mermaid-valid constructs:
- `participant "Alice Smith"` (quoted name, no alias) vanished from the
IR because the participant regex only accepted bare [\w.:-]+ ids.
- `participant "Alice Smith" as A` and `actor "Bob Builder" as B`
lost their quoted display names and aliases.
- `create participant B` directives were ignored.
- Bidirectional messages `A<<->>B` / `A<<-->>B` (Mermaid v11.0+)
hard-failed with "malformed edge".
- `->` / `-->` (open arrows with no arrowhead per the Mermaid docs)
were misclassified as filled arrows.
- A message touching a declared `actor` overwrote its shape with
"lifeline" because endpoints were force-added as lifelines.
The fix expands the participant regex to quoted names (with or without
an `as` alias) plus the `create` prefix, teaches the message regex the
bidirectional and open arrow forms, preserves declared actor shapes, and
classifies open arrows as undirected with no arrowhead. Multi-word
endpoints introduced by quoted declarations resolve correctly while
compact forms like `A-->>B` keep their ids. All forms were verified
against the real Mermaid v11.16.1 parser.
Adds a verification gate covering every form and updates the import
reference to document the supported sequence grammar.
* chore: bump plugin version to 2.4.2
---------
Co-authored-by: Cathryn Lavery <50469282+cathrynlavery@users.noreply.github.com>
Co-authored-by: Cathryn Lavery <cathryn@bestself.co>
Extend lint-skin.py font allowlist with the Hiragino/Noto/Yu Gothic
families from output-spec.md §4 and add adversarial tests including a
Yu Gothic UI rejection case.
Fixes#74
* 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.
Rename remaining "Schematic" references to diagram / diagram-design / Diagram Design across SKILL.md, onboarding.md, and style-guide.md. Rebased onto current main and bumped both plugin manifests to 2.3.5. Thanks @philyuchkoff.
* feat(motion): add base SVG layout and trust boundaries for example-paved-road-animated.html
* feat(motion): add 5-step interactive semantic items for Pattern #5 (Secure Paved Road)
* feat(motion): attach canonical SHA-pinned controller and WCAG AA controls
* docs(gallery): register example-paved-road-animated.html in assets/index.html gallery
* fix(motion): adjust attacker node Y and bypass connector to run cleanly through empty gap without crossing audit service box
* fix(motion): redesign paved road architecture with dedicated firewall node and solid opaque badge chips
* fix(motion): add signature legend bar and route audit connectors clear of firewall node
* docs(motion): add footer legend bar to fan-in queue animated diagram
* fix(motion): implement true SVG visual legend footer with mini-arrows and mini-rects
* fix(motion): correct Security Gate deployment flow, SOC arrow direction, and footer legend labels
* fix(motion): complete footer legend with 4 distinct box types matching diagram elements exactly
* chore(clean): remove queue diff from paved-road branch so diff contains only paved-road example
* chore(release): bump plugin version to 2.3.4 for synchronized version gate
* feat(motion): add example-queue-animated.html for Semantic Pattern #1 (Fan-in Queue / Bottleneck)
* docs(gallery): register example-queue-animated.html in assets/index.html gallery
* fix(motion): adjust queue container height and step 5 box placement to prevent overlap
* fix(motion): expand slot rects and right column nodes to eliminate text overflow
* chore(release): bump plugin version to 2.3.3 for synchronized version gate
* docs(motion): add footer legend bar to fan-in queue animated diagram
* fix(motion): implement true SVG visual legend footer with mini-arrows and mini-rects
* fix(motion): unify queue depth status badge into a single dynamic full-height badge
* fix(motion): refine queue traffic rates and state description for realistic backpressure math
Installs previously drifted: a standalone `npx skills add` copy never
followed the repo, and Claude Code disables auto-update for third-party
marketplaces by default. Route every client through its own marketplace so
merged changes reach users through the native update path.
- Add `.agents/plugins/marketplace.json` so Codex resolves the plugin from
a Git marketplace it refreshes at startup.
- Add `author` to the Claude manifest so both native manifests agree.
- Add `scripts/bump-plugin-version.py` to increment the Claude and Codex
versions together; it refuses to run when they already differ.
- Add `scripts/verify-plugin-package.py` to gate synchronized, strictly
increasing semver against the base ref, marketplace paths that stay
inside the repo root, and the packaged skill.
- Add `scripts/test-plugin-package.py` covering the adversarial cases:
missing bump, mismatched manifests, malformed semver, and a marketplace
target that does not exist.
- Add a `plugin-package` CI job running the tests, the version gate against
the PR base sha, and `claude plugin validate . --strict`.
- Document the per-PR bump requirement, the new gates, and the per-client
install/update paths, including the one-time migration off standalone
copies.
Version bumps 2.3.0 -> 2.3.1 to satisfy the new gate.
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
- 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>