@rune-kit/rune 2.2.6 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +395 -389
  2. package/compiler/__tests__/tier-override.test.js +158 -0
  3. package/compiler/adapters/antigravity.js +3 -8
  4. package/compiler/adapters/codex.js +3 -8
  5. package/compiler/adapters/cursor.js +3 -8
  6. package/compiler/adapters/generic.js +3 -8
  7. package/compiler/adapters/openclaw.js +4 -9
  8. package/compiler/adapters/opencode.js +3 -8
  9. package/compiler/adapters/windsurf.js +3 -8
  10. package/compiler/bin/rune.js +34 -1
  11. package/compiler/emitter.js +94 -5
  12. package/compiler/transforms/branding.js +10 -3
  13. package/docs/ARCHITECTURE.md +3 -3
  14. package/docs/SKILL-TEMPLATE.md +15 -0
  15. package/docs/VISION.md +3 -3
  16. package/docs/guides/index.html +14 -14
  17. package/docs/index.html +82 -13
  18. package/docs/script.js +33 -6
  19. package/docs/skills/index.html +832 -832
  20. package/docs/style.css +62 -0
  21. package/extensions/ai-ml/PACK.md +7 -0
  22. package/extensions/content/PACK.md +7 -0
  23. package/extensions/mobile/PACK.md +9 -9
  24. package/extensions/zalo/PACK.md +9 -0
  25. package/package.json +8 -6
  26. package/skills/adversary/SKILL.md +12 -0
  27. package/skills/audit/SKILL.md +526 -467
  28. package/skills/autopsy/SKILL.md +12 -0
  29. package/skills/ba/SKILL.md +349 -342
  30. package/skills/brainstorm/SKILL.md +11 -0
  31. package/skills/completion-gate/SKILL.md +260 -249
  32. package/skills/context-engine/SKILL.md +77 -1
  33. package/skills/context-pack/SKILL.md +160 -0
  34. package/skills/cook/SKILL.md +648 -958
  35. package/skills/cook/references/deviation-rules.md +19 -0
  36. package/skills/cook/references/error-recovery.md +37 -0
  37. package/skills/cook/references/exit-conditions.md +31 -0
  38. package/skills/cook/references/loop-detection.md +39 -0
  39. package/skills/cook/references/mid-run-signals.md +31 -0
  40. package/skills/cook/references/output-format.md +40 -0
  41. package/skills/cook/references/pack-detection.md +82 -0
  42. package/skills/cook/references/pause-resume-template.md +38 -0
  43. package/skills/cook/references/rfc-template.md +52 -0
  44. package/skills/cook/references/sharp-edges.md +24 -0
  45. package/skills/cook/references/subagent-status.md +38 -0
  46. package/skills/db/SKILL.md +12 -0
  47. package/skills/debug/SKILL.md +392 -362
  48. package/skills/deploy/SKILL.md +10 -0
  49. package/skills/deploy/references/post-deploy-integration.md +192 -0
  50. package/skills/design/SKILL.md +9 -0
  51. package/skills/docs/SKILL.md +12 -0
  52. package/skills/docs-seeker/SKILL.md +11 -0
  53. package/skills/fix/SKILL.md +281 -249
  54. package/skills/incident/SKILL.md +10 -0
  55. package/skills/launch/SKILL.md +12 -0
  56. package/skills/logic-guardian/SKILL.md +11 -0
  57. package/skills/marketing/SKILL.md +13 -0
  58. package/skills/mcp-builder/SKILL.md +13 -0
  59. package/skills/onboard/SKILL.md +50 -2
  60. package/skills/perf/SKILL.md +11 -0
  61. package/skills/plan/SKILL.md +342 -688
  62. package/skills/plan/references/completeness-scoring.md +36 -0
  63. package/skills/plan/references/outcome-block.md +40 -0
  64. package/skills/plan/references/plan-templates.md +193 -0
  65. package/skills/plan/references/wave-planning.md +44 -0
  66. package/skills/plan/references/workflow-registry.md +52 -0
  67. package/skills/preflight/SKILL.md +360 -280
  68. package/skills/rescue/SKILL.md +11 -0
  69. package/skills/research/SKILL.md +149 -150
  70. package/skills/retro/SKILL.md +11 -0
  71. package/skills/review/SKILL.md +489 -396
  72. package/skills/review-intake/SKILL.md +11 -0
  73. package/skills/safeguard/SKILL.md +12 -0
  74. package/skills/scaffold/SKILL.md +10 -0
  75. package/skills/scope-guard/SKILL.md +11 -0
  76. package/skills/scout/SKILL.md +9 -0
  77. package/skills/sentinel/SKILL.md +296 -425
  78. package/skills/sentinel/references/config-protection.md +52 -0
  79. package/skills/sentinel/references/destructive-commands.md +39 -0
  80. package/skills/sentinel/references/domain-hooks.md +73 -0
  81. package/skills/sentinel/references/framework-patterns.md +46 -0
  82. package/skills/sentinel/references/owasp-patterns.md +69 -0
  83. package/skills/sentinel/references/secret-patterns.md +40 -0
  84. package/skills/sentinel/references/skill-content-guard.md +54 -0
  85. package/skills/session-bridge/SKILL.md +56 -2
  86. package/skills/skill-forge/SKILL.md +47 -2
  87. package/skills/skill-router/{SKILL.md → skill.md} +446 -365
  88. package/skills/surgeon/SKILL.md +12 -0
  89. package/skills/team/SKILL.md +34 -1
  90. package/skills/test/SKILL.md +585 -427
  91. package/skills/watchdog/references/webhook-health-checks.md +243 -0
