@stacksjs/defaults 0.75.108 → 0.75.110

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 (748) hide show
  1. package/ai/AGENTS.md +36 -1
  2. package/ai/README.md +39 -1
  3. package/ai/skills/stacks-actions/SKILL.md +64 -6
  4. package/ai/skills/stacks-ai/SKILL.md +36 -10
  5. package/ai/skills/stacks-alias/SKILL.md +40 -85
  6. package/ai/skills/stacks-analytics/SKILL.md +23 -3
  7. package/ai/skills/stacks-arrays/SKILL.md +35 -9
  8. package/ai/skills/stacks-audio/SKILL.md +34 -0
  9. package/ai/skills/stacks-auth/ACCOUNT-WORKFLOWS.md +113 -0
  10. package/ai/skills/stacks-auth/SKILL.md +90 -57
  11. package/ai/skills/stacks-auto-imports/SKILL.md +80 -138
  12. package/ai/skills/stacks-browser/SKILL.md +82 -138
  13. package/ai/skills/stacks-browser-extension/SKILL.md +40 -0
  14. package/ai/skills/stacks-buddy/SKILL.md +2 -0
  15. package/ai/skills/stacks-build/SKILL.md +42 -23
  16. package/ai/skills/stacks-cache/SKILL.md +75 -115
  17. package/ai/skills/stacks-calendar/SKILL.md +61 -97
  18. package/ai/skills/stacks-charts/SKILL.md +34 -0
  19. package/ai/skills/stacks-chat/SKILL.md +18 -2
  20. package/ai/skills/stacks-chief-of-staff/LICENSE +21 -0
  21. package/ai/skills/stacks-chief-of-staff/NOTICE.md +10 -0
  22. package/ai/skills/stacks-chief-of-staff/PLAYBOOK.md +42 -0
  23. package/ai/skills/stacks-chief-of-staff/SKILL.md +28 -0
  24. package/ai/skills/stacks-cli/SKILL.md +23 -7
  25. package/ai/skills/stacks-cloud/SKILL.md +37 -20
  26. package/ai/skills/stacks-cms/PAGES.md +70 -0
  27. package/ai/skills/stacks-cms/SKILL.md +30 -18
  28. package/ai/skills/stacks-codebase-design/LICENSE +21 -0
  29. package/ai/skills/stacks-codebase-design/NOTICE.md +10 -0
  30. package/ai/skills/stacks-codebase-design/SKILL.md +10 -0
  31. package/ai/skills/stacks-collections/SKILL.md +25 -8
  32. package/ai/skills/stacks-commerce/SKILL.md +25 -1
  33. package/ai/skills/stacks-composables/BROWSER.md +97 -0
  34. package/ai/skills/stacks-composables/SKILL.md +87 -181
  35. package/ai/skills/stacks-config/SKILL.md +108 -162
  36. package/ai/skills/stacks-cron/SKILL.md +27 -13
  37. package/ai/skills/stacks-crosswind/SKILL.md +62 -167
  38. package/ai/skills/stacks-dashboard/SKILL.md +8 -0
  39. package/ai/skills/stacks-database/SKILL.md +98 -68
  40. package/ai/skills/stacks-datetime/SKILL.md +21 -5
  41. package/ai/skills/stacks-deploy/SKILL.md +17 -1
  42. package/ai/skills/stacks-design-brutalist/SKILL.md +1 -1
  43. package/ai/skills/stacks-design-minimalist/SKILL.md +17 -3
  44. package/ai/skills/stacks-design-soft/SKILL.md +16 -4
  45. package/ai/skills/stacks-design-taste/SKILL.md +55 -35
  46. package/ai/skills/stacks-design-taste-codex/SKILL.md +5 -5
  47. package/ai/skills/stacks-desktop/SKILL.md +22 -16
  48. package/ai/skills/stacks-development/SKILL.md +19 -8
  49. package/ai/skills/stacks-dns/SKILL.md +72 -139
  50. package/ai/skills/stacks-domain-modeling/ADR-FORMAT.md +47 -0
  51. package/ai/skills/stacks-domain-modeling/GLOSSARY-FORMAT.md +60 -0
  52. package/ai/skills/stacks-domain-modeling/LICENSE +21 -0
  53. package/ai/skills/stacks-domain-modeling/NOTICE.md +10 -0
  54. package/ai/skills/stacks-domain-modeling/SKILL.md +11 -0
  55. package/ai/skills/stacks-email/DELIVERY-CONTROLS.md +84 -0
  56. package/ai/skills/stacks-email/SKILL.md +18 -2
  57. package/ai/skills/stacks-enums/SKILL.md +28 -81
  58. package/ai/skills/stacks-env/SKILL.md +23 -15
  59. package/ai/skills/stacks-error-handling/SKILL.md +68 -121
  60. package/ai/skills/stacks-events/SKILL.md +83 -264
  61. package/ai/skills/stacks-faker/SKILL.md +28 -13
  62. package/ai/skills/stacks-feature-flags/SKILL.md +41 -0
  63. package/ai/skills/stacks-features/SKILL.md +46 -0
  64. package/ai/skills/stacks-flow/ENGINEERING.md +84 -0
  65. package/ai/skills/stacks-flow/LICENSE +21 -0
  66. package/ai/skills/stacks-flow/NOTICE.md +10 -0
  67. package/ai/skills/stacks-flow/SKILL.md +32 -0
  68. package/ai/skills/stacks-flow/upstream-skills.json +726 -0
  69. package/ai/skills/stacks-forms/SKILL.md +44 -0
  70. package/ai/skills/stacks-git/LICENSE +21 -0
  71. package/ai/skills/stacks-git/NOTICE.md +10 -0
  72. package/ai/skills/stacks-git/SKILL.md +11 -0
  73. package/ai/skills/stacks-grill-with-docs/LICENSE +21 -0
  74. package/ai/skills/stacks-grill-with-docs/NOTICE.md +10 -0
  75. package/ai/skills/stacks-grill-with-docs/PLAYBOOK.md +4 -0
  76. package/ai/skills/stacks-grill-with-docs/SKILL.md +24 -0
  77. package/ai/skills/stacks-grilling/LICENSE +21 -0
  78. package/ai/skills/stacks-grilling/NOTICE.md +17 -0
  79. package/ai/skills/stacks-grilling/SKILL.md +7 -0
  80. package/ai/skills/stacks-guard/LICENSE +21 -0
  81. package/ai/skills/stacks-guard/NOTICE.md +10 -0
  82. package/ai/skills/stacks-guard/SKILL.md +6 -0
  83. package/ai/skills/stacks-handoff/LICENSE +21 -0
  84. package/ai/skills/stacks-handoff/NOTICE.md +17 -0
  85. package/ai/skills/stacks-handoff/SKILL.md +8 -0
  86. package/ai/skills/stacks-http/SKILL.md +64 -297
  87. package/ai/skills/stacks-humanizer/LICENSE +21 -0
  88. package/ai/skills/stacks-humanizer/NOTICE.md +19 -0
  89. package/ai/skills/stacks-humanizer/SKILL.md +85 -0
  90. package/ai/skills/stacks-humanizer/references/patterns.md +350 -0
  91. package/ai/skills/stacks-i18n/SKILL.md +33 -8
  92. package/ai/skills/stacks-image/SKILL.md +37 -0
  93. package/ai/skills/stacks-image-to-code/SKILL.md +11 -6
  94. package/ai/skills/stacks-implement/LICENSE +21 -0
  95. package/ai/skills/stacks-implement/NOTICE.md +10 -0
  96. package/ai/skills/stacks-implement/PLAYBOOK.md +14 -0
  97. package/ai/skills/stacks-implement/SKILL.md +24 -0
  98. package/ai/skills/stacks-implement-spec/LICENSE +21 -0
  99. package/ai/skills/stacks-implement-spec/NOTICE.md +10 -0
  100. package/ai/skills/stacks-implement-spec/PLAYBOOK.md +37 -0
  101. package/ai/skills/stacks-implement-spec/SKILL.md +24 -0
  102. package/ai/skills/stacks-improve-codebase-architecture/HTML-REPORT.md +126 -0
  103. package/ai/skills/stacks-improve-codebase-architecture/LICENSE +21 -0
  104. package/ai/skills/stacks-improve-codebase-architecture/NOTICE.md +10 -0
  105. package/ai/skills/stacks-improve-codebase-architecture/PLAYBOOK.md +68 -0
  106. package/ai/skills/stacks-improve-codebase-architecture/SKILL.md +24 -0
  107. package/ai/skills/stacks-investigate/LICENSE +21 -0
  108. package/ai/skills/stacks-investigate/NOTICE.md +10 -0
  109. package/ai/skills/stacks-investigate/SKILL.md +6 -0
  110. package/ai/skills/stacks-jobs/SKILL.md +29 -8
  111. package/ai/skills/stacks-listeners/SKILL.md +13 -5
  112. package/ai/skills/stacks-logging/SKILL.md +71 -68
  113. package/ai/skills/stacks-loop/LICENSE +21 -0
  114. package/ai/skills/stacks-loop/NOTICE.md +10 -0
  115. package/ai/skills/stacks-loop/PLAYBOOK.md +28 -0
  116. package/ai/skills/stacks-loop/SKILL.md +28 -0
  117. package/ai/skills/stacks-mail/SKILL.md +46 -7
  118. package/ai/skills/stacks-marketing/CATALOG.md +60 -0
  119. package/ai/skills/stacks-marketing/LICENSE +21 -0
  120. package/ai/skills/stacks-marketing/NOTICE.md +5 -0
  121. package/ai/skills/stacks-marketing/SKILL.md +27 -0
  122. package/ai/skills/stacks-marketing/WORKFLOW.md +83 -0
  123. package/ai/skills/stacks-marketing-ab-testing/LICENSE +21 -0
  124. package/ai/skills/stacks-marketing-ab-testing/NOTICE.md +13 -0
  125. package/ai/skills/stacks-marketing-ab-testing/PLAYBOOK.md +352 -0
  126. package/ai/skills/stacks-marketing-ab-testing/SKILL.md +30 -0
  127. package/ai/skills/stacks-marketing-ab-testing/evals/evals.json +116 -0
  128. package/ai/skills/stacks-marketing-ab-testing/references/sample-size-guide.md +263 -0
  129. package/ai/skills/stacks-marketing-ab-testing/references/test-templates.md +277 -0
  130. package/ai/skills/stacks-marketing-ad-creative/LICENSE +21 -0
  131. package/ai/skills/stacks-marketing-ad-creative/NOTICE.md +13 -0
  132. package/ai/skills/stacks-marketing-ad-creative/PLAYBOOK.md +434 -0
  133. package/ai/skills/stacks-marketing-ad-creative/SKILL.md +30 -0
  134. package/ai/skills/stacks-marketing-ad-creative/assets/creative-review-template.html +432 -0
  135. package/ai/skills/stacks-marketing-ad-creative/evals/evals.json +280 -0
  136. package/ai/skills/stacks-marketing-ad-creative/references/awareness-headlines.md +54 -0
  137. package/ai/skills/stacks-marketing-ad-creative/references/creative-review-page.md +109 -0
  138. package/ai/skills/stacks-marketing-ad-creative/references/creative-roadmap.md +118 -0
  139. package/ai/skills/stacks-marketing-ad-creative/references/generative-tools.md +613 -0
  140. package/ai/skills/stacks-marketing-ad-creative/references/hook-system.md +115 -0
  141. package/ai/skills/stacks-marketing-ad-creative/references/imessage-video-ads.md +197 -0
  142. package/ai/skills/stacks-marketing-ad-creative/references/meta-creative-formats.md +114 -0
  143. package/ai/skills/stacks-marketing-ad-creative/references/motion-video-ads.md +126 -0
  144. package/ai/skills/stacks-marketing-ad-creative/references/platform-specs.md +213 -0
  145. package/ai/skills/stacks-marketing-ad-creative/references/short-form-video-specs.md +213 -0
  146. package/ai/skills/stacks-marketing-ad-creative/references/static-ad-templates.md +308 -0
  147. package/ai/skills/stacks-marketing-ads/LICENSE +21 -0
  148. package/ai/skills/stacks-marketing-ads/NOTICE.md +13 -0
  149. package/ai/skills/stacks-marketing-ads/PLAYBOOK.md +464 -0
  150. package/ai/skills/stacks-marketing-ads/SKILL.md +30 -0
  151. package/ai/skills/stacks-marketing-ads/evals/evals.json +192 -0
  152. package/ai/skills/stacks-marketing-ads/references/abm-playbook.md +101 -0
  153. package/ai/skills/stacks-marketing-ads/references/ad-copy-templates.md +207 -0
  154. package/ai/skills/stacks-marketing-ads/references/audience-targeting.md +243 -0
  155. package/ai/skills/stacks-marketing-ads/references/audit-guardrails.md +83 -0
  156. package/ai/skills/stacks-marketing-ads/references/b2b-paid-playbook.md +115 -0
  157. package/ai/skills/stacks-marketing-ads/references/conversion-tracking.md +361 -0
  158. package/ai/skills/stacks-marketing-ads/references/creative-research-automation.md +103 -0
  159. package/ai/skills/stacks-marketing-ads/references/google-ads-audit-checklist.md +84 -0
  160. package/ai/skills/stacks-marketing-ads/references/google-search-playbook.md +120 -0
  161. package/ai/skills/stacks-marketing-ads/references/linkedin-b2b-playbook.md +107 -0
  162. package/ai/skills/stacks-marketing-ads/references/meta-andromeda-playbook.md +44 -0
  163. package/ai/skills/stacks-marketing-ads/references/meta-decision-system.md +176 -0
  164. package/ai/skills/stacks-marketing-ads/references/payback-period.md +73 -0
  165. package/ai/skills/stacks-marketing-ads/references/platform-setup-checklists.md +277 -0
  166. package/ai/skills/stacks-marketing-ads/references/reading-google-ads-data.md +121 -0
  167. package/ai/skills/stacks-marketing-ads/references/rsa-output-spec.md +88 -0
  168. package/ai/skills/stacks-marketing-ai-seo/LICENSE +21 -0
  169. package/ai/skills/stacks-marketing-ai-seo/NOTICE.md +13 -0
  170. package/ai/skills/stacks-marketing-ai-seo/PLAYBOOK.md +494 -0
  171. package/ai/skills/stacks-marketing-ai-seo/SKILL.md +30 -0
  172. package/ai/skills/stacks-marketing-ai-seo/evals/evals.json +163 -0
  173. package/ai/skills/stacks-marketing-ai-seo/references/agent-readiness.md +66 -0
  174. package/ai/skills/stacks-marketing-ai-seo/references/citations-vs-recommendations.md +89 -0
  175. package/ai/skills/stacks-marketing-ai-seo/references/content-patterns.md +287 -0
  176. package/ai/skills/stacks-marketing-ai-seo/references/content-types.md +82 -0
  177. package/ai/skills/stacks-marketing-ai-seo/references/format-volatility.md +95 -0
  178. package/ai/skills/stacks-marketing-ai-seo/references/linkedin-ai-citations.md +131 -0
  179. package/ai/skills/stacks-marketing-ai-seo/references/okf.md +104 -0
  180. package/ai/skills/stacks-marketing-ai-seo/references/platform-ranking-factors.md +167 -0
  181. package/ai/skills/stacks-marketing-ai-seo/references/positioning-and-consensus.md +102 -0
  182. package/ai/skills/stacks-marketing-ai-seo/references/youtube-ai-citations.md +66 -0
  183. package/ai/skills/stacks-marketing-analytics/LICENSE +21 -0
  184. package/ai/skills/stacks-marketing-analytics/NOTICE.md +13 -0
  185. package/ai/skills/stacks-marketing-analytics/PLAYBOOK.md +307 -0
  186. package/ai/skills/stacks-marketing-analytics/SKILL.md +30 -0
  187. package/ai/skills/stacks-marketing-analytics/evals/evals.json +117 -0
  188. package/ai/skills/stacks-marketing-analytics/references/event-library.md +260 -0
  189. package/ai/skills/stacks-marketing-analytics/references/ga4-implementation.md +304 -0
  190. package/ai/skills/stacks-marketing-analytics/references/gtm-implementation.md +396 -0
  191. package/ai/skills/stacks-marketing-aso/LICENSE +21 -0
  192. package/ai/skills/stacks-marketing-aso/NOTICE.md +13 -0
  193. package/ai/skills/stacks-marketing-aso/PLAYBOOK.md +310 -0
  194. package/ai/skills/stacks-marketing-aso/SKILL.md +30 -0
  195. package/ai/skills/stacks-marketing-aso/evals/evals.json +104 -0
  196. package/ai/skills/stacks-marketing-aso/references/apple-specs.md +107 -0
  197. package/ai/skills/stacks-marketing-aso/references/benchmarks.md +131 -0
  198. package/ai/skills/stacks-marketing-aso/references/google-play-specs.md +135 -0
  199. package/ai/skills/stacks-marketing-aso/references/report-template.md +213 -0
  200. package/ai/skills/stacks-marketing-aso/references/scoring-criteria.md +213 -0
  201. package/ai/skills/stacks-marketing-attribution/LICENSE +21 -0
  202. package/ai/skills/stacks-marketing-attribution/NOTICE.md +13 -0
  203. package/ai/skills/stacks-marketing-attribution/PLAYBOOK.md +223 -0
  204. package/ai/skills/stacks-marketing-attribution/SKILL.md +30 -0
  205. package/ai/skills/stacks-marketing-attribution/evals/evals.json +128 -0
  206. package/ai/skills/stacks-marketing-attribution/references/attribution-models.md +74 -0
  207. package/ai/skills/stacks-marketing-attribution/references/by-business-type.md +54 -0
  208. package/ai/skills/stacks-marketing-attribution/references/first-party-tracking.md +253 -0
  209. package/ai/skills/stacks-marketing-attribution/references/measurement-paradigms.md +85 -0
  210. package/ai/skills/stacks-marketing-churn-prevention/LICENSE +21 -0
  211. package/ai/skills/stacks-marketing-churn-prevention/NOTICE.md +13 -0
  212. package/ai/skills/stacks-marketing-churn-prevention/PLAYBOOK.md +420 -0
  213. package/ai/skills/stacks-marketing-churn-prevention/SKILL.md +30 -0
  214. package/ai/skills/stacks-marketing-churn-prevention/evals/evals.json +107 -0
  215. package/ai/skills/stacks-marketing-churn-prevention/references/cancel-flow-patterns.md +316 -0
  216. package/ai/skills/stacks-marketing-churn-prevention/references/dunning-playbook.md +413 -0
  217. package/ai/skills/stacks-marketing-co-marketing/LICENSE +21 -0
  218. package/ai/skills/stacks-marketing-co-marketing/NOTICE.md +13 -0
  219. package/ai/skills/stacks-marketing-co-marketing/PLAYBOOK.md +306 -0
  220. package/ai/skills/stacks-marketing-co-marketing/SKILL.md +30 -0
  221. package/ai/skills/stacks-marketing-co-marketing/evals/evals.json +98 -0
  222. package/ai/skills/stacks-marketing-co-marketing/references/partnership-types.md +100 -0
  223. package/ai/skills/stacks-marketing-cold-email/LICENSE +21 -0
  224. package/ai/skills/stacks-marketing-cold-email/NOTICE.md +13 -0
  225. package/ai/skills/stacks-marketing-cold-email/PLAYBOOK.md +210 -0
  226. package/ai/skills/stacks-marketing-cold-email/SKILL.md +30 -0
  227. package/ai/skills/stacks-marketing-cold-email/evals/evals.json +137 -0
  228. package/ai/skills/stacks-marketing-cold-email/references/benchmarks.md +87 -0
  229. package/ai/skills/stacks-marketing-cold-email/references/deliverability.md +111 -0
  230. package/ai/skills/stacks-marketing-cold-email/references/follow-up-sequences.md +81 -0
  231. package/ai/skills/stacks-marketing-cold-email/references/frameworks.md +90 -0
  232. package/ai/skills/stacks-marketing-cold-email/references/linkedin-outreach.md +91 -0
  233. package/ai/skills/stacks-marketing-cold-email/references/multichannel-cadence.md +79 -0
  234. package/ai/skills/stacks-marketing-cold-email/references/outbound-plays.md +88 -0
  235. package/ai/skills/stacks-marketing-cold-email/references/personalization.md +90 -0
  236. package/ai/skills/stacks-marketing-cold-email/references/reply-handling.md +65 -0
  237. package/ai/skills/stacks-marketing-cold-email/references/subject-lines.md +53 -0
  238. package/ai/skills/stacks-marketing-community-marketing/LICENSE +21 -0
  239. package/ai/skills/stacks-marketing-community-marketing/NOTICE.md +13 -0
  240. package/ai/skills/stacks-marketing-community-marketing/PLAYBOOK.md +171 -0
  241. package/ai/skills/stacks-marketing-community-marketing/SKILL.md +30 -0
  242. package/ai/skills/stacks-marketing-community-marketing/evals/evals.json +103 -0
  243. package/ai/skills/stacks-marketing-community-marketing/references/community-models.md +63 -0
  244. package/ai/skills/stacks-marketing-competitor-profiling/LICENSE +21 -0
  245. package/ai/skills/stacks-marketing-competitor-profiling/NOTICE.md +13 -0
  246. package/ai/skills/stacks-marketing-competitor-profiling/PLAYBOOK.md +436 -0
  247. package/ai/skills/stacks-marketing-competitor-profiling/SKILL.md +30 -0
  248. package/ai/skills/stacks-marketing-competitor-profiling/evals/evals.json +97 -0
  249. package/ai/skills/stacks-marketing-competitor-profiling/references/templates.md +167 -0
  250. package/ai/skills/stacks-marketing-competitor-profiling/references/tool-reference.md +314 -0
  251. package/ai/skills/stacks-marketing-competitors/LICENSE +21 -0
  252. package/ai/skills/stacks-marketing-competitors/NOTICE.md +13 -0
  253. package/ai/skills/stacks-marketing-competitors/PLAYBOOK.md +283 -0
  254. package/ai/skills/stacks-marketing-competitors/SKILL.md +30 -0
  255. package/ai/skills/stacks-marketing-competitors/evals/evals.json +119 -0
  256. package/ai/skills/stacks-marketing-competitors/references/content-architecture.md +277 -0
  257. package/ai/skills/stacks-marketing-competitors/references/templates.md +226 -0
  258. package/ai/skills/stacks-marketing-content-strategy/LICENSE +21 -0
  259. package/ai/skills/stacks-marketing-content-strategy/NOTICE.md +13 -0
  260. package/ai/skills/stacks-marketing-content-strategy/PLAYBOOK.md +437 -0
  261. package/ai/skills/stacks-marketing-content-strategy/SKILL.md +30 -0
  262. package/ai/skills/stacks-marketing-content-strategy/evals/evals.json +116 -0
  263. package/ai/skills/stacks-marketing-content-strategy/references/content-distribution.md +83 -0
  264. package/ai/skills/stacks-marketing-content-strategy/references/headless-cms.md +194 -0
  265. package/ai/skills/stacks-marketing-copy-editing/LICENSE +21 -0
  266. package/ai/skills/stacks-marketing-copy-editing/NOTICE.md +13 -0
  267. package/ai/skills/stacks-marketing-copy-editing/PLAYBOOK.md +485 -0
  268. package/ai/skills/stacks-marketing-copy-editing/SKILL.md +30 -0
  269. package/ai/skills/stacks-marketing-copy-editing/evals/evals.json +117 -0
  270. package/ai/skills/stacks-marketing-copy-editing/references/checklist.md +77 -0
  271. package/ai/skills/stacks-marketing-copy-editing/references/content-refresh.md +71 -0
  272. package/ai/skills/stacks-marketing-copy-editing/references/plain-english-alternatives.md +394 -0
  273. package/ai/skills/stacks-marketing-copywriting/LICENSE +21 -0
  274. package/ai/skills/stacks-marketing-copywriting/NOTICE.md +13 -0
  275. package/ai/skills/stacks-marketing-copywriting/PLAYBOOK.md +282 -0
  276. package/ai/skills/stacks-marketing-copywriting/SKILL.md +30 -0
  277. package/ai/skills/stacks-marketing-copywriting/evals/evals.json +140 -0
  278. package/ai/skills/stacks-marketing-copywriting/references/ai-tells.md +261 -0
  279. package/ai/skills/stacks-marketing-copywriting/references/copy-frameworks.md +432 -0
  280. package/ai/skills/stacks-marketing-copywriting/references/natural-transitions.md +256 -0
  281. package/ai/skills/stacks-marketing-council/LICENSE +21 -0
  282. package/ai/skills/stacks-marketing-council/NOTICE.md +13 -0
  283. package/ai/skills/stacks-marketing-council/PLAYBOOK.md +157 -0
  284. package/ai/skills/stacks-marketing-council/SKILL.md +30 -0
  285. package/ai/skills/stacks-marketing-council/evals/evals.json +70 -0
  286. package/ai/skills/stacks-marketing-council/references/advisor-template.md +51 -0
  287. package/ai/skills/stacks-marketing-council/references/advisors/alex-hormozi.md +43 -0
  288. package/ai/skills/stacks-marketing-council/references/advisors/ann-handley.md +43 -0
  289. package/ai/skills/stacks-marketing-council/references/advisors/april-dunford.md +41 -0
  290. package/ai/skills/stacks-marketing-council/references/advisors/byron-sharp.md +43 -0
  291. package/ai/skills/stacks-marketing-council/references/advisors/claude-hopkins.md +42 -0
  292. package/ai/skills/stacks-marketing-council/references/advisors/david-ogilvy.md +42 -0
  293. package/ai/skills/stacks-marketing-council/references/advisors/eugene-schwartz.md +42 -0
  294. package/ai/skills/stacks-marketing-council/references/advisors/gary-halbert.md +43 -0
  295. package/ai/skills/stacks-marketing-council/references/advisors/gary-vaynerchuk.md +43 -0
  296. package/ai/skills/stacks-marketing-council/references/advisors/rory-sutherland.md +42 -0
  297. package/ai/skills/stacks-marketing-council/references/advisors/russell-brunson.md +43 -0
  298. package/ai/skills/stacks-marketing-council/references/advisors/seth-godin.md +43 -0
  299. package/ai/skills/stacks-marketing-cro/LICENSE +21 -0
  300. package/ai/skills/stacks-marketing-cro/NOTICE.md +13 -0
  301. package/ai/skills/stacks-marketing-cro/PLAYBOOK.md +194 -0
  302. package/ai/skills/stacks-marketing-cro/SKILL.md +30 -0
  303. package/ai/skills/stacks-marketing-cro/evals/evals.json +111 -0
  304. package/ai/skills/stacks-marketing-cro/references/experiments.md +248 -0
  305. package/ai/skills/stacks-marketing-cro/references/form.md +422 -0
  306. package/ai/skills/stacks-marketing-customer-research/LICENSE +21 -0
  307. package/ai/skills/stacks-marketing-customer-research/NOTICE.md +13 -0
  308. package/ai/skills/stacks-marketing-customer-research/PLAYBOOK.md +304 -0
  309. package/ai/skills/stacks-marketing-customer-research/SKILL.md +30 -0
  310. package/ai/skills/stacks-marketing-customer-research/evals/evals.json +176 -0
  311. package/ai/skills/stacks-marketing-customer-research/references/interviews-and-surveys.md +155 -0
  312. package/ai/skills/stacks-marketing-customer-research/references/source-guides.md +401 -0
  313. package/ai/skills/stacks-marketing-directory-submissions/LICENSE +21 -0
  314. package/ai/skills/stacks-marketing-directory-submissions/NOTICE.md +13 -0
  315. package/ai/skills/stacks-marketing-directory-submissions/PLAYBOOK.md +397 -0
  316. package/ai/skills/stacks-marketing-directory-submissions/SKILL.md +30 -0
  317. package/ai/skills/stacks-marketing-directory-submissions/evals/evals.json +121 -0
  318. package/ai/skills/stacks-marketing-directory-submissions/references/directory-list.md +545 -0
  319. package/ai/skills/stacks-marketing-directory-submissions/references/positioning-variations.md +232 -0
  320. package/ai/skills/stacks-marketing-directory-submissions/references/submission-tracker-template.csv +272 -0
  321. package/ai/skills/stacks-marketing-emails/LICENSE +21 -0
  322. package/ai/skills/stacks-marketing-emails/NOTICE.md +13 -0
  323. package/ai/skills/stacks-marketing-emails/PLAYBOOK.md +336 -0
  324. package/ai/skills/stacks-marketing-emails/SKILL.md +30 -0
  325. package/ai/skills/stacks-marketing-emails/evals/evals.json +105 -0
  326. package/ai/skills/stacks-marketing-emails/references/copy-guidelines.md +113 -0
  327. package/ai/skills/stacks-marketing-emails/references/email-types.md +515 -0
  328. package/ai/skills/stacks-marketing-emails/references/sequence-templates.md +168 -0
  329. package/ai/skills/stacks-marketing-events/LICENSE +21 -0
  330. package/ai/skills/stacks-marketing-events/NOTICE.md +13 -0
  331. package/ai/skills/stacks-marketing-events/PLAYBOOK.md +127 -0
  332. package/ai/skills/stacks-marketing-events/SKILL.md +30 -0
  333. package/ai/skills/stacks-marketing-events/evals/evals.json +92 -0
  334. package/ai/skills/stacks-marketing-events/references/event-portfolio-strategy.md +80 -0
  335. package/ai/skills/stacks-marketing-events/references/speaking.md +49 -0
  336. package/ai/skills/stacks-marketing-events/references/sponsorship-roi.md +57 -0
  337. package/ai/skills/stacks-marketing-events/references/webinar-funnel.md +88 -0
  338. package/ai/skills/stacks-marketing-free-tools/LICENSE +21 -0
  339. package/ai/skills/stacks-marketing-free-tools/NOTICE.md +13 -0
  340. package/ai/skills/stacks-marketing-free-tools/PLAYBOOK.md +186 -0
  341. package/ai/skills/stacks-marketing-free-tools/SKILL.md +30 -0
  342. package/ai/skills/stacks-marketing-free-tools/evals/evals.json +103 -0
  343. package/ai/skills/stacks-marketing-free-tools/references/tool-benchmarks.md +35 -0
  344. package/ai/skills/stacks-marketing-free-tools/references/tool-types.md +217 -0
  345. package/ai/skills/stacks-marketing-ideas/LICENSE +21 -0
  346. package/ai/skills/stacks-marketing-ideas/NOTICE.md +13 -0
  347. package/ai/skills/stacks-marketing-ideas/PLAYBOOK.md +167 -0
  348. package/ai/skills/stacks-marketing-ideas/SKILL.md +30 -0
  349. package/ai/skills/stacks-marketing-ideas/evals/evals.json +105 -0
  350. package/ai/skills/stacks-marketing-ideas/references/guerrilla-marketing.md +56 -0
  351. package/ai/skills/stacks-marketing-ideas/references/ideas-by-category.md +366 -0
  352. package/ai/skills/stacks-marketing-image/LICENSE +21 -0
  353. package/ai/skills/stacks-marketing-image/NOTICE.md +13 -0
  354. package/ai/skills/stacks-marketing-image/PLAYBOOK.md +336 -0
  355. package/ai/skills/stacks-marketing-image/SKILL.md +30 -0
  356. package/ai/skills/stacks-marketing-image/evals/evals.json +89 -0
  357. package/ai/skills/stacks-marketing-image/references/ai-image-prompting.md +229 -0
  358. package/ai/skills/stacks-marketing-influencer-marketing/LICENSE +21 -0
  359. package/ai/skills/stacks-marketing-influencer-marketing/NOTICE.md +13 -0
  360. package/ai/skills/stacks-marketing-influencer-marketing/PLAYBOOK.md +198 -0
  361. package/ai/skills/stacks-marketing-influencer-marketing/SKILL.md +30 -0
  362. package/ai/skills/stacks-marketing-influencer-marketing/evals/evals.json +89 -0
  363. package/ai/skills/stacks-marketing-influencer-marketing/references/ugc-creator-program.md +91 -0
  364. package/ai/skills/stacks-marketing-launch/LICENSE +21 -0
  365. package/ai/skills/stacks-marketing-launch/NOTICE.md +13 -0
  366. package/ai/skills/stacks-marketing-launch/PLAYBOOK.md +381 -0
  367. package/ai/skills/stacks-marketing-launch/SKILL.md +30 -0
  368. package/ai/skills/stacks-marketing-launch/evals/evals.json +135 -0
  369. package/ai/skills/stacks-marketing-launch/references/shipped-changes.md +84 -0
  370. package/ai/skills/stacks-marketing-launch/references/site-launch-qa.md +57 -0
  371. package/ai/skills/stacks-marketing-lead-magnets/LICENSE +21 -0
  372. package/ai/skills/stacks-marketing-lead-magnets/NOTICE.md +13 -0
  373. package/ai/skills/stacks-marketing-lead-magnets/PLAYBOOK.md +308 -0
  374. package/ai/skills/stacks-marketing-lead-magnets/SKILL.md +30 -0
  375. package/ai/skills/stacks-marketing-lead-magnets/evals/evals.json +105 -0
  376. package/ai/skills/stacks-marketing-lead-magnets/references/benchmarks.md +129 -0
  377. package/ai/skills/stacks-marketing-lead-magnets/references/content-to-skill-corpus-design.md +89 -0
  378. package/ai/skills/stacks-marketing-lead-magnets/references/content-to-skill-release.md +71 -0
  379. package/ai/skills/stacks-marketing-lead-magnets/references/content-to-skill.md +109 -0
  380. package/ai/skills/stacks-marketing-lead-magnets/references/format-guide.md +196 -0
  381. package/ai/skills/stacks-marketing-loops/LICENSE +21 -0
  382. package/ai/skills/stacks-marketing-loops/NOTICE.md +13 -0
  383. package/ai/skills/stacks-marketing-loops/PLAYBOOK.md +111 -0
  384. package/ai/skills/stacks-marketing-loops/SKILL.md +30 -0
  385. package/ai/skills/stacks-marketing-loops/evals/evals.json +133 -0
  386. package/ai/skills/stacks-marketing-loops/references/loop-catalog.md +796 -0
  387. package/ai/skills/stacks-marketing-loops/references/loop-guardrails.md +73 -0
  388. package/ai/skills/stacks-marketing-loops/references/loop-orchestration.md +71 -0
  389. package/ai/skills/stacks-marketing-loops/references/loop-state.md +67 -0
  390. package/ai/skills/stacks-marketing-loops/references/loop-template.md +79 -0
  391. package/ai/skills/stacks-marketing-loops/references/outbound-operator.md +86 -0
  392. package/ai/skills/stacks-marketing-loops/references/seo-operator.md +110 -0
  393. package/ai/skills/stacks-marketing-offers/LICENSE +21 -0
  394. package/ai/skills/stacks-marketing-offers/NOTICE.md +13 -0
  395. package/ai/skills/stacks-marketing-offers/PLAYBOOK.md +151 -0
  396. package/ai/skills/stacks-marketing-offers/SKILL.md +30 -0
  397. package/ai/skills/stacks-marketing-offers/evals/evals.json +21 -0
  398. package/ai/skills/stacks-marketing-offers/references/bonus-stacking.md +150 -0
  399. package/ai/skills/stacks-marketing-offers/references/examples.md +215 -0
  400. package/ai/skills/stacks-marketing-offers/references/guarantee-design.md +172 -0
  401. package/ai/skills/stacks-marketing-offers/references/offer-anatomy.md +203 -0
  402. package/ai/skills/stacks-marketing-offers/references/offer-formats.md +240 -0
  403. package/ai/skills/stacks-marketing-offers/references/saas-offers.md +116 -0
  404. package/ai/skills/stacks-marketing-offers/references/scarcity-urgency.md +175 -0
  405. package/ai/skills/stacks-marketing-offers/references/value-equation.md +134 -0
  406. package/ai/skills/stacks-marketing-onboarding/LICENSE +21 -0
  407. package/ai/skills/stacks-marketing-onboarding/NOTICE.md +13 -0
  408. package/ai/skills/stacks-marketing-onboarding/PLAYBOOK.md +257 -0
  409. package/ai/skills/stacks-marketing-onboarding/SKILL.md +30 -0
  410. package/ai/skills/stacks-marketing-onboarding/evals/evals.json +108 -0
  411. package/ai/skills/stacks-marketing-onboarding/references/activation-models.md +57 -0
  412. package/ai/skills/stacks-marketing-onboarding/references/experiments.md +258 -0
  413. package/ai/skills/stacks-marketing-onboarding/references/minimum-path-to-value.md +49 -0
  414. package/ai/skills/stacks-marketing-paywalls/LICENSE +21 -0
  415. package/ai/skills/stacks-marketing-paywalls/NOTICE.md +13 -0
  416. package/ai/skills/stacks-marketing-paywalls/PLAYBOOK.md +223 -0
  417. package/ai/skills/stacks-marketing-paywalls/SKILL.md +30 -0
  418. package/ai/skills/stacks-marketing-paywalls/evals/evals.json +93 -0
  419. package/ai/skills/stacks-marketing-paywalls/references/experiments.md +164 -0
  420. package/ai/skills/stacks-marketing-plan/LICENSE +21 -0
  421. package/ai/skills/stacks-marketing-plan/NOTICE.md +13 -0
  422. package/ai/skills/stacks-marketing-plan/PLAYBOOK.md +300 -0
  423. package/ai/skills/stacks-marketing-plan/SKILL.md +30 -0
  424. package/ai/skills/stacks-marketing-plan/evals/evals.json +140 -0
  425. package/ai/skills/stacks-marketing-plan/references/aarrr-framework.md +180 -0
  426. package/ai/skills/stacks-marketing-plan/references/budget-planning.md +177 -0
  427. package/ai/skills/stacks-marketing-plan/references/client-types.md +373 -0
  428. package/ai/skills/stacks-marketing-plan/references/current-state-rubric.md +255 -0
  429. package/ai/skills/stacks-marketing-plan/references/example-quietude.md +972 -0
  430. package/ai/skills/stacks-marketing-plan/references/funding-stage-unlocks.md +230 -0
  431. package/ai/skills/stacks-marketing-plan/references/growth-patterns.md +190 -0
  432. package/ai/skills/stacks-marketing-plan/references/idea-cross-reference.md +265 -0
  433. package/ai/skills/stacks-marketing-plan/references/market-sizing.md +166 -0
  434. package/ai/skills/stacks-marketing-plan/references/measurement-framework.md +213 -0
  435. package/ai/skills/stacks-marketing-plan/references/methodology.md +365 -0
  436. package/ai/skills/stacks-marketing-plan/references/ops-stack-mapping.md +197 -0
  437. package/ai/skills/stacks-marketing-plan/references/plan-template.md +494 -0
  438. package/ai/skills/stacks-marketing-plan/references/team-and-agency-model.md +278 -0
  439. package/ai/skills/stacks-marketing-popups/LICENSE +21 -0
  440. package/ai/skills/stacks-marketing-popups/NOTICE.md +13 -0
  441. package/ai/skills/stacks-marketing-popups/PLAYBOOK.md +450 -0
  442. package/ai/skills/stacks-marketing-popups/SKILL.md +30 -0
  443. package/ai/skills/stacks-marketing-popups/evals/evals.json +94 -0
  444. package/ai/skills/stacks-marketing-pricing/LICENSE +21 -0
  445. package/ai/skills/stacks-marketing-pricing/NOTICE.md +13 -0
  446. package/ai/skills/stacks-marketing-pricing/PLAYBOOK.md +291 -0
  447. package/ai/skills/stacks-marketing-pricing/SKILL.md +30 -0
  448. package/ai/skills/stacks-marketing-pricing/evals/evals.json +131 -0
  449. package/ai/skills/stacks-marketing-pricing/references/pricing-models.md +66 -0
  450. package/ai/skills/stacks-marketing-pricing/references/pricing-page-teardown.md +87 -0
  451. package/ai/skills/stacks-marketing-pricing/references/research-methods.md +156 -0
  452. package/ai/skills/stacks-marketing-pricing/references/tier-structure.md +232 -0
  453. package/ai/skills/stacks-marketing-product-marketing/LICENSE +21 -0
  454. package/ai/skills/stacks-marketing-product-marketing/NOTICE.md +13 -0
  455. package/ai/skills/stacks-marketing-product-marketing/PLAYBOOK.md +255 -0
  456. package/ai/skills/stacks-marketing-product-marketing/SKILL.md +30 -0
  457. package/ai/skills/stacks-marketing-product-marketing/evals/evals.json +98 -0
  458. package/ai/skills/stacks-marketing-programmatic-seo/LICENSE +21 -0
  459. package/ai/skills/stacks-marketing-programmatic-seo/NOTICE.md +13 -0
  460. package/ai/skills/stacks-marketing-programmatic-seo/PLAYBOOK.md +238 -0
  461. package/ai/skills/stacks-marketing-programmatic-seo/SKILL.md +30 -0
  462. package/ai/skills/stacks-marketing-programmatic-seo/evals/evals.json +107 -0
  463. package/ai/skills/stacks-marketing-programmatic-seo/references/implementation-platforms.md +41 -0
  464. package/ai/skills/stacks-marketing-programmatic-seo/references/playbooks.md +308 -0
  465. package/ai/skills/stacks-marketing-prospecting/LICENSE +21 -0
  466. package/ai/skills/stacks-marketing-prospecting/NOTICE.md +13 -0
  467. package/ai/skills/stacks-marketing-prospecting/PLAYBOOK.md +273 -0
  468. package/ai/skills/stacks-marketing-prospecting/SKILL.md +30 -0
  469. package/ai/skills/stacks-marketing-prospecting/evals/evals.json +163 -0
  470. package/ai/skills/stacks-marketing-prospecting/references/account-research.md +59 -0
  471. package/ai/skills/stacks-marketing-prospecting/references/b2b-prospecting.md +106 -0
  472. package/ai/skills/stacks-marketing-prospecting/references/compliance.md +161 -0
  473. package/ai/skills/stacks-marketing-prospecting/references/data-sources.md +300 -0
  474. package/ai/skills/stacks-marketing-prospecting/references/demand-signals.md +131 -0
  475. package/ai/skills/stacks-marketing-prospecting/references/enrichment-playbook.md +61 -0
  476. package/ai/skills/stacks-marketing-prospecting/references/local-prospecting.md +165 -0
  477. package/ai/skills/stacks-marketing-prospecting/references/saas-prospecting.md +123 -0
  478. package/ai/skills/stacks-marketing-prospecting/references/signal-plays.md +99 -0
  479. package/ai/skills/stacks-marketing-prospecting/references/sourcing-and-enrichment.md +89 -0
  480. package/ai/skills/stacks-marketing-psychology/LICENSE +21 -0
  481. package/ai/skills/stacks-marketing-psychology/NOTICE.md +13 -0
  482. package/ai/skills/stacks-marketing-psychology/PLAYBOOK.md +451 -0
  483. package/ai/skills/stacks-marketing-psychology/SKILL.md +30 -0
  484. package/ai/skills/stacks-marketing-psychology/evals/evals.json +88 -0
  485. package/ai/skills/stacks-marketing-public-relations/LICENSE +21 -0
  486. package/ai/skills/stacks-marketing-public-relations/NOTICE.md +13 -0
  487. package/ai/skills/stacks-marketing-public-relations/PLAYBOOK.md +150 -0
  488. package/ai/skills/stacks-marketing-public-relations/SKILL.md +30 -0
  489. package/ai/skills/stacks-marketing-public-relations/evals/evals.json +36 -0
  490. package/ai/skills/stacks-marketing-public-relations/references/crisis-communications.md +113 -0
  491. package/ai/skills/stacks-marketing-public-relations/references/journalist-pitching.md +368 -0
  492. package/ai/skills/stacks-marketing-public-relations/references/media-outlets.md +207 -0
  493. package/ai/skills/stacks-marketing-public-relations/references/newsjacking.md +220 -0
  494. package/ai/skills/stacks-marketing-public-relations/references/podcast-guest-prep.md +60 -0
  495. package/ai/skills/stacks-marketing-public-relations/references/press-platforms.md +188 -0
  496. package/ai/skills/stacks-marketing-public-relations/references/statement-templates.md +145 -0
  497. package/ai/skills/stacks-marketing-public-relations/references/story-angles.md +87 -0
  498. package/ai/skills/stacks-marketing-referrals/LICENSE +21 -0
  499. package/ai/skills/stacks-marketing-referrals/NOTICE.md +13 -0
  500. package/ai/skills/stacks-marketing-referrals/PLAYBOOK.md +279 -0
  501. package/ai/skills/stacks-marketing-referrals/SKILL.md +30 -0
  502. package/ai/skills/stacks-marketing-referrals/evals/evals.json +202 -0
  503. package/ai/skills/stacks-marketing-referrals/references/affiliate-operations.md +64 -0
  504. package/ai/skills/stacks-marketing-referrals/references/affiliate-programs.md +167 -0
  505. package/ai/skills/stacks-marketing-referrals/references/program-examples.md +151 -0
  506. package/ai/skills/stacks-marketing-referrals/references/review-platform-rules.md +36 -0
  507. package/ai/skills/stacks-marketing-referrals/references/review-program-operations.md +62 -0
  508. package/ai/skills/stacks-marketing-referrals/references/review-programs.md +96 -0
  509. package/ai/skills/stacks-marketing-referrals/references/viral-mechanisms.md +102 -0
  510. package/ai/skills/stacks-marketing-revops/LICENSE +21 -0
  511. package/ai/skills/stacks-marketing-revops/NOTICE.md +13 -0
  512. package/ai/skills/stacks-marketing-revops/PLAYBOOK.md +345 -0
  513. package/ai/skills/stacks-marketing-revops/SKILL.md +30 -0
  514. package/ai/skills/stacks-marketing-revops/evals/evals.json +104 -0
  515. package/ai/skills/stacks-marketing-revops/references/automation-playbooks.md +290 -0
  516. package/ai/skills/stacks-marketing-revops/references/inbound-routing.md +43 -0
  517. package/ai/skills/stacks-marketing-revops/references/lifecycle-definitions.md +309 -0
  518. package/ai/skills/stacks-marketing-revops/references/routing-rules.md +203 -0
  519. package/ai/skills/stacks-marketing-revops/references/scoring-models.md +247 -0
  520. package/ai/skills/stacks-marketing-sales-enablement/LICENSE +21 -0
  521. package/ai/skills/stacks-marketing-sales-enablement/NOTICE.md +13 -0
  522. package/ai/skills/stacks-marketing-sales-enablement/PLAYBOOK.md +423 -0
  523. package/ai/skills/stacks-marketing-sales-enablement/SKILL.md +30 -0
  524. package/ai/skills/stacks-marketing-sales-enablement/evals/evals.json +153 -0
  525. package/ai/skills/stacks-marketing-sales-enablement/references/cold-call-scripts.md +68 -0
  526. package/ai/skills/stacks-marketing-sales-enablement/references/deck-frameworks.md +263 -0
  527. package/ai/skills/stacks-marketing-sales-enablement/references/demo-scripts.md +355 -0
  528. package/ai/skills/stacks-marketing-sales-enablement/references/objection-library.md +270 -0
  529. package/ai/skills/stacks-marketing-sales-enablement/references/one-pager-templates.md +208 -0
  530. package/ai/skills/stacks-marketing-sales-enablement/references/win-loss-analysis.md +72 -0
  531. package/ai/skills/stacks-marketing-schema/LICENSE +21 -0
  532. package/ai/skills/stacks-marketing-schema/NOTICE.md +13 -0
  533. package/ai/skills/stacks-marketing-schema/PLAYBOOK.md +187 -0
  534. package/ai/skills/stacks-marketing-schema/SKILL.md +30 -0
  535. package/ai/skills/stacks-marketing-schema/evals/evals.json +127 -0
  536. package/ai/skills/stacks-marketing-schema/references/schema-examples.md +392 -0
  537. package/ai/skills/stacks-marketing-seo-audit/LICENSE +21 -0
  538. package/ai/skills/stacks-marketing-seo-audit/NOTICE.md +13 -0
  539. package/ai/skills/stacks-marketing-seo-audit/PLAYBOOK.md +492 -0
  540. package/ai/skills/stacks-marketing-seo-audit/SKILL.md +30 -0
  541. package/ai/skills/stacks-marketing-seo-audit/evals/evals.json +204 -0
  542. package/ai/skills/stacks-marketing-seo-audit/references/ai-writing-detection.md +200 -0
  543. package/ai/skills/stacks-marketing-seo-audit/references/international-seo.md +228 -0
  544. package/ai/skills/stacks-marketing-seo-audit/references/local-seo-pages-and-measurement.md +39 -0
  545. package/ai/skills/stacks-marketing-seo-audit/references/local-seo-profile-and-citations.md +41 -0
  546. package/ai/skills/stacks-marketing-seo-audit/references/local-seo.md +86 -0
  547. package/ai/skills/stacks-marketing-seo-audit/references/rankings-push.md +62 -0
  548. package/ai/skills/stacks-marketing-seo-audit/references/title-tags.md +89 -0
  549. package/ai/skills/stacks-marketing-signup/LICENSE +21 -0
  550. package/ai/skills/stacks-marketing-signup/NOTICE.md +13 -0
  551. package/ai/skills/stacks-marketing-signup/PLAYBOOK.md +359 -0
  552. package/ai/skills/stacks-marketing-signup/SKILL.md +30 -0
  553. package/ai/skills/stacks-marketing-signup/evals/evals.json +88 -0
  554. package/ai/skills/stacks-marketing-site-architecture/LICENSE +21 -0
  555. package/ai/skills/stacks-marketing-site-architecture/NOTICE.md +13 -0
  556. package/ai/skills/stacks-marketing-site-architecture/PLAYBOOK.md +355 -0
  557. package/ai/skills/stacks-marketing-site-architecture/SKILL.md +30 -0
  558. package/ai/skills/stacks-marketing-site-architecture/evals/evals.json +113 -0
  559. package/ai/skills/stacks-marketing-site-architecture/references/mermaid-templates.md +216 -0
  560. package/ai/skills/stacks-marketing-site-architecture/references/navigation-patterns.md +305 -0
  561. package/ai/skills/stacks-marketing-site-architecture/references/platforms-and-migration.md +86 -0
  562. package/ai/skills/stacks-marketing-site-architecture/references/site-type-templates.md +293 -0
  563. package/ai/skills/stacks-marketing-sms/LICENSE +21 -0
  564. package/ai/skills/stacks-marketing-sms/NOTICE.md +13 -0
  565. package/ai/skills/stacks-marketing-sms/PLAYBOOK.md +348 -0
  566. package/ai/skills/stacks-marketing-sms/SKILL.md +30 -0
  567. package/ai/skills/stacks-marketing-sms/evals/evals.json +118 -0
  568. package/ai/skills/stacks-marketing-sms/references/compliance.md +202 -0
  569. package/ai/skills/stacks-marketing-sms/references/platforms.md +318 -0
  570. package/ai/skills/stacks-marketing-sms/references/sequence-templates.md +282 -0
  571. package/ai/skills/stacks-marketing-sms/references/whatsapp.md +260 -0
  572. package/ai/skills/stacks-marketing-social/LICENSE +21 -0
  573. package/ai/skills/stacks-marketing-social/NOTICE.md +13 -0
  574. package/ai/skills/stacks-marketing-social/PLAYBOOK.md +452 -0
  575. package/ai/skills/stacks-marketing-social/SKILL.md +30 -0
  576. package/ai/skills/stacks-marketing-social/evals/evals.json +150 -0
  577. package/ai/skills/stacks-marketing-social/references/carousel-frameworks.md +141 -0
  578. package/ai/skills/stacks-marketing-social/references/listening-sources-template.md +123 -0
  579. package/ai/skills/stacks-marketing-social/references/listening.md +288 -0
  580. package/ai/skills/stacks-marketing-social/references/platform-limits.md +110 -0
  581. package/ai/skills/stacks-marketing-social/references/platforms.md +176 -0
  582. package/ai/skills/stacks-marketing-social/references/post-templates.md +179 -0
  583. package/ai/skills/stacks-marketing-social/references/reverse-engineering.md +195 -0
  584. package/ai/skills/stacks-marketing-social/references/short-form-video.md +237 -0
  585. package/ai/skills/stacks-marketing-social/references/x-algorithm.md +69 -0
  586. package/ai/skills/stacks-marketing-video/LICENSE +21 -0
  587. package/ai/skills/stacks-marketing-video/NOTICE.md +13 -0
  588. package/ai/skills/stacks-marketing-video/PLAYBOOK.md +330 -0
  589. package/ai/skills/stacks-marketing-video/SKILL.md +30 -0
  590. package/ai/skills/stacks-marketing-video/evals/evals.json +118 -0
  591. package/ai/skills/stacks-marketing-video/references/ai-video-prompting.md +175 -0
  592. package/ai/skills/stacks-marketing-video/references/edit-anatomy.md +86 -0
  593. package/ai/skills/stacks-marketing-video/references/product-demo-recording.md +176 -0
  594. package/ai/skills/stacks-middleware/SKILL.md +37 -21
  595. package/ai/skills/stacks-migrations/SKILL.md +29 -5
  596. package/ai/skills/stacks-mobile/SKILL.md +25 -4
  597. package/ai/skills/stacks-models/SKILL.md +35 -15
  598. package/ai/skills/stacks-models/references/model-capabilities.md +104 -0
  599. package/ai/skills/stacks-native/CAPABILITIES.md +536 -0
  600. package/ai/skills/stacks-native/CATALOG.md +930 -0
  601. package/ai/skills/stacks-native/RECIPES.md +108 -0
  602. package/ai/skills/stacks-native/SKILL.md +79 -0
  603. package/ai/skills/stacks-newsletter/SKILL.md +39 -0
  604. package/ai/skills/stacks-notifications/SKILL.md +118 -203
  605. package/ai/skills/stacks-objects/SKILL.md +18 -4
  606. package/ai/skills/stacks-orm/SKILL.md +112 -328
  607. package/ai/skills/stacks-pagination/SKILL.md +40 -0
  608. package/ai/skills/stacks-path/SKILL.md +38 -18
  609. package/ai/skills/stacks-payments/SKILL.md +9 -1
  610. package/ai/skills/stacks-pr/CREDITS.md +3 -0
  611. package/ai/skills/stacks-pr/LICENSE +21 -0
  612. package/ai/skills/stacks-pr/NOTICE.md +10 -0
  613. package/ai/skills/stacks-pr/PLAYBOOK.md +127 -0
  614. package/ai/skills/stacks-pr/SKILL.md +23 -0
  615. package/ai/skills/stacks-prototype/LICENSE +21 -0
  616. package/ai/skills/stacks-prototype/NOTICE.md +10 -0
  617. package/ai/skills/stacks-prototype/SKILL.md +6 -0
  618. package/ai/skills/stacks-push/SKILL.md +20 -0
  619. package/ai/skills/stacks-query-builder/SKILL.md +21 -5
  620. package/ai/skills/stacks-queue/DURABLE-WORKFLOWS.md +121 -0
  621. package/ai/skills/stacks-queue/SKILL.md +37 -6
  622. package/ai/skills/stacks-realtime/SKILL.md +29 -140
  623. package/ai/skills/stacks-redesign/SKILL.md +1 -1
  624. package/ai/skills/stacks-registry/SKILL.md +20 -48
  625. package/ai/skills/stacks-repl/SKILL.md +31 -7
  626. package/ai/skills/stacks-research/LICENSE +21 -0
  627. package/ai/skills/stacks-research/NOTICE.md +10 -0
  628. package/ai/skills/stacks-research/PLAYBOOK.md +10 -0
  629. package/ai/skills/stacks-research/SKILL.md +23 -0
  630. package/ai/skills/stacks-retro/LICENSE +21 -0
  631. package/ai/skills/stacks-retro/NOTICE.md +10 -0
  632. package/ai/skills/stacks-retro/SKILL.md +10 -0
  633. package/ai/skills/stacks-review/LICENSE +21 -0
  634. package/ai/skills/stacks-review/NOTICE.md +10 -0
  635. package/ai/skills/stacks-review/SKILL.md +15 -0
  636. package/ai/skills/stacks-router/SKILL.md +33 -2
  637. package/ai/skills/stacks-routes/SKILL.md +25 -2
  638. package/ai/skills/stacks-scaffold-exercises/LICENSE +21 -0
  639. package/ai/skills/stacks-scaffold-exercises/NOTICE.md +10 -0
  640. package/ai/skills/stacks-scaffold-exercises/PLAYBOOK.md +106 -0
  641. package/ai/skills/stacks-scaffold-exercises/SKILL.md +23 -0
  642. package/ai/skills/stacks-scaffolding/SKILL.md +27 -11
  643. package/ai/skills/stacks-scheduler/SKILL.md +52 -25
  644. package/ai/skills/stacks-search-engine/SKILL.md +28 -7
  645. package/ai/skills/stacks-security/SKILL.md +22 -6
  646. package/ai/skills/stacks-server/SKILL.md +47 -85
  647. package/ai/skills/stacks-setup-deep-modules/LICENSE +21 -0
  648. package/ai/skills/stacks-setup-deep-modules/NOTICE.md +10 -0
  649. package/ai/skills/stacks-setup-deep-modules/SKILL.md +55 -0
  650. package/ai/skills/stacks-setup-engineering/LICENSE +21 -0
  651. package/ai/skills/stacks-setup-engineering/NOTICE.md +10 -0
  652. package/ai/skills/stacks-setup-engineering/PLAYBOOK.md +115 -0
  653. package/ai/skills/stacks-setup-engineering/SKILL.md +24 -0
  654. package/ai/skills/stacks-setup-engineering/domain.md +51 -0
  655. package/ai/skills/stacks-setup-engineering/issue-tracker-github.md +46 -0
  656. package/ai/skills/stacks-setup-engineering/issue-tracker-gitlab.md +46 -0
  657. package/ai/skills/stacks-setup-engineering/issue-tracker-local.md +30 -0
  658. package/ai/skills/stacks-setup-engineering/triage-labels.md +15 -0
  659. package/ai/skills/stacks-sites/SKILL.md +44 -0
  660. package/ai/skills/stacks-skills/SKILL.md +33 -0
  661. package/ai/skills/stacks-slug/SKILL.md +15 -12
  662. package/ai/skills/stacks-sms/SKILL.md +33 -6
  663. package/ai/skills/stacks-socials/SKILL.md +81 -294
  664. package/ai/skills/stacks-storage/SKILL.md +34 -15
  665. package/ai/skills/stacks-storage/UPLOADS-AND-DISKS.md +133 -0
  666. package/ai/skills/stacks-strings/SKILL.md +41 -35
  667. package/ai/skills/stacks-stx/SKILL.md +63 -58
  668. package/ai/skills/stacks-tdd/LICENSE +21 -0
  669. package/ai/skills/stacks-tdd/NOTICE.md +10 -0
  670. package/ai/skills/stacks-tdd/SKILL.md +10 -0
  671. package/ai/skills/stacks-tdd/mocking.md +59 -0
  672. package/ai/skills/stacks-tdd/tests.md +77 -0
  673. package/ai/skills/stacks-teach/GLOSSARY-FORMAT.md +35 -0
  674. package/ai/skills/stacks-teach/LEARNING-RECORD-FORMAT.md +46 -0
  675. package/ai/skills/stacks-teach/LICENSE +21 -0
  676. package/ai/skills/stacks-teach/MISSION-FORMAT.md +31 -0
  677. package/ai/skills/stacks-teach/NOTICE.md +10 -0
  678. package/ai/skills/stacks-teach/PLAYBOOK.md +136 -0
  679. package/ai/skills/stacks-teach/RESOURCES-FORMAT.md +32 -0
  680. package/ai/skills/stacks-teach/SKILL.md +24 -0
  681. package/ai/skills/stacks-technical-diagrams/SKILL.md +2 -2
  682. package/ai/skills/stacks-technical-diagrams/bin/diagrams +1 -1
  683. package/ai/skills/stacks-technical-diagrams/renderers/shared/bun-runtime.mjs +1 -1
  684. package/ai/skills/stacks-test-fixtures/LICENSE +21 -0
  685. package/ai/skills/stacks-test-fixtures/NOTICE.md +10 -0
  686. package/ai/skills/stacks-test-fixtures/SKILL.md +38 -0
  687. package/ai/skills/stacks-testing/SKILL.md +77 -4
  688. package/ai/skills/stacks-to-questionnaire/LICENSE +21 -0
  689. package/ai/skills/stacks-to-questionnaire/NOTICE.md +10 -0
  690. package/ai/skills/stacks-to-questionnaire/PLAYBOOK.md +51 -0
  691. package/ai/skills/stacks-to-questionnaire/SKILL.md +24 -0
  692. package/ai/skills/stacks-to-spec/LICENSE +21 -0
  693. package/ai/skills/stacks-to-spec/NOTICE.md +10 -0
  694. package/ai/skills/stacks-to-spec/PLAYBOOK.md +72 -0
  695. package/ai/skills/stacks-to-spec/SKILL.md +24 -0
  696. package/ai/skills/stacks-to-tickets/LICENSE +21 -0
  697. package/ai/skills/stacks-to-tickets/NOTICE.md +10 -0
  698. package/ai/skills/stacks-to-tickets/PLAYBOOK.md +102 -0
  699. package/ai/skills/stacks-to-tickets/SKILL.md +24 -0
  700. package/ai/skills/stacks-triage/AGENT-BRIEF.md +207 -0
  701. package/ai/skills/stacks-triage/LICENSE +21 -0
  702. package/ai/skills/stacks-triage/NOTICE.md +10 -0
  703. package/ai/skills/stacks-triage/OUT-OF-SCOPE.md +105 -0
  704. package/ai/skills/stacks-triage/PLAYBOOK.md +109 -0
  705. package/ai/skills/stacks-triage/SKILL.md +24 -0
  706. package/ai/skills/stacks-tunnel/SKILL.md +29 -19
  707. package/ai/skills/stacks-types/SKILL.md +77 -168
  708. package/ai/skills/stacks-ui/SKILL.md +66 -228
  709. package/ai/skills/stacks-unslop/NOTICE.md +25 -0
  710. package/ai/skills/stacks-unslop/SKILL.md +95 -0
  711. package/ai/skills/stacks-unslop/references/core-contract.md +88 -0
  712. package/ai/skills/stacks-unslop/references/patterns.md +110 -0
  713. package/ai/skills/stacks-unslop/references/presets.md +37 -0
  714. package/ai/skills/stacks-unslop/references/voice.md +95 -0
  715. package/ai/skills/stacks-utils/SKILL.md +45 -25
  716. package/ai/skills/stacks-validation/SKILL.md +67 -4
  717. package/ai/skills/stacks-video/SKILL.md +33 -0
  718. package/ai/skills/stacks-wait-what/LICENSE +21 -0
  719. package/ai/skills/stacks-wait-what/NOTICE.md +10 -0
  720. package/ai/skills/stacks-wait-what/PLAYBOOK.md +4 -0
  721. package/ai/skills/stacks-wait-what/SKILL.md +24 -0
  722. package/ai/skills/stacks-wayfinder/LICENSE +21 -0
  723. package/ai/skills/stacks-wayfinder/NOTICE.md +10 -0
  724. package/ai/skills/stacks-wayfinder/PLAYBOOK.md +125 -0
  725. package/ai/skills/stacks-wayfinder/SKILL.md +24 -0
  726. package/ai/skills/stacks-whois/SKILL.md +13 -3
  727. package/ai/skills/stacks-wizard/LICENSE +21 -0
  728. package/ai/skills/stacks-wizard/NOTICE.md +10 -0
  729. package/ai/skills/stacks-wizard/SKILL.md +8 -0
  730. package/ai/skills/stacks-wizard/scripts/template.sh +42 -26
  731. package/ai/skills/stacks-writing-beats/LICENSE +21 -0
  732. package/ai/skills/stacks-writing-beats/NOTICE.md +10 -0
  733. package/ai/skills/stacks-writing-beats/PLAYBOOK.md +64 -0
  734. package/ai/skills/stacks-writing-beats/SKILL.md +28 -0
  735. package/ai/skills/stacks-writing-for-agents/LICENSE +21 -0
  736. package/ai/skills/stacks-writing-for-agents/NOTICE.md +10 -0
  737. package/ai/skills/stacks-writing-for-agents/SKILL.md +7 -1
  738. package/ai/skills/stacks-writing-fragments/LICENSE +21 -0
  739. package/ai/skills/stacks-writing-fragments/NOTICE.md +10 -0
  740. package/ai/skills/stacks-writing-fragments/PLAYBOOK.md +76 -0
  741. package/ai/skills/stacks-writing-fragments/SKILL.md +28 -0
  742. package/ai/skills/stacks-writing-shape/LICENSE +21 -0
  743. package/ai/skills/stacks-writing-shape/NOTICE.md +10 -0
  744. package/ai/skills/stacks-writing-shape/PLAYBOOK.md +76 -0
  745. package/ai/skills/stacks-writing-shape/SKILL.md +28 -0
  746. package/ide/vscode/package.json +1 -1
  747. package/package.json +2 -2
  748. /package/ai/skills/stacks-technical-diagrams/{bunfig.toml → runtime.toml} +0 -0
