@stacksjs/defaults 0.75.109 → 0.75.111
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.
- package/ai/AGENTS.md +36 -1
- package/ai/README.md +39 -1
- package/ai/skills/stacks-actions/SKILL.md +64 -6
- package/ai/skills/stacks-ai/SKILL.md +36 -10
- package/ai/skills/stacks-alias/SKILL.md +40 -85
- package/ai/skills/stacks-analytics/SKILL.md +23 -3
- package/ai/skills/stacks-arrays/SKILL.md +35 -9
- package/ai/skills/stacks-audio/SKILL.md +34 -0
- package/ai/skills/stacks-auth/ACCOUNT-WORKFLOWS.md +113 -0
- package/ai/skills/stacks-auth/SKILL.md +90 -57
- package/ai/skills/stacks-auto-imports/SKILL.md +80 -138
- package/ai/skills/stacks-browser/SKILL.md +82 -138
- package/ai/skills/stacks-browser-extension/SKILL.md +40 -0
- package/ai/skills/stacks-buddy/SKILL.md +2 -0
- package/ai/skills/stacks-build/SKILL.md +42 -23
- package/ai/skills/stacks-cache/SKILL.md +75 -115
- package/ai/skills/stacks-calendar/SKILL.md +61 -97
- package/ai/skills/stacks-charts/SKILL.md +34 -0
- package/ai/skills/stacks-chat/SKILL.md +18 -2
- package/ai/skills/stacks-chief-of-staff/LICENSE +21 -0
- package/ai/skills/stacks-chief-of-staff/NOTICE.md +10 -0
- package/ai/skills/stacks-chief-of-staff/PLAYBOOK.md +42 -0
- package/ai/skills/stacks-chief-of-staff/SKILL.md +28 -0
- package/ai/skills/stacks-cli/SKILL.md +23 -7
- package/ai/skills/stacks-cloud/SKILL.md +37 -20
- package/ai/skills/stacks-cms/PAGES.md +70 -0
- package/ai/skills/stacks-cms/SKILL.md +30 -18
- package/ai/skills/stacks-codebase-design/LICENSE +21 -0
- package/ai/skills/stacks-codebase-design/NOTICE.md +10 -0
- package/ai/skills/stacks-codebase-design/SKILL.md +10 -0
- package/ai/skills/stacks-collections/SKILL.md +25 -8
- package/ai/skills/stacks-commerce/SKILL.md +25 -1
- package/ai/skills/stacks-composables/BROWSER.md +97 -0
- package/ai/skills/stacks-composables/SKILL.md +87 -181
- package/ai/skills/stacks-config/SKILL.md +108 -162
- package/ai/skills/stacks-cron/SKILL.md +27 -13
- package/ai/skills/stacks-crosswind/SKILL.md +62 -167
- package/ai/skills/stacks-dashboard/SKILL.md +8 -0
- package/ai/skills/stacks-database/SKILL.md +98 -68
- package/ai/skills/stacks-datetime/SKILL.md +21 -5
- package/ai/skills/stacks-deploy/SKILL.md +17 -1
- package/ai/skills/stacks-design-brutalist/SKILL.md +1 -1
- package/ai/skills/stacks-design-minimalist/SKILL.md +17 -3
- package/ai/skills/stacks-design-soft/SKILL.md +16 -4
- package/ai/skills/stacks-design-taste/SKILL.md +55 -35
- package/ai/skills/stacks-design-taste-codex/SKILL.md +5 -5
- package/ai/skills/stacks-desktop/SKILL.md +22 -16
- package/ai/skills/stacks-development/SKILL.md +19 -8
- package/ai/skills/stacks-dns/SKILL.md +72 -139
- package/ai/skills/stacks-domain-modeling/ADR-FORMAT.md +47 -0
- package/ai/skills/stacks-domain-modeling/GLOSSARY-FORMAT.md +60 -0
- package/ai/skills/stacks-domain-modeling/LICENSE +21 -0
- package/ai/skills/stacks-domain-modeling/NOTICE.md +10 -0
- package/ai/skills/stacks-domain-modeling/SKILL.md +11 -0
- package/ai/skills/stacks-email/DELIVERY-CONTROLS.md +84 -0
- package/ai/skills/stacks-email/SKILL.md +18 -2
- package/ai/skills/stacks-enums/SKILL.md +28 -81
- package/ai/skills/stacks-env/SKILL.md +23 -15
- package/ai/skills/stacks-error-handling/SKILL.md +68 -121
- package/ai/skills/stacks-events/SKILL.md +83 -264
- package/ai/skills/stacks-faker/SKILL.md +28 -13
- package/ai/skills/stacks-feature-flags/SKILL.md +41 -0
- package/ai/skills/stacks-features/SKILL.md +46 -0
- package/ai/skills/stacks-flow/ENGINEERING.md +84 -0
- package/ai/skills/stacks-flow/LICENSE +21 -0
- package/ai/skills/stacks-flow/NOTICE.md +10 -0
- package/ai/skills/stacks-flow/SKILL.md +32 -0
- package/ai/skills/stacks-flow/upstream-skills.json +726 -0
- package/ai/skills/stacks-forms/SKILL.md +44 -0
- package/ai/skills/stacks-git/LICENSE +21 -0
- package/ai/skills/stacks-git/NOTICE.md +10 -0
- package/ai/skills/stacks-git/SKILL.md +11 -0
- package/ai/skills/stacks-grill-with-docs/LICENSE +21 -0
- package/ai/skills/stacks-grill-with-docs/NOTICE.md +10 -0
- package/ai/skills/stacks-grill-with-docs/PLAYBOOK.md +4 -0
- package/ai/skills/stacks-grill-with-docs/SKILL.md +24 -0
- package/ai/skills/stacks-grilling/LICENSE +21 -0
- package/ai/skills/stacks-grilling/NOTICE.md +17 -0
- package/ai/skills/stacks-grilling/SKILL.md +7 -0
- package/ai/skills/stacks-guard/LICENSE +21 -0
- package/ai/skills/stacks-guard/NOTICE.md +10 -0
- package/ai/skills/stacks-guard/SKILL.md +6 -0
- package/ai/skills/stacks-handoff/LICENSE +21 -0
- package/ai/skills/stacks-handoff/NOTICE.md +17 -0
- package/ai/skills/stacks-handoff/SKILL.md +8 -0
- package/ai/skills/stacks-http/SKILL.md +64 -297
- package/ai/skills/stacks-humanizer/LICENSE +21 -0
- package/ai/skills/stacks-humanizer/NOTICE.md +19 -0
- package/ai/skills/stacks-humanizer/SKILL.md +85 -0
- package/ai/skills/stacks-humanizer/references/patterns.md +350 -0
- package/ai/skills/stacks-i18n/SKILL.md +33 -8
- package/ai/skills/stacks-image/SKILL.md +37 -0
- package/ai/skills/stacks-image-to-code/SKILL.md +11 -6
- package/ai/skills/stacks-implement/LICENSE +21 -0
- package/ai/skills/stacks-implement/NOTICE.md +10 -0
- package/ai/skills/stacks-implement/PLAYBOOK.md +14 -0
- package/ai/skills/stacks-implement/SKILL.md +24 -0
- package/ai/skills/stacks-implement-spec/LICENSE +21 -0
- package/ai/skills/stacks-implement-spec/NOTICE.md +10 -0
- package/ai/skills/stacks-implement-spec/PLAYBOOK.md +37 -0
- package/ai/skills/stacks-implement-spec/SKILL.md +24 -0
- package/ai/skills/stacks-improve-codebase-architecture/HTML-REPORT.md +126 -0
- package/ai/skills/stacks-improve-codebase-architecture/LICENSE +21 -0
- package/ai/skills/stacks-improve-codebase-architecture/NOTICE.md +10 -0
- package/ai/skills/stacks-improve-codebase-architecture/PLAYBOOK.md +68 -0
- package/ai/skills/stacks-improve-codebase-architecture/SKILL.md +24 -0
- package/ai/skills/stacks-investigate/LICENSE +21 -0
- package/ai/skills/stacks-investigate/NOTICE.md +10 -0
- package/ai/skills/stacks-investigate/SKILL.md +6 -0
- package/ai/skills/stacks-jobs/SKILL.md +29 -8
- package/ai/skills/stacks-listeners/SKILL.md +13 -5
- package/ai/skills/stacks-logging/SKILL.md +71 -68
- package/ai/skills/stacks-loop/LICENSE +21 -0
- package/ai/skills/stacks-loop/NOTICE.md +10 -0
- package/ai/skills/stacks-loop/PLAYBOOK.md +28 -0
- package/ai/skills/stacks-loop/SKILL.md +28 -0
- package/ai/skills/stacks-mail/SKILL.md +46 -7
- package/ai/skills/stacks-marketing/CATALOG.md +60 -0
- package/ai/skills/stacks-marketing/LICENSE +21 -0
- package/ai/skills/stacks-marketing/NOTICE.md +5 -0
- package/ai/skills/stacks-marketing/SKILL.md +27 -0
- package/ai/skills/stacks-marketing/WORKFLOW.md +83 -0
- package/ai/skills/stacks-marketing-ab-testing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-ab-testing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-ab-testing/PLAYBOOK.md +352 -0
- package/ai/skills/stacks-marketing-ab-testing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-ab-testing/evals/evals.json +116 -0
- package/ai/skills/stacks-marketing-ab-testing/references/sample-size-guide.md +263 -0
- package/ai/skills/stacks-marketing-ab-testing/references/test-templates.md +277 -0
- package/ai/skills/stacks-marketing-ad-creative/LICENSE +21 -0
- package/ai/skills/stacks-marketing-ad-creative/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-ad-creative/PLAYBOOK.md +434 -0
- package/ai/skills/stacks-marketing-ad-creative/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-ad-creative/assets/creative-review-template.html +432 -0
- package/ai/skills/stacks-marketing-ad-creative/evals/evals.json +280 -0
- package/ai/skills/stacks-marketing-ad-creative/references/awareness-headlines.md +54 -0
- package/ai/skills/stacks-marketing-ad-creative/references/creative-review-page.md +109 -0
- package/ai/skills/stacks-marketing-ad-creative/references/creative-roadmap.md +118 -0
- package/ai/skills/stacks-marketing-ad-creative/references/generative-tools.md +613 -0
- package/ai/skills/stacks-marketing-ad-creative/references/hook-system.md +115 -0
- package/ai/skills/stacks-marketing-ad-creative/references/imessage-video-ads.md +197 -0
- package/ai/skills/stacks-marketing-ad-creative/references/meta-creative-formats.md +114 -0
- package/ai/skills/stacks-marketing-ad-creative/references/motion-video-ads.md +126 -0
- package/ai/skills/stacks-marketing-ad-creative/references/platform-specs.md +213 -0
- package/ai/skills/stacks-marketing-ad-creative/references/short-form-video-specs.md +213 -0
- package/ai/skills/stacks-marketing-ad-creative/references/static-ad-templates.md +308 -0
- package/ai/skills/stacks-marketing-ads/LICENSE +21 -0
- package/ai/skills/stacks-marketing-ads/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-ads/PLAYBOOK.md +464 -0
- package/ai/skills/stacks-marketing-ads/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-ads/evals/evals.json +192 -0
- package/ai/skills/stacks-marketing-ads/references/abm-playbook.md +101 -0
- package/ai/skills/stacks-marketing-ads/references/ad-copy-templates.md +207 -0
- package/ai/skills/stacks-marketing-ads/references/audience-targeting.md +243 -0
- package/ai/skills/stacks-marketing-ads/references/audit-guardrails.md +83 -0
- package/ai/skills/stacks-marketing-ads/references/b2b-paid-playbook.md +115 -0
- package/ai/skills/stacks-marketing-ads/references/conversion-tracking.md +361 -0
- package/ai/skills/stacks-marketing-ads/references/creative-research-automation.md +103 -0
- package/ai/skills/stacks-marketing-ads/references/google-ads-audit-checklist.md +84 -0
- package/ai/skills/stacks-marketing-ads/references/google-search-playbook.md +120 -0
- package/ai/skills/stacks-marketing-ads/references/linkedin-b2b-playbook.md +107 -0
- package/ai/skills/stacks-marketing-ads/references/meta-andromeda-playbook.md +44 -0
- package/ai/skills/stacks-marketing-ads/references/meta-decision-system.md +176 -0
- package/ai/skills/stacks-marketing-ads/references/payback-period.md +73 -0
- package/ai/skills/stacks-marketing-ads/references/platform-setup-checklists.md +277 -0
- package/ai/skills/stacks-marketing-ads/references/reading-google-ads-data.md +121 -0
- package/ai/skills/stacks-marketing-ads/references/rsa-output-spec.md +88 -0
- package/ai/skills/stacks-marketing-ai-seo/LICENSE +21 -0
- package/ai/skills/stacks-marketing-ai-seo/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-ai-seo/PLAYBOOK.md +494 -0
- package/ai/skills/stacks-marketing-ai-seo/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-ai-seo/evals/evals.json +163 -0
- package/ai/skills/stacks-marketing-ai-seo/references/agent-readiness.md +66 -0
- package/ai/skills/stacks-marketing-ai-seo/references/citations-vs-recommendations.md +89 -0
- package/ai/skills/stacks-marketing-ai-seo/references/content-patterns.md +287 -0
- package/ai/skills/stacks-marketing-ai-seo/references/content-types.md +82 -0
- package/ai/skills/stacks-marketing-ai-seo/references/format-volatility.md +95 -0
- package/ai/skills/stacks-marketing-ai-seo/references/linkedin-ai-citations.md +131 -0
- package/ai/skills/stacks-marketing-ai-seo/references/okf.md +104 -0
- package/ai/skills/stacks-marketing-ai-seo/references/platform-ranking-factors.md +167 -0
- package/ai/skills/stacks-marketing-ai-seo/references/positioning-and-consensus.md +102 -0
- package/ai/skills/stacks-marketing-ai-seo/references/youtube-ai-citations.md +66 -0
- package/ai/skills/stacks-marketing-analytics/LICENSE +21 -0
- package/ai/skills/stacks-marketing-analytics/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-analytics/PLAYBOOK.md +307 -0
- package/ai/skills/stacks-marketing-analytics/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-analytics/evals/evals.json +117 -0
- package/ai/skills/stacks-marketing-analytics/references/event-library.md +260 -0
- package/ai/skills/stacks-marketing-analytics/references/ga4-implementation.md +304 -0
- package/ai/skills/stacks-marketing-analytics/references/gtm-implementation.md +396 -0
- package/ai/skills/stacks-marketing-aso/LICENSE +21 -0
- package/ai/skills/stacks-marketing-aso/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-aso/PLAYBOOK.md +310 -0
- package/ai/skills/stacks-marketing-aso/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-aso/evals/evals.json +104 -0
- package/ai/skills/stacks-marketing-aso/references/apple-specs.md +107 -0
- package/ai/skills/stacks-marketing-aso/references/benchmarks.md +131 -0
- package/ai/skills/stacks-marketing-aso/references/google-play-specs.md +135 -0
- package/ai/skills/stacks-marketing-aso/references/report-template.md +213 -0
- package/ai/skills/stacks-marketing-aso/references/scoring-criteria.md +213 -0
- package/ai/skills/stacks-marketing-attribution/LICENSE +21 -0
- package/ai/skills/stacks-marketing-attribution/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-attribution/PLAYBOOK.md +223 -0
- package/ai/skills/stacks-marketing-attribution/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-attribution/evals/evals.json +128 -0
- package/ai/skills/stacks-marketing-attribution/references/attribution-models.md +74 -0
- package/ai/skills/stacks-marketing-attribution/references/by-business-type.md +54 -0
- package/ai/skills/stacks-marketing-attribution/references/first-party-tracking.md +253 -0
- package/ai/skills/stacks-marketing-attribution/references/measurement-paradigms.md +85 -0
- package/ai/skills/stacks-marketing-churn-prevention/LICENSE +21 -0
- package/ai/skills/stacks-marketing-churn-prevention/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-churn-prevention/PLAYBOOK.md +420 -0
- package/ai/skills/stacks-marketing-churn-prevention/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-churn-prevention/evals/evals.json +107 -0
- package/ai/skills/stacks-marketing-churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/ai/skills/stacks-marketing-churn-prevention/references/dunning-playbook.md +413 -0
- package/ai/skills/stacks-marketing-co-marketing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-co-marketing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-co-marketing/PLAYBOOK.md +306 -0
- package/ai/skills/stacks-marketing-co-marketing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-co-marketing/evals/evals.json +98 -0
- package/ai/skills/stacks-marketing-co-marketing/references/partnership-types.md +100 -0
- package/ai/skills/stacks-marketing-cold-email/LICENSE +21 -0
- package/ai/skills/stacks-marketing-cold-email/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-cold-email/PLAYBOOK.md +210 -0
- package/ai/skills/stacks-marketing-cold-email/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-cold-email/evals/evals.json +137 -0
- package/ai/skills/stacks-marketing-cold-email/references/benchmarks.md +87 -0
- package/ai/skills/stacks-marketing-cold-email/references/deliverability.md +111 -0
- package/ai/skills/stacks-marketing-cold-email/references/follow-up-sequences.md +81 -0
- package/ai/skills/stacks-marketing-cold-email/references/frameworks.md +90 -0
- package/ai/skills/stacks-marketing-cold-email/references/linkedin-outreach.md +91 -0
- package/ai/skills/stacks-marketing-cold-email/references/multichannel-cadence.md +79 -0
- package/ai/skills/stacks-marketing-cold-email/references/outbound-plays.md +88 -0
- package/ai/skills/stacks-marketing-cold-email/references/personalization.md +90 -0
- package/ai/skills/stacks-marketing-cold-email/references/reply-handling.md +65 -0
- package/ai/skills/stacks-marketing-cold-email/references/subject-lines.md +53 -0
- package/ai/skills/stacks-marketing-community-marketing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-community-marketing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-community-marketing/PLAYBOOK.md +171 -0
- package/ai/skills/stacks-marketing-community-marketing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-community-marketing/evals/evals.json +103 -0
- package/ai/skills/stacks-marketing-community-marketing/references/community-models.md +63 -0
- package/ai/skills/stacks-marketing-competitor-profiling/LICENSE +21 -0
- package/ai/skills/stacks-marketing-competitor-profiling/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-competitor-profiling/PLAYBOOK.md +436 -0
- package/ai/skills/stacks-marketing-competitor-profiling/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-competitor-profiling/evals/evals.json +97 -0
- package/ai/skills/stacks-marketing-competitor-profiling/references/templates.md +167 -0
- package/ai/skills/stacks-marketing-competitor-profiling/references/tool-reference.md +314 -0
- package/ai/skills/stacks-marketing-competitors/LICENSE +21 -0
- package/ai/skills/stacks-marketing-competitors/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-competitors/PLAYBOOK.md +283 -0
- package/ai/skills/stacks-marketing-competitors/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-competitors/evals/evals.json +119 -0
- package/ai/skills/stacks-marketing-competitors/references/content-architecture.md +277 -0
- package/ai/skills/stacks-marketing-competitors/references/templates.md +226 -0
- package/ai/skills/stacks-marketing-content-strategy/LICENSE +21 -0
- package/ai/skills/stacks-marketing-content-strategy/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-content-strategy/PLAYBOOK.md +437 -0
- package/ai/skills/stacks-marketing-content-strategy/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-content-strategy/evals/evals.json +116 -0
- package/ai/skills/stacks-marketing-content-strategy/references/content-distribution.md +83 -0
- package/ai/skills/stacks-marketing-content-strategy/references/headless-cms.md +194 -0
- package/ai/skills/stacks-marketing-copy-editing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-copy-editing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-copy-editing/PLAYBOOK.md +485 -0
- package/ai/skills/stacks-marketing-copy-editing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-copy-editing/evals/evals.json +117 -0
- package/ai/skills/stacks-marketing-copy-editing/references/checklist.md +77 -0
- package/ai/skills/stacks-marketing-copy-editing/references/content-refresh.md +71 -0
- package/ai/skills/stacks-marketing-copy-editing/references/plain-english-alternatives.md +394 -0
- package/ai/skills/stacks-marketing-copywriting/LICENSE +21 -0
- package/ai/skills/stacks-marketing-copywriting/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-copywriting/PLAYBOOK.md +282 -0
- package/ai/skills/stacks-marketing-copywriting/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-copywriting/evals/evals.json +140 -0
- package/ai/skills/stacks-marketing-copywriting/references/ai-tells.md +261 -0
- package/ai/skills/stacks-marketing-copywriting/references/copy-frameworks.md +432 -0
- package/ai/skills/stacks-marketing-copywriting/references/natural-transitions.md +256 -0
- package/ai/skills/stacks-marketing-council/LICENSE +21 -0
- package/ai/skills/stacks-marketing-council/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-council/PLAYBOOK.md +157 -0
- package/ai/skills/stacks-marketing-council/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-council/evals/evals.json +70 -0
- package/ai/skills/stacks-marketing-council/references/advisor-template.md +51 -0
- package/ai/skills/stacks-marketing-council/references/advisors/alex-hormozi.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/ann-handley.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/april-dunford.md +41 -0
- package/ai/skills/stacks-marketing-council/references/advisors/byron-sharp.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/claude-hopkins.md +42 -0
- package/ai/skills/stacks-marketing-council/references/advisors/david-ogilvy.md +42 -0
- package/ai/skills/stacks-marketing-council/references/advisors/eugene-schwartz.md +42 -0
- package/ai/skills/stacks-marketing-council/references/advisors/gary-halbert.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/gary-vaynerchuk.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/rory-sutherland.md +42 -0
- package/ai/skills/stacks-marketing-council/references/advisors/russell-brunson.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/seth-godin.md +43 -0
- package/ai/skills/stacks-marketing-cro/LICENSE +21 -0
- package/ai/skills/stacks-marketing-cro/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-cro/PLAYBOOK.md +194 -0
- package/ai/skills/stacks-marketing-cro/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-cro/evals/evals.json +111 -0
- package/ai/skills/stacks-marketing-cro/references/experiments.md +248 -0
- package/ai/skills/stacks-marketing-cro/references/form.md +422 -0
- package/ai/skills/stacks-marketing-customer-research/LICENSE +21 -0
- package/ai/skills/stacks-marketing-customer-research/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-customer-research/PLAYBOOK.md +304 -0
- package/ai/skills/stacks-marketing-customer-research/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-customer-research/evals/evals.json +176 -0
- package/ai/skills/stacks-marketing-customer-research/references/interviews-and-surveys.md +155 -0
- package/ai/skills/stacks-marketing-customer-research/references/source-guides.md +401 -0
- package/ai/skills/stacks-marketing-directory-submissions/LICENSE +21 -0
- package/ai/skills/stacks-marketing-directory-submissions/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-directory-submissions/PLAYBOOK.md +397 -0
- package/ai/skills/stacks-marketing-directory-submissions/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-directory-submissions/evals/evals.json +121 -0
- package/ai/skills/stacks-marketing-directory-submissions/references/directory-list.md +545 -0
- package/ai/skills/stacks-marketing-directory-submissions/references/positioning-variations.md +232 -0
- package/ai/skills/stacks-marketing-directory-submissions/references/submission-tracker-template.csv +272 -0
- package/ai/skills/stacks-marketing-emails/LICENSE +21 -0
- package/ai/skills/stacks-marketing-emails/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-emails/PLAYBOOK.md +336 -0
- package/ai/skills/stacks-marketing-emails/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-emails/evals/evals.json +105 -0
- package/ai/skills/stacks-marketing-emails/references/copy-guidelines.md +113 -0
- package/ai/skills/stacks-marketing-emails/references/email-types.md +515 -0
- package/ai/skills/stacks-marketing-emails/references/sequence-templates.md +168 -0
- package/ai/skills/stacks-marketing-events/LICENSE +21 -0
- package/ai/skills/stacks-marketing-events/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-events/PLAYBOOK.md +127 -0
- package/ai/skills/stacks-marketing-events/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-events/evals/evals.json +92 -0
- package/ai/skills/stacks-marketing-events/references/event-portfolio-strategy.md +80 -0
- package/ai/skills/stacks-marketing-events/references/speaking.md +49 -0
- package/ai/skills/stacks-marketing-events/references/sponsorship-roi.md +57 -0
- package/ai/skills/stacks-marketing-events/references/webinar-funnel.md +88 -0
- package/ai/skills/stacks-marketing-free-tools/LICENSE +21 -0
- package/ai/skills/stacks-marketing-free-tools/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-free-tools/PLAYBOOK.md +186 -0
- package/ai/skills/stacks-marketing-free-tools/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-free-tools/evals/evals.json +103 -0
- package/ai/skills/stacks-marketing-free-tools/references/tool-benchmarks.md +35 -0
- package/ai/skills/stacks-marketing-free-tools/references/tool-types.md +217 -0
- package/ai/skills/stacks-marketing-ideas/LICENSE +21 -0
- package/ai/skills/stacks-marketing-ideas/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-ideas/PLAYBOOK.md +167 -0
- package/ai/skills/stacks-marketing-ideas/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-ideas/evals/evals.json +105 -0
- package/ai/skills/stacks-marketing-ideas/references/guerrilla-marketing.md +56 -0
- package/ai/skills/stacks-marketing-ideas/references/ideas-by-category.md +366 -0
- package/ai/skills/stacks-marketing-image/LICENSE +21 -0
- package/ai/skills/stacks-marketing-image/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-image/PLAYBOOK.md +336 -0
- package/ai/skills/stacks-marketing-image/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-image/evals/evals.json +89 -0
- package/ai/skills/stacks-marketing-image/references/ai-image-prompting.md +229 -0
- package/ai/skills/stacks-marketing-influencer-marketing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-influencer-marketing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-influencer-marketing/PLAYBOOK.md +198 -0
- package/ai/skills/stacks-marketing-influencer-marketing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-influencer-marketing/evals/evals.json +89 -0
- package/ai/skills/stacks-marketing-influencer-marketing/references/ugc-creator-program.md +91 -0
- package/ai/skills/stacks-marketing-launch/LICENSE +21 -0
- package/ai/skills/stacks-marketing-launch/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-launch/PLAYBOOK.md +381 -0
- package/ai/skills/stacks-marketing-launch/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-launch/evals/evals.json +135 -0
- package/ai/skills/stacks-marketing-launch/references/shipped-changes.md +84 -0
- package/ai/skills/stacks-marketing-launch/references/site-launch-qa.md +57 -0
- package/ai/skills/stacks-marketing-lead-magnets/LICENSE +21 -0
- package/ai/skills/stacks-marketing-lead-magnets/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-lead-magnets/PLAYBOOK.md +308 -0
- package/ai/skills/stacks-marketing-lead-magnets/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-lead-magnets/evals/evals.json +105 -0
- package/ai/skills/stacks-marketing-lead-magnets/references/benchmarks.md +129 -0
- package/ai/skills/stacks-marketing-lead-magnets/references/content-to-skill-corpus-design.md +89 -0
- package/ai/skills/stacks-marketing-lead-magnets/references/content-to-skill-release.md +71 -0
- package/ai/skills/stacks-marketing-lead-magnets/references/content-to-skill.md +109 -0
- package/ai/skills/stacks-marketing-lead-magnets/references/format-guide.md +196 -0
- package/ai/skills/stacks-marketing-loops/LICENSE +21 -0
- package/ai/skills/stacks-marketing-loops/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-loops/PLAYBOOK.md +111 -0
- package/ai/skills/stacks-marketing-loops/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-loops/evals/evals.json +133 -0
- package/ai/skills/stacks-marketing-loops/references/loop-catalog.md +796 -0
- package/ai/skills/stacks-marketing-loops/references/loop-guardrails.md +73 -0
- package/ai/skills/stacks-marketing-loops/references/loop-orchestration.md +71 -0
- package/ai/skills/stacks-marketing-loops/references/loop-state.md +67 -0
- package/ai/skills/stacks-marketing-loops/references/loop-template.md +79 -0
- package/ai/skills/stacks-marketing-loops/references/outbound-operator.md +86 -0
- package/ai/skills/stacks-marketing-loops/references/seo-operator.md +110 -0
- package/ai/skills/stacks-marketing-offers/LICENSE +21 -0
- package/ai/skills/stacks-marketing-offers/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-offers/PLAYBOOK.md +151 -0
- package/ai/skills/stacks-marketing-offers/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-offers/evals/evals.json +21 -0
- package/ai/skills/stacks-marketing-offers/references/bonus-stacking.md +150 -0
- package/ai/skills/stacks-marketing-offers/references/examples.md +215 -0
- package/ai/skills/stacks-marketing-offers/references/guarantee-design.md +172 -0
- package/ai/skills/stacks-marketing-offers/references/offer-anatomy.md +203 -0
- package/ai/skills/stacks-marketing-offers/references/offer-formats.md +240 -0
- package/ai/skills/stacks-marketing-offers/references/saas-offers.md +116 -0
- package/ai/skills/stacks-marketing-offers/references/scarcity-urgency.md +175 -0
- package/ai/skills/stacks-marketing-offers/references/value-equation.md +134 -0
- package/ai/skills/stacks-marketing-onboarding/LICENSE +21 -0
- package/ai/skills/stacks-marketing-onboarding/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-onboarding/PLAYBOOK.md +257 -0
- package/ai/skills/stacks-marketing-onboarding/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-onboarding/evals/evals.json +108 -0
- package/ai/skills/stacks-marketing-onboarding/references/activation-models.md +57 -0
- package/ai/skills/stacks-marketing-onboarding/references/experiments.md +258 -0
- package/ai/skills/stacks-marketing-onboarding/references/minimum-path-to-value.md +49 -0
- package/ai/skills/stacks-marketing-paywalls/LICENSE +21 -0
- package/ai/skills/stacks-marketing-paywalls/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-paywalls/PLAYBOOK.md +223 -0
- package/ai/skills/stacks-marketing-paywalls/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-paywalls/evals/evals.json +93 -0
- package/ai/skills/stacks-marketing-paywalls/references/experiments.md +164 -0
- package/ai/skills/stacks-marketing-plan/LICENSE +21 -0
- package/ai/skills/stacks-marketing-plan/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-plan/PLAYBOOK.md +300 -0
- package/ai/skills/stacks-marketing-plan/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-plan/evals/evals.json +140 -0
- package/ai/skills/stacks-marketing-plan/references/aarrr-framework.md +180 -0
- package/ai/skills/stacks-marketing-plan/references/budget-planning.md +177 -0
- package/ai/skills/stacks-marketing-plan/references/client-types.md +373 -0
- package/ai/skills/stacks-marketing-plan/references/current-state-rubric.md +255 -0
- package/ai/skills/stacks-marketing-plan/references/example-quietude.md +972 -0
- package/ai/skills/stacks-marketing-plan/references/funding-stage-unlocks.md +230 -0
- package/ai/skills/stacks-marketing-plan/references/growth-patterns.md +190 -0
- package/ai/skills/stacks-marketing-plan/references/idea-cross-reference.md +265 -0
- package/ai/skills/stacks-marketing-plan/references/market-sizing.md +166 -0
- package/ai/skills/stacks-marketing-plan/references/measurement-framework.md +213 -0
- package/ai/skills/stacks-marketing-plan/references/methodology.md +365 -0
- package/ai/skills/stacks-marketing-plan/references/ops-stack-mapping.md +197 -0
- package/ai/skills/stacks-marketing-plan/references/plan-template.md +494 -0
- package/ai/skills/stacks-marketing-plan/references/team-and-agency-model.md +278 -0
- package/ai/skills/stacks-marketing-popups/LICENSE +21 -0
- package/ai/skills/stacks-marketing-popups/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-popups/PLAYBOOK.md +450 -0
- package/ai/skills/stacks-marketing-popups/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-popups/evals/evals.json +94 -0
- package/ai/skills/stacks-marketing-pricing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-pricing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-pricing/PLAYBOOK.md +291 -0
- package/ai/skills/stacks-marketing-pricing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-pricing/evals/evals.json +131 -0
- package/ai/skills/stacks-marketing-pricing/references/pricing-models.md +66 -0
- package/ai/skills/stacks-marketing-pricing/references/pricing-page-teardown.md +87 -0
- package/ai/skills/stacks-marketing-pricing/references/research-methods.md +156 -0
- package/ai/skills/stacks-marketing-pricing/references/tier-structure.md +232 -0
- package/ai/skills/stacks-marketing-product-marketing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-product-marketing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-product-marketing/PLAYBOOK.md +255 -0
- package/ai/skills/stacks-marketing-product-marketing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-product-marketing/evals/evals.json +98 -0
- package/ai/skills/stacks-marketing-programmatic-seo/LICENSE +21 -0
- package/ai/skills/stacks-marketing-programmatic-seo/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-programmatic-seo/PLAYBOOK.md +238 -0
- package/ai/skills/stacks-marketing-programmatic-seo/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-programmatic-seo/evals/evals.json +107 -0
- package/ai/skills/stacks-marketing-programmatic-seo/references/implementation-platforms.md +41 -0
- package/ai/skills/stacks-marketing-programmatic-seo/references/playbooks.md +308 -0
- package/ai/skills/stacks-marketing-prospecting/LICENSE +21 -0
- package/ai/skills/stacks-marketing-prospecting/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-prospecting/PLAYBOOK.md +273 -0
- package/ai/skills/stacks-marketing-prospecting/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-prospecting/evals/evals.json +163 -0
- package/ai/skills/stacks-marketing-prospecting/references/account-research.md +59 -0
- package/ai/skills/stacks-marketing-prospecting/references/b2b-prospecting.md +106 -0
- package/ai/skills/stacks-marketing-prospecting/references/compliance.md +161 -0
- package/ai/skills/stacks-marketing-prospecting/references/data-sources.md +300 -0
- package/ai/skills/stacks-marketing-prospecting/references/demand-signals.md +131 -0
- package/ai/skills/stacks-marketing-prospecting/references/enrichment-playbook.md +61 -0
- package/ai/skills/stacks-marketing-prospecting/references/local-prospecting.md +165 -0
- package/ai/skills/stacks-marketing-prospecting/references/saas-prospecting.md +123 -0
- package/ai/skills/stacks-marketing-prospecting/references/signal-plays.md +99 -0
- package/ai/skills/stacks-marketing-prospecting/references/sourcing-and-enrichment.md +89 -0
- package/ai/skills/stacks-marketing-psychology/LICENSE +21 -0
- package/ai/skills/stacks-marketing-psychology/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-psychology/PLAYBOOK.md +451 -0
- package/ai/skills/stacks-marketing-psychology/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-psychology/evals/evals.json +88 -0
- package/ai/skills/stacks-marketing-public-relations/LICENSE +21 -0
- package/ai/skills/stacks-marketing-public-relations/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-public-relations/PLAYBOOK.md +150 -0
- package/ai/skills/stacks-marketing-public-relations/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-public-relations/evals/evals.json +36 -0
- package/ai/skills/stacks-marketing-public-relations/references/crisis-communications.md +113 -0
- package/ai/skills/stacks-marketing-public-relations/references/journalist-pitching.md +368 -0
- package/ai/skills/stacks-marketing-public-relations/references/media-outlets.md +207 -0
- package/ai/skills/stacks-marketing-public-relations/references/newsjacking.md +220 -0
- package/ai/skills/stacks-marketing-public-relations/references/podcast-guest-prep.md +60 -0
- package/ai/skills/stacks-marketing-public-relations/references/press-platforms.md +188 -0
- package/ai/skills/stacks-marketing-public-relations/references/statement-templates.md +145 -0
- package/ai/skills/stacks-marketing-public-relations/references/story-angles.md +87 -0
- package/ai/skills/stacks-marketing-referrals/LICENSE +21 -0
- package/ai/skills/stacks-marketing-referrals/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-referrals/PLAYBOOK.md +279 -0
- package/ai/skills/stacks-marketing-referrals/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-referrals/evals/evals.json +202 -0
- package/ai/skills/stacks-marketing-referrals/references/affiliate-operations.md +64 -0
- package/ai/skills/stacks-marketing-referrals/references/affiliate-programs.md +167 -0
- package/ai/skills/stacks-marketing-referrals/references/program-examples.md +151 -0
- package/ai/skills/stacks-marketing-referrals/references/review-platform-rules.md +36 -0
- package/ai/skills/stacks-marketing-referrals/references/review-program-operations.md +62 -0
- package/ai/skills/stacks-marketing-referrals/references/review-programs.md +96 -0
- package/ai/skills/stacks-marketing-referrals/references/viral-mechanisms.md +102 -0
- package/ai/skills/stacks-marketing-revops/LICENSE +21 -0
- package/ai/skills/stacks-marketing-revops/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-revops/PLAYBOOK.md +345 -0
- package/ai/skills/stacks-marketing-revops/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-revops/evals/evals.json +104 -0
- package/ai/skills/stacks-marketing-revops/references/automation-playbooks.md +290 -0
- package/ai/skills/stacks-marketing-revops/references/inbound-routing.md +43 -0
- package/ai/skills/stacks-marketing-revops/references/lifecycle-definitions.md +309 -0
- package/ai/skills/stacks-marketing-revops/references/routing-rules.md +203 -0
- package/ai/skills/stacks-marketing-revops/references/scoring-models.md +247 -0
- package/ai/skills/stacks-marketing-sales-enablement/LICENSE +21 -0
- package/ai/skills/stacks-marketing-sales-enablement/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-sales-enablement/PLAYBOOK.md +423 -0
- package/ai/skills/stacks-marketing-sales-enablement/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-sales-enablement/evals/evals.json +153 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/cold-call-scripts.md +68 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/deck-frameworks.md +263 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/demo-scripts.md +355 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/objection-library.md +270 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/one-pager-templates.md +208 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/win-loss-analysis.md +72 -0
- package/ai/skills/stacks-marketing-schema/LICENSE +21 -0
- package/ai/skills/stacks-marketing-schema/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-schema/PLAYBOOK.md +187 -0
- package/ai/skills/stacks-marketing-schema/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-schema/evals/evals.json +127 -0
- package/ai/skills/stacks-marketing-schema/references/schema-examples.md +392 -0
- package/ai/skills/stacks-marketing-seo-audit/LICENSE +21 -0
- package/ai/skills/stacks-marketing-seo-audit/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-seo-audit/PLAYBOOK.md +492 -0
- package/ai/skills/stacks-marketing-seo-audit/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-seo-audit/evals/evals.json +204 -0
- package/ai/skills/stacks-marketing-seo-audit/references/ai-writing-detection.md +200 -0
- package/ai/skills/stacks-marketing-seo-audit/references/international-seo.md +228 -0
- package/ai/skills/stacks-marketing-seo-audit/references/local-seo-pages-and-measurement.md +39 -0
- package/ai/skills/stacks-marketing-seo-audit/references/local-seo-profile-and-citations.md +41 -0
- package/ai/skills/stacks-marketing-seo-audit/references/local-seo.md +86 -0
- package/ai/skills/stacks-marketing-seo-audit/references/rankings-push.md +62 -0
- package/ai/skills/stacks-marketing-seo-audit/references/title-tags.md +89 -0
- package/ai/skills/stacks-marketing-signup/LICENSE +21 -0
- package/ai/skills/stacks-marketing-signup/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-signup/PLAYBOOK.md +359 -0
- package/ai/skills/stacks-marketing-signup/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-signup/evals/evals.json +88 -0
- package/ai/skills/stacks-marketing-site-architecture/LICENSE +21 -0
- package/ai/skills/stacks-marketing-site-architecture/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-site-architecture/PLAYBOOK.md +355 -0
- package/ai/skills/stacks-marketing-site-architecture/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-site-architecture/evals/evals.json +113 -0
- package/ai/skills/stacks-marketing-site-architecture/references/mermaid-templates.md +216 -0
- package/ai/skills/stacks-marketing-site-architecture/references/navigation-patterns.md +305 -0
- package/ai/skills/stacks-marketing-site-architecture/references/platforms-and-migration.md +86 -0
- package/ai/skills/stacks-marketing-site-architecture/references/site-type-templates.md +293 -0
- package/ai/skills/stacks-marketing-sms/LICENSE +21 -0
- package/ai/skills/stacks-marketing-sms/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-sms/PLAYBOOK.md +348 -0
- package/ai/skills/stacks-marketing-sms/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-sms/evals/evals.json +118 -0
- package/ai/skills/stacks-marketing-sms/references/compliance.md +202 -0
- package/ai/skills/stacks-marketing-sms/references/platforms.md +318 -0
- package/ai/skills/stacks-marketing-sms/references/sequence-templates.md +282 -0
- package/ai/skills/stacks-marketing-sms/references/whatsapp.md +260 -0
- package/ai/skills/stacks-marketing-social/LICENSE +21 -0
- package/ai/skills/stacks-marketing-social/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-social/PLAYBOOK.md +452 -0
- package/ai/skills/stacks-marketing-social/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-social/evals/evals.json +150 -0
- package/ai/skills/stacks-marketing-social/references/carousel-frameworks.md +141 -0
- package/ai/skills/stacks-marketing-social/references/listening-sources-template.md +123 -0
- package/ai/skills/stacks-marketing-social/references/listening.md +288 -0
- package/ai/skills/stacks-marketing-social/references/platform-limits.md +110 -0
- package/ai/skills/stacks-marketing-social/references/platforms.md +176 -0
- package/ai/skills/stacks-marketing-social/references/post-templates.md +179 -0
- package/ai/skills/stacks-marketing-social/references/reverse-engineering.md +195 -0
- package/ai/skills/stacks-marketing-social/references/short-form-video.md +237 -0
- package/ai/skills/stacks-marketing-social/references/x-algorithm.md +69 -0
- package/ai/skills/stacks-marketing-video/LICENSE +21 -0
- package/ai/skills/stacks-marketing-video/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-video/PLAYBOOK.md +330 -0
- package/ai/skills/stacks-marketing-video/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-video/evals/evals.json +118 -0
- package/ai/skills/stacks-marketing-video/references/ai-video-prompting.md +175 -0
- package/ai/skills/stacks-marketing-video/references/edit-anatomy.md +86 -0
- package/ai/skills/stacks-marketing-video/references/product-demo-recording.md +176 -0
- package/ai/skills/stacks-middleware/SKILL.md +37 -21
- package/ai/skills/stacks-migrations/SKILL.md +29 -5
- package/ai/skills/stacks-mobile/SKILL.md +25 -4
- package/ai/skills/stacks-models/SKILL.md +35 -15
- package/ai/skills/stacks-models/references/model-capabilities.md +104 -0
- package/ai/skills/stacks-native/CAPABILITIES.md +536 -0
- package/ai/skills/stacks-native/CATALOG.md +930 -0
- package/ai/skills/stacks-native/RECIPES.md +108 -0
- package/ai/skills/stacks-native/SKILL.md +79 -0
- package/ai/skills/stacks-newsletter/SKILL.md +39 -0
- package/ai/skills/stacks-notifications/SKILL.md +118 -203
- package/ai/skills/stacks-objects/SKILL.md +18 -4
- package/ai/skills/stacks-orm/SKILL.md +112 -328
- package/ai/skills/stacks-pagination/SKILL.md +40 -0
- package/ai/skills/stacks-path/SKILL.md +38 -18
- package/ai/skills/stacks-payments/SKILL.md +9 -1
- package/ai/skills/stacks-pr/CREDITS.md +3 -0
- package/ai/skills/stacks-pr/LICENSE +21 -0
- package/ai/skills/stacks-pr/NOTICE.md +10 -0
- package/ai/skills/stacks-pr/PLAYBOOK.md +127 -0
- package/ai/skills/stacks-pr/SKILL.md +23 -0
- package/ai/skills/stacks-prototype/LICENSE +21 -0
- package/ai/skills/stacks-prototype/NOTICE.md +10 -0
- package/ai/skills/stacks-prototype/SKILL.md +6 -0
- package/ai/skills/stacks-push/SKILL.md +20 -0
- package/ai/skills/stacks-query-builder/SKILL.md +21 -5
- package/ai/skills/stacks-queue/DURABLE-WORKFLOWS.md +121 -0
- package/ai/skills/stacks-queue/SKILL.md +37 -6
- package/ai/skills/stacks-realtime/SKILL.md +29 -140
- package/ai/skills/stacks-redesign/SKILL.md +1 -1
- package/ai/skills/stacks-registry/SKILL.md +20 -48
- package/ai/skills/stacks-repl/SKILL.md +31 -7
- package/ai/skills/stacks-research/LICENSE +21 -0
- package/ai/skills/stacks-research/NOTICE.md +10 -0
- package/ai/skills/stacks-research/PLAYBOOK.md +10 -0
- package/ai/skills/stacks-research/SKILL.md +23 -0
- package/ai/skills/stacks-retro/LICENSE +21 -0
- package/ai/skills/stacks-retro/NOTICE.md +10 -0
- package/ai/skills/stacks-retro/SKILL.md +10 -0
- package/ai/skills/stacks-review/LICENSE +21 -0
- package/ai/skills/stacks-review/NOTICE.md +10 -0
- package/ai/skills/stacks-review/SKILL.md +15 -0
- package/ai/skills/stacks-router/SKILL.md +33 -2
- package/ai/skills/stacks-routes/SKILL.md +25 -2
- package/ai/skills/stacks-scaffold-exercises/LICENSE +21 -0
- package/ai/skills/stacks-scaffold-exercises/NOTICE.md +10 -0
- package/ai/skills/stacks-scaffold-exercises/PLAYBOOK.md +106 -0
- package/ai/skills/stacks-scaffold-exercises/SKILL.md +23 -0
- package/ai/skills/stacks-scaffolding/SKILL.md +27 -11
- package/ai/skills/stacks-scheduler/SKILL.md +52 -25
- package/ai/skills/stacks-search-engine/SKILL.md +28 -7
- package/ai/skills/stacks-security/SKILL.md +22 -6
- package/ai/skills/stacks-server/SKILL.md +47 -85
- package/ai/skills/stacks-setup-deep-modules/LICENSE +21 -0
- package/ai/skills/stacks-setup-deep-modules/NOTICE.md +10 -0
- package/ai/skills/stacks-setup-deep-modules/SKILL.md +55 -0
- package/ai/skills/stacks-setup-engineering/LICENSE +21 -0
- package/ai/skills/stacks-setup-engineering/NOTICE.md +10 -0
- package/ai/skills/stacks-setup-engineering/PLAYBOOK.md +115 -0
- package/ai/skills/stacks-setup-engineering/SKILL.md +24 -0
- package/ai/skills/stacks-setup-engineering/domain.md +51 -0
- package/ai/skills/stacks-setup-engineering/issue-tracker-github.md +46 -0
- package/ai/skills/stacks-setup-engineering/issue-tracker-gitlab.md +46 -0
- package/ai/skills/stacks-setup-engineering/issue-tracker-local.md +30 -0
- package/ai/skills/stacks-setup-engineering/triage-labels.md +15 -0
- package/ai/skills/stacks-sites/SKILL.md +44 -0
- package/ai/skills/stacks-skills/SKILL.md +33 -0
- package/ai/skills/stacks-slug/SKILL.md +15 -12
- package/ai/skills/stacks-sms/SKILL.md +33 -6
- package/ai/skills/stacks-socials/SKILL.md +81 -294
- package/ai/skills/stacks-storage/SKILL.md +34 -15
- package/ai/skills/stacks-storage/UPLOADS-AND-DISKS.md +133 -0
- package/ai/skills/stacks-strings/SKILL.md +41 -35
- package/ai/skills/stacks-stx/SKILL.md +63 -58
- package/ai/skills/stacks-tdd/LICENSE +21 -0
- package/ai/skills/stacks-tdd/NOTICE.md +10 -0
- package/ai/skills/stacks-tdd/SKILL.md +10 -0
- package/ai/skills/stacks-tdd/mocking.md +59 -0
- package/ai/skills/stacks-tdd/tests.md +77 -0
- package/ai/skills/stacks-teach/GLOSSARY-FORMAT.md +35 -0
- package/ai/skills/stacks-teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/ai/skills/stacks-teach/LICENSE +21 -0
- package/ai/skills/stacks-teach/MISSION-FORMAT.md +31 -0
- package/ai/skills/stacks-teach/NOTICE.md +10 -0
- package/ai/skills/stacks-teach/PLAYBOOK.md +136 -0
- package/ai/skills/stacks-teach/RESOURCES-FORMAT.md +32 -0
- package/ai/skills/stacks-teach/SKILL.md +24 -0
- package/ai/skills/stacks-technical-diagrams/SKILL.md +2 -2
- package/ai/skills/stacks-technical-diagrams/bin/diagrams +1 -1
- package/ai/skills/stacks-technical-diagrams/renderers/shared/bun-runtime.mjs +1 -1
- package/ai/skills/stacks-test-fixtures/LICENSE +21 -0
- package/ai/skills/stacks-test-fixtures/NOTICE.md +10 -0
- package/ai/skills/stacks-test-fixtures/SKILL.md +38 -0
- package/ai/skills/stacks-testing/SKILL.md +77 -4
- package/ai/skills/stacks-to-questionnaire/LICENSE +21 -0
- package/ai/skills/stacks-to-questionnaire/NOTICE.md +10 -0
- package/ai/skills/stacks-to-questionnaire/PLAYBOOK.md +51 -0
- package/ai/skills/stacks-to-questionnaire/SKILL.md +24 -0
- package/ai/skills/stacks-to-spec/LICENSE +21 -0
- package/ai/skills/stacks-to-spec/NOTICE.md +10 -0
- package/ai/skills/stacks-to-spec/PLAYBOOK.md +72 -0
- package/ai/skills/stacks-to-spec/SKILL.md +24 -0
- package/ai/skills/stacks-to-tickets/LICENSE +21 -0
- package/ai/skills/stacks-to-tickets/NOTICE.md +10 -0
- package/ai/skills/stacks-to-tickets/PLAYBOOK.md +102 -0
- package/ai/skills/stacks-to-tickets/SKILL.md +24 -0
- package/ai/skills/stacks-triage/AGENT-BRIEF.md +207 -0
- package/ai/skills/stacks-triage/LICENSE +21 -0
- package/ai/skills/stacks-triage/NOTICE.md +10 -0
- package/ai/skills/stacks-triage/OUT-OF-SCOPE.md +105 -0
- package/ai/skills/stacks-triage/PLAYBOOK.md +109 -0
- package/ai/skills/stacks-triage/SKILL.md +24 -0
- package/ai/skills/stacks-tunnel/SKILL.md +29 -19
- package/ai/skills/stacks-types/SKILL.md +77 -168
- package/ai/skills/stacks-ui/SKILL.md +66 -228
- package/ai/skills/stacks-unslop/NOTICE.md +25 -0
- package/ai/skills/stacks-unslop/SKILL.md +95 -0
- package/ai/skills/stacks-unslop/references/core-contract.md +88 -0
- package/ai/skills/stacks-unslop/references/patterns.md +110 -0
- package/ai/skills/stacks-unslop/references/presets.md +37 -0
- package/ai/skills/stacks-unslop/references/voice.md +95 -0
- package/ai/skills/stacks-utils/SKILL.md +45 -25
- package/ai/skills/stacks-validation/SKILL.md +67 -4
- package/ai/skills/stacks-video/SKILL.md +33 -0
- package/ai/skills/stacks-wait-what/LICENSE +21 -0
- package/ai/skills/stacks-wait-what/NOTICE.md +10 -0
- package/ai/skills/stacks-wait-what/PLAYBOOK.md +4 -0
- package/ai/skills/stacks-wait-what/SKILL.md +24 -0
- package/ai/skills/stacks-wayfinder/LICENSE +21 -0
- package/ai/skills/stacks-wayfinder/NOTICE.md +10 -0
- package/ai/skills/stacks-wayfinder/PLAYBOOK.md +125 -0
- package/ai/skills/stacks-wayfinder/SKILL.md +24 -0
- package/ai/skills/stacks-whois/SKILL.md +13 -3
- package/ai/skills/stacks-wizard/LICENSE +21 -0
- package/ai/skills/stacks-wizard/NOTICE.md +10 -0
- package/ai/skills/stacks-wizard/SKILL.md +8 -0
- package/ai/skills/stacks-wizard/scripts/template.sh +42 -26
- package/ai/skills/stacks-writing-beats/LICENSE +21 -0
- package/ai/skills/stacks-writing-beats/NOTICE.md +10 -0
- package/ai/skills/stacks-writing-beats/PLAYBOOK.md +64 -0
- package/ai/skills/stacks-writing-beats/SKILL.md +28 -0
- package/ai/skills/stacks-writing-for-agents/LICENSE +21 -0
- package/ai/skills/stacks-writing-for-agents/NOTICE.md +10 -0
- package/ai/skills/stacks-writing-for-agents/SKILL.md +7 -1
- package/ai/skills/stacks-writing-fragments/LICENSE +21 -0
- package/ai/skills/stacks-writing-fragments/NOTICE.md +10 -0
- package/ai/skills/stacks-writing-fragments/PLAYBOOK.md +76 -0
- package/ai/skills/stacks-writing-fragments/SKILL.md +28 -0
- package/ai/skills/stacks-writing-shape/LICENSE +21 -0
- package/ai/skills/stacks-writing-shape/NOTICE.md +10 -0
- package/ai/skills/stacks-writing-shape/PLAYBOOK.md +76 -0
- package/ai/skills/stacks-writing-shape/SKILL.md +28 -0
- package/ide/vscode/package.json +1 -1
- package/package.json +2 -2
- package/resources/components/NativeSheet.stx +7 -12
- /package/ai/skills/stacks-technical-diagrams/{bunfig.toml → runtime.toml} +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Matt Pocock
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Source and license
|
|
2
|
+
|
|
3
|
+
The upstream MIT notice is preserved in [LICENSE](LICENSE).
|
|
4
|
+
|
|
5
|
+
## codebase-design
|
|
6
|
+
|
|
7
|
+
Source: [skills/engineering/codebase-design/SKILL.md](https://github.com/mattpocock/skills/blob/49dd158d1076134a641b33efb035946536778336/skills/engineering/codebase-design/SKILL.md),
|
|
8
|
+
revision `49dd158d1076134a641b33efb035946536778336`.
|
|
9
|
+
|
|
10
|
+
Reviewed against the existing Stacks workflow. Stacks API guidance is retained; current workflow changes and supporting references are integrated where applicable.
|
|
@@ -101,6 +101,11 @@ whether a trait wants to be born.
|
|
|
101
101
|
|
|
102
102
|
## Principles
|
|
103
103
|
|
|
104
|
+
A module may have internal seams used by its own implementation tests as well
|
|
105
|
+
as an external seam used by callers. Keep that distinction explicit: a private
|
|
106
|
+
test seam does not become part of the public interface merely because a test
|
|
107
|
+
uses it. Confirm the intended test surface and preserve public-behavior tests.
|
|
108
|
+
|
|
104
109
|
- **Depth is a property of the interface, not the implementation.** A deep module
|
|
105
110
|
can be internally composed of small, swappable parts. They just are not part of
|
|
106
111
|
the interface. A module can have **internal seams** (private, used by its own
|
|
@@ -175,6 +180,11 @@ per suite. See `stacks-tdd` for where that line sits.
|
|
|
175
180
|
|
|
176
181
|
## Downstream
|
|
177
182
|
|
|
183
|
+
Current upstream provenance is in [NOTICE.md](NOTICE.md). Read
|
|
184
|
+
[the Stacks adaptation rules](../stacks-flow/ENGINEERING.md) with this workflow.
|
|
185
|
+
Use `stacks-improve-codebase-architecture` to find a concrete deepening
|
|
186
|
+
candidate and `stacks-setup-deep-modules` when enforcing package entrypoints.
|
|
187
|
+
|
|
178
188
|
> Reach for `stacks-tdd` to write the tests at the seam you chose, and
|
|
179
189
|
> `stacks-domain-modeling` when the module needs a name the project does not
|
|
180
190
|
> have yet.
|
|
@@ -41,7 +41,7 @@ collect([10, 20, 30]).max() // 30
|
|
|
41
41
|
|
|
42
42
|
// Grouping
|
|
43
43
|
collect(users).groupBy('role')
|
|
44
|
-
//
|
|
44
|
+
// Map<role, CollectionOperations<User>>; use groups.get('admin')?.toArray()
|
|
45
45
|
|
|
46
46
|
// Sorting
|
|
47
47
|
collect(items).sortBy('price').toArray()
|
|
@@ -70,13 +70,30 @@ collect([1, 2, 3]).reduce((sum, n) => sum + n, 0) // 6
|
|
|
70
70
|
|
|
71
71
|
## Laravel-Style Methods
|
|
72
72
|
|
|
73
|
-
The
|
|
73
|
+
The API is inspired by Laravel, but the installed TypeScript implementation is
|
|
74
|
+
the authority. Its method names, argument order, return types and mutation
|
|
75
|
+
semantics are not an assertion of complete Laravel compatibility. Use the
|
|
76
|
+
exported `CollectionOperations<T>` type to check a method before using it.
|
|
74
77
|
|
|
75
|
-
|
|
78
|
+
Verified common operations include `map`, `filter`, `reduce`, `flatMap`,
|
|
79
|
+
`chunk`, `groupBy`, `keyBy`, `countBy`, `pluck`, `sortBy`, `sortByDesc`,
|
|
80
|
+
`unique`, `sum`, `avg`, `min`, `max`, `first`, `last`, `partition`,
|
|
81
|
+
`where`, `whereIn`, `intersect`, `union`, and `toArray`. The installed release
|
|
82
|
+
uses `toJSON`, not the assumed `toJson` spelling. `groupBy` returns a Map of
|
|
83
|
+
collections; `keyBy` and `countBy` also return Maps. Read their types when
|
|
84
|
+
serializing or passing them across a package boundary.
|
|
85
|
+
|
|
86
|
+
The wrapper exports `Collection`, `CollectionOperations`, `CollectionMetrics`,
|
|
87
|
+
`LazyCollectionOperations`, `PaginationResult`, `StandardDeviationResult` and
|
|
88
|
+
`ValidationSchema`. Annotate exported collection values with a named type to
|
|
89
|
+
keep declaration generation from degrading an inferred re-export to unknown.
|
|
76
90
|
|
|
77
91
|
## Gotchas
|
|
78
|
-
- **Thin wrapper**
|
|
79
|
-
- **
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
- **
|
|
92
|
+
- **Thin wrapper** - re-exports `collect` and collection types from `ts-collect`
|
|
93
|
+
- **Mutation is method-specific** - map/filter return new collections, while
|
|
94
|
+
pop/shift mutate the collection's shared backing array. Clone input if later
|
|
95
|
+
operations must not change the caller's array.
|
|
96
|
+
- **For simple array operations** - `@stacksjs/arrays` may be more appropriate
|
|
97
|
+
- **Map results are not JSON objects** - convert them deliberately; JSON.stringify
|
|
98
|
+
on a Map does not serialize its entries.
|
|
99
|
+
- **Not used for ORM results** - ORM queries return plain arrays, not collections. Wrap with `collect()` if needed
|
|
@@ -238,7 +238,31 @@ await Payment.charge(customer, { amount: order.totalAmount, currency: 'usd' }, p
|
|
|
238
238
|
The provider's webhook reaches orders through `POST /webhooks/payments` (see `stacks-payments`).
|
|
239
239
|
|
|
240
240
|
## Dashboard Routes
|
|
241
|
-
|
|
241
|
+
Commerce dashboard pages use `/commerce/*` on the dashboard server, for example
|
|
242
|
+
`/commerce/products` and `/commerce/orders`. Their data Actions use
|
|
243
|
+
`/api/dashboard/*`. Verify the actual page registry instead of assuming that
|
|
244
|
+
every commerce model has an automatically generated dashboard view.
|
|
245
|
+
|
|
246
|
+
## Enable the feature and choose the native seam
|
|
247
|
+
|
|
248
|
+
Read `config/commerce.ts` and the feature lifecycle before adding a parallel
|
|
249
|
+
cart or checkout library. `buddy commerce:install` enables the feature and
|
|
250
|
+
copies its owned scaffold paths without overwriting existing application work
|
|
251
|
+
by default. The `@stacksjs/features` manifest owns its tables and the migration
|
|
252
|
+
runner gates disabled feature migrations. Changing `enabled` alone does not
|
|
253
|
+
prove that a route bundle or view has been mounted.
|
|
254
|
+
|
|
255
|
+
The namespace's helpers, model methods and provider APIs are separate seams.
|
|
256
|
+
Use the existing checkout guards, order state transitions, idempotency and
|
|
257
|
+
provider webhook Actions for an order flow; creating a local payment row does
|
|
258
|
+
not establish that a provider collected money. Public storefront data should
|
|
259
|
+
carry the product/customer/site scope chosen at its boundary.
|
|
260
|
+
|
|
261
|
+
For variant selection, shipping zones/rates, auctions, digital deliveries or
|
|
262
|
+
loyalty rules, inspect the selected submodule's exported operations and its
|
|
263
|
+
tests rather than extrapolating a generic CRUD interface. Native models cover
|
|
264
|
+
more domain features than the short table here lists. Feature-specific routes
|
|
265
|
+
and jobs also need their enabled feature, tables and worker prerequisites.
|
|
242
266
|
|
|
243
267
|
## Gotchas
|
|
244
268
|
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# STX browser delivery and contracts
|
|
2
|
+
|
|
3
|
+
This reference applies to `<script client>` in the current installed STX.
|
|
4
|
+
The eager runtime, client-script compiler and demand bundler cooperate. The
|
|
5
|
+
ambient browser manifest is a type declaration input, not this delivery map.
|
|
6
|
+
|
|
7
|
+
## Delivery paths
|
|
8
|
+
|
|
9
|
+
1. Eager runtime primitives are exposed on `window.stx`; the compiler provides
|
|
10
|
+
the names a script uses. Some also have explicit bare `window.name` aliases.
|
|
11
|
+
2. STX scans authored calls for supported demand composables and emits their
|
|
12
|
+
browser code. `useForm`, observers, mouse/parallax and scroll helpers use
|
|
13
|
+
this path. The deprecated internal name `SERVER_ONLY_COMPOSABLES` is a
|
|
14
|
+
demand allowlist, not a statement that those helpers cannot run in browsers.
|
|
15
|
+
3. Explicit application-module imports are bundled separately. Their bindings
|
|
16
|
+
do not leak into another imported module or magically change Ref contracts.
|
|
17
|
+
|
|
18
|
+
Installed STX 0.2.422 delivers `useForm`, `useIntersectionObserver`,
|
|
19
|
+
`useMouse`, `useParallax`, and `useScroll` on demand. It eagerly supplies
|
|
20
|
+
`useMediaQuery` and `usePreferredReducedMotion` through the runtime/compiler.
|
|
21
|
+
An older installation must be checked against its own runtime and demand
|
|
22
|
+
implementation rather than a newer docs list. Demand legacy helpers commonly
|
|
23
|
+
expose getters, `get()`, `subscribe()`, and `stop()`. Their getters are not
|
|
24
|
+
automatically signal-tracked template values.
|
|
25
|
+
|
|
26
|
+
## Browser and module contracts differ
|
|
27
|
+
|
|
28
|
+
| Name | STX client runtime | Explicit @stacksjs/composables |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| useCounter | numeric count getter, inc/dec/set/reset, subscribe | count Ref, inc/dec/set/reset/get |
|
|
31
|
+
| useFocus | isFocused getter, focus/blur/subscribe | focused Ref, focus/blur |
|
|
32
|
+
| useTimeout | callback then delay, pending getter and start/stop | interval then options, Ref or controls |
|
|
33
|
+
| useLocalStorage | callable signal | object Ref |
|
|
34
|
+
| useForm | schema then initialValues, signal-backed property records | options object, Stacks schema rules, Ref values and field accessors |
|
|
35
|
+
|
|
36
|
+
## Motion and observers
|
|
37
|
+
|
|
38
|
+
Prefer CSS transitions or scroll-driven animation. Use the eager reduced-motion
|
|
39
|
+
signal for anything beyond hover. Attach native browser observation in a mount
|
|
40
|
+
hook and clean it up at component destruction:
|
|
41
|
+
|
|
42
|
+
```html
|
|
43
|
+
<script client>
|
|
44
|
+
const card = useRef('card')
|
|
45
|
+
const visible = state(false)
|
|
46
|
+
const reduceMotion = usePreferredReducedMotion()
|
|
47
|
+
|
|
48
|
+
onMount(() => {
|
|
49
|
+
const observer = useIntersectionObserver(
|
|
50
|
+
() => card.current,
|
|
51
|
+
entry => visible.set(entry.isIntersecting),
|
|
52
|
+
)
|
|
53
|
+
onDestroy(() => observer.stop())
|
|
54
|
+
})
|
|
55
|
+
</script>
|
|
56
|
+
|
|
57
|
+
<article ref="card" :class="visible() || reduceMotion() ? 'opacity-100' : 'opacity-0'">
|
|
58
|
+
Content
|
|
59
|
+
</article>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
STX `useScroll()` observes window scrolling; `useMouse(options?)` tracks
|
|
63
|
+
mouse state; `useParallax()` tracks device orientation. Read their actual
|
|
64
|
+
`get()/subscribe()/stop()` result before wiring a signal adapter. The explicit
|
|
65
|
+
Stacks versions accept different targets/options and return Refs. Include
|
|
66
|
+
permission-denied and unsupported-device behavior, and avoid doing layout work
|
|
67
|
+
on every event when CSS can perform it.
|
|
68
|
+
|
|
69
|
+
## Forms
|
|
70
|
+
|
|
71
|
+
Bare `useForm(schema, initialValues?)` selects STX's form implementation. Its
|
|
72
|
+
schema contains STX Validator objects (the `v` builder is an explicit package
|
|
73
|
+
export, not an eager bare global). `form.values.email`, `form.errors.email`,
|
|
74
|
+
touched/dirty/validating records are signal-backed properties;
|
|
75
|
+
`getFieldState(name)`, `validateField(name)`, `validate()` and
|
|
76
|
+
`handleSubmit(handler)` follow that implementation. The explicit
|
|
77
|
+
`@stacksjs/composables` implementation instead takes
|
|
78
|
+
`{ initialValues, schema, onSubmit }` and Stacks `schema.string()` rules.
|
|
79
|
+
Never paste one implementation's options into the other.
|
|
80
|
+
|
|
81
|
+
## Data and session scope
|
|
82
|
+
|
|
83
|
+
STX `useQuery` and `useFetch` use callable state and can consume server
|
|
84
|
+
hydration data. `clearServerData(key?)` invalidates consumed server data after
|
|
85
|
+
a mutation. Persisted account state uses `keptState`, `cachedQuery`, and
|
|
86
|
+
`setKeptScope`; establish the signed-in account scope before creating values,
|
|
87
|
+
flush pending writes when appropriate, and forget that scope on sign-out.
|
|
88
|
+
Ordinary localStorage is not account-scoped automatically.
|
|
89
|
+
|
|
90
|
+
## Verify the actual delivery
|
|
91
|
+
|
|
92
|
+
Inspect installed STX `runtime-globals`, `signals`, `client-script`,
|
|
93
|
+
`framework-composables`, and `unresolved-identifiers` modules. The retained
|
|
94
|
+
STX tests `framework-composables.test.ts`,
|
|
95
|
+
`framework-composables-dist-layout.test.ts`,
|
|
96
|
+
`forms/use-form-reactive.test.ts` and `signals/client-api-delivery.test.ts`
|
|
97
|
+
check different delivery paths. Stacks' eager alias test covers one path only.
|
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: stacks-composables
|
|
3
|
-
description: Use when
|
|
3
|
+
description: Use when choosing or implementing reactive composables in STX, data queries, forms, consent, browser APIs, motion, or debugging client delivery. Covers @stacksjs/composables, STX eager and demand browser delivery, and the difference between callable signals and module Refs.
|
|
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
|
|
9
|
+
# Stacks composables
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
Choose the execution surface before copying a composable signature. An STX
|
|
12
|
+
client script, an explicitly imported `@stacksjs/composables` module, and a
|
|
13
|
+
server script can expose similarly named functions with different contracts.
|
|
14
|
+
Read [BROWSER.md](BROWSER.md) for template delivery, forms and motion examples.
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
feeds an ambient `.d.ts` and nothing reads it at build time, so it says what the
|
|
17
|
-
compiler accepts and not what the browser has; the two disagree in both
|
|
18
|
-
directions (stacksjs/stacks#2585).
|
|
16
|
+
## Eager window aliases
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
`
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
## What you can write bare in a template
|
|
18
|
+
The following markers describe only explicit eager `window.name` aliases in
|
|
19
|
+
`getCachedSignalsRuntime()`. They are checked by
|
|
20
|
+
`core/composables/tests/skill-runtime-globals.test.ts`, and are not the whole
|
|
21
|
+
compiler-delivered client surface.
|
|
26
22
|
|
|
27
23
|
<!-- auto-imported:begin - checked against the stx runtime by
|
|
28
24
|
core/composables/tests/skill-runtime-globals.test.ts. These are the names
|
|
@@ -39,176 +35,86 @@ failure as a framework bug.
|
|
|
39
35
|
|
|
40
36
|
<!-- auto-imported:end -->
|
|
41
37
|
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
Additional STX names are exposed through `window.stx` and compiler
|
|
39
|
+
destructuring, or bundled from STX composables on demand. In current STX,
|
|
40
|
+
`useMediaQuery` and `usePreferredReducedMotion` use the first path;
|
|
41
|
+
`useForm`, `useScroll`, `useMouse`, `useParallax`, and
|
|
42
|
+
`useIntersectionObserver` use the demand path. These client-script names do
|
|
43
|
+
not come from the ambient `browser-auto-imports.json` manifest.
|
|
44
|
+
|
|
45
|
+
## Explicit module imports
|
|
46
|
+
|
|
47
|
+
The module surface lives in `core/composables/src/index.ts`. Import every
|
|
48
|
+
binding in a TypeScript module even if a template entry can use it bare.
|
|
44
49
|
|
|
45
50
|
```ts
|
|
46
|
-
import {
|
|
47
|
-
```
|
|
51
|
+
import { useCounter } from '@stacksjs/composables'
|
|
48
52
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
compiler accepts every name it declares - and only five of its 27 `use*` are in
|
|
53
|
-
the runtime. `useStorage`, `useNow`, `useDateFormat`, `useForm` and the `use*Store`
|
|
54
|
-
composables typecheck and then throw a ReferenceError during setup, which takes
|
|
55
|
-
the page down rather than failing the one call. In the other direction
|
|
56
|
-
`useLocalStorage`, `useColorMode`, `useCounter` and `useMediaQuery` all work in
|
|
57
|
-
a template and `tsc` rejects them.
|
|
58
|
-
|
|
59
|
-
The list above is the runtime's, so it is the one that predicts whether the page
|
|
60
|
-
loads.
|
|
61
|
-
|
|
62
|
-
## Key Path
|
|
63
|
-
- Core package: `storage/framework/core/composables/src/`
|
|
64
|
-
|
|
65
|
-
## Core Reactive Primitives
|
|
66
|
-
|
|
67
|
-
```typescript
|
|
68
|
-
// From _shared.ts
|
|
69
|
-
type MaybeRef<T> = T | Ref<T>
|
|
70
|
-
type MaybeRefOrGetter<T> = T | Ref<T> | (() => T)
|
|
71
|
-
unref(val) // unwrap Ref
|
|
72
|
-
toValue(val) // unwrap Ref or getter
|
|
73
|
-
isRef(val) // type guard
|
|
53
|
+
const counter = useCounter(0, { min: 0, max: 10 })
|
|
54
|
+
counter.inc()
|
|
55
|
+
const value = counter.count.value
|
|
74
56
|
```
|
|
75
57
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
-
|
|
120
|
-
- `useDropZone(el)` → drop zone detection
|
|
121
|
-
- `onLongPress(el, handler)` → long press detection
|
|
122
|
-
- `onClickOutside(el, handler)` → click outside detection
|
|
123
|
-
|
|
124
|
-
## Sensors
|
|
125
|
-
- `useGeolocation()` → `{ coords, locatedAt, error }`
|
|
126
|
-
- `useDeviceMotion()` → acceleration & rotation
|
|
127
|
-
- `useDeviceOrientation()` → alpha, beta, gamma
|
|
128
|
-
- `useBattery()` → `{ charging, chargingTime, level }`
|
|
129
|
-
- `useDevicePixelRatio()` → `Ref<number>`
|
|
130
|
-
- `useScreenSafeArea()` → safe area insets
|
|
131
|
-
|
|
132
|
-
## Observers
|
|
133
|
-
- `useIntersectionObserver(el, callback)` → visibility detection
|
|
134
|
-
- `useResizeObserver(el, callback)` → size changes
|
|
135
|
-
- `useMutationObserver(el, callback)` → DOM mutations
|
|
136
|
-
- `useElementBounding(el)` → `{ top, left, width, height }`
|
|
137
|
-
- `useElementVisibility(el)` → `Ref<boolean>`
|
|
138
|
-
- `useElementHover(el)` → `Ref<boolean>`
|
|
139
|
-
|
|
140
|
-
## Async
|
|
141
|
-
- `useAsyncState(fn, initial)` → `{ state, isReady, isLoading, error, execute }`
|
|
142
|
-
- `useAsyncQueue(tasks)` → sequential async execution
|
|
143
|
-
- `computedAsync(fn)` → async computed value
|
|
144
|
-
- `computedEager(fn)` → immediately evaluated computed
|
|
145
|
-
|
|
146
|
-
## Network
|
|
147
|
-
- `useFetch(url, options?)` → fetch wrapper with reactive state
|
|
148
|
-
- `useWebSocket(url)` → WebSocket connection
|
|
149
|
-
- `useEventSource(url)` → SSE connection
|
|
150
|
-
- `useOnline()` → `Ref<boolean>` (network status)
|
|
151
|
-
|
|
152
|
-
## Input & Focus
|
|
153
|
-
- `useFocus(el)` → `{ focused, focus, blur }`
|
|
154
|
-
- `useFocusWithin(el)` → any child focused
|
|
155
|
-
- `useKeyModifier(key)` → modifier key state
|
|
156
|
-
- `usePermission(name)` → permission state
|
|
157
|
-
- `useShare(options)` → Web Share API
|
|
158
|
-
|
|
159
|
-
## Utilities
|
|
160
|
-
- `useDebounceFn(fn, ms)` → debounced function
|
|
161
|
-
- `useThrottleFn(fn, ms)` → throttled function
|
|
162
|
-
- `useDebouncedRef(ref, ms)` → debounced ref updates
|
|
163
|
-
- `useThrottledRef(ref, ms)` → throttled ref updates
|
|
164
|
-
- `watchDebounced(source, callback, ms)` → debounced watcher
|
|
165
|
-
- `watchThrottled(source, callback, ms)` → throttled watcher
|
|
166
|
-
- `watchOnce(source, callback)` → one-time watcher
|
|
167
|
-
- `whenever(source, callback)` → watch for truthy
|
|
168
|
-
- `until(source).toBe(value)` → wait for value
|
|
169
|
-
- `syncRef(refA, refB)` → bidirectional sync
|
|
170
|
-
|
|
171
|
-
## Dark Mode
|
|
172
|
-
- `useDark()` → `Ref<boolean>`
|
|
173
|
-
- `usePreferredDark()` → system preference
|
|
174
|
-
- `usePreferredColorScheme()` → color scheme preference
|
|
175
|
-
|
|
176
|
-
## Media
|
|
177
|
-
- `useMediaQuery(query)` → `Ref<boolean>`
|
|
178
|
-
- `usePreferredContrast()` → contrast preference
|
|
179
|
-
- `usePreferredLanguages()` → language preferences
|
|
180
|
-
- `usePreferredReducedMotion()` → reduce motion preference
|
|
181
|
-
|
|
182
|
-
## State Patterns
|
|
183
|
-
- `createEventHook()` → typed event hook
|
|
184
|
-
- `createGlobalState(fn)` → shared state across components
|
|
185
|
-
- `createSharedComposable(fn)` → shared composable instance
|
|
186
|
-
- `refDefault(ref, defaultValue)` → ref with default
|
|
187
|
-
- `refAutoReset(value, ms)` → auto-resetting ref
|
|
188
|
-
- `makeDestructurable(obj, arr)` → support both destructuring styles
|
|
189
|
-
- `useIdle(ms)` → user idle detection
|
|
190
|
-
- `usePageLeave()` → detect page leave
|
|
191
|
-
- `useFps()` → frames per second
|
|
192
|
-
- `useMounted()` → `Ref<boolean>` mount state
|
|
193
|
-
- `tryOnMounted(fn)` → safe onMounted
|
|
194
|
-
- `useObjectUrl(blob)` → object URL with auto-cleanup
|
|
195
|
-
|
|
196
|
-
## Script & Style Injection
|
|
197
|
-
- `useScriptTag(src, onLoaded?)` → inject `<script>`
|
|
198
|
-
- `useStyleTag(css)` → inject `<style>`
|
|
199
|
-
|
|
200
|
-
## Math
|
|
201
|
-
- `useAbs`, `useAverage`, `useCeil`, `useClamp`, `useFloor`, `useMax`, `useMin`, `usePrecision`, `useRound`, `useSum`, `useTrunc`
|
|
202
|
-
- `and`, `or`, `logicNot`, `logicOr`
|
|
58
|
+
Module composables use object `Ref` values from STX: read/write `.value`,
|
|
59
|
+
subscribe where provided, and use the exported cleanup/control functions.
|
|
60
|
+
Template signals use `count()`, `.set()`, and `.update()`. Passing a callable
|
|
61
|
+
signal into a module helper expecting a `Ref` is not an implicit conversion.
|
|
62
|
+
|
|
63
|
+
| Task | Explicit module exports |
|
|
64
|
+
|---|---|
|
|
65
|
+
| State/storage | useCounter, useToggle, useStorage, useLocalStorage, history helpers |
|
|
66
|
+
| Async/data | useFetch, createFetch, useQuery, useMutation, createQueryClient, useAsyncState |
|
|
67
|
+
| Forms/consent | useForm, useCookieConsent |
|
|
68
|
+
| DOM/input | useFocus, useEventListener, onClickOutside, observers, useScroll, useMouse |
|
|
69
|
+
| Timing/watch | useIntervalFn, useTimeoutFn, useTimeoutPoll, watchDebounced, watchPausable |
|
|
70
|
+
| Media/device | useMediaQuery, usePreferredReducedMotion, useGeolocation, useDeviceOrientation |
|
|
71
|
+
| Browser facilities | clipboard, permissions, fullscreen, workers, virtual lists, sharing |
|
|
72
|
+
|
|
73
|
+
Inspect the barrel and the individual implementation for other exports rather
|
|
74
|
+
than installing a second library for a feature Stacks already has.
|
|
75
|
+
|
|
76
|
+
## Module query cache
|
|
77
|
+
|
|
78
|
+
`useQuery({ queryKey, queryFn, staleTime, enabled, client })` provides Ref
|
|
79
|
+
data/error/loading state, in-flight deduplication and `refetch()`.
|
|
80
|
+
`queryFn` receives an AbortSignal. `createQueryClient({ gcTime })` provides
|
|
81
|
+
scoped clients, `get`, `set`, `invalidate`, `gc`, and `clear`.
|
|
82
|
+
Invalidation accepts prefix keys or a predicate matcher. Optional
|
|
83
|
+
`refetchOnFocus` and `refetchOnReconnect` refetch stale data. Use
|
|
84
|
+
`unsubscribe()` when the consumer ends. For template runtime queries read
|
|
85
|
+
the STX contract in [BROWSER.md](BROWSER.md); their signatures differ.
|
|
86
|
+
|
|
87
|
+
## Module forms and consent
|
|
88
|
+
|
|
89
|
+
Explicit `useForm({ initialValues, schema, onSubmit, validateOn })` accepts
|
|
90
|
+
Stacks validators, exposes Ref values plus `field(name)` accessors, dirty/touched
|
|
91
|
+
state, accessible `inputProps()`, `submitButtonProps()`, and server-error
|
|
92
|
+
`setErrors()`. Apply a returned 422 map explicitly; fetching an error does
|
|
93
|
+
not automatically attach it to a form. Field arrays and a progressive HTML
|
|
94
|
+
fallback are not established by the primitive alone.
|
|
95
|
+
|
|
96
|
+
`useCookieConsent({ policyVersion, storageKey, onChange })` stores a versioned
|
|
97
|
+
decision. Necessary consent is always enabled; optional categories default to
|
|
98
|
+
declined. `accept`, `acceptAll`, `declineAll`, and `withdraw` change it;
|
|
99
|
+
`allows(category)` gates loading. A changed policy version asks again, blocked
|
|
100
|
+
storage falls back to no stored decision, and returned visitor consent is
|
|
101
|
+
independent of a signed-in session. Import this helper explicitly.
|
|
203
102
|
|
|
204
103
|
## Gotchas
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
`
|
|
210
|
-
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
-
|
|
214
|
-
|
|
104
|
+
|
|
105
|
+
- Browser capability availability and permission denial are runtime states,
|
|
106
|
+
even when a helper imports successfully during SSR.
|
|
107
|
+
- Client observers/listeners need teardown. Read the selected helper's return
|
|
108
|
+
shape; `stop`, `remove`, and `unsubscribe` are not interchangeable names.
|
|
109
|
+
- Module `useTimeout(ms)` returns a Ref unless controls are requested; browser
|
|
110
|
+
runtime `useTimeout(callback, delay)` runs a callback. Module counter methods
|
|
111
|
+
are `inc`/`dec`, never `increment`/`decrement`.
|
|
112
|
+
- Typechecking an ambient name proves neither its delivery nor its contract.
|
|
113
|
+
Exercise a rendered template with the installed STX version.
|
|
114
|
+
|
|
115
|
+
## Source and evidence
|
|
116
|
+
|
|
117
|
+
`core/composables/src/index.ts`, individual source files, and retained
|
|
118
|
+
`tests/use-query.test.ts`, `tests/use-form.test.ts`,
|
|
119
|
+
`tests/use-cookie-consent.test.ts` and `tests/skill-runtime-globals.test.ts`
|
|
120
|
+
are authoritative (core paths relative to `storage/framework/`).
|