@stacksjs/defaults 0.75.108 → 0.75.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
package/ai/AGENTS.md
CHANGED
|
@@ -63,9 +63,22 @@ same path under `app/` and it wins.
|
|
|
63
63
|
|
|
64
64
|
## Skills
|
|
65
65
|
|
|
66
|
-
The framework ships
|
|
66
|
+
The framework ships task-specific skills under
|
|
67
67
|
`storage/framework/defaults/ai/skills`.
|
|
68
68
|
|
|
69
|
+
Start with `stacks-native` when implementing a feature or checking what Stacks
|
|
70
|
+
already provides. Its catalog maps every core package to the appropriate skill,
|
|
71
|
+
its recipes connect model definitions to migrations and protected CRUD, and its
|
|
72
|
+
driver reference records supported, partial, and experimental capabilities.
|
|
73
|
+
|
|
74
|
+
Describe schema once in `app/Models/` with `defineModel()`; use `extendModel()`
|
|
75
|
+
for additive changes to a built-in model. Run `./buddy generate:migrations`,
|
|
76
|
+
review the generated SQL and snapshot, then apply with `./buddy migrate`.
|
|
77
|
+
`useApi` registers CRUD at runtime. Read `stacks-models`, `stacks-migrations`,
|
|
78
|
+
and `stacks-router` for selection, authentication, ownership, and mount behavior.
|
|
79
|
+
Use `stacks-auto-imports` to distinguish browser bindings from declarations
|
|
80
|
+
and explicit module imports.
|
|
81
|
+
|
|
69
82
|
**Subsystem reference**, one per area (`stacks-orm`, `stacks-router`,
|
|
70
83
|
`stacks-queue`, ...), each documenting it authoritatively. Read the relevant
|
|
71
84
|
`SKILL.md` before doing non-trivial work rather than guessing at an API.
|
|
@@ -85,6 +98,24 @@ The framework ships two kinds of skill under
|
|
|
85
98
|
| A step only a human can take | `stacks-wizard` |
|
|
86
99
|
| Improve the environment for next time | `stacks-retro` |
|
|
87
100
|
| Write a skill or any doc an agent reads | `stacks-writing-for-agents` |
|
|
101
|
+
| Humanize prose with a broad editorial rewrite | `stacks-humanizer` |
|
|
102
|
+
| Audit AI-sounding prose, suggest minimal edits, or learn and match a voice | `stacks-unslop` |
|
|
103
|
+
| Persist design decisions, write a spec, and create linked tickets | `stacks-grill-with-docs`, `stacks-to-spec`, `stacks-to-tickets` |
|
|
104
|
+
| Implement a ticket or a spec's task graph | `stacks-implement`, `stacks-implement-spec` |
|
|
105
|
+
| Triage reports or resolve a large decision map | `stacks-triage`, `stacks-wayfinder` |
|
|
106
|
+
| Research, architecture improvements, or PR descriptions | `stacks-research`, `stacks-improve-codebase-architecture`, `stacks-pr` |
|
|
107
|
+
| Learn, collect writing material, or shape an article | `stacks-teach`, `stacks-writing-fragments`, `stacks-writing-shape`, `stacks-writing-beats` |
|
|
108
|
+
| Specify a recurring workflow or coordinate a long-running effort | `stacks-loop`, `stacks-chief-of-staff` |
|
|
109
|
+
|
|
110
|
+
**Marketing**: read `stacks-marketing`, then choose the task-specific skill from
|
|
111
|
+
its `CATALOG.md`. The framework bundles all 50 reviewed marketing playbooks,
|
|
112
|
+
including copywriting, SEO, acquisition, conversion, retention, and measurement.
|
|
113
|
+
They complement framework skills such as `stacks-analytics` and `stacks-email`.
|
|
114
|
+
Use stx and Crosswind for implementation. A draft does not authorize sending,
|
|
115
|
+
spending, publishing, or scheduling; existing explicit authorization carries forward.
|
|
116
|
+
|
|
117
|
+
Source revisions, hashes, native substitutes, and all 38 reviewed Matt Pocock
|
|
118
|
+
skill mappings live in `stacks-flow/upstream-skills.json` beside its entrypoint.
|
|
88
119
|
|
|
89
120
|
Add your own with `app/Skills/<name>/SKILL.md`, then re-run `buddy setup:ai`.
|
|
90
121
|
A project skill shadows a bundled one of the same name. Read
|
|
@@ -95,6 +126,10 @@ enforces and how to write a description that actually fires.
|
|
|
95
126
|
|
|
96
127
|
## Before finishing
|
|
97
128
|
|
|
129
|
+
Generated user-visible copy uses regular hyphens and ordinary sentence
|
|
130
|
+
punctuation. Never emit em-dashes or separator en-dashes. Preserve verbatim
|
|
131
|
+
source quotations; flag a punctuation conflict rather than altering a quote.
|
|
132
|
+
|
|
98
133
|
- Lint: `./buddy lint` (fix with `./buddy lint:fix`)
|
|
99
134
|
- Type check: `./buddy typecheck`
|
|
100
135
|
- Test: `./buddy test`
|
package/ai/README.md
CHANGED
|
@@ -38,7 +38,14 @@ reference for a task instead of guessing at an API.
|
|
|
38
38
|
symlinks by default so skills stay in sync when you upgrade the framework. Pass
|
|
39
39
|
`--copy` if you would rather edit them per project.
|
|
40
40
|
|
|
41
|
-
###
|
|
41
|
+
### Collections
|
|
42
|
+
|
|
43
|
+
`stacks-native` is the starting point for native implementation. Its catalog
|
|
44
|
+
maps every core package to a subsystem skill and source entrypoint. Its recipes
|
|
45
|
+
cover model-driven migrations and protected CRUD; its capability reference
|
|
46
|
+
records current driver evidence and limitations. The framework repository
|
|
47
|
+
regenerates these references with `buddy docs:native-skills` and verifies them
|
|
48
|
+
in CI with `buddy docs:native-skills:check`.
|
|
42
49
|
|
|
43
50
|
Most bundled skills are **subsystem reference**: one per part of the framework,
|
|
44
51
|
model-invoked, found by the agent from the task at hand. A smaller set are
|
|
@@ -50,6 +57,37 @@ package it touches: `stacks-flow` routes between them, and `stacks-grilling`,
|
|
|
50
57
|
[mattpocock/skills](https://github.com/mattpocock/skills) (MIT), with credit in
|
|
51
58
|
each `SKILL.md`.
|
|
52
59
|
|
|
60
|
+
The current Matt Pocock refresh includes specs, dependency-linked tickets,
|
|
61
|
+
implementation graphs, triage, wayfinding, research, PR writing, and optional
|
|
62
|
+
productivity workflows. All 38 upstream skills have a recorded destination or
|
|
63
|
+
Stacks-native substitute. Hooks stay on pickier and bun-git-hooks; imported
|
|
64
|
+
workflows do not commit, publish, or start schedules without authorization.
|
|
65
|
+
|
|
66
|
+
**Marketing** is a third collection: `stacks-marketing` routes over all 50
|
|
67
|
+
playbooks from [coreyhaines31/marketingskills](https://github.com/coreyhaines31/marketingskills).
|
|
68
|
+
Each keeps its supporting references, templates, and original MIT notice.
|
|
69
|
+
Names are distinct from runtime package skills. The shared workflow explains
|
|
70
|
+
product context, verified claims, Stacks implementation, and optional connectors.
|
|
71
|
+
|
|
72
|
+
`skills/stacks-flow/upstream-skills.json` records both source revisions and
|
|
73
|
+
every source-to-Stacks mapping. Shared engineering rules, marketing guidance,
|
|
74
|
+
and source manifests live inside skill directories so both symlink and `--copy`
|
|
75
|
+
agent setups retain them. The docs site has matching marketing, engineering,
|
|
76
|
+
and productivity pages plus an upstream-porting report.
|
|
77
|
+
|
|
78
|
+
The prose skills are `stacks-humanizer` for broad editorial rewrites and
|
|
79
|
+
`stacks-unslop` for contextual audits, minimal edits, and voice matching. They
|
|
80
|
+
adapt [blader/humanizer](https://github.com/blader/humanizer) and
|
|
81
|
+
[theclaymethod/unslop](https://github.com/theclaymethod/unslop), with attribution
|
|
82
|
+
and revision details in each skill's `NOTICE.md`. They require no runtime
|
|
83
|
+
scripts or extra dependencies.
|
|
84
|
+
|
|
85
|
+
The `@stacksjs/defaults` build includes this entire `ai/` directory. New
|
|
86
|
+
package-based apps and framework upgrades receive the skills through the
|
|
87
|
+
managed defaults sync; vendored apps carry them directly. `buddy setup:ai`
|
|
88
|
+
then exposes them through the existing agent setup mechanism. No remote skill
|
|
89
|
+
installation is needed.
|
|
90
|
+
|
|
53
91
|
Each skill also has a page in the documentation site, under `docs/skills/`, one
|
|
54
92
|
per skill with a landing page per section. `tests/unit/skills-docs-contract.test.ts`
|
|
55
93
|
fails when a skill gains or loses a page, so the two cannot drift apart.
|
|
@@ -30,12 +30,12 @@ export default new Action({
|
|
|
30
30
|
method: 'POST',
|
|
31
31
|
model: Widget,
|
|
32
32
|
|
|
33
|
-
async handle(request
|
|
33
|
+
async handle(request) {
|
|
34
34
|
await request.validate()
|
|
35
35
|
|
|
36
36
|
const widget = await Widget.create(toSnakeCaseKeys(request.all()))
|
|
37
37
|
|
|
38
|
-
return response.
|
|
38
|
+
return response.created(widget)
|
|
39
39
|
},
|
|
40
40
|
})
|
|
41
41
|
```
|
|
@@ -44,6 +44,59 @@ Use the `Action` class, an explicit HTTP method, and `response` helpers. Store a
|
|
|
44
44
|
update actions should set `model` and call `request.validate()` before persisting
|
|
45
45
|
input. Import framework helpers explicitly, following the default actions.
|
|
46
46
|
|
|
47
|
+
Let `handle(request)` infer its request type. An explicit broad annotation loses
|
|
48
|
+
the model or validation field types that `Action` can derive. The typed Action
|
|
49
|
+
contract lives in `core/actions/src/action.ts`; the execution pipeline lives in
|
|
50
|
+
`core/router/src/stacks-router.ts`.
|
|
51
|
+
|
|
52
|
+
## Validation, lifecycle, and typed clients
|
|
53
|
+
|
|
54
|
+
An explicit `validations` object is inferred from its validators and runs
|
|
55
|
+
automatically before `authorize`, `before`, and `handle`. A `model` supplies
|
|
56
|
+
the rules used by an explicit `request.validate()` call; do not assume attaching
|
|
57
|
+
a model means every custom handler has already validated all its input.
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
import { Action } from '@stacksjs/actions'
|
|
61
|
+
import { schema } from '@stacksjs/validation'
|
|
62
|
+
|
|
63
|
+
export default new Action({
|
|
64
|
+
method: 'POST',
|
|
65
|
+
validations: {
|
|
66
|
+
title: { rule: schema.string().min(1).max(120) },
|
|
67
|
+
},
|
|
68
|
+
async handle(request) {
|
|
69
|
+
return { title: request.get('title') }
|
|
70
|
+
},
|
|
71
|
+
})
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
`authorize` can return true, false, or an exact Response; false short-circuits
|
|
75
|
+
with 403. `before` can prepare context or return a Response early. Both run
|
|
76
|
+
after declared validation. Directly registered actions and action strings use
|
|
77
|
+
the same `wrapAction` pipeline. Register an imported action with
|
|
78
|
+
`createTypedRouter` when its inferred request/response types should reach a
|
|
79
|
+
`createTypedClient`; lazy strings do not carry that response inference.
|
|
80
|
+
|
|
81
|
+
`responses`, `responseHeaders`, and `requestHeaders` enrich OpenAPI documentation.
|
|
82
|
+
They describe the contract and do not validate the actual response at runtime.
|
|
83
|
+
Test the endpoint's wire shape. `apiResponse` controls JSON formatting;
|
|
84
|
+
returning a raw Response owns the wire format and yields unknown client output.
|
|
85
|
+
|
|
86
|
+
`dependencies` lazily creates per-action dependencies exposed through
|
|
87
|
+
`this.deps`. `overrideDependencies` and `resetDependencies` let a test replace
|
|
88
|
+
external boundaries without module-wide mocking. They do not justify mocking
|
|
89
|
+
every internal collaborator or replacing a real database test with a fake.
|
|
90
|
+
|
|
91
|
+
`Precognition: true` or `?_validate=1` requests a validation-only probe.
|
|
92
|
+
`Precognition-Validate-Only` narrows explicit validation fields. Probes stop
|
|
93
|
+
before authorization/hooks/handler side effects, and do not magically run
|
|
94
|
+
custom `request.validate()` calls inside `handle`.
|
|
95
|
+
|
|
96
|
+
For event actions, declare `invocation: 'event'` and infer the payload from
|
|
97
|
+
`validations` when supplied. Event discovery calls `handle(payload, event)`;
|
|
98
|
+
it does not hand an HTTP Request to an event handler.
|
|
99
|
+
|
|
47
100
|
## Resource Action Contract
|
|
48
101
|
|
|
49
102
|
Show, update, and destroy actions must distinguish malformed identifiers,
|
|
@@ -51,8 +104,9 @@ missing records, invalid input, and operational failures:
|
|
|
51
104
|
|
|
52
105
|
1. Read resource identifiers from `request.getParam('id')`, never from the
|
|
53
106
|
request body.
|
|
54
|
-
2.
|
|
55
|
-
|
|
107
|
+
2. Validate its actual identifier contract. Numeric resource IDs require a safe
|
|
108
|
+
positive integer; UUIDs or string keys need their own validation. The built-in
|
|
109
|
+
Commerce contract returns `422` for malformed numeric IDs.
|
|
56
110
|
3. Validate update input with the action model, then normalize persisted keys
|
|
57
111
|
with `toSnakeCaseKeys(request.all())` when the service expects database
|
|
58
112
|
column names.
|
|
@@ -71,7 +125,9 @@ copying the contract across every resource. The built-in Commerce actions use
|
|
|
71
125
|
|
|
72
126
|
## Auto-Generated API Actions (useApi Trait)
|
|
73
127
|
|
|
74
|
-
When a model defines `useApi`, the
|
|
128
|
+
When a model defines `useApi`, the runtime registers native CRUD routes and
|
|
129
|
+
handlers from the merged model registry. It does not require generated action
|
|
130
|
+
files or a separate model-class generation step:
|
|
75
131
|
|
|
76
132
|
```typescript
|
|
77
133
|
defineModel({
|
|
@@ -92,7 +148,7 @@ This generates:
|
|
|
92
148
|
- `PUT /api/products/{id}` → Update action
|
|
93
149
|
- `DELETE /api/products/{id}` → Destroy action
|
|
94
150
|
|
|
95
|
-
## Default
|
|
151
|
+
## Default framework action families
|
|
96
152
|
|
|
97
153
|
### Authentication Actions
|
|
98
154
|
- `LoginAction` — POST /login (validates email + password, returns token + user)
|
|
@@ -158,6 +214,8 @@ route.post('/users', 'Actions/CreateUser')
|
|
|
158
214
|
- The `handle()` method is required — it receives the request object
|
|
159
215
|
- Actions used as event listeners also have a `handle(event)` method
|
|
160
216
|
- The `useApi` model trait auto-generates CRUD actions + routes
|
|
217
|
+
- Custom actions retain their own domain contract; generic CRUD also applies
|
|
218
|
+
model middleware, ownership, dashboard roles and per-row policy checks.
|
|
161
219
|
- Actions are resolved dynamically at runtime via string names
|
|
162
220
|
- The HealthAction at `/health` is useful for container health checks
|
|
163
221
|
- Login action returns `{ token: string, user: { id, email, name } }`
|
|
@@ -18,9 +18,9 @@ Comprehensive AI/LLM integration with 4 provider drivers, image generation, visi
|
|
|
18
18
|
```
|
|
19
19
|
ai/src/
|
|
20
20
|
├── drivers/
|
|
21
|
-
│ ├── anthropic.ts
|
|
22
|
-
│ ├── openai.ts
|
|
23
|
-
│ ├── ollama.ts
|
|
21
|
+
│ ├── anthropic/index.ts # Claude driver
|
|
22
|
+
│ ├── openai/index.ts # GPT + image + transcription + TTS
|
|
23
|
+
│ ├── ollama/index.ts # Local LLM driver
|
|
24
24
|
│ └── bedrock/ # Amazon Bedrock, through the Converse API
|
|
25
25
|
├── image.ts # Image generation & vision
|
|
26
26
|
├── speech.ts # Provider-neutral text-to-speech & speech-to-text
|
|
@@ -210,7 +210,7 @@ const index = await indexText(text, { chunkSize: 500 })
|
|
|
210
210
|
const answer = await rag('What is X?', index, { model: 'claude-sonnet-4-20250514', maxTokens: 1000 })
|
|
211
211
|
|
|
212
212
|
// VectorIndex class
|
|
213
|
-
const idx = new VectorIndex({
|
|
213
|
+
const idx = new VectorIndex({ provider: 'openai', model: 'text-embedding-3-small' })
|
|
214
214
|
await idx.add([{ id: '1', content: 'Hello', metadata: {} }])
|
|
215
215
|
const results = await idx.search('greeting', 5)
|
|
216
216
|
const results2 = await idx.searchByVector(queryEmbedding, 5)
|
|
@@ -239,9 +239,9 @@ const openaiTools = client.toOpenAITools()
|
|
|
239
239
|
|
|
240
240
|
// Multiple servers
|
|
241
241
|
const manager = new MCPManager()
|
|
242
|
-
manager.addServer({ name: 'server1', transport: 'stdio', command: '...' })
|
|
243
|
-
manager.addServer({ name: 'server2', transport: 'streamable-http', url: '...' })
|
|
244
|
-
const allTools =
|
|
242
|
+
await manager.addServer({ name: 'server1', transport: 'stdio', command: '...' })
|
|
243
|
+
await manager.addServer({ name: 'server2', transport: 'streamable-http', url: '...' })
|
|
244
|
+
const allTools = manager.getAllTools() // cached tools from connected servers
|
|
245
245
|
await manager.callTool('server1/tool-name', args)
|
|
246
246
|
await manager.disconnectAll()
|
|
247
247
|
|
|
@@ -356,14 +356,40 @@ await driver.resumeSession(sessionId, 'Add validation')
|
|
|
356
356
|
```
|
|
357
357
|
|
|
358
358
|
## Gotchas
|
|
359
|
-
- API keys should be in `.env`
|
|
359
|
+
- API keys should be in `.env` - `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`
|
|
360
360
|
- Ollama requires a local server running on port 11434
|
|
361
361
|
- Image generation uses OpenAI DALL-E by default
|
|
362
362
|
- Vision supports both GPT-4V and Claude models
|
|
363
|
-
- VectorIndex is in-memory
|
|
363
|
+
- VectorIndex is in-memory - not persisted between restarts
|
|
364
364
|
- RAG combines chunking + embedding + vector search + LLM generation
|
|
365
365
|
- MCP supports stdio (subprocess), SSE, and HTTP transports
|
|
366
366
|
- The buddy assistant has git integration (commit, push, apply changes)
|
|
367
367
|
- Claude Agent SDK wraps the Claude Code CLI for agentic workflows
|
|
368
368
|
- A Bedrock id as `default` selects the Bedrock driver; it never reaches api.anthropic.com
|
|
369
|
-
- Sentiment/classification use AI models
|
|
369
|
+
- Sentiment/classification use AI models - they're not rule-based
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
## Usage, retries and multimodal messages
|
|
373
|
+
|
|
374
|
+
The public package also exposes `onUsage/recordUsage/listUsageReporters`
|
|
375
|
+
(and clearUsageReporters for teardown), `estimateTokens/estimateMessageTokens`,
|
|
376
|
+
`sanitizePrompt`, `fetchWithRetry`, and
|
|
377
|
+
`buildMessageWithImages/normalizeMessagesForProvider`. Use the exported
|
|
378
|
+
types and their `utils/` implementations before composing a provider-neutral
|
|
379
|
+
message or reporting costs. Token estimates are heuristic, usage callback data
|
|
380
|
+
comes from provider results, and sanitizing a prompt is not authorization for
|
|
381
|
+
executing a suggested tool.
|
|
382
|
+
|
|
383
|
+
Provider capabilities differ: embeddings currently use OpenAI/Ollama; RAG supports
|
|
384
|
+
Anthropic/OpenAI/Ollama; speech uses OpenAI only. The shared chat client and
|
|
385
|
+
tool-turn helpers support the four chat providers but do not imply those other
|
|
386
|
+
features are implemented by Bedrock. VectorIndex is memory-only; its constructor
|
|
387
|
+
accepts EmbeddingOptions (provider/model), not an arbitrary vector dimensions
|
|
388
|
+
setting. Runtime credentials come from env/provider configuration, never a
|
|
389
|
+
browser-exported config response.
|
|
390
|
+
|
|
391
|
+
Tests: `storage/framework/core/ai/tests/usage-and-tokens.test.ts`,
|
|
392
|
+
`vision.test.ts`, `retry.test.ts`, `driver-retry.test.ts`,
|
|
393
|
+
`tool-calls.test.ts` and `client.test.ts`. Verify chosen model/provider
|
|
394
|
+
capabilities from config and registry rather than assuming a marketing model name
|
|
395
|
+
is usable for every API.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: stacks-alias
|
|
3
|
-
description: Use when
|
|
3
|
+
description: Use when debugging source aliases, package/subpath resolution, or the boundary between checkout and published imports. Covers @stacksjs/alias and its active resolver consumers.
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: Bun >= 1.3.0, TypeScript
|
|
6
6
|
allowed-tools: Read Edit Write Bash Grep Glob
|
|
@@ -8,87 +8,42 @@ allowed-tools: Read Edit Write Bash Grep Glob
|
|
|
8
8
|
|
|
9
9
|
# Stacks Path Aliases
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
```typescript
|
|
51
|
-
'~/config/database': 'config/database.ts'
|
|
52
|
-
'~/config/dns': 'config/dns.ts'
|
|
53
|
-
'~/config/docs': 'config/docs.ts'
|
|
54
|
-
'~/config/email': 'config/email.ts'
|
|
55
|
-
// ... all 44 config files
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### Resource Aliases
|
|
59
|
-
Maps `~/` paths to project directories:
|
|
60
|
-
|
|
61
|
-
```typescript
|
|
62
|
-
'~/app/*': 'app/*'
|
|
63
|
-
'~/components/*': 'resources/components/*'
|
|
64
|
-
'~/functions/*': 'resources/functions/*'
|
|
65
|
-
'~/views/*': 'resources/views/*'
|
|
66
|
-
'~/lang/*': 'locales/*'
|
|
67
|
-
'~/*': '*'
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Framework Aliases
|
|
71
|
-
```typescript
|
|
72
|
-
'framework/*': 'storage/framework/*'
|
|
73
|
-
'@/*': '*'
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Usage
|
|
77
|
-
|
|
78
|
-
Aliases are automatically resolved by Bun at runtime and by the build system for production:
|
|
79
|
-
|
|
80
|
-
```typescript
|
|
81
|
-
// These all work because of aliases
|
|
82
|
-
import { db } from '@stacksjs/database'
|
|
83
|
-
import { route } from '@stacksjs/router'
|
|
84
|
-
import { auth } from 'stacks/auth'
|
|
85
|
-
import dbConfig from '~/config/database'
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
## Gotchas
|
|
89
|
-
- **260+ entries** — covers every core package, config file, and resource directory
|
|
90
|
-
- **Dual prefixes** — both `@stacksjs/` and `stacks/` resolve to the same source files
|
|
91
|
-
- **Runtime resolution** — Bun resolves these at runtime via `bunfig.toml` preloading
|
|
92
|
-
- **Build-time resolution** — the build system resolves aliases to actual paths for production
|
|
93
|
-
- **Always use aliases** — never use relative paths between packages in the monorepo
|
|
94
|
-
- **Adding new packages** — requires adding alias entries for both `@stacksjs/` and `stacks/` prefixes
|
|
11
|
+
Use `@stacksjs/alias` to inspect the framework's source alias map and debug a
|
|
12
|
+
configured build resolver. The exported alias object is metadata; importing it
|
|
13
|
+
does not install a universal module resolver.
|
|
14
|
+
|
|
15
|
+
## Actual mappings
|
|
16
|
+
|
|
17
|
+
The map in `storage/framework/core/alias/src/index.ts` uses @stacksjs/path to
|
|
18
|
+
resolve project-relative resources to concrete paths. Many packages have
|
|
19
|
+
@stacksjs/name and stacks/name aliases plus wildcard subpaths, but only entries
|
|
20
|
+
actually in the map are promised. Cli maps to core/cli, Buddy to core/buddy;
|
|
21
|
+
they are separate packages.
|
|
22
|
+
|
|
23
|
+
Configuration/resource aliases cover declared config paths and resources. Read
|
|
24
|
+
that source and the active tsconfig/bun/build configuration for exact spellings;
|
|
25
|
+
a fixed count or schematic wildcard table cannot establish runtime resolution.
|
|
26
|
+
An application override changes the source root resolved by @stacksjs/path.
|
|
27
|
+
|
|
28
|
+
## Source versus published consumers
|
|
29
|
+
|
|
30
|
+
Public @stacksjs package names and declared subpaths are the portable imports.
|
|
31
|
+
Source aliases help the framework checkout and configured Stacks app build.
|
|
32
|
+
A published consumer must resolve package exports without reaching outside its
|
|
33
|
+
installed package. Do not invent a subpath merely because a matching source
|
|
34
|
+
file exists behind a wildcard alias. Declaration and runtime export validation
|
|
35
|
+
are separate checks.
|
|
36
|
+
|
|
37
|
+
When adding a source alias, update the actual map and the consuming resolver;
|
|
38
|
+
check its package's exports/build entries as well. Relative imports within a
|
|
39
|
+
package are ordinary implementation imports; using a relative path that escapes
|
|
40
|
+
into another package's unpublished types is the problem. Avoid the former rule
|
|
41
|
+
that all relative imports are forbidden, since framework code itself uses them
|
|
42
|
+
to keep internal modules and cycle boundaries explicit.
|
|
43
|
+
|
|
44
|
+
## Verification
|
|
45
|
+
|
|
46
|
+
Source: `core/alias/src/index.ts`, active tsconfig.json and the build/runtime
|
|
47
|
+
consumer reading the map. Retained coverage: `core/alias/tests/alias.test.ts`.
|
|
48
|
+
For missing globals, read stacks-auto-imports; aliases solve module resolution,
|
|
49
|
+
not injection of ambient names into a browser or server request.
|
|
@@ -8,8 +8,7 @@ allowed-tools: Read Edit Write Bash Grep Glob
|
|
|
8
8
|
|
|
9
9
|
# Stacks Analytics
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
and self-hosted.
|
|
11
|
+
Analytics drivers: AnalyticsHQ, Fathom, Plausible, Google Analytics and self-hosted.
|
|
13
12
|
|
|
14
13
|
## Key Paths
|
|
15
14
|
- Core package: `storage/framework/core/analytics/src/`
|
|
@@ -46,7 +45,7 @@ that should carry it.
|
|
|
46
45
|
## Drivers
|
|
47
46
|
|
|
48
47
|
### Fathom
|
|
49
|
-
Hosted
|
|
48
|
+
Hosted tracker script. Requires a Fathom account; compliance depends on the complete application and provider setup.
|
|
50
49
|
`scriptUrl` points the tag at your own origin so a content blocker does not drop it.
|
|
51
50
|
|
|
52
51
|
```typescript
|
|
@@ -178,3 +177,24 @@ Analytics dashboard at `/dashboard/analytics` displays:
|
|
|
178
177
|
- `trackOutboundLinks` adds click handlers to external `<a>` tags
|
|
179
178
|
- `capturePageviews` is server-side and independent of `driver`
|
|
180
179
|
- AnalyticsHQ custom events need no script: `data-analyticshq-event="Ticket click"` on any element, with other `data-analyticshq-*` attributes as properties
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
## Environment and capture boundaries
|
|
183
|
+
|
|
184
|
+
enabled:false returns no tags. When environments is explicitly supplied,
|
|
185
|
+
getAnalyticsHead runs the shared integration gate and forwards the resolved label
|
|
186
|
+
to AnalyticsHQ. If environments is absent, the current registry preserves its
|
|
187
|
+
older ungated behavior; the shipped config explicitly lists production/staging.
|
|
188
|
+
Do not assume every caller gets that allowlist when constructing config itself.
|
|
189
|
+
|
|
190
|
+
First-party capturePageviews is separate from script injection and the remote
|
|
191
|
+
driver gate. recordPageview(req) writes qualifying GET page requests to
|
|
192
|
+
analytics_events; isPageviewRequest filters assets/API/internal paths and obvious
|
|
193
|
+
bots/monitors. classifyAgent/referrerHost are coarse helpers, not unique visitor
|
|
194
|
+
identification. Capture failures are swallowed so a statistic cannot break a
|
|
195
|
+
page. Apply the table/model migration before relying on the dashboard data.
|
|
196
|
+
|
|
197
|
+
Source: `storage/framework/core/analytics/src/registry.ts`, capture.ts and
|
|
198
|
+
drivers/. Tests: environment-gate.test.ts, capture.test.ts and drivers.test.ts.
|
|
199
|
+
A configured script does not certify analytics consent/privacy compliance or
|
|
200
|
+
prove a provider received an event. Read stacks-env for the shared gate.
|
|
@@ -21,10 +21,11 @@ export * as arr from './arr'
|
|
|
21
21
|
export * from './macro'
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
The `arr.ts` re-exports
|
|
25
|
-
- `contains.ts`
|
|
26
|
-
- `helpers.ts`
|
|
27
|
-
- `math.ts`
|
|
24
|
+
The `arr.ts` re-exports these submodules:
|
|
25
|
+
- `contains.ts` - containment check functions
|
|
26
|
+
- `helpers.ts` - array manipulation (toArray, flatten, partition, unique, shuffle, etc.)
|
|
27
|
+
- `math.ts` - statistical functions (average, median, mode, variance, etc.)
|
|
28
|
+
- `transform.ts` - typed grouping, selectors, ordering, sets and zip helpers
|
|
28
29
|
|
|
29
30
|
The `macro.ts` provides the `Arr` and `arr` facade objects.
|
|
30
31
|
|
|
@@ -140,10 +141,10 @@ All containment functions work with `string[]`. The `contains` function checks i
|
|
|
140
141
|
contains('foobar', ['foo', 'baz']) // true -- 'foobar'.includes('foo')
|
|
141
142
|
contains('hello', ['foo', 'bar']) // false
|
|
142
143
|
|
|
143
|
-
containsAll(['
|
|
144
|
+
containsAll(['foobar', 'barx'], ['foo', 'bar']) // true -- each needle contains a haystack substring
|
|
144
145
|
containsAll(['foo', 'qux'], ['foobar']) // false -- 'qux' not found
|
|
145
146
|
|
|
146
|
-
containsAny(['
|
|
147
|
+
containsAny(['foobar', 'qux'], ['foo']) // true -- at least one needle contains a haystack substring
|
|
147
148
|
containsAny(['baz', 'qux'], ['foobar']) // false
|
|
148
149
|
|
|
149
150
|
containsNone(['baz', 'qux'], ['foobar']) // true -- none found
|
|
@@ -153,7 +154,7 @@ containsOnly(['foo', 'bar'], ['foobar', 'barx']) // checks if haystack items onl
|
|
|
153
154
|
// Implemented as: containsAll(haystack, needles) -- reversed args
|
|
154
155
|
|
|
155
156
|
doesNotContain('qux', ['foo', 'bar']) // true
|
|
156
|
-
doesNotContain('foo', ['foobar']) //
|
|
157
|
+
doesNotContain('foo', ['foobar']) // true -- 'foo' does not contain 'foobar'
|
|
157
158
|
```
|
|
158
159
|
|
|
159
160
|
**Important**: `contains` uses `needle.includes(hay)`, NOT `haystack.includes(needle)`. It checks if the needle string contains any of the haystack substrings. This is substring matching, not array membership.
|
|
@@ -211,7 +212,10 @@ covariance([1, 2, 3, 4], [4, 3, 2, 1]) // -1.25 -- negative correlation
|
|
|
211
212
|
|
|
212
213
|
## Arr Facade (`macro.ts`)
|
|
213
214
|
|
|
214
|
-
|
|
215
|
+
Use `Arr` for the facade. The root's lowercase `arr` is the namespace exported
|
|
216
|
+
from `arr.ts`, with all standalone functions. It is not the same object as
|
|
217
|
+
`Arr` and does not include the facade-only `random` method. A lowercase alias
|
|
218
|
+
also exists in `macro.ts`, but the root namespace export wins.
|
|
215
219
|
|
|
216
220
|
```typescript
|
|
217
221
|
import { Arr, arr } from '@stacksjs/arrays'
|
|
@@ -256,7 +260,29 @@ The facade adds one extra method not in the standalone functions:
|
|
|
256
260
|
Arr.random(arr, count) // like sample but filters null/undefined from results
|
|
257
261
|
```
|
|
258
262
|
|
|
259
|
-
##
|
|
263
|
+
## Typed transformations
|
|
264
|
+
|
|
265
|
+
These standalone functions are also available through the root `arr` namespace:
|
|
266
|
+
|
|
267
|
+
- `groupBy`, `keyBy`, `countBy` use selector functions and return typed records.
|
|
268
|
+
Repeated keyBy keys overwrite earlier entries; groupBy accumulates them.
|
|
269
|
+
- `sortBy(array, ...selectors)` copies before sorting, supports multiple keys,
|
|
270
|
+
and accepts `{ by, order: 'desc' }` selectors.
|
|
271
|
+
- `sumBy`, `meanBy`, `minBy`, `maxBy` aggregate selected values. `meanBy` returns
|
|
272
|
+
undefined on an empty input; extrema return the selected element, not its value.
|
|
273
|
+
- `zip`, `zipWith` stop at the shorter input; `unzip` splits pairs.
|
|
274
|
+
- `difference` keeps first-input duplicates that are not excluded;
|
|
275
|
+
`intersection` and `union` deduplicate by Set identity.
|
|
276
|
+
- `chunk` validates a positive integer size; `compact` removes only null and
|
|
277
|
+
undefined, preserving false, zero and empty strings.
|
|
278
|
+
- `splitAt` supports negative indexes; `splitWhen` starts the second half at
|
|
279
|
+
the first match; `times` requires a non-negative integer count.
|
|
280
|
+
|
|
281
|
+
Read `core/arrays/src/transform.ts` and `tests/transform.test.ts` for precise
|
|
282
|
+
empty-input and selector behavior. These pure helpers are preferable to a new
|
|
283
|
+
utility dependency for common native transformations.
|
|
284
|
+
|
|
285
|
+
## Type example
|
|
260
286
|
|
|
261
287
|
```typescript
|
|
262
288
|
type PartitionFilter<T> = (item: T, index: number, array: readonly T[]) => any
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: stacks-audio
|
|
3
|
+
description: Use when planning native audio derivatives, processing supported audio formats, generating waveforms/transcripts, or signing audio delivery. Covers @stacksjs/audio and runtime encoder capability checks.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Bun >= 1.3.0, TypeScript
|
|
6
|
+
allowed-tools: Read Edit Write Bash Grep Glob
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Native audio planning and delivery
|
|
10
|
+
|
|
11
|
+
audio(source) builds a profile-driven delivery plan. Supply an inspected
|
|
12
|
+
AudioProfile and actual runtime encoder/codec capabilities. A declared output
|
|
13
|
+
does not prove that an encoder is available.
|
|
14
|
+
|
|
15
|
+
## Plan versus process
|
|
16
|
+
|
|
17
|
+
generate() returns the plan, including copy/transcode actions and availability.
|
|
18
|
+
assertAudioPlanExecutable rejects an unavailable encoding path. process() or
|
|
19
|
+
processAudioPlan delegates executable work to the installed native-transcode
|
|
20
|
+
implementation. Do not report a generated plan as finished media bytes.
|
|
21
|
+
|
|
22
|
+
Content type, format and source characteristics determine bitrate/output
|
|
23
|
+
selection. negotiateAudioOutput handles accept preferences. createWaveform and
|
|
24
|
+
normalizeTranscript build waveform data and transcript/VTT output from supplied
|
|
25
|
+
samples/segments; they do not infer spoken text from an audio file themselves.
|
|
26
|
+
|
|
27
|
+
audioResponseHeaders supports delivery caching; signAudioAsset/verifyAudioAsset
|
|
28
|
+
and createProtectedAudioPlaylist support protected delivery. Preserve expiration,
|
|
29
|
+
path and key handling; a protected playlist still needs an authorized key route.
|
|
30
|
+
|
|
31
|
+
Tests prove planning, capability rejection, helpers and delegated processing.
|
|
32
|
+
The processing test mocks the transcoder, so it is not evidence that every codec
|
|
33
|
+
works on every host. Verify the real target runtime when producing assets.
|
|
34
|
+
Source: core/audio/src/index.ts. Evidence: audio.test.ts and process.test.ts.
|