From jaan-to
Extracts evidence-backed product features, monetization, instrumentation, metrics, and constraints from codebases via scans. Use when analyzing product capabilities.
npx claudepluginhub parhumm/jaan-to --plugin jaan-toThis skill is limited to using the following tools:
> Evidence-based product reality extraction: features, monetization, instrumentation, and constraints.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Evidence-based product reality extraction: features, monetization, instrumentation, and constraints.
$JAAN_LEARN_DIR/jaan-to-detect-product.learn.md - Past lessons (loaded in Pre-Execution)$JAAN_CONTEXT_DIR/tech.md - Tech stack (for framework-aware scanning)$JAAN_TEMPLATES_DIR/jaan-to-detect-product.template.md - Output template${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md - Language resolution protocolOutput path: $JAAN_OUTPUTS_DIR/detect/product/ — flat files, overwritten each run (no IDs).
Arguments: $ARGUMENTS — parsed in Step 0.0. Repository path and mode determined there.
MANDATORY — Read and execute ALL steps in: ${CLAUDE_PLUGIN_ROOT}/docs/extending/pre-execution-protocol.md
Skill name: detect-product
Execute: Step 0 (Init Guard) → A (Load Lessons) → B (Resolve Template) → C (Offer Template Seeding)
Read and apply language protocol: ${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md
Override field for this skill: language_detect-product
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/detect-shared-reference.mdfor Evidence Format (SARIF), Evidence ID Generation, Confidence Levels, Frontmatter Schema, Platform Detection, Document Structure, and Codebase Content Safety.
This skill's namespace: E-PRD-* (e.g., E-PRD-001, E-PRD-WEB-001)
Tool name in frontmatter: detect-product
Cross-platform linking: Use related_evidence field to link findings of the same feature across different platforms (see Step 0 for examples).
"Feature exists" requires evidence across up to 3 layers:
| Layer | What | Example |
|---|---|---|
| Surface | Route, page, or screen | /pricing route, PricingPage.tsx |
| Copy | User-facing text | "Upgrade to Pro", pricing table copy |
| Code path | Business logic | checkSubscription(), Stripe API call |
Confidence mapping:
Arguments: $ARGUMENTS
| Argument | Effect |
|---|---|
| (none) | Light mode (default): Surface + business logic scan, single summary file |
[repo] | Scan specified repo (applies to both modes) |
--full | Full mode: All detection steps, 7 output files (current behavior) |
Mode determination:
$ARGUMENTS contains --full as a standalone token → set run_depth = "full"run_depth = "light"Strip --full token from arguments. Set repo_path to remaining arguments (or current working directory if empty).
If run_depth == "full": ultrathink
If run_depth == "light": megathink
Use extended reasoning for:
Purpose: Auto-detect platform structure for multi-platform product feature tracking.
Use Glob and Bash to identify platform folders (same as detect-dev - see detect-dev Step 0 for full patterns and disambiguation rules).
pnpm-workspace.yaml, lerna.json, nx.json, turbo.jsonnode_modules, .git, build outputsplatforms = [{ name: 'all', path: '.' }]Product detection is FULLY applicable to ALL platform types (web, mobile, backend, cli, etc.)
| Platform Type | Product Analysis Scope |
|---|---|
| web, mobile, androidtv, ios, android, desktop | Full feature detection (UI + business logic) |
| backend, api, services | Full feature detection (API endpoints, business logic, data models) |
| cli, cmd | Full feature detection (commands, flags, help text) |
When the same feature appears across multiple platforms, use related_evidence field to link findings:
Example: User Authentication across Web + Mobile
# In web/product/features.md:
evidence:
id: E-PRD-WEB-015
type: feature
related_evidence: [E-PRD-MOBILE-023, E-PRD-BACKEND-042]
description: "User authentication feature with OAuth support"
layers:
surface: "web/src/pages/login.tsx"
copy: "Sign in with Google"
code_path: "web/src/auth/oauth.ts"
confidence: 1.0 # Confirmed (all 3 layers)
# In mobile/product/features.md:
evidence:
id: E-PRD-MOBILE-023
type: feature
related_evidence: [E-PRD-WEB-015, E-PRD-BACKEND-042]
description: "User authentication feature with OAuth support"
layers:
surface: "mobile/screens/LoginScreen.tsx"
copy: "Sign in with Google"
code_path: "mobile/services/auth.ts"
confidence: 1.0 # Confirmed (all 3 layers)
# In backend/product/features.md:
evidence:
id: E-PRD-BACKEND-042
type: feature
related_evidence: [E-PRD-WEB-015, E-PRD-MOBILE-023]
description: "OAuth authentication API endpoints"
layers:
surface: "POST /api/auth/oauth"
code_path: "backend/routes/auth.ts"
confidence: 0.90 # Firm (2/3 layers - no UI copy in backend)
Rationale:
For each platform in platforms:
current_platform = platform.namebase_path = platform.pathrun_depth:
run_depth == "full": Run Steps 1-5 scoped to base_pathrun_depth == "light": Run Steps 1 and 3 only scoped to base_path (skip Steps 2, 4, 5)related_evidenceNote: If single-platform mode (platform.name == 'all'), output paths have NO suffix. If multi-platform mode, output paths include -{platform} suffix.
Identify all user-facing surfaces:
**/pages/**/*.{tsx,jsx,vue} — file-based routing (Next.js, Nuxt)**/app/**/page.{tsx,jsx,ts,js} — Next.js app router<Route, useRoutes, createBrowserRouterapp.get(, router.post(, @Get(, @Post(For each route/page, extract:
If run_depth == "light": Skip Step 2. Proceed to Step 3 (Scan Business Logic).
Extract product-relevant text:
**/landing*, **/home*, **/marketing* for taglines and value statements<Hero, hero-section, landing-hero**/pricing.*, **/tiers.*, **/plans.*\$\d+, /month, /year, per seat, upgrade, downgradefree, starter, pro, enterprise, premium, basicfeatures, capabilities, benefitsstripe.subscriptions, stripe.invoices, stripe.checkout, stripe.pricespaypal, braintreecheckSubscription(), requiresPremium, userTier, planIdcanAccess, hasFeature, isAllowed, checkPermissionrateLimited, usageCount, quota, limituser.plan, user.tier, subscription.statusisFeatureEnabled, featureTogglerequiresAuth, requiresPlan, checkEntitlementDistinguish "pricing copy" (what the product claims) from "enforcement" (what the code actually enforces). Gates must be proven by code locations; absence = "absence" evidence item.
If run_depth == "light": Skip Steps 4-5. Proceed directly to Step 6 (Present Detection Summary).
Note: In light mode, features are capped at Tentative confidence (1 of 3 evidence layers from surface scan only). Cross-platform related_evidence linking works but is degraded (no copy-layer features).
gtag('event' — Google Analytics 4mixpanel.track — Mixpanelanalytics.track — Segmentposthog.capture — PostHogamplitude.track — Amplitudeplausible — Plausible Analyticsunleash.isEnabled — Unleashlaunchdarkly.variation, ldClient — LaunchDarklysplitio, getTreatment — Split.ioflagsmith — FlagsmithFEATURE_, FF_ — custom feature flag patternsFor each analytics call found, extract:
Assess taxonomy consistency: naming convention, property standardization, coverage gaps.
rateLimit, throttle, rateLimitermaxFileSize, MAX_UPLOAD, fileSizeLimitmaxUsers, seatLimit, teamSizetrialEnd, expiresAt, gracePeriodallowedCountries, blockedRegions, geoRestrictGDPR, CCPA, HIPAA, SOC2, PCIIf run_depth == "light":
PRODUCT DETECTION COMPLETE (Light Mode)
-----------------------------------------
PLATFORM: {platform_name or 'all'}
FEATURES DETECTED: {n}
Tentative (surface-layer): {n}
Cross-platform: {n} features linked via related_evidence
MONETIZATION
Model: {free|freemium|subscription|usage-based|one-time|none detected}
Tiers: {tier names or "none detected"}
Enforcement: {n} code gates found [Confidence: {level}]
SEVERITY SUMMARY
Critical: {n} | High: {n} | Medium: {n} | Low: {n} | Info: {n}
OVERALL SCORE: {score}/10
OUTPUT FILE (1):
$JAAN_OUTPUTS_DIR/detect/product/summary{-platform}.md
Note: Features at Tentative confidence (surface layer only).
Run with --full for copy layer, instrumentation audit, constraint analysis,
and 3-layer evidence linking (7 output files).
"Proceed with writing summary to $JAAN_OUTPUTS_DIR/detect/product/? [y/n]"
If run_depth == "full":
PRODUCT DETECTION COMPLETE
---------------------------
PLATFORM: {platform_name or 'all'}
FEATURES DETECTED: {n}
Confirmed (3-layer): {n}
Firm (2-layer): {n}
Tentative (1-layer): {n}
Inferred: {n}
Cross-platform: {n} features linked via related_evidence
MONETIZATION
Model: {free|freemium|subscription|usage-based|one-time|none detected}
Tiers: {tier names or "none detected"}
Enforcement: {n} code gates found [Confidence: {level}]
INSTRUMENTATION
Analytics: {tool names or "none detected"}
Feature flags: {tool names or "none detected"}
Events: {n} tracked events
SEVERITY SUMMARY
Critical: {n} | High: {n} | Medium: {n} | Low: {n} | Info: {n}
OVERALL SCORE: {score}/10
OUTPUT FILES (7):
$JAAN_OUTPUTS_DIR/detect/product/overview{-platform}.md - Product overview
$JAAN_OUTPUTS_DIR/detect/product/features{-platform}.md - Feature inventory
$JAAN_OUTPUTS_DIR/detect/product/value-prop{-platform}.md - Value proposition signals
$JAAN_OUTPUTS_DIR/detect/product/monetization{-platform}.md - Monetization model
$JAAN_OUTPUTS_DIR/detect/product/entitlements{-platform}.md - Entitlement enforcement
$JAAN_OUTPUTS_DIR/detect/product/metrics{-platform}.md - Instrumentation reality
$JAAN_OUTPUTS_DIR/detect/product/constraints{-platform}.md - Constraints and risks
Note: {-platform} suffix only if multi-platform mode (e.g., -web, -backend). Single-platform mode has no suffix.
"Proceed with writing 7 output files to $JAAN_OUTPUTS_DIR/detect/product/? [y/n]"
Do NOT proceed to Phase 2 without explicit approval.
Create directory $JAAN_OUTPUTS_DIR/detect/product/ if it does not exist.
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/detect-shared-reference.mdsections "Output Path Logic" and "Stale File Cleanup" for platform-specific suffix convention and run_depth cleanup rules.
run_depth == "light": Write Single Summary FileWrite one file: $JAAN_OUTPUTS_DIR/detect/product/summary{suffix}.md
Contents:
platform field, findings_summary, and overall_score--full for copy layer analysis, instrumentation audit, feature flag detection, constraint analysis, and 3-layer evidence linking."run_depth == "full": Write 7 Output FilesWrite 7 output files:
| File | Content |
|---|---|
$JAAN_OUTPUTS_DIR/detect/product/overview{suffix}.md | Product overview with feature summary |
$JAAN_OUTPUTS_DIR/detect/product/features{suffix}.md | Feature inventory with 3-layer evidence + related_evidence for cross-platform features |
$JAAN_OUTPUTS_DIR/detect/product/value-prop{suffix}.md | Value proposition signals from copy |
$JAAN_OUTPUTS_DIR/detect/product/monetization{suffix}.md | Monetization model with evidence |
$JAAN_OUTPUTS_DIR/detect/product/entitlements{suffix}.md | Entitlement enforcement mapping |
$JAAN_OUTPUTS_DIR/detect/product/metrics{suffix}.md | Instrumentation reality (analytics, flags, events) |
$JAAN_OUTPUTS_DIR/detect/product/constraints{suffix}.md | Technical/business constraints and risks |
Note: {suffix} is empty for single-platform mode, or -{platform} for multi-platform mode.
Each file MUST include:
platform field and findings_summary/overall_scorerelated_evidence field linking to same feature in other platformsReference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/seed-reconciliation-reference.mdfor comparison rules, discrepancy format, and auto-update protocol.
$JAAN_CONTEXT_DIR/tech.md, $JAAN_CONTEXT_DIR/integrations.md[y/n]/jaan-to:learn-add commands for patterns worth documenting"Any feedback on the product detection? [y/n]"
If yes:
/jaan-to:learn-add detect-product "{feedback}"context: fork)$JAAN_OUTPUTS_DIR pathIf run_depth == "light":
$JAAN_OUTPUTS_DIR/detect/product/summary{suffix}.mdoverall_scoreIf run_depth == "full":
$JAAN_OUTPUTS_DIR/detect/product/platform field in every filerelated_evidence field (if multi-platform)