@leejungkiin/awkit 1.6.4 → 1.6.6

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 CHANGED
@@ -1,41 +1,42 @@
1
- # AWKit — Antigravity Workflow Kit v12.5
1
+ # AWKit — Antigravity Workflow Kit
2
2
 
3
- > **v12.5** · Single Source of Truth · Symphony-First · Mindful Execution
3
+ > Antigravity v12.5 · npm package v1.6.5 · Single Source of Truth · Symphony-first · Mindful execution
4
4
 
5
- AWKit framework điều phối AI agent chuyên nghiệp. Đây **nơi duy nhất** chứa toàn bộ workflows, skills, GEMINI.md cấu hình không còn phân tán giữa nhiều repo.
6
- AWKit giúp tối ưu context khi làm việc, có khả năng quản lý task, đồng bộ Trello và báo cáo lên Telegram, ngoài ra Awkit còn sử dụng cơ chế checkpoint để dev dừng đúng lúc tránh tâm lý tối ưu hóa quá mức (over-optimization) một vấn đề phổ biến khi làm việc với AI.
5
+ AWKit is a professional AI-agent orchestration framework. This repository is the single source of truth for workflows, skills, core rules (GEMINI.md), and installation tooling (no more scattered configs across multiple repos).
6
+
7
+ AWKit focuses on predictable execution: task management via Symphony, optional Trello sync and Telegram notifications, plus mindful checkpoints that help agents (and humans) stop at the right time and avoid over-optimizing.
7
8
 
8
9
  ---
9
10
 
10
- ## 🧠 Gstack Core Principles
11
+ ## Core Principles
11
12
 
12
- AWKit (Antigravity v12+) thực thi 8 nguyên tắc lõi (Gstack-inspired) nhằm đảm bảo AI hoạt động an toàn và hiệu quả:
13
+ AWKit (Antigravity v12+) enforces a small set of non-negotiable principles to keep AI work safe and effective:
13
14
 
14
- 1. **Anti-sycophancy:** AI phải phản biện các hướng tiếp cận rủi ro, không đồng ý mù quáng khi có red flags.
15
- 2. **Search Before Building (3-layer):** Tìm kiếm NeuralMemory/codebase → Tìm standard libraries/SDKs → Chỉ code mới nếu 2 bước trên thất bại.
16
- 3. **Completion Status Protocol:** 4 trạng thái rõ ràng: `DONE`, `DONE_WITH_CONCERNS`, `BLOCKED`, `NEEDS_CONTEXT`.
17
- 4. **6 Decision Principles:** Complete > Shortcuts, Evidence > Assumptions, Standard > Custom, Explicit > Implicit, Test > Trust, Small > Big.
18
- 5. **3-Strike Escalation:** Sau 3 lần thử fix bug thất bại → STOP, báo cáo context chờ user quyết định.
19
- 6. **Scope Freeze:** Khi debugging: KHÔNG sửa code không liên quan, KHÔNG refactor. Chỉ tập trung root cause.
20
- 7. **Boil-the-Lake Checklist:** Checklist trước khi báo DONE: error handling, edge cases, logging, cleanup, input validation...
21
- 8. **Safety Guardrails:** Chặn auto-run cho các lệnh nguy hiểm (`rm -rf`, `git push --force`, deploy production). Bắt buộc double-confirm.
22
- 9. **Mindful Execution (v12.5+):** Chống AI "brain fry" bằng Iteration Counter (dừng sau 3 lần polish), Scope Guard, Milestone Rest.
15
+ 1. **Anti-sycophancy**: push back when an approach has red flags; do not agree blindly.
16
+ 2. **Search before building (3-layer)**: check NeuralMemory/codebase first then standard libraries/SDKs → only write new code as a last resort.
17
+ 3. **Completion status protocol**: use one of `DONE`, `DONE_WITH_CONCERNS`, `BLOCKED`, `NEEDS_CONTEXT`.
18
+ 4. **Decision principles**: Complete > Shortcuts, Evidence > Assumptions, Standard > Custom, Explicit > Implicit, Test > Trust, Small > Big.
19
+ 5. **3-strike escalation**: after 3 failed attempts at fixing the same issue, stop and report context for a decision.
20
+ 6. **Scope freeze for debugging**: no unrelated edits, no refactors; focus on root cause.
21
+ 7. **"Boil-the-lake" checklist before DONE**: error handling, edge cases, logging, cleanup, input validation, etc.
22
+ 8. **Safety guardrails**: block dangerous commands by default; require double confirmation.
23
+ 9. **Mindful execution (v12.5+)**: iteration counter, scope guard, milestone rest.
23
24
 
