Third-Party Notices¶
muriel incorporates work from the projects listed below. Their license terms are reproduced in full as required.
Acknowledged inspiration not incorporated¶
SVG Wave¶
anup-a/svgwave made layered SVG-wave
generation approachable and directly inspired the decision to add
muriel.patterns.wavefield().
No SVG Wave source code, assets, dependencies, algorithms, UI, presets, or generated files are copied, translated, vendored, imported, or linked into muriel. The Muriel primitive is an independent Python implementation based on seeded harmonic synthesis, caller-supplied normalized series, and a standard Catmull-Rom-to-cubic interpolation construction.
This separation is deliberate: SVG Wave's repository LICENSE prohibits
commercial use and modification, while its package.json declares ISC. This
notice credits the project as inspiration; it does not claim that its code is
licensed for incorporation into Muriel.
diagram-design¶
The layout proportions and conventions for the layer_stack, pyramid, and
swimlane diagram generators (muriel/tools/diagrams/layer_stack.py,
muriel/tools/diagrams/pyramid.py, muriel/tools/diagrams/swimlane.py) —
band/tier/lane heights, the linear-taper and proportional-width rules, lane
dividers and handoff emphasis, label placement, and the single-focal-accent
convention — are adapted from the diagram-design Claude Code skill.
- Source: https://github.com/cathrynlavery/diagram-design
- Adapted: 2026-05 (diagram-design relicensed to MIT)
- Upstream re-checked: 2026-08-13 — the three adapted references (
type-layers.md,type-pyramid.md,type-swimlane.md) are unchanged since the adaptation, so this notice still describes what muriel carries. Upstream has grown substantially elsewhere; the delta is summarised in the README's "Related prior art" entry.
muriel's own contribution is the deterministic Python generators, the epistemic-precondition / anti-prescription gate on each diagram, the 8:1 contrast floor (stricter than the source's WCAG AA), and integration with muriel's brand tokens. The source's typefaces and colour system were not adopted.
Two verification ideas were adapted from the same repository (upstream commit
dc1ace4, 2026-09-19) on 2026-09-24:
- Accessible-SVG lint rules —
muriel/tools/diagrams/_a11y.py::lint_a11yre-implements the rule set ofscripts/lint-skin.py::lint_accessible_svgs(withscripts/test-lint-a11y.pyas the fixture model): skiparia-hidden="true"SVGs; requirerole="img", a four-number viewBox with positive size,<title>as the first child, a<desc>, slug-prefixed non-duplicate ids, andaria-labelledbynaming the title then the desc. The 60-character title bound followsskills/diagram-design/scripts/self_check.py. - Slopegraph conventions —
muriel/tools/diagrams/comparison_pair.pyfollowsreferences/type-line.md(slopegraph variant): one scale shared by both axes, a run narrower than the plot is tall, dots and printed values at both ends, no gridlines, muted lines plus one weighted accent, and labels bound to their series bydata-*attributes. The shared-scale and no-jitter checks intests/test_diagram_comparison_pair.pyfollowscripts/verify-slopegraph.py. The label-spreading policy (labels move, endpoints never do) and the trace form are muriel's own. - Relative-error fidelity check —
tests/test_diagram_fidelity.pychecks proportional funnel widths as relative error against the values, the framing ofscripts/verify-treemap.py's area-fidelity invariant, applied to bar width instead of cell area. - Motion contract — the static-first rule, the none / reveal / step / loop
modes with reveal as the only autoplay, the 3 s decorative-loop floor, and the
8-step / 2-per-step / 12-item sequence budget follow
references/animation.mdand ADRs 0001 / 0003. They land inreferences/polish-rules.md(rules 28–29) andmuriel/motion.py(validate_mode,validate_flash_rate,validate_sequence_shape). The upstream clock tokens and pinned controller were not adopted. - Treemap —
muriel/tools/diagrams/treemap.pyfollowsreferences/type-treemap.mdfor geometry and conventions: squarified layout, 4–8 cells with a named "Other", 4px gutters, the large / medium / small / sliver label tiers with a 16px top-left inset, the rank-ordered ink ramp with one accent cell, anddata-shareon every cell.tests/test_diagram_treemap.pychecks area as relative error per cell, the invariant ofscripts/verify-treemap.py, at a 4% bound. The gutter-compensating weight correction is muriel's own; no source files were copied. - Diagram guidance — behaviour-first pattern routing, the generator
admission rule, callout discipline, the global node/arrow budget, and the
redraw degrade ladder in
channels/diagrams.md, plus the per-element removal test inagents/muriel-critique.md, paraphrasereferences/semantic-patterns.md,references/output-spec.md,references/primitive-annotation.md, and the skill's SKILL.md. - Sankey conventions (adapted 2026-09-24) —
muriel/tools/diagrams/sankey.pyfollowsreferences/type-sankey.mdfor the 12px node bar, one global px-per-unit scale, midline Bézier control points, the single accent path painted last, column-specific label placement and the 3-stage / 8-node / 12-flow budget;tests/test_diagram_sankey.pychecks the invariants named inscripts/verify-sankey.py(conservation, stage totals, ribbon width constancy, relative value fidelity, square-on arrival). Bars are not rounded to the 4px grid, sub-4px flows raise rather than fold, and ribbons are written as flattened polylines so the contrast audit can score the labels. - Tree —
muriel/tools/diagrams/dendrogram.pytakes its node proportions (120–180 × 40–52, at most two widths), the orthogonal elbow-bus connectors drawn before the nodes, the 4-level / 5-children budget, the no-skipped-levels rule and the single accent on the root or one critical leaf fromreferences/type-tree.md. The contour-based tidy-tree placement, the measured leaf-extent budget,collapse_over, and the DAG / treemap / process routing gates are muriel's. - Comparison heat-grid —
muriel/tools/diagrams/heat_grid.pytakes its cell geometry (116×56, 4px gap, 80px minimum width), the 3–7 row / 3–8 column budget, the single ink ramp with a single accent focal cell excluded from the scale, the 0.07 ramp floor and 0.70 ceiling, and the don'ts (hue per row, diverging ramp for unsigned data, gradient legend, dropped rows) fromreferences/type-heatmap.md.tests/test_diagram_heat_grid.pyfollowsscripts/verify-heatmap.py'sdata-row/data-col/data-valuebinding and monotone-fill check (±0.03). The per-brand ramp-ceiling solve for 8:1 value labels, the quantized stepped legend and the n/a cells are muriel's. - Cycle hub (adapted 2026-09-24) — the
hub=option ofmuriel/tools/diagrams/cycle.pyfollowsreferences/type-loop.md: one central accumulated-state node drawn inverted (ink fill, paper text), dashed write-back spokes as true radii from each station's inner edge that stop a 6px marker gap short of the hub, drawn beneath the stations, "one hub" and "a hub is state, not a step". The spoke-subset selection, the ring growth that keeps an 18px minimum spoke, and the measured hub box are muriel's. - Icon build pipeline —
scripts/build_diagram_icons.pyadapts the structure ofscripts/build-icons.py(a curated slot → upstream-id manifest with one-line blurbs, fetch with a local vendor cache, normalize, emit a committed artifact). The icon source differs (Lucide, not Tabler) and so does the normalization: muriel keeps inner markup only, strips presentation attributes, and rewrites primitives as<path>. - Causal / dependency DAG —
muriel/tools/diagrams/dag.pytakes fromreferences/type-dependency.mdthe ranked layers (120px pitch), the 160×56rx=6node box, theN infan-in badge in a smallrx=2box, the budget (9 nodes, 14 edges, 4 ranks, 1 highlighted cycle), the single dashed5,4accent back-edge routed around the outside of the stack, and the tree-shaped-data anti-pattern. It takes from SKILL.md's connector rules the orthogonal elbows withr=8corners, attach points ≥12px apart on a shared side, no transit behind a non-endpoint box, and drawing edges before nodes. The layout algorithm (longest-path ranking, barycenter ordering with adjacent swaps, isotonic-regression placement, per-channel jog tracks), the forward-cycle and tree-precondition errors, and the single-accent rule (upstream allows two) are muriel's. - Spectrum —
muriel/tools/diagrams/spectrum.pytakes its dumbbell conventions fromreferences/type-bar.md's dumbbell variant: horizontal rows on one shared scale, hollow reference end and solid end, connector drawn before the dots, unsnapped data coordinates, value labels placed outside the pair by geometry with the floor exception, never-truncate / never-clamp, and a stated row order;references/type-line.mdfor the shared-scale rule. The two named poles, the explicitzero=choice for a scale that excludes zero, the change arrowhead, theextentmode and the 8:1 tokens are muriel's.
The code is muriel's own (ElementTree rather than the source's HTMLParser,
and wired into muriel diagram-check); apart from the extractor below, no
source files were copied.
Additions on 2026-09-24 (upstream commit dc1ace4):
- Excalidraw extractor — copied, not adapted.
muriel/tools/excalidraw_extract.pyisskills/diagram-design/scripts/excalidraw_extract.pyverbatim, with only a leading comment block added (provenance plus this MIT notice).tests/test_excalidraw_extract.pypins the body to the upstream file's sha256, so a local edit fails the suite; re-copy upstream fixes instead of patching. The fixtures intests/fixtures/excalidraw/are copied from upstreamscripts/fixtures/, and the test ports the essential checks ofscripts/verify-excalidraw-import.py. - Strict SVG export —
muriel/tools/diagrams/_export.py::strict_svgadapts thergba()/transparentnormalisation and the 1–4 raster-scale rule fromreferences/export.md, extended by muriel to inline styles,<style>blocks, 8-digit hex and opacity multiplication.
MIT License
Copyright (c) 2025 Cathryn Lavery
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
ui-ux-pro-max corpus¶
The CSV reference data under muriel/uipromax/data/ (colors.csv,
typography.csv, ui-reasoning.csv, ux-guidelines.csv, styles.csv,
charts.csv, icons.csv) is a verbatim port of the ui-ux-pro-max skill's
data files — product-type colour sets, font pairings, UI-reasoning rules, UX
guidelines, design styles, chart taxonomy, and an icon index.
- Source: https://github.com/nextlevelbuilder/ui-ux-pro-max-skill
- Via: https://github.com/All-The-Vibes/ATV-Design (
skills/ui-ux-pro-max/) - Adapted: 2026-06 (both upstreams MIT)
muriel's own contribution is the accessor layer (muriel/uipromax/__init__.py)
and the 8:1 contrast re-gate: the colour sets target WCAG 3:1/AA, so each is
measured against muriel's universal 8:1 floor via muriel.contrast. The data
itself is unchanged; muriel adds no colours. The source palettes' interactive
pairs (On Primary, On Accent, destructive, muted-on-muted) are reported as
sub-8:1 and not adopted as compliant — only the body-text pairs that clear
8:1 are surfaced as muriel starting points. A copy of the upstream MIT license
also ships at muriel/uipromax/LICENSE.txt.
MIT License
Copyright (c) 2024 Next Level Builder
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
emil-design-eng-inspired (motion principles)¶
The motion-quality axes added to muriel/motion.py (compositor-safe property
set, easing-by-direction, entrance scale floor) and to
plugins/muriel/skills/compose/channels/polish.md (rules 18–22) are paraphrased
from the emil-design-eng-inspired skill — itself MIT-licensed original prose
that the ATV-Design authors wrote as a clean-room paraphrase of Emil Kowalski's
emil-design-eng skill.
- Source: https://github.com/All-The-Vibes/ATV-Design (
skills/emil-design-eng-inspired/) - Lineage: paraphrases https://github.com/emilkowalski/skill (MIT as of 2026-06-21; it carried no license when muriel first adapted via ATV-Design's clean-room paraphrase)
- Adapted: 2026-06 (ATV-Design MIT)
muriel's own contribution is the programmatic enforcement (validate_properties,
easing_for, validate_scale) and the integration with muriel's existing
polish rules. muriel deliberately does not adopt the source's duration
bands (100–500 ms) — they fall in muriel.motion's uncanny zone, where the
forced utility (≤ 100 ms) / cinematic (≥ 1500 ms) binary overrides them — and
keeps its own tuned 0.96 press-scale value over the source's 0.97.
MIT License
Copyright (c) 2026 atv-design contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
vibecoded-design-tells (devibe rules)¶
The rule table in muriel/devibe.py — the design-tell catalogue (shadcn
defaults, AI-purple, gradient text, the cream + serif + sage "tasteful default",
neon glow, emoji-as-icons, the hero + three-card skeleton) and their regex
signatures — is derived from the vibecoded-design-tells project: a
Reddit-mined ranking of the visual tells of AI-built sites (3.2M posts / 3,033
on-topic comments across 47 subreddits), with a standalone scanner
(skill/scripts/devibe_scan.py) and catalogue (skill/references/tells.md).
- Source: https://github.com/JCarterJohnson/vibecoded-design-tells
- Adapted: 2026-06 (MIT)
muriel's own contributions: (1) the data-source severities are re-ranked to
muriel's info/warn/error triple, with the cream + serif + sage combination
elevated to error because it is the look muriel — and Claude's house style
generally — is most likely to emit on autopilot; (2) an 8:1 contrast
cross-check the source scanner has no equivalent of — colour tells that capture
a concrete hex are measured against muriel's 8:1 floor via muriel.contrast on
muriel's two canonical backgrounds (#ffffff, #0a0a0f), so a default colour
that also fails accessibility is reported as such; (3) integration as a critique
gate (muriel/critique.py, check 5) on HTML artifacts. muriel deliberately does
not vendor the project's harvested Reddit text or quote banks — those are
public Reddit content belonging to their authors; only the rule logic is derived.
MIT License
Copyright (c) 2026 Carter Johnson
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
baoyu-infographic (dense-modules module vocabulary)¶
The module vocabulary and high-density-guide recipe in
plugins/muriel/skills/compose/channels/infographics.md — the seven typed
module archetypes (Option Array, Scale/Gauge, Anatomy Callout, Use-Case
Matrix, Diagnostic Checklist, Pitfall Panel, TL;DR Block), the
every-module-carries-concrete-data density rule, and the text-placement
conventions (module-count subtitle, badge-framed module headers, data values
oversized in the accent color) — are adapted from the dense-modules layout
definition in the baoyu-infographic skill of the baoyu-skills collection.
- Source: https://github.com/JimLiu/baoyu-skills (
skills/baoyu-infographic/references/layouts/dense-modules.md) - Adapted: 2026-07 (MIT)
muriel's own contribution is the re-cast from prompt spec to content contract — each module declares structured-input minimums (item counts, required numerics, stated consequences) that a deterministic SVG panel builder can refuse to render below — plus genre-neutral renamings of the source's buying-guide-specific module names. Two source rules are deliberately not adopted: the shrink-text-and-eliminate-whitespace density rule (it conflicts with muriel's 18px type floor and 8:1 contrast floor — density comes from module count and data specificity instead), and emoji quality indicators (muriel renders drawn ✓/✗ glyphs). The source's raster generation pipeline (prompt-to-image via image-gen backends) is not used in any form — muriel's lane is deterministic SVG.
MIT License
Copyright (c) 2026 Jim Liu
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Lucide icons¶
The 30 glyphs in muriel/tools/diagrams/icons/glyphs.py are generated from
Lucide icons by scripts/build_diagram_icons.py: the outer <svg> and all
presentation attributes are removed and each primitive is rewritten as an
equivalent <path>; the geometry is otherwise unchanged. The source SVGs are
vendored unmodified in muriel/tools/diagrams/icons/vendor/lucide/, with
Lucide's LICENSE. Some of the glyphs used (clock, database, link,
lock, search, target, zoom-in) are derived from Feather and fall under
the MIT notice below.
- Source: https://lucide.dev — npm package
lucide-static - Version: 1.48.0 (pinned in
muriel/tools/diagrams/icons/_manifest.py) - License: ISC; Feather-derived icons MIT
ISC License
Copyright (c) 2026 Lucide Icons and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
---
The following Lucide icons are derived from the Feather project:
airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
The MIT License (MIT) (for the icons listed above)
Copyright (c) 2013-present Cole Bemis
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
anatomy (line-end check, Loupe lens)¶
muriel/line_ends.js is a modified port of scripts/line-ends.mjs from
anatomy, an agent skill for isometric technical figures. The SVG path
flattener, the spatial grid, the under-a-fill test and the short-mark rule
are anatomy's. muriel changed how lines are chosen, made fill outlines, text
labels, arrowhead markers and the canvas edge into landing targets, added the
implied-edge rule, and made the check run in a standalone SVG document; the
file's header lists each change and why.
muriel/loupe.py (the Loupe seat's lens) takes its practice, 4× close-ups
of every junction, from anatomy's verification loop. No anatomy code is in
it.
- Source: https://github.com/wheresryan22/anatomy
- Version: commit
1482e8469b0a9e0d8cc18ea2740a01423d29ae80(2026-10-18) - License: MIT
MIT License
Copyright (c) 2026 Ryan
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.