@veyralabs/skills 0.4.0 → 0.5.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 +40 -7
- package/bin/cli.js +34 -0
- package/commands/venture-analyst.md +16 -0
- package/install.sh +36 -0
- package/package.json +6 -2
- package/skills/venture-suite/venture-analyst/SKILL.md +269 -0
- package/skills/venture-suite/venture-analyst/references/blue-ocean.md +130 -0
- package/skills/venture-suite/venture-analyst/references/customer-dev.md +147 -0
- package/skills/venture-suite/venture-analyst/references/lean-startup.md +123 -0
- package/skills/venture-suite/venture-analyst/references/mom-test.md +146 -0
- package/skills/venture-suite/venture-analyst/references/traction.md +154 -0
- package/skills/venture-suite/venture-analyst/scripts/enhance_detect.py +172 -0
- package/skills/venture-suite/venture-analyst/scripts/experiments.py +228 -0
- package/skills/venture-suite/venture-analyst/scripts/scraper.py +194 -0
- package/skills/venture-suite/venture-analyst/scripts/sources.py +288 -0
- package/skills/venture-suite/venture-analyst/templates/experiment-spec.md +119 -0
- package/skills/venture-suite/venture-analyst/templates/verdict.md +160 -0
package/README.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
# VeyraSkills
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
  