24
25
  ---
25
26
 
26
- ## 🚀 Quick Start
27
+ ## Quick Start
27
28
 
28
- ### Cài đặt (3 bước)
29
+ ### Install (3 steps)
29
30
 
30
31
  ```bash
31
- # 1. AWKit Core (CLI + workflows + skills)
32
+ # 1) AWKit Core (CLI + workflows + skills)
32
33
  npm install -g @leejungkiin/awkit
33
34
  awkit install
34
35
 
35
- # 2. Symphony (Task Management & Multi-Agent Orchestration)
36
+ # 2) Symphony (Task Management & Multi-Agent Orchestration)
36
37
  npm install -g @leejungkiin/awkit-symphony
37
38
 
38
- # 3. Optional: NeuralMemory pack (AI Memory Engine — requires Python >= 3.11)
39
+ # 3) Optional: NeuralMemory (AI Memory Engine — requires Python >= 3.11)
39
40
  pip install neural-memory
40
41
  nmem init
41
42
 
@@ -45,163 +46,162 @@ symphony --version
45
46
  nmem --version
46
47
  ```
47
48
 
48
- > 💡 `awkit install` giờ chỉ cài **core runtime profile** cho **active platform** mặc định để giữ context nhẹ và tránh generate artifact không cần thiết cho Cline/Claude.
49
- > Các skill chuyên sâu theo domain sẽ được bật sau bằng `awkit enable-pack <name>`.
50
- > Dùng `awkit install --all` chỉ khi anh/chị thực sự muốn regenerate tất cả platform cùng lúc.
49
+ Notes:
50
+
51
+ - `awkit install` installs only the core runtime profile for the active platform by default (keeps context lean).
52
+ - Enable domain-heavy packs later via `awkit enable-pack <name>`.
53
+ - Use `awkit install --all` only if you explicitly want to regenerate every supported platform.
51
54
 
55
+ ---
52
56
 
53
- ## 📦 Commands
57
+ ## CLI Commands
54
58
 
55
59
  | Command | Description |
56
60
  |---------|-------------|
57
- | `awkit install` | Deploy AWKit core runtime vào active platform hiện tại |
58
- | `awkit install --all` | Deploy AWKit core runtime cho mọi platform được hỗ trợ |
59
- | `awkit update` | Update lên version mới nhất |
60
- | `awkit init` | Khởi tạo project mới (tạo .project-identity, CODEBASE.md, etc.) |
61
+ | `awkit install` | Install AWKit core runtime to the active platform |
62
+ | `awkit install --all` | Install AWKit core runtime for all supported platforms |
63
+ | `awkit update` | Update to the latest version |
64
+ | `awkit init` | Initialize a new project (creates `.project-identity`, `CODEBASE.md`, etc.) |
61
65
  | `awkit sync` | Full sync: harvest + install (one shot) |
62
- | `awkit status` | So sánh repo vs installed (diff view) |
63
- | `awkit harvest` | Pull từ `~/.gemini/antigravity/` về repo |
64
- | `awkit doctor` | Kiểm tra sức khoẻ installation |
65
- | `awkit enable-pack <name>` | Kích hoạt skill pack |
66
- | `awkit disable-pack <name>` | hiệu skill pack |
67
- | `awkit list-packs` | Xem danh sách skill packs |
68
- | `awkit tg setup` | Cài đặt Telegram Bot Token, Chat ID & Topic |
69
- | `awkit tg send <msg>` | Gửi tin nhắn qua Telegram |
70
- | `awkit version` | Show version |
66
+ | `awkit status` | Compare repo vs installed runtime (diff view) |
67
+ | `awkit harvest` | Pull from `~/.gemini/antigravity/` back into this repo |
68
+ | `awkit doctor` | Health checks for installation |
69
+ | `awkit list-packs` | List optional skill packs |
70
+ | `awkit enable-pack <name>` | Enable a skill pack |
71
+ | `awkit disable-pack <name>` | Disable a skill pack |
72
+ | `awkit gate ...` | Execute gated automation (git/trello/telegram) |
73
+ | `awkit tg setup` | Configure Telegram bot token, chat id, and topic |
74
+ | `awkit tg send <msg>` | Send a Telegram message |
75
+ | `awkit version` | Print version |
71
76
 
