@vincent119/go-copilot-rules 1.0.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.
@@ -0,0 +1,516 @@
1
+ # Go Skills 索引
2
+
3
+ 本文件列出所有可用的 Go Skills,包含觸發關鍵字、適用場景與內容概述。
4
+
5
+ ---
6
+
7
+ ## 核心規範(Always-On)
8
+
9
+ ### `rules/go-core.copilot-instructions.md`
10
+
11
+ **觸發時機**:所有 Go 程式碼編輯
12
+
13
+ **Token 消耗**:~2,500 tokens
14
+
15
+ **包含內容**:
16
+ - ✅ Copilot 產生守則(導入、錯誤處理、函式設計)
17
+ - ✅ 基礎錯誤處理(`fmt.Errorf`、`errors.Is/As`、錯誤類型定義)
18
+ - ✅ Functional Options Pattern
19
+ - ✅ JSON Tag 與 Struct Tag 規範
20
+ - ✅ 命名慣例(變數、函式、套件)
21
+ - ✅ 註解規範(Godoc)
22
+
23
+ **適用場景**:
24
+ - 所有 Go 程式碼撰寫
25
+ - 定義函式與結構體
26
+ - 處理錯誤
27
+ - 設計選項式 API
28
+
29
+ ---
30
+
31
+ ## Skills(按需載入)
32
+
33
+ ### 1. `skills/go-ddd/SKILL.md` - DDD 架構設計
34
+
35
+ **觸發關鍵字**:
36
+ ```
37
+ ddd, domain driven design, bounded context, aggregate, aggregate root,
38
+ entity, value object, repository pattern, domain service, domain model,
39
+ ddd architecture, layered architecture, hexagonal architecture
40
+ ```
41
+
42
+ **Token 消耗**:~1,200 tokens
43
+
44
+ **包含內容**:
45
+ - ✅ Bounded Context 設計
46
+ - ✅ Aggregate Root 規範
47
+ - ✅ Entity vs Value Object
48
+ - ✅ Repository Pattern
49
+ - ✅ Domain Service vs Application Service
50
+ - ✅ 四層架構(Domain/Application/Infrastructure/Delivery)
51
+ - ✅ Shared Kernel 設計
52
+
53
+ **適用場景**:
54
+ - 設計 DDD 架構
55
+ - 建立 Aggregate 與 Entity
56
+ - 實作 Repository Interface
57
+ - 設計微服務邊界
58
+
59
+ **相關 Skills**:`go-domain-events`、`go-dependency-injection`
60
+
61
+ ---
62
+
63
+ ### 2. `skills/go-grpc/SKILL.md` - gRPC 完整規範
64
+
65
+ **觸發關鍵字**:
66
+ ```
67
+ grpc, protobuf, proto, rpc, buf, grpc server, grpc client, interceptor,
68
+ middleware, health check, grpc-health, reflection, grpc metadata, deadline,
69
+ context propagation, grpc stream, unary rpc
70
+ ```
71
+
72
+ **Token 消耗**:~1,500 tokens
73
+
74
+ **包含內容**:
75
+ - ✅ Proto 檔案管理(Buf 配置)
76
+ - ✅ Interceptor 設計(Logging、Auth、Metrics)
77
+ - ✅ 健康檢查協議(grpc_health_v1)
78
+ - ✅ 錯誤代碼映射(gRPC Code ↔ HTTP Status)
79
+ - ✅ Deadline 處理
80
+ - ✅ Metadata 傳遞
81
+ - ✅ Stream vs Unary RPC
82
+
83
+ **適用場景**:
84
+ - 實作 gRPC 服務
85
+ - 配置 Buf 與 protoc
86
+ - 設計 Interceptor
87
+ - gRPC 與 HTTP 整合
88
+
89
+ **相關 Skills**:`go-observability`、`go-graceful-shutdown`
90
+
91
+ ---
92
+
93
+ ### 3. `skills/go-testing-advanced/SKILL.md` - 進階測試策略
94
+
95
+ **觸機關鍵字**:
96
+ ```
97
+ testing, unit test, integration test, mock, gomock, testify, table driven test,
98
+ test coverage, benchmark, fuzz test, testcontainers, test fixtures, test helper,
99
+ parallel test, sub test
100
+ ```
101
+
102
+ **Token 消耗**:~1,500 tokens
103
+
104
+ **包含內容**:
105
+ - ✅ Table-driven Tests
106
+ - ✅ Mock 生成與使用(uber-go/mock)
107
+ - ✅ 整合測試設計(testcontainers)
108
+ - ✅ Benchmark 與 Profiling
109
+ - ✅ Fuzz Testing
110
+ - ✅ 測試覆蓋率要求
111
+ - ✅ Parallel Tests 設計
112
+
113
+ **適用場景**:
114
+ - 撰寫單元測試
115
+ - 整合測試(Database、Redis、Kafka)
116
+ - 效能測試
117
+ - 生成 Mock
118
+
119
+ **相關 Skills**:`go-dependency-injection`、`go-examples`
120
+
121
+ ---
122
+
123
+ ### 4. `skills/go-database/SKILL.md` - Database Migration 與 ORM
124
+
125
+ **觸發關鍵字**:
126
+ ```
127
+ database, migration, migrate, goose, gorm, sqlx, sql, postgres, mysql,
128
+ schema migration, database versioning, migration rollback, orm, query builder,
129
+ pt-online-schema-change, large table migration
130
+ ```
131
+
132
+ **Token 消耗**:~1,200 tokens
133
+
134
+ **包含內容**:
135
+ - ✅ Migration 工具(golang-migrate、goose)
136
+ - ✅ Migration 命名慣例
137
+ - ✅ 大型表變更策略(pt-online-schema-change)
138
+ - ✅ Migration 版本控制
139
+ - ✅ CI/CD 整合
140
+ - ✅ Rollback 策略
141
+ - ✅ GORM vs SQLX 使用時機
142
+
143
+ **適用場景**:
144
+ - Database Schema 變更
145
+ - Migration 管理
146
+ - ORM 選擇與使用
147
+ - 大表 DDL 操作
148
+
149
+ **相關 Skills**:`go-ddd`(Repository Pattern)
150
+
151
+ ---
152
+
153
+ ### 5. `skills/go-observability/SKILL.md` - 日誌與可觀測性
154
+
155
+ **觸發關鍵字**:
156
+ ```
157
+ logging, zap, logrus, structured logging, metrics, prometheus, tracing,
158
+ opentelemetry, jaeger, observability, context propagation, log level,
159
+ metrics naming, label cardinality, span, trace id
160
+ ```
161
+
162
+ **Token 消耗**:~1,500 tokens
163
+
164
+ **包含內容**:
165
+ - ✅ 結構化日誌(Zap)
166
+ - ✅ Metrics 設計(Prometheus)
167
+ - ✅ Tracing 整合(OpenTelemetry)
168
+ - ✅ Context 傳遞(Trace ID、Request ID)
169
+ - ✅ Metrics 命名慣例
170
+ - ✅ Label 規範(避免高基數)
171
+ - ✅ 日誌等級規範
172
+
173
+ **適用場景**:
174
+ - 實作結構化日誌
175
+ - 設計 Metrics
176
+ - 整合 Tracing
177
+ - 可觀測性架構
178
+
179
+ **相關 Skills**:`go-grpc`(Interceptor)、`go-http-advanced`(Middleware)
180
+
181
+ ---
182
+
183
+ ### 6. `skills/go-graceful-shutdown/SKILL.md` - 優雅關機模式
184
+
185
+ **觸發關鍵字**:
186
+ ```
187
+ graceful shutdown, signal handling, sigterm, sigint, shutdown, cleanup,
188
+ kubernetes, prestop, prestop hook, http shutdown, grpc gracefulstop,
189
+ context cancellation, background worker
190
+ ```
191
+
192
+ **Token 消耗**:~800 tokens
193
+
194
+ **包含內容**:
195
+ - ✅ Signal 處理(SIGTERM、SIGINT)
196
+ - ✅ HTTP Server 優雅關機
197
+ - ✅ gRPC Server GracefulStop
198
+ - ✅ Background Worker 停止
199
+ - ✅ 資源清理順序
200
+ - ✅ Kubernetes preStop Hook
201
+ - ✅ 測試方法
202
+
203
+ **適用場景**:
204
+ - 實作優雅關機
205
+ - Kubernetes 整合
206
+ - Background Worker 管理
207
+ - 資源清理
208
+
209
+ **相關 Skills**:`go-grpc`、`go-http-advanced`
210
+
211
+ ---
212
+
213
+ ### 7. `skills/go-http-advanced/SKILL.md` - HTTP 進階實作
214
+
215
+ **觸發關鍵字**:
216
+ ```
217
+ http client, http transport, retry, backoff, connection pool, timeout,
218
+ context, multipart upload, body replay, middleware, http.Client, httpdo,
219
+ exponential backoff, circuit breaker
220
+ ```
221
+
222
+ **Token 消耗**:~1,500 tokens
223
+
224
+ **包含內容**:
225
+ - ✅ Transport 重用與配置
226
+ - ✅ 重試策略與指數退避
227
+ - ✅ Body 重播機制
228
+ - ✅ Multipart 上傳
229
+ - ✅ 逾時控制(3 層)
230
+ - ✅ HTTP Middleware 設計
231
+ - ✅ Connection Pool 管理
232
+
233
+ **適用場景**:
234
+ - 實作 HTTP Client
235
+ - 設計重試策略
236
+ - Multipart 檔案上傳
237
+ - HTTP Middleware
238
+
239
+ **相關 Skills**:`go-observability`、`go-api-design`
240
+
241
+ ---
242
+
243
+ ### 8. `skills/go-api-design/SKILL.md` - API 設計與版本管理
244
+
245
+ **觸發關鍵字**:
246
+ ```
247
+ api design, rest api, json envelope, api versioning, pagination, swagger,
248
+ openapi, deprecation, http status code, response format, api best practices,
249
+ cursor pagination, offset pagination, rate limiting
250
+ ```
251
+
252
+ **Token 消耗**:~1,500 tokens
253
+
254
+ **包含內容**:
255
+ - ✅ JSON Envelope 模式
256
+ - ✅ API 版本管理(路徑版本、Header 版本)
257
+ - ✅ 棄用通知(Deprecation Header)
258
+ - ✅ Pagination(Cursor-Based、Offset-Based)
259
+ - ✅ Filter、Sort 設計
260
+ - ✅ Swagger/OpenAPI 整合
261
+ - ✅ HTTP 狀態碼最佳實務
262
+ - ✅ Rate Limiting
263
+
264
+ **適用場景**:
265
+ - 設計 RESTful API
266
+ - API 版本控制
267
+ - 分頁與篩選
268
+ - OpenAPI 文件
269
+
270
+ **相關 Skills**:`go-http-advanced`、`go-examples`
271
+
272
+ ---
273
+
274
+ ### 9. `skills/go-dependency-injection/SKILL.md` - 依賴注入模式
275
+
276
+ **觸發關鍵字**:
277
+ ```
278
+ dependency injection, uber fx, google wire, interface design, constructor,
279
+ mock, testable code, lifecycle, module, provider, invoke, wire, fx
280
+ ```
281
+
282
+ **Token 消耗**:~1,200 tokens
283
+
284
+ **包含內容**:
285
+ - ✅ Interface 設計原則
286
+ - ✅ Constructor Pattern
287
+ - ✅ Functional Options Pattern
288
+ - ✅ Uber Fx 使用(Module、Lifecycle)
289
+ - ✅ Google Wire 使用(Provider Set)
290
+ - ✅ 測試模式(Mock Interface)
291
+ - ✅ 避免循環依賴
292
+
293
+ **適用場景**:
294
+ - 使用 Fx/Wire
295
+ - 設計可測試架構
296
+ - Interface 設計
297
+ - 模組化系統
298
+
299
+ **相關 Skills**:`go-testing-advanced`、`go-ddd`
300
+
301
+ ---
302
+
303
+ ### 10. `skills/go-configuration/SKILL.md` - 設定管理
304
+
305
+ **觸發關鍵字**:
306
+ ```
307
+ configuration, viper, environment variables, secrets, validation, env vars,
308
+ config reload, 12-factor, configmap, kubernetes config, dotenv, yaml config,
309
+ dynamic reload, config validation
310
+ ```
311
+
312
+ **Token 消耗**:~1,200 tokens
313
+
314
+ **包含內容**:
315
+ - ✅ Viper 配置
316
+ - ✅ 環境變數優先級
317
+ - ✅ Secrets 處理(AWS Secrets Manager、Kubernetes Secret)
318
+ - ✅ 設定驗證(validator)
319
+ - ✅ 動態重載(viper.WatchConfig)
320
+ - ✅ 多環境管理(dev/staging/prod)
321
+ - ✅ 12-Factor App 原則
322
+
323
+ **適用場景**:
324
+ - 使用 Viper 管理設定
325
+ - 環境變數管理
326
+ - Secrets 處理
327
+ - 動態重載設定
328
+
329
+ **相關 Skills**:`go-observability`(日誌配置)
330
+
331
+ ---
332
+
333
+ ### 11. `skills/go-ci-tooling/SKILL.md` - CI/CD 與工具配置
334
+
335
+ **觸發關鍵字**:
336
+ ```
337
+ ci/cd, makefile, golangci-lint, github actions, docker, pre-commit,
338
+ test coverage, lint, build automation, continuous integration, pipeline,
339
+ dockerfile, multi-stage build
340
+ ```
341
+
342
+ **Token 消耗**:~1,200 tokens
343
+
344
+ **包含內容**:
345
+ - ✅ Makefile 設計(build、test、lint)
346
+ - ✅ golangci-lint 配置(.golangci.yml)
347
+ - ✅ GitHub Actions(CI Pipeline、Release)
348
+ - ✅ Docker 多階段建置
349
+ - ✅ Pre-commit Hook
350
+ - ✅ 測試覆蓋率報告
351
+ - ✅ 版本注入(Ldflags)
352
+
353
+ **適用場景**:
354
+ - 設計 CI/CD Pipeline
355
+ - 配置 golangci-lint
356
+ - 撰寫 Makefile
357
+ - Docker 建置
358
+
359
+ **相關 Skills**:`go-testing-advanced`
360
+
361
+ ---
362
+
363
+ ### 12. `skills/go-domain-events/SKILL.md` - Domain Events 實作
364
+
365
+ **觸發關鍵字**:
366
+ ```
367
+ domain events, event bus, outbox pattern, idempotency, event sourcing,
368
+ async events, event-driven, message queue, event publishing, saga pattern,
369
+ event store, event replay
370
+ ```
371
+
372
+ **Token 消耗**:~1,500 tokens
373
+
374
+ **包含內容**:
375
+ - ✅ 事件定義(Event vs Command)
376
+ - ✅ Event Bus 實作(In-Memory、Message Queue)
377
+ - ✅ Outbox Pattern(Transaction + 事件發布)
378
+ - ✅ 冪等性處理(Processed Events Table)
379
+ - ✅ Event Sourcing 基礎
380
+ - ✅ 非同步事件處理
381
+ - ✅ 事件重播
382
+
383
+ **適用場景**:
384
+ - DDD Domain Events
385
+ - Outbox Pattern
386
+ - Event Sourcing
387
+ - 微服務解耦
388
+
389
+ **相關 Skills**:`go-ddd`、`go-database`
390
+
391
+ ---
392
+
393
+ ### 13. `skills/go-examples/SKILL.md` - 實作範例庫
394
+
395
+ **觸發關鍵字**:
396
+ ```
397
+ examples, code examples, http client example, repository pattern,
398
+ use case example, handler example, service example, best practices, template,
399
+ complete example, reference implementation
400
+ ```
401
+
402
+ **Token 消耗**:~1,500 tokens
403
+
404
+ **包含內容**:
405
+ - ✅ HTTP Client 完整範例
406
+ - ✅ Repository Pattern 實作(PostgreSQL)
407
+ - ✅ Use Case 範例(建立使用者)
408
+ - ✅ HTTP Handler 範例(RESTful API)
409
+ - ✅ Service 主程式範例(main.go)
410
+ - ✅ 完整的依賴注入
411
+ - ✅ 優雅關機整合
412
+
413
+ **適用場景**:
414
+ - 參考完整實作
415
+ - 學習最佳實務
416
+ - 快速啟動新專案
417
+ - 程式碼審查參考
418
+
419
+ **相關 Skills**:所有 Skills(涵蓋多種場景)
420
+
421
+ ---
422
+
423
+ ## 使用建議
424
+
425
+ ### 場景映射
426
+
427
+ | 你想做什麼? | 需要的 Skills |
428
+ |---------------------------------------|--------------------------------------------|
429
+ | 設計新的微服務 | `go-ddd`、`go-examples`、`go-dependency-injection` |
430
+ | 實作 gRPC 服務 | `go-grpc`、`go-observability`、`go-graceful-shutdown` |
431
+ | 撰寫單元測試 | `go-testing-advanced`、`go-dependency-injection` |
432
+ | 設計 RESTful API | `go-api-design`、`go-http-advanced`、`go-observability` |
433
+ | Database Schema Migration | `go-database` |
434
+ | 實作 Domain Events | `go-domain-events`、`go-ddd`、`go-database` |
435
+ | CI/CD Pipeline | `go-ci-tooling`、`go-testing-advanced` |
436
+ | 設定管理(Viper) | `go-configuration` |
437
+ | HTTP Client 實作 | `go-http-advanced`、`go-examples` |
438
+ | 依賴注入(Fx/Wire) | `go-dependency-injection`、`go-examples` |
439
+
440
+ ### 提問技巧
441
+
442
+ **❌ 不明確**:
443
+ - "如何處理錯誤?"(只會載入核心規範)
444
+
445
+ **✅ 明確**:
446
+ - "如何使用 Outbox Pattern 實作 Domain Events?"(觸發 `go-domain-events`)
447
+ - "設計 gRPC Interceptor 記錄日誌"(觸發 `go-grpc` + `go-observability`)
448
+ - "使用 Uber Fx 實作依賴注入"(觸發 `go-dependency-injection`)
449
+
450
+ ### 關鍵字優化
451
+
452
+ **在你的問題或程式碼中包含這些詞彙**:
453
+ - **技術名詞**:gRPC、Viper、Fx、Wire、Outbox Pattern
454
+ - **實作目標**:Migration、Interceptor、Retry、Pagination
455
+ - **架構模式**:DDD、Repository Pattern、Event Sourcing
456
+
457
+ ---
458
+
459
+ ## Token 消耗統計
460
+
461
+ | 內容 | Token 消耗 |
462
+ |--------------------------|------------|
463
+ | 核心規範(always-on) | 2,500 |
464
+ | 單個 Skill(平均) | 1,200 |
465
+ | 2 個 Skills 同時載入 | 4,900 |
466
+ | 3 個 Skills 同時載入 | 6,100 |
467
+ | **原始檔案(全部載入)** | **7,500** |
468
+
469
+ **節省比例**:
470
+ - 簡單場景(0-1 Skill):**67-80%**
471
+ - 中等場景(2 Skills):**35%**
472
+ - 複雜場景(3+ Skills):**19-31%**
473
+
474
+ ---
475
+
476
+ ## 更新日誌
477
+
478
+ ### v1.0.0(初始版本)
479
+
480
+ - ✅ 拆分原始三個檔案為 1 核心 + 12 Skills
481
+ - ✅ 建立豐富的 YAML frontmatter description
482
+ - ✅ 包含完整的檢查清單與程式碼範例
483
+ - ✅ 建立索引與使用指南
484
+
485
+ ---
486
+
487
+ ## 維護指南
488
+
489
+ ### 新增 Skill
490
+
491
+ 1. 建立 `.agent_agy/skills/<skill-name>/SKILL.md`
492
+ 2. 包含 YAML frontmatter(description 含關鍵字)
493
+ 3. 更新本文件(SKILLS_INDEX.md)
494
+ 4. 測試觸發關鍵字
495
+
496
+ ### 更新 Skill
497
+
498
+ - 編輯對應的 `SKILL.md`
499
+ - 若更改關鍵字,同步更新本文件
500
+ - 記錄變更到 UPDATE_LOG
501
+
502
+ ### 刪除 Skill
503
+
504
+ - 刪除對應目錄
505
+ - 從本文件移除
506
+ - 檢查是否有其他 Skill 引用
507
+
508
+ ---
509
+
510
+ ## 貢獻
511
+
512
+ 歡迎提交改進建議!請確保:
513
+ - 新 Skill 包含豐富的關鍵字
514
+ - 提供完整的程式碼範例
515
+ - 包含檢查清單
516
+ - 更新本索引文件