@leejungkiin/awkit 1.4.0 → 1.4.2
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 +432 -6
- package/bin/claude-generators.js +122 -0
- package/core/AGENTS.md +16 -0
- package/core/CLAUDE.md +155 -0
- package/core/GEMINI.md +44 -9
- package/package.json +1 -1
- package/skills/ai-sprite-maker/SKILL.md +81 -0
- package/skills/ai-sprite-maker/scripts/animate_sprite.py +102 -0
- package/skills/ai-sprite-maker/scripts/process_sprites.py +140 -0
- package/skills/code-review/SKILL.md +21 -33
- package/skills/lucylab-tts/SKILL.md +64 -0
- package/skills/lucylab-tts/resources/voices_library.json +908 -0
- package/skills/lucylab-tts/scripts/.env +1 -0
- package/skills/lucylab-tts/scripts/lucylab_tts.py +506 -0
- package/skills/orchestrator/SKILL.md +5 -0
- package/skills/short-maker/SKILL.md +150 -0
- package/skills/short-maker/_backup/storyboard.html +106 -0
- package/skills/short-maker/_backup/video_mixer.py +296 -0
- package/skills/short-maker/outputs/fitbite-promo/background.jpg +0 -0
- package/skills/short-maker/outputs/fitbite-promo/final/promo-final.mp4 +0 -0
- package/skills/short-maker/outputs/fitbite-promo/script.md +19 -0
- package/skills/short-maker/outputs/fitbite-promo/segments/scene-01.mp4 +0 -0
- package/skills/short-maker/outputs/fitbite-promo/segments/scene-02.mp4 +0 -0
- package/skills/short-maker/outputs/fitbite-promo/segments/scene-03.mp4 +0 -0
- package/skills/short-maker/outputs/fitbite-promo/segments/scene-04.mp4 +0 -0
- package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-01.png +0 -0
- package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-02.png +0 -0
- package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-03.png +0 -0
- package/skills/short-maker/outputs/fitbite-promo/storyboard/scene-04.png +0 -0
- package/skills/short-maker/outputs/fitbite-promo/storyboard.html +133 -0
- package/skills/short-maker/outputs/fitbite-promo/storyboard.json +38 -0
- package/skills/short-maker/outputs/fitbite-promo/temp/merged_chroma.mp4 +0 -0
- package/skills/short-maker/outputs/fitbite-promo/temp/merged_crossfaded.mp4 +0 -0
- package/skills/short-maker/outputs/fitbite-promo/temp/ready_00.mp4 +0 -0
- package/skills/short-maker/outputs/fitbite-promo/temp/ready_01.mp4 +0 -0
- package/skills/short-maker/outputs/fitbite-promo/temp/ready_02.mp4 +0 -0
- package/skills/short-maker/outputs/fitbite-promo/temp/ready_03.mp4 +0 -0
- package/skills/short-maker/outputs/fitbite-promo/tts/manifest.json +31 -0
- package/skills/short-maker/outputs/fitbite-promo/tts/scene-01.wav +0 -0
- package/skills/short-maker/outputs/fitbite-promo/tts/scene-02.wav +0 -0
- package/skills/short-maker/outputs/fitbite-promo/tts/scene-03.wav +0 -0
- package/skills/short-maker/outputs/fitbite-promo/tts/scene-04.wav +0 -0
- package/skills/short-maker/outputs/fitbite-promo/tts_script.txt +11 -0
- package/skills/short-maker/scripts/google-flow-cli/.project-identity +41 -0
- package/skills/short-maker/scripts/google-flow-cli/.trae/rules/project_rules.md +52 -0
- package/skills/short-maker/scripts/google-flow-cli/CODEBASE.md +67 -0
- package/skills/short-maker/scripts/google-flow-cli/GoogleFlowCli.code-workspace +29 -0
- package/skills/short-maker/scripts/google-flow-cli/README.md +168 -0
- package/skills/short-maker/scripts/google-flow-cli/docs/specs/PROJECT.md +12 -0
- package/skills/short-maker/scripts/google-flow-cli/docs/specs/REQUIREMENTS.md +22 -0
- package/skills/short-maker/scripts/google-flow-cli/docs/specs/ROADMAP.md +16 -0
- package/skills/short-maker/scripts/google-flow-cli/docs/specs/TECH-SPEC.md +13 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/__init__.py +3 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/api/__init__.py +19 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/api/client.py +1921 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/api/models.py +64 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/api/rpc_ids.py +98 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/auth/__init__.py +15 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/auth/browser_auth.py +692 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/auth/humanizer.py +417 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/auth/proxy_ext.py +120 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/auth/recaptcha.py +482 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/batchexecute/__init__.py +5 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/batchexecute/client.py +414 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/cli/__init__.py +1 -0
- package/skills/short-maker/scripts/google-flow-cli/gflow/cli/main.py +1075 -0
- package/skills/short-maker/scripts/google-flow-cli/pyproject.toml +36 -0
- package/skills/short-maker/scripts/google-flow-cli/script.txt +22 -0
- package/skills/short-maker/scripts/google-flow-cli/tests/__init__.py +0 -0
- package/skills/short-maker/scripts/google-flow-cli/tests/test_batchexecute.py +113 -0
- package/skills/short-maker/scripts/google-flow-cli/tests/test_client.py +190 -0
- package/skills/short-maker/templates/aida_script.md +40 -0
- package/skills/short-maker/templates/mimic_analyzer.md +29 -0
- package/skills/single-flow-task-execution/SKILL.md +9 -6
- package/skills/skill-creator/SKILL.md +44 -0
- package/skills/spm-build-analysis/SKILL.md +92 -0
- package/skills/spm-build-analysis/references/build-optimization-sources.md +155 -0
- package/skills/spm-build-analysis/references/recommendation-format.md +85 -0
- package/skills/spm-build-analysis/references/spm-analysis-checks.md +105 -0
- package/skills/spm-build-analysis/scripts/check_spm_pins.py +118 -0
- package/skills/symphony-enforcer/SKILL.md +51 -83
- package/skills/symphony-orchestrator/SKILL.md +1 -1
- package/skills/trello-sync/SKILL.md +27 -28
- package/skills/verification-gate/SKILL.md +13 -2
- package/skills/xcode-build-benchmark/SKILL.md +88 -0
- package/skills/xcode-build-benchmark/references/benchmark-artifacts.md +94 -0
- package/skills/xcode-build-benchmark/references/benchmarking-workflow.md +67 -0
- package/skills/xcode-build-benchmark/schemas/build-benchmark.schema.json +230 -0
- package/skills/xcode-build-benchmark/scripts/benchmark_builds.py +308 -0
- package/skills/xcode-build-fixer/SKILL.md +218 -0
- package/skills/xcode-build-fixer/references/build-settings-best-practices.md +216 -0
- package/skills/xcode-build-fixer/references/fix-patterns.md +290 -0
- package/skills/xcode-build-fixer/references/recommendation-format.md +85 -0
- package/skills/xcode-build-fixer/scripts/benchmark_builds.py +308 -0
- package/skills/xcode-build-orchestrator/SKILL.md +156 -0
- package/skills/xcode-build-orchestrator/references/benchmark-artifacts.md +94 -0
- package/skills/xcode-build-orchestrator/references/build-settings-best-practices.md +216 -0
- package/skills/xcode-build-orchestrator/references/orchestration-report-template.md +143 -0
- package/skills/xcode-build-orchestrator/references/recommendation-format.md +85 -0
- package/skills/xcode-build-orchestrator/scripts/benchmark_builds.py +308 -0
- package/skills/xcode-build-orchestrator/scripts/diagnose_compilation.py +273 -0
- package/skills/xcode-build-orchestrator/scripts/generate_optimization_report.py +533 -0
- package/skills/xcode-compilation-analyzer/SKILL.md +89 -0
- package/skills/xcode-compilation-analyzer/references/build-optimization-sources.md +155 -0
- package/skills/xcode-compilation-analyzer/references/code-compilation-checks.md +106 -0
- package/skills/xcode-compilation-analyzer/references/recommendation-format.md +85 -0
- package/skills/xcode-compilation-analyzer/scripts/diagnose_compilation.py +273 -0
- package/skills/xcode-project-analyzer/SKILL.md +76 -0
- package/skills/xcode-project-analyzer/references/build-optimization-sources.md +155 -0
- package/skills/xcode-project-analyzer/references/build-settings-best-practices.md +216 -0
- package/skills/xcode-project-analyzer/references/project-audit-checks.md +101 -0
- package/skills/xcode-project-analyzer/references/recommendation-format.md +85 -0
- package/templates/project-identity/android.json +0 -10
- package/templates/project-identity/backend-nestjs.json +0 -10
- package/templates/project-identity/expo.json +0 -10
- package/templates/project-identity/ios.json +0 -10
- package/templates/project-identity/web-nextjs.json +0 -10
- package/workflows/_uncategorized/ship-to-code.md +85 -0
- package/workflows/context/codebase-sync.md +10 -87
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_comments": {
|
|
3
|
-
"projectId": "Auto-generated from folder name. DO NOT change — used by Symphony for task scoping.",
|
|
4
|
-
"trello": "Fill in your Trello board/list/card names. Run 'awkit trello info' to verify."
|
|
5
|
-
},
|
|
6
2
|
"projectName": "MyBackendAPI",
|
|
7
|
-
"projectId": "mybackendapi",
|
|
8
3
|
"projectType": "backend",
|
|
9
4
|
"primaryLanguage": "en",
|
|
10
5
|
"techStack": {
|
|
@@ -17,11 +12,6 @@
|
|
|
17
12
|
"testing": "Jest",
|
|
18
13
|
"deployment": "Docker + Cloud Run"
|
|
19
14
|
},
|
|
20
|
-
"trello": {
|
|
21
|
-
"board": "Your Board Name",
|
|
22
|
-
"list": "Your List Name",
|
|
23
|
-
"card": "Your Card Name"
|
|
24
|
-
},
|
|
25
15
|
"projectStage": "planning",
|
|
26
16
|
"codingStandards": {
|
|
27
17
|
"language": "en",
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_comments": {
|
|
3
|
-
"projectId": "Auto-generated from folder name. DO NOT change — used by Symphony for task scoping.",
|
|
4
|
-
"trello": "Fill in your Trello board/list/card names. Run 'awkit trello info' to verify."
|
|
5
|
-
},
|
|
6
2
|
"projectName": "MyExpoApp",
|
|
7
|
-
"projectId": "myexpoapp",
|
|
8
3
|
"projectType": "expo",
|
|
9
4
|
"bundleIdentifier": "com.company.myexpoapp",
|
|
10
5
|
"primaryLanguage": "en",
|
|
@@ -20,11 +15,6 @@
|
|
|
20
15
|
"testing": "Jest + Detox",
|
|
21
16
|
"build": "EAS Build"
|
|
22
17
|
},
|
|
23
|
-
"trello": {
|
|
24
|
-
"board": "Your Board Name",
|
|
25
|
-
"list": "Your List Name",
|
|
26
|
-
"card": "Your Card Name"
|
|
27
|
-
},
|
|
28
18
|
"projectStage": "planning",
|
|
29
19
|
"codingStandards": {
|
|
30
20
|
"language": "en",
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_comments": {
|
|
3
|
-
"projectId": "Auto-generated from folder name. DO NOT change — used by Symphony for task scoping.",
|
|
4
|
-
"trello": "Fill in your Trello board/list/card names. Run 'awkit trello info' to verify."
|
|
5
|
-
},
|
|
6
2
|
"projectName": "MyiOSApp",
|
|
7
|
-
"projectId": "myiosapp",
|
|
8
3
|
"projectType": "ios",
|
|
9
4
|
"bundleIdentifier": "com.company.myiosapp",
|
|
10
5
|
"primaryLanguage": "en",
|
|
@@ -20,11 +15,6 @@
|
|
|
20
15
|
"testing": "XCTest",
|
|
21
16
|
"packageManager": "SPM"
|
|
22
17
|
},
|
|
23
|
-
"trello": {
|
|
24
|
-
"board": "Your Board Name",
|
|
25
|
-
"list": "Your List Name",
|
|
26
|
-
"card": "Your Card Name"
|
|
27
|
-
},
|
|
28
18
|
"projectStage": "planning",
|
|
29
19
|
"codingStandards": {
|
|
30
20
|
"language": "en",
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_comments": {
|
|
3
|
-
"projectId": "Auto-generated from folder name. DO NOT change — used by Symphony for task scoping.",
|
|
4
|
-
"trello": "Fill in your Trello board/list/card names. Run 'awkit trello info' to verify."
|
|
5
|
-
},
|
|
6
2
|
"projectName": "MyWebApp",
|
|
7
|
-
"projectId": "mywebapp",
|
|
8
3
|
"projectType": "react_web",
|
|
9
4
|
"primaryLanguage": "en",
|
|
10
5
|
"techStack": {
|
|
@@ -17,11 +12,6 @@
|
|
|
17
12
|
"auth": "NextAuth.js",
|
|
18
13
|
"deployment": "Vercel"
|
|
19
14
|
},
|
|
20
|
-
"trello": {
|
|
21
|
-
"board": "Your Board Name",
|
|
22
|
-
"list": "Your List Name",
|
|
23
|
-
"card": "Your Card Name"
|
|
24
|
-
},
|
|
25
15
|
"projectStage": "planning",
|
|
26
16
|
"codingStandards": {
|
|
27
17
|
"language": "en",
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 🚢 Chuyển đổi mã nguồn từ ngôn ngữ bất kỳ sang ngôn ngữ bất kỳ với cấu trúc hiện đại.
|
|
3
|
+
skill: ship-to-code
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /ship-to-code — Universal Code Porting Workflow
|
|
7
|
+
|
|
8
|
+
> **Skill:** `ship-to-code` v1.0 | **Tech:** Agnostic (Any-to-Any)
|
|
9
|
+
> **Philosophy:** "Map Dependencies → Bootstrap Architecture → Translate Idiomatically → Parity Check"
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## ⚡ QUICK START
|
|
14
|
+
|
|
15
|
+
User cung cấp: Source code hoặc thư mục chứa codebase cũ, và cho biết NGÔN NGỮ NGUỒN + NGÔN NGỮ ĐÍCH.
|
|
16
|
+
Ví dụ:
|
|
17
|
+
- "Dịch folder này từ Java sang Go"
|
|
18
|
+
- "/ship-to-code từ Python Django sang Node.js NestJS"
|
|
19
|
+
- "Dùng codebase Ruby làm tham chiếu để viết lại bằng Rust"
|
|
20
|
+
|
|
21
|
+
Workflow dẫn dắt qua pipeline **6 Phases** để đảm bảo quá trình chuyển đổi an toàn, kiến trúc chuẩn xác, và không bị thất thoát business logic.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 🔵 Session Setup
|
|
26
|
+
|
|
27
|
+
### Bước 0.1: Khởi tạo session state
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
porting_session:
|
|
31
|
+
source_lang: "[Nguồn]"
|
|
32
|
+
target_lang: "[Đích]"
|
|
33
|
+
source_dir: "[path_to_source]"
|
|
34
|
+
current_phase: 0
|
|
35
|
+
dependency_matrix: pending
|
|
36
|
+
completed_modules: []
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Bước 0.2: Xác nhận input
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
🚢 Universal Code Porting v1.0
|
|
43
|
+
|
|
44
|
+
Xin chào! Để đảm bảo tính chính xác cho quá trình migrate (vừa không rớt logic, vừa chuẩn idiomatic code), cho phép em hỏi để map cấu trúc:
|
|
45
|
+
1. Thư mục chứa code nguồn cũ nằm ở đâu trên máy anh?
|
|
46
|
+
2. Ngôn ngữ / Framework gốc là gì?
|
|
47
|
+
3. Trọng tâm của framework / kiến trúc đích anh đang hướng đến là gì? (Ví dụ: Go standard layout vs NestJS Clean Architecture)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 📋 Pipeline Overview (6 Phases)
|
|
53
|
+
|
|
54
|
+
| Phase | Name | Focus | Output |
|
|
55
|
+
|-------|------|-------|--------|
|
|
56
|
+
| 0 | 🔍 Ecosystem Mapping | Quét configuration dependencies của code cũ, đề xuất specs/thư viện thay thế. | Dependency Matrix |
|
|
57
|
+
| 1 | 🏗️ Architecture Design | Phân tích app entry points, lifecycle. Thiết kế cấu trúc thư mục mới phù hợp môi trường đích. | Project Scaffold |
|
|
58
|
+
| 2 | 💾 Data & Domain | Port Database schemas/Migrations, Models/DTOs, API Clients, Core Repositories. | Stable Data Layer |
|
|
59
|
+
| 3 | 🧮 Logic & Utils | Dịch thuật toán, mã hóa crypto, helper functions. **PHẢI có Unit Tests**. | Logic + Test Parity |
|
|
60
|
+
| 4 | 🎨 Presentation/Controllers | Dịch Controllers/Routes (Backend) hoặc UI Components (Frontend/Mobile). | Final UX / Routes |
|
|
61
|
+
| 5 | ✅ Final Parity | Kiểm tra Branch coverage của edge-cases. Rà soát Data/Params Parity. | Ready to Deploy |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 🔬 EXECUTION RULES
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
never_skip:
|
|
69
|
+
- Phase 0 (Mapping) — Bắt buộc phải ánh xạ thư viện Nguồn → Đích rõ ràng trước khi code.
|
|
70
|
+
- Viết Unit Tests ở Phase 3 cho các utility xử lý chuỗi/mã hóa/thời gian.
|
|
71
|
+
|
|
72
|
+
never_do:
|
|
73
|
+
- Dịch "word-by-word" (Line-by-line syntax translation).
|
|
74
|
+
Ví dụ: Không bê nguyên class tĩnh Java sang Go, không xài `try-catch` ép buộc trong Rust, v.v.
|
|
75
|
+
- Tự ý bỏ qua các nhánh (if-else, try-catch) bắt lỗi ngầm trong codebase gốc.
|
|
76
|
+
|
|
77
|
+
always_do:
|
|
78
|
+
- Report / Xin phép chỉ đạo sau mỗi Phase trước khi qua Phase mới.
|
|
79
|
+
- Viết code **Idiomatic** — áp dụng convention, design patterns và best practices riêng biệt và tự nhiên nhất của NGÔN NGỮ ĐÍCH.
|
|
80
|
+
- Đảm bảo I/O Parity (mọi Response Data, Crypto Hash) trả về phải GIỐNG Y HỆT API/Logic nguồn.
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
*ship-to-code workflow v1.0.0 — Any-to-Any Porting Pipeline*
|
|
@@ -23,102 +23,25 @@ MANUAL trigger:
|
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
26
|
-
## Phase
|
|
26
|
+
## Execution Phase: Delegate to Gemini CLI
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
# 1. Đọc CODEBASE.md hiện tại
|
|
30
|
-
cat CODEBASE.md
|
|
31
|
-
|
|
32
|
-
# 2. Check git: files changed/added gần đây (14 ngày)
|
|
33
|
-
git log --since="14 days ago" --name-only --pretty=format: | sort -u | grep -v '^$'
|
|
34
|
-
|
|
35
|
-
# 3. Lấy session file edits từ memory-sync W6
|
|
36
|
-
cat brain/session.json | grep files_touched_this_session
|
|
37
|
-
|
|
38
|
-
# 4. Check new files không có trong CODEBASE.md
|
|
39
|
-
# AI tự compare danh sách git + session với entries trong CODEBASE.md
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
**Output:**
|
|
43
|
-
```
|
|
44
|
-
📊 CODEBASE Sync Assessment:
|
|
45
|
-
- Files in CODEBASE.md: [N files documented]
|
|
46
|
-
- New/changed files (14d): [M files]
|
|
47
|
-
- Missing from CODEBASE.md: [K files listed]
|
|
48
|
-
- Last updated: [date from CODEBASE.md]
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Phase 2: Generate Delta
|
|
54
|
-
|
|
55
|
-
Với mỗi file thiếu trong CODEBASE.md, AI tự suy luận:
|
|
56
|
-
|
|
57
|
-
```yaml
|
|
58
|
-
for each missing_file:
|
|
59
|
-
1. Xác định layer:
|
|
60
|
-
- App/ → App Layer
|
|
61
|
-
- Core/Domain/ → Domain Layer
|
|
62
|
-
- Core/Data/ → Data Layer
|
|
63
|
-
- Core/Services/ → Services Layer
|
|
64
|
-
- Features/[X]/ → Features Layer
|
|
65
|
-
- Presentation/Views/ → Views
|
|
66
|
-
- Presentation/ViewModels/ → ViewModels
|
|
67
|
-
|
|
68
|
-
2. Xác định responsibility từ:
|
|
69
|
-
- Filename (AuthenticationViewModel → Auth UI logic)
|
|
70
|
-
- Directory (Core/Domain/UseCases → Business logic)
|
|
71
|
-
- Content (nếu cần, đọc file — chỉ khi không đủ context)
|
|
72
|
-
|
|
73
|
-
3. Generate entry:
|
|
74
|
-
- File: path/to/File.swift
|
|
75
|
-
- Layer: [layer name]
|
|
76
|
-
- Purpose: [1-line description]
|
|
77
|
-
- Key exports: [main class/struct/func]
|
|
78
|
-
|
|
79
|
-
4. Xác định section trong CODEBASE.md phù hợp để append
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Phase 3: Update CODEBASE.md
|
|
28
|
+
Thực thi workflow bằng cách gọi Gemini CLI để tận dụng LLM phân tích chuyên sâu mà không làm ảnh hưởng context của Antigravity. Gemini CLI sẽ tự check file, tính toán delta và cập nhật `CODEBASE.md`.
|
|
85
29
|
|
|
86
30
|
> [!IMPORTANT]
|
|
87
|
-
> CODEBASE.md dùng **compact format**
|
|
31
|
+
> CODEBASE.md dùng **compact format** dạng bảng.
|
|
88
32
|
> KHÔNG dùng format verbose (multi-line per file).
|
|
89
33
|
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
- APPEND vào đúng section, không xóa gì cũ
|
|
93
|
-
- Update "Last Updated" timestamp
|
|
94
|
-
- Nếu thêm feature mới → thêm section mới
|
|
95
|
-
|
|
96
|
-
Compact Format (BẮT BUỘC):
|
|
97
|
-
Mỗi file = 1 dòng trong table:
|
|
98
|
-
| `path/to/File.swift` | Purpose mô tả ngắn (1 câu) |
|
|
99
|
-
|
|
100
|
-
Ví dụ:
|
|
101
|
-
| `Core/Services/PushNotificationService.swift` | FCM push notification registration & handling |
|
|
102
|
-
| `Features/WeeklyGoal/ViewModels/WeeklyGoalVM.swift` | Weekly goal progress tracking logic |
|
|
103
|
-
|
|
104
|
-
❌ KHÔNG dùng format cũ:
|
|
105
|
-
#### FileName.swift
|
|
106
|
-
**Layer:** ...
|
|
107
|
-
**Purpose:** ...
|
|
108
|
-
**Key class:** ...
|
|
109
|
-
|
|
110
|
-
Footer update:
|
|
111
|
-
**Last Updated**: [current date]
|
|
112
|
-
**Sync:** Auto-updated via /codebase-sync
|
|
34
|
+
```bash
|
|
35
|
+
gemini -p "Đọc CODEBASE.md, git log (14 ngày gần nhất), và brain/session.json. So sánh để tìm các file mới/bị sửa nhưng chưa có trong CODEBASE.md. Suy luận Layer và Purpose cho mỗi file. Sinh ra Delta dưới dạng bảng (compact format) và APPEND vào CODEBASE.md. Cập nhật ngày Last Updated." --approval-mode auto
|
|
113
36
|
```
|
|
114
37
|
|
|
115
|
-
**
|
|
38
|
+
**Output mong đợi từ Gemini CLI:**
|
|
116
39
|
```
|
|
117
|
-
|
|
118
|
-
+ Core/Services/PushNotificationService.swift → FCM push notification
|
|
119
|
-
+ Features/WeeklyGoal/ViewModels/WeeklyGoalVM.swift → Weekly goal logic
|
|
40
|
+
✅ CODEBASE.md Synced!
|
|
120
41
|
|
|
121
|
-
|
|
42
|
+
📊 Added: [K] new entries
|
|
43
|
+
📁 Sections updated: [list]
|
|
44
|
+
🕐 Last Updated: [current date]
|
|
122
45
|
```
|
|
123
46
|
|
|
124
47
|
---
|