ai-developer-skill-os 1.3.2 → 1.5.0
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 +4 -2
- package/bin/install.js +115 -83
- package/docs/HUONG_DAN_SU_DUNG.md +9 -12
- package/package.json +1 -1
- package/skills.json +26 -26
- /package/skills/{frontend/qk-accessibility-audit → qk-accessibility-audit}/SKILL.md +0 -0
- /package/skills/{engineering/qk-agent-orchestrator → qk-agent-orchestrator}/SKILL.md +0 -0
- /package/skills/{engineering/qk-api-integration → qk-api-integration}/SKILL.md +0 -0
- /package/skills/{backend/qk-auth-security → qk-auth-security}/SKILL.md +0 -0
- /package/skills/{backend/qk-backend-architecture → qk-backend-architecture}/SKILL.md +0 -0
- /package/skills/{engineering/qk-bug-fix → qk-bug-fix}/SKILL.md +0 -0
- /package/skills/{frontend/qk-component-generator → qk-component-generator}/SKILL.md +0 -0
- /package/skills/{engineering/qk-context-manager → qk-context-manager}/SKILL.md +0 -0
- /package/skills/{backend/qk-database-engineer → qk-database-engineer}/SKILL.md +0 -0
- /package/skills/{backend/qk-deployment → qk-deployment}/SKILL.md +0 -0
- /package/skills/{frontend/qk-design-system → qk-design-system}/SKILL.md +0 -0
- /package/skills/{frontend/qk-form-builder → qk-form-builder}/SKILL.md +0 -0
- /package/skills/{frontend/qk-frontend-architecture → qk-frontend-architecture}/SKILL.md +0 -0
- /package/skills/{frontend/qk-frontend-debug → qk-frontend-debug}/SKILL.md +0 -0
- /package/skills/{frontend/qk-frontend-performance → qk-frontend-performance}/SKILL.md +0 -0
- /package/skills/{frontend/qk-frontend-testing → qk-frontend-testing}/SKILL.md +0 -0
- /package/skills/{engineering/qk-git-engineer → qk-git-engineer}/SKILL.md +0 -0
- /package/skills/{engineering/qk-migration → qk-migration}/SKILL.md +0 -0
- /package/skills/{engineering/qk-project-audit → qk-project-audit}/SKILL.md +0 -0
- /package/skills/{engineering/qk-refactor → qk-refactor}/SKILL.md +0 -0
- /package/skills/{frontend/qk-state-management → qk-state-management}/SKILL.md +0 -0
- /package/skills/{frontend/qk-table-crud-generator → qk-table-crud-generator}/SKILL.md +0 -0
- /package/skills/{frontend/qk-ui-builder → qk-ui-builder}/SKILL.md +0 -0
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
|
-
|
|
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
|
```
|
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
|
|
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
|
|
41
|
+
(0) Bỏ qua (Không tạo config tự động)
|
|
53
42
|
|
|
54
43
|
Nhập số (0-6): `;
|
|
55
44
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
|
|
31
|
-
|
|
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
|
-
|
|
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 và chạy lệnh sau:
|
|
38
34
|
```bash
|
|
39
35
|
npx ai-developer-skill-os init
|
|
40
36
|
```
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
---
|
|
37
|
+
Quá trình cài đặt sẽ hỏi bạn 2 câu quan trọng:
|
|
44
38
|
|
|
45
|
-
|
|
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
|
-
|
|
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.
|
package/package.json
CHANGED
package/skills.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"skills": [
|
|
9
9
|
{
|
|
10
10
|
"name": "qk-agent-orchestrator",
|
|
11
|
-
"path": "skills/
|
|
11
|
+
"path": "skills/qk-agent-orchestrator/SKILL.md",
|
|
12
12
|
"version": "1.0.0",
|
|
13
13
|
"category": "engineering",
|
|
14
14
|
"priority": "P0",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"name": "qk-context-manager",
|
|
37
|
-
"path": "skills/
|
|
37
|
+
"path": "skills/qk-context-manager/SKILL.md",
|
|
38
38
|
"version": "1.0.0",
|
|
39
39
|
"category": "engineering",
|
|
40
40
|
"priority": "P0",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
"name": "qk-project-audit",
|
|
62
|
-
"path": "skills/
|
|
62
|
+
"path": "skills/qk-project-audit/SKILL.md",
|
|
63
63
|
"version": "1.0.0",
|
|
64
64
|
"category": "engineering",
|
|
65
65
|
"priority": "P0",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
"name": "qk-bug-fix",
|
|
92
|
-
"path": "skills/
|
|
92
|
+
"path": "skills/qk-bug-fix/SKILL.md",
|
|
93
93
|
"version": "2.0.0",
|
|
94
94
|
"category": "engineering",
|
|
95
95
|
"priority": "P0",
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
},
|
|
118
118
|
{
|
|
119
119
|
"name": "qk-refactor",
|
|
120
|
-
"path": "skills/
|
|
120
|
+
"path": "skills/qk-refactor/SKILL.md",
|
|
121
121
|
"version": "1.0.0",
|
|
122
122
|
"category": "engineering",
|
|
123
123
|
"priority": "P2",
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
},
|
|
146
146
|
{
|
|
147
147
|
"name": "qk-api-integration",
|
|
148
|
-
"path": "skills/
|
|
148
|
+
"path": "skills/qk-api-integration/SKILL.md",
|
|
149
149
|
"version": "2.0.0",
|
|
150
150
|
"category": "engineering",
|
|
151
151
|
"priority": "P1",
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
},
|
|
174
174
|
{
|
|
175
175
|
"name": "qk-migration",
|
|
176
|
-
"path": "skills/
|
|
176
|
+
"path": "skills/qk-migration/SKILL.md",
|
|
177
177
|
"version": "1.0.0",
|
|
178
178
|
"category": "engineering",
|
|
179
179
|
"priority": "P2",
|
|
@@ -202,7 +202,7 @@
|
|
|
202
202
|
},
|
|
203
203
|
{
|
|
204
204
|
"name": "qk-git-engineer",
|
|
205
|
-
"path": "skills/
|
|
205
|
+
"path": "skills/qk-git-engineer/SKILL.md",
|
|
206
206
|
"version": "1.0.0",
|
|
207
207
|
"category": "engineering",
|
|
208
208
|
"priority": "P2",
|
|
@@ -228,7 +228,7 @@
|
|
|
228
228
|
},
|
|
229
229
|
{
|
|
230
230
|
"name": "qk-frontend-architecture",
|
|
231
|
-
"path": "skills/
|
|
231
|
+
"path": "skills/qk-frontend-architecture/SKILL.md",
|
|
232
232
|
"version": "1.0.0",
|
|
233
233
|
"category": "frontend",
|
|
234
234
|
"priority": "P1",
|
|
@@ -255,7 +255,7 @@
|
|
|
255
255
|
},
|
|
256
256
|
{
|
|
257
257
|
"name": "qk-design-system",
|
|
258
|
-
"path": "skills/
|
|
258
|
+
"path": "skills/qk-design-system/SKILL.md",
|
|
259
259
|
"version": "1.0.0",
|
|
260
260
|
"category": "frontend",
|
|
261
261
|
"priority": "P1",
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
},
|
|
284
284
|
{
|
|
285
285
|
"name": "qk-ui-builder",
|
|
286
|
-
"path": "skills/
|
|
286
|
+
"path": "skills/qk-ui-builder/SKILL.md",
|
|
287
287
|
"version": "1.0.0",
|
|
288
288
|
"category": "frontend",
|
|
289
289
|
"priority": "P1",
|
|
@@ -313,7 +313,7 @@
|
|
|
313
313
|
},
|
|
314
314
|
{
|
|
315
315
|
"name": "qk-component-generator",
|
|
316
|
-
"path": "skills/
|
|
316
|
+
"path": "skills/qk-component-generator/SKILL.md",
|
|
317
317
|
"version": "1.0.0",
|
|
318
318
|
"category": "frontend",
|
|
319
319
|
"priority": "P1",
|
|
@@ -340,7 +340,7 @@
|
|
|
340
340
|
},
|
|
341
341
|
{
|
|
342
342
|
"name": "qk-state-management",
|
|
343
|
-
"path": "skills/
|
|
343
|
+
"path": "skills/qk-state-management/SKILL.md",
|
|
344
344
|
"version": "1.0.0",
|
|
345
345
|
"category": "frontend",
|
|
346
346
|
"priority": "P2",
|
|
@@ -369,7 +369,7 @@
|
|
|
369
369
|
},
|
|
370
370
|
{
|
|
371
371
|
"name": "qk-form-builder",
|
|
372
|
-
"path": "skills/
|
|
372
|
+
"path": "skills/qk-form-builder/SKILL.md",
|
|
373
373
|
"version": "1.0.0",
|
|
374
374
|
"category": "frontend",
|
|
375
375
|
"priority": "P2",
|
|
@@ -399,7 +399,7 @@
|
|
|
399
399
|
},
|
|
400
400
|
{
|
|
401
401
|
"name": "qk-table-crud-generator",
|
|
402
|
-
"path": "skills/
|
|
402
|
+
"path": "skills/qk-table-crud-generator/SKILL.md",
|
|
403
403
|
"version": "1.0.0",
|
|
404
404
|
"category": "frontend",
|
|
405
405
|
"priority": "P2",
|
|
@@ -429,7 +429,7 @@
|
|
|
429
429
|
},
|
|
430
430
|
{
|
|
431
431
|
"name": "qk-frontend-debug",
|
|
432
|
-
"path": "skills/
|
|
432
|
+
"path": "skills/qk-frontend-debug/SKILL.md",
|
|
433
433
|
"version": "1.0.0",
|
|
434
434
|
"category": "frontend",
|
|
435
435
|
"priority": "P2",
|
|
@@ -456,7 +456,7 @@
|
|
|
456
456
|
},
|
|
457
457
|
{
|
|
458
458
|
"name": "qk-frontend-testing",
|
|
459
|
-
"path": "skills/
|
|
459
|
+
"path": "skills/qk-frontend-testing/SKILL.md",
|
|
460
460
|
"version": "1.0.0",
|
|
461
461
|
"category": "frontend",
|
|
462
462
|
"priority": "P2",
|
|
@@ -485,7 +485,7 @@
|
|
|
485
485
|
},
|
|
486
486
|
{
|
|
487
487
|
"name": "qk-frontend-performance",
|
|
488
|
-
"path": "skills/
|
|
488
|
+
"path": "skills/qk-frontend-performance/SKILL.md",
|
|
489
489
|
"version": "1.0.0",
|
|
490
490
|
"category": "frontend",
|
|
491
491
|
"priority": "P2",
|
|
@@ -513,7 +513,7 @@
|
|
|
513
513
|
},
|
|
514
514
|
{
|
|
515
515
|
"name": "qk-accessibility-audit",
|
|
516
|
-
"path": "skills/
|
|
516
|
+
"path": "skills/qk-accessibility-audit/SKILL.md",
|
|
517
517
|
"version": "1.0.0",
|
|
518
518
|
"category": "frontend",
|
|
519
519
|
"priority": "P2",
|
|
@@ -541,7 +541,7 @@
|
|
|
541
541
|
},
|
|
542
542
|
{
|
|
543
543
|
"name": "qk-backend-architecture",
|
|
544
|
-
"path": "skills/
|
|
544
|
+
"path": "skills/qk-backend-architecture/SKILL.md",
|
|
545
545
|
"version": "1.0.0",
|
|
546
546
|
"category": "backend",
|
|
547
547
|
"priority": "P3",
|
|
@@ -568,7 +568,7 @@
|
|
|
568
568
|
},
|
|
569
569
|
{
|
|
570
570
|
"name": "qk-database-engineer",
|
|
571
|
-
"path": "skills/
|
|
571
|
+
"path": "skills/qk-database-engineer/SKILL.md",
|
|
572
572
|
"version": "1.0.0",
|
|
573
573
|
"category": "backend",
|
|
574
574
|
"priority": "P3",
|
|
@@ -598,7 +598,7 @@
|
|
|
598
598
|
},
|
|
599
599
|
{
|
|
600
600
|
"name": "qk-auth-security",
|
|
601
|
-
"path": "skills/
|
|
601
|
+
"path": "skills/qk-auth-security/SKILL.md",
|
|
602
602
|
"version": "1.0.0",
|
|
603
603
|
"category": "backend",
|
|
604
604
|
"priority": "P3",
|
|
@@ -627,7 +627,7 @@
|
|
|
627
627
|
},
|
|
628
628
|
{
|
|
629
629
|
"name": "qk-deployment",
|
|
630
|
-
"path": "skills/
|
|
630
|
+
"path": "skills/qk-deployment/SKILL.md",
|
|
631
631
|
"version": "1.0.0",
|
|
632
632
|
"category": "backend",
|
|
633
633
|
"priority": "P3",
|
|
@@ -655,13 +655,13 @@
|
|
|
655
655
|
],
|
|
656
656
|
"entries": [
|
|
657
657
|
{
|
|
658
|
-
"path": "skills/
|
|
658
|
+
"path": "skills/qk-"
|
|
659
659
|
},
|
|
660
660
|
{
|
|
661
|
-
"path": "skills/
|
|
661
|
+
"path": "skills/qk-"
|
|
662
662
|
},
|
|
663
663
|
{
|
|
664
|
-
"path": "skills/
|
|
664
|
+
"path": "skills/qk-"
|
|
665
665
|
}
|
|
666
666
|
]
|
|
667
667
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|