ai-developer-skill-os 1.3.1 → 1.4.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.
package/README.md CHANGED
@@ -35,10 +35,12 @@ Mở terminal tại thư mục gốc dự án của bạn và chạy:
35
35
  ```bash
36
36
  npx ai-developer-skill-os init
37
37
  ```
38
- *Lệnh này sẽ tự động tải khởi tạo thư mục ẩn `.qk-ai-skill-os/` chứa toàn bộ kỹ năng vào dự án của bạn.*
38
+ Hệ thống sẽ cung cấp cho bạn 2 tuỳ chọn cực kỳ linh hoạt:
39
+ - **(1) Local:** Cài vào thư mục ẩn `.qk-ai-skill-os/` ngay trong dự án. (Phù hợp khi làm việc nhóm, commit lên Git để ai cũng xài được).
40
+ - **(2) Global:** Cài thẳng vào ổ đĩa máy tính (Home Directory). Từ đó trở đi, bạn mở **BẤT KỲ DỰ ÁN NÀO** cũng sẽ tự động gọi được 23 kỹ năng mà không cần tải lại file! (Rất tuyệt vời cho cá nhân sử dụng).
39
41
 
40
42
  ### Cách 2: Sử dụng Git Submodule
41
- Nếu bạn không dùng Node.js, bạn có thể nhúng trực tiếp qua Git:
43
+ Nếu bạn không dùng Node.js, bạn có thể nhúng trực tiếp qua Git (Chỉ hỗ trợ dạng Local):
42
44
  ```bash
43
45
  git submodule add https://github.com/phamquangkhanh2999/ai-developer-skill-os.git .qk-ai-skill-os
44
46
  ```
@@ -107,6 +109,28 @@ Dưới đây là các ví dụ cụ thể để bạn copy - paste và trải n
107
109
 
108
110
  ---
109
111
 
112
+ ## 💡 Mẹo & Workflow Thực Chiến (Best Practices)
113
+
114
+ Để khai thác tối đa sức mạnh của 23 kỹ năng, bí quyết là **kết hợp (chaining) nhiều skill** lại với nhau trong cùng một luồng công việc. Dưới đây là các Workflow kinh điển:
115
+
116
+ ### 🌟 1. Workflow Bắt đầu một New Chat (Bắt buộc)
117
+ Khi mở một New Chat, AI hoàn toàn chưa biết gì về dự án. Đừng bắt nó code ngay!
118
+ * **Bước 1:** `> Dùng ./qk-context-manager để đọc cấu trúc toàn bộ dự án này.`
119
+ * **Bước 2:** `> Dùng ./qk-agent-orchestrator để phân tích yêu cầu sau đây và lên kế hoạch: [Yêu cầu của bạn]`
120
+
121
+ ### 🌟 2. Workflow Làm tính năng mới (VD: Tích hợp API)
122
+ Muốn tạo một màn hình hiển thị danh sách từ API trả về? Hãy gõ:
123
+ * `> Hãy dùng ./qk-api-integration để tạo file gọi API fetch danh sách Users.`
124
+ * `> Tiếp theo dùng ./qk-state-management để lưu data này vào Zustand/Redux.`
125
+ * `> Cuối cùng dùng ./qk-ui-builder để vẽ màn hình Table hiển thị data đó.`
126
+
127
+ ### 🌟 3. Workflow Chống "Phá Code" (Safe Refactor)
128
+ Trước khi đổi một cấu trúc lớn, hãy bắt AI dò mìn:
129
+ * `> Hãy chạy ./qk-project-audit để dò xem việc đổi tên biến X có ảnh hưởng đến các component khác không.`
130
+ * `> OK, giờ hãy dùng ./qk-refactor để sửa lại một cách an toàn.`
131
+
132
+ ---
133
+
110
134
  ## 💎 Danh sách 23+ Kỹ Năng Độc Quyền
111
135
 
112
136
  | Phân hệ | Kỹ năng tiêu biểu | Chức năng chính |
package/bin/install.js CHANGED
@@ -3,9 +3,9 @@
3
3
  const fs = require('fs');
4
4
  const path = require('path');
5
5
  const readline = require('readline');
6
+ const os = require('os');
6
7
 
7
8
  const sourceDir = path.join(__dirname, '..');
8
- let targetDir = path.join(process.cwd(), '.qk-ai-skill-os');
9
9
 
10
10
  function copyRecursiveSync(src, dest) {
11
11
  const exists = fs.existsSync(src);
@@ -24,17 +24,6 @@ function copyRecursiveSync(src, dest) {
24
24
  }
25
25
  }
