@stacksjs/defaults 0.75.109 → 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.
- 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/ai/skills/stacks-technical-diagrams/{bunfig.toml → runtime.toml} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: stacks-middleware
|
|
3
|
-
description: Use when working with middleware in a Stacks application - defining middleware, applying to routes, middleware aliases, parameterized middleware, groups, or the middleware execution pipeline. Covers the Middleware class, app/Middleware.ts alias registry, and
|
|
3
|
+
description: Use when working with middleware in a Stacks application - defining middleware, applying to routes, middleware aliases, parameterized middleware, groups, or the middleware execution pipeline. Covers the Middleware class, app/Middleware.ts alias registry, and the default middleware files.
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: Bun >= 1.3.0, TypeScript
|
|
6
6
|
allowed-tools: Read Edit Write Bash Grep Glob
|
|
@@ -14,7 +14,7 @@ Built into `@stacksjs/router`. Middleware intercepts requests before they reach
|
|
|
14
14
|
- Middleware class: `storage/framework/core/router/src/middleware.ts`
|
|
15
15
|
- Execution engine: `storage/framework/core/router/src/stacks-router.ts`
|
|
16
16
|
- Alias registry: `app/Middleware.ts`
|
|
17
|
-
- Default middleware: `storage/framework/defaults/app/Middleware/`
|
|
17
|
+
- Default middleware: `storage/framework/defaults/app/Middleware/`
|
|
18
18
|
- Auth middleware (standalone): `storage/framework/core/auth/src/middleware.ts`
|
|
19
19
|
- Tests: `storage/framework/core/router/tests/middleware.test.ts`
|
|
20
20
|
|
|
@@ -61,9 +61,9 @@ export default new Middleware({
|
|
|
61
61
|
### Short-Circuiting
|
|
62
62
|
|
|
63
63
|
Middleware can stop request processing by:
|
|
64
|
-
1. **Throwing an Error with `statusCode`**
|
|
65
|
-
2. **Throwing a Response**
|
|
66
|
-
3. **Returning void**
|
|
64
|
+
1. **Throwing an Error with `statusCode`** - converted to HTTP error response
|
|
65
|
+
2. **Throwing a Response** - returned directly to client
|
|
66
|
+
3. **Returning void** - continues to next middleware
|
|
67
67
|
|
|
68
68
|
```typescript
|
|
69
69
|
// Error with status code
|
|
@@ -178,7 +178,7 @@ calling `handle`, sorts the combined page chain by priority, writes parameters
|
|
|
178
178
|
to `request._middlewareParams`, supports exact aliases containing colons and
|
|
179
179
|
`!alias` inversion, and fails closed when an alias is missing.
|
|
180
180
|
|
|
181
|
-
Group middleware is prepended to all routes inside the callback. Groups can be nested
|
|
181
|
+
Group middleware is prepended to all routes inside the callback. Groups can be nested - middleware accumulates.
|
|
182
182
|
|
|
183
183
|
### Parameterized Middleware
|
|
184
184
|
|
|
@@ -198,7 +198,7 @@ Parameters are stored on `request._middlewareParams[middlewareName]` and parsed
|
|
|
198
198
|
| Alias | Class | Priority | Description |
|
|
199
199
|
|-------|-------|----------|-------------|
|
|
200
200
|
| `maintenance` | Maintenance | 0 | Checks maintenance mode, supports secret bypass URL and IP allowlist |
|
|
201
|
-
| `auth` | Auth | 1 |
|
|
201
|
+
| `auth` | Auth | 1 | Resolves bearer/token cookie/session and stamps the authenticated user |
|
|
202
202
|
| `api` | Api | 1 | Validates request accepts JSON |
|
|
203
203
|
| `guest` | Guest | 1 | Ensures user is NOT authenticated (for login/register pages) |
|
|
204
204
|
| `env` | Env | 1 | Checks current environment |
|
|
@@ -209,11 +209,11 @@ Parameters are stored on `request._middlewareParams[middlewareName]` and parsed
|
|
|
209
209
|
| `permission` | Permission | 3 | Checks user permissions (parameterized: `permission:edit-posts`) |
|
|
210
210
|
| `team` | Team | 3 | Ensures user belongs to a team (parameterized: `team:teamId`) |
|
|
211
211
|
| `verified` | EnsureEmailIsVerified | 4 | Verifies email is confirmed |
|
|
212
|
-
| `throttle` | Throttle |
|
|
213
|
-
| `env:local` | EnvLocal |
|
|
214
|
-
| `env:development` / `env:dev` | EnvDevelopment |
|
|
215
|
-
| `env:staging` | EnvStaging |
|
|
216
|
-
| `env:production` / `env:prod` | EnvProduction |
|
|
212
|
+
| `throttle` | Throttle | - | Rate limiting (parameterized: `throttle:60,1` or `throttle:100,5m`) |
|
|
213
|
+
| `env:local` | EnvLocal | - | Only allows local environment |
|
|
214
|
+
| `env:development` / `env:dev` | EnvDevelopment | - | Only allows development |
|
|
215
|
+
| `env:staging` | EnvStaging | - | Only allows staging |
|
|
216
|
+
| `env:production` / `env:prod` | EnvProduction | - | Only allows production |
|
|
217
217
|
|
|
218
218
|
### Environment Negation Variants
|
|
219
219
|
|
|
@@ -242,6 +242,12 @@ User middleware in `app/Middleware/` always takes precedence over framework defa
|
|
|
242
242
|
## Representative Implementations
|
|
243
243
|
|
|
244
244
|
### Auth Middleware
|
|
245
|
+
|
|
246
|
+
The default `defaults/app/Middleware/Auth.ts` resolves a parsed bearer first,
|
|
247
|
+
then the configured token cookie, then `session_id`. It loads the user, calls
|
|
248
|
+
`Auth.setUser`, stamps `_authenticatedUser`, and stamps `_currentAccessToken`
|
|
249
|
+
for token authentication. The following is only a minimal custom bearer guard:
|
|
250
|
+
|
|
245
251
|
```typescript
|
|
246
252
|
export default new Middleware({
|
|
247
253
|
name: 'Auth',
|
|
@@ -299,12 +305,22 @@ import { authMiddleware, authMiddlewareHandler } from '@stacksjs/auth'
|
|
|
299
305
|
```
|
|
300
306
|
|
|
301
307
|
## Gotchas
|
|
302
|
-
- **Priority DOES order the chain**
|
|
303
|
-
- **`terminate()` doesn't exist**
|
|
304
|
-
- **
|
|
305
|
-
- **EnvNot* files have no aliases**
|
|
306
|
-
- **The alias map merges over the defaults**
|
|
307
|
-
- **Middleware is cached after first load**
|
|
308
|
-
- **User overrides take precedence**
|
|
309
|
-
- **Group middleware accumulates**
|
|
310
|
-
- **Request body parsed before middleware**
|
|
308
|
+
- **Priority DOES order the chain** - entries are sorted by `priority` (lower first, default 10) before execution, so CORS can precede auth regardless of the order they were attached in. An earlier version of this file said otherwise. A non-finite or negative value is clamped to the default and warned about once
|
|
309
|
+
- **`terminate()` doesn't exist** - some docs reference it, but it's not in the actual `MiddlewareConfig` interface
|
|
310
|
+
- **Auth entrypoints** - default Auth also loads/stamps the user and current token; inspect its cookie/session branches before replacing it
|
|
311
|
+
- **EnvNot* files have no aliases** - reachable by class name, or as `'!env:production'` and friends
|
|
312
|
+
- **The alias map merges over the defaults** - an app's `app/Middleware.ts` adds to and overrides them rather than replacing the set
|
|
313
|
+
- **Middleware is cached after first load** - changes require server restart
|
|
314
|
+
- **User overrides take precedence** - `app/Middleware/Auth.ts` replaces the framework default completely
|
|
315
|
+
- **Group middleware accumulates** - nested groups combine all parent middleware
|
|
316
|
+
- **Request body parsed before middleware** - Laravel-style methods (`.input()`, `.query`, `.file()`) are available in middleware
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
## Source verification
|
|
320
|
+
|
|
321
|
+
Use `storage/framework/defaults/app/Middleware/Auth.ts` for the complete
|
|
322
|
+
native authentication guard and `core/auth/tests/auth-middleware-entrypoints.test.ts`
|
|
323
|
+
for HTTP entrypoint coverage. Shared page middleware wiring is in
|
|
324
|
+
`core/actions/src/dev/views.ts` and `core/buddy/src/production-server.ts`;
|
|
325
|
+
consult their loadMiddlewareHandlers wiring for page redirects and
|
|
326
|
+
Response handling before assuming an API refusal behaves identically in HTML.
|
|
@@ -11,7 +11,7 @@ allowed-tools: Read Edit Write Bash Grep Glob
|
|
|
11
11
|
Schema change management via migration files.
|
|
12
12
|
|
|
13
13
|
## Key Paths
|
|
14
|
-
- Migration files: `database/migrations/`
|
|
14
|
+
- Migration files: `database/migrations/`
|
|
15
15
|
- Database config: `config/database.ts`
|
|
16
16
|
- Model snapshot: `storage/framework/database/model-snapshot.<dialect>.json`
|
|
17
17
|
|
|
@@ -23,7 +23,6 @@ buddy migrate --diff # show SQL without running
|
|
|
23
23
|
buddy migrate --auth # include auth tables
|
|
24
24
|
buddy migrate:fresh # drop ALL tables and re-migrate
|
|
25
25
|
buddy migrate:fresh --seed # drop, migrate, then seed
|
|
26
|
-
buddy dns:pull # live zone as a config/dns.ts block
|
|
27
26
|
buddy make:migration <name> # create new migration file
|
|
28
27
|
buddy seed # seed database
|
|
29
28
|
buddy generate:migrations # generate migrations from model diffs
|
|
@@ -68,7 +67,7 @@ without changing application ignore rules or staging SQL contents. Review and
|
|
|
68
67
|
stage migrations with their models and snapshot normally; do not add per-file
|
|
69
68
|
`.gitignore` exceptions. Dry-run previews never change the Git index.
|
|
70
69
|
|
|
71
|
-
## Built-in
|
|
70
|
+
## Built-in migration families
|
|
72
71
|
|
|
73
72
|
The framework includes migrations for all built-in models:
|
|
74
73
|
|
|
@@ -112,12 +111,37 @@ The framework includes migrations for all built-in models:
|
|
|
112
111
|
|
|
113
112
|
## Workflow
|
|
114
113
|
|
|
115
|
-
1. Define/modify model
|
|
114
|
+
1. Define/modify the app model under `app/Models/`; edit defaults only when working on the framework
|
|
116
115
|
2. Run `buddy generate:migrations` to generate SQL diffs
|
|
117
116
|
3. Review generated migration files
|
|
118
117
|
4. Run `buddy generate:migrations` again and confirm there is no remaining diff
|
|
119
118
|
5. Run `buddy migrate` to apply
|
|
120
|
-
6.
|
|
119
|
+
6. Review models, generated SQL, and `storage/framework/database/model-snapshot.<dialect>.json` together; commit when authorized
|
|
120
|
+
|
|
121
|
+
## Native migration and schema tooling
|
|
122
|
+
|
|
123
|
+
Models, named pivot schemas, indexes, foreign-key actions, auth/queue/notification
|
|
124
|
+
support tables, and optional feature selection contribute to schema management.
|
|
125
|
+
The model diff uses the dialect snapshot; live schema inspection is a separate
|
|
126
|
+
drift check. A stable no-op generation is not proof that an independently edited
|
|
127
|
+
production database matches the declaration.
|
|
128
|
+
|
|
129
|
+
Inspect native schema, FK and unique-index audits through the database package:
|
|
130
|
+
`auditSchemaDrift`, `auditForeignKeys`, `auditUniqueIndexes`, and their associated
|
|
131
|
+
CLI commands. Read `buddy list` and each command's help for the current flags.
|
|
132
|
+
Safe schema helpers include `addColumnSafely`, `renameColumnSafely`, and
|
|
133
|
+
`backfillInBatches`; they have dialect-specific preconditions and are not a
|
|
134
|
+
universal zero-downtime guarantee.
|
|
135
|
+
|
|
136
|
+
The runner tracks applied migrations, locks concurrent runs, selects the active
|
|
137
|
+
dialect corpus, and preserves application-owned tables when optional bundles
|
|
138
|
+
are excluded. Removing a feature from generation is not permission to drop its
|
|
139
|
+
live data. MySQL/PostgreSQL/Vitess/Turso require their own SQL and evidence
|
|
140
|
+
checks; never run SQLite SQL on a different provider because its filename exists.
|
|
141
|
+
|
|
142
|
+
Source: `core/database/src/{migrations,model-sources,migration-ledger,
|
|
143
|
+
safe-migrations,schema-drift,fk-audit,unique-audit}.ts`, `config/query-builder.ts`,
|
|
144
|
+
and their retained database tests.
|
|
121
145
|
|
|
122
146
|
## Gotchas
|
|
123
147
|
- `migrate:fresh` drops ALL tables — only use in development
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: stacks-mobile
|
|
3
|
-
description: Use when building native iOS or Android applications from
|
|
3
|
+
description: Use when building native iOS or Android applications from Stacks and STX with Craft, mobile configuration, native capabilities, device search, health, route recording, safe areas, haptics, or mobile build output. Covers @stacksjs/mobile and the mobile build pipeline.
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: Bun >= 1.3.0, TypeScript, Xcode for iOS project generation
|
|
6
6
|
allowed-tools: Read Edit Write Bash Grep Glob
|
|
@@ -101,7 +101,7 @@ what should differ: `swipeBack` (`'router'`, the stx router's interactive
|
|
|
101
101
|
swipe, or `'webview'` for WebKit's history swipe), `keyboardAccessory` (off),
|
|
102
102
|
`allowsLinkPreview` (off), `disableZoom` (on), `splashMaxSeconds` (3),
|
|
103
103
|
`requestTimeoutSeconds` (10), `backgroundRefresh: { enabled, identifier?,
|
|
104
|
-
minimumIntervalMinutes? }`
|
|
104
|
+
minimumIntervalMinutes? }`and`associatedDomains` (universal links). Leave
|
|
105
105
|
`swipeNavigation` unset: WebKit's swipe alongside the router's fights it, and
|
|
106
106
|
`buddy build:ios` warns. The Liquid Glass chrome needs iOS 26 at run time;
|
|
107
107
|
the default `deploymentTarget` stays, older systems drawing classic bars.
|
|
@@ -128,7 +128,7 @@ export default {
|
|
|
128
128
|
|
|
129
129
|
`slots` is a budget, not a guess. iOS indexes donated `NSUserActivity` objects
|
|
130
130
|
and hands a tapped one back only for an activity type the build declares in
|
|
131
|
-
`Info.plist`, a list fixed at build time
|
|
131
|
+
`Info.plist`, a list fixed at build time - so a type per record id cannot be
|
|
132
132
|
declared at all. Each kind gets that many slots, each slot holds whichever
|
|
133
133
|
record is currently in it, and the oldest donation makes room for the next.
|
|
134
134
|
`buddy build:ios` writes the declarations; an entry the build did not declare
|
|
@@ -155,7 +155,7 @@ host predates the bridge, and where the index is turned off (`enabled: false`),
|
|
|
155
155
|
so a page can donate unconditionally. `spotlight.routeFor(action)` answers a tap
|
|
156
156
|
synchronously for an app that already routes Craft's shortcut events itself.
|
|
157
157
|
|
|
158
|
-
Index what is the person's
|
|
158
|
+
Index what is the person's - saved, joined, entered - rather than what they
|
|
159
159
|
looked at, wherever the page re-renders on that change: a page that donates on
|
|
160
160
|
every render would put a record straight back the moment they left it. Donating
|
|
161
161
|
the same record twice is free, so an effect over the record is the natural call
|
|
@@ -299,6 +299,27 @@ context without exposing `WCSession` to STX templates. Set
|
|
|
299
299
|
|
|
300
300
|
## Validation
|
|
301
301
|
|
|
302
|
+
### Capability and lifecycle boundaries
|
|
303
|
+
|
|
304
|
+
Named imports from `@stacksjs/mobile` are browser-safe and tree-shake the
|
|
305
|
+
selected Craft services. Prefer them to reading a module namespace or reaching
|
|
306
|
+
through global bridge internals. A native host can exist before its bridge is
|
|
307
|
+
ready; service wrappers wait where appropriate, while haptics are deliberately
|
|
308
|
+
best-effort so a late response never delays a tap. Check `whenNativeMobile`
|
|
309
|
+
when selecting native-only chrome and preserve cleanup from subscriptions.
|
|
310
|
+
|
|
311
|
+
Capability configuration generates platform entitlements/privacy descriptions;
|
|
312
|
+
it does not grant the user permission or prove a capability works on every OS.
|
|
313
|
+
Permission denial, revocation, unavailable hardware and web fallback behavior
|
|
314
|
+
are ordinary states. Build evidence and a successful native API call on a real
|
|
315
|
+
device are different validations. Health/watch, StoreKit, Spotlight, background
|
|
316
|
+
refresh and live activity work need their specific device/environment checks.
|
|
317
|
+
|
|
318
|
+
Route recordings can outlive the web page, so attach to an existing recording
|
|
319
|
+
before starting a second. `indoorVerdict(fixes, elapsedS)` and
|
|
320
|
+
`typedDistanceKm(input)` are small exported helpers for indoor-workout decisions
|
|
321
|
+
and typed distance; they are not an indoor-positioning service.
|
|
322
|
+
|
|
302
323
|
Before finishing mobile work:
|
|
303
324
|
|
|
304
325
|
```bash
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: stacks-models
|
|
3
|
-
description: Use when
|
|
3
|
+
description: Use when defining or extending Stacks models, deriving migrations and CRUD, configuring attributes/relationships/traits/ownership, or preserving model inference. Covers defineModel, extendModel, model types, native data workflows, and the 107 built-in framework models.
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: Bun >= 1.3.0, TypeScript, SQLite >= 3.47.2
|
|
6
6
|
allowed-tools: Read Edit Write Bash Grep Glob
|
|
@@ -10,15 +10,21 @@ allowed-tools: Read Edit Write Bash Grep Glob
|
|
|
10
10
|
|
|
11
11
|
## Key Paths
|
|
12
12
|
- Your models: `app/Models/` (create it; it does not exist in a fresh project)
|
|
13
|
-
- Built-in models: `storage/framework/defaults/app/Models/` (
|
|
13
|
+
- Built-in models: `storage/framework/defaults/app/Models/` (grouped
|
|
14
14
|
into `commerce/`, `Content/`, `realtime/` and a flat top level)
|
|
15
|
-
-
|
|
15
|
+
- Actual `defineModel` contract: `storage/framework/core/orm/src/define-model.ts`
|
|
16
|
+
- Compatibility `ModelOptions` / `Attribute` types: `storage/framework/core/types/src/model.ts`
|
|
16
17
|
- Attribute presets: `storage/framework/types/attributes.ts`
|
|
17
18
|
|
|
18
19
|
To customize a built-in model, create the same filename under `app/Models/` -
|
|
19
20
|
`app/Models/User.ts` wins over the default. `buddy publish:model User` copies the
|
|
20
21
|
default across as a starting point.
|
|
21
22
|
|
|
23
|
+
For an additive override, use `extendModel` rather than copying the full built-in
|
|
24
|
+
definition. Read [references/model-capabilities.md](references/model-capabilities.md)
|
|
25
|
+
for merge rules, casts, encryption, ownership, validation, lifecycle, search,
|
|
26
|
+
pagination, sharding, and the native type utilities.
|
|
27
|
+
|
|
22
28
|
## Writing a model
|
|
23
29
|
|
|
24
30
|
Everything - schema, validation, factory, relationships, behavior - is declared
|
|
@@ -31,8 +37,8 @@ import { defineModel } from '@stacksjs/orm'
|
|
|
31
37
|
import { schema } from '@stacksjs/validation'
|
|
32
38
|
|
|
33
39
|
export default defineModel({
|
|
34
|
-
name: 'Product', //
|
|
35
|
-
table: 'products', //
|
|
40
|
+
name: 'Product', // declare the model identity explicitly
|
|
41
|
+
table: 'products', // declare the database table explicitly
|
|
36
42
|
primaryKey: 'id', // default
|
|
37
43
|
autoIncrement: true, // default
|
|
38
44
|
|
|
@@ -74,7 +80,11 @@ generated model types stay precise.
|
|
|
74
80
|
|
|
75
81
|
### Attribute fields
|
|
76
82
|
|
|
77
|
-
`
|
|
83
|
+
The modern `defineModel` contract accepts attributes inferred from an explicit
|
|
84
|
+
type, validation rule, factory, or default. A validator is recommended for
|
|
85
|
+
request-facing values, but is not mandatory for every internal attribute.
|
|
86
|
+
An unclassified value can infer `unknown`; declare the intended type instead
|
|
87
|
+
of forcing a cast. See `orm/tests/inference-attributes.test-d.ts`.
|
|
78
88
|
|
|
79
89
|
| Field | Effect |
|
|
80
90
|
|---|---|
|
|
@@ -90,7 +100,8 @@ generated model types stay precise.
|
|
|
90
100
|
| `foreignKey` | Disable, infer, or configure the FK constraint |
|
|
91
101
|
| `personal` | Personal data: exported by `gdpr:export`, anonymized by erasure and retention. `true`, or `{ anonymize?, export? }`. See "Personal data (GDPR)" below |
|
|
92
102
|
| `factory` | `(faker, attributes) => value`, used by seeders and tests. `attributes` holds what this record's earlier-declared factories produced, so one value can depend on another: `(faker, { discountType }) => ...` |
|
|
93
|
-
| `validation` | `{ rule, message? }` -
|
|
103
|
+
| `validation` | `{ rule, message? }` - declared rules are enforced on direct ORM writes and generated CRUD |
|
|
104
|
+
| `encrypted` | Encrypt persisted values and decrypt model reads; raw queries still see stored ciphertext |
|
|
94
105
|
|
|
95
106
|
### Traits
|
|
96
107
|
|
|
@@ -127,6 +138,13 @@ useApi: {
|
|
|
127
138
|
}
|
|
128
139
|
```
|
|
129
140
|
|
|
141
|
+
`security.api.models` and `STACKS_MODEL_APIS` select which `useApi` definitions
|
|
142
|
+
publish routes. The environment setting wins; `all`, `own`, `none`, or named
|
|
143
|
+
models can narrow the surface. An app override counts as its own model.
|
|
144
|
+
Selection does not add the trait or replace middleware/ownership checks, and
|
|
145
|
+
it is separate from feature bundle and database migration selection. See
|
|
146
|
+
`orm/tests/model-api-selection.test.ts` before configuring a restricted API.
|
|
147
|
+
|
|
130
148
|
Dashboard-specific endpoints may still use scoped Actions when their transport
|
|
131
149
|
shape, authorization boundary, or aggregation differs from generic CRUD. Do
|
|
132
150
|
not expose a sensitive model through unguarded generated routes just because a
|
|
@@ -280,7 +298,7 @@ get: {
|
|
|
280
298
|
fullName: (model) => `${model.firstName} ${model.lastName}`,
|
|
281
299
|
},
|
|
282
300
|
set: {
|
|
283
|
-
password: (
|
|
301
|
+
password: (attributes) => makeHash(attributes.password),
|
|
284
302
|
},
|
|
285
303
|
scopes: {
|
|
286
304
|
published: (query) => query.where('status', 'published'),
|
|
@@ -387,8 +405,9 @@ maintained by hand, drifts the moment anyone adds a bullet, and is the same
|
|
|
387
405
|
habit that produced the "All 62". The total above is pinned by
|
|
388
406
|
`buddy docs:agent-counts`.
|
|
389
407
|
|
|
390
|
-
Run `
|
|
391
|
-
|
|
408
|
+
Run `rg --files storage/framework/defaults/app/Models app/Models` for definitions
|
|
409
|
+
and inspect the model registry for the runtime selection. `buddy list` lists
|
|
410
|
+
commands, not a project's resolved models.
|
|
392
411
|
|
|
393
412
|
### Users & Auth
|
|
394
413
|
- **User** — name, email, password | traits: useAuth(passkey), useUuid, useTimestamps, useSocials(github) | hasOne: Subscriber, Driver, Author | hasMany: PersonalAccessToken, Customer
|
|
@@ -465,12 +484,13 @@ list, or `buddy list` for what a given project resolves.
|
|
|
465
484
|
will be overwritten by the next diff.
|
|
466
485
|
- **`commentable`, not `commentables`.** `define-model` only checks the singular
|
|
467
486
|
key. The plural spelling used to type check while leaving the trait inert.
|
|
468
|
-
- **Seeding
|
|
469
|
-
|
|
470
|
-
|
|
487
|
+
- **Seeding can be model-declared.** `useSeeder` sets the count and fixtures;
|
|
488
|
+
attribute factories produce values. Application `Seeder` classes under
|
|
489
|
+
`database/seeders` are also supported for ordered bootstrap work.
|
|
471
490
|
- **`hidden` is serialization, `guarded` is mass assignment.** They are different
|
|
472
491
|
protections; a password wants both `hidden` and no `fillable`.
|
|
473
|
-
-
|
|
474
|
-
|
|
492
|
+
- **Declared validation is enforced on ORM writes**, including quiet writes.
|
|
493
|
+
Type inference also accepts explicit types, factories, and defaults; absence
|
|
494
|
+
of a validator is not a promise that an arbitrary request body is safe.
|
|
475
495
|
- Dashboard-highlighted models (`dashboard: { highlight: true }`) appear
|
|
476
496
|
prominently in the admin UI.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Model capabilities and boundaries
|
|
2
|
+
|
|
3
|
+
Authority: `core/orm/src/define-model.ts`, `extend-model.ts`, `model-types.ts`,
|
|
4
|
+
`auto-crud.ts`, `ownership.ts`, the trait implementations, and the retained ORM
|
|
5
|
+
tests. Compatibility `ModelOptions` alone does not describe every modern option.
|
|
6
|
+
|
|
7
|
+
## Additive models and precise types
|
|
8
|
+
|
|
9
|
+
`extendModel(base, extension)` preserves the built-in definition and adds the
|
|
10
|
+
extension. Attributes merge by attribute name; an override replaces that
|
|
11
|
+
attribute's complete entry. Traits and dashboard options merge one level deep.
|
|
12
|
+
Supported relation lists merge without repeats. Read `mergeModelDefinition`
|
|
13
|
+
when extending named-object relationships, hooks, getters or setters; do not
|
|
14
|
+
assume every nested object deep-merges. Added attributes without an explicit
|
|
15
|
+
order follow the base attributes.
|
|
16
|
+
|
|
17
|
+
Derive types from the actual definition: `ModelRow<typeof Model>`,
|
|
18
|
+
`ModelCreateData<typeof Model>`, `NewModelData<typeof Model>`,
|
|
19
|
+
`UpdateModelData<typeof Model>`, `InferColumnNames<typeof Model>` and
|
|
20
|
+
`InferNumericColumns<typeof Model>`. Strict create types distinguish fillable
|
|
21
|
+
attributes and belongs-to keys from a loose row shape. Do not invent
|
|
22
|
+
`UserRequest` or a runtime `UserModel` global.
|
|
23
|
+
|
|
24
|
+
## Write pipeline
|
|
25
|
+
|
|
26
|
+
Declared validation runs on direct `create`, `createMany`, and update paths,
|
|
27
|
+
before casts and encryption. A partial update validates only supplied fields;
|
|
28
|
+
create checks absent required fields. `ModelValidationError` carries status 422
|
|
29
|
+
and per-field errors. Generated CRUD accepts camelCase and snake_case aliases
|
|
30
|
+
for declared fillable attributes and belongs-to foreign keys.
|
|
31
|
+
|
|
32
|
+
Mass assignment and serialization differ: `fillable` admits writes, `guarded`
|
|
33
|
+
refuses them, and `hidden` removes values from model serialization. Explicit
|
|
34
|
+
trusted writes can use `forceCreate`, `forceUpdate`, or `forceFill`; they do not
|
|
35
|
+
turn request bodies into trusted data or disable declared validation. Quiet
|
|
36
|
+
operations suppress events, not rules. `withoutValidation` is a deliberate
|
|
37
|
+
scoped escape hatch for an import or backfill, not an endpoint convenience.
|
|
38
|
+
|
|
39
|
+
Getters see attributes. Setters receive an attribute object, not just the new
|
|
40
|
+
value, and async setters are awaited on the supported write paths. A setter
|
|
41
|
+
must return the transformed attribute value. Tests: `model-validation`,
|
|
42
|
+
`create-many-pipeline`, `mass-assignment`, `force-create-guarded`,
|
|
43
|
+
`instance-mutator`, and `camel-case-accessors`.
|
|
44
|
+
|
|
45
|
+
## Casts and encrypted attributes
|
|
46
|
+
|
|
47
|
+
Model `casts` accepts built-in string, number, boolean, integer, float, json,
|
|
48
|
+
array, datetime, and date casts, or a custom object with `get` and `set`.
|
|
49
|
+
Date/datetime persistence uses UTC. Read the caster implementation for exact
|
|
50
|
+
return shapes; JSON parse failures return null and are reported.
|
|
51
|
+
|
|
52
|
+
An attribute with `encrypted: true` is encrypted on supported model writes and
|
|
53
|
+
decrypted on model reads. Both column spellings are handled. Raw SQL and raw
|
|
54
|
+
query-builder reads bypass the model's plaintext projection. Encrypted values
|
|
55
|
+
are not suitable for ordinary equality/range searching; do not promise searchable
|
|
56
|
+
encryption. Tests: `casting.test.ts` and encrypted utility/write coverage.
|
|
57
|
+
|
|
58
|
+
## Ownership, roles, and policies
|
|
59
|
+
|
|
60
|
+
Generated CRUD resolves ownership from the authenticated credential. A
|
|
61
|
+
`team_id` or `user_id` column can supply the native scope; explicit ownership
|
|
62
|
+
can resolve a scalar or permitted set of keys. Helpers include
|
|
63
|
+
`selfOwnership`, `customerOwnership`, `siteOwnership`, `parentOwnership`, and
|
|
64
|
+
`teamMembershipOwnership`.
|
|
65
|
+
|
|
66
|
+
`ownership: false` explicitly declares an unscoped resource; use only when that
|
|
67
|
+
is the actual resource contract. The default unscoped-write policy can withhold
|
|
68
|
+
store/update/destroy for a model without a scope. Middleware and dashboard roles
|
|
69
|
+
control entry, ownership controls rows, and policies control abilities on rows.
|
|
70
|
+
None substitutes for the others. Do not take an owner identity from a body or
|
|
71
|
+
query field. Tests: `ownership`, `row-scoping-policy`, `model-dashboard-roles`,
|
|
72
|
+
`model-policy-wiring`, and resource-specific security contracts.
|
|
73
|
+
|
|
74
|
+
## Lifecycle, search, retention, and sharding
|
|
75
|
+
|
|
76
|
+
`observe` emits native lifecycle events. `withoutEvents` and quiet operations
|
|
77
|
+
can suppress them within their scoped operation. With observation enabled,
|
|
78
|
+
`broadcastOn` plus `broadcastWith` publishes a curated lifecycle projection;
|
|
79
|
+
avoid broadcasting the entire private row. `useActivityLog` writes a readable
|
|
80
|
+
change feed, while `useAudit` records old/new diffs. Hidden/sensitive fields
|
|
81
|
+
remain excluded from the activity projection.
|
|
82
|
+
|
|
83
|
+
`useSearch` supplies model search helpers and a projected searchable document.
|
|
84
|
+
Related dot-path attributes need their relation data; missing relation data
|
|
85
|
+
does not magically trigger every required query. Hidden fields stay excluded.
|
|
86
|
+
Search-engine pagination has its own hits contract; ORM pagination returns
|
|
87
|
+
native paginator objects. Read `stacks-search-engine` and `stacks-pagination`.
|
|
88
|
+
|
|
89
|
+
`prunable` declares age/query-based pruning. GDPR ownership, personal attributes,
|
|
90
|
+
access, erasure and retention are distinct declarations, not a global delete
|
|
91
|
+
switch. For Vitess, `sharding` configures derived or explicit VSchema behavior;
|
|
92
|
+
it is not an automatic cluster deployment and is ignored on single-node dialects.
|
|
93
|
+
Use `buddy generate:vschema` and the current dialect evidence before deploying.
|
|
94
|
+
|
|
95
|
+
## Transaction and row-count gotchas
|
|
96
|
+
|
|
97
|
+
Model execution is separate from a `transaction` callback's `tx` handle.
|
|
98
|
+
Use `tx` for all statements that must share that transaction. Model calls inside
|
|
99
|
+
the callback do not automatically observe its uncommitted writes.
|
|
100
|
+
|
|
101
|
+
A driver can report matched rows differently from changed rows. Use native
|
|
102
|
+
`mutationCount` or `matchedRows` only according to the operation's real contract;
|
|
103
|
+
do not interpret an arbitrary `execute()` value as a universal affected-row
|
|
104
|
+
object. Use the service's returned row/not-found contract at an HTTP boundary.
|