@@ -4,9 +4,9 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Rune Guides — From Install to Production</title>
7
- <meta name="description" content="Complete guide to using Rune — the 58-skill mesh for AI coding assistants. Install, configure, and master every workflow.">
7
+ <meta name="description" content="Complete guide to using Rune — the 59-skill mesh for AI coding assistants. Install, configure, and master every workflow.">
8
8
  <meta property="og:title" content="Rune Guides — From Install to Production">
9
- <meta property="og:description" content="Learn how to use Rune's 58-skill mesh to supercharge your AI coding assistant.">
9
+ <meta property="og:description" content="Learn how to use Rune's 59-skill mesh to supercharge your AI coding assistant.">
10
10
  <meta property="og:type" content="website">
11
11
  <meta property="og:url" content="https://rune-kit.github.io/rune/guides/">
12
12
  <link rel="preconnect" href="https://fonts.googleapis.com">
@@ -559,7 +559,7 @@
559
559
  <h2 id="what-is-rune">What is Rune?</h2>
560
560
 
561
561
  <p>
562
- <strong>Rune is a 58-skill mesh ecosystem</strong> for AI coding assistants. Instead of giving your AI one prompt at a time,
562
+ <strong>Rune is a 59-skill mesh ecosystem</strong> for AI coding assistants. Instead of giving your AI one prompt at a time,
563
563
  Rune gives it structured workflows where skills call each other automatically.
564
564
  </p>
565
565
 
@@ -614,7 +614,7 @@
614
614
 
615
615
  <span class="comment"># Verify it's loaded</span>
616
616
  <span class="cmd">claude</span>
617
- <span class="output"> 58 skills loaded from rune</span></div>
617
+ <span class="output"> 59 skills loaded from rune</span></div>
618
618
  <button class="copy-btn" data-copy="claude plugin marketplace add rune-kit/rune && claude plugin install rune">Copy</button>
619
619
  </div>
620
620
  <div class="callout callout-tip">
@@ -624,14 +624,14 @@
624
624
  </div>
625
625
 
626
626
  <div class="tab-panel" id="install-cursor">
627
- <p>Cursor uses <code>.mdc</code> rule files. Rune compiles all 58 skills into Cursor's format.</p>
627
+ <p>Cursor uses <code>.mdc</code> rule files. Rune compiles all 59 skills into Cursor's format.</p>
628
628
  <div class="code-wrapper">
629
629
  <div class="code-block"><span class="comment"># In your project directory</span>
630
630
  <span class="cmd">npx --yes @rune-kit/rune init <span class="flag">--platform cursor</span></span>
631
631
 
632
632
  <span class="output"> → Detected: cursor</span>
633
633
  <span class="output"> ✓ Created rune.config.json</span>
634
- <span class="output"> ✓ Built 58 skills + 14 extensions to .cursor/rules/</span></div>
634
+ <span class="output"> ✓ Built 59 skills + 14 extensions to .cursor/rules/</span></div>
635
635
  <button class="copy-btn" data-copy="npx --yes @rune-kit/rune init --platform cursor">Copy</button>
636
636
  </div>
