@rune-kit/rune 2.10.0 → 2.11.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.
Files changed (205) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +8 -6
  3. package/commands/rune.md +168 -168
  4. package/contexts/dev.md +34 -34
  5. package/contexts/research.md +43 -43
  6. package/contexts/review.md +55 -55
  7. package/extensions/ai-ml/PACK.md +88 -88
  8. package/extensions/ai-ml/skills/ai-agents.md +172 -172
  9. package/extensions/ai-ml/skills/code-sandbox.md +187 -187
  10. package/extensions/ai-ml/skills/deep-research.md +146 -146
  11. package/extensions/ai-ml/skills/embedding-search.md +66 -66
  12. package/extensions/ai-ml/skills/fine-tuning-guide.md +74 -74
  13. package/extensions/ai-ml/skills/llm-architect.md +125 -125
  14. package/extensions/ai-ml/skills/llm-integration.md +64 -64
  15. package/extensions/ai-ml/skills/prompt-patterns.md +72 -72
  16. package/extensions/ai-ml/skills/rag-patterns.md +66 -66
  17. package/extensions/ai-ml/skills/web-extraction.md +114 -114
  18. package/extensions/analytics/PACK.md +92 -92
  19. package/extensions/analytics/skills/ab-testing.md +72 -72
  20. package/extensions/analytics/skills/dashboard-patterns.md +83 -83
  21. package/extensions/analytics/skills/data-validation.md +68 -68
  22. package/extensions/analytics/skills/funnel-analysis.md +81 -81
  23. package/extensions/analytics/skills/sql-patterns.md +57 -57
  24. package/extensions/analytics/skills/statistical-analysis.md +79 -79
  25. package/extensions/analytics/skills/tracking-setup.md +71 -71
  26. package/extensions/backend/PACK.md +104 -104
  27. package/extensions/backend/skills/api-patterns.md +84 -84
  28. package/extensions/backend/skills/async-pipeline.md +193 -193
  29. package/extensions/backend/skills/auth-patterns.md +97 -97
  30. package/extensions/backend/skills/background-jobs.md +133 -133
  31. package/extensions/backend/skills/caching-patterns.md +108 -108
  32. package/extensions/backend/skills/cli-generation.md +133 -133
  33. package/extensions/backend/skills/database-patterns.md +87 -87
  34. package/extensions/backend/skills/middleware-patterns.md +104 -104
  35. package/extensions/chrome-ext/PACK.md +93 -93
  36. package/extensions/chrome-ext/skills/cws-preflight.md +143 -143
  37. package/extensions/chrome-ext/skills/cws-publish.md +104 -104
  38. package/extensions/chrome-ext/skills/ext-ai-integration.md +251 -251
  39. package/extensions/chrome-ext/skills/ext-messaging.md +139 -139
  40. package/extensions/chrome-ext/skills/ext-storage.md +133 -133
  41. package/extensions/chrome-ext/skills/mv3-scaffold.md +164 -164
  42. package/extensions/content/PACK.md +96 -96
  43. package/extensions/content/skills/blog-patterns.md +88 -88
  44. package/extensions/content/skills/cms-integration.md +131 -131
  45. package/extensions/content/skills/content-scoring.md +107 -107
  46. package/extensions/content/skills/i18n.md +83 -83
  47. package/extensions/content/skills/mdx-authoring.md +137 -137
  48. package/extensions/content/skills/reference.md +1014 -1014
  49. package/extensions/content/skills/seo-patterns.md +67 -67
  50. package/extensions/content/skills/video-repurpose.md +153 -153
  51. package/extensions/devops/PACK.md +101 -101
  52. package/extensions/devops/skills/chaos-testing.md +67 -67
  53. package/extensions/devops/skills/ci-cd.md +75 -75
  54. package/extensions/devops/skills/docker.md +58 -58
  55. package/extensions/devops/skills/edge-serverless.md +163 -163
  56. package/extensions/devops/skills/infra-as-code.md +158 -158
  57. package/extensions/devops/skills/kubernetes.md +110 -110
  58. package/extensions/devops/skills/monitoring.md +57 -57
  59. package/extensions/devops/skills/server-setup.md +64 -64
  60. package/extensions/devops/skills/ssl-domain.md +42 -42
  61. package/extensions/ecommerce/PACK.md +116 -116
  62. package/extensions/ecommerce/skills/cart-system.md +79 -79
  63. package/extensions/ecommerce/skills/inventory-mgmt.md +102 -102
  64. package/extensions/ecommerce/skills/order-management.md +126 -126
  65. package/extensions/ecommerce/skills/payment-integration.md +472 -472
  66. package/extensions/ecommerce/skills/shopify-dev.md +69 -69
  67. package/extensions/ecommerce/skills/subscription-billing.md +93 -93
  68. package/extensions/ecommerce/skills/tax-compliance.md +117 -117
  69. package/extensions/gamedev/PACK.md +142 -142
  70. package/extensions/gamedev/skills/asset-pipeline.md +74 -74
  71. package/extensions/gamedev/skills/audio-system.md +129 -129
  72. package/extensions/gamedev/skills/camera-system.md +87 -87
  73. package/extensions/gamedev/skills/ecs.md +98 -98
  74. package/extensions/gamedev/skills/game-loops.md +72 -72
  75. package/extensions/gamedev/skills/input-system.md +199 -199
  76. package/extensions/gamedev/skills/multiplayer.md +180 -180
  77. package/extensions/gamedev/skills/particles.md +105 -105
  78. package/extensions/gamedev/skills/physics-engine.md +89 -89
  79. package/extensions/gamedev/skills/scene-management.md +146 -146
  80. package/extensions/gamedev/skills/threejs-patterns.md +90 -90
  81. package/extensions/gamedev/skills/webgl.md +71 -71
  82. package/extensions/mobile/PACK.md +106 -106
  83. package/extensions/mobile/skills/app-store-connect.md +152 -152
  84. package/extensions/mobile/skills/app-store-prep.md +66 -66
  85. package/extensions/mobile/skills/deep-linking.md +109 -109
  86. package/extensions/mobile/skills/flutter.md +60 -60
  87. package/extensions/mobile/skills/ios-build-pipeline.md +142 -142
  88. package/extensions/mobile/skills/native-bridge.md +66 -66
  89. package/extensions/mobile/skills/ota-updates.md +97 -97
  90. package/extensions/mobile/skills/push-notifications.md +111 -111
  91. package/extensions/mobile/skills/react-native.md +82 -82
  92. package/extensions/saas/PACK.md +116 -116
  93. package/extensions/saas/skills/billing-integration.md +200 -200
  94. package/extensions/saas/skills/feature-flags.md +130 -130
  95. package/extensions/saas/skills/multi-tenant.md +103 -103
  96. package/extensions/saas/skills/onboarding-flow.md +139 -139
  97. package/extensions/saas/skills/subscription-flow.md +95 -95
  98. package/extensions/saas/skills/team-management.md +144 -144
  99. package/extensions/security/PACK.md +99 -99
  100. package/extensions/security/skills/api-security.md +140 -140
  101. package/extensions/security/skills/compliance.md +68 -68
  102. package/extensions/security/skills/owasp-audit.md +64 -64
  103. package/extensions/security/skills/pentest-patterns.md +77 -77
  104. package/extensions/security/skills/secret-mgmt.md +65 -65
  105. package/extensions/security/skills/supply-chain.md +65 -65
  106. package/extensions/trading/PACK.md +80 -80
  107. package/extensions/trading/skills/chart-components.md +55 -55
  108. package/extensions/trading/skills/experiment-loop.md +125 -125
  109. package/extensions/trading/skills/fintech-patterns.md +47 -47
  110. package/extensions/trading/skills/indicator-library.md +58 -58
  111. package/extensions/trading/skills/quant-analysis.md +111 -111
  112. package/extensions/trading/skills/realtime-data.md +58 -58
  113. package/extensions/trading/skills/trade-logic.md +104 -104
  114. package/extensions/ui/PACK.md +130 -130
  115. package/extensions/ui/skills/a11y-audit.md +91 -91
  116. package/extensions/ui/skills/animation-patterns.md +127 -127
  117. package/extensions/ui/skills/component-patterns.md +100 -100
  118. package/extensions/ui/skills/design-decision.md +108 -108
  119. package/extensions/ui/skills/design-system.md +68 -68
  120. package/extensions/ui/skills/landing-patterns.md +155 -155
  121. package/extensions/ui/skills/palette-picker.md +173 -173
  122. package/extensions/ui/skills/react-health.md +90 -90
  123. package/extensions/ui/skills/type-system.md +125 -125
  124. package/extensions/ui/skills/web-vitals.md +153 -153
  125. package/extensions/zalo/PACK.md +145 -145
  126. package/extensions/zalo/skills/zalo-oa-mcp.md +317 -317
  127. package/extensions/zalo/skills/zalo-oa-messaging.md +429 -429
  128. package/extensions/zalo/skills/zalo-oa-setup.md +236 -236
  129. package/extensions/zalo/skills/zalo-oa-webhook.md +189 -189
  130. package/extensions/zalo/skills/zalo-personal-messaging.md +194 -194
  131. package/extensions/zalo/skills/zalo-personal-setup.md +153 -153
  132. package/extensions/zalo/skills/zalo-rate-guard.md +219 -219
  133. package/hooks/auto-format/index.cjs +48 -48
  134. package/hooks/hooks.json +111 -111
  135. package/hooks/post-session-reflect/index.cjs +189 -189
  136. package/hooks/pre-compact/index.cjs +95 -95
  137. package/hooks/run-hook.cmd +1 -1
  138. package/hooks/secrets-scan/index.cjs +100 -100
  139. package/hooks/session-start/index.cjs +71 -71
  140. package/hooks/typecheck/index.cjs +65 -65
  141. package/package.json +63 -63
  142. package/references/ui-pro-max-data/LICENSE-UI-PRO-MAX +21 -21
  143. package/references/ui-pro-max-data/charts.csv +26 -26
  144. package/references/ui-pro-max-data/colors.csv +161 -161
  145. package/references/ui-pro-max-data/styles.csv +68 -68
  146. package/references/ui-pro-max-data/typography.csv +74 -74
  147. package/references/ui-pro-max-data/ui-reasoning.csv +162 -162
  148. package/references/ui-pro-max-data/ux-guidelines.csv +99 -99
  149. package/skills/adversary/SKILL.md +283 -283
  150. package/skills/asset-creator/SKILL.md +157 -157
  151. package/skills/audit/SKILL.md +147 -2
  152. package/skills/autopsy/SKILL.md +335 -335
  153. package/skills/brainstorm/SKILL.md +342 -342
  154. package/skills/browser-pilot/SKILL.md +168 -168
  155. package/skills/constraint-check/SKILL.md +165 -165
  156. package/skills/context-engine/SKILL.md +404 -404
  157. package/skills/cook/SKILL.md +917 -863
  158. package/skills/db/SKILL.md +273 -273
  159. package/skills/debug/SKILL.md +465 -465
  160. package/skills/dependency-doctor/SKILL.md +265 -235
  161. package/skills/deploy/SKILL.md +274 -231
  162. package/skills/design/DESIGN-REFERENCE.md +365 -365
  163. package/skills/design/SKILL.md +589 -589
  164. package/skills/doc-processor/SKILL.md +254 -254
  165. package/skills/docs/SKILL.md +374 -374
  166. package/skills/docs-seeker/SKILL.md +177 -177
  167. package/skills/fix/SKILL.md +330 -330
  168. package/skills/git/SKILL.md +339 -339
  169. package/skills/hallucination-guard/SKILL.md +219 -219
  170. package/skills/incident/SKILL.md +254 -253
  171. package/skills/integrity-check/SKILL.md +169 -169
  172. package/skills/journal/SKILL.md +240 -240
  173. package/skills/launch/SKILL.md +344 -344
  174. package/skills/logic-guardian/SKILL.md +251 -251
  175. package/skills/marketing/SKILL.md +290 -289
  176. package/skills/mcp-builder/SKILL.md +425 -425
  177. package/skills/neural-memory/SKILL.md +362 -362
  178. package/skills/onboard/SKILL.md +404 -403
  179. package/skills/perf/SKILL.md +346 -346
  180. package/skills/plan/SKILL.md +433 -428
  181. package/skills/preflight/SKILL.md +415 -415
  182. package/skills/problem-solver/SKILL.md +380 -284
  183. package/skills/rescue/SKILL.md +474 -474
  184. package/skills/retro/SKILL.md +3 -1
  185. package/skills/review/SKILL.md +612 -588
  186. package/skills/review-intake/SKILL.md +249 -249
  187. package/skills/safeguard/SKILL.md +200 -200
  188. package/skills/sast/SKILL.md +190 -190
  189. package/skills/scaffold/SKILL.md +328 -287
  190. package/skills/scope-guard/SKILL.md +180 -180
  191. package/skills/scout/SKILL.md +263 -263
  192. package/skills/sentinel/SKILL.md +382 -381
  193. package/skills/sentinel-env/SKILL.md +254 -254
  194. package/skills/sequential-thinking/SKILL.md +234 -234
  195. package/skills/session-bridge/SKILL.md +543 -543
  196. package/skills/skill-forge/SKILL.md +581 -581
  197. package/skills/skill-router/SKILL.md +3 -0
  198. package/skills/surgeon/SKILL.md +215 -215
  199. package/skills/team/SKILL.md +556 -537
  200. package/skills/test/SKILL.md +614 -614
  201. package/skills/trend-scout/SKILL.md +145 -145
  202. package/skills/verification/SKILL.md +326 -326
  203. package/skills/video-creator/SKILL.md +201 -201
  204. package/skills/watchdog/SKILL.md +168 -168
  205. package/skills/worktree/SKILL.md +140 -140
