@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
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# Stage path
|
|
2
|
+
|
|
3
|
+
The stage path is for every film that shows things: a drawn subject, shapes,
|
|
4
|
+
diagrams, charts, illustration or interface, and every 9:16 film. You author a
|
|
5
|
+
page; this skill's renderer captures it frame by frame on a virtual clock,
|
|
6
|
+
encodes it with the pinned encode, muxes the sound and runs the gate. Every
|
|
7
|
+
frame passes through that renderer. A hand-encoded film (a PIL frame loop, a
|
|
8
|
+
raw ffmpeg filter graph, a screen recording, a raster flipbook) is not the
|
|
9
|
+
deliverable.
|
|
10
|
+
|
|
11
|
+
## What you write
|
|
12
|
+
|
|
13
|
+
- `DIR/treatment.json` (`treatment.md`) with `path: stage`.
|
|
14
|
+
- `DIR/stage/index.html` and its local assets: SVG, PNG, JPG, WebP, JS, CSS,
|
|
15
|
+
JSON and WAV files inside `DIR/stage/`.
|
|
16
|
+
|
|
17
|
+
Never install, download or copy a third-party library into the stage dir. Use
|
|
18
|
+
the kit below and your own code. Rasters are textures and stills, never a frame
|
|
19
|
+
sequence: at most 24 raster images and 8 MB in total; 10 or more rasters of the
|
|
20
|
+
same size (a flipbook), or any animated GIF, APNG or WebP, is exit 17.
|
|
21
|
+
|
|
22
|
+
Put all on-screen copy in one `COPY` object at the top of `stage/index.html`,
|
|
23
|
+
so the copy is easy to find and edit:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
const COPY = { title: "<line>", steps: ["<line>", "<line>"], close: "<line>" };
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## The page contract
|
|
30
|
+
|
|
31
|
+
The page loads the kit and the fonts from the renderer's own routes, and then
|
|
32
|
+
declares the film:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
<link rel="stylesheet" href="/lit/fonts.css">
|
|
36
|
+
<script src="/lit/stage-kit.js"></script>
|
|
37
|
+
<script>
|
|
38
|
+
LitStage.define({ width: 1920, height: 1080, fps: 60, duration: <seconds>, render(t) { /* draw the frame at t */ } });
|
|
39
|
+
</script>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
- `width` and `height` equal the treatment's format: 1920×1080 for 16:9,
|
|
43
|
+
1080×1920 for 9:16. `duration` is the treatment's `durationSec`; the render
|
|
44
|
+
must land within ±10 % of it.
|
|
45
|
+
- `fps` is 60. Use 30 only when the treatment says so.
|
|
46
|
+
- `render(t)` draws the frame at time `t` in seconds. It may be omitted when
|
|
47
|
+
the page animates only with CSS or the Web Animations API.
|
|
48
|
+
- Setting `window.litStage` to the same object is equivalent to calling
|
|
49
|
+
`LitStage.define`.
|
|
50
|
+
|
|
51
|
+
The page may also use CSS animations and transitions, the Web Animations API,
|
|
52
|
+
SVG SMIL and `requestAnimationFrame` with Canvas2D or WebGL. The renderer drives
|
|
53
|
+
all of them from one virtual clock.
|
|
54
|
+
|
|
55
|
+
Forbidden, each exit 17 naming the element or API: `<video>`, `<audio>`,
|
|
56
|
+
`<iframe>`, `<object>`, `<embed>`, `<frame>`; `new Audio()`, `AudioContext`,
|
|
57
|
+
`OfflineAudioContext`; `Worker`, `SharedWorker`, service workers. `WebSocket`,
|
|
58
|
+
`WebTransport` and `RTCPeerConnection` are network requests: exit 19. Sound
|
|
59
|
+
belongs in the treatment, not in the page.
|
|
60
|
+
|
|
61
|
+
Network: the page is served from a synthetic origin, `http://lit.stage/`,
|
|
62
|
+
without a listening socket. Any request outside it fails the run with exit 19,
|
|
63
|
+
and so does an absolute `http(s)://` or protocol-relative URL, or a preconnect
|
|
64
|
+
or prefetch link, anywhere in the stage files.
|
|
65
|
+
|
|
66
|
+
### Fonts
|
|
67
|
+
|
|
68
|
+
`/lit/fonts.css` declares this product's verified faces with
|
|
69
|
+
`font-display: block`, served from the pre-warmed cache and the reused lit-pptx
|
|
70
|
+
Pretendard pair: `Pretendard` (400, 700), `Archivo` (500, 700, 900 at
|
|
71
|
+
`font-stretch` 75 %, 100 %, 125 %), `Galmuri9`, `VT323`, `Silkscreen` (400,
|
|
72
|
+
700) and `MesloLGS NF`. Use Pretendard for Hangul. Any other family falls back
|
|
73
|
+
to a system face; the QA reports it and fails it on copy.
|
|
74
|
+
|
|
75
|
+
### Text the QA can read
|
|
76
|
+
|
|
77
|
+
- HTML and SVG text is found automatically. Mark text that is part of a drawn
|
|
78
|
+
subject (a label on a drawn jar, a number on a drawn clock) as decor:
|
|
79
|
+
`LitStage.text(el, { decor: true })`. Decor text is exempt from title-safe
|
|
80
|
+
and reading-floor checks, may not carry a copy line, and may not exceed 25 %
|
|
81
|
+
of the visible text area.
|
|
82
|
+
- Canvas and WebGL text is invisible to the QA unless you register it every
|
|
83
|
+
frame you draw it: `LitStage.text({ content, x, y, w, h })`. Unregistered
|
|
84
|
+
canvas text is reported as "canvas text not measured".
|
|
85
|
+
|
|
86
|
+
## The kit
|
|
87
|
+
|
|
88
|
+
`/lit/stage-kit.js` is this skill's own code: motion primitives only, no
|
|
89
|
+
scenes, no objects, no layouts, no copy. `window.LitStage` holds:
|
|
90
|
+
|
|
91
|
+
- **Eases.** `LitStage.ease.outCubic(p)` and the rest of the named set
|
|
92
|
+
(`linear`, `inSine`/`outSine`/`inOutSine`, `inQuad`…`inOutQuart`,
|
|
93
|
+
`inExpo`/`outExpo`/`inOutExpo`, `inBack`/`outBack`/`inOutBack`), plus
|
|
94
|
+
`LitStage.bezier(x1, y1, x2, y2)` for a CSS-style cubic-bezier.
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
const lift = LitStage.bezier(0.2, 0.8, 0.2, 1)(p);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
- **Spring.** An analytic damped spring, a pure function of time:
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
const s = LitStage.spring({ from: 0, to: 1, stiffness: 180, damping: 18 });
|
|
104
|
+
el.style.transform = `scale(${s(t - 1.5)})`;
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
- **Keyframes.** `LitStage.kf(t, keys)` interpolates numbers or number arrays,
|
|
108
|
+
with an optional ease per segment:
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
const [x, y] = LitStage.kf(t, [{ t: 0, v: [0, 40] }, { t: 1.2, v: [320, 0], ease: "outCubic" }]);
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
- **Timing.** `LitStage.at(t, start, dur, ease)` returns the eased progress of
|
|
115
|
+
a window, clamped to 0–1. `LitStage.stagger(i, { each, from })` returns the
|
|
116
|
+
start offset of item `i`. `LitStage.seq(t, [d0, d1, ...])` returns
|
|
117
|
+
`{ index, p }` for back-to-back segments.
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
items.forEach((el, i) => { el.style.opacity = LitStage.at(t, 2 + LitStage.stagger(i, { each: 0.08 }), 0.4, "outQuad"); });
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
- **Seeded randomness.** `LitStage.rand(seed)` returns a deterministic
|
|
124
|
+
generator; `Math.random` is also seeded from the treatment by the renderer.
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
const r = LitStage.rand(7); const dots = Array.from({ length: 40 }, () => [r() * 1920, r() * 1080]);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
- **Splitting text.** `LitStage.splitText(el, { by: "grapheme" | "word" })`
|
|
131
|
+
wraps each grapheme, or each word (어절 for Hangul), in a span and returns
|
|
132
|
+
them. It uses `Intl.Segmenter`, so a Hangul syllable is never split.
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
LitStage.splitText(title, { by: "word" }).forEach((w, i) => w.style.opacity = LitStage.at(t, i * 0.12, 0.3));
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
- **Path draw.** `LitStage.drawPath(pathEl, p)` reveals an SVG path from its
|
|
139
|
+
start by stroke dash.
|
|
140
|
+
|
|
141
|
+
```text
|
|
142
|
+
LitStage.drawPath(outline, LitStage.at(t, 0.5, 1.6, "inOutSine"));
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
- **Morph.** `LitStage.morph(fromD, toD)` returns `p => d` for two
|
|
146
|
+
single-subpath shapes: both are normalized to cubics, resampled by arc length
|
|
147
|
+
and aligned at the best rotation. Multi-subpath morphs are not supported;
|
|
148
|
+
split them into single paths.
|
|
149
|
+
|
|
150
|
+
```text
|
|
151
|
+
const m = LitStage.morph(bud.getAttribute("d"), bloom.getAttribute("d")); shape.setAttribute("d", m(p));
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
- **Masks and clips.** `LitStage.clipInset(el, p, "left" | "right" | "top" |
|
|
155
|
+
"bottom")` wipes an element in; `LitStage.clipCircle(el, p, cx, cy)` opens
|
|
156
|
+
an iris; `LitStage.maskWipe(el, p, angleDeg, softPx)` sweeps a soft gradient
|
|
157
|
+
mask.
|
|
158
|
+
|
|
159
|
+
```text
|
|
160
|
+
LitStage.clipCircle(scene2, LitStage.at(t, 6, 0.8, "inOutCubic"), "50%", "60%");
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
- **Colour.** `LitStage.mix("#0f3b4c", "#f2c14e", p)` returns an `rgb()`
|
|
164
|
+
string.
|
|
165
|
+
|
|
166
|
+
- **Text registration.** `LitStage.text(el, { decor: true })` and
|
|
167
|
+
`LitStage.text({ content, x, y, w, h })`, above.
|
|
168
|
+
|
|
169
|
+
## How the capture works
|
|
170
|
+
|
|
171
|
+
The renderer serves the page to a software-rendered Chrome (SwiftShader, CPU
|
|
172
|
+
raster, no GPU rung), so any difference between two captures is a page leak,
|
|
173
|
+
not a driver. An init script replaces `Date`, `performance.now`, `setTimeout`,
|
|
174
|
+
`setInterval`, `requestAnimationFrame`, `requestIdleCallback`,
|
|
175
|
+
`document.timeline.currentTime` and `Math.random` with a virtual clock and a
|
|
176
|
+
seeded generator.
|
|
177
|
+
|
|
178
|
+
Before frame 0 it loads every face in `fonts.css` and decodes every image.
|
|
179
|
+
For each frame `f` it sets `t = f / fps` (computed, never accumulated), seeks
|
|
180
|
+
every running animation to its own time, runs due timers and animation-frame
|
|
181
|
+
callbacks, calls `render(t)`, pauses and records any animation that appeared,
|
|
182
|
+
waits for fonts and images, lets Chrome paint twice, and captures exactly
|
|
183
|
+
`width × height` pixels. The pixels go straight into the pinned H.264 encode.
|
|
184
|
+
|
|
185
|
+
What this means for you:
|
|
186
|
+
|
|
187
|
+
- Drive motion from `t`, CSS or WAAPI. Never from wall-clock time.
|
|
188
|
+
- `performance.timeOrigin` and `crypto.getRandomValues` are not virtualized.
|
|
189
|
+
A frame that depends on them differs between two captures: exit 18.
|
|
190
|
+
- A CSS transition started at `t` runs on the virtual clock like any other
|
|
191
|
+
animation; a `finished.then(...)` chain continues on it.
|
|
192
|
+
|
|
193
|
+
A full render records per-frame timing (p50, p95, total) in the manifest.
|
|
194
|
+
Long films take minutes: give the command a timeout of at least 600 s, or run
|
|
195
|
+
it with `--detach` and poll `DIR/.run/progress.json` and `DIR/run-state.json`.
|
|
196
|
+
Never shorten the film to save render time.
|
|
197
|
+
|
|
198
|
+
## Determinism
|
|
199
|
+
|
|
200
|
+
After the film, the renderer re-captures 8 to 16 sample frames (frame 0, the
|
|
201
|
+
last frame, the first frame of every beat, then beat midpoints) in a fresh
|
|
202
|
+
Chrome that replays the clock from 0, and compares the SHA-256 of the decoded
|
|
203
|
+
pixels. A mismatch is exit 18, naming the frame and the first differing region.
|
|
204
|
+
|
|
205
|
+
## Text QA
|
|
206
|
+
|
|
207
|
+
A separate replay reads every visible text run (the nearest `LitStage.text`
|
|
208
|
+
element, otherwise the nearest block; `::before` and `::after` content; and
|
|
209
|
+
registered canvas text). At every beat midpoint, plus two settled frames per
|
|
210
|
+
beat, it captures the frame, hides only the text fill, captures again, and
|
|
211
|
+
takes the difference as the ink. Contrast uses the worst pairing of median ink
|
|
212
|
+
against the dark and light ends of the ground in the text box grown by a quarter
|
|
213
|
+
of the cap height, so a scrim behind type must reach past that margin. Only
|
|
214
|
+
settled text is judged: its box moved less than 2 px since the previous probe
|
|
215
|
+
and its opacity is at least 0.95. The samples sit at every beat's midpoint and
|
|
216
|
+
at 35 % and 80 % of it; runs are also read every 1/10 s for the reading floor
|
|
217
|
+
and the copy-found check. A run counts as visible at opacity 0.6 or more, on
|
|
218
|
+
screen after clipping, with at least 12 ink pixels at a sample. Registered
|
|
219
|
+
canvas text cannot be hidden, so its ink is the pixels in its box that stand
|
|
220
|
+
apart from the box's edge.
|
|
221
|
+
|
|
222
|
+
| Check | Copy text | Decor text |
|
|
223
|
+
|---|---|---|
|
|
224
|
+
| Contrast (3.0 large, 4.5 body; large is at least 3 % of the short side) | FAIL | WARN |
|
|
225
|
+
| Title-safe (inside the central 90 % of the frame) | FAIL | exempt |
|
|
226
|
+
| Reading floor (on screen at least as long as the line takes to read) | FAIL | exempt |
|
|
227
|
+
|
|
228
|
+
Also checked:
|
|
229
|
+
|
|
230
|
+
- Every `copy.lines` entry must appear on screen: exit 17 quoting the line.
|
|
231
|
+
- WARN, and the look must answer it: text that equals or contains the request,
|
|
232
|
+
the idea, a file name or an internal term; canvas text not measured; a
|
|
233
|
+
sample where something other than text moved; less than half of the beat
|
|
234
|
+
midpoints showing any non-text image.
|
|
235
|
+
- Fonts outside the verified set: WARN, FAIL on copy.
|
|
236
|
+
|
|
237
|
+
## Stage gate
|
|
238
|
+
|
|
239
|
+
`$M gate --out DIR` re-measures the exports and the sound and rewrites the
|
|
240
|
+
report without touching `manifest.json`, so a recorded look round stays valid
|
|
241
|
+
and the viewed count carries over.
|
|
242
|
+
|
|
243
|
+
| Rule | What fails |
|
|
244
|
+
|---|---|
|
|
245
|
+
| MO-C-03 | more than 3 general or 3 red flashes in any 1 s window (the grid turns for 9:16) |
|
|
246
|
+
| MO-C-09 | a sample frame that differs in a fresh replay (exit 18) |
|
|
247
|
+
| MO-C-10 | a film that is not exactly 1920×1080 or 1080×1920 as the format says |
|
|
248
|
+
| MO-C-11 | tags other than yuv420p, bt709, tv, or under 30 fps |
|
|
249
|
+
| MO-C-12 | a length more than 10 % from `durationSec` |
|
|
250
|
+
| MO-C-13 | a preview over 3 MB or a poster over 1 MB |
|
|
251
|
+
| MO-C-14 | a reduced-motion still (the final beat's midpoint) with no ink |
|
|
252
|
+
| MO-D-03 | an empty, near-black run longer than 2.4 s (1 s more at either end of the film) |
|
|
253
|
+
| text rules | the Text QA table above |
|
|
254
|
+
| sound | a missing stream, a length more than 0.1 s off, a peak over −0.5 dBFS, or (generated beds) a silence over 1.5 s in the first 3 s |
|
|
255
|
+
|
|
256
|
+
## Effects and determinism
|
|
257
|
+
|
|
258
|
+
`filter: blur()`, `backdrop-filter`, `mix-blend-mode`, `box-shadow`, SVG
|
|
259
|
+
`feGaussianBlur`, Canvas2D `shadowBlur` and WebGL shaders all capture the same
|
|
260
|
+
way twice on the software renderer. A WebGL context needs the software GL;
|
|
261
|
+
without it the stage exits 11.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Style bibles
|
|
2
|
+
|
|
3
|
+
On the type path the treatment (`treatment.md`) already fixes the idea, the
|
|
4
|
+
audience, the arc, the palette and the sound. The style bible adds the look
|
|
5
|
+
decisions the type engine will not make by itself. Write it in your own words
|
|
6
|
+
for this film. Under bare `lit` do not ask the user; choose, then label each
|
|
7
|
+
choice as a default in the final reply.
|
|
8
|
+
|
|
9
|
+
## The style-bible template
|
|
10
|
+
|
|
11
|
+
Fill every field. A field left open is decided by the engine's preset default.
|
|
12
|
+
The right-hand column says what a useful answer contains; it is not an answer
|
|
13
|
+
to copy.
|
|
14
|
+
|
|
15
|
+
| Field | What to write | A useful answer names |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| Idea | The treatment's `idea`, unchanged | <the treatment's one sentence> |
|
|
18
|
+
| Preset | `swiss-signal`, `terminalcore` or `tidal`, and why | <the preset> because <what in this film calls for it> |
|
|
19
|
+
| Palette | The preset palette, or one stated swap inside its rules | <the swap and the brief key that sets it> |
|
|
20
|
+
| Voices | Which text is display, body, machine | <which line takes which voice> |
|
|
21
|
+
| Motion tone | The preset's named tokens you rely on | <entrance, hold and cut tokens> |
|
|
22
|
+
| Shot list | One line per shot: scene id, text, what moves | <scene id>: <line>, <what moves> |
|
|
23
|
+
| Accent | The one moment that gets the accent, or none | <the line index and why> |
|
|
24
|
+
| Anti-slop | Two or three things this film must not do | <habits this film avoids> |
|
|
25
|
+
| Originality | The visual idea that belongs to this film only | <a device drawn from the subject's specifics> |
|
|
26
|
+
|
|
27
|
+
The shot list maps directly to the brief JSON: `text` is the list of lines in
|
|
28
|
+
order and `scenes` is the optional list of scene ids in the same order.
|
|
29
|
+
|
|
30
|
+
## Auto-pick (MO-B-00)
|
|
31
|
+
|
|
32
|
+
The engine reads the brief's `text`, `mood` and `topic` and takes the first row
|
|
33
|
+
that matches. Latin keywords match as whole words only; Korean keywords match
|
|
34
|
+
only at the start of a token, so a keyword never fires inside a longer word it
|
|
35
|
+
merely ends. An explicit `"style"` in the brief always wins over this table.
|
|
36
|
+
The report labels a style you chose as `agent default`; it says
|
|
37
|
+
`user-specified` only when the user's own request named that style.
|
|
38
|
+
|
|
39
|
+
| Brief mentions | Preset |
|
|
40
|
+
|---|---|
|
|
41
|
+
| 터미널, 해커 / terminal, hacker, CRT | `terminalcore` |
|
|
42
|
+
| 물결, 파도, 잔잔한, 흐름 / gradient, wave, tide, calm | `tidal` |
|
|
43
|
+
| anything else | `swiss-signal` |
|
|
44
|
+
|
|
45
|
+
`system`, `status` and a bare `flow` are deliberately not keywords: they appear
|
|
46
|
+
in payment-system, design-system and workflow briefs that have nothing to do
|
|
47
|
+
with a terminal or a tide. The manifest records the pick and the reason, and the
|
|
48
|
+
gate report prints them on its `preset:` line.
|
|
49
|
+
|
|
50
|
+
## swiss-signal (MO-B-01)
|
|
51
|
+
|
|
52
|
+
Print precision on paper. The ground is bone `#E9EBE4`; type is ink `#0C0E13`
|
|
53
|
+
(16:1 either way round). One signal hue, teal `#0F7A82`, is for large type (32 px
|
|
54
|
+
and up, or 25 px bold), rules and bars, never small body copy: it measures about
|
|
55
|
+
4.2:1 on bone. One accent, `#D9A441`, belongs to a single moment and never to
|
|
56
|
+
text; the engine shows it as a small square at the title's rule for at most two
|
|
57
|
+
beats and never on more than 10% of the film's frames. Graphite `#4B5058` is
|
|
58
|
+
reserved for non-text marks.
|
|
59
|
+
|
|
60
|
+
Voices: Archivo for display type (fetched width instances 75/100/125 at weights
|
|
61
|
+
500/700/900; 500 stands in for 400 because that is what the pinned set ships),
|
|
62
|
+
PretendardGOV Regular or Bold for any Hangul, MesloLGS NF for annotations.
|
|
63
|
+
Motion tokens: `slam` (180 ms on the proven deceleration curve, entrance scale
|
|
64
|
+
0.96 to 1, never from zero), `hold` for the reading time, `snap-cut` at the beat.
|
|
65
|
+
The title slam steps Latin width from 125 to 100 halfway through its landing;
|
|
66
|
+
Hangul never takes that step. Passes: `swiss-grid` hairline rules as the layout
|
|
67
|
+
backbone, then `dither` at low strength as a printed grain. Grid: 12 columns,
|
|
68
|
+
24 px gutter, 96 px margin, 8 px baseline, compositions left-anchored rather than
|
|
69
|
+
centred.
|
|
70
|
+
|
|
71
|
+
Anti-slop: centred fade-in words as the only move; one ease for every beat;
|
|
72
|
+
glitch without a reason; any rainbow or second signal hue; bloom on anything but
|
|
73
|
+
the signal; a hold so long it reads as a stall.
|
|
74
|
+
|
|
75
|
+
## terminalcore (MO-B-02)
|
|
76
|
+
|
|
77
|
+
A terminal interface, not a code-rain poster. Background navy `#05070A`, window
|
|
78
|
+
panel `#0C1116`, one signal hue per film: phosphor green `#39FF6A` by default or
|
|
79
|
+
electric blue `#2FB6FF` (`"signalHue": "blue"`), never both. Both clear 4.5:1 on
|
|
80
|
+
navy and panel, so body-size readouts are safe; grey `#7C8B93` (5.7:1) is for
|
|
81
|
+
chrome labels.
|
|
82
|
+
|
|
83
|
+
Voices: Galmuri9 for Hangul (always at a multiple of its 9 px grid, 45 px or
|
|
84
|
+
more on screen), VT323 for Latin display, MesloLGS NF for status readouts,
|
|
85
|
+
Silkscreen for window-chrome labels only. Galmuri and VT323 never share one line
|
|
86
|
+
cell for cell. Motion tokens: `type-in` at 22 characters per second with no ease
|
|
87
|
+
(Hangul appears a whole 어절 at a time), `boot-flicker` for the first 250 ms of the
|
|
88
|
+
film, bounded by the CRT flicker cap, and `hard-cut` on the beat. Passes, in
|
|
89
|
+
order: `terminal-ui` (window chrome, meters, caret drawn as a Canvas2D layer),
|
|
90
|
+
`crt` (scanlines, curvature, seeded triad grain, capped flicker, phosphor
|
|
91
|
+
persistence over the two previous frames of the same shot), `dither` (Bayer4,
|
|
92
|
+
2 px cells), `glitch` (at most one scheduled hit per shot of 1.8 s or longer).
|
|
93
|
+
|
|
94
|
+
Anti-slop: falling code rain; neon purple-cyan haze; continuous glitch; both
|
|
95
|
+
signal hues in one film; pixel type too small for its grid.
|
|
96
|
+
|
|
97
|
+
## tidal (MO-B-03)
|
|
98
|
+
|
|
99
|
+
Slow water. Background indigo `#0E1420` under a moving two-stop gradient of deep
|
|
100
|
+
teal `#124559` and violet `#4C3B6E`; type off-white `#E8ECEF` (15:1 on indigo,
|
|
101
|
+
8:1 or better on either stop, so no scrim is needed). Coral `#E07856` is a rare
|
|
102
|
+
accent for one moment only.
|
|
103
|
+
|
|
104
|
+
Voices: Archivo at a calmer weight (700) for display, PretendardGOV for Hangul,
|
|
105
|
+
Meslo for small notes. Motion tokens: `drift` (opacity over up to 1.2 s and a
|
|
106
|
+
24 px rise over up to 2.4 s, both on the in-out sine token, matched to the
|
|
107
|
+
gradient's flow speed) and `surge-punch`, a gradient brightening with attack
|
|
108
|
+
0.15 s and decay 0.25 s that lands on each shot's opening. Passes: `tidal-gradient`
|
|
109
|
+
(domain-warped flow seeded per shot), `swiss-grid` for layout rules with guides
|
|
110
|
+
off, and `glitch` as rare punctuation: at most one hit in the whole film, on the
|
|
111
|
+
longest middle shot, at 0.5 hits per second or less.
|
|
112
|
+
|
|
113
|
+
Anti-slop: a hue-cycling rainbow; bloom on the gradient; glitch as texture; type
|
|
114
|
+
riding a flow so fast it blurs under motion sampling.
|
|
115
|
+
|
|
116
|
+
## Originality
|
|
117
|
+
|
|
118
|
+
The pattern transfers, never the values of the film this engine came from: one
|
|
119
|
+
small named palette, one signal, one rare accent, three voices. Invent this
|
|
120
|
+
brief's own visual idea per shot. Do not reuse scene names, motifs or copy from
|
|
121
|
+
any source film. Keep example subjects neutral and fictional unless the user
|
|
122
|
+
supplied them.
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# Treatment
|
|
2
|
+
|
|
3
|
+
Every film starts here. Write `treatment.json` in the run's output directory
|
|
4
|
+
before any render. The validator runs before every `stage` and `run` call,
|
|
5
|
+
stills-only included, and exits 16 (`BLOCKED_TREATMENT_INVALID`) naming the
|
|
6
|
+
first field that breaks a rule. Nothing renders until it passes.
|
|
7
|
+
|
|
8
|
+
The treatment is a director's plan: what the film is about, who watches it and
|
|
9
|
+
where, how it is shaped over time, what is drawn on screen, how it sounds, and
|
|
10
|
+
what would make it excellent. Write it from the request, not from the example
|
|
11
|
+
below.
|
|
12
|
+
|
|
13
|
+
## Load order
|
|
14
|
+
|
|
15
|
+
1. This file, always first.
|
|
16
|
+
2. Set `path`. Then load only that path's references:
|
|
17
|
+
- `stage`: `stage.md` (authoring contract, kit, capture, QA), then
|
|
18
|
+
`craft-loop.md` (look rounds and done).
|
|
19
|
+
- `type`: `engine-contract.md`, `style-bibles.md`, `type-craft.md`, then
|
|
20
|
+
`craft-loop.md`.
|
|
21
|
+
3. `runtime.md` only when a command exits 10, 11, 12, 14 or 15.
|
|
22
|
+
|
|
23
|
+
The stage path never needs a type-path reference.
|
|
24
|
+
|
|
25
|
+
## Path rule
|
|
26
|
+
|
|
27
|
+
- `type` when the words themselves are the film: the user asked for kinetic
|
|
28
|
+
type, a lyric or quote video, a title sequence or typographic motion, or
|
|
29
|
+
supplied words with no other subject. Type films are 16:9.
|
|
30
|
+
- `stage` for every other film, including any film that needs shapes, drawn
|
|
31
|
+
objects, diagrams or imagery beyond type. Supplied words on the stage path
|
|
32
|
+
become stage copy.
|
|
33
|
+
- A 9:16 film always takes the stage path.
|
|
34
|
+
|
|
35
|
+
The router may add a line "Type-led cue found: ...". It is a hint that the
|
|
36
|
+
request contains a type compound, an explicit lyric or kinetic-type ask, or a
|
|
37
|
+
quoted phrase. It never decides the path; you do, from the whole request.
|
|
38
|
+
|
|
39
|
+
## Fields
|
|
40
|
+
|
|
41
|
+
Normalization, used by several rules: NFC, lowercase, then remove whitespace,
|
|
42
|
+
punctuation and symbols. Before any comparison against `request`, every quoted
|
|
43
|
+
span is removed from it.
|
|
44
|
+
|
|
45
|
+
| Field | Rule |
|
|
46
|
+
|---|---|
|
|
47
|
+
| `request` | The user's words, verbatim. |
|
|
48
|
+
| `genre` | `announcement`, `brand-mood`, `event`, `explainer`, `motion-graphics`, `type-led` or `other`. |
|
|
49
|
+
| `path`, `pathReason` | `type` or `stage`, per the path rule. `type` needs `copy.source: user` or a type-led cue in `request`, and `format: 16:9`. |
|
|
50
|
+
| `idea` | One sentence: the film's own idea. It must not share a normalized run of min(10, half the normalized request length) characters with the request. |
|
|
51
|
+
| `audience`, `channel` | Who watches, and where it plays. |
|
|
52
|
+
| `format`, `formatReason` | `16:9` (1920×1080) or `9:16` (1080×1920), with a reason tied to `channel`. |
|
|
53
|
+
| `durationSec` | 4 to 90. Unless the user asked for a length, `announcement`, `event`, `explainer` and `motion-graphics` run at least 10 s. |
|
|
54
|
+
| `beats[]` | `{t0, t1, purpose, onScreen, motion, sound}` each. They cover 0 to `durationSec` with no gap over 0.25 s, every beat lasts at least 1.2 s, and there are at least as many beats as the genre's arc has stages. |
|
|
55
|
+
| `subject` | `{name, source: user or invented, specifics[]}`. When the request names no specific subject, invent one: a name plus at least 2 concrete specifics (what it is or does, for whom, one distinctive detail). |
|
|
56
|
+
| `visualDevices[]` | `{kind, role: subject, support or texture, beats[]}`, where `beats` lists beat indexes from 0. Kinds: `illustration`, `diagram`, `chart`, `icon`, `shape`, `path`, `mask`, `depth3d`, `particles`, `grid`, `gradient`, `photo-texture`. |
|
|
57
|
+
| `typePlan` | `{faces[], hierarchy, maxWordsOnScreen}`. Faces come from this product's verified set: Pretendard, Archivo, Galmuri9, VT323, Silkscreen, MesloLGS NF. |
|
|
58
|
+
| `palette[]` | 3 to 6 `{color: "#rrggbb", role}` entries. |
|
|
59
|
+
| `sound` | `{mode, plan, palette}`; `file` for `supplied` and `authored`. |
|
|
60
|
+
| `copy` | `{source: user or invented, lines[]}`. |
|
|
61
|
+
| `inventions[]` | Every invented part. Required when the subject or the copy is invented, and it must contain `subject.name` when the subject is invented. |
|
|
62
|
+
| `ambition` | One or two sentences, in craft terms, on what would make this film excellent for this request. |
|
|
63
|
+
|
|
64
|
+
### Stage-path device rules
|
|
65
|
+
|
|
66
|
+
- At least one `role: subject` device. It is a drawn depiction of what the film
|
|
67
|
+
is about, not a background, and its beats cover at least half of
|
|
68
|
+
`durationSec`.
|
|
69
|
+
- At least 2 distinct counting kinds. `grid`, `gradient`, `particles` and
|
|
70
|
+
`photo-texture` are always `texture` and never count.
|
|
71
|
+
|
|
72
|
+
### Copy rules
|
|
73
|
+
|
|
74
|
+
- `copy.source: user` when the user supplied the words. Every normalized line
|
|
75
|
+
must be a substring of the normalized request, quoted spans included. Keep
|
|
76
|
+
the user's words exactly; line breaks are yours.
|
|
77
|
+
- `copy.source: invented` when the request supplies no film words. Write the
|
|
78
|
+
copy from `subject.specifics`, never from the request's wording: no invented
|
|
79
|
+
line may share the idea's substring limit with the request. List the copy in
|
|
80
|
+
`inventions[]`.
|
|
81
|
+
- A line that could be pasted unchanged into a film about a different subject
|
|
82
|
+
is not copy yet. Name the specific thing.
|
|
83
|
+
|
|
84
|
+
### Sound rules
|
|
85
|
+
|
|
86
|
+
- `generated` is the default under bare `lit`, on both paths. The `sound`
|
|
87
|
+
subcommand builds a deterministic bed from the treatment: tempo, pulse and a
|
|
88
|
+
pad chord progression, plus accents only where a beat's `sound` field asks
|
|
89
|
+
(a hit on a cut, a rise into a change, a closing cadence). `sound.palette` is
|
|
90
|
+
one of `soft-mallet`, `warm-keys`, `glass-pulse` or `low-strings`; key and
|
|
91
|
+
tempo follow from the treatment, so two films rarely share a bed. The reply
|
|
92
|
+
labels the bed as generated.
|
|
93
|
+
- `supplied`: the user's WAV, named in `sound.file`, relative to the output dir.
|
|
94
|
+
- `authored`: a WAV you wrote into the stage dir (`stage/*.wav`).
|
|
95
|
+
- `none` only when the user asked for silence, or when the channel plays muted
|
|
96
|
+
by design (say so in `channel`).
|
|
97
|
+
|
|
98
|
+
Any supplied, authored or generated track is muxed on either path. It is
|
|
99
|
+
padded or trimmed to the film with a 50 ms fade; it never shortens the film.
|
|
100
|
+
|
|
101
|
+
## Genre arcs
|
|
102
|
+
|
|
103
|
+
The arc sets the minimum number of beats. Length comes from the arc, never
|
|
104
|
+
from a wish to be short.
|
|
105
|
+
|
|
106
|
+
- **announcement:** hook → context → key moment → details → close.
|
|
107
|
+
- **brand-mood:** motif → variation → peak → resolve.
|
|
108
|
+
- **event:** hook → what, when, where → highlight → close.
|
|
109
|
+
- **explainer:** question → steps → result → recap.
|
|
110
|
+
- **motion-graphics:** opening motif → set piece → set piece → peak → resolve.
|
|
111
|
+
- **type-led:** one breath per line, with emphasis and pause.
|
|
112
|
+
- **other:** at least 3 beats with a clear opening, middle and close.
|
|
113
|
+
|
|
114
|
+
## Craft rules
|
|
115
|
+
|
|
116
|
+
- Show the subject; do not only name it. With the sound muted and every word hidden, the drawn subject alone should still suggest what the film is about.
|
|
117
|
+
- Aim for professional motion-design craft in every film: varied transitions (match cuts, masks, morphs), rhythm locked to the sound, layered depth, clear hierarchy, deliberate easing. Every beat shows something new. Length comes from the arc; never shorten the film or merge beats to pass a check.
|
|
118
|
+
|
|
119
|
+
## Placeholder example
|
|
120
|
+
|
|
121
|
+
This shows the shape of every field. Its values are placeholders: the validator
|
|
122
|
+
rejects any `<...>` value, and it rejects a treatment whose free-text values
|
|
123
|
+
mostly equal this example's (`copiedExample`). Do not copy it; write your own.
|
|
124
|
+
|
|
125
|
+
```json
|
|
126
|
+
{
|
|
127
|
+
"request": "<the user's words, verbatim>",
|
|
128
|
+
"genre": "<one genre id>",
|
|
129
|
+
"path": "<type or stage>",
|
|
130
|
+
"pathReason": "<why this path fits>",
|
|
131
|
+
"idea": "<one sentence: the film's own idea>",
|
|
132
|
+
"audience": "<who watches>",
|
|
133
|
+
"channel": "<where it plays>",
|
|
134
|
+
"format": "<16:9 or 9:16>",
|
|
135
|
+
"formatReason": "<why this format suits the channel>",
|
|
136
|
+
"durationSec": "<4–90>",
|
|
137
|
+
"beats": [
|
|
138
|
+
{ "t0": "<start s>", "t1": "<end s>", "purpose": "<arc stage>", "onScreen": "<what is drawn>", "motion": "<how it moves>", "sound": "<what the sound does here>" }
|
|
139
|
+
],
|
|
140
|
+
"subject": { "name": "<a specific name>", "source": "<user or invented>", "specifics": ["<what it is or does>", "<for whom>", "<one distinctive detail>"] },
|
|
141
|
+
"visualDevices": [
|
|
142
|
+
{ "kind": "<device kind>", "role": "<subject, support or texture>", "beats": ["<beat index>"] }
|
|
143
|
+
],
|
|
144
|
+
"typePlan": { "faces": ["<verified face>"], "hierarchy": "<levels of type>", "maxWordsOnScreen": "<n>" },
|
|
145
|
+
"palette": [
|
|
146
|
+
{ "color": "<#rrggbb>", "role": "<what this colour does>" }
|
|
147
|
+
],
|
|
148
|
+
"sound": { "mode": "<generated, supplied, authored or none>", "plan": "<how the sound follows the arc>", "palette": "<timbre palette>" },
|
|
149
|
+
"copy": { "source": "<user or invented>", "lines": ["<line>"] },
|
|
150
|
+
"inventions": ["<every invented part>"],
|
|
151
|
+
"ambition": "<one or two sentences in craft terms>"
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Never downgrade to pass
|
|
156
|
+
|
|
157
|
+
Do not answer a gate failure by shortening the film, removing a beat, removing
|
|
158
|
+
the subject device, switching `sound.mode` to `none`, switching `path` to
|
|
159
|
+
`type`, or deleting effects. Fix the cause instead: a scrim behind type, a
|
|
160
|
+
larger size, a new placement, different timing, seeded randomness. Or deliver
|
|
161
|
+
with the failure stated. The done-check compares the final treatment with the
|
|
162
|
+
first valid one and records `downgraded` when the duration dropped by more than
|
|
163
|
+
20 %, there are fewer subject beats, sound became `none` without a user
|
|
164
|
+
request, or the path went from stage to type. The reply must then say so.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Korean and Latin type craft
|
|
2
|
+
|
|
3
|
+
The engine enforces most of these rules in code; this page is what to aim for
|
|
4
|
+
when you write the brief and read the stills.
|
|
5
|
+
|
|
6
|
+
## Fonts per voice
|
|
7
|
+
|
|
8
|
+
| Voice | Latin | Hangul |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| display (swiss, tidal) | Archivo width instance 75/100/125 x weight 500/700/900 | PretendardGOV Bold (700) |
|
|
11
|
+
| body (swiss, tidal) | Archivo 100 width | PretendardGOV Regular or Bold |
|
|
12
|
+
| display and body (terminalcore) | VT323 | Galmuri9 |
|
|
13
|
+
| machine | MesloLGS NF | PretendardGOV Regular (swiss, tidal) or Galmuri9 (terminalcore) |
|
|
14
|
+
| chrome label (terminalcore) | Silkscreen | Galmuri9 |
|
|
15
|
+
| stroke | EMS single-stroke SVG (Allure for signatures) | none; stroke text is Latin only |
|
|
16
|
+
|
|
17
|
+
PretendardGOV Regular and Bold are this product's own lit-pptx pair, reused by
|
|
18
|
+
path and checked against its recorded hashes. Hangul weight moves only between
|
|
19
|
+
those two files. Every other font is fetched by the pre-warm from a pinned URL
|
|
20
|
+
and checked by sha256 before a render may use it. Galmuri and Pretendard carry
|
|
21
|
+
reserved names, so they are only ever used unmodified, never subset.
|
|
22
|
+
|
|
23
|
+
## Script runs
|
|
24
|
+
|
|
25
|
+
A line is split into Latin and Hangul runs. Digits, punctuation and spaces are
|
|
26
|
+
not a script: they join the run on their left, or the run on their right when
|
|
27
|
+
nothing precedes them. So `2026년` is one Hangul run and `LIT팀` is `LIT` plus
|
|
28
|
+
`팀`. Each run takes its own font, and tracking or width motion applies to Latin
|
|
29
|
+
runs only. A Hangul run is always untracked and never condensed, expanded or
|
|
30
|
+
stepped through width instances, even inside a Latin line.
|
|
31
|
+
|
|
32
|
+
## Kerning and split words
|
|
33
|
+
|
|
34
|
+
The engine lays out a whole line once with the font's kerning, then places each
|
|
35
|
+
piece of a split word at its glyph position inside that line. It never measures
|
|
36
|
+
`text.slice(0, i)`, which silently drops the kern between the last drawn glyph
|
|
37
|
+
and the next one. Karaoke words and list items all come from the whole-line
|
|
38
|
+
layout.
|
|
39
|
+
|
|
40
|
+
## Line breaks and 어절
|
|
41
|
+
|
|
42
|
+
Korean lines break only at whitespace between 어절. A word too wide for the
|
|
43
|
+
measure stays whole on its own line. Karaoke reveal steps and terminal type-in
|
|
44
|
+
never show half a 어절.
|
|
45
|
+
|
|
46
|
+
## Punctuation
|
|
47
|
+
|
|
48
|
+
Display strings go through `smart()`: straight quotes become curly, leading
|
|
49
|
+
elisions ('til, 'cause, '90s) get an apostrophe, `...` becomes `…`. Terminalcore
|
|
50
|
+
keeps typewriter punctuation (`plain()`), because a terminal types straight
|
|
51
|
+
quotes.
|
|
52
|
+
|
|
53
|
+
## Tracking, line height, measure
|
|
54
|
+
|
|
55
|
+
| Rule | Floor or range |
|
|
56
|
+
|---|---|
|
|
57
|
+
| Display tracking | not tighter than -0.04 em (the engine uses -0.02 em on Latin titles) |
|
|
58
|
+
| Machine, body and label tracking | 0 or looser |
|
|
59
|
+
| Two wrapped lines, Latin | line height >= 1.5 |
|
|
60
|
+
| Two wrapped lines, Hangul or mixed | >= 1.6 |
|
|
61
|
+
| Three or more lines | >= 1.4 (the engine uses 1.6) |
|
|
62
|
+
| Latin paragraph card | 60-75 characters per line |
|
|
63
|
+
| Korean paragraph card | 30-45 characters, advisory only |
|
|
64
|
+
|
|
65
|
+
## Contrast
|
|
66
|
+
|
|
67
|
+
Body type needs 4.5:1 against what is actually painted behind it; large type
|
|
68
|
+
(32 px and up, or 25 px at weight 700 and up) needs 3:1. The gate measures the
|
|
69
|
+
median of the glyph pixels under a mask eroded by 1 px against the 5th and 95th
|
|
70
|
+
percentile of the background around the word, so very thin small strokes read
|
|
71
|
+
lighter than their palette colour suggests. Give small annotations full ink or
|
|
72
|
+
a larger size rather than a mid tint. Never fix contrast with an outline or a
|
|
73
|
+
halo: move the word, change its colour inside the palette, or pick a calmer
|
|
74
|
+
background moment.
|
|
75
|
+
|
|
76
|
+
## Size floors
|
|
77
|
+
|
|
78
|
+
- Galmuri9 renders on a 9 px grid: use multiples of 9 px and at least 45 px on
|
|
79
|
+
screen, or it blurs into its own strokes.
|
|
80
|
+
- Hold small type at weight 400 or heavier; large Hangul slams use Bold, because
|
|
81
|
+
thin strokes break down under motion sampling.
|
|
82
|
+
- Every glyph's ink stays inside the title-safe rectangle 96-1824 x 54-1026 at
|
|
83
|
+
1080p; non-type graphics stay inside 48-1872 x 27-1053.
|
|
84
|
+
|
|
85
|
+
## Reading time
|
|
86
|
+
|
|
87
|
+
Every unit holds at least its floor: 0.2 s per Hangul syllable plus one word per
|
|
88
|
+
0.3 s (3.3 words/s), at least 0.9 s for a Latin line and 1.0 s for any line with
|
|
89
|
+
Hangul, 0.5 s for a word shown alone, 0.35 s for a reveal step inside a line that
|
|
90
|
+
stays visible, and never more than 17 Latin characters per second on a line. A
|
|
91
|
+
4-어절 line of 14 syllables therefore needs 2.8 s; the generator gives it 3.5 s
|
|
92
|
+
before snapping to the beat.
|