@litfamily/lithermes 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +299 -13
- package/README_Ko-KR.md +300 -14
- package/assets/lithermes-plugin/README.md +17 -6
- package/assets/lithermes-plugin/__init__.py +96 -21
- package/assets/lithermes-plugin/core.py +15 -6
- package/assets/lithermes-plugin/core_commands.py +140 -28
- package/assets/lithermes-plugin/core_contexts.py +88 -15
- package/assets/lithermes-plugin/core_contract.py +118 -9
- package/assets/lithermes-plugin/core_routing.py +197 -8
- package/assets/lithermes-plugin/deliverable_hedge_guard.py +378 -357
- package/assets/lithermes-plugin/diagnostics.py +76 -8
- package/assets/lithermes-plugin/humanizer_detector.py +348 -0
- package/assets/lithermes-plugin/humanizer_ko_metrics.py +108 -0
- package/assets/lithermes-plugin/humanizer_office.py +18 -0
- package/assets/lithermes-plugin/lit_mark.py +1 -1
- package/assets/lithermes-plugin/motion_receipts.py +80 -0
- package/assets/lithermes-plugin/payload-version.json +2240 -64
- package/assets/lithermes-plugin/plugin.yaml +1 -1
- package/assets/lithermes-plugin/rules/bundled-rules/lit-humanizer.md +14 -0
- package/assets/lithermes-plugin/skills/autoconference/assets/report_template.md +2 -1
- package/assets/lithermes-plugin/skills/autoconference/modes/ship/SKILL.md +11 -8
- package/assets/lithermes-plugin/skills/autoresearch/modes/ship/type-checklists.md +2 -2
- package/assets/lithermes-plugin/skills/browser-drive/ORIGIN.json +17 -0
- package/assets/lithermes-plugin/skills/browser-drive/SKILL.md +41 -16
- package/assets/lithermes-plugin/skills/browser-drive/scripts/capability_probe.py +122 -10
- package/assets/lithermes-plugin/skills/frontend-ui-ux/SKILL.md +45 -13
- package/assets/lithermes-plugin/skills/frontend-ui-ux/examples/phase-3-readme-ab/README.md +51 -0
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/README.md +44 -0
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/adaptive-layout.md +34 -62
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/brand-and-imagery.md +22 -70
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/complete-contract.md +18 -4
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/composition.md +27 -78
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/craft-floor.md +74 -0
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/creative-directions.md +25 -69
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/evidence-review.md +18 -97
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/implementation-platforms.md +23 -83
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/inclusive-interface.md +22 -70
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/interaction-motion.md +34 -68
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/motion-guide.md +62 -0
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/operating-lanes.md +14 -78
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/performance-delivery.md +22 -71
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/product-direction.md +17 -70
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/production.md +19 -7
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/redesign-playbook.md +23 -76
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/slop-register.md +69 -0
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/system-foundations.md +22 -67
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/visual-language.md +16 -72
- package/assets/lithermes-plugin/skills/frontend-ui-ux/references/visual-reconstruction.md +16 -81
- package/assets/lithermes-plugin/skills/frontend-ui-ux/resources/THIRD-PARTY-NOTICE.txt +15 -0
- package/assets/lithermes-plugin/skills/frontend-ui-ux/scripts/probe-page.js +311 -0
- package/assets/lithermes-plugin/skills/frontend-ui-ux/scripts/probe-rules.json +46 -0
- package/assets/lithermes-plugin/skills/frontend-ui-ux/scripts/probe.mjs +231 -0
- package/assets/lithermes-plugin/skills/lit-comprehend/SKILL.md +36 -25
- package/assets/lithermes-plugin/skills/lit-comprehend/references/artifact-template.md +45 -87
- package/assets/lithermes-plugin/skills/lit-comprehend/scripts/verify-explainer.py +3 -27
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/NOTICE +33 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/SKILL.md +308 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-architecture-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-architecture-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-architecture-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bar-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bar-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bar-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-beeswarm-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-beeswarm-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-beeswarm-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bubble-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bubble-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bubble-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bump-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bump-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-bump-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-data-flow-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-data-flow-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-data-flow-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-datalake-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-datalake-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-datalake-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-db-schema-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-db-schema-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-db-schema-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dependency-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dependency-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dependency-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-deployment-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-deployment-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-deployment-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-integration-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-integration-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-integration-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-dp-security-matrix-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-er-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-er-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-er-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-fishbone-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-fishbone-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-fishbone-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-flowchart-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-flowchart-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-flowchart-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-gantt-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-gantt-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-gantt-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-heatmap-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-heatmap-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-heatmap-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-high-level-vertical-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-drawio-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-drawio-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-drawio-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-excalidraw-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-import-mermaid-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-it-state-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-it-state-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-it-state-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-journey-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-journey-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-journey-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-kanban-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-kanban-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-kanban-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-layers-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-layers-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-layers-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-line-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-line-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-line-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-loop-terminal-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-marimekko-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-marimekko-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-marimekko-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-medallion-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-medallion-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-medallion-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-nested-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-nested-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-nested-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-org-chart-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-org-chart-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-org-chart-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-paved-road-animated-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-polar-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-polar-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-polar-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-policy-trace-animated-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-process-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-process-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-process-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-pyramid-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-pyramid-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-pyramid-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-consultant-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-quadrant-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-queue-animated-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-queue-animated-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-queue-animated-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-radar-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-radar-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-radar-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-ridgeline-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-ridgeline-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-ridgeline-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sankey-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sankey-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sankey-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-scatter-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-scatter-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-scatter-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-sequence-oauth-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-slopegraph-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-slopegraph-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-slopegraph-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-lifecycle-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-state-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-story-map-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-story-map-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-story-map-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-streamgraph-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-streamgraph-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-streamgraph-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-swimlane-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-swimlane-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-swimlane-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-timeline-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-timeline-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-timeline-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-block-decomposition-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-tree-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-treemap-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-treemap-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-treemap-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-uml-class-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-uml-class-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-uml-class-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-venn-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-venn-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-venn-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-wardley-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-wardley-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-wardley-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-waterfall-dark.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-waterfall-full.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/examples/type-waterfall-light.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/fonts/OFL.txt +94 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/fonts/PretendardVariable.woff2 +0 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/fonts/provenance.json +22 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/icons.html +231 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/index.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/licenses/devicon-MIT.txt +20 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/licenses/diagram-design-MIT.txt +21 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/licenses/log-z-MIT.txt +21 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/licenses/simple-icons-CC0.md +30 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/assets/licenses/tabler-MIT.txt +21 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/01-service-architecture/after.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/01-service-architecture/brief.md +33 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/02-release-decision/after.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/02-release-decision/brief.md +18 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/03-data-retention/after.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/03-data-retention/brief.md +19 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/04-oauth-sequence/after.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/04-oauth-sequence/brief.md +17 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/05-review-lanes/after.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/05-review-lanes/brief.md +17 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/06-rollout-gates/after.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/06-rollout-gates/brief.md +17 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/07-deployment-boundary/after.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/07-deployment-boundary/brief.md +19 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/08-policy-traces/after.html +1 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/examples/08-policy-traces/brief.md +20 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/accessibility.md +37 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/export.md +29 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/import-drawio.md +21 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/import-excalidraw.md +14 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/import-mermaid.md +18 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/import-schema.md +28 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/korean-typography.md +34 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/motion.md +29 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/office-pptx-docx.md +40 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/output-spec.md +48 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/primitive-annotation.md +12 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/primitive-icons.md +21 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/primitive-sketchy.md +11 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/primitive-terminal.md +11 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/profiles.md +24 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/semantic-patterns.md +27 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/style-guide.md +67 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-architecture.md +51 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-bar.md +51 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-beeswarm.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-bubble.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-bump.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-catalog.json +1433 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-data-flow.md +51 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-datalake.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-db-schema.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-dependency.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-deployment.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-dp-integration.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-dp-security-matrix.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-er.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-fishbone.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-flowchart.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-gantt.md +49 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-heatmap.md +53 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-high-level-vertical.md +53 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-high-level.md +53 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-import-drawio.md +53 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-import-excalidraw.md +53 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-import-mermaid.md +53 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-it-state.md +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-journey.md +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-kanban.md +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-layers.md +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-line.md +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-loop-terminal.md +53 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-loop.md +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-marimekko.md +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-medallion.md +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-nested.md +59 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-org-chart.md +58 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-paved-road-animated.md +72 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-polar.md +67 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-policy-trace-animated.md +69 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-process.md +58 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-pyramid.md +59 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-quadrant-consultant.md +60 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-quadrant.md +57 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-queue-animated.md +63 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-radar.md +57 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-ridgeline.md +63 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-sankey.md +68 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-scatter.md +60 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-sequence-oauth.md +66 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-sequence.md +63 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-slopegraph.md +65 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-state-lifecycle.md +53 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-state.md +59 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-story-map.md +52 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-streamgraph.md +53 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-swimlane.md +52 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-timeline.md +52 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-tree-block-decomposition.md +57 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-tree.md +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-treemap.md +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-uml-class.md +52 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-venn.md +51 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-wardley.md +52 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-waterfall.md +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/verifier-guide.md +31 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/block-registry.mjs +43 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/browser-version.mjs +12 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/check-visible-text.py +12 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_brief.py +192 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_catalog.py +135 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_checks.py +123 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_cli.py +94 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_geometry.py +130 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_metrics.py +166 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_quality.py +293 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_quality_geometry.py +200 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_records.py +205 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/diagram_sequence.py +55 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/doctor.mjs +24 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/drawio_extract.py +209 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/drawio_source.py +188 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/excalidraw_extract.py +233 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/excalidraw_support.py +64 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/export.mjs +125 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/mermaid_extract.py +240 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/mermaid_source.py +39 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/office-safety.mjs +54 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/verify-all.py +12 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/verify-brief.py +12 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/verify-diagram.py +12 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/verify-motion.py +12 -0
- package/assets/lithermes-plugin/skills/lit-diagram-drawer/scripts/verify-type.py +12 -0
- package/assets/lithermes-plugin/skills/lit-docx/NOTICE +1 -0
- package/assets/lithermes-plugin/skills/lit-docx/SKILL.md +97 -0
- package/assets/lithermes-plugin/skills/lit-docx/references/frontmatter_schema.md +42 -0
- package/assets/lithermes-plugin/skills/lit-docx/references/journal_style_spec.md +17 -0
- package/assets/lithermes-plugin/skills/lit-docx/references/markdown_quality_checklist.md +37 -0
- package/assets/lithermes-plugin/skills/lit-docx/references/slop_phrase_list.yaml +58 -0
- package/assets/lithermes-plugin/skills/lit-docx/references/slop_rules.md +35 -0
- package/assets/lithermes-plugin/skills/lit-docx/scripts/clean_markdown.py +95 -0
- package/assets/lithermes-plugin/skills/lit-docx/scripts/convert_md_to_docx.py +1041 -0
- package/assets/lithermes-plugin/skills/lit-docx/scripts/convert_md_to_pdf.py +281 -0
- package/assets/lithermes-plugin/skills/lit-docx/scripts/convert_pdf.py +130 -0
- package/assets/lithermes-plugin/skills/lit-docx/scripts/edit_docx.py +297 -0
- package/assets/lithermes-plugin/skills/lit-docx/scripts/embed_images.py +78 -0
- package/assets/lithermes-plugin/skills/lit-docx/scripts/generate_docx_templates.py +491 -0
- package/assets/lithermes-plugin/skills/lit-docx/scripts/slop_lint.py +536 -0
- package/assets/lithermes-plugin/skills/lit-docx/scripts/visual_audit.py +41 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/docx/acs.docx +0 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/docx/elsevier.docx +0 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/docx/ieee.docx +0 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/docx/korean-generic.docx +0 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/docx/nature.docx +0 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/latex/acs/README.md +5 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/latex/acs/template.tex +37 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/latex/elsevier/README.md +5 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/latex/elsevier/template.tex +38 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/latex/ieee/README.md +5 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/latex/ieee/template.tex +37 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/latex/korean-generic/README.md +5 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/latex/korean-generic/template.tex +37 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/latex/nature/README.md +5 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/latex/nature/template.tex +37 -0
- package/assets/lithermes-plugin/skills/lit-docx/templates/registry.yaml +1366 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/NOTICE +170 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/SKILL.md +125 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/assets/report-skeleton.md +26 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/assets/slide-text-skeleton.md +30 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/accessibility-note/after.md +7 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/accessibility-note/before.md +7 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/api-reference/after.md +9 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/api-reference/before.md +15 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/changelog/after.md +5 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/changelog/before.md +12 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/code-comments/after.md +10 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/code-comments/before.md +19 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/commit/after.md +5 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/commit/before.md +7 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/data-release/after.md +7 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/data-release/before.md +9 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/detector-validation/ko-metrics-golden.json +49 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/detector-validation/pos-real.txt +26 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/detector-validation/rule-cases.json +306 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/english-essay/after.md +5 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/english-essay/before.md +5 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/incident-update/after.md +7 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/incident-update/before.md +7 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-essay/after.md +7 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-essay/before.md +9 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-report/after.md +9 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-report/before.md +13 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-slide/after.md +19 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/ko-slide/before.md +21 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/meeting-brief/after.md +9 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/meeting-brief/before.md +11 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/policy-faq/after.md +9 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/policy-faq/before.md +9 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/pr/after.md +15 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/pr/before.md +17 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/project-update/after.md +7 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/project-update/before.md +9 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/readme/after.md +12 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/readme/before.md +14 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/report/after.md +13 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/report/before.md +11 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/research-abstract/after.md +5 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/research-abstract/before.md +5 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/slides/after.md +19 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/slides/before.md +19 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/troubleshooting/after.md +11 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/examples/troubleshooting/before.md +11 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/README.md +16 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/always-on-rule.md +9 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/code-patterns.md +468 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/deliverable-channels.md +111 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/en-patterns-checklist.md +43 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/en-patterns-content.md +243 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/en-patterns-structure.md +375 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/en-patterns.md +57 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/ko-metrics.md +33 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/ko-patterns-a-d.md +659 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/ko-patterns-e-j.md +387 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/ko-patterns.md +31 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/rewrite-playbook.md +54 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/references/taxonomy.md +153 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/rules.json +884 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/scripts/detect.py +17 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/scripts/extract_office_text.py +114 -0
- package/assets/lithermes-plugin/skills/lit-humanizer/scripts/ko_metrics.py +35 -0
- package/assets/lithermes-plugin/skills/lit-pptx/NOTICE +1 -0
- package/assets/lithermes-plugin/skills/lit-pptx/SKILL.md +109 -0
- package/assets/lithermes-plugin/skills/lit-pptx/agents/analyst.md +49 -0
- package/assets/lithermes-plugin/skills/lit-pptx/agents/antithesis.md +65 -0
- package/assets/lithermes-plugin/skills/lit-pptx/agents/architect.md +44 -0
- package/assets/lithermes-plugin/skills/lit-pptx/agents/critic.md +42 -0
- package/assets/lithermes-plugin/skills/lit-pptx/agents/synthesizer.md +47 -0
- package/assets/lithermes-plugin/skills/lit-pptx/agents/thesis.md +33 -0
- package/assets/lithermes-plugin/skills/lit-pptx/assets/azure/circle-lg.png +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/assets/azure/circle-md.png +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/assets/azure/circle-sm.png +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/bin/office.mjs +77 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/PRETENDARD-OFL.txt +94 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Black.otf +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Bold.otf +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-ExtraBold.otf +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-ExtraLight.otf +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Light.otf +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Medium.otf +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Regular.otf +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-SemiBold.otf +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/A2Z-Thin.otf +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/OFL.txt +94 -0
- package/assets/lithermes-plugin/skills/lit-pptx/fonts/a2z-font/SOURCE.md +29 -0
- package/assets/lithermes-plugin/skills/lit-pptx/pretendard-font/public/static/PretendardGOV-Bold.otf +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/pretendard-font/public/static/PretendardGOV-Regular.otf +0 -0
- package/assets/lithermes-plugin/skills/lit-pptx/references/anti-slop-checklist.md +71 -0
- package/assets/lithermes-plugin/skills/lit-pptx/references/authoring-guide.md +139 -0
- package/assets/lithermes-plugin/skills/lit-pptx/references/consensus-protocol.md +125 -0
- package/assets/lithermes-plugin/skills/lit-pptx/references/data-display-cookbook.md +45 -0
- package/assets/lithermes-plugin/skills/lit-pptx/references/design-system-azure.md +58 -0
- package/assets/lithermes-plugin/skills/lit-pptx/runtime/package-lock.json +750 -0
- package/assets/lithermes-plugin/skills/lit-pptx/runtime/package.json +15 -0
- package/assets/lithermes-plugin/skills/lit-pptx/runtime/requirements.in +7 -0
- package/assets/lithermes-plugin/skills/lit-pptx/runtime/requirements.lock +391 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/compile-deck.js +447 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/craft_extras.py +215 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/embed_fonts.py +199 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/integrity.py +60 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/inventory.py +64 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/learn_template.py +433 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/derive-palette.js +176 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/directive-parser.js +244 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/font-map.js +79 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/gen-bg.js +85 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/gen-gradient-assets.js +36 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/layout-resolver.js +736 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/markdown-loader.js +136 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/render-adapter-html.js +357 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/render-adapter-pptx.js +1864 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/slide-ast.js +539 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/spec-validator.js +94 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/lib/template-registry.js +355 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/qa_deck.py +791 -0
- package/assets/lithermes-plugin/skills/lit-pptx/scripts/validate_pptx.py +206 -0
- package/assets/lithermes-plugin/skills/lit-pptx/slide-formats/markdown-slide-spec-v1.md +251 -0
- package/assets/lithermes-plugin/skills/lit-pptx/slide-formats/markdown-slide-spec-v2.md +221 -0
- package/assets/lithermes-plugin/skills/lit-pptx/slide-formats/slide-ast-v1.schema.json +229 -0
- package/assets/lithermes-plugin/skills/lit-pptx/slide-formats/slide-ast-v2.schema.json +144 -0
- package/assets/lithermes-plugin/skills/lit-pptx/slide-formats/template-enrollment-contract.md +228 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-A2Z/capabilities.yaml +146 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-A2Z/layout-mapping.yaml +384 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-A2Z/template.yaml +37 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-PRO/capabilities.yaml +154 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-PRO/layout-mapping.yaml +405 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/AZURE-PRO/template.yaml +37 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/capabilities.yaml +179 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/layout-mapping.yaml +299 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-A2Z/template.yaml +45 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/capabilities.yaml +181 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/layout-mapping.yaml +299 -0
- package/assets/lithermes-plugin/skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/template.yaml +44 -0
- package/assets/lithermes-plugin/skills/lit-scientific-visualization/SKILL.md +2 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/SKILL.md +71 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/bin/audio.py +45 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/bin/motion.mjs +690 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/bin/runtime.mjs +299 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/NOTICE +23 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/THIRD_PARTY_NOTICES +55 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/browser.mjs +169 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/completion.mjs +52 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/constants.mjs +162 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/director.mjs +33 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/encode.mjs +191 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/flash.mjs +163 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/frame.mjs +428 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/gate.mjs +483 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/look.mjs +223 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/page.js +622 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/presets.mjs +170 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/scenes.mjs +242 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/sound.mjs +382 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage-gate.mjs +97 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage-init.js +186 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage-kit.js +389 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage-qa.mjs +358 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage-worker.mjs +33 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stage.mjs +691 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stills.mjs +71 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/stroke.mjs +231 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/timeline.mjs +177 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/treatment.mjs +244 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/type.mjs +183 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/engine/util.mjs +152 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/references/craft-loop.md +175 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/references/engine-contract.md +166 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/references/runtime.md +122 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/references/stage.md +261 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/references/style-bibles.md +122 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/references/treatment.md +164 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/references/type-craft.md +92 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/fonts.json +154 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/licenses/CREDITS +20 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/licenses/EMS-OFL.txt +91 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/package-lock.json +88 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/package.json +12 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/requirements.in +1 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/requirements.lock +727 -0
- package/assets/lithermes-plugin/skills/lit-typographic-motion/runtime/word-timing.json +9 -0
- package/assets/lithermes-plugin/skills/litresearch/SKILL.md +19 -18
- package/assets/lithermes-plugin/skills/litwork/SKILL.md +28 -0
- package/assets/lithermes-plugin/skills/visual-qa/references/complete-contract.md +3 -3
- package/package.json +1 -1
- package/readme-assets/ab-simple/s11-ui-baseline-desktop.webp +0 -0
- package/readme-assets/ab-simple/s11-ui-lithermes-desktop.webp +0 -0
- package/readme-assets/ab-simple/s3-ui-baseline-desktop.webp +0 -0
- package/readme-assets/ab-simple/s3-ui-lithermes-desktop.webp +0 -0
- package/readme-assets/ab-simple/s4-ui-baseline-desktop.webp +0 -0
- package/readme-assets/ab-simple/s4-ui-lithermes-desktop.webp +0 -0
- package/readme-assets/ab-simple/s5-office-baseline-slides.webp +0 -0
- package/readme-assets/ab-simple/s5-office-lithermes-slides.webp +0 -0
- package/readme-assets/ab-simple/s7-lithermes-diagram.webp +0 -0
- package/readme-assets/ab-simple/s8-office-baseline-slides.webp +0 -0
- package/readme-assets/ab-simple/s8-office-lithermes-slides.webp +0 -0
- package/readme-assets/ab-simple/s9-office-lithermes-pages.webp +0 -0
- package/readme-assets/badge-version.svg +1 -1
- package/readme-assets/cover-motion-still.webp +0 -0
- package/readme-assets/cover-motion.webp +0 -0
- package/readme-assets/skills/autoconference.webp +0 -0
- package/readme-assets/skills/autoresearch.webp +0 -0
- package/readme-assets/skills/browser-drive.webp +0 -0
- package/readme-assets/skills/comment-checker.webp +0 -0
- package/readme-assets/skills/debugging.webp +0 -0
- package/readme-assets/skills/deep-interview.webp +0 -0
- package/readme-assets/skills/frontend-ui-ux.webp +0 -0
- package/readme-assets/skills/lit-burnoff-file.webp +0 -0
- package/readme-assets/skills/lit-burnoff.webp +0 -0
- package/readme-assets/skills/lit-code.webp +0 -0
- package/readme-assets/skills/lit-commit.webp +0 -0
- package/readme-assets/skills/lit-comprehend.webp +0 -0
- package/readme-assets/skills/lit-crucible.webp +0 -0
- package/readme-assets/skills/lit-diagram-drawer.webp +0 -0
- package/readme-assets/skills/lit-docx.webp +0 -0
- package/readme-assets/skills/lit-handoff.webp +0 -0
- package/readme-assets/skills/lit-humanizer.webp +0 -0
- package/readme-assets/skills/lit-init.webp +0 -0
- package/readme-assets/skills/lit-plan.webp +0 -0
- package/readme-assets/skills/lit-pptx.webp +0 -0
- package/readme-assets/skills/lit-recap.webp +0 -0
- package/readme-assets/skills/lit-scientific-visualization.webp +0 -0
- package/readme-assets/skills/lit-typographic-motion.webp +0 -0
- package/readme-assets/skills/litgoal.webp +0 -0
- package/readme-assets/skills/litresearch.webp +0 -0
- package/readme-assets/skills/litwork.webp +0 -0
- package/readme-assets/skills/lsp-setup.webp +0 -0
- package/readme-assets/skills/lsp.webp +0 -0
- package/readme-assets/skills/readme-studio.webp +0 -0
- package/readme-assets/skills/refactor.webp +0 -0
- package/readme-assets/skills/review-work.webp +0 -0
- package/readme-assets/skills/rules.webp +0 -0
- package/readme-assets/skills/start-work.webp +0 -0
- package/readme-assets/skills/structural-search.webp +0 -0
- package/readme-assets/skills/visual-qa.webp +0 -0
- package/readme-assets/skills/wikify.webp +0 -0
- package/src/cli.js +40 -1
- package/src/lib/check.js +21 -0
- package/src/lib/install.js +262 -7
- package/src/lib/skillPayload.js +3 -3
- package/assets/lithermes-plugin/skills/lit-korean/SKILL.md +0 -237
- package/assets/lithermes-plugin/skills/lit-korean/references/quick-rules.md +0 -24
- package/assets/lithermes-plugin/skills/lit-korean/references/safety-checklist.md +0 -23
- package/readme-assets/cover.webp +0 -0
package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-policy-trace-animated.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Paired policy-evaluation trace
|
|
2
|
+
|
|
3
|
+
**Catalog ID:** `policy-trace-animated`<br>
|
|
4
|
+
**Semantic pattern:** paired policy-evaluation traces; visual grammar: flowchart-style rule table.<br>
|
|
5
|
+
**Common references:** [Style guide](style-guide.md) · [Output spec](output-spec.md) · [Accessibility](accessibility.md) · [Semantic patterns](semantic-patterns.md) · [Motion](motion.md) · [Korean typography](korean-typography.md) · [PPTX/DOCX](office-pptx-docx.md) · [Verifier guide](verifier-guide.md)
|
|
6
|
+
|
|
7
|
+
## Purpose and selection
|
|
8
|
+
|
|
9
|
+
Use this view when two otherwise similar requests produce different policy outcomes and the reader needs to see the first rule where their paths diverge. It specializes ordered rule evaluation as two aligned traces. Use Sequence only when actor messages and timing matter; use a regular Flowchart when there is one evaluation path.
|
|
10
|
+
|
|
11
|
+
## Exclusions
|
|
12
|
+
|
|
13
|
+
There are exactly two traces, 3–6 shared ordered rules, one first divergence, at most 12 status cells, and one terminal outcome per trace. This is not a general comparison matrix or a decision tree. Do not show a denied request continuing through downstream checks as if they ran.
|
|
14
|
+
|
|
15
|
+
## Content schema
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
title: "Where access decisions diverge"
|
|
19
|
+
rules:
|
|
20
|
+
- { id: identity, label: Identity, detail: "Named principal required" }
|
|
21
|
+
- { id: data-class, label: Data class, detail: "Sensitive writes denied" }
|
|
22
|
+
- { id: human-approval, label: Human approval, detail: "Required for writes" }
|
|
23
|
+
traces:
|
|
24
|
+
- id: read
|
|
25
|
+
label: Read-only request
|
|
26
|
+
input_delta: "Read scope"
|
|
27
|
+
states: [PASS, PASS, SKIPPED]
|
|
28
|
+
outcome: { status: PERMITTED, detail: "Read allowed" }
|
|
29
|
+
- id: write
|
|
30
|
+
label: Sensitive write
|
|
31
|
+
input_delta: "Write scope"
|
|
32
|
+
states: [PASS, FAIL, NOT REACHED]
|
|
33
|
+
outcome: { status: DENIED, detail: "Review required" }
|
|
34
|
+
first_divergence: data-class
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Both traces reference the same rule IDs in the same order. Each state is `PASS`, `FAIL`, `SKIPPED`, or `NOT REACHED`; the divergence ID must be the first position at which the two states differ. `SKIPPED` means a rule intentionally did not apply; `NOT REACHED` means evaluation stopped earlier. A failed terminal trace must mark later rules not reached.
|
|
38
|
+
|
|
39
|
+
## Deterministic layout recipe
|
|
40
|
+
|
|
41
|
+
Use a wide 1200×660 frame. Reserve the left 38% for ordered rule names and brief conditions, and split the remaining width evenly into trace columns. Build 3–6 rows from top to bottom with a fixed row pitch and identical status-card sizes. Each row carries the same rule label at one y-coordinate and one status cell per trace at that same y. Place the first-divergence bracket/leader across the two cells on the exact divergence row and label it in text. Put outcome cards below the final rule row. Draw all row and connector structure first, then status cards, labels, and the footer key. Set height from row count plus fixed header/outcome/footer zones; do not shrink rows to fit longer text.
|
|
42
|
+
|
|
43
|
+
## Encoding rules
|
|
44
|
+
|
|
45
|
+
Every status uses a word plus a redundant mark/shape: PASS, FAIL, SKIPPED, or NOT REACHED. The first divergence receives the single focal accent. Use a dashed neutral border for non-applicable or unreached status; do not equate those states. The denied trace ends at its terminal outcome; no later state is presented as evaluated. Keep persistent rule and trace labels visible in every frame. Motion reveals rows in their existing order; it must not change rule order, state, result, or layout.
|
|
46
|
+
|
|
47
|
+
## Korean behavior
|
|
48
|
+
|
|
49
|
+
Translate status labels consistently and keep the English machine status in metadata if a consuming tool requires it. Use short rule names and one-line conditions; keep `PASS`, API names, policy IDs, and HTTP/status codes intact. Provide a static Korean text alternative in rule order. If a translated term needs explanation, put it in the supporting note rather than squeezing the status cell.
|
|
50
|
+
|
|
51
|
+
## Light, dark, and full variants
|
|
52
|
+
|
|
53
|
+
All variants share the same two traces, row order, divergence, and statuses. Light/dark swap shared tokens only. The full variant may add a concise decision summary outside the matrix. The default delivered frame shows every rule and both outcomes; optional step mode may focus one row, and its final frame must equal the static complete diagram.
|
|
54
|
+
|
|
55
|
+
## Accessibility
|
|
56
|
+
|
|
57
|
+
Add title/description and an ordered text alternative with both input differences, every rule state for both traces, the first divergence, and each outcome. Never encode status or outcome through hue alone. Motion requires keyboard-operable previous/next/play/pause/replay controls, an announced current step, visible focus, and the complete no-motion state described in [Motion](motion.md).
|
|
58
|
+
|
|
59
|
+
## Verifier gates
|
|
60
|
+
|
|
61
|
+
Run `python3 scripts/verify-diagram.py --canvas path/to/diagram.html` for the implemented geometry, contrast, accessibility, and visible-text checks. Run `python3 scripts/verify-type.py --type=policy-trace-animated path/to/diagram.html` to check catalog identity and registered structural rules. Separately verify paired-trace order, first divergence, and outcome consistency against the source. `verify-motion.py` detects unbounded animation and missing reduced-motion source rules; inspect static-first behavior, complete frames, controls, and the final state manually. See [Verifier guide](verifier-guide.md).
|
|
62
|
+
|
|
63
|
+
## Anti-patterns
|
|
64
|
+
|
|
65
|
+
- Independently ordered traces, missing rules, or a divergence marker on a later mismatch.
|
|
66
|
+
- A green/red dot without its status word and non-color cue.
|
|
67
|
+
- `SKIPPED` used as a synonym for `NOT REACHED`.
|
|
68
|
+
- A denied trace continuing through rules that were never evaluated.
|
|
69
|
+
- Hiding rules or outcomes in an animation-only sequence, or highlighting every row.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Process
|
|
2
|
+
|
|
3
|
+
**Catalog ID:** `process`<br>
|
|
4
|
+
**Common references:** [Style guide](style-guide.md) · [Output spec](output-spec.md) · [Accessibility](accessibility.md) · [Semantic patterns](semantic-patterns.md) · [Korean typography](korean-typography.md) · [PPTX/DOCX](office-pptx-docx.md) · [Verifier guide](verifier-guide.md)
|
|
5
|
+
|
|
6
|
+
## Purpose and selection
|
|
7
|
+
|
|
8
|
+
Use Process when order, responsible actor, and the data or tool passed between steps all matter. It is a responsibility-aware workflow: a reader can see who performs each step, where a handoff crosses lanes, and what artifact enters or leaves. Use Swimlane for simpler cross-functional process where payload/tool detail adds no value; use Sequence when timed messages between system actors are the point.
|
|
9
|
+
|
|
10
|
+
## Exclusions
|
|
11
|
+
|
|
12
|
+
Do not use this matrix for unowned serial steps, arbitrary many-to-many dependencies, or a static ownership census. It is limited to six lanes and twelve steps. A grid cell with no activity stays empty; no connector should imply a task that the input does not declare.
|
|
13
|
+
|
|
14
|
+
## Content schema
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
lanes: [{ key: API, name: [API team] }, { key: OPS, name: [Operations] }]
|
|
18
|
+
steps: [{ number: "1", label: Intake }, { number: "2", label: Validate, focal: true }]
|
|
19
|
+
nodes:
|
|
20
|
+
- { lane: API, step: 0, title: Receive request, sub: "Request → case", tool: "Portal", chips: { in: null, out: FL } }
|
|
21
|
+
- { lane: OPS, step: 1, title: Verify access, sub: "Case → approved", tool: "Policy check", chips: { in: FL, out: DB }, focal: true }
|
|
22
|
+
arrows:
|
|
23
|
+
- { from: { lane: API, step: 0 }, to: { lane: OPS, step: 1 }, style: focal-in }
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The schema has 1–6 named lanes, 1–12 ordered steps, explicit occupied cells, and declared arrows. Use short uppercase lane keys and labels, one-line node title, optional short transformation, tool, and input/output artifact codes. First-step inputs and last-step outputs are omitted. Allow one focal step and one focal node; their related handoff is the only accent route. Use arrow styles `normal`, `trigger`, `focal-in`, or `focal-out`.
|
|
27
|
+
|
|
28
|
+
## Deterministic layout recipe
|
|
29
|
+
|
|
30
|
+
Use `label_col_w=140`, `step_slot_w=112`, `right_pad=28`, `header_h=36`, and `lane_h=80`. Set canvas width to `140 + 112×step_count + 28`; height to `36 + 80×lane_count + legend_height`, with a 100px legend only when a concern-color row is present, otherwise 80px. Lane `k` starts at `36+80k`; step `j` center is `140+8+112j+50`. Place 100×64 nodes centered in their step slot, with 8px vertical lane inset. Empty cells render nothing. Route cross-lane arrows with one right-angle bend: exit the source right edge, travel in the corridor before the destination, then enter its top or bottom. Same-lane adjacent steps may use a horizontal line. Draw all arrows before all nodes. If routes cross, reorder the steps or split; do not invent extra bends.
|
|
31
|
+
|
|
32
|
+
## Encoding rules
|
|
33
|
+
|
|
34
|
+
Use topology to choose line style. A trigger is dashed; ordinary transfer is muted solid; only arrows entering or leaving the single focal node use accent. Node color can signal a concern (security, quality, publication, backup) but is optional, limited to three non-focal elements, and never changes arrow color. Use artifact chips only for known payload types; unknown stays absent. Keep tool/sub-label ink muted even on colored nodes. The legend names only styles actually present.
|
|
35
|
+
|
|
36
|
+
## Korean behavior
|
|
37
|
+
|
|
38
|
+
Keep lane keys, units, file formats, and tool names stable in Latin characters. Korean lane names may wrap into two balanced lines; step labels should remain short, and node titles should fit one line or use a two-line title with chips omitted. Do not split a unit from its value or a path/API token at punctuation. Use the shared Korean line-height; widen the canvas or abbreviate before shrinking type.
|
|
39
|
+
|
|
40
|
+
## Light, dark, and full variants
|
|
41
|
+
|
|
42
|
+
Light and dark use the same input, viewBox formulas, connector routes, and semantic colors; change only token values and lighten custom hues enough to retain contrast on the dark surface. The full variant places that same grid in an editorial frame and may add a small summary strip. It must not reflow lanes, add process steps, or change arrow semantics.
|
|
43
|
+
|
|
44
|
+
## Accessibility
|
|
45
|
+
|
|
46
|
+
Add SVG title and a concise description of the actors, step direction, focal handoff, and any trigger. Provide an ordered text alternative by step, then lane. Distinguish triggers by dash pattern as well as wording; distinguish payload types by text code, not color alone. Keep every connector behind nodes, and ensure node labels stay above minimum readable size.
|
|
47
|
+
|
|
48
|
+
## Verifier gates
|
|
49
|
+
|
|
50
|
+
Run `python3 scripts/verify-diagram.py --canvas path/to/diagram.html` to check implemented SVG geometry, overlap, contrast, accessibility, and visible-text rules. Review theme or profile polarity, data correctness, and other unreported properties manually. Run `python3 scripts/verify-type.py --type=process path/to/diagram.html` to check catalog identity and structural rules registered for that ID. Separately verify the catalog marker against source values and this guide; a matching ID alone does not prove those properties. Review lane/step limits, occupied-cell uniqueness, focal declarations, endpoints, and arrow topology against this guide. See [Verifier guide](verifier-guide.md). See that the gallery wrapper’s `data-type` value matches this exact Catalog ID; a missing or mismatched marker is not a passing type check.
|
|
51
|
+
|
|
52
|
+
## Anti-patterns
|
|
53
|
+
|
|
54
|
+
- Placeholder boxes in empty lane/step cells or unlabeled lanes.
|
|
55
|
+
- Diagonal connectors, multiple bends, left-side entry, or crossings hidden under nodes.
|
|
56
|
+
- More than one focal step/node, colored arrows, or custom colors on focal elements.
|
|
57
|
+
- Payload chips on nodes whose title already wraps or where the payload is unknown.
|
|
58
|
+
- Twelve-plus steps, seven-plus lanes, or long prose crammed into nodes.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Pyramid and funnel
|
|
2
|
+
|
|
3
|
+
**Catalog ID:** `pyramid`<br>
|
|
4
|
+
**Common references:** [Style guide](style-guide.md) · [Output spec](output-spec.md) · [Accessibility](accessibility.md) · [Korean typography](korean-typography.md) · [PPTX/DOCX](office-pptx-docx.md) · [Verifier guide](verifier-guide.md)
|
|
5
|
+
|
|
6
|
+
## Purpose and selection
|
|
7
|
+
|
|
8
|
+
Use a pyramid for a ranked hierarchy where the broad base supports progressively narrower, rarer, or more valuable levels. Use a funnel when a measured audience or quantity drops through successive stages and the narrowing itself communicates attrition. Use Bar when exact comparisons across categories matter more than the taper; use Tree when the relationship branches.
|
|
9
|
+
|
|
10
|
+
## Exclusions
|
|
11
|
+
|
|
12
|
+
Do not mix upward pyramid and downward funnel conventions in one figure. A qualitative priority stack must not borrow numeric widths to imply data. A real funnel must not use decorative equal-width layers when observed proportions differ. Do not present arbitrary hierarchical data as if it were a quantity.
|
|
13
|
+
|
|
14
|
+
## Content schema
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
orientation: funnel # pyramid | funnel
|
|
18
|
+
title: "Request conversion"
|
|
19
|
+
unit: "requests"
|
|
20
|
+
layers: # 4–6, in visible top-to-bottom order
|
|
21
|
+
- { id: visit, label: Visit, detail: "10,000", value: 10000 }
|
|
22
|
+
- { id: signup, label: Sign-up, detail: "4,200 · 42%", value: 4200 }
|
|
23
|
+
- { id: activate, label: Activation, detail: "1,700 · 17%", value: 1700, focal: true }
|
|
24
|
+
- { id: retain, label: Retained, detail: "980 · 9.8%", value: 980 }
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Each layer has a stable ID, concise label, optional one-line detail, and optional value. A data funnel requires a nonnegative value for every stage, a shared unit and denominator, and a visible count or percentage. A conceptual pyramid may omit values. Mark at most one focal layer.
|
|
28
|
+
|
|
29
|
+
## Deterministic layout recipe
|
|
30
|
+
|
|
31
|
+
Use a 1000×560 viewBox and a centered stack from y=80 with equal layer height `h=64` and 8px inter-layer gap. For a qualitative pyramid with `n` layers, interpolate width linearly from 700px at the base to 260px at the apex, then center each trapezoid on x=500. For a funnel, set each trapezoid's width proportional to the declared value on one linear width scale (`width_i = max_width × value_i / max_value`), retaining a small minimum only if it is labeled as a visual floor and does not alter ranking; default is no floor. Pyramid order is broad base to narrow apex bottom-up; funnel order is largest first at the top. Put label and value at each trapezoid's horizontal center; place optional drop-off notes in a consistent side column. Extend the viewBox if labels exceed the safe area rather than squeezing the stack.
|
|
32
|
+
|
|
33
|
+
## Encoding rules
|
|
34
|
+
|
|
35
|
+
Width represents magnitude only in a measured funnel and is proportional to its value. For conceptual hierarchies, the taper is a convention, not a numerical scale; say so in the subtitle or alternative text if ambiguity is possible. Use one neutral treatment across layers, with one accent layer at most: the apex in a pyramid, the conversion bottleneck in a funnel, or one user-selected focal stage. Keep layer height equal. An optional axis arrow may say “rarer” or “drop-off” but cannot replace labels.
|
|
36
|
+
|
|
37
|
+
## Korean behavior
|
|
38
|
+
|
|
39
|
+
Use short Korean nouns for stages and concise numeric notation with the shared Korean number and unit format. Keep `%`, count units, and the value together. Labels may wrap to two lines inside wide layers; narrow apex layers get a shorter label. Keep Korean line-height consistent and put explanatory prose outside the trapezoid.
|
|
40
|
+
|
|
41
|
+
## Light, dark, and full variants
|
|
42
|
+
|
|
43
|
+
Light and dark retain the same widths, order, labels, and accent target. Change only shared tokens; check each outlined trapezoid against its paper background. The full variant may add a restrained title and one or two summary notes beside the stack, while preserving all layer geometry and data.
|
|
44
|
+
|
|
45
|
+
## Accessibility
|
|
46
|
+
|
|
47
|
+
Give the SVG an accessible title and description that state orientation and whether widths are quantitative. Provide a text list in stage order containing each label, value, unit, and denominator. Use labels and numeric text so no comparison depends on color. Keep stroke boundaries visible between neighboring layers and ensure text does not cross polygon edges.
|
|
48
|
+
|
|
49
|
+
## Verifier gates
|
|
50
|
+
|
|
51
|
+
Run `python3 scripts/verify-diagram.py --canvas path/to/diagram.html` to check implemented SVG geometry, overlap, contrast, accessibility, and visible-text rules. Review theme or profile polarity, data correctness, and other unreported properties manually. Run `python3 scripts/verify-type.py --type=pyramid path/to/diagram.html` to check catalog identity and structural rules registered for that ID. Separately verify the catalog marker; manually reconcile declared values and rendered widths for quantitative funnels against source values and this guide; a matching ID alone does not prove those properties. See [Verifier guide](verifier-guide.md). See that the gallery wrapper’s `data-type` value matches this exact Catalog ID; a missing or mismatched marker is not a passing type check.
|
|
52
|
+
|
|
53
|
+
## Anti-patterns
|
|
54
|
+
|
|
55
|
+
- Seven or more layers, unequal decorative layer heights, or layers too small to label.
|
|
56
|
+
- Quantitative funnel widths that are equal, reversed, or unrelated to declared values.
|
|
57
|
+
- A data value hidden only in a source note, or a percentage without its denominator.
|
|
58
|
+
- Multiple accent layers, gradients that imply a second scale, shadows, or separate rainbow colors.
|
|
59
|
+
- Using a pyramid for unrelated categories or using a funnel for a hierarchy without attrition.
|
package/assets/lithermes-plugin/skills/lit-diagram-drawer/references/type-quadrant-consultant.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Quadrant consultant: scenario matrix
|
|
2
|
+
|
|
3
|
+
**Catalog ID:** `quadrant-consultant`<br>
|
|
4
|
+
**Parent grammar:** [Quadrant](type-quadrant.md).<br>
|
|
5
|
+
**Common references:** [Style guide](style-guide.md) · [Output spec](output-spec.md) · [Accessibility](accessibility.md) · [Korean typography](korean-typography.md) · [PPTX/DOCX](office-pptx-docx.md) · [Verifier guide](verifier-guide.md)
|
|
6
|
+
|
|
7
|
+
## Purpose and selection
|
|
8
|
+
|
|
9
|
+
Use this 2×2 scenario layout for four named futures, archetypes, or strategic options defined by two independent drivers. The cell is the conclusion; text inside each cell explains the scenario. Select standard `quadrant` when an item's exact point location within a cell carries information. This variant has no point cloud and does not imply a score.
|
|
10
|
+
|
|
11
|
+
## Exclusions
|
|
12
|
+
|
|
13
|
+
Exactly two drivers and four cells. Do not use it for prioritization, density, measured coordinates, three-by-three grids, or a matrix where points cluster inside cells. It is not a replacement for a risk heatmap or a ranking table.
|
|
14
|
+
|
|
15
|
+
## Content schema
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
title: "Four operating futures"
|
|
19
|
+
x_axis: { low: Local, high: Global }
|
|
20
|
+
y_axis: { low: Stable, high: Volatile }
|
|
21
|
+
scenarios:
|
|
22
|
+
- { id: "01", x: low, y: high, name: "Rapid fragmentation", description: "Regional platforms set the rules.", focal: true }
|
|
23
|
+
- { id: "02", x: high, y: high, name: "Open competition", description: "Shared standards coexist with volatility." }
|
|
24
|
+
- { id: "03", x: low, y: low, name: "Steady federation", description: "Local systems change slowly." }
|
|
25
|
+
- { id: "04", x: high, y: low, name: "Managed scale", description: "A few stable global platforms dominate." }
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Every cell needs a distinct scenario name and a 1–3 line description. Each scenario records its high/low combination explicitly; do not calculate an interior position. Exactly one focal scenario receives accent treatment. Axis names and cell tags must use the same driver terms.
|
|
29
|
+
|
|
30
|
+
## Deterministic layout recipe
|
|
31
|
+
|
|
32
|
+
Use a 1000×620 canvas. Place four equal 280×180 cells in a 2×2 arrangement around an open 48px central axis gap; center their shared axes at the canvas midpoint. Extend both axes beyond the outer cell edges by 24–36px, with arrowheads at both ends. Put the single-word endpoint labels beyond the arrow tips with fixed offsets: top/bottom centered, left right-aligned, right left-aligned. Inside each cell, place a small numbered corner tag, a left-aligned scenario title, then a description constrained to three lines. Cell text starts from the same inset in all four quadrants. Add the standard bottom legend rule and two neutral/accent swatches. If localized text does not fit, grow the canvas or abbreviate; do not resize one cell.
|
|
33
|
+
|
|
34
|
+
## Encoding rules
|
|
35
|
+
|
|
36
|
+
Cells encode only the two high/low combinations. One scenario may use a light accent tint, accent border, and accent corner tag; the other three use a neutral treatment. No dot position, cell area, opacity ramp, or fill color represents a quantity. The label tag states the matching x/y combination so readers can verify axis polarity without inferring it from color.
|
|
37
|
+
|
|
38
|
+
## Korean behavior
|
|
39
|
+
|
|
40
|
+
Keep axis endpoints to concise Korean terms whose polarity is unambiguous. Cell titles may wrap once; descriptions use at most three balanced lines and the shared Korean line-height. Keep the scenario number adjacent to its name and preserve any Latin acronym as a whole. Localize all four cells together; do not leave one quadrant in a different language unless it is a proper name.
|
|
41
|
+
|
|
42
|
+
## Light, dark, and full variants
|
|
43
|
+
|
|
44
|
+
Keep cells, axis directions, labels, scenario mapping, and focal choice identical across skins. The full variant may add an editorial title and a short “decision to watch” note outside the matrix. Do not convert the layout into a branded whiteboard: retain the shared paper, rule, and typography system.
|
|
45
|
+
|
|
46
|
+
## Accessibility
|
|
47
|
+
|
|
48
|
+
The SVG description identifies both drivers and the four high/low combinations. Provide a text alternative listing cells in reading order (top-left, top-right, bottom-left, bottom-right), each with its driver combination, title, and description. State the focal scenario in words. Arrow directions and printed endpoint labels must survive grayscale output.
|
|
49
|
+
|
|
50
|
+
## Verifier gates
|
|
51
|
+
|
|
52
|
+
Run `python3 scripts/verify-diagram.py --canvas path/to/diagram.html` to check implemented SVG geometry, overlap, contrast, accessibility, and visible-text rules. Review theme or profile polarity, data correctness, and other unreported properties manually. Run `python3 scripts/verify-type.py --type=quadrant-consultant path/to/diagram.html` to check catalog identity and structural rules registered for that ID. Separately verify the catalog marker; manually check the four cell assignments and focal scenario against source values and this guide; a matching ID alone does not prove those properties. Cell narratives are not quantitative points. See [Verifier guide](verifier-guide.md). See that the gallery wrapper’s `data-type` value matches this exact Catalog ID; a missing or mismatched marker is not a passing type check.
|
|
53
|
+
|
|
54
|
+
## Anti-patterns
|
|
55
|
+
|
|
56
|
+
- Empty “Scenario 1–4” placeholders in a finished diagram.
|
|
57
|
+
- Unequal cells, dot clouds, or invented numerical placement within cells.
|
|
58
|
+
- One-way axes, missing endpoint labels, arrow glyphs in the labels, or tags inconsistent with the axes.
|
|
59
|
+
- Multiple focal cells, bold axis labels, extra colors, or a 3×3 layout.
|
|
60
|
+
- Long consulting prose that forces tiny type or abandons the common visual system.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Quadrant
|
|
2
|
+
|
|
3
|
+
**Catalog ID:** `quadrant`<br>
|
|
4
|
+
**Common references:** [Style guide](style-guide.md) · [Output spec](output-spec.md) · [Accessibility](accessibility.md) · [Korean typography](korean-typography.md) · [PPTX/DOCX](office-pptx-docx.md) · [Verifier guide](verifier-guide.md) · [Consultant scenario variant](type-quadrant-consultant.md)
|
|
5
|
+
|
|
6
|
+
## Purpose and selection
|
|
7
|
+
|
|
8
|
+
Use Quadrant to position a small set of named items against two independent, meaningful axes: prioritization, portfolio review, or product positioning. Position inside the cells matters. If the brief wants four named futures with a short narrative in each cell and no within-cell position, select the separate `quadrant-consultant` catalog entry. Use a table if precise ranks or scores need comparison.
|
|
9
|
+
|
|
10
|
+
## Exclusions
|
|
11
|
+
|
|
12
|
+
Do not use the quadrant for more than two dimensions, time series, large point clouds, or categories with no interpretable axes. Items exactly on an axis have ambiguous membership; ask for a placement rule or keep them out of the chart. The standard grammar is capped at twelve points.
|
|
13
|
+
|
|
14
|
+
## Content schema
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
title: "Work to do first"
|
|
18
|
+
x_axis: { label: Impact, low: Limited, high: Broad, min: 0, max: 10 }
|
|
19
|
+
y_axis: { label: Ease, low: Difficult, high: Easy, min: 0, max: 10 }
|
|
20
|
+
items:
|
|
21
|
+
- { id: auth, label: Access review, x: 8, y: 8, focal: true }
|
|
22
|
+
- { id: cache, label: Cache cleanup, x: 5, y: 6 }
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Each item carries a stable ID, short label, and x/y values on the declared axes. Normalize both coordinates to the plot range; keep raw values available for visible labels only when exactness matters. At most one item is focal. Axis endpoint terms explain direction; quadrant captions are optional and short.
|
|
26
|
+
|
|
27
|
+
## Deterministic layout recipe
|
|
28
|
+
|
|
29
|
+
Use a 1000×560 viewBox with a plot rectangle x=160..840, y=104..424. Put the cross at the midpoint `(500,264)`. Map values linearly: `px=160+680×(x−xmin)/(xmax−xmin)` and `py=424−320×(y−ymin)/(ymax−ymin)`. Draw the two hairline axes through the center, leaving arrow tips and one-word axis labels outside the plot margins. Place each point at its mapped coordinate; keep point marks small and labels 8–10px away. Use a fixed label-placement order (above-right, above-left, below-right, below-left), then choose the first candidate that clears the point, axis, and prior labels. If none fits, reduce the number of items or split the chart; never move the point. Keep labels away from axis lines.
|
|
30
|
+
|
|
31
|
+
## Encoding rules
|
|
32
|
+
|
|
33
|
+
Position is the data. Use a small neutral circle for ordinary items and one accent focal point. Do not fill the four cells with different colors. Name both axes, their direction, and their units or scales. Optional quadrant captions sit in the corners and remain subordinate to item labels. If scores are illustrative, say so plainly; do not use approximate placement as a claim of measurement.
|
|
34
|
+
|
|
35
|
+
## Korean behavior
|
|
36
|
+
|
|
37
|
+
Keep axis names and endpoint labels short, one line where possible. Use Korean directional terms with clear low/high meaning; do not rely on arrows or color to explain polarity. Korean item names may wrap to two lines. Keep item labels within the plot and avoid breaking mixed Hangul/Latin identifiers or numeric units.
|
|
38
|
+
|
|
39
|
+
## Light, dark, and full variants
|
|
40
|
+
|
|
41
|
+
The three variants use the same axis ranges, point positions, label placements, and focal item. Light/dark changes are token-only. The full variant may add a compact interpretation card or a few editorial callouts outside the plotting area; no card may restate every point, and the 2×2 plot itself must remain primary.
|
|
42
|
+
|
|
43
|
+
## Accessibility
|
|
44
|
+
|
|
45
|
+
Include title and description naming both axes and the key focal item. Provide a reading-order list of item labels and values. A screen reader must hear each item's two axis values; the focal state must be stated in text. Ensure axes and point outlines meet non-text contrast, with labels readable independently of the mark color.
|
|
46
|
+
|
|
47
|
+
## Verifier gates
|
|
48
|
+
|
|
49
|
+
Run `python3 scripts/verify-diagram.py --canvas path/to/diagram.html` to check implemented SVG geometry, overlap, contrast, accessibility, and visible-text rules. Review theme or profile polarity, data correctness, and other unreported properties manually. Run `python3 scripts/verify-type.py --type=quadrant path/to/diagram.html` to check catalog identity and structural rules registered for that ID. Separately verify the catalog marker; manually compare point positions with declared axis bounds and labels against source values and this guide; a matching ID alone does not prove those properties. See [Verifier guide](verifier-guide.md). See that the gallery wrapper’s `data-type` value matches this exact Catalog ID; a missing or mismatched marker is not a passing type check.
|
|
50
|
+
|
|
51
|
+
## Anti-patterns
|
|
52
|
+
|
|
53
|
+
- Four differently colored cell fills, unlabeled axes, or labels placed over the axis cross.
|
|
54
|
+
- Points on either axis without an explicit placement policy.
|
|
55
|
+
- More than twelve items or moving a point to make its label fit.
|
|
56
|
+
- Axis glyphs, vague labels such as “good/bad,” or unsupported score precision.
|
|
57
|
+
- Using this point plot for four scenarios that belong in the consultant variant.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Fan-in queue and bottleneck
|
|
2
|
+
|
|
3
|
+
**Catalog ID:** `queue-animated`<br>
|
|
4
|
+
**Semantic pattern:** fan-in queue / bottleneck; visual grammar: data flow.<br>
|
|
5
|
+
**Common references:** [Style guide](style-guide.md) · [Output spec](output-spec.md) · [Accessibility](accessibility.md) · [Semantic patterns](semantic-patterns.md) · [Motion](motion.md) · [Korean typography](korean-typography.md) · [PPTX/DOCX](office-pptx-docx.md) · [Verifier guide](verifier-guide.md)
|
|
6
|
+
|
|
7
|
+
## Purpose and selection
|
|
8
|
+
|
|
9
|
+
Use this pattern when several sources compete for one limited service point and arrival rate, queue depth, capacity, waiting, or backpressure explains the outcome. It combines a static capacity diagram with an optional step reveal. Use Process when successive service stages dominate and source contention is secondary; use Sankey when conserved quantity splitting/merging is the central claim.
|
|
10
|
+
|
|
11
|
+
## Exclusions
|
|
12
|
+
|
|
13
|
+
Budget: at most five sources, five visible queue slots, one bottleneck, two outcomes, and nine primary nodes. Aggregate extra sources into a named cohort. The queue is ordered FIFO unless the input explicitly says otherwise. Animation may reveal events but may not reorder items. Do not animate purely decorative traffic or imply capacity only through box size.
|
|
14
|
+
|
|
15
|
+
## Content schema
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
title: "Ingress under a burst"
|
|
19
|
+
producers:
|
|
20
|
+
- { id: web, label: Web client, rate: 4, unit: "requests/s", pattern: steady }
|
|
21
|
+
- { id: webhook, label: Payment hook, rate: 8, unit: "requests/s", pattern: burst }
|
|
22
|
+
queue: { label: Ingress buffer, discipline: FIFO, capacity: 5, unit: slots }
|
|
23
|
+
slots: [{ id: q1, item: "GET /orders", step: 1 }, { id: q2, item: "POST /auth", step: 1 }, { id: q3, item: "POST /payment", step: 2 }, { id: q4, item: "ERP batch A", step: 2 }, { id: q5, item: "ERP batch B", step: 2 }]
|
|
24
|
+
static_occupancy: 5
|
|
25
|
+
overflow_rate: { value: 4, unit: "requests/s" }
|
|
26
|
+
service: { label: Worker, capacity: 8, unit: "requests/s" }
|
|
27
|
+
outcomes: [{ id: admitted, label: Admitted }, { id: shed, label: "429 · backpressure" }]
|
|
28
|
+
steps: ["arrivals", "queue full", "backpressure", "service", "equilibrium"]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Include rates with units, queue capacity and discipline, a constrained service rate, each outcome, and the static queue state. Each step must be derived from the scenario; all slot states and occupancy counts must agree. Keep status words such as `FULL` or `SHED` alongside the numeric count.
|
|
32
|
+
|
|
33
|
+
## Deterministic layout recipe
|
|
34
|
+
|
|
35
|
+
Use a wide 1160×640 canvas. Reserve a left column for distinct producer cards, a central column for a bounded queue with one visible slot per unit of capacity, and a right column for the constrained worker and downstream destination. Place an overflow/backpressure sink above or below the worker, outside the queue's main route. Producers enter at separate fixed y coordinates; route each ingress line to its assigned slot so fan-in remains traceable. Use a single queue-depth badge aligned to the full slot stack. Add an equilibrium summary below the queue and a compact legend along the footer. Step groups may add arrivals, fill slots, activate the overflow route, and show service, but every frame uses the same positions and item order. Keep a complete final frame as the default export.
|
|
36
|
+
|
|
37
|
+
## Encoding rules
|
|
38
|
+
|
|
39
|
+
Label every flow rate and capacity with units. Distinguish admitted traffic, overload traffic, and rejected/deferred output using line style and text as well as color. The queue's count is `occupied/capacity`, not a decorative badge. Show a visible sink for rejected work and a path for admitted work. Use one accent to direct attention to the bottleneck or overload path; do not color every producer. Static fallback shows the representative queue state, capacity, service rate, and both outcomes at once.
|
|
40
|
+
|
|
41
|
+
## Korean behavior
|
|
42
|
+
|
|
43
|
+
Keep API paths, HTTP codes, rate units, and queue policies intact. Korean captions should use compact verbs and nouns, with the count and unit kept together (for example, `5/5칸`, `초당 8건`). Avoid line breaks inside identifiers. The accessible summary must explain steady versus burst arrivals in Korean and preserve item order.
|
|
44
|
+
|
|
45
|
+
## Light, dark, and full variants
|
|
46
|
+
|
|
47
|
+
Light/dark retain identical sources, rates, queue occupancy, routes, step sequence, and final frame. Change only shared tokens. The full variant may add one editorial frame and a short operational takeaway outside the queue drawing. Static, reduced-motion, and print/export views show all essential routes and the final queue state; no conclusion may depend on animation.
|
|
48
|
+
|
|
49
|
+
## Accessibility
|
|
50
|
+
|
|
51
|
+
The SVG description states source count, queue discipline/capacity, service limit, and admitted/rejected outcomes. Include a linear reading list of producers, ordered slots, service rate, and outcomes. Step controls must be keyboard-accessible and announce the current event. Status uses text plus shape/border; color alone never means full, blocked, or overloaded. Follow the full keyboard, reduced-motion, focus, and no-JS contract in [Motion](motion.md).
|
|
52
|
+
|
|
53
|
+
## Verifier gates
|
|
54
|
+
|
|
55
|
+
Run `python3 scripts/verify-diagram.py --canvas path/to/diagram.html` to check implemented SVG geometry, overlap, contrast, accessibility, and visible-text rules. Review theme or profile polarity, data correctness, and other unreported properties manually. Run `python3 scripts/verify-type.py --type=queue-animated path/to/diagram.html` to check catalog identity and structural rules registered for that ID. Separately verify the registered fan-in contract: producer/service units, queue occupancy/capacity, outcomes, and route semantics against source values and this guide; a matching ID alone does not prove those properties. Run `python3 scripts/verify-motion.py path/to/diagram.html` to detect unbounded animation and missing reduced-motion source rules. Inspect the static state, frame order, and controls manually. See [Verifier guide](verifier-guide.md). See that the gallery wrapper’s `data-type` value matches this exact Catalog ID; a missing or mismatched marker is not a passing type check.
|
|
56
|
+
|
|
57
|
+
## Anti-patterns
|
|
58
|
+
|
|
59
|
+
- Equal-width pipeline that hides fan-in or arrows merged before their sources can be traced.
|
|
60
|
+
- Queue occupancy inferred from box size, a count above capacity, or capacity without units.
|
|
61
|
+
- Decorative pile-up, changing FIFO order, or a blocked path that rejoins the admitted route.
|
|
62
|
+
- More than five sources/slots, one or more hidden outcomes, or red as the only overload cue.
|
|
63
|
+
- An animation whose static frame does not explain why work waits.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Radar and spider chart
|
|
2
|
+
|
|
3
|
+
**Catalog ID:** `radar`<br>
|
|
4
|
+
**Common references:** [Style guide](style-guide.md) · [Output spec](output-spec.md) · [Accessibility](accessibility.md) · [Korean typography](korean-typography.md) · [PPTX/DOCX](office-pptx-docx.md) · [Verifier guide](verifier-guide.md)
|
|
5
|
+
|
|
6
|
+
## Purpose and selection
|
|
7
|
+
|
|
8
|
+
Use Radar to compare 3–5 entities across 3–5 quantitative criteria on one shared, normalized scale. It is useful when several dimensions form a recognizable profile. Use a table or grouped bar chart for two entities, many criteria, or exact values that readers need to compare; use Polar for one series across cyclic categories.
|
|
9
|
+
|
|
10
|
+
## Exclusions
|
|
11
|
+
|
|
12
|
+
All axes must be meaningful, measurable, and comparable after explicit normalization. Do not mix units without a declared transformation, use more than five axes or series, begin at a nonzero baseline, or treat the polygon area as an extra value. Two-series charts usually have clearer alternatives. A measured scientific dataset belongs in the scientific-visualization workflow when that is the requested task.
|
|
13
|
+
|
|
14
|
+
## Content schema
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
title: "Storage options"
|
|
18
|
+
scale: { min: 0, max: 10 }
|
|
19
|
+
axes: [Latency, Durability, Cost, Operations, Portability] # 3–5
|
|
20
|
+
series:
|
|
21
|
+
- { id: local, label: Local, values: [8, 6, 7, 5, 8] }
|
|
22
|
+
- { id: managed, label: Managed, values: [7, 9, 6, 8, 7], focal: true }
|
|
23
|
+
- { id: community, label: Community, values: [6, 7, 7, 6, 6] }
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Every series has exactly one finite value per axis within the shared range. Normalize source measures before drawing and record the method/meaning of the common scale. Keep axis order fixed across every series and skin. At most one series is focal.
|
|
27
|
+
|
|
28
|
+
## Deterministic layout recipe
|
|
29
|
+
|
|
30
|
+
Use a 1000×560 viewBox, center `(500,240)`, and outer radius `R=160`. For axis `i` of `N`, set `angle=−π/2+2πi/N` and outer vertex `(cx+R cos(angle), cy+R sin(angle))`. Draw five closed polygon rings at fractions 0.2, 0.4, 0.6, 0.8, 1.0; spokes connect center to each outer vertex. For value `v` on scale maximum `S`, its vertex is `center+(v/S)×(outer_vertex−center)`. Round optional serialized coordinates consistently, but do not alter values. Place one-word axis labels 16px beyond their outer vertex. Put numeric scale ticks along the top axis only. Paint non-focal polygons in stable input order from smallest area to largest, then focal polygon and focal vertices, then legend. Preserve the same series order in the legend.
|
|
31
|
+
|
|
32
|
+
## Encoding rules
|
|
33
|
+
|
|
34
|
+
The normalized value along each spoke carries the comparison; polygon fill is only a light translucent aid. Use an editorial series palette with one accent focal series, not one arbitrary hue per item. Show focal vertex markers only on the focal series. Label series by name in the legend; label axis criteria directly. Do not truncate the zero baseline. State the normalization so a “7” has one interpretation on every spoke.
|
|
35
|
+
|
|
36
|
+
## Korean behavior
|
|
37
|
+
|
|
38
|
+
Shorten axis names to one word in Korean when possible. Keep scores and denominators explicit, e.g. `7/10`, and state whether high means more or better. Preserve identical axis order in the Korean version. A two-line axis label is allowed only when placed outside the plot and not overlapping its neighbor; otherwise use an explanatory key.
|
|
39
|
+
|
|
40
|
+
## Light, dark, and full variants
|
|
41
|
+
|
|
42
|
+
Light/dark preserve data, geometry, series order, normalization, and focus. Only shared tokens and contrast-safe palette variants change. The full variant may add a short summary for the focal option and brief comparison cards; those summaries must not introduce values absent from the chart.
|
|
43
|
+
|
|
44
|
+
## Accessibility
|
|
45
|
+
|
|
46
|
+
Include SVG title/description naming the entities, criteria, scale, normalization, and focal series. Provide a table-like text alternative with one row per entity and one value per criterion. Ensure patterns and labels distinguish series in grayscale; do not make polygon hue the sole identity cue. Keep grid and spokes subtle but perceptible.
|
|
47
|
+
|
|
48
|
+
## Verifier gates
|
|
49
|
+
|
|
50
|
+
Run `python3 scripts/verify-diagram.py --canvas path/to/diagram.html` to check implemented SVG geometry, overlap, contrast, accessibility, and visible-text rules. Review theme or profile polarity, data correctness, and other unreported properties manually. Run `python3 scripts/verify-type.py --type=radar path/to/diagram.html` to check catalog identity and structural rules registered for that ID. Separately verify the catalog marker against source values and this guide; a matching ID alone does not prove those properties. No specialized radar proof is registered; manually compare the declared values, axis order, and coordinates across variants. See [Verifier guide](verifier-guide.md). See that the gallery wrapper’s `data-type` value matches this exact Catalog ID; a missing or mismatched marker is not a passing type check.
|
|
51
|
+
|
|
52
|
+
## Anti-patterns
|
|
53
|
+
|
|
54
|
+
- More than five series or axes, two-series radar, or a mixed scale with no normalization.
|
|
55
|
+
- A truncated inner ring, non-quantitative axes, or a polygon area presented as a metric.
|
|
56
|
+
- Dots on every series, a rainbow, multiple focal series, or unlabeled polygons.
|
|
57
|
+
- Axis labels in mono type, text over the grid, or different axis order between skins.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Ridgeline
|
|
2
|
+
|
|
3
|
+
**Catalog ID:** `ridgeline`<br>
|
|
4
|
+
**Parent family:** distribution variant of Line; select `ridgeline` directly when each row is a distribution, not a value at each time.<br>
|
|
5
|
+
**Common references:** [Style guide](style-guide.md) · [Output spec](output-spec.md) · [Accessibility](accessibility.md) · [Korean typography](korean-typography.md) · [PPTX/DOCX](office-pptx-docx.md) · [Verifier guide](verifier-guide.md)
|
|
6
|
+
|
|
7
|
+
## Purpose and selection
|
|
8
|
+
|
|
9
|
+
Use Ridgeline to compare several distributions on a shared horizontal scale when shape, spread, or multimodality matters more than a summary percentile. A ridge represents one distribution. Use a histogram for one distribution, small multiples for two, Line for a time series, or a table of percentiles when shapes are alike and a compact exact summary is clearer.
|
|
10
|
+
|
|
11
|
+
## Exclusions
|
|
12
|
+
|
|
13
|
+
Use 3–12 distributions, 8–40 shared bins, one unit and x-domain, and one shared amplitude. The grammar does not show sample size or total volume: each distribution is normalized to its own count before shared scaling, so ridge height is concentration/shape, not traffic. Different units or x-ranges cannot share this layout. Avoid smoothing unless the method and true bin vertices are explicit; default is unsmoothed straight segments.
|
|
14
|
+
|
|
15
|
+
## Content schema
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
title: "Request latency distributions"
|
|
19
|
+
unit: "ms"
|
|
20
|
+
x_domain: [0, 500]
|
|
21
|
+
bins: [0, 40, 80, 120, 160, 200, 240, 280, 320, 360, 400, 440, 500]
|
|
22
|
+
normalization: probability-density-per-series
|
|
23
|
+
amplitude: 1.0 # one shared peak-to-pixel factor
|
|
24
|
+
series:
|
|
25
|
+
- { id: checkout, label: Checkout, counts: [0, 1, 6, 17, 21, 14, 8, 6, 7, 9, 7, 4, 0], focal: true }
|
|
26
|
+
- { id: search, label: Search, counts: [0, 2, 7, 13, 18, 15, 11, 8, 5, 3, 2, 1, 0] }
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Every ridge has the same bin count, x-domain, and known bin values, with zero at both ends so its path returns to baseline. Record the normalization and shared amplitude. At most one ridge is focal. If absolute population size matters, add an explicit sample-size label or choose a chart that encodes volume.
|
|
30
|
+
|
|
31
|
+
## Deterministic layout recipe
|
|
32
|
+
|
|
33
|
+
Use a 1000×500 viewBox. Shared x-run is 320–680; map each bin linearly across this span. For `n` ridges, use baselines at `y=152+56i` for five rows; when `n` differs, center the fixed 56px-pitch stack vertically. Convert normalized density to height with the same amplitude for every row. Draw each ridge as a closed polygon: start at the baseline, draw straight segments through each bin point, return to the baseline, close. Do not use splines. Put the series name left of its baseline and its nonzero x-range right of it, aligned to that row. Put bin labels below the stack and one vertical amplitude caption at the left. Draw baselines, then neutral ridges from top to bottom, then the focal ridge and labels. No gridlines.
|
|
34
|
+
|
|
35
|
+
## Encoding rules
|
|
36
|
+
|
|
37
|
+
X-position is the shared value domain; vertical height is normalized density. State both in the source note/description, and state that total volume is not encoded. Use one accent ridge and a restrained ink-opacity ramp for others, with fixed stroke weights and low-opacity fills. Keep range labels bound to the bins they summarize. A common amplitude is essential: do not normalize ridge heights independently to make every profile equally tall. Any overlap is deliberate and limited to the next row; peaks must not obscure two rows above.
|
|
38
|
+
|
|
39
|
+
Bind each ridge path with a unique `data-ridge`, its zero baseline in `data-baseline`, and its ordered comma-separated bins in `data-bins`. Draw one baseline rule per ridge using the same `data-ridge` and `data-role="baseline"`; bind name/range labels to that ID with `data-role="name"` or `data-role="range"`. Each bin tick carries `data-tick` (index) and `data-bin` (value). The checker reads raw geometry, so do not move a path, label, or ancestor with transforms or CSS geometry.
|
|
40
|
+
|
|
41
|
+
## Korean behavior
|
|
42
|
+
|
|
43
|
+
Keep every ridge name on its baseline and x-range in the same unit. Use Korean service/cohort labels as concise nouns. Format the shared x-axis units once, and keep bin values and units together. If Korean names wrap, reserve a wider left gutter for all rows; never alter ridge centers or amplitude to make room.
|
|
44
|
+
|
|
45
|
+
## Light, dark, and full variants
|
|
46
|
+
|
|
47
|
+
Use identical distributions, shared domain, amplitude, baseline pitch, and accent target in every variant. Light/dark change only shared tokens; use skin-neutral ramp wording such as “strongest tone,” not “darkest.” The full variant may add a small editorial frame or summary cards with already-declared statistics; it may not imply volume from ridge height.
|
|
48
|
+
|
|
49
|
+
## Accessibility
|
|
50
|
+
|
|
51
|
+
Describe the measure, unit, domain, normalization, shared amplitude, and meaning of vertical height. Provide a text table with each series name, nonzero range, and any separately declared sample size. Do not rely on opacity or accent to identify rows. Keep outlines contrast-visible and provide a nonvisual statement that overlapping outlines are separate distributions.
|
|
52
|
+
|
|
53
|
+
## Verifier gates
|
|
54
|
+
|
|
55
|
+
Run `python3 scripts/verify-diagram.py --canvas path/to/diagram.html` to check implemented SVG geometry, overlap, contrast, accessibility, and visible-text rules. Review theme or profile polarity, data correctness, and other unreported properties manually. Run `python3 scripts/verify-type.py --type=ridgeline path/to/diagram.html` to check catalog identity and structural rules registered for that ID. Separately verify every bin vertex against one shared domain/amplitude, validate baselines/pitch, range labels, endpoint closure, series count, and variant parity against source values and this guide; a matching ID alone does not prove those properties. See [Verifier guide](verifier-guide.md). See that the gallery wrapper’s `data-type` value matches this exact Catalog ID; a missing or mismatched marker is not a passing type check.
|
|
56
|
+
|
|
57
|
+
## Anti-patterns
|
|
58
|
+
|
|
59
|
+
- Private amplitude or baseline for one ridge, or reading volume from ridge height.
|
|
60
|
+
- Different domains, units, or bin centers across rows.
|
|
61
|
+
- A path that starts/ends above baseline, clips mass, or invents a peak with smoothing.
|
|
62
|
+
- Too-tight pitch that hides the row above, one color per series, or a “darker is faster” key.
|
|
63
|
+
- One or two ridges, more than twelve, or ranges omitted from a shape-only comparison.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Sankey and flow quantity
|
|
2
|
+
|
|
3
|
+
**Catalog ID:** `sankey`<br>
|
|
4
|
+
**Common references:** [Style guide](style-guide.md) · [Output spec](output-spec.md) · [Accessibility](accessibility.md) · [Korean typography](korean-typography.md) · [PPTX/DOCX](office-pptx-docx.md) · [Verifier guide](verifier-guide.md)
|
|
5
|
+
|
|
6
|
+
## Purpose and selection
|
|
7
|
+
|
|
8
|
+
Use Sankey when a quantity splits or merges across stages and ribbon width is the main message: cost allocation, CI time, staffing, or volume movement. Use Pyramid/Funnel for a one-way drop-off without branching; Process for ordered steps without amount encoding. If exact comparisons matter more than flow, use a table or bar chart.
|
|
9
|
+
|
|
10
|
+
## Exclusions
|
|
11
|
+
|
|
12
|
+
Exactly three left-to-right stage columns, at most eight nodes and twelve ribbons. Quantities are nonnegative and must conserve at each intermediate node and between columns. A path cannot branch into unstated amounts. No arrowheads: direction is carried by ordered columns. Merge tiny flows into a named “Other” only if the aggregation preserves the total and is explained.
|
|
13
|
+
|
|
14
|
+
## Content schema
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
title: "Build minutes by outcome"
|
|
18
|
+
unit: "minutes"
|
|
19
|
+
scale: { px_per_unit: 0.02 }
|
|
20
|
+
stages: [Budget, Test stage, Outcome]
|
|
21
|
+
nodes:
|
|
22
|
+
- { id: budget, stage: 0, label: CI total, value: 12000 }
|
|
23
|
+
- { id: tests, stage: 1, label: Tests, value: 7000 }
|
|
24
|
+
- { id: build, stage: 1, label: Build, value: 5000 }
|
|
25
|
+
- { id: passed, stage: 2, label: Passed, value: 10000 }
|
|
26
|
+
- { id: failed, stage: 2, label: Failed, value: 2000 }
|
|
27
|
+
flows:
|
|
28
|
+
- { id: budget-tests, from: budget, to: tests, value: 7000, focal_path: false }
|
|
29
|
+
- { id: budget-build, from: budget, to: build, value: 5000, focal_path: false }
|
|
30
|
+
- { id: tests-passed, from: tests, to: passed, value: 6000, focal_path: false }
|
|
31
|
+
- { id: tests-failed, from: tests, to: failed, value: 1000, focal_path: false }
|
|
32
|
+
- { id: build-passed, from: build, to: passed, value: 4000, focal_path: false }
|
|
33
|
+
- { id: build-failed, from: build, to: failed, value: 1000, focal_path: true }
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
List exactly three stages, unique nodes in a stage, and explicit source/target/value per flow. Use one unit and one pixels-per-unit constant. A middle node's incoming and outgoing sums equal its declared value; the first and final columns balance to the same overall total. Mark one editorial path at most.
|
|
37
|
+
|
|
38
|
+
## Deterministic layout recipe
|
|
39
|
+
|
|
40
|
+
Set one `k` px-per-unit scale for every node and flow. Convert quantities with `height=k×value`, rounded to the nearest 4px for grid alignment; reconcile rounding at each node so its attached ribbons still sum exactly to its rendered height and limit any stated-value discrepancy to one 4px step. Use identical total stack height for each stage. Give each node a 12px bar; stack nodes vertically in a stable input order within each column. Assign each flow a distinct cumulative top/bottom offset interval inside its source and target node. Draw ribbons as one closed cubic path with both control points at the horizontal midpoint between columns, giving a horizontal tangent at both bars. Place column-one labels outside left, column-two labels centered vertically in the clear gutter, and column-three labels outside right. Add headers above and a legend/footer below. Reorder nodes to reduce crossings before changing geometry.
|
|
41
|
+
|
|
42
|
+
## Encoding rules
|
|
43
|
+
|
|
44
|
+
Ribbon thickness and node height both encode quantity. Use one muted ribbon treatment for ordinary paths and accent for one focal path; never a distinct hue per flow. No arrowheads, no hidden offsets, and no overlap between ribbons attached to the same bar. Every quantity is printed with its unit and reconciles to the geometry. Keep the smallest visible ribbon at least 4px; aggregate a smaller one only with a documented total.
|
|
45
|
+
|
|
46
|
+
## Korean behavior
|
|
47
|
+
|
|
48
|
+
Keep amounts, units, and percentages bound together using one Korean number format. Stage headings may use short Korean nouns; node names should fit a single line where possible. Put unit in the title/subtitle once and retain units beside values when ambiguity remains. Do not wrap a number away from its unit or shorten a label so it changes the underlying category.
|
|
49
|
+
|
|
50
|
+
## Light, dark, and full variants
|
|
51
|
+
|
|
52
|
+
All skins use the same nodes, values, scale, ribbon offsets, order, and focal path. Switch shared paper/ink tokens only. A full variant can add concise summary cards, but each card must repeat a declared quantity exactly and must not recalculate the diagram on a different scale.
|
|
53
|
+
|
|
54
|
+
## Accessibility
|
|
55
|
+
|
|
56
|
+
Describe the unit, stage order, total, and focal path in the SVG description. Provide a text table of node totals and flow values, with source/target names. Ensure direction is understandable from stage names and text; distinguish focal flow by label as well as accent. Do not place text over ribbons.
|
|
57
|
+
|
|
58
|
+
## Verifier gates
|
|
59
|
+
|
|
60
|
+
Run `python3 scripts/verify-diagram.py --canvas path/to/diagram.html` to check implemented SVG geometry, overlap, contrast, accessibility, and visible-text rules. Review theme or profile polarity, data correctness, and other unreported properties manually. Run `python3 scripts/verify-type.py --type=sankey path/to/diagram.html` to check catalog identity and structural rules registered for that ID. Separately verify stage/node/flow budgets, conservation, one scale, ribbon thickness, attachment offsets/tangents, crossings, and variant parity against source values and this guide; a matching ID alone does not prove those properties. See [Verifier guide](verifier-guide.md). See that the gallery wrapper’s `data-type` value matches this exact Catalog ID; a missing or mismatched marker is not a passing type check.
|
|
61
|
+
|
|
62
|
+
## Anti-patterns
|
|
63
|
+
|
|
64
|
+
- Ribbon meeting a bar at a slant or a control point that collapses at the target.
|
|
65
|
+
- Intermediate labels pinned to a ribbon edge, or an opaque mask that cuts a hole in a band.
|
|
66
|
+
- Flow totals that do not balance, different scales by column, or unexplained rounding.
|
|
67
|
+
- Ribbons under 4px, repeated attach intervals, or tangled crossings.
|
|
68
|
+
- Rainbow flows, arrows on ribbons, or a Sankey used for a simple funnel/process.
|