@@ -0,0 +1,113 @@
1
+ # Native account workflows
2
+
3
+ Read this when an account feature needs the native workflow rather than a token
4
+ or TOTP primitive. All source paths below start at
5
+ `storage/framework/core/auth/`. Public exports are in `src/index.ts`.
6
+
7
+ ## Passwordless magic links
8
+
9
+ `sendMagicLink(email, options?)` accepts redirectTo, siteId, ttlMinutes and
10
+ createUser. Enable `config.auth.magicLink` and its route bundle before building
11
+ a form around the default actions. The native link flow keeps the bearer hashed
12
+ at rest and uses a POST to consume it; GET is an interstitial because mail
13
+ scanners prefetch links.
14
+
15
+ `consumeMagicLink(raw)` returns a discriminated result with userId/email/redirect
16
+ on success, or invalid/expired/used/no-user. The transactional `withMagicLink`
17
+ helper binds consumption to issuance; read its callback signature before writing
18
+ an alternative action. `pruneMagicLinkTokens(olderThanDays?)` removes old state.
19
+ Redirects must be local paths, and successful consume does not by itself set an
20
+ HTTP cookie. Keep issuance inside the native completed-login flow.
21
+
22
+ Source: `src/magic-link.ts`. Evidence: `tests/magic-link.test.ts`,
23
+ `magic-link-owner.test.ts`, `magic-link-send-atomicity.test.ts` and
24
+ `magic-link-drivers.test.ts`. A database failure or mail failure is not a reason
25
+ to return an unusable credential as successful login.
26
+
27
+ ## Two-factor setup and completed login
28
+
29
+ `TwoFactor` and its named functions manage setup, pending secrets, challenges,
30
+ verification and recovery, beyond generating a TOTP code. Native functions
31
+ include generateTwoFactorSetup, stashPendingTwoFactorSecret,
32
+ consumePendingTwoFactorSecret, enableTwoFactor, disableTwoFactor,
33
+ verifyTwoFactorLoginCode, createTwoFactorChallenge, consumeTwoFactorChallenge,
34
+ withTwoFactorChallenge and revokeTwoFactorChallenges.
35
+
36
+ Use the default action flow as the application reference: the password step
37
+ creates a challenge, and completed verification issues the actual browser
38
+ credential. The challenge carries the remembered-lifetime choice. Setup and
39
+ disable actions impose their own proof and reauthentication requirements;
40
+ low-level helper calls do not establish that the caller owns the account.
41
+
42
+ Source: `src/two-factor.ts` and default auth actions. Evidence:
43
+ `tests/two-factor-login-wiring.test.ts`, `two-factor-recovery.test.ts`,
44
+ `two-factor-disable-reauth.test.ts`, `two-factor-challenge-atomicity.test.ts` and
45
+ `two-factor-state-atomicity.test.ts`.
46
+
47
+ ## Cookie tokens and database sessions
48
+
49
+ Bearer/token-cookie auth and `SessionAuth` database sessions use different
50
+ credentials. The default Auth middleware tries a parsed bearer, then the
51
+ configured auth token cookie, then `session_id`, and stamps the request user.
52
+ `authCookieName`, authCookie/clearAuthCookie, userFromCookie/cookieCheck and
53
+ logoutCookie are native cookie helpers. Cookie writes need the normal browser
54
+ CSRF flow; a cookie is not a bearer header.
55
+
56
+ `SessionAuth.login` persists a session with an expiry; logout/destroyAll are
57
+ awaitable mutations. user/check/refresh validate owner, deadline and optional
58
+ idle timeout. `config.auth.idleTimeout` is milliseconds; fingerprint enforcement
59
+ is opt-in via `config.auth.session.enforceFingerprint`, true or individual
60
+ ip/userAgent flags. A changing mobile IP can make enforcement inappropriate.
61
+ Reads outside a request lack a client fingerprint. Session refresh accepts a
62
+ positive finite TTL and uses an observed-version update so it cannot resurrect
63
+ an expired/deleted credential.
64
+
65
+ Browser-session policy is separately resolved by resolveBrowserSessionPolicy.
66
+ Read `config/auth.ts`: baseline and remembered defaults currently share
67
+ tokenExpiry, and an app may configure them differently. Dedicated personal
68
+ access token and delegated OAuth issuance do not inherit the browser policy.
69
+
70
+ Source: `src/cookie-auth.ts`, `browser-session.ts`, `request-token.ts`,
71
+ `session-auth.ts`, `page-gate.ts`. Evidence: `tests/session-http-lifecycle.test.ts`,
72
+ `session-idle-timeout.test.ts`, `session-refresh-atomicity.test.ts`,
73
+ `browser-session-policy.test.ts` and `auth-cookie-name.test.ts`.
74
+
75
+ ## Roles, permissions and active teams
76
+
77
+ RBAC lazily creates the native bun-query-builder store; a custom RbacStore is
78
+ optional. Apply role/permission/pivot migrations before assigning roles.
79
+ `seedDefaultRoles()` idempotently creates admin/dev/client role packs with their
80
+ declared guards. It does not seed the application's permission taxonomy.
81
+ Guard-scoped sync preserves other guards. Direct SQL changes require explicit
82
+ RBAC cache invalidation. A role name that drives UI visibility is not a substitute
83
+ for action authorization.
84
+
85
+ `resolveTeamContext(request, { allowAnyTeam? })` returns user, current team,
86
+ role, switchable teams and the active preference. Related helpers include
87
+ resolveAuthenticatedMembership, resolveAuthenticatedTeamId,
88
+ resolveAuthenticatedUser, buildActiveTeamCookie and clearActiveTeamCookie.
89
+ An active-team cookie is a preference, not proof of membership; the resolver
90
+ checks the authenticated user's active membership. An operator override is
91
+ application policy and must remain server-owned.
92
+
93
+ Source: `src/rbac.ts`, `rbac-store-bqb.ts`, `rbac-seed.ts` and `team.ts`.
94
+ Evidence: `tests/rbac-default-store.test.ts`, `rbac-guard-sync.test.ts`,
95
+ `rbac-seed.test.ts` and `active-team.test.ts`.
96
+
97
+ ## Social identity linking and referrals
98
+
99
+ `resolveSocialSignIn(provider, identity, store?)` resolves durable provider-id
100
+ links first, then applies `config.auth.socials.matching`: link/create/refuse.
101
+ An email match is subject to the identity verification policy; copying an email
102
+ from a provider payload is not sufficient proof to link an existing account.
103
+ Use SocialSignInRefusedError to distinguish configured refusal from infrastructure
104
+ failure. `stacks-socials` owns provider authorization and callback exchange.
105
+
106
+ Referrals expose createReferralCode(ownerId), attributeReferral(newUserId, input),
107
+ qualifyReferral(referredUserId) and referralSummary(ownerId), with optional
108
+ database injection. Normalize/attribute at registration and qualify at the
109
+ application's real conversion milestone. Attribution alone is not a paid reward.
110
+
111
+ Source: `src/socials.ts`, `referrals.ts`. Evidence: `tests/social-linking.test.ts`,
112
+ `referrals.test.ts`. All account features remain subject to model loading,
113
+ selected route bundles, config gates and applied migrations.
@@ -44,14 +44,14 @@ auth/src/
44
44
  └── session-auth.ts # Session-based SPA auth