637
637
  <p>Skills are compiled into <code>.cursor/rules/</code>. Cursor picks them up automatically.</p>
@@ -642,7 +642,7 @@
642
642
  <div class="code-wrapper">
643
643
  <div class="code-block"><span class="cmd">npx --yes @rune-kit/rune init <span class="flag">--platform windsurf</span></span>
644
644
 
645
- <span class="output"> ✓ Built 58 skills + 14 extensions to .windsurf/rules/</span></div>
645
+ <span class="output"> ✓ Built 59 skills + 14 extensions to .windsurf/rules/</span></div>
646
646
  <button class="copy-btn" data-copy="npx --yes @rune-kit/rune init --platform windsurf">Copy</button>
647
647
  </div>
648
648
  </div>
@@ -652,7 +652,7 @@
652
652
  <div class="code-wrapper">
653
653
  <div class="code-block"><span class="cmd">npx --yes @rune-kit/rune init <span class="flag">--platform antigravity</span></span>
654
654
 
655
- <span class="output"> ✓ Built 58 skills + 14 extensions to .agent/rules/</span></div>
655
+ <span class="output"> ✓ Built 59 skills + 14 extensions to .agent/rules/</span></div>
656
656
  <button class="copy-btn" data-copy="npx --yes @rune-kit/rune init --platform antigravity">Copy</button>
657
657
  </div>
658
658
  <div class="callout callout-info">
@@ -667,7 +667,7 @@
667
667
  <div class="code-wrapper">
668
668
  <div class="code-block"><span class="cmd">clawhub install rune-kit</span>
669
669
 
670
- <span class="comment"># All 58 skills installed as one mesh package</span>
670
+ <span class="comment"># All 59 skills installed as one mesh package</span>
671
671
  <span class="comment"># Works with any OpenClaw-compatible agent</span></div>
672
672
  <button class="copy-btn" data-copy="clawhub install rune-kit">Copy</button>
673
673
  </div>
@@ -748,7 +748,7 @@
748
748
  </div>
749
749
 
750
750
  <p>
751
- 200+ connections between 58 skills. When <code>debug</code> can't find the cause,
751
+ 200+ connections between 59 skills. When <code>debug</code> can't find the cause,
752
752
  it escalates to <code>problem-solver</code>. When <code>cook</code> hits a wall 3 times,
753
753
  it pivots to <code>brainstorm</code>. When <code>sentinel</code> finds a vulnerability,
754
754
  it blocks the commit. The mesh is self-healing.
@@ -1050,7 +1050,7 @@
1050
1050
  <span class="output"> ├── rune-fix/SKILL.md</span>
1051
1051
  <span class="output"> ├── rune-plan/SKILL.md</span>
1052
1052
  <span class="output"> ├── rune-test/SKILL.md</span>
1053
- <span class="output"> └── ... (58 skills total)</span></div>
1053
+ <span class="output"> └── ... (59 skills total)</span></div>
1054
1054
  </div>
1055
1055
 
1056
1056
  <p>
@@ -1109,7 +1109,7 @@
1109
1109
  <div class="code-wrapper">
1110
1110
  <div class="code-block"><span class="cmd">clawhub install rune-kit</span>
1111
1111
 
1112
- <span class="comment"># All 58 skills + 14 extension packs as one mesh package</span>
1112
+ <span class="comment"># All 59 skills + 14 extension packs as one mesh package</span>
1113
1113
  <span class="comment"># Slug: rune-kit on clawhub.ai</span></div>
1114
1114
  </div>
1115
1115
 
@@ -1119,7 +1119,7 @@
1119
1119
  </div>
1120
1120
 
1121
1121
  <div class="callout callout-info">
1122
- <strong>All platforms get the same 58 skills.</strong> The compiler handles format differences.
1122
+ <strong>All platforms get the same 59 skills.</strong> The compiler handles format differences.
1123
1123
  Cross-references, tool names, and model hints are adapted per platform.
1124
1124
  </div>
1125
1125
 
@@ -1256,7 +1256,7 @@
1256
1256
 
1257
1257
  <h3>Is Rune free?</h3>
1258
1258
  <p>
1259
- Yes. The full 58-skill mesh + 14 extension packs are <strong>free forever, MIT license</strong>.
1259
+ Yes. The full 59-skill mesh + 14 extension packs are <strong>free forever, MIT license</strong>.
1260
1260
  <a href="../#pricing">Rune Pro</a> ($49 lifetime) adds business department skills (Product, Sales, Data Science).
