Help us improve
Share bugs, ideas, or general feedback.
From product-lens
Use when the user wants to compare multiple products or projects to decide which to focus on. Evaluates each app and produces a scoring matrix with recommendations.
npx claudepluginhub n0rvyn/indie-toolkit --plugin product-lensHow this skill is triggered — by the user, by Claude, or both
Slash command
/product-lens:compareThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Parse arguments to build a target list. Arguments can be a mix of:
Conducts competitive analysis by researching 3-6 tools solving the same problem and generating a markdown comparison table on functionality, pricing, integrations, and limitations. Ideal for benchmarking and identifying differentiation opportunities.
Compares multiple alternatives against weighted criteria for transparent decision-making. Supports weighting, scoring calibration, sensitivity analysis, and group facilitation.
Generates prioritized feature recommendations from app reviews and competitor evidence. Use for product roadmap input or feature ideation.
Share bugs, ideas, or general feedback.
Parse arguments to build a target list. Arguments can be a mix of:
/path/to/app1 /path/to/app2)"Bear" "Notion")/path/to/my-app "Bear" "Notion")For each target:
Confirm the target list with the user before proceeding: "I'll evaluate these N products: [list]. Correct?"
Locate the plugin's reference files by searching for **/product-lens/references/_calibration.md. From the same parent directory, resolve absolute paths to:
_calibration.md (always)_scoring.md (always)dimensions/01-demand-authenticity.md through dimensions/06-execution-quality.md (all 6)modules/kill-criteria.md, modules/feature-audit.md, modules/elevator-pitch.md, modules/pivot-directions.md, modules/validation-playbook.md (all 5)Read _calibration.md once (shared across all evaluations).
Stage 1: Market scanning (parallel)
Dispatch market-scanner for each target in parallel. Wait for all to complete.
Stage 2: Pre-merge sub-questions
For each target product, determine its platform variant (iOS or Default). For each of the 6 dimension files, extract and merge sub-questions using the same logic as evaluate skill Step 5. Prepare market data excerpts per dimension per product.
Stage 3: Dimension evaluation (parallel)
Dispatch dimension-evaluator agents for all targets in parallel — N products x 6 dimensions = 6N calls in a single message. Each receives:
_calibration.md)standardWait for all to complete.
Stage 4: Validation
For each dimension result across all products, apply the same validation checks as evaluate skill Step 7 (section headers, star format, sub-question count, evidence fields, anchor match). Re-dispatch any failing dimensions once.
Stage 5: Extras generation (parallel)
Read and pre-merge the 5 module files (same as evaluate skill Step 8).
Dispatch extras-generator for each target in parallel — N calls. Each receives:
Wait for all to complete. Validate extras output (same checks as evaluate skill Step 9).
Stage 6: Assembly
For each product, assemble its individual report (same format as evaluate skill Step 9). Read _scoring.md and compute weighted totals.
Extract scores from each product's evaluation and build the matrix:
## Scoring Matrix
| Dimension | [App A] | [App B] | [App C] |
|-----------|---------|---------|---------|
| Demand Authenticity (需求真伪) | ★★★★☆ | ★★★☆☆ | ★★☆☆☆ |
| Journey Completeness (逻辑闭环) | ★★★☆☆ | ★★★★☆ | ★★★☆☆ |
| Market Space (市场空间) | ★★★☆☆ | ★★☆☆☆ | ★★★★☆ |
| Business Viability (商业可行) | ★★★★☆ | ★★★☆☆ | ★★☆☆☆ |
| Moat (护城河) | ★★☆☆☆ | ★★★☆☆ | ★★★☆☆ |
| Execution Quality (执行质量) | ★★★★☆ | ★★★☆☆ | ★★★☆☆ |
| **Weighted Total** | **X.X** | **X.X** | **X.X** |
Ask the user if they want custom weights or a weight preset (validation/growth/maintenance phase). Otherwise use default equal weights.
Rank by weighted total score (highest first).
Apply significance threshold: if two products' weighted totals differ by <= 0.5, mark as "difference not significant — compare individual dimensions."
For each local project (skip for external apps), observe maturity signals:
## Development Maturity Signals
| Signal | [App A] | [App B] |
|--------|---------|---------|
| TODO/FIXME count | 23 | 5 |
| Tests present | No | Yes |
| Monetization code | No | StoreKit 2 |
| App Store assets | No | Screenshots exist |
| Primary blocker | Core data model incomplete | App Review grey zone on X feature |
Output the full comparison report:
# Product Lens: Portfolio Comparison
## Scoring Matrix
[from Step 4]
## Recommendation
**Focus:** [App] — [reason: highest score + best maturity signals]
**Maintain:** [App] — [conditional reason]
**Stop:** [App] — [reason: lowest score or kill criteria triggered]
(If any pair of products has a score difference <= 0.5, note that the ranking
between them is not significant and the recommendation is based on dimension-level
analysis, not total score.)
## Development Maturity Signals
[from Step 5]
## Cross-Project Kill Criteria
Across all evaluated projects:
1. [Kill criterion that applies to multiple projects]
2. [Project-specific critical kill criterion]
## Individual Reports
[For each product, include the full evaluation report from Stage 6 assembly:
Elevator Pitch Test, Evaluation Overview table, Priority Actions,
Dimension Details (all 6 dimension results preserving internal structure),
Feature Necessity Audit, Kill Criteria, Pivot Directions, Validation Playbook]
Post-processing: