ai-developer-skill-os 1.2.0 → 1.3.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 +39 -17
- package/bin/install.js +105 -41
- package/docs/HUONG_DAN_SU_DUNG.md +9 -9
- package/package.json +34 -34
- package/rename.js +64 -0
- package/skills/backend/qk-auth-security/SKILL.md +1 -1
- package/skills/backend/qk-backend-architecture/SKILL.md +1 -1
- package/skills/backend/{database-engineer → qk-database-engineer}/SKILL.md +1 -1
- package/skills/backend/qk-deployment/SKILL.md +1 -1
- package/skills/engineering/{agent-orchestrator → qk-agent-orchestrator}/SKILL.md +1 -1
- package/skills/engineering/{api-integration → qk-api-integration}/SKILL.md +1 -1
- package/skills/engineering/{bug-fix → qk-bug-fix}/SKILL.md +1 -1
- package/skills/engineering/qk-context-manager/SKILL.md +1 -1
- package/skills/engineering/{git-engineer → qk-git-engineer}/SKILL.md +1 -1
- package/skills/engineering/qk-migration/SKILL.md +1 -1
- package/skills/engineering/qk-project-audit/SKILL.md +1 -1
- package/skills/engineering/qk-refactor/SKILL.md +1 -1
- package/skills/frontend/{accessibility-audit → qk-accessibility-audit}/SKILL.md +1 -1
- package/skills/frontend/{component-generator → qk-component-generator}/SKILL.md +1 -1
- package/skills/frontend/{design-system → qk-design-system}/SKILL.md +1 -1
- package/skills/frontend/{form-builder → qk-form-builder}/SKILL.md +1 -1
- package/skills/frontend/{frontend-architecture → qk-frontend-architecture}/SKILL.md +1 -1
- package/skills/frontend/{frontend-debug → qk-frontend-debug}/SKILL.md +1 -1
- package/skills/frontend/{frontend-performance → qk-frontend-performance}/SKILL.md +1 -1
- package/skills/frontend/qk-frontend-testing/SKILL.md +1 -1
- package/skills/frontend/{state-management → qk-state-management}/SKILL.md +1 -1
- package/skills/frontend/{table-crud-generator → qk-table-crud-generator}/SKILL.md +1 -1
- package/skills/frontend/qk-ui-builder/SKILL.md +1 -1
- package/skills.json +46 -46
package/README.md
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
# 🚀 AI Developer Skill OS
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/js/ai-developer-skill-os)
|
|
4
|
-
[](https://github.com/phamquangkhanh2999)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
6
|
|
|
6
|
-
**
|
|
7
|
-
Hệ điều hành kỹ năng (Skill OS) giúp biến AI của bạn từ một "cỗ máy sinh code" thành một Senior Software Engineer thực thụ với quy trình làm việc chuẩn mực.
|
|
8
|
-
|
|
9
|
-
> Tác giả: **Quang Khánh**
|
|
7
|
+
> **"Biến mọi AI Code Editor (Cursor, Windsurf, Cline) thành một Senior Engineer thực thụ với 23 kỹ năng được lập trình sẵn."**
|
|
10
8
|
|
|
11
9
|
---
|
|
12
10
|
|
|
13
|
-
## 🌟
|
|
11
|
+
## 🌟 Tại sao bạn cần Skill OS?
|
|
12
|
+
|
|
13
|
+
Các AI Editor hiện tại rất thông minh, nhưng nếu không có quy trình rõ ràng, chúng thường **lan man, tự ý sửa code lung tung, hoặc viết code không theo chuẩn kiến trúc**.
|
|
14
|
+
|
|
15
|
+
**AI Developer Skill OS (by Quang Khánh)** giải quyết triệt để vấn đề này bằng cách:
|
|
16
|
+
- 🧠 **Ép AI tư duy theo Workflow (Chain-of-Thought):** Phân tích trước, code sau.
|
|
17
|
+
- 🛡️ **Scope & Non-goals rõ ràng:** Khoá chặt giới hạn, tuyệt đối không cho AI sửa hỏng các file không liên quan.
|
|
18
|
+
- 🎨 **Output chuyên nghiệp:** Mọi câu trả lời của AI đều được định dạng thành bảng biểu, báo cáo y hệt một hệ thống thật.
|
|
14
19
|
|
|
15
|
-
|
|
20
|
+
### Hệ thống 23 Kỹ năng (Skillset)
|
|
16
21
|
- 🛠️ **Engineering Core (8 skills):** Agent Orchestrator (Lên kế hoạch), Context Manager, Project Audit, Bug Fix, Refactor, API Integration, Migration, Git Engineer.
|
|
17
22
|
- 🎨 **Frontend (11 skills):** Frontend Architecture, Design System, UI Builder, Component Generator, State Management, Form Builder, Table CRUD, Debug, Testing, Performance, A11Y Audit.
|
|
18
23
|
- ⚙️ **Backend (4 skills):** Backend Architecture, Database Engineer, Auth & Security, Deployment (DevOps).
|
|
@@ -84,23 +89,40 @@ Tạo file `.github/copilot-instructions.md` và dán đoạn prompt tương t
|
|
|
84
89
|
|
|
85
90
|
## 🚀 Cách gọi lệnh Skill chuyên nghiệp (Usage)
|
|
86
91
|
|
|
87
|
-
AI sẽ tự động nhận diện skill qua ngữ cảnh, nhưng để chắc chắn 100% và tiết kiệm thời gian gõ prompt, bạn hãy dùng cú pháp lệnh độc quyền: **`./qk
|
|
92
|
+
AI sẽ tự động nhận diện skill qua ngữ cảnh, nhưng để chắc chắn 100% và tiết kiệm thời gian gõ prompt, bạn hãy dùng cú pháp lệnh độc quyền: **`./qk-[tên-skill]`**
|
|
88
93
|
|
|
89
94
|
Dưới đây là các ví dụ cụ thể để bạn copy - paste và trải nghiệm ngay:
|
|
90
95
|
|
|
91
|
-
### 1.
|
|
92
|
-
> **`./qk
|
|
96
|
+
### 1. Nhờ AI lên kế hoạch (Planning) & Kiến trúc
|
|
97
|
+
> **`./qk-agent-orchestrator`** Hãy lên kế hoạch làm tính năng Giỏ Hàng cho tôi. Nhớ gọi thêm **`./qk-context-manager`** để đọc cấu trúc dự án trước nhé.
|
|
98
|
+
|
|
99
|
+
### 2. Xây dựng Giao diện (Frontend/UI)
|
|
100
|
+
> **`./qk-ui-builder`** & **`./qk-design-system`** Hãy tạo cho tôi một màn hình Đăng Nhập (Login) xịn xò. Đảm bảo Responsive và dùng đúng chuẩn Component.
|
|
101
|
+
|
|
102
|
+
### 3. Thiết kế Database (Backend)
|
|
103
|
+
> **`./qk-database-engineer`** Hãy viết cho tôi schema Prisma cho bảng Product và User có quan hệ 1-N. Tối ưu index cho truy vấn nhanh.
|
|
93
104
|
|
|
94
|
-
###
|
|
95
|
-
> **`./qk
|
|
105
|
+
### 4. Tìm và Diệt Bug (Debugging)
|
|
106
|
+
> **`./qk-frontend-debug`** & **`./qk-bug-fix`** Code đang bị crash với lỗi `Hydration error`. Hãy tìm nguyên nhân gốc rễ và sửa dứt điểm giúp tôi.
|
|
96
107
|
|
|
97
|
-
|
|
98
|
-
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 💎 Danh sách 23+ Kỹ Năng Độc Quyền
|
|
111
|
+
|
|
112
|
+
| Phân hệ | Kỹ năng tiêu biểu | Chức năng chính |
|
|
113
|
+
|---------|-------------------|-----------------|
|
|
114
|
+
| 🏗️ **Engineering** | `qk-project-audit`, `qk-agent-orchestrator` | Kiểm toán dự án, lập kế hoạch, quản lý Git, Refactor code. |
|
|
115
|
+
| 🎨 **Frontend** | `qk-ui-builder`, `qk-frontend-performance` | Dựng UI, tối ưu tốc độ, test component, quản lý State. |
|
|
116
|
+
| ⚙️ **Backend** | `qk-database-engineer`, `qk-auth-security` | Thiết kế DB Schema, bảo mật JWT/OAuth, cấu hình CI/CD. |
|
|
99
117
|
|
|
100
|
-
|
|
101
|
-
|
|
118
|
+
👉 [Xem danh sách toàn bộ Kỹ năng tại đây](docs/CHI_TIET_SKILLS.md)
|
|
119
|
+
|
|
120
|
+
---
|
|
102
121
|
|
|
103
|
-
|
|
122
|
+
<div align="center">
|
|
123
|
+
<b>Được thiết kế và phát triển bởi Quang Khánh (QK)</b><br>
|
|
124
|
+
<i>Empowering Vietnamese Developers with World-Class AI Workflows.</i>
|
|
125
|
+
</div>
|
|
104
126
|
|
|
105
127
|
---
|
|
106
128
|
|
package/bin/install.js
CHANGED
|
@@ -2,18 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
const fs = require('fs');
|
|
4
4
|
const path = require('path');
|
|
5
|
+
const readline = require('readline');
|
|
5
6
|
|
|
6
7
|
const sourceDir = path.join(__dirname, '..');
|
|
7
8
|
let targetDir = path.join(process.cwd(), '.qk-ai-skill-os');
|
|
8
9
|
|
|
9
|
-
// Check arguments for IDE-specific paths
|
|
10
|
-
const args = process.argv.slice(2);
|
|
11
|
-
const isGemini = args.includes('--gemini') || args.includes('--antigravity');
|
|
12
|
-
|
|
13
|
-
if (isGemini) {
|
|
14
|
-
targetDir = path.join(process.cwd(), '.agents', 'skills');
|
|
15
|
-
}
|
|
16
|
-
|
|
17
10
|
function copyRecursiveSync(src, dest) {
|
|
18
11
|
const exists = fs.existsSync(src);
|
|
19
12
|
const stats = exists && fs.statSync(src);
|
|
@@ -31,41 +24,112 @@ function copyRecursiveSync(src, dest) {
|
|
|
31
24
|
}
|
|
32
25
|
}
|
|
33
26
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
+
const rl = readline.createInterface({
|
|
39
|
+
input: process.stdin,
|
|
40
|
+
output: process.stdout
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
console.log('🚀 Đang chuẩn bị cài đặt AI Developer Skill OS...\n');
|
|
44
|
+
|
|
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):
|
|
46
|
+
(1) Cursor
|
|
47
|
+
(2) Windsurf
|
|
48
|
+
(3) Cline / Roo Code
|
|
49
|
+
(4) Antigravity / Gemini
|
|
50
|
+
(5) Codex
|
|
51
|
+
(6) Kilo Code
|
|
52
|
+
(0) Bỏ qua (Không tạo file config)
|
|
53
|
+
|
|
54
|
+
Nhập số (0-6): `;
|
|
55
|
+
|
|
56
|
+
rl.question(questionText, (answer) => {
|
|
57
|
+
let isGemini = false;
|
|
58
|
+
let ruleFile = null;
|
|
40
59
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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;
|
|
54
75
|
}
|
|
55
76
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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/)');
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
try {
|
|
84
|
+
if (!fs.existsSync(targetDir)) {
|
|
85
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
63
86
|
}
|
|
64
|
-
});
|
|
65
87
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
|
|
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
|
+
}
|
|
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}`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
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('❌ Có lỗi xảy ra trong quá trình cài đặt:', error.message);
|
|
132
|
+
} finally {
|
|
133
|
+
rl.close();
|
|
134
|
+
}
|
|
135
|
+
});
|
|
@@ -87,33 +87,33 @@ Tạo file `.github/copilot-instructions.md` và dán đoạn prompt tương t
|
|
|
87
87
|
## 4. Cách kiểm tra cài đặt thành công
|
|
88
88
|
|
|
89
89
|
Để biết AI của bạn đã thực sự "nhập môn" bộ Skill OS này chưa, hãy mở khung chat AI trong dự án và gõ cú pháp lệnh chuyên nghiệp sau:
|
|
90
|
-
> **`./qk
|
|
90
|
+
> **`./qk-project-audit`** Hãy cho tôi biết bạn sẽ làm những gì.
|
|
91
91
|
|
|
92
|
-
✅ **Thành công:** Nếu AI trả lời bằng tiếng Việt, liệt kê đúng các bước khám bệnh (Phase 1, Phase 2, Phase 3...) theo đúng như trong file `SKILL.md` của `project-audit`.
|
|
92
|
+
✅ **Thành công:** Nếu AI trả lời bằng tiếng Việt, liệt kê đúng các bước khám bệnh (Phase 1, Phase 2, Phase 3...) theo đúng như trong file `SKILL.md` của `qk-project-audit`.
|
|
93
93
|
❌ **Thất bại:** Nếu AI trả lời chung chung hoặc bảo không biết skill này là gì, bạn cần kiểm tra lại đường dẫn file cấu hình ở bước trên.
|
|
94
94
|
|
|
95
95
|
---
|
|
96
96
|
|
|
97
97
|
## 5. Cách gọi lệnh Skill chuyên nghiệp (Usage)
|
|
98
98
|
|
|
99
|
-
AI sẽ tự động nhận diện skill qua ngữ cảnh, nhưng cách chuyên nghiệp và tiết kiệm thời gian gõ prompt nhất là bạn sử dụng cú pháp lệnh độc quyền: **`./qk
|
|
99
|
+
AI sẽ tự động nhận diện skill qua ngữ cảnh, nhưng cách chuyên nghiệp và tiết kiệm thời gian gõ prompt nhất là bạn sử dụng cú pháp lệnh độc quyền: **`./qk-[tên-skill]`**
|
|
100
100
|
|
|
101
101
|
Dưới đây là các câu lệnh (prompt) mẫu cực kỳ hiệu quả mà bạn nên dùng:
|
|
102
102
|
|
|
103
103
|
### 🎯 Ví dụ 1: Nhờ AI lên kế hoạch (Planning)
|
|
104
|
-
> **`./qk
|
|
104
|
+
> **`./qk-agent-orchestrator`** Hãy lên kế hoạch làm tính năng Đăng nhập này cho tôi. Nhớ gọi thêm **`./qk-context-manager`** để kiểm tra thư mục hiện tại có những file gì trước nhé.
|
|
105
105
|
|
|
106
106
|
### 🎯 Ví dụ 2: Fix lỗi cứng đầu (Bug Fix)
|
|
107
|
-
> **`./qk
|
|
107
|
+
> **`./qk-frontend-debug`** & **`./qk-bug-fix`** Code đang bị crash với lỗi `Hydration error`. Hãy tìm hiểu nguyên nhân gốc rễ và sửa nó giúp tôi.
|
|
108
108
|
|
|
109
109
|
### 🎯 Ví dụ 3: Review Codebase (Audit)
|
|
110
|
-
> **`./qk
|
|
110
|
+
> **`./qk-project-audit`** Hãy kiểm tra nhanh cho tôi thư mục `src/components/` xem có bị vấn đề về hiệu năng hay code smell không.
|
|
111
111
|
|
|
112
112
|
### 🎯 Ví dụ 4: Xây dựng Giao diện Frontend (UI)
|
|
113
|
-
> **`./qk
|
|
113
|
+
> **`./qk-ui-builder`** & **`./qk-design-system`** Hãy tạo cho tôi một màn hình Danh sách User. Chú ý dùng chuẩn components của thư mục `src/components/ui/` nhé.
|
|
114
114
|
|
|
115
115
|
### 🎯 Ví dụ 5: Làm việc với API (Backend & Integration)
|
|
116
|
-
> **`./qk
|
|
116
|
+
> **`./qk-api-integration`** Tích hợp cái swagger login này vào frontend giúp. Nhớ dùng React Query như chuẩn của project.
|
|
117
117
|
|
|
118
118
|
### 🎯 Ví dụ 6: Database & Backend
|
|
119
|
-
> **`./qk
|
|
119
|
+
> **`./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.
|
package/package.json
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "ai-developer-skill-os",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Multi-agent skill package cho AI coding agents (Claude, Cursor, Windsurf, Antigravity) với 23 skills chuyên nghiệp.",
|
|
5
|
-
"main": "bin/install.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"ai-developer-skill-os": "bin/install.js",
|
|
8
|
-
"ai-skill": "bin/install.js"
|
|
9
|
-
},
|
|
10
|
-
"scripts": {
|
|
11
|
-
"test": "echo \"Error: no test specified\" && exit 1"
|
|
12
|
-
},
|
|
13
|
-
"repository": {
|
|
14
|
-
"type": "git",
|
|
15
|
-
"url": "git+https://github.com/phamquangkhanh2999/ai-developer-skill-os.git"
|
|
16
|
-
},
|
|
17
|
-
"keywords": [
|
|
18
|
-
"ai",
|
|
19
|
-
"claude",
|
|
20
|
-
"cursor",
|
|
21
|
-
"windsurf",
|
|
22
|
-
"skills",
|
|
23
|
-
"developer",
|
|
24
|
-
"agent",
|
|
25
|
-
"prompts",
|
|
26
|
-
"framework"
|
|
27
|
-
],
|
|
28
|
-
"author": "Quang Khánh",
|
|
29
|
-
"license": "MIT",
|
|
30
|
-
"bugs": {
|
|
31
|
-
"url": "https://github.com/phamquangkhanh2999/ai-developer-skill-os/issues"
|
|
32
|
-
},
|
|
33
|
-
"homepage": "https://github.com/phamquangkhanh2999/ai-developer-skill-os#readme"
|
|
34
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "ai-developer-skill-os",
|
|
3
|
+
"version": "1.3.1",
|
|
4
|
+
"description": "Multi-agent skill package cho AI coding agents (Claude, Cursor, Windsurf, Antigravity) với 23 skills chuyên nghiệp.",
|
|
5
|
+
"main": "bin/install.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"ai-developer-skill-os": "bin/install.js",
|
|
8
|
+
"ai-skill": "bin/install.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
12
|
+
},
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/phamquangkhanh2999/ai-developer-skill-os.git"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"ai",
|
|
19
|
+
"claude",
|
|
20
|
+
"cursor",
|
|
21
|
+
"windsurf",
|
|
22
|
+
"skills",
|
|
23
|
+
"developer",
|
|
24
|
+
"agent",
|
|
25
|
+
"prompts",
|
|
26
|
+
"framework"
|
|
27
|
+
],
|
|
28
|
+
"author": "Quang Khánh",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"bugs": {
|
|
31
|
+
"url": "https://github.com/phamquangkhanh2999/ai-developer-skill-os/issues"
|
|
32
|
+
},
|
|
33
|
+
"homepage": "https://github.com/phamquangkhanh2999/ai-developer-skill-os#readme"
|
|
34
|
+
}
|
package/rename.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const { execSync } = require('child_process');
|
|
4
|
+
|
|
5
|
+
const skillsDir = 'skills';
|
|
6
|
+
const categories = fs.readdirSync(skillsDir).filter(f => fs.statSync(path.join(skillsDir, f)).isDirectory());
|
|
7
|
+
|
|
8
|
+
categories.forEach(category => {
|
|
9
|
+
const catPath = path.join(skillsDir, category);
|
|
10
|
+
const skills = fs.readdirSync(catPath).filter(f => fs.statSync(path.join(catPath, f)).isDirectory());
|
|
11
|
+
skills.forEach(skill => {
|
|
12
|
+
if (!skill.startsWith('qk-')) {
|
|
13
|
+
const oldPath = path.join(catPath, skill).replace(/\\/g, '/');
|
|
14
|
+
const newPath = path.join(catPath, 'qk-' + skill).replace(/\\/g, '/');
|
|
15
|
+
try {
|
|
16
|
+
console.log(`Đang đổi tên: ${oldPath} -> ${newPath}`);
|
|
17
|
+
execSync(`git mv "${oldPath}" "${newPath}"`);
|
|
18
|
+
} catch(e) {
|
|
19
|
+
console.error('LỖI (Hãy chắc chắn bạn đã tắt hoàn toàn IDE/Cursor đang mở folder này):', e.message);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
// Update skills.json
|
|
26
|
+
const skillsJsonPath = 'skills.json';
|
|
27
|
+
let skillsData = JSON.parse(fs.readFileSync(skillsJsonPath, 'utf8'));
|
|
28
|
+
|
|
29
|
+
// Fix entries and modify their paths
|
|
30
|
+
if(skillsData.skills) {
|
|
31
|
+
skillsData.skills = skillsData.skills.map(s => {
|
|
32
|
+
if(!s.name.startsWith('qk-')) {
|
|
33
|
+
s.name = 'qk-' + s.name;
|
|
34
|
+
const parts = s.path.split('/');
|
|
35
|
+
const skillFolder = parts[2];
|
|
36
|
+
if(!skillFolder.startsWith('qk-')) {
|
|
37
|
+
parts[2] = 'qk-' + skillFolder;
|
|
38
|
+
}
|
|
39
|
+
s.path = parts.join('/');
|
|
40
|
+
}
|
|
41
|
+
return s;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
fs.writeFileSync(skillsJsonPath, JSON.stringify(skillsData, null, 2));
|
|
45
|
+
|
|
46
|
+
// Update SKILL.md names
|
|
47
|
+
categories.forEach(category => {
|
|
48
|
+
const catPath = path.join(skillsDir, category);
|
|
49
|
+
const skills = fs.readdirSync(catPath).filter(f => fs.statSync(path.join(catPath, f)).isDirectory());
|
|
50
|
+
skills.forEach(skill => {
|
|
51
|
+
if (skill.startsWith('qk-')) {
|
|
52
|
+
const skillMdPath = path.join(catPath, skill, 'SKILL.md');
|
|
53
|
+
if (fs.existsSync(skillMdPath)) {
|
|
54
|
+
let content = fs.readFileSync(skillMdPath, 'utf8');
|
|
55
|
+
content = content.replace(/^name:\s*([a-zA-Z0-9-]+)\s*$/m, (match, p1) => {
|
|
56
|
+
if (!p1.startsWith('qk-')) return 'name: qk-' + p1;
|
|
57
|
+
return match;
|
|
58
|
+
});
|
|
59
|
+
fs.writeFileSync(skillMdPath, content);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
console.log('✅ Đã đổi tên thành công toàn bộ sang hệ qk-* !');
|
package/skills.json
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
"homepage": "https://github.com/phamquangkhanh2999/ai-developer-skill-os.git",
|
|
8
8
|
"skills": [
|
|
9
9
|
{
|
|
10
|
-
"name": "agent-orchestrator",
|
|
11
|
-
"path": "skills/engineering/agent-orchestrator/SKILL.md",
|
|
10
|
+
"name": "qk-agent-orchestrator",
|
|
11
|
+
"path": "skills/engineering/qk-agent-orchestrator/SKILL.md",
|
|
12
12
|
"version": "1.0.0",
|
|
13
13
|
"category": "engineering",
|
|
14
14
|
"priority": "P0",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"description": "Phân tích yêu cầu, lên kế hoạch thực thi chi tiết và điều phối các tác vụ cho đúng skill. Không tự viết code."
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
|
-
"name": "context-manager",
|
|
37
|
-
"path": "skills/engineering/context-manager/SKILL.md",
|
|
36
|
+
"name": "qk-context-manager",
|
|
37
|
+
"path": "skills/engineering/qk-context-manager/SKILL.md",
|
|
38
38
|
"version": "1.0.0",
|
|
39
39
|
"category": "engineering",
|
|
40
40
|
"priority": "P0",
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
"description": "Xác định các file cần thiết, tóm tắt kiến trúc và quản lý bộ nhớ ngữ cảnh để tránh tràn bộ nhớ."
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
|
-
"name": "project-audit",
|
|
62
|
-
"path": "skills/engineering/project-audit/SKILL.md",
|
|
61
|
+
"name": "qk-project-audit",
|
|
62
|
+
"path": "skills/engineering/qk-project-audit/SKILL.md",
|
|
63
63
|
"version": "1.0.0",
|
|
64
64
|
"category": "engineering",
|
|
65
65
|
"priority": "P0",
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"description": "Kiểm toán toàn bộ dự án để phát hiện bug ẩn, rủi ro bảo mật, vấn đề hiệu năng và nợ kỹ thuật trước khi sửa code."
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
|
-
"name": "bug-fix",
|
|
92
|
-
"path": "skills/engineering/bug-fix/SKILL.md",
|
|
91
|
+
"name": "qk-bug-fix",
|
|
92
|
+
"path": "skills/engineering/qk-bug-fix/SKILL.md",
|
|
93
93
|
"version": "2.0.0",
|
|
94
94
|
"category": "engineering",
|
|
95
95
|
"priority": "P0",
|
|
@@ -116,8 +116,8 @@
|
|
|
116
116
|
"description": "Chẩn đoán và sửa lỗi an toàn. Tái hiện lỗi, tìm nguyên nhân gốc rễ và áp dụng bản sửa lỗi tối thiểu, có kiểm chứng."
|
|
117
117
|
},
|
|
118
118
|
{
|
|
119
|
-
"name": "refactor",
|
|
120
|
-
"path": "skills/engineering/refactor/SKILL.md",
|
|
119
|
+
"name": "qk-refactor",
|
|
120
|
+
"path": "skills/engineering/qk-refactor/SKILL.md",
|
|
121
121
|
"version": "1.0.0",
|
|
122
122
|
"category": "engineering",
|
|
123
123
|
"priority": "P2",
|
|
@@ -144,8 +144,8 @@
|
|
|
144
144
|
"description": "Tái cấu trúc và dọn dẹp mã nguồn để dễ bảo trì hơn mà không làm thay đổi logic hoạt động bên ngoài."
|
|
145
145
|
},
|
|
146
146
|
{
|
|
147
|
-
"name": "api-integration",
|
|
148
|
-
"path": "skills/engineering/api-integration/SKILL.md",
|
|
147
|
+
"name": "qk-api-integration",
|
|
148
|
+
"path": "skills/engineering/qk-api-integration/SKILL.md",
|
|
149
149
|
"version": "2.0.0",
|
|
150
150
|
"category": "engineering",
|
|
151
151
|
"priority": "P1",
|
|
@@ -172,8 +172,8 @@
|
|
|
172
172
|
"description": "Chuyển đổi tài liệu API (curl, swagger...) thành code tích hợp frontend chuẩn xác, có type an toàn và xử lý lỗi."
|
|
173
173
|
},
|
|
174
174
|
{
|
|
175
|
-
"name": "migration",
|
|
176
|
-
"path": "skills/engineering/migration/SKILL.md",
|
|
175
|
+
"name": "qk-migration",
|
|
176
|
+
"path": "skills/engineering/qk-migration/SKILL.md",
|
|
177
177
|
"version": "1.0.0",
|
|
178
178
|
"category": "engineering",
|
|
179
179
|
"priority": "P2",
|
|
@@ -201,8 +201,8 @@
|
|
|
201
201
|
"description": "Nâng cấp dependency, chuyển đổi framework và thay thế thư viện một cách an toàn với chiến lược không downtime."
|
|
202
202
|
},
|
|
203
203
|
{
|
|
204
|
-
"name": "git-engineer",
|
|
205
|
-
"path": "skills/engineering/git-engineer/SKILL.md",
|
|
204
|
+
"name": "qk-git-engineer",
|
|
205
|
+
"path": "skills/engineering/qk-git-engineer/SKILL.md",
|
|
206
206
|
"version": "1.0.0",
|
|
207
207
|
"category": "engineering",
|
|
208
208
|
"priority": "P2",
|
|
@@ -227,8 +227,8 @@
|
|
|
227
227
|
"description": "Viết commit message chuẩn Conventional Commits, mô tả Pull Request, Changelog và Release Notes chuyên nghiệp."
|
|
228
228
|
},
|
|
229
229
|
{
|
|
230
|
-
"name": "frontend-architecture",
|
|
231
|
-
"path": "skills/frontend/frontend-architecture/SKILL.md",
|
|
230
|
+
"name": "qk-frontend-architecture",
|
|
231
|
+
"path": "skills/frontend/qk-frontend-architecture/SKILL.md",
|
|
232
232
|
"version": "1.0.0",
|
|
233
233
|
"category": "frontend",
|
|
234
234
|
"priority": "P1",
|
|
@@ -254,8 +254,8 @@
|
|
|
254
254
|
"description": "Phân tích cấu trúc thư mục frontend và quyết định vị trí đặt file chuẩn xác theo kiến trúc hiện tại."
|
|
255
255
|
},
|
|
256
256
|
{
|
|
257
|
-
"name": "design-system",
|
|
258
|
-
"path": "skills/frontend/design-system/SKILL.md",
|
|
257
|
+
"name": "qk-design-system",
|
|
258
|
+
"path": "skills/frontend/qk-design-system/SKILL.md",
|
|
259
259
|
"version": "1.0.0",
|
|
260
260
|
"category": "frontend",
|
|
261
261
|
"priority": "P1",
|
|
@@ -282,8 +282,8 @@
|
|
|
282
282
|
"description": "Ép buộc sử dụng design system, component library và token hiện có, ngăn chặn việc viết HTML/CSS rác."
|
|
283
283
|
},
|
|
284
284
|
{
|
|
285
|
-
"name": "ui-builder",
|
|
286
|
-
"path": "skills/frontend/ui-builder/SKILL.md",
|
|
285
|
+
"name": "qk-ui-builder",
|
|
286
|
+
"path": "skills/frontend/qk-ui-builder/SKILL.md",
|
|
287
287
|
"version": "1.0.0",
|
|
288
288
|
"category": "frontend",
|
|
289
289
|
"priority": "P1",
|
|
@@ -312,8 +312,8 @@
|
|
|
312
312
|
"description": "Xây dựng các màn hình và layout phức tạp từ yêu cầu, tái sử dụng component và đảm bảo responsive."
|
|
313
313
|
},
|
|
314
314
|
{
|
|
315
|
-
"name": "component-generator",
|
|
316
|
-
"path": "skills/frontend/component-generator/SKILL.md",
|
|
315
|
+
"name": "qk-component-generator",
|
|
316
|
+
"path": "skills/frontend/qk-component-generator/SKILL.md",
|
|
317
317
|
"version": "1.0.0",
|
|
318
318
|
"category": "frontend",
|
|
319
319
|
"priority": "P1",
|
|
@@ -339,8 +339,8 @@
|
|
|
339
339
|
"description": "Tạo các UI Component độc lập, tái sử dụng được, có type an toàn và tuân thủ chuẩn design system."
|
|
340
340
|
},
|
|
341
341
|
{
|
|
342
|
-
"name": "state-management",
|
|
343
|
-
"path": "skills/frontend/state-management/SKILL.md",
|
|
342
|
+
"name": "qk-state-management",
|
|
343
|
+
"path": "skills/frontend/qk-state-management/SKILL.md",
|
|
344
344
|
"version": "1.0.0",
|
|
345
345
|
"category": "frontend",
|
|
346
346
|
"priority": "P2",
|
|
@@ -368,8 +368,8 @@
|
|
|
368
368
|
"description": "Xác định và triển khai chiến lược quản lý state phù hợp (Zustand, Redux, React Query, Local State)."
|
|
369
369
|
},
|
|
370
370
|
{
|
|
371
|
-
"name": "form-builder",
|
|
372
|
-
"path": "skills/frontend/form-builder/SKILL.md",
|
|
371
|
+
"name": "qk-form-builder",
|
|
372
|
+
"path": "skills/frontend/qk-form-builder/SKILL.md",
|
|
373
373
|
"version": "1.0.0",
|
|
374
374
|
"category": "frontend",
|
|
375
375
|
"priority": "P2",
|
|
@@ -398,8 +398,8 @@
|
|
|
398
398
|
"description": "Xây dựng Form chuẩn xác với quản lý trạng thái, validate dữ liệu (Zod, Yup) và xử lý hiển thị lỗi."
|
|
399
399
|
},
|
|
400
400
|
{
|
|
401
|
-
"name": "table-crud-generator",
|
|
402
|
-
"path": "skills/frontend/table-crud-generator/SKILL.md",
|
|
401
|
+
"name": "qk-table-crud-generator",
|
|
402
|
+
"path": "skills/frontend/qk-table-crud-generator/SKILL.md",
|
|
403
403
|
"version": "1.0.0",
|
|
404
404
|
"category": "frontend",
|
|
405
405
|
"priority": "P2",
|
|
@@ -428,8 +428,8 @@
|
|
|
428
428
|
"description": "Tạo các bảng dữ liệu admin với đầy đủ tính năng phân trang, sắp xếp, lọc và thao tác thêm/sửa/xóa (CRUD)."
|
|
429
429
|
},
|
|
430
430
|
{
|
|
431
|
-
"name": "frontend-debug",
|
|
432
|
-
"path": "skills/frontend/frontend-debug/SKILL.md",
|
|
431
|
+
"name": "qk-frontend-debug",
|
|
432
|
+
"path": "skills/frontend/qk-frontend-debug/SKILL.md",
|
|
433
433
|
"version": "1.0.0",
|
|
434
434
|
"category": "frontend",
|
|
435
435
|
"priority": "P2",
|
|
@@ -455,8 +455,8 @@
|
|
|
455
455
|
"description": "Chẩn đoán và sửa các lỗi đặc thù frontend như Hydration error, infinite re-render, stale closure và vỡ CSS."
|
|
456
456
|
},
|
|
457
457
|
{
|
|
458
|
-
"name": "frontend-testing",
|
|
459
|
-
"path": "skills/frontend/frontend-testing/SKILL.md",
|
|
458
|
+
"name": "qk-frontend-testing",
|
|
459
|
+
"path": "skills/frontend/qk-frontend-testing/SKILL.md",
|
|
460
460
|
"version": "1.0.0",
|
|
461
461
|
"category": "frontend",
|
|
462
462
|
"priority": "P2",
|
|
@@ -484,8 +484,8 @@
|
|
|
484
484
|
"description": "Viết Unit, Component và E2E test bằng Jest, Vitest, RTL, Cypress. Tập trung vào hành vi người dùng."
|
|
485
485
|
},
|
|
486
486
|
{
|
|
487
|
-
"name": "frontend-performance",
|
|
488
|
-
"path": "skills/frontend/frontend-performance/SKILL.md",
|
|
487
|
+
"name": "qk-frontend-performance",
|
|
488
|
+
"path": "skills/frontend/qk-frontend-performance/SKILL.md",
|
|
489
489
|
"version": "1.0.0",
|
|
490
490
|
"category": "frontend",
|
|
491
491
|
"priority": "P2",
|
|
@@ -512,8 +512,8 @@
|
|
|
512
512
|
"description": "Tối ưu hóa hiệu năng frontend: giảm kích thước bundle, chặn re-render thừa, lazy load và cải thiện Web Vitals."
|
|
513
513
|
},
|
|
514
514
|
{
|
|
515
|
-
"name": "accessibility-audit",
|
|
516
|
-
"path": "skills/frontend/accessibility-audit/SKILL.md",
|
|
515
|
+
"name": "qk-accessibility-audit",
|
|
516
|
+
"path": "skills/frontend/qk-accessibility-audit/SKILL.md",
|
|
517
517
|
"version": "1.0.0",
|
|
518
518
|
"category": "frontend",
|
|
519
519
|
"priority": "P2",
|
|
@@ -540,8 +540,8 @@
|
|
|
540
540
|
"description": "Kiểm tra và sửa lỗi khả năng tiếp cận (a11y/WCAG). Đảm bảo hỗ trợ phím, screen reader và semantic HTML."
|
|
541
541
|
},
|
|
542
542
|
{
|
|
543
|
-
"name": "backend-architecture",
|
|
544
|
-
"path": "skills/backend/backend-architecture/SKILL.md",
|
|
543
|
+
"name": "qk-backend-architecture",
|
|
544
|
+
"path": "skills/backend/qk-backend-architecture/SKILL.md",
|
|
545
545
|
"version": "1.0.0",
|
|
546
546
|
"category": "backend",
|
|
547
547
|
"priority": "P3",
|
|
@@ -567,8 +567,8 @@
|
|
|
567
567
|
"description": "Kiểm soát cấu trúc backend, ép buộc tuân thủ mô hình Layer (Controller/Service/Repository) và vị trí file."
|
|
568
568
|
},
|
|
569
569
|
{
|
|
570
|
-
"name": "database-engineer",
|
|
571
|
-
"path": "skills/backend/database-engineer/SKILL.md",
|
|
570
|
+
"name": "qk-database-engineer",
|
|
571
|
+
"path": "skills/backend/qk-database-engineer/SKILL.md",
|
|
572
572
|
"version": "1.0.0",
|
|
573
573
|
"category": "backend",
|
|
574
574
|
"priority": "P3",
|
|
@@ -597,8 +597,8 @@
|
|
|
597
597
|
"description": "Thiết kế database schema, viết script migration và tối ưu truy vấn cho SQL/NoSQL bằng ORM (Prisma, Drizzle...)."
|
|
598
598
|
},
|
|
599
599
|
{
|
|
600
|
-
"name": "auth-security",
|
|
601
|
-
"path": "skills/backend/auth-security/SKILL.md",
|
|
600
|
+
"name": "qk-auth-security",
|
|
601
|
+
"path": "skills/backend/qk-auth-security/SKILL.md",
|
|
602
602
|
"version": "1.0.0",
|
|
603
603
|
"category": "backend",
|
|
604
604
|
"priority": "P3",
|
|
@@ -626,8 +626,8 @@
|
|
|
626
626
|
"description": "Triển khai tính năng đăng nhập (JWT, OAuth), phân quyền (RBAC) và bảo vệ app khỏi các lỗ hổng OWASP."
|
|
627
627
|
},
|
|
628
628
|
{
|
|
629
|
-
"name": "deployment",
|
|
630
|
-
"path": "skills/backend/deployment/SKILL.md",
|
|
629
|
+
"name": "qk-deployment",
|
|
630
|
+
"path": "skills/backend/qk-deployment/SKILL.md",
|
|
631
631
|
"version": "1.0.0",
|
|
632
632
|
"category": "backend",
|
|
633
633
|
"priority": "P3",
|