72
77
  ### Typical Workflow
73
78
 
74
79
  ```bash
75
- # 1. Check what's out of sync
80
+ # 1) Check what's out of sync
76
81
  awkit status
77
82
 
78
- # 2a. You edited in ~/.gemini/ → pull back to repo
83
+ # 2a) You edited in ~/.gemini/antigravity/ → pull back to repo
79
84
  awkit harvest
80
85
 
81
- # 2b. You edited in repo → deploy to active runtime
86
+ # 2b) You edited in repo → deploy to active runtime
82
87
  awkit install
83
88
 
84
- # 2b-alt. Regenerate every platform on purpose
85
- awkit install --all
86
-
87
- # 2c. Both directions (full round-trip)
89
+ # 2c) Both directions (full round-trip)
88
90
  awkit sync
89
91
 
90
- # 3. Commit the snapshot
91
- git add -A && git commit -m "chore: sync AWKit v1.5.0"
92
+ # 3) Commit safely (gated)
93
+ awkit gate git auto "chore: sync AWKit snapshot"
92
94
  ```
93
95
 
96
+ ---
94
97
 
95
-
96
- ```
97
- main-awf/ (AWKit v1.5.x — Source of Truth)
98
- ├── bin/
99
- ├── awk.js ← CLI entry point
100
- │ └── awf.js ← (legacy, kept for reference)
101
- ├── core/
102
- ├── GEMINI.md ← Master AI config (v6.4+)
103
- ├── AGENTS.md ← Agent rules
104
- │ └── orchestrator.md ← Orchestrator skill
105
- ├── workflows/ 75+ workflows, categorized
106
- ├── lifecycle/ plan, code, debug, deploy...
107
- │ ├── context/ recap, next, save-brain...
108
- │ ├── quality/ audit, performance, ux...
109
- │ ├── ui/ visualize, design-to-ui...
110
- │ ├── ads/ ads-audit, optimize...
111
- │ ├── mobile/ maestro, turbo-build...
112
- │ ├── expert/ planExpert, codeExpert...
113
- │ ├── git/ commit, hotfix, rollback...
114
- │ ├── roles/ tech-lead, pm, qa...
115
- │ ├── meta/ customize, file-protection...
116
- │ └── _uncategorized/ misc files
117
- ├── skills/ ← Source skill library
118
- │ ├── orchestrator/
119
- │ ├── memory-sync/
120
- │ ├── brainstorm-agent/
121
- │ ├── symphony-orchestrator/
122
- │ ├── awf-session-restore/
123
- │ └── ...
124
- ├── skill-packs/ ← Optional add-ons, installed on demand
125
- │ ├── mobile-ios/
126
- │ ├── mobile-android/
127
- │ ├── marketing/
128
- │ ├── creator-studio/
129
- │ ├── neural-memory/
130
- │ └── superpowers/
131
- ├── schemas/ ← JSON schemas
132
- ├── templates/ ← Project templates
133
- ├── scripts/
134
- │ └── harvest.js ← Migration: pull from ~/.gemini/
135
- ├── VERSION → 1.5.0
136
- └── package.json (@leejungkiin/awkit)
98
+ ## Repository Layout
99
+
100
+ ```text
101
+ main-awf/ (Source of Truth)
102
+ ├── bin/ # CLI entry points
103
+ ├── core/ # Core rules/routing for agents
104
+ ├── workflows/ # Workflow library
105
+ ├── skills/ # Source skill library
106
+ ├── skill-packs/ # Optional add-ons, installed on demand
107
+ ├── schemas/ # JSON schemas
108
+ ├── templates/ # Project templates
109
+ ├── scripts/ # Harvest, automation gate, tooling
110
+ └── package.json # @leejungkiin/awkit
137
111
  ```
138
112
 
139
- ## 🌾 Harvest (Migration)
113
+ ---
140
114
 
141
- Nếu bạn chỉnh sửa trực tiếp trong `~/.gemini/antigravity/` và muốn sync về repo:
115
+ ## Harvest (Migration)
116
+
117
+ If you edited files directly in `~/.gemini/antigravity/` and want to sync them back to this repo:
142
118
 
143
119
  ```bash
