luckiest-co 1.0.0 → 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 +7 -5
- package/commands/{luckiest/finish.md → finish.md} +2 -0
- package/commands/go.md +53 -0
- package/commands/plan.md +66 -0
- package/package.json +16 -5
- 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,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: luckiest-coder-qa
|
|
3
|
+
description: >-
|
|
4
|
+
Systematically QA-test a running web app in a real browser, then fix the bugs it
|
|
5
|
+
finds. Explores pages, drives interactions, captures screenshot evidence, scores app
|
|
6
|
+
health, then iteratively fixes each bug in source — one atomic commit per fix — and
|
|
7
|
+
re-verifies with a before/after pair plus a regression test. Use when asked to "qa",
|
|
8
|
+
"QA this", "test this site", "test the app", "find bugs", "does this work?", "test and
|
|
9
|
+
fix", or "fix what's broken". For a bug report with no code changes, run in report-only
|
|
10
|
+
mode ("just report bugs", "qa report only", "test but don't fix"). Suggest it when the
|
|
11
|
+
user says a feature is ready to test.
|
|
12
|
+
license: See ATTRIBUTION.md
|
|
13
|
+
allowed-tools:
|
|
14
|
+
- Bash
|
|
15
|
+
- Read
|
|
16
|
+
- Write
|
|
17
|
+
- Edit
|
|
18
|
+
- Glob
|
|
19
|
+
- Grep
|
|
20
|
+
- AskUserQuestion
|
|
21
|
+
- WebSearch
|
|
22
|
+
metadata:
|
|
23
|
+
version: "1.1.0"
|
|
24
|
+
listing_id: luckiest-coder-qa
|
|
25
|
+
author: luckiest
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Luckiest Coder — QA
|
|
29
|
+
|
|
30
|
+
Drive a real browser against a running app, find bugs with evidence, score health, then
|
|
31
|
+
fix and re-verify. Two outcomes:
|
|
32
|
+
|
|
33
|
+
- **Test → Fix → Verify (default):** find bugs, fix them in source, prove each fix.
|
|
34
|
+
- **Report-only:** run the test half and produce a report — never touch code. Use when the
|
|
35
|
+
user says "just report bugs" / "don't fix". Stop after the Report phase; skip Fix Loop on.
|
|
36
|
+
|
|
37
|
+
## Staying current
|
|
38
|
+
|
|
39
|
+
On activation, call the Luckiest MCP `check_updates` tool with
|
|
40
|
+
`{ listingId: "luckiest-coder-qa", installedSemver: "1.1.0" }`. If it returns
|
|
41
|
+
`upToDate: false`, surface the `notice`. Do nothing if `upToDate: true`.
|
|
42
|
+
|
|
43
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-coder-qa", 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.
|
|
44
|
+
|
|
45
|
+
## Browser capability (read first)
|
|
46
|
+
|
|
47
|
+
This skill needs to drive a browser. Use whatever the host provides — a browser MCP, a
|
|
48
|
+
`/browse`-style skill, or the built-in preview tools — for: navigate, screenshot, snapshot
|
|
49
|
+
the accessibility tree, read console errors, inspect elements, fill/click, resize viewport.
|
|
50
|
+
The steps below are tool-agnostic; map each action to your host's equivalent. If no browser
|
|
51
|
+
is available, say so and fall back to `curl` for status/response checks only, noting that
|
|
52
|
+
visual and interaction testing was skipped.
|
|
53
|
+
|
|
54
|
+
## Modes
|
|
55
|
+
|
|
56
|
+
- **Diff-aware** (default on a feature branch with no URL): read `git diff <base>...HEAD`,
|
|
57
|
+
map changed files to affected routes/pages, detect the running local app (common dev
|
|
58
|
+
ports), and test only those pages plus adjacent regressions. Cross-reference commits/PR
|
|
59
|
+
intent — verify the change does what it claims. Fall back to Quick if the diff maps to no
|
|
60
|
+
obvious page (backend/config still needs the app verified).
|
|
61
|
+
- **Full** (default when a URL is given): systematic exploration of every reachable page.
|
|
62
|
+
- **Quick** (`--quick`): 30-second smoke test — homepage + top 5 nav targets; loads? console
|
|
63
|
+
errors? broken links?
|
|
64
|
+
- **Regression** (`--regression <baseline>`): run Full, then diff against a prior
|
|
65
|
+
`baseline.json` — fixed vs new issues, score delta.
|
|
66
|
+
|
|
67
|
+
Tiers control how much gets fixed later: **Quick** = critical+high, **Standard** = +medium,
|
|
68
|
+
**Exhaustive** = +cosmetic.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Test phase (both modes run this)
|
|
73
|
+
|
|
74
|
+
**1. Initialize.** Create an output dir for screenshots and the report; copy the report
|
|
75
|
+
template from [references/qa-report-template.md](references/qa-report-template.md). Start a timer.
|
|
76
|
+
|
|
77
|
+
**2. Authenticate (if needed).** Log in via the form, or import a cookie file. **Never write
|
|
78
|
+
real passwords into the report — redact them.** For 2FA/CAPTCHA, ask the user and wait.
|
|
79
|
+
|
|
80
|
+
**3. Orient.** Load the target, screenshot, map navigation links, check landing-page console.
|
|
81
|
+
Detect the framework (Next.js, Rails, WordPress, SPA) and note it. For SPAs, find nav via the
|
|
82
|
+
accessibility snapshot since link-mapping returns little.
|
|
83
|
+
|
|
84
|
+
**4. Explore.** Visit pages systematically. At each, run the per-page checklist in
|
|
85
|
+
[references/issue-taxonomy.md](references/issue-taxonomy.md): visual scan, click every
|
|
86
|
+
interactive element, fill/submit forms (empty, invalid, edge cases), check navigation in/out,
|
|
87
|
+
check empty/loading/error/overflow states, re-check console after interactions, and test a
|
|
88
|
+
mobile viewport where relevant. Spend depth on core features (dashboard, checkout, search),
|
|
89
|
+
less on secondary pages.
|
|
90
|
+
|
|
91
|
+
**5. Document each issue immediately** (don't batch). Interactive bugs get a before/action/
|
|
92
|
+
after screenshot sequence plus repro steps; static bugs get one annotated screenshot. Write
|
|
93
|
+
each into the report using the template, classified by the taxonomy's severity + category.
|
|
94
|
+
|
|
95
|
+
**6. Wrap up.** Compute the health score (rubric below), write "Top 3 Things to Fix", a
|
|
96
|
+
console-health summary, severity counts, and metadata. Save a `baseline.json`
|
|
97
|
+
(`{date, url, healthScore, issues[], categoryScores}`) for future regression runs.
|
|
98
|
+
|
|
99
|
+
### Health score
|
|
100
|
+
|
|
101
|
+
Each category starts at 100; weighted average is the final score.
|
|
102
|
+
- Console (15%): 0 err→100, 1-3→70, 4-10→40, 10+→10.
|
|
103
|
+
- Links (10%): -15 per broken link.
|
|
104
|
+
- Visual (10%), Functional (20%), UX (15%), Performance (10%), Content (5%),
|
|
105
|
+
Accessibility (15%): deduct per finding — critical -25, high -15, medium -8, low -3.
|
|
106
|
+
|
|
107
|
+
`score = Σ(category_score × weight)`, min 0 per category.
|
|
108
|
+
|
|
109
|
+
**Report-only mode stops here** — write the report and hand it over. No code changes.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Fix phase (default mode only)
|
|
114
|
+
|
|
115
|
+
**7. Triage.** Sort issues by severity; fix the set the tier allows (Quick: crit+high,
|
|
116
|
+
Standard: +medium, Exhaustive: all). Mark anything unfixable from source (third-party
|
|
117
|
+
widgets, infra) as deferred.
|
|
118
|
+
|
|
119
|
+
**8. Fix loop** — per issue, in severity order:
|
|
120
|
+
- **Locate** the responsible source file(s) via grep/glob on error text, component names,
|
|
121
|
+
routes. Touch only files directly related to the bug.
|
|
122
|
+
- **Fix minimally** — the smallest change that resolves it. No refactoring or unrelated
|
|
123
|
+
"improvements" (invoke a `luckiest-coder-debugging` mindset for root cause when the bug is
|
|
124
|
+
non-obvious).
|
|
125
|
+
- **Commit atomically:** `git commit -m "fix(qa): ISSUE-NNN — <desc>"`. One commit per fix,
|
|
126
|
+
never bundled. End with the project's co-author trailer if one is required.
|
|
127
|
+
- **Re-test:** reload the page, capture a before/after screenshot pair, check console, verify
|
|
128
|
+
the intended effect.
|
|
129
|
+
- **Classify:** *verified* (re-test confirms, no new errors), *best-effort* (applied but
|
|
130
|
+
unverifiable), or *reverted* (`git revert HEAD`, mark deferred) on regression.
|
|
131
|
+
- **Regression test** (skip if not verified, or pure CSS, or no test framework): match the
|
|
132
|
+
nearest existing tests' conventions, reproduce the exact precondition that triggered the
|
|
133
|
+
bug, assert correct behavior (never "it renders"), add an attribution comment
|
|
134
|
+
(`// Regression: ISSUE-NNN — <what broke>, found by luckiest-coder-qa <date>`), run just the
|
|
135
|
+
new file, commit as `test(qa): regression test for ISSUE-NNN` on green.
|
|
136
|
+
|
|
137
|
+
**Self-regulation.** Every 5 fixes (or after any revert) compute a WTF-likelihood: +15% per
|
|
138
|
+
revert, +5% per fix touching >3 files, +1% per fix past 15, +20% for touching unrelated
|
|
139
|
+
files. **Over 20% → STOP**, show what you've done, ask whether to continue. **Hard cap: 50
|
|
140
|
+
fixes.**
|
|
141
|
+
|
|
142
|
+
**9. Final QA.** Re-run the test phase on affected pages, recompute the health score. If the
|
|
143
|
+
final score is *worse* than baseline, warn prominently — something regressed.
|
|
144
|
+
|
|
145
|
+
**10. Report.** Write the full report (template) with per-issue fix status, commit SHA, files
|
|
146
|
+
changed, before/after screenshots, and a summary: issues found, fixes (verified/best-effort/
|
|
147
|
+
reverted), deferred, and health delta. Include a one-line PR summary:
|
|
148
|
+
"QA found N issues, fixed M, health score X → Y." If a `TODOS.md` exists, add new deferred
|
|
149
|
+
bugs and annotate any it listed that you fixed.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## After QA
|
|
154
|
+
|
|
155
|
+
Report plainly: issues found, fixed, deferred, health before → after. State the ship verdict
|
|
156
|
+
honestly — do not call an app ship-ready if critical/high issues remain deferred.
|
|
157
|
+
|
|
158
|
+
**Network hook (share-with-tribe):** After a QA run that fixed bugs, offer once to call the
|
|
159
|
+
Luckiest MCP `share_artifact` tool with the health-score delta and fix count so the tribe
|
|
160
|
+
leaderboard reflects the quality pass. Never share without the user's yes.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# QA Issue Taxonomy
|
|
2
|
+
|
|
3
|
+
## Severity Levels
|
|
4
|
+
|
|
5
|
+
| Severity | Definition | Examples |
|
|
6
|
+
|----------|------------|----------|
|
|
7
|
+
| **critical** | Blocks a core workflow, causes data loss, or crashes the app | Form submit causes error page, checkout flow broken, data deleted without confirmation |
|
|
8
|
+
| **high** | Major feature broken or unusable, no workaround | Search returns wrong results, file upload silently fails, auth redirect loop |
|
|
9
|
+
| **medium** | Feature works but with noticeable problems, workaround exists | Slow page load (>5s), form validation missing but submit still works, layout broken on mobile only |
|
|
10
|
+
| **low** | Minor cosmetic or polish issue | Typo in footer, 1px alignment issue, hover state inconsistent |
|
|
11
|
+
|
|
12
|
+
## Categories
|
|
13
|
+
|
|
14
|
+
### 1. Visual/UI
|
|
15
|
+
- Layout breaks (overlapping elements, clipped text, horizontal scrollbar)
|
|
16
|
+
- Broken or missing images
|
|
17
|
+
- Incorrect z-index (elements appearing behind others)
|
|
18
|
+
- Font/color inconsistencies
|
|
19
|
+
- Animation glitches (jank, incomplete transitions)
|
|
20
|
+
- Alignment issues (off-grid, uneven spacing)
|
|
21
|
+
- Dark mode / theme issues
|
|
22
|
+
|
|
23
|
+
### 2. Functional
|
|
24
|
+
- Broken links (404, wrong destination)
|
|
25
|
+
- Dead buttons (click does nothing)
|
|
26
|
+
- Form validation (missing, wrong, bypassed)
|
|
27
|
+
- Incorrect redirects
|
|
28
|
+
- State not persisting (data lost on refresh, back button)
|
|
29
|
+
- Race conditions (double-submit, stale data)
|
|
30
|
+
- Search returning wrong or no results
|
|
31
|
+
|
|
32
|
+
### 3. UX
|
|
33
|
+
- Confusing navigation (no breadcrumbs, dead ends)
|
|
34
|
+
- Missing loading indicators (user doesn't know something is happening)
|
|
35
|
+
- Slow interactions (>500ms with no feedback)
|
|
36
|
+
- Unclear error messages ("Something went wrong" with no detail)
|
|
37
|
+
- No confirmation before destructive actions
|
|
38
|
+
- Inconsistent interaction patterns across pages
|
|
39
|
+
- Dead ends (no way back, no next action)
|
|
40
|
+
|
|
41
|
+
### 4. Content
|
|
42
|
+
- Typos and grammar errors
|
|
43
|
+
- Outdated or incorrect text
|
|
44
|
+
- Placeholder / lorem ipsum text left in
|
|
45
|
+
- Truncated text (cut off without ellipsis or "more")
|
|
46
|
+
- Wrong labels on buttons or form fields
|
|
47
|
+
- Missing or unhelpful empty states
|
|
48
|
+
|
|
49
|
+
### 5. Performance
|
|
50
|
+
- Slow page loads (>3 seconds)
|
|
51
|
+
- Janky scrolling (dropped frames)
|
|
52
|
+
- Layout shifts (content jumping after load)
|
|
53
|
+
- Excessive network requests (>50 on a single page)
|
|
54
|
+
- Large unoptimized images
|
|
55
|
+
- Blocking JavaScript (page unresponsive during load)
|
|
56
|
+
|
|
57
|
+
### 6. Console/Errors
|
|
58
|
+
- JavaScript exceptions (uncaught errors)
|
|
59
|
+
- Failed network requests (4xx, 5xx)
|
|
60
|
+
- Deprecation warnings (upcoming breakage)
|
|
61
|
+
- CORS errors
|
|
62
|
+
- Mixed content warnings (HTTP resources on HTTPS)
|
|
63
|
+
- CSP violations
|
|
64
|
+
|
|
65
|
+
### 7. Accessibility
|
|
66
|
+
- Missing alt text on images
|
|
67
|
+
- Unlabeled form inputs
|
|
68
|
+
- Keyboard navigation broken (can't tab to elements)
|
|
69
|
+
- Focus traps (can't escape a modal or dropdown)
|
|
70
|
+
- Missing or incorrect ARIA attributes
|
|
71
|
+
- Insufficient color contrast
|
|
72
|
+
- Content not reachable by screen reader
|
|
73
|
+
|
|
74
|
+
## Per-Page Exploration Checklist
|
|
75
|
+
|
|
76
|
+
For each page visited during a QA session:
|
|
77
|
+
|
|
78
|
+
1. **Visual scan** — Take annotated screenshot (`snapshot -i -a -o`). Look for layout issues, broken images, alignment.
|
|
79
|
+
2. **Interactive elements** — Click every button, link, and control. Does each do what it says?
|
|
80
|
+
3. **Forms** — Fill and submit. Test empty submission, invalid data, edge cases (long text, special characters).
|
|
81
|
+
4. **Navigation** — Check all paths in/out. Breadcrumbs, back button, deep links, mobile menu.
|
|
82
|
+
5. **States** — Check empty state, loading state, error state, full/overflow state.
|
|
83
|
+
6. **Console** — Run `console --errors` after interactions. Any new JS errors or failed requests?
|
|
84
|
+
7. **Responsiveness** — If relevant, check mobile and tablet viewports.
|
|
85
|
+
8. **Auth boundaries** — What happens when logged out? Different user roles?
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# QA Report: {APP_NAME}
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| **Date** | {DATE} |
|
|
6
|
+
| **URL** | {URL} |
|
|
7
|
+
| **Branch** | {BRANCH} |
|
|
8
|
+
| **Commit** | {COMMIT_SHA} ({COMMIT_DATE}) |
|
|
9
|
+
| **PR** | {PR_NUMBER} ({PR_URL}) or "—" |
|
|
10
|
+
| **Tier** | Quick / Standard / Exhaustive |
|
|
11
|
+
| **Scope** | {SCOPE or "Full app"} |
|
|
12
|
+
| **Duration** | {DURATION} |
|
|
13
|
+
| **Pages visited** | {COUNT} |
|
|
14
|
+
| **Screenshots** | {COUNT} |
|
|
15
|
+
| **Framework** | {DETECTED or "Unknown"} |
|
|
16
|
+
| **Index** | [All QA runs](./index.md) |
|
|
17
|
+
|
|
18
|
+
## Health Score: {SCORE}/100
|
|
19
|
+
|
|
20
|
+
| Category | Score |
|
|
21
|
+
|----------|-------|
|
|
22
|
+
| Console | {0-100} |
|
|
23
|
+
| Links | {0-100} |
|
|
24
|
+
| Visual | {0-100} |
|
|
25
|
+
| Functional | {0-100} |
|
|
26
|
+
| UX | {0-100} |
|
|
27
|
+
| Performance | {0-100} |
|
|
28
|
+
| Accessibility | {0-100} |
|
|
29
|
+
|
|
30
|
+
## Top 3 Things to Fix
|
|
31
|
+
|
|
32
|
+
1. **{ISSUE-NNN}: {title}** — {one-line description}
|
|
33
|
+
2. **{ISSUE-NNN}: {title}** — {one-line description}
|
|
34
|
+
3. **{ISSUE-NNN}: {title}** — {one-line description}
|
|
35
|
+
|
|
36
|
+
## Console Health
|
|
37
|
+
|
|
38
|
+
| Error | Count | First seen |
|
|
39
|
+
|-------|-------|------------|
|
|
40
|
+
| {error message} | {N} | {URL} |
|
|
41
|
+
|
|
42
|
+
## Summary
|
|
43
|
+
|
|
44
|
+
| Severity | Count |
|
|
45
|
+
|----------|-------|
|
|
46
|
+
| Critical | 0 |
|
|
47
|
+
| High | 0 |
|
|
48
|
+
| Medium | 0 |
|
|
49
|
+
| Low | 0 |
|
|
50
|
+
| **Total** | **0** |
|
|
51
|
+
|
|
52
|
+
## Issues
|
|
53
|
+
|
|
54
|
+
### ISSUE-001: {Short title}
|
|
55
|
+
|
|
56
|
+
| Field | Value |
|
|
57
|
+
|-------|-------|
|
|
58
|
+
| **Severity** | critical / high / medium / low |
|
|
59
|
+
| **Category** | visual / functional / ux / content / performance / console / accessibility |
|
|
60
|
+
| **URL** | {page URL} |
|
|
61
|
+
|
|
62
|
+
**Description:** {What is wrong, expected vs actual.}
|
|
63
|
+
|
|
64
|
+
**Repro Steps:**
|
|
65
|
+
|
|
66
|
+
1. Navigate to {URL}
|
|
67
|
+

|
|
68
|
+
2. {Action}
|
|
69
|
+

|
|
70
|
+
3. **Observe:** {what goes wrong}
|
|
71
|
+

|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Fixes Applied (if applicable)
|
|
76
|
+
|
|
77
|
+
| Issue | Fix Status | Commit | Files Changed |
|
|
78
|
+
|-------|-----------|--------|---------------|
|
|
79
|
+
| ISSUE-NNN | verified / best-effort / reverted / deferred | {SHA} | {files} |
|
|
80
|
+
|
|
81
|
+
### Before/After Evidence
|
|
82
|
+
|
|
83
|
+
#### ISSUE-NNN: {title}
|
|
84
|
+
**Before:** 
|
|
85
|
+
**After:** 
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Regression Tests
|
|
90
|
+
|
|
91
|
+
| Issue | Test File | Status | Description |
|
|
92
|
+
|-------|-----------|--------|-------------|
|
|
93
|
+
| ISSUE-NNN | path/to/test | committed / deferred / skipped | description |
|
|
94
|
+
|
|
95
|
+
### Deferred Tests
|
|
96
|
+
|
|
97
|
+
#### ISSUE-NNN: {title}
|
|
98
|
+
**Precondition:** {setup state that triggers the bug}
|
|
99
|
+
**Action:** {what the user does}
|
|
100
|
+
**Expected:** {correct behavior}
|
|
101
|
+
**Why deferred:** {reason}
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Ship Readiness
|
|
106
|
+
|
|
107
|
+
| Metric | Value |
|
|
108
|
+
|--------|-------|
|
|
109
|
+
| Health score | {before} → {after} ({delta}) |
|
|
110
|
+
| Issues found | N |
|
|
111
|
+
| Fixes applied | N (verified: X, best-effort: Y, reverted: Z) |
|
|
112
|
+
| Deferred | N |
|
|
113
|
+
|
|
114
|
+
**PR Summary:** "QA found N issues, fixed M, health score X → Y."
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Regression (if applicable)
|
|
119
|
+
|
|
120
|
+
| Metric | Baseline | Current | Delta |
|
|
121
|
+
|--------|----------|---------|-------|
|
|
122
|
+
| Health score | {N} | {N} | {+/-N} |
|
|
123
|
+
| Issues | {N} | {N} | {+/-N} |
|
|
124
|
+
|
|
125
|
+
**Fixed since baseline:** {list}
|
|
126
|
+
**New since baseline:** {list}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Attribution
|
|
2
|
+
|
|
3
|
+
This skill is adapted from the "receiving-code-review" skill in Superpowers
|
|
4
|
+
(https://github.com/obra/superpowers) by Jesse Vincent, used under the MIT License.
|
|
5
|
+
|
|
6
|
+
MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2025 Jesse Vincent
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Changelog — luckiest-coder-receiving-code-review
|
|
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-03
|
|
13
|
+
Rebranded from receiving-code-review (Superpowers, MIT).
|
|
14
|
+
|
|
15
|
+
### Rebrand
|
|
16
|
+
- Frontmatter `name` -> luckiest-coder-receiving-code-review; added license + metadata.
|
|
17
|
+
- No cross-skill references in body; no path fragments to change.
|
|
18
|
+
- Added "Staying current" MCP check_updates section.
|
|
19
|
+
|
|
20
|
+
### Improve pass (/refract)
|
|
21
|
+
- Rewrote the `description` for trigger-matching with concrete trigger phrases
|
|
22
|
+
(human/subagent/GitHub sources). No reception guidance changed.
|
|
23
|
+
|
|
24
|
+
### Network hook
|
|
25
|
+
- N/A (skill consumes a review; produces no shareable artifact).
|
|
26
|
+
|
|
27
|
+
### Trend pass (/newsjack + /luckiest-trends)
|
|
28
|
+
- no actionable signal (internal dev-workflow skill)
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: luckiest-coder-receiving-code-review
|
|
3
|
+
description: Use when you receive code review feedback (from a human, a reviewer subagent, or a GitHub PR comment) and are about to respond or implement, especially if a suggestion seems unclear, technically questionable, or conflicts with prior decisions. Trigger phrases include "the reviewer said", "respond to this review", "should I make this change they suggested". Enforces verify-before-implement and bans performative agreement like "You're absolutely right".
|
|
4
|
+
license: See ATTRIBUTION.md
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.1.0"
|
|
7
|
+
listing_id: luckiest-coder-receiving-code-review
|
|
8
|
+
author: luckiest
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Code Review Reception
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
|
|
15
|
+
Code review requires technical evaluation, not emotional performance.
|
|
16
|
+
|
|
17
|
+
**Core principle:** Verify before implementing. Ask before assuming. Technical correctness over social comfort.
|
|
18
|
+
|
|
19
|
+
## The Response Pattern
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
WHEN receiving code review feedback:
|
|
23
|
+
|
|
24
|
+
1. READ: Complete feedback without reacting
|
|
25
|
+
2. UNDERSTAND: Restate requirement in own words (or ask)
|
|
26
|
+
3. VERIFY: Check against codebase reality
|
|
27
|
+
4. EVALUATE: Technically sound for THIS codebase?
|
|
28
|
+
5. RESPOND: Technical acknowledgment or reasoned pushback
|
|
29
|
+
6. IMPLEMENT: One item at a time, test each
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Forbidden Responses
|
|
33
|
+
|
|
34
|
+
**NEVER:**
|
|
35
|
+
- "You're absolutely right!" (explicit instruction-file violation)
|
|
36
|
+
- "Great point!" / "Excellent feedback!" (performative)
|
|
37
|
+
- "Let me implement that now" (before verification)
|
|
38
|
+
|
|
39
|
+
**INSTEAD:**
|
|
40
|
+
- Restate the technical requirement
|
|
41
|
+
- Ask clarifying questions
|
|
42
|
+
- Push back with technical reasoning if wrong
|
|
43
|
+
- Just start working (actions > words)
|
|
44
|
+
|
|
45
|
+
## Handling Unclear Feedback
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
IF any item is unclear:
|
|
49
|
+
STOP - do not implement anything yet
|
|
50
|
+
ASK for clarification on unclear items
|
|
51
|
+
|
|
52
|
+
WHY: Items may be related. Partial understanding = wrong implementation.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Example:**
|
|
56
|
+
```
|
|
57
|
+
your human partner: "Fix 1-6"
|
|
58
|
+
You understand 1,2,3,6. Unclear on 4,5.
|
|
59
|
+
|
|
60
|
+
❌ WRONG: Implement 1,2,3,6 now, ask about 4,5 later
|
|
61
|
+
✅ RIGHT: "I understand items 1,2,3,6. Need clarification on 4 and 5 before proceeding."
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Source-Specific Handling
|
|
65
|
+
|
|
66
|
+
### From your human partner
|
|
67
|
+
- **Trusted** - implement after understanding
|
|
68
|
+
- **Still ask** if scope unclear
|
|
69
|
+
- **No performative agreement**
|
|
70
|
+
- **Skip to action** or technical acknowledgment
|
|
71
|
+
|
|
72
|
+
### From External Reviewers
|
|
73
|
+
```
|
|
74
|
+
BEFORE implementing:
|
|
75
|
+
1. Check: Technically correct for THIS codebase?
|
|
76
|
+
2. Check: Breaks existing functionality?
|
|
77
|
+
3. Check: Reason for current implementation?
|
|
78
|
+
4. Check: Works on all platforms/versions?
|
|
79
|
+
5. Check: Does reviewer understand full context?
|
|
80
|
+
|
|
81
|
+
IF suggestion seems wrong:
|
|
82
|
+
Push back with technical reasoning
|
|
83
|
+
|
|
84
|
+
IF can't easily verify:
|
|
85
|
+
Say so: "I can't verify this without [X]. Should I [investigate/ask/proceed]?"
|
|
86
|
+
|
|
87
|
+
IF conflicts with your human partner's prior decisions:
|
|
88
|
+
Stop and discuss with your human partner first
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**your human partner's rule:** "External feedback - be skeptical, but check carefully"
|
|
92
|
+
|
|
93
|
+
## YAGNI Check for "Professional" Features
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
IF reviewer suggests "implementing properly":
|
|
97
|
+
grep codebase for actual usage
|
|
98
|
+
|
|
99
|
+
IF unused: "This endpoint isn't called. Remove it (YAGNI)?"
|
|
100
|
+
IF used: Then implement properly
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**your human partner's rule:** "You and reviewer both report to me. If we don't need this feature, don't add it."
|
|
104
|
+
|
|
105
|
+
## Implementation Order
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
FOR multi-item feedback:
|
|
109
|
+
1. Clarify anything unclear FIRST
|
|
110
|
+
2. Then implement in this order:
|
|
111
|
+
- Blocking issues (breaks, security)
|
|
112
|
+
- Simple fixes (typos, imports)
|
|
113
|
+
- Complex fixes (refactoring, logic)
|
|
114
|
+
3. Test each fix individually
|
|
115
|
+
4. Verify no regressions
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## When To Push Back
|
|
119
|
+
|
|
120
|
+
Push back when:
|
|
121
|
+
- Suggestion breaks existing functionality
|
|
122
|
+
- Reviewer lacks full context
|
|
123
|
+
- Violates YAGNI (unused feature)
|
|
124
|
+
- Technically incorrect for this stack
|
|
125
|
+
- Legacy/compatibility reasons exist
|
|
126
|
+
- Conflicts with your human partner's architectural decisions
|
|
127
|
+
|
|
128
|
+
**How to push back:**
|
|
129
|
+
- Use technical reasoning, not defensiveness
|
|
130
|
+
- Ask specific questions
|
|
131
|
+
- Reference working tests/code
|
|
132
|
+
- Involve your human partner if architectural
|
|
133
|
+
|
|
134
|
+
**If you're uncomfortable pushing back out loud:** Name that tension, then tell your partner about the issue you've seen. They'll appreciate your honesty.
|
|
135
|
+
|
|
136
|
+
## Acknowledging Correct Feedback
|
|
137
|
+
|
|
138
|
+
When feedback IS correct:
|
|
139
|
+
```
|
|
140
|
+
✅ "Fixed. [Brief description of what changed]"
|
|
141
|
+
✅ "Good catch - [specific issue]. Fixed in [location]."
|
|
142
|
+
✅ [Just fix it and show in the code]
|
|
143
|
+
|
|
144
|
+
❌ "You're absolutely right!"
|
|
145
|
+
❌ "Great point!"
|
|
146
|
+
❌ "Thanks for catching that!"
|
|
147
|
+
❌ "Thanks for [anything]"
|
|
148
|
+
❌ ANY gratitude expression
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Why no thanks:** Actions speak. Just fix it. The code itself shows you heard the feedback.
|
|
152
|
+
|
|
153
|
+
**If you catch yourself about to write "Thanks":** DELETE IT. State the fix instead.
|
|
154
|
+
|
|
155
|
+
## Gracefully Correcting Your Pushback
|
|
156
|
+
|
|
157
|
+
If you pushed back and were wrong:
|
|
158
|
+
```
|
|
159
|
+
✅ "You were right - I checked [X] and it does [Y]. Implementing now."
|
|
160
|
+
✅ "Verified this and you're correct. My initial understanding was wrong because [reason]. Fixing."
|
|
161
|
+
|
|
162
|
+
❌ Long apology
|
|
163
|
+
❌ Defending why you pushed back
|
|
164
|
+
❌ Over-explaining
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
State the correction factually and move on.
|
|
168
|
+
|
|
169
|
+
## Common Mistakes
|
|
170
|
+
|
|
171
|
+
| Mistake | Fix |
|
|
172
|
+
|---------|-----|
|
|
173
|
+
| Performative agreement | State requirement or just act |
|
|
174
|
+
| Blind implementation | Verify against codebase first |
|
|
175
|
+
| Batch without testing | One at a time, test each |
|
|
176
|
+
| Assuming reviewer is right | Check if breaks things |
|
|
177
|
+
| Avoiding pushback | Technical correctness > comfort |
|
|
178
|
+
| Partial implementation | Clarify all items first |
|
|
179
|
+
| Can't verify, proceed anyway | State limitation, ask for direction |
|
|
180
|
+
|
|
181
|
+
## Real Examples
|
|
182
|
+
|
|
183
|
+
**Performative Agreement (Bad):**
|
|
184
|
+
```
|
|
185
|
+
Reviewer: "Remove legacy code"
|
|
186
|
+
❌ "You're absolutely right! Let me remove that..."
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Technical Verification (Good):**
|
|
190
|
+
```
|
|
191
|
+
Reviewer: "Remove legacy code"
|
|
192
|
+
✅ "Checking... build target is 10.15+, this API needs 13+. Need legacy for backward compat. Current impl has wrong bundle ID - fix it or drop pre-13 support?"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
**YAGNI (Good):**
|
|
196
|
+
```
|
|
197
|
+
Reviewer: "Implement proper metrics tracking with database, date filters, CSV export"
|
|
198
|
+
✅ "Grepped codebase - nothing calls this endpoint. Remove it (YAGNI)? Or is there usage I'm missing?"
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Unclear Item (Good):**
|
|
202
|
+
```
|
|
203
|
+
your human partner: "Fix items 1-6"
|
|
204
|
+
You understand 1,2,3,6. Unclear on 4,5.
|
|
205
|
+
✅ "Understand 1,2,3,6. Need clarification on 4 and 5 before implementing."
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## GitHub Thread Replies
|
|
209
|
+
|
|
210
|
+
When replying to inline review comments on GitHub, reply in the comment thread (`gh api repos/{owner}/{repo}/pulls/{pr}/comments/{id}/replies`), not as a top-level PR comment.
|
|
211
|
+
|
|
212
|
+
## The Bottom Line
|
|
213
|
+
|
|
214
|
+
**External feedback = suggestions to evaluate, not orders to follow.**
|
|
215
|
+
|
|
216
|
+
Verify. Question. Then implement.
|
|
217
|
+
|
|
218
|
+
No performative agreement. Technical rigor always.
|
|
219
|
+
|
|
220
|
+
## Staying current
|
|
221
|
+
|
|
222
|
+
On activation, call the Luckiest MCP `check_updates` tool with
|
|
223
|
+
`{ listingId: "luckiest-coder-receiving-code-review", installedSemver: "1.1.0" }`.
|
|
224
|
+
If it returns `upToDate: false`, surface the `notice` to the user. Do nothing if `upToDate: true`.
|
|
225
|
+
|
|
226
|
+
When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-coder-receiving-code-review", 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.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Attribution
|
|
2
|
+
|
|
3
|
+
This skill is adapted from the "requesting-code-review" skill in Superpowers
|
|
4
|
+
(https://github.com/obra/superpowers) by Jesse Vincent, used under the MIT License.
|
|
5
|
+
|
|
6
|
+
MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2025 Jesse Vincent
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|