luckiest-co 1.0.1 → 1.0.3
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/.claude-plugin/marketplace.json +16 -0
- package/.claude-plugin/plugin.json +1 -1
- package/LICENSE +24 -0
- package/bin/install.js +6 -4
- package/commands/{luckiest/finish.md → finish.md} +2 -0
- package/commands/go.md +53 -0
- package/commands/plan.md +66 -0
- package/package.json +3 -2
- package/skills/brainstorm/ATTRIBUTION.md +27 -0
- package/skills/brainstorm/SKILL.md +139 -0
- package/skills/luckiest-ab-testing/ATTRIBUTION.md +35 -0
- package/skills/luckiest-ab-testing/CHANGELOG.md +27 -0
- package/skills/luckiest-ab-testing/SKILL.md +379 -0
- package/skills/luckiest-ab-testing/evals/evals.json +118 -0
- package/skills/luckiest-ab-testing/references/sample-size-guide.md +290 -0
- package/skills/luckiest-ab-testing/references/test-templates.md +284 -0
- package/skills/luckiest-ad-creative/ATTRIBUTION.md +35 -0
- package/skills/luckiest-ad-creative/CHANGELOG.md +23 -0
- package/skills/luckiest-ad-creative/SKILL.md +393 -0
- package/skills/luckiest-ad-creative/evals/evals.json +90 -0
- package/skills/luckiest-ad-creative/references/generative-tools.md +637 -0
- package/skills/luckiest-ad-creative/references/platform-specs.md +213 -0
- package/skills/luckiest-ads/ATTRIBUTION.md +36 -0
- package/skills/luckiest-ads/CHANGELOG.md +24 -0
- package/skills/luckiest-ads/LICENSE +21 -0
- package/skills/luckiest-ads/SKILL.md +434 -0
- package/skills/luckiest-ads/evals/evals.json +90 -0
- package/skills/luckiest-ads/references/ad-copy-templates.md +207 -0
- package/skills/luckiest-ads/references/audience-targeting.md +243 -0
- package/skills/luckiest-ads/references/conversion-tracking.md +361 -0
- package/skills/luckiest-ads/references/platform-setup-checklists.md +277 -0
- package/skills/luckiest-advisors/ATTRIBUTION.md +16 -0
- package/skills/luckiest-advisors/CHANGELOG.md +99 -0
- package/skills/luckiest-advisors/SKILL.md +151 -0
- package/skills/luckiest-aeo-grader/ATTRIBUTION.md +19 -0
- package/skills/luckiest-aeo-grader/CHANGELOG.md +52 -0
- package/skills/luckiest-aeo-grader/SKILL.md +200 -0
- package/skills/luckiest-aeo-grader/evals/evals.json +19 -0
- package/skills/luckiest-aeo-grader/references/rubric.md +72 -0
- package/skills/luckiest-aeo-grader/scripts/scan.py +265 -0
- package/skills/luckiest-ai-seo/ATTRIBUTION.md +38 -0
- package/skills/luckiest-ai-seo/CHANGELOG.md +23 -0
- package/skills/luckiest-ai-seo/SKILL.md +510 -0
- package/skills/luckiest-ai-seo/evals/evals.json +90 -0
- package/skills/luckiest-ai-seo/references/content-patterns.md +285 -0
- package/skills/luckiest-ai-seo/references/content-types.md +71 -0
- package/skills/luckiest-ai-seo/references/okf.md +104 -0
- package/skills/luckiest-ai-seo/references/platform-ranking-factors.md +154 -0
- package/skills/luckiest-analytics/ATTRIBUTION.md +42 -0
- package/skills/luckiest-analytics/CHANGELOG.md +36 -0
- package/skills/luckiest-analytics/SKILL.md +380 -0
- package/skills/luckiest-analytics/evals/evals.json +90 -0
- package/skills/luckiest-analytics/references/event-library.md +260 -0
- package/skills/luckiest-analytics/references/ga4-implementation.md +300 -0
- package/skills/luckiest-analytics/references/gtm-implementation.md +390 -0
- package/skills/luckiest-aso/ATTRIBUTION.md +40 -0
- package/skills/luckiest-aso/CHANGELOG.md +33 -0
- package/skills/luckiest-aso/SKILL.md +327 -0
- package/skills/luckiest-aso/evals/evals.json +91 -0
- package/skills/luckiest-aso/references/apple-specs.md +107 -0
- package/skills/luckiest-aso/references/benchmarks.md +129 -0
- package/skills/luckiest-aso/references/google-play-specs.md +131 -0
- package/skills/luckiest-aso/references/report-template.md +213 -0
- package/skills/luckiest-aso/references/scoring-criteria.md +213 -0
- package/skills/luckiest-churn-prevention/ATTRIBUTION.md +41 -0
- package/skills/luckiest-churn-prevention/CHANGELOG.md +24 -0
- package/skills/luckiest-churn-prevention/SKILL.md +445 -0
- package/skills/luckiest-churn-prevention/evals/evals.json +93 -0
- package/skills/luckiest-churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/skills/luckiest-churn-prevention/references/dunning-playbook.md +408 -0
- package/skills/luckiest-co-marketing/ATTRIBUTION.md +38 -0
- package/skills/luckiest-co-marketing/CHANGELOG.md +25 -0
- package/skills/luckiest-co-marketing/SKILL.md +331 -0
- package/skills/luckiest-co-marketing/evals/evals.json +84 -0
- package/skills/luckiest-coder/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder/CHANGELOG.md +30 -0
- package/skills/luckiest-coder/SKILL.md +77 -0
- package/skills/luckiest-coder/references/antigravity-tools.md +23 -0
- package/skills/luckiest-coder/references/codex-tools.md +39 -0
- package/skills/luckiest-coder/references/pi-tools.md +16 -0
- package/skills/luckiest-coder-brainstorming/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-brainstorming/CHANGELOG.md +31 -0
- package/skills/luckiest-coder-brainstorming/SKILL.md +173 -0
- package/skills/luckiest-coder-brainstorming/scripts/frame-template.html +213 -0
- package/skills/luckiest-coder-brainstorming/scripts/helper.js +168 -0
- package/skills/luckiest-coder-brainstorming/scripts/server.cjs +721 -0
- package/skills/luckiest-coder-brainstorming/scripts/start-server.sh +209 -0
- package/skills/luckiest-coder-brainstorming/scripts/stop-server.sh +120 -0
- package/skills/luckiest-coder-brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/skills/luckiest-coder-brainstorming/visual-companion.md +291 -0
- package/skills/luckiest-coder-consistency/ATTRIBUTION.md +30 -0
- package/skills/luckiest-coder-consistency/CHANGELOG.md +26 -0
- package/skills/luckiest-coder-consistency/SKILL.md +98 -0
- package/skills/luckiest-coder-constitution/ATTRIBUTION.md +28 -0
- package/skills/luckiest-coder-constitution/CHANGELOG.md +25 -0
- package/skills/luckiest-coder-constitution/SKILL.md +115 -0
- package/skills/luckiest-coder-debugging/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-debugging/CHANGELOG.md +22 -0
- package/skills/luckiest-coder-debugging/CREATION-LOG.md +119 -0
- package/skills/luckiest-coder-debugging/SKILL.md +309 -0
- package/skills/luckiest-coder-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/luckiest-coder-debugging/condition-based-waiting.md +115 -0
- package/skills/luckiest-coder-debugging/defense-in-depth.md +122 -0
- package/skills/luckiest-coder-debugging/find-polluter.sh +63 -0
- package/skills/luckiest-coder-debugging/root-cause-tracing.md +169 -0
- package/skills/luckiest-coder-debugging/test-academic.md +14 -0
- package/skills/luckiest-coder-debugging/test-pressure-1.md +58 -0
- package/skills/luckiest-coder-debugging/test-pressure-2.md +68 -0
- package/skills/luckiest-coder-debugging/test-pressure-3.md +69 -0
- package/skills/luckiest-coder-dispatching-parallel-agents/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-dispatching-parallel-agents/CHANGELOG.md +23 -0
- package/skills/luckiest-coder-dispatching-parallel-agents/SKILL.md +198 -0
- package/skills/luckiest-coder-executing-plans/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-executing-plans/CHANGELOG.md +22 -0
- package/skills/luckiest-coder-executing-plans/SKILL.md +83 -0
- package/skills/luckiest-coder-finishing-a-branch/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-finishing-a-branch/CHANGELOG.md +22 -0
- package/skills/luckiest-coder-finishing-a-branch/SKILL.md +258 -0
- package/skills/luckiest-coder-git-worktrees/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-git-worktrees/CHANGELOG.md +22 -0
- package/skills/luckiest-coder-git-worktrees/SKILL.md +215 -0
- package/skills/luckiest-coder-guard/ATTRIBUTION.md +29 -0
- package/skills/luckiest-coder-guard/CHANGELOG.md +48 -0
- package/skills/luckiest-coder-guard/LICENSE +21 -0
- package/skills/luckiest-coder-guard/SKILL.md +126 -0
- package/skills/luckiest-coder-guard/bin/check-careful.sh +65 -0
- package/skills/luckiest-coder-guard/bin/check-freeze.sh +48 -0
- package/skills/luckiest-coder-qa/ATTRIBUTION.md +28 -0
- package/skills/luckiest-coder-qa/CHANGELOG.md +49 -0
- package/skills/luckiest-coder-qa/LICENSE +21 -0
- package/skills/luckiest-coder-qa/SKILL.md +160 -0
- package/skills/luckiest-coder-qa/references/issue-taxonomy.md +85 -0
- package/skills/luckiest-coder-qa/references/qa-report-template.md +126 -0
- package/skills/luckiest-coder-receiving-code-review/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-receiving-code-review/CHANGELOG.md +28 -0
- package/skills/luckiest-coder-receiving-code-review/SKILL.md +226 -0
- package/skills/luckiest-coder-requesting-code-review/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-requesting-code-review/CHANGELOG.md +31 -0
- package/skills/luckiest-coder-requesting-code-review/SKILL.md +118 -0
- package/skills/luckiest-coder-requesting-code-review/code-reviewer.md +172 -0
- package/skills/luckiest-coder-shipping/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-shipping/CHANGELOG.md +48 -0
- package/skills/luckiest-coder-shipping/LICENSE +21 -0
- package/skills/luckiest-coder-shipping/SKILL.md +148 -0
- package/skills/luckiest-coder-shipping/references/canary.md +44 -0
- package/skills/luckiest-coder-shipping/references/test-and-coverage.md +91 -0
- package/skills/luckiest-coder-subagent-driven-development/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-subagent-driven-development/CHANGELOG.md +28 -0
- package/skills/luckiest-coder-subagent-driven-development/SKILL.md +439 -0
- package/skills/luckiest-coder-subagent-driven-development/implementer-prompt.md +139 -0
- package/skills/luckiest-coder-subagent-driven-development/scripts/review-package +44 -0
- package/skills/luckiest-coder-subagent-driven-development/scripts/sdd-workspace +22 -0
- package/skills/luckiest-coder-subagent-driven-development/scripts/task-brief +40 -0
- package/skills/luckiest-coder-subagent-driven-development/task-reviewer-prompt.md +188 -0
- package/skills/luckiest-coder-tdd/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-tdd/CHANGELOG.md +26 -0
- package/skills/luckiest-coder-tdd/SKILL.md +384 -0
- package/skills/luckiest-coder-tdd/testing-anti-patterns.md +299 -0
- package/skills/luckiest-coder-verification/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-verification/CHANGELOG.md +22 -0
- package/skills/luckiest-coder-verification/SKILL.md +152 -0
- package/skills/luckiest-coder-writing-plans/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-writing-plans/CHANGELOG.md +22 -0
- package/skills/luckiest-coder-writing-plans/SKILL.md +191 -0
- package/skills/luckiest-coder-writing-plans/plan-document-reviewer-prompt.md +49 -0
- package/skills/luckiest-coder-writing-skills/ATTRIBUTION.md +26 -0
- package/skills/luckiest-coder-writing-skills/CHANGELOG.md +31 -0
- package/skills/luckiest-coder-writing-skills/SKILL.md +702 -0
- package/skills/luckiest-coder-writing-skills/anthropic-best-practices.md +1150 -0
- package/skills/luckiest-coder-writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/luckiest-coder-writing-skills/graphviz-conventions.dot +172 -0
- package/skills/luckiest-coder-writing-skills/persuasion-principles.md +187 -0
- package/skills/luckiest-coder-writing-skills/render-graphs.js +168 -0
- package/skills/luckiest-coder-writing-skills/testing-skills-with-subagents.md +384 -0
- package/skills/luckiest-cold-email/ATTRIBUTION.md +36 -0
- package/skills/luckiest-cold-email/CHANGELOG.md +24 -0
- package/skills/luckiest-cold-email/SKILL.md +213 -0
- package/skills/luckiest-cold-email/evals/evals.json +94 -0
- package/skills/luckiest-cold-email/references/benchmarks.md +83 -0
- package/skills/luckiest-cold-email/references/follow-up-sequences.md +81 -0
- package/skills/luckiest-cold-email/references/frameworks.md +90 -0
- package/skills/luckiest-cold-email/references/personalization.md +79 -0
- package/skills/luckiest-cold-email/references/subject-lines.md +53 -0
- package/skills/luckiest-community-marketing/ATTRIBUTION.md +41 -0
- package/skills/luckiest-community-marketing/CHANGELOG.md +35 -0
- package/skills/luckiest-community-marketing/SKILL.md +200 -0
- package/skills/luckiest-community-marketing/evals/evals.json +89 -0
- package/skills/luckiest-competitor-profiling/ATTRIBUTION.md +36 -0
- package/skills/luckiest-competitor-profiling/CHANGELOG.md +24 -0
- package/skills/luckiest-competitor-profiling/SKILL.md +443 -0
- package/skills/luckiest-competitor-profiling/evals/evals.json +85 -0
- package/skills/luckiest-competitor-profiling/references/templates.md +167 -0
- package/skills/luckiest-competitor-profiling/references/tool-reference.md +179 -0
- package/skills/luckiest-competitors/ATTRIBUTION.md +36 -0
- package/skills/luckiest-competitors/CHANGELOG.md +25 -0
- package/skills/luckiest-competitors/SKILL.md +171 -0
- package/skills/luckiest-competitors/evals/evals.json +93 -0
- package/skills/luckiest-competitors/references/content-architecture.md +271 -0
- package/skills/luckiest-competitors/references/templates.md +223 -0
- package/skills/luckiest-content-strategy/ATTRIBUTION.md +39 -0
- package/skills/luckiest-content-strategy/CHANGELOG.md +23 -0
- package/skills/luckiest-content-strategy/SKILL.md +395 -0
- package/skills/luckiest-content-strategy/evals/evals.json +90 -0
- package/skills/luckiest-content-strategy/references/headless-cms.md +194 -0
- package/skills/luckiest-copy-editing/ATTRIBUTION.md +41 -0
- package/skills/luckiest-copy-editing/CHANGELOG.md +31 -0
- package/skills/luckiest-copy-editing/SKILL.md +491 -0
- package/skills/luckiest-copy-editing/evals/evals.json +89 -0
- package/skills/luckiest-copy-editing/references/checklist.md +66 -0
- package/skills/luckiest-copy-editing/references/content-refresh.md +38 -0
- package/skills/luckiest-copy-editing/references/plain-english-alternatives.md +394 -0
- package/skills/luckiest-copywriting/ATTRIBUTION.md +35 -0
- package/skills/luckiest-copywriting/CHANGELOG.md +23 -0
- package/skills/luckiest-copywriting/SKILL.md +296 -0
- package/skills/luckiest-copywriting/evals/evals.json +111 -0
- package/skills/luckiest-copywriting/references/copy-frameworks.md +344 -0
- package/skills/luckiest-copywriting/references/natural-transitions.md +272 -0
- package/skills/luckiest-cro/ATTRIBUTION.md +34 -0
- package/skills/luckiest-cro/CHANGELOG.md +23 -0
- package/skills/luckiest-cro/SKILL.md +215 -0
- package/skills/luckiest-cro/evals/evals.json +111 -0
- package/skills/luckiest-cro/references/experiments.md +248 -0
- package/skills/luckiest-cro/references/form.md +422 -0
- package/skills/luckiest-customer-research/ATTRIBUTION.md +40 -0
- package/skills/luckiest-customer-research/CHANGELOG.md +26 -0
- package/skills/luckiest-customer-research/SKILL.md +293 -0
- package/skills/luckiest-customer-research/evals/evals.json +162 -0
- package/skills/luckiest-customer-research/references/source-guides.md +401 -0
- package/skills/luckiest-directory-submissions/ATTRIBUTION.md +40 -0
- package/skills/luckiest-directory-submissions/CHANGELOG.md +33 -0
- package/skills/luckiest-directory-submissions/SKILL.md +419 -0
- package/skills/luckiest-directory-submissions/evals/evals.json +94 -0
- package/skills/luckiest-directory-submissions/references/directory-list.md +477 -0
- package/skills/luckiest-directory-submissions/references/positioning-variations.md +232 -0
- package/skills/luckiest-directory-submissions/references/submission-tracker-template.csv +266 -0
- package/skills/luckiest-emails/ATTRIBUTION.md +42 -0
- package/skills/luckiest-emails/CHANGELOG.md +33 -0
- package/skills/luckiest-emails/SKILL.md +220 -0
- package/skills/luckiest-emails/evals/evals.json +93 -0
- package/skills/luckiest-emails/references/copy-guidelines.md +120 -0
- package/skills/luckiest-emails/references/email-types.md +515 -0
- package/skills/luckiest-emails/references/sequence-templates.md +168 -0
- package/skills/luckiest-extract-design-system/ATTRIBUTION.md +8 -0
- package/skills/luckiest-extract-design-system/CHANGELOG.md +37 -0
- package/skills/luckiest-extract-design-system/SKILL.md +83 -0
- package/skills/luckiest-free-tools/ATTRIBUTION.md +43 -0
- package/skills/luckiest-free-tools/CHANGELOG.md +25 -0
- package/skills/luckiest-free-tools/SKILL.md +220 -0
- package/skills/luckiest-free-tools/evals/evals.json +90 -0
- package/skills/luckiest-free-tools/references/tool-types.md +217 -0
- package/skills/luckiest-image/ATTRIBUTION.md +43 -0
- package/skills/luckiest-image/CHANGELOG.md +23 -0
- package/skills/luckiest-image/SKILL.md +376 -0
- package/skills/luckiest-image/evals/evals.json +89 -0
- package/skills/luckiest-image/references/ai-image-prompting.md +229 -0
- package/skills/luckiest-launch/ATTRIBUTION.md +40 -0
- package/skills/luckiest-launch/CHANGELOG.md +43 -0
- package/skills/luckiest-launch/SKILL.md +385 -0
- package/skills/luckiest-launch/evals/evals.json +91 -0
- package/skills/luckiest-lead-magnets/ATTRIBUTION.md +35 -0
- package/skills/luckiest-lead-magnets/CHANGELOG.md +23 -0
- package/skills/luckiest-lead-magnets/SKILL.md +331 -0
- package/skills/luckiest-lead-magnets/evals/evals.json +87 -0
- package/skills/luckiest-lead-magnets/references/benchmarks.md +129 -0
- package/skills/luckiest-lead-magnets/references/format-guide.md +196 -0
- package/skills/luckiest-marketing-ideas/ATTRIBUTION.md +39 -0
- package/skills/luckiest-marketing-ideas/CHANGELOG.md +33 -0
- package/skills/luckiest-marketing-ideas/SKILL.md +191 -0
- package/skills/luckiest-marketing-ideas/evals/evals.json +90 -0
- package/skills/luckiest-marketing-ideas/references/ideas-by-category.md +366 -0
- package/skills/luckiest-marketing-plan/ATTRIBUTION.md +40 -0
- package/skills/luckiest-marketing-plan/CHANGELOG.md +23 -0
- package/skills/luckiest-marketing-plan/SKILL.md +285 -0
- package/skills/luckiest-marketing-plan/evals/evals.json +96 -0
- package/skills/luckiest-marketing-plan/references/aarrr-framework.md +180 -0
- package/skills/luckiest-marketing-plan/references/budget-planning.md +168 -0
- package/skills/luckiest-marketing-plan/references/client-types.md +373 -0
- package/skills/luckiest-marketing-plan/references/current-state-rubric.md +255 -0
- package/skills/luckiest-marketing-plan/references/example-quietude.md +972 -0
- package/skills/luckiest-marketing-plan/references/funding-stage-unlocks.md +230 -0
- package/skills/luckiest-marketing-plan/references/growth-patterns.md +148 -0
- package/skills/luckiest-marketing-plan/references/idea-cross-reference.md +265 -0
- package/skills/luckiest-marketing-plan/references/measurement-framework.md +213 -0
- package/skills/luckiest-marketing-plan/references/methodology.md +363 -0
- package/skills/luckiest-marketing-plan/references/ops-stack-mapping.md +197 -0
- package/skills/luckiest-marketing-plan/references/plan-template.md +494 -0
- package/skills/luckiest-marketing-plan/references/team-and-agency-model.md +278 -0
- package/skills/luckiest-marketing-psychology/ATTRIBUTION.md +31 -0
- package/skills/luckiest-marketing-psychology/CHANGELOG.md +32 -0
- package/skills/luckiest-marketing-psychology/SKILL.md +202 -0
- package/skills/luckiest-marketing-psychology/evals.json +88 -0
- package/skills/luckiest-model-router/ATTRIBUTION.md +11 -0
- package/skills/luckiest-model-router/CHANGELOG.md +45 -0
- package/skills/luckiest-model-router/SKILL.md +74 -0
- package/skills/luckiest-model-router/scripts/route.py +145 -0
- package/skills/luckiest-offers/ATTRIBUTION.md +39 -0
- package/skills/luckiest-offers/CHANGELOG.md +23 -0
- package/skills/luckiest-offers/SKILL.md +167 -0
- package/skills/luckiest-offers/references/bonus-stacking.md +150 -0
- package/skills/luckiest-offers/references/examples.md +215 -0
- package/skills/luckiest-offers/references/guarantee-design.md +172 -0
- package/skills/luckiest-offers/references/offer-anatomy.md +203 -0
- package/skills/luckiest-offers/references/offer-formats.md +240 -0
- package/skills/luckiest-offers/references/scarcity-urgency.md +175 -0
- package/skills/luckiest-offers/references/value-equation.md +134 -0
- package/skills/luckiest-onboarding/ATTRIBUTION.md +43 -0
- package/skills/luckiest-onboarding/CHANGELOG.md +31 -0
- package/skills/luckiest-onboarding/SKILL.md +243 -0
- package/skills/luckiest-onboarding/references/experiments.md +258 -0
- package/skills/luckiest-paywalls/ATTRIBUTION.md +39 -0
- package/skills/luckiest-paywalls/CHANGELOG.md +25 -0
- package/skills/luckiest-paywalls/SKILL.md +256 -0
- package/skills/luckiest-paywalls/evals/evals.json +93 -0
- package/skills/luckiest-paywalls/references/experiments.md +164 -0
- package/skills/luckiest-popups/ATTRIBUTION.md +35 -0
- package/skills/luckiest-popups/CHANGELOG.md +27 -0
- package/skills/luckiest-popups/SKILL.md +477 -0
- package/skills/luckiest-popups/evals/evals.json +107 -0
- package/skills/luckiest-pricing/ATTRIBUTION.md +35 -0
- package/skills/luckiest-pricing/CHANGELOG.md +31 -0
- package/skills/luckiest-pricing/SKILL.md +283 -0
- package/skills/luckiest-pricing/evals/evals.json +90 -0
- package/skills/luckiest-pricing/references/research-methods.md +152 -0
- package/skills/luckiest-pricing/references/tier-structure.md +232 -0
- package/skills/luckiest-product-marketing/ATTRIBUTION.md +38 -0
- package/skills/luckiest-product-marketing/CHANGELOG.md +23 -0
- package/skills/luckiest-product-marketing/SKILL.md +256 -0
- package/skills/luckiest-product-marketing/evals/evals.json +85 -0
- package/skills/luckiest-programmatic-seo/ATTRIBUTION.md +35 -0
- package/skills/luckiest-programmatic-seo/CHANGELOG.md +24 -0
- package/skills/luckiest-programmatic-seo/SKILL.md +286 -0
- package/skills/luckiest-programmatic-seo/evals/evals.json +95 -0
- package/skills/luckiest-programmatic-seo/references/playbooks.md +308 -0
- package/skills/luckiest-prompt-rewrite/ATTRIBUTION.md +39 -0
- package/skills/luckiest-prompt-rewrite/CHANGELOG.md +70 -0
- package/skills/luckiest-prompt-rewrite/LICENSE +21 -0
- package/skills/luckiest-prompt-rewrite/SKILL.md +494 -0
- package/skills/luckiest-prompt-rewrite/references/patterns.md +82 -0
- package/skills/luckiest-prompt-rewrite/references/templates.md +454 -0
- package/skills/luckiest-prospecting/ATTRIBUTION.md +29 -0
- package/skills/luckiest-prospecting/CHANGELOG.md +24 -0
- package/skills/luckiest-prospecting/SKILL.md +275 -0
- package/skills/luckiest-prospecting/evals/evals.json +107 -0
- package/skills/luckiest-prospecting/references/b2b-prospecting.md +106 -0
- package/skills/luckiest-prospecting/references/compliance.md +123 -0
- package/skills/luckiest-prospecting/references/data-sources.md +287 -0
- package/skills/luckiest-prospecting/references/local-prospecting.md +165 -0
- package/skills/luckiest-prospecting/references/saas-prospecting.md +123 -0
- package/skills/luckiest-public-relations/ATTRIBUTION.md +34 -0
- package/skills/luckiest-public-relations/CHANGELOG.md +23 -0
- package/skills/luckiest-public-relations/SKILL.md +154 -0
- package/skills/luckiest-public-relations/references/journalist-pitching.md +368 -0
- package/skills/luckiest-public-relations/references/media-outlets.md +207 -0
- package/skills/luckiest-public-relations/references/newsjacking.md +218 -0
- package/skills/luckiest-public-relations/references/press-platforms.md +188 -0
- package/skills/luckiest-referrals/ATTRIBUTION.md +41 -0
- package/skills/luckiest-referrals/CHANGELOG.md +23 -0
- package/skills/luckiest-referrals/SKILL.md +292 -0
- package/skills/luckiest-referrals/evals/evals.json +90 -0
- package/skills/luckiest-referrals/references/affiliate-programs.md +167 -0
- package/skills/luckiest-referrals/references/program-examples.md +143 -0
- package/skills/luckiest-revops/ATTRIBUTION.md +40 -0
- package/skills/luckiest-revops/CHANGELOG.md +24 -0
- package/skills/luckiest-revops/SKILL.md +362 -0
- package/skills/luckiest-revops/evals/evals.json +91 -0
- package/skills/luckiest-revops/references/automation-playbooks.md +290 -0
- package/skills/luckiest-revops/references/lifecycle-definitions.md +278 -0
- package/skills/luckiest-revops/references/routing-rules.md +203 -0
- package/skills/luckiest-revops/references/scoring-models.md +247 -0
- package/skills/luckiest-sales-enablement/ATTRIBUTION.md +39 -0
- package/skills/luckiest-sales-enablement/CHANGELOG.md +23 -0
- package/skills/luckiest-sales-enablement/SKILL.md +379 -0
- package/skills/luckiest-sales-enablement/evals/evals.json +91 -0
- package/skills/luckiest-sales-enablement/references/deck-frameworks.md +263 -0
- package/skills/luckiest-sales-enablement/references/demo-scripts.md +355 -0
- package/skills/luckiest-sales-enablement/references/objection-library.md +270 -0
- package/skills/luckiest-sales-enablement/references/one-pager-templates.md +208 -0
- package/skills/luckiest-schema/ATTRIBUTION.md +39 -0
- package/skills/luckiest-schema/CHANGELOG.md +25 -0
- package/skills/luckiest-schema/SKILL.md +209 -0
- package/skills/luckiest-schema/evals/evals.json +88 -0
- package/skills/luckiest-schema/references/schema-examples.md +398 -0
- package/skills/luckiest-seo-audit/ATTRIBUTION.md +39 -0
- package/skills/luckiest-seo-audit/CHANGELOG.md +23 -0
- package/skills/luckiest-seo-audit/SKILL.md +529 -0
- package/skills/luckiest-seo-audit/evals/evals.json +136 -0
- package/skills/luckiest-seo-audit/references/ai-writing-detection.md +200 -0
- package/skills/luckiest-seo-audit/references/international-seo.md +230 -0
- package/skills/luckiest-session-handoff/ATTRIBUTION.md +14 -0
- package/skills/luckiest-session-handoff/CHANGELOG.md +30 -0
- package/skills/luckiest-session-handoff/SKILL.md +96 -0
- package/skills/luckiest-signup/ATTRIBUTION.md +48 -0
- package/skills/luckiest-signup/CHANGELOG.md +24 -0
- package/skills/luckiest-signup/SKILL.md +382 -0
- package/skills/luckiest-signup/evals/evals.json +88 -0
- package/skills/luckiest-site-architecture/ATTRIBUTION.md +38 -0
- package/skills/luckiest-site-architecture/CHANGELOG.md +23 -0
- package/skills/luckiest-site-architecture/SKILL.md +383 -0
- package/skills/luckiest-site-architecture/evals/evals.json +88 -0
- package/skills/luckiest-site-architecture/references/mermaid-templates.md +216 -0
- package/skills/luckiest-site-architecture/references/navigation-patterns.md +305 -0
- package/skills/luckiest-site-architecture/references/site-type-templates.md +293 -0
- package/skills/luckiest-sms/ATTRIBUTION.md +27 -0
- package/skills/luckiest-sms/CHANGELOG.md +24 -0
- package/skills/luckiest-sms/SKILL.md +400 -0
- package/skills/luckiest-sms/evals/evals.json +100 -0
- package/skills/luckiest-sms/references/compliance.md +202 -0
- package/skills/luckiest-sms/references/platforms.md +318 -0
- package/skills/luckiest-sms/references/sequence-templates.md +282 -0
- package/skills/luckiest-social/ATTRIBUTION.md +27 -0
- package/skills/luckiest-social/CHANGELOG.md +24 -0
- package/skills/luckiest-social/SKILL.md +430 -0
- package/skills/luckiest-social/evals/evals.json +92 -0
- package/skills/luckiest-social/references/listening-sources-template.md +123 -0
- package/skills/luckiest-social/references/listening.md +283 -0
- package/skills/luckiest-social/references/platform-limits.md +110 -0
- package/skills/luckiest-social/references/platforms.md +170 -0
- package/skills/luckiest-social/references/post-templates.md +177 -0
- package/skills/luckiest-social/references/reverse-engineering.md +195 -0
- package/skills/luckiest-social/references/short-form-video.md +237 -0
- package/skills/luckiest-thinker/ATTRIBUTION.md +16 -0
- package/skills/luckiest-thinker/CHANGELOG.md +20 -0
- package/skills/luckiest-thinker/LICENSE +21 -0
- package/skills/luckiest-thinker/SKILL.md +92 -0
- package/skills/luckiest-thinker/references/distribution-calibration.md +106 -0
- package/skills/luckiest-thinker/references/research-foundations.md +214 -0
- package/skills/luckiest-thinker/references/thinking-patterns.md +138 -0
- package/skills/luckiest-trends/.skillignore +10 -0
- package/skills/luckiest-trends/ATTRIBUTION.md +43 -0
- package/skills/luckiest-trends/CHANGELOG.md +86 -0
- package/skills/luckiest-trends/LICENSE +21 -0
- package/skills/luckiest-trends/SKILL.md +194 -0
- package/skills/luckiest-trends/agents/openai.yaml +8 -0
- package/skills/luckiest-trends/references/engine-contract.md +2041 -0
- package/skills/luckiest-trends/references/save-html-brief.md +206 -0
- package/skills/luckiest-trends/scripts/briefing.py +272 -0
- package/skills/luckiest-trends/scripts/build-skill.sh +39 -0
- package/skills/luckiest-trends/scripts/compare.sh +61 -0
- package/skills/luckiest-trends/scripts/evaluate_search_quality.py +573 -0
- package/skills/luckiest-trends/scripts/last30days.py +1467 -0
- package/skills/luckiest-trends/scripts/lib/__init__.py +1 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/__init__.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/arxiv.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/bird_x.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/bluesky.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/categories.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/cjk.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/cluster.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/dates.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/dedupe.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/digg.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/entity_extract.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/env.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/fusion.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/github.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/grounding.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/hackernews.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/hiring_signals.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/html_render.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/http.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/instagram.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/jobs.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/linkedin.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/log.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/normalize.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/permission_preflight.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/perplexity.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/pinterest.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/pipeline.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/planner.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/polymarket.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/preflight.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/providers.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/quality_nudge.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/query.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/reddit.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/reddit_arctic.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/reddit_enrich.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/reddit_keyless.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/reddit_listing.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/reddit_public.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/reddit_rss.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/reddit_shreddit.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/relevance.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/render.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/rerank.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/resolve.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/schema.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/signals.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/skill_meta.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/snippet.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/subproc.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/techmeme.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/threads.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/tiktok.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/trustpilot.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/truthsocial.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/ui.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/web_search_keyless.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/xai_x.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/xiaohongshu_api.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/xquik.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/xurl_x.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/__pycache__/youtube_yt.cpython-313.pyc +0 -0
- package/skills/luckiest-trends/scripts/lib/arxiv.py +290 -0
- package/skills/luckiest-trends/scripts/lib/bird_x.py +639 -0
- package/skills/luckiest-trends/scripts/lib/bluesky.py +323 -0
- package/skills/luckiest-trends/scripts/lib/categories.py +283 -0
- package/skills/luckiest-trends/scripts/lib/chrome_cookies.py +414 -0
- package/skills/luckiest-trends/scripts/lib/cjk.py +107 -0
- package/skills/luckiest-trends/scripts/lib/cluster.py +271 -0
- package/skills/luckiest-trends/scripts/lib/competitors.py +198 -0
- package/skills/luckiest-trends/scripts/lib/cookie_extract.py +508 -0
- package/skills/luckiest-trends/scripts/lib/dates.py +169 -0
- package/skills/luckiest-trends/scripts/lib/dedupe.py +145 -0
- package/skills/luckiest-trends/scripts/lib/digg.py +440 -0
- package/skills/luckiest-trends/scripts/lib/entity_extract.py +127 -0
- package/skills/luckiest-trends/scripts/lib/env.py +1073 -0
- package/skills/luckiest-trends/scripts/lib/fanout.py +84 -0
- package/skills/luckiest-trends/scripts/lib/fusion.py +207 -0
- package/skills/luckiest-trends/scripts/lib/github.py +996 -0
- package/skills/luckiest-trends/scripts/lib/grounding.py +331 -0
- package/skills/luckiest-trends/scripts/lib/hackernews.py +357 -0
- package/skills/luckiest-trends/scripts/lib/health.py +92 -0
- package/skills/luckiest-trends/scripts/lib/hiring_signals.py +326 -0
- package/skills/luckiest-trends/scripts/lib/html_publish.py +73 -0
- package/skills/luckiest-trends/scripts/lib/html_render.py +738 -0
- package/skills/luckiest-trends/scripts/lib/http.py +372 -0
- package/skills/luckiest-trends/scripts/lib/instagram.py +521 -0
- package/skills/luckiest-trends/scripts/lib/jobs.py +708 -0
- package/skills/luckiest-trends/scripts/lib/linkedin.py +363 -0
- package/skills/luckiest-trends/scripts/lib/log.py +35 -0
- package/skills/luckiest-trends/scripts/lib/normalize.py +759 -0
- package/skills/luckiest-trends/scripts/lib/permission_preflight.py +242 -0
- package/skills/luckiest-trends/scripts/lib/perplexity.py +745 -0
- package/skills/luckiest-trends/scripts/lib/pinterest.py +154 -0
- package/skills/luckiest-trends/scripts/lib/pipeline.py +1720 -0
- package/skills/luckiest-trends/scripts/lib/planner.py +763 -0
- package/skills/luckiest-trends/scripts/lib/polymarket.py +794 -0
- package/skills/luckiest-trends/scripts/lib/preflight.py +119 -0
- package/skills/luckiest-trends/scripts/lib/providers.py +380 -0
- package/skills/luckiest-trends/scripts/lib/quality_nudge.py +383 -0
- package/skills/luckiest-trends/scripts/lib/query.py +202 -0
- package/skills/luckiest-trends/scripts/lib/reddit.py +731 -0
- package/skills/luckiest-trends/scripts/lib/reddit_arctic.py +92 -0
- package/skills/luckiest-trends/scripts/lib/reddit_enrich.py +322 -0
- package/skills/luckiest-trends/scripts/lib/reddit_keyless.py +329 -0
- package/skills/luckiest-trends/scripts/lib/reddit_listing.py +188 -0
- package/skills/luckiest-trends/scripts/lib/reddit_public.py +275 -0
- package/skills/luckiest-trends/scripts/lib/reddit_rss.py +224 -0
- package/skills/luckiest-trends/scripts/lib/reddit_shreddit.py +184 -0
- package/skills/luckiest-trends/scripts/lib/relevance.py +200 -0
- package/skills/luckiest-trends/scripts/lib/render.py +2130 -0
- package/skills/luckiest-trends/scripts/lib/rerank.py +708 -0
- package/skills/luckiest-trends/scripts/lib/resolve.py +345 -0
- package/skills/luckiest-trends/scripts/lib/safari_cookies.py +193 -0
- package/skills/luckiest-trends/scripts/lib/schema.py +319 -0
- package/skills/luckiest-trends/scripts/lib/setup_wizard.py +843 -0
- package/skills/luckiest-trends/scripts/lib/signals.py +334 -0
- package/skills/luckiest-trends/scripts/lib/skill_meta.py +33 -0
- package/skills/luckiest-trends/scripts/lib/snippet.py +51 -0
- package/skills/luckiest-trends/scripts/lib/subproc.py +116 -0
- package/skills/luckiest-trends/scripts/lib/techmeme.py +239 -0
- package/skills/luckiest-trends/scripts/lib/threads.py +207 -0
- package/skills/luckiest-trends/scripts/lib/tiktok.py +596 -0
- package/skills/luckiest-trends/scripts/lib/transcribe.py +235 -0
- package/skills/luckiest-trends/scripts/lib/trustpilot.py +277 -0
- package/skills/luckiest-trends/scripts/lib/truthsocial.py +162 -0
- package/skills/luckiest-trends/scripts/lib/ui.py +626 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/LICENSE +21 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/bird-search.mjs +147 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/cookies.js +220 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/features.json +17 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/paginate-cursor.js +37 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/query-ids.json +20 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/runtime-features.js +151 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/runtime-query-ids.js +264 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/twitter-client-base.js +129 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/twitter-client-constants.js +50 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/twitter-client-features.js +347 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/twitter-client-search.js +157 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/twitter-client-types.js +2 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/lib/twitter-client-utils.js +511 -0
- package/skills/luckiest-trends/scripts/lib/vendor/bird-search/package.json +13 -0
- package/skills/luckiest-trends/scripts/lib/web_fetch_keyless.py +105 -0
- package/skills/luckiest-trends/scripts/lib/web_search_keyless.py +158 -0
- package/skills/luckiest-trends/scripts/lib/xai_x.py +236 -0
- package/skills/luckiest-trends/scripts/lib/xiaohongshu_api.py +162 -0
- package/skills/luckiest-trends/scripts/lib/xquik.py +404 -0
- package/skills/luckiest-trends/scripts/lib/xurl_x.py +171 -0
- package/skills/luckiest-trends/scripts/lib/youtube_yt.py +1365 -0
- package/skills/luckiest-trends/scripts/setup-keychain.sh +123 -0
- package/skills/luckiest-trends/scripts/setup-pass.sh +132 -0
- package/skills/luckiest-trends/scripts/store.py +1020 -0
- package/skills/luckiest-trends/scripts/test-v1-vs-v2.sh +220 -0
- package/skills/luckiest-trends/scripts/test_device_auth.py +128 -0
- package/skills/luckiest-trends/scripts/verify_v3.py +195 -0
- package/skills/luckiest-trends/scripts/watchlist.py +318 -0
- package/skills/luckiest-video/ATTRIBUTION.md +27 -0
- package/skills/luckiest-video/CHANGELOG.md +23 -0
- package/skills/luckiest-video/SKILL.md +371 -0
- package/skills/luckiest-video/evals/evals.json +88 -0
- package/skills/luckiest-video/references/ai-video-prompting.md +175 -0
- package/skills/remix/SKILL.md +32 -0
- package/commands/luckiest/go.md +0 -45
- package/commands/luckiest/plan.md +0 -55
- /package/commands/{luckiest/charms.md → charms.md} +0 -0
- /package/commands/{luckiest/helpers.md → helpers.md} +0 -0
- /package/commands/{luckiest/home.md → home.md} +0 -0
- /package/commands/{luckiest/leaderboard.md → leaderboard.md} +0 -0
- /package/commands/{luckiest/merge.md → merge.md} +0 -0
- /package/commands/{luckiest/overlaps.md → overlaps.md} +0 -0
- /package/commands/{luckiest/skills.md → skills.md} +0 -0
- /package/commands/{luckiest/start.md → start.md} +0 -0
- /package/commands/{luckiest/status.md → status.md} +0 -0
- /package/commands/{luckiest/updates.md → updates.md} +0 -0
- /package/commands/{luckiest/vouch.md → vouch.md} +0 -0
- /package/commands/{luckiest/wishes.md → wishes.md} +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Changelog — luckiest-model-router
|
|
2
|
+
|
|
3
|
+
## 1.1.0 — 2026-07-06
|
|
4
|
+
Skill updater pass: analytics integration.
|
|
5
|
+
|
|
6
|
+
### Analytics (report_usage)
|
|
7
|
+
- Updated `report_usage` call to `skill_version: "1.1.0"` and `check_updates`
|
|
8
|
+
`installedSemver: "1.1.0"`. The skill now reports usage to the Luckiest
|
|
9
|
+
telemetry pipeline on every run, making it visible on the admin Skill Usage
|
|
10
|
+
page (/owner/skill-usage).
|
|
11
|
+
|
|
12
|
+
## 1.0.0 — 2026-07-02
|
|
13
|
+
|
|
14
|
+
First Luckiest edition, built from the first-party `model-router` skill.
|
|
15
|
+
|
|
16
|
+
### Security (Pass 1)
|
|
17
|
+
- Scanned `SKILL.md` and `scripts/route.py`. Clean: no credential/`.env` reads,
|
|
18
|
+
no network egress, no obfuscated commands, no over-broad tool grants. The
|
|
19
|
+
script only calls `shutil.which`, `os.path.exists`, `re`, and reads argv/stdin.
|
|
20
|
+
|
|
21
|
+
### Best practices (Pass 2)
|
|
22
|
+
- Frontmatter conforms to spec: `name` matches directory, description carries
|
|
23
|
+
what-it-does + when-to-use + concrete trigger phrases.
|
|
24
|
+
- Body under length budget; single-file skill plus one bundled script.
|
|
25
|
+
|
|
26
|
+
### Improve (Pass 3)
|
|
27
|
+
- Added explicit tie-break rule: prefer **claude** on a genuine score tie.
|
|
28
|
+
- Detection covers both CLI-on-PATH and GUI app bundles (e.g. Conductor,
|
|
29
|
+
Cursor) so Mac GUI-only installs are still recognized.
|
|
30
|
+
- **Network hook:** offer `request_assist` when the ideal tool for a task is not
|
|
31
|
+
installed, so a tribe member who has it can take the task. Opt-in only.
|
|
32
|
+
|
|
33
|
+
### Trend (Pass 4)
|
|
34
|
+
- Trend pass: no actionable signal. The available trend tools (`/newsjack`,
|
|
35
|
+
`/luckiest-trends`) target marketing news and are off-domain for coding-agent
|
|
36
|
+
routing; nothing verifiable and on-domain surfaced, so no changes were made
|
|
37
|
+
rather than fabricating signal.
|
|
38
|
+
|
|
39
|
+
### Rebrand (Pass 5)
|
|
40
|
+
- Renamed to `luckiest-model-router`; updated name, description, self-references.
|
|
41
|
+
- Added first-party `ATTRIBUTION.md` (no upstream license to preserve).
|
|
42
|
+
|
|
43
|
+
### Version (Pass 6)
|
|
44
|
+
- `metadata.version: 1.0.0`, `metadata.listing_id: luckiest-model-router`.
|
|
45
|
+
- Added the `check_updates` activation block.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: luckiest-model-router
|
|
3
|
+
description: Use when the user is about to hand off a coding task and asks which agent or model to use, says "which tool should I use for this", "route this", "who should do this", "best model for this task", or is deciding between Claude, Codex, Cursor, Conductor, or Factory. Detects which of those agents are actually installed on the machine, then recommends the best fit for the specific prompt with rationale. Use this whenever someone is choosing between coding agents, even if they don't name a specific one.
|
|
4
|
+
license: See ATTRIBUTION.md
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.1.0"
|
|
7
|
+
listing_id: luckiest-model-router
|
|
8
|
+
author: luckiest
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Luckiest Model Router
|
|
12
|
+
|
|
13
|
+
Recommend which coding agent to hand a task to, from the ones actually available on this machine: **claude, codex, cursor, conductor, factory**.
|
|
14
|
+
|
|
15
|
+
Two rules make this useful instead of hand-wavy:
|
|
16
|
+
1. Never recommend a tool that isn't installed. Detect first.
|
|
17
|
+
2. Base the pick on what the *specific prompt* needs, not on a generic ranking.
|
|
18
|
+
|
|
19
|
+
## Staying current
|
|
20
|
+
|
|
21
|
+
On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-model-router", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
|
|
22
|
+
|
|
23
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-model-router", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
|
|
24
|
+
|
|
25
|
+
## Workflow
|
|
26
|
+
|
|
27
|
+
1. Run the router script with the task prompt as the argument:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
python3 scripts/route.py "the user's task prompt"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
It prints JSON with `available` (detected tools + their launch command), a
|
|
34
|
+
`ranking` scored for this prompt, and `recommended` (the top tool).
|
|
35
|
+
|
|
36
|
+
2. Read the JSON. The `score` and `matched_signals` are a heuristic starting
|
|
37
|
+
point, not the answer. Combine them with your own read of the task — you
|
|
38
|
+
understand nuance the keyword rules miss.
|
|
39
|
+
|
|
40
|
+
3. Give the user a short recommendation: the top pick, one line of *why it fits
|
|
41
|
+
this task*, and the launch command. If the top two are close, say so and name
|
|
42
|
+
the tie-breaker rather than pretending there's one obvious answer. On a genuine
|
|
43
|
+
tie, prefer **claude** as the safe all-rounder.
|
|
44
|
+
|
|
45
|
+
4. If the ideal tool for the task isn't installed, say which one it would be and
|
|
46
|
+
that installing it is an option — but still recommend the best *available* one.
|
|
47
|
+
|
|
48
|
+
## What each tool is for
|
|
49
|
+
|
|
50
|
+
The script carries the same profiles, but keep the shape in mind when you reason:
|
|
51
|
+
|
|
52
|
+
- **claude** — deep multi-file reasoning, refactors, debugging, architecture, writing. The default all-rounder; pick it when nothing else clearly wins.
|
|
53
|
+
- **codex** — autonomous, self-contained implementation that runs to completion in a sandbox; algorithmic tasks.
|
|
54
|
+
- **cursor** — fast in-editor edits and tight iteration while a file is open; small quick changes.
|
|
55
|
+
- **conductor** — fanning out several independent tasks in parallel across worktrees.
|
|
56
|
+
- **factory** — enterprise end-to-end delivery, spec-to-PR, background/remote execution across integrated tools.
|
|
57
|
+
|
|
58
|
+
## Output format
|
|
59
|
+
|
|
60
|
+
Keep it short. Example:
|
|
61
|
+
|
|
62
|
+
> **Recommended: conductor** — you've got 4 independent features to build at once, and Conductor runs parallel agents across worktrees, which fits fan-out work better than a single sequential agent.
|
|
63
|
+
> Runner-up: claude (better per-task depth, but serial).
|
|
64
|
+
> Launch: `conductor`
|
|
65
|
+
|
|
66
|
+
Don't pad it. One recommendation, one reason, the command.
|
|
67
|
+
|
|
68
|
+
## Network hook
|
|
69
|
+
|
|
70
|
+
When the ideal tool for a task is *not* installed, that is a natural moment to
|
|
71
|
+
reach the user's tribe: offer to call the Luckiest MCP `request_assist` tool so a
|
|
72
|
+
tribe member who has that agent can take the task. Only offer it — never send
|
|
73
|
+
without the user's go-ahead. If the best available tool is already a fine fit,
|
|
74
|
+
skip the hook.
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Detect which coding agents are available, then score a prompt against each.
|
|
3
|
+
|
|
4
|
+
Usage:
|
|
5
|
+
python3 route.py "your prompt text here"
|
|
6
|
+
echo "prompt" | python3 route.py
|
|
7
|
+
python3 route.py --list # just show what's installed
|
|
8
|
+
|
|
9
|
+
Output: JSON on stdout with available tools and a ranked score per available tool.
|
|
10
|
+
The scores are a heuristic starting point, not a verdict. The calling agent is
|
|
11
|
+
expected to read the rationale and apply its own judgment on top.
|
|
12
|
+
|
|
13
|
+
ponytail: keyword heuristic with a known ceiling. If routing quality matters more
|
|
14
|
+
than this gives, replace `score_prompt` with a model call; the detection half stays.
|
|
15
|
+
"""
|
|
16
|
+
import json
|
|
17
|
+
import os
|
|
18
|
+
import re
|
|
19
|
+
import shutil
|
|
20
|
+
import sys
|
|
21
|
+
|
|
22
|
+
# How each tool announces itself on the system. First hit wins.
|
|
23
|
+
# A CLI on PATH, or (for GUI-only tools) a known app bundle.
|
|
24
|
+
DETECT = {
|
|
25
|
+
"claude": {"cli": ["claude"], "app": []},
|
|
26
|
+
"codex": {"cli": ["codex"], "app": []},
|
|
27
|
+
"cursor": {"cli": ["cursor-agent", "cursor"], "app": ["/Applications/Cursor.app"]},
|
|
28
|
+
"conductor": {"cli": ["conductor"], "app": ["/Applications/Conductor.app"]},
|
|
29
|
+
"factory": {"cli": ["droid", "factory"], "app": []},
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
# What each tool is comparatively good at, as (signal, weight) rules.
|
|
33
|
+
# `signal` is a regex matched case-insensitively against the prompt.
|
|
34
|
+
# Every available tool also gets its `base` score so a no-signal prompt still ranks.
|
|
35
|
+
PROFILES = {
|
|
36
|
+
"claude": {
|
|
37
|
+
"base": 3,
|
|
38
|
+
"good_at": "Deep multi-file reasoning, refactors, debugging, architecture, "
|
|
39
|
+
"writing and explaining code. Strong all-rounder and default pick.",
|
|
40
|
+
"rules": [
|
|
41
|
+
(r"\b(refactor|architecture|design|debug|why|explain|understand|root cause)\b", 3),
|
|
42
|
+
(r"\b(multi-file|across (the )?codebase|whole (repo|project)|trace)\b", 2),
|
|
43
|
+
(r"\b(review|write|document|test|reason)\b", 1),
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
"codex": {
|
|
47
|
+
"base": 2,
|
|
48
|
+
"good_at": "Autonomous long-running coding in a sandbox, algorithmic and "
|
|
49
|
+
"self-contained implementation tasks, running to completion unattended.",
|
|
50
|
+
"rules": [
|
|
51
|
+
(r"\b(algorithm|leetcode|competitive|solve|implement (a|the)|from scratch)\b", 3),
|
|
52
|
+
(r"\b(sandbox|autonomous|run (it )?to completion|long.running|unattended)\b", 2),
|
|
53
|
+
(r"\b(script|function|module)\b", 1),
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
"cursor": {
|
|
57
|
+
"base": 2,
|
|
58
|
+
"good_at": "Fast in-editor edits and inline iteration while a file is open; "
|
|
59
|
+
"quick local changes, tab-style completions, tight edit loops.",
|
|
60
|
+
"rules": [
|
|
61
|
+
(r"\b(inline|in the editor|open file|this file|quick|small|tweak|autocomplete|tab)\b", 3),
|
|
62
|
+
(r"\b(edit|change|fix (this|the) line|rename|adjust)\b", 2),
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
"conductor": {
|
|
66
|
+
"base": 1,
|
|
67
|
+
"good_at": "Orchestrating several agents in parallel across worktrees; "
|
|
68
|
+
"many independent tasks fanned out at once on a Mac.",
|
|
69
|
+
"rules": [
|
|
70
|
+
(r"\b(parallel|in parallel|at (the )?same time|fan.?out|multiple (tasks|agents|branches)|worktrees?)\b", 4),
|
|
71
|
+
(r"\b(orchestrate|batch|several (features|tasks|tickets))\b", 2),
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
"factory": {
|
|
75
|
+
"base": 1,
|
|
76
|
+
"good_at": "Enterprise end-to-end delivery, spec-to-PR, background/remote "
|
|
77
|
+
"execution across many integrated tools (droids).",
|
|
78
|
+
"rules": [
|
|
79
|
+
(r"\b(end.to.end|spec.to.pr|ticket|jira|linear|ship (a|the) (feature|pr)|delivery)\b", 3),
|
|
80
|
+
(r"\b(background|remote|ci|pipeline|integration|enterprise)\b", 2),
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def detect():
|
|
87
|
+
"""Return the subset of tools actually available on this machine."""
|
|
88
|
+
found = {}
|
|
89
|
+
for name, how in DETECT.items():
|
|
90
|
+
hit = next((c for c in how["cli"] if shutil.which(c)), None)
|
|
91
|
+
if not hit:
|
|
92
|
+
hit = next((p for p in how["app"] if os.path.exists(p)), None)
|
|
93
|
+
if hit:
|
|
94
|
+
found[name] = hit
|
|
95
|
+
return found
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def score_prompt(prompt, tools):
|
|
99
|
+
prompt = prompt.lower()
|
|
100
|
+
ranked = []
|
|
101
|
+
for name in tools:
|
|
102
|
+
prof = PROFILES[name]
|
|
103
|
+
score = prof["base"]
|
|
104
|
+
hits = []
|
|
105
|
+
for pattern, weight in prof["rules"]:
|
|
106
|
+
if re.search(pattern, prompt, re.I):
|
|
107
|
+
score += weight
|
|
108
|
+
hits.append(pattern)
|
|
109
|
+
ranked.append({
|
|
110
|
+
"tool": name,
|
|
111
|
+
"command": tools[name],
|
|
112
|
+
"score": score,
|
|
113
|
+
"good_at": prof["good_at"],
|
|
114
|
+
"matched_signals": hits,
|
|
115
|
+
})
|
|
116
|
+
ranked.sort(key=lambda r: r["score"], reverse=True)
|
|
117
|
+
return ranked
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def main():
|
|
121
|
+
args = [a for a in sys.argv[1:]]
|
|
122
|
+
list_only = "--list" in args
|
|
123
|
+
args = [a for a in args if a != "--list"]
|
|
124
|
+
prompt = " ".join(args).strip() or (sys.stdin.read().strip() if not sys.stdin.isatty() else "")
|
|
125
|
+
|
|
126
|
+
tools = detect()
|
|
127
|
+
if not tools:
|
|
128
|
+
print(json.dumps({"available": {}, "ranking": [],
|
|
129
|
+
"note": "No supported coding agents detected."}, indent=2))
|
|
130
|
+
return
|
|
131
|
+
|
|
132
|
+
if list_only or not prompt:
|
|
133
|
+
print(json.dumps({"available": tools}, indent=2))
|
|
134
|
+
return
|
|
135
|
+
|
|
136
|
+
ranking = score_prompt(prompt, tools)
|
|
137
|
+
print(json.dumps({
|
|
138
|
+
"available": tools,
|
|
139
|
+
"recommended": ranking[0]["tool"],
|
|
140
|
+
"ranking": ranking,
|
|
141
|
+
}, indent=2))
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
if __name__ == "__main__":
|
|
145
|
+
main()
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Attribution — luckiest-offers
|
|
2
|
+
|
|
3
|
+
This skill (`luckiest-offers`) is the Luckiest edition of the original skill
|
|
4
|
+
**`offers`** from the **marketingskills** project.
|
|
5
|
+
|
|
6
|
+
- Original skill: `offers`
|
|
7
|
+
- Project: marketingskills — https://github.com/coreyhaines31/marketingskills
|
|
8
|
+
- Author: Corey Haines — https://corey.co
|
|
9
|
+
- License: MIT
|
|
10
|
+
|
|
11
|
+
The Luckiest edition adds security hardening, minor content improvements, an
|
|
12
|
+
opt-in Luckiest network hook, and rebranding. The original content and its
|
|
13
|
+
copyright are retained. See `CHANGELOG.md` for the specific changes.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Original License (verbatim)
|
|
18
|
+
|
|
19
|
+
MIT License
|
|
20
|
+
|
|
21
|
+
Copyright (c) 2025 Corey Haines
|
|
22
|
+
|
|
23
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
24
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
25
|
+
in the Software without restriction, including without limitation the rights
|
|
26
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
27
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
28
|
+
furnished to do so, subject to the following conditions:
|
|
29
|
+
|
|
30
|
+
The above copyright notice and this permission notice shall be included in all
|
|
31
|
+
copies or substantial portions of the Software.
|
|
32
|
+
|
|
33
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
34
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
35
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
36
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
37
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
38
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
39
|
+
SOFTWARE.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Changelog — luckiest-offers
|
|
2
|
+
|
|
3
|
+
## 1.1.0 — 2026-07-06
|
|
4
|
+
Skill updater pass: analytics integration.
|
|
5
|
+
|
|
6
|
+
### Analytics (report_usage)
|
|
7
|
+
- Updated `report_usage` call to `skill_version: "1.1.0"` and `check_updates`
|
|
8
|
+
`installedSemver: "1.1.0"`. The skill now reports usage to the Luckiest
|
|
9
|
+
telemetry pipeline on every run, making it visible on the admin Skill Usage
|
|
10
|
+
page (/owner/skill-usage).
|
|
11
|
+
|
|
12
|
+
## 1.0.0 — 2026-07-01
|
|
13
|
+
Rebranded from offers (marketingskills, MIT).
|
|
14
|
+
|
|
15
|
+
### Improve pass (/refract)
|
|
16
|
+
- Added a baseline-snapshot step to the Diagnostic Loop so before/after conversion lift is attributable rather than felt.
|
|
17
|
+
- Added a guarantee-vs-margin sanity check: check guarantee generosity against gross margin and expected refund rate before shipping.
|
|
18
|
+
|
|
19
|
+
### Network hook
|
|
20
|
+
- Share-with-tribe (opt-in OFFER): after an offer is drafted, offer to share an anonymized teardown (value-equation scores + the one lever changed) with the user's Luckiest tribe for feedback. Never auto-posts, no credentials.
|
|
21
|
+
|
|
22
|
+
### Trend pass (/newsjack + /luckiest-trends)
|
|
23
|
+
- no actionable signal (luckiest-trends engine required interactive first-run setup; timeboxed, not run — offer-design fundamentals are stable, no fabricated signal added)
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: luckiest-offers
|
|
3
|
+
description: "When the user wants to design, construct, or improve an offer — the thing they actually sell — including value framing, bonus stacking, guarantee design, scarcity/urgency, naming, and payment structure. Also use when the user mentions 'offer,' 'offer design,' 'build an offer,' 'grand slam offer,' 'irresistible offer,' 'value stack,' 'bonus stack,' 'guarantee,' 'risk reversal,' 'money-back guarantee,' 'scarcity,' 'urgency,' 'high-ticket offer,' 'productize a service,' 'naming an offer,' 'payment plan,' 'down-sell,' 'upsell offer,' or 'why isn't my offer converting.' Best for services, agencies, courses, coaching, info products, high-ticket B2B, and direct-response. If you run pure self-serve SaaS, read luckiest-pricing first — tiers and packaging do more work there. For price level itself (tiers, freemium, value metric), see luckiest-pricing. For the page that presents the offer, see luckiest-copywriting. For the launch moment, see luckiest-launch. For sales collateral, see luckiest-sales-enablement."
|
|
4
|
+
license: See ATTRIBUTION.md
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.1.0"
|
|
7
|
+
listing_id: luckiest-offers
|
|
8
|
+
author: luckiest
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Staying current
|
|
12
|
+
|
|
13
|
+
On activation, call the Luckiest MCP check_updates tool with { listingId: "luckiest-offers", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
|
|
14
|
+
|
|
15
|
+
# Offer Design
|
|
16
|
+
|
|
17
|
+
You are an expert in offer construction. Your goal is to help the user build offers that move — not by writing better copy on a worse offer, but by improving the offer itself.
|
|
18
|
+
|
|
19
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-offers", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
|
|
20
|
+
|
|
21
|
+
## Before Starting
|
|
22
|
+
|
|
23
|
+
**Check for product marketing context first:**
|
|
24
|
+
If `.agents/product-marketing.md` exists (or `.claude/product-marketing.md`, or the legacy `product-marketing-context.md` filename, in older setups), read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Core Philosophy
|
|
29
|
+
|
|
30
|
+
**The offer is the thing, not the page.** Better copy on a weak offer compounds slowly. A stronger offer with average copy converts immediately. Most "we need better copy" requests are actually "we need a better offer" requests in disguise.
|
|
31
|
+
|
|
32
|
+
This skill exists because the rest of the repo handles the *expression* of an offer — `copywriting` writes the sales page, `cro` optimizes the conversion path, `pricing` sets the tier structure, `launch` orchestrates the moment, `paywalls` shapes the upgrade prompt. None of them ask the deeper question: **is the offer underneath any of that actually good?**
|
|
33
|
+
|
|
34
|
+
### When this skill matters
|
|
35
|
+
|
|
36
|
+
You sell:
|
|
37
|
+
- **Services** — consulting, freelance, agency retainers, productized services
|
|
38
|
+
- **Courses** — async, cohort-based, live
|
|
39
|
+
- **Coaching** — 1:1, group, mastermind
|
|
40
|
+
- **Info products** — guides, swipe files, templates, communities
|
|
41
|
+
- **High-ticket B2B** — $5K+ ACV with a sales conversation
|
|
42
|
+
- **Direct-response** — e-com promo offers, infomercial-style, paid-traffic-to-VSL
|
|
43
|
+
|
|
44
|
+
### When `pricing` does more of the work
|
|
45
|
+
|
|
46
|
+
You sell:
|
|
47
|
+
- **Self-serve SaaS** with tiered subscriptions — the levers are mostly tier structure, value metric, and packaging; offer construction (bonuses, guarantees) is secondary
|
|
48
|
+
- **Marketplaces** — the offer is structural, not constructed
|
|
49
|
+
|
|
50
|
+
Skim this skill in those cases for the value equation framing, then go to `pricing`.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## The Value Equation
|
|
55
|
+
|
|
56
|
+
The single most useful frame for offer design. Originally from Alex Hormozi's *$100M Offers* — internalized broadly across direct-response and creator-economy training since.
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
Dream Outcome × Perceived Likelihood of Achievement
|
|
60
|
+
Value = ─────────────────────────────────────────────────────────
|
|
61
|
+
Time Delay × Effort & Sacrifice
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
You move the four levers like this:
|
|
65
|
+
|
|
66
|
+
| Lever | What it means | How to increase value |
|
|
67
|
+
|-------|---------------|-----------------------|
|
|
68
|
+
| **Dream outcome** ↑ | What the customer actually wants | Connect to the bigger goal behind the surface ask. Specify and name it. |
|
|
69
|
+
| **Perceived likelihood** ↑ | Do they believe they'll get it | Proof (case studies, named customers, data), guarantees, methodology specificity |
|
|
70
|
+
| **Time delay** ↓ | How long until result | Faster onboarding, faster first win, faster end-to-end timeline |
|
|
71
|
+
| **Effort & sacrifice** ↓ | What it costs them in time/work/risk besides money | Done-for-you, simpler process, fewer decisions, lower learning curve |
|
|
72
|
+
|
|
73
|
+
**Implication for offer construction**: most "lower the price" requests are actually "raise the numerator or lower the denominator" requests. Price is the comparison, not the value.
|
|
74
|
+
|
|
75
|
+
**For the full framework, examples, and how to diagnose which lever is broken:** see [references/value-equation.md](references/value-equation.md)
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## The Anatomy of a Complete Offer
|
|
80
|
+
|
|
81
|
+
A complete offer has six components. Skip any one and conversion suffers.
|
|
82
|
+
|
|
83
|
+
| # | Component | Question it answers |
|
|
84
|
+
|---|-----------|---------------------|
|
|
85
|
+
| 1 | **Core deliverable** | What do they get? |
|
|
86
|
+
| 2 | **Bonus stack** | What else do they get that makes the core feel undervalued? |
|
|
87
|
+
| 3 | **Guarantee** | What happens if it doesn't work? |
|
|
88
|
+
| 4 | **Scarcity / urgency** | Why now, not later? |
|
|
89
|
+
| 5 | **Name** | What is this thing called? |
|
|
90
|
+
| 6 | **Price + payment structure** | What do they pay and how? |
|
|
91
|
+
|
|
92
|
+
Most weak offers fail on bonuses (none), guarantees (none or wrong type), or scarcity (none, or fake). Most aggressive-to-the-point-of-cringe offers fail on guarantee (over-promising) or scarcity (fake countdown timers).
|
|
93
|
+
|
|
94
|
+
**For the full anatomy with worked examples:** see [references/offer-anatomy.md](references/offer-anatomy.md)
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Reference Library
|
|
99
|
+
|
|
100
|
+
| Reference | When to read |
|
|
101
|
+
|-----------|--------------|
|
|
102
|
+
| [value-equation.md](references/value-equation.md) | Diagnosing which lever is broken on a stuck offer |
|
|
103
|
+
| [offer-anatomy.md](references/offer-anatomy.md) | Building a complete offer from scratch |
|
|
104
|
+
| [guarantee-design.md](references/guarantee-design.md) | Picking the right type of guarantee for your business model |
|
|
105
|
+
| [bonus-stacking.md](references/bonus-stacking.md) | Adding bonuses that raise perceived value without devaluing the core |
|
|
106
|
+
| [scarcity-urgency.md](references/scarcity-urgency.md) | Creating *real* scarcity (and avoiding the fake patterns that destroy trust) |
|
|
107
|
+
| [offer-formats.md](references/offer-formats.md) | Format playbooks by business type — service, course, coaching, info product, SaaS lead magnet, agency retainer, high-ticket B2B |
|
|
108
|
+
| [examples.md](references/examples.md) | Anonymized worked examples — before/after for each business type |
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## The Diagnostic Loop
|
|
113
|
+
|
|
114
|
+
When the user says "my offer isn't converting" or "I want to improve my offer":
|
|
115
|
+
|
|
116
|
+
1. **Identify the business type** — service, course, coaching, info product, SaaS, agency, B2B. The right playbook is type-specific.
|
|
117
|
+
2. **State the current offer in plain language** — name, price, what they get, guarantee, deadline. Write it down even if it lives in scattered places now.
|
|
118
|
+
3. **Snapshot the baseline before editing** — record the current offer as-is (the four value-equation scores, the six anatomy components, and current conversion rate if known). This snapshot is what the after-state gets compared against, so the honest lift projection in step 7 is attributable rather than felt.
|
|
119
|
+
4. **Run the value equation** — score each of the four levers 1–10. The lowest is the binding constraint.
|
|
120
|
+
5. **Audit the anatomy** — which of the six components is missing or weak?
|
|
121
|
+
6. **Pick one lever to fix this iteration** — don't rebuild everything. The biggest lever is usually the one currently scoring lowest.
|
|
122
|
+
7. **Draft the changed component** — new bonus, new guarantee, new scarcity, new name, new payment plan. If the change is a guarantee, sanity-check its generosity against gross margin and expected refund rate before shipping: a guarantee that pays out at a rate your margin can't absorb is a liability, not a lever.
|
|
123
|
+
8. **Project the lift, honestly** — most single-component changes deliver 10–40% conversion lift. Anyone promising 5x is selling something. Two consecutive iterations on different levers can stack to 2–3x.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## When NOT to Use Offer-Design Tactics
|
|
128
|
+
|
|
129
|
+
Some offer patterns work but cost more than they're worth:
|
|
130
|
+
|
|
131
|
+
- **Manipulative scarcity** — fake countdown timers, "only 3 spots left" lies. Short-term lift, long-term trust collapse. Don't.
|
|
132
|
+
- **Over-promising guarantees** — "double your revenue or refund + $1,000." Refund risk eats margin; the few cases that fail nuke your reputation publicly.
|
|
133
|
+
- **Bonus inflation** — stacking $50K of "bonuses" on a $497 product so it "feels like a steal." Sophisticated buyers see this. Treat bonuses as additive, not exaggerated.
|
|
134
|
+
- **Course-bro aesthetic on a serious product** — Gold logos, "secret method," fake urgency. Pattern-matches to scam. Wrong room.
|
|
135
|
+
|
|
136
|
+
The repo voice: opinionated, but honest. Building offers well doesn't mean building offers loud.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Banned Vocabulary
|
|
141
|
+
|
|
142
|
+
When drafting offer language (sales pages, emails, headlines), avoid:
|
|
143
|
+
|
|
144
|
+
- **"Game-changing," "revolutionary," "disruptive," "next-level," "10x"** — pattern-matches to AI slop / course-bro
|
|
145
|
+
- **"Secret," "hidden," "what they don't want you to know"** — clickbait
|
|
146
|
+
- **"Limited time" with no actual time limit** — lying
|
|
147
|
+
- **"Worth $X" or "$Y value" with no comparable** — inflation
|
|
148
|
+
- **"100% guaranteed" without specifying conditions** — legally and brand-wise risky
|
|
149
|
+
|
|
150
|
+
Use specific numbers, named customers, concrete outcomes, real timelines. Specificity beats superlatives.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Related Skills
|
|
155
|
+
|
|
156
|
+
- **luckiest-pricing** — for price levels, tier structure, value metric, packaging, freemium
|
|
157
|
+
- **luckiest-copywriting** — for the page that presents the offer
|
|
158
|
+
- **luckiest-cro** — for optimizing the conversion path the offer travels through
|
|
159
|
+
- **luckiest-launch** — for the moment you ship the offer
|
|
160
|
+
- **luckiest-paywalls** — for in-app upgrade-prompt versions of an offer
|
|
161
|
+
- **luckiest-sales-enablement** — for the deck and one-pager that carry the offer into a sales conversation
|
|
162
|
+
- **luckiest-emails** — for the email sequence that warms up the offer
|
|
163
|
+
- **luckiest-marketing-psychology** — for the cognitive biases that make offers land or bounce
|
|
164
|
+
|
|
165
|
+
## Share with your tribe (optional)
|
|
166
|
+
|
|
167
|
+
After an offer is drafted, you may *offer* to share an anonymized teardown of it — the four value-equation scores plus the one lever changed this iteration — with the user's Luckiest tribe for feedback. This is strictly opt-in: ask first, share only what the user approves, never auto-post, and never touch credentials. If the user declines or the network is unavailable, continue without it.
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Bonus Stacking
|
|
2
|
+
|
|
3
|
+
How to add bonuses that raise perceived value without devaluing the core offer.
|
|
4
|
+
|
|
5
|
+
## What bonuses actually do
|
|
6
|
+
|
|
7
|
+
Three jobs at once:
|
|
8
|
+
|
|
9
|
+
1. **Raise perceived value** of the total offer
|
|
10
|
+
2. **Lower perceived risk** — even if the core underdelivers, "I still got X for free"
|
|
11
|
+
3. **Close specific buying objections** — each bonus can target one objection
|
|
12
|
+
|
|
13
|
+
The third job is the underrated one. Most weak bonus stacks throw four generic "extras" at the buyer. Strong bonus stacks read the buyer's specific hesitations and close them in order.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## The core principle: bonuses-as-objection-handlers
|
|
18
|
+
|
|
19
|
+
For each major objection your buyer has, add a bonus that closes it.
|
|
20
|
+
|
|
21
|
+
### Common objections → matching bonus
|
|
22
|
+
|
|
23
|
+
| Objection | Targeted bonus |
|
|
24
|
+
|-----------|---------------|
|
|
25
|
+
| "I don't have time to implement this" | Done-for-you setup, week 1 |
|
|
26
|
+
| "I don't know which tools to use" | Pre-vetted tool stack with discount codes |
|
|
27
|
+
| "What if I get stuck?" | 30-day async Slack support |
|
|
28
|
+
| "I'm not sure my team will buy in" | Stakeholder pitch deck |
|
|
29
|
+
| "I've tried something like this before and it didn't work" | Case study from someone in your exact situation |
|
|
30
|
+
| "What about [edge case in my industry]?" | Industry-specific bonus reference doc |
|
|
31
|
+
| "Will I have to learn a bunch of new tools?" | Pre-built templates for the tools we recommend |
|
|
32
|
+
| "What if I don't finish it?" | 1:1 accountability check-in at day 30 |
|
|
33
|
+
| "My situation is more complex than the average buyer" | 1:1 onboarding call to customize the plan |
|
|
34
|
+
| "Will this work in [region/language]?" | Localized version or addendum |
|
|
35
|
+
|
|
36
|
+
A 4-bonus stack that closes 4 specific objections converts massively better than a 4-bonus stack of generic "extras."
|
|
37
|
+
|
|
38
|
+
### How to find your buyer's actual objections
|
|
39
|
+
|
|
40
|
+
1. Read every refund-request email and sales-call transcript from the last 6 months
|
|
41
|
+
2. Read your own sales page out loud and write down every doubt that surfaces
|
|
42
|
+
3. Ask 3 recent buyers: "What almost made you not buy?"
|
|
43
|
+
|
|
44
|
+
The answers cluster around 3–6 objections. Build a bonus for each.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## The math of bonus value
|
|
49
|
+
|
|
50
|
+
Each bonus has a stated value (what it would cost if you bought it separately). Bonuses should:
|
|
51
|
+
|
|
52
|
+
1. **Have a stated value the buyer can verify.** Compare to a comparable product or service. "$497 value — that's what the standalone template pack costs" beats "$5,000 value." (Standalone? Compared to what?)
|
|
53
|
+
|
|
54
|
+
2. **Total to less than 2x the price** of the core offer. A $1K offer can comfortably have $1.5K in bonuses. A $1K offer with "$25K in bonuses" reads as a scam.
|
|
55
|
+
|
|
56
|
+
3. **Be things you'd actually sell separately.** If you'd never sell the bonus as a standalone product, the stated value isn't real. Sophisticated buyers can tell.
|
|
57
|
+
|
|
58
|
+
4. **Each have a specific named outcome.** "Bonus: marketing toolkit" is weak. "Bonus: 12 pre-built Notion templates for your first 90 days, valued at $297 because that's what the standalone template pack sells for at [link]" is strong.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## The 4-bonus pattern that works
|
|
63
|
+
|
|
64
|
+
Most strong offers stack exactly 3–5 bonuses. More starts to feel like padding; fewer leaves objections un-closed.
|
|
65
|
+
|
|
66
|
+
A common structure:
|
|
67
|
+
|
|
68
|
+
| # | Type | Purpose | Typical value |
|
|
69
|
+
|---|------|---------|---------------|
|
|
70
|
+
| 1 | **Speed bonus** | Removes time-delay objection | Templates, swipes, accelerators |
|
|
71
|
+
| 2 | **Trust bonus** | Removes likelihood-of-failure objection | Case study, methodology doc, examples library |
|
|
72
|
+
| 3 | **Stuck bonus** | Removes "what if I get stuck" objection | Office hours, Slack, on-demand support |
|
|
73
|
+
| 4 | **Decision bonus** | Removes "I have to choose between X and Y" objection | Tool stack with discount codes, pre-vetted recommendations |
|
|
74
|
+
| 5 (optional) | **Bigger-than-you-asked bonus** | Adds dream-outcome surface area | Adjacent deliverable, related framework, partner offer |
|
|
75
|
+
|
|
76
|
+
Example for a $2K B2B copywriting course:
|
|
77
|
+
|
|
78
|
+
| # | Bonus | Closes |
|
|
79
|
+
|---|-------|--------|
|
|
80
|
+
| 1 | "30 winning sales page templates (last updated 2026-Q2)" — $297 value | "I don't have time to write from scratch" |
|
|
81
|
+
| 2 | "9 case studies from agencies that hit $250K MRR using these frameworks" — $0 (proof, not a saleable asset) | "Does this actually work for my situation?" |
|
|
82
|
+
| 3 | "60-day Slack access with weekly office hours" — $497 value | "What if I get stuck on a specific project?" |
|
|
83
|
+
| 4 | "The tool stack: 5 tools we use + discount codes (saves ~$1,200/yr)" — $1,200 value | "I don't know what to use" |
|
|
84
|
+
| 5 | "Bonus session: How to charge $5K+ per project" — $297 value | Pricing confidence (adjacent dream outcome) |
|
|
85
|
+
|
|
86
|
+
Total stated value: ~$2,300 in bonuses on a $2K core. Math checks out (under 2x). Each bonus closes a real objection.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## When bonuses backfire
|
|
91
|
+
|
|
92
|
+
### Inflated values
|
|
93
|
+
|
|
94
|
+
"$50,000 in bonuses included today only!" on a $497 product. The asymmetry is the tell — every sophisticated buyer's bullshit detector fires.
|
|
95
|
+
|
|
96
|
+
Stated values must be defensible. If you can't point to a comparable price, don't quote the value.
|
|
97
|
+
|
|
98
|
+
### Bonuses that devalue the core
|
|
99
|
+
|
|
100
|
+
If your core offer is "I'll write your sales page for $5K" and your bonus is "PLUS — bonus sales page edits for free for life!" — the bonus implies the core is incomplete. Now the buyer wonders why they should buy *without* the bonus.
|
|
101
|
+
|
|
102
|
+
Bonuses should be *additive* to a complete core, not patches on an incomplete one.
|
|
103
|
+
|
|
104
|
+
### Bonus-stack-as-substitute-for-core
|
|
105
|
+
|
|
106
|
+
A weak core surrounded by amazing bonuses converts at the moment of sale but produces angry refund requests. The buyer bought the bonuses, got the core, felt cheated.
|
|
107
|
+
|
|
108
|
+
Order: strong core *first*, then bonuses to address specific objections.
|
|
109
|
+
|
|
110
|
+
### Stacked too high
|
|
111
|
+
|
|
112
|
+
5+ bonuses with high stated values starts to read as a course-bro funnel. Premium buyers ignore the bonus list entirely; mid-market buyers feel they're being upsold; new buyers get confused.
|
|
113
|
+
|
|
114
|
+
3–5 bonuses, each with a specific purpose. Cap it.
|
|
115
|
+
|
|
116
|
+
### Same-as-everyone-else bonuses
|
|
117
|
+
|
|
118
|
+
"BONUS! Private community access!" on every course in your category isn't a bonus, it's table stakes. If every competitor offers the same bonuses, none of them are differentiators.
|
|
119
|
+
|
|
120
|
+
Find bonuses that are specific to your buyer's situation. A SaaS bonus for a SaaS-focused buyer beats a generic "private community" every time.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Bonus delivery: timing matters
|
|
125
|
+
|
|
126
|
+
A bonus delivered on day 1 closes "what if I never use it?" risk.
|
|
127
|
+
A bonus delivered at week 4 maintains momentum.
|
|
128
|
+
A bonus delivered at completion rewards finishing.
|
|
129
|
+
|
|
130
|
+
Mix the timing intentionally:
|
|
131
|
+
|
|
132
|
+
- Day 1: speed bonuses (templates, swipes, toolkit)
|
|
133
|
+
- Week 2–4: support bonuses (Slack, office hours, check-ins)
|
|
134
|
+
- Completion: identity bonuses (certificate, alumni access)
|
|
135
|
+
|
|
136
|
+
A buyer who gets all bonuses up-front is more likely to abandon (they got what they wanted, lost incentive to finish). A buyer who gets some bonuses at completion is more likely to finish (and refer).
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## The audit
|
|
141
|
+
|
|
142
|
+
For each existing bonus on a current offer, ask:
|
|
143
|
+
|
|
144
|
+
1. **What specific buying objection does this close?** If you can't name one, it's filler.
|
|
145
|
+
2. **What's its defensible stated value?** If you can't point to a comparable price, drop the dollar amount.
|
|
146
|
+
3. **Does the buyer get it on day 1, or at a meaningful point in their journey?** Timing should support the customer outcome, not just the conversion event.
|
|
147
|
+
4. **Is this bonus specific to my buyer, or could any competitor offer the same thing?** If it's generic, replace it.
|
|
148
|
+
5. **Is the bonus strong enough that the offer would still convert without the core?** If yes, the core is weak. Fix the core, don't lean on the bonus.
|
|
149
|
+
|
|
150
|
+
Most stuck offers have either zero bonuses or too many generic ones. The right move is usually: cut to 3–5 specific objection-closing bonuses, name each one clearly, and put defensible values on them.
|