144
- # Xem trước (không thay đổi file)
120
+ # Preview (no changes)
145
121
  node scripts/harvest.js --dry-run
146
122
 
147
- # Thực thi harvest
123
+ # Execute harvest
148
124
  node scripts/harvest.js
149
125
  ```
150
126
 
151
- ## 🔄 Workflow
127
+ ---
128
+
129
+ ## Runtime Model
152
130
 
153
- ```
131
+ ```text
154
132
  main-awf/ (edit here)
155
-
156
- awkit install
133
+ |
134
+ | awkit install
135
+ v
157
136
  ~/.gemini/antigravity/ (runtime)
158
-
159
- ▼ AI reads from here
160
- Gemini / Claude / Any AI
137
+ |
138
+ v
139
+ Gemini / Claude / Any AI reads from runtime
161
140
  ```
162
141
 
163
- ## 🪶 Lean Runtime
142
+ ---
143
+
144
+ ## Lean Runtime
145
+
146
+ `awkit install` does not copy the entire source skill library into runtime by default.
164
147
 
165
- `awkit install` no longer copies the full source skill library into runtime by default.
148
+ - Default install = core work profile only (orchestration, planning, debugging, verification, review, coordination).
149
+ - Default target = active platform only, keeping platform-specific generated artifacts untouched unless explicitly requested.
150
+ - Domain-heavy packs (reverse engineering, marketing/ASO, media production, etc.) are excluded until you opt in.
151
+ - `awkit status` compares runtime against the core profile + enabled packs (optional packs do not create false drift).
166
152
 
167
- - Default install = **core work profile** only: orchestration, planning, debugging, verification, review, and project coordination.
168
- - Default target = **active platform only**, which keeps repo-local generated files like `CLAUDE.md` and `.clinerules/*` untouched unless you explicitly choose them.
169
- - Domain-heavy skills like mobile reverse engineering, ASO/marketing, and media production stay out of runtime until you opt in.
170
- - `awkit status` now compares runtime against the active core profile + enabled packs, so optional skills no longer show as false drift.
171
- - Re-running `awkit install` archives old managed optional skills from runtime, which helps shrink the skill catalog exposed to the agent.
153
+ ---
172
154
 
173
- ## 📨 Telegram Integration
155
+ ## Automation Gate
174
156
 
175
- Bạn thể cấu hình AWKit gửi thông báo tự động (deploy xong, test pass...) qua Telegram:
157
+ AWKit provides a gated automation layer that reads `.project-identity` and enforces `automation.*` before executing:
176
158
 
177
159
  ```bash
178
- # 1. Setup Bot Token, Chat ID và Message Thread ID (Topic)
160
+ awkit gate git commit "chore: update"
161
+ awkit gate git push
162
+ awkit gate git auto "chore: update"
163
+
164
+ awkit gate trello complete "Task Name"
165
+ awkit gate trello comment "Progress note..."
166
+ awkit gate trello block "Reason"
167
+
168
+ awkit gate telegram send "Message"
169
+ ```
170
+
171
+ ---
172
+
173
+ ## Telegram Integration
174
+
175
+ Configure AWKit to send notifications (e.g., after pushes, tests, deploys):
176
+
177
+ ```bash
178
+ # Setup bot token, chat id, and thread id (topic)
179
179
  awkit tg setup
180
180
 
181
- # 2. Gửi thử tin nhắn kiểm tra
181
+ # Send a test message
182
182
  awkit tg send "Hello from AWKit!"
183
183
 
184
- # 3. Gửi đến chat/topic cụ thể
184
+ # Send to a specific chat/topic
185
185
  awkit tg send "Hello" --chat -100123456789 --topic 1234
186
186
  ```
187
187
 
188
- ## 🧠 GitNexus Code Intelligence
188
+ ---
189
189
 
190
- AWKit (từ bản cập nhật tích hợp mới) sử dụng **GitNexus** làm engine cung cấp Code Intelligence & Knowledge Graph cho AI Agent. Sau khi chạy `npm install` AWKit, GitNexus sẽ sẵn sàng để dùng ngay.
190
+ ## GitNexus Code Intelligence
191
191
 
