@vincent119/go-copilot-rules 1.1.0 → 1.1.2
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/.agent_agy/README.md +23 -0
- package/cli/install.js +37 -10
- package/package.json +1 -1
package/.agent_agy/README.md
CHANGED
|
@@ -24,6 +24,29 @@ npx @vincent119/go-copilot-rules --skills "go-ddd,go-grpc,go-testing-advanced"
|
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
+
## 🔗 與其他 Skills 套件整合
|
|
28
|
+
|
|
29
|
+
### 搭配 antigravity-awesome-skills 使用
|
|
30
|
+
|
|
31
|
+
如果你也在使用 [antigravity-awesome-skills](https://github.com/sickn33/antigravity-awesome-skills)(涵蓋 1,300+ 通用 Skills),可以組合安裝:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# 先安裝通用 Skills
|
|
35
|
+
npx antigravity-awesome-skills
|
|
36
|
+
|
|
37
|
+
# 再安裝 Go 專用 Skills
|
|
38
|
+
npx @vincent119/go-copilot-rules
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**優勢**:
|
|
42
|
+
- **copilot-rules-kit**:專注於 Go 開發(DDD、gRPC、Testing 等深度規範)
|
|
43
|
+
- **antigravity**:廣泛覆蓋(Python、JavaScript、DevOps、Security 等 1,300+ Skills)
|
|
44
|
+
- **兩者互補**:antigravity 提供廣度,copilot-rules-kit 提供 Go 生態的深度
|
|
45
|
+
|
|
46
|
+
📖 詳細比較與組合策略請見 [INSTALLATION.md#與其他方案比較](INSTALLATION.md#與其他方案比較)
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
27
50
|
## 概述
|
|
28
51
|
|
|
29
52
|
本目錄包含 **Go 開發規範的模組化拆分版本**,將原本的三個大型指南檔案(總計 ~7,500 tokens)拆分為:
|
package/cli/install.js
CHANGED
|
@@ -291,15 +291,38 @@ function install(options) {
|
|
|
291
291
|
switch (options.mode) {
|
|
292
292
|
case 'full':
|
|
293
293
|
log(' 複製完整規範(核心 + 所有 Skills)', 'cyan');
|
|
294
|
-
copyRecursive(sourceDir, targetDir);
|
|
295
|
-
break;
|
|
296
294
|
|
|
297
|
-
|
|
298
|
-
|
|
295
|
+
// 複製文件檔案
|
|
296
|
+
['README.md', 'INSTALLATION.md', 'QUICK_START.md', 'SKILLS_INDEX.md'].forEach(file => {
|
|
297
|
+
const fileSrc = path.join(sourceDir, file);
|
|
298
|
+
if (fs.existsSync(fileSrc)) {
|
|
299
|
+
fs.copyFileSync(fileSrc, path.join(targetDir, file));
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
// 複製 rules 目錄
|
|
299
304
|
const rulesDir = path.join(targetDir, 'rules');
|
|
300
305
|
fs.mkdirSync(rulesDir, { recursive: true });
|
|
301
306
|
copyRecursive(path.join(sourceDir, 'rules'), rulesDir);
|
|
302
307
|
|
|
308
|
+
// 複製 skills 目錄內的所有 go-* 目錄到目標目錄(不保留 skills/ 這一層)
|
|
309
|
+
const skillsSrcDir = path.join(sourceDir, 'skills');
|
|
310
|
+
if (fs.existsSync(skillsSrcDir)) {
|
|
311
|
+
fs.readdirSync(skillsSrcDir).forEach(skillName => {
|
|
312
|
+
const skillSrc = path.join(skillsSrcDir, skillName);
|
|
313
|
+
if (fs.statSync(skillSrc).isDirectory()) {
|
|
314
|
+
copyRecursive(skillSrc, path.join(targetDir, skillName));
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
break;
|
|
319
|
+
|
|
320
|
+
case 'core-only':
|
|
321
|
+
log(' 複製核心規範', 'cyan');
|
|
322
|
+
const coreRulesDir = path.join(targetDir, 'rules');
|
|
323
|
+
fs.mkdirSync(coreRulesDir, { recursive: true });
|
|
324
|
+
copyRecursive(path.join(sourceDir, 'rules'), coreRulesDir);
|
|
325
|
+
|
|
303
326
|
// 複製 README
|
|
304
327
|
const readmeSrc = path.join(sourceDir, 'README.md');
|
|
305
328
|
if (fs.existsSync(readmeSrc)) {
|
|
@@ -309,23 +332,27 @@ function install(options) {
|
|
|
309
332
|
|
|
310
333
|
case 'skills-only':
|
|
311
334
|
log(' 複製所有 Skills', 'cyan');
|
|
312
|
-
const
|
|
313
|
-
fs.
|
|
314
|
-
|
|
335
|
+
const skillsOnlySrcDir = path.join(sourceDir, 'skills');
|
|
336
|
+
if (fs.existsSync(skillsOnlySrcDir)) {
|
|
337
|
+
fs.readdirSync(skillsOnlySrcDir).forEach(skillName => {
|
|
338
|
+
const skillSrc = path.join(skillsOnlySrcDir, skillName);
|
|
339
|
+
if (fs.statSync(skillSrc).isDirectory()) {
|
|
340
|
+
copyRecursive(skillSrc, path.join(targetDir, skillName));
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
}
|
|
315
344
|
break;
|
|
316
345
|
}
|
|
317
346
|
|
|
318
347
|
// 如果指定了特定 Skills
|
|
319
348
|
if (options.skills) {
|
|
320
349
|
log('📋 複製選定的 Skills...', 'blue');
|
|
321
|
-
const skillsDir = path.join(targetDir, 'skills');
|
|
322
|
-
fs.mkdirSync(skillsDir, { recursive: true });
|
|
323
350
|
|
|
324
351
|
const skillList = options.skills.split(',').map(s => s.trim());
|
|
325
352
|
skillList.forEach(skill => {
|
|
326
353
|
const skillSrc = path.join(sourceDir, 'skills', skill);
|
|
327
354
|
if (fs.existsSync(skillSrc)) {
|
|
328
|
-
const skillDest = path.join(
|
|
355
|
+
const skillDest = path.join(targetDir, skill);
|
|
329
356
|
copyRecursive(skillSrc, skillDest);
|
|
330
357
|
log(` • ${skill}`, 'green');
|
|
331
358
|
} else {
|
package/package.json
CHANGED