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-lensThis skill uses the workspace's default tool permissions.
Parse arguments to build a target list. Arguments can be a mix of:
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides implementation of event-driven hooks in Claude Code plugins using prompt-based validation and bash commands for PreToolUse, Stop, and session events.
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: