@litfamily/litgrok 1.0.15 → 1.0.16

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.
Files changed (36) hide show
  1. package/.grok/skills/lit-docx/references/tonalities/proposal.md +0 -1
  2. package/.grok/skills/lit-docx/scripts/docx_design.py +1 -1
  3. package/.grok/skills/lit-docx/templates/tonalities/brief.yaml +0 -1
  4. package/.grok/skills/lit-docx/templates/tonalities/journal.yaml +0 -1
  5. package/.grok/skills/lit-docx/templates/tonalities/manual.yaml +0 -1
  6. package/.grok/skills/lit-docx/templates/tonalities/memo.yaml +0 -1
  7. package/.grok/skills/lit-docx/templates/tonalities/proposal.yaml +0 -1
  8. package/.grok/skills/lit-docx/templates/tonalities/report.yaml +0 -1
  9. package/.grok/skills/lit-pptx/FORBIDDEN_TERMS.json +55 -0
  10. package/.grok/skills/lit-pptx/references/tonalities/atlas.md +2 -5
  11. package/.grok/skills/lit-pptx/references/tonalities/chalk.md +1 -3
  12. package/.grok/skills/lit-pptx/references/tonalities/gazette.md +1 -3
  13. package/.grok/skills/lit-pptx/references/tonalities/ledger.md +4 -6
  14. package/.grok/skills/lit-pptx/references/tonalities/night.md +3 -6
  15. package/.grok/skills/lit-pptx/references/tonalities/paper.md +3 -5
  16. package/.grok/skills/lit-pptx/references/tonalities/signal.md +3 -5
  17. package/.grok/skills/lit-pptx/references/tonalities/studio.md +3 -5
  18. package/.grok/skills/lit-pptx/scripts/lib/template-registry.js +3 -4
  19. package/.grok/skills/lit-pptx/scripts/validate_pptx.py +9 -4
  20. package/.grok/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +0 -20
  21. package/.grok/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +0 -19
  22. package/.grok/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +0 -20
  23. package/.grok/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +2 -22
  24. package/.grok/skills/lit-pptx/templates/tonalities/night/pack.yaml +0 -20
  25. package/.grok/skills/lit-pptx/templates/tonalities/paper/pack.yaml +0 -20
  26. package/.grok/skills/lit-pptx/templates/tonalities/signal/pack.yaml +0 -21
  27. package/.grok/skills/lit-pptx/templates/tonalities/studio/pack.yaml +0 -20
  28. package/.grok-plugin/plugin.json +1 -1
  29. package/CHANGELOG.md +6 -0
  30. package/README.md +8 -8
  31. package/README_ko-KR.md +8 -8
  32. package/docs/assets/readme/badge-version.svg +1 -1
  33. package/docs/reference.md +1 -1
  34. package/docs/reference_ko-KR.md +1 -1
  35. package/package.json +1 -1
  36. package/plugin.json +1 -1
@@ -42,7 +42,6 @@ Worked examples: `examples/04-proposal-ko.md` (cover and 3 body pages) and `exam
42
42
  | Accent on | title rule, callout rules |
43
43
  | Components | keyfigures (3 per row), callout (at most one), columns |
44
44
  | Figures | at most 0.60 of the frame high |
45
- | Fill target | median 0.75 |
46
45
 
47
46
  ## Components
48
47
 
@@ -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", "fill", "spacing"}
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"},
@@ -26,4 +26,3 @@ design:
26
26
  allowed: [callout, columns]
27
27
  callout_max: 1
28
28
  figure_style: {max_height_ratio: 0.40}
29
- fill: {min_page_fill: 0.35, target_median_fill: 0.80}
@@ -23,4 +23,3 @@ design:
23
23
  components:
24
24
  allowed: [callout]
25
25
  figure_style: {max_height_ratio: 0.40}
26
- fill: {min_page_fill: 0.35, target_median_fill: 0.80}
@@ -24,4 +24,3 @@ design:
24
24
  allowed: [callout, sidebar, columns]
25
25
  sidebar: {default_width: third, float: right}
26
26
  figure_style: {max_height_ratio: 0.45}
27
- fill: {min_page_fill: 0.35, target_median_fill: 0.80}
@@ -22,6 +22,5 @@ design:
22
22
  components:
23
23
  allowed: []
24
24
  figure_style: {max_height_ratio: 0.40}
25
- fill: {min_page_fill: 0.35, target_median_fill: 0.80}
26
25
  # A memo stays on one page when its content allows: the low end of the line pitch, less heading space.
27
26
  spacing: tight
@@ -24,4 +24,3 @@ design:
24
24
  callout_max: 1
25
25
  keyfigures: {per_row: 3}
26
26
  figure_style: {max_height_ratio: 0.60}
27
- fill: {min_page_fill: 0.35, target_median_fill: 0.75}
@@ -24,4 +24,3 @@ design:
24
24
  allowed: [keyfigures, callout, columns]
25
25
  keyfigures: {per_row: 3}
26
26
  figure_style: {max_height_ratio: 0.45}
27
- fill: {min_page_fill: 0.35, target_median_fill: 0.80}
@@ -0,0 +1,55 @@
1
+ {
2
+ "case_insensitive": true,
3
+ "whole_word": false,
4
+ "terms": [
5
+ "click to add title",
6
+ "click to add subtitle",
7
+ "click to add text",
8
+ "content goes here",
9
+ "your logo",
10
+ "placeholder",
11
+ "lorem ipsum",
12
+ "tbd",
13
+ "fixme",
14
+ "todo",
15
+ "본 슬라이드는",
16
+ "슬라이드 7은",
17
+ "최종본에서 걸러냈다",
18
+ "[자사 확인 필요]",
19
+ "[출처 확인 필요]",
20
+ "[작성 중]"
21
+ ],
22
+ "soft_terms": [
23
+ "revolutionary",
24
+ "cutting-edge",
25
+ "seamless",
26
+ "seamlessly",
27
+ "innovative",
28
+ "world-class",
29
+ "best-in-class",
30
+ "transformative",
31
+ "next-generation",
32
+ "game-changing",
33
+ "state-of-the-art",
34
+ "AI-powered",
35
+ "AI-generated",
36
+ "as an AI",
37
+ "unlock",
38
+ "empower",
39
+ "synergy",
40
+ "holistic",
41
+ "paradigm shift",
42
+ "frictionless",
43
+ "없다는 것이 발견",
44
+ "판이 굳었다",
45
+ "전제로 깐다",
46
+ "닫아야 할 게이트",
47
+ "역전 금지",
48
+ "논문이 없다",
49
+ "RAM",
50
+ "FTO",
51
+ "CNKI",
52
+ "코퍼스",
53
+ "전이원"
54
+ ]
55
+ }
@@ -19,18 +19,15 @@ for a read-alone briefing.
19
19
  | ink / ink-muted / line | `#1A1D21` / `#555B63` / `#D6D9DD` |