1261
1261
  </p>
1262
1262
 
package/docs/index.html CHANGED
@@ -4,9 +4,9 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Rune — Less skills. Deeper connections.</title>
7
- <meta name="description" content="58-skill mesh ecosystem for AI coding assistants. Works on Claude Code, Cursor, Windsurf, and any AI IDE.">
7
+ <meta name="description" content="59-skill mesh ecosystem for AI coding assistants. Works on Claude Code, Cursor, Windsurf, and any AI IDE.">
8
8
  <meta property="og:title" content="Rune — AI Skill Mesh">
9
- <meta property="og:description" content="58 skills, 200+ mesh connections, 8 platforms. From idea to production.">
9
+ <meta property="og:description" content="59 skills, 200+ mesh connections, 8 platforms. From idea to production.">
10
10
  <meta property="og:image" content="https://raw.githubusercontent.com/rune-kit/rune/master/assets/banner.svg">
11
11
  <meta property="og:type" content="website">
12
12
  <meta property="og:url" content="https://rune-kit.github.io/rune">
@@ -62,7 +62,7 @@
62
62
  <canvas id="mesh-canvas"></canvas>
63
63
  </div>
64
64
  <div class="hero-content">
65
- <p class="hero-badge">v2.2.2 &mdash; 58 skills &bull; 8 platforms &bull; MIT</p>
65
+ <p class="hero-badge">v2.3.1 &mdash; 59 skills &bull; 8 platforms &bull; MIT</p>
66
66
  <h1>Less skills.<br><span class="accent">Deeper connections.</span></h1>
67
67
  <p class="hero-sub">A mesh ecosystem for AI coding assistants. Skills call each other bidirectionally, forming resilient workflows that adapt when things go wrong.</p>
68
68
  <div class="hero-actions">
@@ -231,7 +231,7 @@ D &harr; E &harr; F
231
231
  <div class="feature-card">
232
232
  <div class="feature-icon">&#127760;</div>
233
233
  <h3>Multi-Platform</h3>
234
- <p>Same 58 skills compile to Claude Code, Cursor, Windsurf, Antigravity, OpenAI Codex, OpenClaw, and generic. Zero knowledge loss across IDEs.</p>
234
+ <p>Same 59 skills compile to Claude Code, Cursor, Windsurf, Antigravity, OpenAI Codex, OpenClaw, and generic. Zero knowledge loss across IDEs.</p>
235
235
  </div>
236
236
  </div>
237
237
  </div>
@@ -256,13 +256,13 @@ claude plugin install rune</code></pre>
256
256
  <h3>Cursor / Windsurf / Any IDE</h3>
257
257
  <p class="install-badge">Compiled Rules</p>
258
258
  <pre class="code-block"><code>npx @rune-kit/rune init</code></pre>
259
- <p>Auto-detects platform. Compiles all 58 skills to native rule format.</p>
259
+ <p>Auto-detects platform. Compiles all 59 skills to native rule format.</p>
260
260
  </div>
261
261
  <div class="install-card">
262
262
  <h3>OpenClaw</h3>
263
263
  <p class="install-badge">ClawHub Registry</p>
264
264
  <pre class="code-block"><code>clawhub install rune-kit</code></pre>
265
- <p>58 skills as unified mesh package. Works with any OpenClaw agent.</p>
265
+ <p>59 skills as unified mesh package. Works with any OpenClaw agent.</p>
266
266
  </div>
267
267
  </div>
268
268
  </div>
@@ -335,7 +335,7 @@ claude plugin install rune</code></pre>
335
335
  <div class="mesh-tier-header">
336
336
  <span class="mesh-tier-badge mesh-badge-free">FREE</span>
337
337
  <strong>Core Mesh</strong>
338
- <span class="mesh-tier-stats">58 skills &bull; 200+ connections</span>
338
+ <span class="mesh-tier-stats">59 skills &bull; 200+ connections</span>
339
339
  </div>
340
340
  <div class="mesh-layers">
341
341
  <div class="mesh-layer">
@@ -839,12 +839,42 @@ claude plugin install rune</code></pre>
839
839
  </div>
840
840
 
841
841
  <!-- Step 4: Success -->
