@rune-kit/rune 2.2.0 → 2.2.2

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 (199) hide show
  1. package/README.md +72 -40
  2. package/compiler/__tests__/pack-split.test.js +145 -0
  3. package/compiler/bin/rune.js +26 -9
  4. package/compiler/doctor.js +42 -0
  5. package/compiler/emitter.js +27 -4
  6. package/compiler/parser.js +41 -3
  7. package/compiler/transformer.js +10 -6
  8. package/compiler/transforms/compliance.js +40 -0
  9. package/docs/ANTIGRAVITY-GAP-ANALYSIS.md +369 -0
  10. package/docs/ARCHITECTURE.md +332 -0
  11. package/docs/COMMUNITY-PACKS.md +109 -0
  12. package/docs/CONTRIBUTING-L4.md +215 -0
  13. package/docs/CROSS-IDE-ANALYSIS.md +164 -0
  14. package/docs/EXTENSION-TEMPLATE.md +108 -0
  15. package/docs/MESH-RULES.md +34 -0
  16. package/docs/MULTI-PLATFORM.md +804 -0
  17. package/docs/SKILL-DEPTH-AUDIT.md +191 -0
  18. package/docs/SKILL-TEMPLATE.md +72 -0
  19. package/docs/TRADE-MATRIX.md +327 -0
  20. package/docs/VERSIONING.md +91 -0
  21. package/docs/VISION.md +263 -0
  22. package/docs/assets/demo-subtitles.srt +215 -0
  23. package/docs/assets/end-card.html +276 -0
  24. package/docs/assets/mesh-diagram.html +654 -0
  25. package/docs/assets/thumbnail.html +295 -0
  26. package/docs/guides/cli.md +403 -0
  27. package/docs/guides/index.html +1346 -0
  28. package/docs/index.html +674 -0
  29. package/docs/references/claudekit-analysis.md +414 -0
  30. package/docs/references/voltagent-analysis.md +189 -0
  31. package/docs/script.js +277 -0
  32. package/docs/skills/index.html +832 -0
  33. package/docs/style.css +583 -0
  34. package/docs/video-demo-plan.md +172 -0
  35. package/extensions/ai-ml/PACK.md +38 -474
  36. package/extensions/ai-ml/skills/ai-agents.md +172 -0
  37. package/extensions/ai-ml/skills/code-sandbox.md +187 -0
  38. package/extensions/ai-ml/skills/deep-research.md +146 -0
  39. package/extensions/ai-ml/skills/embedding-search.md +66 -0
  40. package/extensions/ai-ml/skills/fine-tuning-guide.md +74 -0
  41. package/extensions/ai-ml/skills/llm-architect.md +125 -0
  42. package/extensions/ai-ml/skills/llm-integration.md +64 -0
  43. package/extensions/ai-ml/skills/prompt-patterns.md +72 -0
  44. package/extensions/ai-ml/skills/rag-patterns.md +66 -0
  45. package/extensions/ai-ml/skills/web-extraction.md +114 -0
  46. package/extensions/analytics/PACK.md +19 -484
  47. package/extensions/analytics/skills/ab-testing.md +72 -0
  48. package/extensions/analytics/skills/dashboard-patterns.md +83 -0
  49. package/extensions/analytics/skills/data-validation.md +68 -0
  50. package/extensions/analytics/skills/funnel-analysis.md +81 -0
  51. package/extensions/analytics/skills/sql-patterns.md +57 -0
  52. package/extensions/analytics/skills/statistical-analysis.md +79 -0
  53. package/extensions/analytics/skills/tracking-setup.md +71 -0
  54. package/extensions/backend/PACK.md +44 -618
  55. package/extensions/backend/skills/api-patterns.md +84 -0
  56. package/extensions/backend/skills/async-pipeline.md +193 -0
  57. package/extensions/backend/skills/auth-patterns.md +97 -0
  58. package/extensions/backend/skills/background-jobs.md +133 -0
  59. package/extensions/backend/skills/caching-patterns.md +108 -0
  60. package/extensions/backend/skills/cli-generation.md +133 -0
  61. package/extensions/backend/skills/database-patterns.md +87 -0
  62. package/extensions/backend/skills/middleware-patterns.md +104 -0
  63. package/extensions/chrome-ext/PACK.md +19 -921
  64. package/extensions/chrome-ext/skills/cws-preflight.md +143 -0
  65. package/extensions/chrome-ext/skills/cws-publish.md +104 -0
  66. package/extensions/chrome-ext/skills/ext-ai-integration.md +251 -0
  67. package/extensions/chrome-ext/skills/ext-messaging.md +139 -0
  68. package/extensions/chrome-ext/skills/ext-storage.md +133 -0
  69. package/extensions/chrome-ext/skills/mv3-scaffold.md +164 -0
  70. package/extensions/content/PACK.md +43 -335
  71. package/extensions/content/skills/blog-patterns.md +88 -0
  72. package/extensions/content/skills/cms-integration.md +131 -0
  73. package/extensions/content/skills/content-scoring.md +107 -0
  74. package/extensions/content/skills/i18n.md +83 -0
  75. package/extensions/content/skills/mdx-authoring.md +137 -0
  76. package/extensions/content/skills/reference.md +1014 -0
  77. package/extensions/content/skills/seo-patterns.md +67 -0
  78. package/extensions/content/skills/video-repurpose.md +153 -0
  79. package/extensions/devops/PACK.md +38 -457
  80. package/extensions/devops/skills/chaos-testing.md +67 -0
  81. package/extensions/devops/skills/ci-cd.md +75 -0
  82. package/extensions/devops/skills/docker.md +58 -0
  83. package/extensions/devops/skills/edge-serverless.md +163 -0
  84. package/extensions/devops/skills/infra-as-code.md +158 -0
  85. package/extensions/devops/skills/kubernetes.md +110 -0
  86. package/extensions/devops/skills/monitoring.md +57 -0
  87. package/extensions/devops/skills/server-setup.md +64 -0
  88. package/extensions/devops/skills/ssl-domain.md +42 -0
  89. package/extensions/ecommerce/PACK.md +62 -226
  90. package/extensions/ecommerce/skills/cart-system.md +79 -0
  91. package/extensions/ecommerce/skills/inventory-mgmt.md +102 -0
  92. package/extensions/ecommerce/skills/order-management.md +126 -0
  93. package/extensions/ecommerce/skills/payment-integration.md +472 -0
  94. package/extensions/ecommerce/skills/shopify-dev.md +69 -0
  95. package/extensions/ecommerce/skills/subscription-billing.md +93 -0
  96. package/extensions/ecommerce/skills/tax-compliance.md +117 -0
  97. package/extensions/gamedev/PACK.md +66 -317
  98. package/extensions/gamedev/skills/asset-pipeline.md +74 -0
  99. package/extensions/gamedev/skills/audio-system.md +129 -0
  100. package/extensions/gamedev/skills/camera-system.md +87 -0
  101. package/extensions/gamedev/skills/ecs.md +98 -0
  102. package/extensions/gamedev/skills/game-loops.md +72 -0
  103. package/extensions/gamedev/skills/input-system.md +199 -0
  104. package/extensions/gamedev/skills/multiplayer.md +180 -0
  105. package/extensions/gamedev/skills/particles.md +105 -0
  106. package/extensions/gamedev/skills/physics-engine.md +89 -0
  107. package/extensions/gamedev/skills/scene-management.md +146 -0
  108. package/extensions/gamedev/skills/threejs-patterns.md +90 -0
  109. package/extensions/gamedev/skills/webgl.md +71 -0
  110. package/extensions/mobile/PACK.md +56 -223
  111. package/extensions/mobile/skills/app-store-connect.md +152 -0
  112. package/extensions/mobile/skills/app-store-prep.md +66 -0
  113. package/extensions/mobile/skills/deep-linking.md +109 -0
  114. package/extensions/mobile/skills/flutter.md +60 -0
  115. package/extensions/mobile/skills/ios-build-pipeline.md +142 -0
  116. package/extensions/mobile/skills/native-bridge.md +66 -0
  117. package/extensions/mobile/skills/ota-updates.md +97 -0
  118. package/extensions/mobile/skills/push-notifications.md +111 -0
  119. package/extensions/mobile/skills/react-native.md +82 -0
  120. package/extensions/saas/PACK.md +26 -720
  121. package/extensions/saas/skills/billing-integration.md +121 -0
  122. package/extensions/saas/skills/feature-flags.md +130 -0
  123. package/extensions/saas/skills/multi-tenant.md +103 -0
  124. package/extensions/saas/skills/onboarding-flow.md +139 -0
  125. package/extensions/saas/skills/subscription-flow.md +95 -0
  126. package/extensions/saas/skills/team-management.md +144 -0
  127. package/extensions/security/PACK.md +10 -448
  128. package/extensions/security/skills/api-security.md +140 -0
  129. package/extensions/security/skills/compliance.md +68 -0
  130. package/extensions/security/skills/owasp-audit.md +64 -0
  131. package/extensions/security/skills/pentest-patterns.md +77 -0
  132. package/extensions/security/skills/secret-mgmt.md +65 -0
  133. package/extensions/security/skills/supply-chain.md +65 -0
  134. package/extensions/trading/PACK.md +18 -535
  135. package/extensions/trading/skills/chart-components.md +55 -0
  136. package/extensions/trading/skills/experiment-loop.md +125 -0
  137. package/extensions/trading/skills/fintech-patterns.md +47 -0
  138. package/extensions/trading/skills/indicator-library.md +58 -0
  139. package/extensions/trading/skills/quant-analysis.md +111 -0
  140. package/extensions/trading/skills/realtime-data.md +58 -0
  141. package/extensions/trading/skills/trade-logic.md +104 -0
  142. package/extensions/ui/PACK.md +36 -853
  143. package/extensions/ui/skills/a11y-audit.md +91 -0
  144. package/extensions/ui/skills/animation-patterns.md +106 -0
  145. package/extensions/ui/skills/component-patterns.md +75 -0
  146. package/extensions/ui/skills/design-decision.md +108 -0
  147. package/extensions/ui/skills/design-system.md +68 -0
  148. package/extensions/ui/skills/landing-patterns.md +155 -0
  149. package/extensions/ui/skills/palette-picker.md +173 -0
  150. package/extensions/ui/skills/react-health.md +90 -0
  151. package/extensions/ui/skills/type-system.md +125 -0
  152. package/extensions/ui/skills/web-vitals.md +153 -0
  153. package/extensions/zalo/PACK.md +117 -0
  154. package/extensions/zalo/skills/zalo-oa-mcp.md +317 -0
  155. package/extensions/zalo/skills/zalo-oa-messaging.md +429 -0
  156. package/extensions/zalo/skills/zalo-oa-setup.md +236 -0
  157. package/extensions/zalo/skills/zalo-oa-webhook.md +189 -0
  158. package/extensions/zalo/skills/zalo-personal-messaging.md +194 -0
  159. package/extensions/zalo/skills/zalo-personal-setup.md +153 -0
  160. package/extensions/zalo/skills/zalo-rate-guard.md +219 -0
  161. package/hooks/.gitkeep +0 -0
  162. package/hooks/auto-format/index.cjs +48 -0
  163. package/hooks/context-watch/index.cjs +68 -0
  164. package/hooks/hooks.json +99 -0
  165. package/hooks/metrics-collector/index.cjs +42 -0
  166. package/hooks/post-session-reflect/index.cjs +153 -0
  167. package/hooks/pre-compact/index.cjs +95 -0
  168. package/hooks/pre-tool-guard/index.cjs +68 -0
  169. package/hooks/run-hook +17 -0
  170. package/hooks/run-hook.cjs +16 -0
  171. package/hooks/run-hook.cmd +1 -0
  172. package/hooks/secrets-scan/index.cjs +100 -0
  173. package/hooks/session-start/index.cjs +65 -0
  174. package/hooks/typecheck/index.cjs +65 -0
  175. package/package.json +9 -4
  176. package/references/ui-pro-max-data/LICENSE-UI-PRO-MAX +21 -0
  177. package/references/ui-pro-max-data/charts.csv +26 -0
  178. package/references/ui-pro-max-data/colors.csv +162 -0
  179. package/references/ui-pro-max-data/styles.csv +85 -0
  180. package/references/ui-pro-max-data/typography.csv +74 -0
  181. package/references/ui-pro-max-data/ui-reasoning.csv +162 -0
  182. package/references/ui-pro-max-data/ux-guidelines.csv +100 -0
  183. package/skills/ba/SKILL.md +10 -0
  184. package/skills/brainstorm/SKILL.md +63 -1
  185. package/skills/completion-gate/SKILL.md +34 -1
  186. package/skills/context-engine/SKILL.md +13 -0
  187. package/skills/cook/SKILL.md +155 -5
  188. package/skills/debug/SKILL.md +56 -1
  189. package/skills/design/SKILL.md +11 -0
  190. package/skills/fix/SKILL.md +26 -1
  191. package/skills/mcp-builder/SKILL.md +48 -1
  192. package/skills/plan/SKILL.md +23 -6
  193. package/skills/review/SKILL.md +44 -5
  194. package/skills/review-intake/SKILL.md +17 -1
  195. package/skills/skill-forge/SKILL.md +38 -3
  196. package/skills/skill-router/SKILL.md +89 -7
  197. package/skills/team/SKILL.md +24 -1
  198. package/skills/test/SKILL.md +28 -1
  199. package/skills/verification/SKILL.md +98 -1
@@ -0,0 +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
+ ```
@@ -0,0 +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
+ ```