20
20
  | accent / accent-deep / accent-tint | `#2B4C7E` / `#1B2F4E` / `#E6ECF4` |
21
21
  | field / on-field | `#1A1D21` / `#FFFFFF` |
22
- | positive / negative | `#1E7A3F` / `#B3261E` |
23
22
  | chart series | `#2B4C7E`, `#555B63`, `#8A6A2E`, `#3E7A5A` |
24
23
  | faces | Pretendard Regular for display and figures, Bold for titles, Regular for body |
25
- | figures | proportional |
26
24
  | radius / edge | 0 / fill |
27
25
 
28
26
  Atlas is the one pack whose display face is Regular: large cover and statement text stays light so
29
27
  the photograph keeps the weight. Density 10, compact ramp. Variance 7 allows all five treatments.
30
28
 
31
- **Pictures** may bleed and crop, with no frame. **Tables** (inside KPI rows) use a light grid of row
32
- rules, no header fill. **Charts**, if a figure is placed as an image, follow hairline gridlines and
33
- direct labels without annotation.
29
+ **Pictures** take no frame. **Tables** (inside KPI rows) use a light grid of row rules, no header
30
+ fill. **Charts**, if a figure is placed as an image, follow hairline gridlines and direct labels.
34
31
 
35
32
  ## Titles by role
36
33
 
@@ -18,16 +18,14 @@ KPI row); and for a timeline, which it cannot draw.
18
18
  | ink / ink-muted / line | `#1F2933` / `#4E5A66` / `#CBD3DA` |
19
19
  | accent / accent-deep / accent-tint | `#9A3412` / `#6B2409` / `#FCEBE0` |
20
20
  | field / on-field | `#1F3B33` / `#FFFFFF` |
21
- | positive / negative | `#1E7A3F` / `#B3261E` |
22
21
  | chart series | `#9A3412`, `#1F3B33`, `#4E5A66`, `#2E6A8E` |
23
22
  | faces | Pretendard Bold for titles, step numerals and display; Regular for body |
24
- | figures | proportional |
25
23
  | radius / edge | 6 pt / fill |
26
24
 
27
25
  Density 10, compact ramp. Variance 6 allows four treatments; the pack has exactly four.
28
26
 
29
27
  **Tables**: header row in the accent tint with deep rust labels, row rules, numbers right-aligned,
30
- totals bold. **Pictures** may bleed on one side only and are not cropped.
28
+ totals bold.
31
29
 
32
30
  ## Titles by role
33
31
 
@@ -19,10 +19,8 @@ a chart nor an image family), and for English read-alone decks, which suit Ledge
19
19
  | ink / ink-muted / line | `#1A2230` / `#4A5568` / `#C8D0DA` |
20
20
  | accent / accent-deep / accent-tint | `#A61B1B` / `#233A4F` / `#E8EEF4` |
21
21
  | field / on-field | `#233A4F` / `#FFFFFF` |
22
- | positive / negative | `#1E7A3F` / `#1A2230` |
23
22
  | chart series | `#A61B1B`, `#233A4F`, `#4A5568`, `#7A6A2A` |
24
23
  | faces | Pretendard Bold for titles and figures, Regular for body and labels |
25
- | figures | tabular |
26
24
  | radius / edge | 0 / fill and border |
27
25
 
28
26
  Density 10, compact ramp. **Variance 4 allows three title treatments**, out of the four the pack
@@ -31,7 +29,7 @@ groups, two columns, a full table, a matrix, a timeline.
31
29
 
32
30
  **Tables**: header in the slate field with white labels, a hairline grid on every cell, the first
33
31
  column shaded with the surface colour, numbers right-aligned, totals bold. Pictures, if forced in,
34
- sit in a hairline frame with no bleed.
32
+ sit in a hairline frame.
35
33
 
36
34
  ## Titles by role
37
35
 
@@ -1,7 +1,7 @@
1
1
  # Ledger
2
2
 
3
3
  Ledger is for decks that are studied line by line: quarterly results, budgets, programme status.
4
- White pages, compact type, tabular figures, tables with a dark header row, and one deep green that
4
+ White pages, compact type, tables with a dark header row, and one deep green that
5
5
  marks the current period or the figure the slide is about. Tables and KPI rows carry the argument;
6
6
  the title only labels it.
7
7
 
@@ -19,19 +19,17 @@ where Gazette's band heads and boxed summary serve the reader better.
19
19
  | ink / ink-muted / line | `#16212C` / `#4B5866` / `#D0D6DC` |
20
20
  | accent / accent-deep / accent-tint | `#0E6B5A` / `#0A4438` / `#E2F0EC` |
21
21
  | field / on-field | `#0A4438` / `#FFFFFF` |
22
- | positive / negative | `#1E7A3F` / `#B3261E` |
23
22
  | chart series | `#0E6B5A`, `#4B5866`, `#9A6A12`, `#2F5F8A` |
24
23
  | faces | Pretendard Bold for titles and figures, Regular for body and labels |
25
- | figures | tabular, so columns of numbers align |
26
24
  | radius / edge | 0 / fill |
27
25
 
28
26
  Density 10 puts Ledger on the compact ramp (body 13 pt, labels 11, sources 9, title 26) with 24 pt
29
27
  margins. Variance 5 allows four title treatments in a deck.
30
28
 
31
29
  **Tables**: header row in the field colour with white labels, rules under the header and over the
32
- totals, no banding, numbers right-aligned and tabular, the totals row bold. **Charts**: hairline
33
- gridlines, direct labels, the accent on the highlighted series and muted ink for the rest, short
34
- annotations allowed. Pictures, if ever used, sit inside a hairline frame and never bleed.
30
+ totals, no banding, numbers right-aligned, the totals row bold. **Charts**: hairline
31
+ gridlines, direct labels, the accent on the highlighted series and muted ink for the rest.
32
+ Pictures, if ever used, sit inside a hairline frame.
35
33
 
36
34
  ## Titles by role
37
35
 
@@ -19,19 +19,16 @@ for running text.
19
19
  | ink / ink-muted / line | `#E8EDF2` / `#A3AEBA` / `#5A6672` |
20
20
  | accent / accent-deep / accent-tint | `#E3A857` / `#F2C98A` / `#2A2418` |
21
21
  | field / on-field | `#1E2A36` / `#F5F7FA` |
22
- | positive / negative | `#6CC08B` / `#F08A7E` |
23
22
  | chart series | `#E3A857`, `#7FB8E0`, `#A3AEBA`, `#C58FD0` |
24
23
  | faces | Pretendard Bold for titles and display, Regular for body and numerals |