26
26
 
27
- const systemPrompt = `[Role]
28
- You are an elite AI Software Engineer. You must strictly follow the rules in this project.
29
- Vui lòng tìm đọc danh sách kỹ năng tại file \`./.qk-ai-skill-os/skills.json\`.
30
-
31
- [Trigger Mechanism]
32
- Bất cứ khi nào người dùng gõ lệnh bắt đầu bằng \`./qk-[tên-skill]\`, bạn BẮT BUỘC phải đọc file \`SKILL.md\` tương ứng trong thư mục \`./.qk-ai-skill-os/skills/...\` trước khi làm bất cứ việc gì. Đừng bao giờ đoán mò.
33
-
34
- [Command Arguments]
35
- Người dùng có thể truyền thêm tham số vào lệnh (ví dụ: \`./qk-ui-builder --fw=react --css=tailwind\`).
36
- Nếu người dùng sử dụng tham số (argument), bạn BẮT BUỘC phải tuân thủ tuyệt đối các công nghệ/yêu cầu được chỉ định trong tham số đó thay vì dùng mặc định.`;
37
-
38
27
  const rl = readline.createInterface({
39
28
  input: process.stdin,
40
29
  output: process.stdout
@@ -42,94 +31,137 @@ const rl = readline.createInterface({
42
31
 
43
32
  console.log('🚀 Đang chuẩn bị cài đặt AI Developer Skill OS...\n');
44
33
 
45
- const questionText = `Vui lòng chọn IDE/AI Assistant bạn đang sử dụng để tự động cấu hình (Auto-Generate Config):
34
+ const questionIde = `Vui lòng chọn IDE/AI Assistant bạn đang sử dụng:
46
35
  (1) Cursor
47
36
  (2) Windsurf
48
37
  (3) Cline / Roo Code
49
38
  (4) Antigravity / Gemini
50
39
  (5) Codex
51
40
  (6) Kilo Code
52
- (0) Bỏ qua (Không tạo file config)
41
+ (0) Bỏ qua (Không tạo config tự động)
53
42
 
54
43
  Nhập số (0-6): `;
55
44
 
56
- rl.question(questionText, (answer) => {
57
- let isGemini = false;
58
- let ruleFile = null;
59
-
60
- switch(answer.trim()) {
61
- case '1': ruleFile = '.cursorrules'; break;
62
- case '2': ruleFile = '.windsurfrules'; break;
63
- case '3': ruleFile = '.clinerules'; break;
64
- case '4':
65
- isGemini = true;
66
- targetDir = path.join(process.cwd(), '.agents', 'skills');
67
- ruleFile = path.join('.agents', 'AGENTS.md');
68
- break;
69
- case '5': ruleFile = '.codexrules'; break;
70
- case '6': ruleFile = '.kilorules'; break;
71
- case '0':
72
- default:
73
- console.log('👉 Bỏ qua bước tạo file cấu hình tự động.');
74
- break;
75
- }
45
+ const questionScope = `
46
+ Bạn muốn cài đặt bộ kỹ năng ở đâu?
47
+ (1) Local (Gắn vào dự án hiện tại - Phù hợp làm việc nhóm)
48
+ (2) Global (Cài vào máy tính dùng chung cho mọi dự án - Dành cho cá nhân)
76
49
 
77
- if (isGemini) {
78
- console.log('\n⚙️ Chế độ: Gemini / Antigravity IDE (Cài vào thư mục .agents/)');
79
- } else {
80
- console.log('\n⚙️ Chế độ: Mặc định (Cài vào thư mục .qk-ai-skill-os/)');
50
+ Nhập số (1-2): `;
51
+
52
+ rl.question(questionIde, (answerIde) => {
53
+ let isGemini = false;
54
+ let ruleFileName = null;
55
+ const ideCode = answerIde.trim();
56
+
57
+ switch(ideCode) {
58
+ case '1': ruleFileName = '.cursorrules'; break;
59
+ case '2': ruleFileName = '.windsurfrules'; break;
60
+ case '3': ruleFileName = '.clinerules'; break;
61
+ case '4': isGemini = true; break;
62
+ case '5': ruleFileName = '.codexrules'; break;
63
+ case '6': ruleFileName = '.kilorules'; break;
64
+ case '0': default: break;
81
65
  }
82
66
 
83
- try {
84
- if (!fs.existsSync(targetDir)) {
85
- fs.mkdirSync(targetDir, { recursive: true });
67
+ rl.question(questionScope, (answerScope) => {
68
+ const isGlobal = answerScope.trim() === '2';
69
+
70
+ let targetDir = '';
71
+ let ruleFilePath = null;
72
+ let baseFolderForPrompt = '';
73
+ const homeDir = os.homedir();
74
+ const cwd = process.cwd();
75
+
76
+ if (isGemini) {
77
+ if (isGlobal) {
78
+ targetDir = path.join(homeDir, '.gemini', 'config');
79
+ ruleFilePath = path.join(targetDir, 'AGENTS.md');
80
+ baseFolderForPrompt = path.join(targetDir, 'skills').replace(/\\/g, '/');
81
+ } else {
82
+ targetDir = path.join(cwd, '.agents');
83
+ ruleFilePath = path.join(cwd, '.agents', 'AGENTS.md');
84
+ baseFolderForPrompt = '.agents/skills';
85
+ }
86
+ } else {
87
+ if (isGlobal) {
88
+ targetDir = path.join(homeDir, '.qk-ai-skill-os');
89
+ baseFolderForPrompt = targetDir.replace(/\\/g, '/');
90
+ } else {
91
+ targetDir = path.join(cwd, '.qk-ai-skill-os');
92
+ baseFolderForPrompt = './.qk-ai-skill-os';
93
+ }
94
+ if (ruleFileName) {
95
+ ruleFilePath = path.join(cwd, ruleFileName);
96
+ }
86
97
  }
87
98
 
88
- const filesAndFolders = [
89
- 'skills',
90
- '_template',
91
- 'docs',
92
- 'skills.json',
93
- 'README.md',
94
- 'CHANGELOG.md',
95
- 'LICENSE'
96
- ];
97
-
98
- filesAndFolders.forEach(item => {
99
- const src = path.join(sourceDir, item);
100
- let dest = path.join(targetDir, item);
101
-
102
- if (fs.existsSync(src)) {
103
- copyRecursiveSync(src, dest);
99
+ const systemPrompt = `[Role]
100
+ You are an elite AI Software Engineer. You must strictly follow the rules in this project.
101
+ Vui lòng tìm đọc danh sách kỹ năng tại file \`${baseFolderForPrompt}/skills.json\`.
102
+
103
+ [Trigger Mechanism]
104
+ Bất cứ khi nào người dùng gõ lệnh bắt đầu bằng \`./qk-[tên-skill]\`, bạn BẮT BUỘC phải đọc file \`SKILL.md\` tương ứng trong thư mục \`${baseFolderForPrompt}/...\` (hoặc dùng tool view_file để đọc file đó) trước khi làm bất cứ việc gì. Đừng bao giờ đoán mò.
105
+
106
+ [Command Arguments]
107
+ Người dùng có thể truyền thêm tham số vào lệnh (ví dụ: \`./qk-ui-builder --fw=react --css=tailwind\`).
108
+ Nếu người dùng sử dụng tham số (argument), bạn BẮT BUỘC phải tuân thủ tuyệt đối các công nghệ/yêu cầu được chỉ định trong tham số đó thay vì dùng mặc định.`;
109
+
110
+ try {
111
+ if (!fs.existsSync(targetDir)) {
112
+ fs.mkdirSync(targetDir, { recursive: true });
104
113
  }
105
- });
106
114
 
107
- if (ruleFile) {
108
- const fullRulePath = path.join(process.cwd(), ruleFile);
109
- const ruleDir = path.dirname(fullRulePath);
110
- if (ruleDir !== process.cwd() && !fs.existsSync(ruleDir)) {
111
- fs.mkdirSync(ruleDir, { recursive: true });
112
- }
113
-
114
- let writeContent = systemPrompt;
115
- if (isGemini) {
116
- writeContent = `\n<RULE[ai_skill_os]>\n---\ntrigger: always_on\n---\n${systemPrompt}\n</RULE[ai_skill_os]>\n`;
117
- }
115
+ const filesAndFolders = [
116
+ 'skills', '_template', 'docs', 'skills.json', 'README.md', 'CHANGELOG.md', 'LICENSE'
117
+ ];
118
118
 
119
- if (fs.existsSync(fullRulePath)) {
120
- fs.appendFileSync(fullRulePath, "\n\n" + writeContent);
121
- console.log(`✅ Đã GHI THÊM cấu hình tự động vào file: ${ruleFile}`);
122
- } else {
123
- fs.writeFileSync(fullRulePath, writeContent);
124
- console.log(`✅ Đã TẠO MỚI file cấu hình: ${ruleFile}`);
119
+ // Nếu là Gemini Global, chỉ cần copy skills và skills.json để tránh rác
120
+ if (isGemini && isGlobal) {
121
+ if (fs.existsSync(path.join(sourceDir, 'skills'))) {
122
+ copyRecursiveSync(path.join(sourceDir, 'skills'), path.join(targetDir, 'skills'));
125
123
  }
126
- }
124
+ } else {
125
+ filesAndFolders.forEach(item => {
126
+ const src = path.join(sourceDir, item);
127
+ let dest = path.join(targetDir, item);
128
+ if (fs.existsSync(src)) {
129
+ copyRecursiveSync(src, dest);
130
+ }
131
+ });
132
+ }
127
133
 
128
- console.log(`✅ Đã cài đặt thư viện thành công vào thư mục: ${targetDir.replace(process.cwd(), '.')}`);
129
- console.log('\n💡 Hãy tận hưởng trải nghiệm Auto-Config và Command Arguments (VD: ./qk-ui-builder --fw=react)!');
130
- } catch (error) {
131
- console.error('❌ lỗi xảy ra trong quá trình cài đặt:', error.message);
132
- } finally {
133
- rl.close();
134
- }
134
+ if (ruleFilePath) {
135
+ const ruleDir = path.dirname(ruleFilePath);
136
+ if (ruleDir !== cwd && !fs.existsSync(ruleDir)) {
137
+ fs.mkdirSync(ruleDir, { recursive: true });
138
+ }
139
+
140
+ let writeContent = systemPrompt;
141
+ if (isGemini) {
142
+ writeContent = `\n<RULE[ai_skill_os]>\n---\ntrigger: always_on\n---\n${systemPrompt}\n</RULE[ai_skill_os]>\n`;
143
+ }
144
+
145
+ if (fs.existsSync(ruleFilePath)) {
146
+ fs.appendFileSync(ruleFilePath, "\n\n" + writeContent);
147
+ console.log(`✅ Đã GHI THÊM cấu hình tự động vào file: ${ruleFilePath}`);
148
+ } else {
149
+ fs.writeFileSync(ruleFilePath, writeContent);
150
+ console.log(`✅ Đã TẠO MỚI file cấu hình: ${ruleFilePath}`);
151
+ }
152
+ }
153
+
154
+ console.log(`\n🎉 HOÀN TẤT! Dữ liệu kỹ năng đã được lưu tại: ${targetDir}`);
155
+ if (isGlobal && !isGemini) {
156
+ console.log(`💡 Lưu ý: Kỹ năng đã được cài ở cấp độ máy tính (Global). File cấu hình cục bộ (${ruleFileName}) ở dự án này đang trỏ thẳng về thư mục Global đó.`);
157
+ } else if (isGlobal && isGemini) {
158
+ console.log(`💡 Lưu ý: Antigravity đã được cài Global. Từ nay bạn mở BẤT KỲ DỰ ÁN NÀO trên máy tính này, Antigravity cũng sẽ tự động có đủ 23 kỹ năng mà không cần cài lại!`);
159
+ }
160
+
161
+ } catch (error) {
162
+ console.error('❌ Có lỗi xảy ra trong quá trình cài đặt:', error.message);
163
+ } finally {
164
+ rl.close();
165
+ }
166
+ });
135
167
  });
