Commit Graph
37 Commits
Author SHA1 Message Date
buildnwriteandGitHub aebcb5dd24 fix(lint): allow Korean fallback stacks (#83)
Document and validate exact Korean proportional and monospace fallback stacks, with strict regression coverage and synchronized plugin version 2.4.6.
2026-08-18 00:18:33 -07:00
Aaron Roe FulkersonandGitHub aa6cd4e630 fix(lint): restore Python 3.9 compatibility (#58)
Add deferred annotation evaluation, enforce Python 3.9 linter coverage in CI, and publish synchronized plugin version 2.4.4.
2026-08-17 23:35:56 -07:00
4a769fe3eb fix(mermaid): parse quoted participants, create, and the full sequence arrow vocabulary (#54)
* 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>
2026-08-17 15:00:41 -07:00
AtirnaandGitHub 7ed2b20a5a fix(lint): allow CJK fallback stacks documented in output-spec.md (#75)
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
2026-08-17 13:44:37 -07:00
Cathryn LaveryandGitHub 09df49d8d1 Add named client profiles (#61)
* 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.
2026-08-14 14:28:44 -07:00
kira-ariakiandGitHub 2d4697446b fix(examples): stop label masks being clipped by node fills (#46)
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.
2026-08-12 21:50:16 -07:00
Cathryn Lavery b6cae1e2e6 feat(plugin): automatic updates via native marketplaces and a version gate
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.
2026-08-12 20:34:32 -07:00
Cathryn Lavery dbc4abd965 feat(skill): pre-draw checkpoint, docs-sync gate, packaged self-check, ADRs
- 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
2026-08-12 17:00:08 -07:00
Cathryn Lavery 8a6623ad88 fix(motion): harden accessible motion contract 2026-08-12 15:31:48 -07:00
Cathryn Lavery e2ed1925c4 [verified] add semantic patterns and accessible motion 2026-08-12 14:08:50 -07:00
Cathryn Lavery 86dda261a3 ci: align matrix with current verification gates 2026-08-12 10:08:08 -07:00
Cathryn Lavery c492b1d98f Merge remote-tracking branch 'origin/main' into codex/pr28-final 2026-08-12 10:07:10 -07:00
Cathryn Lavery 50b54ef2f6 fix(icons): preserve inline style declarations 2026-08-12 10:01:44 -07:00
Cathryn Lavery 2d9dba47d2 Merge remote-tracking branch 'origin/main' into codex/pr32-final
# Conflicts:
#	.github/workflows/ci.yml
2026-08-12 10:01:44 -07:00
Cathryn Lavery 26ca6df028 Merge remote-tracking branch 'origin/main' into codex/pr31-final
# Conflicts:
#	.github/workflows/ci.yml
2026-08-12 09:58:27 -07:00
Mr-Neutr0n d22686be01 fix(icons): normalize quoted URL SVG attributes
Signed-off-by: Mr-Neutr0n <harikp2002@gmail.com>
2026-08-12 17:15:22 +05:30
Mr-Neutr0n 99bc4cb0be fix(icons): preserve Devicon viewBox dimensions
Signed-off-by: Mr-Neutr0n <harikp2002@gmail.com>
2026-08-12 17:12:33 +05:30
Mr-Neutr0n af6bc62799 fix: repair mojibake arrow directions
Signed-off-by: Mr-Neutr0n <harikp2002@gmail.com>
2026-08-12 15:52:47 +05:30
Praveen Bishnoi 5f3aa8fdda fix(ci): enable Python UTF-8 mode globally and enforce utf-8 encoding in subprocess verify scripts for Windows 2026-08-12 13:20:58 +05:30
Praveen Bishnoi f73ef478cc fix(ci): fix Windows line-ending CRLF diff issues in build-icons script and git checkout 2026-08-12 13:12:49 +05:30
Cathryn Lavery 1387e57bf8 fix(import): support current Mermaid syntax 2026-08-11 21:37:11 -07:00
Cathryn Lavery 8e1276a6ec Merge remote-tracking branch 'origin/main' into codex/pr24-final 2026-08-11 21:37:11 -07:00
Matt Van Horn 9a3e7e35b2 fix: validate accessible-name IDs against the diagram slug 2026-08-11 19:40:06 -07:00
Matt Van Horn a4be5bed0d fix: parse class suffixes, labeled dotted/thick links, and frontmatter 2026-08-11 19:31:39 -07:00
Matt Van Horn 9e50da6d67 fix: address self-review findings 2026-08-11 19:25:40 -07:00
Matt Van Horn 19561779c6 fix: address self-review findings 2026-08-11 19:25:07 -07:00
Matt Van Horn d5c0075f75 fix: address self-review findings 2026-08-11 16:51:56 -07:00
Matt Van Horn 410e2f6627 fix: address self-review findings 2026-08-11 16:44:04 -07:00
Matt Van Horn 9e336ad538 fix: address self-review findings 2026-08-11 16:42:51 -07:00
Cathryn Lavery 6508d2e43e fix(import): harden draw.io extraction 2026-08-11 13:55:37 -07:00
ClaudeandCathryn Lavery ced802198d feat(import): redraw draw.io files at a chosen format, size, and detail level
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
2026-08-11 13:51:30 -07:00
Praveen Bishnoi f49a0cbc7e fix(scripts): replace blocked svgrepo URL for SAS icon in build-icons.py 2026-08-11 11:37:53 +05:30
ActArtechandGitHub c5805a0c7f fix(sequence): dash OAuth returns and align type-sequence docs (#14)
Polish after #13: 401 and retry 200 use dashed return strokes on all
three OAuth examples; first API activation bar covers the happy-path
return; type-sequence return rules no longer contradict the message table;
README quickstart names bearer+refresh rather than a full OAuth handshake.
verify-sequence-oauth.py now checks dashed returns and activation height.
2026-08-10 23:24:51 -05:00
8827b27739 feat(sequence): combined fragments (alt/opt/loop) + OAuth example (#13)
Expand type-sequence.md with fragment frames, async open arrowheads,
complexity budget, and anti-patterns. Add bearer+refresh special examples
(light/dark/full) without changing the cold-cache trio. Wire README/SKILL
budget and a verify script that drives lint-skin.py.

Co-authored-by: wolf10drc <alaa@golead.io>
2026-08-10 11:44:04 -07:00
Cathryn Lavery d683918d7d Add terminal primitive: charcoal-black CLI-window skin
Optional skin for dev-tool/CLI-product social cards — titlebar chrome,
monospace type throughout, one red-orange accent. Self-contained token
table in style-guide.md so the palette linter checks it like any other
skin; flagship example built on the Loop type.
2026-07-14 20:20:21 -07:00
Cathryn Lavery e175eb723b Add Loop type (flywheel) + palette linter
- 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.
2026-07-14 19:41:17 -07:00
Cathryn LaveryandAristide 2e9cefb9f3 Merge curated fork work: 12 new diagram types, icons, export, onboarding v2
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>
2026-07-14 17:09:25 -07:00