25
- | figures | tabular |
26
24
  | radius / edge | 6 pt / fill |
27
25
 
28
26
  On Night `accent-deep` is the lighter amber, because "deep" means the stronger contrast against the
29
27
  ground. Density 10, compact ramp. Variance 6 allows four of the pack's five treatments.
30
28
 
31
- **Tables** (KPI rows, closing tables): header on the surface colour, row rules, numbers right-aligned
32
- and tabular, totals bold; the row named in the title is tinted. **Charts**: hairline gridlines,
33
- direct labels, amber on the highlighted series, annotations allowed. Charts are native, drawn on the
34
- dark ground at full size. Pictures bleed on one side only.
29
+ **Tables** (KPI rows, closing tables): header on the surface colour, row rules, numbers right-aligned,
30
+ totals bold; the row named in the title is tinted. **Charts**: hairline gridlines, direct labels,
31
+ amber on the highlighted series. Charts are native, drawn on the dark ground at full size.
35
32
 
36
33
  ## Titles by role
37
34
 
@@ -18,18 +18,16 @@ timeline or a process, none of which Paper carries.
18
18
  | ink / ink-muted / line | `#111418` / `#50565E` / `#C9CDD2` |
19
19
  | accent / accent-deep / accent-tint | `#8C1C2B` / `#5E121C` / `#F6E6E8` |
20
20
  | field / on-field | `#111418` / `#FFFFFF` |
21
- | positive / negative | `#1E6B3A` / `#50565E` |
22
21
  | chart series | `#8C1C2B`, `#111418`, `#50565E`, `#2E5E8A` (series order, first is the proposed method) |
23
22
  | faces | Pretendard Bold for titles and display, Regular for body and numerals |
24
- | figures | tabular |
25
23
  | radius / edge | 0 / border |
26
24
 
27
25
  Density 10, compact ramp. Variance 5 allows four treatments, which is all Paper has.
28
26
 
29
27
  **Tables**: booktabs (a heavy rule above the header, a light one under it, a heavy one at the foot),
30
- no fills, numbers right-aligned and tabular, totals bold. **Charts**: hairline gridlines, direct
31
- labels, colour by series order with the proposed method first, no annotation. **Pictures** never
32
- bleed, crop or take a frame.
28
+ no fills, numbers right-aligned, totals bold. **Charts**: hairline gridlines, direct
29
+ labels, colour by series order with the proposed method first. **Pictures** take
30
+ no frame.
33
31
 
34
32
  ## Titles by role
35
33
 
@@ -19,18 +19,15 @@ timeline or long itemised text, none of which the pack carries.
19
19
  | ink / ink-muted / line | `#15131A` / `#55525C` / `#D4D4D8` |
20
20
  | accent / accent-deep / accent-tint | `#C8361A` / `#6E1A0C` / `#FBE7E2` |
21
21
  | field / on-field | `#C8361A` / `#FFFFFF` |
22
- | positive / negative | `#1E7A3F` / `#15131A` (a loss keeps the ink and carries its ▼) |
23
22
  | chart series | `#C8361A`, `#15131A`, `#6B6870`, `#2F6F8F` |
24
23
  | faces | Pretendard Bold for display, titles and figures; Regular for body and labels |
25
- | figures | proportional |
26
24
  | radius / edge | 0 / fill |
27
25
 
28
26
  Density 10, compact ramp (title 26, display 36). Variance 6 allows four treatments; the pack has four.
29
27
 
30
- **Tables**: open style, no header fill, a rule above and below, numbers right-aligned, totals bold;
28
+ **Tables**: no header fill, a rule above and below, numbers right-aligned, totals bold;
31
29
  the row whose first cell appears in the title is tinted red-pale as the row the slide is about.
32
- **Charts**: no gridlines, direct labels, the red on the highlighted series, annotations allowed.
33
- **Pictures** may bleed and crop.
30
+ **Charts**: no gridlines, direct labels, the red on the highlighted series.
34
31
 
35
32
  ## Titles by role
36
33
 
@@ -73,6 +70,7 @@ Decoration: colour field, hairline rules, real numerals. No cards.
73
70
  - Red for losses; a loss is ink with ▼.
74
71
  - More than two lines of display text on any slide.
75
72
  - Cards and boxed bullet groups.
73
+ - Bullet lists longer than four items.
76
74
  - A statement slide that holds a claim; claims go in the body of a content slide.
77
75
 
78
76
  ## Two worked slides
@@ -17,17 +17,15 @@ open layouts starve tables (Studio has no table family), and for read-alone brie
17
17
  | ink / ink-muted / line | `#141414` / `#525252` / `#D2D2CE` |
18
18
  | accent / accent-deep / accent-tint | `#8A5A00` / `#4D3200` / `#F5ECD9` |
19
19
  | field / on-field | `#141414` / `#FFFFFF` |
20
- | positive / negative | `#1E7A3F` / `#B3261E` |
21
20
  | chart series | `#8A5A00`, `#141414`, `#525252`, `#3B5F7F` |
22
21
  | faces | Pretendard Bold for titles, display and figures; Regular for body |
23
- | figures | proportional |
24
22
  | radius / edge | 0 / fill |
25
23
 
26
24
  Density 10, compact ramp. **Variance 8 allows all five treatments**, and the engine uses them.
27
25
 
28
- **Tables** (inside KPI rows and timelines): open style, a 2 pt rule under the header, no fills,
29
- numbers right-aligned. **Charts**: no gridlines, direct labels, the ochre on the highlighted series,
30
- annotations allowed. **Pictures** bleed and crop freely, with no frame.
26
+ **Tables** (inside KPI rows and timelines): a 2 pt rule under the header, no fills, numbers
27
+ right-aligned. **Charts**: no gridlines, direct labels, the ochre on the highlighted series.
28
+ **Pictures** take no frame.
31
29
 
32
30
  ## Titles by role
33
31
 
@@ -418,7 +418,7 @@ function listTonalities() {
418
418
  return [...names].sort();
419
419
  }
420
420
 
421
- const PALETTE_ROLES = ["ground", "surface", "ink", "ink-muted", "line", "accent", "accent-deep", "accent-tint", "field", "on-field", "positive", "negative"];
421
+ const PALETTE_ROLES = ["ground", "surface", "ink", "ink-muted", "line", "accent", "accent-deep", "accent-tint", "field", "on-field"];
422
422
  const FACE_KEYS = ["display", "title", "body", "label", "numeral"];