@@ -27,24 +27,21 @@ Bộ Skin này rất linh hoạt và được phân phối qua NPM để bạn c
27
27
  Mở terminal tại gốc dự án của bạn và chạy lệnh cài đặt tương ứng với công cụ AI bạn đang dùng:
28
28
 
29
29
  ### Dành cho Gemini IDE / Antigravity
30
- Các công cụ này đọc cấu hình từ thư mục `.agents/skills/`. Bạn chỉ cần thêm cờ `--gemini` khi chạy cài đặt:
31
- ```bash
32
- npx ai-developer-skill-os init --gemini
33
- ```
34
- *Lệnh này sẽ tự tạo thư mục `.agents/skills/` và tải toàn bộ bộ kỹ năng vào đó.*
30
+ ### 1. Cài đặt (Installation)
31
+ > Khuyên dùng cách cài đặt qua NPM để luôn nhận được cấu trúc mới nhất và tận dụng tính năng Auto-Config.
35
32
 
36
- ### Dành cho Cursor / Windsurf / Claude Code / Kilo Code
37
- Các công cụ này linh hoạt hơn, bạn cài đặt mặc định:
33
+ Mở terminal tại thư mục gốc dự án của bạn chạy lệnh sau:
38
34
  ```bash
39
35
  npx ai-developer-skill-os init
40
36
  ```
