@stacksjs/defaults 0.75.109 → 0.75.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/AGENTS.md +36 -1
- package/ai/README.md +39 -1
- package/ai/skills/stacks-actions/SKILL.md +64 -6
- package/ai/skills/stacks-ai/SKILL.md +36 -10
- package/ai/skills/stacks-alias/SKILL.md +40 -85
- package/ai/skills/stacks-analytics/SKILL.md +23 -3
- package/ai/skills/stacks-arrays/SKILL.md +35 -9
- package/ai/skills/stacks-audio/SKILL.md +34 -0
- package/ai/skills/stacks-auth/ACCOUNT-WORKFLOWS.md +113 -0
- package/ai/skills/stacks-auth/SKILL.md +90 -57
- package/ai/skills/stacks-auto-imports/SKILL.md +80 -138
- package/ai/skills/stacks-browser/SKILL.md +82 -138
- package/ai/skills/stacks-browser-extension/SKILL.md +40 -0
- package/ai/skills/stacks-buddy/SKILL.md +2 -0
- package/ai/skills/stacks-build/SKILL.md +42 -23
- package/ai/skills/stacks-cache/SKILL.md +75 -115
- package/ai/skills/stacks-calendar/SKILL.md +61 -97
- package/ai/skills/stacks-charts/SKILL.md +34 -0
- package/ai/skills/stacks-chat/SKILL.md +18 -2
- package/ai/skills/stacks-chief-of-staff/LICENSE +21 -0
- package/ai/skills/stacks-chief-of-staff/NOTICE.md +10 -0
- package/ai/skills/stacks-chief-of-staff/PLAYBOOK.md +42 -0
- package/ai/skills/stacks-chief-of-staff/SKILL.md +28 -0
- package/ai/skills/stacks-cli/SKILL.md +23 -7
- package/ai/skills/stacks-cloud/SKILL.md +37 -20
- package/ai/skills/stacks-cms/PAGES.md +70 -0
- package/ai/skills/stacks-cms/SKILL.md +30 -18
- package/ai/skills/stacks-codebase-design/LICENSE +21 -0
- package/ai/skills/stacks-codebase-design/NOTICE.md +10 -0
- package/ai/skills/stacks-codebase-design/SKILL.md +10 -0
- package/ai/skills/stacks-collections/SKILL.md +25 -8
- package/ai/skills/stacks-commerce/SKILL.md +25 -1
- package/ai/skills/stacks-composables/BROWSER.md +97 -0
- package/ai/skills/stacks-composables/SKILL.md +87 -181
- package/ai/skills/stacks-config/SKILL.md +108 -162
- package/ai/skills/stacks-cron/SKILL.md +27 -13
- package/ai/skills/stacks-crosswind/SKILL.md +62 -167
- package/ai/skills/stacks-dashboard/SKILL.md +8 -0
- package/ai/skills/stacks-database/SKILL.md +98 -68
- package/ai/skills/stacks-datetime/SKILL.md +21 -5
- package/ai/skills/stacks-deploy/SKILL.md +17 -1
- package/ai/skills/stacks-design-brutalist/SKILL.md +1 -1
- package/ai/skills/stacks-design-minimalist/SKILL.md +17 -3
- package/ai/skills/stacks-design-soft/SKILL.md +16 -4
- package/ai/skills/stacks-design-taste/SKILL.md +55 -35
- package/ai/skills/stacks-design-taste-codex/SKILL.md +5 -5
- package/ai/skills/stacks-desktop/SKILL.md +22 -16
- package/ai/skills/stacks-development/SKILL.md +19 -8
- package/ai/skills/stacks-dns/SKILL.md +72 -139
- package/ai/skills/stacks-domain-modeling/ADR-FORMAT.md +47 -0
- package/ai/skills/stacks-domain-modeling/GLOSSARY-FORMAT.md +60 -0
- package/ai/skills/stacks-domain-modeling/LICENSE +21 -0
- package/ai/skills/stacks-domain-modeling/NOTICE.md +10 -0
- package/ai/skills/stacks-domain-modeling/SKILL.md +11 -0
- package/ai/skills/stacks-email/DELIVERY-CONTROLS.md +84 -0
- package/ai/skills/stacks-email/SKILL.md +18 -2
- package/ai/skills/stacks-enums/SKILL.md +28 -81
- package/ai/skills/stacks-env/SKILL.md +23 -15
- package/ai/skills/stacks-error-handling/SKILL.md +68 -121
- package/ai/skills/stacks-events/SKILL.md +83 -264
- package/ai/skills/stacks-faker/SKILL.md +28 -13
- package/ai/skills/stacks-feature-flags/SKILL.md +41 -0
- package/ai/skills/stacks-features/SKILL.md +46 -0
- package/ai/skills/stacks-flow/ENGINEERING.md +84 -0
- package/ai/skills/stacks-flow/LICENSE +21 -0
- package/ai/skills/stacks-flow/NOTICE.md +10 -0
- package/ai/skills/stacks-flow/SKILL.md +32 -0
- package/ai/skills/stacks-flow/upstream-skills.json +726 -0
- package/ai/skills/stacks-forms/SKILL.md +44 -0
- package/ai/skills/stacks-git/LICENSE +21 -0
- package/ai/skills/stacks-git/NOTICE.md +10 -0
- package/ai/skills/stacks-git/SKILL.md +11 -0
- package/ai/skills/stacks-grill-with-docs/LICENSE +21 -0
- package/ai/skills/stacks-grill-with-docs/NOTICE.md +10 -0
- package/ai/skills/stacks-grill-with-docs/PLAYBOOK.md +4 -0
- package/ai/skills/stacks-grill-with-docs/SKILL.md +24 -0
- package/ai/skills/stacks-grilling/LICENSE +21 -0
- package/ai/skills/stacks-grilling/NOTICE.md +17 -0
- package/ai/skills/stacks-grilling/SKILL.md +7 -0
- package/ai/skills/stacks-guard/LICENSE +21 -0
- package/ai/skills/stacks-guard/NOTICE.md +10 -0
- package/ai/skills/stacks-guard/SKILL.md +6 -0
- package/ai/skills/stacks-handoff/LICENSE +21 -0
- package/ai/skills/stacks-handoff/NOTICE.md +17 -0
- package/ai/skills/stacks-handoff/SKILL.md +8 -0
- package/ai/skills/stacks-http/SKILL.md +64 -297
- package/ai/skills/stacks-humanizer/LICENSE +21 -0
- package/ai/skills/stacks-humanizer/NOTICE.md +19 -0
- package/ai/skills/stacks-humanizer/SKILL.md +85 -0
- package/ai/skills/stacks-humanizer/references/patterns.md +350 -0
- package/ai/skills/stacks-i18n/SKILL.md +33 -8
- package/ai/skills/stacks-image/SKILL.md +37 -0
- package/ai/skills/stacks-image-to-code/SKILL.md +11 -6
- package/ai/skills/stacks-implement/LICENSE +21 -0
- package/ai/skills/stacks-implement/NOTICE.md +10 -0
- package/ai/skills/stacks-implement/PLAYBOOK.md +14 -0
- package/ai/skills/stacks-implement/SKILL.md +24 -0
- package/ai/skills/stacks-implement-spec/LICENSE +21 -0
- package/ai/skills/stacks-implement-spec/NOTICE.md +10 -0
- package/ai/skills/stacks-implement-spec/PLAYBOOK.md +37 -0
- package/ai/skills/stacks-implement-spec/SKILL.md +24 -0
- package/ai/skills/stacks-improve-codebase-architecture/HTML-REPORT.md +126 -0
- package/ai/skills/stacks-improve-codebase-architecture/LICENSE +21 -0
- package/ai/skills/stacks-improve-codebase-architecture/NOTICE.md +10 -0
- package/ai/skills/stacks-improve-codebase-architecture/PLAYBOOK.md +68 -0
- package/ai/skills/stacks-improve-codebase-architecture/SKILL.md +24 -0
- package/ai/skills/stacks-investigate/LICENSE +21 -0
- package/ai/skills/stacks-investigate/NOTICE.md +10 -0
- package/ai/skills/stacks-investigate/SKILL.md +6 -0
- package/ai/skills/stacks-jobs/SKILL.md +29 -8
- package/ai/skills/stacks-listeners/SKILL.md +13 -5
- package/ai/skills/stacks-logging/SKILL.md +71 -68
- package/ai/skills/stacks-loop/LICENSE +21 -0
- package/ai/skills/stacks-loop/NOTICE.md +10 -0
- package/ai/skills/stacks-loop/PLAYBOOK.md +28 -0
- package/ai/skills/stacks-loop/SKILL.md +28 -0
- package/ai/skills/stacks-mail/SKILL.md +46 -7
- package/ai/skills/stacks-marketing/CATALOG.md +60 -0
- package/ai/skills/stacks-marketing/LICENSE +21 -0
- package/ai/skills/stacks-marketing/NOTICE.md +5 -0
- package/ai/skills/stacks-marketing/SKILL.md +27 -0
- package/ai/skills/stacks-marketing/WORKFLOW.md +83 -0
- package/ai/skills/stacks-marketing-ab-testing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-ab-testing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-ab-testing/PLAYBOOK.md +352 -0
- package/ai/skills/stacks-marketing-ab-testing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-ab-testing/evals/evals.json +116 -0
- package/ai/skills/stacks-marketing-ab-testing/references/sample-size-guide.md +263 -0
- package/ai/skills/stacks-marketing-ab-testing/references/test-templates.md +277 -0
- package/ai/skills/stacks-marketing-ad-creative/LICENSE +21 -0
- package/ai/skills/stacks-marketing-ad-creative/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-ad-creative/PLAYBOOK.md +434 -0
- package/ai/skills/stacks-marketing-ad-creative/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-ad-creative/assets/creative-review-template.html +432 -0
- package/ai/skills/stacks-marketing-ad-creative/evals/evals.json +280 -0
- package/ai/skills/stacks-marketing-ad-creative/references/awareness-headlines.md +54 -0
- package/ai/skills/stacks-marketing-ad-creative/references/creative-review-page.md +109 -0
- package/ai/skills/stacks-marketing-ad-creative/references/creative-roadmap.md +118 -0
- package/ai/skills/stacks-marketing-ad-creative/references/generative-tools.md +613 -0
- package/ai/skills/stacks-marketing-ad-creative/references/hook-system.md +115 -0
- package/ai/skills/stacks-marketing-ad-creative/references/imessage-video-ads.md +197 -0
- package/ai/skills/stacks-marketing-ad-creative/references/meta-creative-formats.md +114 -0
- package/ai/skills/stacks-marketing-ad-creative/references/motion-video-ads.md +126 -0
- package/ai/skills/stacks-marketing-ad-creative/references/platform-specs.md +213 -0
- package/ai/skills/stacks-marketing-ad-creative/references/short-form-video-specs.md +213 -0
- package/ai/skills/stacks-marketing-ad-creative/references/static-ad-templates.md +308 -0
- package/ai/skills/stacks-marketing-ads/LICENSE +21 -0
- package/ai/skills/stacks-marketing-ads/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-ads/PLAYBOOK.md +464 -0
- package/ai/skills/stacks-marketing-ads/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-ads/evals/evals.json +192 -0
- package/ai/skills/stacks-marketing-ads/references/abm-playbook.md +101 -0
- package/ai/skills/stacks-marketing-ads/references/ad-copy-templates.md +207 -0
- package/ai/skills/stacks-marketing-ads/references/audience-targeting.md +243 -0
- package/ai/skills/stacks-marketing-ads/references/audit-guardrails.md +83 -0
- package/ai/skills/stacks-marketing-ads/references/b2b-paid-playbook.md +115 -0
- package/ai/skills/stacks-marketing-ads/references/conversion-tracking.md +361 -0
- package/ai/skills/stacks-marketing-ads/references/creative-research-automation.md +103 -0
- package/ai/skills/stacks-marketing-ads/references/google-ads-audit-checklist.md +84 -0
- package/ai/skills/stacks-marketing-ads/references/google-search-playbook.md +120 -0
- package/ai/skills/stacks-marketing-ads/references/linkedin-b2b-playbook.md +107 -0
- package/ai/skills/stacks-marketing-ads/references/meta-andromeda-playbook.md +44 -0
- package/ai/skills/stacks-marketing-ads/references/meta-decision-system.md +176 -0
- package/ai/skills/stacks-marketing-ads/references/payback-period.md +73 -0
- package/ai/skills/stacks-marketing-ads/references/platform-setup-checklists.md +277 -0
- package/ai/skills/stacks-marketing-ads/references/reading-google-ads-data.md +121 -0
- package/ai/skills/stacks-marketing-ads/references/rsa-output-spec.md +88 -0
- package/ai/skills/stacks-marketing-ai-seo/LICENSE +21 -0
- package/ai/skills/stacks-marketing-ai-seo/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-ai-seo/PLAYBOOK.md +494 -0
- package/ai/skills/stacks-marketing-ai-seo/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-ai-seo/evals/evals.json +163 -0
- package/ai/skills/stacks-marketing-ai-seo/references/agent-readiness.md +66 -0
- package/ai/skills/stacks-marketing-ai-seo/references/citations-vs-recommendations.md +89 -0
- package/ai/skills/stacks-marketing-ai-seo/references/content-patterns.md +287 -0
- package/ai/skills/stacks-marketing-ai-seo/references/content-types.md +82 -0
- package/ai/skills/stacks-marketing-ai-seo/references/format-volatility.md +95 -0
- package/ai/skills/stacks-marketing-ai-seo/references/linkedin-ai-citations.md +131 -0
- package/ai/skills/stacks-marketing-ai-seo/references/okf.md +104 -0
- package/ai/skills/stacks-marketing-ai-seo/references/platform-ranking-factors.md +167 -0
- package/ai/skills/stacks-marketing-ai-seo/references/positioning-and-consensus.md +102 -0
- package/ai/skills/stacks-marketing-ai-seo/references/youtube-ai-citations.md +66 -0
- package/ai/skills/stacks-marketing-analytics/LICENSE +21 -0
- package/ai/skills/stacks-marketing-analytics/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-analytics/PLAYBOOK.md +307 -0
- package/ai/skills/stacks-marketing-analytics/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-analytics/evals/evals.json +117 -0
- package/ai/skills/stacks-marketing-analytics/references/event-library.md +260 -0
- package/ai/skills/stacks-marketing-analytics/references/ga4-implementation.md +304 -0
- package/ai/skills/stacks-marketing-analytics/references/gtm-implementation.md +396 -0
- package/ai/skills/stacks-marketing-aso/LICENSE +21 -0
- package/ai/skills/stacks-marketing-aso/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-aso/PLAYBOOK.md +310 -0
- package/ai/skills/stacks-marketing-aso/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-aso/evals/evals.json +104 -0
- package/ai/skills/stacks-marketing-aso/references/apple-specs.md +107 -0
- package/ai/skills/stacks-marketing-aso/references/benchmarks.md +131 -0
- package/ai/skills/stacks-marketing-aso/references/google-play-specs.md +135 -0
- package/ai/skills/stacks-marketing-aso/references/report-template.md +213 -0
- package/ai/skills/stacks-marketing-aso/references/scoring-criteria.md +213 -0
- package/ai/skills/stacks-marketing-attribution/LICENSE +21 -0
- package/ai/skills/stacks-marketing-attribution/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-attribution/PLAYBOOK.md +223 -0
- package/ai/skills/stacks-marketing-attribution/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-attribution/evals/evals.json +128 -0
- package/ai/skills/stacks-marketing-attribution/references/attribution-models.md +74 -0
- package/ai/skills/stacks-marketing-attribution/references/by-business-type.md +54 -0
- package/ai/skills/stacks-marketing-attribution/references/first-party-tracking.md +253 -0
- package/ai/skills/stacks-marketing-attribution/references/measurement-paradigms.md +85 -0
- package/ai/skills/stacks-marketing-churn-prevention/LICENSE +21 -0
- package/ai/skills/stacks-marketing-churn-prevention/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-churn-prevention/PLAYBOOK.md +420 -0
- package/ai/skills/stacks-marketing-churn-prevention/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-churn-prevention/evals/evals.json +107 -0
- package/ai/skills/stacks-marketing-churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/ai/skills/stacks-marketing-churn-prevention/references/dunning-playbook.md +413 -0
- package/ai/skills/stacks-marketing-co-marketing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-co-marketing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-co-marketing/PLAYBOOK.md +306 -0
- package/ai/skills/stacks-marketing-co-marketing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-co-marketing/evals/evals.json +98 -0
- package/ai/skills/stacks-marketing-co-marketing/references/partnership-types.md +100 -0
- package/ai/skills/stacks-marketing-cold-email/LICENSE +21 -0
- package/ai/skills/stacks-marketing-cold-email/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-cold-email/PLAYBOOK.md +210 -0
- package/ai/skills/stacks-marketing-cold-email/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-cold-email/evals/evals.json +137 -0
- package/ai/skills/stacks-marketing-cold-email/references/benchmarks.md +87 -0
- package/ai/skills/stacks-marketing-cold-email/references/deliverability.md +111 -0
- package/ai/skills/stacks-marketing-cold-email/references/follow-up-sequences.md +81 -0
- package/ai/skills/stacks-marketing-cold-email/references/frameworks.md +90 -0
- package/ai/skills/stacks-marketing-cold-email/references/linkedin-outreach.md +91 -0
- package/ai/skills/stacks-marketing-cold-email/references/multichannel-cadence.md +79 -0
- package/ai/skills/stacks-marketing-cold-email/references/outbound-plays.md +88 -0
- package/ai/skills/stacks-marketing-cold-email/references/personalization.md +90 -0
- package/ai/skills/stacks-marketing-cold-email/references/reply-handling.md +65 -0
- package/ai/skills/stacks-marketing-cold-email/references/subject-lines.md +53 -0
- package/ai/skills/stacks-marketing-community-marketing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-community-marketing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-community-marketing/PLAYBOOK.md +171 -0
- package/ai/skills/stacks-marketing-community-marketing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-community-marketing/evals/evals.json +103 -0
- package/ai/skills/stacks-marketing-community-marketing/references/community-models.md +63 -0
- package/ai/skills/stacks-marketing-competitor-profiling/LICENSE +21 -0
- package/ai/skills/stacks-marketing-competitor-profiling/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-competitor-profiling/PLAYBOOK.md +436 -0
- package/ai/skills/stacks-marketing-competitor-profiling/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-competitor-profiling/evals/evals.json +97 -0
- package/ai/skills/stacks-marketing-competitor-profiling/references/templates.md +167 -0
- package/ai/skills/stacks-marketing-competitor-profiling/references/tool-reference.md +314 -0
- package/ai/skills/stacks-marketing-competitors/LICENSE +21 -0
- package/ai/skills/stacks-marketing-competitors/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-competitors/PLAYBOOK.md +283 -0
- package/ai/skills/stacks-marketing-competitors/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-competitors/evals/evals.json +119 -0
- package/ai/skills/stacks-marketing-competitors/references/content-architecture.md +277 -0
- package/ai/skills/stacks-marketing-competitors/references/templates.md +226 -0
- package/ai/skills/stacks-marketing-content-strategy/LICENSE +21 -0
- package/ai/skills/stacks-marketing-content-strategy/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-content-strategy/PLAYBOOK.md +437 -0
- package/ai/skills/stacks-marketing-content-strategy/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-content-strategy/evals/evals.json +116 -0
- package/ai/skills/stacks-marketing-content-strategy/references/content-distribution.md +83 -0
- package/ai/skills/stacks-marketing-content-strategy/references/headless-cms.md +194 -0
- package/ai/skills/stacks-marketing-copy-editing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-copy-editing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-copy-editing/PLAYBOOK.md +485 -0
- package/ai/skills/stacks-marketing-copy-editing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-copy-editing/evals/evals.json +117 -0
- package/ai/skills/stacks-marketing-copy-editing/references/checklist.md +77 -0
- package/ai/skills/stacks-marketing-copy-editing/references/content-refresh.md +71 -0
- package/ai/skills/stacks-marketing-copy-editing/references/plain-english-alternatives.md +394 -0
- package/ai/skills/stacks-marketing-copywriting/LICENSE +21 -0
- package/ai/skills/stacks-marketing-copywriting/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-copywriting/PLAYBOOK.md +282 -0
- package/ai/skills/stacks-marketing-copywriting/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-copywriting/evals/evals.json +140 -0
- package/ai/skills/stacks-marketing-copywriting/references/ai-tells.md +261 -0
- package/ai/skills/stacks-marketing-copywriting/references/copy-frameworks.md +432 -0
- package/ai/skills/stacks-marketing-copywriting/references/natural-transitions.md +256 -0
- package/ai/skills/stacks-marketing-council/LICENSE +21 -0
- package/ai/skills/stacks-marketing-council/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-council/PLAYBOOK.md +157 -0
- package/ai/skills/stacks-marketing-council/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-council/evals/evals.json +70 -0
- package/ai/skills/stacks-marketing-council/references/advisor-template.md +51 -0
- package/ai/skills/stacks-marketing-council/references/advisors/alex-hormozi.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/ann-handley.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/april-dunford.md +41 -0
- package/ai/skills/stacks-marketing-council/references/advisors/byron-sharp.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/claude-hopkins.md +42 -0
- package/ai/skills/stacks-marketing-council/references/advisors/david-ogilvy.md +42 -0
- package/ai/skills/stacks-marketing-council/references/advisors/eugene-schwartz.md +42 -0
- package/ai/skills/stacks-marketing-council/references/advisors/gary-halbert.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/gary-vaynerchuk.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/rory-sutherland.md +42 -0
- package/ai/skills/stacks-marketing-council/references/advisors/russell-brunson.md +43 -0
- package/ai/skills/stacks-marketing-council/references/advisors/seth-godin.md +43 -0
- package/ai/skills/stacks-marketing-cro/LICENSE +21 -0
- package/ai/skills/stacks-marketing-cro/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-cro/PLAYBOOK.md +194 -0
- package/ai/skills/stacks-marketing-cro/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-cro/evals/evals.json +111 -0
- package/ai/skills/stacks-marketing-cro/references/experiments.md +248 -0
- package/ai/skills/stacks-marketing-cro/references/form.md +422 -0
- package/ai/skills/stacks-marketing-customer-research/LICENSE +21 -0
- package/ai/skills/stacks-marketing-customer-research/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-customer-research/PLAYBOOK.md +304 -0
- package/ai/skills/stacks-marketing-customer-research/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-customer-research/evals/evals.json +176 -0
- package/ai/skills/stacks-marketing-customer-research/references/interviews-and-surveys.md +155 -0
- package/ai/skills/stacks-marketing-customer-research/references/source-guides.md +401 -0
- package/ai/skills/stacks-marketing-directory-submissions/LICENSE +21 -0
- package/ai/skills/stacks-marketing-directory-submissions/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-directory-submissions/PLAYBOOK.md +397 -0
- package/ai/skills/stacks-marketing-directory-submissions/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-directory-submissions/evals/evals.json +121 -0
- package/ai/skills/stacks-marketing-directory-submissions/references/directory-list.md +545 -0
- package/ai/skills/stacks-marketing-directory-submissions/references/positioning-variations.md +232 -0
- package/ai/skills/stacks-marketing-directory-submissions/references/submission-tracker-template.csv +272 -0
- package/ai/skills/stacks-marketing-emails/LICENSE +21 -0
- package/ai/skills/stacks-marketing-emails/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-emails/PLAYBOOK.md +336 -0
- package/ai/skills/stacks-marketing-emails/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-emails/evals/evals.json +105 -0
- package/ai/skills/stacks-marketing-emails/references/copy-guidelines.md +113 -0
- package/ai/skills/stacks-marketing-emails/references/email-types.md +515 -0
- package/ai/skills/stacks-marketing-emails/references/sequence-templates.md +168 -0
- package/ai/skills/stacks-marketing-events/LICENSE +21 -0
- package/ai/skills/stacks-marketing-events/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-events/PLAYBOOK.md +127 -0
- package/ai/skills/stacks-marketing-events/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-events/evals/evals.json +92 -0
- package/ai/skills/stacks-marketing-events/references/event-portfolio-strategy.md +80 -0
- package/ai/skills/stacks-marketing-events/references/speaking.md +49 -0
- package/ai/skills/stacks-marketing-events/references/sponsorship-roi.md +57 -0
- package/ai/skills/stacks-marketing-events/references/webinar-funnel.md +88 -0
- package/ai/skills/stacks-marketing-free-tools/LICENSE +21 -0
- package/ai/skills/stacks-marketing-free-tools/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-free-tools/PLAYBOOK.md +186 -0
- package/ai/skills/stacks-marketing-free-tools/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-free-tools/evals/evals.json +103 -0
- package/ai/skills/stacks-marketing-free-tools/references/tool-benchmarks.md +35 -0
- package/ai/skills/stacks-marketing-free-tools/references/tool-types.md +217 -0
- package/ai/skills/stacks-marketing-ideas/LICENSE +21 -0
- package/ai/skills/stacks-marketing-ideas/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-ideas/PLAYBOOK.md +167 -0
- package/ai/skills/stacks-marketing-ideas/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-ideas/evals/evals.json +105 -0
- package/ai/skills/stacks-marketing-ideas/references/guerrilla-marketing.md +56 -0
- package/ai/skills/stacks-marketing-ideas/references/ideas-by-category.md +366 -0
- package/ai/skills/stacks-marketing-image/LICENSE +21 -0
- package/ai/skills/stacks-marketing-image/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-image/PLAYBOOK.md +336 -0
- package/ai/skills/stacks-marketing-image/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-image/evals/evals.json +89 -0
- package/ai/skills/stacks-marketing-image/references/ai-image-prompting.md +229 -0
- package/ai/skills/stacks-marketing-influencer-marketing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-influencer-marketing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-influencer-marketing/PLAYBOOK.md +198 -0
- package/ai/skills/stacks-marketing-influencer-marketing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-influencer-marketing/evals/evals.json +89 -0
- package/ai/skills/stacks-marketing-influencer-marketing/references/ugc-creator-program.md +91 -0
- package/ai/skills/stacks-marketing-launch/LICENSE +21 -0
- package/ai/skills/stacks-marketing-launch/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-launch/PLAYBOOK.md +381 -0
- package/ai/skills/stacks-marketing-launch/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-launch/evals/evals.json +135 -0
- package/ai/skills/stacks-marketing-launch/references/shipped-changes.md +84 -0
- package/ai/skills/stacks-marketing-launch/references/site-launch-qa.md +57 -0
- package/ai/skills/stacks-marketing-lead-magnets/LICENSE +21 -0
- package/ai/skills/stacks-marketing-lead-magnets/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-lead-magnets/PLAYBOOK.md +308 -0
- package/ai/skills/stacks-marketing-lead-magnets/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-lead-magnets/evals/evals.json +105 -0
- package/ai/skills/stacks-marketing-lead-magnets/references/benchmarks.md +129 -0
- package/ai/skills/stacks-marketing-lead-magnets/references/content-to-skill-corpus-design.md +89 -0
- package/ai/skills/stacks-marketing-lead-magnets/references/content-to-skill-release.md +71 -0
- package/ai/skills/stacks-marketing-lead-magnets/references/content-to-skill.md +109 -0
- package/ai/skills/stacks-marketing-lead-magnets/references/format-guide.md +196 -0
- package/ai/skills/stacks-marketing-loops/LICENSE +21 -0
- package/ai/skills/stacks-marketing-loops/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-loops/PLAYBOOK.md +111 -0
- package/ai/skills/stacks-marketing-loops/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-loops/evals/evals.json +133 -0
- package/ai/skills/stacks-marketing-loops/references/loop-catalog.md +796 -0
- package/ai/skills/stacks-marketing-loops/references/loop-guardrails.md +73 -0
- package/ai/skills/stacks-marketing-loops/references/loop-orchestration.md +71 -0
- package/ai/skills/stacks-marketing-loops/references/loop-state.md +67 -0
- package/ai/skills/stacks-marketing-loops/references/loop-template.md +79 -0
- package/ai/skills/stacks-marketing-loops/references/outbound-operator.md +86 -0
- package/ai/skills/stacks-marketing-loops/references/seo-operator.md +110 -0
- package/ai/skills/stacks-marketing-offers/LICENSE +21 -0
- package/ai/skills/stacks-marketing-offers/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-offers/PLAYBOOK.md +151 -0
- package/ai/skills/stacks-marketing-offers/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-offers/evals/evals.json +21 -0
- package/ai/skills/stacks-marketing-offers/references/bonus-stacking.md +150 -0
- package/ai/skills/stacks-marketing-offers/references/examples.md +215 -0
- package/ai/skills/stacks-marketing-offers/references/guarantee-design.md +172 -0
- package/ai/skills/stacks-marketing-offers/references/offer-anatomy.md +203 -0
- package/ai/skills/stacks-marketing-offers/references/offer-formats.md +240 -0
- package/ai/skills/stacks-marketing-offers/references/saas-offers.md +116 -0
- package/ai/skills/stacks-marketing-offers/references/scarcity-urgency.md +175 -0
- package/ai/skills/stacks-marketing-offers/references/value-equation.md +134 -0
- package/ai/skills/stacks-marketing-onboarding/LICENSE +21 -0
- package/ai/skills/stacks-marketing-onboarding/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-onboarding/PLAYBOOK.md +257 -0
- package/ai/skills/stacks-marketing-onboarding/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-onboarding/evals/evals.json +108 -0
- package/ai/skills/stacks-marketing-onboarding/references/activation-models.md +57 -0
- package/ai/skills/stacks-marketing-onboarding/references/experiments.md +258 -0
- package/ai/skills/stacks-marketing-onboarding/references/minimum-path-to-value.md +49 -0
- package/ai/skills/stacks-marketing-paywalls/LICENSE +21 -0
- package/ai/skills/stacks-marketing-paywalls/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-paywalls/PLAYBOOK.md +223 -0
- package/ai/skills/stacks-marketing-paywalls/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-paywalls/evals/evals.json +93 -0
- package/ai/skills/stacks-marketing-paywalls/references/experiments.md +164 -0
- package/ai/skills/stacks-marketing-plan/LICENSE +21 -0
- package/ai/skills/stacks-marketing-plan/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-plan/PLAYBOOK.md +300 -0
- package/ai/skills/stacks-marketing-plan/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-plan/evals/evals.json +140 -0
- package/ai/skills/stacks-marketing-plan/references/aarrr-framework.md +180 -0
- package/ai/skills/stacks-marketing-plan/references/budget-planning.md +177 -0
- package/ai/skills/stacks-marketing-plan/references/client-types.md +373 -0
- package/ai/skills/stacks-marketing-plan/references/current-state-rubric.md +255 -0
- package/ai/skills/stacks-marketing-plan/references/example-quietude.md +972 -0
- package/ai/skills/stacks-marketing-plan/references/funding-stage-unlocks.md +230 -0
- package/ai/skills/stacks-marketing-plan/references/growth-patterns.md +190 -0
- package/ai/skills/stacks-marketing-plan/references/idea-cross-reference.md +265 -0
- package/ai/skills/stacks-marketing-plan/references/market-sizing.md +166 -0
- package/ai/skills/stacks-marketing-plan/references/measurement-framework.md +213 -0
- package/ai/skills/stacks-marketing-plan/references/methodology.md +365 -0
- package/ai/skills/stacks-marketing-plan/references/ops-stack-mapping.md +197 -0
- package/ai/skills/stacks-marketing-plan/references/plan-template.md +494 -0
- package/ai/skills/stacks-marketing-plan/references/team-and-agency-model.md +278 -0
- package/ai/skills/stacks-marketing-popups/LICENSE +21 -0
- package/ai/skills/stacks-marketing-popups/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-popups/PLAYBOOK.md +450 -0
- package/ai/skills/stacks-marketing-popups/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-popups/evals/evals.json +94 -0
- package/ai/skills/stacks-marketing-pricing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-pricing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-pricing/PLAYBOOK.md +291 -0
- package/ai/skills/stacks-marketing-pricing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-pricing/evals/evals.json +131 -0
- package/ai/skills/stacks-marketing-pricing/references/pricing-models.md +66 -0
- package/ai/skills/stacks-marketing-pricing/references/pricing-page-teardown.md +87 -0
- package/ai/skills/stacks-marketing-pricing/references/research-methods.md +156 -0
- package/ai/skills/stacks-marketing-pricing/references/tier-structure.md +232 -0
- package/ai/skills/stacks-marketing-product-marketing/LICENSE +21 -0
- package/ai/skills/stacks-marketing-product-marketing/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-product-marketing/PLAYBOOK.md +255 -0
- package/ai/skills/stacks-marketing-product-marketing/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-product-marketing/evals/evals.json +98 -0
- package/ai/skills/stacks-marketing-programmatic-seo/LICENSE +21 -0
- package/ai/skills/stacks-marketing-programmatic-seo/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-programmatic-seo/PLAYBOOK.md +238 -0
- package/ai/skills/stacks-marketing-programmatic-seo/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-programmatic-seo/evals/evals.json +107 -0
- package/ai/skills/stacks-marketing-programmatic-seo/references/implementation-platforms.md +41 -0
- package/ai/skills/stacks-marketing-programmatic-seo/references/playbooks.md +308 -0
- package/ai/skills/stacks-marketing-prospecting/LICENSE +21 -0
- package/ai/skills/stacks-marketing-prospecting/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-prospecting/PLAYBOOK.md +273 -0
- package/ai/skills/stacks-marketing-prospecting/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-prospecting/evals/evals.json +163 -0
- package/ai/skills/stacks-marketing-prospecting/references/account-research.md +59 -0
- package/ai/skills/stacks-marketing-prospecting/references/b2b-prospecting.md +106 -0
- package/ai/skills/stacks-marketing-prospecting/references/compliance.md +161 -0
- package/ai/skills/stacks-marketing-prospecting/references/data-sources.md +300 -0
- package/ai/skills/stacks-marketing-prospecting/references/demand-signals.md +131 -0
- package/ai/skills/stacks-marketing-prospecting/references/enrichment-playbook.md +61 -0
- package/ai/skills/stacks-marketing-prospecting/references/local-prospecting.md +165 -0
- package/ai/skills/stacks-marketing-prospecting/references/saas-prospecting.md +123 -0
- package/ai/skills/stacks-marketing-prospecting/references/signal-plays.md +99 -0
- package/ai/skills/stacks-marketing-prospecting/references/sourcing-and-enrichment.md +89 -0
- package/ai/skills/stacks-marketing-psychology/LICENSE +21 -0
- package/ai/skills/stacks-marketing-psychology/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-psychology/PLAYBOOK.md +451 -0
- package/ai/skills/stacks-marketing-psychology/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-psychology/evals/evals.json +88 -0
- package/ai/skills/stacks-marketing-public-relations/LICENSE +21 -0
- package/ai/skills/stacks-marketing-public-relations/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-public-relations/PLAYBOOK.md +150 -0
- package/ai/skills/stacks-marketing-public-relations/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-public-relations/evals/evals.json +36 -0
- package/ai/skills/stacks-marketing-public-relations/references/crisis-communications.md +113 -0
- package/ai/skills/stacks-marketing-public-relations/references/journalist-pitching.md +368 -0
- package/ai/skills/stacks-marketing-public-relations/references/media-outlets.md +207 -0
- package/ai/skills/stacks-marketing-public-relations/references/newsjacking.md +220 -0
- package/ai/skills/stacks-marketing-public-relations/references/podcast-guest-prep.md +60 -0
- package/ai/skills/stacks-marketing-public-relations/references/press-platforms.md +188 -0
- package/ai/skills/stacks-marketing-public-relations/references/statement-templates.md +145 -0
- package/ai/skills/stacks-marketing-public-relations/references/story-angles.md +87 -0
- package/ai/skills/stacks-marketing-referrals/LICENSE +21 -0
- package/ai/skills/stacks-marketing-referrals/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-referrals/PLAYBOOK.md +279 -0
- package/ai/skills/stacks-marketing-referrals/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-referrals/evals/evals.json +202 -0
- package/ai/skills/stacks-marketing-referrals/references/affiliate-operations.md +64 -0
- package/ai/skills/stacks-marketing-referrals/references/affiliate-programs.md +167 -0
- package/ai/skills/stacks-marketing-referrals/references/program-examples.md +151 -0
- package/ai/skills/stacks-marketing-referrals/references/review-platform-rules.md +36 -0
- package/ai/skills/stacks-marketing-referrals/references/review-program-operations.md +62 -0
- package/ai/skills/stacks-marketing-referrals/references/review-programs.md +96 -0
- package/ai/skills/stacks-marketing-referrals/references/viral-mechanisms.md +102 -0
- package/ai/skills/stacks-marketing-revops/LICENSE +21 -0
- package/ai/skills/stacks-marketing-revops/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-revops/PLAYBOOK.md +345 -0
- package/ai/skills/stacks-marketing-revops/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-revops/evals/evals.json +104 -0
- package/ai/skills/stacks-marketing-revops/references/automation-playbooks.md +290 -0
- package/ai/skills/stacks-marketing-revops/references/inbound-routing.md +43 -0
- package/ai/skills/stacks-marketing-revops/references/lifecycle-definitions.md +309 -0
- package/ai/skills/stacks-marketing-revops/references/routing-rules.md +203 -0
- package/ai/skills/stacks-marketing-revops/references/scoring-models.md +247 -0
- package/ai/skills/stacks-marketing-sales-enablement/LICENSE +21 -0
- package/ai/skills/stacks-marketing-sales-enablement/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-sales-enablement/PLAYBOOK.md +423 -0
- package/ai/skills/stacks-marketing-sales-enablement/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-sales-enablement/evals/evals.json +153 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/cold-call-scripts.md +68 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/deck-frameworks.md +263 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/demo-scripts.md +355 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/objection-library.md +270 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/one-pager-templates.md +208 -0
- package/ai/skills/stacks-marketing-sales-enablement/references/win-loss-analysis.md +72 -0
- package/ai/skills/stacks-marketing-schema/LICENSE +21 -0
- package/ai/skills/stacks-marketing-schema/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-schema/PLAYBOOK.md +187 -0
- package/ai/skills/stacks-marketing-schema/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-schema/evals/evals.json +127 -0
- package/ai/skills/stacks-marketing-schema/references/schema-examples.md +392 -0
- package/ai/skills/stacks-marketing-seo-audit/LICENSE +21 -0
- package/ai/skills/stacks-marketing-seo-audit/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-seo-audit/PLAYBOOK.md +492 -0
- package/ai/skills/stacks-marketing-seo-audit/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-seo-audit/evals/evals.json +204 -0
- package/ai/skills/stacks-marketing-seo-audit/references/ai-writing-detection.md +200 -0
- package/ai/skills/stacks-marketing-seo-audit/references/international-seo.md +228 -0
- package/ai/skills/stacks-marketing-seo-audit/references/local-seo-pages-and-measurement.md +39 -0
- package/ai/skills/stacks-marketing-seo-audit/references/local-seo-profile-and-citations.md +41 -0
- package/ai/skills/stacks-marketing-seo-audit/references/local-seo.md +86 -0
- package/ai/skills/stacks-marketing-seo-audit/references/rankings-push.md +62 -0
- package/ai/skills/stacks-marketing-seo-audit/references/title-tags.md +89 -0
- package/ai/skills/stacks-marketing-signup/LICENSE +21 -0
- package/ai/skills/stacks-marketing-signup/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-signup/PLAYBOOK.md +359 -0
- package/ai/skills/stacks-marketing-signup/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-signup/evals/evals.json +88 -0
- package/ai/skills/stacks-marketing-site-architecture/LICENSE +21 -0
- package/ai/skills/stacks-marketing-site-architecture/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-site-architecture/PLAYBOOK.md +355 -0
- package/ai/skills/stacks-marketing-site-architecture/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-site-architecture/evals/evals.json +113 -0
- package/ai/skills/stacks-marketing-site-architecture/references/mermaid-templates.md +216 -0
- package/ai/skills/stacks-marketing-site-architecture/references/navigation-patterns.md +305 -0
- package/ai/skills/stacks-marketing-site-architecture/references/platforms-and-migration.md +86 -0
- package/ai/skills/stacks-marketing-site-architecture/references/site-type-templates.md +293 -0
- package/ai/skills/stacks-marketing-sms/LICENSE +21 -0
- package/ai/skills/stacks-marketing-sms/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-sms/PLAYBOOK.md +348 -0
- package/ai/skills/stacks-marketing-sms/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-sms/evals/evals.json +118 -0
- package/ai/skills/stacks-marketing-sms/references/compliance.md +202 -0
- package/ai/skills/stacks-marketing-sms/references/platforms.md +318 -0
- package/ai/skills/stacks-marketing-sms/references/sequence-templates.md +282 -0
- package/ai/skills/stacks-marketing-sms/references/whatsapp.md +260 -0
- package/ai/skills/stacks-marketing-social/LICENSE +21 -0
- package/ai/skills/stacks-marketing-social/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-social/PLAYBOOK.md +452 -0
- package/ai/skills/stacks-marketing-social/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-social/evals/evals.json +150 -0
- package/ai/skills/stacks-marketing-social/references/carousel-frameworks.md +141 -0
- package/ai/skills/stacks-marketing-social/references/listening-sources-template.md +123 -0
- package/ai/skills/stacks-marketing-social/references/listening.md +288 -0
- package/ai/skills/stacks-marketing-social/references/platform-limits.md +110 -0
- package/ai/skills/stacks-marketing-social/references/platforms.md +176 -0
- package/ai/skills/stacks-marketing-social/references/post-templates.md +179 -0
- package/ai/skills/stacks-marketing-social/references/reverse-engineering.md +195 -0
- package/ai/skills/stacks-marketing-social/references/short-form-video.md +237 -0
- package/ai/skills/stacks-marketing-social/references/x-algorithm.md +69 -0
- package/ai/skills/stacks-marketing-video/LICENSE +21 -0
- package/ai/skills/stacks-marketing-video/NOTICE.md +13 -0
- package/ai/skills/stacks-marketing-video/PLAYBOOK.md +330 -0
- package/ai/skills/stacks-marketing-video/SKILL.md +30 -0
- package/ai/skills/stacks-marketing-video/evals/evals.json +118 -0
- package/ai/skills/stacks-marketing-video/references/ai-video-prompting.md +175 -0
- package/ai/skills/stacks-marketing-video/references/edit-anatomy.md +86 -0
- package/ai/skills/stacks-marketing-video/references/product-demo-recording.md +176 -0
- package/ai/skills/stacks-middleware/SKILL.md +37 -21
- package/ai/skills/stacks-migrations/SKILL.md +29 -5
- package/ai/skills/stacks-mobile/SKILL.md +25 -4
- package/ai/skills/stacks-models/SKILL.md +35 -15
- package/ai/skills/stacks-models/references/model-capabilities.md +104 -0
- package/ai/skills/stacks-native/CAPABILITIES.md +536 -0
- package/ai/skills/stacks-native/CATALOG.md +930 -0
- package/ai/skills/stacks-native/RECIPES.md +108 -0
- package/ai/skills/stacks-native/SKILL.md +79 -0
- package/ai/skills/stacks-newsletter/SKILL.md +39 -0
- package/ai/skills/stacks-notifications/SKILL.md +118 -203
- package/ai/skills/stacks-objects/SKILL.md +18 -4
- package/ai/skills/stacks-orm/SKILL.md +112 -328
- package/ai/skills/stacks-pagination/SKILL.md +40 -0
- package/ai/skills/stacks-path/SKILL.md +38 -18
- package/ai/skills/stacks-payments/SKILL.md +9 -1
- package/ai/skills/stacks-pr/CREDITS.md +3 -0
- package/ai/skills/stacks-pr/LICENSE +21 -0
- package/ai/skills/stacks-pr/NOTICE.md +10 -0
- package/ai/skills/stacks-pr/PLAYBOOK.md +127 -0
- package/ai/skills/stacks-pr/SKILL.md +23 -0
- package/ai/skills/stacks-prototype/LICENSE +21 -0
- package/ai/skills/stacks-prototype/NOTICE.md +10 -0
- package/ai/skills/stacks-prototype/SKILL.md +6 -0
- package/ai/skills/stacks-push/SKILL.md +20 -0
- package/ai/skills/stacks-query-builder/SKILL.md +21 -5
- package/ai/skills/stacks-queue/DURABLE-WORKFLOWS.md +121 -0
- package/ai/skills/stacks-queue/SKILL.md +37 -6
- package/ai/skills/stacks-realtime/SKILL.md +29 -140
- package/ai/skills/stacks-redesign/SKILL.md +1 -1
- package/ai/skills/stacks-registry/SKILL.md +20 -48
- package/ai/skills/stacks-repl/SKILL.md +31 -7
- package/ai/skills/stacks-research/LICENSE +21 -0
- package/ai/skills/stacks-research/NOTICE.md +10 -0
- package/ai/skills/stacks-research/PLAYBOOK.md +10 -0
- package/ai/skills/stacks-research/SKILL.md +23 -0
- package/ai/skills/stacks-retro/LICENSE +21 -0
- package/ai/skills/stacks-retro/NOTICE.md +10 -0
- package/ai/skills/stacks-retro/SKILL.md +10 -0
- package/ai/skills/stacks-review/LICENSE +21 -0
- package/ai/skills/stacks-review/NOTICE.md +10 -0
- package/ai/skills/stacks-review/SKILL.md +15 -0
- package/ai/skills/stacks-router/SKILL.md +33 -2
- package/ai/skills/stacks-routes/SKILL.md +25 -2
- package/ai/skills/stacks-scaffold-exercises/LICENSE +21 -0
- package/ai/skills/stacks-scaffold-exercises/NOTICE.md +10 -0
- package/ai/skills/stacks-scaffold-exercises/PLAYBOOK.md +106 -0
- package/ai/skills/stacks-scaffold-exercises/SKILL.md +23 -0
- package/ai/skills/stacks-scaffolding/SKILL.md +27 -11
- package/ai/skills/stacks-scheduler/SKILL.md +52 -25
- package/ai/skills/stacks-search-engine/SKILL.md +28 -7
- package/ai/skills/stacks-security/SKILL.md +22 -6
- package/ai/skills/stacks-server/SKILL.md +47 -85
- package/ai/skills/stacks-setup-deep-modules/LICENSE +21 -0
- package/ai/skills/stacks-setup-deep-modules/NOTICE.md +10 -0
- package/ai/skills/stacks-setup-deep-modules/SKILL.md +55 -0
- package/ai/skills/stacks-setup-engineering/LICENSE +21 -0
- package/ai/skills/stacks-setup-engineering/NOTICE.md +10 -0
- package/ai/skills/stacks-setup-engineering/PLAYBOOK.md +115 -0
- package/ai/skills/stacks-setup-engineering/SKILL.md +24 -0
- package/ai/skills/stacks-setup-engineering/domain.md +51 -0
- package/ai/skills/stacks-setup-engineering/issue-tracker-github.md +46 -0
- package/ai/skills/stacks-setup-engineering/issue-tracker-gitlab.md +46 -0
- package/ai/skills/stacks-setup-engineering/issue-tracker-local.md +30 -0
- package/ai/skills/stacks-setup-engineering/triage-labels.md +15 -0
- package/ai/skills/stacks-sites/SKILL.md +44 -0
- package/ai/skills/stacks-skills/SKILL.md +33 -0
- package/ai/skills/stacks-slug/SKILL.md +15 -12
- package/ai/skills/stacks-sms/SKILL.md +33 -6
- package/ai/skills/stacks-socials/SKILL.md +81 -294
- package/ai/skills/stacks-storage/SKILL.md +34 -15
- package/ai/skills/stacks-storage/UPLOADS-AND-DISKS.md +133 -0
- package/ai/skills/stacks-strings/SKILL.md +41 -35
- package/ai/skills/stacks-stx/SKILL.md +63 -58
- package/ai/skills/stacks-tdd/LICENSE +21 -0
- package/ai/skills/stacks-tdd/NOTICE.md +10 -0
- package/ai/skills/stacks-tdd/SKILL.md +10 -0
- package/ai/skills/stacks-tdd/mocking.md +59 -0
- package/ai/skills/stacks-tdd/tests.md +77 -0
- package/ai/skills/stacks-teach/GLOSSARY-FORMAT.md +35 -0
- package/ai/skills/stacks-teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/ai/skills/stacks-teach/LICENSE +21 -0
- package/ai/skills/stacks-teach/MISSION-FORMAT.md +31 -0
- package/ai/skills/stacks-teach/NOTICE.md +10 -0
- package/ai/skills/stacks-teach/PLAYBOOK.md +136 -0
- package/ai/skills/stacks-teach/RESOURCES-FORMAT.md +32 -0
- package/ai/skills/stacks-teach/SKILL.md +24 -0
- package/ai/skills/stacks-technical-diagrams/SKILL.md +2 -2
- package/ai/skills/stacks-technical-diagrams/bin/diagrams +1 -1
- package/ai/skills/stacks-technical-diagrams/renderers/shared/bun-runtime.mjs +1 -1
- package/ai/skills/stacks-test-fixtures/LICENSE +21 -0
- package/ai/skills/stacks-test-fixtures/NOTICE.md +10 -0
- package/ai/skills/stacks-test-fixtures/SKILL.md +38 -0
- package/ai/skills/stacks-testing/SKILL.md +77 -4
- package/ai/skills/stacks-to-questionnaire/LICENSE +21 -0
- package/ai/skills/stacks-to-questionnaire/NOTICE.md +10 -0
- package/ai/skills/stacks-to-questionnaire/PLAYBOOK.md +51 -0
- package/ai/skills/stacks-to-questionnaire/SKILL.md +24 -0
- package/ai/skills/stacks-to-spec/LICENSE +21 -0
- package/ai/skills/stacks-to-spec/NOTICE.md +10 -0
- package/ai/skills/stacks-to-spec/PLAYBOOK.md +72 -0
- package/ai/skills/stacks-to-spec/SKILL.md +24 -0
- package/ai/skills/stacks-to-tickets/LICENSE +21 -0
- package/ai/skills/stacks-to-tickets/NOTICE.md +10 -0
- package/ai/skills/stacks-to-tickets/PLAYBOOK.md +102 -0
- package/ai/skills/stacks-to-tickets/SKILL.md +24 -0
- package/ai/skills/stacks-triage/AGENT-BRIEF.md +207 -0
- package/ai/skills/stacks-triage/LICENSE +21 -0
- package/ai/skills/stacks-triage/NOTICE.md +10 -0
- package/ai/skills/stacks-triage/OUT-OF-SCOPE.md +105 -0
- package/ai/skills/stacks-triage/PLAYBOOK.md +109 -0
- package/ai/skills/stacks-triage/SKILL.md +24 -0
- package/ai/skills/stacks-tunnel/SKILL.md +29 -19
- package/ai/skills/stacks-types/SKILL.md +77 -168
- package/ai/skills/stacks-ui/SKILL.md +66 -228
- package/ai/skills/stacks-unslop/NOTICE.md +25 -0
- package/ai/skills/stacks-unslop/SKILL.md +95 -0
- package/ai/skills/stacks-unslop/references/core-contract.md +88 -0
- package/ai/skills/stacks-unslop/references/patterns.md +110 -0
- package/ai/skills/stacks-unslop/references/presets.md +37 -0
- package/ai/skills/stacks-unslop/references/voice.md +95 -0
- package/ai/skills/stacks-utils/SKILL.md +45 -25
- package/ai/skills/stacks-validation/SKILL.md +67 -4
- package/ai/skills/stacks-video/SKILL.md +33 -0
- package/ai/skills/stacks-wait-what/LICENSE +21 -0
- package/ai/skills/stacks-wait-what/NOTICE.md +10 -0
- package/ai/skills/stacks-wait-what/PLAYBOOK.md +4 -0
- package/ai/skills/stacks-wait-what/SKILL.md +24 -0
- package/ai/skills/stacks-wayfinder/LICENSE +21 -0
- package/ai/skills/stacks-wayfinder/NOTICE.md +10 -0
- package/ai/skills/stacks-wayfinder/PLAYBOOK.md +125 -0
- package/ai/skills/stacks-wayfinder/SKILL.md +24 -0
- package/ai/skills/stacks-whois/SKILL.md +13 -3
- package/ai/skills/stacks-wizard/LICENSE +21 -0
- package/ai/skills/stacks-wizard/NOTICE.md +10 -0
- package/ai/skills/stacks-wizard/SKILL.md +8 -0
- package/ai/skills/stacks-wizard/scripts/template.sh +42 -26
- package/ai/skills/stacks-writing-beats/LICENSE +21 -0
- package/ai/skills/stacks-writing-beats/NOTICE.md +10 -0
- package/ai/skills/stacks-writing-beats/PLAYBOOK.md +64 -0
- package/ai/skills/stacks-writing-beats/SKILL.md +28 -0
- package/ai/skills/stacks-writing-for-agents/LICENSE +21 -0
- package/ai/skills/stacks-writing-for-agents/NOTICE.md +10 -0
- package/ai/skills/stacks-writing-for-agents/SKILL.md +7 -1
- package/ai/skills/stacks-writing-fragments/LICENSE +21 -0
- package/ai/skills/stacks-writing-fragments/NOTICE.md +10 -0
- package/ai/skills/stacks-writing-fragments/PLAYBOOK.md +76 -0
- package/ai/skills/stacks-writing-fragments/SKILL.md +28 -0
- package/ai/skills/stacks-writing-shape/LICENSE +21 -0
- package/ai/skills/stacks-writing-shape/NOTICE.md +10 -0
- package/ai/skills/stacks-writing-shape/PLAYBOOK.md +76 -0
- package/ai/skills/stacks-writing-shape/SKILL.md +28 -0
- package/ide/vscode/package.json +1 -1
- package/package.json +2 -2
- /package/ai/skills/stacks-technical-diagrams/{bunfig.toml → runtime.toml} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: stacks-calendar
|
|
3
|
-
description: Use when
|
|
3
|
+
description: Use when exporting calendar links or ICS bodies, building subscribable event feeds, or expanding supported recurrence rules. Covers @stacksjs/calendar-api.
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: Bun >= 1.3.0, TypeScript
|
|
6
6
|
allowed-tools: Read Edit Write Bash Grep Glob
|
|
@@ -8,106 +8,70 @@ allowed-tools: Read Edit Write Bash Grep Glob
|
|
|
8
8
|
|
|
9
9
|
# Stacks Calendar
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Use `@stacksjs/calendar-api` for add-to-calendar links, downloadable ICS,
|
|
12
|
+
subscribable feeds and the supported server-side recurrence subset. A calendar
|
|
13
|
+
export is different from a scheduler task or a provider calendar CRUD API.
|
|
12
14
|
|
|
13
|
-
##
|
|
14
|
-
- Core package: `storage/framework/core/calendar-api/src/`
|
|
15
|
-
- Package: `@stacksjs/calendar-api`
|
|
15
|
+
## Single-event links and files
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
~~~ts
|
|
18
|
+
import { exportCalendarGoogle, exportCalendarIcs, exportCalendarIcsBody } from '@stacksjs/calendar-api'
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const event: CalendarLink = {
|
|
23
|
-
title: 'Team Meeting',
|
|
20
|
+
const event = {
|
|
21
|
+
title: 'Team meeting',
|
|
24
22
|
description: 'Weekly standup',
|
|
25
|
-
from: new Date('
|
|
26
|
-
to: new Date('
|
|
27
|
-
address: '123 Main St, City',
|
|
23
|
+
from: new Date('2026-10-12T17:00:00Z'),
|
|
24
|
+
to: new Date('2026-10-12T18:00:00Z'),
|
|
28
25
|
timezone: 'America/New_York',
|
|
29
|
-
allDay: false
|
|
26
|
+
allDay: false,
|
|
30
27
|
}
|
|
31
|
-
|
|
32
|
-
// Generate URLs
|
|
33
28
|
const googleUrl = exportCalendarGoogle(event)
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
interface WeekDates { month: number, date: number }
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## All-Day Events
|
|
87
|
-
|
|
88
|
-
```typescript
|
|
89
|
-
const allDayEvent: CalendarLink = {
|
|
90
|
-
title: 'Company Holiday',
|
|
91
|
-
from: new Date('2024-12-25'),
|
|
92
|
-
to: new Date('2024-12-25'),
|
|
93
|
-
allDay: true // only date matters, no time component
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## Format Differences
|
|
98
|
-
|
|
99
|
-
| Feature | Google | ICS | Outlook | Yahoo |
|
|
100
|
-
|---------|--------|-----|---------|-------|
|
|
101
|
-
| URL-based | Yes | No (file) | Yes | Yes |
|
|
102
|
-
| Timezone | URL param | VTIMEZONE | URL param | URL param |
|
|
103
|
-
| All-day | Date only | DATE value | isAllDay=true | st= format |
|
|
104
|
-
| Description | details= | DESCRIPTION | body= | desc= |
|
|
105
|
-
|
|
106
|
-
## Gotchas
|
|
107
|
-
- Note package name is `@stacksjs/calendar-api` (not `@stacksjs/calendar`)
|
|
108
|
-
- ICS export returns file content (not a URL) — serve as `.ics` download
|
|
109
|
-
- All-day events use date-only format, ignoring time components
|
|
110
|
-
- Timezone handling varies by provider — ICS includes VTIMEZONE block
|
|
111
|
-
- Google Calendar uses UTC format in URLs
|
|
112
|
-
- For task scheduling (cron), use `@stacksjs/scheduler` instead
|
|
113
|
-
- ICS generates a unique UID per event for calendar deduplication
|
|
29
|
+
const downloadUrl = exportCalendarIcs(event)
|
|
30
|
+
const fileBody = exportCalendarIcsBody(event)
|
|
31
|
+
~~~
|
|
32
|
+
|
|
33
|
+
Google/Outlook/Yahoo exports return provider compose URLs. exportCalendarIcs
|
|
34
|
+
returns a base64 data URL for an anchor; exportCalendarIcsBody returns raw
|
|
35
|
+
text/calendar for a route or mail attachment. Do not serve the data URL string
|
|
36
|
+
as if it were an ICS file. The single-event CalendarLink source type has from/to,
|
|
37
|
+
title, required allDay and optional description/address/timezone; the root entry
|
|
38
|
+
does not re-export that type. Infer a literal or read src/types.ts when extending
|
|
39
|
+
the package.
|
|
40
|
+
|
|
41
|
+
The older single-event generator has its own timezone/time-format rules and
|
|
42
|
+
does not emit a VTIMEZONE block. Its UID derives from event timing/title, so
|
|
43
|
+
editing those changes the UID. Do not promise subscription update semantics
|
|
44
|
+
from a generated single-event link. Prefer the feed builder for stable records,
|
|
45
|
+
escaping and folded lines.
|
|
46
|
+
|
|
47
|
+
## Native subscribable feeds
|
|
48
|
+
|
|
49
|
+
buildCalendarFeed({ name, events, timezone?, refreshInterval?, prodId? }) returns
|
|
50
|
+
a complete VCALENDAR body. Use calendarFeedHeaders for the response and an
|
|
51
|
+
authorized route for private calendars. CalendarFeedEvent has a stable uid,
|
|
52
|
+
title/start/end plus optional allDay/description/location/url/rrule/sequence/
|
|
53
|
+
updatedAt. Keep uid stable, increment sequence and update updatedAt on edits.
|
|
54
|
+
|
|
55
|
+
The builder escapes ICS text and folds UTF-8 lines. Times are UTC; timezone is
|
|
56
|
+
advisory calendar metadata. All-day feed end dates are inclusive input, converted
|
|
57
|
+
to exclusive DTEND. Individual client refresh cadence is outside the framework's
|
|
58
|
+
control, even when the feed declares a suggested interval.
|
|
59
|
+
|
|
60
|
+
## Recurrence
|
|
61
|
+
|
|
62
|
+
parseRRule(value) returns RecurrenceRule or null for unsupported frequency.
|
|
63
|
+
expandRecurrence(rule, dtstart, windowStart, windowEnd) returns matching UTC
|
|
64
|
+
start instants, capped defensively. Supported fields include DAILY/WEEKLY/
|
|
65
|
+
MONTHLY/YEARLY, INTERVAL, COUNT, UNTIL, BYDAY and BYMONTHDAY. This is a subset;
|
|
66
|
+
unknown fields are not a proof of full RFC conformance. Callers own timezone
|
|
67
|
+
interpretation and DST policy. Calendar clients can expand a feed's raw rrule
|
|
68
|
+
independently from the server subset.
|
|
69
|
+
|
|
70
|
+
## Sources and evidence
|
|
71
|
+
|
|
72
|
+
`storage/framework/core/calendar-api/src/index.ts`, types.ts, feed.ts,
|
|
73
|
+
recurrence.ts and generators/ own the contracts. Retained tests:
|
|
74
|
+
core/calendar-api/tests/calendar.test.ts and feed-recurrence.test.ts.
|
|
75
|
+
For scheduled application work use stacks-scheduler; for a calendar extension's
|
|
76
|
+
models/dashboard use its installed package metadata, not a fictional calendar
|
|
77
|
+
API in this small export package.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: stacks-charts
|
|
3
|
+
description: Use when rendering native dashboard charts, configuring scales or tooltips, or managing canvas chart lifecycle. Covers @stacksjs/charts and its Chart.js-compatible subset.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Bun >= 1.3.0, TypeScript
|
|
6
|
+
allowed-tools: Read Edit Write Bash Grep Glob
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Native charts
|
|
10
|
+
|
|
11
|
+
Import Chart from @stacksjs/charts. The package supplies a canvas renderer over
|
|
12
|
+
ts-charts primitives with a compatibility-shaped configuration. It is not a
|
|
13
|
+
promise of complete Chart.js plugin, animation or chart-type parity.
|
|
14
|
+
|
|
15
|
+
## Lifecycle and supported behavior
|
|
16
|
+
|
|
17
|
+
Mount a chart once its canvas is available; update data/options and call update,
|
|
18
|
+
then destroy it when the view is removed. Use stx refs and lifecycle helpers
|
|
19
|
+
rather than global DOM lookups in a template. Keep dimensions and device pixel
|
|
20
|
+
ratio under the renderer's sizing contract to avoid compounding canvas resize.
|
|
21
|
+
|
|
22
|
+
Line, bar, pie and doughnut have their native rendering paths. Radar currently
|
|
23
|
+
falls back to a line layout. Advanced animation/plugin options are not a full
|
|
24
|
+
implementation; inspect the chosen option before promising a visual effect.
|
|
25
|
+
Chart.register/registerables are compatibility shims, not a third-party plugin
|
|
26
|
+
registry. Scales, legend, colors, ticks and tooltip callbacks have native helpers.
|
|
27
|
+
|
|
28
|
+
Read ChartConfig/ChartData/ChartOptions from the package types and reuse the
|
|
29
|
+
dashboard's established chart integration. Test zero/negative values, sizing,
|
|
30
|
+
dual axes where used, updates and destruction. Provide meaningful accessible
|
|
31
|
+
text or tabular data alongside a canvas chart.
|
|
32
|
+
|
|
33
|
+
Source: core/charts/src/{chart,types,colors,ticks,sizing}.ts. Retained tests:
|
|
34
|
+
scales.test.ts, ticks.test.ts and sizing.test.ts.
|
|
@@ -438,13 +438,29 @@ All three drivers implement `sendWithRetry()`:
|
|
|
438
438
|
|
|
439
439
|
## Gotchas
|
|
440
440
|
- The default driver for `send()` is `'slack'`, not auto-detected
|
|
441
|
-
-
|
|
441
|
+
- Slack and Discord support webhook or bot-token sends; Teams uses its Workflows webhook
|
|
442
442
|
- Slack bot token mode uses `https://slack.com/api/chat.postMessage`, not a webhook
|
|
443
443
|
- Discord webhook returns `204` on success with no body -- this is handled as success
|
|
444
444
|
- Discord bot token mode uses `message.to` as the channel ID
|
|
445
445
|
- Teams accepts only Workflows webhook URLs; the retired `webhook.office.com` connectors are refused
|
|
446
446
|
- Teams uses `message.to` as fallback webhook URL if `config.webhookUrl` is not set
|
|
447
|
-
-
|
|
447
|
+
- Slack supports mrkdwn; Discord embeds and Teams Adaptive Cards use their own provider payloads
|
|
448
|
+
|
|
449
|
+
## Results and native notification integration
|
|
450
|
+
|
|
451
|
+
Direct send returns ChatResult, with success false for a handled provider failure;
|
|
452
|
+
inspect it before persisting sent state. Awaiting a send only proves the promise
|
|
453
|
+
settled. Webhook configuration does not replace ChatMessage's to/content or
|
|
454
|
+
template fields. The generic notify chat channel supplies a body-only shape and
|
|
455
|
+
does not normalize every structured transport failure, so use this package's
|
|
456
|
+
direct API when application behavior depends on valid chat delivery.
|
|
457
|
+
|
|
458
|
+
Settings resolve per send after app config readiness, with explicit configure
|
|
459
|
+
overrides taking precedence. Retained request/config coverage lives under
|
|
460
|
+
`storage/framework/core/chat/tests/`; it is distinct from live workspace
|
|
461
|
+
delivery evidence. Inbox reads/archive operations use separate provider grants
|
|
462
|
+
and optional native controllers; sending credentials do not automatically grant
|
|
463
|
+
those operations.
|
|
448
464
|
- Block Kit blocks are only built when `message.template` is set (Slack) or when `message.subject`/`message.template` is set (Discord/Teams)
|
|
449
465
|
- `validateMessage()` requires both `to` and either `content` or `template`
|
|
450
466
|
- The `handle()` callback runs before `onSuccess()` -- both results are merged
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Matt Pocock
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Source and license
|
|
2
|
+
|
|
3
|
+
The upstream MIT notice is preserved in [LICENSE](LICENSE).
|
|
4
|
+
|
|
5
|
+
## chief-of-staff
|
|
6
|
+
|
|
7
|
+
Source: [skills/in-progress/chief-of-staff/SKILL.md](https://github.com/mattpocock/skills/blob/49dd158d1076134a641b33efb035946536778336/skills/in-progress/chief-of-staff/SKILL.md),
|
|
8
|
+
revision `49dd158d1076134a641b33efb035946536778336`. This workflow is in progress upstream.
|
|
9
|
+
|
|
10
|
+
Ported with Stacks skill names, canonical guidance, local-tracker fallback, TypeScript/Bun tooling, and conditional external actions.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
> Adapted playbook. Read [the Stacks rules](../stacks-flow/ENGINEERING.md) first. Commit, push, publish, and tracker mutations are conditional on the user's authorization.
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
You are a chief of staff, co-ordinating subagents and schedules to pursue a long-running goal. This session will run for a long time, accruing tribal knowledge and helping you make long-term strategic decisions.
|
|
5
|
+
|
|
6
|
+
You are the Directly Responsible Individual for this goal. You are empowered to think much longer-term than you're used to. You must think on two tracks simultaneously:
|
|
7
|
+
|
|
8
|
+
- Tactical: how do I complete the immediate task?
|
|
9
|
+
- Strategic: how do I modify the environment to improve the outcomes of the _next_ task?
|
|
10
|
+
|
|
11
|
+
## Schedules
|
|
12
|
+
|
|
13
|
+
Harness-permitting, you will suggest recurring schedules which can help in achieving the goal.
|
|
14
|
+
|
|
15
|
+
## Subagents
|
|
16
|
+
|
|
17
|
+
All work should be done in subagents. Protect your context window.
|
|
18
|
+
|
|
19
|
+
Use background agents so you can stay in active dialogue with the user.
|
|
20
|
+
|
|
21
|
+
Communication to and from subagents should be sparse. Communicate primarily through **context pointers**: research notes, previous commits, and others. Don't duplicate information already available via pointers.
|
|
22
|
+
|
|
23
|
+
## Strategic View
|
|
24
|
+
|
|
25
|
+
As part of any and all work, FIRST consider how the environment the agents operate in might be improved. Agents thrive in the **pit of success**:
|
|
26
|
+
|
|
27
|
+
- API's and functions which are extremely constrained and limited
|
|
28
|
+
- Lint rules which force correctness
|
|
29
|
+
- CODING_STANDARDS.md files which let code reviewers enforce best practices
|
|
30
|
+
|
|
31
|
+
They also need relevant **data sources** to succeed:
|
|
32
|
+
|
|
33
|
+
- Logs from critical running processes, like dev servers (or production logs)
|
|
34
|
+
- Access to test environment databases
|
|
35
|
+
- Access to the browser (when necessary) for clicking around and taking screenshots
|
|
36
|
+
|
|
37
|
+
Finally, create environments (and codebases) that obey the **"no workarounds"** rule:
|
|
38
|
+
|
|
39
|
+
- No one-off workarounds, or hacks that bypass established processes
|
|
40
|
+
- Any deviations from conventions must be fixed proactively, before feature work is done
|
|
41
|
+
|
|
42
|
+
Be relentless in improving the environment. Use every user message as an excuse to search for these improvements.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: stacks-chief-of-staff
|
|
3
|
+
description: Pursue a long-running goal in a single session by co-ordinating subagents. Covers Stacks engineering workflows.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
license: MIT
|
|
6
|
+
compatibility: Bun >= 1.3.0, TypeScript
|
|
7
|
+
allowed-tools: Read Edit Write Bash Grep Glob
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Chief Of Staff
|
|
11
|
+
|
|
12
|
+
Read [the Stacks adaptation rules](../stacks-flow/ENGINEERING.md), then
|
|
13
|
+
[PLAYBOOK.md](PLAYBOOK.md). The playbook preserves this workflow's decision
|
|
14
|
+
criteria; the Stacks rules govern APIs, tooling, tracking, and authorization.
|
|
15
|
+
|
|
16
|
+
Credit: adapted from Matt Pocock's `chief-of-staff` skill, MIT licensed.
|
|
17
|
+
See [NOTICE.md](NOTICE.md) and [LICENSE](LICENSE).
|
|
18
|
+
|
|
19
|
+
This source is in upstream's in-progress collection. Use it explicitly as an
|
|
20
|
+
optional workflow; do not install tooling or start background work merely
|
|
21
|
+
because the skill is present.
|
|
22
|
+
|
|
23
|
+
## Completion
|
|
24
|
+
|
|
25
|
+
Produce the requested behavior or reviewable artifact and satisfy the
|
|
26
|
+
playbook's completion criteria. Preserve existing decisions and user edits.
|
|
27
|
+
Use the native Stacks skills for implementation and verification, and carry
|
|
28
|
+
existing authorization through the workflow.
|
|
@@ -97,9 +97,9 @@ export default defineCommands({
|
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
### Registration Methods
|
|
100
|
-
1. **Drop a file in `app/Commands/`**
|
|
101
|
-
2. **Event listeners**
|
|
102
|
-
3. **`app/Commands.ts`**
|
|
100
|
+
1. **Drop a file in `app/Commands/`** - auto-discovered, nothing else to do
|
|
101
|
+
2. **Event listeners** - CLI events in `app/Listeners/Console.ts`
|
|
102
|
+
3. **`app/Commands.ts`** - optional, for ordering / aliases / disabling
|
|
103
103
|
|
|
104
104
|
## CLI Event Listeners
|
|
105
105
|
|
|
@@ -111,7 +111,7 @@ export default function(cli: CLI) {
|
|
|
111
111
|
})
|
|
112
112
|
|
|
113
113
|
cli.on('my:*', () => {
|
|
114
|
-
// Wildcard
|
|
114
|
+
// Wildcard - matches my:anything
|
|
115
115
|
})
|
|
116
116
|
|
|
117
117
|
cli.on('unknown:!', () => {
|
|
@@ -145,7 +145,7 @@ console.log(dim('Subtle info'))
|
|
|
145
145
|
```
|
|
146
146
|
|
|
147
147
|
## CLI Commands
|
|
148
|
-
- `buddy make:command [name]`
|
|
148
|
+
- `buddy make:command [name]` - scaffold a new command
|
|
149
149
|
|
|
150
150
|
## Compiled Binaries
|
|
151
151
|
|
|
@@ -158,7 +158,23 @@ buddy build:cli # build CLI binary
|
|
|
158
158
|
- Application commands go in `app/Commands/`, framework commands in `storage/framework/core/buddy/src/commands/`
|
|
159
159
|
- Commands are auto-discovered from `app/Commands/`; `app/Commands.ts` is optional and additive
|
|
160
160
|
- CLI events support wildcards (`*`) and default handlers (`!`)
|
|
161
|
-
- The buddy CLI lazy-loads commands
|
|
161
|
+
- The buddy CLI lazy-loads commands - not all load at startup
|
|
162
162
|
- Output formatting uses ANSI colors from `@stacksjs/utils`
|
|
163
163
|
- Custom CLIs can be compiled to platform-specific binaries
|
|
164
|
-
- The CLI framework is separate from buddy
|
|
164
|
+
- The CLI framework is separate from buddy - buddy uses it internally
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
## Native terminal primitives
|
|
168
|
+
|
|
169
|
+
The public `@stacksjs/cli` entry re-exports table, progress, tasks, note,
|
|
170
|
+
getTerminalSize and isInteractive from `core/cli/src/terminal.ts`. Import
|
|
171
|
+
dump/dd/echo from `@stacksjs/logging`, where those debug helpers live. Read their
|
|
172
|
+
options/types before building a new terminal formatter or adding another CLI
|
|
173
|
+
dependency. Commands can also use the native prompt, spinner, exec and signal
|
|
174
|
+
helpers from the same package. A command file is discovered recursively; its
|
|
175
|
+
handler's argument order comes from defineCommand, not a copied CAC action shape.
|
|
176
|
+
|
|
177
|
+
Source evidence: `storage/framework/core/cli/src/index.ts`,
|
|
178
|
+
`commands.ts` and `terminal.ts`; command discovery is owned by buddy's
|
|
179
|
+
runtime registry. `buddy list` and `buddy <command> --help` are the
|
|
180
|
+
authoritative command/flag inventory, including package-contributed commands.
|
|
@@ -8,7 +8,7 @@ allowed-tools: Read Edit Write Bash Grep Glob
|
|
|
8
8
|
|
|
9
9
|
# Stacks Cloud & Deployment
|
|
10
10
|
|
|
11
|
-
Cloud infrastructure for Stacks, across
|
|
11
|
+
Cloud infrastructure for Stacks, across provider-specific deploy targets, all driven through
|
|
12
12
|
`@stacksjs/ts-cloud`.
|
|
13
13
|
|
|
14
14
|
## Targets
|
|
@@ -204,7 +204,7 @@ export default [
|
|
|
204
204
|
instance: 't3.micro',
|
|
205
205
|
disk: 20, // GB
|
|
206
206
|
os: 'ubuntu-20-lts-x86_64',
|
|
207
|
-
bun: '1.
|
|
207
|
+
bun: '1.3.0', // use the project's required/installed release
|
|
208
208
|
database: { type: 'sqlite', name: 'stacks' }
|
|
209
209
|
},
|
|
210
210
|
// ... more servers
|
|
@@ -247,26 +247,25 @@ buddy domains:remove <domain> # remove domain
|
|
|
247
247
|
|
|
248
248
|
## config/cloud.ts
|
|
249
249
|
|
|
250
|
-
|
|
251
|
-
{
|
|
250
|
+
~~~ts
|
|
251
|
+
import type { CloudConfig } from '@stacksjs/types'
|
|
252
|
+
import type { CloudConfig as TsCloudConfig } from '@stacksjs/ts-cloud'
|
|
253
|
+
|
|
254
|
+
export const tsCloud: TsCloudConfig = {
|
|
252
255
|
project: { name: 'my-app', slug: 'my-app', region: 'us-east-1' },
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
production: { domain: 'app.com', region: 'us-east-1' },
|
|
256
|
-
staging: { domain: 'staging.app.com' }
|
|
257
|
-
},
|
|
258
|
-
infrastructure: {
|
|
259
|
-
compute: { type: 't3.micro', spot: false },
|
|
260
|
-
loadBalancer: { enabled: true, type: 'application' },
|
|
261
|
-
ssl: { enabled: true },
|
|
262
|
-
dns: { provider: 'route53' },
|
|
263
|
-
storage: { buckets: [] },
|
|
264
|
-
cdn: { enabled: true },
|
|
265
|
-
cache: { enabled: false },
|
|
266
|
-
queue: { enabled: false }
|
|
267
|
-
}
|
|
256
|
+
cloud: { provider: 'hetzner' },
|
|
257
|
+
mode: 'server',
|
|
268
258
|
}
|
|
269
|
-
|
|
259
|
+
|
|
260
|
+
const config: CloudConfig = { tenants: ['attached-project'] }
|
|
261
|
+
export default config
|
|
262
|
+
~~~
|
|
263
|
+
|
|
264
|
+
Extend the named tsCloud object using its typed sites, environments and
|
|
265
|
+
infrastructure options. The default Stacks wrapper holds surrounding settings
|
|
266
|
+
such as tenant isolation. Provider configuration does not belong at an invented
|
|
267
|
+
flat provider property. Preserve each site's gateway domains/path declarations
|
|
268
|
+
when changing shared-box config.
|
|
270
269
|
|
|
271
270
|
## Infrastructure Stack (storage/framework/cloud/)
|
|
272
271
|
|
|
@@ -301,3 +300,21 @@ Stack naming: `{slugified-app-name}-cloud`
|
|
|
301
300
|
- Environment mapping: `local` → `development`, others preserved
|
|
302
301
|
- Deploy hooks run before/after deployment for custom logic
|
|
303
302
|
- The cloud package has its own `package.json` with framework dependencies
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
## Configuration and provider evidence
|
|
306
|
+
|
|
307
|
+
The named `tsCloud` export in `config/cloud.ts` owns the provider and
|
|
308
|
+
infrastructure options; the default export is Stacks' surrounding cloud config.
|
|
309
|
+
The short infrastructure examples above show concepts, not a substitute for the
|
|
310
|
+
installed TsCloudConfig type. Refer to that file and the provider's implementation
|
|
311
|
+
before copying a server definition, mode or storage schema.
|
|
312
|
+
|
|
313
|
+
Fly.io is another native deploy branch (Docker registry image and leased Machines),
|
|
314
|
+
documented in `stacks-deploy`. The capability matrix at
|
|
315
|
+
`core/config/src/capabilities.ts` only retains experimental Hetzner/SSH
|
|
316
|
+
deploy contracts. Provider availability is separate from live conformance and
|
|
317
|
+
rollback evidence; no registry entry should be invented to make the table look
|
|
318
|
+
complete. Serverless resources, realtime topology and application queue drivers
|
|
319
|
+
each have their own runtime contract. Provisioned infrastructure does not
|
|
320
|
+
automatically wire the corresponding application adapter.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Block documents and public CMS pages
|
|
2
|
+
|
|
3
|
+
The root `@stacksjs/cms` entry exports this surface alongside the legacy
|
|
4
|
+
posts/authors/tags/comments namespace. Page documents are site-scoped; resolve
|
|
5
|
+
the site's identity once at the route boundary and pass it explicitly.
|
|
6
|
+
|
|
7
|
+
## Authoring a document
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
import { createPageDocument, registerDefaultBlocks } from '@stacksjs/cms'
|
|
11
|
+
|
|
12
|
+
registerDefaultBlocks()
|
|
13
|
+
const page = await createPageDocument(siteId, {
|
|
14
|
+
title: 'About us',
|
|
15
|
+
slug: 'about',
|
|
16
|
+
blocks: [],
|
|
17
|
+
status: 'draft',
|
|
18
|
+
})
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`SavePageDocumentInput` carries title, slug, parentId, template, blocks,
|
|
22
|
+
metaDescription, status, scheduledAt, authorId and note. `slug: '/'` creates
|
|
23
|
+
a root page. Child paths derive from the parent; path collisions are resolved
|
|
24
|
+
within the site. An empty document is valid, but a block type must be registered
|
|
25
|
+
before it is accepted. `fetchPageDocument(siteId, pageId)` returns the editable
|
|
26
|
+
parsed document or null.
|
|
27
|
+
|
|
28
|
+
`defineBlock` and `registerBlocks` define the type/schema/template registry.
|
|
29
|
+
Application registrations can replace a default type. `validateBlocks` rejects
|
|
30
|
+
unknown types, unknown props, missing required props and invalid values; it
|
|
31
|
+
returns either validated blocks or structured errors. `parseStoredBlocks` is
|
|
32
|
+
a defensive storage reader, not a substitute for write-time validation.
|
|
33
|
+
|
|
34
|
+
## Updates, revisions and redirects
|
|
35
|
+
|
|
36
|
+
`updatePageDocument(siteId, pageId, input)` validates blocks, snapshots the old
|
|
37
|
+
document as a revision, recomputes changed paths, moves descendant paths and
|
|
38
|
+
records redirects for old paths. Supply the complete intended document fields;
|
|
39
|
+
do not assume every optional field behaves like a sparse PATCH. Invalid input
|
|
40
|
+
raises `PageDocumentError` with status 422. A cross-site page id is refused.
|
|
41
|
+
|
|
42
|
+
`fetchRevisions`, `storeRevision` and `restoreRevision` support history. A
|
|
43
|
+
restore is itself undoable. `recordSlugChangeRedirects` and `resolveRedirect`
|
|
44
|
+
provide the redirect layer. Route ids and CMS paths are distinct identifiers.
|
|
45
|
+
|
|
46
|
+
## Publish, render and navigate
|
|
47
|
+
|
|
48
|
+
Statuses are draft, published, scheduled and archived. `publishDuePages`
|
|
49
|
+
publishes due scheduled rows; schedule that operation in an enabled scheduler
|
|
50
|
+
instead of assuming a scheduled_at value wakes a worker by itself.
|
|
51
|
+
|
|
52
|
+
`resolvePublishedPage(siteId, path)` resolves published content and normalizes
|
|
53
|
+
a trailing slash. Draft/scheduled rows are invisible. `renderCmsPage` renders
|
|
54
|
+
registered block templates, `sanitizeRichText` constrains editorial markup,
|
|
55
|
+
and `cmsPageFallback`/`cmsNotFoundFallback` integrate with public serving.
|
|
56
|
+
Existing coded views win over CMS fallback content. A page row is not a wildcard
|
|
57
|
+
override of every application route.
|
|
58
|
+
|
|
59
|
+
`fetchMenuTree` resolves page links to current paths and omits unpublished
|
|
60
|
+
page links. Menus, redirects, revisions and page models all participate in CMS
|
|
61
|
+
feature migration ownership. Public reads follow host-resolved sites; admin
|
|
62
|
+
editing follows authenticated ownership, not an ambient public site guess.
|
|
63
|
+
|
|
64
|
+
## Source and evidence
|
|
65
|
+
|
|
66
|
+
Read `storage/framework/core/cms/src/pages/document.ts`, `blocks/registry.ts`,
|
|
67
|
+
`public/resolve.ts`, `public/fallback.ts`, `publish/`, `menus/`, `revisions/`
|
|
68
|
+
and `redirects/`. Retained tests are `src/tests/pages-document.test.ts`,
|
|
69
|
+
`pages-crud.test.ts` and `public-serving.test.ts`, including tenant isolation,
|
|
70
|
+
redirect flattening, document validation and real STX serving precedence.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: stacks-cms
|
|
3
|
-
description: Use when working with
|
|
3
|
+
description: Use when working with Stacks CMS posts, authors, block-document pages, revisions, menus, redirects, scheduled publishing, blog feeds, or public page serving. Covers @stacksjs/cms, site-scoped CMS models, routes, and actions.
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: Bun >= 1.3.0, TypeScript
|
|
6
6
|
allowed-tools: Read Edit Write Bash Grep Glob
|
|
@@ -19,7 +19,7 @@ allowed-tools: Read Edit Write Bash Grep Glob
|
|
|
19
19
|
## Source Files
|
|
20
20
|
```
|
|
21
21
|
cms/src/
|
|
22
|
-
├── index.ts # CmsNamespace
|
|
22
|
+
├── index.ts # CmsNamespace - top-level API
|
|
23
23
|
├── posts/
|
|
24
24
|
│ ├── fetch.ts # fetchById, fetchAll, fetchByStatus, fetchByCategory, fetchByAuthor
|
|
25
25
|
│ ├── store.ts # store, attach, detach, sync (pivot tables)
|
|
@@ -41,6 +41,12 @@ cms/src/
|
|
|
41
41
|
|
|
42
42
|
## CMS Namespace
|
|
43
43
|
|
|
44
|
+
Enable/install the CMS feature through its supported lifecycle, then generate
|
|
45
|
+
and review migrations for changed models. The legacy posts/authors/pages
|
|
46
|
+
namespace below coexists with the document-page exports described in
|
|
47
|
+
[PAGES.md](PAGES.md). For a real page editor or public CMS fallback, start with
|
|
48
|
+
the validated document APIs rather than raw `pages` column writes.
|
|
49
|
+
|
|
44
50
|
```typescript
|
|
45
51
|
interface CmsNamespace {
|
|
46
52
|
posts: PostsModule
|
|
@@ -61,14 +67,14 @@ interface CmsNamespace {
|
|
|
61
67
|
|
|
62
68
|
| Field | Type | Validation | Default |
|
|
63
69
|
|-------|------|------------|---------|
|
|
64
|
-
| title | string | required, 3-255 chars |
|
|
65
|
-
| content | string | required, 10-1000 chars |
|
|
66
|
-
| excerpt | string | optional, 10-500 chars |
|
|
67
|
-
| poster | string | optional, valid URL |
|
|
68
|
-
| views | number |
|
|
69
|
-
| publishedAt | timestamp | optional |
|
|
70
|
+
| title | string | required, 3-255 chars | - |
|
|
71
|
+
| content | string | required, 10-1000 chars | - |
|
|
72
|
+
| excerpt | string | optional, 10-500 chars | - |
|
|
73
|
+
| poster | string | optional, valid URL | - |
|
|
74
|
+
| views | number | - | 0 |
|
|
75
|
+
| publishedAt | timestamp | optional | - |
|
|
70
76
|
| status | enum | published/draft/archived | draft |
|
|
71
|
-
| isFeatured | number | 0 or 1 |
|
|
77
|
+
| isFeatured | number | 0 or 1 | - |
|
|
72
78
|
|
|
73
79
|
### Author
|
|
74
80
|
- **Table**: `authors`, **Relationships**: `hasMany(['Post'])`, `belongsTo(['User'])`
|
|
@@ -241,12 +247,18 @@ Tune the look with custom properties (`--me-radius`, `--me-gap`, `--me-block-spa
|
|
|
241
247
|
| `categorizable_models` | Polymorphic pivot: category ↔ model |
|
|
242
248
|
|
|
243
249
|
## Gotchas
|
|
244
|
-
-
|
|
245
|
-
-
|
|
246
|
-
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
- **
|
|
251
|
-
- **
|
|
252
|
-
- **
|
|
250
|
+
- CMS document pages are scoped to an explicit site id. Pair them with
|
|
251
|
+
`stacks-sites`; background work has no implicit request site.
|
|
252
|
+
- CMS post categories use `categorizables`. The Post model's
|
|
253
|
+
`belongsToMany(Category)` currently resolves commerce `categories`, a separate
|
|
254
|
+
id space (tracked in #2584). Use the CMS categorization module for CMS ids;
|
|
255
|
+
do not treat that relationship as an interchangeable alias.
|
|
256
|
+
- **Polymorphic relations** - categories, tags, and comments use `*_type` fields to support multiple model types
|
|
257
|
+
- **Post `content` maps from `body`** - the model attribute is `content` but the DB column mapping comes from `body`
|
|
258
|
+
- **Author uses findOrCreate** - `PostStoreAction` auto-creates authors if they don't exist
|
|
259
|
+
- **Post store auto-attaches** - creating a post with category/tag data automatically calls `attach()` on pivot tables
|
|
260
|
+
- **Post update uses sync** - updating categories/tags uses `sync()` (detaches removed, attaches new)
|
|
261
|
+
- **Views increment is atomic** - `PATCH /cms/posts/{id}/views` increments by 1
|
|
262
|
+
- **RSS returns 20 items** - hardcoded to 20 most recent published posts
|
|
263
|
+
- **Sitemap priorities** - posts 0.8, categories 0.6, blog homepage 0.9
|
|
264
|
+
- **Comment status flow** - starts `pending`, can be approved, rejected (→ spam), or trashed
|