192
- Để kích hoạt GitNexus trên bất kỳ project nào anh/chị đang code:
192
+ AWKit integrates GitNexus for code intelligence and knowledge graphs.
193
193
 
194
194
  ```bash
195
- # 1. Quét toàn bộ project để tạo knowledge graph (chỉ cần chạy lần đầu hoặc khi cấu trúc code thay đổi lớn)
195
+ # 1) Build a knowledge graph for a project (first run or after major structure changes)
196
196
  npx @duytransipher/gitnexus analyze
197
197
 
198
- # 2. Setup MCP servers skills tự động cho Antigravity và các editors khác:
198
+ # 2) Setup MCP servers and editor integrations
199
199
  npx @duytransipher/gitnexus setup
200
200
  ```
201
201
 
202
- AI agent của hệ thống cũng tự động gọi qua cổng GitNexus bằng MCP Tools để tự phân tích rủi ro trước khi commit!
202
+ ---
203
203
 
204
- ## 📦 Skill Packs
204
+ ## Skill Packs
205
205
 
206
206
  ```bash
207
207
  awkit list-packs
@@ -212,17 +212,8 @@ awkit enable-pack marketing
212
212
  awkit enable-pack creator-studio
213
213
  ```
214
214
 
215
- ## 🏗️ Versioning
216
-
217
- | Version | Name | Notes |
218
- |---------|------|-------|
219
- | 4.x | AWF v4 | Shell-based, `awf-` prefix skills |
220
- | 5.x | Antigravity v5 | Node.js, Symphony integration |
221
- | 6.x | AWF v6 | main-awf, multiple sources |
222
- | **1.1.x** | **AWKit v1.1.9** | **Single source of truth, Native CLI, Telegram Integration** |
223
- | **1.5.x** | **AWKit v1.5.0** | **Unified Orchestration, Symphony 1.5.0, 7-Gate Intelligence** |
224
- | **12.5.x** | **Antigravity v12.5** | **Mindful Checkpoints (TP-ITER, TP-SCOPE, TP-REST), @duytransipher/gitnexus** |
225
-
226
215
  ---
227
216
 
228
- *AWKit Antigravity Workflow Kit · Created by leejungkiin*
217
+ ## License
218
+
219
+ MIT
package/bin/awk.js CHANGED
@@ -38,7 +38,9 @@ const HOME = process.env.HOME || process.env.USERPROFILE;
38
38
  const { generateClineRules, generateClineWorkflows, generateClineSkills } = require('./cline-generators');
39
39
  const { generateCodexAgentsMd, generateCodexSkills, generateCodexAgents } = require('./codex-generators');
40
40
  const { generateClaudeRules, generateClaudeSkills } = require('./claude-generators');
41
+ const { generateCursorRules, generateCursorSkills } = require('./cursor-generators');
41
42
  const { cmdGate } = require('../scripts/automation-gate');
43
+ const { cmdObsidian } = require('../scripts/obsidian-sync');
42
44
 
43
45
  // ─── Platform Definitions ──────────────────────────────────────────────────
44
46
 
@@ -85,6 +87,24 @@ const PLATFORMS = {
85
87
  dirs: {
86
88
  skills: '.claude/skills',
87
89
  },
90
+ },
91
+ qwen: {
92
+ name: 'Qwen Code',
93
+ globalRoot: path.join(HOME, '.qwen'),
94
+ rulesFile: null,
95
+ versionFile: path.join(HOME, '.qwen', 'awk_version'),
96
+ dirs: {
97
+ skills: 'skills',
98
+ },
99
+ },
100
+ cursor: {
101
+ name: 'Cursor AI',
102
+ globalRoot: process.cwd(), // Local to project
103
+ rulesFile: '.cursor/rules/antigravity-rules.mdc',
104
+ versionFile: '.cursor/awk_version',
105
+ dirs: {
106
+ skills: '.cursor/rules',
107
+ },
88
108
  }
89
109
  };
90
110
 
