code-abyss 1.5.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.
Files changed (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +197 -0
  3. package/bin/install.js +193 -0
  4. package/bin/uninstall.js +42 -0
  5. package/config/AGENTS.md +247 -0
  6. package/config/CLAUDE.md +207 -0
  7. package/config/settings.example.json +27 -0
  8. package/output-styles/abyss-cultivator.md +399 -0
  9. package/package.json +41 -0
  10. package/skills/SKILL.md +115 -0
  11. package/skills/ai/SKILL.md +29 -0
  12. package/skills/ai/agent-dev.md +242 -0
  13. package/skills/ai/llm-security.md +288 -0
  14. package/skills/architecture/SKILL.md +41 -0
  15. package/skills/architecture/api-design.md +225 -0
  16. package/skills/architecture/caching.md +299 -0
  17. package/skills/architecture/cloud-native.md +285 -0
  18. package/skills/architecture/compliance.md +299 -0
  19. package/skills/architecture/data-security.md +184 -0
  20. package/skills/architecture/message-queue.md +329 -0
  21. package/skills/architecture/security-arch.md +210 -0
  22. package/skills/development/SKILL.md +43 -0
  23. package/skills/development/cpp.md +246 -0
  24. package/skills/development/go.md +323 -0
  25. package/skills/development/java.md +277 -0
  26. package/skills/development/python.md +288 -0
  27. package/skills/development/rust.md +313 -0
  28. package/skills/development/shell.md +313 -0
  29. package/skills/development/typescript.md +277 -0
  30. package/skills/devops/SKILL.md +36 -0
  31. package/skills/devops/cost-optimization.md +272 -0
  32. package/skills/devops/database.md +217 -0
  33. package/skills/devops/devsecops.md +198 -0
  34. package/skills/devops/git-workflow.md +181 -0
  35. package/skills/devops/observability.md +280 -0
  36. package/skills/devops/performance.md +273 -0
  37. package/skills/devops/testing.md +186 -0
  38. package/skills/gen-docs/SKILL.md +114 -0
  39. package/skills/gen-docs/scripts/doc_generator.py +491 -0
  40. package/skills/multi-agent/SKILL.md +268 -0
  41. package/skills/run_skill.py +88 -0
  42. package/skills/security/SKILL.md +51 -0
  43. package/skills/security/blue-team.md +379 -0
  44. package/skills/security/code-audit.md +265 -0
  45. package/skills/security/pentest.md +226 -0
  46. package/skills/security/red-team.md +321 -0
  47. package/skills/security/threat-intel.md +322 -0
  48. package/skills/security/vuln-research.md +369 -0
  49. package/skills/tests/README.md +225 -0
  50. package/skills/tests/SUMMARY.md +362 -0
  51. package/skills/tests/__init__.py +3 -0
  52. package/skills/tests/test_change_analyzer.py +558 -0
  53. package/skills/tests/test_doc_generator.py +538 -0
  54. package/skills/tests/test_module_scanner.py +376 -0
  55. package/skills/tests/test_quality_checker.py +516 -0
  56. package/skills/tests/test_security_scanner.py +426 -0
  57. package/skills/verify-change/SKILL.md +138 -0
  58. package/skills/verify-change/scripts/change_analyzer.py +529 -0
  59. package/skills/verify-module/SKILL.md +125 -0
  60. package/skills/verify-module/scripts/module_scanner.py +321 -0
  61. package/skills/verify-quality/SKILL.md +158 -0
  62. package/skills/verify-quality/scripts/quality_checker.py +481 -0
  63. package/skills/verify-security/SKILL.md +141 -0
  64. package/skills/verify-security/scripts/security_scanner.py +368 -0
@@ -0,0 +1,225 @@
1
+ ---
2
+ name: api-design
3
+ description: API 设计。RESTful、GraphQL、OpenAPI、版本管理。当用户提到 API设计、RESTful、GraphQL、OpenAPI、接口设计时使用。
4
+ ---
5
+
6
+ # 🏗 阵法秘典 · API 设计
7
+
8
+
9
+ ## RESTful 设计
10
+
11
+ ### 资源命名
12
+ ```yaml
13
+ # 使用名词复数
14
+ GET /users # 获取用户列表
15
+ GET /users/{id} # 获取单个用户
16
+ POST /users # 创建用户
17
+ PUT /users/{id} # 更新用户
18
+ PATCH /users/{id} # 部分更新
19
+ DELETE /users/{id} # 删除用户
20
+
21
+ # 嵌套资源
22
+ GET /users/{id}/orders
23
+ POST /users/{id}/orders
24
+
25
+ # 避免
26
+ GET /getUsers # ❌ 动词
27
+ GET /user # ❌ 单数
28
+ POST /createUser # ❌ 动词
29
+ ```
30
+
31
+ ### HTTP 状态码
32
+ ```yaml
33
+ 2xx 成功:
34
+ 200: OK
35
+ 201: Created
36
+ 204: No Content
37
+
38
+ 4xx 客户端错误:
39
+ 400: Bad Request
40
+ 401: Unauthorized
41
+ 403: Forbidden
42
+ 404: Not Found
43
+ 409: Conflict
44
+ 422: Unprocessable Entity
45
+
46
+ 5xx 服务端错误:
47
+ 500: Internal Server Error
48
+ 502: Bad Gateway
49
+ 503: Service Unavailable
50
+ ```
51
+
52
+ ### 响应格式
53
+ ```json
54
+ // 成功响应
55
+ {
56
+ "data": {
57
+ "id": 1,
58
+ "name": "Alice"
59
+ }
60
+ }
61
+
62
+ // 列表响应
63
+ {
64
+ "data": [...],
65
+ "pagination": {
66
+ "page": 1,
67
+ "per_page": 20,
68
+ "total": 100
69
+ }
70
+ }
71
+
72
+ // 错误响应
73
+ {
74
+ "error": {
75
+ "code": "VALIDATION_ERROR",
76
+ "message": "Invalid email format",
77
+ "details": [
78
+ {"field": "email", "message": "Invalid format"}
79
+ ]
80
+ }
81
+ }
82
+ ```
83
+
84
+ ## OpenAPI 规范
85
+
86
+ ```yaml
87
+ openapi: 3.0.3
88
+ info:
89
+ title: User API
90
+ version: 1.0.0
91
+
92
+ paths:
93
+ /users:
94
+ get:
95
+ summary: List users
96
+ parameters:
97
+ - name: page
98
+ in: query
99
+ schema:
100
+ type: integer
101
+ default: 1
102
+ responses:
103
+ '200':
104
+ description: Success
105
+ content:
106
+ application/json:
107
+ schema:
108
+ type: array
109
+ items:
110
+ $ref: '#/components/schemas/User'
111
+
112
+ post:
113
+ summary: Create user
114
+ requestBody:
115
+ required: true
116
+ content:
117
+ application/json:
118
+ schema:
119
+ $ref: '#/components/schemas/CreateUser'
120
+ responses:
121
+ '201':
122
+ description: Created
123
+
124
+ components:
125
+ schemas:
126
+ User:
127
+ type: object
128
+ properties:
129
+ id:
130
+ type: integer
131
+ name:
132
+ type: string
133
+ email:
134
+ type: string
135
+ format: email
136
+
137
+ CreateUser:
138
+ type: object
139
+ required:
140
+ - name
141
+ - email
142
+ properties:
143
+ name:
144
+ type: string
145
+ email:
146
+ type: string
147
+ ```
148
+
149
+ ## GraphQL
150
+
151
+ ```graphql
152
+ # Schema
153
+ type User {
154
+ id: ID!
155
+ name: String!
156
+ email: String!
157
+ posts: [Post!]!
158
+ }
159
+
160
+ type Post {
161
+ id: ID!
162
+ title: String!
163
+ author: User!
164
+ }
165
+
166
+ type Query {
167
+ user(id: ID!): User
168
+ users(limit: Int, offset: Int): [User!]!
169
+ }
170
+
171
+ type Mutation {
172
+ createUser(input: CreateUserInput!): User!
173
+ updateUser(id: ID!, input: UpdateUserInput!): User!
174
+ }
175
+
176
+ input CreateUserInput {
177
+ name: String!
178
+ email: String!
179
+ }
180
+
181
+ # Query
182
+ query GetUser($id: ID!) {
183
+ user(id: $id) {
184
+ name
185
+ email
186
+ posts {
187
+ title
188
+ }
189
+ }
190
+ }
191
+ ```
192
+
193
+ ## 版本管理
194
+
195
+ ```yaml
196
+ 策略:
197
+ URL路径: /api/v1/users (推荐)
198
+ 请求头: Accept: application/vnd.api+json;version=1
199
+ 查询参数: /api/users?version=1
200
+
201
+ 原则:
202
+ - 向后兼容
203
+ - 废弃通知
204
+ - 迁移指南
205
+ ```
206
+
207
+ ## 安全设计
208
+
209
+ ```yaml
210
+ 认证:
211
+ - API Key
212
+ - JWT
213
+ - OAuth 2.0
214
+
215
+ 授权:
216
+ - RBAC
217
+ - ABAC
218
+ - Scope
219
+
220
+ 防护:
221
+ - 速率限制
222
+ - 输入验证
223
+ - HTTPS
224
+ ```
225
+
@@ -0,0 +1,299 @@
1
+ ---
2
+ name: caching
3
+ description: 缓存策略秘典。缓存模式、Redis实践、三大问题、CDN、缓存一致性。当用户提到缓存、Redis、CDN、缓存穿透、缓存击穿、缓存雪崩时路由到此。
4
+ ---
5
+
6
+ # 🏗 阵法秘典 · 缓存策略
7
+
8
+
9
+ ## 缓存层次
10
+
11
+ ```
12
+ 客户端缓存 (浏览器/App)
13
+ ↓ miss
14
+ CDN 缓存 (边缘节点)
15
+ ↓ miss
16
+ 网关缓存 (Nginx/API Gateway)
17
+ ↓ miss
18
+ 应用缓存 (本地内存/进程内)
19
+ ↓ miss
20
+ 分布式缓存 (Redis/Memcached)
21
+ ↓ miss
22
+ 数据库
23
+ ```
24
+
25
+ | 层级 | 延迟 | 容量 | 一致性 |
26
+ |------|------|------|--------|
27
+ | L1 本地内存 | ~ns | MB级 | 进程内一致 |
28
+ | L2 分布式缓存 | ~ms | GB级 | 最终一致 |
29
+ | L3 CDN | ~10ms | TB级 | TTL控制 |
30
+ | DB | ~10-100ms | PB级 | 强一致 |
31
+
32
+ ---
33
+
34
+ ## 缓存模式
35
+
36
+ ### Cache-Aside (旁路缓存)
37
+
38
+ ```
39
+ 读:
40
+ 1. 查缓存 → 命中 → 返回
41
+ 2. 未命中 → 查DB → 写入缓存 → 返回
42
+
43
+ 写:
44
+ 1. 更新DB
45
+ 2. 删除缓存 (而非更新)
46
+ ```
47
+
48
+ ```python
49
+ def get_user(user_id: str) -> dict:
50
+ # 1. 查缓存
51
+ cached = redis.get(f"user:{user_id}")
52
+ if cached:
53
+ return json.loads(cached)
54
+
55
+ # 2. 查DB
56
+ user = db.query("SELECT * FROM users WHERE id = %s", user_id)
57
+
58
+ # 3. 写缓存
59
+ redis.setex(f"user:{user_id}", 3600, json.dumps(user))
60
+ return user
61
+
62
+ def update_user(user_id: str, data: dict):
63
+ db.execute("UPDATE users SET ... WHERE id = %s", user_id)
64
+ redis.delete(f"user:{user_id}") # 删除而非更新
65
+ ```
66
+
67
+ **适用**:通用场景,应用控制缓存逻辑。
68
+
69
+ ### Read-Through (读穿透)
70
+
71
+ ```
72
+ 读:
73
+ 1. 查缓存 → 命中 → 返回
74
+ 2. 未命中 → 缓存层自动查DB → 写入缓存 → 返回
75
+
76
+ 应用只与缓存交互,不直接访问DB。
77
+ ```
78
+
79
+ **适用**:缓存中间件支持(如 Hibernate L2 Cache)。
80
+
81
+ ### Write-Through (写穿透)
82
+
83
+ ```
84
+ 写:
85
+ 1. 写缓存
86
+ 2. 缓存层同步写DB
87
+ 3. 两者都成功才返回
88
+ ```
89
+
90
+ **适用**:强一致性要求,写入不频繁。
91
+
92
+ ### Write-Behind (异步写回)
93
+
94
+ ```
95
+ 写:
96
+ 1. 写缓存 → 立即返回
97
+ 2. 缓存层异步批量写DB
98
+
99
+ 风险: 缓存宕机可能丢数据
100
+ ```
101
+
102
+ **适用**:写入频繁、可容忍短暂不一致。
103
+
104
+ ---
105
+
106
+ ## Redis 实践
107
+
108
+ ### 数据结构选型
109
+
110
+ | 结构 | 场景 | 示例 |
111
+ |------|------|------|
112
+ | String | 简单KV、计数器 | 用户信息、页面PV |
113
+ | Hash | 对象属性 | 用户Profile各字段 |
114
+ | List | 队列、最新列表 | 消息队列、最新动态 |
115
+ | Set | 去重、交集 | 标签、共同好友 |
116
+ | Sorted Set | 排行榜、延迟队列 | 积分排名、定时任务 |
117
+ | Stream | 消息流 | 事件日志 |
118
+
119
+ ### 过期策略
120
+
121
+ ```yaml
122
+ 策略:
123
+ 惰性删除: 访问时检查是否过期
124
+ 定期删除: 每秒随机检查一批 key
125
+ 内存淘汰: 内存满时触发
126
+
127
+ 淘汰策略 (maxmemory-policy):
128
+ volatile-lru: 有过期时间的 key 中 LRU
129
+ allkeys-lru: 所有 key 中 LRU (推荐)
130
+ volatile-ttl: 有过期时间的 key 中 TTL 最小
131
+ noeviction: 不淘汰,写入报错
132
+ ```
133
+
134
+ ### 分布式锁
135
+
136
+ ```python
137
+ import redis
138
+ import uuid
139
+
140
+ def acquire_lock(conn: redis.Redis, lock_name: str, timeout: int = 10) -> str:
141
+ token = str(uuid.uuid4())
142
+ if conn.set(f"lock:{lock_name}", token, nx=True, ex=timeout):
143
+ return token
144
+ return None
145
+
146
+ def release_lock(conn: redis.Redis, lock_name: str, token: str) -> bool:
147
+ # Lua 脚本保证原子性
148
+ script = """
149
+ if redis.call("get", KEYS[1]) == ARGV[1] then
150
+ return redis.call("del", KEYS[1])
151
+ else
152
+ return 0
153
+ end
154
+ """
155
+ return conn.eval(script, 1, f"lock:{lock_name}", token)
156
+ ```
157
+
158
+ ---
159
+
160
+ ## 三大问题
161
+
162
+ ### 缓存穿透 (Cache Penetration)
163
+
164
+ ```
165
+ 问题: 查询不存在的数据,每次都打到DB
166
+ 攻击: 恶意请求大量不存在的ID
167
+
168
+ 解决方案:
169
+ 1. 布隆过滤器 (Bloom Filter)
170
+ 请求 → 布隆过滤器 → 不存在则直接返回
171
+
172
+ 2. 缓存空值
173
+ redis.setex(f"user:{user_id}", 300, "NULL") # 短TTL
174
+
175
+ 3. 参数校验
176
+ ID格式校验,拦截非法请求
177
+ ```
178
+
179
+ ### 缓存击穿 (Cache Breakdown)
180
+
181
+ ```
182
+ 问题: 热点key过期瞬间,大量请求打到DB
183
+
184
+ 解决方案:
185
+ 1. 互斥锁 (Mutex)
186
+ 未命中 → 获取锁 → 查DB → 写缓存 → 释放锁
187
+ 其他请求等待或返回旧值
188
+
189
+ 2. 永不过期 + 异步更新
190
+ 逻辑过期: 缓存中存储过期时间,过期后异步刷新
191
+
192
+ 3. 热点预加载
193
+ 提前刷新即将过期的热点key
194
+ ```
195
+
196
+ ### 缓存雪崩 (Cache Avalanche)
197
+
198
+ ```
199
+ 问题: 大量key同时过期,或缓存服务宕机
200
+
201
+ 解决方案:
202
+ 1. 过期时间加随机值
203
+ ttl = base_ttl + random(0, 300) # 打散过期时间
204
+
205
+ 2. 多级缓存
206
+ L1(本地) + L2(Redis) → Redis挂了还有本地缓存
207
+
208
+ 3. 熔断降级
209
+ 缓存不可用时,限流 + 降级返回默认值
210
+
211
+ 4. Redis 高可用
212
+ Sentinel / Cluster 模式
213
+ ```
214
+
215
+ ---
216
+
217
+ ## CDN 缓存
218
+
219
+ ### 缓存策略
220
+
221
+ ```yaml
222
+ 静态资源:
223
+ Cache-Control: public, max-age=31536000, immutable
224
+ 文件名含 hash: app.a1b2c3.js
225
+
226
+ API 响应:
227
+ Cache-Control: public, max-age=60, s-maxage=300
228
+ Vary: Accept-Encoding, Authorization
229
+
230
+ 不缓存:
231
+ Cache-Control: no-store
232
+ Set-Cookie 响应
233
+ ```
234
+
235
+ ### 缓存失效
236
+
237
+ ```bash
238
+ # 主动失效
239
+ aws cloudfront create-invalidation \
240
+ --distribution-id E1234 \
241
+ --paths "/api/*" "/images/logo.png"
242
+
243
+ # 版本化 URL (推荐)
244
+ /static/app.v2.js → 新版本新URL,无需失效
245
+ ```
246
+
247
+ ---
248
+
249
+ ## 缓存一致性
250
+
251
+ ### 最终一致性方案
252
+
253
+ ```
254
+ 方案1: 先更新DB,再删缓存 (推荐)
255
+ 问题: 删缓存失败 → 数据不一致
256
+ 解决: 重试机制 / 消息队列异步删除
257
+
258
+ 方案2: 延迟双删
259
+ 1. 删缓存
260
+ 2. 更新DB
261
+ 3. 延迟N秒再删缓存 (覆盖并发读写)
262
+
263
+ 方案3: 订阅 Binlog
264
+ DB变更 → Binlog → Canal/Debezium → 删除/更新缓存
265
+ 最可靠,但架构复杂
266
+ ```
267
+
268
+ ### 一致性级别选择
269
+
270
+ | 级别 | 方案 | 延迟 | 复杂度 |
271
+ |------|------|------|--------|
272
+ | 强一致 | Write-Through | 高 | 中 |
273
+ | 最终一致 | Cache-Aside + 删除 | 低 | 低 |
274
+ | 最终一致(可靠) | Binlog 订阅 | 中 | 高 |
275
+
276
+ ---
277
+
278
+ ## 最佳实践
279
+
280
+ ```yaml
281
+ 设计:
282
+ - 缓存 key 规范: {业务}:{实体}:{ID}
283
+ - 合理 TTL: 热数据短(分钟),冷数据长(小时)
284
+ - 大 value 拆分: 单 value < 10KB
285
+ - 避免 Big Key: 集合类型 < 5000 元素
286
+
287
+ 运维:
288
+ - 监控命中率 (目标 > 95%)
289
+ - 监控内存使用和淘汰率
290
+ - 慢查询日志分析
291
+ - 定期清理无用 key
292
+
293
+ 安全:
294
+ - 禁止外网直连 Redis
295
+ - 启用 AUTH 认证
296
+ - 禁用危险命令 (KEYS/FLUSHALL)
297
+ - 定期备份 (RDB + AOF)
298
+ ```
299
+