@litfamily/litclaude 1.0.20 → 1.0.21
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 +5 -0
- package/README.md +8 -8
- package/README_ko-KR.md +8 -8
- package/docs/assets/readme/badge-version.svg +1 -1
- package/package.json +1 -1
- package/plugins/litclaude/.claude-plugin/plugin.json +1 -1
- package/plugins/litclaude/bin/litclaude-mcp.js +1 -1
- package/plugins/litclaude/lib/canonical-skill-resources.mjs +33 -33
- package/plugins/litclaude/skills/lit-docx/references/page-composition.md +3 -3
- package/plugins/litclaude/skills/lit-docx/references/tonalities/brief.md +1 -1
- package/plugins/litclaude/skills/lit-docx/references/tonalities/journal.md +1 -1
- package/plugins/litclaude/skills/lit-docx/references/tonalities/manual.md +1 -1
- package/plugins/litclaude/skills/lit-docx/references/tonalities/memo.md +1 -1
- package/plugins/litclaude/skills/lit-docx/references/tonalities/proposal.md +1 -1
- package/plugins/litclaude/skills/lit-docx/references/tonalities/report.md +1 -1
- package/plugins/litclaude/skills/lit-docx/scripts/docx_design.py +1 -1
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/brief.yaml +0 -1
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/journal.yaml +0 -1
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/manual.yaml +0 -1
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/memo.yaml +0 -1
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/proposal.yaml +0 -1
- package/plugins/litclaude/skills/lit-docx/templates/tonalities/report.yaml +0 -1
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/atlas.md +2 -2
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/chalk.md +1 -1
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/gazette.md +1 -1
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/ledger.md +1 -1
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/night.md +2 -2
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/paper.md +2 -2
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/signal.md +1 -1
- package/plugins/litclaude/skills/lit-pptx/references/tonalities/studio.md +1 -1
- package/plugins/litclaude/skills/lit-pptx/scripts/craft_extras.py +1 -1
- package/plugins/litclaude/skills/lit-pptx/scripts/lib/template-registry.js +1 -1
- package/plugins/litclaude/skills/lit-pptx/scripts/validate_pptx.py +7 -4
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +0 -13
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +0 -13
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +0 -13
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +2 -15
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/night/pack.yaml +0 -13
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/paper/pack.yaml +0 -13
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/signal/pack.yaml +0 -13
- package/plugins/litclaude/skills/lit-pptx/templates/tonalities/studio/pack.yaml +0 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.21 - 2026-10-09
|
|
4
|
+
|
|
5
|
+
- The deck and document looks no longer list settings that nothing applied. The eight deck looks carried entries for chart annotations, image cropping and bleed, letter case, tabular figures and table style names, and the six document looks carried page-fill targets, but the build never read any of them. Those entries are gone, and the reference pages for each look no longer promise them. Decks and documents come out exactly as before.
|
|
6
|
+
- The deck check now treats a one-word placeholder term such as "todo", "tbd", "fixme" or "placeholder" as a whole word. A slide that says "Mastodon" or "photodocument" no longer fails the check, while "TODO:", "TODOs" and "(TBD)" still do.
|
|
7
|
+
|
|
3
8
|
## 1.0.20 - 2026-10-08
|
|
4
9
|
|
|
5
10
|
- `lit-pptx` now works out who will read a deck and how, then picks one of eight looks before it builds a slide. `ledger` is a dense, number-led review for reading at a desk, `signal` a short pitch with one hot accent, `atlas` a deck carried by pictures, `chalk` a lesson with numbered steps, `paper` a research talk with numbered figures and citations, `gazette` a Korean briefing page, `studio` an editorial grid, and `night` a dark style for a keynote screen. Each look brings its own colours, title positions and page layouts. The older AZURE and plain 4:3 templates still work when you ask for them by name.
|
package/README.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
<p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
1
|
+
<p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/assets/cover-motion.webp" width="100%" alt="LitFamily motion cover: five armored robots power on one by one, the LitClaude robot wakes with glowing eyes and a lit frame, then LITFAMILY and KEEP THE WORK LIT. light up." /></picture></p>
|
|
2
2
|
|
|
3
3
|
<h1 align="center">LitClaude</h1>
|
|
4
4
|
<p align="center"><strong>Keep the work lit.</strong></p>
|
|
5
5
|
<p align="center">Plan, build, and check your work in Claude Code. Leave the next session a place to begin.</p>
|
|
6
6
|
<p align="center">
|
|
7
|
-
<img src="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
8
|
-
<a href="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
7
|
+
<img src="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/assets/readme/badge-version.svg" alt="1.0.21" />
|
|
8
|
+
<a href="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
|
|
9
9
|
</p>
|
|
10
10
|
<p align="center">
|
|
11
|
-
<a href="https://github.com/wjgoarxiv/litclaude#readme">Full guide and skills gallery on GitHub</a> · <a href="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
11
|
+
<a href="https://github.com/wjgoarxiv/litclaude#readme">Full guide and skills gallery on GitHub</a> · <a href="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/README_ko-KR.md">한국어</a>
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
LitClaude is a Claude Code plugin. Add `lit` to a request and Claude pins the goal, writes a
|
|
@@ -131,7 +131,7 @@ changed by hand or doesn't look like one LitClaude made, it refuses to touch it.
|
|
|
131
131
|
## More
|
|
132
132
|
|
|
133
133
|
- [Full guide and skills gallery on GitHub](https://github.com/wjgoarxiv/litclaude#readme)
|
|
134
|
-
- [Privacy and network behavior](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
135
|
-
- [Migration and ownership conflicts](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
136
|
-
- [Release history](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
137
|
-
- [MIT license](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
134
|
+
- [Privacy and network behavior](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/privacy.md)
|
|
135
|
+
- [Migration and ownership conflicts](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/migration.md)
|
|
136
|
+
- [Release history](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/CHANGELOG.md)
|
|
137
|
+
- [MIT license](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/LICENSE)
|
package/README_ko-KR.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
<p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
1
|
+
<p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/assets/cover-motion.webp" width="100%" alt="LitFamily 모션 커버: 다섯 로봇 패널이 차례로 켜지고, LitClaude 로봇의 눈과 테두리가 빛난 뒤 LITFAMILY와 KEEP THE WORK LIT. 문구가 밝아지는 영상" /></picture></p>
|
|
2
2
|
|
|
3
3
|
<h1 align="center">LitClaude</h1>
|
|
4
4
|
<p align="center"><strong>Keep the work lit.</strong></p>
|
|
5
5
|
<p align="center">Claude Code에서 계획하고, 만들고, 확인한 일을 다음 세션으로 이어가세요.</p>
|
|
6
6
|
<p align="center">
|
|
7
|
-
<img src="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
8
|
-
<a href="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
7
|
+
<img src="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/assets/readme/badge-version.svg" alt="1.0.21" />
|
|
8
|
+
<a href="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
|
|
9
9
|
</p>
|
|
10
10
|
<p align="center">
|
|
11
|
-
<a href="https://github.com/wjgoarxiv/litclaude/blob/main/README_ko-KR.md">전체 안내와 스킬 갤러리는 GitHub에서</a> · <a href="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
11
|
+
<a href="https://github.com/wjgoarxiv/litclaude/blob/main/README_ko-KR.md">전체 안내와 스킬 갤러리는 GitHub에서</a> · <a href="https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/README.md">English</a>
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
LitClaude는 Claude Code 플러그인입니다. 요청 끝에 `lit`을 붙이면 Claude가 목표를 먼저
|
|
@@ -124,7 +124,7 @@ npm exec --yes --package @litfamily/litclaude@latest -- litclaude uninstall
|
|
|
124
124
|
## 더 보기
|
|
125
125
|
|
|
126
126
|
- [전체 안내와 스킬 갤러리 (GitHub)](https://github.com/wjgoarxiv/litclaude/blob/main/README_ko-KR.md)
|
|
127
|
-
- [개인정보와 네트워크](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
128
|
-
- [이전 안내와 소유권 충돌](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
129
|
-
- [Release history](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
130
|
-
- [MIT 라이선스](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.
|
|
127
|
+
- [개인정보와 네트워크](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/privacy.md)
|
|
128
|
+
- [이전 안내와 소유권 충돌](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/docs/migration.md)
|
|
129
|
+
- [Release history](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/CHANGELOG.md)
|
|
130
|
+
- [MIT 라이선스](https://cdn.jsdelivr.net/npm/@litfamily/litclaude@1.0.21/LICENSE)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.21"><title>release: 1.0.21</title><g shape-rendering="crispEdges"><rect width="49" height="20" fill="#080d14"/><rect x="49" width="97" height="20" fill="#ff6337"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="255" y="140" textLength="390" transform="scale(.1)">release</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.21</text></g></svg>
|
package/package.json
CHANGED
|
@@ -513,20 +513,20 @@ export const canonicalSkillResourceManifest = Object.freeze(
|
|
|
513
513
|
["skills/lit-docx/references/frontmatter_schema.md", "30200cc4bf9bf633cf4cfbe077c394d01e9bb40dc580d651c0bb5c0f12ef12ee"],
|
|
514
514
|
["skills/lit-docx/references/journal_style_spec.md", "758fca79cc7da20e828a15baaf630085406d18b4f7f511db0dc0e86224ec9ad2"],
|
|
515
515
|
["skills/lit-docx/references/markdown_quality_checklist.md", "3e1f9242927f16f7085824d6cd7082cc10662e6120ceb3e1f14ee29d6b7dbf26"],
|
|
516
|
-
["skills/lit-docx/references/page-composition.md", "
|
|
516
|
+
["skills/lit-docx/references/page-composition.md", "9b836398aa20d0869f746abbc1ee3b5cec1b4ac01fe105a1dbb6c3a6ed6e19fd"],
|
|
517
517
|
["skills/lit-docx/references/slop_phrase_list.yaml", "b4cb5dc858b2ea44b5558e8be4cb51199af40de53b901fb563b53c5416c50bdc"],
|
|
518
518
|
["skills/lit-docx/references/slop_rules.md", "3d182b85a5643e42411ab6552d23e76e963854ec9e88e8953c20bf8df8614a57"],
|
|
519
|
-
["skills/lit-docx/references/tonalities/brief.md", "
|
|
520
|
-
["skills/lit-docx/references/tonalities/journal.md", "
|
|
521
|
-
["skills/lit-docx/references/tonalities/manual.md", "
|
|
522
|
-
["skills/lit-docx/references/tonalities/memo.md", "
|
|
523
|
-
["skills/lit-docx/references/tonalities/proposal.md", "
|
|
524
|
-
["skills/lit-docx/references/tonalities/report.md", "
|
|
519
|
+
["skills/lit-docx/references/tonalities/brief.md", "5a0571cb7c0cc31391f3d707803aba415d7bb80b57826787f924ab535435f08a"],
|
|
520
|
+
["skills/lit-docx/references/tonalities/journal.md", "45871c10611346a2a0d81b3e7db14c8762c75daeeee3cea30e6e8edfc7066807"],
|
|
521
|
+
["skills/lit-docx/references/tonalities/manual.md", "b192101743c6b908095635c27a9bb6c7ee922a05f3139851c57b9566ba8848cb"],
|
|
522
|
+
["skills/lit-docx/references/tonalities/memo.md", "0e6863b3a5cf29a8e5a773f6bab8a3e65c4ecee3a63ff1b49bb194326ea291e1"],
|
|
523
|
+
["skills/lit-docx/references/tonalities/proposal.md", "904324ce21411e1942624a3ce8d4dd308eba0f8df2fdb5b88220cbc46e28b469"],
|
|
524
|
+
["skills/lit-docx/references/tonalities/report.md", "9f398eac6fca2ad042a3a795b272d4323150584cb274adccd888b8b7e6a0868e"],
|
|
525
525
|
["skills/lit-docx/scripts/clean_markdown.py", "d9116e22d26f4334c07e952443d9ceb8d8fc0f5d3c992d4fa3407a891187e225"],
|
|
526
526
|
["skills/lit-docx/scripts/convert_md_to_docx.py", "eb28c70f9d147aabc47aed7101af3270f06ee1a8f672070f5e4b68fb435994ef"],
|
|
527
527
|
["skills/lit-docx/scripts/convert_md_to_pdf.py", "2a9a6df79f1375952f2c4038514ea9fc8f0f6f6673a94f3fd55c8bc0168cf1fd"],
|
|
528
528
|
["skills/lit-docx/scripts/convert_pdf.py", "0ed22e0305d0d0a49d365e0b62462f5377ef765d5835b2a2d8cd9ede98bff31c"],
|
|
529
|
-
["skills/lit-docx/scripts/docx_design.py", "
|
|
529
|
+
["skills/lit-docx/scripts/docx_design.py", "2db6d86b1adda1f70a74dcf67e28dbd7fc2a5cffc158b76070e592e0063318f6"],
|
|
530
530
|
["skills/lit-docx/scripts/docx_layout.py", "4bd326b28df5b7b665dcca87a6ba0b9f8a0f7fc88473b1b75145538809894925"],
|
|
531
531
|
["skills/lit-docx/scripts/edit_docx.py", "65dbd4823f5ead1474a52a10688817ae7abc34933e4ea4a110914a0b00aac009"],
|
|
532
532
|
["skills/lit-docx/scripts/embed_images.py", "481f2bb54a6f4a1d3fae7c66f3d6b1f56676a30030154131ffe866e23ea68db1"],
|
|
@@ -550,12 +550,12 @@ export const canonicalSkillResourceManifest = Object.freeze(
|
|
|
550
550
|
["skills/lit-docx/templates/latex/nature/README.md", "b0ff9e258e3aabc9c9bed8c26d7c9373b4bca83a85c54c5bd9c937132a829cbb"],
|
|
551
551
|
["skills/lit-docx/templates/latex/nature/template.tex", "74437009d7fe894b8e2c8c256f300181081195e1f9831e922e20af6606704265"],
|
|
552
552
|
["skills/lit-docx/templates/registry.yaml", "950c0adf003f773c84756e73df352bc29c771a8399f91c8ee93c14c39b6b9c7d"],
|
|
553
|
-
["skills/lit-docx/templates/tonalities/brief.yaml", "
|
|
554
|
-
["skills/lit-docx/templates/tonalities/journal.yaml", "
|
|
555
|
-
["skills/lit-docx/templates/tonalities/manual.yaml", "
|
|
556
|
-
["skills/lit-docx/templates/tonalities/memo.yaml", "
|
|
557
|
-
["skills/lit-docx/templates/tonalities/proposal.yaml", "
|
|
558
|
-
["skills/lit-docx/templates/tonalities/report.yaml", "
|
|
553
|
+
["skills/lit-docx/templates/tonalities/brief.yaml", "41bf481cd799b28ee53538a3cf88a58c4b2f9db365d1ca1ee10b3adfcad1ab8e"],
|
|
554
|
+
["skills/lit-docx/templates/tonalities/journal.yaml", "0a7ae34ccd6e91f289c472bfeb8bcfd6736005f15c55a63dd4cc43e55606ec57"],
|
|
555
|
+
["skills/lit-docx/templates/tonalities/manual.yaml", "cc965f5523c7cbaa4c1d0bc06e5260641dfc8113b77f2c252862a397eb97ce84"],
|
|
556
|
+
["skills/lit-docx/templates/tonalities/memo.yaml", "5d850aba7cfd3173b2a1af6d46268cdad73d037f70a4606f6c5f3df9278bee51"],
|
|
557
|
+
["skills/lit-docx/templates/tonalities/proposal.yaml", "b1b7f4875a89208939ca82d69e6cfb30c35b64ea91d67d5aecc98fe04bde3bfc"],
|
|
558
|
+
["skills/lit-docx/templates/tonalities/report.yaml", "23ac1d24f8936c6d522e19354d5948f0d00dce6d60c34fa42e37adafcc68cb8c"],
|
|
559
559
|
["skills/lit-humanizer/NOTICE", "c2608d2bc42cac22e77ac64eb137f8fc40d8f9a0b08ae7d7a8a75cf11d9289be"],
|
|
560
560
|
["skills/lit-humanizer/SKILL.md", "673864584ac4ca8d054be6adb8460a45e19c950456cd26ba7b2f41923f40ac6b"],
|
|
561
561
|
["skills/lit-humanizer/assets/always-on-rule.md", "1c0e1d9724f012f05142c69d06e8a8cc89596556cba2c8ff1438e99c7848a5cf"],
|
|
@@ -672,16 +672,16 @@ export const canonicalSkillResourceManifest = Object.freeze(
|
|
|
672
672
|
["skills/lit-pptx/references/stages/interview.md", "1d57f85cf1914019784c0f0eb827a0fd6f2d707ce11a87a93ed09c16832e8651"],
|
|
673
673
|
["skills/lit-pptx/references/stages/plan.md", "401e2f176020ee15de84e43a625605f7294ff2e351e86e3325a5657a85082023"],
|
|
674
674
|
["skills/lit-pptx/references/title-treatments.md", "d8c28a6c68736264d656cb22240a4f769418ec692b5d15bfe9d9b9ee62e03778"],
|
|
675
|
-
["skills/lit-pptx/references/tonalities/atlas.md", "
|
|
676
|
-
["skills/lit-pptx/references/tonalities/chalk.md", "
|
|
677
|
-
["skills/lit-pptx/references/tonalities/gazette.md", "
|
|
678
|
-
["skills/lit-pptx/references/tonalities/ledger.md", "
|
|
679
|
-
["skills/lit-pptx/references/tonalities/night.md", "
|
|
680
|
-
["skills/lit-pptx/references/tonalities/paper.md", "
|
|
681
|
-
["skills/lit-pptx/references/tonalities/signal.md", "
|
|
682
|
-
["skills/lit-pptx/references/tonalities/studio.md", "
|
|
675
|
+
["skills/lit-pptx/references/tonalities/atlas.md", "b1c70c2913db2a47952001717928529a37ee4b950be1ca73c4d1b35638667fa4"],
|
|
676
|
+
["skills/lit-pptx/references/tonalities/chalk.md", "73177a7a675a8db32271cbd396d4e9518e951be9c51af4825845ea5a4294de34"],
|
|
677
|
+
["skills/lit-pptx/references/tonalities/gazette.md", "ff2e459c982cba824c29355bb6229802a90bb100675cd27d41ce446b130fae64"],
|
|
678
|
+
["skills/lit-pptx/references/tonalities/ledger.md", "84b8c5dd66b829c45e2c43536e92179ae260fbe466568f7e12f4baae9ead5309"],
|
|
679
|
+
["skills/lit-pptx/references/tonalities/night.md", "c26b005e0ab430037d07cfeb4a64913716b91087dda05e398768de465b413f3e"],
|
|
680
|
+
["skills/lit-pptx/references/tonalities/paper.md", "3cf05a6a19714b3b18b9c3f3ac40d65f56175f94faf046d4e02b9b333975152e"],
|
|
681
|
+
["skills/lit-pptx/references/tonalities/signal.md", "48277d1165183e93343afb03aeaca6c39d4d249cfed178945a9f9a0e619e9bbc"],
|
|
682
|
+
["skills/lit-pptx/references/tonalities/studio.md", "c699df3fc2647e25c2d07f0cb5ad5face5a58903f06b3000d2a04dc653be2369"],
|
|
683
683
|
["skills/lit-pptx/scripts/compile-deck.js", "50d3f6663446f31c5ebc9e2773efd880ead396d368c2871b1d479f637fd5cb80"],
|
|
684
|
-
["skills/lit-pptx/scripts/craft_extras.py", "
|
|
684
|
+
["skills/lit-pptx/scripts/craft_extras.py", "dfb5ced20a87ae6d8f9d620bf8006b3bdb6bba07216950dbe555a8e957fe7eeb"],
|
|
685
685
|
["skills/lit-pptx/scripts/deck_craft.py", "7963d1b4df1ecf77b48584d7c5464e8b4dad3c2816c26db17af4839ef638a0e4"],
|
|
686
686
|
["skills/lit-pptx/scripts/embed_fonts.py", "4f54c28e05fb205f3f0a48a60fd0adb4e4edb16505aa2e0c36d918dda6c6884c"],
|
|
687
687
|
["skills/lit-pptx/scripts/forbidden-terms.json", "8ef78f42a519c513c9291d8145dedd6180d4130e31553d1036821f1afd61cc81"],
|
|
@@ -701,10 +701,10 @@ export const canonicalSkillResourceManifest = Object.freeze(
|
|
|
701
701
|
["skills/lit-pptx/scripts/lib/runtime-require.js", "0dd3480d6aa9192928f9fc750779b96f4192c0dec67ba040c9b3a6fa7d7ecb78"],
|
|
702
702
|
["skills/lit-pptx/scripts/lib/slide-ast.js", "a4fca91df696b43e5dcffa1b4f6116c8dfe7f8fc13de8c804dda8fbddf1ede9c"],
|
|
703
703
|
["skills/lit-pptx/scripts/lib/spec-validator.js", "0869ff328654de5c8c6eb36a22e9865683ba667b11eba6a85bd3e5428a3fccf3"],
|
|
704
|
-
["skills/lit-pptx/scripts/lib/template-registry.js", "
|
|
704
|
+
["skills/lit-pptx/scripts/lib/template-registry.js", "a90ef33bc2ff0821bc62a49ac6724a6ebee0761de7d95b764c42b73bf82b740f"],
|
|
705
705
|
["skills/lit-pptx/scripts/package.json", "a51bff776fdd53226e2e67d8f654d17dadfe3decc8bf8bf869cba3aff9813826"],
|
|
706
706
|
["skills/lit-pptx/scripts/qa_deck.py", "9186cdb81846b6e3e10a1cdad015a81e08d0bd9cf2294fbcbfff7234431ba98c"],
|
|
707
|
-
["skills/lit-pptx/scripts/validate_pptx.py", "
|
|
707
|
+
["skills/lit-pptx/scripts/validate_pptx.py", "152b4ec92054dd49a71cd112d336a02b92299efa2d5d74eafb44ba68ff64d7b8"],
|
|
708
708
|
["skills/lit-pptx/specs/markdown-slide-spec-v1.md", "000089052be5f6fae073f4378dba296b23951e5e3e1ebcee51934d84594f132a"],
|
|
709
709
|
["skills/lit-pptx/specs/markdown-slide-spec-v2.md", "c2f417ef458f4960eaee50befd12565636ace50d3aa07666be8fa14b6041c91b"],
|
|
710
710
|
["skills/lit-pptx/specs/slide-ast-v1.schema.json", "d5d03fab6569dc00484eca268601b6ac4dce496dfb586c3153693049f8376f1e"],
|
|
@@ -722,14 +722,14 @@ export const canonicalSkillResourceManifest = Object.freeze(
|
|
|
722
722
|
["skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/capabilities.yaml", "fa601f72a8561ffb56b8c006ffab200a86d56b7978b616542fd2d5a551a989b0"],
|
|
723
723
|
["skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/layout-mapping.yaml", "550f1d4d88c3a222648d69cdbef93e09050062c80d544003128b63d8e50a2cde"],
|
|
724
724
|
["skills/lit-pptx/templates/enrolled/BOILERPLATE-PRETENDARD/template.yaml", "92cb5ac639dde5208ed777954b2207752a85a676ea8f280b3db21ce9be537e57"],
|
|
725
|
-
["skills/lit-pptx/templates/tonalities/atlas/pack.yaml", "
|
|
726
|
-
["skills/lit-pptx/templates/tonalities/chalk/pack.yaml", "
|
|
727
|
-
["skills/lit-pptx/templates/tonalities/gazette/pack.yaml", "
|
|
728
|
-
["skills/lit-pptx/templates/tonalities/ledger/pack.yaml", "
|
|
729
|
-
["skills/lit-pptx/templates/tonalities/night/pack.yaml", "
|
|
730
|
-
["skills/lit-pptx/templates/tonalities/paper/pack.yaml", "
|
|
731
|
-
["skills/lit-pptx/templates/tonalities/signal/pack.yaml", "
|
|
732
|
-
["skills/lit-pptx/templates/tonalities/studio/pack.yaml", "
|
|
725
|
+
["skills/lit-pptx/templates/tonalities/atlas/pack.yaml", "9eb26f4796425816ec2691270c6d7a566482b148234bef0e259192726d5ee1a3"],
|
|
726
|
+
["skills/lit-pptx/templates/tonalities/chalk/pack.yaml", "63bf81cb70fa3d7da05611851b998f2db442b6c9119aa338da14115ff635273f"],
|
|
727
|
+
["skills/lit-pptx/templates/tonalities/gazette/pack.yaml", "1c210b4e537b4233647d40c34f9d42cd3564838180f32a964c453a0f8f2ee6b1"],
|
|
728
|
+
["skills/lit-pptx/templates/tonalities/ledger/pack.yaml", "cffb8040e3bf52b115ba03112978fd4a70f4afa873282f0dbf1d06846b51b79e"],
|
|
729
|
+
["skills/lit-pptx/templates/tonalities/night/pack.yaml", "7142a4695e245056a1a38243028c502580b7b075c3c31e78a5512700e2cbf760"],
|
|
730
|
+
["skills/lit-pptx/templates/tonalities/paper/pack.yaml", "81394c9c964e2488f9e3c4c043ec4040efe6c2fde7a468ea7d1c9838b8e373bf"],
|
|
731
|
+
["skills/lit-pptx/templates/tonalities/signal/pack.yaml", "c4c92302e739b1a9f4fde25b2961272207a56a943cb8dde94cbd3a401b05a7d8"],
|
|
732
|
+
["skills/lit-pptx/templates/tonalities/studio/pack.yaml", "ac3164e0333a51282c7c612eccaffbd3144e65e878731304c06f9c5b3cf1da60"],
|
|
733
733
|
["skills/lit-team/SKILL.md", "6d4ca726d1240db7692ccc95802ab6abfd45588147ec663dafa1b3b233a08a13"],
|
|
734
734
|
["skills/lit-team/scripts/team.mjs", "a0be61f09cc1c10989b12709135ac4b99260496f840dcf58514478082e239fe7"],
|
|
735
735
|
["skills/lit-typographic-motion/SKILL.md", "df3fcd7e8c91b9d617cebf0a466ee169f1155d5544984bbfc753f20322491a52"],
|
|
@@ -12,8 +12,8 @@ type, squeezing leading or loosening a gate threshold is never the fix.
|
|
|
12
12
|
|
|
13
13
|
The user's standing preference is high density: pages carry information to the bottom and there are
|
|
14
14
|
no airy layouts unless the user asks for one. Every pack's default density is between 8 and 9 (Report
|
|
15
|
-
9, Brief 9, Manual 9, Proposal 8, Memo 9, Journal 9), and
|
|
16
|
-
(
|
|
15
|
+
9, Brief 9, Manual 9, Proposal 8, Memo 9, Journal 9), and body pages aim at a median fill of 0.80
|
|
16
|
+
(0.75 in a Proposal, because a proposal may give a page to a figure). The skill may move density by up to 2
|
|
17
17
|
from the pack default without asking and writes the move on the direction card; going below 7 needs
|
|
18
18
|
the user's word.
|
|
19
19
|
|
|
@@ -133,7 +133,7 @@ the gate on a tonality document:
|
|
|
133
133
|
| `component.variety` | a document of four or more pages built with a tonality uses at least two component kinds (a cover or title-block directive counts) |
|
|
134
134
|
| `heading.declarative` | headings, the title and the subtitle are noun-phrase labels, not sentences (structural; runs without `--layout` too) |
|
|
135
135
|
|
|
136
|
-
The median fill is reported
|
|
136
|
+
The median fill is reported (`fill_median`), not failed. A page found by a check is named
|
|
137
137
|
with its number; open that page before changing anything.
|
|
138
138
|
|
|
139
139
|
### The restraint checks (A4.11)
|
|
@@ -72,7 +72,7 @@ Values at the pack default (density 9, variance 3), from `templates/tonalities/b
|
|
|
72
72
|
| Running head | folio only, footer right, 8.5 pt muted |
|
|
73
73
|
| Components | callout (one at most), columns |
|
|
74
74
|
| Figures | at most 0.40 of the frame height |
|
|
75
|
-
| Fill | no body page under 0.35 except the last
|
|
75
|
+
| Fill | no body page under 0.35 except the last (`fill.page`) |
|
|
76
76
|
|
|
77
77
|
**Dials.** Density 9 is the pack's working point. Density 10 closes the top margin to 24 mm, which buys
|
|
78
78
|
a few lines for a brief that spills onto an extra page; cutting a sentence is usually better. Density 7
|
|
@@ -71,7 +71,7 @@ has no accent: `accent_on` is empty, so the title rule and the callout rule are
|
|
|
71
71
|
| Running head | header: short title left, folio right, 8.5 pt muted |
|
|
72
72
|
| Components | callout only |
|
|
73
73
|
| Figures | at most 0.40 of the frame height, sized to the column width |
|
|
74
|
-
| Fill | no body page under 0.35
|
|
74
|
+
| Fill | no body page under 0.35 (`fill.page`) |
|
|
75
75
|
|
|
76
76
|
**Dials.** Density 7 opens the margins to 27/29/27/27 mm and the pitch to 137 % Latin and 180 % Hangul,
|
|
77
77
|
for a white paper meant to be printed; the columns get narrower, so check that three-column tables
|
|
@@ -76,7 +76,7 @@ Values at the pack default (density 9, variance 6), from `templates/tonalities/m
|
|
|
76
76
|
| Running head | header: short title left; footer: folio right; 8.5 pt muted |
|
|
77
77
|
| Components | callout, sidebar, columns (three kinds at most) |
|
|
78
78
|
| Figures | at most 0.45 of the frame height |
|
|
79
|
-
| Fill | no body page under 0.35
|
|
79
|
+
| Fill | no body page under 0.35 (`fill.page`) |
|
|
80
80
|
|
|
81
81
|
**Dials.** Density 7 opens the margins to 27/29/27/27 mm and the Hangul pitch to 180 %: for a guide used
|
|
82
82
|
at a bench, where a looser line helps the reader find their place again. Density 10 closes the top
|
|
@@ -71,7 +71,7 @@ no accent: the palette is ink, muted ink and a grey rule only.
|
|
|
71
71
|
| Running head | folio from page 2, footer right, muted |
|
|
72
72
|
| Components | none |
|
|
73
73
|
| Figures | at most 0.40 of the frame height |
|
|
74
|
-
| Fill | no page under 0.35 except the last
|
|
74
|
+
| Fill | no page under 0.35 except the last (`fill.page`); a memo never spills onto a second page it fills under a quarter of the frame (`memo.fit`) |
|
|
75
75
|
|
|
76
76
|
A memo stays on one page when its content allows: the pack's `spacing: tight` sets the tokens above,
|
|
77
77
|
and the page check `memo.fit` (qa_docx.py --layout) fails a memo that spills less than a quarter of a
|
|
@@ -66,7 +66,7 @@ Values at the pack default (density 8, variance 6), from `templates/tonalities/p
|
|
|
66
66
|
| Running head | folio centred at the foot, 8.5 / 9 pt muted; none on the cover |
|
|
67
67
|
| Components | keyfigures, callout (one at most), columns |
|
|
68
68
|
| Figures | at most 0.60 of the frame height |
|
|
69
|
-
| Fill | no body page under 0.35
|
|
69
|
+
| Fill | no body page under 0.35 (`fill.page`) |
|
|
70
70
|
|
|
71
71
|
**Dials.** Density 6 or 7 opens the margins to 27/29/27/27 mm and the Hangul pitch to 180 %, for a
|
|
72
72
|
printed proposal handed over in a meeting. Density 10 closes them to 24/26/25/25 mm for a proposal held
|
|
@@ -82,7 +82,7 @@ Values at the pack default (density 9, variance 5), read from `templates/tonalit
|
|
|
82
82
|
| Running head | footer: short title left, folio right, 8.5 pt muted |
|
|
83
83
|
| Components | keyfigures, callout, columns (three kinds at most) |
|
|
84
84
|
| Figures | at most 0.45 of the text-frame height |
|
|
85
|
-
| Fill | no body page under 0.35
|
|
85
|
+
| Fill | no body page under 0.35 (`fill.page`) |
|
|
86
86
|
|
|
87
87
|
**Dials.** Density moves margins and leading together: density 10 closes the margins to 24/26/25/25 mm
|
|
88
88
|
for a report a page over its limit; density 7 opens them to 27/29/27/27 mm with a Hangul pitch of 180 %.
|
|
@@ -59,7 +59,7 @@ LABELS = {
|
|
|
59
59
|
}
|
|
60
60
|
PACK_KEYS = {"schema_version", "tonality", "summary", "dials", "docx", "design"}
|
|
61
61
|
DESIGN_KEYS = {"ramp", "numbering", "h1_rule", "title_block", "contents", "summary_form", "conclusion_first", "running_head", "justify",
|
|
62
|
-
"palette", "accent_on", "page_geometry", "components", "figure_style", "
|
|
62
|
+
"palette", "accent_on", "page_geometry", "components", "figure_style", "spacing"}
|
|
63
63
|
ACCENT_PLACES = ("title_rule", "callout_rule", "sidebar_rule")
|
|
64
64
|
DIRECTIVE_KEYS = {
|
|
65
65
|
"cover": {"variant", "image", "kicker"},
|
|
@@ -41,8 +41,8 @@ These values are read from the pack file `pack.yaml` of the `atlas` tonality.
|
|
|
41
41
|
| density / variance | 10 / 7 |
|
|
42
42
|
| radius / edge | 0 / fill |
|
|
43
43
|
| table | light grid: no header fill, bold ink header, hairline rows, no banding, numbers right-aligned, totals bold |
|
|
44
|
-
| chart | hairline gridlines, direct labels, accent on the item that matters
|
|
45
|
-
| image |
|
|
44
|
+
| chart | hairline gridlines, direct labels, accent on the item that matters |
|
|
45
|
+
| image | no frame |
|
|
46
46
|
| decoration | caption band, hairline rule, colour field |
|
|
47
47
|
|
|
48
48
|
## Treatments by slide role
|
|
@@ -41,7 +41,7 @@ These values are read from the pack file `pack.yaml` of the `chalk` tonality.
|
|
|
41
41
|
| radius / edge | 6 / fill |
|
|
42
42
|
| rail | the side rail is a field-coloured fill |
|
|
43
43
|
| table | header row in the accent tint with deep-accent bold text, hairline rules between rows, no banding, numbers right-aligned, totals bold |
|
|
44
|
-
| chart | hairline gridlines, direct labels, accent on the item that matters and muted colours on the rest
|
|
44
|
+
| chart | hairline gridlines, direct labels, accent on the item that matters and muted colours on the rest |
|
|
45
45
|
| decoration | accent rule, marked term underline, rail fill, numeral |
|
|
46
46
|
|
|
47
47
|
The marked-term underline is listed in the pack but the engine does not draw it yet, so mark the
|
|
@@ -41,7 +41,7 @@ Read from the pack file; these are the values the engine draws.
|
|
|
41
41
|
| density / variance | 10 / 4 |
|
|
42
42
|
| radius / edge | 0 / fill and border |
|
|
43
43
|
| table | header-fill style, field header with on-field text, a grid on every cell, the first column shaded, bold totals |
|
|
44
|
-
| chart | hairline gridlines, direct labels, accent on the highlighted series
|
|
44
|
+
| chart | hairline gridlines, direct labels, accent on the highlighted series |
|
|
45
45
|
|
|
46
46
|
Density 10 is the compact step every pack now starts from: 24 pt side margins, body 13 pt with no
|
|
47
47
|
step-up, table rows from 18 pt and up to 22 lines per text column, titles close over the body. Variance 4 allows exactly three title treatments in a deck. That is deliberate: a briefing repeats
|
|
@@ -40,7 +40,7 @@ Read from the pack file; these are the values the engine draws.
|
|
|
40
40
|
| density / variance | 10 / 5 |
|
|
41
41
|
| radius / edge | 0 / fill |
|
|
42
42
|
| table | ledger style, header in the field colour with on-field text, rules under the header and above totals, bold totals |
|
|
43
|
-
| chart | hairline gridlines, direct labels, accent on the highlighted series over muted ones
|
|
43
|
+
| chart | hairline gridlines, direct labels, accent on the highlighted series over muted ones |
|
|
44
44
|
|
|
45
45
|
Density 10 puts the deck on the compact grid (24 pt side margins) and the compact ramp: body 13 pt,
|
|
46
46
|
table cells and captions 11 pt, sources 9 pt, rows from 18 pt, up to 22 lines in a text column, no
|
|
@@ -39,8 +39,8 @@ These values are read from the pack file `pack.yaml` of the `night` tonality.
|
|
|
39
39
|
| ramp / hero | compact (body 13 pt, labels 11, sources 9) / not allowed, figures at most title size |
|
|
40
40
|
| density / variance | 10 / 6 |
|
|
41
41
|
| radius / edge | 6 / fill |
|
|
42
|
-
| table | header row on the surface colour with bold ink, hairline rows, no banding, numbers right-aligned
|
|
43
|
-
| chart | hairline gridlines, direct labels, accent on the item that matters and muted colours on the rest
|
|
42
|
+
| table | header row on the surface colour with bold ink, hairline rows, no banding, numbers right-aligned, totals bold, the row the title names in the accent tint |
|
|
43
|
+
| chart | hairline gridlines, direct labels, accent on the item that matters and muted colours on the rest |
|
|
44
44
|
| decoration | header band, hairline rule, numeral, rail fill |
|
|
45
45
|
|
|
46
46
|
## Treatments by slide role
|
|
@@ -39,8 +39,8 @@ These values are read from the pack file `pack.yaml` of the `paper` tonality.
|
|
|
39
39
|
| ramp / hero | compact (body 13 pt, labels 11, sources 9) / no hero step, figures at most title size |
|
|
40
40
|
| density / variance | 10 / 5 |
|
|
41
41
|
| radius / edge | 0 / border |
|
|
42
|
-
| table | booktabs: heavy rule over the header, light rule under it, heavy rule at the end; no fill, no banding; numbers right-aligned
|
|
43
|
-
| chart | hairline gridlines, direct labels, series in order (the proposed method takes the accent, baselines take ink and muted ink)
|
|
42
|
+
| table | booktabs: heavy rule over the header, light rule under it, heavy rule at the end; no fill, no banding; numbers right-aligned; totals bold |
|
|
43
|
+
| chart | hairline gridlines, direct labels, series in order (the proposed method takes the accent, baselines take ink and muted ink) |
|
|
44
44
|
| decoration | hairline rule, box outline |
|
|
45
45
|
|
|
46
46
|
Negative values share the muted ink on purpose: a drop is shown with a sign and a glyph, never with
|
|
@@ -39,7 +39,7 @@ The values below come from the pack file and are what the engine draws.
|
|
|
39
39
|
| density / variance | 10 / 6 |
|
|
40
40
|
| radius / edge | 0 / fill |
|
|
41
41
|
| table | open style, no header fill, rules at top and bottom, protagonist row in accent-tint, bold totals |
|
|
42
|
-
| chart | no gridlines, direct labels, accent on the highlighted bar over muted bars
|
|
42
|
+
| chart | no gridlines, direct labels, accent on the highlighted bar over muted bars |
|
|
43
43
|
|
|
44
44
|
Density 10 sets the pitch on the compact grid (24 pt side margins), body 13 pt and no step-up: a
|
|
45
45
|
pitch read after the meeting carries its basis and sources on every slide. Lower it to 8 (body 14 pt,
|
|
@@ -38,7 +38,7 @@ Read from the pack file; these are the values the engine draws.
|
|
|
38
38
|
| density / variance | 10 / 8 |
|
|
39
39
|
| radius / edge | 0 / fill |
|
|
40
40
|
| table | open style, no header fill, a 2 pt ink rule under the header, no row rules, bold totals |
|
|
41
|
-
| chart | no gridlines, direct labels, accent on the highlighted series over muted ones
|
|
41
|
+
| chart | no gridlines, direct labels, accent on the highlighted series over muted ones |
|
|
42
42
|
|
|
43
43
|
Density 10 puts the deck on the compact grid with body 13 pt. Variance 8 lets one deck mix up to five
|
|
44
44
|
title treatments, which is the point of this direction.
|
|
@@ -370,7 +370,7 @@ ZONE_OF = {"top-rule": "top", "top-plain-large": "top", "kicker-numeral": "top",
|
|
|
370
370
|
OUTPUT = {
|
|
371
371
|
"tol": 2.0, "size_tol": 0.5,
|
|
372
372
|
"min_slides": 8, "min_treatments": 3,
|
|
373
|
-
"
|
|
373
|
+
"variety_cap": 5, "max_share": 0.40,
|
|
374
374
|
"band_floor": 486.0, "footer_top": 492.0, "band_deck_max": 0.20,
|
|
375
375
|
# Per-slide band caps by density (1-2, 3-4, 5-6, 7-8, 9-10); a slide over its cap is MEDIUM.
|
|
376
376
|
"band_caps": ((2, 0.28), (4, 0.24), (6, 0.20), (8, 0.16), (10, 0.12)),
|
|
@@ -470,7 +470,7 @@ function validatePack(pack, file) {
|
|
|
470
470
|
need(typeof pack.intent === "string" && pack.intent.length > 0, "intent is missing");
|
|
471
471
|
need(isList(pack.canvas) && pack.canvas.length > 0 && pack.canvas.every((c) => grid.CANVAS[c]), "canvas must list 16:9 and/or 4:3");
|
|
472
472
|
// `faces` is the deck's default and is Pretendard only; `faces-a2z` applies when the source asks.
|
|
473
|
-
for (const key of ["faces", "faces-
|
|
473
|
+
for (const key of ["faces", "faces-a2z"]) {
|
|
474
474
|
if (key === "faces-a2z" && pack[key] == null) continue;
|
|
475
475
|
const faces = pack[key] || {};
|
|
476
476
|
for (const role of FACE_KEYS) {
|
|
@@ -61,13 +61,16 @@ def _load_terms() -> tuple[list[str], list[str], bool, bool]:
|
|
|
61
61
|
)
|
|
62
62
|
|
|
63
63
|
|
|
64
|
-
def _build_regex(terms: list[str], case_insensitive: bool, whole_word: bool) -> re.Pattern[str] | None:
|
|
64
|
+
def _build_regex(terms: list[str], case_insensitive: bool, whole_word: bool, single_words: bool = False) -> re.Pattern[str] | None:
|
|
65
65
|
if not terms:
|
|
66
66
|
return None
|
|
67
67
|
# An acronym (RAM, FTO) is a word in capitals: matched as that word, so "diagram" or "program"
|
|
68
|
-
# does not contain it.
|
|
68
|
+
# does not contain it. With single_words a term that is one Latin word (todo, tbd) is matched as
|
|
69
|
+
# that word or its plural (TODOs), so "Mastodon" or "photodocument" does not contain it. Every
|
|
70
|
+
# other term keeps the file's case and word settings.
|
|
69
71
|
acronyms = [term for term in terms if re.fullmatch(r"[A-Z]{2,5}", term)]
|
|
70
|
-
escaped = [re.escape(term)
|
|
72
|
+
escaped = [rf"(?<![A-Za-z]){re.escape(term)}s?(?![A-Za-z])" if single_words and re.fullmatch(r"[A-Za-z]+", term) else re.escape(term)
|
|
73
|
+
for term in terms if term not in acronyms]
|
|
71
74
|
pattern = "|".join(escaped)
|
|
72
75
|
if whole_word and pattern:
|
|
73
76
|
pattern = rf"(?:(?<=\W)|^)(?:{pattern})(?:(?=\W)|$)"
|
|
@@ -147,7 +150,7 @@ def _slide_has_title(slide, slide_height: int | None) -> bool:
|
|
|
147
150
|
def lint(path: str | Path) -> dict[str, Any]:
|
|
148
151
|
prs = Presentation(str(path))
|
|
149
152
|
hard_terms, soft_terms, case_insensitive, whole_word = _load_terms()
|
|
150
|
-
hard_re = _build_regex(hard_terms, case_insensitive, whole_word)
|
|
153
|
+
hard_re = _build_regex(hard_terms, case_insensitive, whole_word, single_words=True)
|
|
151
154
|
soft_re = _build_regex(soft_terms, case_insensitive, whole_word)
|
|
152
155
|
|
|
153
156
|
missing_titles: list[int] = []
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Regular
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Regular
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Regular
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: A2Z Light
|
|
25
19
|
title: Pretendard Bold
|
|
@@ -47,8 +41,6 @@ hero: false
|
|
|
47
41
|
type-voice:
|
|
48
42
|
title-tracking: 0
|
|
49
43
|
display-tracking: -1
|
|
50
|
-
latin-case: sentence
|
|
51
|
-
figures: proportional
|
|
52
44
|
|
|
53
45
|
density: 10
|
|
54
46
|
variance: 7
|
|
@@ -80,21 +72,16 @@ sections: [section-image, section-field]
|
|
|
80
72
|
closings: [closing-contact-split, closing-ask]
|
|
81
73
|
|
|
82
74
|
table:
|
|
83
|
-
style: light-grid
|
|
84
75
|
header: none
|
|
85
76
|
header-ink: ink
|
|
86
77
|
rules: rows
|
|
87
78
|
banding: none
|
|
88
|
-
numbers: right-tabular
|
|
89
79
|
totals: bold
|
|
90
80
|
chart:
|
|
91
81
|
gridlines: hairline
|
|
92
82
|
labels: direct
|
|
93
83
|
highlight: accent-on-muted
|
|
94
|
-
annotation: off
|
|
95
84
|
image:
|
|
96
|
-
bleed: allowed
|
|
97
|
-
crop: allowed
|
|
98
85
|
frame: none
|
|
99
86
|
|
|
100
87
|
fill-order: [anchor-visual, change-family, distribute, step-up]
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Bold
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Bold
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Bold
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: A2Z Bold
|
|
25
19
|
title: A2Z Bold
|
|
@@ -47,8 +41,6 @@ hero: false
|
|
|
47
41
|
type-voice:
|
|
48
42
|
title-tracking: -1
|
|
49
43
|
display-tracking: -1
|
|
50
|
-
latin-case: sentence
|
|
51
|
-
figures: proportional
|
|
52
44
|
|
|
53
45
|
density: 10
|
|
54
46
|
variance: 6
|
|
@@ -86,21 +78,16 @@ sections: [section-numeral, section-rail]
|
|
|
86
78
|
closings: [closing-summary-list, closing-ask]
|
|
87
79
|
|
|
88
80
|
table:
|
|
89
|
-
style: header-fill
|
|
90
81
|
header: accent-tint
|
|
91
82
|
header-ink: accent-deep
|
|
92
83
|
rules: rows
|
|
93
84
|
banding: none
|
|
94
|
-
numbers: right-tabular
|
|
95
85
|
totals: bold
|
|
96
86
|
chart:
|
|
97
87
|
gridlines: hairline
|
|
98
88
|
labels: direct
|
|
99
89
|
highlight: accent-on-muted
|
|
100
|
-
annotation: on
|
|
101
90
|
image:
|
|
102
|
-
bleed: side-only
|
|
103
|
-
crop: none
|
|
104
91
|
frame: none
|
|
105
92
|
|
|
106
93
|
fill-order: [distribute, step-up, change-family, anchor-visual]
|
|
@@ -15,12 +15,6 @@ faces:
|
|
|
15
15
|
body: Pretendard Regular
|
|
16
16
|
label: Pretendard Regular
|
|
17
17
|
numeral: Pretendard Bold
|
|
18
|
-
faces-pretendard-only:
|
|
19
|
-
display: Pretendard Bold
|
|
20
|
-
title: Pretendard Bold
|
|
21
|
-
body: Pretendard Regular
|
|
22
|
-
label: Pretendard Regular
|
|
23
|
-
numeral: Pretendard Bold
|
|
24
18
|
faces-a2z:
|
|
25
19
|
display: A2Z Bold
|
|
26
20
|
title: Pretendard Bold
|
|
@@ -48,8 +42,6 @@ hero: false
|
|
|
48
42
|
type-voice:
|
|
49
43
|
title-tracking: -1
|
|
50
44
|
display-tracking: -1
|
|
51
|
-
latin-case: sentence
|
|
52
|
-
figures: tabular
|
|
53
45
|
|
|
54
46
|
density: 10
|
|
55
47
|
variance: 4
|
|
@@ -81,21 +73,16 @@ sections: [section-band, section-rule]
|
|
|
81
73
|
closings: [closing-decision-box, closing-ask]
|
|
82
74
|
|
|
83
75
|
table:
|
|
84
|
-
style: header-fill
|
|
85
76
|
header: field
|
|
86
77
|
header-ink: on-field
|
|
87
78
|
rules: grid
|
|
88
79
|
banding: surface
|
|
89
|
-
numbers: right-tabular
|
|
90
80
|
totals: bold
|
|
91
81
|
chart:
|
|
92
82
|
gridlines: hairline
|
|
93
83
|
labels: direct
|
|
94
84
|
highlight: accent-on-muted
|
|
95
|
-
annotation: off
|
|
96
85
|
image:
|
|
97
|
-
bleed: none
|
|
98
|
-
crop: none
|
|
99
86
|
frame: hairline
|
|
100
87
|
|
|
101
88
|
fill-order: [step-up, distribute, change-family, anchor-visual]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
# Ledger: a set of accounts made readable. Small, exact type,
|
|
2
|
-
#
|
|
1
|
+
# Ledger: a set of accounts made readable. Small, exact type, right-aligned
|
|
2
|
+
# numbers, tables and KPI rows doing most of the talking; colour marks only "this
|
|
3
3
|
# period" and the one figure that matters. Wrong for a live pitch with little data
|
|
4
4
|
# or for a briefing that is read as prose.
|
|
5
5
|
id: ledger
|
|
@@ -15,12 +15,6 @@ faces:
|
|
|
15
15
|
body: Pretendard Regular
|
|
16
16
|
label: Pretendard Regular
|
|
17
17
|
numeral: Pretendard Bold
|
|
18
|
-
faces-pretendard-only:
|
|
19
|
-
display: Pretendard Bold
|
|
20
|
-
title: Pretendard Bold
|
|
21
|
-
body: Pretendard Regular
|
|
22
|
-
label: Pretendard Regular
|
|
23
|
-
numeral: Pretendard Bold
|
|
24
18
|
faces-a2z:
|
|
25
19
|
display: A2Z Bold
|
|
26
20
|
title: Pretendard Bold
|
|
@@ -48,8 +42,6 @@ hero: false
|
|
|
48
42
|
type-voice:
|
|
49
43
|
title-tracking: -1
|
|
50
44
|
display-tracking: -1
|
|
51
|
-
latin-case: sentence
|
|
52
|
-
figures: tabular
|
|
53
45
|
|
|
54
46
|
density: 10
|
|
55
47
|
variance: 5
|
|
@@ -81,22 +73,17 @@ sections: [section-rule, section-numeral]
|
|
|
81
73
|
closings: [closing-decision-box, closing-ask]
|
|
82
74
|
|
|
83
75
|
table:
|
|
84
|
-
style: ledger
|
|
85
76
|
# The header row is the ledger's one dark mass: deep field, white labels.
|
|
86
77
|
header: field
|
|
87
78
|
header-ink: on-field
|
|
88
79
|
rules: header-and-totals
|
|
89
80
|
banding: none
|
|
90
|
-
numbers: right-tabular
|
|
91
81
|
totals: bold
|
|
92
82
|
chart:
|
|
93
83
|
gridlines: hairline
|
|
94
84
|
labels: direct
|
|
95
85
|
highlight: accent-on-muted
|
|
96
|
-
annotation: on
|
|
97
86
|
image:
|
|
98
|
-
bleed: side-only
|
|
99
|
-
crop: none
|
|
100
87
|
frame: hairline
|
|
101
88
|
|
|
102
89
|
fill-order: [step-up, distribute, anchor-visual, change-family]
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Regular
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Bold
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Regular
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: Pretendard Bold
|
|
25
19
|
title: Pretendard Bold
|
|
@@ -47,8 +41,6 @@ hero: false
|
|
|
47
41
|
type-voice:
|
|
48
42
|
title-tracking: -1
|
|
49
43
|
display-tracking: -2
|
|
50
|
-
latin-case: sentence
|
|
51
|
-
figures: tabular
|
|
52
44
|
|
|
53
45
|
density: 10
|
|
54
46
|
variance: 6
|
|
@@ -80,22 +72,17 @@ sections: [section-numeral, section-field]
|
|
|
80
72
|
closings: [closing-statement, closing-decision-box]
|
|
81
73
|
|
|
82
74
|
table:
|
|
83
|
-
style: header-fill
|
|
84
75
|
header: surface
|
|
85
76
|
header-ink: ink
|
|
86
77
|
rules: rows
|
|
87
78
|
banding: none
|
|
88
|
-
numbers: right-tabular
|
|
89
79
|
totals: bold
|
|
90
80
|
protagonist: accent-tint
|
|
91
81
|
chart:
|
|
92
82
|
gridlines: hairline
|
|
93
83
|
labels: direct
|
|
94
84
|
highlight: accent-on-muted
|
|
95
|
-
annotation: on
|
|
96
85
|
image:
|
|
97
|
-
bleed: side-only
|
|
98
|
-
crop: allowed
|
|
99
86
|
frame: none
|
|
100
87
|
|
|
101
88
|
fill-order: [anchor-visual, step-up, distribute, change-family]
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Regular
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Bold
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Regular
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: Pretendard Bold
|
|
25
19
|
title: Pretendard Bold
|
|
@@ -47,8 +41,6 @@ hero: false
|
|
|
47
41
|
type-voice:
|
|
48
42
|
title-tracking: 0
|
|
49
43
|
display-tracking: -1
|
|
50
|
-
latin-case: sentence
|
|
51
|
-
figures: tabular
|
|
52
44
|
|
|
53
45
|
density: 10
|
|
54
46
|
variance: 5
|
|
@@ -86,21 +78,16 @@ sections: [section-rule, section-field]
|
|
|
86
78
|
closings: [closing-summary-list, closing-ask]
|
|
87
79
|
|
|
88
80
|
table:
|
|
89
|
-
style: booktabs
|
|
90
81
|
header: none
|
|
91
82
|
header-ink: ink
|
|
92
83
|
rules: booktabs
|
|
93
84
|
banding: none
|
|
94
|
-
numbers: right-tabular
|
|
95
85
|
totals: bold
|
|
96
86
|
chart:
|
|
97
87
|
gridlines: hairline
|
|
98
88
|
labels: direct
|
|
99
89
|
highlight: series-order
|
|
100
|
-
annotation: off
|
|
101
90
|
image:
|
|
102
|
-
bleed: none
|
|
103
|
-
crop: none
|
|
104
91
|
frame: none
|
|
105
92
|
|
|
106
93
|
fill-order: [anchor-visual, distribute, step-up, change-family]
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Bold
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Bold
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Bold
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: A2Z Black
|
|
25
19
|
title: A2Z Bold
|
|
@@ -48,8 +42,6 @@ hero: false
|
|
|
48
42
|
type-voice:
|
|
49
43
|
title-tracking: -1
|
|
50
44
|
display-tracking: -2
|
|
51
|
-
latin-case: sentence
|
|
52
|
-
figures: proportional
|
|
53
45
|
|
|
54
46
|
density: 10
|
|
55
47
|
variance: 6
|
|
@@ -81,22 +73,17 @@ sections: [section-field, section-numeral]
|
|
|
81
73
|
closings: [closing-statement, closing-ask]
|
|
82
74
|
|
|
83
75
|
table:
|
|
84
|
-
style: open
|
|
85
76
|
header: none
|
|
86
77
|
header-ink: ink
|
|
87
78
|
rules: top-bottom
|
|
88
79
|
banding: none
|
|
89
|
-
numbers: right-tabular
|
|
90
80
|
totals: bold
|
|
91
81
|
protagonist: accent-tint
|
|
92
82
|
chart:
|
|
93
83
|
gridlines: none
|
|
94
84
|
labels: direct
|
|
95
85
|
highlight: accent-on-muted
|
|
96
|
-
annotation: on
|
|
97
86
|
image:
|
|
98
|
-
bleed: allowed
|
|
99
|
-
crop: allowed
|
|
100
87
|
frame: none
|
|
101
88
|
|
|
102
89
|
fill-order: [step-up, change-family, anchor-visual, distribute]
|
|
@@ -14,12 +14,6 @@ faces:
|
|
|
14
14
|
body: Pretendard Regular
|
|
15
15
|
label: Pretendard Regular
|
|
16
16
|
numeral: Pretendard Bold
|
|
17
|
-
faces-pretendard-only:
|
|
18
|
-
display: Pretendard Bold
|
|
19
|
-
title: Pretendard Bold
|
|
20
|
-
body: Pretendard Regular
|
|
21
|
-
label: Pretendard Regular
|
|
22
|
-
numeral: Pretendard Bold
|
|
23
17
|
faces-a2z:
|
|
24
18
|
display: A2Z Black
|
|
25
19
|
title: A2Z Medium
|
|
@@ -47,8 +41,6 @@ hero: false
|
|
|
47
41
|
type-voice:
|
|
48
42
|
title-tracking: -1
|
|
49
43
|
display-tracking: -2
|
|
50
|
-
latin-case: sentence
|
|
51
|
-
figures: proportional
|
|
52
44
|
|
|
53
45
|
density: 10
|
|
54
46
|
variance: 8
|
|
@@ -80,21 +72,16 @@ sections: [section-numeral, section-rail]
|
|
|
80
72
|
closings: [closing-contact-split, closing-summary-list]
|
|
81
73
|
|
|
82
74
|
table:
|
|
83
|
-
style: open
|
|
84
75
|
header: none
|
|
85
76
|
header-ink: ink
|
|
86
77
|
rules: header-rule
|
|
87
78
|
banding: none
|
|
88
|
-
numbers: right-tabular
|
|
89
79
|
totals: bold
|
|
90
80
|
chart:
|
|
91
81
|
gridlines: none
|
|
92
82
|
labels: direct
|
|
93
83
|
highlight: accent-on-muted
|
|
94
|
-
annotation: on
|
|
95
84
|
image:
|
|
96
|
-
bleed: allowed
|
|
97
|
-
crop: allowed
|
|
98
85
|
frame: none
|
|
99
86
|
|
|
100
87
|
fill-order: [change-family, step-up, anchor-visual, distribute]
|