842
- <div id="pay-step-4" class="pay-step" hidden>
843
- <div class="pay-success-icon">&#10003;</div>
844
- <h3>Payment Received!</h3>
845
- <p class="pay-subtitle">A GitHub invitation has been sent to <strong id="pay-success-user"></strong></p>
846
- <p class="pay-hint">Check your email for the invitation to <code>rune-kit/rune-pro</code></p>
847
- <button class="btn btn-primary" style="width:100%;margin-top:20px" onclick="closePayment()">Done</button>
842
+ <div id="pay-step-4" class="pay-step pay-success" hidden>
843
+ <div class="pay-success-badge">
844
+ <svg class="pay-success-check" viewBox="0 0 52 52" width="52" height="52">
845
+ <circle class="pay-success-circle" cx="26" cy="26" r="24" fill="none" stroke="currentColor" stroke-width="2.5"/>
846
+ <path class="pay-success-tick" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" d="M15 27l7 7 15-15"/>
847
+ </svg>
848
+ </div>
849
+ <h3 class="pay-success-title">You're in!</h3>
850
+ <p class="pay-success-sub">A GitHub repo invitation is on its way to <strong id="pay-success-user"></strong></p>
851
+
852
+ <div class="pay-success-steps">
853
+ <div class="pay-success-step">
854
+ <span class="pay-success-num">1</span>
855
+ <div>
856
+ <strong>Check your GitHub email</strong>
857
+ <span>Look for an invite from <code>noreply@github.com</code> — usually within 1 minute</span>
858
+ </div>
859
+ </div>
860
+ <div class="pay-success-step">
861
+ <span class="pay-success-num">2</span>
862
+ <div>
863
+ <strong>Accept the invitation</strong>
864
+ <span>Click "View invitation" to join the private repo</span>
865
+ </div>
866
+ </div>
867
+ <div class="pay-success-step">
868
+ <span class="pay-success-num">3</span>
869
+ <div>
870
+ <strong>Install your packs</strong>
871
+ <span id="pay-success-install">Follow the setup guide in the repo README</span>
872
+ </div>
873
+ </div>
874
+ </div>
875
+
876
+ <button class="btn btn-primary pay-success-done" onclick="closePayment()">Got it</button>
877
+ <p class="pay-success-help">Didn't get the invite? Check spam, or email <a href="mailto:claude@theio.vn">claude@theio.vn</a></p>
848
878
  </div>
849
879
 
850
880
  <!-- Step 5: International — GitHub username + Polar checkout -->
@@ -861,6 +891,45 @@ claude plugin install rune</code></pre>
861
891
  <button id="pay-intl-submit" class="btn btn-pro" style="width:100%;margin-top:16px" onclick="startPolarCheckout()">Pay with Card / PayPal</button>
862
892
  <p class="pay-hint" style="margin-top:12px">You'll be redirected to Polar's secure checkout page</p>
863
893
  </div>
894
+
895
+ <!-- Step 6: Success (Vietnamese — for SePay flow) -->
896
+ <div id="pay-step-6" class="pay-step pay-success notranslate" translate="no" hidden>
897
+ <div class="pay-success-badge">
898
+ <svg class="pay-success-check" viewBox="0 0 52 52" width="52" height="52">
899
+ <circle class="pay-success-circle" cx="26" cy="26" r="24" fill="none" stroke="currentColor" stroke-width="2.5"/>
900
+ <path class="pay-success-tick" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" d="M15 27l7 7 15-15"/>
901
+ </svg>
902
+ </div>
903
+ <h3 class="pay-success-title">Thanh toán thành công!</h3>
904
+ <p class="pay-success-sub">Lời mời truy cập repo đã được gửi đến <strong id="pay-success-user-vn"></strong></p>
905
+
906
+ <div class="pay-success-steps">
907
+ <div class="pay-success-step">
908
+ <span class="pay-success-num">1</span>
909
+ <div>
910
+ <strong>Kiểm tra email GitHub</strong>
911
+ <span>Tìm email mời từ <code>noreply@github.com</code> — thường trong vòng 1 phút</span>
912
+ </div>
913
+ </div>
914
+ <div class="pay-success-step">
915
+ <span class="pay-success-num">2</span>
916
+ <div>
917
+ <strong>Chấp nhận lời mời</strong>
918
+ <span>Nhấn "View invitation" để vào private repo</span>
919
+ </div>
920
+ </div>
921
+ <div class="pay-success-step">
922
+ <span class="pay-success-num">3</span>
923
+ <div>
924
+ <strong>Cài đặt skill packs</strong>
925
+ <span id="pay-success-install-vn">Làm theo hướng dẫn trong README của repo</span>
926
+ </div>
927
+ </div>
928
+ </div>
929
+
930
+ <button class="btn btn-primary pay-success-done" onclick="closePayment()">Xong</button>
931
+ <p class="pay-success-help">Chưa nhận được? Kiểm tra spam, hoặc email <a href="mailto:claude@theio.vn">claude@theio.vn</a></p>
932
+ </div>
864
933
  </div>
