@leejungkiin/awkit 1.6.6 → 1.7.0

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 (47) hide show
  1. package/bin/awk.js +186 -8
  2. package/package.json +5 -3
  3. package/schemas/onboarding-screen.schema.json +108 -0
  4. package/scripts/__pycache__/openrouter_image_gen.cpython-311.pyc +0 -0
  5. package/scripts/automation-gate.js +8 -7
  6. package/scripts/cockpit-quota.js +93 -0
  7. package/scripts/exec-rtk.js +50 -0
  8. package/scripts/openrouter_image_gen.py +772 -0
  9. package/scripts/video-analyzer.js +172 -0
  10. package/skills/CATALOG.md +3 -2
  11. package/skills/TRIGGER_INDEX.md +1 -1
  12. package/skills/ai-sprite-maker/SKILL.md +27 -6
  13. package/skills/ai-sprite-maker/scripts/__pycache__/remove_chroma_key.cpython-311.pyc +0 -0
  14. package/skills/ai-sprite-maker/scripts/remove_chroma_key.py +440 -0
  15. package/skills/awf-caveman/SKILL.md +65 -0
  16. package/skills/expo-build-optimizer/SKILL.md +33 -0
  17. package/skills/ios-app-store-audit/SKILL.md +48 -0
  18. package/skills/ios-expert-coder/SKILL.md +45 -0
  19. package/skills/marketing-spec-writer/SKILL.md +51 -0
  20. package/skills/marketing-spec-writer/templates/MARKETING_SPEC.md +53 -0
  21. package/skills/mascot-designer/SKILL.md +66 -0
  22. package/skills/mascot-designer/examples/witny-case-study.md +35 -0
  23. package/skills/orchestrator/SKILL.md +20 -0
  24. package/skills/review/SKILL.md +87 -0
  25. package/skills/short-maker/scripts/google-flow-cli/README.md +227 -115
  26. package/skills/short-maker/scripts/google-flow-cli/gflow/api/client.py +32 -3
  27. package/skills/short-maker/scripts/google-flow-cli/gflow/api/models.py +4 -2
  28. package/skills/short-maker/scripts/google-flow-cli/gflow/cli/main.py +33 -6
  29. package/skills/short-maker/scripts/google-flow-cli/pyproject.toml +1 -1
  30. package/skills/storyboard-to-scene-pack/SKILL.md +102 -0
  31. package/skills/storyboard-to-scene-pack/agents/openai.yaml +4 -0
  32. package/skills/storyboard-to-scene-pack/assets/preview-template/index.html +101 -0
  33. package/skills/storyboard-to-scene-pack/references/continuity-checklist.md +32 -0
  34. package/skills/storyboard-to-scene-pack/references/scene-prompt-template.md +19 -0
  35. package/skills/storyboard-to-scene-pack/references/storyboard-sheet-template.md +14 -0
  36. package/skills/verification-gate/SKILL.md +4 -0
  37. package/templates/help.html +21 -0
  38. package/templates/project-identity/android.json +24 -0
  39. package/templates/project-identity/backend-nestjs.json +24 -0
  40. package/templates/project-identity/expo.json +24 -0
  41. package/templates/project-identity/ios.json +24 -0
  42. package/templates/project-identity/web-nextjs.json +24 -0
  43. package/templates/specs/design-template.md +71 -161
  44. package/templates/specs/requirements-template.md +133 -65
  45. package/workflows/ui/create-spec-architect.md +80 -50
  46. package/workflows/ui/image-gen.md +118 -0
  47. package/skills/code-review/SKILL.md +0 -115
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: storyboard-to-scene-pack
3
+ description: "Create end-to-end storyboard design packs for animation/video projects with continuity-safe per-scene prompts and reviewer-ready previews. Use when Codex needs to: (1) design a storyboard sheet, (2) generate prompts for each scene (default 8s per scene), (3) prepare keyframe image prompts with character/environment continuity, or (4) produce an HTML storyboard preview that shows each frame and its prompt."
4
+ ---
5
+
6
+ # Storyboard To Scene Pack
7
+
8
+ Build a reusable storyboard pipeline that turns one concept into a continuity-safe scene package and reviewable preview.
9
+
10
+ ## Workflow
11
+
12
+ 1. Collect a compact brief.
13
+ 2. Build continuity locks.
14
+ 3. Draft storyboard plan and panel prompts.
15
+ 4. Generate per-scene keyframe prompts (default `duration: 8s`).
16
+ 5. Produce preview output (hand-drawn storyboard prompt + HTML preview data).
17
+
18
+ ## Step 1: Collect Brief
19
+
20
+ Capture only what is required:
21
+
22
+ - Project title and one-line premise
23
+ - Visual style (for example: pencil sketch, noir ink, watercolor)
24
+ - Character list (name, role, physical anchors, wardrobe anchors)
25
+ - Environment anchors (layout elements that must persist)
26
+ - Total scene count and target duration per scene (default 8s)
27
+ - Tone and camera language preferences
28
+
29
+ If input is missing, assume safe defaults and continue.
30
+
31
+ ## Step 2: Build Continuity Locks
32
+
33
+ Before generating scene prompts, define immutable anchors:
34
+
35
+ - Character Bible: face/hair/body/clothes/props signatures
36
+ - Environment Bible: spatial map and recurring objects
37
+ - Time/lighting continuity: time-of-day and light direction
38
+ - State continuity tokens: object states carried across scenes
39
+
40
+ Use [continuity-checklist.md](references/continuity-checklist.md) to validate.
41
+
42
+ ## Step 3: Draft Storyboard Plan
43
+
44
+ Create a panel plan first, then prompts:
45
+
46
+ - Use a grid format (`3x4` default) with numbered panels
47
+ - For each panel, define `scene`, `action`, `dialogue`, `camera`
48
+ - Keep camera progression intentional (wide -> medium -> close-up as needed)
49
+ - Include explicit shot/move labels when relevant (`WIDE SHOT`, `PAN LEFT`, `TILT UP`, `ZOOM IN`)
50
+
51
+ For hand-drawn storyboard sheet generation, use [storyboard-sheet-template.md](references/storyboard-sheet-template.md).
52
+
53
+ ## Step 4: Generate Per-Scene Prompt Pack
54
+
55
+ For each scene, output one prompt block with this schema:
56
+
57
+ - `scene_id`
58
+ - `duration_seconds` (default `8`)
59
+ - `goal_of_scene`
60
+ - `visual_prompt`
61
+ - `camera_prompt`
62
+ - `continuity_from_previous`
63
+ - `negative_constraints`
64
+
65
+ Prefer explicit continuity phrasing, for example: "same wardrobe as Scene 03", "knife remains in right hand", "steam intensity reduced from prior scene".
66
+
67
+ Use [scene-prompt-template.md](references/scene-prompt-template.md).
68
+
69
+ ## Step 5: Produce Preview Artifacts
70
+
71
+ Always provide these outputs:
72
+
73
+ - Hand-drawn storyboard sheet prompt (single-sheet overview)
74
+ - Scene prompt list (JSON or Markdown table)
75
+ - HTML preview mapping each frame to its prompt and continuity notes
76
+
77
+ Use [preview-template/index.html](assets/preview-template/index.html) as the base layout.
78
+
79
+ ## Output Contract
80
+
81
+ Return outputs in this structure:
82
+
83
+ - `storyboard/handdrawn_storyboard_prompt.md`
84
+ - `storyboard/scene_prompts.json`
85
+ - `preview/index.html`
86
+
87
+ If scene images are already available, reference them in preview as:
88
+
89
+ - `scenes/scene_01.png`
90
+ - `scenes/scene_02.png`
91
+ - `...`
92
+
93
+ ## Quality Gate
94
+
95
+ Validate before finalizing:
96
+
97
+ - Panel numbering is complete and ordered
98
+ - Character and wardrobe continuity is preserved
99
+ - Environment anchors stay consistent
100
+ - Camera sequence supports narrative clarity
101
+ - Every scene has explicit 8s duration (or user-specified override)
102
+ - HTML preview contains both image slot and prompt text per scene
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Storyboard Scene Pack"
3
+ short_description: "Design storyboard and per-scene prompts"
4
+ default_prompt: "Use $storyboard-to-scene-pack to design a storyboard, generate per-scene 8s prompts, and produce an HTML preview."
@@ -0,0 +1,101 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
6
+ <title>Storyboard Preview</title>
7
+ <style>
8
+ :root {
9
+ --bg: #f5f3ee;
10
+ --panel: #ffffff;
11
+ --ink: #1f1f1f;
12
+ --muted: #666;
13
+ --line: #ddd7cc;
14
+ }
15
+ body {
16
+ margin: 0;
17
+ font-family: "Avenir Next", "Segoe UI", sans-serif;
18
+ background: var(--bg);
19
+ color: var(--ink);
20
+ }
21
+ header {
22
+ padding: 20px;
23
+ border-bottom: 1px solid var(--line);
24
+ background: linear-gradient(180deg, #fff, #f7f4ee);
25
+ }
26
+ h1 { margin: 0 0 8px; font-size: 24px; }
27
+ .sub { margin: 0; color: var(--muted); }
28
+ main {
29
+ max-width: 1100px;
30
+ margin: 20px auto;
31
+ padding: 0 16px 24px;
32
+ display: grid;
33
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
34
+ gap: 16px;
35
+ }
36
+ article {
37
+ background: var(--panel);
38
+ border: 1px solid var(--line);
39
+ border-radius: 12px;
40
+ overflow: hidden;
41
+ box-shadow: 0 2px 8px rgba(0,0,0,0.04);
42
+ }
43
+ img {
44
+ width: 100%;
45
+ aspect-ratio: 16 / 9;
46
+ object-fit: cover;
47
+ background: #ece8de;
48
+ display: block;
49
+ }
50
+ .content { padding: 12px; }
51
+ .id { font-weight: 700; margin: 0 0 6px; }
52
+ .meta { color: var(--muted); font-size: 13px; margin: 0 0 10px; }
53
+ pre {
54
+ margin: 0;
55
+ white-space: pre-wrap;
56
+ font-family: "SF Mono", Consolas, monospace;
57
+ font-size: 12px;
58
+ line-height: 1.4;
59
+ background: #fbfaf7;
60
+ border: 1px solid var(--line);
61
+ border-radius: 8px;
62
+ padding: 8px;
63
+ max-height: 240px;
64
+ overflow: auto;
65
+ }
66
+ </style>
67
+ </head>
68
+ <body>
69
+ <header>
70
+ <h1>Storyboard Scene Preview</h1>
71
+ <p class="sub">Replace `SCENES` in the inline script with your generated scene data.</p>
72
+ </header>
73
+ <main id="grid"></main>
74
+
75
+ <script>
76
+ const SCENES = [
77
+ {
78
+ scene_id: "SCENE_01",
79
+ duration_seconds: 8,
80
+ image: "../scenes/scene_01.png",
81
+ prompt: "Example prompt for scene 01",
82
+ continuity: "Initial scene"
83
+ }
84
+ ];
85
+
86
+ const grid = document.getElementById("grid");
87
+ SCENES.forEach(scene => {
88
+ const card = document.createElement("article");
89
+ card.innerHTML = `
90
+ <img src="${scene.image}" alt="${scene.scene_id}" />
91
+ <div class="content">
92
+ <p class="id">${scene.scene_id}</p>
93
+ <p class="meta">Duration: ${scene.duration_seconds}s</p>
94
+ <pre>${scene.prompt}\n\nContinuity: ${scene.continuity}</pre>
95
+ </div>
96
+ `;
97
+ grid.appendChild(card);
98
+ });
99
+ </script>
100
+ </body>
101
+ </html>
@@ -0,0 +1,32 @@
1
+ # Continuity Checklist
2
+
3
+ Use this checklist before approving scene prompts or keyframes.
4
+
5
+ ## Character Continuity
6
+
7
+ - Face shape, hairstyle, and age cues remain stable
8
+ - Wardrobe palette and core accessories remain stable
9
+ - Signature props stay present or are intentionally removed
10
+
11
+ ## Environment Continuity
12
+
13
+ - Primary layout remains consistent (major objects do not teleport)
14
+ - Lighting direction and intensity progress logically
15
+ - Background density and style remain coherent
16
+
17
+ ## Action Continuity
18
+
19
+ - Entry/exit direction between adjacent scenes is consistent
20
+ - Handedness stays stable for held objects
21
+ - Object states evolve logically (raw -> chopped -> cooked)
22
+
23
+ ## Camera Continuity
24
+
25
+ - Shot changes are motivated, not random
26
+ - Camera move labels match visual intent
27
+ - Close-up inserts still preserve geography from master shots
28
+
29
+ ## Timing Continuity
30
+
31
+ - Each scene uses `duration_seconds: 8` unless overridden
32
+ - Motion intent is clear for an 8-second beat
@@ -0,0 +1,19 @@
1
+ # Scene Prompt Template
2
+
3
+ ```yaml
4
+ scene_id: SCENE_01
5
+ duration_seconds: 8
6
+ goal_of_scene: "Introduce conflict at the prep station"
7
+ visual_prompt: >
8
+ [Describe composition, characters, action, environment details, and style]
9
+ camera_prompt: >
10
+ [Shot type, lens feel, movement direction, framing priority]
11
+ continuity_from_previous: >
12
+ [Explicit carry-over from prior scene: wardrobe, prop state, lighting]
13
+ negative_constraints:
14
+ - "No extra characters"
15
+ - "No wardrobe change"
16
+ - "No prop position reset"
17
+ ```
18
+
19
+ Prefer concrete language over abstract adjectives.
@@ -0,0 +1,14 @@
1
+ # Storyboard Sheet Prompt Template
2
+
3
+ Use this when generating the single-page hand-drawn overview.
4
+
5
+ ```text
6
+ A full, professional storyboard sheet for "{PROJECT_TITLE}", in {STYLE} black-and-white hand-drawn pencil sketch style.
7
+ Layout: clean {GRID} grid with numbered panels.
8
+ Title text: "{TITLE_LINE}".
9
+ Each panel: characters {CHARACTERS} performing key action beats in {ENVIRONMENT}.
10
+ Below each panel: stylized handwritten production notes for SCENE, ACTION, DIALOGUE, CAMERA.
11
+ Include camera labels where relevant: CLOSE-UP, PAN LEFT, WIDE SHOT, TILT UP, ZOOM IN.
12
+ Include a right-side section: "NOTES / PLAN UPDATES" with bullet notes.
13
+ Keep linework consistent, organized layout, white background.
14
+ ```
@@ -153,6 +153,10 @@ Trước khi claim DONE, kiểm tra **mỗi item** dưới đây:
153
153
  ☐ Backwards compatibility: Breaking changes documented?
154
154
  ☐ Localization (I18N): Text UI mới đã được thêm vào Localizable.strings (EN & VI) chưa?
155
155
  → Việc bọc `Localized()` trong code là chưa đủ. Phải THỰC SỰ mở file .strings (hoặc chạy update_strings.py) để bổ sung key/value trước khi báo cáo DONE.
156
+ ☐ App Store Compliance (iOS Only): Đã tuân thủ App Store Review Guidelines chưa?
157
+ → Background Modes (VD: UIBackgroundModes `location`) phải hợp lệ và thực sự CẦN THIẾT (Guideline 2.5.4). Khai báo thừa sẽ bị reject.
158
+ → Thu thập dữ liệu (Track user, Quảng cáo/Sức khoẻ) PHẢI có App Tracking Transparency (`NSUserTrackingUsageDescription`) (Guideline 5.1.2(i)).
159
+ → Tài sản/API bên thứ 3 (VD: Apple Weather) PHẢI hiển thị đầy đủ trademark attribution và link legal source (Guideline 5.2.5).
156
160
  ```
157
161
 
158
162
  **Nếu thiếu bất kỳ item nào → report DONE_WITH_CONCERNS, không DONE.**
@@ -328,6 +328,27 @@ symphony task block &lt;id&gt; "Lý do" # Đánh dấu bị chặn vì lỗi</
328
328
  <p>Hệ thống AI AWKit sẽ <strong>luôn tự động</strong> thực hiện các hành động trên cho bạn trong quá trình thực thi hệ thống 7-Gate. Bạn không cần gõ lệnh thủ công trừ khi muốn kiểm tra tiến độ.</p>
329
329
  </div>
330
330
 
331
+ <div class="card">
332
+ <h2>🗣️ Giao Tiếp & Caveman Mode</h2>
333
+ <p>AWKit hỗ trợ chế độ <strong>Caveman Mode</strong> – giúp AI giao tiếp cực kỳ súc tích, lược bỏ các từ thừa, lời chào hỏi và giải thích dài dòng. Điều này giúp tiết kiệm 75% Token và tăng tốc độ phản hồi.</p>
334
+
335
+ <h3>Cách Cấu Hình (Trong <code>.project-identity</code>):</h3>
336
+ <pre><code>"communication": {
337
+ "cavemanMode": {
338
+ "enabled": true, // Bật hoặc tắt
339
+ "level": "full" // Các mức độ: lite, full, ultra
340
+ }
341
+ }</code></pre>
342
+
343
+ <h3>Các Mức Độ Nén:</h3>
344
+ <ul>
345
+ <li><strong>lite:</strong> Chỉ lược bỏ lời chào và câu sáo rỗng.</li>
346
+ <li><strong>full:</strong> Nói cụt lủn, bỏ trợ từ, ưu tiên từ khóa kỹ thuật.</li>
347
+ <li><strong>ultra:</strong> Chỉ dùng từ khóa và ký hiệu (e.g. <code>Fix bug A -> Done.</code>).</li>
348
+ </ul>
349
+ <p><em>⚠️ Lưu ý: Ở các tác vụ nguy hiểm (Xóa file, Deploy), AI sẽ tự động tắt chế độ này để cảnh báo rõ ràng cho bạn.</em></p>
350
+ </div>
351
+
331
352
  <div class="card">
332
353
  <h2>🔌 Tích Hợp Dự Án (Trello & Telegram & Neural Memory)</h2>
333
354
 
@@ -23,6 +23,12 @@
23
23
  "indentation": "spaces-4",
24
24
  "lineLength": 120
25
25
  },
26
+ "communication": {
27
+ "cavemanMode": {
28
+ "enabled": false,
29
+ "level": "full"
30
+ }
31
+ },
26
32
  "createdDate": "{{DATE}}",
27
33
  "lastUpdated": "{{DATE}}",
28
34
  "automation": {
@@ -50,6 +56,24 @@
50
56
  "git": {
51
57
  "autoCommit": true,
52
58
  "autoPush": true
59
+ },
60
+ "obsidian": {
61
+ "enabled": false,
62
+ "path": "",
63
+ "autoSync": false
64
+ },
65
+ "mcp": {
66
+ "pixel-mcp": {
67
+ "enabled": false
68
+ }
69
+ }
70
+ },
71
+ "modelPolicy": {
72
+ "mode": "auto",
73
+ "defaultTier": "STANDARD",
74
+ "tierOverrides": {
75
+ "*.plist|*.json|*.env": "LIGHT",
76
+ "docs/*": "LIGHT"
53
77
  }
54
78
  }
55
79
  }
@@ -19,6 +19,12 @@
19
19
  "indentation": "spaces-2",
20
20
  "lineLength": 100
21
21
  },
22
+ "communication": {
23
+ "cavemanMode": {
24
+ "enabled": false,
25
+ "level": "full"
26
+ }
27
+ },
22
28
  "createdDate": "{{DATE}}",
23
29
  "lastUpdated": "{{DATE}}",
24
30
  "automation": {
@@ -46,6 +52,24 @@
46
52
  "git": {
47
53
  "autoCommit": true,
48
54
  "autoPush": true
55
+ },
56
+ "obsidian": {
57
+ "enabled": false,
58
+ "path": "",
59
+ "autoSync": false
60
+ },
61
+ "mcp": {
62
+ "pixel-mcp": {
63
+ "enabled": false
64
+ }
65
+ }
66
+ },
67
+ "modelPolicy": {
68
+ "mode": "auto",
69
+ "defaultTier": "STANDARD",
70
+ "tierOverrides": {
71
+ "*.plist|*.json|*.env": "LIGHT",
72
+ "docs/*": "LIGHT"
49
73
  }
50
74
  }
51
75
  }
@@ -22,6 +22,12 @@
22
22
  "indentation": "spaces-2",
23
23
  "lineLength": 100
24
24
  },
25
+ "communication": {
26
+ "cavemanMode": {
27
+ "enabled": false,
28
+ "level": "full"
29
+ }
30
+ },
25
31
  "createdDate": "{{DATE}}",
26
32
  "lastUpdated": "{{DATE}}",
27
33
  "automation": {
@@ -49,6 +55,24 @@
49
55
  "git": {
50
56
  "autoCommit": true,
51
57
  "autoPush": true
58
+ },
59
+ "obsidian": {
60
+ "enabled": false,
61
+ "path": "",
62
+ "autoSync": false
63
+ },
64
+ "mcp": {
65
+ "pixel-mcp": {
66
+ "enabled": false
67
+ }
68
+ }
69
+ },
70
+ "modelPolicy": {
71
+ "mode": "auto",
72
+ "defaultTier": "STANDARD",
73
+ "tierOverrides": {
74
+ "*.plist|*.json|*.env": "LIGHT",
75
+ "docs/*": "LIGHT"
52
76
  }
53
77
  }
54
78
  }
@@ -22,6 +22,12 @@
22
22
  "indentation": "spaces-4",
23
23
  "lineLength": 120
24
24
  },
25
+ "communication": {
26
+ "cavemanMode": {
27
+ "enabled": false,
28
+ "level": "full"
29
+ }
30
+ },
25
31
  "createdDate": "{{DATE}}",
26
32
  "lastUpdated": "{{DATE}}",
27
33
  "automation": {
@@ -49,6 +55,24 @@
49
55
  "git": {
50
56
  "autoCommit": true,
51
57
  "autoPush": true
58
+ },
59
+ "obsidian": {
60
+ "enabled": false,
61
+ "path": "",
62
+ "autoSync": false
63
+ },
64
+ "mcp": {
65
+ "pixel-mcp": {
66
+ "enabled": false
67
+ }
68
+ }
69
+ },
70
+ "modelPolicy": {
71
+ "mode": "auto",
72
+ "defaultTier": "STANDARD",
73
+ "tierOverrides": {
74
+ "*.plist|*.json|*.env": "LIGHT",
75
+ "docs/*": "LIGHT"
52
76
  }
53
77
  }
54
78
  }
@@ -19,6 +19,12 @@
19
19
  "indentation": "spaces-2",
20
20
  "lineLength": 100
21
21
  },
22
+ "communication": {
23
+ "cavemanMode": {
24
+ "enabled": false,
25
+ "level": "full"
26
+ }
27
+ },
22
28
  "createdDate": "{{DATE}}",
23
29
  "lastUpdated": "{{DATE}}",
24
30
  "automation": {
@@ -46,6 +52,24 @@
46
52
  "git": {
47
53
  "autoCommit": true,
48
54
  "autoPush": true
55
+ },
56
+ "obsidian": {
57
+ "enabled": false,
58
+ "path": "",
59
+ "autoSync": false
60
+ },
61
+ "mcp": {
62
+ "pixel-mcp": {
63
+ "enabled": false
64
+ }
65
+ }
66
+ },
67
+ "modelPolicy": {
68
+ "mode": "auto",
69
+ "defaultTier": "STANDARD",
70
+ "tierOverrides": {
71
+ "*.plist|*.json|*.env": "LIGHT",
72
+ "docs/*": "LIGHT"
49
73
  }
50
74
  }
51
75
  }