41
- *Lệnh này sẽ tạo thư mục `.qk-ai-skill-os/` gốc dự án.*
42
-
43
- ---
37
+ Quá trình cài đặt sẽ hỏi bạn 2 câu quan trọng:
44
38
 
45
- ## 3. Cấu hình cho IDE / AI Agent
39
+ **Câu 1: Bạn đang dùng IDE nào?**
40
+ Hệ thống sẽ tự động tạo file cấu hình tương ứng (ví dụ `.cursorrules`, `.windsurfrules`, `.clinerules`) và bơm sẵn System Prompt vào để AI tự nhận diện các skill.
46
41
 
47
- Sau khi thư mục kỹ năng đã xuất hiện trong dự án của bạn, hãy cấu hình để AI biết cách sử dụng nó.
42
+ **Câu 2: Phạm vi cài đặt?**
43
+ - **(1) Local:** Cài vào thư mục ẩn `.qk-ai-skill-os/` (hoặc `.agents/` cho Gemini) ngay trong dự án. Rất phù hợp nếu dự án có nhiều người làm chung, bạn có thể commit thư mục này lên Git để ai cũng có skill.
44
+ - **(2) Global:** Cài thẳng vào ổ đĩa máy tính (Home Directory). Nếu bạn code một mình, hãy chọn tuỳ chọn này! Nó giúp bạn tiết kiệm dung lượng, và chỉ cần cài 1 lần là BẤT KỲ DỰ ÁN NÀO bạn mở lên, AI cũng tự động có đủ 23 kỹ năng (Đặc biệt siêu mượt với Antigravity/Gemini). nó.
48
45
 