423
423
  const FACES = {
424
424
  "Pretendard Regular": { font: "Pretendard", bold: false },
@@ -443,8 +443,7 @@ const DISPLAY_DEVICES = {
443
443
  };
444
444
  // Contrast pairs every pack must meet (text pairs 4.5:1, large marks 3:1).
445
445
  const CONTRAST_PAIRS = [["ink", "ground", 4.5], ["ink", "surface", 4.5], ["ink-muted", "ground", 4.5], ["ink-muted", "surface", 4.5],
446
- ["accent", "ground", 3.0], ["accent-deep", "accent-tint", 4.5], ["ink", "accent-tint", 4.5], ["on-field", "field", 4.5],
447
- ["positive", "ground", 4.5], ["negative", "ground", 4.5]];
446
+ ["accent", "ground", 3.0], ["accent-deep", "accent-tint", 4.5], ["ink", "accent-tint", 4.5], ["on-field", "field", 4.5]];
448
447
 
449
448
  function luminance(hexColour) {
450
449
  const v = String(hexColour).replace("#", "");
@@ -470,7 +469,7 @@ function validatePack(pack, file) {
470
469
  need(typeof pack.intent === "string" && pack.intent.length > 0, "intent is missing");
471
470
  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
471
  // `faces` is the deck's default and is Pretendard only; `faces-a2z` applies when the source asks.
473
- for (const key of ["faces", "faces-pretendard-only", "faces-a2z"]) {
472
+ for (const key of ["faces", "faces-a2z"]) {
474
473
  if (key === "faces-a2z" && pack[key] == null) continue;
475
474
  const faces = pack[key] || {};
476
475
  for (const role of FACE_KEYS) {
@@ -52,16 +52,21 @@ def _load_terms() -> tuple[list[str], list[str], bool, bool]:
52
52
  )
53
53
 
54
54
 
55
- def _build_regex(terms: list[str], case_insensitive: bool, whole_word: bool) -> re.Pattern[str] | None:
55
+ def _build_regex(terms: list[str], case_insensitive: bool, whole_word: bool, words_as_words: bool = False) -> re.Pattern[str] | None:
56
56
  if not terms:
57
57
  return None
58
58
  # An acronym (RAM, FTO) is a word in capitals: matched as that word, so "diagram" or "program"
59
- # does not contain it. Every other term keeps the file's case and word settings.
59
+ # does not contain it. In the hard list a single Latin word (todo, tbd) is matched as a word or its
60
+ # plural, so "TODOs" fails and "Mastodon" or "photodocument" does not. Phrases, Korean or bracketed
61
+ # terms and the soft list keep the file's settings.
60
62
  acronyms = [term for term in terms if re.fullmatch(r"[A-Z]{2,5}", term)]
61
- escaped = [re.escape(term) for term in terms if term not in acronyms]
63
+ words = [term for term in terms if words_as_words and term not in acronyms and re.fullmatch(r"[A-Za-z]+", term)]
64
+ escaped = [re.escape(term) for term in terms if term not in acronyms and term not in words]
62
65
  pattern = "|".join(escaped)
63
66
  if whole_word and pattern:
64
67
  pattern = rf"(?:(?<=\W)|^)(?:{pattern})(?:(?=\W)|$)"
68
+ if words:
69
+ pattern = "|".join(filter(None, [pattern, rf"(?<![A-Za-z])(?:{'|'.join(map(re.escape, words))})s?(?![A-Za-z])"]))
65
70
  if case_insensitive and pattern:
66
71
  pattern = f"(?i:{pattern})"
67
72
  if acronyms:
@@ -138,7 +143,7 @@ def _slide_has_title(slide, slide_height: int | None) -> bool:
138
143
  def lint(path: str | Path) -> dict[str, Any]:
139
144
  prs = Presentation(str(path))
140
145
  hard_terms, soft_terms, case_insensitive, whole_word = _load_terms()
141
- hard_re = _build_regex(hard_terms, case_insensitive, whole_word)
146
+ hard_re = _build_regex(hard_terms, case_insensitive, whole_word, words_as_words=True)
142
147
  soft_re = _build_regex(soft_terms, case_insensitive, whole_word)
143
148
 
144
149
  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
 
24
18
  palette:
25
19
  ground: "#FFFFFF"
@@ -32,8 +26,6 @@ palette:
32
26
  accent-tint: "#E6ECF4"
33
27
  field: "#1A1D21"
34
28
  on-field: "#FFFFFF"
35
- positive: "#1E7A3F"
36
- negative: "#B3261E"
37
29
  series: ["#2B4C7E", "#555B63", "#8A6A2E", "#3E7A5A"]
38
30
 
39
31
  ramp: reading
@@ -41,8 +33,6 @@ hero: false
41
33
  type-voice:
42
34
  title-tracking: 0
43
35
  display-tracking: -1
44
- latin-case: sentence
45
- figures: proportional
46
36
 
47
37
  density: 10
48
38
  variance: 7
@@ -74,26 +64,16 @@ sections: [section-image, section-field]
74
64
  closings: [closing-contact-split, closing-ask]
75
65
 
76
66
  table:
77
- style: light-grid
78
67
  header: none
79
68
  header-ink: ink
80
69
  rules: rows
81
70
  banding: none
82
- numbers: right-tabular
83
71
  totals: bold
84
72
  chart:
85
73
  gridlines: hairline
86
74
  labels: direct
87
75
  highlight: accent-on-muted
88
- annotation: off
89
76
  image:
90
- bleed: allowed
91
- crop: allowed
92
77
  frame: none
93
78
 
94
79
  fill-order: [anchor-visual, change-family, distribute, step-up]
95
- avoid:
96
- - text placed straight on photographs
97
- - images in card frames
98
- - more than three images in one row
99
- - grey placeholder boxes in a delivered deck
@@ -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
 
24
18
  palette:
25
19
  ground: "#FAFBFC"
@@ -32,8 +26,6 @@ palette:
32
26
  accent-tint: "#FCEBE0"
33
27
  field: "#1F3B33"
34
28
  on-field: "#FFFFFF"
35
- positive: "#1E7A3F"
36
- negative: "#B3261E"
37
29
  series: ["#9A3412", "#1F3B33", "#4E5A66", "#2E6A8E"]
38
30
 
39
31
  ramp: reading
@@ -41,8 +33,6 @@ hero: false
41
33
  type-voice:
42
34
  title-tracking: -1
43
35
  display-tracking: -1
44
- latin-case: sentence
45
- figures: proportional
46
36
 
47
37
  density: 10
48
38
  variance: 6
@@ -80,25 +70,16 @@ sections: [section-numeral, section-rail]
80
70
  closings: [closing-summary-list, closing-ask]
81
71
 
82
72
  table:
83
- style: header-fill
84
73
  header: accent-tint
85
74
  header-ink: accent-deep
86
75
  rules: rows
87
76
  banding: none
88
- numbers: right-tabular
89
77
  totals: bold
90
78
  chart:
91
79
  gridlines: hairline
92
80
  labels: direct
93
81
  highlight: accent-on-muted
94
- annotation: on
95
82
  image:
96
- bleed: side-only
97
- crop: none
98
83
  frame: none
99
84
 
100
85
  fill-order: [distribute, step-up, change-family, anchor-visual]
101
- avoid:
102
- - more than one marked term per slide
103
- - numerals on points that are not a sequence
104
- - definitions buried in bullets instead of the sidebar
@@ -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
 
24
18
  palette:
25
19
  ground: "#FFFFFF"
@@ -32,8 +26,6 @@ palette:
32
26
  accent-tint: "#E8EEF4"
33
27
  field: "#233A4F"
34
28
  on-field: "#FFFFFF"
35
- positive: "#1E7A3F"
36
- negative: "#1A2230"
37
29
  series: ["#A61B1B", "#233A4F", "#4A5568", "#7A6A2A"]
38
30
 
39
31
  ramp: reading
@@ -41,8 +33,6 @@ hero: false
41
33
  type-voice:
42
34
  title-tracking: -1
43
35
  display-tracking: -1
44
- latin-case: sentence
45
- figures: tabular
46
36
 
47
37
  density: 10
48
38
  variance: 4
@@ -74,26 +64,16 @@ sections: [section-band, section-rule]
74
64
  closings: [closing-decision-box, closing-ask]
75
65
 
76
66
  table:
77
- style: header-fill
78
67
  header: field
79
68
  header-ink: on-field
80
69
  rules: grid
81
70
  banding: surface
82
- numbers: right-tabular
83
71
  totals: bold
84
72
  chart:
85
73
  gridlines: hairline
86
74
  labels: direct
87
75
  highlight: accent-on-muted
88
- annotation: off
89
76
  image:
90
- bleed: none
91
- crop: none
92
77
  frame: hairline
93
78
 
94
79
  fill-order: [step-up, distribute, change-family, anchor-visual]
95
- avoid:
96
- - English section kickers
97
- - red for anything but the key line
98
- - a summary box longer than three lines
99
- - more than three text families in a row
@@ -1,5 +1,5 @@
1
- # Ledger: a quarterly review the reader studies line by line. Compact type, tabular figures,
2
- # tables and KPI rows carry the argument; the accent marks the current period and one key figure.
1
+ # Ledger: a quarterly review the reader studies line by line. Compact type; tables and KPI rows
2
+ # carry the argument; the accent marks the current period and one key figure.
3
3
  # A poor fit for a short spoken pitch or for a briefing written as running prose.
4
4
  id: ledger
5
5
  name: Ledger
@@ -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
 
24
18
  palette:
25
19
  ground: "#FFFFFF"
@@ -32,8 +26,6 @@ palette:
32
26
  accent-tint: "#E2F0EC"
33
27
  field: "#0A4438"
34
28
  on-field: "#FFFFFF"
35
- positive: "#1E7A3F"
36
- negative: "#B3261E"
37
29
  series: ["#0E6B5A", "#4B5866", "#9A6A12", "#2F5F8A"]
38
30
 
39
31
  ramp: reading
@@ -41,8 +33,6 @@ hero: false
41
33
  type-voice:
42
34
  title-tracking: -1
43
35
  display-tracking: -1
44
- latin-case: sentence
45
- figures: tabular
46
36
 
47
37
  density: 10
48
38
  variance: 5
@@ -74,27 +64,17 @@ sections: [section-rule, section-numeral]
74
64
  closings: [closing-decision-box, closing-ask]
75
65
 
76
66
  table:
77
- style: ledger
78
67
  # The header row is the ledger's one dark mass: deep field, white labels.
79
68
  header: field
80
69
  header-ink: on-field
81
70
  rules: header-and-totals
82
71
  banding: none
83
- numbers: right-tabular
84
72
  totals: bold
85
73
  chart:
86
74
  gridlines: hairline
87
75
  labels: direct
88
76
  highlight: accent-on-muted
89
- annotation: on
90
77
  image:
91
- bleed: side-only
92
- crop: none
93
78
  frame: hairline
94
79
 
95
80
  fill-order: [step-up, distribute, anchor-visual, change-family]
96
- avoid:
97
- - KPI cards for counts that are not results
98
- - more than one accent on a chart
99
- - tables stretched by padding
100
- - side-rail on two data slides in a row
@@ -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
 
24
18
  palette:
25
19
  ground: "#0F1419"
@@ -32,8 +26,6 @@ palette:
32
26
  accent-tint: "#2A2418"
33
27
  field: "#1E2A36"
34
28
  on-field: "#F5F7FA"
35
- positive: "#6CC08B"
36
- negative: "#F08A7E"
37
29
  series: ["#E3A857", "#7FB8E0", "#A3AEBA", "#C58FD0"]
38
30
 
39
31
  ramp: reading
@@ -41,8 +33,6 @@ hero: false
41
33
  type-voice:
42
34
  title-tracking: -1
43
35
  display-tracking: -2
44
- latin-case: sentence
45
- figures: tabular
46
36
 
47
37
  density: 10
48
38
  variance: 6
@@ -74,27 +64,17 @@ sections: [section-numeral, section-field]
74
64
  closings: [closing-statement, closing-decision-box]
75
65
 
76
66
  table:
77
- style: header-fill
78
67
  header: surface
79
68
  header-ink: ink
80
69
  rules: rows
81
70
  banding: none
82
- numbers: right-tabular
83
71
  totals: bold
84
72
  protagonist: accent-tint
85
73
  chart:
86
74
  gridlines: hairline
87
75
  labels: direct
88
76
  highlight: accent-on-muted
89
- annotation: on
90
77
  image:
91
- bleed: side-only
92
- crop: allowed
93
78
  frame: none
94
79
 
95
80
  fill-order: [anchor-visual, step-up, distribute, change-family]
96
- avoid:
97
- - neon or saturated glows
98
- - a pure black ground
99
- - light slides mixed in
100
- - thin light type below 18 pt
@@ -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
 
24
18
  palette:
25
19
  ground: "#FFFFFF"
@@ -32,8 +26,6 @@ palette:
32
26
  accent-tint: "#F6E6E8"
33
27
  field: "#111418"
34
28
  on-field: "#FFFFFF"
35
- positive: "#1E6B3A"
36
- negative: "#50565E"
37
29
  series: ["#8C1C2B", "#111418", "#50565E", "#2E5E8A"]
38
30
 
39
31
  ramp: reading
@@ -41,8 +33,6 @@ hero: false
41
33
  type-voice:
42
34
  title-tracking: 0
43
35
  display-tracking: -1
44
- latin-case: sentence
45
- figures: tabular
46
36
 
47
37
  density: 10
48
38
  variance: 5
@@ -80,26 +70,16 @@ sections: [section-rule, section-field]
80
70
  closings: [closing-summary-list, closing-ask]
81
71
 
82
72
  table:
83
- style: booktabs
84
73
  header: none
85
74
  header-ink: ink
86
75
  rules: booktabs
87
76
  banding: none
88
- numbers: right-tabular
89
77
  totals: bold
90
78
  chart:
91
79
  gridlines: hairline
92
80
  labels: direct
93
81
  highlight: series-order
94
- annotation: off
95
82
  image:
96
- bleed: none
97
- crop: none
98
83
  frame: none
99
84
 
100
85
  fill-order: [anchor-visual, distribute, step-up, change-family]
101
- avoid:
102
- - the short accent bar under a title (the rule is a hairline)
103
- - coloured card fills
104
- - figures without numbered captions
105
- - the accent on anything but the proposed method
@@ -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
 
24
18
  palette:
25
19
  ground: "#FFFFFF"
@@ -32,9 +26,6 @@ palette:
32
26
  accent-tint: "#FBE7E2"
33
27
  field: "#C8361A"
34
28
  on-field: "#FFFFFF"
35
- positive: "#1E7A3F"
36
- # The accent is red, so a loss keeps the ink colour and carries its ▼ sign instead.
37
- negative: "#15131A"
38
29
  series: ["#C8361A", "#15131A", "#6B6870", "#2F6F8F"]
39
30
 
40
31
  ramp: reading
@@ -42,8 +33,6 @@ hero: false
42
33
  type-voice:
43
34
  title-tracking: -1
44
35
  display-tracking: -2
45
- latin-case: sentence
46
- figures: proportional
47
36
 
48
37
  density: 10
49
38
  variance: 6
@@ -75,27 +64,17 @@ sections: [section-field, section-numeral]
75
64
  closings: [closing-statement, closing-ask]
76
65
 
77
66
  table:
78
- style: open
79
67
  header: none
80
68
  header-ink: ink
81
69
  rules: top-bottom
82
70
  banding: none
83
- numbers: right-tabular
84
71
  totals: bold
85
72
  protagonist: accent-tint
86
73
  chart:
87
74
  gridlines: none
88
75
  labels: direct
89
76
  highlight: accent-on-muted
90
- annotation: on
91
77
  image:
92
- bleed: allowed
93
- crop: allowed
94
78
  frame: none
95
79
 
96
80
  fill-order: [step-up, change-family, anchor-visual, distribute]
97
- avoid:
98
- - red for losses (losses carry ▼ in ink)
99
- - more than two lines of display text
100
- - cards
101
- - bullet lists longer than four items
@@ -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
 
24
18
  palette:
25
19
  ground: "#FFFFFF"
@@ -32,8 +26,6 @@ palette:
32
26
  accent-tint: "#F5ECD9"
33
27
  field: "#141414"
34
28
  on-field: "#FFFFFF"
35
- positive: "#1E7A3F"
36
- negative: "#B3261E"
37
29
  series: ["#8A5A00", "#141414", "#525252", "#3B5F7F"]
38
30
 
39
31
  ramp: reading
@@ -41,8 +33,6 @@ hero: false
41
33
  type-voice:
42
34
  title-tracking: -1
43
35
  display-tracking: -2
44
- latin-case: sentence
45
- figures: proportional
46
36
 
47
37
  density: 10
48
38
  variance: 8
@@ -74,26 +64,16 @@ sections: [section-numeral, section-rail]
74
64
  closings: [closing-contact-split, closing-summary-list]
75
65
 
76
66
  table:
77
- style: open
78
67
  header: none
79
68
  header-ink: ink
80
69
  rules: header-rule
81
70
  banding: none
82
- numbers: right-tabular
83
71
  totals: bold
84
72
  chart:
85
73
  gridlines: none
86
74
  labels: direct
87
75
  highlight: accent-on-muted
88
- annotation: on
89
76
  image:
90
- bleed: allowed
91
- crop: allowed
92
77
  frame: none
93
78
 
94
79
  fill-order: [change-family, step-up, anchor-visual, distribute]
95
- avoid:
96
- - large numerals that are not real figures
97
- - column hairlines through text
98
- - two side-rail slides with the same split in a row
99
- - centred body text
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "litgrok",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "description": "Grok Build skills, project rules, and bounded lifecycle hooks for evidence-first lit work.",
5
5
  "author": {
6
6
  "name": "LitGrok contributors"
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.0.16 — 2026-10-09
6
+
7
+ - The deck check in `lit-pptx` now finds placeholder text. It reads its placeholder words from a list that LitGrok had never shipped, so it found nothing, and a slide that still said "Lorem ipsum" or "[작성 중]" passed. The list now ships with the skill, and the installer copies it.
8
+ - The same check reads a one-word placeholder term such as "todo", "tbd", "fixme" or "placeholder" as a whole word. A slide that mentions "Mastodon" or a "photodocument" now passes, while "TODO:", "TODOs" and "(TBD)" still fail.
9
+ - The eight deck looks and six document looks no longer list settings the engine never applied, such as letter case, figure style, picture cropping and page fill targets, and their reference pages no longer promise them. Decks and documents come out the same as before.
10
+
5
11
  ## 1.0.15 — 2026-10-08
6
12
 
7
13
  - `lit-pptx` now chooses how a deck should look before it builds anything. It reads who the deck is for, whether it is presented or sent ahead, and how much of it is tables, pictures or steps, then picks one of eight looks: a dense numbers review, a pitch with one idea per slide, a picture-led deck, a teaching deck, a research talk, a Korean briefing deck, an editorial layout or a dark keynote. The reply names the look, gives the reason in a sentence and mentions two others that would also suit; say one of their names to switch. The AZURE and BOILERPLATE templates still work when you ask for them by name.
package/README.md CHANGED
@@ -1,18 +1,18 @@
1
- <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/cover-motion-still.webp" /><source media="(prefers-reduced-motion: no-preference)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/cover-motion.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/cover-motion.webp" width="100%" alt="LitFamily motion cover: five armored robots power on one by one, the LitGrok robot wakes with glowing eyes and a lit frame, then LITFAMILY and KEEP THE WORK LIT. light up." /></picture></p>
1
+ <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/cover-motion-still.webp" /><source media="(prefers-reduced-motion: no-preference)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/cover-motion.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/cover-motion.webp" width="100%" alt="LitFamily motion cover: five armored robots power on one by one, the LitGrok 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">LitGrok</h1>
4
4
  <p align="center"><strong>Keep the work lit.</strong></p>
5
5
 
6
6
  Make something useful in Grok Build. Leave the checked result and the next step with your project.
7
7
 
8
- **[Full guide and skills gallery on GitHub](https://github.com/wjgoarxiv/litgrok#readme)** · [한국어](https://github.com/wjgoarxiv/litgrok/blob/main/README_ko-KR.md) · [Install](#install-in-30-seconds) · [Reference](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/reference.md)
8
+ **[Full guide and skills gallery on GitHub](https://github.com/wjgoarxiv/litgrok#readme)** · [한국어](https://github.com/wjgoarxiv/litgrok/blob/main/README_ko-KR.md) · [Install](#install-in-30-seconds) · [Reference](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/reference.md)
9
9
 
10
10
  <p align="center">
11
- <a href="#install-in-30-seconds"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/readme/badge-version.svg" alt="1.0.15" /></a>
12
- <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
11
+ <a href="#install-in-30-seconds"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/readme/badge-version.svg" alt="1.0.16" /></a>
12
+ <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
13
13
  </p>
14
14
 
15
- <p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/reference.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/readme/lucide-book-open.svg" width="16" alt="" /> Docs</a> &nbsp; <a href="#install-in-30-seconds">Install</a> &nbsp; <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/cover-motion.webp"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/readme/lucide-play.svg" width="16" alt="" /> Cover motion</a> &nbsp; <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/readme/lucide-shield-check.svg" width="16" alt="" /> MIT</a></p>
15
+ <p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/reference.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/readme/lucide-book-open.svg" width="16" alt="" /> Docs</a> &nbsp; <a href="#install-in-30-seconds">Install</a> &nbsp; <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/cover-motion.webp"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/readme/lucide-play.svg" width="16" alt="" /> Cover motion</a> &nbsp; <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/readme/lucide-shield-check.svg" width="16" alt="" /> MIT</a></p>
16
16
 
17
17
  LitGrok gives Grok Build a way of working: plan the change, build it, check it, and leave a handoff the next session can read. It ships 38 skills, 11 agents, one project rule, and eleven hook registrations. Grok Build still runs the session and chooses the model.
18
18
 
@@ -24,7 +24,7 @@ You need Node.js and Grok Build. In an interactive terminal, from the project yo
24
24
  npm exec --yes --package @litfamily/litgrok@latest -- litgrok install
25
25
  ```
26
26
 
27
- The files land in `<project>/.grok/`. Add `--user` to install under `~/.grok/` instead, or use `--package @litfamily/litgrok@1.0.15` to pin this release. Add `--dry-run` to see every destination before anything is written.
27
+ The files land in `<project>/.grok/`. Add `--user` to install under `~/.grok/` instead, or use `--package @litfamily/litgrok@1.0.16` to pin this release. Add `--dry-run` to see every destination before anything is written.
28
28
 
29
29
  Trying a local package instead? Put its real absolute path in a variable, then run these two lines separately:
30
30
 
@@ -72,7 +72,7 @@ Beyond code, `lit-pptx` makes slide decks and `lit-docx` makes reports and Word
72
72
 
73
73
  ## What changes after install
74
74
 
75
- The installer copies the skills, agents, project rule, and hooks into `.grok/`. The eleven hook registrations in [`hooks/hooks.json`](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/hooks/hooks.json) run only in a trusted Git root, and they log the order of events in `.grok/litgrok/session-ledger/`. Everything runs inside your Grok session, and nothing runs in the background; when the session ends, the work waits for the next one.
75
+ The installer copies the skills, agents, project rule, and hooks into `.grok/`. The eleven hook registrations in [`hooks/hooks.json`](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/hooks/hooks.json) run only in a trusted Git root, and they log the order of events in `.grok/litgrok/session-ledger/`. Everything runs inside your Grok session, and nothing runs in the background; when the session ends, the work waits for the next one.
76
76
 
77
77
  If you'd like a status row showing the active LitGrok skill, the model and how much context is used, add it with `install --user --status-line`. It writes `[ui.status_line]` into `~/.grok/config.toml` and backs up an existing file first.
78
78
 
@@ -107,6 +107,6 @@ The installer never runs `git init`, trusts hooks, signs in or picks a model for
107
107
 
108
108
  **[Full guide, skills gallery and troubleshooting on GitHub →](https://github.com/wjgoarxiv/litgrok#readme)**
109
109
 
110
- [Reference](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/reference.md) · [Changelog](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/CHANGELOG.md) · [Privacy](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/privacy.md) · [MIT license](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/LICENSE)
110
+ [Reference](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/reference.md) · [Changelog](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/CHANGELOG.md) · [Privacy](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/privacy.md) · [MIT license](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/LICENSE)
111
111
 
112
112
  The cover is brand motion made with the LitFamily motion skill: animated artwork, with no Grok session recorded in it.
package/README_ko-KR.md CHANGED
@@ -1,18 +1,18 @@
1
- <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/cover-motion-still.webp" /><source media="(prefers-reduced-motion: no-preference)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/cover-motion.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/cover-motion.webp" width="100%" alt="LitFamily 모션 커버: 다섯 로봇 패널이 차례로 켜지고, LitGrok 로봇의 눈과 테두리가 빛난 뒤 LITFAMILY와 KEEP THE WORK LIT. 문구가 밝아지는 영상" /></picture></p>
1
+ <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/cover-motion-still.webp" /><source media="(prefers-reduced-motion: no-preference)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/cover-motion.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/cover-motion.webp" width="100%" alt="LitFamily 모션 커버: 다섯 로봇 패널이 차례로 켜지고, LitGrok 로봇의 눈과 테두리가 빛난 뒤 LITFAMILY와 KEEP THE WORK LIT. 문구가 밝아지는 영상" /></picture></p>
2
2
 
3
3
  <h1 align="center">LitGrok</h1>
4
4
  <p align="center"><strong>Keep the work lit.</strong></p>
5
5
 
6
6
  Grok Build에서 작은 결과물을 만들고, 확인한 내용과 다음 할 일을 프로젝트에 남기세요.
7
7
 
8
- **[GitHub에서 전체 안내와 스킬 갤러리 보기](https://github.com/wjgoarxiv/litgrok/blob/main/README_ko-KR.md)** · [English](https://github.com/wjgoarxiv/litgrok#readme) · [설치](#30초-설치) · [상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/reference_ko-KR.md)
8
+ **[GitHub에서 전체 안내와 스킬 갤러리 보기](https://github.com/wjgoarxiv/litgrok/blob/main/README_ko-KR.md)** · [English](https://github.com/wjgoarxiv/litgrok#readme) · [설치](#30초-설치) · [상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/reference_ko-KR.md)
9
9
 
10
10
  <p align="center">
11
- <a href="#30초-설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/readme/badge-version.svg" alt="1.0.15" /></a>
12
- <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/readme/badge-license.svg" alt="MIT 라이선스" /></a>
11
+ <a href="#30초-설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/readme/badge-version.svg" alt="1.0.16" /></a>
12
+ <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/readme/badge-license.svg" alt="MIT 라이선스" /></a>
13
13
  </p>
14
14
 
15
- <p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/reference_ko-KR.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/readme/lucide-book-open.svg" width="16" alt="" /> 상세 안내</a> &nbsp; <a href="#30초-설치">설치</a> &nbsp; <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/cover-motion.webp"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/readme/lucide-play.svg" width="16" alt="" /> 커버 모션</a> &nbsp; <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/assets/readme/lucide-shield-check.svg" width="16" alt="" /> MIT</a></p>
15
+ <p align="center"><a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/reference_ko-KR.md"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/readme/lucide-book-open.svg" width="16" alt="" /> 상세 안내</a> &nbsp; <a href="#30초-설치">설치</a> &nbsp; <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/cover-motion.webp"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/readme/lucide-play.svg" width="16" alt="" /> 커버 모션</a> &nbsp; <a href="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/assets/readme/lucide-shield-check.svg" width="16" alt="" /> MIT</a></p>
16
16
 
17
17
  LitGrok은 Grok Build 위에서 계획하고, 만들고, 확인하고, 다음 세션이 읽을 인수인계 문서를 남기는 흐름을 더합니다. 스킬 38개, 에이전트 11개, 프로젝트 규칙 하나, 훅 등록 열한 개가 들어 있고, 세션 실행과 모델 선택은 계속 Grok Build가 맡습니다.
18
18
 
@@ -24,7 +24,7 @@ Node.js와 Grok Build가 있으면 됩니다. 써 보고 싶은 프로젝트에
24
24
  npm exec --yes --package @litfamily/litgrok@latest -- litgrok install
25
25
  ```
26
26
 
27
- 파일은 `<project>/.grok/`에 들어갑니다. `~/.grok/`에 설치하려면 `--user`를, 이 릴리스로 고정하려면 `--package @litfamily/litgrok@1.0.15`을 쓰세요. `--dry-run`을 붙이면 파일을 쓰기 전에 들어갈 경로를 모두 보여 줍니다.
27
+ 파일은 `<project>/.grok/`에 들어갑니다. `~/.grok/`에 설치하려면 `--user`를, 이 릴리스로 고정하려면 `--package @litfamily/litgrok@1.0.16`을 쓰세요. `--dry-run`을 붙이면 파일을 쓰기 전에 들어갈 경로를 모두 보여 줍니다.
28
28
 
29
29
  로컬 패키지로 써 보려면 실제 절대 경로를 변수에 넣고 두 줄을 따로 실행하세요.
30
30
 
@@ -72,7 +72,7 @@ npm exec --yes --package "$LITGROK_PACK" -- litgrok install
72
72
 
73
73
  ## 설치하면 달라지는 것
74
74
 
75
- 설치 프로그램이 스킬, 에이전트, 프로젝트 규칙, 훅을 `.grok/`에 복사합니다. [`hooks/hooks.json`](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/hooks/hooks.json)에 있는 훅 등록 열한 개는 신뢰한 Git 루트에서만 동작하고, `.grok/litgrok/session-ledger/`에 이벤트 순서를 남깁니다. 모든 작업은 Grok 세션 안에서 돌고 백그라운드 작업은 없습니다. 세션이 끝나면 다음 세션이 이어받을 때까지 그 자리에 멈춰 있습니다.
75
+ 설치 프로그램이 스킬, 에이전트, 프로젝트 규칙, 훅을 `.grok/`에 복사합니다. [`hooks/hooks.json`](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/hooks/hooks.json)에 있는 훅 등록 열한 개는 신뢰한 Git 루트에서만 동작하고, `.grok/litgrok/session-ledger/`에 이벤트 순서를 남깁니다. 모든 작업은 Grok 세션 안에서 돌고 백그라운드 작업은 없습니다. 세션이 끝나면 다음 세션이 이어받을 때까지 그 자리에 멈춰 있습니다.
76
76
 
77
77
  지금 어떤 LitGrok 스킬이 동작 중인지, 어떤 모델을 쓰는지, 컨텍스트를 얼마나 썼는지 보고 싶으면 `install --user --status-line`으로 상태 행을 켜세요. `~/.grok/config.toml`에 `[ui.status_line]`을 넣고, 파일이 이미 있으면 먼저 백업합니다.
78
78
 
@@ -107,6 +107,6 @@ npm exec --yes --package @litfamily/litgrok@latest -- litgrok uninstall --user
107
107
 
108
108
  **[GitHub에서 전체 안내, 스킬 갤러리, 문제 해결 보기 →](https://github.com/wjgoarxiv/litgrok/blob/main/README_ko-KR.md)**
109
109
 
110
- [상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/reference_ko-KR.md) · [변경 이력](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/CHANGELOG.md) · [개인정보](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/docs/privacy.md) · [MIT 라이선스](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.15/LICENSE)
110
+ [상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/reference_ko-KR.md) · [변경 이력](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/CHANGELOG.md) · [개인정보](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/docs/privacy.md) · [MIT 라이선스](https://cdn.jsdelivr.net/npm/@litfamily/litgrok@1.0.16/LICENSE)
111
111
 
112
112
  커버의 모션은 LitFamily 모션 스킬로 만든 브랜드 연출입니다. 그려서 움직인 그림이라 실제 Grok 세션을 녹화한 장면은 들어 있지 않습니다.
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="local: 1.0.15"><title>local: 1.0.15</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="290" transform="scale(.1)">local</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.15</text></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="local: 1.0.16"><title>local: 1.0.16</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="290" transform="scale(.1)">local</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.16</text></g></svg>
package/docs/reference.md CHANGED
@@ -77,7 +77,7 @@ npm exec --yes --package @litfamily/litgrok@latest -- litgrok install
77
77
  Pin a version when you need a reproducible install:
78
78
 
79
79
  ```bash
80
- npm exec --yes --package @litfamily/litgrok@1.0.15 -- litgrok install
80
+ npm exec --yes --package @litfamily/litgrok@1.0.16 -- litgrok install
81
81
  ```
82
82
 
83
83
  Preview without writing files:
@@ -77,7 +77,7 @@ npm exec --yes --package @litfamily/litgrok@latest -- litgrok install
77
77
  재현 가능한 설치는 버전을 고정합니다.
78
78
 
79
79
  ```bash
80
- npm exec --yes --package @litfamily/litgrok@1.0.15 -- litgrok install
80
+ npm exec --yes --package @litfamily/litgrok@1.0.16 -- litgrok install
81
81
  ```
82
82
 
83
83
  파일을 쓰지 않고 미리보기:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@litfamily/litgrok",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "description": "Grok Build skills, project rules, and hooks installer.",
5
5
  "type": "module",
6
6
  "bin": {
package/plugin.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "litgrok",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "description": "Grok Build skills, project rules, and bounded lifecycle hooks for evidence-first lit work.",
5
5
  "author": {
6
6
  "name": "LitGrok contributors"