@rune-kit/rune 2.8.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 (287) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +68 -34
  3. package/agents/adversary.md +27 -0
  4. package/agents/architect.md +19 -29
  5. package/agents/asset-creator.md +18 -4
  6. package/agents/audit.md +25 -4
  7. package/agents/autopsy.md +19 -4
  8. package/agents/ba.md +35 -0
  9. package/agents/brainstorm.md +31 -4
  10. package/agents/browser-pilot.md +21 -4
  11. package/agents/coder.md +21 -29
  12. package/agents/completion-gate.md +20 -4
  13. package/agents/constraint-check.md +18 -4
  14. package/agents/context-engine.md +22 -4
  15. package/agents/context-pack.md +32 -0
  16. package/agents/cook.md +41 -4
  17. package/agents/db.md +19 -4
  18. package/agents/debug.md +33 -4
  19. package/agents/dependency-doctor.md +20 -4
  20. package/agents/deploy.md +27 -4
  21. package/agents/design.md +22 -4
  22. package/agents/doc-processor.md +27 -0
  23. package/agents/docs-seeker.md +19 -4
  24. package/agents/docs.md +31 -0
  25. package/agents/fix.md +37 -4
  26. package/agents/git.md +29 -0
  27. package/agents/hallucination-guard.md +20 -4
  28. package/agents/incident.md +21 -4
  29. package/agents/integrity-check.md +18 -4
  30. package/agents/journal.md +19 -4
  31. package/agents/launch.md +32 -4
  32. package/agents/logic-guardian.md +26 -11
  33. package/agents/marketing.md +23 -4
  34. package/agents/mcp-builder.md +26 -0
  35. package/agents/neural-memory.md +30 -0
  36. package/agents/onboard.md +22 -4
  37. package/agents/perf.md +21 -4
  38. package/agents/plan.md +29 -4
  39. package/agents/preflight.md +22 -4
  40. package/agents/problem-solver.md +20 -4
  41. package/agents/rescue.md +23 -4
  42. package/agents/research.md +19 -4
  43. package/agents/researcher.md +19 -29
  44. package/agents/retro.md +32 -0
  45. package/agents/review-intake.md +20 -4
  46. package/agents/review.md +32 -4
  47. package/agents/reviewer.md +20 -28
  48. package/agents/safeguard.md +19 -4
  49. package/agents/sast.md +18 -4
  50. package/agents/scaffold.md +41 -0
  51. package/agents/scanner.md +19 -28
  52. package/agents/scope-guard.md +18 -4
  53. package/agents/scout.md +23 -4
  54. package/agents/sentinel-env.md +26 -0
  55. package/agents/sentinel.md +33 -4
  56. package/agents/sequential-thinking.md +20 -4
  57. package/agents/session-bridge.md +24 -4
  58. package/agents/skill-forge.md +22 -4
  59. package/agents/skill-router.md +26 -4
  60. package/agents/slides.md +24 -0
  61. package/agents/surgeon.md +19 -4
  62. package/agents/team.md +30 -4
  63. package/agents/test.md +36 -4
  64. package/agents/trend-scout.md +17 -4
  65. package/agents/verification.md +20 -4
  66. package/agents/video-creator.md +20 -4
  67. package/agents/watchdog.md +19 -4
  68. package/agents/worktree.md +17 -4
  69. package/commands/rune.md +168 -168
  70. package/compiler/__tests__/analytics.test.js +370 -0
  71. package/compiler/adapters/openclaw.js +2 -2
  72. package/compiler/analytics.js +385 -0
  73. package/compiler/bin/rune.js +68 -2
  74. package/compiler/dashboard.js +883 -0
  75. package/compiler/transforms/branding.js +1 -1
  76. package/contexts/dev.md +34 -34
  77. package/contexts/research.md +43 -43
  78. package/contexts/review.md +55 -55
  79. package/extensions/ai-ml/PACK.md +88 -88
  80. package/extensions/ai-ml/skills/ai-agents.md +172 -172
  81. package/extensions/ai-ml/skills/code-sandbox.md +187 -187
  82. package/extensions/ai-ml/skills/deep-research.md +146 -146
  83. package/extensions/ai-ml/skills/embedding-search.md +66 -66
  84. package/extensions/ai-ml/skills/fine-tuning-guide.md +74 -74
  85. package/extensions/ai-ml/skills/llm-architect.md +125 -125
  86. package/extensions/ai-ml/skills/llm-integration.md +64 -64
  87. package/extensions/ai-ml/skills/prompt-patterns.md +72 -72
  88. package/extensions/ai-ml/skills/rag-patterns.md +66 -66
  89. package/extensions/ai-ml/skills/web-extraction.md +114 -114
  90. package/extensions/analytics/PACK.md +92 -92
  91. package/extensions/analytics/skills/ab-testing.md +72 -72
  92. package/extensions/analytics/skills/dashboard-patterns.md +83 -83
  93. package/extensions/analytics/skills/data-validation.md +68 -68
  94. package/extensions/analytics/skills/funnel-analysis.md +81 -81
  95. package/extensions/analytics/skills/sql-patterns.md +57 -57
  96. package/extensions/analytics/skills/statistical-analysis.md +79 -79
  97. package/extensions/analytics/skills/tracking-setup.md +71 -71
  98. package/extensions/backend/PACK.md +104 -104
  99. package/extensions/backend/skills/api-patterns.md +84 -84
  100. package/extensions/backend/skills/async-pipeline.md +193 -193
  101. package/extensions/backend/skills/auth-patterns.md +97 -97
  102. package/extensions/backend/skills/background-jobs.md +133 -133
  103. package/extensions/backend/skills/caching-patterns.md +108 -108
  104. package/extensions/backend/skills/cli-generation.md +133 -133
  105. package/extensions/backend/skills/database-patterns.md +87 -87
  106. package/extensions/backend/skills/middleware-patterns.md +104 -104
  107. package/extensions/chrome-ext/PACK.md +93 -93
  108. package/extensions/chrome-ext/skills/cws-preflight.md +143 -143
  109. package/extensions/chrome-ext/skills/cws-publish.md +104 -104
  110. package/extensions/chrome-ext/skills/ext-ai-integration.md +251 -251
  111. package/extensions/chrome-ext/skills/ext-messaging.md +139 -139
  112. package/extensions/chrome-ext/skills/ext-storage.md +133 -133
  113. package/extensions/chrome-ext/skills/mv3-scaffold.md +164 -164
  114. package/extensions/content/PACK.md +96 -96
  115. package/extensions/content/skills/blog-patterns.md +88 -88
  116. package/extensions/content/skills/cms-integration.md +131 -131
  117. package/extensions/content/skills/content-scoring.md +107 -107
  118. package/extensions/content/skills/i18n.md +83 -83
  119. package/extensions/content/skills/mdx-authoring.md +137 -137
  120. package/extensions/content/skills/reference.md +1014 -1014
  121. package/extensions/content/skills/seo-patterns.md +67 -67
  122. package/extensions/content/skills/video-repurpose.md +153 -153
  123. package/extensions/devops/PACK.md +101 -101
  124. package/extensions/devops/skills/chaos-testing.md +67 -67
  125. package/extensions/devops/skills/ci-cd.md +75 -75
  126. package/extensions/devops/skills/docker.md +58 -58
  127. package/extensions/devops/skills/edge-serverless.md +163 -163
  128. package/extensions/devops/skills/infra-as-code.md +158 -158
  129. package/extensions/devops/skills/kubernetes.md +110 -110
  130. package/extensions/devops/skills/monitoring.md +57 -57
  131. package/extensions/devops/skills/server-setup.md +64 -64
  132. package/extensions/devops/skills/ssl-domain.md +42 -42
  133. package/extensions/ecommerce/PACK.md +116 -116
  134. package/extensions/ecommerce/skills/cart-system.md +79 -79
  135. package/extensions/ecommerce/skills/inventory-mgmt.md +102 -102
  136. package/extensions/ecommerce/skills/order-management.md +126 -126
  137. package/extensions/ecommerce/skills/payment-integration.md +472 -472
  138. package/extensions/ecommerce/skills/shopify-dev.md +69 -69
  139. package/extensions/ecommerce/skills/subscription-billing.md +93 -93
  140. package/extensions/ecommerce/skills/tax-compliance.md +117 -117
  141. package/extensions/gamedev/PACK.md +142 -142
  142. package/extensions/gamedev/skills/asset-pipeline.md +74 -74
  143. package/extensions/gamedev/skills/audio-system.md +129 -129
  144. package/extensions/gamedev/skills/camera-system.md +87 -87
  145. package/extensions/gamedev/skills/ecs.md +98 -98
  146. package/extensions/gamedev/skills/game-loops.md +72 -72
  147. package/extensions/gamedev/skills/input-system.md +199 -199
  148. package/extensions/gamedev/skills/multiplayer.md +180 -180
  149. package/extensions/gamedev/skills/particles.md +105 -105
  150. package/extensions/gamedev/skills/physics-engine.md +89 -89
  151. package/extensions/gamedev/skills/scene-management.md +146 -146
  152. package/extensions/gamedev/skills/threejs-patterns.md +90 -90
  153. package/extensions/gamedev/skills/webgl.md +71 -71
  154. package/extensions/mobile/PACK.md +106 -106
  155. package/extensions/mobile/skills/app-store-connect.md +152 -152
  156. package/extensions/mobile/skills/app-store-prep.md +66 -66
  157. package/extensions/mobile/skills/deep-linking.md +109 -109
  158. package/extensions/mobile/skills/flutter.md +60 -60
  159. package/extensions/mobile/skills/ios-build-pipeline.md +142 -142
  160. package/extensions/mobile/skills/native-bridge.md +66 -66
  161. package/extensions/mobile/skills/ota-updates.md +97 -97
  162. package/extensions/mobile/skills/push-notifications.md +111 -111
  163. package/extensions/mobile/skills/react-native.md +82 -82
  164. package/extensions/saas/PACK.md +116 -116
  165. package/extensions/saas/skills/billing-integration.md +200 -200
  166. package/extensions/saas/skills/feature-flags.md +130 -130
  167. package/extensions/saas/skills/multi-tenant.md +103 -103
  168. package/extensions/saas/skills/onboarding-flow.md +139 -139
  169. package/extensions/saas/skills/subscription-flow.md +95 -95
  170. package/extensions/saas/skills/team-management.md +144 -144
  171. package/extensions/security/PACK.md +99 -99
  172. package/extensions/security/skills/api-security.md +140 -140
  173. package/extensions/security/skills/compliance.md +68 -68
  174. package/extensions/security/skills/owasp-audit.md +64 -64
  175. package/extensions/security/skills/pentest-patterns.md +77 -77
  176. package/extensions/security/skills/secret-mgmt.md +65 -65
  177. package/extensions/security/skills/supply-chain.md +65 -65
  178. package/extensions/trading/PACK.md +80 -80
  179. package/extensions/trading/skills/chart-components.md +55 -55
  180. package/extensions/trading/skills/experiment-loop.md +125 -125
  181. package/extensions/trading/skills/fintech-patterns.md +47 -47
  182. package/extensions/trading/skills/indicator-library.md +58 -58
  183. package/extensions/trading/skills/quant-analysis.md +111 -111
  184. package/extensions/trading/skills/realtime-data.md +58 -58
  185. package/extensions/trading/skills/trade-logic.md +104 -104
  186. package/extensions/ui/PACK.md +130 -130
  187. package/extensions/ui/skills/a11y-audit.md +91 -91
  188. package/extensions/ui/skills/animation-patterns.md +127 -106
  189. package/extensions/ui/skills/component-patterns.md +100 -75
  190. package/extensions/ui/skills/design-decision.md +108 -108
  191. package/extensions/ui/skills/design-system.md +68 -68
  192. package/extensions/ui/skills/landing-patterns.md +155 -155
  193. package/extensions/ui/skills/palette-picker.md +173 -173
  194. package/extensions/ui/skills/react-health.md +90 -90
  195. package/extensions/ui/skills/type-system.md +125 -125
  196. package/extensions/ui/skills/web-vitals.md +153 -153
  197. package/extensions/zalo/PACK.md +145 -145
  198. package/extensions/zalo/skills/zalo-oa-mcp.md +317 -317
  199. package/extensions/zalo/skills/zalo-oa-messaging.md +429 -429
  200. package/extensions/zalo/skills/zalo-oa-setup.md +236 -236
  201. package/extensions/zalo/skills/zalo-oa-webhook.md +189 -189
  202. package/extensions/zalo/skills/zalo-personal-messaging.md +194 -194
  203. package/extensions/zalo/skills/zalo-personal-setup.md +153 -153
  204. package/extensions/zalo/skills/zalo-rate-guard.md +219 -219
  205. package/hooks/auto-format/index.cjs +48 -48
  206. package/hooks/context-watch/index.cjs +95 -68
  207. package/hooks/hooks.json +111 -111
  208. package/hooks/metrics-collector/index.cjs +86 -42
  209. package/hooks/post-session-reflect/index.cjs +189 -153
  210. package/hooks/pre-compact/index.cjs +95 -95
  211. package/hooks/run-hook.cmd +1 -1
  212. package/hooks/secrets-scan/index.cjs +100 -100
  213. package/hooks/session-start/index.cjs +71 -65
  214. package/hooks/typecheck/index.cjs +65 -65
  215. package/package.json +63 -63
  216. package/references/ui-pro-max-data/LICENSE-UI-PRO-MAX +21 -21
  217. package/references/ui-pro-max-data/charts.csv +26 -26
  218. package/references/ui-pro-max-data/colors.csv +161 -161
  219. package/references/ui-pro-max-data/styles.csv +68 -68
  220. package/references/ui-pro-max-data/typography.csv +74 -74
  221. package/references/ui-pro-max-data/ui-reasoning.csv +162 -162
  222. package/references/ui-pro-max-data/ux-guidelines.csv +99 -99
  223. package/skills/adversary/SKILL.md +283 -283
  224. package/skills/asset-creator/SKILL.md +157 -157
  225. package/skills/audit/SKILL.md +148 -2
  226. package/skills/autopsy/SKILL.md +335 -259
  227. package/skills/autopsy/references/repo-analysis-patterns.md +113 -0
  228. package/skills/ba/SKILL.md +72 -2
  229. package/skills/brainstorm/SKILL.md +342 -341
  230. package/skills/browser-pilot/SKILL.md +168 -168
  231. package/skills/constraint-check/SKILL.md +165 -165
  232. package/skills/context-engine/SKILL.md +404 -404
  233. package/skills/cook/SKILL.md +917 -834
  234. package/skills/cook/references/output-format.md +33 -0
  235. package/skills/db/SKILL.md +273 -272
  236. package/skills/debug/SKILL.md +465 -443
  237. package/skills/dependency-doctor/SKILL.md +265 -235
  238. package/skills/deploy/SKILL.md +274 -231
  239. package/skills/design/DESIGN-REFERENCE.md +365 -365
  240. package/skills/design/SKILL.md +589 -482
  241. package/skills/doc-processor/SKILL.md +254 -254
  242. package/skills/docs/SKILL.md +374 -373
  243. package/skills/docs-seeker/SKILL.md +177 -177
  244. package/skills/fix/SKILL.md +330 -308
  245. package/skills/git/SKILL.md +339 -339
  246. package/skills/graft/SKILL.md +352 -0
  247. package/skills/graft/references/challenge-framework.md +98 -0
  248. package/skills/graft/references/mode-decision.md +44 -0
  249. package/skills/hallucination-guard/SKILL.md +219 -219
  250. package/skills/incident/SKILL.md +254 -251
  251. package/skills/integrity-check/SKILL.md +169 -169
  252. package/skills/journal/SKILL.md +240 -238
  253. package/skills/launch/SKILL.md +344 -342
  254. package/skills/logic-guardian/SKILL.md +251 -251
  255. package/skills/marketing/SKILL.md +290 -245
  256. package/skills/mcp-builder/SKILL.md +425 -423
  257. package/skills/mcp-builder/references/auto-discovery-pattern.md +169 -0
  258. package/skills/neural-memory/SKILL.md +362 -362
  259. package/skills/onboard/SKILL.md +404 -403
  260. package/skills/perf/SKILL.md +346 -346
  261. package/skills/plan/SKILL.md +433 -370
  262. package/skills/plan/references/feature-map.md +84 -0
  263. package/skills/preflight/SKILL.md +415 -396
  264. package/skills/problem-solver/SKILL.md +380 -284
  265. package/skills/rescue/SKILL.md +474 -450
  266. package/skills/retro/SKILL.md +5 -1
  267. package/skills/review/SKILL.md +612 -535
  268. package/skills/review-intake/SKILL.md +249 -249
  269. package/skills/safeguard/SKILL.md +200 -200
  270. package/skills/sast/SKILL.md +190 -190
  271. package/skills/scaffold/SKILL.md +328 -286
  272. package/skills/scope-guard/SKILL.md +180 -162
  273. package/skills/scout/SKILL.md +263 -263
  274. package/skills/sentinel/SKILL.md +382 -353
  275. package/skills/sentinel-env/SKILL.md +254 -254
  276. package/skills/sequential-thinking/SKILL.md +234 -234
  277. package/skills/session-bridge/SKILL.md +543 -397
  278. package/skills/skill-forge/SKILL.md +581 -539
  279. package/skills/skill-router/{skill.md → SKILL.md} +30 -2
  280. package/skills/surgeon/SKILL.md +215 -215
  281. package/skills/team/SKILL.md +556 -514
  282. package/skills/test/SKILL.md +614 -587
  283. package/skills/trend-scout/SKILL.md +145 -145
  284. package/skills/verification/SKILL.md +326 -325
  285. package/skills/video-creator/SKILL.md +201 -201
  286. package/skills/watchdog/SKILL.md +168 -168
  287. 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
+ ```