@leejungkiin/awkit 1.7.1 → 1.7.4
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/bin/awk.js +576 -84
- package/core/CLAUDE.md +1 -1
- package/core/GEMINI.md +148 -167
- package/core/GEMINI.md.bak +149 -116
- package/core/skill-runtime-manifest.json +3 -0
- package/docs/Claude Fable 5.md +3826 -0
- package/docs/android_kotlin_system_instruction.md +210 -0
- package/docs/brainstorm_ponytail_integration.md +146 -0
- package/docs/brainstorm_smart_setup.md +113 -0
- package/docs/deep-research-report (1).md +293 -0
- package/docs/history/GEMINI.v1.md +135 -0
- package/docs/history/brainstorm_antigravity_unified_architecture.v1.md +105 -0
- package/docs/history/implementation_plan.v1.md +58 -0
- package/package.json +4 -1
- package/scripts/artifact-storage.js +130 -0
- package/scripts/automation-gate.js +35 -2
- package/scripts/claude-plan.js +76 -0
- package/scripts/dependency-manager.js +210 -0
- package/scripts/exec-rtk.js +11 -5
- package/scripts/i18n-helper.js +381 -0
- package/scripts/multi-model-pipeline.js +144 -0
- package/skill-packs/mobile-ios/pack.json +4 -2
- package/skill-packs/reverse-engineering/pack.json +1 -0
- package/skills/CATALOG.md +20 -0
- package/skills/GEMINI.md +9 -1
- package/skills/TRIGGER_INDEX.md +10 -0
- package/skills/ai-music/SKILL.md +275 -0
- package/skills/android-re-analyzer/SKILL.md +238 -0
- package/skills/android-re-analyzer/references/api-extraction-patterns.md +119 -0
- package/skills/android-re-analyzer/references/call-flow-analysis.md +176 -0
- package/skills/android-re-analyzer/references/fernflower-usage.md +115 -0
- package/skills/android-re-analyzer/references/jadx-usage.md +116 -0
- package/skills/android-re-analyzer/references/setup-guide.md +221 -0
- package/skills/android-re-analyzer/scripts/check-deps.sh +129 -0
- package/skills/android-re-analyzer/scripts/decompile.sh +375 -0
- package/skills/android-re-analyzer/scripts/find-api-calls.sh +118 -0
- package/skills/android-re-analyzer/scripts/install-dep.sh +448 -0
- package/skills/animal-island-ui-style/SKILL.md +1450 -0
- package/skills/app-store-review-agent/SKILL.md +164 -0
- package/skills/app-store-review-agent/references/guidelines/README.md +154 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/ai_apps.md +37 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/all_apps.md +50 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/crypto_finance.md +31 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/games.md +31 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/health_fitness.md +31 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/kids.md +27 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/macos.md +38 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/social_ugc.md +32 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/subscription_iap.md +34 -0
- package/skills/app-store-review-agent/references/guidelines/by-app-type/vpn.md +18 -0
- package/skills/app-store-review-agent/references/rules/design/minimum_functionality.md +96 -0
- package/skills/app-store-review-agent/references/rules/design/sign_in_with_apple.md +54 -0
- package/skills/app-store-review-agent/references/rules/entitlements/unused_entitlements.md +83 -0
- package/skills/app-store-review-agent/references/rules/metadata/accurate_metadata.md +54 -0
- package/skills/app-store-review-agent/references/rules/metadata/apple_trademark.md +99 -0
- package/skills/app-store-review-agent/references/rules/metadata/china_storefront.md +72 -0
- package/skills/app-store-review-agent/references/rules/metadata/competitor_terms.md +56 -0
- package/skills/app-store-review-agent/references/rules/metadata/subscription_metadata.md +81 -0
- package/skills/app-store-review-agent/references/rules/privacy/privacy_manifest.md +84 -0
- package/skills/app-store-review-agent/references/rules/privacy/unnecessary_data.md +60 -0
- package/skills/app-store-review-agent/references/rules/subscription/misleading_pricing.md +63 -0
- package/skills/app-store-review-agent/references/rules/subscription/missing_tos_pp.md +54 -0
- package/skills/awf-ponytail/SKILL.md +91 -0
- package/skills/awf-ponytail-review/SKILL.md +67 -0
- package/skills/awf-session-restore/SKILL.md +3 -3
- package/skills/brainstorm-agent/SKILL.md +11 -2
- package/skills/brainstorm-agent/templates/brief-template.md +8 -0
- package/skills/claude-planner/SKILL.md +47 -0
- package/skills/code-review/SKILL.md +87 -0
- package/skills/expo-game-development/SKILL.md +163 -0
- package/skills/flutter/LICENSE.txt +202 -0
- package/skills/flutter/SKILL.md +127 -0
- package/skills/flutter-project-creater/LICENSE.txt +202 -0
- package/skills/flutter-project-creater/SKILL.md +106 -0
- package/skills/game-developer/SKILL.md +163 -0
- package/skills/game-developer/references/ecs-patterns.md +501 -0
- package/skills/game-developer/references/multiplayer-networking.md +475 -0
- package/skills/game-developer/references/performance-optimization.md +422 -0
- package/skills/game-developer/references/unity-patterns.md +271 -0
- package/skills/game-developer/references/unreal-cpp.md +352 -0
- package/skills/generate-gui-assets/SKILL.md +305 -0
- package/skills/generate-gui-assets/agents/openai.yaml +4 -0
- package/skills/generate-gui-assets/references/catalog-schema.md +58 -0
- package/skills/generate-gui-assets/references/extraction-techniques.md +21 -0
- package/skills/generate-gui-assets/references/prompt-patterns.md +58 -0
- package/skills/generate-gui-assets/scripts/__pycache__/clean_chroma_edges.cpython-311.pyc +0 -0
- package/skills/generate-gui-assets/scripts/build_gui_contact_sheet.py +51 -0
- package/skills/generate-gui-assets/scripts/clean_chroma_edges.py +262 -0
- package/skills/generate-gui-assets/scripts/copy_approved_icons.py +64 -0
- package/skills/generate-gui-assets/scripts/prepare_gui_asset_run.py +91 -0
- package/skills/generate-gui-assets/scripts/suggest_grid_options.py +63 -0
- package/skills/generate-gui-assets/scripts/validate_gui_catalog.py +50 -0
- package/skills/godot-game-development/SKILL.md +142 -0
- package/skills/hatch-pet/LICENSE.txt +201 -0
- package/skills/hatch-pet/SKILL.md +420 -0
- package/skills/hatch-pet/agents/openai.yaml +4 -0
- package/skills/hatch-pet/references/animation-rows.md +29 -0
- package/skills/hatch-pet/references/codex-pet-contract.md +35 -0
- package/skills/hatch-pet/references/qa-rubric.md +60 -0
- package/skills/hatch-pet/scripts/__pycache__/clean_chroma_edges.cpython-311.pyc +0 -0
- package/skills/hatch-pet/scripts/clean_chroma_edges.py +262 -0
- package/skills/hatch-pet/scripts/compose_atlas.py +150 -0
- package/skills/hatch-pet/scripts/derive_running_left_from_running_right.py +143 -0
- package/skills/hatch-pet/scripts/extract_strip_frames.py +323 -0
- package/skills/hatch-pet/scripts/finalize_pet_run.py +382 -0
- package/skills/hatch-pet/scripts/generate_pet_images.py +287 -0
- package/skills/hatch-pet/scripts/inspect_frames.py +246 -0
- package/skills/hatch-pet/scripts/make_contact_sheet.py +96 -0
- package/skills/hatch-pet/scripts/package_custom_pet.py +108 -0
- package/skills/hatch-pet/scripts/pet_job_status.py +117 -0
- package/skills/hatch-pet/scripts/prepare_pet_run.py +673 -0
- package/skills/hatch-pet/scripts/queue_pet_repairs.py +172 -0
- package/skills/hatch-pet/scripts/record_imagegen_result.py +250 -0
- package/skills/hatch-pet/scripts/render_animation_videos.py +134 -0
- package/skills/hatch-pet/scripts/render_animation_videos.sh +5 -0
- package/skills/hatch-pet/scripts/validate_atlas.py +139 -0
- package/skills/i18n-orchestrator/SKILL.md +37 -0
- package/skills/ios-simulator-skill/SKILL.md +390 -0
- package/skills/ios-simulator-skill/scripts/accessibility_audit.py +300 -0
- package/skills/ios-simulator-skill/scripts/app_launcher.py +326 -0
- package/skills/ios-simulator-skill/scripts/app_state_capture.py +400 -0
- package/skills/ios-simulator-skill/scripts/appearance.py +385 -0
- package/skills/ios-simulator-skill/scripts/build_and_test.py +348 -0
- package/skills/ios-simulator-skill/scripts/clipboard.py +103 -0
- package/skills/ios-simulator-skill/scripts/common/__init__.py +61 -0
- package/skills/ios-simulator-skill/scripts/common/cache_utils.py +289 -0
- package/skills/ios-simulator-skill/scripts/common/device_utils.py +462 -0
- package/skills/ios-simulator-skill/scripts/common/env_config.py +35 -0
- package/skills/ios-simulator-skill/scripts/common/hang_pipeline.py +862 -0
- package/skills/ios-simulator-skill/scripts/common/hang_sessions.py +490 -0
- package/skills/ios-simulator-skill/scripts/common/idb_utils.py +180 -0
- package/skills/ios-simulator-skill/scripts/common/screenshot_utils.py +338 -0
- package/skills/ios-simulator-skill/scripts/container.py +668 -0
- package/skills/ios-simulator-skill/scripts/gesture.py +394 -0
- package/skills/ios-simulator-skill/scripts/hang_watcher.py +1533 -0
- package/skills/ios-simulator-skill/scripts/keyboard.py +391 -0
- package/skills/ios-simulator-skill/scripts/localization_audit.py +483 -0
- package/skills/ios-simulator-skill/scripts/location.py +467 -0
- package/skills/ios-simulator-skill/scripts/log_monitor.py +493 -0
- package/skills/ios-simulator-skill/scripts/model_inspector.py +645 -0
- package/skills/ios-simulator-skill/scripts/navigator.py +461 -0
- package/skills/ios-simulator-skill/scripts/privacy_manager.py +310 -0
- package/skills/ios-simulator-skill/scripts/push_notification.py +240 -0
- package/skills/ios-simulator-skill/scripts/screen_mapper.py +296 -0
- package/skills/ios-simulator-skill/scripts/sim_health_check.sh +245 -0
- package/skills/ios-simulator-skill/scripts/sim_list.py +299 -0
- package/skills/ios-simulator-skill/scripts/simctl_boot.py +312 -0
- package/skills/ios-simulator-skill/scripts/simctl_create.py +316 -0
- package/skills/ios-simulator-skill/scripts/simctl_delete.py +357 -0
- package/skills/ios-simulator-skill/scripts/simctl_erase.py +351 -0
- package/skills/ios-simulator-skill/scripts/simctl_shutdown.py +290 -0
- package/skills/ios-simulator-skill/scripts/simulator_selector.py +375 -0
- package/skills/ios-simulator-skill/scripts/status_bar.py +250 -0
- package/skills/ios-simulator-skill/scripts/test_recorder.py +323 -0
- package/skills/ios-simulator-skill/scripts/visual_diff.py +235 -0
- package/skills/ios-simulator-skill/scripts/xcode/__init__.py +13 -0
- package/skills/ios-simulator-skill/scripts/xcode/builder.py +397 -0
- package/skills/ios-simulator-skill/scripts/xcode/cache.py +204 -0
- package/skills/ios-simulator-skill/scripts/xcode/config.py +178 -0
- package/skills/ios-simulator-skill/scripts/xcode/reporter.py +343 -0
- package/skills/ios-simulator-skill/scripts/xcode/xcresult.py +451 -0
- package/skills/ios-visual-qa-strategist/SKILL.md +111 -0
- package/skills/ios-visual-qa-strategist/agents/openai.yaml +4 -0
- package/skills/ios-visual-qa-strategist/references/ios-tool-selection.md +61 -0
- package/skills/ios-visual-qa-strategist/references/minimal-capture-policy.md +56 -0
- package/skills/ios-visual-qa-strategist/references/visual-reasoning-heuristics.md +53 -0
- package/skills/orchestrator/SKILL.md +0 -20
- package/skills/persistent-storage/SKILL.md +55 -0
- package/skills/short-maker/SKILL.md +23 -0
- package/skills/short-maker/scripts/effects.js +56 -0
- package/skills/short-maker/scripts/shortmaker-bridge.js +332 -0
- package/skills/short-maker/scripts/videomix.js +601 -0
- package/skills/short-maker/templates/hyperframes/cinematic-character.template.html +172 -0
- package/skills/short-maker/templates/hyperframes/index.template.html +194 -0
- package/skills/smali-to-kotlin/SKILL.md +128 -0
- package/skills/smali-to-kotlin/examples/getting-started/tech-stack.md +58 -0
- package/skills/smali-to-kotlin/examples/pipeline/data-ui-parity.md +118 -0
- package/skills/smali-to-kotlin/examples/pipeline/scanner-and-bootstrap.md +106 -0
- package/skills/smali-to-kotlin/library-patterns.md +189 -0
- package/skills/smali-to-kotlin/phase-0-discovery.md +128 -0
- package/skills/smali-to-kotlin/phase-1-architecture.md +166 -0
- package/skills/smali-to-kotlin/phase-2-blueprint-ui.md +347 -0
- package/skills/smali-to-kotlin/phase-2-blueprint.md +228 -0
- package/skills/smali-to-kotlin/phase-3-build.md +248 -0
- package/skills/smali-to-kotlin/phase-3-logic-build.md +268 -0
- package/skills/smali-to-kotlin/smali-reading-guide.md +310 -0
- package/skills/smali-to-kotlin/templates/app-map.md +101 -0
- package/skills/smali-to-kotlin/templates/architecture.md +142 -0
- package/skills/smali-to-kotlin/templates/blueprint.md +145 -0
- package/skills/spec-gate/SKILL.md +6 -2
- package/skills/symphony-enforcer/SKILL.md +8 -0
- package/skills/symphony-enforcer/examples/mindful-stop.md +2 -0
- package/skills/symphony-enforcer/examples/three-phase.md +16 -0
- package/skills/symphony-enforcer/examples/trigger-points.md +7 -1
- package/skills/unity-game-development/SKILL.md +231 -0
- package/skills/video-edit/SKILL.md +36 -0
- package/skills/video-edit/scripts/video_edit.py +324 -0
- package/templates/project-identity/android.json +2 -2
- package/templates/project-identity/backend-nestjs.json +2 -2
- package/templates/project-identity/expo.json +2 -2
- package/templates/project-identity/ios.json +2 -2
- package/templates/project-identity/web-nextjs.json +2 -2
- package/templates/setup-mapping.json +48 -0
- package/templates/specs/design-template.md +161 -71
- package/templates/specs/requirements-template.md +65 -133
- package/templates/specs/task-spec-template.xml +3 -0
- package/workflows/_uncategorized/critic.md +40 -0
- package/workflows/_uncategorized/git-rebase-flow.md +81 -0
- package/workflows/_uncategorized/image-gen.md +118 -0
- package/workflows/_uncategorized/multi-model-pipeline.md +60 -0
- package/workflows/_uncategorized/pixel-gen.md +86 -0
- package/workflows/_uncategorized/pixel-setup.md +90 -0
- package/workflows/_uncategorized/ponytail-review.md +59 -0
- package/workflows/_uncategorized/reverse-android-build.md +222 -0
- package/workflows/_uncategorized/reverse-android-design.md +139 -0
- package/workflows/_uncategorized/reverse-android-discover.md +150 -0
- package/workflows/_uncategorized/reverse-android-scan.md +158 -0
- package/workflows/_uncategorized/reverse-android.md +143 -0
- package/workflows/_uncategorized/reverse-ios-build.md +240 -0
- package/workflows/_uncategorized/reverse-ios-design.md +112 -0
- package/workflows/_uncategorized/reverse-ios-discover.md +120 -0
- package/workflows/_uncategorized/reverse-ios-scan.md +155 -0
- package/workflows/_uncategorized/reverse-ios.md +152 -0
- package/workflows/_uncategorized/safety-router.md +34 -0
- package/workflows/_uncategorized/teach.md +89 -0
- package/workflows/_uncategorized/verify-ui.md +53 -0
- package/workflows/_uncategorized/visualize-screenshots.md +34 -0
- package/workflows/ads/ads-analyst.md +201 -0
- package/workflows/ads/ads-audit.md +106 -0
- package/workflows/ads/ads-optimize.md +97 -0
- package/workflows/ads/ads-targeting.md +241 -0
- package/workflows/ads/adsExpert.md +160 -0
- package/workflows/ads/smali-ads-config.md +400 -0
- package/workflows/ads/smali-ads-flow.md +331 -0
- package/workflows/ads/smali-ads-interstitial.md +377 -0
- package/workflows/ads/smali-ads-native.md +382 -0
- package/workflows/context/teach.md +89 -0
- package/workflows/gitnexus.md +8 -8
- package/workflows/lifecycle/brainstorm.md +43 -0
- package/workflows/lifecycle/code.md +5 -0
- package/workflows/lifecycle/init.md +23 -5
- package/workflows/lifecycle/multi-model-pipeline.md +60 -0
- package/workflows/quality/ponytail-review.md +59 -0
- package/workflows/roles/critic.md +40 -0
- package/workflows/roles/safety-router.md +34 -0
|
@@ -62,12 +62,16 @@ OPTIONAL: TECH-SPEC.md, existing DB schema, NeuralMemory context
|
|
|
62
62
|
|
|
63
63
|
## 🔄 PROCESS (8 Phases)
|
|
64
64
|
|
|
65
|
-
### Phase 1: Context Gathering (Silent)
|
|
65
|
+
### Phase 1: Context Gathering & Planning Route (Silent)
|
|
66
66
|
- **Kiro check first** → .kiro/specs/design.md → AUTO-PASS Gate 2
|
|
67
|
+
- **Claude Planner check (New):** Invoke `claude-planner` skill to delegate planning to Claude CLI.
|
|
68
|
+
- If Claude CLI is installed & authenticated: Execute script to create `implementation_plan.md` via Claude Opus.
|
|
69
|
+
- If Claude CLI is missing/expired: Fall back immediately to planning using the current active model.
|
|
67
70
|
- Fallback: Read BRIEF.md → extract entities, relationships, rules
|
|
68
71
|
- Read .project-identity, TECH-SPEC.md, NeuralMemory
|
|
69
72
|
|
|
70
73
|
### Phase 2: Data Model Design
|
|
74
|
+
- Use either the plan generated by Claude (if successful) or model-generated plan.
|
|
71
75
|
- Per entity: Fields, Indexes, Relationships, Constraints
|
|
72
76
|
- Template → `templates/design-templates.md`
|
|
73
77
|
|
|
@@ -121,7 +125,7 @@ always_do:
|
|
|
121
125
|
TRIGGERED BY: orchestrator (Gate 2 check fail)
|
|
122
126
|
DEPENDS ON: brainstorm-agent output (Gate 1 must pass)
|
|
123
127
|
FEEDS INTO: symphony-enforcer (Gate 3)
|
|
124
|
-
WORKS WITH: nm-memory-sync
|
|
128
|
+
WORKS WITH: nm-memory-sync, claude-planner
|
|
125
129
|
```
|
|
126
130
|
|
|
127
131
|
---
|
|
@@ -67,6 +67,14 @@ THREE-PHASE MAPPING (Gate 4 — COMPLEX tasks với UI):
|
|
|
67
67
|
- Phase C all features done → report_progress(90%) → Gate 5
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
+
## State Handoff Protocol (Context-Rich Tasks)
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
BẮT BUỘC lưu context vào task description (`-d`) để tránh quét lại project:
|
|
74
|
+
- Khi tạo task: Kèm `Files:` và `Anchor:` symbol.
|
|
75
|
+
- Khi dừng/pause task: BẮT BUỘC chạy `symphony task update <id> -d "Files: ... | Anchor: ... | State: ..."` để lưu state hiện tại.
|
|
76
|
+
```
|
|
77
|
+
|
|
70
78
|
## XML Task Spec trong Implementation Plans
|
|
71
79
|
|
|
72
80
|
```xml
|
|
@@ -26,6 +26,7 @@ AI duy trì state xuyên suốt session:
|
|
|
26
26
|
iteration_map = {} # feature_name → count
|
|
27
27
|
tasks_completed = 0 # count tasks done trong session
|
|
28
28
|
last_gate_completed = "" # "phase_c" | "gate_5" | ""
|
|
29
|
+
goal_mode = false # true khi /goal, active Codex goal, hoặc user nói rõ "goal mode"
|
|
29
30
|
```
|
|
30
31
|
|
|
31
32
|
---
|
|
@@ -91,6 +92,7 @@ Khi nhận request chứa trigger keyword:
|
|
|
91
92
|
2. `last_gate_completed` = "phase_c" hoặc "gate_5"
|
|
92
93
|
|
|
93
94
|
```
|
|
95
|
+
IF goal_mode → SKIP REST STOP (note ngắn, tiếp tục goal)
|
|
94
96
|
IF NOT mindful_enabled OR NOT milestone_rest → SKIP (TP4 chạy như cũ)
|
|
95
97
|
|
|
96
98
|
Khi trigger:
|
|
@@ -11,6 +11,7 @@ AI PHẢI duy trì trạng thái phase hiện tại xuyên suốt Gate 4:
|
|
|
11
11
|
current_phase = "A" | "B" | "C" | "none"
|
|
12
12
|
phase_b_confirmed = false | true
|
|
13
13
|
checkpoint_count = 0
|
|
14
|
+
goal_mode = true | false
|
|
14
15
|
```
|
|
15
16
|
|
|
16
17
|
## Auto-Detection: Khi nào kích hoạt Three-Phase?
|
|
@@ -31,6 +32,14 @@ Nếu CẢ HAI điều kiện thỏa:
|
|
|
31
32
|
→ Hiển thị Phase Announcement Block
|
|
32
33
|
```
|
|
33
34
|
|
|
35
|
+
## Goal Mode Override
|
|
36
|
+
|
|
37
|
+
Khi `goal_mode = true` (`/goal`, active Codex goal, hoặc user nói rõ "goal mode"):
|
|
38
|
+
- Three-Phase vẫn chạy, nhưng checkpoint KHÔNG được đặt `BlockedOnUser=true`.
|
|
39
|
+
- Phase B tự verify bằng best-effort visual/build checks rồi chuyển Phase C.
|
|
40
|
+
- Phase C checkpoint được batch/tự verify; chỉ dừng nếu safety, destructive action, data-loss risk, hoặc blocker thật sự.
|
|
41
|
+
- AI PHẢI ghi assumption ngắn vào progress/task state trước khi đi tiếp.
|
|
42
|
+
|
|
34
43
|
## Phase Announcement Block (BẮT BUỘC)
|
|
35
44
|
|
|
36
45
|
Khi kích hoạt Three-Phase, AI PHẢI hiển thị:
|
|
@@ -65,6 +74,12 @@ auto_triggers:
|
|
|
65
74
|
signal: Tất cả [UI] tasks đã done
|
|
66
75
|
action: |
|
|
67
76
|
- ⛔ TRIGGER TP1.7 (Checkpoint)
|
|
77
|
+
- NẾU goal_mode=true:
|
|
78
|
+
+ Tự verify best-effort (build/render/screenshot nếu khả dụng).
|
|
79
|
+
+ Ghi assumption vào task state.
|
|
80
|
+
+ TỰ ĐỘNG CHUYỂN SANG PHASE C (BlockedOnUser=false).
|
|
81
|
+
+ KHÔNG chờ "APPROVE UI".
|
|
82
|
+
+ Bỏ qua các bước manual bên dưới.
|
|
68
83
|
- Đọc `.project-identity` -> `automation.autoQA`
|
|
69
84
|
- NẾU `true` (Autonomous Dev-QA Loop):
|
|
70
85
|
+ Tự start App / render ngầm Component.
|
|
@@ -106,6 +121,7 @@ auto_triggers:
|
|
|
106
121
|
- Bỏ qua TP1.7
|
|
107
122
|
- Chạy Auto-verification khi `autoVerification: false`
|
|
108
123
|
- Chờ user test thủ công khi `autoVerification: true`
|
|
124
|
+
- Goal mode mà dừng chờ approval ở Phase B/C
|
|
109
125
|
|
|
110
126
|
✅ BẮT BUỘC:
|
|
111
127
|
- Luôn announce phase transition rõ ràng
|
|
@@ -81,6 +81,7 @@ File patterns:
|
|
|
81
81
|
## TP1.7: Flexible Checkpoint (Manual vs Auto)
|
|
82
82
|
|
|
83
83
|
**Cấu hình Mode Verification:**
|
|
84
|
+
- Goal mode (`/goal`, active Codex goal, hoặc user nói rõ "goal mode") → checkpoint không chặn. AI tự verify/batch test, ghi assumption, rồi đi tiếp (BlockedOnUser=false).
|
|
84
85
|
- `{"autoVerification": true}` → **Auto Device Checkpoint (ADC)**: Dùng Maestro tự build & chụp screenshot. Tiến thẳng (BlockedOnUser=false).
|
|
85
86
|
- `{"autoVerification": false}` (hoặc không khai báo) → **Manual Checkpoint**: Dừng chờ user test (BlockedOnUser=true). **MẶC ĐỊNH an toàn**.
|
|
86
87
|
|
|
@@ -91,7 +92,12 @@ File patterns:
|
|
|
91
92
|
**Action (Tùy theo Mode):**
|
|
92
93
|
```
|
|
93
94
|
1. Report progress trước: symphony_report_progress(current_task, progress)
|
|
94
|
-
2.
|
|
95
|
+
2. Nếu goal mode đang bật:
|
|
96
|
+
- Announce ngắn: "Goal mode: checkpoint tự verify, tiếp tục."
|
|
97
|
+
- Chạy best-effort verification phù hợp.
|
|
98
|
+
- Ghi assumption/risk vào task state.
|
|
99
|
+
- Continue với BlockedOnUser=false.
|
|
100
|
+
3. Nếu không ở goal mode, kiểm tra cờ `autoVerification` trong .project-identity.
|
|
95
101
|
|
|
96
102
|
=== TRƯỜNG HỢP 1: autoVerification = false (Default Manual) ===
|
|
97
103
|
- Announce "🧪 MANUAL USER TEST CHECKPOINT #{N}"
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unity-game-development
|
|
3
|
+
description: "Expert Unity game development instructions covering MonoBehaviour caching, ScriptableObjects architecture, memory/performance optimizations (no Update instantiations/Find), object pooling, physics FixedUpdate coordination, editor script isolation, and unity-mcp integrations. Keywords: Unity, C#, MonoBehaviour, ScriptableObject, physics, fixedUpdate, compiler directives, object pooling, mobile build, performance profiling."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
trigger: conditional
|
|
6
|
+
activation_keywords:
|
|
7
|
+
- "Unity"
|
|
8
|
+
- "MonoBehaviour"
|
|
9
|
+
- "ScriptableObject"
|
|
10
|
+
- "unity game"
|
|
11
|
+
- "C#"
|
|
12
|
+
- "FixedUpdate"
|
|
13
|
+
- "object pool"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Unity Game Development Skill
|
|
17
|
+
|
|
18
|
+
Expert pair-programming rules and standards for building scalable, high-performance Unity games.
|
|
19
|
+
|
|
20
|
+
## Core Workflow
|
|
21
|
+
|
|
22
|
+
1. **Analyze Requirements** — Identify genre, target platform (mobile, console, web), target performance (30/60/120 FPS), and multiplayer requirements.
|
|
23
|
+
2. **Design Architecture** — Structure component relations, separate pure data configs (ScriptableObjects) from runtime execution (MonoBehaviours), and plan physics layer masks.
|
|
24
|
+
3. **Implement** — Build features using optimized C# patterns, caching components in `Awake()`, and managing scene hierarchies cleanly.
|
|
25
|
+
4. **Optimize** — Profile script CPU execution time and GPU rendering overhead.
|
|
26
|
+
- ⚠️ **Validation Checkpoint**: Run Unity Profiler (CPU Usage & GPU Usage). Verify frame times stay stably $\le$ 16.6ms (60 FPS) on target hardware. Eliminate GC Allocations in hot paths.
|
|
27
|
+
5. **Test** — Validate multiplayer sync (latency/desync) and ensure memory footprints do not cause out-of-memory crashes on target platforms.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 📐 Coding Conventions & C# Standards
|
|
32
|
+
|
|
33
|
+
- **Naming Styles**:
|
|
34
|
+
- `PascalCase` for classes, methods, properties, and public fields.
|
|
35
|
+
- `camelCase` for local variables and method parameters.
|
|
36
|
+
- Private class fields MUST be prefixed with `m_` (e.g., `m_Speed`) or `_` (e.g., `_speed`) for immediate visibility.
|
|
37
|
+
- **Access Modifiers**:
|
|
38
|
+
- Keep fields `private` by default. Use `[SerializeField]` to expose private fields to the Unity Inspector instead of making them `public`.
|
|
39
|
+
- **Component Caching**:
|
|
40
|
+
- Always cache components (e.g., `Rigidbody`, `Collider`, `Animator`) in `Awake()` or `Start()`. NEVER call `GetComponent<T>()` in `Update()`, `FixedUpdate()`, or `LateUpdate()`.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 🛠️ MonoBehaviour Caching & Lifecycle Template
|
|
45
|
+
|
|
46
|
+
```csharp
|
|
47
|
+
using UnityEngine;
|
|
48
|
+
|
|
49
|
+
[RequireComponent(typeof(Rigidbody))]
|
|
50
|
+
public class PlayerController : MonoBehaviour
|
|
51
|
+
{
|
|
52
|
+
[Header("Movement Settings")]
|
|
53
|
+
[SerializeField] private float m_MoveSpeed = 5f;
|
|
54
|
+
[SerializeField] private Transform m_Target;
|
|
55
|
+
|
|
56
|
+
// Cached references
|
|
57
|
+
private Rigidbody m_Rb;
|
|
58
|
+
private Animator m_Animator;
|
|
59
|
+
|
|
60
|
+
private void Awake()
|
|
61
|
+
{
|
|
62
|
+
// Cache references immediately
|
|
63
|
+
m_Rb = GetComponent<Rigidbody>();
|
|
64
|
+
m_Animator = GetComponent<Animator>();
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private void Start()
|
|
68
|
+
{
|
|
69
|
+
// Initialize targets or lookups
|
|
70
|
+
if (m_Target == null)
|
|
71
|
+
{
|
|
72
|
+
var playerObj = GameObject.FindGameObjectWithTag("Player");
|
|
73
|
+
if (playerObj != null)
|
|
74
|
+
{
|
|
75
|
+
m_Target = playerObj.transform;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
private void FixedUpdate()
|
|
81
|
+
{
|
|
82
|
+
if (m_Target == null) return;
|
|
83
|
+
|
|
84
|
+
// Perform physics manipulation in FixedUpdate using fixedDeltaTime
|
|
85
|
+
Vector3 direction = (m_Target.position - transform.position).normalized;
|
|
86
|
+
m_Rb.MovePosition(transform.position + direction * m_MoveSpeed * Time.fixedDeltaTime);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
private void OnDisable()
|
|
90
|
+
{
|
|
91
|
+
// Clean up coroutines, listeners, and event subscriptions to avoid memory leaks
|
|
92
|
+
StopAllCoroutines();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 📦 Data-Driven Design with ScriptableObjects
|
|
100
|
+
|
|
101
|
+
Separate logic from static configuration data. Use `ScriptableObject` instances (`.asset` files) to store config data.
|
|
102
|
+
|
|
103
|
+
```csharp
|
|
104
|
+
// Configuration definition
|
|
105
|
+
[CreateAssetMenu(fileName = "WeaponConfig", menuName = "Configs/Weapon")]
|
|
106
|
+
public class WeaponConfig : ScriptableObject
|
|
107
|
+
{
|
|
108
|
+
public string weaponName;
|
|
109
|
+
public int baseDamage;
|
|
110
|
+
public float fireRate;
|
|
111
|
+
public GameObject projectilePrefab;
|
|
112
|
+
public AudioClip fireSFX;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// MonoBehaviour execution
|
|
116
|
+
public class WeaponManager : MonoBehaviour
|
|
117
|
+
{
|
|
118
|
+
[SerializeField] private WeaponConfig m_Config;
|
|
119
|
+
private float m_NextFireTime;
|
|
120
|
+
|
|
121
|
+
public void Fire()
|
|
122
|
+
{
|
|
123
|
+
if (Time.time < m_NextFireTime) return;
|
|
124
|
+
|
|
125
|
+
// Execute behavior using config data
|
|
126
|
+
Instantiate(m_Config.projectilePrefab, transform.position, transform.rotation);
|
|
127
|
+
m_NextFireTime = Time.time + (1f / m_Config.fireRate);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## ⚡ Memory & Performance Optimization
|
|
135
|
+
|
|
136
|
+
- **Zero Instantiations in Game Loop**:
|
|
137
|
+
- Never call `Instantiate()`, `Destroy()`, `new List()`, or allocate arrays inside `Update()` or `FixedUpdate()`. Use **Object Pools**.
|
|
138
|
+
- **Avoid Raycast Allocation**:
|
|
139
|
+
- Use `Physics.RaycastNonAlloc` instead of `Physics.RaycastAll` to avoid garbage collection pressure.
|
|
140
|
+
- **CompareTag Method**:
|
|
141
|
+
- Use `other.CompareTag("Player")` instead of `other.tag == "Player"`. The latter allocates string memory under the hood.
|
|
142
|
+
|
|
143
|
+
### Object Pooling Pattern
|
|
144
|
+
|
|
145
|
+
Use Unity's built-in `UnityEngine.Pool` or a simple custom implementation:
|
|
146
|
+
|
|
147
|
+
```csharp
|
|
148
|
+
using System.Collections.Generic;
|
|
149
|
+
using UnityEngine;
|
|
150
|
+
|
|
151
|
+
public class ProjectilePool : MonoBehaviour
|
|
152
|
+
{
|
|
153
|
+
[SerializeField] private GameObject m_Prefab;
|
|
154
|
+
[SerializeField] private int m_InitialSize = 20;
|
|
155
|
+
|
|
156
|
+
private Queue<GameObject> m_Pool = new Queue<GameObject>();
|
|
157
|
+
|
|
158
|
+
private void Start()
|
|
159
|
+
{
|
|
160
|
+
for (int i = 0; i < m_InitialSize; i++)
|
|
161
|
+
{
|
|
162
|
+
GameObject obj = Instantiate(m_Prefab, transform);
|
|
163
|
+
obj.SetActive(false);
|
|
164
|
+
m_Pool.Enqueue(obj);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
public GameObject Get()
|
|
169
|
+
{
|
|
170
|
+
if (m_Pool.Count > 0)
|
|
171
|
+
{
|
|
172
|
+
GameObject obj = m_Pool.Dequeue();
|
|
173
|
+
obj.SetActive(true);
|
|
174
|
+
return obj;
|
|
175
|
+
}
|
|
176
|
+
return Instantiate(m_Prefab); // Fallback expansion
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
public void ReturnToPool(GameObject obj)
|
|
180
|
+
{
|
|
181
|
+
obj.SetActive(false);
|
|
182
|
+
m_Pool.Enqueue(obj);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 🔒 Editor Scripting & Conditional Compilation
|
|
190
|
+
|
|
191
|
+
Always isolate Editor-only scripts (e.g. Inspector customizations) to prevent build compile failures:
|
|
192
|
+
- Place Editor scripts inside a directory named `Editor/`.
|
|
193
|
+
- Or wrap Editor-only code blocks using compiler directives:
|
|
194
|
+
```csharp
|
|
195
|
+
#if UNITY_EDITOR
|
|
196
|
+
using UnityEditor;
|
|
197
|
+
#endif
|
|
198
|
+
|
|
199
|
+
public class CustomTool : MonoBehaviour
|
|
200
|
+
{
|
|
201
|
+
public void ResetProgress()
|
|
202
|
+
{
|
|
203
|
+
// ...
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
#if UNITY_EDITOR
|
|
208
|
+
[CustomEditor(typeof(CustomTool))]
|
|
209
|
+
public class CustomToolEditor : Editor
|
|
210
|
+
{
|
|
211
|
+
public override void OnInspectorGUI()
|
|
212
|
+
{
|
|
213
|
+
DrawDefaultInspector();
|
|
214
|
+
CustomTool tool = (CustomTool)target;
|
|
215
|
+
if (GUILayout.Button("Reset Progress"))
|
|
216
|
+
{
|
|
217
|
+
tool.ResetProgress();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
#endif
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 🔌 Unity MCP Integration (Advanced)
|
|
227
|
+
|
|
228
|
+
To inspect scenes, nodes, and modify properties programmatically inside the editor:
|
|
229
|
+
1. Ensure the Unity Editor is running the [Unity MCP Server](https://github.com/justinpbarnett/unity-mcp).
|
|
230
|
+
2. Configure Cursor/Claude `mcp_config.json` with the relay connection.
|
|
231
|
+
3. Use the MCP tools prefixed with `mcp__unity__` to query the active hierarchy.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: video-edit
|
|
3
|
+
description: "Biên tập video dọc (9:16) từ EDL JSON: cắt shot, nhạc nền, captions PNG (không dùng drawtext), decor overlays, guardrail chống timeline vô hạn."
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
trigger: conditional
|
|
6
|
+
activation_keywords:
|
|
7
|
+
- "biên tập video"
|
|
8
|
+
- "render video"
|
|
9
|
+
- "dựng video"
|
|
10
|
+
- "caption video"
|
|
11
|
+
- "edit video"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
python ~/.gemini/antigravity/skills/video-edit/scripts/video_edit.py render \
|
|
18
|
+
--edl <path-to-edl.json> \
|
|
19
|
+
--project-root <repo-root> \
|
|
20
|
+
--out <output.mp4> \
|
|
21
|
+
--preset cinematic \
|
|
22
|
+
--crf 23 \
|
|
23
|
+
--badge tip --badge-duration 3
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Requirements
|
|
27
|
+
|
|
28
|
+
- ffmpeg + ffprobe on PATH
|
|
29
|
+
- Python + Pillow (PIL)
|
|
30
|
+
- Fonts in `<repo-root>/assets/fonts/` (fallback to macOS Arial)
|
|
31
|
+
- Optional overlays in `<repo-root>/assets/overlays/`
|
|
32
|
+
|
|
33
|
+
## Notes
|
|
34
|
+
|
|
35
|
+
- Không dùng `drawtext` để tránh lỗi thiếu filter trên một số bản ffmpeg.
|
|
36
|
+
- Guardrails: mỗi PNG overlay input được giới hạn `-t`, và output bị `trim` + `-shortest` để không bao giờ kéo dài vô hạn.
|