49
46
  ### Cho Gemini IDE / Antigravity
50
47
  **Không cần cấu hình gì thêm!** Gemini/Antigravity sẽ tự động nhận diện các file trong `.agents/skills/` và sẵn sàng làm việc ngay.
@@ -117,3 +114,27 @@ Dưới đây là các câu lệnh (prompt) mẫu cực kỳ hiệu quả mà b
117
114
 
118
115
  ### 🎯 Ví dụ 6: Database & Backend
119
116
  > **`./qk-database-engineer`** Hãy viết cho tôi schema Prisma cho bảng Product và User có quan hệ 1-N. Làm theo đúng chuẩn kiến trúc trong skill.
117
+
118
+ ---
119
+
120
+ ## 6. 💡 Mẹo & Workflow Thực Chiến (Best Practices)
121
+
122
+ Để khai thác tối đa sức mạnh của 23 kỹ năng, bí quyết là **kết hợp (chaining) nhiều skill** lại với nhau trong cùng một luồng công việc.
123
+
124
+ ### 🌟 Workflow Bắt đầu một New Chat (Bắt buộc)
125
+ Khi mở một New Chat, AI hoàn toàn chưa biết gì về dự án. Đừng bắt nó code ngay!
126
+ * **Bước 1:** `> Dùng ./qk-context-manager để đọc cấu trúc toàn bộ dự án này.`
127
+ * **Bước 2:** `> Dùng ./qk-agent-orchestrator để phân tích yêu cầu sau đây và lên kế hoạch: [Yêu cầu của bạn]`
128
+
129
+ ### 🌟 Workflow Làm tính năng mới (VD: Tích hợp API)
130
+ Muốn tạo một màn hình hiển thị danh sách từ API trả về? Hãy gõ 1 lượt các lệnh:
131
+ * `> Hãy dùng ./qk-api-integration để tạo file gọi API fetch danh sách Users.`
132
+ * `> Tiếp theo dùng ./qk-state-management để lưu data này vào Zustand/Redux.`
133
+ * `> Cuối cùng dùng ./qk-ui-builder để vẽ màn hình Table hiển thị data đó.`
134
+
135
+ ### 🌟 Workflow Chống "Phá Code" (Safe Refactor)
136
+ Trước khi đổi một cấu trúc lớn, hãy bắt AI dò mìn:
137
+ * `> Hãy chạy ./qk-project-audit để dò xem việc đổi tên biến X có ảnh hưởng đến các component khác không.`
138
+ * `> OK, giờ hãy dùng ./qk-refactor để sửa lại một cách an toàn.`
139
+
140
+ 👉 Chúc bạn tận hưởng cảm giác code như một Tech Lead thực thụ!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-developer-skill-os",
3
- "version": "1.3.1",
3
+ "version": "1.4.1",
4
4
  "description": "Multi-agent skill package cho AI coding agents (Claude, Cursor, Windsurf, Antigravity) với 23 skills chuyên nghiệp.",
5
5
  "main": "bin/install.js",
6
6
  "bin": {