|
|
4
|
+
|
|
5
|
+
Skills for Claude Code and other AI coding agents. Each skill is a plain text file that teaches your agent a specialized workflow - naming, branding, website cloning, Shopify development, and more.
|
|
4
6
|
|
|
5
7
|
```bash
|
|
6
8
|
npx @veyralabs/skills install naming-suite
|
|
7
9
|
npx @veyralabs/skills install webcloner
|
|
10
|
+
npx @veyralabs/skills install shopify-suite
|
|
11
|
+
npx @veyralabs/skills install venture-suite
|
|
8
12
|
```
|
|
9
13
|
|
|
10
14
|
Or install everything at once:
|
|
@@ -30,6 +34,25 @@ Four skills for naming products, auditing brands, mapping competitors, and build
|
|
|
30
34
|
|
|
31
35
|
Works best in sequence: run `competitornames` to understand the landscape, then `domainforge` to generate names that stand out from it.
|
|
32
36
|
|
|
37
|
+
### shopify-suite
|
|
38
|
+
|
|
39
|
+
Two skills covering the full Shopify stack - one for developers building themes and apps, one for merchants auditing and optimizing stores.
|
|
40
|
+
|
|
41
|
+
| Skill | What it does |
|
|
42
|
+
|-------|-------------|
|
|
43
|
+
| [shopify-dev](./skills/shopify-suite/shopify-dev/SKILL.md) | Shopify development across all layers: Liquid themes, JSON templates, app development with Remix, Storefront and Admin API, CLI workflows, checkout extensions, Hydrogen. Fetches live Shopify documentation via Context7 before answering version-sensitive questions |
|
|
44
|
+
| [shopify-store](./skills/shopify-suite/shopify-store/SKILL.md) | Store audit and optimization. Works in two modes: Mode A uses shopify-mcp to read real store data (products, orders, apps, metafields); Mode B uses public extraction when MCP is not available. Audits 6 dimensions: catalog health, collection architecture, navigation, SEO, app stack, conversion signals |
|
|
45
|
+
|
|
46
|
+
### venture-suite
|
|
47
|
+
|
|
48
|
+
Research a startup or SaaS idea before building. Collects evidence from HN, Reddit, GitHub, and web searches - no API keys required.
|
|
49
|
+
|
|
50
|
+
| Skill | What it does |
|
|
51
|
+
|-------|-------------|
|
|
52
|
+
| [venture-analyst](./skills/venture-suite/venture-analyst/SKILL.md) | Four-phase idea validation: problem discovery (evidence from real sources), competitor intelligence (pricing, gaps, weaknesses), validation experiments (Mom Test, fake door, concierge MVP), and a Bull/Bear/Judge verdict with confidence score |
|
|
53
|
+
|
|
54
|
+
Includes Python scripts for zero-key data collection and auto-detection of available enhancements (SearXNG via Docker, optional API keys). All methodology references included: Lean Startup, Customer Development, Mom Test, Blue Ocean Strategy, Traction.
|
|
55
|
+
|
|
33
56
|
### webcloner
|
|
34
57
|
|
|
35
58
|
Clone any landing page, marketing site, portfolio, or ecommerce storefront into a pixel-accurate Next.js replica.
|
|
@@ -51,6 +74,11 @@ Works for landings, marketing sites, portfolios, and ecommerce product pages. No
|
|
|
51
74
|
```bash
|
|
52
75
|
npx @veyralabs/skills install naming-suite
|
|
53
76
|
npx @veyralabs/skills install webcloner
|
|
77
|
+
npx @veyralabs/skills install shopify-suite
|
|
78
|
+
npx @veyralabs/skills install shopify-dev
|
|
79
|
+
npx @veyralabs/skills install shopify-store
|
|
80
|
+
npx @veyralabs/skills install venture-suite
|
|
81
|
+
npx @veyralabs/skills install venture-analyst
|
|
54
82
|
npx @veyralabs/skills install domainforge
|
|
55
83
|
```
|
|
56
84
|
|
|
@@ -109,14 +137,14 @@ npx @veyralabs/skills install domainforge
|
|
|
109
137
|
## Coming soon
|
|
110
138
|
|
|
111
139
|
**brand-suite**
|
|
112
|
-
- `brandvoice`
|
|
113
|
-
- `brandpositioning`
|
|
114
|
-
- `taglineforge`
|
|
140
|
+
- `brandvoice` - tone of voice guide generator
|
|
141
|
+
- `brandpositioning` - positioning statement and competitive differentiation
|
|
142
|
+
- `taglineforge` - tagline generation with scoring
|
|
115
143
|
|
|
116
144
|
**gtm-suite**
|
|
117
|
-
- `icp`
|
|
118
|
-
- `pricingstrategy`
|
|
119
|
-
- `gtmplan`
|
|
145
|
+
- `icp` - Ideal Customer Profile builder
|
|
146
|
+
- `pricingstrategy` - pricing model analysis
|
|
147
|
+
- `gtmplan` - go-to-market plan generator
|
|
120
148
|
|
|
121
149
|
---
|
|
122
150
|
|
|
@@ -126,6 +154,11 @@ Each skill is also published as a standalone npm package if you only want one:
|
|
|
126
154
|
|
|
127
155
|
- `@veyralabs/naming-suite`
|
|
128
156
|
- `@veyralabs/webcloner`
|
|
157
|
+
- `@veyralabs/shopify-suite`
|
|
158
|
+
- `@veyralabs/shopify-dev`
|
|
159
|
+
- `@veyralabs/shopify-store`
|
|
160
|
+
- `@veyralabs/venture-suite`
|
|
161
|
+
- `@veyralabs/venture-analyst`
|
|
129
162
|
|
|
130
163
|
---
|
|
131
164
|
|
package/bin/cli.js
CHANGED
|
@@ -4,10 +4,18 @@
|
|
|
4
4
|
const fs = require('fs');
|
|
5
5
|
const path = require('path');
|
|
6
6
|
const os = require('os');
|
|
7
|
+
const { execFileSync } = require('child_process');
|
|
7
8
|
|
|
8
9
|
const SKILLS_DIR = path.join(__dirname, '..', 'skills');
|
|
9
10
|
const COMMANDS_DIR = path.join(__dirname, '..', 'commands');
|
|
10
11
|
|
|
12
|
+
// pip packages required per skill
|
|
13
|
+
const SKILL_PIP_DEPS = {
|
|
14
|
+
'shopify-store': ['scrapling'],
|
|
15
|
+
'webcloner': ['scrapling'],
|
|
16
|
+
'venture-analyst': ['scrapling', 'ddgs', 'trendspyg', 'requests'],
|
|
17
|
+
};
|
|
18
|
+
|
|
11
19
|
const AGENT_PATHS = {
|
|
12
20
|
claude: { local: '.claude/skills', global: '.claude/skills' },
|
|
13
21
|
cursor: { local: '.cursor/skills', global: '.cursor/skills' },
|
|
@@ -78,6 +86,31 @@ function copySkill(name, skillPath, dest) {
|
|
|
78
86
|
console.log(` ✓ ${name}`);
|
|
79
87
|
}
|
|
80
88
|
|
|
89
|
+
function installPipDeps(skillNames) {
|
|
90
|
+
const pkgs = [...new Set(skillNames.flatMap(n => SKILL_PIP_DEPS[n] || []))];
|
|
91
|
+
if (pkgs.length === 0) return;
|
|
92
|
+
|
|
93
|
+
let pip = null;
|
|
94
|
+
for (const cmd of ['pip3', 'pip']) {
|
|
95
|
+
try { execFileSync(cmd, ['--version'], { stdio: 'ignore' }); pip = cmd; break; } catch {}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
if (!pip) {
|
|
99
|
+
console.log(` ⚠ Python pip not found. Install manually: pip install ${pkgs.join(' ')}`);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
for (const pkg of pkgs) {
|
|
104
|
+
try {
|
|
105
|
+
console.log(` Installing Python dependency: ${pkg}...`);
|
|
106
|
+
execFileSync(pip, ['install', pkg, '-q'], { stdio: 'inherit' });
|
|
107
|
+
console.log(` ✓ ${pkg}`);
|
|
108
|
+
} catch {
|
|
109
|
+
console.log(` ⚠ Failed to install ${pkg}. Run: ${pip} install ${pkg}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
81
114
|
// Copy slash commands — Claude Code only (.claude/commands/)
|
|
82
115
|
function copyCommands(agent, isGlobal) {
|
|
83
116
|
if (agent !== 'claude') return;
|
|
@@ -170,6 +203,7 @@ if (command === 'install') {
|
|
|
170
203
|
console.log(`\nInstalling into ${dest} [${agent}/${scope}]\n`);
|
|
171
204
|
toInstall.forEach(name => copySkill(name, skills[name], dest));
|
|
172
205
|
copyCommands(agent, isGlobal);
|
|
206
|
+
installPipDeps(toInstall);
|
|
173
207
|
console.log('\nDone. Restart your agent to activate skills.\n');
|
|
174
208
|
process.exit(0);
|
|
175
209
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Activate the venture-analyst skill. Task: $ARGUMENTS
|
|
2
|
+
|
|
3
|
+
Read the full skill at skills/venture-suite/venture-analyst/SKILL.md before doing anything else.
|
|
4
|
+
|
|
5
|
+
Then run the 4 phases in order:
|
|
6
|
+
|
|
7
|
+
1. Problem Discovery - collect evidence from HN, Reddit, GitHub, trends using scripts/sources.py
|
|
8
|
+
2. Competitor Intelligence - map the landscape using scripts/scraper.py and sources
|
|
9
|
+
3. Validation Experiments - generate prioritized experiments using scripts/experiments.py
|
|
10
|
+
4. Verdict - Bull case, Bear case, Judge verdict using the scoring system in SKILL.md
|
|
11
|
+
|
|
12
|
+
Start by detecting environment enhancements silently (scripts/enhance_detect.py) and use the best available search method without asking the user for any API keys.
|
|
13
|
+
|
|
14
|
+
If the user did not specify the idea clearly, ask one question: "What's the idea, and who is it for?"
|
|
15
|
+
|
|
16
|
+
Output the full verdict using templates/verdict.md as structure.
|
package/install.sh
CHANGED
|
@@ -114,6 +114,38 @@ check_deps() {
|
|
|
114
114
|
fi
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
# Skills that require Python packages: skill_name -> pip packages (space-separated)
|
|
118
|
+
declare -A SKILL_PIP_DEPS=(
|
|
119
|
+
["shopify-store"]="scrapling"
|
|
120
|
+
["webcloner"]="scrapling"
|
|
121
|
+
["venture-analyst"]="scrapling ddgs trendspyg requests"
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
install_pip_deps() {
|
|
125
|
+
local skill="$1"
|
|
126
|
+
local pkgs="${SKILL_PIP_DEPS[$skill]:-}"
|
|
127
|
+
[[ -z "$pkgs" ]] && return
|
|
128
|
+
|
|
129
|
+
local pip=""
|
|
130
|
+
for cmd in pip3 pip; do
|
|
131
|
+
command -v "$cmd" &>/dev/null && pip="$cmd" && break
|
|
132
|
+
done
|
|
133
|
+
|
|
134
|
+
if [[ -z "$pip" ]]; then
|
|
135
|
+
echo " Warning: pip not found. Install manually: pip install $pkgs"
|
|
136
|
+
return
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
for pkg in $pkgs; do
|
|
140
|
+
echo " Installing Python dependency: $pkg..."
|
|
141
|
+
if "$pip" install "$pkg" -q; then
|
|
142
|
+
echo " ✓ $pkg"
|
|
143
|
+
else
|
|
144
|
+
echo " Warning: failed to install $pkg. Run: $pip install $pkg"
|
|
145
|
+
fi
|
|
146
|
+
done
|
|
147
|
+
}
|
|
148
|
+
|
|
117
149
|
install_skill() {
|
|
118
150
|
local skill="$1"
|
|
119
151
|
local dest_dir="$2"
|
|
@@ -236,11 +268,15 @@ main() {
|
|
|
236
268
|
if [[ -n "$SKILL_NAME" ]]; then
|
|
237
269
|
echo "Installing '$SKILL_NAME' → $dest/"
|
|
238
270
|
install_skill "$SKILL_NAME" "$dest"
|
|
271
|
+
install_pip_deps "$SKILL_NAME"
|
|
239
272
|
echo ""
|
|
240
273
|
echo "Done. ${dest}/${SKILL_NAME}/ is ready."
|
|
241
274
|
else
|
|
242
275
|
echo "Installing all skills → $dest/"
|
|
243
276
|
install_all "$dest"
|
|
277
|
+
for skill in "${!SKILL_PIP_DEPS[@]}"; do
|
|
278
|
+
install_pip_deps "$skill"
|
|
279
|
+
done
|
|
244
280
|
echo ""
|
|
245
281
|
echo "Done. All skills installed to ${dest}/"
|
|
246
282
|
fi
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veyralabs/skills",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "VeyraSkills — A curated collection of Claude Code skills for founders, developers and AI builders",
|
|
5
5
|
"bin": {
|
|
6
6
|
"veyraskills": "bin/cli.js"
|
|
@@ -35,7 +35,11 @@
|
|
|
35
35
|
"shopify-theme",
|
|
36
36
|
"shopify-app",
|
|
37
37
|
"shopify-audit",
|
|
38
|
-
"ecommerce"
|
|
38
|
+
"ecommerce",
|
|
39
|
+
"startup-validation",
|
|
40
|
+
"market-research",
|
|
41
|
+
"idea-validation",
|
|
42
|
+
"lean-startup"
|
|
39
43
|
],
|
|
40
44
|
"author": "VeyraLabs <hello@veyralabs.com>",
|
|
41
45
|
"license": "MIT",
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: venture-analyst
|
|
3
|
+
description: Startup and SaaS idea validation. Researches market evidence, maps competitors, scores viability, and generates concrete validation experiments. Zero API keys required.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Venture Analyst
|
|
7
|
+
|
|
8
|
+
Research a startup or SaaS idea and determine if it's worth building. No fluff — real evidence from real sources.
|
|
9
|
+
|
|
10
|
+
## What this does
|
|
11
|
+
|
|
12
|
+
Four phases, each producing structured output:
|
|
13
|
+
|
|
14
|
+
1. **Problem Discovery** - Find evidence the problem actually exists (Reddit, HN, GitHub issues)
|
|
15
|
+
2. **Competitor Intelligence** - Map the landscape, find gaps, extract pricing signals
|
|
16
|
+
3. **Validation Experiments** - Generate 3 prioritized experiments to test demand before building
|
|
17
|
+
4. **Verdict** - Bull/Bear/Judge debate producing a final recommendation with confidence score
|
|
18
|
+
|
|
19
|
+
## How to use
|
|
20
|
+
|
|
21
|
+
Describe your idea. Include:
|
|
22
|
+
- What it does (one sentence)
|
|
23
|
+
- Who it's for (target customer)
|
|
24
|
+
- What problem it solves
|
|
25
|
+
|
|
26
|
+
Optional: budget for experiments, market type (B2C/B2B), known competitors.
|
|
27
|
+
|
|
28
|
+
## Phase 1 — Problem Discovery
|
|
29
|
+
|
|
30
|
+
**Goal:** Find evidence the problem is real and people talk about it unprompted.
|
|
31
|
+
|
|
32
|
+
Use `scripts/sources.py` to collect evidence:
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
from scripts.sources import search_hn, search_hn_comments, search_reddit, search_github_issues, get_trends
|
|
36
|
+
|
|
37
|
+
# HN: find discussions, Show HN, Ask HN about the problem space
|
|
38
|
+
hn_stories = search_hn(query, limit=20)
|
|
39
|
+
hn_comments = search_hn_comments(query, min_points=3, limit=30)
|
|
40
|
+
|
|
41
|
+
# Reddit: find complaints, questions, "is there a tool for X" posts
|
|
42
|
+
reddit_posts = search_reddit(query, limit=25, timeframe="year")
|
|
43
|
+
|
|
44
|
+
# GitHub: find feature requests and pain in related tools
|
|
45
|
+
gh_issues = search_github_issues(query, limit=20)
|
|
46
|
+
|
|
47
|
+
# Trends: is interest rising or declining?
|
|
48
|
+
trend_data = get_trends(keyword)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Synthesize findings:**
|
|
52
|
+
|
|
53
|
+
Look for these signals (strongest first):
|
|
54
|
+
- People spending money on bad solutions (evidence of willingness to pay)
|
|
55
|
+
- Recurring complaints with no good answer
|
|
56
|
+
- "Is there a tool that does X?" posts with many upvotes
|
|
57
|
+
- GitHub issues with many reactions and no resolution
|
|
58
|
+
- Rising trend line
|
|
59
|
+
|
|
60
|
+
Red flags:
|
|
61
|
+
- Zero discussion anywhere — not even a complaint
|
|
62
|
+
- Problem exists but nobody's tried to solve it (often means it's not painful enough)
|
|
63
|
+
- Only a few power users care, not a broad market
|
|
64
|
+
|
|
65
|
+
**Output format:**
|
|
66
|
+
```
|
|
67
|
+
## Problem Evidence
|
|
68
|
+
|
|
69
|
+
**Evidence Score:** [0-100] (use calculate_evidence_score())
|
|
70
|
+
**Trend:** [rising/stable/declining/no_data]
|
|
71
|
+
|
|
72
|
+
### What people say (direct quotes preferred)
|
|
73
|
+
- [Source] "[quote or paraphrase]" — [upvotes/reactions]
|
|
74
|
+
|
|
75
|
+
### Pain signals
|
|
76
|
+
- [description of signal + source count]
|
|
77
|
+
|
|
78
|
+
### Gaps found
|
|
79
|
+
- [what existing solutions miss]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Phase 2 — Competitor Intelligence
|
|
83
|
+
|
|
84
|
+
**Goal:** Map who's already solving this. Find pricing, positioning gaps, weak points.
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
from scripts.scraper import scrape_competitor
|
|
88
|
+
from scripts.sources import search_github_repos, search_web
|
|
89
|
+
|
|
90
|
+
# Find competitors via web and GitHub
|
|
91
|
+
repos = search_github_repos(f"{idea} tool", limit=8)
|
|
92
|
+
web_results = search_web(f"{idea} software alternatives", limit=8)
|
|
93
|
+
|
|
94
|
+
# Scrape each competitor's pricing + positioning
|
|
95
|
+
for url in competitor_urls:
|
|
96
|
+
data = scrape_competitor(url)
|
|
97
|
+
# data has: title, tagline, description, pricing, features, tech_stack
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Competitive map structure:**
|
|
101
|
+
```
|
|
102
|
+
| Name | Pricing | Target | Weakness | Stars |
|
|
103
|
+
|------|---------|--------|----------|-------|
|
|
104
|
+
| X | $49/mo | SMBs | No API | 2.1k |
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Gaps to look for:**
|
|
108
|
+
- Price ceiling: is there a tier missing?
|
|
109
|
+
- Audience gap: power users vs beginners vs enterprise
|
|
110
|
+
- Feature gap: what do G2/Reddit reviews complain about?
|
|
111
|
+
- Distribution gap: who's not in a specific channel?
|
|
112
|
+
|
|
113
|
+
**G2 reviews (when Playwright available):**
|
|
114
|
+
```python
|
|
115
|
+
from scripts.scraper import scrape_g2_reviews
|
|
116
|
+
reviews = scrape_g2_reviews("https://www.g2.com/products/[product]/reviews")
|
|
117
|
+
# Check for recurring "cons" patterns
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Output format:**
|
|
121
|
+
```
|
|
122
|
+
## Competitor Map
|
|
123
|
+
|
|
124
|
+
### Direct competitors
|
|
125
|
+
[table]
|
|
126
|
+
|
|
127
|
+
### Indirect / adjacent
|
|
128
|
+
[list with one-line descriptions]
|
|
129
|
+
|
|
130
|
+
### Market gaps
|
|
131
|
+
- Gap 1: [description + evidence]
|
|
132
|
+
- Gap 2: [description + evidence]
|
|
133
|
+
|
|
134
|
+
### Pricing landscape
|
|
135
|
+
- Range: [$X - $Y/month]
|
|
136
|
+
- Free tier pattern: [present/absent]
|
|
137
|
+
- Typical model: [seat/flat/usage]
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Phase 3 — Validation Experiments
|
|
141
|
+
|
|
142
|
+
**Goal:** Before writing code, find out if people will actually pay.
|
|
143
|
+
|
|
144
|
+
```python
|
|
145
|
+
from scripts.experiments import generate_experiments, format_experiment_output
|
|
146
|
+
|
|
147
|
+
experiments = generate_experiments(
|
|
148
|
+
idea=idea,
|
|
149
|
+
target_customer=target,
|
|
150
|
+
market_type="b2b", # or "b2c"
|
|
151
|
+
competition_level="medium", # low/medium/high
|
|
152
|
+
budget="zero", # zero / low / medium
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
print(format_experiment_output(experiments, idea))
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Always present experiments in priority order. Cheapest + highest-signal first.
|
|
159
|
+
|
|
160
|
+
**Mom Test enforcement** — when helping design interviews or outreach:
|
|
161
|
+
- See `references/mom-test.md` for good vs bad questions
|
|
162
|
+
- Detect and flag future-hypothetical questions ("would you use X?")
|
|
163
|
+
- Replace with past-behavior questions ("how do you currently handle X?")
|
|
164
|
+
|
|
165
|
+
## Phase 4 — Verdict
|
|
166
|
+
|
|
167
|
+
**Goal:** Simulate a debate between Bull, Bear, and Judge. Reach a conclusion.
|
|
168
|
+
|
|
169
|
+
### Bull case (write this first)
|
|
170
|
+
- Strongest evidence for building it
|
|
171
|
+
- Market timing arguments
|
|
172
|
+
- Why this team / why now
|
|
173
|
+
- Best-case scenario with numbers
|
|
174
|
+
|
|
175
|
+
### Bear case (steelman the opposition)
|
|
176
|
+
- Strongest evidence AGAINST
|
|
177
|
+
- Why existing solutions might be good enough
|
|
178
|
+
- Market risks, timing risks, competition risks
|
|
179
|
+
- Why it might fail even if the problem is real
|
|
180
|
+
|
|
181
|
+
### Judge verdict
|
|
182
|
+
Read both cases. Apply these criteria:
|
|
183
|
+
|
|
184
|
+
| Signal | Weight |
|
|
185
|
+
|--------|--------|
|
|
186
|
+
| Evidence score > 60 | +2 |
|
|
187
|
+
| Trend = rising | +1 |
|
|
188
|
+
| Competitors have clear weakness | +1 |
|
|
189
|
+
| No dominant player (>50% market) | +1 |
|
|
190
|
+
| B2B with willingness-to-pay signals | +1 |
|
|
191
|
+
| Price ceiling exists | +1 |
|
|
192
|
+
| Evidence score < 30 | -3 |
|
|
193
|
+
| Trend = declining | -2 |
|
|
194
|
+
| 1+ competitor with >100k users + free tier | -2 |
|
|
195
|
+
| Problem is niche (<10k potential users) | -1 |
|
|
196
|
+
|
|
197
|
+
**Verdict output:**
|
|
198
|
+
```
|
|
199
|
+
## Verdict
|
|
200
|
+
|
|
201
|
+
**Recommendation:** [BUILD / VALIDATE FIRST / AVOID]
|
|
202
|
+
**Confidence:** [High / Medium / Low]
|
|
203
|
+
**Score:** [+N or -N]
|
|
204
|
+
|
|
205
|
+
### Judge's reasoning
|
|
206
|
+
[2-3 sentences. Direct. No hedging.]
|
|
207
|
+
|
|
208
|
+
### If BUILD: suggested starting point
|
|
209
|
+
[Specific first step. Not generic advice.]
|
|
210
|
+
|
|
211
|
+
### If VALIDATE FIRST: critical unknown
|
|
212
|
+
[The one thing that must be proven before spending time.]
|
|
213
|
+
|
|
214
|
+
### If AVOID: core problem
|
|
215
|
+
[Why specifically this fails. What would have to change.]
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Enhancement detection
|
|
219
|
+
|
|
220
|
+
Run at session start to unlock better sources:
|
|
221
|
+
|
|
222
|
+
```python
|
|
223
|
+
from scripts.enhance_detect import detect_level, ensure_searxng, best_search
|
|
224
|
+
|
|
225
|
+
env = detect_level()
|
|
226
|
+
# Returns: docker, searxng, veyrascrape_mcp, github_token, exa_key, tavily_key, groq_key
|
|
227
|
+
|
|
228
|
+
# If Docker available, auto-launch SearXNG for better web search
|
|
229
|
+
if env["docker"] and not env["searxng"]:
|
|
230
|
+
ensure_searxng() # silent, no user prompt
|
|
231
|
+
|
|
232
|
+
# Use best available search
|
|
233
|
+
results = best_search(query, env, limit=10)
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Level 1 (always works):** HN + Reddit + GitHub + ddgs + trendspyg
|
|
237
|
+
**Level 2 (auto, no keys):** + SearXNG via Docker (if Docker installed)
|
|
238
|
+
**Level 3 (optional keys):** + Exa, Tavily, GitHub authenticated, VeyraScrape MCP
|
|
239
|
+
|
|
240
|
+
Never ask the user to set up API keys. Auto-detect and use what's available.
|
|
241
|
+
|
|
242
|
+
## Evidence Score interpretation
|
|
243
|
+
|
|
244
|
+
From `calculate_evidence_score()` in `sources.py`:
|
|
245
|
+
|
|
246
|
+
| Score | Meaning |
|
|
247
|
+
|-------|---------|
|
|
248
|
+
| 0-20 | Weak - barely any signal. Rethink or pivot problem framing |
|
|
249
|
+
| 21-40 | Thin - some signal but not convincing |
|
|
250
|
+
| 41-60 | Moderate - proceed to competitor research |
|
|
251
|
+
| 61-80 | Strong - real problem, real people care |
|
|
252
|
+
| 81-100 | Very strong - validated pain, move to experiments immediately |
|
|
253
|
+
|
|
254
|
+
## Methodology references
|
|
255
|
+
|
|
256
|
+
- `references/lean-startup.md` - validated learning, MVP types, pivot signals
|
|
257
|
+
- `references/customer-dev.md` - Steve Blank's 4 steps, problem interview structure
|
|
258
|
+
- `references/mom-test.md` - good vs bad interview questions
|
|
259
|
+
- `references/blue-ocean.md` - Value Curve, ERRC Grid, finding uncontested space
|
|
260
|
+
- `references/traction.md` - 19 acquisition channels, Bullseye framework
|
|
261
|
+
|
|
262
|
+
## Output principles
|
|
263
|
+
|
|
264
|
+
1. Lead with evidence, not opinions
|
|
265
|
+
2. Quote real sources (HN post, Reddit thread, GitHub issue)
|
|
266
|
+
3. Be specific about numbers (upvotes, stars, $prices)
|
|
267
|
+
4. Separate fact from inference clearly
|
|
268
|
+
5. Bull/Bear before Verdict — don't skip the debate
|
|
269
|
+
6. Verdict must commit to a recommendation — no "it depends" without specifics
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Blue Ocean Strategy Reference
|
|
2
|
+
|
|
3
|
+
W. Chan Kim & Renee Mauborgne, "Blue Ocean Strategy" (2005, updated 2015).
|
|
4
|
+
|
|
5
|
+
## Core concept
|
|
6
|
+
|
|
7
|
+
**Red Ocean:** existing market space. Competitors fight over same customers. Bloody from competition.
|
|
8
|
+
**Blue Ocean:** new market space. Create demand, not fight for it.
|
|
9
|
+
|
|
10
|
+
The goal: don't compete where everyone else is. Find (or create) a space where there's no direct competition.
|
|
11
|
+
|
|
12
|
+
This is not about being "different" for its own sake. It's about finding where existing solutions fail enough customers that a new approach can win without fighting incumbents.
|
|
13
|
+
|
|
14
|
+
## Value Innovation
|
|
15
|
+
|
|
16
|
+
The foundation of blue ocean strategy. The simultaneous pursuit of:
|
|
17
|
+
- **Differentiation** (more value for customers) AND
|
|
18
|
+
- **Low cost** (lower cost to deliver)
|
|
19
|
+
|
|
20
|
+
Most companies choose one. Blue ocean does both by eliminating or reducing what the industry assumes is necessary.
|
|
21
|
+
|
|
22
|
+
Key: value innovation redefines what value means — it doesn't just add more features.
|
|
23
|
+
|
|
24
|
+
## Value Curve
|
|
25
|
+
|
|
26
|
+
A visual tool. X-axis: factors the industry competes on. Y-axis: level of investment/offering.
|
|
27
|
+
|
|
28
|
+
Draw your value curve vs competitors:
|
|
29
|
+
1. List all factors the industry competes on (price, features, quality, support, speed, etc.)
|
|
30
|
+
2. Score each player 1-10 on each factor
|
|
31
|
+
3. Connect the dots — that's the value curve
|
|
32
|
+
|
|
33
|
+
**What to look for:**
|
|
34
|
+
- Where are all competitors converging? (where you can differentiate)
|
|
35
|
+
- Where is investment high but customers don't care? (where you can eliminate/reduce)
|
|
36
|
+
- What do customers want that nobody offers? (where you can create/raise)
|
|
37
|
+
|
|
38
|
+
**Signs of a blue ocean opportunity:**
|
|
39
|
+
- Your curve looks completely different from competitors
|
|
40
|
+
- You're investing in factors they don't even measure
|
|
41
|
+
- You're not competing on any factor they compete on
|
|
42
|
+
|
|
43
|
+
## ERRC Grid
|
|
44
|
+
|
|
45
|
+
The strategic tool for creating a new value curve.
|
|
46
|
+
|
|
47
|
+
| Action | Question | Why |
|
|
48
|
+
|--------|----------|-----|
|
|
49
|
+
| **Eliminate** | Which factors the industry takes for granted can be eliminated? | Remove cost + complexity customers don't value |
|
|
50
|
+
| **Reduce** | Which factors should be reduced well below the industry standard? | Stop over-delivering where it doesn't matter |
|
|
51
|
+
| **Raise** | Which factors should be raised well above the industry standard? | Solve what customers complain about |
|
|
52
|
+
| **Create** | Which factors should be created that the industry has never offered? | Add new value that opens new demand |
|
|
53
|
+
|
|
54
|
+
**How to use it for venture analysis:**
|
|
55
|
+
|
|
56
|
+
Look at the competitor landscape from Phase 2. Fill the ERRC grid:
|
|
57
|
+
- What do all competitors force customers to deal with? (Eliminate candidates)
|
|
58
|
+
- Where are they all investing heavily but customers complain anyway? (Reduce candidates)
|
|
59
|
+
- What do all G2/Reddit reviews say is missing? (Raise or Create candidates)
|
|
60
|
+
|
|
61
|
+
## Three tiers of non-customers
|
|
62
|
+
|
|
63
|
+
Incumbents focus on existing customers. Blue ocean looks at non-customers:
|
|
64
|
+
|
|
65
|
+
**Tier 1 — "Soon-to-be" non-customers**
|
|
66
|
+
On the edge of the market. Use existing solutions but reluctantly. Would switch if something better existed.
|
|
67
|
+
- Find them: people who use tools but post complaints
|
|
68
|
+
- Signal: "I use X but I hate Y"
|
|
69
|
+
|
|
70
|
+
**Tier 2 — "Refusing" non-customers**
|
|
71
|
+
Consciously choose not to use existing solutions. Have the problem but handle it differently.
|
|
72
|
+
- Find them: "I could use X but I just [workaround] instead"
|
|
73
|
+
- Signal: "I tried X but gave up because..."
|
|
74
|
+
|
|
75
|
+
**Tier 3 — "Unexplored" non-customers**
|
|
76
|
+
Never considered as customers. In other markets or segments entirely.
|
|
77
|
+
- Find them: unexpected users of adjacent tools
|
|
78
|
+
- Signal: people solving your problem with tools not built for it
|
|
79
|
+
|
|
80
|
+
## Red vs Blue Ocean signals in research
|
|
81
|
+
|
|
82
|
+
When analyzing a market, these signals matter:
|
|
83
|
+
|
|
84
|
+
### Red Ocean signals (hard fight ahead)
|
|
85
|
+
- 5+ competitors with similar positioning and pricing
|
|
86
|
+
- Dominant player with >50% market share
|
|
87
|
+
- Feature comparison tables are the main marketing tool
|
|
88
|
+
- Price is primary differentiator
|
|
89
|
+
- High churn across all players (no moat)
|
|
90
|
+
- Reddit/HN: "X vs Y vs Z" comparison posts everywhere
|
|
91
|
+
|
|
92
|
+
### Blue Ocean signals (opportunity)
|
|
93
|
+
- People solve the problem with spreadsheets or manual processes
|
|
94
|
+
- Niche community uses a tool far outside its intended purpose
|
|
95
|
+
- The "best" solution is widely criticized for the same thing
|
|
96
|
+
- Large group adjacent to current market who never adopted it
|
|
97
|
+
- Incumbents focused on enterprise; SMB underserved (or vice versa)
|
|
98
|
+
- Technology shift makes old assumptions invalid (mobile, AI, etc.)
|
|
99
|
+
|
|
100
|
+
## Applying Blue Ocean to competitive analysis
|
|
101
|
+
|
|
102
|
+
In Phase 2, after mapping competitors, ask:
|
|
103
|
+
|
|
104
|
+
1. **Which axis can you ignore entirely?**
|
|
105
|
+
- E.g., all competitors compete on features — can you win on simplicity instead?
|
|
106
|
+
|
|
107
|
+
2. **What do customers actually use vs what they pay for?**
|
|
108
|
+
- If pricing is based on features but customers only use 20% of them, price simplicity
|
|
109
|
+
|
|
110
|
+
3. **What's the "tax" on using existing solutions?**
|
|
111
|
+
- Setup time, training required, integrations needed, contracts, support tickets
|
|
112
|
+
- Eliminate the tax
|
|
113
|
+
|
|
114
|
+
4. **Who's locked out of the market?**
|
|
115
|
+
- High price, high complexity, enterprise-only contracts
|
|
116
|
+
- If you can serve them, they're Tier 2/3 non-customers
|
|
117
|
+
|
|
118
|
+
## Value Curve template
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
Factor | Competitor A | Competitor B | Our position
|
|
122
|
+
----------------|-------------|-------------|-------------
|
|
123
|
+
Price | High | Medium | ?
|
|
124
|
+
Ease of setup | Hard | Hard | ?
|
|
125
|
+
Feature breadth | Wide | Wide | ?
|
|
126
|
+
Support | Good | Poor | ?
|
|
127
|
+
[key factor] | ... | ... | ?
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
A good blue ocean position looks different from all others — not just slightly better.
|