45
45
  ```
46
46
 
47
- ## Auth Class (authentication.ts) — Static Methods
47
+ ## Auth Class (authentication.ts) - Static Methods
48
48
 
49
49
  ### Login & Authentication
50
- - `Auth.attempt(credentials: AuthCredentials): Promise<boolean>` — validate credentials without creating token
51
- - `Auth.validate(credentials: AuthCredentials): Promise<boolean>` — alias for attempt
52
- - `Auth.login(credentials: AuthCredentials, options?: TokenCreateOptions): Promise<{ user, token } | null>` — login and create token
53
- - `Auth.loginUsingId(userId: number, options?: TokenCreateOptions): Promise<{ user, token } | null>` — login by user ID
54
- - `Auth.logout(): Promise<void>` — revoke current token
50
+ - `Auth.attempt(credentials: AuthCredentials): Promise<boolean>` - validate credentials without creating token
51
+ - `Auth.validate(credentials: AuthCredentials): Promise<boolean>` - checks credentials without setting the request's authenticated user
52
+ - `Auth.login(credentials: AuthCredentials, options?: TokenCreateOptions): Promise<{ user, token } | null>` - login and create token
53
+ - `Auth.loginUsingId(userId: number, options?: TokenCreateOptions): Promise<{ user, token } | null>` - login by user ID
54
+ - `Auth.logout(): Promise<void>` - revoke current token
55
55
 
56
56
  ### Personal access tokens (Sanctum-shaped)
57
57
 
@@ -59,38 +59,38 @@ auth/src/
59
59
  name (`users`, `authors`) and `tokenable_id` its id there, so any model
60
60
  declaring `useAuth` can hold tokens - not only `User`.
61
61
 
62
- - `createToken(id, name, scopes, { tokenableType })` — mint one. Returns the
62
+ - `createToken(id, name, scopes, { tokenableType })` - mint one. Returns the
63
63
  plaintext ONCE (`plainTextToken`); the table stores a hash and nothing can
64
64
  recover it afterwards. `tokenableType` defaults to `users`.
65
- - `tokens(id, tokenableType?)` — list an owner's live tokens.
66
- - `tokenCan(scope)` / `tokenCanAll` / `tokenCanAny` / `tokenAbilities` — check
65
+ - `tokens(id, tokenableType?)` - list an owner's live tokens.
66
+ - `tokenCan(scope)` / `tokenCanAll` / `tokenCanAny` / `tokenAbilities` - check
67
67
  the current request's token.
68
68
  - `revokeToken`, `revokeTokenById`, `revokeAllTokens(id, type?)`,
69
- `revokeOtherTokens(id, type?)` — revocation also revokes the paired refresh
69
+ `revokeOtherTokens(id, type?)` - revocation also revokes the paired refresh
70
70
  token, which a raw row delete does not.
71
- - `setTrailActor(id)` — attribute writes in a queue job or CLI run that has no
71
+ - `setTrailActor(id)` - attribute writes in a queue job or CLI run that has no
72
72
  request to read a user from.
73
73
 
74
74
  The `PersonalAccessToken` model maps the same table, so `owner.with('tokenable')`
75
75
  lists exactly what `createToken` minted. It deliberately generates no CRUD
76
76
  routes: minting and revoking both carry semantics a generic route does not.
77
- - `Auth.once(credentials: AuthCredentials): Promise<boolean>` — one-time auth without token
77
+ - `Auth.once(credentials: AuthCredentials): Promise<boolean>` - one-time auth without token
78
78
  - `Auth.requestUserTokenWithClient(credentials, clientId, clientSecret): Promise<{ token } | null>` authenticates both a legacy OAuth client and an end user password, then issues a user token. It is not the client credentials grant.
79
79
  - `Auth.requestToken(...)` is the deprecated compatibility alias for that same legacy exchange. New delegated integrations use the authorization-code provider.
80
80
 
81
81
  ### User State
82
- - `Auth.user(): Promise<UserModel | undefined>` — get authenticated user from bearer token
83
- - `Auth.check(): Promise<boolean>` — is user authenticated?
84
- - `Auth.guest(): Promise<boolean>` — is user a guest?
85
- - `Auth.id(): Promise<number | undefined>` — get authenticated user ID
86
- - `Auth.setUser(user: UserModel): void` — manually set user
82
+ - `Auth.user(): Promise<UserModel | undefined>` - resolve the current request user through bearer/token-cookie state
83
+ - `Auth.check(): Promise<boolean>` - is user authenticated?
84
+ - `Auth.guest(): Promise<boolean>` - is user a guest?
85
+ - `Auth.id(): Promise<number | undefined>` - get authenticated user ID
86
+ - `Auth.setUser(user: UserModel | undefined): void` - set or clear the current request user
87
87
 
88
88
  ### Token Creation
89
89
  - `Auth.createTokenForUser(user, options?: TokenCreateOptions): Promise<NewAccessToken>`
90
90
  - `Auth.createToken(user, name?, abilities?): Promise<AuthToken>`
91
91
 
92
92
  ### Token Validation
93
- - `Auth.validateToken(token: string): Promise<boolean>` — validate bearer token
93
+ - `Auth.validateToken(token: string): Promise<boolean>` - validate bearer token
94
94
  - `Auth.getUserFromToken(token: string): Promise<UserModel | undefined>`
95
95
  - `Auth.currentAccessToken(): Promise<PersonalAccessToken | undefined>`
96
96
 
@@ -113,9 +113,9 @@ routes: minting and revoking both carry semantics a generic route does not.
113
113
  - `Auth.findToken(tokenId: number): Promise<PersonalAccessToken | null>`
114
114
 
115
115
  ### Utility
116
- - `Auth.guard(name?: string): typeof Auth` — select guard (returns self)
117
- - `Auth.viaRemember(): boolean` — always false currently
118
- - `Auth.clearState(): void` — clear cached user/token
116
+ - `Auth.guard(name?: string): typeof Auth` - select guard (returns self)
117
+ - `Auth.viaRemember(): boolean` - always false currently
118
+ - `Auth.clearState(): void` - clear cached user/token
119
119
 
120
120
  ## Token System (tokens.ts)
121
121
 
@@ -215,8 +215,8 @@ authenticated and CSRF protected.
215
215
  ### Gate Functions
216
216
  - `define<T>(ability: string, callback: GateCallback<T>): void`
217
217
  - `policy(model: string | { name }, policyClass: new () => Policy): void`
218
- - `before(callback): void` — run before any gate check
219
- - `after(callback): void` — run after any gate check
218
+ - `before(callback): void` - run before any gate check
219
+ - `after(callback): void` - run after any gate check
220
220
  - `allows(ability, user, ...args): Promise<boolean>`
221
221
  - `denies(ability, user, ...args): Promise<boolean>`
222
222
  - `can(ability, user, ...args): Promise<boolean>`
@@ -224,21 +224,21 @@ authenticated and CSRF protected.
224
224
  - `any(abilities[], user, ...args): Promise<boolean>`
225
225
  - `all(abilities[], user, ...args): Promise<boolean>`
226
226
  - `none(abilities[], user, ...args): Promise<boolean>`
227
- - `authorize(ability, user, ...args): Promise<AuthorizationResponse>` — throws on deny
228
- - `inspect(ability, user, ...args): Promise<AuthorizationResponse>` — never throws
227
+ - `authorize(ability, user, ...args): Promise<AuthorizationResponse>` - throws on deny
228
+ - `inspect(ability, user, ...args): Promise<AuthorizationResponse>` - never throws
229
229
  - `has(ability): boolean`
230
230
  - `hasPolicy(model): boolean`
231
231
  - `abilities(): string[]`
232
232
  - `getPolicyFor<T>(model: T): Policy<T> | null`
233
- - `flush(): void` — clear all gates
233
+ - `flush(): void` - clear all gates
234
234
 
235
- ### Gate Facade — `Gate.define()`, `Gate.can()`, etc
235
+ ### Gate Facade - `Gate.define()`, `Gate.can()`, etc
236
236
 
237
237
  ### AuthorizationResponse Class
238
238
  - `static allow(message?): AuthorizationResponse`
239
239
  - `static deny(message?, code?): AuthorizationResponse`
240
240
  - `allowed(): boolean`, `denied(): boolean`
241
- - `authorize(): void` — throws AuthorizationException if denied
241
+ - `authorize(): void` - throws AuthorizationException if denied
242
242
 
243
243
  ### Policy Interface
244
244
  Methods: `before?`, `viewAny?`, `view?`, `create?`, `update?`, `delete?`, `restore?`, `forceDelete?`
@@ -287,7 +287,7 @@ Protected helpers: `allow(message?)`, `deny(message?, code?)`, `denyIf(condition
287
287
  - `Rbac.syncRolePermissions(roleName, permissionNames[], guardName?): Promise<void>`
288
288
 
289
289
  ### withRbac Mixin
290
- `withRbac(user)` — adds `hasRole()`, `hasPermission()`, `assignRole()`, `givePermission()`, etc. to any user object
290
+ `withRbac(user)` - adds `hasRole()`, `hasPermission()`, `assignRole()`, `givePermission()`, etc. to any user object
291
291
 
292
292
  ### RBAC Types
293
293
  ```typescript
@@ -299,10 +299,10 @@ interface RbacStore { findRoleByName, createRole, deleteRole, getAllRoles, findP
299
299
  ## Session Auth (session-auth.ts)
300
300
 
301
301
  - `SessionAuth.login(email, password): Promise<{ user, sessionId }>`
302
- - `SessionAuth.logout(sessionId): void`
302
+ - `SessionAuth.logout(sessionId): Promise<void>`
303
303
  - `SessionAuth.user(sessionId): Promise<UserModel | undefined>`
304
- - `SessionAuth.check(sessionId): boolean`
305
- - `SessionAuth.refresh(sessionId, ttlMs?): boolean`, rejects non-positive or non-finite TTLs without changing the session
304
+ - `SessionAuth.check(sessionId): Promise<boolean>`
305
+ - `SessionAuth.refresh(sessionId, ttlMs?): Promise<boolean>`, rejects non-positive or non-finite TTLs without changing the session
306
306
 
307
307
  Internal: database-backed `sessions` rows with expiry, optional IP/User-Agent fingerprint checks, transactional logout and refresh, and timing-safe password comparison with a dummy bcrypt hash. Sessions survive process restarts and are shared by workers through the configured database.
308
308
 
@@ -359,21 +359,27 @@ export const authMiddlewareHandler = {
359
359
  }
360
360
  ```
361
361
 
362
+
362
363
  ## Rate Limiter (rate-limiter.ts)
363
364
 
364
- ```typescript
365
- class RateLimiter {
366
- static MAX_ATTEMPTS = 5
367
- static LOCKOUT_DURATION = 15 * 60 * 1000 // 15 minutes
368
- static MAX_STORE_SIZE = 10_000
369
- static EVICTION_INTERVAL = 5 * 60 * 1000 // 5 minutes
370
-
371
- static isRateLimited(email): boolean
372
- static recordFailedAttempt(email): void
373
- static resetAttempts(email): void
374
- static validateAttempt(email): void // throws HttpError 429
375
- }
376
- ```
365
+ Every check/update is async, including when the backing store is memory:
366
+
367
+ ~~~ts
368
+ import { RateLimiter } from '@stacksjs/auth'
369
+
370
+ await RateLimiter.validateAttempt(email)
371
+ await RateLimiter.recordFailedAttempt(email)
372
+ const locked = await RateLimiter.isRateLimited(email)
373
+ await RateLimiter.resetAttempts(email)
374
+ ~~~
375
+
376
+ Five failed attempts lock an email for fifteen minutes. The configured store
377
+ selects atomic Redis when the cache config selects Redis, otherwise process-local
378
+ memory. `useSharedStore(options?)` explicitly chooses Redis;
379
+ `useStore(custom)` installs a store with atomic recordFailedAttempt;
380
+ `useMemoryStore()` and `useConfiguredStore()` reset that choice.
381
+ Shared deployments need a shared atomic store. Partial counters expire, and
382
+ cleanup thresholds are not hard capacities that evict live lockouts.
377
383
 
378
384
  ## Authorizable Mixin (authorizable.ts)
379
385
 
@@ -390,7 +396,8 @@ await authUser.authorize('edit-post', post) // throws if denied
390
396
 
391
397
  ### config/auth.ts
392
398
  ```typescript
393
- {
399
+ const tokenExpiry = 60 * 60 * 1000
400
+ const authOptions = {
394
401
  default: 'api',
395
402
  guards: { api: { driver: 'token', provider: 'users' } },
396
403
  providers: { users: { driver: 'database', table: 'users' } },
@@ -399,8 +406,8 @@ await authUser.authorize('edit-post', post) // throws if denied
399
406
  tokenExpiry: 60 * 60 * 1000, // milliseconds, 1 hour
400
407
  refreshTokenExpiry: 30 * 24 * 60 * 60 * 1000, // milliseconds
401
408
  browserSession: {
402
- baselineLifetime: 7 * 24 * 60 * 60 * 1000, // absolute milliseconds
403
- rememberedLifetime: 30 * 24 * 60 * 60 * 1000,
409
+ baselineLifetime: tokenExpiry, // absolute milliseconds, default one hour
410
+ rememberedLifetime: tokenExpiry, // customize explicitly for a longer remembered tier
404
411
  withRefreshToken: false, // fixed browser lifetime, no unused refresh token
405
412
  logoutRedirect: '/login?logged_out=1', // local path for HTML logout only
406
413
  },
@@ -451,7 +458,7 @@ Retain application-specific onboarding and event hooks.
451
458
  Auth-relevant aliases: `auth`, `guest`, `verified` (EnsureEmailIsVerified),
452
459
  `abilities`, `can`, `role`, `permission`, `team`, `signed`, `throttle`. The
453
460
  environment aliases are `env`, `env:local`, `env:development` / `env:dev`,
454
- `env:staging`, `env:production` / `env:prod` — with a COLON, not a dot; an
461
+ `env:staging`, `env:production` / `env:prod` - with a COLON, not a dot; an
455
462
  earlier version of this list wrote `env.local` and those never existed. See
456
463
  `stacks-middleware` for the full set and for the `!alias` and `alias:params`
457
464
  forms.
@@ -474,7 +481,7 @@ export default defineGates({
474
481
  ```
475
482
 
476
483
  Registered at boot by `initializeAuthorization()`, from
477
- `injectGlobalAutoImports()` — the one place every entry point comes through, so
484
+ `injectGlobalAutoImports()` - the one place every entry point comes through, so
478
485
  HTTP, `buddy seed`, a scheduled job and a console command all get the same
479
486
  gates.
480
487
 
@@ -518,17 +525,17 @@ traits: {
518
525
  - New personal and delegated access tokens are opaque 40-byte hex bearers hashed at rest. Legacy `jwt:encryptedId` bearers remain readable during migration.
519
526
  - Token validation hashes the bearer directly. Do not parse or expose token contents, and never log plaintext bearer values.
520
527
  - Bearer tokens come from the `Authorization: Bearer <token>` header
521
- - `Auth.user()` internally calls `getBearerToken()` and resolves the bearer through a hashed token lookup
522
- - RBAC has an internal cache (`userRoles`, `userPermissions`, `rolePermissions`) — call `Rbac.flushCache()` after direct DB changes
528
+ - Auth resolves the parsed bearer first and falls back to the configured token cookie; request user state is scoped rather than shared globally
529
+ - RBAC has an internal cache (`userRoles`, `userPermissions`, `rolePermissions`) - call `Rbac.flushCache()` after direct DB changes
523
530
  - `syncRoles()` and `syncPermissions()` are guard-scoped replacements: they preserve assignments belonging to other guards
524
- - Gate `before` callbacks can short-circuit — return `true` to allow, `null` to continue checking
525
- - An ability with no gate and no policy method **denies**. That is the right default, and it means a gate that was never registered is indistinguishable from one that says no — which is how `initializeAuthorization()` went unnoticed while nothing called it
531
+ - Gate `before` callbacks can short-circuit - return `true` to allow, `null` to continue checking
532
+ - An ability with no gate and no policy method **denies**. That is the right default, and it means a gate that was never registered is indistinguishable from one that says no - which is how `initializeAuthorization()` went unnoticed while nothing called it
526
533
  - `allows()` and friends take `Ability`, which is open (`GateName | PolicyAbility | (string & {})`). A `/can/:ability` route passes an ability straight through, so narrowing it would reject correct code; the union is for completions
527
534
  - `withRbac()` and `withAuthorization()` return new objects with methods mixed in
528
- - The `RbacStore` interface must be implemented and set via `Rbac.setStore()` for RBAC to work
535
+ - RBAC lazily creates its SQL store. `Rbac.setStore()` is the optional override for a custom store; apply the role/permission model migrations before using it
529
536
  - Password reset tokens expire after 60 minutes by default
530
- - Default token abilities are `['*']` — wildcard access
531
- - Token expiry defaults to 30 days
537
+ - Default token abilities are `['*']` - wildcard access
538
+ - Token expiry defaults to one hour; inspect config/auth.ts and browserSession before choosing a lifetime
532
539
  - Session auth uses timing-safe bcrypt comparison even for failed lookups (dummy hash prevents timing attacks)
533
540
 
534
541
  ## Build
@@ -536,3 +543,29 @@ traits: {
536
543
  ```bash
537
544
  cd storage/framework/core/auth && bun build.ts
538
545
  ```
546
+
547
+
548
+ ## Native account workflows
549
+
550
+ Read [ACCOUNT-WORKFLOWS.md](ACCOUNT-WORKFLOWS.md) when implementing magic links,
551
+ completed two-factor login, active teams, social account linking, role seeding,
552
+ referrals, cookie authentication or session idle/fingerprint policy. These are
553
+ native APIs with complete workflows, beyond the low-level TOTP/passkey helpers.
554
+
555
+ ## Provider and entrypoint boundaries
556
+
557
+ Default auth routes require the selected auth route bundle. `feature('auth')`
558
+ controls account-family model loading and does not itself mount login/register.
559
+ Opaque access tokens, OAuth grants, token cookies and database session IDs are
560
+ different credentials with different issuance and expiry rules.
561
+ `Auth.guard()` currently returns Auth rather than providing independent
562
+ guard implementations. `viaRemember()` is a compatibility false result;
563
+ browserSession's remember choice is the actual cookie lifetime policy.
564
+
565
+ Session and token user state are bound to the current request. Entry points
566
+ install that scope; application code must not cache a user globally for later
567
+ requests. Revocation-sensitive reads use the primary DB path. Retained evidence:
568
+ `auth/tests/auth-middleware-entrypoints.test.ts`,
569
+ `request-token.test.ts`, `session-read-routing.test.ts`,
570
+ `rbac-default-store.test.ts` and `browser-session-policy.test.ts` under
571
+ `storage/framework/core/`.
@@ -1,145 +1,87 @@
1
1
  ---
2
2
  name: stacks-auto-imports
3
- description: Use when working with the Stacks auto-import system - understanding how browser and server auto-imports work, configuring auto-imported functions/models/composables, the auto-import manifests, type generation, or how globals are injected. Covers the auto-import pipeline at storage/framework/auto-imports/.
3
+ description: Use when checking browser/server binding delivery, model globals, registry generation, or the difference between ambient declarations and runtime imports. Covers Stacks auto-imports, stx client delivery, server boot and generated registries (107 models).
4
4
  license: MIT
5
5
  compatibility: Bun >= 1.3.0, TypeScript
6
6
  allowed-tools: Read Edit Write Bash Grep Glob
7
7
  ---
8
8
 
9
- # Stacks Auto-Import System
10
-
11
- Automatically makes functions, models, composables, and utilities available globally without explicit imports.
12
-
13
- ## Key Paths
14
- - Auto-import functions: `storage/framework/auto-imports/functions.ts`
15
- - Auto-import models: `storage/framework/auto-imports/models.ts`
16
- - Auto-import index: `storage/framework/auto-imports/index.ts`
17
- - Auto-import globals: `storage/framework/auto-imports/globals.ts`
18
- - Global type declarations: `storage/framework/auto-imports/globals.d.ts`
19
- - Browser manifest: `storage/framework/browser-auto-imports.json`
20
- - Server manifest: `storage/framework/server-auto-imports.json`
21
- - Browser type declarations: `storage/framework/types/browser-auto-imports.d.ts` (~80KB)
22
- - Server type declarations: `storage/framework/types/server-auto-imports.d.ts`
23
- - General auto-import types: `storage/framework/types/auto-imports.d.ts`
24
-
25
- ## How Auto-Imports Work
26
-
27
- ### Browser Context (STX Templates)
28
- 1. `storage/framework/browser-auto-imports.json` defines available imports (200+ entries)
29
- 2. Types are declared in `storage/framework/types/browser-auto-imports.d.ts`
30
- 3. STX plugin (`bun-plugin-stx`) resolves imports at build time
31
- 4. Available in STX `<script>` tags without explicit `import` statements
32
-
33
- Browser auto-import injection applies to the STX script entry being compiled.
34
- TypeScript modules imported by that script do not inherit its lexical bindings.
35
- Every imported module must explicitly import the functions, stores, and types it
36
- uses. A generated ambient declaration proves an identifier is available to an
37
- STX entry; it does not make that identifier global inside bundled dependencies.
38
-
39
- ### Server Context (Routes, Actions, Jobs)
40
- 1. `storage/framework/server-auto-imports.json` defines server-side imports (100+ entries)
41
- 2. Types are declared in `storage/framework/types/server-auto-imports.d.ts`
42
- 3. All 60+ ORM models are auto-imported as globals
43
- 4. Available in any server-side TypeScript file
44
-
45
- ### Runtime Injection
46
- `storage/framework/auto-imports/globals.ts` injects functions into `globalThis`:
47
- ```typescript
48
- // Makes these available globally without imports:
49
- globalThis.increment = increment
50
- globalThis.count = count
51
- globalThis.isDark = isDark
52
- globalThis.toggleDark = toggleDark
53
- // ... geo functions, GPX functions, etc.
54
- ```
55
-
56
- ## What Gets Auto-Imported
57
-
58
- ### Browser Auto-Imports (200+)
59
- - **Composables**: useStorage, useLocalStorage, useFetch, useToggle, useCounter, useDark, useNow, etc.
60
- - **Utilities**: debounce, throttle, retry, sleep, wait, delay, lazy, clamp, rand
61
- - **Authentication**: useAuth, authGuard, auth
62
- - **Formatting**: formatCurrency, formatDate, formatNumber, formatDuration
63
- - **Browser Query Builder**: browserQuery, BrowserQueryBuilder, browserAuth, createBrowserModel
64
- - **Payment**: confirmCardPayment, confirmPayment, createPaymentMethod, loadCardElement, loadPaymentElement
65
- - **Stripe**: stripe instance
66
- - **Custom Functions**: From `resources/functions/` (counter, dark mode, GPX, geo utilities)
67
-
68
- ### Server Auto-Imports (100+)
69
- - **All ORM Models**: User, Post, Author, Product, Order, Payment, Customer, etc. (107 models)
70
- - **Request Models**: UserRequest, PostRequest, OrderRequest, etc.
71
- - **Actions**: Action types and helpers
72
- - **Schema**: validation schema builder
73
- - **Router**: route, response helpers
74
- - **String Utilities**: slug, camelCase, pascalCase, snakeCase, kebabCase, titleCase
75
- - **Core**: path, storage, log, handleError, Auth, register
76
-
77
- ## Auto-Import Type Declarations
78
-
79
- ### auto-imports.d.ts (general)
80
- ```typescript
81
- declare global {
82
- const Action: typeof import('@stacksjs/actions').Action
83
- const response: typeof import('@stacksjs/router').response
84
- const route: typeof import('@stacksjs/router').route
85
- const schema: typeof import('@stacksjs/validation').schema
86
- const slug: typeof import('@stacksjs/strings').slug
87
- // ... all auto-imported identifiers
88
- }
89
- ```
90
-
91
- ### Adding Custom Auto-Imports
92
-
93
- 1. Create function in `resources/functions/`:
94
- ```typescript
95
- // resources/functions/myUtils.ts
96
- export function myHelper() { return 'hello' }
97
- ```
98
-
99
- 2. Export from `storage/framework/auto-imports/functions.ts`:
100
- ```typescript
101
- export { myHelper } from '../../resources/functions/myUtils'
102
- ```
103
-
104
- 3. Declare types in `storage/framework/auto-imports/globals.d.ts`:
105
- ```typescript
106
- declare function myHelper(): string
107
- ```
108
-
109
- 4. Inject at runtime in `storage/framework/auto-imports/globals.ts`:
110
- ```typescript
111
- globalThis.myHelper = myHelper
112
- ```
113
-
114
- ## Generation Commands
115
-
116
- ```bash
117
- buddy generate # regenerate all auto-imports
118
- buddy generate --types # regenerate type declarations
119
- buddy generate --ide-helpers # regenerate IDE helpers
120
- buddy generate:component-meta # regenerate component metadata
121
- ```
122
-
123
- The `build:reset` script also regenerates auto-imports.
124
-
125
- ## Server Auto-Import Initialization
126
-
127
- ```typescript
128
- import { initiateImports, generateAutoImportFiles, injectGlobalAutoImports } from '@stacksjs/server'
129
-
130
- initiateImports() // initialize auto-import plugin
131
- generateAutoImportFiles() // generate runtime auto-import files
132
- injectGlobalAutoImports() // inject models/functions globally
133
- ```
134
-
135
- ## Gotchas
136
- - Browser auto-imports are resolved at BUILD TIME by bun-plugin-stx — not runtime
137
- - Imported browser modules must declare their own imports; STX entry auto-imports do not leak into module scope
138
- - Server auto-imports are injected into globalThis at RUNTIME
139
- - The browser-auto-imports.d.ts file is ~80KB — it's auto-generated, don't edit manually
140
- - Custom functions must be exported from both the function file AND the auto-imports barrel
141
- - Type declarations must match the runtime globals for IDE support
142
- - All 60+ ORM models are auto-imported on the server — available as `User.find(1)` etc.
143
- - Request models (e.g., `UserRequest`) are also auto-imported for validated request access
144
- - Auto-imports are regenerated during `buddy generate` and `build:reset`
145
- - The discovered-packages.json file at `storage/framework/discovered-packages.json` is part of this system
9
+ # Auto-imports and runtime delivery
10
+
11
+ A declaration, a delivered client binding, and an initialized server global are
12
+ three different facts. Inspect the relevant runtime rather than inferring all
13
+ three from an ambient type file.
14
+
15
+ ## Browser paths
16
+
17
+ STX client scripts receive eager runtime bindings, compiler-provided bindings,
18
+ and demand-inline composables emitted for supported authored calls. The eager
19
+ bare-window alias list in AGENTS.md and stacks-composables is checked against
20
+ getCachedSignalsRuntime. That list is one delivery path, not the entire API.
21
+
22
+ Current STX also supplies useMediaQuery/usePreferredReducedMotion through
23
+ runtime/compiler bindings, and useForm/useIntersectionObserver/useScroll/
24
+ useMouse/useParallax through demand delivery. Read
25
+ [BROWSER.md](../stacks-composables/BROWSER.md) for exact signatures, supported
26
+ installation versions, signal adapters and cleanup. Imported Stacks composables
27
+ can have different Ref contracts from the same-name bare client helpers.
28
+
29
+ storage/framework/browser-auto-imports.json feeds ambient declarations; it
30
+ is not a complete inventory of executable browser bindings. Utilities,
31
+ provider SDK helpers, stores and custom modules need explicit imports unless
32
+ the installed runtime/compiler/demand implementation actually supplies them.
33
+
34
+ Bindings injected into a script entry do not leak into an imported TypeScript
35
+ module. Every module declares its own functions, stores and type dependencies.
36
+ Component tag discovery is yet another pipeline; use resources/components or
37
+ explicitly opted-in package component roots.
38
+
39
+ ## Server paths
40
+
41
+ Server boot resolves model, job, controller and function registries and injects
42
+ eligible values into globalThis. Model definitions exist on disk, but optional
43
+ features and initialization decide the loaded surface. Explicit app-model
44
+ imports preserve inference from the model actually customized by the app.
45
+
46
+ Only runtime model values are globals. ModelRow<typeof Model> and other type
47
+ utilities are imported types; UserRequest/UserRequestModel are not generated
48
+ runtime model variants. Names colliding with built-ins, such as Error/Request,
49
+ need explicit imports and safe local aliases.
50
+
51
+ Import Action, route, response, schema, path, storage, logging and Auth from their
52
+ packages. An ambient helper declaration alone does not establish its global
53
+ runtime initialization. Follow the built-in action's import pattern.
54
+
55
+ ## Generation and project overrides
56
+
57
+ The auto-import barrels under storage/framework/auto-imports are generated from
58
+ app definitions, framework defaults and discovered package resources.
59
+ app/ definitions override defaults at the relevant resolver boundary. Models
60
+ also support additive extendModel rather than a complete copied override.
61
+
62
+ Use buddy generate and its documented type-generation variants. Do not hand-
63
+ maintain a second list of Action paths, middleware aliases or runtime model
64
+ names. The registry types derive from resolver maps; stale maps can reject a
65
+ new real file, while a typo in a fresh map is a real missing reference.
66
+
67
+ Application helpers belong in resources/functions and their normal exports.
68
+ Inspect the current generation/discovery pipeline before modifying a generated
69
+ barrel by hand. Components contributed by a package require explicit opt-in;
70
+ views/models/jobs/migrations have their own discovery conventions.
71
+
72
+ ## Verification and gotchas
73
+
74
+ - Check client delivery in the installed STX, not only with buddy typecheck.
75
+ - Check server globals after boot or model readiness, not during a cyclic import.
76
+ - Distinguish function values from type-only exports and unavailable feature models.
77
+ - Keep imported browser modules self-contained and clean up observers/timers.
78
+ - Use request snapshots for stx server rendering; an API AsyncLocalStorage scope
79
+ does not automatically span every render callback.
80
+ - Generated declarations and registries are artifacts. Regenerate and inspect
81
+ differences rather than inventing globals to silence an error.
82
+
83
+ Source: core/server/src/imports.ts, core/orm/src/index.ts,
84
+ core/config/src/discovered-resources.ts, generated resolver barrels and installed
85
+ STX client/runtime/demand modules. Retained evidence includes
86
+ core/server/tests/generated-declarations.test.ts, ORM auto-import contracts,
87
+ composables/skill-runtime-globals.test.ts and STX delivery tests.