opencode-skills-collection 3.0.51 → 3.1.1
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 +44 -12
- package/bundled-skills/.antigravity-install-manifest.json +84 -1
- package/bundled-skills/android-ui-journey-testing/SKILL.md +191 -0
- package/bundled-skills/ask-matt/SKILL.md +92 -0
- package/bundled-skills/bugs-are-annoying/SKILL.md +137 -0
- package/bundled-skills/codebase-design/DEEPENING.md +37 -0
- package/bundled-skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/bundled-skills/codebase-design/SKILL.md +145 -0
- package/bundled-skills/competitor-analysis/LICENSE.txt +21 -0
- package/bundled-skills/competitor-analysis/SKILL.md +434 -0
- package/bundled-skills/competitor-analysis/references/battle-card-subagent.md +127 -0
- package/bundled-skills/competitor-analysis/references/battle-card.md +91 -0
- package/bundled-skills/competitor-analysis/references/example-research.md +130 -0
- package/bundled-skills/competitor-analysis/references/report-template.html +127 -0
- package/bundled-skills/competitor-analysis/references/research-patterns.md +217 -0
- package/bundled-skills/competitor-analysis/references/workflow.md +434 -0
- package/bundled-skills/competitor-analysis/scripts/capture_screenshots.mjs +142 -0
- package/bundled-skills/competitor-analysis/scripts/compile_report.mjs +929 -0
- package/bundled-skills/competitor-analysis/scripts/extract_vs_names.mjs +140 -0
- package/bundled-skills/competitor-analysis/scripts/gate_candidates.mjs +194 -0
- package/bundled-skills/competitor-analysis/scripts/list_urls.mjs +90 -0
- package/bundled-skills/competitor-analysis/scripts/md_utils.mjs +50 -0
- package/bundled-skills/competitor-analysis/scripts/merge_partials.mjs +291 -0
- package/bundled-skills/competitor-analysis/scripts/package.json +6 -0
- package/bundled-skills/design-it/3d-ui/SKILL.md +259 -0
- package/bundled-skills/design-it/SKILL.md +170 -0
- package/bundled-skills/design-it/ai-native-ui/SKILL.md +295 -0
- package/bundled-skills/design-it/aurora-ui/SKILL.md +307 -0
- package/bundled-skills/design-it/bento-ui/SKILL.md +314 -0
- package/bundled-skills/design-it/brutalism/SKILL.md +270 -0
- package/bundled-skills/design-it/brutalist-typography/SKILL.md +287 -0
- package/bundled-skills/design-it/card-based-design/SKILL.md +262 -0
- package/bundled-skills/design-it/claymorphism/SKILL.md +287 -0
- package/bundled-skills/design-it/color-blocking/SKILL.md +278 -0
- package/bundled-skills/design-it/command-center-ui/SKILL.md +345 -0
- package/bundled-skills/design-it/cyber-y2k/SKILL.md +312 -0
- package/bundled-skills/design-it/cyberpunk-ui/SKILL.md +262 -0
- package/bundled-skills/design-it/dark-mode/SKILL.md +289 -0
- package/bundled-skills/design-it/dashboard-design/SKILL.md +331 -0
- package/bundled-skills/design-it/data-dense-design/SKILL.md +322 -0
- package/bundled-skills/design-it/duotone-design/SKILL.md +248 -0
- package/bundled-skills/design-it/editorial-design/SKILL.md +328 -0
- package/bundled-skills/design-it/flat-design/SKILL.md +221 -0
- package/bundled-skills/design-it/flat-design-2/SKILL.md +240 -0
- package/bundled-skills/design-it/floating-ui/SKILL.md +299 -0
- package/bundled-skills/design-it/frutiger-aero/SKILL.md +274 -0
- package/bundled-skills/design-it/glassmorphism/SKILL.md +272 -0
- package/bundled-skills/design-it/gradient-design/SKILL.md +309 -0
- package/bundled-skills/design-it/high-contrast/SKILL.md +288 -0
- package/bundled-skills/design-it/holographic-ui/SKILL.md +310 -0
- package/bundled-skills/design-it/isometric-design/SKILL.md +228 -0
- package/bundled-skills/design-it/layered-design/SKILL.md +247 -0
- package/bundled-skills/design-it/material-design/SKILL.md +275 -0
- package/bundled-skills/design-it/maximalism/SKILL.md +297 -0
- package/bundled-skills/design-it/minimalism/SKILL.md +267 -0
- package/bundled-skills/design-it/monochromatic-ui/SKILL.md +296 -0
- package/bundled-skills/design-it/neo-brutalism/SKILL.md +270 -0
- package/bundled-skills/design-it/neumorphism/SKILL.md +248 -0
- package/bundled-skills/design-it/retro-design/SKILL.md +283 -0
- package/bundled-skills/design-it/retro-futurism/SKILL.md +259 -0
- package/bundled-skills/design-it/sci-fi-interface/SKILL.md +309 -0
- package/bundled-skills/design-it/skeuomorphism/SKILL.md +280 -0
- package/bundled-skills/design-it/soft-pastel/SKILL.md +307 -0
- package/bundled-skills/design-it/spatial-computing-ui/SKILL.md +300 -0
- package/bundled-skills/design-it/spatial-design/SKILL.md +268 -0
- package/bundled-skills/design-it/swiss-design/SKILL.md +293 -0
- package/bundled-skills/design-it/synthwave/SKILL.md +257 -0
- package/bundled-skills/design-it/tile-design/SKILL.md +297 -0
- package/bundled-skills/design-it/typography-first/SKILL.md +247 -0
- package/bundled-skills/design-it/vaporwave/SKILL.md +331 -0
- package/bundled-skills/design-it/vibrant-maximalism/SKILL.md +291 -0
- package/bundled-skills/design-it/widget-based-design/SKILL.md +274 -0
- package/bundled-skills/design-it/y2k-design/SKILL.md +268 -0
- package/bundled-skills/diagnosing-bugs/SKILL.md +165 -0
- package/bundled-skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/bundled-skills/docs/contributors/skill-scoring.md +235 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/domain-modeling/ADR-FORMAT.md +47 -0
- package/bundled-skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/bundled-skills/domain-modeling/SKILL.md +105 -0
- package/bundled-skills/grill-me/SKILL.md +36 -0
- package/bundled-skills/grill-with-docs/SKILL.md +36 -0
- package/bundled-skills/grilling/SKILL.md +39 -0
- package/bundled-skills/handoff/SKILL.md +45 -0
- package/bundled-skills/image-generator/.env.example +7 -0
- package/bundled-skills/image-generator/SKILL.md +509 -0
- package/bundled-skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
- package/bundled-skills/improve-codebase-architecture/SKILL.md +97 -0
- package/bundled-skills/learn/SKILL.md +156 -0
- package/bundled-skills/lesson-generator/SKILL.md +90 -0
- package/bundled-skills/llm-council/.env.example +7 -0
- package/bundled-skills/llm-council/SKILL.md +602 -0
- package/bundled-skills/loop-library/SKILL.md +205 -0
- package/bundled-skills/loop-library/agents/openai.yaml +4 -0
- package/bundled-skills/loop-library/references/catalog.md +270 -0
- package/bundled-skills/mailtrap-managing-contacts/SKILL.md +112 -0
- package/bundled-skills/mailtrap-sending-emails/SKILL.md +167 -0
- package/bundled-skills/mailtrap-setting-up-sending-domain/SKILL.md +77 -0
- package/bundled-skills/mailtrap-testing-with-sandbox/SKILL.md +110 -0
- package/bundled-skills/prototype/LOGIC.md +79 -0
- package/bundled-skills/prototype/SKILL.md +62 -0
- package/bundled-skills/prototype/UI.md +112 -0
- package/bundled-skills/setup-matt-pocock-skills/SKILL.md +158 -0
- package/bundled-skills/setup-matt-pocock-skills/domain.md +51 -0
- package/bundled-skills/setup-matt-pocock-skills/issue-tracker-github.md +34 -0
- package/bundled-skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +35 -0
- package/bundled-skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
- package/bundled-skills/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/bundled-skills/survey-generator/LICENSE +21 -0
- package/bundled-skills/survey-generator/SKILL.md +143 -0
- package/bundled-skills/survey-generator/build_artifact.py +208 -0
- package/bundled-skills/survey-generator/examples/agentic-engineering/research_bundle.json +1196 -0
- package/bundled-skills/survey-generator/examples/agentic-engineering/survey.html +706 -0
- package/bundled-skills/survey-generator/style_spec.json +85 -0
- package/bundled-skills/survey-generator/templates/research_bundle_template.json +69 -0
- package/bundled-skills/tdd/SKILL.md +139 -0
- package/bundled-skills/tdd/mocking.md +59 -0
- package/bundled-skills/tdd/refactoring.md +10 -0
- package/bundled-skills/tdd/tests.md +61 -0
- package/bundled-skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/bundled-skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/bundled-skills/teach/MISSION-FORMAT.md +31 -0
- package/bundled-skills/teach/RESOURCES-FORMAT.md +32 -0
- package/bundled-skills/teach/SKILL.md +169 -0
- package/bundled-skills/to-issues/SKILL.md +115 -0
- package/bundled-skills/to-prd/SKILL.md +104 -0
- package/bundled-skills/tools-page-seo-optimizer/SKILL.md +616 -0
- package/bundled-skills/triage/AGENT-BRIEF.md +207 -0
- package/bundled-skills/triage/OUT-OF-SCOPE.md +105 -0
- package/bundled-skills/triage/SKILL.md +143 -0
- package/bundled-skills/vibecode-production-qa-validator/SKILL.md +371 -141
- package/bundled-skills/wiki-builder/SKILL.md +157 -0
- package/bundled-skills/wiki-builder/agents/openai.yaml +5 -0
- package/bundled-skills/wiki-builder/references/wiki-flavors.md +98 -0
- package/bundled-skills/wiki-builder/scripts/init_wiki.sh +105 -0
- package/bundled-skills/wiki-builder/templates/index.md +20 -0
- package/bundled-skills/wiki-builder/templates/maintenance-log.md +7 -0
- package/bundled-skills/wiki-builder/templates/prompts/compile-concept-page.md +12 -0
- package/bundled-skills/wiki-builder/templates/prompts/compile-index.md +11 -0
- package/bundled-skills/wiki-builder/templates/prompts/compile-source-page.md +12 -0
- package/bundled-skills/wiki-builder/templates/prompts/lint-wiki.md +10 -0
- package/bundled-skills/wiki-builder/templates/prompts/query-and-file.md +11 -0
- package/bundled-skills/wiki-builder/templates/sources.md +9 -0
- package/bundled-skills/wiki-builder/templates/wiki.config.md +53 -0
- package/bundled-skills/writing-great-skills/GLOSSARY.md +181 -0
- package/bundled-skills/writing-great-skills/SKILL.md +111 -0
- package/bundled-skills/yao-meta-skill/SKILL.md +86 -0
- package/bundled-skills/yao-meta-skill/agents/interface.yaml +26 -0
- package/bundled-skills/yao-meta-skill/manifest.json +24 -0
- package/bundled-skills/yao-meta-skill/references/artifact-design-doctrine.md +49 -0
- package/bundled-skills/yao-meta-skill/references/authoring-discipline.md +78 -0
- package/bundled-skills/yao-meta-skill/references/autonomous-adaptation.md +65 -0
- package/bundled-skills/yao-meta-skill/references/distribution-registry-method.md +60 -0
- package/bundled-skills/yao-meta-skill/references/eval-playbook.md +69 -0
- package/bundled-skills/yao-meta-skill/references/gate-selection.md +68 -0
- package/bundled-skills/yao-meta-skill/references/governance.md +134 -0
- package/bundled-skills/yao-meta-skill/references/human-review-template.md +54 -0
- package/bundled-skills/yao-meta-skill/references/intent-dialogue.md +138 -0
- package/bundled-skills/yao-meta-skill/references/iteration-philosophy.md +30 -0
- package/bundled-skills/yao-meta-skill/references/non-skill-decision-tree.md +39 -0
- package/bundled-skills/yao-meta-skill/references/operating-modes.md +107 -0
- package/bundled-skills/yao-meta-skill/references/output-eval-method.md +113 -0
- package/bundled-skills/yao-meta-skill/references/output-quality-risk.md +41 -0
- package/bundled-skills/yao-meta-skill/references/output-visual-quality.md +53 -0
- package/bundled-skills/yao-meta-skill/references/packaging-contracts.md +70 -0
- package/bundled-skills/yao-meta-skill/references/pattern-extraction-doctrine.md +76 -0
- package/bundled-skills/yao-meta-skill/references/platform-capability-matrix.md +49 -0
- package/bundled-skills/yao-meta-skill/references/prompt-engineering-doctrine.md +76 -0
- package/bundled-skills/yao-meta-skill/references/qa-ladder.md +57 -0
- package/bundled-skills/yao-meta-skill/references/reference-scan.md +126 -0
- package/bundled-skills/yao-meta-skill/references/regression-cause-taxonomy.md +80 -0
- package/bundled-skills/yao-meta-skill/references/resource-boundaries.md +120 -0
- package/bundled-skills/yao-meta-skill/references/review-studio-method.md +87 -0
- package/bundled-skills/yao-meta-skill/references/review-waiver-method.md +76 -0
- package/bundled-skills/yao-meta-skill/references/runtime-conformance-method.md +21 -0
- package/bundled-skills/yao-meta-skill/references/skill-archetypes.md +86 -0
- package/bundled-skills/yao-meta-skill/references/skill-atlas-method.md +35 -0
- package/bundled-skills/yao-meta-skill/references/skill-engineering-method.md +210 -0
- package/bundled-skills/yao-meta-skill/references/skill-ir-method.md +41 -0
- package/bundled-skills/yao-meta-skill/references/skillops-decision-policy.md +53 -0
- package/bundled-skills/yao-meta-skill/references/systems-thinking-doctrine.md +75 -0
- package/bundled-skills/yao-meta-skill/references/telemetry-drift-method.md +182 -0
- package/bundled-skills/yao-meta-skill/references/trust-security-method.md +79 -0
- package/bundled-skills/yao-meta-skill/references/user-memory-policy.md +35 -0
- package/bundled-skills/youtube-notetaker/SKILL.md +209 -0
- package/bundled-skills/youtube-notetaker/reference/artifact.html +269 -0
- package/bundled-skills/youtube-notetaker/scripts/contact_sheet.py +53 -0
- package/bundled-skills/youtube-notetaker/scripts/detect_slides.sh +19 -0
- package/bundled-skills/youtube-notetaker/scripts/download.sh +24 -0
- package/bundled-skills/youtube-notetaker/scripts/extract_slides.py +43 -0
- package/bundled-skills/youtube-notetaker/scripts/serve.py +173 -0
- package/bundled-skills/youtube-notetaker/scripts/setup.sh +27 -0
- package/bundled-skills/youtube-notetaker/scripts/verify.sh +31 -0
- package/bundled-skills/youtube-notetaker/scripts/vtt_to_transcript.py +59 -0
- package/bundled-skills/youtube-notetaker/scripts/write_library_item.py +69 -0
- package/dist/skill-pointer/config-loader.d.ts +14 -0
- package/dist/skill-pointer/config-loader.js +30 -3
- package/dist/skill-pointer/content-scanner.d.ts +38 -0
- package/dist/skill-pointer/content-scanner.js +118 -0
- package/dist/skill-pointer/index.d.ts +7 -2
- package/dist/skill-pointer/index.js +14 -4
- package/dist/skill-pointer/pointer-generator.js +2 -0
- package/dist/skill-pointer/skill-patcher.d.ts +13 -0
- package/dist/skill-pointer/skill-patcher.js +99 -0
- package/package.json +1 -1
- package/skills_index.json +1956 -286
- package/bundled-skills/ai-md/SKILL.md +0 -523
- package/bundled-skills/atlas-contract/SKILL.md +0 -650
- package/bundled-skills/busybox-on-windows/SKILL.md +0 -40
- package/bundled-skills/monte-carlo-prevent/SKILL.md +0 -257
- package/bundled-skills/monte-carlo-prevent/references/TROUBLESHOOTING.md +0 -23
- package/bundled-skills/monte-carlo-prevent/references/parameters.md +0 -32
- package/bundled-skills/monte-carlo-prevent/references/workflows.md +0 -478
- package/bundled-skills/monte-carlo-push-ingestion/SKILL.md +0 -372
- package/bundled-skills/monte-carlo-push-ingestion/references/anomaly-detection.md +0 -87
- package/bundled-skills/monte-carlo-push-ingestion/references/custom-lineage.md +0 -203
- package/bundled-skills/monte-carlo-push-ingestion/references/direct-http-api.md +0 -207
- package/bundled-skills/monte-carlo-push-ingestion/references/prerequisites.md +0 -150
- package/bundled-skills/monte-carlo-push-ingestion/references/push-lineage.md +0 -160
- package/bundled-skills/monte-carlo-push-ingestion/references/push-metadata.md +0 -158
- package/bundled-skills/monte-carlo-push-ingestion/references/push-query-logs.md +0 -219
- package/bundled-skills/monte-carlo-push-ingestion/references/validation.md +0 -257
- package/bundled-skills/monte-carlo-push-ingestion/scripts/sample_verify.py +0 -357
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_lineage.py +0 -70
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_metadata.py +0 -65
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_query_logs.py +0 -70
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_lineage.py +0 -214
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_metadata.py +0 -160
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_query_logs.py +0 -164
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_lineage.py +0 -198
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_metadata.py +0 -193
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_query_logs.py +0 -207
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_and_push_metadata.py +0 -71
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_and_push_query_logs.py +0 -64
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_metadata.py +0 -253
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_query_logs.py +0 -149
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/push_metadata.py +0 -190
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/push_query_logs.py +0 -208
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_lineage.py +0 -83
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_metadata.py +0 -77
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_query_logs.py +0 -83
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_lineage.py +0 -240
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_metadata.py +0 -212
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_query_logs.py +0 -204
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_lineage.py +0 -192
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_metadata.py +0 -178
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_query_logs.py +0 -200
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_lineage.py +0 -119
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_metadata.py +0 -119
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_query_logs.py +0 -117
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_lineage.py +0 -265
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_metadata.py +0 -313
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_query_logs.py +0 -284
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_lineage.py +0 -309
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_metadata.py +0 -245
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_query_logs.py +0 -255
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_lineage.py +0 -78
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_metadata.py +0 -80
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_query_logs.py +0 -88
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_lineage.py +0 -235
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_metadata.py +0 -219
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_query_logs.py +0 -239
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_lineage.py +0 -178
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_metadata.py +0 -178
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_query_logs.py +0 -196
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_lineage.py +0 -154
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_metadata.py +0 -137
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_query_logs.py +0 -137
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_lineage.py +0 -349
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_metadata.py +0 -329
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_query_logs.py +0 -254
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_lineage.py +0 -307
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_metadata.py +0 -228
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_query_logs.py +0 -248
- package/bundled-skills/monte-carlo-push-ingestion/scripts/test_template_sdk_usage.py +0 -340
- package/bundled-skills/skill-optimizer/SKILL.md +0 -271
- package/bundled-skills/using-superpowers/SKILL.md +0 -98
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Example Competitor Research File
|
|
2
|
+
|
|
3
|
+
## Contents
|
|
4
|
+
- [Template](#template) — full worked example for a fictional "Rival Co"
|
|
5
|
+
- [Field Rules](#field-rules) — frontmatter fields, body section order, mention/findings format
|
|
6
|
+
- [Writing via Bash Heredoc](#writing-via-bash-heredoc) — required pattern for subagents to avoid permission prompts
|
|
7
|
+
|
|
8
|
+
Each enrichment subagent writes one markdown file per competitor to `{OUTPUT_DIR}/{competitor-slug}.md`, where `{OUTPUT_DIR}` is the per-run Desktop directory set up by the main agent in Step 0 (e.g., `~/Desktop/acme_competitors_2026-04-23/`). The YAML frontmatter contains structured fields for report/matrix compilation. The body contains per-section research plus aggregated mentions and benchmarks.
|
|
9
|
+
|
|
10
|
+
## Template
|
|
11
|
+
|
|
12
|
+
```markdown
|
|
13
|
+
---
|
|
14
|
+
competitor_name: Rival Co
|
|
15
|
+
website: https://rivalco.com
|
|
16
|
+
tagline: The fastest way to give your agents the web
|
|
17
|
+
positioning: Developer-first web search API
|
|
18
|
+
product_description: Web search & retrieval API for AI agents and RAG pipelines
|
|
19
|
+
target_customer: AI engineers, RAG/agent teams, SaaS companies
|
|
20
|
+
pricing_model: Usage-based + seat tiers
|
|
21
|
+
pricing_tiers: Free (1K searches) | Pro $99/mo | Scale $499/mo | Enterprise Contact
|
|
22
|
+
key_features: web search API | neural/semantic search | site crawler | reranking | live crawl
|
|
23
|
+
integrations: LangChain | LlamaIndex | Python SDK | TypeScript SDK
|
|
24
|
+
headquarters: San Francisco, CA
|
|
25
|
+
founded: 2023
|
|
26
|
+
employee_estimate: 11-50
|
|
27
|
+
funding_info: Seed, $5M (2024)
|
|
28
|
+
strategic_diff: Similar retrieval API; weaker neural relevance, but cheaper entry tier
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Product
|
|
32
|
+
Web search and retrieval API for AI agents. Exposes a REST search endpoint with both
|
|
33
|
+
keyword and semantic/neural modes, plus a site crawler and live-crawl fallback.
|
|
34
|
+
Positioned at AI engineers building RAG and agent pipelines.
|
|
35
|
+
|
|
36
|
+
## Pricing
|
|
37
|
+
- Free: 1K searches/month, 1 API key
|
|
38
|
+
- Pro ($99/mo): 100K searches, reranking, basic support
|
|
39
|
+
- Scale ($499/mo): 1M searches, neural search, live crawl, higher rate limits
|
|
40
|
+
- Enterprise: custom pricing, SSO, dedicated support
|
|
41
|
+
|
|
42
|
+
## Features
|
|
43
|
+
- Keyword + neural/semantic search modes
|
|
44
|
+
- Site crawler with scheduled recrawls
|
|
45
|
+
- Result reranking and content highlights
|
|
46
|
+
- Live-crawl fallback for fresh pages
|
|
47
|
+
- REST API with JSON responses
|
|
48
|
+
- Python and TypeScript SDKs
|
|
49
|
+
|
|
50
|
+
## Positioning
|
|
51
|
+
Marketing emphasizes "AI-native" and developer-first DX. Landing page hero:
|
|
52
|
+
"Give your agents the web." Targets solo devs through mid-market AI teams.
|
|
53
|
+
|
|
54
|
+
## Comparison vs {user_company}
|
|
55
|
+
- **Overlaps**: Web search API, neural search mode, crawler, LangChain integration
|
|
56
|
+
- **Gaps**: No dedicated research/answer endpoint, weaker neural relevance benchmarks, no news endpoint
|
|
57
|
+
- **Where they win**: Lower entry price ($99 vs $199), simpler pricing tiers
|
|
58
|
+
- **Where you win**: Stronger neural relevance (per public benchmarks), research API, larger integration ecosystem
|
|
59
|
+
|
|
60
|
+
## Mentions
|
|
61
|
+
- **[Benchmark]** retrieval-quality leaderboard — Rival Co 73% nDCG@10, 4th of 7 tested (source: https://github.com/example-org/search-bench/pull/92, 2026-03-14)
|
|
62
|
+
- **[Comparison]** Exa vs Rival Co — side-by-side review (source: https://example.com/exa-vs-rivalco, 2026-02-01)
|
|
63
|
+
- **[Reddit]** r/LangChain thread: "Moved from Rival Co to X after relevance issues" — 24 upvotes (source: https://reddit.com/r/LangChain/comments/abc123)
|
|
64
|
+
- **[HN]** "Show HN: Rival Co raises seed to build..." — 112 points, 48 comments (source: https://news.ycombinator.com/item?id=12345)
|
|
65
|
+
- **[LinkedIn]** CEO post on product launch — 412 reactions (source: https://linkedin.com/posts/rivalco-launch)
|
|
66
|
+
- **[YouTube]** "Rival Co vs Exa" review by Dev YouTuber — 8.2K views (source: https://youtube.com/watch?v=xyz)
|
|
67
|
+
- **[News]** TechCrunch coverage of seed round (source: https://techcrunch.com/2024/11/rival-co-seed)
|
|
68
|
+
- **[Review]** G2 4.3/5 (31 reviews), main complaint: stale results (source: https://g2.com/products/rival-co)
|
|
69
|
+
|
|
70
|
+
## Benchmarks
|
|
71
|
+
- **search-bench PR #92** — Rival Co 73% nDCG@10 on retrieval quality, 4th of 7 tested (https://github.com/example-org/search-bench/pull/92)
|
|
72
|
+
- **retrieval-latency blog** — Rival Co 480ms p50, 2nd fastest (https://example.com/search-latency-2026)
|
|
73
|
+
|
|
74
|
+
## Research Findings
|
|
75
|
+
- **[high]** Usage-based pricing starts at $99/mo for 100K searches (source: rivalco.com/pricing)
|
|
76
|
+
- **[high]** Series seed, $5M raised Nov 2024 (source: TechCrunch)
|
|
77
|
+
- **[medium]** CEO LinkedIn emphasizes AI-agent use cases (source: linkedin.com/in/rivalco-ceo)
|
|
78
|
+
- **[low]** Possibly a team under 20 based on careers page (source: rivalco.com/careers)
|
|
79
|
+
|
|
80
|
+
## Battle Card
|
|
81
|
+
|
|
82
|
+
### Landmines
|
|
83
|
+
- **Rival Co scores 73% nDCG@10 on the search-bench leaderboard (4th of 7 tested)** — use against relevance-sensitive prospects; they rank below Exa on the same test. (source: https://github.com/example-org/search-bench/pull/92)
|
|
84
|
+
- **G2 average 4.3/5 with "stale results" as top complaint across 31 reviews** — cite when prospect raises freshness concerns. (source: https://g2.com/products/rival-co)
|
|
85
|
+
|
|
86
|
+
### Objection Handlers
|
|
87
|
+
- If they say: "Rival Co is $99/mo — cheaper than your Pro tier"
|
|
88
|
+
You say: "Cheaper upfront, but compare total cost of poor relevance — their 73% nDCG@10 means more irrelevant results your agent has to filter or re-query, and re-queries aren't free." (evidence: https://github.com/example-org/search-bench/pull/92)
|
|
89
|
+
|
|
90
|
+
### Talk Tracks
|
|
91
|
+
1. For RAG pipelines where relevance drives answer quality, Exa ships a neural index and a dedicated research/answer endpoint as table stakes; Rival Co has neither in their 2024 product set.
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Field Rules
|
|
95
|
+
|
|
96
|
+
- **YAML frontmatter**: All structured fields go here. Extracted for matrix + CSV compilation.
|
|
97
|
+
- **`pricing_tiers`**: Pipe-separated (`|`) with tier name + short price. `compile_report.mjs` parses on `|` for the matrix view.
|
|
98
|
+
- **`key_features`**, **`integrations`**: Pipe-separated lists.
|
|
99
|
+
- **`strategic_diff`**: One-line summary (shown in overview table).
|
|
100
|
+
- **Body sections**: `## Product`, `## Pricing`, `## Features`, `## Positioning`, `## Comparison vs {user_company}`, `## Mentions`, `## Benchmarks`, `## Research Findings`, `## Battle Card` (deep/deeper modes only; synthesized by the Battle lane after fact-check).
|
|
101
|
+
- **Mentions format**: `- **[SourceType]** title | snippet (source: url, date)` — `SourceType` is one of `Benchmark`, `Comparison`, `News`, `Reddit`, `HN`, `LinkedIn`, `YouTube`, `Review`, `Podcast`, `X`.
|
|
102
|
+
- **Findings format**: `- **[confidence]** fact (source: url)` — `confidence` is `high`, `medium`, or `low`.
|
|
103
|
+
- **Filename**: `{OUTPUT_DIR}/{competitor-slug}.md` where slug is lowercase, hyphenated.
|
|
104
|
+
|
|
105
|
+
## Writing via Bash Heredoc
|
|
106
|
+
|
|
107
|
+
Subagents write these files using bash heredoc to avoid security prompts. Use the full literal `{OUTPUT_DIR}` path — no `~` or `$HOME`:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
cat << 'COMPETITOR_MD' > {OUTPUT_DIR}/rival-co.md
|
|
111
|
+
---
|
|
112
|
+
competitor_name: Rival Co
|
|
113
|
+
website: https://rivalco.com
|
|
114
|
+
...
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Product
|
|
118
|
+
...
|
|
119
|
+
|
|
120
|
+
## Pricing
|
|
121
|
+
...
|
|
122
|
+
|
|
123
|
+
## Mentions
|
|
124
|
+
- **[Benchmark]** ...
|
|
125
|
+
COMPETITOR_MD
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Use `'COMPETITOR_MD'` (quoted) as the delimiter to prevent shell variable expansion.
|
|
129
|
+
|
|
130
|
+
**IMPORTANT**: Write ALL competitor files in a SINGLE Bash call using chained heredocs to minimize permission prompts.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Competitor Analysis — {{TITLE}}</title>
|
|
7
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
9
|
+
<style>
|
|
10
|
+
:root {
|
|
11
|
+
--brand: #F03603;
|
|
12
|
+
--blue: #4DA9E4;
|
|
13
|
+
--green: #90C94D;
|
|
14
|
+
--amber: #F4BA41;
|
|
15
|
+
--black: #100D0D;
|
|
16
|
+
--gray: #514F4F;
|
|
17
|
+
--border: #edebeb;
|
|
18
|
+
--bg: #F9F6F4;
|
|
19
|
+
--card: #ffffff;
|
|
20
|
+
--text: #100D0D;
|
|
21
|
+
--muted: #514F4F;
|
|
22
|
+
--high: #5a8a1a;
|
|
23
|
+
--low: #F03603;
|
|
24
|
+
}
|
|
25
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
26
|
+
body { font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; background: var(--bg); color: var(--text); line-height: 1.6; font-size: 16px; }
|
|
27
|
+
.container { max-width: 1200px; margin: 0 auto; padding: 2rem 1.5rem; }
|
|
28
|
+
|
|
29
|
+
header { margin-bottom: 2rem; display: flex; align-items: center; justify-content: space-between; }
|
|
30
|
+
.header-left h1 { font-size: 1.5rem; font-weight: 600; margin-bottom: 0.25rem; color: var(--black); }
|
|
31
|
+
.header-left .meta { color: var(--muted); font-size: 0.875rem; }
|
|
32
|
+
|
|
33
|
+
nav.views { display: flex; gap: 0.5rem; margin-bottom: 2rem; }
|
|
34
|
+
nav.views a { background: var(--card); border: 1px solid var(--border); border-radius: 4px; padding: 0.5rem 0.875rem; font-size: 0.8125rem; color: var(--muted); text-decoration: none; font-weight: 500; }
|
|
35
|
+
nav.views a:hover { border-color: var(--brand); color: var(--brand); }
|
|
36
|
+
nav.views a.active { background: var(--brand); color: #fff; border-color: var(--brand); }
|
|
37
|
+
|
|
38
|
+
.summary { display: flex; gap: 0.75rem; margin-bottom: 2rem; flex-wrap: wrap; }
|
|
39
|
+
.stat { background: var(--card); border: 1px solid var(--border); border-radius: 4px; padding: 1rem 1.25rem; flex: 1; min-width: 140px; }
|
|
40
|
+
.stat .label { font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); font-weight: 600; margin-bottom: 0.25rem; }
|
|
41
|
+
.stat .value { font-size: 1.5rem; font-weight: 700; color: var(--black); }
|
|
42
|
+
|
|
43
|
+
/* Strategic win/loss cards */
|
|
44
|
+
.strategic { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 2rem; }
|
|
45
|
+
@media (max-width: 720px) { .strategic { grid-template-columns: 1fr; } }
|
|
46
|
+
.strategic .card { background: var(--card); border: 1px solid var(--border); border-radius: 4px; padding: 1.25rem; }
|
|
47
|
+
.strategic .card.win { border-left: 3px solid var(--high); }
|
|
48
|
+
.strategic .card.loss { border-left: 3px solid var(--low); }
|
|
49
|
+
.strategic h3 { font-size: 0.9375rem; font-weight: 600; margin-bottom: 0.125rem; color: var(--black); display: flex; align-items: center; gap: 0.5rem; }
|
|
50
|
+
.strategic h3 .badge { font-size: 0.6875rem; font-weight: 700; padding: 2px 8px; border-radius: 999px; }
|
|
51
|
+
.strategic h3 .badge.win { background: rgba(144,201,77,0.12); color: #5a8a1a; border: 1px solid rgba(144,201,77,0.3); }
|
|
52
|
+
.strategic h3 .badge.loss { background: rgba(240,54,3,0.08); color: var(--low); border: 1px solid rgba(240,54,3,0.2); }
|
|
53
|
+
.strategic .sub { font-size: 0.8125rem; color: var(--muted); margin-bottom: 0.75rem; }
|
|
54
|
+
.strategic .prose { font-size: 0.9375rem; line-height: 1.6; color: var(--text); margin: 0.5rem 0 0; }
|
|
55
|
+
.strategic ul { list-style: none; }
|
|
56
|
+
.strategic li { padding: 0.375rem 0; font-size: 0.875rem; border-top: 1px solid var(--border); display: flex; justify-content: space-between; align-items: baseline; gap: 0.75rem; }
|
|
57
|
+
.strategic li:first-child { border-top: 0; }
|
|
58
|
+
.strategic li .who { color: var(--muted); font-size: 0.75rem; white-space: nowrap; }
|
|
59
|
+
.strategic .empty { color: var(--muted); font-size: 0.8125rem; padding: 0.5rem 0; }
|
|
60
|
+
|
|
61
|
+
.results-table { width: 100%; border-collapse: collapse; background: var(--card); border: 1px solid var(--border); border-radius: 4px; overflow: hidden; margin-bottom: 2rem; }
|
|
62
|
+
.results-table th { text-align: left; font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); font-weight: 600; padding: 0.75rem 1rem; border-bottom: 1px solid var(--border); background: #fafafa; }
|
|
63
|
+
.results-table td { padding: 0.75rem 1rem; border-bottom: 1px solid var(--border); font-size: 0.875rem; vertical-align: top; }
|
|
64
|
+
.results-table tr:last-child td { border-bottom: none; }
|
|
65
|
+
.results-table tr:hover { background: #fdfcfb; }
|
|
66
|
+
.results-table a { color: var(--brand); text-decoration: none; font-weight: 500; }
|
|
67
|
+
.results-table a:hover { text-decoration: underline; }
|
|
68
|
+
.muted-line { color: var(--muted); font-size: 0.75rem; display: block; margin-top: 2px; }
|
|
69
|
+
|
|
70
|
+
.pill { display: inline-block; font-size: 0.6875rem; font-weight: 600; padding: 2px 8px; border-radius: 999px; margin-right: 4px; margin-bottom: 3px; }
|
|
71
|
+
.pill-feature { background: rgba(77,169,228,0.12); color: #2172a3; border: 1px solid rgba(77,169,228,0.3); }
|
|
72
|
+
|
|
73
|
+
footer { margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid var(--border); display: flex; align-items: center; justify-content: center; gap: 0.5rem; font-size: 0.75rem; color: var(--muted); }
|
|
74
|
+
footer a { color: var(--brand); text-decoration: none; font-weight: 500; }
|
|
75
|
+
footer a:hover { text-decoration: underline; }
|
|
76
|
+
</style>
|
|
77
|
+
</head>
|
|
78
|
+
<body>
|
|
79
|
+
<div class="container">
|
|
80
|
+
<header>
|
|
81
|
+
<div class="header-left">
|
|
82
|
+
<h1>{{TITLE}}</h1>
|
|
83
|
+
<div class="meta">{{META}}</div>
|
|
84
|
+
</div>
|
|
85
|
+
<a href="https://browserbase.com" target="_blank" rel="noopener" style="display:flex;align-items:center;gap:0.5rem;text-decoration:none;color:var(--muted);font-size:0.8125rem;font-weight:500;">
|
|
86
|
+
<span>Powered by Browserbase</span>
|
|
87
|
+
<svg width="32" height="32" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" rx="8" fill="#F03603"/><path d="M36 72.2222V27.7778H51.2381C57.5873 27.7778 62.6667 32.8571 62.6667 39.2063V41.746C62.6667 44.6667 61.5873 47.3968 59.7461 49.3651C62.2858 51.4603 63.9366 54.6349 63.9366 58.254V60.7936C63.9366 67.1428 58.8572 72.2222 52.508 72.2222H36ZM42.3493 65.873H52.508C55.3651 65.873 57.5873 63.6508 57.5873 60.7936V58.254C57.5873 55.3968 55.3651 53.1746 52.508 53.1746H42.3493V65.873ZM42.3493 46.8254H51.2381C54.0953 46.8254 56.3175 44.6032 56.3175 41.746V39.2063C56.3175 36.3492 54.0953 34.127 51.2381 34.127H42.3493V46.8254Z" fill="white"/></svg>
|
|
88
|
+
</a>
|
|
89
|
+
</header>
|
|
90
|
+
|
|
91
|
+
<nav class="views">
|
|
92
|
+
<a href="index.html" class="active">Overview</a>
|
|
93
|
+
<a href="matrix.html">Matrix</a>
|
|
94
|
+
<a href="mentions.html">Mentions</a>
|
|
95
|
+
</nav>
|
|
96
|
+
|
|
97
|
+
<div class="summary">
|
|
98
|
+
<div class="stat"><div class="label">Competitors</div><div class="value">{{TOTAL}}</div></div>
|
|
99
|
+
<div class="stat"><div class="label">Mentions</div><div class="value">{{MENTION_COUNT}}</div></div>
|
|
100
|
+
<div class="stat"><div class="label">Benchmarks</div><div class="value">{{BENCHMARK_COUNT}}</div></div>
|
|
101
|
+
<div class="stat"><div class="label">With Pricing</div><div class="value">{{WITH_PRICING}}</div></div>
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
{{STRATEGIC_SUMMARY}}
|
|
105
|
+
|
|
106
|
+
<table class="results-table">
|
|
107
|
+
<thead>
|
|
108
|
+
<tr>
|
|
109
|
+
<th>Competitor</th>
|
|
110
|
+
<th>Positioning</th>
|
|
111
|
+
<th>Pricing</th>
|
|
112
|
+
<th>Key Features</th>
|
|
113
|
+
<th>Strategic Diff</th>
|
|
114
|
+
</tr>
|
|
115
|
+
</thead>
|
|
116
|
+
<tbody>
|
|
117
|
+
{{TABLE_ROWS}}
|
|
118
|
+
</tbody>
|
|
119
|
+
</table>
|
|
120
|
+
</div>
|
|
121
|
+
|
|
122
|
+
<footer>
|
|
123
|
+
<svg width="16" height="16" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="100" height="100" rx="8" fill="#F03603"/><path d="M36 72.2222V27.7778H51.2381C57.5873 27.7778 62.6667 32.8571 62.6667 39.2063V41.746C62.6667 44.6667 61.5873 47.3968 59.7461 49.3651C62.2858 51.4603 63.9366 54.6349 63.9366 58.254V60.7936C63.9366 67.1428 58.8572 72.2222 52.508 72.2222H36ZM42.3493 65.873H52.508C55.3651 65.873 57.5873 63.6508 57.5873 60.7936V58.254C57.5873 55.3968 55.3651 53.1746 52.508 53.1746H42.3493V65.873ZM42.3493 46.8254H51.2381C54.0953 46.8254 56.3175 44.6032 56.3175 41.746V39.2063C56.3175 36.3492 54.0953 34.127 51.2381 34.127H42.3493V46.8254Z" fill="white"/></svg>
|
|
124
|
+
Generated by <a href="https://github.com/anthropics/skills">competitor-analysis</a> · Powered by <a href="https://browserbase.com">Browserbase</a>
|
|
125
|
+
</footer>
|
|
126
|
+
</body>
|
|
127
|
+
</html>
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# Competitor Analysis — Research Patterns
|
|
2
|
+
|
|
3
|
+
## Contents
|
|
4
|
+
- [Overview](#overview) — two research contexts (self vs target)
|
|
5
|
+
- [Self-Research (User's Company)](#self-research-users-company) — sub-questions, page discovery, synthesis output (precise_category, include keywords, exclusion list)
|
|
6
|
+
- [Competitor Research — 4 Research Lanes](#competitor-research--4-research-lanes) — Marketing / External / Benchmarks / Strategic Diff
|
|
7
|
+
- [Depth Mode Behavior](#depth-mode-behavior) — quick / deep / deeper budgets and scope
|
|
8
|
+
- [Finding Format (per lane)](#finding-format-per-lane) — JSON shape, confidence levels
|
|
9
|
+
- [Research Loop Rules](#research-loop-rules) — 7 meta-rules for the research phase
|
|
10
|
+
- [Synthesis Instructions](#synthesis-instructions) — turn findings into matrix cells
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
Two research contexts:
|
|
15
|
+
1. **Self-Research** (Step 1) — Deep research on the user's company so we know what "competitor" means for this run.
|
|
16
|
+
2. **Competitor Research** (Step 4) — For each discovered/seeded competitor, run the 4-lane enrichment below.
|
|
17
|
+
|
|
18
|
+
Both use the Plan → Research → Synthesize pattern. Self-research is identical in shape to the one in `company-research`, so profiles can be reused across skills.
|
|
19
|
+
|
|
20
|
+
## Self-Research (User's Company)
|
|
21
|
+
|
|
22
|
+
### Sub-Questions
|
|
23
|
+
- "What does {company} sell and what specific problem does it solve?"
|
|
24
|
+
- "Who are {company}'s existing customers? What industries, company sizes, use cases?"
|
|
25
|
+
- "Who are {company}'s known competitors? What category do they compete in?"
|
|
26
|
+
- "What pricing model does {company} use?"
|
|
27
|
+
- "What features, integrations, and differentiators does {company}'s marketing emphasize?"
|
|
28
|
+
|
|
29
|
+
### Page Discovery
|
|
30
|
+
Dynamic via sitemap — do NOT hardcode `/about` or `/pricing`:
|
|
31
|
+
1. `browse cloud fetch --allow-redirects "{company website}/sitemap.xml"` — primary source
|
|
32
|
+
2. Scan for URLs with keywords: `pricing`, `customer`, `compare`, `vs`, `about`, `features`, `integrations`
|
|
33
|
+
3. Optionally fetch `/llms.txt` for page descriptions
|
|
34
|
+
4. Pick 3-5 most relevant URLs
|
|
35
|
+
|
|
36
|
+
### External Research
|
|
37
|
+
- `browse cloud search "{company} alternatives competitors vs"`
|
|
38
|
+
- `browse cloud search "{company} review comparison"`
|
|
39
|
+
- Fetch 1-2 most informative third-party pages
|
|
40
|
+
|
|
41
|
+
### Synthesis Output
|
|
42
|
+
Produce a profile with:
|
|
43
|
+
- **Company**, **Product**, **Existing Customers**, **Competitors** (seed list), **Use Cases**
|
|
44
|
+
- **precise_category** — one clear sentence that describes what category this product competes in. Avoid fuzzy words like "tools" or "platform". Good: "AI web search API for agents with neural + keyword retrieval". Bad: "search tools". This becomes the anchor for discovery queries and the gate.
|
|
45
|
+
- **category_include_keywords** — 8-15 phrases that a *direct competitor's* marketing would very likely contain (title or hero). Include semantic variants. e.g. for Exa: `web search api`, `search api`, `neural search`, `semantic search`, `retrieval api`, `search for ai agents`, `search for llms`, `serp api`, `embeddings search`, `live crawling`, `answer api`, `research api`.
|
|
46
|
+
- **exclusion_list** — phrases that indicate a *different* category, used by the gate to reject false positives. e.g. `vector database`, `enterprise search appliance`, `site search widget`, `observability`, `analytics platform`, `data warehouse`, `scraping platform` (full ETL/scraping suites, not retrieval APIs), `internal knowledge base`.
|
|
47
|
+
|
|
48
|
+
The same `profiles/{company-slug}.json` shape used by `company-research`, extended with the three new fields. The `competitors` array becomes the seed list and the first inputs to the comparison-graph expansion in Step 3.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Competitor Research — 4 Research Lanes
|
|
53
|
+
|
|
54
|
+
For each competitor, run these four lanes (depth-gated):
|
|
55
|
+
|
|
56
|
+
### Lane 1 — Marketing Surface (ALL depth modes)
|
|
57
|
+
Goal: extract what the competitor says about themselves from their own site.
|
|
58
|
+
|
|
59
|
+
**Sub-questions**:
|
|
60
|
+
- "What does {competitor} sell, who is it for, and how is it positioned?"
|
|
61
|
+
- "What are {competitor}'s pricing tiers and pricing model?"
|
|
62
|
+
- "What key features, integrations, and platforms does {competitor} list?"
|
|
63
|
+
|
|
64
|
+
**Pages to fetch** (via sitemap discovery — do NOT hardcode):
|
|
65
|
+
1. Homepage
|
|
66
|
+
2. `/pricing` (or equivalent from sitemap)
|
|
67
|
+
3. `/features`, `/product`, `/platform`, `/solutions`
|
|
68
|
+
4. `/integrations`, `/customers`, `/case-studies`
|
|
69
|
+
|
|
70
|
+
**Extract into frontmatter fields**: `tagline`, `positioning`, `product_description`, `target_customer`, `pricing_model`, `pricing_tiers`, `key_features`, `integrations`.
|
|
71
|
+
|
|
72
|
+
### Lane 2 — External Signal (deep + deeper)
|
|
73
|
+
Goal: what the rest of the internet says about them.
|
|
74
|
+
|
|
75
|
+
**Sub-questions**:
|
|
76
|
+
- "What third-party comparison pages mention {competitor}?"
|
|
77
|
+
- "What do users say on Reddit, HN, G2, Capterra?"
|
|
78
|
+
- "What recent news, launches, or announcements?"
|
|
79
|
+
- "Who is talking about them on LinkedIn or YouTube?"
|
|
80
|
+
|
|
81
|
+
**Search queries**:
|
|
82
|
+
```
|
|
83
|
+
"{competitor} vs"
|
|
84
|
+
"{competitor} alternatives"
|
|
85
|
+
"{competitor} review"
|
|
86
|
+
"{competitor} G2" / "{competitor} Capterra"
|
|
87
|
+
"site:reddit.com {competitor}"
|
|
88
|
+
"site:news.ycombinator.com {competitor}"
|
|
89
|
+
"site:linkedin.com/posts {competitor}"
|
|
90
|
+
"site:youtube.com {competitor}"
|
|
91
|
+
"{competitor} launch 2025 OR 2026"
|
|
92
|
+
"{competitor} funding announcement"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Extraction rule**: From search results, harvest each hit as a `Mentions` entry. Classify source type from the URL:
|
|
96
|
+
- `reddit.com` → `Reddit`
|
|
97
|
+
- `news.ycombinator.com` → `HN`
|
|
98
|
+
- `linkedin.com` → `LinkedIn`
|
|
99
|
+
- `youtube.com` / `youtu.be` → `YouTube`
|
|
100
|
+
- `g2.com` / `capterra.com` / `trustradius.com` → `Review`
|
|
101
|
+
- `*vs*` in path or title → `Comparison`
|
|
102
|
+
- news domains (techcrunch, theverge, venturebeat, forbes, businesswire, globenewswire) → `News`
|
|
103
|
+
- `twitter.com` / `x.com` → `X`
|
|
104
|
+
- `spotify.com/episode` / transistor/simplecast → `Podcast`
|
|
105
|
+
|
|
106
|
+
For LinkedIn and YouTube, the snippet + URL from `browse cloud search` is enough. Do NOT try to deep-fetch individual LinkedIn posts (auth walls) — list them with title/snippet.
|
|
107
|
+
|
|
108
|
+
### Lane 3 — Public Benchmarks (deeper only)
|
|
109
|
+
Goal: find third-party benchmarks that measured this competitor's product.
|
|
110
|
+
|
|
111
|
+
**Sub-questions**:
|
|
112
|
+
- "Has {competitor} been included in any public benchmark?"
|
|
113
|
+
- "Are there GitHub repos, PRs, or blog posts comparing {competitor} head-to-head on a measured axis (speed, accuracy, cost, pass rate)?"
|
|
114
|
+
|
|
115
|
+
**Search queries**:
|
|
116
|
+
```
|
|
117
|
+
"{competitor} benchmark"
|
|
118
|
+
"{competitor} performance test"
|
|
119
|
+
"site:github.com {competitor} benchmark"
|
|
120
|
+
"site:github.com {competitor} vs"
|
|
121
|
+
"{competitor} vs {seed_competitor} benchmark" # pairwise, use another known competitor as the seed
|
|
122
|
+
"{category} benchmark {competitor}" # e.g. "web search api benchmark {competitor}"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Extraction**: Add each hit to `Benchmarks` section with: title, source, URL, key finding (one line). Also mirror into `Mentions` with type `Benchmark`.
|
|
126
|
+
|
|
127
|
+
**Known benchmark repos to check directly** (if domain is on-topic):
|
|
128
|
+
- Public retrieval-quality leaderboards (e.g. BEIR / MTEB-style repos) when a vendor publishes scores
|
|
129
|
+
- Category-specific benchmark repos discovered via the first search wave
|
|
130
|
+
|
|
131
|
+
### Lane 4 — Strategic Diff vs User's Company (deeper only)
|
|
132
|
+
Goal: explicitly compare this competitor to the user's company.
|
|
133
|
+
|
|
134
|
+
**Inputs**: `{user_company_profile}` (from Step 1) — specifically `product`, `use_cases`, `key_features` if available.
|
|
135
|
+
|
|
136
|
+
**Sub-questions**:
|
|
137
|
+
- "What features does {competitor} have that {user_company} does not?"
|
|
138
|
+
- "What features does {user_company} have that {competitor} does not?"
|
|
139
|
+
- "Who does {competitor} serve that {user_company} does not (and vice versa)?"
|
|
140
|
+
- "Where does each one win on the marketing surface (price, feature depth, DX, ecosystem)?"
|
|
141
|
+
|
|
142
|
+
**No new fetches required** for this lane — it's a synthesis step over Lane 1 + 2 + 3 findings plus the user's profile. Write as:
|
|
143
|
+
|
|
144
|
+
```markdown
|
|
145
|
+
## Comparison vs {user_company}
|
|
146
|
+
- **Overlaps**: ...
|
|
147
|
+
- **Gaps**: ...
|
|
148
|
+
- **Where they win**: ...
|
|
149
|
+
- **Where you win**: ...
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Also populate the `strategic_diff` frontmatter field with a one-line summary for the overview table.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Depth Mode Behavior
|
|
157
|
+
|
|
158
|
+
### Quick Mode (~lots of competitors, cheap)
|
|
159
|
+
- **Lanes**: 1 only
|
|
160
|
+
- **Budget**: 2-3 tool calls per competitor (homepage + pricing page)
|
|
161
|
+
- **Fields populated**: tagline, product_description, pricing_tiers, key_features
|
|
162
|
+
- **Mentions / Benchmarks / Comparison**: skipped
|
|
163
|
+
|
|
164
|
+
### Deep Mode (balanced, default)
|
|
165
|
+
- **Lanes**: 1 + 2
|
|
166
|
+
- **Budget**: 5-8 tool calls per competitor
|
|
167
|
+
- **Everything in quick** + 5-10 mentions across source types
|
|
168
|
+
|
|
169
|
+
### Deeper Mode (full intel)
|
|
170
|
+
- **Lanes**: 1 + 2 + 3 + 4
|
|
171
|
+
- **Budget**: 10-15 tool calls per competitor
|
|
172
|
+
- **Everything in deep** + benchmarks section + strategic diff section
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Finding Format (per lane)
|
|
177
|
+
|
|
178
|
+
Every finding is a factual statement tied to a source:
|
|
179
|
+
|
|
180
|
+
```json
|
|
181
|
+
{
|
|
182
|
+
"lane": "marketing | external | benchmark | strategic",
|
|
183
|
+
"fact": "Rival Co charges $99/mo for 10K search requests",
|
|
184
|
+
"sourceUrl": "https://rivalco.com/pricing",
|
|
185
|
+
"confidence": "high"
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Confidence**:
|
|
190
|
+
- `high`: Directly stated on the competitor's own website or official press
|
|
191
|
+
- `medium`: Inferred from third-party articles, reviews, or job posts
|
|
192
|
+
- `low`: Speculative / outdated sources
|
|
193
|
+
|
|
194
|
+
## Research Loop Rules
|
|
195
|
+
|
|
196
|
+
1. **Lane 1 first** — always start with the competitor's own site
|
|
197
|
+
2. **Use sitemap, not hardcoded paths** — `/pricing` might be `/plans` or `/pricing-plans`
|
|
198
|
+
3. **Rephrase, don't retry** — if a search returns generic junk, switch keywords
|
|
199
|
+
4. **Fetch selectively** — pick the 1-2 most promising URLs per query
|
|
200
|
+
5. **For LinkedIn/YouTube: search only, don't fetch** — snippet is enough, avoid auth walls
|
|
201
|
+
6. **Respect step budget** per depth mode
|
|
202
|
+
7. **Deduplicate mentions** — same URL should only appear once in `## Mentions`
|
|
203
|
+
|
|
204
|
+
## Synthesis Instructions
|
|
205
|
+
|
|
206
|
+
After the research loop completes for a competitor:
|
|
207
|
+
|
|
208
|
+
1. Fill frontmatter fields from Lane 1 findings
|
|
209
|
+
2. Write body sections: Product, Pricing, Features, Positioning (all from Lane 1)
|
|
210
|
+
3. Append `## Mentions` from Lane 2 classified hits
|
|
211
|
+
4. Append `## Benchmarks` from Lane 3 (deeper only)
|
|
212
|
+
5. Append `## Comparison vs {user_company}` from Lane 4 synthesis (deeper only)
|
|
213
|
+
6. Append `## Research Findings` as a raw-findings appendix with confidence tags
|
|
214
|
+
|
|
215
|
+
No ICP score. No threat score. Pure intel.
|
|
216
|
+
|
|
217
|
+
If a field has no supporting findings, leave it empty rather than guessing.
|