@leejungkiin/awkit 1.6.5 → 1.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -130
- package/bin/awk.js +111 -8
- package/package.json +5 -3
- package/schemas/onboarding-screen.schema.json +108 -0
- package/scripts/__pycache__/openrouter_image_gen.cpython-311.pyc +0 -0
- package/scripts/cockpit-quota.js +93 -0
- package/scripts/openrouter_image_gen.py +772 -0
- package/scripts/video-analyzer.js +172 -0
- package/skills/CATALOG.md +2 -1
- package/skills/ai-sprite-maker/SKILL.md +27 -6
- package/skills/ai-sprite-maker/scripts/__pycache__/remove_chroma_key.cpython-311.pyc +0 -0
- package/skills/ai-sprite-maker/scripts/remove_chroma_key.py +440 -0
- package/skills/awf-caveman/SKILL.md +65 -0
- package/skills/expo-build-optimizer/SKILL.md +33 -0
- package/skills/ios-app-store-audit/SKILL.md +48 -0
- package/skills/ios-expert-coder/SKILL.md +45 -0
- package/skills/mascot-designer/SKILL.md +66 -0
- package/skills/mascot-designer/examples/witny-case-study.md +35 -0
- package/skills/orchestrator/SKILL.md +20 -0
- package/skills/short-maker/scripts/google-flow-cli/README.md +227 -115
- package/skills/short-maker/scripts/google-flow-cli/gflow/api/client.py +32 -3
- package/skills/short-maker/scripts/google-flow-cli/gflow/api/models.py +4 -2
- package/skills/short-maker/scripts/google-flow-cli/gflow/cli/main.py +33 -6
- package/skills/short-maker/scripts/google-flow-cli/pyproject.toml +1 -1
- package/skills/verification-gate/SKILL.md +4 -0
- package/templates/help.html +21 -0
- package/templates/project-identity/android.json +24 -0
- package/templates/project-identity/backend-nestjs.json +24 -0
- package/templates/project-identity/expo.json +24 -0
- package/templates/project-identity/ios.json +24 -0
- package/templates/project-identity/web-nextjs.json +24 -0
- package/templates/specs/design-template.md +71 -161
- package/templates/specs/requirements-template.md +133 -65
- package/workflows/ui/create-spec-architect.md +80 -50
- package/workflows/ui/image-gen.md +118 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: awf-caveman
|
|
3
|
+
description: >-
|
|
4
|
+
Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman.
|
|
5
|
+
Checks `.project-identity` for `communication.cavemanMode.enabled`.
|
|
6
|
+
Supports both Vietnamese and English.
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# AWF Caveman Mode
|
|
11
|
+
|
|
12
|
+
Chế độ giao tiếp siêu nén (Ultra-compressed communication mode).
|
|
13
|
+
Tự động kích hoạt dựa trên cấu hình `.project-identity` của dự án hiện tại.
|
|
14
|
+
|
|
15
|
+
## Trigger Conditions
|
|
16
|
+
|
|
17
|
+
**Pre-hook for ALL workflows** - Activates at session start.
|
|
18
|
+
|
|
19
|
+
**Check Configuration:**
|
|
20
|
+
```python
|
|
21
|
+
config = read(".project-identity")
|
|
22
|
+
if config?.communication?.cavemanMode?.enabled == true:
|
|
23
|
+
level = config.communication.cavemanMode.level || "full"
|
|
24
|
+
# Activate Caveman Mode with `level`
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Rules (Quy tắc "Người Tối Cổ")
|
|
28
|
+
|
|
29
|
+
Áp dụng cho mọi phản hồi của AI (cả Tiếng Việt và Tiếng Anh). Mọi hàm lượng kỹ thuật phải giữ nguyên, CHỈ lược bỏ từ thừa.
|
|
30
|
+
|
|
31
|
+
1. **BỎ TỪ ĐỆM**: Bỏ mọi từ thừa, từ lịch sự ("Vâng", "Dạ", "Chắc chắn rồi", "Theo tôi thấy thì...", "Tôi hiểu ý anh...").
|
|
32
|
+
2. **NÓI CỤT LỦN**: Đi thẳng vào vấn đề. Bắt đầu ngay bằng nguyên nhân lỗi hoặc hành động. Dùng câu mảnh (fragments).
|
|
33
|
+
3. **KHÔNG GIẢI THÍCH DÀI DÒNG**: Dùng mũi tên `->` để chỉ nguyên nhân/kết quả.
|
|
34
|
+
4. **GIỮ NGUYÊN TỪ KHÓA KỸ THUẬT**: Tên biến, tên file, code blocks, API names PHẢI CHÍNH XÁC. Không viết tắt từ khóa kỹ thuật.
|
|
35
|
+
|
|
36
|
+
## Intensity Levels (Mức độ)
|
|
37
|
+
|
|
38
|
+
| Level | Tiếng Anh | Tiếng Việt |
|
|
39
|
+
|-------|-----------|------------|
|
|
40
|
+
| **lite** | No filler. Professional but tight. | Bỏ từ lịch sự, chào hỏi. Giữ câu hoàn chỉnh, chuyên nghiệp nhưng súc tích. |
|
|
41
|
+
| **full** | Drop articles, fragments OK, short synonyms. | Nói cụt lủn, bỏ chủ ngữ. Bắt đầu ngay vào hành động. (VD: "Lỗi do X. Cần sửa Y.") |
|
|
42
|
+
| **ultra** | Abbreviate prose words, arrows for causality (X → Y). | Dùng ký hiệu mũi tên. Cực kỳ ngắn. (VD: "Lỗi auth → sửa dòng 5 → xong.") |
|
|
43
|
+
|
|
44
|
+
### Examples
|
|
45
|
+
|
|
46
|
+
**Câu hỏi: Tại sao component React này lại re-render liên tục?**
|
|
47
|
+
|
|
48
|
+
- **Normal**: "Nguyên nhân khiến component của anh bị re-render liên tục là do anh đang tạo một object mới trong mỗi chu kỳ render. Vì vậy, React hiểu đó là một reference mới. Anh nên bọc nó trong useMemo nhé."
|
|
49
|
+
- **lite**: "Component re-render do tạo object mới mỗi lần render. Bọc object trong `useMemo`."
|
|
50
|
+
- **full**: "Object mới mỗi lần render. Gây re-render. Dùng `useMemo`."
|
|
51
|
+
- **ultra**: "Object mới mỗi render → re-render liên tục. `useMemo`."
|
|
52
|
+
|
|
53
|
+
## Auto-Clarity (Tạm dừng khi cần thiết)
|
|
54
|
+
|
|
55
|
+
Tạm thời ngưng Caveman (trở lại bình thường) khi:
|
|
56
|
+
- Cảnh báo bảo mật quan trọng (Security warnings).
|
|
57
|
+
- Hành động không thể hoàn tác (Xóa DB, git reset --hard).
|
|
58
|
+
- Các bước hướng dẫn quá phức tạp dễ gây hiểu nhầm nếu nói tắt.
|
|
59
|
+
- Chữa cháy / Giải thích lỗi quá lắt léo cần rõ nghĩa.
|
|
60
|
+
|
|
61
|
+
Sau khi giải thích rõ, tự động quay lại Caveman.
|
|
62
|
+
|
|
63
|
+
## Integration
|
|
64
|
+
|
|
65
|
+
Skill này chạy ngầm và override communication style của hệ thống nếu được cấu hình `enabled: true` trong `.project-identity`.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: expo-build-optimizer
|
|
3
|
+
description: Use when building Expo applications, tracking EAS build counts, optimizing free tier limits, or creating production APKs/IPAs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Expo Build Optimizer
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
This skill enforces best practices and limits for Expo Free Tier development. It prevents exhausting the 30 EAS build limit per month by promoting local builds, Expo Go testing, and tracking usage.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
- When the user asks to build an Expo app (`eas build`).
|
|
13
|
+
- When checking Expo infrastructure limits.
|
|
14
|
+
- When there's a need to create an APK/IPA.
|
|
15
|
+
|
|
16
|
+
## Core Pattern
|
|
17
|
+
1. **Always check limits first:** Read `expo.builds` from `.project-identity` before running `eas build`.
|
|
18
|
+
2. **Prioritize Expo Go:** For normal feature development, recommend Expo Go.
|
|
19
|
+
3. **Use Local Build:** Suggest `eas build --local` as the primary alternative to server builds to save quotas.
|
|
20
|
+
4. **Track Usage:** Every time an `eas build` (non-local) is performed, increment the `usedThisMonth` counter in `.project-identity`.
|
|
21
|
+
5. **EAS Updates:** Use updates sparingly to stay under the 1,000 MAU and 100 GB bandwidth limit.
|
|
22
|
+
|
|
23
|
+
## Quick Reference
|
|
24
|
+
- **Local Build Android:** `eas build -p android --profile production --local`
|
|
25
|
+
- **Local Build iOS:** `eas build -p ios --profile production --local` (Requires macOS)
|
|
26
|
+
- **Check Limits:** Check `.project-identity` `expo.builds` section.
|
|
27
|
+
|
|
28
|
+
## Implementation Steps
|
|
29
|
+
1. Before running `eas build`, read `.project-identity`. Check if `expo.builds.usedThisMonth` < `expo.builds.limit` (usually 30).
|
|
30
|
+
2. If close to the limit (e.g., >25), warn the user and explicitly suggest `--local`.
|
|
31
|
+
3. If the user insists on a remote build and is under the limit, run the build and then increment the count in `.project-identity`.
|
|
32
|
+
4. If building for simple UI/Logic testing, remind the user about Expo Go.
|
|
33
|
+
5. Emphasize that remote builds have a "Priority: Low" queue in the free tier, which might take hours during peak times, making `--local` the superior choice when hardware permits.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ios-app-store-audit
|
|
3
|
+
description: "Chuyên gia kiểm định iOS App trước khi nộp lên App Store. Quét mã nguồn, Info.plist, IAP, và UI để phát hiện sớm các vi phạm Apple Guideline."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
trigger: conditional
|
|
6
|
+
activation_keywords:
|
|
7
|
+
- "/ios-app-store-audit"
|
|
8
|
+
- "/apple-review"
|
|
9
|
+
- "kiểm tra app store"
|
|
10
|
+
- "kiểm tra trước khi submit ios"
|
|
11
|
+
- "preflight ios"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# 🍏 iOS App Store Audit (Pre-flight Checklist)
|
|
15
|
+
|
|
16
|
+
**Mục đích**: Đóng vai trò là Reviewer của Apple, skill này sẽ quét toàn bộ dự án iOS để chỉ ra những vi phạm có nguy cơ reject cao trước khi Submit.
|
|
17
|
+
|
|
18
|
+
## 🛠 Hướng dẫn thực thi (Checklist)
|
|
19
|
+
|
|
20
|
+
Khi được gọi, AI phải kiểm tra lần lượt các hạng mục sau trong codebase iOS:
|
|
21
|
+
|
|
22
|
+
### 1. Guideline 5.1 & 2.1 - Privacy & App Tracking (ATT)
|
|
23
|
+
- **Kiểm tra file Info.plist**: Tìm `NSUserTrackingUsageDescription`. Nếu có, yêu cầu nội dung phải chi tiết, ví dụ: *"This identifier will be used to deliver personalized ads to you."*
|
|
24
|
+
- **Kiểm tra Code**: Tìm `ATTrackingManager.requestTrackingAuthorization`. Đảm bảo nó được chạy ở thời điểm phù hợp (vd: sau màn hình Onboarding), không gọi quá sớm khi giao diện chưa kịp render.
|
|
25
|
+
- **Purpose Strings khác**: Các chuỗi `NSPhotoLibraryUsageDescription`, `NSCameraUsageDescription` phải mô tả ĐÚNG MỤC ĐÍCH và VÍ DỤ ("We need camera access to let you scan the QR code"). Tuyệt đối cấm các string hời hợt như "App needs camera".
|
|
26
|
+
|
|
27
|
+
### 2. Guideline 1.4.1 - Health & Medical Safety
|
|
28
|
+
Dành cho app Y Tế / Sức khoẻ:
|
|
29
|
+
- **Medical Disclaimer**: Yêu cầu phải có dòng chữ *"Vui lòng tham khảo ý kiến bác sĩ trước khi đưa ra bất kỳ quyết định y tế nào"* trong giao diện (hoặc ở App Store Description).
|
|
30
|
+
- **Citations**: Những nội dung nội bộ hoặc do AI tư vấn sức khỏe phải đi kèm trích dẫn (References / Sources).
|
|
31
|
+
- **Video Physical Device**: Nhắc nhở người dùng phải tự quay bằng video máy thật với luồng đo sức khoẻ để đính kèm App Review Notes.
|
|
32
|
+
|
|
33
|
+
### 3. Guideline 3.1 & 2.1 - Subscriptions & IAP
|
|
34
|
+
- Nhắc nhở User: "Bạn đã đính kèm In-App Purchases cùng với bản Build khi Submit chưa?"
|
|
35
|
+
- Yêu cầu kiểm tra màn hình bán hàng (Premium/Paywall) phải bao gồm:
|
|
36
|
+
- Nút **Restore Purchases**
|
|
37
|
+
- Link **Terms of Use (EULA)**
|
|
38
|
+
- Link **Privacy Policy**
|
|
39
|
+
|
|
40
|
+
### 4. Guideline 4.0 - Design (iPad Compatibility)
|
|
41
|
+
- Quét mã nguồn UI (SwiftUI views): Cảnh báo nếu sử dụng `.frame(width: UIScreen.main.bounds.width)`, vì nó gây rách layout trên iPad.
|
|
42
|
+
- Đề xuất giải pháp an toàn như `.frame(maxWidth: .infinity)` hoặc sử dụng `NavigationSplitView`.
|
|
43
|
+
|
|
44
|
+
### 5. Fake Reviewer State
|
|
45
|
+
- AI nhắc nhở User test kịch bản "Fresh Install" bằng cách khôi phục cài đặt gốc của App trước khi build nộp lại, vì Reviewer luôn test trên một máy hoàn toàn trắng.
|
|
46
|
+
|
|
47
|
+
## 📥 Báo cáo
|
|
48
|
+
In ra một báo cáo MarkDown gồm 🔴 (Lỗi Cần Sửa Gấp) và 🟡 (Cảnh Báo Cần Chú Ý), sau đó gợi ý người dùng cách chỉnh sửa từng mục.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ios-expert-coder
|
|
3
|
+
description: "Chuyên gia Lập trình iOS & Pháp chế Apple. Kích hoạt ngầm khi phát hiện dev app iOS để đảm bảo tuân thủ App Store Guidelines từ khâu thiết kế."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
trigger: auto
|
|
6
|
+
activation_keywords:
|
|
7
|
+
- "code ios"
|
|
8
|
+
- "swiftui"
|
|
9
|
+
- "lập trình ios"
|
|
10
|
+
- "code app ios"
|
|
11
|
+
- "xcode"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# 🛡️ iOS Guardian & Expert Coder
|
|
15
|
+
|
|
16
|
+
**Mục đích**: Skill này sẽ kích hoạt tự động làm "tấm khiên" cho Antigravity khi phát hiện người dùng đang lập trình giao diện hoặc tính năng cho hệ điều hành iOS. Không đợi User yêu cầu, AI luôn phải thiết lập ngay vào source code các thành phần tuân thủ chuẩn Apple.
|
|
17
|
+
|
|
18
|
+
## 📜 Các Luật Ngầm Bắt Buộc Khi Lập Trình iOS
|
|
19
|
+
|
|
20
|
+
Khi đang tham gia vào quy trình lập trình cho iOS UI/Tính năng, AI PHẢI tuân thủ các quy định sau:
|
|
21
|
+
|
|
22
|
+
### 1. Nguyên Tắc Thiết Kế Layout (iPad Safe)
|
|
23
|
+
- **KHÔNG BAO GIỜ** sử dụng độ dài tĩnh màn hình cố định như `UIScreen.main.bounds.width`.
|
|
24
|
+
- Sử dụng Constraint linh hoạt qua `.frame(maxWidth: .infinity)`.
|
|
25
|
+
- Trên iPadOS: Luôn chú ý `.navigationViewStyle(.stack)` (nếu không dùng `NavigationSplitView`) để tránh màn hình chia đôi rỗng tuếch.
|
|
26
|
+
|
|
27
|
+
### 2. Các Strings Xin Quyền (Info.plist Security)
|
|
28
|
+
- Bất cứ khi nào cập nhật luồng dùng phần cứng (Camera, Mic, GPS, Photo Library), AI TỰ ĐỘNG yêu cầu cập nhật `Info.plist`.
|
|
29
|
+
- AI phải tạo một câu giải thích tại sao xin quyền một cách chi tiết có kèm ví dụ cụ thể thay vì nội dung sáo rỗng. (Ví dụ chuẩn: *"We need access to your photo library to let you select a profile picture for your account."*).
|
|
30
|
+
|
|
31
|
+
### 3. Medical & Health Protocol (Chống reject 1.4.1)
|
|
32
|
+
- Nếu App liên quan đến sức khoẻ (Health, Glucose, Blood Pressure, Trackers):
|
|
33
|
+
- Tự động gợi ý thêm Disclaimer Y tế (Text Disclaimer: Please consult a physician before making medical decisions) ngay bên dưới các biểu đồ máu hoặc AI Chat tư vấn.
|
|
34
|
+
|
|
35
|
+
### 4. Giao diện Bán Hàng In-App Purchases (Chống reject 3.1.2)
|
|
36
|
+
- Khi thi công màn hình `PaywallView` / `PremiumView`, TỰ ĐỘNG thiết kế UI có đủ 3 hành động MANG TÍNH PHÁP LÝ BẮT BUỘC:
|
|
37
|
+
1. Nút `Restore Purchases`
|
|
38
|
+
2. Nút nhỏ để mở `EULA (Terms of Use)`
|
|
39
|
+
3. Nút nhỏ để mở `Privacy Policy`
|
|
40
|
+
|
|
41
|
+
### 5. Khóa Luồng Xin Quyền Theo Dõi (ATT Prompt Lifecycle)
|
|
42
|
+
- Luôn luôn đặt việc request `ATTrackingManager.requestTrackingAuthorization` về sau luồng Onboarding. Không được phép gọi ở ngay trạng thái chưa init xong màn hình đầu tiên.
|
|
43
|
+
|
|
44
|
+
## ⚙️ Hành động
|
|
45
|
+
AI chủ động rà soát tư duy trong mỗi lượt code, báo ngay cho user nếu phát hiện user muốn tạo ra một chức năng vi phạm 5 luật kể trên.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mascot-designer
|
|
3
|
+
description: Use when the user wants to design a mascot, define character concepts, create emotional states for onboarding/engagement, or integrate characters into UI designs. Triggers on "mascot design", "character concept", "virtual coach", "pixel mascot". Chains to pixel-gen or generate_image depending on the required art style.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Mascot Designer & Virtual Coach Systems
|
|
7
|
+
|
|
8
|
+
You are an expert in character design and brand gamification. Mascots (Virtual Coaches) significantly increase user engagement, retention, and onboarding completion rates by providing an emotional anchor, normalizing struggles, and delivering intermittent reinforcement.
|
|
9
|
+
|
|
10
|
+
## Core Responsibilities
|
|
11
|
+
1. **Concept Development**: Defining the mascot's identity, personality, and art style.
|
|
12
|
+
2. **State Generation**: Defining the emotional and functional states needed for the app.
|
|
13
|
+
3. **Pencil/UI Integration**: Planning how the mascot overlays or interacts with UI components.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 🎭 1. Mascot Concept Design
|
|
18
|
+
|
|
19
|
+
Before generating any art, define the character profile:
|
|
20
|
+
- **Species/Form**: Animal, Robot, Abstract Shape, Humanoid?
|
|
21
|
+
- **Personality**: Energetic cheerleader, calm mentor, sarcastic friend?
|
|
22
|
+
- **Art Style**: Pixel Art (Retro/Gamified), 3D Render (Modern), Flat Vector (SaaS), Ghibli (Emotional).
|
|
23
|
+
- **Core Purpose**: Is it just a logo, or does it guide the user through a Quiz Funnel?
|
|
24
|
+
|
|
25
|
+
## 📊 2. Essential Emotional States
|
|
26
|
+
|
|
27
|
+
If the mascot is used for **Onboarding (Quiz Funnels)** or **Health/EdTech**, you must define these core states:
|
|
28
|
+
|
|
29
|
+
| State | Purpose | Context |
|
|
30
|
+
|:---|:---|:---|
|
|
31
|
+
| `idle` / `greeting` | Welcoming | Hook screens, app launch |
|
|
32
|
+
| `thinking` / `curious` | Asking questions | Survey screens, data collection |
|
|
33
|
+
| `encouraging` / `cheering`| Positive reinforcement | After completing a task |
|
|
34
|
+
| `empathizing` / `sad` | Normalizing pain points | When user selects a negative option |
|
|
35
|
+
| `analyzing` / `working` | Labor Illusion | Fake loading screens |
|
|
36
|
+
| `presenting` / `proud` | Revealing results | Dynamic UI Reveal screen |
|
|
37
|
+
| `celebrating` / `confetti`| Final conversion | Paywall completion, goal reached |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 🎨 3. Asset Generation Chains
|
|
42
|
+
|
|
43
|
+
Depending on the chosen art style, you MUST chain to the appropriate generation skill:
|
|
44
|
+
|
|
45
|
+
### Option A: Pixel Art (Recommended for gamification)
|
|
46
|
+
- Chain to **`aseprite-artist`** (or `pixel-gen` if configured)
|
|
47
|
+
- Provide the exact palette and dimensions.
|
|
48
|
+
- Ask for spritesheets if animations are needed.
|
|
49
|
+
|
|
50
|
+
### Option B: High-Fidelity Illustration
|
|
51
|
+
- Chain to **`generate_image`** tool
|
|
52
|
+
- Maintain a consistent prompt prefix for style (e.g., "A flat vector illustration, pastel colors, white background, mascot of a robot...").
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 🚀 Execution Workflow
|
|
57
|
+
|
|
58
|
+
1. **Ask for Context**: What is the app? Target audience? Brand colors?
|
|
59
|
+
2. **Propose 3 Concepts**: Short descriptions of potential mascots.
|
|
60
|
+
3. **Map the States**: List the exact states needed based on the feature (e.g., Onboarding requires 7 states).
|
|
61
|
+
4. **Generate Base Asset**: Use the chained skills to generate the `idle` state first to lock in the design.
|
|
62
|
+
5. **Generate State Variations**: Generate the rest of the states based on the locked-in base.
|
|
63
|
+
6. **Integration Plan**: Document how the assets will be bundled (spritesheet vs individual PNGs) and used in code.
|
|
64
|
+
|
|
65
|
+
## References
|
|
66
|
+
See `examples/witny-case-study.md` for a complete example of a successful pixel art mascot implementation.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Case Study: Witny the Owl (FitWitness Simple)
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
**Witny** is the official mascot for "FitWitness Simple", an app utilizing a SpriteCook/WitnyGame engine to visualize health and onboarding data. The mascot uses a pixel-art style, evoking nostalgia while maintaining a gamified coaching presence.
|
|
5
|
+
|
|
6
|
+
## 1. Character Concept
|
|
7
|
+
- **Form**: A small, wise, but cute owl.
|
|
8
|
+
- **Personality**: A gentle observer and guide. Not overly energetic, but reliable and encouraging.
|
|
9
|
+
- **Art Style**: 16-bit Pixel Art.
|
|
10
|
+
- **Color Palette**: Muted earthy tones (browns, tans) with bright yellow eyes for expressiveness.
|
|
11
|
+
|
|
12
|
+
## 2. Emotional and Action States
|
|
13
|
+
|
|
14
|
+
For the integration into the app's onboarding and daily tracking, specific sprite states were generated:
|
|
15
|
+
|
|
16
|
+
### Core Movement (Game Engine)
|
|
17
|
+
- `idle`: Witny standing still, blinking occasionally. (Default anchor state)
|
|
18
|
+
- `walk`: A 4-frame walking animation for navigating between UI sections.
|
|
19
|
+
- `run`: Faster movement for achieving goals.
|
|
20
|
+
- `jump_front`: Used for active celebrations or transitioning.
|
|
21
|
+
- `hurt`: Used when a user breaks a streak or inputs negative health metrics.
|
|
22
|
+
- `death`: (Rare) Used for extreme gamified fail-states or complete account resets.
|
|
23
|
+
|
|
24
|
+
### Onboarding Expansion (For Quiz Funnels)
|
|
25
|
+
Using the `mascot-designer` playbook, Witny was extended for the Quiz Funnel:
|
|
26
|
+
- `greeting`: Witny waves a wing at the user on the Splash screen.
|
|
27
|
+
- `thinking`: Witny taps their head with a wing when asking "What's your current weight?"
|
|
28
|
+
- `empathizing`: Witny looks down with drooping eyes when the user selects "I feel tired often" (Normalization).
|
|
29
|
+
- `analyzing`: Witny wears tiny pixel glasses and reads a book during the "Hold on, analyzing your profile..." Labor Illusion screen.
|
|
30
|
+
|
|
31
|
+
## 3. Integration Learnings
|
|
32
|
+
|
|
33
|
+
1. **Asset Management**: Pixel art creates many files. Grouping them into folders by state (e.g., `assets/mascot/witny/idle/`) or exporting as a unified `.aseprite` JSON spritesheet was critical for developer handoff.
|
|
34
|
+
2. **Animation Over Static**: Because it's pixel art, a static image feels "dead". Even the `idle` state needed a 2-frame breathing animation to maintain the "Virtual Coach" presence.
|
|
35
|
+
3. **UI Overlay**: Witny was designed with a transparent background so it could float above the standard iOS/Android native UI, breaking the grid and making the app feel alive.
|
|
@@ -68,5 +68,25 @@ No match → Ask clarifying question (max 2 times)
|
|
|
68
68
|
Still unclear → Suggest `/help`
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
+
### 5. Model Fitness Check (Pre-Execution Gate)
|
|
72
|
+
```yaml
|
|
73
|
+
model_fitness_gate:
|
|
74
|
+
purpose: "Đúng mô hình — đúng việc — tránh lãng phí token và tránh hallucination do mismatch."
|
|
75
|
+
action: "Orchestrator must analyze task complexity vs current model tier before code execution."
|
|
76
|
+
tiers:
|
|
77
|
+
- LIGHT: Flash/Haiku/4o-mini (config, syntax, docs, simple boilerplate)
|
|
78
|
+
- STANDARD: Pro/Sonnet/4o (90% dev work, active coding, feature additions, standard bug fixes)
|
|
79
|
+
- HEAVY: Opus/Ultra/o1/o3 (Architecture, custom framework, refactor > 5 files, deep debugging)
|
|
80
|
+
detect_signals:
|
|
81
|
+
escalate_if: "Blast radius > 5 files, ≥ 2 custom types (e.g. protocol matching), COMPLEX triage, circular self-correction"
|
|
82
|
+
downgrade_if: "Single file < 20 lines, *.plist|*.json|*.env, string replacements, no logic changes"
|
|
83
|
+
procedure:
|
|
84
|
+
1: "Phân loại mức độ phức tạp của Task để chốt Hạng Yêu Cầu (Required Tier) (tham khảo project-identity modelPolicy hoặc tự nội suy)."
|
|
85
|
+
2: "Chú ý Môi trường IDE (Cursor, Gemini) -> AI KHÔNG THỂ tự động đổi Model."
|
|
86
|
+
3: "Nếu phát hiện Mismatch (Over-fit lãng phí token như dùng Opus cho task dễ, HOẶC Under-fit sinh lỗi như dùng Flash cho task khó) -> Print ⚠️ MODEL TRIAGE CHECKPOINT và BẮT BUỘC DỪNG quá trình."
|
|
87
|
+
4: "Yêu cầu user tự chuyển đổi model trên IDE hoặc gõ 'Tiếp tục' để ép buộc chạy model hiện tại."
|
|
88
|
+
5: "Nếu Match (Đạt yêu cầu) -> Tiếp tục chạy bình thường."
|
|
89
|
+
```
|
|
90
|
+
|
|
71
91
|
## Auto-Activation
|
|
72
92
|
This skill is always active. It runs as the first layer before any other processing.
|