@@ -1,104 +1,104 @@
1
- ---
2
- name: "@rune/backend"
3
- description: Backend patterns — API design, authentication, database patterns, middleware architecture, caching strategies, background job processing, CLI generation, and async processing pipelines.
4
- metadata:
5
- author: runedev
6
- version: "0.3.0"
7
- layer: L4
8
- price: "free"
9
- target: Backend developers
10
- format: split
11
- ---
12
-
13
- # @rune/backend
14
-
15
- ## Purpose
16
-
17
- Backend codebases accumulate structural debt across six areas: inconsistent API contracts (mixed naming, missing pagination, vague errors), insecure auth flows (token mismanagement, missing refresh rotation, weak RBAC), database anti-patterns (N+1 queries, missing indexes, unsafe migrations), ad-hoc middleware (duplicated validation, no request tracing, inconsistent error format), missing or naive caching (no invalidation strategy, cache stampede risk, unbounded memory growth), and synchronous processing of inherently async work (blocking request threads on email, PDF, image tasks). This pack addresses each systematically — detect the anti-pattern, emit the fix, verify the result. Skills are independent but compound: clean APIs need solid auth, solid auth needs safe queries, safe queries need proper middleware, and high-traffic APIs need caching and background jobs to stay responsive.
18
-
19
- ## Triggers
20
-
21
- - Auto-trigger: when `routes/`, `controllers/`, `middleware/`, `*.resolver.ts`, `*.service.ts`, `queues/`, `workers/`, or server framework config detected
22
- - `/rune api-patterns` — audit and fix API design
23
- - `/rune auth-patterns` — audit and fix authentication flows
24
- - `/rune database-patterns` — audit and fix database queries and schema
25
- - `/rune middleware-patterns` — audit and fix middleware stack
26
- - `/rune caching-patterns` — audit and implement caching strategy
27
- - `/rune background-jobs` — identify async operations and implement job queues
28
- - `/rune cli-generation` — generate production CLI for existing backend services
29
- - `/rune async-pipeline` — build multi-stage async processing pipelines with waterfall fallback
30
- - Called by `cook` (L1) when backend task is detected
31
- - Called by `review` (L2) when API/backend code is under review
32
-
33
- ## Skills Included
34
-
35
- | Skill | Model | Description |
36
- |-------|-------|-------------|
37
- | [api-patterns](skills/api-patterns.md) | sonnet | RESTful and GraphQL API design patterns — resource naming, pagination, filtering, error responses, versioning, rate limiting, OpenAPI generation. |
38
- | [auth-patterns](skills/auth-patterns.md) | sonnet | Authentication and authorization patterns — JWT, OAuth 2.0 / OIDC, passkeys/WebAuthn, session management, RBAC, API key management, MFA flows. |
39
- | [database-patterns](skills/database-patterns.md) | sonnet | Database design and query patterns — schema design, migrations, indexing strategies, N+1 prevention, soft deletes, read replicas, connection pooling, seeding. |
40
- | [middleware-patterns](skills/middleware-patterns.md) | sonnet | Middleware architecture — request validation, error handling, logging, CORS, compression, graceful shutdown, health checks, request ID tracking. |
41
- | [caching-patterns](skills/caching-patterns.md) | sonnet | Caching strategies — in-memory LRU, Redis distributed cache, CDN/edge cache, browser cache headers, invalidation, and stampede prevention. |
42
- | [background-jobs](skills/background-jobs.md) | sonnet | Queue-based async processing — BullMQ (Node.js), job patterns, retry strategies, idempotency, dead letter queues, monitoring. |
43
- | [cli-generation](skills/cli-generation.md) | sonnet | Generate production-grade CLI wrappers — command groups, dual output mode (human + JSON), stateful REPL, session management with undo/redo, installable packaging. |
44
- | [async-pipeline](skills/async-pipeline.md) | sonnet | Multi-stage async processing pipelines with waterfall engine selection, progress streaming via SSE, concurrency control, and credit-based billing. |
45
-
46
- ## Tech Stack Support
47
-
48
- | Framework | ORM | Auth Library | Queue | Cache |
49
- |-----------|-----|-------------|-------|-------|
50
- | Express 5 | Prisma | Passport / custom JWT | BullMQ | ioredis |
51
- | Fastify 5 | Drizzle | @fastify/jwt | BullMQ | ioredis |
52
- | Next.js 16 (Route Handlers) | Prisma | NextAuth v5 / Lucia | BullMQ | ioredis / Upstash |
53
- | NestJS 11 | TypeORM / Prisma | @nestjs/passport | @nestjs/bull | @nestjs/cache-manager |
54
- | FastAPI | SQLAlchemy | python-jose / authlib | Celery | redis-py |
55
- | Django 5 | Django ORM | django-rest-framework | Celery | django-redis |
56
-
57
- ## Connections
58
-
59
- ```
60
- Calls → docs-seeker (L3): lookup API documentation and framework guides
61
- Calls → sentinel (L2): security audit on auth implementations
62
- Calls → watchdog (L3): monitor queue depth and cache hit ratios
63
- Calls → @rune/devops (L4): container and serverless deployment config for backend services
64
- Called By ← cook (L1): when backend task detected
65
- Called By ← review (L2): when API/backend code is being reviewed
66
- Called By ← audit (L2): backend health dimension
67
- Called By ← deploy (L2): pre-deploy readiness checks (health endpoints, graceful shutdown)
68
- Called By ← @rune/saas (L4): SaaS services use backend API, auth, and caching patterns
69
- Called By ← @rune/security (L4): security audits reference auth flows and middleware patterns
70
- Called By ← @rune/mobile (L4): mobile backend integration patterns (auth, push server)
71
- Inter-skill: cli-generation → api-patterns (CLI wraps existing API surface)
72
- Inter-skill: async-pipeline → background-jobs (pipeline stages use job queue for execution)
73
- Inter-skill: async-pipeline → caching-patterns (pipeline results cached by content hash)
74
- ```
75
-
76
- ## Sharp Edges
77
-
78
- - **Auth**: Never emit JWT without expiry; hard-cap access tokens at 15min, refresh at 7d.
79
- - **Cache stampede**: Always emit Redis `SET NX` mutex lock on cache miss for hot keys.
80
- - **Job idempotency**: Never use random UUID as job ID — use deterministic domain key (e.g., `email:welcome:${userId}`).
81
- - **N+1**: Check ORM `lazy: true` defaults (Sequelize, TypeORM) — not caught by loop scan alone.
82
- - **Migrations**: Every migration MUST include both `up()` and `down()` — flag any missing rollback.
83
- - **LRU**: Always set `max` entries AND `ttl` — unbounded LRU grows to OOM.
84
- - **CORS**: Flag `origin: '*'` in production configs; check `NODE_ENV` before emitting.
85
- - **SSE**: Send heartbeat comment every 30s (`:\n\n`) to prevent proxy/LB 60s timeout drops.
86
- - **Dead letters**: Emit alert on DLQ depth > 0 for critical queues; never silently drop failed jobs.
87
- - **Credit math**: Always `Math.ceil()` final cost; use integer cents internally to avoid float drift.
88
-
89
- ## Done When
90
-
91
- - API audit report emitted with naming violations, missing pagination, versioning strategy, and fix diffs
92
- - Auth flow hardened: short-lived access tokens, httpOnly refresh cookies, proper hashing, OAuth/OIDC integration ready
93
- - N+1 queries detected and replaced with eager loading; soft delete pattern applied; missing indexes migrated
94
- - Middleware stack has: request ID, structured logging, global error handler, input validation, compression, graceful shutdown, health endpoints
95
- - Caching strategy implemented: cacheable endpoints identified, cache layer selected, invalidation logic emitted alongside every write
96
- - Async operations moved to background jobs: idempotency keys assigned, retry strategy configured, dead letter queue wired
97
- - All emitted code uses project's existing framework and ORM (detected from package.json)
98
- - CLI generated with dual output (human + JSON), REPL mode, session undo/redo, and installable package
99
- - Async pipeline has waterfall engine selection, progress streaming via SSE, concurrency control, and credit billing
100
- - Structured report emitted for each skill invoked
101
-
102
- ## Cost Profile
103
-
104
- ~14,000–28,000 tokens per full pack run (all 8 skills). Individual skill: ~2,000–5,000 tokens. Sonnet default for code generation and security audit. Use haiku for detection scans (Step 1 of each skill). Escalate to opus for architecture decisions on caching topology, pipeline design, or queue system selection in high-traffic systems.
1
+ ---
2
+ name: "@rune/backend"
3
+ description: Backend patterns — API design, authentication, database patterns, middleware architecture, caching strategies, background job processing, CLI generation, and async processing pipelines.
4
+ metadata:
5
+ author: runedev
6
+ version: "0.3.0"
7
+ layer: L4
8
+ price: "free"
9
+ target: Backend developers
10
+ format: split
11
+ ---
12
+
13
+ # @rune/backend
14
+
15
+ ## Purpose
16
+
17
+ Backend codebases accumulate structural debt across six areas: inconsistent API contracts (mixed naming, missing pagination, vague errors), insecure auth flows (token mismanagement, missing refresh rotation, weak RBAC), database anti-patterns (N+1 queries, missing indexes, unsafe migrations), ad-hoc middleware (duplicated validation, no request tracing, inconsistent error format), missing or naive caching (no invalidation strategy, cache stampede risk, unbounded memory growth), and synchronous processing of inherently async work (blocking request threads on email, PDF, image tasks). This pack addresses each systematically — detect the anti-pattern, emit the fix, verify the result. Skills are independent but compound: clean APIs need solid auth, solid auth needs safe queries, safe queries need proper middleware, and high-traffic APIs need caching and background jobs to stay responsive.
18
+
19
+ ## Triggers
20
+
21
+ - Auto-trigger: when `routes/`, `controllers/`, `middleware/`, `*.resolver.ts`, `*.service.ts`, `queues/`, `workers/`, or server framework config detected
22
+ - `/rune api-patterns` — audit and fix API design
23
+ - `/rune auth-patterns` — audit and fix authentication flows
24
+ - `/rune database-patterns` — audit and fix database queries and schema
25
+ - `/rune middleware-patterns` — audit and fix middleware stack
26
+ - `/rune caching-patterns` — audit and implement caching strategy
27
+ - `/rune background-jobs` — identify async operations and implement job queues
28
+ - `/rune cli-generation` — generate production CLI for existing backend services
29
+ - `/rune async-pipeline` — build multi-stage async processing pipelines with waterfall fallback
30
+ - Called by `cook` (L1) when backend task is detected
31
+ - Called by `review` (L2) when API/backend code is under review
32
+
33
+ ## Skills Included
34
+
35
+ | Skill | Model | Description |
36
+ |-------|-------|-------------|
37
+ | [api-patterns](skills/api-patterns.md) | sonnet | RESTful and GraphQL API design patterns — resource naming, pagination, filtering, error responses, versioning, rate limiting, OpenAPI generation. |
38
+ | [auth-patterns](skills/auth-patterns.md) | sonnet | Authentication and authorization patterns — JWT, OAuth 2.0 / OIDC, passkeys/WebAuthn, session management, RBAC, API key management, MFA flows. |
39
+ | [database-patterns](skills/database-patterns.md) | sonnet | Database design and query patterns — schema design, migrations, indexing strategies, N+1 prevention, soft deletes, read replicas, connection pooling, seeding. |
40
+ | [middleware-patterns](skills/middleware-patterns.md) | sonnet | Middleware architecture — request validation, error handling, logging, CORS, compression, graceful shutdown, health checks, request ID tracking. |
41
+ | [caching-patterns](skills/caching-patterns.md) | sonnet | Caching strategies — in-memory LRU, Redis distributed cache, CDN/edge cache, browser cache headers, invalidation, and stampede prevention. |
42
+ | [background-jobs](skills/background-jobs.md) | sonnet | Queue-based async processing — BullMQ (Node.js), job patterns, retry strategies, idempotency, dead letter queues, monitoring. |
43
+ | [cli-generation](skills/cli-generation.md) | sonnet | Generate production-grade CLI wrappers — command groups, dual output mode (human + JSON), stateful REPL, session management with undo/redo, installable packaging. |
44
+ | [async-pipeline](skills/async-pipeline.md) | sonnet | Multi-stage async processing pipelines with waterfall engine selection, progress streaming via SSE, concurrency control, and credit-based billing. |
45
+
46
+ ## Tech Stack Support
47
+
48
+ | Framework | ORM | Auth Library | Queue | Cache |
49
+ |-----------|-----|-------------|-------|-------|
50
+ | Express 5 | Prisma | Passport / custom JWT | BullMQ | ioredis |
51
+ | Fastify 5 | Drizzle | @fastify/jwt | BullMQ | ioredis |
52
+ | Next.js 16 (Route Handlers) | Prisma | NextAuth v5 / Lucia | BullMQ | ioredis / Upstash |
53
+ | NestJS 11 | TypeORM / Prisma | @nestjs/passport | @nestjs/bull | @nestjs/cache-manager |
54
+ | FastAPI | SQLAlchemy | python-jose / authlib | Celery | redis-py |
55
+ | Django 5 | Django ORM | django-rest-framework | Celery | django-redis |
56
+
57
+ ## Connections
58
+
59
+ ```
60
+ Calls → docs-seeker (L3): lookup API documentation and framework guides
61
+ Calls → sentinel (L2): security audit on auth implementations
62
+ Calls → watchdog (L3): monitor queue depth and cache hit ratios
63
+ Calls → @rune/devops (L4): container and serverless deployment config for backend services
64
+ Called By ← cook (L1): when backend task detected
65
+ Called By ← review (L2): when API/backend code is being reviewed
66
+ Called By ← audit (L2): backend health dimension
67
+ Called By ← deploy (L2): pre-deploy readiness checks (health endpoints, graceful shutdown)
68
+ Called By ← @rune/saas (L4): SaaS services use backend API, auth, and caching patterns
69
+ Called By ← @rune/security (L4): security audits reference auth flows and middleware patterns
70
+ Called By ← @rune/mobile (L4): mobile backend integration patterns (auth, push server)
71
+ Inter-skill: cli-generation → api-patterns (CLI wraps existing API surface)
72
+ Inter-skill: async-pipeline → background-jobs (pipeline stages use job queue for execution)
73
+ Inter-skill: async-pipeline → caching-patterns (pipeline results cached by content hash)
74
+ ```
75
+
76
+ ## Sharp Edges
77
+
78
+ - **Auth**: Never emit JWT without expiry; hard-cap access tokens at 15min, refresh at 7d.
79
+ - **Cache stampede**: Always emit Redis `SET NX` mutex lock on cache miss for hot keys.
80
+ - **Job idempotency**: Never use random UUID as job ID — use deterministic domain key (e.g., `email:welcome:${userId}`).
81
+ - **N+1**: Check ORM `lazy: true` defaults (Sequelize, TypeORM) — not caught by loop scan alone.
82
+ - **Migrations**: Every migration MUST include both `up()` and `down()` — flag any missing rollback.
83
+ - **LRU**: Always set `max` entries AND `ttl` — unbounded LRU grows to OOM.
84
+ - **CORS**: Flag `origin: '*'` in production configs; check `NODE_ENV` before emitting.
85
+ - **SSE**: Send heartbeat comment every 30s (`:\n\n`) to prevent proxy/LB 60s timeout drops.
86
+ - **Dead letters**: Emit alert on DLQ depth > 0 for critical queues; never silently drop failed jobs.
87
+ - **Credit math**: Always `Math.ceil()` final cost; use integer cents internally to avoid float drift.
88
+
89
+ ## Done When
90
+
91
+ - API audit report emitted with naming violations, missing pagination, versioning strategy, and fix diffs
92
+ - Auth flow hardened: short-lived access tokens, httpOnly refresh cookies, proper hashing, OAuth/OIDC integration ready
93
+ - N+1 queries detected and replaced with eager loading; soft delete pattern applied; missing indexes migrated
94
+ - Middleware stack has: request ID, structured logging, global error handler, input validation, compression, graceful shutdown, health endpoints
95
+ - Caching strategy implemented: cacheable endpoints identified, cache layer selected, invalidation logic emitted alongside every write
96
+ - Async operations moved to background jobs: idempotency keys assigned, retry strategy configured, dead letter queue wired
97
+ - All emitted code uses project's existing framework and ORM (detected from package.json)
98
+ - CLI generated with dual output (human + JSON), REPL mode, session undo/redo, and installable package
99
+ - Async pipeline has waterfall engine selection, progress streaming via SSE, concurrency control, and credit billing
100
+ - Structured report emitted for each skill invoked
101
+
102
+ ## Cost Profile
103
+
104
+ ~14,000–28,000 tokens per full pack run (all 8 skills). Individual skill: ~2,000–5,000 tokens. Sonnet default for code generation and security audit. Use haiku for detection scans (Step 1 of each skill). Escalate to opus for architecture decisions on caching topology, pipeline design, or queue system selection in high-traffic systems.
@@ -1,84 +1,84 @@
1
- ---
2
- name: "api-patterns"
3
- pack: "@rune/backend"
4
- description: "RESTful and GraphQL API design patterns — resource naming, pagination, filtering, error responses, versioning, rate limiting, OpenAPI generation."
5
- model: sonnet
6
- tools: [Read, Edit, Write, Grep, Glob, Bash]
7
- ---
8
-
9
- # api-patterns
10
-
11
- RESTful and GraphQL API design patterns — resource naming, pagination, filtering, error responses, versioning, rate limiting, OpenAPI generation.
12
-
13
- #### Workflow
14
-
15
- **Step 1 — Detect API surface**
16
- Use Grep to find route definitions (`app.get`, `app.post`, `router.`, `@Get()`, `@Post()`, `@Query`, `@Mutation`). Read each route file to inventory: endpoint paths, HTTP methods, response shapes, error handling approach.
17
-
18
- **Step 2 — Audit naming and structure**
19
- Check each endpoint against REST conventions: plural nouns for collections (`/users` not `/getUsers`), nested resources for relationships (`/users/:id/posts`), query params for filtering (`?status=active`), consistent error envelope. Flag violations with specific fix for each.
20
-
21
- **Step 3 — Add missing pagination and filtering**
22
- For list endpoints returning unbounded arrays, emit cursor-based or offset pagination. For endpoints with no filtering, add query param parsing with Zod/Joi validation. Emit the middleware or decorator that enforces the pattern.
23
-
24
- **Step 4 — API versioning strategy**
25
- Choose versioning approach based on project context: URL path (`/v2/users`) for public APIs with long deprecation windows; `Accept-Version: 2` header for internal APIs needing cleaner URLs; query param (`?version=2`) for simple cases. Emit version routing middleware and a deprecation warning header (`Deprecation: true, Sunset: <date>`) on v1 routes. Document migration path in the route file as a comment.
26
-
27
- **Step 5 — OpenAPI/Swagger and GraphQL patterns**
28
- For REST: emit OpenAPI 3.1 schema from route definitions using tsoa decorators (TypeScript), Fastify's built-in JSON Schema (`schema: { body, querystring, response }`), or NestJS `@ApiProperty`. For GraphQL: if schema-first, validate resolvers match schema types; if code-first (NestJS), check `@ObjectType` / `@Field` decorators. Add DataLoader to any resolver with a per-request DB call to prevent N+1 at the GraphQL layer. Emit subscription pattern (WebSocket transport) for real-time fields.
29
-
30
- #### Example
31
-
32
- ```typescript
33
- // BEFORE: inconsistent naming, no pagination, bare error
34
- app.get('/getUsers', async (req, res) => {
35
- const users = await db.query('SELECT * FROM users');
36
- res.json(users);
37
- });
38
-
39
- // AFTER: REST naming, cursor pagination, error envelope, Zod validation
40
- const paginationSchema = z.object({
41
- query: z.object({
42
- cursor: z.string().optional(),
43
- limit: z.coerce.number().int().min(1).max(100).default(20),
44
- status: z.enum(['active', 'inactive']).optional(),
45
- }),
46
- });
47
-
48
- app.get('/users', validate(paginationSchema), async (req, res) => {
49
- const { cursor, limit, status } = req.query;
50
- const users = await userRepo.findMany({ cursor, limit: limit + 1, status });
51
- const hasNext = users.length > limit;
52
- res.json({
53
- data: users.slice(0, limit),
54
- pagination: { next_cursor: hasNext ? users[limit - 1].id : null, has_more: hasNext },
55
- });
56
- });
57
-
58
- // Rate limiting: sliding window with Redis (atomic, no race condition)
59
- const rateLimitMiddleware = async (req, res, next) => {
60
- const key = `rl:${req.ip}:${Math.floor(Date.now() / 60_000)}`; // 1-minute window
61
- const multi = redis.multi();
62
- multi.incr(key);
63
- multi.expire(key, 60);
64
- const [count] = await multi.exec();
65
- if (count > 100) return res.status(429).json({ error: { code: 'RATE_LIMITED', message: 'Too many requests' } });
66
- res.setHeader('X-RateLimit-Remaining', 100 - count);
67
- next();
68
- };
69
-
70
- // Fastify: built-in schema validation + OpenAPI generation
71
- fastify.get('/users/:id', {
72
- schema: {
73
- params: { type: 'object', properties: { id: { type: 'string', format: 'uuid' } }, required: ['id'] },
74
- response: { 200: UserSchema, 404: ErrorSchema },
75
- },
76
- }, async (req, reply) => { /* handler */ });
77
-
78
- // GraphQL: DataLoader prevents N+1 in resolvers
79
- const userLoader = new DataLoader(async (userIds: string[]) => {
80
- const users = await prisma.user.findMany({ where: { id: { in: userIds } } });
81
- return userIds.map(id => users.find(u => u.id === id) ?? new Error(`User ${id} not found`));
82
- });
83
- // In resolver: return userLoader.load(post.authorId) — batches all loads per request
84
- ```
1
+ ---
2
+ name: "api-patterns"
3
+ pack: "@rune/backend"
4
+ description: "RESTful and GraphQL API design patterns — resource naming, pagination, filtering, error responses, versioning, rate limiting, OpenAPI generation."
5
+ model: sonnet
6
+ tools: [Read, Edit, Write, Grep, Glob, Bash]
7
+ ---
8
+
9
+ # api-patterns
10
+
11
+ RESTful and GraphQL API design patterns — resource naming, pagination, filtering, error responses, versioning, rate limiting, OpenAPI generation.
12
+
13
+ #### Workflow
14
+
15
+ **Step 1 — Detect API surface**
16
+ Use Grep to find route definitions (`app.get`, `app.post`, `router.`, `@Get()`, `@Post()`, `@Query`, `@Mutation`). Read each route file to inventory: endpoint paths, HTTP methods, response shapes, error handling approach.
17
+
18
+ **Step 2 — Audit naming and structure**
19
+ Check each endpoint against REST conventions: plural nouns for collections (`/users` not `/getUsers`), nested resources for relationships (`/users/:id/posts`), query params for filtering (`?status=active`), consistent error envelope. Flag violations with specific fix for each.
20
+
21
+ **Step 3 — Add missing pagination and filtering**
22
+ For list endpoints returning unbounded arrays, emit cursor-based or offset pagination. For endpoints with no filtering, add query param parsing with Zod/Joi validation. Emit the middleware or decorator that enforces the pattern.
23
+
24
+ **Step 4 — API versioning strategy**
25
+ Choose versioning approach based on project context: URL path (`/v2/users`) for public APIs with long deprecation windows; `Accept-Version: 2` header for internal APIs needing cleaner URLs; query param (`?version=2`) for simple cases. Emit version routing middleware and a deprecation warning header (`Deprecation: true, Sunset: <date>`) on v1 routes. Document migration path in the route file as a comment.
26
+
27
+ **Step 5 — OpenAPI/Swagger and GraphQL patterns**
28
+ For REST: emit OpenAPI 3.1 schema from route definitions using tsoa decorators (TypeScript), Fastify's built-in JSON Schema (`schema: { body, querystring, response }`), or NestJS `@ApiProperty`. For GraphQL: if schema-first, validate resolvers match schema types; if code-first (NestJS), check `@ObjectType` / `@Field` decorators. Add DataLoader to any resolver with a per-request DB call to prevent N+1 at the GraphQL layer. Emit subscription pattern (WebSocket transport) for real-time fields.
29
+
30
+ #### Example
31
+
32
+ ```typescript
33
+ // BEFORE: inconsistent naming, no pagination, bare error
34
+ app.get('/getUsers', async (req, res) => {
35
+ const users = await db.query('SELECT * FROM users');
36
+ res.json(users);
37
+ });
38
+
39
+ // AFTER: REST naming, cursor pagination, error envelope, Zod validation
40
+ const paginationSchema = z.object({
41
+ query: z.object({
42
+ cursor: z.string().optional(),
43
+ limit: z.coerce.number().int().min(1).max(100).default(20),
44
+ status: z.enum(['active', 'inactive']).optional(),
45
+ }),
46
+ });
47
+
48
+ app.get('/users', validate(paginationSchema), async (req, res) => {
49
+ const { cursor, limit, status } = req.query;
50
+ const users = await userRepo.findMany({ cursor, limit: limit + 1, status });
51
+ const hasNext = users.length > limit;
52
+ res.json({
53
+ data: users.slice(0, limit),
54
+ pagination: { next_cursor: hasNext ? users[limit - 1].id : null, has_more: hasNext },
55
+ });
56
+ });
57
+
58
+ // Rate limiting: sliding window with Redis (atomic, no race condition)
59
+ const rateLimitMiddleware = async (req, res, next) => {
60
+ const key = `rl:${req.ip}:${Math.floor(Date.now() / 60_000)}`; // 1-minute window
61
+ const multi = redis.multi();
62
+ multi.incr(key);
63
+ multi.expire(key, 60);
64
+ const [count] = await multi.exec();
65
+ if (count > 100) return res.status(429).json({ error: { code: 'RATE_LIMITED', message: 'Too many requests' } });
66
+ res.setHeader('X-RateLimit-Remaining', 100 - count);
67
+ next();
68
+ };
69
+
70
+ // Fastify: built-in schema validation + OpenAPI generation
71
+ fastify.get('/users/:id', {
72
+ schema: {
73
+ params: { type: 'object', properties: { id: { type: 'string', format: 'uuid' } }, required: ['id'] },
74
+ response: { 200: UserSchema, 404: ErrorSchema },
75
+ },
76
+ }, async (req, reply) => { /* handler */ });
77
+
78
+ // GraphQL: DataLoader prevents N+1 in resolvers
79
+ const userLoader = new DataLoader(async (userIds: string[]) => {
80
+ const users = await prisma.user.findMany({ where: { id: { in: userIds } } });
81
+ return userIds.map(id => users.find(u => u.id === id) ?? new Error(`User ${id} not found`));
82
+ });
83
+ // In resolver: return userLoader.load(post.authorId) — batches all loads per request
84
+ ```