@jairodri/huckleberry-cli 1.0.1 → 1.1.0
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/README.md +85 -0
- package/agents/cos.json +2 -5
- package/agents/hermes/AGENTS.md +25 -49
- package/agents/hermes/fix-kimaki/SKILL.md +19 -92
- package/agents/hermes/hermes-fixer.md +44 -74
- package/agents/hermes.json +6 -18
- package/kanban/SKILL.md +18 -18
- package/kanban/package.json +1 -1
- package/kanban/src/dispatcher.mjs +1 -1
- package/kanban/templates/blog-social-campaign.yaml +6 -2
- package/kanban/templates/social-campaign.yaml +9 -4
- package/mcp/jev-calibration.mjs +335 -0
- package/mcp/jev-client.mjs +119 -0
- package/mcp/jev-thresholds.json +27 -0
- package/package.json +13 -9
- package/scripts/doctor-watchdog.sh +73 -0
- package/scripts/install-services.sh +34 -27
- package/scripts/self-improve-weekly.sh +34 -0
- package/scripts/sync-skills.mjs +121 -0
- package/skills/ab-test-setup/SKILL.md +266 -0
- package/skills/ab-test-setup/evals/evals.json +105 -0
- package/skills/ab-test-setup/references/sample-size-guide.md +263 -0
- package/skills/ab-test-setup/references/test-templates.md +277 -0
- package/skills/agent-reach/SKILL.md +132 -0
- package/skills/agent-reach/references/career.md +29 -0
- package/skills/agent-reach/references/dev.md +62 -0
- package/skills/agent-reach/references/search.md +33 -0
- package/skills/agent-reach/references/social.md +232 -0
- package/skills/agent-reach/references/video.md +130 -0
- package/skills/agent-reach/references/web.md +50 -0
- package/skills/ai-agent-seo/SKILL.md +450 -0
- package/skills/ai-cold-email-intelligence/SKILL.md +54 -0
- package/skills/ai-cold-email-intelligence/references/prompts.md +21 -0
- package/skills/ai-consensus-builder/SKILL.md +324 -0
- package/skills/ai-seo/SKILL.md +399 -0
- package/skills/ai-seo/evals/evals.json +90 -0
- package/skills/ai-seo/references/content-patterns.md +284 -0
- package/skills/ai-seo/references/platform-ranking-factors.md +152 -0
- package/skills/ai-visibility-audit/SKILL.md +322 -0
- package/skills/analytics-tracking/SKILL.md +309 -0
- package/skills/analytics-tracking/evals/evals.json +90 -0
- package/skills/analytics-tracking/references/event-library.md +260 -0
- package/skills/analytics-tracking/references/ga4-implementation.md +300 -0
- package/skills/analytics-tracking/references/gtm-implementation.md +390 -0
- package/skills/article-generator/SKILL.md +216 -0
- package/skills/auto-indexing/SKILL.md +179 -0
- package/skills/auto-indexing/scripts/auto-indexing.js +257 -0
- package/skills/auto-skill/SKILL.md +151 -0
- package/skills/auto-skill/correction-queue.js +102 -0
- package/skills/auto-skill/dedup.js +97 -0
- package/skills/auto-skill/skill-router.js +224 -0
- package/skills/autoresearch/SKILL.md +334 -0
- package/skills/autoresearch/autoresearch-autoresearch/SKILL.md.baseline +329 -0
- package/skills/autoresearch/autoresearch-autoresearch/changelog.md +34 -0
- package/skills/autoresearch/autoresearch-autoresearch/dashboard.html +116 -0
- package/skills/autoresearch/autoresearch-autoresearch/evals.md +39 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.json +44 -0
- package/skills/autoresearch/autoresearch-autoresearch/results.tsv +3 -0
- package/skills/autoresearch/eval-guide.md +121 -0
- package/skills/b2b-cold-outreach/SKILL.md +322 -0
- package/skills/birdclaw/SKILL.md +82 -0
- package/skills/brainstorm/SKILL.md +168 -0
- package/skills/brand-kit-playground/SKILL.md +312 -0
- package/skills/brand-kit-playground/references/html-architecture.md +316 -0
- package/skills/brand-kit-playground/references/steal-patterns.md +88 -0
- package/skills/brand-voice/SKILL.md +223 -0
- package/skills/brand-voice/references/honesty-as-positioning.md +60 -0
- package/skills/brand-voice/references/voice-modes.md +1158 -0
- package/skills/business-advisory-council/README.md +136 -0
- package/skills/business-advisory-council/SKILL.md +94 -0
- package/skills/business-advisory-council/business-advisory-council.py +492 -0
- package/skills/business-advisory-council/discord-components-decision.json +8 -0
- package/skills/business-advisory-council/examples/steve-conley-partnership.json +6 -0
- package/skills/business-advisory-council/steve-conley-call-brief.json +6 -0
- package/skills/churn-prevention/SKILL.md +305 -0
- package/skills/churn-prevention/evals/evals.json +93 -0
- package/skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/skills/churn-prevention/references/dunning-playbook.md +408 -0
- package/skills/claw-compactor/LICENSE +21 -0
- package/skills/claw-compactor/README.md +459 -0
- package/skills/claw-compactor/SKILL.md +329 -0
- package/skills/claw-compactor/benchmark/RESULTS.md +104 -0
- package/skills/claw-compactor/benchmark/__init__.py +1 -0
- package/skills/claw-compactor/benchmark/compressors.py +520 -0
- package/skills/claw-compactor/benchmark/data/sample_01_devops.json +82 -0
- package/skills/claw-compactor/benchmark/data/sample_02_trading.json +54 -0
- package/skills/claw-compactor/benchmark/data/sample_03_ml_short.json +38 -0
- package/skills/claw-compactor/benchmark/data/sample_04_mixed_long.json +318 -0
- package/skills/claw-compactor/benchmark/data/sample_05_sysadmin.json +56 -0
- package/skills/claw-compactor/benchmark/evaluate.py +278 -0
- package/skills/claw-compactor/benchmark/report.py +241 -0
- package/skills/claw-compactor/benchmark/results/benchmark_results.json +405 -0
- package/skills/claw-compactor/benchmark/run_benchmark.py +238 -0
- package/skills/claw-compactor/engram.yaml +49 -0
- package/skills/claw-compactor/proxy/README.md +87 -0
- package/skills/claw-compactor/proxy/dashboard.html +804 -0
- package/skills/claw-compactor/proxy/event-log.mjs +213 -0
- package/skills/claw-compactor/proxy/fair-queue.mjs +288 -0
- package/skills/claw-compactor/proxy/metrics-store.mjs +425 -0
- package/skills/claw-compactor/proxy/package-lock.json +125 -0
- package/skills/claw-compactor/proxy/package.json +15 -0
- package/skills/claw-compactor/proxy/portal.html +360 -0
- package/skills/claw-compactor/proxy/process-registry.mjs +447 -0
- package/skills/claw-compactor/proxy/rate-limiter.mjs +117 -0
- package/skills/claw-compactor/proxy/redis-client.mjs +75 -0
- package/skills/claw-compactor/proxy/retry.mjs +182 -0
- package/skills/claw-compactor/proxy/server.mjs +2100 -0
- package/skills/claw-compactor/proxy/session-affinity.mjs +177 -0
- package/skills/claw-compactor/proxy/start.sh +23 -0
- package/skills/claw-compactor/proxy/test/event-log.test.mjs +237 -0
- package/skills/claw-compactor/proxy/test/helpers.mjs +103 -0
- package/skills/claw-compactor/proxy/test/integration.test.mjs +297 -0
- package/skills/claw-compactor/proxy/test/metrics-store.test.mjs +243 -0
- package/skills/claw-compactor/proxy/test/process-registry.test.mjs +390 -0
- package/skills/claw-compactor/proxy/test/rate-limiter.test.mjs +121 -0
- package/skills/claw-compactor/proxy/test/redis-client.test.mjs +62 -0
- package/skills/claw-compactor/proxy/test/token-tracker.test.mjs +200 -0
- package/skills/claw-compactor/proxy/token-tracker.mjs +482 -0
- package/skills/claw-compactor/pyproject.toml +26 -0
- package/skills/claw-compactor/references/README.md +44 -0
- package/skills/claw-compactor/references/architecture.md +197 -0
- package/skills/claw-compactor/references/benchmarks.md +94 -0
- package/skills/claw-compactor/references/compression-prompts.md +39 -0
- package/skills/claw-compactor/references/compression-techniques.md +219 -0
- package/skills/claw-compactor/references/testing.md +160 -0
- package/skills/claw-compactor/scripts/audit_memory.py +216 -0
- package/skills/claw-compactor/scripts/compress_memory.py +236 -0
- package/skills/claw-compactor/scripts/compressed_context.py +280 -0
- package/skills/claw-compactor/scripts/dedup_memory.py +147 -0
- package/skills/claw-compactor/scripts/dictionary_compress.py +170 -0
- package/skills/claw-compactor/scripts/engram-auto.sh +152 -0
- package/skills/claw-compactor/scripts/engram_auto.py +695 -0
- package/skills/claw-compactor/scripts/engram_cli.py +474 -0
- package/skills/claw-compactor/scripts/estimate_tokens.py +131 -0
- package/skills/claw-compactor/scripts/generate_summary_tiers.py +292 -0
- package/skills/claw-compactor/scripts/lib/__init__.py +34 -0
- package/skills/claw-compactor/scripts/lib/config.py +289 -0
- package/skills/claw-compactor/scripts/lib/dedup.py +119 -0
- package/skills/claw-compactor/scripts/lib/dictionary.py +281 -0
- package/skills/claw-compactor/scripts/lib/engram.py +793 -0
- package/skills/claw-compactor/scripts/lib/engram_prompts.py +175 -0
- package/skills/claw-compactor/scripts/lib/engram_storage.py +254 -0
- package/skills/claw-compactor/scripts/lib/exceptions.py +24 -0
- package/skills/claw-compactor/scripts/lib/markdown.py +312 -0
- package/skills/claw-compactor/scripts/lib/rle.py +165 -0
- package/skills/claw-compactor/scripts/lib/tokenizer_optimizer.py +188 -0
- package/skills/claw-compactor/scripts/lib/tokens.py +68 -0
- package/skills/claw-compactor/scripts/mem_compress.py +788 -0
- package/skills/claw-compactor/scripts/observation_compressor.py +346 -0
- package/skills/claw-compactor/tests/__init__.py +0 -0
- package/skills/claw-compactor/tests/conftest.py +94 -0
- package/skills/claw-compactor/tests/test_audit_comprehensive.py +123 -0
- package/skills/claw-compactor/tests/test_audit_memory.py +67 -0
- package/skills/claw-compactor/tests/test_benchmark.py +122 -0
- package/skills/claw-compactor/tests/test_cli_commands.py +228 -0
- package/skills/claw-compactor/tests/test_compress_memory.py +109 -0
- package/skills/claw-compactor/tests/test_compress_memory_comprehensive.py +191 -0
- package/skills/claw-compactor/tests/test_compressed_context.py +145 -0
- package/skills/claw-compactor/tests/test_config.py +54 -0
- package/skills/claw-compactor/tests/test_dedup_memory.py +124 -0
- package/skills/claw-compactor/tests/test_dictionary.py +327 -0
- package/skills/claw-compactor/tests/test_dictionary_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_engram.py +1091 -0
- package/skills/claw-compactor/tests/test_engram_auto.py +529 -0
- package/skills/claw-compactor/tests/test_error_handling.py +194 -0
- package/skills/claw-compactor/tests/test_estimate_tokens.py +99 -0
- package/skills/claw-compactor/tests/test_generate_summary_tiers.py +105 -0
- package/skills/claw-compactor/tests/test_integration.py +249 -0
- package/skills/claw-compactor/tests/test_lib_dedup.py +135 -0
- package/skills/claw-compactor/tests/test_lib_markdown.py +388 -0
- package/skills/claw-compactor/tests/test_lib_tokens.py +82 -0
- package/skills/claw-compactor/tests/test_main_entry.py +176 -0
- package/skills/claw-compactor/tests/test_markdown_advanced.py +284 -0
- package/skills/claw-compactor/tests/test_new_features.py +77 -0
- package/skills/claw-compactor/tests/test_observation_comprehensive.py +261 -0
- package/skills/claw-compactor/tests/test_observation_compressor.py +128 -0
- package/skills/claw-compactor/tests/test_performance.py +172 -0
- package/skills/claw-compactor/tests/test_pipeline.py +109 -0
- package/skills/claw-compactor/tests/test_real_workspace.py +161 -0
- package/skills/claw-compactor/tests/test_rle.py +114 -0
- package/skills/claw-compactor/tests/test_rle_comprehensive.py +151 -0
- package/skills/claw-compactor/tests/test_roundtrip.py +253 -0
- package/skills/claw-compactor/tests/test_roundtrip_comprehensive.py +192 -0
- package/skills/claw-compactor/tests/test_tiers_comprehensive.py +171 -0
- package/skills/claw-compactor/tests/test_token_economics.py +237 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer.py +175 -0
- package/skills/claw-compactor/tests/test_tokenizer_optimizer_comprehensive.py +241 -0
- package/skills/claw-compactor/tests/test_tokens.py +27 -0
- package/skills/cmo/CHANGELOG.md +61 -0
- package/skills/cmo/SKILL.md +500 -0
- package/skills/cmo/references/ai-slop-patterns.md +56 -0
- package/skills/cmo/references/analytics-guide.md +152 -0
- package/skills/cmo/references/ideas-library.md +197 -0
- package/skills/cmo/rules/brand-file-map.md +198 -0
- package/skills/cmo/rules/brand-memory.md +158 -0
- package/skills/cmo/rules/cli-runtime-index.md +95 -0
- package/skills/cmo/rules/command-reference.md +167 -0
- package/skills/cmo/rules/communication.md +15 -0
- package/skills/cmo/rules/context-switch.md +101 -0
- package/skills/cmo/rules/ecosystem.md +125 -0
- package/skills/cmo/rules/error-recovery.md +98 -0
- package/skills/cmo/rules/learning-loop.md +170 -0
- package/skills/cmo/rules/monorepo.md +78 -0
- package/skills/cmo/rules/output-format.md +124 -0
- package/skills/cmo/rules/persona.md +15 -0
- package/skills/cmo/rules/playbooks.md +327 -0
- package/skills/cmo/rules/progressive-enhancement.md +231 -0
- package/skills/cmo/rules/publish-index.md +106 -0
- package/skills/cmo/rules/quality-gate.md +90 -0
- package/skills/cmo/rules/recency-grounding.md +124 -0
- package/skills/cmo/rules/safety.md +80 -0
- package/skills/cmo/rules/studio-api-index.md +138 -0
- package/skills/cmo/rules/studio-integration.md +147 -0
- package/skills/cmo/rules/sub-agents.md +167 -0
- package/skills/cold-email/SKILL.md +240 -0
- package/skills/cold-email/evals/evals.json +94 -0
- package/skills/cold-email/references/benchmarks.md +83 -0
- package/skills/cold-email/references/follow-up-sequences.md +81 -0
- package/skills/cold-email/references/frameworks.md +90 -0
- package/skills/cold-email/references/personalization.md +79 -0
- package/skills/cold-email/references/subject-lines.md +53 -0
- package/skills/competitive-intel/SKILL.md +433 -0
- package/skills/competitive-intel/references/competitive-frameworks.md +145 -0
- package/skills/competitor-alternatives/SKILL.md +362 -0
- package/skills/competitor-alternatives/evals/evals.json +93 -0
- package/skills/competitor-alternatives/references/content-architecture.md +271 -0
- package/skills/competitor-alternatives/references/templates.md +223 -0
- package/skills/concreteness-fixer/SKILL.md +483 -0
- package/skills/concreteness-fixer/scripts/validation/concreteness-validator.js +221 -0
- package/skills/concreteness-fixer/utils/execFileNoThrow.js +16 -0
- package/skills/content-atomizer/SKILL.md +424 -0
- package/skills/content-atomizer/references/hook-strategies.md +56 -0
- package/skills/content-atomizer/references/platform-specs.md +118 -0
- package/skills/content-atomizer/references/platforms/bluesky.md +64 -0
- package/skills/content-atomizer/references/platforms/instagram.md +77 -0
- package/skills/content-atomizer/references/platforms/linkedin.md +120 -0
- package/skills/content-atomizer/references/platforms/reddit.md +73 -0
- package/skills/content-atomizer/references/platforms/threads.md +64 -0
- package/skills/content-atomizer/references/platforms/tiktok.md +55 -0
- package/skills/content-atomizer/references/platforms/twitter.md +123 -0
- package/skills/content-atomizer/references/platforms/youtube.md +56 -0
- package/skills/content-atomizer/references/tweet-patterns.md +40 -0
- package/skills/content-repost-manager/SKILL.md +245 -0
- package/skills/content-repost-manager/scripts/content-repost-scan.py +133 -0
- package/skills/context-recovery/.clawdhub/origin.json +7 -0
- package/skills/context-recovery/SKILL.md +198 -0
- package/skills/context-recovery/_meta.json +6 -0
- package/skills/conversion-flow-cro/SKILL.md +248 -0
- package/skills/conversion-flow-cro/references/flow-benchmarks.md +158 -0
- package/skills/copy-editing/SKILL.md +474 -0
- package/skills/copy-editing/evals/evals.json +89 -0
- package/skills/copy-editing/references/plain-english-alternatives.md +394 -0
- package/skills/copywriting/SKILL.md +349 -0
- package/skills/copywriting/evals/evals.json +111 -0
- package/skills/copywriting/references/awareness-level-guide.md +227 -0
- package/skills/copywriting/references/copy-frameworks.md +389 -0
- package/skills/copywriting/references/natural-transitions.md +272 -0
- package/skills/creative/SKILL.md +365 -0
- package/skills/creative/modes/ad-creative.md +1748 -0
- package/skills/creative/modes/product-photo.md +1520 -0
- package/skills/creative/modes/product-video.md +1657 -0
- package/skills/creative/modes/social-graphics.md +1511 -0
- package/skills/creative/modes/talking-head.md +2208 -0
- package/skills/creative/references/VISUAL_INTELLIGENCE.md +1233 -0
- package/skills/deep-serp-article/SKILL.md +677 -0
- package/skills/deep-serp-article/SKILL.md.bak +530 -0
- package/skills/earned-media/SKILL.md +260 -0
- package/skills/email-sequences/SKILL.md +446 -0
- package/skills/email-sequences/references/sequence-templates.md +1217 -0
- package/skills/firecrawl/.skill-meta.json +13 -0
- package/skills/firecrawl/SKILL.md +154 -0
- package/skills/firecrawl/rules/install.md +63 -0
- package/skills/firecrawl/rules/security.md +26 -0
- package/skills/form-cro/SKILL.md +429 -0
- package/skills/form-cro/evals/evals.json +90 -0
- package/skills/free-tool-strategy/SKILL.md +325 -0
- package/skills/free-tool-strategy/evals/evals.json +90 -0
- package/skills/free-tool-strategy/references/tool-types.md +253 -0
- package/skills/frontend-slides/SKILL.md +248 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +347 -0
- package/skills/frontend-slides/animation-patterns.md +110 -0
- package/skills/frontend-slides/html-template.md +347 -0
- package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/skills/frontend-slides/viewport-base.css +153 -0
- package/skills/guardrail-framework/SKILL.md +319 -0
- package/skills/hook-generator/SKILL.md +438 -0
- package/skills/hook-generator/database/2026-PLATFORM-RESEARCH.md +211 -0
- package/skills/hook-generator/database/instagram-hooks.json +591 -0
- package/skills/hook-generator/database/linkedin-hooks.json +502 -0
- package/skills/hook-generator/database/medium-hooks.json +181 -0
- package/skills/hook-generator/database/tiktok-hooks.json +337 -0
- package/skills/hook-generator/database/twitter-hooks.json +567 -0
- package/skills/hook-generator/database/youtube-hooks.json +275 -0
- package/skills/hook-generator/package-lock.json +24 -0
- package/skills/hook-generator/package.json +5 -0
- package/skills/hook-generator/references/hook-generation-system.md +257 -0
- package/skills/hook-generator/references/hook-performance-analysis.json +153 -0
- package/skills/hook-generator/references/hooks-library.md +128 -0
- package/skills/hook-generator/references/platform-hook-frameworks.md +275 -0
- package/skills/hook-generator/scripts/generate-hooks-unified.js +722 -0
- package/skills/hook-generator/scripts/generate-hooks.js +225 -0
- package/skills/hook-generator/scripts/generate.sh +36 -0
- package/skills/hook-generator/scripts/ralph-hook-enhancer.js +864 -0
- package/skills/hook-generator/scripts/test-gemini-output.js +51 -0
- package/skills/humanizer/README.md +120 -0
- package/skills/humanizer/SKILL.md +699 -0
- package/skills/image-gen/SKILL.md +277 -0
- package/skills/image-gen/references/prompt-patterns.md +114 -0
- package/skills/image-gen/references/visual-metaphors.md +51 -0
- package/skills/impeccable/SKILL.md +86 -0
- package/skills/impeccable/reference/adapt.md +312 -0
- package/skills/impeccable/reference/adapt.native.md +58 -0
- package/skills/impeccable/reference/android.md +40 -0
- package/skills/impeccable/reference/animate.md +86 -0
- package/skills/impeccable/reference/audit.md +136 -0
- package/skills/impeccable/reference/audit.native.md +139 -0
- package/skills/impeccable/reference/bolder.md +31 -0
- package/skills/impeccable/reference/clarify.md +94 -0
- package/skills/impeccable/reference/colorize.md +86 -0
- package/skills/impeccable/reference/craft-floor.md +42 -0
- package/skills/impeccable/reference/craft.md +5 -0
- package/skills/impeccable/reference/critique.md +788 -0
- package/skills/impeccable/reference/degraded/asset-producer.md +90 -0
- package/skills/impeccable/reference/degraded/documenter.md +24 -0
- package/skills/impeccable/reference/degraded/finish-reviewer.md +37 -0
- package/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
- package/skills/impeccable/reference/delight.md +70 -0
- package/skills/impeccable/reference/distill.md +111 -0
- package/skills/impeccable/reference/doctor.md +53 -0
- package/skills/impeccable/reference/document.md +416 -0
- package/skills/impeccable/reference/extract.md +69 -0
- package/skills/impeccable/reference/harden.md +336 -0
- package/skills/impeccable/reference/hooks.md +105 -0
- package/skills/impeccable/reference/init.md +125 -0
- package/skills/impeccable/reference/ios.md +45 -0
- package/skills/impeccable/reference/layout.md +84 -0
- package/skills/impeccable/reference/live-setup.md +102 -0
- package/skills/impeccable/reference/live.md +323 -0
- package/skills/impeccable/reference/new-work.md +110 -0
- package/skills/impeccable/reference/onboard.md +234 -0
- package/skills/impeccable/reference/operate.md +61 -0
- package/skills/impeccable/reference/optimize.md +258 -0
- package/skills/impeccable/reference/overdrive.md +127 -0
- package/skills/impeccable/reference/polish.md +97 -0
- package/skills/impeccable/reference/quieter.md +99 -0
- package/skills/impeccable/reference/routing.md +18 -0
- package/skills/impeccable/reference/shape.md +59 -0
- package/skills/impeccable/reference/typeset.md +80 -0
- package/skills/impeccable/reference/visualize.md +49 -0
- package/skills/impeccable/scripts/command-metadata.json +94 -0
- package/skills/impeccable/scripts/concept-seed.mjs +558 -0
- package/skills/impeccable/scripts/context-signals.mjs +334 -0
- package/skills/impeccable/scripts/context.mjs +1467 -0
- package/skills/impeccable/scripts/critique-storage.mjs +213 -0
- package/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/skills/impeccable/scripts/detect.mjs +21 -0
- package/skills/impeccable/scripts/detector/browser/injected/index.mjs +2023 -0
- package/skills/impeccable/scripts/detector/cli/main.mjs +438 -0
- package/skills/impeccable/scripts/detector/design-system.mjs +1046 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +8283 -0
- package/skills/impeccable/scripts/detector/detect-antipatterns.mjs +50 -0
- package/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +372 -0
- package/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +1168 -0
- package/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +1186 -0
- package/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +264 -0
- package/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/skills/impeccable/scripts/detector/findings.mjs +18 -0
- package/skills/impeccable/scripts/detector/node/file-system.mjs +203 -0
- package/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/skills/impeccable/scripts/detector/registry/antipatterns.mjs +617 -0
- package/skills/impeccable/scripts/detector/rules/checks.mjs +5580 -0
- package/skills/impeccable/scripts/detector/shared/color.mjs +124 -0
- package/skills/impeccable/scripts/detector/shared/constants.mjs +112 -0
- package/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
- package/skills/impeccable/scripts/detector/shared/inline-ignores.mjs +148 -0
- package/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/skills/impeccable/scripts/doctor.mjs +336 -0
- package/skills/impeccable/scripts/embed-prompt.mjs +133 -0
- package/skills/impeccable/scripts/generate-image.mjs +240 -0
- package/skills/impeccable/scripts/hook-admin.mjs +801 -0
- package/skills/impeccable/scripts/hook-before-edit.mjs +508 -0
- package/skills/impeccable/scripts/hook-lib.mjs +2153 -0
- package/skills/impeccable/scripts/hook.mjs +78 -0
- package/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
- package/skills/impeccable/scripts/lib/composition-catalog.mjs +200 -0
- package/skills/impeccable/scripts/lib/concept-catalog.mjs +384 -0
- package/skills/impeccable/scripts/lib/design-parser.mjs +925 -0
- package/skills/impeccable/scripts/lib/impeccable-config.mjs +658 -0
- package/skills/impeccable/scripts/lib/impeccable-paths.mjs +137 -0
- package/skills/impeccable/scripts/lib/is-generated.mjs +69 -0
- package/skills/impeccable/scripts/lib/provider.mjs +5 -0
- package/skills/impeccable/scripts/lib/roll-selection.mjs +362 -0
- package/skills/impeccable/scripts/lib/staleness-deep.mjs +478 -0
- package/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
- package/skills/impeccable/scripts/lib/staleness.mjs +457 -0
- package/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
- package/skills/impeccable/scripts/lib/target-args.mjs +42 -0
- package/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
- package/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
- package/skills/impeccable/scripts/live/accept-css.mjs +617 -0
- package/skills/impeccable/scripts/live/accept-verify.mjs +60 -0
- package/skills/impeccable/scripts/live/browser-script-parts.mjs +55 -0
- package/skills/impeccable/scripts/live/completion.mjs +28 -0
- package/skills/impeccable/scripts/live/event-validation.mjs +199 -0
- package/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
- package/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +73 -0
- package/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
- package/skills/impeccable/scripts/live/frameworks/journal.mjs +197 -0
- package/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
- package/skills/impeccable/scripts/live/frameworks/nuxt.mjs +161 -0
- package/skills/impeccable/scripts/live/frameworks/script-src.mjs +17 -0
- package/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
- package/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
- package/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
- package/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
- package/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
- package/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
- package/skills/impeccable/scripts/live/insert-ui.mjs +458 -0
- package/skills/impeccable/scripts/live/instructions.mjs +142 -0
- package/skills/impeccable/scripts/live/manual-apply.mjs +939 -0
- package/skills/impeccable/scripts/live/manual-edit-routes.mjs +357 -0
- package/skills/impeccable/scripts/live/manual-edits-buffer.mjs +152 -0
- package/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
- package/skills/impeccable/scripts/live/roots.mjs +508 -0
- package/skills/impeccable/scripts/live/session-store.mjs +563 -0
- package/skills/impeccable/scripts/live/source-lock.mjs +105 -0
- package/skills/impeccable/scripts/live/source-search.mjs +105 -0
- package/skills/impeccable/scripts/live/svelte-ast.mjs +961 -0
- package/skills/impeccable/scripts/live/svelte-component.mjs +1342 -0
- package/skills/impeccable/scripts/live/sveltekit-adapter.mjs +316 -0
- package/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
- package/skills/impeccable/scripts/live/ui-core.mjs +180 -0
- package/skills/impeccable/scripts/live/vocabulary.mjs +171 -0
- package/skills/impeccable/scripts/live-accept.mjs +954 -0
- package/skills/impeccable/scripts/live-browser-dom.js +146 -0
- package/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/skills/impeccable/scripts/live-browser.js +12520 -0
- package/skills/impeccable/scripts/live-commit-manual-edits.mjs +1244 -0
- package/skills/impeccable/scripts/live-complete.mjs +107 -0
- package/skills/impeccable/scripts/live-copy-edit-agent.mjs +683 -0
- package/skills/impeccable/scripts/live-discard-manual-edits.mjs +51 -0
- package/skills/impeccable/scripts/live-inject.mjs +503 -0
- package/skills/impeccable/scripts/live-insert.mjs +292 -0
- package/skills/impeccable/scripts/live-manual-edit-evidence.mjs +368 -0
- package/skills/impeccable/scripts/live-poll.mjs +429 -0
- package/skills/impeccable/scripts/live-resume.mjs +123 -0
- package/skills/impeccable/scripts/live-server.mjs +1669 -0
- package/skills/impeccable/scripts/live-status.mjs +71 -0
- package/skills/impeccable/scripts/live-target.mjs +30 -0
- package/skills/impeccable/scripts/live-wrap.mjs +927 -0
- package/skills/impeccable/scripts/live.mjs +359 -0
- package/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/skills/impeccable/scripts/palette.mjs +628 -0
- package/skills/impeccable/scripts/pin.mjs +221 -0
- package/skills/impeccable/scripts/serve-question.mjs +932 -0
- package/skills/impeccable/scripts/surface-brief.mjs +74 -0
- package/skills/inkstone-admin/SKILL.md +66 -0
- package/skills/jev-hook-gate/SKILL.md +111 -0
- package/skills/keyword-research/SKILL.md +503 -0
- package/skills/keyword-research/references/dr-cap-and-confidence.md +62 -0
- package/skills/keyword-research/references/keyword-examples.md +769 -0
- package/skills/landing-page-architect/SKILL.md +585 -0
- package/skills/landing-page-architect/references/architecture-reference.md +32 -0
- package/skills/launch-strategy/SKILL.md +384 -0
- package/skills/launch-strategy/evals/evals.json +91 -0
- package/skills/launch-strategy/references/launch-checklist.md +209 -0
- package/skills/launch-strategy/references/launch-timeline.md +159 -0
- package/skills/lead-email-craft/SKILL.md +522 -0
- package/skills/lead-magnets/SKILL.md +310 -0
- package/skills/lead-magnets/references/benchmarks.md +129 -0
- package/skills/lead-magnets/references/format-guide.md +196 -0
- package/skills/link-building-seo/SKILL.md +210 -0
- package/skills/lint-report.txt +1 -0
- package/skills/manifest.json +129 -0
- package/skills/marketing-demo/SKILL.md +249 -0
- package/skills/marketing-demo/references/remotion-examples.md +281 -0
- package/skills/marketing-ideas/SKILL.md +167 -0
- package/skills/marketing-ideas/evals/evals.json +90 -0
- package/skills/marketing-ideas/references/ideas-by-category.md +366 -0
- package/skills/marketing-psychology/SKILL.md +374 -0
- package/skills/marketing-psychology/evals/evals.json +88 -0
- package/skills/marketing-psychology/references/case-studies.md +148 -0
- package/skills/narrative-research-article/SKILL.md +469 -0
- package/skills/narrative-research-article/references/lanusse-patterns.md +166 -0
- package/skills/notebooklm/SKILL.md +674 -0
- package/skills/off-page-seo/SKILL.md +219 -0
- package/skills/onboarding-cro/SKILL.md +220 -0
- package/skills/onboarding-cro/evals/evals.json +92 -0
- package/skills/onboarding-cro/references/experiments.md +258 -0
- package/skills/original-research/SKILL.md +388 -0
- package/skills/page-cro/SKILL.md +269 -0
- package/skills/page-cro/references/cro-benchmarks.md +140 -0
- package/skills/paper-marketing/SKILL.md +448 -0
- package/skills/paper-marketing/references/agent-quality-rubric.md +68 -0
- package/skills/paper-marketing/references/brand-system-template.md +120 -0
- package/skills/paper-marketing/references/paper-mcp-rules.md +71 -0
- package/skills/paper-marketing/references/platform-conventions.md +43 -0
- package/skills/paywall-upgrade-cro/SKILL.md +227 -0
- package/skills/paywall-upgrade-cro/evals/evals.json +93 -0
- package/skills/paywall-upgrade-cro/references/experiments.md +164 -0
- package/skills/platform-formatting/SKILL.md +51 -0
- package/skills/popup-cro/SKILL.md +454 -0
- package/skills/popup-cro/evals/evals.json +94 -0
- package/skills/positioning-angles/SKILL.md +524 -0
- package/skills/positioning-angles/references/ad-matrix-and-examples.md +176 -0
- package/skills/positioning-angles/references/angle-frameworks.md +187 -0
- package/skills/positioning-angles/references/dunford-positioning.md +135 -0
- package/skills/positioning-angles/references/hormozi-offer.md +247 -0
- package/skills/positioning-angles/references/schwartz-sophistication.md +166 -0
- package/skills/positioning-angles/references/unique-mechanism.md +162 -0
- package/skills/pricing-strategy/SKILL.md +346 -0
- package/skills/pricing-strategy/evals/evals.json +90 -0
- package/skills/pricing-strategy/references/research-methods.md +152 -0
- package/skills/pricing-strategy/references/tier-structure.md +307 -0
- package/skills/programmatic-seo/SKILL.md +238 -0
- package/skills/programmatic-seo/evals/evals.json +94 -0
- package/skills/programmatic-seo/references/playbooks.md +308 -0
- package/skills/project-rag/SKILL.md +127 -0
- package/skills/quality-gate/SKILL.md +519 -0
- package/skills/quality-gate/judge-personas/buyer.md +47 -0
- package/skills/quality-gate/judge-personas/expert.md +47 -0
- package/skills/quality-gate/judge-personas/outsider.md +47 -0
- package/skills/quality-gate/judge-personas/scanner.md +41 -0
- package/skills/quality-gate/judge-personas/skeptic.md +40 -0
- package/skills/referral-program/SKILL.md +290 -0
- package/skills/referral-program/evals/evals.json +89 -0
- package/skills/referral-program/references/affiliate-programs.md +163 -0
- package/skills/referral-program/references/program-examples.md +143 -0
- package/skills/review-sites/SKILL.md +279 -0
- package/skills/revops/SKILL.md +343 -0
- package/skills/revops/evals/evals.json +91 -0
- package/skills/revops/references/automation-playbooks.md +290 -0
- package/skills/revops/references/lifecycle-definitions.md +278 -0
- package/skills/revops/references/routing-rules.md +203 -0
- package/skills/revops/references/scoring-models.md +247 -0
- package/skills/saas-product-seo/SKILL.md +324 -0
- package/skills/sales-enablement/SKILL.md +349 -0
- package/skills/sales-enablement/evals/evals.json +91 -0
- package/skills/sales-enablement/references/deck-frameworks.md +263 -0
- package/skills/sales-enablement/references/demo-scripts.md +355 -0
- package/skills/sales-enablement/references/objection-library.md +270 -0
- package/skills/sales-enablement/references/one-pager-templates.md +208 -0
- package/skills/schema-markup/SKILL.md +179 -0
- package/skills/schema-markup/evals/evals.json +87 -0
- package/skills/schema-markup/references/schema-examples.md +398 -0
- package/skills/self-improve/SKILL.md +166 -0
- package/skills/self-improving-agent/README.md +243 -0
- package/skills/self-improving-agent/SKILL.md +437 -0
- package/skills/self-improving-agent/scripts/__init__.py +16 -0
- package/skills/self-improving-agent/scripts/__pycache__/auto_detect.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/nlm_curation.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/__pycache__/self_improving_agent.cpython-314.pyc +0 -0
- package/skills/self-improving-agent/scripts/auto_detect.py +270 -0
- package/skills/self-improving-agent/scripts/init_expertise_registry.py +89 -0
- package/skills/self-improving-agent/scripts/nlm_curation.py +259 -0
- package/skills/self-improving-agent/scripts/self-improving-agent +113 -0
- package/skills/self-improving-agent/scripts/self_improving_agent.py +603 -0
- package/skills/self-improving-agent/scripts/test_curation_scorer.py +20 -0
- package/skills/self-improving-agent/scripts/test_self_improving.py +184 -0
- package/skills/send-email/SKILL.md +426 -0
- package/skills/send-email/references/batch-email-examples.md +807 -0
- package/skills/send-email/references/best-practices.md +453 -0
- package/skills/send-email/references/installation.md +123 -0
- package/skills/send-email/references/single-email-examples.md +470 -0
- package/skills/send-email/references/webhooks.md +221 -0
- package/skills/seo-audit/SKILL.md +362 -0
- package/skills/seo-audit/references/ai-writing-detection.md +200 -0
- package/skills/seo-audit/references/architecture-patterns.md +271 -0
- package/skills/seo-audit/references/schema-templates.md +427 -0
- package/skills/seo-content/SKILL.md +510 -0
- package/skills/seo-content/references/anti-ai-detection.md +184 -0
- package/skills/seo-content/references/content-structures.md +148 -0
- package/skills/seo-content/references/eeat-examples.md +235 -0
- package/skills/seo-content/references/on-page-seo.md +261 -0
- package/skills/seo-content/references/pseo-playbooks.md +226 -0
- package/skills/seo-content/references/schema-templates.md +104 -0
- package/skills/seo-content/references/serp-analysis-format.md +151 -0
- package/skills/seo-machine/SKILL.md +331 -0
- package/skills/seo-machine/assets/brand-template.md +73 -0
- package/skills/seo-machine/assets/link-inventory-template.md +74 -0
- package/skills/seo-machine/assets/roadmap-template.md +184 -0
- package/skills/seo-machine/references/api-stack-recipes.md +230 -0
- package/skills/seo-machine/references/exa-recipes.md +260 -0
- package/skills/seo-machine/references/manual-research.md +73 -0
- package/skills/seo-machine/references/methodology.md +87 -0
- package/skills/seo-machine/references/off-page.md +123 -0
- package/skills/seo-machine/references/patterns/alternatives.md +176 -0
- package/skills/seo-machine/references/patterns/compare.md +105 -0
- package/skills/seo-machine/references/patterns/playbooks.md +106 -0
- package/skills/seo-machine/references/patterns/use-case.md +109 -0
- package/skills/seo-machine/references/quality-bars.md +99 -0
- package/skills/seo-machine/references/stacks/astro.md +156 -0
- package/skills/seo-machine/references/stacks/detection.md +61 -0
- package/skills/seo-machine/references/stacks/markdown-fallback.md +181 -0
- package/skills/seo-machine/references/stacks/nextjs.md +108 -0
- package/skills/seo-machine/references/stacks/rails-inertia.md +99 -0
- package/skills/seo-machine/references/striking-distance.md +116 -0
- package/skills/seo-machine/references/technical-audit.md +153 -0
- package/skills/seo-machine/scripts/link_audit.py +265 -0
- package/skills/seo-machine/scripts/tech_audit.py +221 -0
- package/skills/seo-machine/scripts/word_count.py +154 -0
- package/skills/sharp-thesis-validator/SKILL.md +393 -0
- package/skills/sharp-thesis-validator/examples.md +186 -0
- package/skills/signup-flow-cro/SKILL.md +359 -0
- package/skills/signup-flow-cro/evals/evals.json +88 -0
- package/skills/site-architecture/SKILL.md +357 -0
- package/skills/site-architecture/evals/evals.json +88 -0
- package/skills/site-architecture/references/mermaid-templates.md +216 -0
- package/skills/site-architecture/references/navigation-patterns.md +305 -0
- package/skills/site-architecture/references/site-type-templates.md +293 -0
- package/skills/skill-self-improvement/SKILL.md +151 -0
- package/skills/slideshow-script/SKILL.md +274 -0
- package/skills/slideshow-script/references/content-spec-schema.md +77 -0
- package/skills/slideshow-script/references/frameworks.md +84 -0
- package/skills/slideshow-script/references/paips-framework.md +37 -0
- package/skills/social-campaign/SKILL.md +419 -0
- package/skills/social-campaign/references/paper-mcp-workflow.md +48 -0
- package/skills/social-content/SKILL.md +359 -0
- package/skills/social-content/evals/evals.json +92 -0
- package/skills/social-content/references/platforms.md +170 -0
- package/skills/social-content/references/post-templates.md +177 -0
- package/skills/social-content/references/reverse-engineering.md +195 -0
- package/skills/social-worker/SKILL.md +204 -0
- package/skills/startup-launcher/SKILL.md +252 -0
- package/skills/startup-launcher/references/file-router.md +64 -0
- package/skills/startup-launcher/references/platform-matrix.md +65 -0
- package/skills/startup-launcher/references/platforms/alternativeto.md +283 -0
- package/skills/startup-launcher/references/platforms/appsumo.md +495 -0
- package/skills/startup-launcher/references/platforms/auraplusplus.md +736 -0
- package/skills/startup-launcher/references/platforms/betalist.md +98 -0
- package/skills/startup-launcher/references/platforms/capterra.md +276 -0
- package/skills/startup-launcher/references/platforms/crunchbase.md +514 -0
- package/skills/startup-launcher/references/platforms/dealify.md +291 -0
- package/skills/startup-launcher/references/platforms/dealmirror.md +313 -0
- package/skills/startup-launcher/references/platforms/desifounder.md +490 -0
- package/skills/startup-launcher/references/platforms/devhunt.md +210 -0
- package/skills/startup-launcher/references/platforms/devpost.md +448 -0
- package/skills/startup-launcher/references/platforms/fazier.md +56 -0
- package/skills/startup-launcher/references/platforms/firsto.md +489 -0
- package/skills/startup-launcher/references/platforms/g2.md +226 -0
- package/skills/startup-launcher/references/platforms/hackernews.md +99 -0
- package/skills/startup-launcher/references/platforms/hackernoon.md +385 -0
- package/skills/startup-launcher/references/platforms/indiedeals.md +367 -0
- package/skills/startup-launcher/references/platforms/indiehackers.md +80 -0
- package/skills/startup-launcher/references/platforms/kenmoo.md +231 -0
- package/skills/startup-launcher/references/platforms/labstartups.md +618 -0
- package/skills/startup-launcher/references/platforms/launchboard.md +307 -0
- package/skills/startup-launcher/references/platforms/launchfast.md +560 -0
- package/skills/startup-launcher/references/platforms/launchigniter.md +56 -0
- package/skills/startup-launcher/references/platforms/launchingnext.md +674 -0
- package/skills/startup-launcher/references/platforms/launchit.md +574 -0
- package/skills/startup-launcher/references/platforms/launchyourapp.md +677 -0
- package/skills/startup-launcher/references/platforms/libhunt.md +220 -0
- package/skills/startup-launcher/references/platforms/ltdhunt.md +221 -0
- package/skills/startup-launcher/references/platforms/microlaunch.md +45 -0
- package/skills/startup-launcher/references/platforms/openalternative.md +195 -0
- package/skills/startup-launcher/references/platforms/peerlist.md +56 -0
- package/skills/startup-launcher/references/platforms/peerpush.md +64 -0
- package/skills/startup-launcher/references/platforms/primeclub.md +282 -0
- package/skills/startup-launcher/references/platforms/productcanyon.md +190 -0
- package/skills/startup-launcher/references/platforms/producthunt.md +98 -0
- package/skills/startup-launcher/references/platforms/rankinpublic.md +315 -0
- package/skills/startup-launcher/references/platforms/rockethub.md +374 -0
- package/skills/startup-launcher/references/platforms/saasgenius.md +175 -0
- package/skills/startup-launcher/references/platforms/saashub.md +205 -0
- package/skills/startup-launcher/references/platforms/saasmantra.md +221 -0
- package/skills/startup-launcher/references/platforms/saaspirate.md +287 -0
- package/skills/startup-launcher/references/platforms/saaswarrior.md +190 -0
- package/skills/startup-launcher/references/platforms/saaszilla.md +194 -0
- package/skills/startup-launcher/references/platforms/selected.md +925 -0
- package/skills/startup-launcher/references/platforms/sideprojectors.md +86 -0
- package/skills/startup-launcher/references/platforms/softonic.md +240 -0
- package/skills/startup-launcher/references/platforms/sourceforge.md +251 -0
- package/skills/startup-launcher/references/platforms/stacksocial.md +244 -0
- package/skills/startup-launcher/references/platforms/startupstash.md +326 -0
- package/skills/startup-launcher/references/platforms/theresanaiforthat.md +253 -0
- package/skills/startup-launcher/references/platforms/tinylaunch.md +70 -0
- package/skills/startup-launcher/references/platforms/tinystartups.md +72 -0
- package/skills/startup-launcher/references/platforms/toolfolio.md +291 -0
- package/skills/startup-launcher/references/platforms/trustmrr.md +194 -0
- package/skills/startup-launcher/references/platforms/trylaunch.md +531 -0
- package/skills/startup-launcher/references/platforms/uneed.md +57 -0
- package/skills/startup-launcher/references/templates/asset-checklist.md +218 -0
- package/skills/startup-launcher/references/templates/launch-tracker.md +195 -0
- package/skills/startup-launcher/references/templates/product-brief.md +98 -0
- package/skills/summarize/.skill-meta.json +13 -0
- package/skills/summarize/SKILL.md +170 -0
- package/skills/summarize/rules/install.md +157 -0
- package/skills/summarize/rules/usage.md +207 -0
- package/skills/topical-authority/SKILL.md +307 -0
- package/skills/topical-authority/references/jake-ward-framework.md +201 -0
- package/skills/topical-authority/references/serp-clustering-algorithm.md +325 -0
- package/skills/topical-authority/scripts/orchestrator.js +367 -0
- package/skills/topical-authority/scripts/seo/analyze-competitor-coverage.js +3 -0
- package/skills/topical-authority/scripts/seo/audit-internal-links.js +3 -0
- package/skills/topical-authority/scripts/seo/build-clusters-from-serp.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-keywords-from-forums.js +3 -0
- package/skills/topical-authority/scripts/seo/extract-paa-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/fetch-serp-urls.js +3 -0
- package/skills/topical-authority/scripts/seo/gemini-serp-clustering.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-content-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/identify-research-gaps.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-quora-questions.js +3 -0
- package/skills/topical-authority/scripts/seo/scrape-reddit-pain-points.js +3 -0
- package/skills/topical-authority/scripts/seo/weave-internal-links.js +3 -0
- package/skills/visual-style/SKILL.md +199 -0
- package/skills/voice-brand-alignment/SKILL.md +70 -0
- package/skills/voice-brand-alignment/references/ai-slop-patterns.md +405 -0
- package/skills/voice-brand-alignment/scripts/validation/gemini-voice-validator.js +96 -0
- package/skills/voice-extraction/SKILL.md +234 -0
- package/skills/voice-extraction/references/extraction-prompt.md +155 -0
- package/skills/voice-extraction/references/voice-dna-template.md +168 -0
- package/skills/voice-extraction/references/voice-elements.md +259 -0
- package/skills/voice-extraction/scripts/build-corpus.js +120 -0
- package/skills/voice-extraction/scripts/collect-sources.sh +168 -0
- package/skills/warm-outbound/SKILL.md +299 -0
- package/skills/warm-outbound/templates/warm-message.md +39 -0
- package/skills/weekly-newsletter-digest/SKILL.md +78 -0
- package/skills/x-playwriter/SKILL.md +428 -0
- package/skills/x-playwriter/scripts/x-browser.js +185 -0
- package/skills/x-post-generator-openclaw/SKILL.md +138 -0
- package/skills/x-post-generator-openclaw/scripts/generate-x-post.js +537 -0
- package/skills/x-posting-playwriter/SKILL.md +203 -0
- package/skills/x-research/SKILL.md +129 -0
- package/skills/x-research/x-research.sh +85 -0
- package/skills/youtube-summarize/SKILL.md +90 -0
- package/skills/youtube-summarize/scripts/youtube-summarize.sh +143 -0
- package/src/cli.js +349 -172
- package/src/harness/deepseek-adapter.js +102 -0
- package/src/harness/deepseek.js +225 -0
- package/src/harness/opencode-adapter.js +174 -0
- package/src/harness/pi-adapter.js +172 -0
- package/src/harness/registry.js +121 -0
- package/src/harness/telemetry.js +102 -0
- package/src/harness/types.js +165 -0
- package/src/interview.js +36 -4
- package/src/postinstall.js +10 -12
- package/templates/AGENTS.md +17 -17
- package/templates/ORG.md +1 -1
- package/templates/TOOLS.md +7 -2
- package/templates/opencode.json +26 -29
- package/wiki/doctor.md +54 -0
- package/wiki/inkstone.md +4 -4
- package/wiki/opencode.md +3 -3
- package/skills/curated.txt +0 -68
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sharp-thesis-validator
|
|
3
|
+
description: Validate that a topic or title passes the Sharp-Thesis (Cerebras) Test before writing begins — single arguable claim, concrete number, urgency, and title length limits. Use when validating article titles, selecting topics, planning content, or filtering NLM mindmap nodes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# sharp-thesis-validator
|
|
7
|
+
|
|
8
|
+
**Purpose:** Validate that a topic/title passes the Sharp-Thesis (Cerebras) Test before writing begins. Requires a single arguable claim, a concrete number, urgency, and a title expressible in ≤80 chars (long-form) or ≤280 chars (social). Brand-agnostic — loads evergreen brand-assets for context-aware validation.
|
|
9
|
+
|
|
10
|
+
> **Invocation (two ways):**
|
|
11
|
+
> 1. **CLI (deterministic — for scripts, cron, kanban workers):**
|
|
12
|
+
> `sharp-thesis-validator "<title>" --brand <brand> [--mode long-form|social] [--json]`
|
|
13
|
+
> Installed at `~/clawd/scripts/validate-thesis.mjs`, symlinked to `~/.local/bin/sharp-thesis-validator`.
|
|
14
|
+
> Exit codes: 0 = PASS, 1 = FAIL, 2 = usage error. `--json` emits the verdict schema below.
|
|
15
|
+
> Note: the CLI counts only numbers present IN the title and prints rule-based fix hints.
|
|
16
|
+
> 2. **Interactive (for brand-aware reframe suggestions):** load via
|
|
17
|
+
> `skill("sharp-thesis-validator")` — the agent can additionally enrich from brand
|
|
18
|
+
> pricing/ICP files (official-pricing.md, icp-profiles.md) that the CLI does not read.
|
|
19
|
+
|
|
20
|
+
**Use when:** validating article titles, selecting topics, planning content, filtering NLM mindmap nodes, pre-checking before any writing skill, validating social post hooks.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Configuration
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
name: sharp-thesis-validator
|
|
28
|
+
description: >
|
|
29
|
+
Validates topics/titles against the Sharp-Thesis (Cerebras) Test.
|
|
30
|
+
Requires: single arguable claim, concrete number, urgency, title ≤80/280 chars.
|
|
31
|
+
Brand-agnostic — loads evergreen brand-assets for context.
|
|
32
|
+
Use when: validating titles, selecting topics, pre-writing checks.
|
|
33
|
+
depends-on: []
|
|
34
|
+
triggers:
|
|
35
|
+
- validate thesis
|
|
36
|
+
- sharp thesis
|
|
37
|
+
- cerebras test
|
|
38
|
+
- topic validation
|
|
39
|
+
- is this topic sharp enough
|
|
40
|
+
- validate title
|
|
41
|
+
- validate hook
|
|
42
|
+
mode:
|
|
43
|
+
- long-form # ≤80 chars, all criteria strict
|
|
44
|
+
- social # ≤280 chars, urgency relaxed
|
|
45
|
+
allowed-tools:
|
|
46
|
+
- Read
|
|
47
|
+
- Glob
|
|
48
|
+
- Bash
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Execution Flow
|
|
54
|
+
|
|
55
|
+
### Step 1: Parse Input
|
|
56
|
+
|
|
57
|
+
Extract from user input:
|
|
58
|
+
- **topic** or **title** (required)
|
|
59
|
+
- **brand** (optional, e.g., "enchantents", "nomadixgear", "aiwithjai")
|
|
60
|
+
- **mode** (optional, default "long-form"; options: "long-form", "social")
|
|
61
|
+
|
|
62
|
+
If no brand provided → run universal-only validation (no brand enrichment).
|
|
63
|
+
|
|
64
|
+
### Step 2: Resolve Brand Assets
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Primary path: businesses/{parent}/{brand}/brand-assets/
|
|
68
|
+
Fallback path: brands/{brand}/content/00-assets/
|
|
69
|
+
If neither exists → proceed with universal rules only
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Load these files (graceful degradation — skip missing):**
|
|
73
|
+
| File | Purpose |
|
|
74
|
+
|------|---------|
|
|
75
|
+
| `voice-guide.md` | Title tone, writing style |
|
|
76
|
+
| `icp-profiles.md` | What numbers resonate with this ICP |
|
|
77
|
+
| `business-profile.md` | Market context, what "urgency" means |
|
|
78
|
+
| `brand-overrides.md` | Banned claims, positioning constraints |
|
|
79
|
+
| `landscape.md` | Claims blacklist |
|
|
80
|
+
| `thesis-config.md` | Brand-specific overrides (optional) |
|
|
81
|
+
| `official-pricing.md` | Dollar figures for number suggestions |
|
|
82
|
+
| `technical-specifications.md` | Specs for concrete numbers |
|
|
83
|
+
|
|
84
|
+
### Step 3: Load thesis-config.md (if exists)
|
|
85
|
+
|
|
86
|
+
Override universal defaults:
|
|
87
|
+
```yaml
|
|
88
|
+
# thesis-config.md example
|
|
89
|
+
number_style:
|
|
90
|
+
currency: USD
|
|
91
|
+
preferred_metrics: [ROI, payback_period, lifespan_years, replacement_cost]
|
|
92
|
+
number_format: digits
|
|
93
|
+
|
|
94
|
+
title_preferences:
|
|
95
|
+
max_length: 72 # override default 80
|
|
96
|
+
allow_colons: false
|
|
97
|
+
style: magazine_cover
|
|
98
|
+
|
|
99
|
+
urgency_triggers:
|
|
100
|
+
- Hurricane season (June-November)
|
|
101
|
+
- Replacement cycle year 2-3
|
|
102
|
+
- New competitor entering market
|
|
103
|
+
|
|
104
|
+
banned_patterns:
|
|
105
|
+
- "X is the future"
|
|
106
|
+
- "Why you need X"
|
|
107
|
+
- "The ultimate guide to X"
|
|
108
|
+
|
|
109
|
+
social:
|
|
110
|
+
max_length: 200
|
|
111
|
+
urgency_required: false
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 4: Validate Against 4 Criteria
|
|
115
|
+
|
|
116
|
+
#### Criterion 1: Single Arguable Claim
|
|
117
|
+
```
|
|
118
|
+
PASS: "X does Y because Z" — a position someone could disagree with
|
|
119
|
+
FAIL: "X is important" / "All about X" / survey-style topic
|
|
120
|
+
|
|
121
|
+
Test: Can a reasonable person argue against this?
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Detection logic:**
|
|
125
|
+
- Look for causal language: "because", "causes", "costs", "beats", "outperforms"
|
|
126
|
+
- Look for comparative language: "more than", "vs", "better than", "cheaper than"
|
|
127
|
+
- Reject descriptive-only: "is", "has", "includes", "about"
|
|
128
|
+
- Reject survey language: "guide to", "overview of", "introduction to"
|
|
129
|
+
|
|
130
|
+
#### Criterion 2: Concrete Number
|
|
131
|
+
```
|
|
132
|
+
PASS: Dollar figure, percentage, timeframe, count, ratio
|
|
133
|
+
FAIL: "lots of money" / "significant savings" / "many customers"
|
|
134
|
+
|
|
135
|
+
Test: Strip the number out — does the claim lose its engine?
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Detection logic (regex patterns):**
|
|
139
|
+
- Currency: `\$[\d,]+(\.\d{2})?` or `USD[\d,]+` or `€[\d,]+` or `£[\d,]+`
|
|
140
|
+
- Percentage: `\d+%` or `percent`
|
|
141
|
+
- Timeframe: `\d+\s*(years?|months?|weeks?|days?|hours?)`
|
|
142
|
+
- Count: `\d+\s*(units?|customers?|users?|posts?|articles?)`
|
|
143
|
+
- Ratio: `\d+:\d+` or `\d+x` (e.g., "10x", "3:1")
|
|
144
|
+
|
|
145
|
+
#### Criterion 3: Urgency / Why Now
|
|
146
|
+
```
|
|
147
|
+
PASS: Time-bound trigger (season, deadline, regulatory change, market shift,
|
|
148
|
+
competitor failure, new data, product launch)
|
|
149
|
+
FAIL: "it's always been true" / evergreen only with no time delta
|
|
150
|
+
|
|
151
|
+
Test: Would this article be less urgent in 6 months?
|
|
152
|
+
If no urgency delta → FAIL.
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Detection logic:**
|
|
156
|
+
- Time markers: "2026", "this year", "now", "before", "deadline", "season"
|
|
157
|
+
- Event markers: "launch", "change", "new", "shift", "crisis", "update"
|
|
158
|
+
- Comparative urgency: "vs last year", "since", "for the first time"
|
|
159
|
+
- Brand enrichment: check thesis-config.md for brand-specific urgency triggers
|
|
160
|
+
|
|
161
|
+
**Social mode relaxation:**
|
|
162
|
+
- If mode="social" AND thesis-config.social.urgency_required=false
|
|
163
|
+
- Then urgency is OPTIONAL
|
|
164
|
+
- Otherwise: required for both modes
|
|
165
|
+
|
|
166
|
+
#### Criterion 4: Title Expressibility (≤max_length chars)
|
|
167
|
+
```
|
|
168
|
+
PASS: Thesis fits in title under max_length
|
|
169
|
+
FAIL: Needs subtitle to make sense, or exceeds character limit
|
|
170
|
+
|
|
171
|
+
Default max_length:
|
|
172
|
+
- long-form: 80 chars
|
|
173
|
+
- social: 280 chars (tweet length)
|
|
174
|
+
Override: thesis-config.title_preferences.max_length or thesis-config.social.max_length
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Test:**
|
|
178
|
+
1. Write the title from the topic
|
|
179
|
+
2. Count characters (including spaces)
|
|
180
|
+
3. Check against limit
|
|
181
|
+
4. No colons-as-cheating (unless thesis-config.title_preferences.allow_colons=true)
|
|
182
|
+
|
|
183
|
+
### Step 5: Generate Output
|
|
184
|
+
|
|
185
|
+
#### On PASS (all 4 criteria met):
|
|
186
|
+
```json
|
|
187
|
+
{
|
|
188
|
+
"result": "PASS",
|
|
189
|
+
"title": "Why cheap glamping fabric costs more than hurricane damage",
|
|
190
|
+
"title_length": 56,
|
|
191
|
+
"criteria": {
|
|
192
|
+
"1_claim": { "passed": true, "detected_claim": "Cheap fabric replacement cycles cost more than hurricane damage" },
|
|
193
|
+
"2_number": { "passed": true, "detected_number": "$168,960 vs $25,000" },
|
|
194
|
+
"3_urgency": { "passed": true, "detected_urgency": "Tropical UV degradation runs 2x faster, replacement cycles accelerating" },
|
|
195
|
+
"4_title_length": { "passed": true, "length": 56, "max_allowed": 80 }
|
|
196
|
+
},
|
|
197
|
+
"mode": "long-form",
|
|
198
|
+
"action": "PROCEED"
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
#### On FAIL (any criterion failed):
|
|
203
|
+
```json
|
|
204
|
+
{
|
|
205
|
+
"result": "FAIL",
|
|
206
|
+
"topic": "Glamping tents are durable",
|
|
207
|
+
"failed_criteria": [1, 2, 3],
|
|
208
|
+
"failures": {
|
|
209
|
+
"1": {
|
|
210
|
+
"criterion": "single_arguable_claim",
|
|
211
|
+
"reason": "Not an arguable claim — 'durable' is a description, not a position",
|
|
212
|
+
"fix": "Reframe as: 'X outperforms Y because Z'"
|
|
213
|
+
},
|
|
214
|
+
"2": {
|
|
215
|
+
"criterion": "concrete_number",
|
|
216
|
+
"reason": "No concrete number found",
|
|
217
|
+
"fix": "Add a dollar figure, percentage, or timeframe"
|
|
218
|
+
},
|
|
219
|
+
"3": {
|
|
220
|
+
"criterion": "urgency",
|
|
221
|
+
"reason": "No time-bound urgency — true today, true in 2026, true in 2030",
|
|
222
|
+
"fix": "Add a time trigger: 'before hurricane season', 'in 2026', etc."
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"reframe_suggestions": [
|
|
226
|
+
{
|
|
227
|
+
"title": "Why cheap fabric costs more than hurricane damage",
|
|
228
|
+
"rationale": "Uses pricing data from brand-assets/official-pricing.md",
|
|
229
|
+
"source_file": "official-pricing.md"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"title": "The $2,800 cover that outlasts 5 cheaper replacements",
|
|
233
|
+
"rationale": "Lifespan comparison from brand-assets/technical-specifications.md",
|
|
234
|
+
"source_file": "technical-specifications.md"
|
|
235
|
+
}
|
|
236
|
+
],
|
|
237
|
+
"claims_blacklist_hits": [],
|
|
238
|
+
"mode": "long-form",
|
|
239
|
+
"action": "BLOCKED — reframe topic before proceeding"
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Step 6: Claims Blacklist Check (Always Runs)
|
|
244
|
+
|
|
245
|
+
If brand was provided AND brand-assets loaded:
|
|
246
|
+
1. Read `brand-overrides.md` → extract banned claims
|
|
247
|
+
2. Read `landscape.md` → extract "Claims Blacklist" section
|
|
248
|
+
3. Read `thesis-config.md` → extract `banned_patterns`
|
|
249
|
+
4. Check proposed title against all banned patterns
|
|
250
|
+
5. If hits found → add to `claims_blacklist_hits` array in output
|
|
251
|
+
|
|
252
|
+
**This check is additive — a topic can pass 4 criteria but still FAIL if it hits the blacklist.**
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Mode Switching
|
|
257
|
+
|
|
258
|
+
Determine mode from input:
|
|
259
|
+
```
|
|
260
|
+
--mode long-form → use long-form limits (default)
|
|
261
|
+
--mode social → use social limits
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Or infer from calling skill:
|
|
265
|
+
- Called by article-generator, blog-worker, nlm-hub-spoke → long-form
|
|
266
|
+
- Called by social-construction, x-post-generator-openclaw, content-atomizer → social
|
|
267
|
+
|
|
268
|
+
Apply limits:
|
|
269
|
+
| Criterion | long-form | social |
|
|
270
|
+
|-----------|-----------|--------|
|
|
271
|
+
| Title max length | 80 (or thesis-config override) | 280 (or thesis-config.social override) |
|
|
272
|
+
| Urgency required | Always | Only if thesis-config.social.urgency_required != false |
|
|
273
|
+
| Claim (single arguable) | Required | Required |
|
|
274
|
+
| Number (concrete) | Required | Required |
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Brand-Aware Reframe Engine
|
|
279
|
+
|
|
280
|
+
When generating reframe suggestions on FAIL:
|
|
281
|
+
|
|
282
|
+
1. **Read official-pricing.md** → extract dollar figures for number suggestions
|
|
283
|
+
2. **Read icp-profiles.md** → match pain points to urgency triggers
|
|
284
|
+
3. **Read technical-specifications.md** → find concrete specs (dimensions, lifespan, materials)
|
|
285
|
+
4. **Read landscape.md** → check claims blacklist before suggesting
|
|
286
|
+
5. **Read thesis-config.md** → apply brand-specific title preferences
|
|
287
|
+
|
|
288
|
+
Generate 2-3 reframe suggestions that:
|
|
289
|
+
- Pass all 4 criteria
|
|
290
|
+
- Use brand-specific numbers/pricing
|
|
291
|
+
- Avoid blacklist hits
|
|
292
|
+
- Match voice/tone from voice-guide.md
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## Examples
|
|
297
|
+
|
|
298
|
+
### Long-form PASS
|
|
299
|
+
```
|
|
300
|
+
Input: "Why cheap glamping fabric costs more than hurricane damage"
|
|
301
|
+
Brand: enchantents
|
|
302
|
+
Mode: long-form
|
|
303
|
+
|
|
304
|
+
Output: {
|
|
305
|
+
"result": "PASS",
|
|
306
|
+
"title": "Why cheap glamping fabric costs more than hurricane damage",
|
|
307
|
+
"title_length": 56,
|
|
308
|
+
"criteria": {...all passed...},
|
|
309
|
+
"action": "PROCEED"
|
|
310
|
+
}
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Long-form FAIL
|
|
314
|
+
```
|
|
315
|
+
Input: "Glamping tents are durable"
|
|
316
|
+
Brand: enchantents
|
|
317
|
+
Mode: long-form
|
|
318
|
+
|
|
319
|
+
Output: {
|
|
320
|
+
"result": "FAIL",
|
|
321
|
+
"failed_criteria": [1, 2, 3],
|
|
322
|
+
"failures": {...},
|
|
323
|
+
"reframe_suggestions": [...],
|
|
324
|
+
"action": "BLOCKED"
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Social PASS
|
|
329
|
+
```
|
|
330
|
+
Input: "Survived 3 hurricane seasons with zero patches. This $2,800 fabric isn't cheap — it's cheap to replace."
|
|
331
|
+
Brand: nomadixgear
|
|
332
|
+
Mode: social
|
|
333
|
+
|
|
334
|
+
Output: {
|
|
335
|
+
"result": "PASS",
|
|
336
|
+
"title_length": 108,
|
|
337
|
+
"criteria": {...all passed (urgency relaxed)...},
|
|
338
|
+
"action": "PROCEED"
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### Social FAIL
|
|
343
|
+
```
|
|
344
|
+
Input: "Our glamping tents are the best! DM for details."
|
|
345
|
+
Brand: nomadixgear
|
|
346
|
+
Mode: social
|
|
347
|
+
|
|
348
|
+
Output: {
|
|
349
|
+
"result": "FAIL",
|
|
350
|
+
"failed_criteria": [1, 2],
|
|
351
|
+
"failures": {...},
|
|
352
|
+
"reframe_suggestions": [...],
|
|
353
|
+
"action": "BLOCKED"
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## Usage
|
|
360
|
+
|
|
361
|
+
### Direct Call
|
|
362
|
+
```
|
|
363
|
+
sharp-thesis-validator "Why cheap fabric costs more than hurricane damage" --brand enchantents --mode long-form
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### From Another Skill
|
|
367
|
+
```javascript
|
|
368
|
+
const validator = require('sharp-thesis-validator');
|
|
369
|
+
const result = await validator.validate({
|
|
370
|
+
topic: "Why cheap fabric costs more than hurricane damage",
|
|
371
|
+
brand: "enchantents",
|
|
372
|
+
mode: "long-form"
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
if (result.result === "FAIL") {
|
|
376
|
+
// Block pipeline, show reframe suggestions
|
|
377
|
+
console.log("Topic failed Sharp-Thesis Test:", result.failures);
|
|
378
|
+
console.log("Reframe suggestions:", result.reframe_suggestions);
|
|
379
|
+
process.exit(1);
|
|
380
|
+
}
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### From Kanban Task
|
|
384
|
+
```yaml
|
|
385
|
+
- id: thesis-validation
|
|
386
|
+
name: "Validate sharp thesis"
|
|
387
|
+
skill: sharp-thesis-validator
|
|
388
|
+
args:
|
|
389
|
+
topic: "{{topic}}"
|
|
390
|
+
brand: "{{tenant}}"
|
|
391
|
+
mode: "long-form"
|
|
392
|
+
gate: true # blocks downstream until PASS
|
|
393
|
+
```
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Sharp-Thesis Validator Examples
|
|
2
|
+
|
|
3
|
+
Reference examples for pass/fail behavior across industries and modes.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Enchantents (B2B Glamping/Resort Development)
|
|
8
|
+
|
|
9
|
+
### Long-form PASS
|
|
10
|
+
|
|
11
|
+
| Input | Result | Reason |
|
|
12
|
+
|-------|--------|--------|
|
|
13
|
+
| "Why cheap glamping fabric costs more than hurricane damage" | PASS | Single claim (fabric > hurricane cost), number ($168,960 vs $25K), urgency (tropical UV 2x faster), 56 chars |
|
|
14
|
+
| "The 6-unit resort that pays back in 14 months" | PASS | Claim (pays back fast), number (6-unit, 14 months), urgency (payback window), 44 chars |
|
|
15
|
+
| "How one developer's 44,000-person waitlist terrifies hotel chains" | PASS | Claim (waitlist threatens hotels), number (44,000), urgency (competitive threat), 64 chars |
|
|
16
|
+
| "Why skipping glamping tent maintenance costs $25,000 per unit per season" | PASS | Claim (skipping maintenance costs), number ($25,000), urgency (per season), 68 chars |
|
|
17
|
+
|
|
18
|
+
### Long-form FAIL
|
|
19
|
+
|
|
20
|
+
| Input | Failed Criteria | Why |
|
|
21
|
+
|-------|-----------------|-----|
|
|
22
|
+
| "Glamping tents are durable" | 1, 2, 3 | Descriptive, no number, no urgency |
|
|
23
|
+
| "All about glamping fabric options" | 1, 2, 3 | Survey topic, no claim, no number, no urgency |
|
|
24
|
+
| "Why you need marine-grade acrylic" | 1, 3 | "Why you need" is not a claim; no urgency |
|
|
25
|
+
| "The ultimate guide to glamping tent fabrics" | 1, 2, 3 | Survey, no claim, no number, no urgency |
|
|
26
|
+
| "Glamping fabric durability matters" | 1, 2, 3 | Descriptive, no concrete number, no urgency |
|
|
27
|
+
|
|
28
|
+
### Social PASS
|
|
29
|
+
|
|
30
|
+
| Input | Result | Reason |
|
|
31
|
+
|-------|--------|--------|
|
|
32
|
+
| "Survived 3 hurricane seasons with zero patches. This $2,800 fabric isn't cheap — it's cheap to replace." | PASS | Claim (fabric survives), number ($2,800), urgency relaxed (social), 108 chars |
|
|
33
|
+
| "6-unit resort saves $152K/decade by buying the right fabric once. Thread: why most get this wrong." | PASS | Claim (saves money), number ($152K, decade), urgency relaxed, 95 chars |
|
|
34
|
+
|
|
35
|
+
### Social FAIL
|
|
36
|
+
|
|
37
|
+
| Input | Failed Criteria | Why |
|
|
38
|
+
|-------|-----------------|-----|
|
|
39
|
+
| "Our glamping tents are the best! DM for details." | 1, 2 | No arguable claim, no concrete number |
|
|
40
|
+
| "Check out our new glamping collection!" | 1, 2, 3 | Promotional, no claim, no number, no urgency |
|
|
41
|
+
| "Glamping fabric tips 🧵" | 1, 2 | Topic, not claim; no number |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Nomadixgear (DTC Consumer Gear)
|
|
46
|
+
|
|
47
|
+
### Long-form PASS
|
|
48
|
+
|
|
49
|
+
| Input | Result | Reason |
|
|
50
|
+
|-------|--------|--------|
|
|
51
|
+
| "The $400 tent that survived 3 seasons without a single patch" | PASS | Claim (outperforms), number ($400, 3 seasons), urgency (seasonal), 60 chars |
|
|
52
|
+
| "Why your $800 sleeping bag fails at 30°F (and the $120 one that doesn't)" | PASS | Comparative claim, numbers ($800, $120, 30°F), urgency (winter approaching), 72 chars |
|
|
53
|
+
| "The 48-hour break-in protocol that adds 3 years to tent lifespan" | PASS | Claim (protocol extends life), number (48 hours, 3 years), urgency (before season), 62 chars |
|
|
54
|
+
|
|
55
|
+
### Long-form FAIL
|
|
56
|
+
|
|
57
|
+
| Input | Failed Criteria | Why |
|
|
58
|
+
|-------|-----------------|-----|
|
|
59
|
+
| "Best camping tents for 2026" | 1, 2, 3 | Survey, no claim, no number, no urgency |
|
|
60
|
+
| "How to choose a tent fabric" | 1, 2, 3 | Instructional, no claim, no number, no urgency |
|
|
61
|
+
|
|
62
|
+
### Social PASS
|
|
63
|
+
|
|
64
|
+
| Input | Result | Reason |
|
|
65
|
+
|-------|--------|--------|
|
|
66
|
+
| "3 seasons, 0 patches, 1 $400 tent. The math is brutal. 🧮 Thread:" | PASS | Claim (tent lasts), numbers (3, 0, $400), urgency relaxed, 64 chars |
|
|
67
|
+
| "Stop buying $120 sleeping bags that fail at 30°F. This $800 one saves you $2,400 in replacements. 🔥" | PASS | Claim (cheap costs more), numbers ($120, 30°F, $800, $2,400), urgency relaxed, 98 chars |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## AIwithJai (Content/AI Consulting)
|
|
72
|
+
|
|
73
|
+
### Long-form PASS
|
|
74
|
+
|
|
75
|
+
| Input | Result | Reason |
|
|
76
|
+
|-------|--------|--------|
|
|
77
|
+
| "AI already outsells developers who ignore it" | PASS | Claim (AI beats humans), implied number (market data), urgency (competitive), 48 chars |
|
|
78
|
+
| "The 3-degree gap that costs $7,200/month in lost bookings" | PASS | Claim (gap costs money), numbers (3-degree, $7,200), urgency (monthly loss), 56 chars |
|
|
79
|
+
| "Why your content pipeline loses $50K/year to AI slop" | PASS | Claim (pipeline loses money), number ($50K/year), urgency (annual loss), 52 chars |
|
|
80
|
+
|
|
81
|
+
### Long-form FAIL
|
|
82
|
+
|
|
83
|
+
| Input | Failed Criteria | Why |
|
|
84
|
+
|-------|-----------------|-----|
|
|
85
|
+
| "AI tools for content creation" | 1, 2, 3 | Survey, no claim, no number, no urgency |
|
|
86
|
+
| "Why AI is important for creators" | 1, 3 | "Why X is important" = not a claim; no urgency |
|
|
87
|
+
|
|
88
|
+
### Social PASS
|
|
89
|
+
|
|
90
|
+
| Input | Result | Reason |
|
|
91
|
+
|-------|--------|--------|
|
|
92
|
+
| "Your content pipeline loses $50K/year to AI slop. Here's the 3-step fix I gave a client last week 🧵" | PASS | Claim (pipeline loses), number ($50K), urgency relaxed, 98 chars |
|
|
93
|
+
| "3-degree gap = $7,200/month lost bookings. The fix takes 2 hours. 🔥" | PASS | Claim (gap costs), numbers (3-degree, $7,200, 2 hours), urgency relaxed, 72 chars |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Universal Weak → Sharp Patterns
|
|
98
|
+
|
|
99
|
+
| Weak Topic (always FAIL) | Sharp Reframe (PASS template) |
|
|
100
|
+
|--------------------------|-------------------------------|
|
|
101
|
+
| "X is important" | "Why ignoring X costs $Y/month" |
|
|
102
|
+
| "All about X" | "The $X mistake that Y every Z" |
|
|
103
|
+
| "Why you need X" | "X beats Y because Z (data: $A vs $B)" |
|
|
104
|
+
| "Guide to X" | "The $X shortcut that saves Y hours" |
|
|
105
|
+
| "Best practices for X" | "The 1 rule that separates $X winners from $Y losers" |
|
|
106
|
+
| "How to do X" | "Why your X fails at [metric] (and the fix)" |
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Number Detection Patterns (Criterion 2)
|
|
111
|
+
|
|
112
|
+
| Pattern | Example Matches |
|
|
113
|
+
|---------|-----------------|
|
|
114
|
+
| Currency | $1,200, $2,800, $168,960, USD 50000, €450, £3000 |
|
|
115
|
+
| Percentage | 60%, 91 percent, 41% reduction, 10x |
|
|
116
|
+
| Timeframe | 18 months, 3 years, 6 months, 14 days, 48 hours |
|
|
117
|
+
| Count | 6 units, 44,000 people, 3 replacements, 5x ROI |
|
|
118
|
+
| Ratio | 10:1, 3:1, 60/40 split |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Urgency Detection Patterns (Criterion 3)
|
|
123
|
+
|
|
124
|
+
| Type | Example Matches |
|
|
125
|
+
|------|-----------------|
|
|
126
|
+
| Seasonal | "before hurricane season", "this summer", "winter approaching" |
|
|
127
|
+
| Deadline | "by 2026", "Q1 deadline", "before the regulation changes" |
|
|
128
|
+
| Market shift | "new competitor", "market shifting", "demand surged 91%" |
|
|
129
|
+
| Competitor | "terrifies hotel chains", "disrupting the market", "first to market" |
|
|
130
|
+
| Data | "new study shows", "latest data reveals", "2026 survey finds" |
|
|
131
|
+
| Product | "just launched", "version 2.0", "new release" |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Title Length Edge Cases
|
|
136
|
+
|
|
137
|
+
| Title | Chars | long-form (80) | social (280) |
|
|
138
|
+
|-------|-------|----------------|--------------|
|
|
139
|
+
| "Why cheap glamping fabric costs more than hurricane damage" | 56 | ✅ | ✅ |
|
|
140
|
+
| "The $2,800 cover that outlasts 5 cheaper replacements" | 52 | ✅ | ✅ |
|
|
141
|
+
| "AI already outsells developers who ignore it" | 48 | ✅ | ✅ |
|
|
142
|
+
| "Survived 3 hurricane seasons with zero patches. This $2,800 fabric isn't cheap — it's cheap to replace." | 108 | ❌ | ✅ |
|
|
143
|
+
| "Your content pipeline loses $50K/year to AI slop. Here's the 3-step fix I gave a client last week" | 94 | ❌ | ✅ |
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Brand-Specific Banned Patterns (Claims Blacklist)
|
|
148
|
+
|
|
149
|
+
### Enchantents (from brand-overrides.md + landscape.md)
|
|
150
|
+
- "geodesic dome" / "PVDF" / "PVC" / "cotton canvas" / "yurt" / "pod"
|
|
151
|
+
- "indestructible" / "hurricane-proof" / "lifetime guarantee"
|
|
152
|
+
- "the best" / "perfect" / "flawless" / "ultimate"
|
|
153
|
+
|
|
154
|
+
### Nomadixgear (from brand-overrides.md)
|
|
155
|
+
- "military-grade" (unless spec-verified)
|
|
156
|
+
- "indestructible" / "lifetime"
|
|
157
|
+
- "cheapest" / "lowest price"
|
|
158
|
+
|
|
159
|
+
### AIwithJai (from brand-overrides.md)
|
|
160
|
+
- "guaranteed results" / "10x guaranteed"
|
|
161
|
+
- "no code required" (unless literally true)
|
|
162
|
+
- "replaces developers" / "fire your team"
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Test Commands
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Test long-form PASS
|
|
170
|
+
sharp-thesis-validator "Why cheap glamping fabric costs more than hurricane damage" --brand enchantents --mode long-form
|
|
171
|
+
|
|
172
|
+
# Test long-form FAIL
|
|
173
|
+
sharp-thesis-validator "Glamping tents are durable" --brand enchantents --mode long-form
|
|
174
|
+
|
|
175
|
+
# Test social PASS
|
|
176
|
+
sharp-thesis-validator "Survived 3 hurricane seasons with zero patches. This $2,800 fabric isn't cheap — it's cheap to replace." --brand nomadixgear --mode social
|
|
177
|
+
|
|
178
|
+
# Test social FAIL
|
|
179
|
+
sharp-thesis-validator "Our glamping tents are the best! DM for details." --brand nomadixgear --mode social
|
|
180
|
+
|
|
181
|
+
# Test without brand (universal only)
|
|
182
|
+
sharp-thesis-validator "The 3-degree gap that costs $7,200/month in lost bookings" --mode long-form
|
|
183
|
+
|
|
184
|
+
# Test with thesis-config override
|
|
185
|
+
sharp-thesis-validator "Short thesis" --brand enchantents --mode long-form
|
|
186
|
+
```
|