@leejungkiin/awkit 1.0.9 → 1.1.1

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 (114) hide show
  1. package/README.md +3 -3
  2. package/VERSION +1 -1
  3. package/bin/awf.js +1 -1
  4. package/bin/awk.js +287 -34
  5. package/core/AGENTS.md +8 -9
  6. package/core/GEMINI.md +77 -199
  7. package/package.json +2 -1
  8. package/skill-packs/neural-memory/skills/nm-memory-sync/SKILL.md +2 -2
  9. package/skills/CATALOG.md +3 -2
  10. package/skills/README.md +109 -0
  11. package/skills/android-re-analyzer/SKILL.md +238 -0
  12. package/skills/android-re-analyzer/references/api-extraction-patterns.md +119 -0
  13. package/skills/android-re-analyzer/references/call-flow-analysis.md +176 -0
  14. package/skills/android-re-analyzer/references/fernflower-usage.md +115 -0
  15. package/skills/android-re-analyzer/references/jadx-usage.md +116 -0
  16. package/skills/android-re-analyzer/references/setup-guide.md +221 -0
  17. package/skills/android-re-analyzer/scripts/check-deps.sh +129 -0
  18. package/skills/android-re-analyzer/scripts/decompile.sh +375 -0
  19. package/skills/android-re-analyzer/scripts/find-api-calls.sh +118 -0
  20. package/skills/android-re-analyzer/scripts/install-dep.sh +448 -0
  21. package/skills/awf-session-restore/SKILL.md +108 -184
  22. package/skills/beads-manager/SKILL.md +2 -2
  23. package/skills/brainstorm-agent/SKILL.md +47 -2
  24. package/skills/gemini-conductor/SKILL.md +234 -0
  25. package/skills/memory-sync/SKILL.md +29 -1
  26. package/skills/nm-memory-sync/SKILL.md +2 -2
  27. package/skills/orchestrator/SKILL.md +32 -154
  28. package/skills/skills/nm-memory-sync/SKILL.md +2 -2
  29. package/skills/smali-to-kotlin/SKILL.md +1 -1
  30. package/skills/smali-to-swift/SKILL.md +1 -1
  31. package/skills/swiftui-pro/SKILL.md +108 -0
  32. package/skills/swiftui-pro/agents/openai.yaml +10 -0
  33. package/skills/swiftui-pro/assets/swiftui-pro-icon.png +0 -0
  34. package/skills/swiftui-pro/assets/swiftui-pro-icon.svg +29 -0
  35. package/skills/swiftui-pro/references/accessibility.md +13 -0
  36. package/skills/swiftui-pro/references/api.md +39 -0
  37. package/skills/swiftui-pro/references/data.md +43 -0
  38. package/skills/swiftui-pro/references/design.md +31 -0
  39. package/skills/swiftui-pro/references/hygiene.md +9 -0
  40. package/skills/swiftui-pro/references/navigation.md +14 -0
  41. package/skills/swiftui-pro/references/performance.md +46 -0
  42. package/skills/swiftui-pro/references/swift.md +56 -0
  43. package/skills/swiftui-pro/references/views.md +35 -0
  44. package/skills/symphony-enforcer/SKILL.md +227 -0
  45. package/skills/symphony-orchestrator/SKILL.md +301 -0
  46. package/skills/telegram-notify/SKILL.md +57 -0
  47. package/symphony/LICENSE +21 -0
  48. package/symphony/README.md +178 -0
  49. package/symphony/app/api/agents/route.js +152 -0
  50. package/symphony/app/api/events/route.js +22 -0
  51. package/symphony/app/api/knowledge/route.js +253 -0
  52. package/symphony/app/api/locks/route.js +29 -0
  53. package/symphony/app/api/notes/route.js +125 -0
  54. package/symphony/app/api/preflight/route.js +23 -0
  55. package/symphony/app/api/projects/route.js +116 -0
  56. package/symphony/app/api/roles/route.js +134 -0
  57. package/symphony/app/api/skills/route.js +82 -0
  58. package/symphony/app/api/status/route.js +18 -0
  59. package/symphony/app/api/tasks/route.js +157 -0
  60. package/symphony/app/api/workflows/route.js +61 -0
  61. package/symphony/app/api/workspaces/route.js +15 -0
  62. package/symphony/app/globals.css +2605 -0
  63. package/symphony/app/layout.js +20 -0
  64. package/symphony/app/page.js +2122 -0
  65. package/symphony/cli/index.js +1060 -0
  66. package/symphony/core/agent-manager.js +357 -0
  67. package/symphony/core/context-bus.js +100 -0
  68. package/symphony/core/db.js +223 -0
  69. package/symphony/core/file-lock-manager.js +154 -0
  70. package/symphony/core/merge-pipeline.js +234 -0
  71. package/symphony/core/orchestrator.js +236 -0
  72. package/symphony/core/task-manager.js +335 -0
  73. package/symphony/core/workspace-manager.js +168 -0
  74. package/symphony/jsconfig.json +7 -0
  75. package/symphony/lib/core.mjs +1034 -0
  76. package/symphony/mcp/index.js +29 -0
  77. package/symphony/mcp/server.js +110 -0
  78. package/symphony/mcp/tools/context.js +80 -0
  79. package/symphony/mcp/tools/locks.js +99 -0
  80. package/symphony/mcp/tools/status.js +82 -0
  81. package/symphony/mcp/tools/tasks.js +216 -0
  82. package/symphony/mcp/tools/workspace.js +143 -0
  83. package/symphony/next.config.mjs +7 -0
  84. package/symphony/package.json +53 -0
  85. package/symphony/scripts/postinstall.js +49 -0
  86. package/symphony/symphony.config.js +41 -0
  87. package/templates/conductor-tracks.md +38 -0
  88. package/templates/workflow_dual_mode_template.md +5 -5
  89. package/workflows/_uncategorized/AGENTS.md +38 -0
  90. package/workflows/_uncategorized/decompile.md +67 -0
  91. package/workflows/_uncategorized/skill-health.md +7 -7
  92. package/workflows/ads/ads-audit.md +5 -5
  93. package/workflows/ads/ads-optimize.md +10 -10
  94. package/workflows/ads/adsExpert.md +7 -7
  95. package/workflows/conductor.md +97 -0
  96. package/workflows/context/auto-implement.md +4 -4
  97. package/workflows/context/codebase-sync.md +19 -8
  98. package/workflows/context/next.md +27 -27
  99. package/workflows/context/user-intent-analysis-workflow.md +4 -4
  100. package/workflows/expert/codeExpert.md +28 -31
  101. package/workflows/expert/debugExpert.md +11 -11
  102. package/workflows/expert/planExpert.md +21 -36
  103. package/workflows/git/smart-git-ops.md +49 -6
  104. package/workflows/lifecycle/debug.md +7 -7
  105. package/workflows/lifecycle/deploy.md +10 -10
  106. package/workflows/lifecycle/master-code-workflow.md +3 -3
  107. package/workflows/lifecycle/plan.md +19 -21
  108. package/workflows/quality/audit.md +1 -1
  109. package/workflows/quality/project-audit.md +1 -1
  110. package/workflows/roles/vibe-coding-master-workflow.md +2 -2
  111. package/workflows/smart-git-ops.md +146 -0
  112. package/workflows/ui/app-screen-analyzer.md +4 -4
  113. package/workflows/ui/create-feature.md +8 -8
  114. package/workflows/ui/create-spec-architect.md +11 -11
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Symphony MCP Tools — Workspace Management
3
+ *
4
+ * Tools for workspace/git operations:
5
+ * - symphony_workspace_status: Get workspace info + diff stats
6
+ * - symphony_merge_task: Trigger auto-merge pipeline
7
+ */
8
+ const { z } = require('zod');
9
+ const workspaceManager = require('../../core/workspace-manager');
10
+ const mergePipeline = require('../../core/merge-pipeline');
11
+
12
+ const tools = [];
13
+
14
+ // ─── symphony_workspace_status ──────────────────────────────────────────────
15
+
16
+ tools.push({
17
+ name: 'symphony_workspace_status',
18
+ description: 'Get workspace info for a task — branch, path, diff stats, and commit log.',
19
+ schema: {
20
+ task_id: z.string().describe('Task ID to check workspace for'),
21
+ },
22
+ handler: async ({ task_id }) => {
23
+ try {
24
+ const ws = workspaceManager.getWorkspace(task_id);
25
+
26
+ if (!ws) {
27
+ return {
28
+ content: [{
29
+ type: 'text',
30
+ text: JSON.stringify({
31
+ exists: false,
32
+ message: `No active workspace for task ${task_id}`,
33
+ }),
34
+ }],
35
+ };
36
+ }
37
+
38
+ // Get repo path from workspace path
39
+ const path = require('path');
40
+ const repoPath = getRepoPath(ws.path);
41
+
42
+ const diff = mergePipeline.getDiff(task_id, repoPath);
43
+ const log = mergePipeline.getBranchLog(task_id, repoPath);
44
+ const conflicts = mergePipeline.checkConflicts(task_id, repoPath);
45
+
46
+ return {
47
+ content: [{
48
+ type: 'text',
49
+ text: JSON.stringify({
50
+ exists: true,
51
+ workspace: {
52
+ id: ws.id,
53
+ path: ws.path,
54
+ branch: ws.branch,
55
+ type: ws.type,
56
+ created_at: ws.created_at,
57
+ },
58
+ diff: {
59
+ files: diff.files,
60
+ insertions: diff.insertions,
61
+ deletions: diff.deletions,
62
+ },
63
+ commits: log.length,
64
+ commitLog: log.slice(0, 10),
65
+ hasConflicts: conflicts.hasConflicts,
66
+ conflictingFiles: conflicts.conflictingFiles,
67
+ }),
68
+ }],
69
+ };
70
+ } catch (error) {
71
+ return {
72
+ content: [{ type: 'text', text: JSON.stringify({ error: error.message }) }],
73
+ isError: true,
74
+ };
75
+ }
76
+ },
77
+ });
78
+
79
+ // ─── symphony_merge_task ────────────────────────────────────────────────────
80
+
81
+ tools.push({
82
+ name: 'symphony_merge_task',
83
+ description: 'Run auto-merge pipeline for a completed task: rebase → merge → cleanup.',
84
+ schema: {
85
+ task_id: z.string().describe('Task ID to merge'),
86
+ repo_path: z.string().optional().describe('Repository path (auto-detected if omitted)'),
87
+ },
88
+ handler: async ({ task_id, repo_path }) => {
89
+ try {
90
+ const ws = workspaceManager.getWorkspace(task_id);
91
+ if (!ws) {
92
+ return {
93
+ content: [{
94
+ type: 'text',
95
+ text: JSON.stringify({
96
+ status: 'error',
97
+ message: `No active workspace for task ${task_id}`,
98
+ }),
99
+ }],
100
+ isError: true,
101
+ };
102
+ }
103
+
104
+ const repoPath = repo_path || getRepoPath(ws.path);
105
+ const result = mergePipeline.autoMerge(task_id, repoPath);
106
+
107
+ return {
108
+ content: [{
109
+ type: 'text',
110
+ text: JSON.stringify(result),
111
+ }],
112
+ isError: result.status === 'error',
113
+ };
114
+ } catch (error) {
115
+ return {
116
+ content: [{ type: 'text', text: JSON.stringify({ error: error.message }) }],
117
+ isError: true,
118
+ };
119
+ }
120
+ },
121
+ });
122
+
123
+ // ─── Helper ─────────────────────────────────────────────────────────────────
124
+
125
+ /**
126
+ * Derive the main repo path from a workspace path.
127
+ * Workspaces are typically in .symphony/workspaces/<task-id> relative to repo.
128
+ */
129
+ function getRepoPath(wsPath) {
130
+ const path = require('path');
131
+ // Walk up from workspace to find .git
132
+ let current = path.dirname(wsPath);
133
+ for (let i = 0; i < 5; i++) {
134
+ const gitDir = path.join(current, '.git');
135
+ const fs = require('fs');
136
+ if (fs.existsSync(gitDir)) return current;
137
+ current = path.dirname(current);
138
+ }
139
+ // Fallback: assume workspace is in .symphony/workspaces/ under repo root
140
+ return path.resolve(wsPath, '..', '..', '..');
141
+ }
142
+
143
+ module.exports = tools;
@@ -0,0 +1,7 @@
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {
3
+ // Allow requiring CommonJS core modules from API routes
4
+ serverExternalPackages: ['better-sqlite3'],
5
+ };
6
+
7
+ export default nextConfig;
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "awkit-symphony",
3
+ "version": "0.1.0",
4
+ "description": "Multi-Agent Orchestration for AI Coding Assistants — task management, git isolation, file locking, and real-time dashboard",
5
+ "keywords": [
6
+ "ai",
7
+ "multi-agent",
8
+ "orchestration",
9
+ "mcp",
10
+ "git",
11
+ "worktree",
12
+ "dashboard",
13
+ "coding-assistant"
14
+ ],
15
+ "license": "MIT",
16
+ "main": "core/orchestrator.js",
17
+ "bin": {
18
+ "symphony": "./cli/index.js"
19
+ },
20
+ "files": [
21
+ "core/",
22
+ "cli/",
23
+ "mcp/",
24
+ "lib/",
25
+ "app/",
26
+ "scripts/",
27
+ "symphony.config.js",
28
+ "next.config.mjs",
29
+ "jsconfig.json",
30
+ "README.md"
31
+ ],
32
+ "engines": {
33
+ "node": ">=20.0.0"
34
+ },
35
+ "scripts": {
36
+ "dev": "next dev -p 3100",
37
+ "build": "next build",
38
+ "start": "next start -p 3100",
39
+ "postinstall": "node scripts/postinstall.js",
40
+ "cli": "node cli/index.js",
41
+ "mcp": "node mcp/server.js"
42
+ },
43
+ "dependencies": {
44
+ "@modelcontextprotocol/sdk": "^1.27.1",
45
+ "better-sqlite3": "^12.6.2",
46
+ "commander": "^14.0.3",
47
+ "nanoid": "^3.3.11",
48
+ "next": "16.1.6",
49
+ "react": "19.2.3",
50
+ "react-dom": "19.2.3",
51
+ "zod": "^4.3.6"
52
+ }
53
+ }
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Symphony Postinstall Script
5
+ * Automatically builds the Next.js dashboard after `npm install`.
6
+ * Skips build during development (when running from source directory).
7
+ */
8
+ const { execSync } = require('child_process');
9
+ const path = require('path');
10
+ const fs = require('fs');
11
+
12
+ const ROOT = path.join(__dirname, '..');
13
+
14
+ // Skip if .next/ already exists (already built)
15
+ if (fs.existsSync(path.join(ROOT, '.next'))) {
16
+ console.log('✅ Symphony dashboard already built — skipping.');
17
+ process.exit(0);
18
+ }
19
+
20
+ // Skip if we're in a CI environment that doesn't need the dashboard
21
+ if (process.env.CI || process.env.SYMPHONY_SKIP_BUILD) {
22
+ console.log('⏭️ Skipping Symphony build (CI or SYMPHONY_SKIP_BUILD set).');
23
+ process.exit(0);
24
+ }
25
+
26
+ console.log('');
27
+ console.log('🎼 Symphony — Building dashboard...');
28
+ console.log(' This only happens once after installation.');
29
+ console.log('');
30
+
31
+ try {
32
+ execSync('npx next build', {
33
+ cwd: ROOT,
34
+ stdio: 'inherit',
35
+ env: { ...process.env, NODE_ENV: 'production' },
36
+ });
37
+ console.log('');
38
+ console.log('✅ Symphony dashboard built successfully!');
39
+ console.log(' Run `symphony start` to launch.');
40
+ console.log('');
41
+ } catch (err) {
42
+ console.error('');
43
+ console.error('⚠️ Symphony dashboard build failed.');
44
+ console.error(' You can manually build later with: symphony build');
45
+ console.error(' The CLI commands will still work without the dashboard.');
46
+ console.error('');
47
+ // Don't fail the install — CLI/MCP still work without dashboard
48
+ process.exit(0);
49
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Symphony Configuration
3
+ * Default settings for the AWKit Symphony orchestration platform.
4
+ */
5
+ module.exports = {
6
+ // Server
7
+ port: 3100,
8
+
9
+ // Concurrency
10
+ maxAgents: 3,
11
+
12
+ // Workspace
13
+ workspace: {
14
+ root: '.symphony/workspaces',
15
+ type: 'hybrid', // 'worktree' | 'clone' | 'hybrid'
16
+ cloneThreshold: 30, // files > 30 → full clone instead of worktree
17
+ },
18
+
19
+ // Git
20
+ git: {
21
+ autoMerge: true,
22
+ targetBranch: 'main',
23
+ branchPrefix: 'symphony/',
24
+ },
25
+
26
+ // File Locks
27
+ locks: {
28
+ strategy: 'pessimistic',
29
+ autoRelease: 3600, // seconds — auto-release stuck locks
30
+ },
31
+
32
+ // Dashboard
33
+ dashboard: {
34
+ theme: 'dark',
35
+ },
36
+
37
+ // Database
38
+ db: {
39
+ path: null, // null = auto-detect (~/.symphony/symphony.db or .symphony/symphony.db)
40
+ },
41
+ };
@@ -0,0 +1,38 @@
1
+ # 🎼 Strategic Tracks — Conductor Roadmap
2
+
3
+ > This file is managed by the Conductor (Gemini CLI).
4
+ > Antigravity IDE reads this for context. CLI writes strategic updates.
5
+
6
+ ---
7
+
8
+ ## Active Tracks
9
+
10
+ ### Track 1: [Track Name]
11
+ - **Goal:** [What we're trying to achieve]
12
+ - **Status:** 🔵 Planning | 🟢 In Progress | ✅ Done
13
+ - **Milestones:**
14
+ - [ ] Milestone 1
15
+ - [ ] Milestone 2
16
+ - [ ] Milestone 3
17
+ - **Key Decisions:**
18
+ - [Decision 1 — rationale]
19
+ - **Notes:**
20
+ - [Any important context]
21
+
22
+ ---
23
+
24
+ ## Completed Tracks
25
+
26
+ <!-- Move completed tracks here for reference -->
27
+
28
+ ---
29
+
30
+ ## Decision Log
31
+
32
+ | Date | Decision | Rationale | Track |
33
+ |------|----------|-----------|-------|
34
+ | YYYY-MM-DD | ... | ... | #1 |
35
+
36
+ ---
37
+
38
+ *Last updated by Conductor: [timestamp]*
@@ -34,7 +34,7 @@ description: [Short description of the workflow]
34
34
  ### Phase 1: Context & Setup
35
35
  1. **Understand Intent:**
36
36
  - "Bạn muốn làm gì với [Command]?"
37
- - (AI analyzes context from `.project-identity` & `.beads`)
37
+ - (AI analyzes context from `.project-identity` & `.symphony`)
38
38
 
39
39
  2. **Configuration:**
40
40
  - [Question 1]
@@ -68,7 +68,7 @@ description: [Short description of the workflow]
68
68
  - Locations of artifacts.
69
69
 
70
70
  2. **Memory Sync:**
71
- - Auto-sync with Beads (Task) & Brain (Knowledge).
71
+ - Auto-sync with Symphony (Task) & Brain (Knowledge).
72
72
 
73
73
  3. **Next Steps Menu:**
74
74
  ```markdown
@@ -79,9 +79,9 @@ description: [Short description of the workflow]
79
79
 
80
80
  ---
81
81
 
82
- ## 🧠 Brain & Beads Integration
82
+ ## 🧠 Brain & Symphony Integration
83
83
 
84
- - **Input:** Check `bd list --status in_progress` to resume context.
84
+ - **Input:** Check `symphony_available_tasks(filter="my")` to resume context.
85
85
  - **Output:**
86
- - Create/Update Beads task.
86
+ - Create/Update Symphony task.
87
87
  - Create Brain memory file if knowledge is valuable.
@@ -0,0 +1,38 @@
1
+ # Agent Instructions
2
+
3
+ This project uses **Symphony** for task management and issue tracking.
4
+
5
+ ## Quick Reference
6
+
7
+ ```bash
8
+ symphony_available_tasks # Find available work
9
+ symphony_claim_task <id> # Claim a task
10
+ symphony_report_progress <id> # Report progress
11
+ symphony_complete_task <id> # Complete work
12
+ symphony_status # Check system status
13
+ ```
14
+
15
+ ## Landing the Plane (Session Completion)
16
+
17
+ **When ending a work session**, you MUST complete ALL steps below. Work is NOT complete until `git push` succeeds.
18
+
19
+ **MANDATORY WORKFLOW:**
20
+
21
+ 1. **File issues for remaining work** — Create tasks for anything that needs follow-up
22
+ 2. **Run quality gates** (if code changed) — Tests, linters, builds
23
+ 3. **Update task status** — Complete finished work, update in-progress items
24
+ 4. **PUSH TO REMOTE** — This is MANDATORY:
25
+ ```bash
26
+ git pull --rebase
27
+ git push
28
+ git status # MUST show "up to date with origin"
29
+ ```
30
+ 5. **Clean up** — Clear stashes, prune remote branches
31
+ 6. **Verify** — All changes committed AND pushed
32
+ 7. **Hand off** — Provide context for next session
33
+
34
+ **CRITICAL RULES:**
35
+ - Work is NOT complete until `git push` succeeds
36
+ - NEVER stop before pushing — that leaves work stranded locally
37
+ - NEVER say "ready to push when you are" — YOU must push
38
+ - If push fails, resolve and retry until it succeeds
@@ -0,0 +1,67 @@
1
+ ---
2
+ description: 📦 Decompile APK/XAPK/JAR/AAR Android và phân tích cấu trúc + trích xuất API
3
+ ---
4
+
5
+ # /decompile — Android Reverse Engineering & API Extraction
6
+
7
+ // turbo-all
8
+
9
+ ## Workflow
10
+
11
+ ### 1. Xác định file target
12
+
13
+ Nếu user cung cấp đường dẫn file → dùng luôn.
14
+ Nếu không → hỏi user đường dẫn đến file `.apk`, `.xapk`, `.jar`, hoặc `.aar`.
15
+
16
+ ### 2. Kiểm tra & cài đặt dependencies
17
+
18
+ ```bash
19
+ bash ~/.gemini/antigravity/skills/android-re-analyzer/scripts/check-deps.sh
20
+ ```
21
+
22
+ Parse output tìm `INSTALL_REQUIRED:` và `INSTALL_OPTIONAL:`.
23
+
24
+ **Nếu thiếu required deps**, cài từng cái:
25
+ ```bash
26
+ bash ~/.gemini/antigravity/skills/android-re-analyzer/scripts/install-dep.sh java
27
+ bash ~/.gemini/antigravity/skills/android-re-analyzer/scripts/install-dep.sh jadx
28
+ ```
29
+
30
+ **Nếu thiếu optional deps** (vineflower, dex2jar), hỏi user có muốn cài không. Khuyến nghị cài cả hai.
31
+
32
+ Sau khi cài, chạy lại `check-deps.sh` để verify. KHÔNG tiếp tục nếu required deps chưa OK.
33
+
34
+ ### 3. Decompile
35
+
36
+ ```bash
37
+ # APK/XAPK → dùng jadx (xử lý resources tốt)
38
+ bash ~/.gemini/antigravity/skills/android-re-analyzer/scripts/decompile.sh <file>
39
+
40
+ # JAR/AAR + có Fernflower → ưu tiên fernflower
41
+ bash ~/.gemini/antigravity/skills/android-re-analyzer/scripts/decompile.sh --engine fernflower <file>
42
+
43
+ # Nếu jadx có warnings hoặc muốn chất lượng cao nhất → chạy cả hai
44
+ bash ~/.gemini/antigravity/skills/android-re-analyzer/scripts/decompile.sh --engine both <file>
45
+
46
+ # Cho app bị obfuscate → thêm --deobf
47
+ bash ~/.gemini/antigravity/skills/android-re-analyzer/scripts/decompile.sh --deobf <file>
48
+ ```
49
+
50
+ ### 4. Phân tích cấu trúc
51
+
52
+ 1. Đọc `AndroidManifest.xml` từ resources directory
53
+ 2. Nếu XAPK, review `xapk-manifest.json`
54
+ 3. List package structure top-level
55
+ 4. Xác định Activity chính, Application class, architecture pattern
56
+ 5. Báo cáo summary cho user
57
+
58
+ ### 5. Đề xuất bước tiếp theo
59
+
60
+ Hỏi user muốn làm gì tiếp:
61
+ - **Trace call flows**: "Tôi có thể theo luồng thực thi từ Activity đến API calls"
62
+ - **Extract APIs**: "Tôi có thể tìm tất cả HTTP endpoints và tài liệu hóa"
63
+ ```bash
64
+ bash ~/.gemini/antigravity/skills/android-re-analyzer/scripts/find-api-calls.sh <output>/sources/
65
+ ```
66
+ - **Phân tích class cụ thể**: "Chỉ cho tôi class hoặc feature cần phân tích"
67
+ - **Rebuild app**: "Muốn rebuild thành Kotlin hiện đại? → chuyển sang skill `smali-to-kotlin`"
@@ -4,9 +4,9 @@ description: 🩺 Kiểm tra tình trạng độ bền và sự ổn định c
4
4
 
5
5
  # 🩺 AWK Skill & Workflow Health Check
6
6
 
7
- > **Workflow này tính toán độ "Health" (khỏe mạnh) của các agentic workflows dựa trên dữ liệu từ Beads và Linting.**
7
+ > **Workflow này tính toán độ "Health" (khỏe mạnh) của các agentic workflows dựa trên dữ liệu từ Symphony và Linting.**
8
8
  > - Phát hiện Token Creep (khi SKILL.md phình to).
9
- > - Phát hiện High Correction Rate (khi 1 Bead in_progress quá lâu hoặc có comment phàn nàn).
9
+ > - Phát hiện High Correction Rate (khi 1 task in_progress quá lâu hoặc có comment phàn nàn).
10
10
 
11
11
  ---
12
12
 
@@ -18,12 +18,12 @@ awkit lint || true
18
18
  ```
19
19
  Nếu có cảnh báo, khuyên User sử dụng `/refactor` để chẻ nhỏ files nhằm tiết kiệm Context Window.
20
20
 
21
- ## 2. Kiểm tra hiệu suất chạy (Beads-Driven)
22
- Lấy top 5 Beads (Tasks) mới nhất ở trạng thái `done` hoặc `in_progress` để đánh giá thời gian chênh lệch:
21
+ ## 2. Kiểm tra hiệu suất chạy (Symphony-Driven)
22
+ Lấy top 5 tasks mới nhất ở trạng thái `done` hoặc `in_progress` để đánh giá thời gian chênh lệch:
23
23
 
24
- ```bash
25
- bd list --status done --limit 5
26
- bd list --status in_progress
24
+ ```
25
+ symphony_available_tasks(filter="all")
26
+ symphony_status()
27
27
  ```
28
28
 
29
29
  **Phân tích của hệ thống AI**:
@@ -2,7 +2,7 @@
2
2
  description: 📊 Tự động phân tích & báo cáo hiệu suất Google Ads hàng ngày (Dual-Mode v5.0)
3
3
  ---
4
4
 
5
- # WORKFLOW: /ads-audit - The Ads Analyst (Dual-Mode + Beads)
5
+ # WORKFLOW: /ads-audit - The Ads Analyst (Dual-Mode + Symphony)
6
6
 
7
7
  > **Mode A (Expert):** `/adsExpert [id]` -> Auto check & create tasks.
8
8
  > **Mode B (Guided):** `/ads-audit` -> Chọn Account -> Phân tích -> Hướng dẫn chi tiết.
@@ -49,16 +49,16 @@ User nhận được tóm tắt và menu chọn hành động:
49
49
 
50
50
  ➡️ **Chiến lược tiếp theo:**
51
51
  1️⃣ 🧹 Dọn dẹp rác ngay (Review & Pause)
52
- 2️⃣ 📿 Tạo task Beads để xử lý sau
52
+ 2️⃣ 🎵 Tạo task Symphony để xử lý sau
53
53
  3️⃣ 📝 Xem báo cáo đầy đủ
54
54
  4️⃣ 🔍 Phân tích sâu hơn (`/ads-analyst`)
55
55
  ```
56
56
 
57
- ### Phase 5: Beads Integration
57
+ ### Phase 5: Symphony Integration
58
58
  - Nếu chọn **2 (Create Task)**:
59
59
  - AI tự động tạo các tasks:
60
- - `bd create "Pause Keyword X (Waste 200k)" --label ads`
61
- - `bd create "Review Campaign Y (CPA too high)" --label ads`
60
+ - `symphony_create_task(title="Pause Keyword X (Waste 200k)")`
61
+ - `symphony_create_task(title="Review Campaign Y (CPA too high)")`
62
62
 
63
63
  ---
64
64
 
@@ -37,21 +37,21 @@ User chọn mục tiêu:
37
37
 
38
38
  ### Phase 3: Action Execution
39
39
  - AI thực hiện thay đổi thông qua MCP (nếu tool hỗ trợ write).
40
- - Nếu MCP chưa hỗ trợ write (an toàn): -> **Tạo Beads Task hướng dẫn chi tiết.**
40
+ - Nếu MCP chưa hỗ trợ write (an toàn): -> **Tạo Symphony Task hướng dẫn chi tiết.**
41
41
 
42
- ### Phase 4: Beads Integration (Task Generation)
42
+ ### Phase 4: Symphony Integration (Task Generation)
43
43
 
44
- **Tạo Action Plan trong Beads:**
44
+ **Tạo Action Plan trong Symphony:**
45
45
 
46
- ```bash
46
+ ```
47
47
  # Example: Cut Waste Plan
48
- bd create "Ads Optimization: Cut Waste [Date]" --priority 1
49
- bd create "Add 5 Negative Keywords" --parent [ParentID] --note "burn, hack, free,..."
50
- bd create "Exclude 10 Mobile App Placements" --parent [ParentID]
48
+ symphony_create_task(title="Ads Optimization: Cut Waste [Date]", priority=1)
49
+ symphony_create_task(title="Add 5 Negative Keywords", description="burn, hack, free,...")
50
+ symphony_create_task(title="Exclude 10 Mobile App Placements")
51
51
 
52
52
  # Example: Scale Plan
53
- bd create "Ads Optimization: Scale Up [Date]" --priority 0
54
- bd create "Increase Budget: Campaign A (+20%)" --parent [ParentID]
53
+ symphony_create_task(title="Ads Optimization: Scale Up [Date]", priority=2)
54
+ symphony_create_task(title="Increase Budget: Campaign A (+20%)")
55
55
  ```
56
56
 
57
57
  ---
@@ -92,6 +92,6 @@ Sau khi hoàn thành workflow, AI **PHẢI** ghi log vào file `brain/ads_histor
92
92
 
93
93
  ## ⚠️ NEXT STEPS:
94
94
  ```
95
- 1️⃣ Xác nhận task trong Beads (`/todo`)
95
+ 1️⃣ Xác nhận task trong Symphony (`/todo`)
96
96
  2️⃣ Kiểm tra lại Audit (`/ads-audit`)
97
97
  ```
@@ -49,23 +49,23 @@ AI tự động check các rules sau:
49
49
 
50
50
  **Without `--auto-fix`:**
51
51
  - Tổng hợp lỗi vào Report.
52
- - Tạo Beads Tasks cho các lỗi R1, R2.
52
+ - Tạo Symphony Tasks cho các lỗi R1, R2.
53
53
 
54
54
  **With `--auto-fix`:**
55
55
  - **R1 (Wasted Spend):** Auto-pause Keyword/Ad Group.
56
- - **R2, R3, R4:** Tạo Beads Task.
56
+ - **R2, R3, R4:** Tạo Symphony Task.
57
57
 
58
- ### 4. Beads Integration
58
+ ### 4. Symphony Integration
59
59
 
60
60
  ```bash
61
61
  # R1: Wasted Spend -> Critical Task
62
- bd create "Pause Waste: [Keyword] ($$ Spend, 0 Conv)" --label ads-waste --priority 0
62
+ symphony_create_task(title="Pause Waste: [Keyword] ($$ Spend, 0 Conv)", priority=1)
63
63
 
64
64
  # R2: High CPA -> Investigation Task
65
- bd create "Investigate High CPA: [Campaign] (CPA: $$)" --label ads-optimize --priority 1
65
+ symphony_create_task(title="Investigate High CPA: [Campaign] (CPA: $$)", priority=1)
66
66
 
67
67
  # R5: Good Mover -> Scale Task
68
- bd create "Scale Up: [Campaign] (ROAS: 2.5)" --label ads-scale --priority 1
68
+ symphony_create_task(title="Scale Up: [Campaign] (ROAS: 2.5)", priority=1)
69
69
  ```
70
70
 
71
71
  ### 5. Report Generation
@@ -83,7 +83,7 @@ Tạo file: `reports/ads/[date]_expert_audit.md`
83
83
  ## 🚨 Actions Taken (Auto-Fix)
84
84
  - Paused Keyword: "free download" (Spent 200k, 0 conv)
85
85
 
86
- ## 📿 Beads Tasks Created
86
+ ## 📿 Symphony Tasks Created
87
87
  1. [P0] Pause Waste: "cheat codes" (Spent 150k, 0 conv) #123
88
88
  2. [P1] Investigate High CPA: "Competitor Campaign" #124
89
89
  3. [P1] Scale Up: "Brand Campaign" #125