@litfamily/litopencode 1.0.30 → 1.0.32
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/CHANGELOG.md +28 -0
- package/README-Ko-KR.md +6 -6
- package/README.md +6 -6
- package/dist/activation-probe.js +1 -0
- package/dist/activation-prompt-utils.d.ts +1 -1
- package/dist/activation-reentry.d.ts +20 -0
- package/dist/activation-reentry.js +110 -1
- package/dist/activation-routing.d.ts +2 -1
- package/dist/activation-routing.js +100 -11
- package/dist/activation-workflow-prompts.d.ts +4 -0
- package/dist/activation-workflow-prompts.js +30 -0
- package/dist/activation.d.ts +1 -1
- package/dist/activation.js +44 -5
- package/dist/adhd-next.d.ts +51 -0
- package/dist/adhd-next.js +150 -0
- package/dist/cli/managed-skill-assets.d.ts +1 -1
- package/dist/cli/managed-skill-assets.js +7 -1
- package/dist/cli/native-skill-integrity.js +1 -1
- package/dist/cli.js +7 -1
- package/dist/commands.d.ts +28 -1
- package/dist/commands.js +48 -1
- package/dist/features.d.ts +80 -1
- package/dist/features.js +105 -1
- package/dist/ledger.js +12 -1
- package/dist/secret-shapes.js +5 -5
- package/dist/skills.d.ts +22 -1
- package/dist/skills.js +36 -0
- package/dist/start-work-typed.d.ts +34 -0
- package/dist/start-work-typed.js +156 -0
- package/dist/state.d.ts +2 -0
- package/dist/state.js +2 -0
- package/dist/tools.js +22 -2
- package/dist/tui/mission-band.d.ts +20 -1
- package/dist/tui/mission-band.js +73 -16
- package/dist/tui/mission-looks.d.ts +38 -0
- package/dist/tui/mission-looks.js +73 -0
- package/dist/tui/mission-model.d.ts +2 -0
- package/dist/tui/mission-model.js +3 -1
- package/dist/tui/mission-rainbow.d.ts +33 -0
- package/dist/tui/mission-rainbow.js +90 -0
- package/dist/tui/mission-source.d.ts +48 -0
- package/dist/tui/mission-source.js +184 -2
- package/dist/tui/mission-text.d.ts +2 -0
- package/dist/tui/mission-text.js +9 -1
- package/dist/tui/mission-threads.d.ts +50 -0
- package/dist/tui/mission-threads.js +119 -0
- package/dist/tui.js +84 -6
- package/dist/uiux-visual-catalog.js +8 -1
- package/dist/v2/session-hooks.js +38 -5
- package/dist/workflow-stack.d.ts +53 -0
- package/dist/workflow-stack.js +196 -0
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/assets/skills/lit-schematic.webp +0 -0
- package/docs/reference-Ko-KR.md +30 -2
- package/docs/reference.md +34 -2
- package/package.json +1 -1
- package/skills/frontend-ui-ux/SKILL.md +3 -2
- package/skills/frontend-ui-ux/kit/components.css +414 -0
- package/skills/frontend-ui-ux/kit/fonts.json +22 -0
- package/skills/frontend-ui-ux/kit/layouts/landing.html +164 -0
- package/skills/frontend-ui-ux/kit/layouts/settings.html +114 -0
- package/skills/frontend-ui-ux/kit/layouts/workspace.html +115 -0
- package/skills/frontend-ui-ux/kit/styles/computational-brutalism.json +227 -0
- package/skills/frontend-ui-ux/kit/styles/field-notes.json +205 -0
- package/skills/frontend-ui-ux/kit/styles/graphite.json +200 -0
- package/skills/frontend-ui-ux/kit/styles/meadow.json +199 -0
- package/skills/frontend-ui-ux/kit/styles/neo-brutalism.json +222 -0
- package/skills/frontend-ui-ux/kit/ui.js +226 -0
- package/skills/frontend-ui-ux/references/brand-and-imagery.md +2 -2
- package/skills/frontend-ui-ux/references/complete-contract.md +2 -1
- package/skills/frontend-ui-ux/references/craft-floor.md +6 -2
- package/skills/frontend-ui-ux/references/default-editorial-pixel.json +3 -0
- package/skills/frontend-ui-ux/references/house-styles.md +236 -0
- package/skills/frontend-ui-ux/references/motion-guide.md +2 -2
- package/skills/frontend-ui-ux/references/production.md +3 -1
- package/skills/frontend-ui-ux/references/slop-register.md +4 -4
- package/skills/frontend-ui-ux/scripts/design-lock.mjs +400 -0
- package/skills/frontend-ui-ux/scripts/pixel-art.mjs +60 -0
- package/skills/frontend-ui-ux/scripts/probe-lock.mjs +235 -0
- package/skills/frontend-ui-ux/scripts/probe-page.mjs +34 -12
- package/skills/frontend-ui-ux/scripts/probe-static.mjs +16 -3
- package/skills/frontend-ui-ux/scripts/probe-thresholds.json +8 -2
- package/skills/frontend-ui-ux/scripts/probe.mjs +35 -7
- package/skills/lit-adhd/SKILL.md +208 -0
- package/skills/lit-adhd/references/brief-format.md +43 -0
- package/skills/lit-adhd/references/card-examples.md +82 -0
- package/skills/lit-adhd/references/status-taxonomy.md +29 -0
- package/skills/lit-adhd/scripts/rewind.mjs +835 -0
- package/skills/lit-diagram-drawer/SKILL.md +4 -3
- package/skills/lit-diagram-drawer/references/style-guide.md +20 -11
- package/skills/lit-diagram-drawer/references/type-architecture.md +3 -3
- package/skills/lit-diagram-drawer/references/type-dependency.md +1 -1
- package/skills/lit-diagram-drawer/references/type-tree.md +3 -3
- package/skills/lit-diagram-drawer/references/type-wardley.md +1 -1
- package/skills/lit-diagram-drawer/references/verifier-guide.md +1 -0
- package/skills/lit-diagram-drawer/scripts/craft-thresholds.json +1 -2
- package/skills/lit-diagram-drawer/scripts/visual-quality.mjs +1 -2
- package/skills/lit-docx/SKILL.md +2 -1
- package/skills/lit-handoff/SKILL.md +2 -0
- package/skills/lit-hijack/SKILL.md +422 -0
- package/skills/lit-hijack/references/capture-and-provenance.md +87 -0
- package/skills/lit-hijack/references/clean-room-build.md +111 -0
- package/skills/lit-hijack/references/distil-and-licence.md +100 -0
- package/skills/lit-hijack/references/gap-and-port-design.md +126 -0
- package/skills/lit-hijack/references/parity-and-report.md +110 -0
- package/skills/lit-hijack/scripts/hijack.mjs +993 -0
- package/skills/lit-plan/SKILL.md +2 -0
- package/skills/lit-pptx/SKILL.md +27 -11
- package/skills/lit-pptx/fonts/jetbrains-mono/JetBrainsMono-Bold.ttf +0 -0
- package/skills/lit-pptx/fonts/jetbrains-mono/JetBrainsMono-Regular.ttf +0 -0
- package/skills/lit-pptx/fonts/jetbrains-mono/OFL.txt +93 -0
- package/skills/lit-pptx/fonts/jetbrains-mono/SOURCE.md +17 -0
- package/skills/lit-pptx/references/density-and-fill.md +9 -3
- package/skills/lit-pptx/references/direction-step.md +21 -6
- package/skills/lit-pptx/references/examples/04-lecture-chalk-ko.md +3 -6
- package/skills/lit-pptx/references/examples/05-research-talk-paper-en.md +1 -5
- package/skills/lit-pptx/references/examples/08-reliability-keynote-night-en.md +0 -4
- package/skills/lit-pptx/references/examples/09-status-update-ledger-en.md +2 -2
- package/skills/lit-pptx/references/examples/11-forecast-review-night-ko.md +4 -7
- package/skills/lit-pptx/references/examples/13-engineering-review-computational-brutalism-ko.md +173 -0
- package/skills/lit-pptx/references/examples/14-launch-pitch-neo-brutalism-ko.md +154 -0
- package/skills/lit-pptx/references/examples/15-design-lecture-bauhaus-ko.md +139 -0
- package/skills/lit-pptx/references/examples/16-community-programme-riso-ko.md +158 -0
- package/skills/lit-pptx/references/examples/17-public-data-briefing-newsroom-ko.md +179 -0
- package/skills/lit-pptx/references/layout-families.md +65 -47
- package/skills/lit-pptx/references/title-treatments.md +83 -134
- package/skills/lit-pptx/references/tonalities/atlas.md +3 -3
- package/skills/lit-pptx/references/tonalities/bauhaus.md +140 -0
- package/skills/lit-pptx/references/tonalities/chalk.md +7 -6
- package/skills/lit-pptx/references/tonalities/computational-brutalism.md +150 -0
- package/skills/lit-pptx/references/tonalities/gazette.md +1 -1
- package/skills/lit-pptx/references/tonalities/ledger.md +1 -1
- package/skills/lit-pptx/references/tonalities/neo-brutalism.md +161 -0
- package/skills/lit-pptx/references/tonalities/newsroom.md +144 -0
- package/skills/lit-pptx/references/tonalities/night.md +1 -1
- package/skills/lit-pptx/references/tonalities/paper.md +2 -2
- package/skills/lit-pptx/references/tonalities/riso.md +137 -0
- package/skills/lit-pptx/references/tonalities/signal.md +3 -3
- package/skills/lit-pptx/references/tonalities/studio.md +7 -6
- package/skills/lit-pptx/run.mjs +2 -1
- package/skills/lit-pptx/scripts/compile-deck.js +1 -1
- package/skills/lit-pptx/scripts/craft-thresholds.json +4 -8
- package/skills/lit-pptx/scripts/craft_extras.py +56 -3
- package/skills/lit-pptx/scripts/deck_output.py +75 -90
- package/skills/lit-pptx/scripts/embed_fonts.py +13 -1
- package/skills/lit-pptx/scripts/layout_inventory.py +12 -5
- package/skills/lit-pptx/scripts/lib/grid-resolver.js +101 -110
- package/skills/lit-pptx/scripts/lib/layout-resolver.js +9 -15
- package/skills/lit-pptx/scripts/lib/render-pack.js +373 -566
- package/skills/lit-pptx/scripts/lib/slide-grid.js +104 -0
- package/skills/lit-pptx/scripts/lib/template-registry.js +57 -6
- package/skills/lit-pptx/scripts/qa_deck.py +10 -11
- package/skills/lit-pptx/scripts/render_pages.py +118 -0
- package/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +1 -1
- package/skills/lit-pptx/templates/tonalities/bauhaus/pack.yaml +98 -0
- package/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +1 -1
- package/skills/lit-pptx/templates/tonalities/computational-brutalism/pack.yaml +99 -0
- package/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +1 -1
- package/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +1 -1
- package/skills/lit-pptx/templates/tonalities/neo-brutalism/pack.yaml +107 -0
- package/skills/lit-pptx/templates/tonalities/newsroom/pack.yaml +99 -0
- package/skills/lit-pptx/templates/tonalities/night/pack.yaml +1 -1
- package/skills/lit-pptx/templates/tonalities/paper/pack.yaml +1 -1
- package/skills/lit-pptx/templates/tonalities/riso/pack.yaml +99 -0
- package/skills/lit-pptx/templates/tonalities/signal/pack.yaml +2 -2
- package/skills/lit-pptx/templates/tonalities/studio/pack.yaml +1 -1
- package/skills/lit-recap/SKILL.md +4 -0
- package/skills/lit-schematic/SKILL.md +118 -0
- package/skills/lit-schematic/examples/iso-heat-exchanger/build.mjs +38 -0
- package/skills/lit-schematic/examples/iso-heat-exchanger/scene.mjs +133 -0
- package/skills/lit-schematic/examples/journal-adsorption-rig/build.mjs +87 -0
- package/skills/lit-schematic/examples/pid-dosing-skid/build.mjs +85 -0
- package/skills/lit-schematic/references/cutaway-outputs.md +70 -0
- package/skills/lit-schematic/references/isometric-craft.md +101 -0
- package/skills/lit-schematic/references/journal-figures.md +72 -0
- package/skills/lit-schematic/references/kit-api.md +134 -0
- package/skills/lit-schematic/references/pfd-and-layout.md +53 -0
- package/skills/lit-schematic/references/pid-drafting.md +103 -0
- package/skills/lit-schematic/references/pid-symbols.md +163 -0
- package/skills/lit-schematic/references/verification.md +100 -0
- package/skills/lit-schematic/scripts/doctor.mjs +57 -0
- package/skills/lit-schematic/scripts/lib/figure.mjs +81 -0
- package/skills/lit-schematic/scripts/lib/fonts.mjs +25 -0
- package/skills/lit-schematic/scripts/lib/geom.mjs +113 -0
- package/skills/lit-schematic/scripts/lib/interactive.mjs +292 -0
- package/skills/lit-schematic/scripts/lib/isa.mjs +115 -0
- package/skills/lit-schematic/scripts/lib/iso.mjs +719 -0
- package/skills/lit-schematic/scripts/lib/legend-sheet.mjs +162 -0
- package/skills/lit-schematic/scripts/lib/pid.mjs +937 -0
- package/skills/lit-schematic/scripts/lib/png.mjs +132 -0
- package/skills/lit-schematic/scripts/lib/qa-core.mjs +658 -0
- package/skills/lit-schematic/scripts/lib/route.mjs +218 -0
- package/skills/lit-schematic/scripts/lib/sheet.mjs +890 -0
- package/skills/lit-schematic/scripts/lib/svg.mjs +82 -0
- package/skills/lit-schematic/scripts/lib/theme.mjs +115 -0
- package/skills/lit-schematic/scripts/motion.mjs +129 -0
- package/skills/lit-schematic/scripts/qa.mjs +92 -0
- package/skills/lit-schematic/scripts/render.mjs +233 -0
- package/skills/lit-schematic/scripts/scaffold.mjs +60 -0
- package/skills/lit-scientific-visualization/SKILL.md +27 -4
- package/skills/lit-typographic-motion/SKILL.md +19 -17
- package/skills/lit-typographic-motion/THIRD_PARTY_NOTICES +9 -0
- package/skills/lit-typographic-motion/engine/accents.mjs +6 -0
- package/skills/lit-typographic-motion/engine/assets.mjs +282 -0
- package/skills/lit-typographic-motion/engine/blender/runner.py +228 -0
- package/skills/lit-typographic-motion/engine/blender.mjs +126 -0
- package/skills/lit-typographic-motion/engine/board.mjs +138 -0
- package/skills/lit-typographic-motion/engine/cover/assets.mjs +11 -8
- package/skills/lit-typographic-motion/engine/cover/capture.mjs +6 -6
- package/skills/lit-typographic-motion/engine/cover/render.mjs +20 -7
- package/skills/lit-typographic-motion/engine/cover/treatment.mjs +30 -3
- package/skills/lit-typographic-motion/engine/fill.mjs +54 -0
- package/skills/lit-typographic-motion/engine/gallery.mjs +118 -0
- package/skills/lit-typographic-motion/engine/house.mjs +42 -0
- package/skills/lit-typographic-motion/engine/look.mjs +65 -8
- package/skills/lit-typographic-motion/engine/loudness.mjs +101 -0
- package/skills/lit-typographic-motion/engine/scaffold.mjs +219 -0
- package/skills/lit-typographic-motion/engine/score.mjs +594 -0
- package/skills/lit-typographic-motion/engine/sound.mjs +9 -57
- package/skills/lit-typographic-motion/engine/stage/capture.mjs +23 -9
- package/skills/lit-typographic-motion/engine/stage/clock.js +8 -2
- package/skills/lit-typographic-motion/engine/stage/cover-init.js +12 -1
- package/skills/lit-typographic-motion/engine/stage/frame-worker.mjs +15 -7
- package/skills/lit-typographic-motion/engine/stage/gate.mjs +48 -4
- package/skills/lit-typographic-motion/engine/stage/qa-page.js +16 -5
- package/skills/lit-typographic-motion/engine/stage/qa.mjs +148 -7
- package/skills/lit-typographic-motion/engine/stage/render.mjs +69 -7
- package/skills/lit-typographic-motion/engine/stage/scan.mjs +20 -1
- package/skills/lit-typographic-motion/engine/stage/stage-kit.js +85 -4
- package/skills/lit-typographic-motion/engine/stills.mjs +1 -1
- package/skills/lit-typographic-motion/engine/styles.mjs +221 -0
- package/skills/lit-typographic-motion/engine/text.mjs +1 -1
- package/skills/lit-typographic-motion/engine/treatment.mjs +190 -6
- package/skills/lit-typographic-motion/engine/vendor/three/LICENSE +21 -0
- package/skills/lit-typographic-motion/engine/vendor/three/addons/environments/RoomEnvironment.js +144 -0
- package/skills/lit-typographic-motion/engine/vendor/three/addons/geometries/RoundedBoxGeometry.js +155 -0
- package/skills/lit-typographic-motion/engine/vendor/three/three.module.js +54571 -0
- package/skills/lit-typographic-motion/gate.mjs +18 -2
- package/skills/lit-typographic-motion/probe.mjs +13 -1
- package/skills/lit-typographic-motion/recipes/hero-3d/expected.json +64 -0
- package/skills/lit-typographic-motion/recipes/hero-3d/index.html +132 -0
- package/skills/lit-typographic-motion/recipes/orbit-loop/expected.json +2 -0
- package/skills/lit-typographic-motion/recipes/painted-light/expected.json +2 -0
- package/skills/lit-typographic-motion/recipes/weight-tide/expected.json +2 -0
- package/skills/lit-typographic-motion/references/cover.md +56 -13
- package/skills/lit-typographic-motion/references/craft-loop.md +20 -7
- package/skills/lit-typographic-motion/references/depth.md +112 -0
- package/skills/lit-typographic-motion/references/runtime.md +21 -6
- package/skills/lit-typographic-motion/references/sound.md +76 -0
- package/skills/lit-typographic-motion/references/stage.md +50 -7
- package/skills/lit-typographic-motion/references/studio.md +162 -0
- package/skills/lit-typographic-motion/references/style-bibles.md +18 -0
- package/skills/lit-typographic-motion/references/treatment.md +108 -9
- package/skills/lit-typographic-motion/render.mjs +60 -3
- package/skills/lit-typographic-motion/requirements-audio.txt +3 -3
- package/skills/lit-typographic-motion/styles/paper.json +185 -0
- package/skills/lit-typographic-motion/styles/swiss-signal.json +188 -0
- package/skills/lit-typographic-motion/styles/terminalcore.json +182 -0
- package/skills/lit-typographic-motion/styles/tidal.json +187 -0
- package/skills/litresearch/SKILL.md +2 -0
- package/skills/managed-skill-manifest.json +520 -91
- package/skills/readme-studio/SKILL.md +1 -1
- package/skills/readme-studio/templates/hyperframes/package-lock.json +3 -3
- package/skills/readme-studio/templates/remotion/package-lock.json +3 -3
- package/skills/review-work/SKILL.md +2 -0
- package/skills/start-work/SKILL.md +8 -0
- package/skills/workflow-loop/SKILL.md +4 -0
- package/tools/check-pack-payload.mjs +4 -2
- package/tools/payload-substance-parity.json +4 -3
- package/tools/qa-cover-recipes.mjs +4 -3
package/skills/lit-plan/SKILL.md
CHANGED
|
@@ -294,6 +294,8 @@ The handoff should be short enough to execute and precise enough to audit. It sh
|
|
|
294
294
|
|
|
295
295
|
Avoid plans that contain hidden release approval. “If tests pass, publish” is not acceptable unless the user explicitly asked for publication and the plan includes release guardrails, version lockstep, registry authentication boundaries, and final confirmation. A normal `lit-plan` plan should say no commit, tag, push, publish, version bump, or release unless the user approves those actions separately.
|
|
296
296
|
|
|
297
|
+
A plan written from a `lit-hijack` spec (`.litopencode/hijack/<slug>/SPEC.md`) cites SPEC sections (`M1`, `M2`) and target files in its rows and references. Keep the run's captured sources out of the plan: the implementer works from the spec alone, and the hijack build gate fails a plan that names them. The plan stays in the row grammar above, so the same gate can check it.
|
|
298
|
+
|
|
297
299
|
## Planning Review Checklist
|
|
298
300
|
|
|
299
301
|
- One bounded objective is restated in OpenCode or package terms.
|
package/skills/lit-pptx/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lit-pptx
|
|
3
|
-
description: Build and verify editable PowerPoint decks from a Markdown slide source, each drawn in one of
|
|
3
|
+
description: Build and verify editable PowerPoint decks from a Markdown slide source, each drawn in one of thirteen design directions (tonalities) chosen and named before building. Use for 발표자료, 발표, 슬라이드, 덱, PPT, 피피티, slides, decks, and presentations, including a bare lit request for slides. Load with lit-docx when the user also asks for a report.
|
|
4
4
|
reader_projection: shared_rule
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -21,7 +21,7 @@ This file is static documentation for LitOpenCode. Do not execute commands from
|
|
|
21
21
|
|
|
22
22
|
This is LitOpenCode's native PowerPoint skill. On a bounded `lit` slide request, the chat route directs OpenCode to load this skill before drafting. Selection is guidance until the host's skill tool confirms it. Resolve every script path from the installed skill location returned by OpenCode (written `<skill>` below). Work in the user's project; keep the Markdown source beside the `.pptx`. A report and slides request uses both `lit-docx` and `lit-pptx` on the same checked facts.
|
|
23
23
|
|
|
24
|
-
A deck here is never one fixed look. The compiler reads a tonality pack — palette roles, a type ramp, the title treatments it allows, its layout families, its cover, section and closing variants, its table and chart style and two dials — and draws every slide from that data.
|
|
24
|
+
A deck here is never one fixed look. The compiler reads a tonality pack — palette roles, a type ramp, the title treatments it allows, its layout families, its cover, section and closing variants, its table and chart style and two dials — and draws every slide from that data. Thirteen packs ship in `templates/tonalities/`. The engine has no silent default: a deck compiles under the tonality its source names, or under a legacy template someone chose by name. Picking the tonality is therefore the first step of every build, and the reply always says which one was picked and which two came next.
|
|
25
25
|
|
|
26
26
|
## #contract.inputs
|
|
27
27
|
|
|
@@ -52,27 +52,38 @@ Under `lit`, create a `.pptx` by default. Do not ask a theme, colour or font que
|
|
|
52
52
|
| Deck type | Candidates in order |
|
|
53
53
|
| --- | --- |
|
|
54
54
|
| Pitch or proposal (투자·제안) | signal · studio · atlas when the product is physical and photographed |
|
|
55
|
+
| Launch, demo day or campaign (런칭·데모데이) | neo-brutalism · signal · studio |
|
|
56
|
+
| Engineering or developer review (아키텍처·인프라 리뷰) | computational-brutalism · night · ledger |
|
|
55
57
|
| Business review (경영·사업 실적) | ledger · gazette when read in Korean before the meeting · night on a stage screen |
|
|
56
58
|
| Research talk (연구 발표) | paper · night for a dark auditorium · chalk for a tutorial |
|
|
57
59
|
| Lecture or training (강의·교육) | chalk · paper · studio for a public lecture with pictures |
|
|
60
|
+
| Design or culture lecture (디자인·건축·전시) | bauhaus · studio · atlas |
|
|
58
61
|
| Data-heavy review | night · ledger · paper for a written analysis |
|
|
59
62
|
| Image-led (product, site, portfolio) | atlas · studio · signal for a launch |
|
|
60
63
|
| Korean text briefing (보고서형 덱) | gazette · ledger |
|
|
61
64
|
| Status update (주간·월간 보고) | ledger · gazette · night |
|
|
65
|
+
| Community, culture or education programme (커뮤니티·문화·교육 프로그램) | riso · studio · bauhaus for a design programme |
|
|
66
|
+
| Data story for the public (주민·독자 대상 데이터 브리핑) | newsroom · gazette when read alone · ledger |
|
|
62
67
|
|
|
63
68
|
| Signal on the outline | Effect |
|
|
64
69
|
| --- | --- |
|
|
65
70
|
| The brief names a tonality or a legacy template | use it; the card still names two alternatives |
|
|
71
|
+
| The brief names a style: 네오 브루탈리즘 / neo-brutalism; 컴퓨테이셔널 브루탈리즘 / computational brutalism / 레트로 퓨처 / terminal; 바우하우스 / Bauhaus; 리소 / risograph / zine; 뉴스룸 / data journalism / explainer | that pack; a bare 브루탈리즘 / brutalist takes neo-brutalism for a pitch or launch and computational-brutalism for a technical deck |
|
|
66
72
|
| The deck is read rather than presented | gazette (Korean) or ledger moves to the front |
|
|
67
73
|
| A third or more of the slides carry a table / a chart / a picture | ledger or gazette / ledger, night or paper / atlas or studio move up one place |
|
|
68
74
|
| Long slide bodies / short slide bodies | gazette or ledger up / signal or studio up |
|
|
69
75
|
| Citations or a references slide / a definition or a three-step mechanism / a dark room | paper up / chalk or paper up / night up |
|
|
76
|
+
| Metrics with units, versions or identifiers (p99, rps, v3) / a young or consumer audience with a sign-up ask / works, makers and periods | computational-brutalism up / neo-brutalism up / bauhaus up |
|
|
77
|
+
| Participants, sessions and dates for a community / charts with one point each for readers outside the field | riso up / newsroom up |
|
|
78
|
+
| A board, finance, public-sector or sensitive topic | neo-brutalism, computational-brutalism, bauhaus and riso drop out |
|
|
70
79
|
| A pack has no family or title treatment for one of the planned slides | that pack drops out |
|
|
71
80
|
|
|
72
81
|
The first candidate after reordering wins; the next two are the alternatives. Ties keep the deck-type order, so one source always gets one choice.
|
|
82
|
+
- **Ask the user to pick the look before step 3.** Unless the prompt already names a tonality or a legacy template, or leaves the look to you ("you choose", "알아서", "아무거나"), call OpenCode's `question` tool once: one question, the winner first labelled `(Recommended)`, then the two alternatives (two to four options in all), each with its one-line character from the tonality table below. Build under the answer and write it on the card. When the session cannot ask (a non-interactive `opencode run`, no `question` tool, or the permission is denied), take the recommended option and say so in one line of the reply. Missing facts are never part of this question; they still get a labelled realistic example.
|
|
73
83
|
- Write the card into the build log beside the source: deck type, reader, the tonality and two alternatives, a one-sentence reason tied to the signals that fired, the dials (density and variance, any move from the pack default; at most 2 per dial without asking), the title treatments by slide role, one layout family per slide, and the line that would make the choice wrong ("if the file is read alone before the meeting, gazette fits better"). Put the tonality in the source frontmatter (`tonality: ledger`).
|
|
74
84
|
- Say it in the reply in two or three plain sentences: the tonality, why, and the two alternatives.
|
|
75
85
|
- **Compare strip.** Only when the user asks to compare, or leaves the look open on purpose ("어떤 느낌이 좋을지 모르겠어", "show me options"): compile the first three slides under the chosen tonality and both alternatives, render and show the three rows, and finish under the one the user picks.
|
|
86
|
+
- **One slide grid.** Every tonality sets titles, headers and the body on the same zones (`scripts/lib/slide-grid.js`): a content title in columns 1-10 at y 36, the body from y 120 to 486, the footer at y 498, and fixed display and cover zones. A tonality and its treatments change how a zone looks (face, size, colour, rules, bands, fills), never where it is, so switching the tonality never moves the content. A bold register (`register: bold`) sets larger type inside the same zones.
|
|
76
87
|
- **Legacy templates.** `AZURE-PRO`, `AZURE-A2Z`, `BOILERPLATE-PRETENDARD` and `BOILERPLATE-A2Z` keep their names and their single look. Use one only when the user names it or an existing source says `template:`; the reply still offers two tonalities.
|
|
77
88
|
|
|
78
89
|
| Tonality | Character | Sheet |
|
|
@@ -85,8 +96,13 @@ Under `lit`, create a `.pptx` by default. Do not ask a theme, colour or font que
|
|
|
85
96
|
| `gazette` | Korean briefing pages: header band, boxed summary, itemised evidence | `references/tonalities/gazette.md` |
|
|
86
97
|
| `studio` | editorial grid, asymmetric splits, side titles, part numbers | `references/tonalities/studio.md` |
|
|
87
98
|
| `night` | dark ground and light type for data and technical keynotes | `references/tonalities/night.md` |
|
|
99
|
+
| `computational-brutalism` | retro-futurist computing: mono titles and figures, grid marks and slide index, ruled tables, a terminal field | `references/tonalities/computational-brutalism.md` |
|
|
100
|
+
| `neo-brutalism` | loud on purpose: thick black borders, hard offset shadows, flat yellow, blue and pink fills | `references/tonalities/neo-brutalism.md` |
|
|
101
|
+
| `bauhaus` | elementary geometry on the cover and statements, quiet content pages in black and one red | `references/tonalities/bauhaus.md` |
|
|
102
|
+
| `riso` | two spot inks on warm paper: teal fields on display slides and data titles, pink for the one figure that matters | `references/tonalities/riso.md` |
|
|
103
|
+
| `newsroom` | a newspaper graphics desk: black masthead titles, grey charts with one orange series, a source under every figure | `references/tonalities/newsroom.md` |
|
|
88
104
|
|
|
89
|
-
`node <skill>/run.mjs compile --list-tonalities` prints the
|
|
105
|
+
`node <skill>/run.mjs compile --list-tonalities` prints the thirteen beside the legacy templates; `node <skill>/run.mjs compile --list-layouts <tonality>` prints that pack's families with the title treatments each allows there, and its cover, section and closing variants.
|
|
90
106
|
|
|
91
107
|
3. **Outline before prose.** One message per slide. A slide title is a topic label that names subject, measure and period ("분기별 방문·대출 추이", "Conversion by feed rate, runs 1-12"), never a sentence ("방문은 늘었고 대출은 제자리다", "Revenue grew 12%") and never a bare "현황". The claim is the first line of the body. A cover title names the topic or product, never a slogan, and a cover subtitle is a label too. Typical shape: cover · where things stand · evidence · options compared · recommendation · next steps · closing; each deck type's sequence is in `references/direction-step.md`. Split a slide that needs more than four groups or about eight lines. Name one layout family per slide by the slide's job (`references/layout-families.md`), never by what the previous slide used; the treatment comes from the pack per slide role (`references/title-treatments.md`), and a per-slide `title:` key may pick another treatment the pack allows when a layout repeats too often.
|
|
92
108
|
|
|
@@ -94,15 +110,15 @@ Under `lit`, create a `.pptx` by default. Do not ask a theme, colour or font que
|
|
|
94
110
|
|
|
95
111
|
5. **Write dense, sourced content.** Every pack defaults to density 10, the compact step: 24 pt margins, body 13 pt, table cells 11 pt, sources 9 pt, never below those floors. Each content slide carries its basis, a comparison, the period, and an implication or next action; data slides end with a `출처:` / `Source:` line (and a `주:` / `Note:` line where a definition matters), which the engine sets as a strip on the body floor. Write a real uncertainty once, as a fact about the data or method beside the number it affects; what the deck is not for goes in the reply. References run eight to ten entries. `references/density-and-fill.md` lists what each family needs to fill its body and what the fill policies do when it does not.
|
|
96
112
|
|
|
97
|
-
6. **Write the Markdown source** as `<name>.md` beside the output, with `tonality:`, `title:` and, for sample content, `notice:` in its frontmatter. `specs/markdown-slide-spec-v2.md` is the dialect contract; open the worked example in `references/examples/` closest to the job before writing.
|
|
113
|
+
6. **Write the Markdown source** as `<name>.md` beside the output, with `tonality:`, `title:` and, for sample content, `notice:` in its frontmatter. `specs/markdown-slide-spec-v2.md` is the dialect contract; open the worked example in `references/examples/` closest to the job before writing. Seventeen examples cover all thirteen tonalities and the deck types in Korean and English, and each compiles and passes the gate as shipped. The five newest (13 to 17) are Korean decks for the hard-edge and editorial packs. Pictures are referenced by path from the source folder; the skill ships no images. For a chart or diagram picture on a dark tonality, put its dark variant beside it (`flow.png` and `flow.dark.png`); a dark ground draws the variant. Korean text runs and charts with Korean labels are written as ko-KR, so a renderer applies Korean spacing rules.
|
|
98
114
|
|
|
99
115
|
7. **Compile.** `node <skill>/run.mjs compile deck.md --pptx deck.pptx` (the tonality comes from the frontmatter; `--tonality <id>` overrides it, `--faces a2z` or `faces: a2z` swaps in the bundled A2Z display faces). The log prints the tonality and the treatment chosen for each slide. Faces default to the bundled official Pretendard Regular and Bold; hierarchy comes from size, weight, colour and placement.
|
|
100
116
|
|
|
101
|
-
8. **Gate.** `node <skill>/run.mjs qa deck.pptx` must exit 0. It reads everything from the OOXML: the layout inventory (text measured with the bundled Pretendard faces against its frame, objects off the canvas), WCAG contrast on the real fill and slide ground (body 4.5:1, large 3:1), overlaps and occlusion, composition (an empty outlined box, a thin body, a table-only deck), anti-slop terms, evidence captions, OOXML integrity, and the craft floor. `scripts/craft_extras.py` checks each slide for
|
|
117
|
+
8. **Gate.** `node <skill>/run.mjs qa deck.pptx` must exit 0. It reads everything from the OOXML: the layout inventory (text measured with the bundled Pretendard faces against its frame, objects off the canvas), WCAG contrast on the real fill and slide ground (body 4.5:1, large 3:1), overlaps and occlusion, composition (an empty outlined box, a thin body, a table-only deck), anti-slop terms, evidence captions, OOXML integrity, and the craft floor. `scripts/craft_extras.py` checks each slide for accent colours (up to four hue families pass, five fail; a pack's `qa:` allowance only widens that), a readable measure, right-aligned numeric columns, concentric nested frames, card spacing, gradient text, glow, emoji bullets and empty bands (OF-101 to OF-109), and that a hard offset shadow appears only in a pack that draws one, never beside soft ones (OF-120). `scripts/deck_output.py` checks the deck as a whole: at least three title treatments on eight or more slides, each drawn as it is named (OF-110); composition variety across content slides (OF-111); the body used, with a deck median empty band of at most 0.20 (OF-112); one title frame for every content title and one for every display title, whatever the treatment (OF-113); titles and the cover subtitle written as labels, not sentences (OF-114); no region left empty beside a full one, so a takeaway column runs as long as the visual beside it, no text or picture column of a two-column body leaves more than 40 % of the body empty inside it beside a longer column (a source strip at its foot does not hide the band above it), a title panel is as tall as its text and no plate leaves the page above it open (OF-115); no mostly-white figure picture on a dark ground (OF-117); no bold run-in label running into its sentence without a separator (OF-118; the compiler adds the colon, so a finding means a label set by hand); no count numeral beside an agenda title (OF-119). When two tonalities of one source are offered, run `node <skill>/run.mjs qa deck.pptx --sibling other.pptx`: both must set every title frame and the body's top-left corner in the same place on every slide (OF-116), because a tonality changes the look, never the place. HIGH findings fail the gate; MEDIUM findings are advisory; on a legacy template the variety checks are advisory. Every deck-level finding carries a hint. Fix the Markdown source and recompile; never edit a generated deck only to evade the gate. A checker pass is not a visual verdict.
|
|
102
118
|
|
|
103
119
|
9. **Fonts for travel.** When the deck must open on machines without Pretendard, run `node <skill>/run.mjs embed deck.pptx` and rerun the gate. The post-embedding integrity check reopens the deck and verifies ZIP data, content types and relationship targets.
|
|
104
120
|
|
|
105
|
-
10. **Look at the pages.** Render with
|
|
121
|
+
10. **Look at the pages.** Render with `node <skill>/run.mjs render deck.pptx --out-dir <output-dir>` when LibreOffice is available: it converts in a private profile, installs the faces the deck embeds (LibreOffice ignores embedded font parts, so JetBrains Mono and Pretendard show only when the helper places them), and writes `<output-dir>/deck.pdf` and `page-01.png` onward when `pdftoppm` is on PATH. Open every slide at presentation size. Check hierarchy, Hangul line breaks, numbers against the source, cramped or hollow areas, and whether each treatment suits its slide. Check the card's "wrong if" line: if it came true, rebuild under the alternative and update the card and reply. Three full compile → gate → look rounds is the budget; a defect that survives is named in the reply, not written onto a slide. Without soffice, report that structural QA ran and visual preview was unavailable; never claim render verification.
|
|
106
122
|
|
|
107
123
|
11. **Deliver.** The `.pptx`, its Markdown source, the build log with the direction card and, when useful, the rendered PNGs sit in the user's project. The reply names the tonality and the two alternatives. Never leave generated files inside the skill.
|
|
108
124
|
|
|
@@ -114,16 +130,16 @@ For a deck that matters, iterate once before the final compile. The guidance in
|
|
|
114
130
|
|
|
115
131
|
### Design laws for every tonality and template
|
|
116
132
|
|
|
117
|
-
-
|
|
133
|
+
- Build a rich slide from the pack's own roles: its accent, series and field colours, a hero step on cover and statement titles that fit, and the pack's decoration. Up to four accent hue families per slide pass and five fail (OF-101); one colour keeps one meaning across the deck. `hero: false` in the front matter is the calm opt-out, and `decoration: numeral, column-hairlines` adds kinds from the shared set.
|
|
118
134
|
- Titles and subtitles are labels; claims live in the body.
|
|
119
|
-
- No
|
|
120
|
-
- Pretendard unless the user asks otherwise; at most the two bundled weights, plus A2Z on request.
|
|
135
|
+
- No exaggerated figures; every number has its basis and period. Only a bold pack (`register: bold`, today neo-brutalism) sets presented type and big figures, inside the same zones; every other figure sits at title size at most.
|
|
136
|
+
- Pretendard unless the user asks otherwise; at most the two bundled weights, plus A2Z on request. computational-brutalism adds the bundled JetBrains Mono for titles, figures and labels (Latin only, Pretendard stays the Korean face, and a mono body face is refused).
|
|
121
137
|
- Text never below the readable floors; nothing outside the safe margins; pictures cropped, never stretched.
|
|
122
138
|
- Variety comes from the slide's job: a deck that repeats one composition on most of its content slides is unfinished.
|
|
123
139
|
|
|
124
140
|
## #contract.runtime
|
|
125
141
|
|
|
126
|
-
The skill ships `package-lock.json` and `requirements.lock` with pinned Node and Python dependencies. `run.mjs` installs on first use under the configured user cache directory (`XDG_CACHE_HOME/litopencode/office` or the normal user cache), never globally or in the OpenCode config. The Python side creates a product-owned venv for `python-pptx`, `defusedxml` and Pillow; the Node side installs `pptxgenjs` and `sharp`. The tonality packs, layout families and treatments are data under `templates/tonalities/`; the renderer is one engine (`scripts/lib/render-pack.js` on the grid of `scripts/lib/grid-resolver.js`) for all of them. The bundled faces are the unmodified official Pretendard 1.3.9 Regular and Bold under the SIL OFL (`pretendard-font/LICENSE.txt`)
|
|
142
|
+
The skill ships `package-lock.json` and `requirements.lock` with pinned Node and Python dependencies. `run.mjs` installs on first use under the configured user cache directory (`XDG_CACHE_HOME/litopencode/office` or the normal user cache), never globally or in the OpenCode config. The Python side creates a product-owned venv for `python-pptx`, `defusedxml` and Pillow; the Node side installs `pptxgenjs` and `sharp`. The tonality packs, layout families and treatments are data under `templates/tonalities/`; the renderer is one engine (`scripts/lib/render-pack.js` on the grid of `scripts/lib/grid-resolver.js`) for all of them. The bundled faces are the unmodified official Pretendard 1.3.9 Regular and Bold under the SIL OFL (`pretendard-font/LICENSE.txt`), the A2Z weights, and the unmodified official JetBrains Mono 2.304 Regular and Bold under the SIL OFL (`fonts/jetbrains-mono/`), each with its licence and source note. A missing network or package manager is a capability failure: report it and leave existing user files intact. `soffice` (and `pdftoppm` for the page images) is optional for the render; this skill never installs either.
|
|
127
143
|
|
|
128
144
|
## #contract.outputs
|
|
129
145
|
|
|
@@ -148,7 +164,7 @@ Stop on an unreadable supplied source, untrusted external command, unresolved de
|
|
|
148
164
|
|
|
149
165
|
## #contract.anti_patterns
|
|
150
166
|
|
|
151
|
-
Do not compile without choosing a tonality,
|
|
167
|
+
Do not compile without choosing a tonality, build before the look question is answered (or, when the session cannot ask, before naming the recommended pick), write sentence titles, inflate a number into a hero figure, treat a green checker as a visual review, put task output inside the installed skill tree, silently change a user-selected style, hide a failed prerequisite, or claim that missing source facts were verified. A failure is reported as a failure with the smallest next action.
|
|
152
168
|
|
|
153
169
|
## Reference map
|
|
154
170
|
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
https://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# JetBrains Mono: bundled font source
|
|
2
|
+
|
|
3
|
+
- Face: JetBrains Mono, Regular 400 and Bold 700, used by the computational-brutalism tonality for Latin text only.
|
|
4
|
+
- Release: v2.304 (official release archive, files shipped unmodified).
|
|
5
|
+
- Repository: https://github.com/JetBrains/JetBrainsMono
|
|
6
|
+
- Release asset: https://github.com/JetBrains/JetBrainsMono/releases/download/v2.304/JetBrainsMono-2.304.zip
|
|
7
|
+
- Archive sha256: `6f6376c6ed2960ea8a963cd7387ec9d76e3f629125bc33d1fdcd7eb7012f7bbf`
|
|
8
|
+
- License: SIL Open Font License 1.1, no Reserved Font Name (`OFL.txt` is the upstream file).
|
|
9
|
+
|
|
10
|
+
| File | bytes | sha256 |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| `JetBrainsMono-Regular.ttf` | 273900 | `a0bf60ef0f83c5ed4d7a75d45838548b1f6873372dfac88f71804491898d138f` |
|
|
13
|
+
| `JetBrainsMono-Bold.ttf` | 277828 | `5590990c82e097397517f275f430af4546e1c45cff408bde4255dad142479dcb` |
|
|
14
|
+
| `OFL.txt` | 4399 | `30f0c136e3c88e422d0791acd97238870f9054a9729bc34cf2ff0d4ed8cac4ad` |
|
|
15
|
+
|
|
16
|
+
The face carries no Hangul. Every mono run is written with `<a:ea typeface="Pretendard">`, so Hangul inside a mono run is set in the
|
|
17
|
+
bundled Pretendard (never subset), and a pack whose `faces.body` is mono is refused by the pack loader.
|
|
@@ -121,6 +121,12 @@ The second line is the important one. It means the slide is short because the so
|
|
|
121
121
|
no policy can help. Add the facts the slide is missing (next section) or move the content to a
|
|
122
122
|
family that suits its amount; `layout-families.md` lists what each family expects.
|
|
123
123
|
|
|
124
|
+
The title treatment never buys the body room: every treatment draws in the slide grid's one title
|
|
125
|
+
zone over the same body (y 120-486), so a short body is filled by its own layout, never by moving the
|
|
126
|
+
title. The engine never pads cards with filler. Decoration (the pack's list plus the deck's
|
|
127
|
+
`decoration:` kinds) adds texture and structure to a full slide; it never stands in for missing
|
|
128
|
+
content.
|
|
129
|
+
|
|
124
130
|
Some families also spread on their own when the body is short: headed points become rows, agenda
|
|
125
131
|
rows spread down to the floor, timeline room is shared above and below the axis, table takeaways
|
|
126
132
|
move under the table, references spread with rules. These moves never add words.
|
|
@@ -231,9 +237,9 @@ takeaway is a bare claim (`늘었음`) with no figure.
|
|
|
231
237
|
|
|
232
238
|
### Numbers stay honest
|
|
233
239
|
|
|
234
|
-
- No hero numerals. The
|
|
235
|
-
|
|
236
|
-
that with a `box` or `shape`.
|
|
240
|
+
- No hero numerals. The hero step belongs to cover, section and statement titles that fit it. The engine
|
|
241
|
+
caps every number it sets (KPI values, big-number panels, cover figures, closing keys, section
|
|
242
|
+
numerals) at the title size of the ramp; do not try to get around that with a `box` or `shape`.
|
|
237
243
|
- A figure is never larger than the title, and a figure without a basis is not a KPI.
|
|
238
244
|
- Signed deltas carry their sign and unit (`+4.1%`, `−3.6%`, `+0.5%p`, `▲ 12%`). In signal, where
|
|
239
245
|
the accent is red, losses keep the ink colour and rely on the `▼` sign.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A LitOpenCode deck is drawn from a tonality pack: palette roles, a type ramp, the title treatments
|
|
4
4
|
the pack allows, the layout families it lists, its cover, section and closing variants, and two
|
|
5
|
-
dials.
|
|
5
|
+
dials. Thirteen packs ship in `templates/tonalities/`. The engine never guesses a look on its own, so
|
|
6
6
|
the first decision of every build is which pack to compile under. This file is the procedure for
|
|
7
7
|
making that decision quickly, recording it, and telling the user what was chosen.
|
|
8
8
|
|
|
@@ -42,7 +42,7 @@ can correct it later.
|
|
|
42
42
|
|
|
43
43
|
| Fact | What to settle | Why it matters |
|
|
44
44
|
|---|---|---|
|
|
45
|
-
| Deck type | One of the
|
|
45
|
+
| Deck type | One of the thirteen types below, or the nearest one | Gives the starting candidate order |
|
|
46
46
|
| Delivery | Spoken in a room, sent ahead and read alone, or both | Read decks favour Gazette and Ledger; stage decks favour Signal and Night |
|
|
47
47
|
| Room | Lit office, screen share, dark hall, printed handout | A dark hall pulls Night forward; print rules Night out |
|
|
48
48
|
| Language | Korean, English or mixed | Korean glyphs take about twice the width of Latin letters, which tightens title budgets |
|
|
@@ -50,18 +50,23 @@ can correct it later.
|
|
|
50
50
|
## Step 2: start from the deck type
|
|
51
51
|
|
|
52
52
|
Each deck type has an ordered shortlist. The first entry wins when no signal in step 3 moves it.
|
|
53
|
-
All
|
|
53
|
+
All thirteen packs default to density 10; the variance shown is each pack's own default.
|
|
54
54
|
|
|
55
55
|
| Deck type | First choice | Second | Third |
|
|
56
56
|
|---|---|---|---|
|
|
57
57
|
| Pitch or proposal (투자·제안) | signal (v6) | studio (v8) | atlas (v7) when the product is physical and photographed |
|
|
58
|
+
| Launch, demo day or campaign (런칭·데모데이·캠페인) | neo-brutalism (v7) | signal (v6) | studio (v7) |
|
|
59
|
+
| Engineering or developer review (아키텍처·인프라·장애 리뷰) | computational-brutalism (v7) | night (v6) for a stage | ledger (v5) when it is read alone |
|
|
58
60
|
| Management review (경영·사업 실적) | ledger (v5) | gazette (v4) when circulated in Korean before the meeting | night (v6) when presented on a stage screen |
|
|
59
61
|
| Research talk (연구 발표) | paper (v5) | night (v6) for a large dark auditorium | chalk (v6) for a tutorial-style talk |
|
|
60
62
|
| Lecture or training (강의·교육) | chalk (v6) | paper (v5) | studio (v8) for a public lecture with images |
|
|
63
|
+
| Design or culture lecture (디자인·건축·전시·워크숍) | bauhaus (v7) | studio (v8) | atlas (v7) when the works are the deck |
|
|
61
64
|
| Data review (데이터·지표 리뷰) | night (v6) | ledger (v5) | paper (v5) when the review is a written analysis |
|
|
62
65
|
| Image-led showcase (제품·현장·포트폴리오) | atlas (v7) | studio (v8) | signal (v6) for a launch moment |
|
|
63
66
|
| Korean reading brief (보고서형 덱) | gazette (v4) | ledger (v5) | none |
|
|
64
67
|
| Status update (주간·월간 보고) | ledger (v5) | gazette (v4) | night (v6) |
|
|
68
|
+
| Community, culture or education programme (커뮤니티·문화·교육 프로그램) | riso (v7) | studio (v7) | bauhaus (v7) for a design programme |
|
|
69
|
+
| Data story for the public (주민·독자 대상 데이터 브리핑) | newsroom (v6) | gazette (v4) when it is read alone | ledger (v5) |
|
|
65
70
|
|
|
66
71
|
A request that fits none of these takes the nearest type, and the card says "other, treated as
|
|
67
72
|
status update" or similar.
|
|
@@ -75,6 +80,7 @@ in this order; ties keep the deck-type order, so the same source always lands on
|
|
|
75
80
|
| Rule | Fires when | Move |
|
|
76
81
|
|---|---|---|
|
|
77
82
|
| Named by the user | The brief or an earlier turn names a tonality | Use it. Still write the card and still name two alternatives |
|
|
83
|
+
| Named by style | 네오 브루탈리즘, neo-brutalism; 컴퓨테이셔널 브루탈리즘, computational brutalism, 레트로 퓨처, terminal look; 바우하우스, Bauhaus; 리소, risograph, zine; 뉴스룸, data journalism, explainer | That pack, as if named. A bare 브루탈리즘 or brutalist takes neo-brutalism for a pitch or launch and computational-brutalism for a technical deck, and the card says which reading it took |
|
|
78
84
|
| Legacy template named | The brief names AZURE-PRO, AZURE-A2Z, BOILERPLATE-PRETENDARD or BOILERPLATE-A2Z | Compile with `--template` as named; offer two tonalities as alternatives |
|
|
79
85
|
| Read, not presented | "미리 배포", "보고서", "sent ahead", "for the board pack" | gazette to the front for Korean, ledger otherwise |
|
|
80
86
|
| Table-heavy | 30 % or more of slides hold a table | ledger or gazette up one place |
|
|
@@ -85,6 +91,12 @@ in this order; ties keep the deck-type order, so the same source always lands on
|
|
|
85
91
|
| Citations | numbered references, DOIs, a references slide | paper up one place |
|
|
86
92
|
| Teaching shape | definitions, equations, or a how-it-works sequence of three or more steps | chalk or paper up one place |
|
|
87
93
|
| Dark room | keynote hall, demo day, stage | night up one place |
|
|
94
|
+
| Technical metrics | units, versions or identifiers (p99, rps, v3, endpoint names) on a third of the content slides | computational-brutalism up one place |
|
|
95
|
+
| Young or consumer audience | stated in the brief, or a sign-up or launch ask | neo-brutalism up one place |
|
|
96
|
+
| Works and makers | works, makers, periods or schools as the subject, on a third of the content slides | bauhaus up one place |
|
|
97
|
+
| Programme facts | participants, sessions, dates and places for a community or a class, on a third of the content slides | riso up one place |
|
|
98
|
+
| Readers outside the field | charts with one point each for residents, members or the press | newsroom up one place |
|
|
99
|
+
| Sensitive reader | a board, investor committee, finance or public-sector reader, or a topic such as loss, safety or HR | neo-brutalism, computational-brutalism, bauhaus and riso drop out |
|
|
88
100
|
| Missing carrier | the pack has no family or title that can carry a planned slide | drop that pack from the shortlist |
|
|
89
101
|
|
|
90
102
|
The last rule overrides taste. The packs differ in what they can draw:
|
|
@@ -186,7 +198,7 @@ word. `node <skill>/run.mjs compile` prints the dials it used on its first line
|
|
|
186
198
|
|
|
187
199
|
Two neighbouring keys are not dials but belong to the same decision:
|
|
188
200
|
|
|
189
|
-
- `canvas: 4:3` switches every pack to its 4:3 grid (all
|
|
201
|
+
- `canvas: 4:3` switches every pack to its 4:3 grid (all thirteen list both canvases);
|
|
190
202
|
- `faces: a2z` (or `--faces a2z`) switches the display and numeral faces to A2Z. Pretendard is the
|
|
191
203
|
default in every pack, and A2Z is used only when the user asks for it.
|
|
192
204
|
|
|
@@ -245,5 +257,8 @@ reply still names two tonalities as alternatives.
|
|
|
245
257
|
- `layout-families.md`: what each family holds and what the source must contain for it.
|
|
246
258
|
- `density-and-fill.md`: the density steps, readable floors, fill policies and what to write per
|
|
247
259
|
slide so the gate passes on substance rather than padding.
|
|
248
|
-
- `examples/`:
|
|
249
|
-
`node <skill>/run.mjs qa`.
|
|
260
|
+
- `examples/`: seventeen compiled decks across all thirteen packs, each passing
|
|
261
|
+
`node <skill>/run.mjs qa`. The newest five are Korean decks: `13-engineering-review-computational-brutalism-ko.md`
|
|
262
|
+
(alternatives night, ledger), `14-launch-pitch-neo-brutalism-ko.md` (signal, studio),
|
|
263
|
+
`15-design-lecture-bauhaus-ko.md` (studio, atlas), `16-community-programme-riso-ko.md` (studio,
|
|
264
|
+
bauhaus) and `17-public-data-briefing-newsroom-ko.md` (gazette, ledger).
|
|
@@ -49,17 +49,14 @@ layout: method
|
|
|
49
49
|
ΔT = K · W / (M · (100 − W))
|
|
50
50
|
|
|
51
51
|
- **ΔT** 하이드레이트 생성 온도가 내려가는 폭, 단위 °C
|
|
52
|
-
(1) 무억제 생성 온도에서 운전 온도를 뺀 값에
|
|
52
|
+
(1) 무억제 생성 온도에서 운전 온도를 뺀 값에 여유 2~3°C를 더함
|
|
53
53
|
(2) 예: 생성 14°C, 운전 4°C, 여유 0°C이면 ΔT는 10°C
|
|
54
54
|
- **K** 억제제 상수
|
|
55
|
-
(1) 메탄올과 글라이콜 모두 1,297을 흔히
|
|
56
|
-
(2) 교재에 따라 1,228~2,335까지 다른 값을 쓰므로 출처를 함께 적음
|
|
55
|
+
(1) 메탄올과 글라이콜 모두 1,297을 흔히 사용, 출처를 함께 적음
|
|
57
56
|
- **W** 수용액 속 억제제 질량 백분율, 단위 wt%
|
|
58
|
-
(1) 수상 기준 값이며
|
|
59
|
-
(2) 약 25wt% 이하에서 오차 10% 안쪽
|
|
57
|
+
(1) 수상 기준 값이며 약 25wt% 이하에서 오차 10% 안쪽
|
|
60
58
|
- **M** 억제제 분자량
|
|
61
59
|
(1) 메탄올 32.04, MEG 62.07, DEG 106.12
|
|
62
|
-
(2) 분자량이 클수록 같은 ΔT에 더 높은 농도가 필요
|
|
63
60
|
- **적용 한계** 식이 맞는 범위
|
|
64
61
|
(1) 농도 25wt% 이하, 압력 20MPa 이하의 메탄 위주 가스
|
|
65
62
|
(2) 염분이 섞인 생산수는 염의 효과를 따로 더해야 함
|
|
@@ -33,17 +33,13 @@ layout: method
|
|
|
33
33
|
r = k · p_CO2^a · p_H2^b / (1 + K_H2O · p_H2O)
|
|
34
34
|
|
|
35
35
|
- **r** CO2 consumption rate
|
|
36
|
-
(1) mol per gram of surface Ni per second
|
|
37
|
-
(2) measured below 10% conversion so the bed stays differential
|
|
36
|
+
(1) mol per gram of surface Ni per second, below 10% conversion
|
|
38
37
|
- **k** rate constant
|
|
39
38
|
(1) Arrhenius form, k = A · exp(−Ea / RT)
|
|
40
|
-
(2) apparent Ea compared across the five catalysts
|
|
41
39
|
- **a, b** reaction orders in CO2 and H2
|
|
42
40
|
(1) a between 0.21 and 0.34, b between 0.48 and 0.62
|
|
43
|
-
(2) fitted at fixed temperature, varying one partial pressure at a time
|
|
44
41
|
- **K_H2O** water adsorption term
|
|
45
42
|
(1) accounts for product inhibition above 220 °C
|
|
46
|
-
(2) held at one value per catalyst across temperatures
|
|
47
43
|
- **Fit** least squares over 42 runs at 180-260 °C
|
|
48
44
|
(1) R² = 0.97, residuals without trend in temperature
|
|
49
45
|
- Note: rates are normalised by surface Ni from H2 chemisorption
|
|
@@ -114,16 +114,12 @@ budget = (1 − SLO) × total requests in the window
|
|
|
114
114
|
|
|
115
115
|
- **SLO** service level objective
|
|
116
116
|
(1) 99.95% of checkout requests succeed over a rolling 28 days
|
|
117
|
-
(2) a request fails on a 5xx response or a response slower than 3 s
|
|
118
117
|
- **Window** rolling 28 days
|
|
119
118
|
(1) about 410M checkout requests at current volume
|
|
120
|
-
(2) recomputed every five minutes from the request log
|
|
121
119
|
- **Budget** failed requests the window may hold
|
|
122
120
|
(1) 0.05% of 410M, about 205,000 requests
|
|
123
|
-
(2) the May incident alone used 31% of one window
|
|
124
121
|
- **Burn rate** speed of spending the budget
|
|
125
122
|
(1) failed requests per hour divided by the hourly budget
|
|
126
|
-
(2) a burn rate of 1 spends the budget exactly at the window's end
|
|
127
123
|
- **Alert** paging rule
|
|
128
124
|
(1) page when the 1-hour burn rate exceeds 14 or the 6-hour rate exceeds 6
|
|
129
125
|
- Source: Example Commerce SLO policy v3, February 2026
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
tonality: ledger
|
|
3
|
-
title: Finance
|
|
3
|
+
title: Finance migration, week 40 status
|
|
4
4
|
subtitle: Cutover readiness, open defects and budget to date
|
|
5
5
|
date: 2026-10-06
|
|
6
6
|
department: Example Manufacturing finance programme
|
|
@@ -9,7 +9,7 @@ notice: Sample data for illustration only
|
|
|
9
9
|
---
|
|
10
10
|
layout: cover-typographic
|
|
11
11
|
|
|
12
|
-
# Finance
|
|
12
|
+
# Finance migration, week 40 status
|
|
13
13
|
---
|
|
14
14
|
layout: kpi-row
|
|
15
15
|
|
|
@@ -99,21 +99,18 @@ layout: big-number
|
|
|
99
99
|
- 출처: 예시 전력거래 분석팀 사후 분석 보고(2026년 7월 28일)
|
|
100
100
|
---
|
|
101
101
|
layout: method
|
|
102
|
-
title:
|
|
102
|
+
title: side-rail
|
|
103
103
|
|
|
104
104
|
## 앙상블 가중치 산정 방식
|
|
105
105
|
|
|
106
106
|
ŷ = w1 · 기온회귀 + w2 · 부스팅 + w3 · 신경망
|
|
107
107
|
|
|
108
108
|
- **기온회귀** 기온·습도·요일 변수 회귀
|
|
109
|
-
(1) 폭염과 한파 구간에서
|
|
110
|
-
(2) 가중치 0.2~0.5
|
|
109
|
+
(1) 폭염과 한파 구간에서 안정적, 가중치 0.2~0.5
|
|
111
110
|
- **부스팅** 그래디언트 부스팅 모델
|
|
112
|
-
(1) 평일 평상 기온에서 오차가 가장
|
|
113
|
-
(2) 가중치 0.3~0.6
|
|
111
|
+
(1) 평일 평상 기온에서 오차가 가장 작음, 가중치 0.3~0.6
|
|
114
112
|
- **신경망** 순환 신경망 모델
|
|
115
|
-
(1) 공휴일 전후 패턴 학습에
|
|
116
|
-
(2) 가중치 0.1~0.3
|
|
113
|
+
(1) 공휴일 전후 패턴 학습에 강점, 가중치 0.1~0.3
|
|
117
114
|
- **가중치 갱신** 최근 28일 오차로 매주 월요일 재계산
|
|
118
115
|
(1) 가중치 합은 항상 1, 한 번에 0.1 이상 바꾸지 않음
|
|
119
116
|
(2) 폭염 특보가 있는 날은 기온회귀 가중치를 0.5로 고정
|