@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,67 +1,67 @@
1
- ---
2
- name: "seo-patterns"
3
- pack: "@rune/content"
4
- description: "JSON-LD, sitemap generation, canonical URLs, meta tags, Open Graph, Twitter Cards, robots.txt, Core Web Vitals optimization."
5
- model: sonnet
6
- tools: [Read, Edit, Write, Grep, Glob, Bash]
7
- ---
8
-
9
- # seo-patterns
10
-
11
- SEO patterns — structured data (JSON-LD), sitemap generation, canonical URLs, meta tags, Open Graph, Twitter Cards, robots.txt, Core Web Vitals optimization.
12
-
13
- #### Workflow
14
-
15
- **Step 1 — Detect SEO implementation**
16
- Use Grep to find SEO code: `generateMetadata`, `Head`, `next-seo`, `json-ld`, `sitemap`, `robots.txt`, `og:title`, `twitter:card`. Read the metadata configuration and sitemap generation to understand: current meta tag strategy, structured data presence, and sitemap coverage.
17
-
18
- **Step 2 — Audit SEO completeness**
19
- Check for: missing or duplicate `<title>` tags, no meta description (or same description on every page), no Open Graph tags (poor social sharing), missing canonical URL (duplicate content risk), no JSON-LD structured data (no rich snippets in search), sitemap not listing all public pages, robots.txt blocking important paths, missing `alt` text on images, and no Core Web Vitals monitoring (LCP, CLS, INP).
20
-
21
- **Step 3 — Emit SEO patterns**
22
- Emit: metadata generator with per-page overrides, JSON-LD templates (Article, Product, FAQ, BreadcrumbList), dynamic sitemap generator, canonical URL helper, and Core Web Vitals reporter.
23
-
24
- #### Example
25
-
26
- ```typescript
27
- // Next.js App Router — metadata + JSON-LD + sitemap
28
- import { type Metadata } from 'next';
29
-
30
- // Reusable metadata generator
31
- function createMetadata({ title, description, path, image, type = 'website' }: {
32
- title: string; description: string; path: string; image?: string; type?: string;
33
- }): Metadata {
34
- const url = `${process.env.SITE_URL}${path}`;
35
- return {
36
- title, description,
37
- alternates: { canonical: url },
38
- openGraph: { title, description, url, type, images: image ? [{ url: image, width: 1200, height: 630 }] : [] },
39
- twitter: { card: 'summary_large_image', title, description, images: image ? [image] : [] },
40
- };
41
- }
42
-
43
- // JSON-LD for blog posts
44
- function ArticleJsonLd({ post }: { post: Post }) {
45
- const jsonLd = {
46
- '@context': 'https://schema.org',
47
- '@type': 'Article',
48
- headline: post.title,
49
- datePublished: post.publishedAt,
50
- dateModified: post.updatedAt || post.publishedAt,
51
- author: { '@type': 'Person', name: post.author.name },
52
- image: post.ogImage,
53
- description: post.excerpt,
54
- };
55
- return <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />;
56
- }
57
-
58
- // Dynamic sitemap — app/sitemap.ts
59
- export default async function sitemap() {
60
- const posts = await getAllPublishedPosts();
61
- const staticPages = ['', '/about', '/blog', '/contact'];
62
- return [
63
- ...staticPages.map(path => ({ url: `${process.env.SITE_URL}${path}`, lastModified: new Date(), changeFrequency: 'monthly' as const })),
64
- ...posts.map(post => ({ url: `${process.env.SITE_URL}/blog/${post.slug}`, lastModified: new Date(post.updatedAt || post.publishedAt), changeFrequency: 'weekly' as const })),
65
- ];
66
- }
67
- ```
1
+ ---
2
+ name: "seo-patterns"
3
+ pack: "@rune/content"
4
+ description: "JSON-LD, sitemap generation, canonical URLs, meta tags, Open Graph, Twitter Cards, robots.txt, Core Web Vitals optimization."
5
+ model: sonnet
6
+ tools: [Read, Edit, Write, Grep, Glob, Bash]
7
+ ---
8
+
9
+ # seo-patterns
10
+
11
+ SEO patterns — structured data (JSON-LD), sitemap generation, canonical URLs, meta tags, Open Graph, Twitter Cards, robots.txt, Core Web Vitals optimization.
12
+
13
+ #### Workflow
14
+
15
+ **Step 1 — Detect SEO implementation**
16
+ Use Grep to find SEO code: `generateMetadata`, `Head`, `next-seo`, `json-ld`, `sitemap`, `robots.txt`, `og:title`, `twitter:card`. Read the metadata configuration and sitemap generation to understand: current meta tag strategy, structured data presence, and sitemap coverage.
17
+
18
+ **Step 2 — Audit SEO completeness**
19
+ Check for: missing or duplicate `<title>` tags, no meta description (or same description on every page), no Open Graph tags (poor social sharing), missing canonical URL (duplicate content risk), no JSON-LD structured data (no rich snippets in search), sitemap not listing all public pages, robots.txt blocking important paths, missing `alt` text on images, and no Core Web Vitals monitoring (LCP, CLS, INP).
20
+
21
+ **Step 3 — Emit SEO patterns**
22
+ Emit: metadata generator with per-page overrides, JSON-LD templates (Article, Product, FAQ, BreadcrumbList), dynamic sitemap generator, canonical URL helper, and Core Web Vitals reporter.
23
+
24
+ #### Example
25
+
26
+ ```typescript
27
+ // Next.js App Router — metadata + JSON-LD + sitemap
28
+ import { type Metadata } from 'next';
29
+
30
+ // Reusable metadata generator
31
+ function createMetadata({ title, description, path, image, type = 'website' }: {
32
+ title: string; description: string; path: string; image?: string; type?: string;
33
+ }): Metadata {
34
+ const url = `${process.env.SITE_URL}${path}`;
35
+ return {
36
+ title, description,
37
+ alternates: { canonical: url },
38
+ openGraph: { title, description, url, type, images: image ? [{ url: image, width: 1200, height: 630 }] : [] },
39
+ twitter: { card: 'summary_large_image', title, description, images: image ? [image] : [] },
40
+ };
41
+ }
42
+
43
+ // JSON-LD for blog posts
44
+ function ArticleJsonLd({ post }: { post: Post }) {
45
+ const jsonLd = {
46
+ '@context': 'https://schema.org',
47
+ '@type': 'Article',
48
+ headline: post.title,
49
+ datePublished: post.publishedAt,
50
+ dateModified: post.updatedAt || post.publishedAt,
51
+ author: { '@type': 'Person', name: post.author.name },
52
+ image: post.ogImage,
53
+ description: post.excerpt,
54
+ };
55
+ return <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />;
56
+ }
57
+
58
+ // Dynamic sitemap — app/sitemap.ts
59
+ export default async function sitemap() {
60
+ const posts = await getAllPublishedPosts();
61
+ const staticPages = ['', '/about', '/blog', '/contact'];
62
+ return [
63
+ ...staticPages.map(path => ({ url: `${process.env.SITE_URL}${path}`, lastModified: new Date(), changeFrequency: 'monthly' as const })),
64
+ ...posts.map(post => ({ url: `${process.env.SITE_URL}/blog/${post.slug}`, lastModified: new Date(post.updatedAt || post.publishedAt), changeFrequency: 'weekly' as const })),
65
+ ];
66
+ }
67
+ ```
@@ -1,153 +1,153 @@
1
- ---
2
- name: "video-repurpose"
3
- pack: "@rune/content"
4
- description: "Long-form video → short-form clip pipeline. Transcribe, identify viral segments, reformat to vertical (9:16), add animated captions, insert B-roll."
5
- model: sonnet
6
- tools: [Read, Edit, Write, Grep, Glob, Bash]
7
- ---
8
-
9
- # video-repurpose
10
-
11
- Long-form video → short-form clip pipeline. Transcribe, identify viral segments, reformat to vertical (9:16), add animated captions, insert B-roll. Covers the full pipeline from YouTube URL or file upload to platform-ready export.
12
-
13
- #### Workflow
14
-
15
- **Step 1 — Ingest source video**
16
- Two paths:
17
- - URL: Use `yt-dlp` to download (with exponential backoff, browser-mimicking headers for anti-bot):
18
- ```bash
19
- yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" \
20
- --merge-output-format mp4 \
21
- --retry-sleep 5 --retries 3 \
22
- -o "source_%(id)s.%(ext)s" "<url>"
23
- ```
24
- - File upload: Validate format (mp4/mov/webm), check duration (warn if > 2 hours — processing time scales non-linearly)
25
-
26
- Cache key: `sha256(source_type|processing_mode|url_or_hash)` — avoid reprocessing same video.
27
-
28
- **Step 2 — Transcribe with word-level timestamps**
29
- Use AssemblyAI (97%+ accuracy, 20+ languages) or Whisper (self-hosted):
30
- ```typescript
31
- interface WordTimestamp {
32
- text: string;
33
- start: number; // milliseconds
34
- end: number;
35
- confidence: number;
36
- }
37
-
38
- interface Transcript {
39
- words: WordTimestamp[];
40
- text: string;
41
- language: string;
42
- duration: number;
43
- }
44
- ```
45
- Sharp edge: Whisper `large-v3` halluccinates on silence — preprocess with silence detection and split audio at gaps > 2s.
46
-
47
- **Step 3 — Identify viral segments via LLM**
48
- Send transcript to LLM with structured output schema:
49
- ```typescript
50
- interface ViralSegment {
51
- startMs: number;
52
- endMs: number;
53
- hookType: 'question' | 'statement' | 'statistic' | 'story' | 'contrast';
54
- title: string;
55
- score: ViralityScore;
56
- bRollOpportunities: Array<{ timestampMs: number; query: string }>;
57
- }
58
-
59
- interface ViralityScore {
60
- hookStrength: number; // 0-25: first 3 seconds grab attention?
61
- engagement: number; // 0-25: keeps viewer watching?
62
- value: number; // 0-25: teaches or entertains?
63
- shareability: number; // 0-25: would viewer share this?
64
- total: number; // 0-100
65
- }
66
- ```
67
-
68
- Filters:
69
- - Discard segments < 5 seconds or < 3 words
70
- - Recalculate total if subscores don't add up (LLM math errors)
71
- - Sort by total score, return top 3-7 segments per video
72
-
73
- **Step 4 — Reformat to vertical (9:16) with face-centered crop**
74
- Triple-fallback face detection for crop anchor:
75
- 1. **MediaPipe** (fastest, most accurate for single face)
76
- 2. **OpenCV DNN** (good for multiple faces)
77
- 3. **Haar cascade** (last resort, highest false positive rate)
78
-
79
- Temporal consistency: filter out detection jumps > 20% frame width between consecutive frames (false positives). Smooth crop position with rolling average (5 frames) to avoid jitter.
80
-
81
- Fast path: if clip needs no captions or crop changes, use ffmpeg stream copy (no re-encoding) for 10x speed.
82
-
83
- **Step 5 — Add animated captions**
84
- Word-synchronized captions from transcript timestamps. Template system:
85
- | Template | Style | Use Case |
86
- |----------|-------|----------|
87
- | `bold-highlight` | Active word in accent color, bold | Educational content |
88
- | `karaoke` | Word-by-word reveal, green highlight | Motivational, podcast |
89
- | `subtitle` | Bottom-center, semi-transparent bg | Professional, interview |
90
- | `pop` | Scale animation on each word | Energetic, entertainment |
91
-
92
- Caption rendering: pre-render text as image overlays (MoviePy TextClip or Pillow), composite onto video at word timestamps.
93
-
94
- **Step 6 — Insert B-roll (optional)**
95
- Search stock footage API (Pexels) for AI-identified insertion points:
96
- ```typescript
97
- async function findBRoll(query: string, orientation: 'portrait' | 'landscape'): Promise<StockClip> {
98
- const results = await pexels.videos.search({ query, orientation, per_page: 5 });
99
- // Score by: duration match, HD quality, relevance
100
- return results.videos
101
- .map(v => ({ ...v, score: scoreBRoll(v, targetDuration) }))
102
- .sort((a, b) => b.score - a.score)[0];
103
- }
104
- ```
105
- Composite with crossfade transition (0.5s) at identified timestamps.
106
-
107
- **Step 7 — Export with platform presets**
108
- | Platform | Aspect | Max Duration | Resolution | Codec |
109
- |----------|--------|-------------|------------|-------|
110
- | TikTok | 9:16 | 10 min | 1080×1920 | H.264 |
111
- | Instagram Reels | 9:16 | 90s | 1080×1920 | H.264 |
112
- | YouTube Shorts | 9:16 | 60s | 1080×1920 | H.264 |
113
- | Twitter/X | 16:9 or 1:1 | 2m20s | 1280×720 | H.264 |
114
-
115
- #### Example
116
-
117
- ```typescript
118
- // Complete pipeline orchestration
119
- async function repurposeVideo(sourceUrl: string, options: RepurposeOptions): Promise<Clip[]> {
120
- // Step 1: Ingest
121
- const cacheKey = sha256(`url|${options.mode}|${sourceUrl}`);
122
- const cached = await cache.get(cacheKey);
123
- if (cached) return cached;
124
-
125
- const sourcePath = await downloadVideo(sourceUrl);
126
-
127
- // Step 2: Transcribe
128
- const transcript = await transcribe(sourcePath, { model: options.mode === 'fast' ? 'nano' : 'default' });
129
-
130
- // Step 3: Identify segments
131
- const segments = await identifyViralSegments(transcript, {
132
- minDuration: 10_000,
133
- maxDuration: 60_000,
134
- maxSegments: 7,
135
- });
136
-
137
- // Step 4-6: Process each segment in parallel
138
- const clips = await Promise.all(
139
- segments.map(async (segment) => {
140
- const raw = await extractSegment(sourcePath, segment.startMs, segment.endMs);
141
- const vertical = await cropToVertical(raw, { faceDetection: true });
142
- const captioned = await addCaptions(vertical, transcript.words, segment, options.captionTemplate);
143
- const withBRoll = options.bRoll
144
- ? await insertBRoll(captioned, segment.bRollOpportunities)
145
- : captioned;
146
- return { ...segment, outputPath: withBRoll };
147
- })
148
- );
149
-
150
- await cache.set(cacheKey, clips);
151
- return clips;
152
- }
153
- ```
1
+ ---
2
+ name: "video-repurpose"
3
+ pack: "@rune/content"
4
+ description: "Long-form video → short-form clip pipeline. Transcribe, identify viral segments, reformat to vertical (9:16), add animated captions, insert B-roll."
5
+ model: sonnet
6
+ tools: [Read, Edit, Write, Grep, Glob, Bash]
7
+ ---
8
+
9
+ # video-repurpose
10
+
11
+ Long-form video → short-form clip pipeline. Transcribe, identify viral segments, reformat to vertical (9:16), add animated captions, insert B-roll. Covers the full pipeline from YouTube URL or file upload to platform-ready export.
12
+
13
+ #### Workflow
14
+
15
+ **Step 1 — Ingest source video**
16
+ Two paths:
17
+ - URL: Use `yt-dlp` to download (with exponential backoff, browser-mimicking headers for anti-bot):
18
+ ```bash
19
+ yt-dlp -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" \
20
+ --merge-output-format mp4 \
21
+ --retry-sleep 5 --retries 3 \
22
+ -o "source_%(id)s.%(ext)s" "<url>"
23
+ ```
24
+ - File upload: Validate format (mp4/mov/webm), check duration (warn if > 2 hours — processing time scales non-linearly)
25
+
26
+ Cache key: `sha256(source_type|processing_mode|url_or_hash)` — avoid reprocessing same video.
27
+
28
+ **Step 2 — Transcribe with word-level timestamps**
29
+ Use AssemblyAI (97%+ accuracy, 20+ languages) or Whisper (self-hosted):
30
+ ```typescript
31
+ interface WordTimestamp {
32
+ text: string;
33
+ start: number; // milliseconds
34
+ end: number;
35
+ confidence: number;
36
+ }
37
+
38
+ interface Transcript {
39
+ words: WordTimestamp[];
40
+ text: string;
41
+ language: string;
42
+ duration: number;
43
+ }
44
+ ```
45
+ Sharp edge: Whisper `large-v3` halluccinates on silence — preprocess with silence detection and split audio at gaps > 2s.
46
+
47
+ **Step 3 — Identify viral segments via LLM**
48
+ Send transcript to LLM with structured output schema:
49
+ ```typescript
50
+ interface ViralSegment {
51
+ startMs: number;
52
+ endMs: number;
53
+ hookType: 'question' | 'statement' | 'statistic' | 'story' | 'contrast';
54
+ title: string;
55
+ score: ViralityScore;
56
+ bRollOpportunities: Array<{ timestampMs: number; query: string }>;
57
+ }
58
+
59
+ interface ViralityScore {
60
+ hookStrength: number; // 0-25: first 3 seconds grab attention?
61
+ engagement: number; // 0-25: keeps viewer watching?
62
+ value: number; // 0-25: teaches or entertains?
63
+ shareability: number; // 0-25: would viewer share this?
64
+ total: number; // 0-100
65
+ }
66
+ ```
67
+
68
+ Filters:
69
+ - Discard segments < 5 seconds or < 3 words
70
+ - Recalculate total if subscores don't add up (LLM math errors)
71
+ - Sort by total score, return top 3-7 segments per video
72
+
73
+ **Step 4 — Reformat to vertical (9:16) with face-centered crop**
74
+ Triple-fallback face detection for crop anchor:
75
+ 1. **MediaPipe** (fastest, most accurate for single face)
76
+ 2. **OpenCV DNN** (good for multiple faces)
77
+ 3. **Haar cascade** (last resort, highest false positive rate)
78
+
79
+ Temporal consistency: filter out detection jumps > 20% frame width between consecutive frames (false positives). Smooth crop position with rolling average (5 frames) to avoid jitter.
80
+
81
+ Fast path: if clip needs no captions or crop changes, use ffmpeg stream copy (no re-encoding) for 10x speed.
82
+
83
+ **Step 5 — Add animated captions**
84
+ Word-synchronized captions from transcript timestamps. Template system:
85
+ | Template | Style | Use Case |
86
+ |----------|-------|----------|
87
+ | `bold-highlight` | Active word in accent color, bold | Educational content |
88
+ | `karaoke` | Word-by-word reveal, green highlight | Motivational, podcast |
89
+ | `subtitle` | Bottom-center, semi-transparent bg | Professional, interview |
90
+ | `pop` | Scale animation on each word | Energetic, entertainment |
91
+
92
+ Caption rendering: pre-render text as image overlays (MoviePy TextClip or Pillow), composite onto video at word timestamps.
93
+
94
+ **Step 6 — Insert B-roll (optional)**
95
+ Search stock footage API (Pexels) for AI-identified insertion points:
96
+ ```typescript
97
+ async function findBRoll(query: string, orientation: 'portrait' | 'landscape'): Promise<StockClip> {
98
+ const results = await pexels.videos.search({ query, orientation, per_page: 5 });
99
+ // Score by: duration match, HD quality, relevance
100
+ return results.videos
101
+ .map(v => ({ ...v, score: scoreBRoll(v, targetDuration) }))
102
+ .sort((a, b) => b.score - a.score)[0];
103
+ }
104
+ ```
105
+ Composite with crossfade transition (0.5s) at identified timestamps.
106
+
107
+ **Step 7 — Export with platform presets**
108
+ | Platform | Aspect | Max Duration | Resolution | Codec |
109
+ |----------|--------|-------------|------------|-------|
110
+ | TikTok | 9:16 | 10 min | 1080×1920 | H.264 |
111
+ | Instagram Reels | 9:16 | 90s | 1080×1920 | H.264 |
112
+ | YouTube Shorts | 9:16 | 60s | 1080×1920 | H.264 |
113
+ | Twitter/X | 16:9 or 1:1 | 2m20s | 1280×720 | H.264 |
114
+
115
+ #### Example
116
+
117
+ ```typescript
118
+ // Complete pipeline orchestration
119
+ async function repurposeVideo(sourceUrl: string, options: RepurposeOptions): Promise<Clip[]> {
120
+ // Step 1: Ingest
121
+ const cacheKey = sha256(`url|${options.mode}|${sourceUrl}`);
122
+ const cached = await cache.get(cacheKey);
123
+ if (cached) return cached;
124
+
125
+ const sourcePath = await downloadVideo(sourceUrl);
126
+
127
+ // Step 2: Transcribe
128
+ const transcript = await transcribe(sourcePath, { model: options.mode === 'fast' ? 'nano' : 'default' });
129
+
130
+ // Step 3: Identify segments
131
+ const segments = await identifyViralSegments(transcript, {
132
+ minDuration: 10_000,
133
+ maxDuration: 60_000,
134
+ maxSegments: 7,
135
+ });
136
+
137
+ // Step 4-6: Process each segment in parallel
138
+ const clips = await Promise.all(
139
+ segments.map(async (segment) => {
140
+ const raw = await extractSegment(sourcePath, segment.startMs, segment.endMs);
141
+ const vertical = await cropToVertical(raw, { faceDetection: true });
142
+ const captioned = await addCaptions(vertical, transcript.words, segment, options.captionTemplate);
143
+ const withBRoll = options.bRoll
144
+ ? await insertBRoll(captioned, segment.bRollOpportunities)
145
+ : captioned;
146
+ return { ...segment, outputPath: withBRoll };
147
+ })
148
+ );
149
+
150
+ await cache.set(cacheKey, clips);
151
+ return clips;
152
+ }
153
+ ```
@@ -1,101 +1,101 @@
1
- ---
2
- name: "@rune/devops"
3
- description: DevOps patterns — Docker, CI/CD pipelines, monitoring setup, server configuration, SSL/domain management, edge/serverless deployment, and infrastructure-as-code.
4
- metadata:
5
- author: runedev
6
- version: "0.3.0"
7
- layer: L4
8
- price: "$12"
9
- target: DevOps engineers
10
- format: split
11
- ---
12
-
13
- # @rune/devops
14
-
15
- ## Purpose
16
-
17
- Infrastructure work done without patterns leads to snowflake configs: Dockerfiles that rebuild entire node_modules on every code change, CI pipelines that run 40 minutes because nothing is cached, servers with no monitoring until the first outage, SSL certificates that expire silently, serverless functions that leak state across requests, and infrastructure provisioned by hand that can't be reproduced. This pack provides battle-tested patterns for containerization, continuous delivery, production observability, server hardening, edge/serverless deployment, and infrastructure-as-code — each skill detects what you have, audits it against best practices, and emits the fixed config.
18
-
19
- ## Triggers
20
-
21
- - Auto-trigger: when `Dockerfile`, `docker-compose.yml`, `.github/workflows/`, `.gitlab-ci.yml`, `nginx.conf`, `Caddyfile` detected in project
22
- - `/rune docker` — audit and optimize container configuration
23
- - `/rune ci-cd` — audit and optimize CI/CD pipeline
24
- - `/rune monitoring` — set up or audit production monitoring
25
- - `/rune server-setup` — audit server configuration
26
- - `/rune ssl-domain` — manage SSL certificates and domain config
27
- - `/rune edge-serverless` — audit and configure edge/serverless deployment
28
- - `/rune infra-as-code` — audit and structure Terraform/Pulumi/CDK infrastructure
29
- - `/rune chaos-testing` — design and run resilience experiments
30
- - `/rune kubernetes` — audit and emit production-ready Kubernetes manifests
31
- - Called by `deploy` (L2) when deployment infrastructure needs setup
32
- - Called by `launch` (L1) when preparing production environment
33
-
34
- ## Skills Included
35
-
36
- | Skill | Model | Description |
37
- |-------|-------|-------------|
38
- | [docker](skills/docker.md) | sonnet | Dockerfile and docker-compose patterns — multi-stage builds, layer optimization, security hardening, development vs production configs. |
39
- | [ci-cd](skills/ci-cd.md) | sonnet | CI/CD pipeline configuration — GitHub Actions, GitLab CI, build matrices, test parallelization, deployment gates, semantic release. |
40
- | [monitoring](skills/monitoring.md) | sonnet | Production monitoring setup — Prometheus, Grafana, alerting rules, SLO/SLI definitions, log aggregation, distributed tracing. |
41
- | [server-setup](skills/server-setup.md) | sonnet | Server configuration — Nginx/Caddy reverse proxy, systemd services, firewall rules, SSH hardening, automatic updates. |
42
- | [ssl-domain](skills/ssl-domain.md) | sonnet | SSL certificate management and domain configuration — Let's Encrypt automation, DNS records, CDN setup, redirect rules. |
43
- | [chaos-testing](skills/chaos-testing.md) | sonnet | Resilience testing — inject controlled failures to verify circuit breakers, retry logic, graceful degradation, and recovery procedures. |
44
- | [kubernetes](skills/kubernetes.md) | sonnet | Kubernetes resource patterns — Deployments, Services, ConfigMaps, resource limits, health probes, HPA, network policies, and RBAC. |
45
- | [edge-serverless](skills/edge-serverless.md) | sonnet | Edge and serverless deployment patterns — Cloudflare Workers, Vercel Edge Functions, AWS Lambda, Deno Deploy. Runtime constraints, cold starts, streaming, state management. |
46
- | [infra-as-code](skills/infra-as-code.md) | sonnet | Infrastructure-as-Code patterns — Terraform, Pulumi, and CDK. State management, module organization, secret handling, drift detection, CI/CD integration. |
47
-
48
- ## Tech Stack Support
49
-
50
- | Platform | Container | CI/CD | Reverse Proxy |
51
- |----------|-----------|-------|---------------|
52
- | AWS (EC2/ECS/Lambda) | Docker | GitHub Actions | Nginx / ALB |
53
- | GCP (Cloud Run/GKE) | Docker | Cloud Build / GitHub Actions | Caddy / Cloud LB |
54
- | Vercel | Serverless | Built-in | Built-in |
55
- | DigitalOcean (Droplet/App Platform) | Docker | GitHub Actions | Nginx / Caddy |
56
- | VPS (any) | Docker | GitHub Actions (self-hosted) | Nginx / Caddy |
57
- | Cloudflare Workers | Wrangler | GitHub Actions / Wrangler deploy | Workers Routes |
58
- | Deno Deploy | Deno runtime | deployctl / GitHub Actions | Built-in |
59
- | Fly.io | Docker/Firecracker | flyctl / GitHub Actions | Fly Proxy |
60
-
61
- ## Connections
62
-
63
- ```
64
- Calls → verification (L3): validate configs syntax and test infrastructure changes
65
- Calls → sentinel (L2): security audit on server and container configuration
66
- Calls → sentinel-env (L3): edge-serverless validates runtime prerequisites before deployment
67
- Called By ← deploy (L2): deployment infrastructure setup
68
- Called By ← launch (L1): production environment preparation
69
- Called By ← cook (L1): when DevOps task detected
70
- Called By ← scaffold (L1): infra-as-code generates infrastructure alongside project bootstrap
71
- edge-serverless → docker: containerized apps may deploy to serverless container platforms (Cloud Run, Fly.io)
72
- infra-as-code → ci-cd: IaC changes flow through CI/CD with plan-and-apply pipeline
73
- infra-as-code → monitoring: IaC provisions monitoring infrastructure (alerts, dashboards)
74
- ```
75
-
76
- ## Sharp Edges
77
-
78
- | Failure Mode | Severity | Mitigation |
79
- |---|---|---|
80
- | Docker multi-stage build references wrong stage name causing empty final image | HIGH | Validate `COPY --from=` stage names match defined stages; emit build test command |
81
- | CI caching key uses lockfile that doesn't exist (e.g., `pnpm-lock.yaml` when using npm) | HIGH | Detect actual package manager from lockfile presence before emitting cache config |
82
- | Monitoring metrics have high cardinality labels (user ID as label) causing Prometheus OOM | CRITICAL | Constrain label values to bounded sets (method, route, status) — never use IDs as labels |
83
- | SSH hardening locks out user (key-only auth before key is added) | CRITICAL | Emit config change AND key setup in correct order; include rollback instructions |
84
- | SSL certificate renewal fails silently after initial setup | HIGH | Emit renewal test command (`certbot renew --dry-run`) and cron verification |
85
- | Nginx config syntax error takes down production proxy | HIGH | Always emit `nginx -t` test command before reload; suggest blue-green proxy config |
86
-
87
- ## Done When
88
-
89
- - Dockerfile emits multi-stage, non-root, health-checked, layer-optimized build
90
- - CI/CD pipeline has caching, parallelization, deployment gates, and status checks
91
- - Monitoring covers RED metrics, structured logging, and SLO-based alerting
92
- - Server hardened: key-only SSH, firewall, security headers, rate limiting
93
- - SSL automated with renewal verification
94
- - Edge/serverless config audited: no anti-patterns (floating promises, global state, unbounded buffering), correct platform bindings, streaming patterns applied
95
- - IaC structured: remote state with locking, modular layout, environment separation, CI/CD pipeline for plan/apply, `prevent_destroy` on critical resources
96
- - All emitted configs tested with syntax validation commands
97
- - Structured report emitted for each skill invoked
98
-
99
- ## Cost Profile
100
-
101
- ~16,000–28,000 tokens per full pack run (all 9 skills). Individual skill: ~2,000–4,500 tokens. Sonnet default. Use haiku for config detection scans; escalate to sonnet for config generation and security audit.
1
+ ---
2
+ name: "@rune/devops"
3
+ description: DevOps patterns — Docker, CI/CD pipelines, monitoring setup, server configuration, SSL/domain management, edge/serverless deployment, and infrastructure-as-code.
4
+ metadata:
5
+ author: runedev
6
+ version: "0.3.0"
7
+ layer: L4
8
+ price: "$12"
9
+ target: DevOps engineers
10
+ format: split
11
+ ---
12
+
13
+ # @rune/devops
14
+
15
+ ## Purpose
16
+
17
+ Infrastructure work done without patterns leads to snowflake configs: Dockerfiles that rebuild entire node_modules on every code change, CI pipelines that run 40 minutes because nothing is cached, servers with no monitoring until the first outage, SSL certificates that expire silently, serverless functions that leak state across requests, and infrastructure provisioned by hand that can't be reproduced. This pack provides battle-tested patterns for containerization, continuous delivery, production observability, server hardening, edge/serverless deployment, and infrastructure-as-code — each skill detects what you have, audits it against best practices, and emits the fixed config.
18
+
19
+ ## Triggers
20
+
21
+ - Auto-trigger: when `Dockerfile`, `docker-compose.yml`, `.github/workflows/`, `.gitlab-ci.yml`, `nginx.conf`, `Caddyfile` detected in project
22
+ - `/rune docker` — audit and optimize container configuration
23
+ - `/rune ci-cd` — audit and optimize CI/CD pipeline
24
+ - `/rune monitoring` — set up or audit production monitoring
25
+ - `/rune server-setup` — audit server configuration
26
+ - `/rune ssl-domain` — manage SSL certificates and domain config
27
+ - `/rune edge-serverless` — audit and configure edge/serverless deployment
28
+ - `/rune infra-as-code` — audit and structure Terraform/Pulumi/CDK infrastructure
29
+ - `/rune chaos-testing` — design and run resilience experiments
30
+ - `/rune kubernetes` — audit and emit production-ready Kubernetes manifests
31
+ - Called by `deploy` (L2) when deployment infrastructure needs setup
32
+ - Called by `launch` (L1) when preparing production environment
33
+
34
+ ## Skills Included
35
+
36
+ | Skill | Model | Description |
37
+ |-------|-------|-------------|
38
+ | [docker](skills/docker.md) | sonnet | Dockerfile and docker-compose patterns — multi-stage builds, layer optimization, security hardening, development vs production configs. |
39
+ | [ci-cd](skills/ci-cd.md) | sonnet | CI/CD pipeline configuration — GitHub Actions, GitLab CI, build matrices, test parallelization, deployment gates, semantic release. |
40
+ | [monitoring](skills/monitoring.md) | sonnet | Production monitoring setup — Prometheus, Grafana, alerting rules, SLO/SLI definitions, log aggregation, distributed tracing. |
41
+ | [server-setup](skills/server-setup.md) | sonnet | Server configuration — Nginx/Caddy reverse proxy, systemd services, firewall rules, SSH hardening, automatic updates. |
42
+ | [ssl-domain](skills/ssl-domain.md) | sonnet | SSL certificate management and domain configuration — Let's Encrypt automation, DNS records, CDN setup, redirect rules. |
43
+ | [chaos-testing](skills/chaos-testing.md) | sonnet | Resilience testing — inject controlled failures to verify circuit breakers, retry logic, graceful degradation, and recovery procedures. |
44
+ | [kubernetes](skills/kubernetes.md) | sonnet | Kubernetes resource patterns — Deployments, Services, ConfigMaps, resource limits, health probes, HPA, network policies, and RBAC. |
45
+ | [edge-serverless](skills/edge-serverless.md) | sonnet | Edge and serverless deployment patterns — Cloudflare Workers, Vercel Edge Functions, AWS Lambda, Deno Deploy. Runtime constraints, cold starts, streaming, state management. |
46
+ | [infra-as-code](skills/infra-as-code.md) | sonnet | Infrastructure-as-Code patterns — Terraform, Pulumi, and CDK. State management, module organization, secret handling, drift detection, CI/CD integration. |
47
+
48
+ ## Tech Stack Support
49
+
50
+ | Platform | Container | CI/CD | Reverse Proxy |
51
+ |----------|-----------|-------|---------------|
52
+ | AWS (EC2/ECS/Lambda) | Docker | GitHub Actions | Nginx / ALB |
53
+ | GCP (Cloud Run/GKE) | Docker | Cloud Build / GitHub Actions | Caddy / Cloud LB |
54
+ | Vercel | Serverless | Built-in | Built-in |
55
+ | DigitalOcean (Droplet/App Platform) | Docker | GitHub Actions | Nginx / Caddy |
56
+ | VPS (any) | Docker | GitHub Actions (self-hosted) | Nginx / Caddy |
57
+ | Cloudflare Workers | Wrangler | GitHub Actions / Wrangler deploy | Workers Routes |
58
+ | Deno Deploy | Deno runtime | deployctl / GitHub Actions | Built-in |
59
+ | Fly.io | Docker/Firecracker | flyctl / GitHub Actions | Fly Proxy |
60
+
61
+ ## Connections
62
+
63
+ ```
64
+ Calls → verification (L3): validate configs syntax and test infrastructure changes
65
+ Calls → sentinel (L2): security audit on server and container configuration
66
+ Calls → sentinel-env (L3): edge-serverless validates runtime prerequisites before deployment
67
+ Called By ← deploy (L2): deployment infrastructure setup
68
+ Called By ← launch (L1): production environment preparation
69
+ Called By ← cook (L1): when DevOps task detected
70
+ Called By ← scaffold (L1): infra-as-code generates infrastructure alongside project bootstrap
71
+ edge-serverless → docker: containerized apps may deploy to serverless container platforms (Cloud Run, Fly.io)
72
+ infra-as-code → ci-cd: IaC changes flow through CI/CD with plan-and-apply pipeline
73
+ infra-as-code → monitoring: IaC provisions monitoring infrastructure (alerts, dashboards)
74
+ ```
75
+
76
+ ## Sharp Edges
77
+
78
+ | Failure Mode | Severity | Mitigation |
79
+ |---|---|---|
80
+ | Docker multi-stage build references wrong stage name causing empty final image | HIGH | Validate `COPY --from=` stage names match defined stages; emit build test command |
81
+ | CI caching key uses lockfile that doesn't exist (e.g., `pnpm-lock.yaml` when using npm) | HIGH | Detect actual package manager from lockfile presence before emitting cache config |
82
+ | Monitoring metrics have high cardinality labels (user ID as label) causing Prometheus OOM | CRITICAL | Constrain label values to bounded sets (method, route, status) — never use IDs as labels |
83
+ | SSH hardening locks out user (key-only auth before key is added) | CRITICAL | Emit config change AND key setup in correct order; include rollback instructions |
84
+ | SSL certificate renewal fails silently after initial setup | HIGH | Emit renewal test command (`certbot renew --dry-run`) and cron verification |
85
+ | Nginx config syntax error takes down production proxy | HIGH | Always emit `nginx -t` test command before reload; suggest blue-green proxy config |
86
+
87
+ ## Done When
88
+
89
+ - Dockerfile emits multi-stage, non-root, health-checked, layer-optimized build
90
+ - CI/CD pipeline has caching, parallelization, deployment gates, and status checks
91
+ - Monitoring covers RED metrics, structured logging, and SLO-based alerting
92
+ - Server hardened: key-only SSH, firewall, security headers, rate limiting
93
+ - SSL automated with renewal verification
94
+ - Edge/serverless config audited: no anti-patterns (floating promises, global state, unbounded buffering), correct platform bindings, streaming patterns applied
95
+ - IaC structured: remote state with locking, modular layout, environment separation, CI/CD pipeline for plan/apply, `prevent_destroy` on critical resources
96
+ - All emitted configs tested with syntax validation commands
97
+ - Structured report emitted for each skill invoked
98
+
99
+ ## Cost Profile
100
+
101
+ ~16,000–28,000 tokens per full pack run (all 9 skills). Individual skill: ~2,000–4,500 tokens. Sonnet default. Use haiku for config detection scans; escalate to sonnet for config generation and security audit.