@@ -516,6 +536,8 @@ function cmdInstall(args = []) {
516
536
  if (args.includes('--cline') || args.includes('cline')) selectedPlatforms.push('cline');
517
537
  if (args.includes('--codex') || args.includes('-x')) selectedPlatforms.push('codex');
518
538
  if (args.includes('--claude-code') || args.includes('--claude') || args.includes('-c') || args.includes('claude')) selectedPlatforms.push('claude');
539
+ if (args.includes('--qwen') || args.includes('--qwen-code') || args.includes('-q') || args.includes('qwen')) selectedPlatforms.push('qwen');
540
+ if (args.includes('--cursor') || args.includes('cursor')) selectedPlatforms.push('cursor');
519
541
 
520
542
  const pIdx = args.indexOf('--platform');
521
543
  let legacyArg = null;
@@ -534,25 +556,29 @@ function cmdInstall(args = []) {
534
556
  if (isUpdate) {
535
557
  selectedPlatforms = [getActivePlatform()];
536
558
  } else {
537
- const platformOrder = ['antigravity', 'cline', 'codex', 'claude'];
559
+ const platformOrder = ['antigravity', 'cline', 'codex', 'claude', 'qwen', 'cursor'];
538
560
  const defaultPlatform = getActivePlatform();
539
561
  const defaultChoice = String(Math.max(platformOrder.indexOf(defaultPlatform), 0) + 1);
540
- log(`${C.cyan}Select platforms to install (e.g., type "1,2", "all", or "1,2,3,4"):${C.reset}`);
562
+ log(`${C.cyan}Select platforms to install (e.g., type "1,2", "all", or "1-6"):${C.reset}`);
541
563
  log(` 1. Gemini Code Assist (antigravity)`);
542
564
  log(` 2. Cline (VS Code)`);
543
565
  log(` 3. Codex CLI (codex)`);
544
566
  log(` 4. Claude Code (.claude/)`);
545
- log(` 5. All of the above`);
567
+ log(` 5. Qwen Code (~/.qwen/)`);
568
+ log(` 6. Cursor AI (.cursor/rules/)`);
569
+ log(` 7. All of the above`);
546
570
  log(`${C.gray}Press Enter to install only the active platform: ${PLATFORMS[defaultPlatform].name}.${C.reset}`);
547
571
  const choice = promptChoice('Choice', defaultChoice).trim().toLowerCase();
548
572
 
549
- if (choice === '5' || choice === 'all') {
573
+ if (choice === '7' || choice === 'all') {
550
574
  selectedPlatforms = Object.keys(PLATFORMS);
551
575
  } else {
552
576
  if (choice.includes('1')) selectedPlatforms.push('antigravity');
553
577
  if (choice.includes('2')) selectedPlatforms.push('cline');
554
578
  if (choice.includes('3')) selectedPlatforms.push('codex');
555
579
  if (choice.includes('4')) selectedPlatforms.push('claude');
580
+ if (choice.includes('5')) selectedPlatforms.push('qwen');
581
+ if (choice.includes('6')) selectedPlatforms.push('cursor');
556
582
  }
557
583
  }
558
584
  }
@@ -614,6 +640,10 @@ function cmdInstall(args = []) {
614
640
  const claudeTemplateSrc = path.join(AWK_ROOT, 'core', 'CLAUDE.md');
615
641
  const claudeRulesDest = path.join(target, plat.rulesFile);
616
642
  generateClaudeRules(claudeTemplateSrc, claudeRulesDest);
643
+ } else if (platform === 'cursor') {
644
+ info('Generating Cursor AI .mdc rules...');
645
+ const cursorRulesDest = path.join(target, plat.rulesFile);
646
+ generateCursorRules(path.join(AWK_ROOT, 'core', 'GEMINI.md'), cursorRulesDest);
617
647
  }
618
648
 
619
649
  // 3. Backup and install workflows
@@ -668,7 +698,11 @@ function cmdInstall(args = []) {
668
698
  const agentsDest = path.join(target, plat.dirs.agents);
669
699
  generateCodexAgents(skillsSrc, agentsDest, coreSkills);
670
700
  } else if (platform === 'claude') {
671
- generateClaudeSkills(skillsSrc, skillsDest, coreSkills);
701
+ generateClaudeSkills(skillsSrc, skillsDest, coreSkills, 'Claude Code');
702
+ } else if (platform === 'qwen') {
703
+ generateClaudeSkills(skillsSrc, skillsDest, coreSkills, 'Qwen Code'); // Shares the same format with Claude
704
+ } else if (platform === 'cursor') {
705
+ generateCursorSkills(skillsSrc, skillsDest, coreSkills);
672
706
  } else {
673
707
  const skillCount = copySelectedSkillDirs(skillsSrc, skillsDest, coreSkills);
674
708
  ok(`${skillCount} core skill files installed`);
@@ -2298,6 +2332,25 @@ function buildProjectIdentity(projectName, projectType, cwd, date) {
2298
2332
  list: 'Your List Name',
2299
2333
  card: 'Your Card Name',
2300
2334
  },
2335
+ automation: {
2336
+ autoQA: true,
2337
+ maxSelfCorrectionLoops: 3,
2338
+ telegram: {
2339
+ enabled: true,
2340
+ chatId: "",
2341
+ topicId: "",
2342
+ triggers: { git_push: true, task_complete: false, deploy: true }
2343
+ },
2344
+ trello: {
2345
+ enabled: true,
2346
+ autoSync: true,
2347
+ triggers: { task_complete: true, milestone: true, blocked: true }
2348
+ },
2349
+ git: {
2350
+ autoCommit: true,
2351
+ autoPush: true
2352
+ }
2353
+ },
2301
2354
  projectStage: 'development',
2302
2355
  codingStandards: cfg.codingStandards,
2303
2356
  projectGoals: [],
@@ -2505,6 +2558,8 @@ async function cmdInit(forceFlag = false) {
2505
2558
  const currentIdentity = JSON.parse(fs.readFileSync(identityPath, 'utf8'));
2506
2559
  if (!currentIdentity.automation) {
2507
2560
  currentIdentity.automation = {
2561
+ autoQA: true,
2562
+ maxSelfCorrectionLoops: 3,
2508
2563
  telegram: {
2509
2564
  enabled: true,
2510
2565
  chatId: "",
@@ -2523,6 +2578,12 @@ async function cmdInit(forceFlag = false) {
2523
2578
  };
2524
2579
  fs.writeFileSync(identityPath, JSON.stringify(currentIdentity, null, 2) + '\n');
2525
2580
  ok('Added Automation config placeholder to .project-identity');
2581
+ } else if (currentIdentity.automation.autoQA === undefined) {
2582
+ // Update existing automation block with new QA fields
2583
+ currentIdentity.automation.autoQA = true;
2584
+ currentIdentity.automation.maxSelfCorrectionLoops = 3;
2585
+ fs.writeFileSync(identityPath, JSON.stringify(currentIdentity, null, 2) + '\n');
2586
+ ok('Updated Automation config with autoQA defaults in .project-identity');
2526
2587
  }
2527
2588
  } catch (_) { /* ignore */ }
2528
2589
 
@@ -3867,6 +3928,10 @@ const [, , command, ...args] = process.argv;
3867
3928
  case 'gate':
3868
3929
  cmdGate(args);
3869
3930
  break;
3931
+ case 'obsidian':
3932
+ case 'obs':
3933
+ cmdObsidian(args);
3934
+ break;
3870
3935
  case 'admin':
3871
3936
  cmdAdmin();
3872
3937
  break;
@@ -25,7 +25,7 @@ function generateClaudeRules(sourcePath, destPath) {
25
25
  * Preserves full directory structure: <skill-name>/SKILL.md + scripts/ + templates/
26
26
  * Injects YAML frontmatter if missing.
27
27
  */
28
- function generateClaudeSkills(srcDir, destDir, selectedSkills = null) {
28
+ function generateClaudeSkills(srcDir, destDir, selectedSkills = null, platformName = 'Claude Code') {
29
29
  if (!fs.existsSync(srcDir)) return;
30
30
 
31
31
  fs.mkdirSync(destDir, { recursive: true });
@@ -51,7 +51,7 @@ function generateClaudeSkills(srcDir, destDir, selectedSkills = null) {
51
51
 
52
52
  count++;
53
53
  }
54
- console.log(`✅ Generated ${count} Claude Code skills in ${destDir}`);
54
+ console.log(`✅ Generated ${count} ${platformName} skills in ${destDir}`);
55
55
  }
56
56
 
57
57
  /**