865
934
  </div>
866
935
 
package/docs/script.js CHANGED
@@ -227,8 +227,9 @@ function closePayment() {
227
227
  }
228
228
 
229
229
  function showPayStep(n) {
230
- for (let i = 1; i <= 5; i++) {
231
- document.getElementById('pay-step-' + i).hidden = (i !== n);
230
+ for (let i = 1; i <= 6; i++) {
231
+ const el = document.getElementById('pay-step-' + i);
232
+ if (el) el.hidden = (i !== n);
232
233
  }
233
234
  }
234
235
 
@@ -290,7 +291,7 @@ async function startPolarCheckout() {
290
291
  const data = await res.json();
291
292
  if (!data.success || !data.url) throw new Error(data.error || 'Failed to create checkout');
292
293
 
293
- // Redirect to Polar checkout page
294
+ // Redirect to Polar checkout page (context embedded in success_url by worker)
294
295
  window.location.href = data.url;
295
296
  } catch (err) {
296
297
  errorEl.textContent = err.message;
@@ -365,8 +366,14 @@ function startPolling(github) {
365
366
  if (data.status === 'delivered') {
366
367
  clearInterval(payState.pollTimer);
367
368
  payState.pollTimer = null;
368
- document.getElementById('pay-success-user').textContent = github;
369
- showPayStep(4);
369
+ // VN users → Vietnamese success (step 6)
370
+ const vnUser = document.getElementById('pay-success-user-vn');
371
+ if (vnUser) vnUser.textContent = github;
372
+ const vnInstall = document.getElementById('pay-success-install-vn');
373
+ if (vnInstall && (payState.product === 'rune-biz' || payState.product === 'RUNE-BIZ')) {
374
+ vnInstall.textContent = 'Bạn nhận cả Pro + Business packs — xem README trong repo';
375
+ }
376
+ showPayStep(6);
370
377
  } else if (data.status === 'underpaid') {
371
378
  document.getElementById('pay-status').innerHTML =
372
379
  '<span style="color:var(--loss)">&#9888; Amount too low. Please transfer the exact amount.</span>';
@@ -452,17 +459,37 @@ function startPolling(github) {
452
459
  (function checkPolarReturn() {
453
460
  const params = new URLSearchParams(window.location.search);
454
461
  if (params.get('polar') === 'success') {
462
+ // Read context from URL (embedded by worker in success_url)
463
+ const github = params.get('gh') || 'your GitHub account';
464
+ const product = params.get('pkg') || '';
465
+
455
466
  // Clean URL
456
467
  window.history.replaceState({}, '', window.location.pathname);
468
+
457
469
  // Show success message
458
470
  const modal = document.getElementById('pay-modal');
459
471
  if (modal) {
460
472
  modal.hidden = false;
461
473
  document.body.style.overflow = 'hidden';
462
- document.getElementById('pay-success-user').textContent = 'you';
474
+ showSuccessForProduct(product, github);
463
475
  for (let i = 1; i <= 5; i++) {
464
476
  document.getElementById('pay-step-' + i).hidden = (i !== 4);
465
477
  }
466
478
  }
467
479
  }
468
480
  })();
481
+
482
+ // Update success page based on product context
483
+ function showSuccessForProduct(product, github) {
484
+ const el = document.getElementById('pay-success-user');
485
+ if (el) el.textContent = github || 'your GitHub account';
486
+
487
+ const installEl = document.getElementById('pay-success-install');
488
+ if (!installEl) return;
489
+
490
+ if (product === 'rune-biz' || product === 'RUNE-BIZ') {
491
+ installEl.textContent = 'You get Pro + Business packs — check the repo README for setup';
492
+ } else {
493
+ installEl.textContent = 'Follow the setup guide in the repo README';
494
+ }
495
+ }