@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,84 @@
|
|
|
1
|
+
# Native email delivery controls
|
|
2
|
+
|
|
3
|
+
Read this for suppression, unsubscribe, deduplication, provider webhooks and
|
|
4
|
+
rendering. Source root: `storage/framework/core/email/src/`.
|
|
5
|
+
|
|
6
|
+
Native mail.queue(message) and mail.later(delaySeconds, message) dispatch
|
|
7
|
+
SendEmailJob to the emails queue. Their current dispatch failure path logs and
|
|
8
|
+
falls back to synchronous sending, so an awaited queue call does not guarantee
|
|
9
|
+
background execution or durable acceptance. A sync QUEUE_DRIVER also executes
|
|
10
|
+
inline. Read email.ts and stacks-queue before depending on timing or delivery.
|
|
11
|
+
|
|
12
|
+
## Results, suppression and send keys
|
|
13
|
+
|
|
14
|
+
Mail.send returns EmailResult and can return success false without throwing.
|
|
15
|
+
Mail.sendOrFail throws EmailDeliveryError for that structured failure. Resolve
|
|
16
|
+
template HTML/text before the provider call; a provider failure must not enter
|
|
17
|
+
a rendering fallback that sends a second message.
|
|
18
|
+
|
|
19
|
+
Suppression helpers are isSuppressed/getSuppressions/suppress/unsuppress.
|
|
20
|
+
Mail.send checks recipients against the configured suppression policy. Message
|
|
21
|
+
tag transactional/broadcast affects the transactional-allowed policy; do not tag
|
|
22
|
+
marketing as transactional merely to bypass an opt-out.
|
|
23
|
+
|
|
24
|
+
EmailMessage.idempotencyKey returns the cached prior successful result on a
|
|
25
|
+
retry, and only successful sends are recorded. The implementation looks up the
|
|
26
|
+
key before delivery and records after delivery, so do not call this exactly-once
|
|
27
|
+
concurrent provider sending or a transactional outbox. Missing table/connection
|
|
28
|
+
compatibility paths can warn and degrade controls; apply EmailSuppression,
|
|
29
|
+
EmailIdempotency and EmailWebhookEvent model migrations first. Inspect source
|
|
30
|
+
failure handling before treating a key as a guarantee.
|
|
31
|
+
|
|
32
|
+
Source: `email.ts`, `suppression.ts`, `idempotency.ts`. Evidence:
|
|
33
|
+
`tests/suppression.test.ts`, `email.test.ts`, `driver-credentials.test.ts`.
|
|
34
|
+
|
|
35
|
+
## Recipient unsubscribe
|
|
36
|
+
|
|
37
|
+
createUnsubscribeToken(email, ttlSeconds?, scope?), verifyUnsubscribeToken(token),
|
|
38
|
+
buildUnsubscribeUrl(email, ttlSeconds?, options?) and buildListUnsubscribeHeaders
|
|
39
|
+
are native signed helpers. APP_KEY must exist. Scope can distinguish an
|
|
40
|
+
application list/workspace policy; preserve it through verification and the
|
|
41
|
+
unsubscribe action. Tokens are expiring recipient grants, not arbitrary user
|
|
42
|
+
authentication or permission to read inbox data.
|
|
43
|
+
|
|
44
|
+
The default unsubscribe routes have their own exact GET/POST behavior. Read the
|
|
45
|
+
selected bundle rather than adding a second route with different token semantics.
|
|
46
|
+
Persist the resulting suppression before reporting opt-out completion.
|
|
47
|
+
|
|
48
|
+
Source: `unsubscribe.ts`, default email routes; evidence:
|
|
49
|
+
`tests/unsubscribe.test.ts` and `unsubscribe-scope.test.ts`.
|
|
50
|
+
|
|
51
|
+
## Provider webhooks
|
|
52
|
+
|
|
53
|
+
The high-level processors are handleMailgunWebhook, handleSendgridWebhook,
|
|
54
|
+
handleSesWebhook and handlePostmarkWebhook. Signature helpers include
|
|
55
|
+
verifyMailgunSignature, verifySendgridSignature, verifySesSnsSignature and
|
|
56
|
+
verifyPostmarkAuth. Read `webhook-handlers.ts` for each actual input/config shape.
|
|
57
|
+
|
|
58
|
+
Use exact provider raw-body bytes, headers and external callback URL as required
|
|
59
|
+
by the signature algorithm. The native pipeline validates, deduplicates the
|
|
60
|
+
provider event ID, classifies it, persists suppressions for hard bounces,
|
|
61
|
+
complaints/unsubscribe and emits the associated framework event. Soft bounces
|
|
62
|
+
are events rather than automatic permanent suppressions. A configured processor
|
|
63
|
+
does not mean its default route bundle is mounted or its credentials exist.
|
|
64
|
+
|
|
65
|
+
Source: `webhook-handlers.ts`, `webhook-signatures.ts`, `webhook-dedup.ts`,
|
|
66
|
+
`webhook-events.ts`; evidence: `tests/webhook-signatures.test.ts`.
|
|
67
|
+
Retained signature/request evidence is not a live provider delivery test.
|
|
68
|
+
|
|
69
|
+
## Rendering and preview
|
|
70
|
+
|
|
71
|
+
Email template names resolve application emails first, then framework defaults;
|
|
72
|
+
typed names and extensions are exposed by EmailTemplateReference. The renderer
|
|
73
|
+
escapes interpolated values; explicitly raw template HTML needs the same trust
|
|
74
|
+
boundary as a web template. inlineCss/shouldInlineByDefault provide native
|
|
75
|
+
inlining; media rules that cannot be inlined remain separate. HTML-to-text is
|
|
76
|
+
a mail rendering conversion, not a sanitization proof for arbitrary HTML.
|
|
77
|
+
|
|
78
|
+
Use typed Mailable and native make:mail/mail:preview for repeatable message
|
|
79
|
+
types and non-delivering reviews. See stacks-mail for those APIs. The preview
|
|
80
|
+
includes MIME/body/attachment inspection; keep it behind its development route
|
|
81
|
+
gates. Source: `template.ts`, `css-inliner.ts`, `mailable.ts`, `preview.ts`,
|
|
82
|
+
`mime-preview.ts`. Evidence: `tests/template-escaping.test.ts`,
|
|
83
|
+
`css-inliner.test.ts`, `html-to-text.test.ts`, `preview.test.ts` and
|
|
84
|
+
`mime-preview.test.ts`.
|
|
@@ -105,7 +105,7 @@ import { template, renderHtml, templateExists, listTemplates } from '@stacksjs/e
|
|
|
105
105
|
|
|
106
106
|
const { html, text } = await template('welcome', {
|
|
107
107
|
variables: { name: 'John', url: 'https://app.com' },
|
|
108
|
-
layout: '
|
|
108
|
+
layout: 'base', // HTML layout, or false; STX templates own their layout
|
|
109
109
|
subject: 'Welcome'
|
|
110
110
|
})
|
|
111
111
|
|
|
@@ -317,7 +317,7 @@ Reprocessing refreshes existing messages instead of skipping them, preserves the
|
|
|
317
317
|
- Default driver is `ses` - requires AWS credentials
|
|
318
318
|
- Template rendering supports both `.stx` and `.html` files
|
|
319
319
|
- Variable interpolation uses `{{ }}` double-brace syntax
|
|
320
|
-
- The
|
|
320
|
+
- The mail singleton registers smtp, ses, sendgrid, mailgun, mailtrap, log and capture; provider selection comes from config
|
|
321
321
|
- SMTP driver handles TLS handshake manually (not via node:tls)
|
|
322
322
|
- SendGrid/Mailgun retry with exponential backoff on failure
|
|
323
323
|
- `mail.send()` returns structured failures; use `mail.sendOrFail()` when success is required
|
|
@@ -329,3 +329,19 @@ Reprocessing refreshes existing messages instead of skipping them, preserves the
|
|
|
329
329
|
- `buddy email:reprocess` preserves existing read state and exits nonzero on failure
|
|
330
330
|
- Email categorization auto-sorts incoming mail by domain/substring patterns
|
|
331
331
|
- The `text` fallback is auto-generated from HTML via `htmlToText()`
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
## Delivery controls and provider evidence
|
|
335
|
+
|
|
336
|
+
The package exports native suppression, send idempotency, unsubscribe tokens,
|
|
337
|
+
webhook deduplication/signature/processors, CSS inlining, typed Mailable and mail
|
|
338
|
+
previews. Read [DELIVERY-CONTROLS.md](DELIVERY-CONTROLS.md) when sending campaigns,
|
|
339
|
+
processing provider callbacks or building recipient unsubscribe flows.
|
|
340
|
+
|
|
341
|
+
Log and capture have local test contracts. SMTP/SES/SendGrid/Mailgun/Mailtrap
|
|
342
|
+
are partial in `core/config/src/capabilities.ts`: credentials and request
|
|
343
|
+
behavior are retained, live inbox delivery assertions are not. A successful
|
|
344
|
+
provider API result means accepted by that provider, not received by the user.
|
|
345
|
+
The default email webhook bundle is subject to route selection and the email
|
|
346
|
+
feature gate. A preview/scaffold workflow never needs a production transport;
|
|
347
|
+
see `stacks-mail` for make:mail and mail:preview.
|
|
@@ -8,93 +8,40 @@ allowed-tools: Read Edit Write Bash Grep Glob
|
|
|
8
8
|
|
|
9
9
|
# Stacks Enums
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- Source: `storage/framework/core/enums/src/index.ts`
|
|
14
|
-
- Package: `@stacksjs/enums`
|
|
11
|
+
Use `@stacksjs/enums` for internal NpmScript and Action identifiers. Read their
|
|
12
|
+
actual enum members rather than deriving command names from an old copied list.
|
|
15
13
|
|
|
16
|
-
##
|
|
14
|
+
## Action paths
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
Action values identify framework action source paths, for example BuildViews is
|
|
17
|
+
build/views and QueueWork is queue/work. The enum's source links point at each
|
|
18
|
+
handler; the action-source-links test verifies the member/path/file agreement.
|
|
19
|
+
This is the framework's dispatch vocabulary, distinct from an application action
|
|
20
|
+
path and from the public buddy CLI command registry.
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
Current members include component/library/native app builds, auth setup/pruning,
|
|
23
|
+
generation/release, migration/seed, queue inspection/DLQ/quarantine/pause/resume,
|
|
24
|
+
search, scheduling and upgrades. Read stacks-actions/stacks-buddy for dispatch
|
|
25
|
+
and command invocation. Removed BuildVueComponentLib/MigrateDns/BuildComponents
|
|
26
|
+
symbols should not be resurrected because an older skill lists them.
|
|
23
27
|
|
|
24
|
-
|
|
25
|
-
| Value | Script |
|
|
26
|
-
|-------|--------|
|
|
27
|
-
| `Build` | `'build'` |
|
|
28
|
-
| `BuildComponents` | `'vite build --config ./src/vite-config/src/components.ts'` |
|
|
29
|
-
| `BuildWebComponents` | `'build:web-components'` |
|
|
30
|
-
| `BuildFunctions` | `'build:functions'` |
|
|
31
|
-
| `BuildDocs` | `'build:docs'` |
|
|
32
|
-
| `BuildStacks` | `'build:stacks'` |
|
|
28
|
+
## Script values
|
|
33
29
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
| `DevApi` | `'dev:api'` |
|
|
39
|
-
| `DevDocs` | `'dev:docs'` |
|
|
40
|
-
| `DevDesktop` | `'dev:desktop'` |
|
|
41
|
-
| `DevFunctions` | `'dev:functions'` |
|
|
30
|
+
NpmScript contains both script names and literal command strings. Some values
|
|
31
|
+
invoke pickier or Bun tests directly; they are not all keys in package.json.
|
|
32
|
+
Use ./buddy lint and the project's actual scripts for user workflows. Treat
|
|
33
|
+
Clean/Fresh/Release as real operations, not harmless metadata probes.
|
|
42
34
|
|
|
43
|
-
|
|
44
|
-
| Value | Script |
|
|
45
|
-
|-------|--------|
|
|
46
|
-
| `Test` | `'test'` |
|
|
47
|
-
| `TestUnit` | `'test:unit'` |
|
|
48
|
-
| `TestFeature` | `'test:feature'` |
|
|
49
|
-
| `TestUi` | `'test:ui'` |
|
|
50
|
-
| `TestTypes` | `'test:types'` |
|
|
35
|
+
## Scheduling constants
|
|
51
36
|
|
|
52
|
-
|
|
53
|
-
|
|
37
|
+
The Every enum lives in `@stacksjs/types` (core/types/src/cron-jobs.ts), not the
|
|
38
|
+
enums entry. Its seconds forms need the appropriate scheduler layer; a six-field
|
|
39
|
+
enum value does not make the low-level five-field parser accept arbitrary seconds.
|
|
40
|
+
Read stacks-scheduler/stacks-cron for that distinction.
|
|
54
41
|
|
|
55
|
-
##
|
|
42
|
+
## Source and verification
|
|
56
43
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Build Actions
|
|
64
|
-
`BuildViews`, `BuildStacks`, `BuildComponentLibs`, `BuildVueComponentLib`, `BuildWebComponentLib`, `BuildFunctionLib`, `BuildCli`, `BuildCore`, `BuildDesktop`, `BuildDocs`, `BuildServer`
|
|
65
|
-
|
|
66
|
-
### Dev Actions
|
|
67
|
-
`DevComponents`, `DevDashboard`, `DevSystemTray`, `Dev`, `DevApi`, `DevDesktop`, `DevDocs`
|
|
68
|
-
|
|
69
|
-
### Database Actions
|
|
70
|
-
`Migrate`, `MigrateFresh`, `MigrateDns`, `Seed`
|
|
71
|
-
|
|
72
|
-
### Queue Actions
|
|
73
|
-
`QueueTable`, `QueueWork`, `QueueRetry`, `QueueFailed`, `QueueClear`, `QueueStatus`, `QueueFlush`, `QueueMonitor`, `QueueInspect`, `QueueSchedule`, `QueueScheduleList`
|
|
74
|
-
|
|
75
|
-
### Domain Actions
|
|
76
|
-
`DomainsAdd`, `DomainsPurchase`, `DomainsRemove`
|
|
77
|
-
|
|
78
|
-
### Search Engine Actions
|
|
79
|
-
`SearchEngineImport`, `SearchEngineFlush`, `SearchEngineListSettings`, `SearchEnginePushSettings`
|
|
80
|
-
|
|
81
|
-
### Other Actions
|
|
82
|
-
`Lint`, `LintFix`, `Test`, `TestUnit`, `TestFeature`, `TestUi`, `Typecheck`, `Deploy`, `ScheduleRun`, `Release`, `RouteList`, `Upgrade`, `UpgradeDeps`
|
|
83
|
-
|
|
84
|
-
## Usage
|
|
85
|
-
|
|
86
|
-
```typescript
|
|
87
|
-
import { Action, NpmScript } from '@stacksjs/enums'
|
|
88
|
-
|
|
89
|
-
// Used in buddy CLI commands
|
|
90
|
-
runAction(Action.Migrate, options)
|
|
91
|
-
|
|
92
|
-
// Used in build system
|
|
93
|
-
runNpmScript(NpmScript.BuildComponents)
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## Gotchas
|
|
97
|
-
- **Action values use path format** — e.g., `Action.BuildViews = 'build/views'`, `Action.QueueWork = 'queue/work'`
|
|
98
|
-
- **NpmScript values are actual script commands** — some are full vite commands, not just script names
|
|
99
|
-
- **Used throughout the framework** — CLI, build system, and actions all reference these enums
|
|
100
|
-
- **Adding new actions** — requires adding the enum value AND creating the action handler file
|
|
44
|
+
`storage/framework/core/enums/src/index.ts` is the authoritative list.
|
|
45
|
+
Retained tests: core/enums/tests/enums.test.ts and action-source-links.test.ts.
|
|
46
|
+
When adding an internal action, add the enum member/source link and the handler,
|
|
47
|
+
then verify its actual resolver and any public command registration separately.
|
|
@@ -13,13 +13,14 @@ allowed-tools: Read Edit Write Bash Grep Glob
|
|
|
13
13
|
- Environment config: `config/env.ts`
|
|
14
14
|
- Environment file: `.env`
|
|
15
15
|
- Example: `.env.example`
|
|
16
|
-
- Type definitions:
|
|
16
|
+
- Type definitions: core/env/src/types.ts and storage/framework/types/env.d.ts
|
|
17
17
|
|
|
18
18
|
## Source Files
|
|
19
19
|
```
|
|
20
20
|
env/src/
|
|
21
21
|
├── index.ts # main exports
|
|
22
|
-
├──
|
|
22
|
+
├── runtime.ts # typed/coerced environment proxy
|
|
23
|
+
├── utils.ts # runtime/platform/environment detection
|
|
23
24
|
├── plugin.ts # Bun plugin for auto .env loading
|
|
24
25
|
├── parser.ts # .env file parser with encryption support
|
|
25
26
|
├── cli.ts # CLI commands (get, set, encrypt, decrypt, rotate)
|
|
@@ -33,12 +34,12 @@ env/src/
|
|
|
33
34
|
import { env } from '@stacksjs/env'
|
|
34
35
|
|
|
35
36
|
env.APP_NAME // string
|
|
36
|
-
env.APP_ENV //
|
|
37
|
+
env.APP_ENV // configured environment label, including long and short forms
|
|
37
38
|
env.APP_KEY // string
|
|
38
39
|
env.APP_URL // string
|
|
39
40
|
env.DEBUG // boolean (auto-coerced)
|
|
40
41
|
env.PORT // number (auto-coerced)
|
|
41
|
-
env.DB_CONNECTION //
|
|
42
|
+
env.DB_CONNECTION // declared connection name; availability comes from capabilityRegistry
|
|
42
43
|
env.DB_HOST // string
|
|
43
44
|
env.DB_PORT // number
|
|
44
45
|
env.DB_DATABASE // string
|
|
@@ -49,13 +50,18 @@ env.STRIPE_SECRET_KEY // string
|
|
|
49
50
|
env.MAIL_MAILER // string
|
|
50
51
|
env.QUEUE_DRIVER // string
|
|
51
52
|
env.REDIS_HOST // string
|
|
52
|
-
env[key] // any custom env var
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
The
|
|
55
|
+
All values may be undefined. The env proxy coerces true/false case-insensitively.
|
|
56
|
+
Numeric variables declared by the framework or schema.number are numbers;
|
|
57
|
+
recognized numeric-setting suffixes are also coerced. IDs/codes and values with
|
|
58
|
+
leading zeros remain strings unless declared numeric. Arbitrary numeric-looking
|
|
59
|
+
text is not always a number.
|
|
56
60
|
|
|
57
61
|
## StacksEnv Type (100+ typed variables)
|
|
58
|
-
|
|
62
|
+
The typed interface covers framework variables without a catch-all index
|
|
63
|
+
signature. Declare an application variable in config/env.ts rather than reading
|
|
64
|
+
undeclared names through a dynamic env key.
|
|
59
65
|
|
|
60
66
|
## Adding your own variables
|
|
61
67
|
|
|
@@ -63,6 +69,9 @@ Declare them in `config/env.ts`. That is the whole step:
|
|
|
63
69
|
|
|
64
70
|
```typescript
|
|
65
71
|
// config/env.ts
|
|
72
|
+
import { defineEnv } from '@stacksjs/env'
|
|
73
|
+
import { schema } from '@stacksjs/validation/runtime'
|
|
74
|
+
|
|
66
75
|
export default defineEnv({
|
|
67
76
|
STRIPE_WEBHOOK_SECRET: { validation: schema.string(), default: '' },
|
|
68
77
|
BILLING_RETRIES: { validation: schema.number(), default: 3 },
|
|
@@ -87,7 +96,7 @@ which is the failure `config/env.ts` exists to prevent.
|
|
|
87
96
|
import { isBun, isNode, runtime, runtimeInfo, platform, isWindows, isMacOS, isLinux, hasTTY, hasWindow, isCI, isDebug, isMinimal, isColorSupported, provider, providerInfo } from '@stacksjs/env'
|
|
88
97
|
|
|
89
98
|
isBun // true
|
|
90
|
-
isNode //
|
|
99
|
+
isNode // Node-compatible process detection; may also be true under Bun
|
|
91
100
|
runtime // 'bun'
|
|
92
101
|
platform // 'darwin'
|
|
93
102
|
isWindows // false
|
|
@@ -178,8 +187,8 @@ is not a security boundary.
|
|
|
178
187
|
```typescript
|
|
179
188
|
import { loadEnv, autoLoadEnv, envPlugin } from '@stacksjs/env'
|
|
180
189
|
|
|
181
|
-
|
|
182
|
-
autoLoadEnv() //
|
|
190
|
+
const loaded = loadEnv({ path: '.env', overload: false }) // { loaded, errors }
|
|
191
|
+
autoLoadEnv() // .env, .env.local, .env.<effectiveEnv>, .env.<effectiveEnv>.local
|
|
183
192
|
|
|
184
193
|
// Bun plugin (auto-loads .env before app starts)
|
|
185
194
|
envPlugin()
|
|
@@ -190,8 +199,7 @@ envPlugin()
|
|
|
190
199
|
```typescript
|
|
191
200
|
import { parse } from '@stacksjs/env'
|
|
192
201
|
|
|
193
|
-
const
|
|
194
|
-
encryption: true, // decrypt encrypted values
|
|
202
|
+
const { parsed, errors, skippedEncrypted } = parse(envContent, {
|
|
195
203
|
privateKey: '...' // decryption key
|
|
196
204
|
})
|
|
197
205
|
```
|
|
@@ -281,12 +289,12 @@ calls or raw client-side `fetch`.
|
|
|
281
289
|
- **A tenant's keys in your env file get shipped everywhere.** `buddy deploy`
|
|
282
290
|
sends the entire env file as each site's `.env`. Declare `tenants` in
|
|
283
291
|
`config/cloud.ts` so they are stripped, then delete them at source
|
|
284
|
-
- Bun natively loads `.env`
|
|
292
|
+
- Bun natively loads `.env` - no dotenv package needed
|
|
285
293
|
- The `env` proxy auto-coerces strings to booleans/numbers
|
|
286
|
-
- `.env` should never be committed
|
|
294
|
+
- `.env` should never be committed - use `.env.example` as template
|
|
287
295
|
- New encrypted values use ephemeral-static X25519, HKDF-SHA-256, and
|
|
288
296
|
AES-256-GCM. Legacy ciphertext remains readable for migration
|
|
289
|
-
-
|
|
297
|
+
- autoLoadEnv loads least to most specific, including .env.<effectiveEnv>.local; effective env resolution is in plugin.ts and existing shell values are preserved unless overloaded
|
|
290
298
|
- Runtime detection uses Bun globals and process properties
|
|
291
299
|
- CI provider detection checks environment variables specific to each CI system
|
|
292
300
|
- The `StacksEnv` type provides autocomplete for 100+ known variables
|
|
@@ -8,130 +8,77 @@ allowed-tools: Read Edit Write Bash Grep Glob
|
|
|
8
8
|
|
|
9
9
|
# Stacks Error Handling
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Use Result for recoverable operation outcomes, HttpError for HTTP boundary
|
|
12
|
+
refusals, and the native reporter/rendering pipeline for failures.
|
|
12
13
|
|
|
13
|
-
##
|
|
14
|
-
- Core package: `storage/framework/core/error-handling/src/`
|
|
15
|
-
- Configuration: `config/errors.ts`
|
|
16
|
-
- Error model: `storage/framework/defaults/app/Models/Error.ts`
|
|
14
|
+
## Results
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
```typescript
|
|
16
|
+
~~~ts
|
|
21
17
|
import { ok, err, fromPromise } from '@stacksjs/error-handling'
|
|
22
|
-
import type { Result, Ok, Err, ResultAsync } from '@stacksjs/error-handling'
|
|
23
|
-
|
|
24
|
-
// Create results
|
|
25
|
-
const success: Ok<string> = ok('data')
|
|
26
|
-
const failure: Err<Error> = err(new Error('failed'))
|
|
27
18
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
// Pattern matching
|
|
32
|
-
if (result.isOk()) {
|
|
19
|
+
const result = await fromPromise(Promise.resolve('ready'))
|
|
20
|
+
if (result.isOk)
|
|
33
21
|
console.log(result.value)
|
|
34
|
-
|
|
22
|
+
else
|
|
35
23
|
console.error(result.error)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
## Custom Exceptions
|
|
99
|
-
|
|
100
|
-
```typescript
|
|
101
|
-
import { ModelNotFoundException } from '@stacksjs/error-handling'
|
|
102
|
-
|
|
103
|
-
throw new ModelNotFoundException('User not found')
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## Error Page Types
|
|
107
|
-
|
|
108
|
-
```typescript
|
|
109
|
-
interface HttpError { status: number, title: string, message: string }
|
|
110
|
-
interface StackFrame { file: string, line: number, column: number, function?: string }
|
|
111
|
-
interface CodeSnippet { line: number, code: string, isHighlighted: boolean }
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## Error Model (storage/framework/defaults/app/Models/Error.ts)
|
|
115
|
-
|
|
116
|
-
Fields: type, message, stack (stacktrace), status, additional_info
|
|
117
|
-
Seeder: 10 records for testing
|
|
118
|
-
|
|
119
|
-
## config/errors.ts
|
|
120
|
-
|
|
121
|
-
Contains comprehensive validation error messages for all field types:
|
|
122
|
-
- String validation: required, minLength, maxLength, email, url, uuid, etc.
|
|
123
|
-
- Number validation: required, min, max, positive, negative, integer, etc.
|
|
124
|
-
- Enum validation: invalid value messages
|
|
125
|
-
- Date validation: format, before, after, etc.
|
|
126
|
-
- File validation: size, type, dimensions, etc.
|
|
127
|
-
|
|
128
|
-
## Gotchas
|
|
129
|
-
- Use `Result<T, E>` types instead of try/catch for recoverable errors
|
|
130
|
-
- `ok()` and `err()` are from `ts-error-handling` (neverthrow-compatible)
|
|
131
|
-
- Error pages automatically detect environment (dev shows stack traces, prod doesn't)
|
|
132
|
-
- `handleError()` logs to both console and file
|
|
133
|
-
- `ModelNotFoundException` is thrown by `findOrFail()` and `firstOrFail()` ORM methods
|
|
134
|
-
- The Error model persists errors to the database for tracking
|
|
135
|
-
- `config/errors.ts` is a comprehensive i18n-ready error message catalog
|
|
136
|
-
- `ErrorHandler.isTestEnvironment` prevents process exit during tests
|
|
137
|
-
- `ERROR_PAGE_CSS` contains built-in styling for error pages
|
|
24
|
+
~~~
|
|
25
|
+
|
|
26
|
+
ok(value)/err(error), Result/Ok/Err and ResultAsync are re-exported from
|
|
27
|
+
ts-error-handling. isOk/isErr are discriminant properties, not methods.
|
|
28
|
+
fromPromise returns a Promise<Result>; await it before narrowing. Returning an
|
|
29
|
+
Err does not throw, and an awaited Result does not imply success.
|
|
30
|
+
|
|
31
|
+
## HTTP errors and rendering
|
|
32
|
+
|
|
33
|
+
~~~ts
|
|
34
|
+
import { HttpError, renderHttpError } from '@stacksjs/error-handling'
|
|
35
|
+
|
|
36
|
+
const error = new HttpError(422, 'Validation failed', { errors: { email: ['Required'] } })
|
|
37
|
+
const response = await renderHttpError(error, undefined, { status: 422, isDevelopment: false })
|
|
38
|
+
~~~
|
|
39
|
+
|
|
40
|
+
renderHttpError returns a Response and accepts optional request/options.
|
|
41
|
+
createHttpErrorHandler offers setRequest/setRouting/addQuery and status helpers.
|
|
42
|
+
The lower-level renderErrorPage(error, status?, config?) and renderError(error,
|
|
43
|
+
status?) are async HTML renderers. renderProductionErrorPage(status) is the
|
|
44
|
+
synchronous production HTML renderer, not a function taking error/request.
|
|
45
|
+
errorResponse(error, status?, config?) returns Promise<Response>.
|
|
46
|
+
|
|
47
|
+
createErrorHandler(config?) returns the ErrorPageHandler builder; set request,
|
|
48
|
+
routing/user/framework context on it, then await render/handleError. Explicitly
|
|
49
|
+
resolve development mode for a public entrypoint rather than assuming an env
|
|
50
|
+
alias's default will protect details. Production pages omit source/trace detail;
|
|
51
|
+
custom error pages and illustration selection use the renderer's own contracts.
|
|
52
|
+
|
|
53
|
+
HTTP_ERRORS is status metadata; exported HttpErrorInfo is its interface, distinct
|
|
54
|
+
from the throwable HttpError class. ModelNotFoundException is the ORM failure
|
|
55
|
+
type. isUniqueViolation recognizes provider uniqueness errors; map a business
|
|
56
|
+
conflict deliberately rather than returning raw provider text.
|
|
57
|
+
|
|
58
|
+
## Handling, reporting and shutdown
|
|
59
|
+
|
|
60
|
+
handleError(value, options?) returns an Error synchronously and schedules logging.
|
|
61
|
+
ErrorHandler.handle preserves an existing Error's trace/cause when possible.
|
|
62
|
+
writeErrorToFile is async; writeErrorToConsole is sync. shouldExit is a process
|
|
63
|
+
policy, not appropriate inside a request action. A background file write cannot
|
|
64
|
+
be assumed finished before process.exit.
|
|
65
|
+
|
|
66
|
+
writeToLogFile(message, { logFile? }) uses a file path; setLogPath changes its
|
|
67
|
+
fallback. config/errors.ts holds validation messages, not all operational logging
|
|
68
|
+
or monitoring configuration. An Error model definition does not itself persist
|
|
69
|
+
every exception to its table.
|
|
70
|
+
|
|
71
|
+
registerErrorReporter(reporter) returns a detach function; reporters() snapshots
|
|
72
|
+
registered/configured reporters. captureError(error, context?) isolates reporter
|
|
73
|
+
failure and deduplicates by Error object identity, not message text.
|
|
74
|
+
flushErrorReporters drains buffers. Configured monitoring reporters and BugHQ
|
|
75
|
+
use the shared environment gate; see stacks-env and config/monitoring.ts.
|
|
76
|
+
The logging report() chokepoint filters ordinary 4xx from incident reporting.
|
|
77
|
+
|
|
78
|
+
## Evidence
|
|
79
|
+
|
|
80
|
+
Source: `storage/framework/core/error-handling/src/index.ts`, handler.ts,
|
|
81
|
+
http.ts, error-page.ts, reporters.ts, bughq.ts and unique-violation.ts.
|
|
82
|
+
Tests: result-type.test.ts, http-errors.test.ts, error-page-render.test.ts,
|
|
83
|
+
custom-error-pages.test.ts and reporters.test.ts under core/error-handling/tests.
|
|
84
|
+
Keep error payloads and credentials out of public responses and diagnostics.
|