From ef5bb7ae5142c17749b9796316b890f0a75cdd55 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 8 Mar 2026 15:28:27 +0100 Subject: [PATCH 01/11] chore: clean up stale zip files and planning docs from product-team --- product-team/agile-product-owner.zip | Bin 5020 -> 0 bytes product-team/complete_product_team_skills.md | 242 ---------- product-team/product-manager-toolkit.zip | Bin 15021 -> 0 bytes product-team/product-skills-architecture.md | 440 ------------------ product-team/product-strategist.zip | Bin 5303 -> 0 bytes .../product_team_implementation_guide.md | 250 ---------- product-team/ui-design-system.zip | Bin 4977 -> 0 bytes product-team/ux-researcher-designer.zip | Bin 6050 -> 0 bytes 8 files changed, 932 deletions(-) delete mode 100644 product-team/agile-product-owner.zip delete mode 100644 product-team/complete_product_team_skills.md delete mode 100644 product-team/product-manager-toolkit.zip delete mode 100644 product-team/product-skills-architecture.md delete mode 100644 product-team/product-strategist.zip delete mode 100644 product-team/product_team_implementation_guide.md delete mode 100644 product-team/ui-design-system.zip delete mode 100644 product-team/ux-researcher-designer.zip diff --git a/product-team/agile-product-owner.zip b/product-team/agile-product-owner.zip deleted file mode 100644 index 56fd4b3fdd5d6470e596677a580797c77e2119b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5020 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 U*uRQ^{BwH)0svrh{_E}k0IZ{&QUCw| diff --git a/product-team/product-skills-architecture.md b/product-team/product-skills-architecture.md deleted file mode 100644 index de35a8f..0000000 --- a/product-team/product-skills-architecture.md +++ /dev/null @@ -1,440 +0,0 @@ -# Product Team Skills Suite Architecture - -## Overview -A comprehensive suite of 5 interconnected skills designed for modern product teams, enabling data-driven decisions, user-centered design, and agile delivery. - -## 1. product-strategist (Head of Product) - -### Purpose -Strategic product leadership, vision setting, and organizational alignment - -### Core Components - -#### Scripts -- `market_analyzer.py` - Competitive analysis and market sizing -- `okr_generator.py` - OKR framework and cascade builder -- `roadmap_visualizer.py` - Strategic roadmap generation -- `metric_dashboard.py` - North star and KPI tracking -- `stakeholder_mapper.py` - Influence/interest matrix builder - -#### References -- `strategy_frameworks.md` - SWOT, Porter's Five Forces, Blue Ocean -- `vision_templates.md` - Product vision and mission statements -- `metric_library.md` - Industry-standard KPIs by vertical -- `go_to_market_playbook.md` - GTM strategies and launch plans -- `team_scaling_guide.md` - Hiring, structure, and culture - -#### Assets -- Product vision canvas templates -- Executive presentation templates -- Strategic planning worksheets -- Quarterly business review decks -- Board reporting templates - -#### Key Workflows -1. **Vision to Execution** - - Market opportunity assessment - - Vision and strategy definition - - OKR cascade creation - - Roadmap development - - Success metrics definition - -2. **Stakeholder Management** - - Executive alignment sessions - - Board preparation and reporting - - Cross-functional planning - - Customer advisory boards - -3. **Team Leadership** - - Product org design - - Talent development plans - - Performance frameworks - - Culture building - ---- - -## 2. agile-product-owner (Senior Product Owner) - -### Purpose -Backlog excellence, sprint execution, and delivery optimization - -### Core Components - -#### Scripts -- `user_story_generator.py` - INVEST-compliant story creation -- `acceptance_criteria_builder.py` - BDD/Gherkin syntax generator -- `sprint_velocity_tracker.py` - Velocity and capacity planning -- `dependency_mapper.py` - Cross-team dependency visualization -- `backlog_health_analyzer.py` - Backlog quality metrics - -#### References -- `scrum_ceremonies.md` - Meeting templates and facilitation -- `story_patterns.md` - Common user story templates -- `estimation_techniques.md` - Story points, t-shirt sizing -- `definition_of_done.md` - DoD templates by product type -- `release_planning.md` - Release strategies and rollout plans - -#### Assets -- Sprint planning templates -- Retrospective formats -- Story mapping boards -- Release notes templates -- Stakeholder update emails - -#### Key Workflows -1. **Backlog Management** - - Epic breakdown - - Story writing and refinement - - Prioritization frameworks (WSJF, RICE) - - Dependency management - - Technical debt tracking - -2. **Sprint Execution** - - Sprint planning facilitation - - Daily standup optimization - - Sprint review preparation - - Retrospective facilitation - - Impediment resolution - -3. **Stakeholder Communication** - - Sprint demos - - Release communications - - Progress reporting - - Risk escalation - ---- - -## 3. product-manager-toolkit (Senior Product Manager) - -### Purpose -Feature development, market fit, and customer success - -### Core Components - -#### Scripts -- `feature_prioritization_matrix.py` - RICE, ICE, Value vs Effort -- `customer_interview_analyzer.py` - Interview synthesis and insights -- `competitor_feature_tracker.py` - Feature gap analysis -- `pricing_calculator.py` - Pricing models and sensitivity -- `launch_checklist_generator.py` - Go-to-market readiness - -#### References -- `discovery_techniques.md` - Customer development methods -- `experimentation_framework.md` - A/B testing and MVPs -- `product_analytics.md` - Funnel, cohort, retention analysis -- `messaging_framework.md` - Positioning and value props -- `partnership_playbook.md` - Integration and partnership strategies - -#### Assets -- PRD templates -- Business case templates -- Feature announcement templates -- Customer interview guides -- Competitive battlecards - -#### Key Workflows -1. **Discovery & Validation** - - Problem validation - - Solution ideation - - Prototype testing - - Market sizing - - Business case development - -2. **Feature Development** - - Requirements gathering - - PRD creation - - Design partnership - - Engineering collaboration - - QA planning - -3. **Launch & Growth** - - Beta program management - - Launch planning - - Feature adoption tracking - - Customer feedback loops - - Iteration planning - ---- - -## 4. ux-researcher-designer (Senior UX Designer and Researcher) - -### Purpose -User understanding, experience design, and usability optimization - -### Core Components - -#### Scripts -- `persona_generator.py` - Data-driven persona creation -- `journey_map_builder.py` - Customer journey visualization -- `usability_test_analyzer.py` - Test results and insights -- `survey_designer.py` - Research survey generation -- `heuristic_evaluator.py` - Nielsen heuristics assessment -- `accessibility_checker.py` - WCAG compliance validation - -#### References -- `research_methods.md` - Qual and quant research techniques -- `interview_protocols.md` - User interview best practices -- `information_architecture.md` - IA principles and patterns -- `interaction_patterns.md` - Common UX patterns library -- `cognitive_biases.md` - Design psychology principles -- `accessibility_standards.md` - WCAG, ARIA guidelines - -#### Assets -- Research plan templates -- Interview script templates -- Usability test protocols -- Journey map templates -- Persona templates -- Research repository structure - -#### Key Workflows -1. **Research Planning** - - Research question definition - - Method selection - - Participant recruitment - - Study design - - Ethics and consent - -2. **Data Collection & Synthesis** - - Interview conducting - - Observation and note-taking - - Affinity mapping - - Insight generation - - Recommendation development - -3. **Design Process** - - Information architecture - - User flow creation - - Wireframing - - Prototyping - - Usability testing - - Iteration cycles - ---- - -## 5. ui-design-system (Senior UI Designer) - -### Purpose -Visual excellence, design systems, and developer handoff - -### Core Components - -#### Scripts -- `color_palette_generator.py` - Accessible color system creation -- `typography_scale_builder.py` - Type system generator -- `spacing_system_calculator.py` - 8pt grid system -- `component_documenter.py` - Component library documentation -- `design_token_exporter.py` - Design tokens for development -- `responsive_breakpoint_calculator.py` - Breakpoint optimization - -#### References -- `design_principles.md` - Visual design fundamentals -- `design_system_architecture.md` - Atomic design methodology -- `animation_guidelines.md` - Motion design principles -- `brand_application.md` - Brand to UI translation -- `platform_guidelines.md` - iOS, Android, Web standards -- `handoff_checklist.md` - Developer collaboration - -#### Assets -- Component library templates -- Icon libraries -- Illustration systems -- Design token templates -- Responsive grid systems -- Annotation templates - -#### Key Workflows -1. **Design System Development** - - Foundation definition (color, type, spacing) - - Component design - - Pattern documentation - - Token management - - Version control - -2. **Visual Design Process** - - Mood boards and style tiles - - High-fidelity mockups - - Responsive design - - Interaction design - - Micro-interactions - - Asset production - -3. **Collaboration & Handoff** - - Design review facilitation - - Developer pairing - - QA collaboration - - Design debt tracking - - Documentation maintenance - ---- - -## Integration Points Between Skills - -### Cross-Functional Workflows - -```mermaid -graph LR - PS[Product Strategist] --> PM[Product Manager] - PM --> PO[Product Owner] - PM <--> UX[UX Researcher/Designer] - UX <--> UI[UI Designer] - UI --> PO - PO --> PS -``` - -### Shared Resources - -1. **Customer Insights Pool** - - Shared between PM, UX, and Product Strategist - - Centralized research repository - - Unified persona definitions - -2. **Design Language System** - - Shared between UX and UI - - Consistent component library - - Unified interaction patterns - -3. **Product Metrics Framework** - - Shared across all roles - - Consistent KPI definitions - - Unified analytics approach - -4. **Roadmap Alignment** - - Cascades from Strategist → PM → PO - - Feedback loops from PO → PM → Strategist - - Design input from UX/UI → PM - -### Handoff Points - -1. **Strategy → Execution** - - Vision (Strategist) → Requirements (PM) - - Requirements (PM) → Stories (PO) - - Stories (PO) → Designs (UX/UI) - -2. **Research → Design** - - User Research (UX) → Feature Definition (PM) - - Wireframes (UX) → Visual Design (UI) - - Prototypes (UI) → Development (via PO) - -3. **Feedback Loops** - - Analytics → All roles - - Customer feedback → UX → PM → Strategist - - Sprint outcomes → PO → PM → Strategist - -## Implementation Approach - -### Phase 1: Foundation (Week 1-2) -1. Deploy `product-manager-toolkit` (most central role) -2. Establish shared resources and templates -3. Create team charter and RACI matrix - -### Phase 2: Design Integration (Week 3-4) -1. Deploy `ux-researcher-designer` -2. Deploy `ui-design-system` -3. Establish design-dev handoff process - -### Phase 3: Execution Layer (Week 5-6) -1. Deploy `agile-product-owner` -2. Integrate with existing Jira/development tools -3. Optimize sprint ceremonies - -### Phase 4: Strategic Layer (Week 7-8) -1. Deploy `product-strategist` -2. Align OKRs and roadmaps -3. Establish governance model - -## Success Metrics - -### Efficiency Metrics -- Requirements clarity: +40% improvement -- Design-dev handoff time: -50% reduction -- Sprint velocity: +25% increase -- Research-to-insight time: -60% reduction - -### Quality Metrics -- User satisfaction (NPS): +20 points -- Feature adoption rate: +35% -- Design consistency score: 95%+ -- Defect escape rate: -40% - -### Business Metrics -- Time to market: -30% -- Feature success rate: +45% -- Customer retention: +15% -- Team productivity: +35% - -## Tool Integration Requirements - -### Essential Integrations -- **Product Management**: Jira, ProductBoard, Amplitude -- **Design**: Figma, Sketch, Adobe XD -- **Research**: Dovetail, Miro, UserTesting -- **Analytics**: Mixpanel, Google Analytics, Hotjar -- **Collaboration**: Slack, Confluence, Notion - -### API Connections Needed -- Jira REST API for backlog management -- Figma API for design system sync -- Analytics APIs for metrics dashboards -- Slack webhooks for notifications - -## Training & Adoption Plan - -### Week 1: Kickoff -- All-hands skills overview -- Role-specific training sessions -- Skill champion assignment - -### Week 2-4: Pilot -- One squad pilots all skills -- Daily check-ins and feedback -- Rapid iteration on scripts/templates - -### Week 5-8: Rollout -- Gradual team-by-team adoption -- Weekly skill clinics -- Success story sharing - -### Ongoing: Optimization -- Monthly skill retrospectives -- Quarterly skill updates -- Annual skill assessment - -## ROI Projections - -### Year 1 Impact -- **Time Savings**: 200 hours/month across team -- **Quality Improvement**: 40% fewer revisions -- **Speed to Market**: 6 weeks faster average -- **Revenue Impact**: $2M from improved features -- **Cost Avoidance**: $500K in prevented rework - -### Investment Required -- **Setup Time**: 80 hours total -- **Training Time**: 40 hours total -- **Maintenance**: 10 hours/month -- **Tool Costs**: Existing stack sufficient - -### Payback Period: 2 months - -## Next Steps - -1. **Prioritize First Skill** - - Recommend starting with `product-manager-toolkit` - - Most central to all workflows - - Highest immediate impact - -2. **Gather Existing Resources** - - Current templates and processes - - Tool access and credentials - - Team feedback on pain points - -3. **Customize for Your Context** - - Industry-specific adjustments - - Company culture alignment - - Tool stack integration - -4. **Create Pilot Program** - - Select pilot team/squad - - Define success criteria - - Set 4-week trial period diff --git a/product-team/product-strategist.zip b/product-team/product-strategist.zip deleted file mode 100644 index 1aa126e74055bd98f73ab4592e88ebff803b5821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5303 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 WCDl+y$M{zW%0FHE&)gvS*Y+Qs1cM6z From 30f0aec8fc69cae377df8bb862c533f1835837b0 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 8 Mar 2026 15:31:29 +0100 Subject: [PATCH 02/11] docs: add reference frameworks for thin product skills --- .../competitive-analysis-frameworks.md | 107 ++++++++++++++++++ .../references/landing-page-patterns.md | 98 ++++++++++++++++ .../references/saas-architecture-patterns.md | 100 ++++++++++++++++ 3 files changed, 305 insertions(+) create mode 100644 product-team/competitive-teardown/references/competitive-analysis-frameworks.md create mode 100644 product-team/landing-page-generator/references/landing-page-patterns.md create mode 100644 product-team/saas-scaffolder/references/saas-architecture-patterns.md diff --git a/product-team/competitive-teardown/references/competitive-analysis-frameworks.md b/product-team/competitive-teardown/references/competitive-analysis-frameworks.md new file mode 100644 index 0000000..d48a413 --- /dev/null +++ b/product-team/competitive-teardown/references/competitive-analysis-frameworks.md @@ -0,0 +1,107 @@ +# Competitive Analysis Frameworks + +This reference provides practical frameworks for evaluating competitors and positioning decisions. + +## Porter's Five Forces + +Assess the competitive intensity of your market: + +1. Threat of new entrants +- Barriers to entry (capital, regulation, network effects) +- Speed of competitor replication + +2. Bargaining power of suppliers +- Dependency on core infrastructure vendors +- Concentration of key technical providers + +3. Bargaining power of buyers +- Customer switching costs +- Procurement complexity and contract leverage + +4. Threat of substitutes +- Adjacent alternatives solving the same job +- DIY and internal build options + +5. Rivalry among existing competitors +- Number and similarity of competitors +- Price competition and differentiation pressure + +### Five Forces Template + +| Force | Current Pressure (Low/Med/High) | Evidence | Strategic Response | +|---|---|---|---| +| New Entrants | | | | +| Supplier Power | | | | +| Buyer Power | | | | +| Substitutes | | | | +| Rivalry | | | | + +## SWOT Analysis + +Use SWOT to map internal and external context quickly. + +### SWOT Template + +| Strengths (Internal) | Weaknesses (Internal) | +|---|---| +| What we do better than alternatives | Where competitors outperform us | +| Unique capabilities or assets | Known product or go-to-market gaps | + +| Opportunities (External) | Threats (External) | +|---|---| +| Market trends we can exploit | Competitor moves or macro risks | +| Unserved segments and use cases | Regulatory, platform, or pricing pressure | + +### SWOT Quality Checklist + +- Base every point on evidence, not assumptions. +- Separate observations from conclusions. +- Prioritize top 3 items per quadrant. + +## Feature Comparison Matrix + +Compare products on meaningful buying criteria, not vanity features. + +### Feature Matrix Template + +| Dimension | Weight | Your Product | Competitor A | Competitor B | Notes | +|---|---:|---:|---:|---:|---| +| Core workflow coverage | 25% | | | | | +| Ease of implementation | 15% | | | | | +| Performance / reliability | 15% | | | | | +| Integrations / ecosystem | 15% | | | | | +| Security / compliance | 15% | | | | | +| Pricing / TCO | 15% | | | | | + +Scoring scale recommendation: 1-5 (weak to strong). + +## Competitive Positioning Map + +Create a 2-axis map showing market whitespace and crowding. + +### Positioning Map Steps + +1. Select two high-signal dimensions customers care about. +2. Place each competitor based on evidence (pricing pages, reviews, demos). +3. Mark clusters where products are undifferentiated. +4. Identify white space where demand exists but options are weak. + +Example axes: +- X-axis: Ease of use +- Y-axis: Enterprise readiness + +## Blue Ocean Strategy Canvas + +Use a strategy canvas to decide where to raise, reduce, eliminate, or create factors. + +### ERRC Grid (Eliminate-Reduce-Raise-Create) + +| Eliminate | Reduce | Raise | Create | +|---|---|---|---| +| Commodity table-stakes not valued by target users | Costly features with weak adoption | Differentiators tied to target job-to-be-done | New value dimensions competitors ignore | + +### Strategy Canvas Checklist + +- Compare value curves between your product and top competitors. +- Ensure target segment is explicit. +- Tie every strategic choice to measurable outcome. diff --git a/product-team/landing-page-generator/references/landing-page-patterns.md b/product-team/landing-page-generator/references/landing-page-patterns.md new file mode 100644 index 0000000..e419448 --- /dev/null +++ b/product-team/landing-page-generator/references/landing-page-patterns.md @@ -0,0 +1,98 @@ +# Landing Page Patterns + +This reference captures high-converting page patterns and copy structures. + +## Hero Section Patterns + +### Pattern 1: Problem-Solution Hero +- Headline names the painful problem. +- Subheadline states the clear outcome. +- Primary CTA starts immediately. +- Optional supporting visual demonstrates product in context. + +### Pattern 2: Outcome-First Hero +- Headline leads with measurable value. +- Subheadline clarifies who the page is for. +- CTA is action-oriented and specific. + +### Pattern 3: Authority Hero +- Headline + trust indicator (logos, testimonial snippet, proof metric). +- Useful when category skepticism is high. + +## Social Proof Layouts + +### Logo Strip + Proof Metric +- Keep to recognizable logos. +- Add one proof metric (e.g., active users, revenue saved, hours reduced). + +### Testimonial Grid +- 3-6 testimonials across segments. +- Include role/company where possible. +- Prefer concrete outcomes over generic praise. + +### Case Study Snapshot +- Mini blocks: challenge -> approach -> measurable result. + +## CTA Best Practices + +- Use one dominant CTA per section. +- Match CTA verb to user intent ("Start trial", "Get demo", "Run audit"). +- Keep CTA copy specific; avoid vague labels like "Submit". +- Reduce friction near CTA (short form, trust indicators, no surprise commitments). + +## Above-the-Fold Checklist + +- [ ] Clear value proposition in first viewport +- [ ] Audience clarity (who this is for) +- [ ] One primary CTA visible without scrolling +- [ ] Proof element (logos, stat, quote) +- [ ] Visual hierarchy emphasizes headline + CTA +- [ ] Mobile layout keeps CTA accessible + +## Conversion-Optimized Templates + +### SaaS Demo Page +1. Hero with problem-solution framing +2. Product walkthrough section +3. Social proof strip +4. Benefits by persona +5. Objection handling FAQ +6. Final CTA + +### Lead Magnet Page +1. Promise + asset preview +2. Bullet outcomes +3. Short form +4. Trust/privacy note + +### Product Launch Page +1. Outcome-first hero +2. Why now / differentiation +3. Feature blocks +4. Testimonials / beta feedback +5. Pricing or waitlist CTA + +## Headline Formulas + +### PAS (Problem-Agitate-Solution) +- Problem: identify the pain +- Agitate: show consequences of inaction +- Solution: position the offer as relief + +Example structure: +"Still [problem]? Stop [negative consequence] and start [desired outcome]." + +### AIDA (Attention-Interest-Desire-Action) +- Attention: pattern interrupt headline +- Interest: relevant context and stakes +- Desire: proof and benefits +- Action: concrete next step + +### 4U Formula +- Useful: clear practical value +- Urgent: reason to act now +- Unique: differentiated promise +- Ultra-specific: concrete outcome and scope + +Example structure: +"Get [specific result] in [timeframe] without [common pain]." diff --git a/product-team/saas-scaffolder/references/saas-architecture-patterns.md b/product-team/saas-scaffolder/references/saas-architecture-patterns.md new file mode 100644 index 0000000..6a877ca --- /dev/null +++ b/product-team/saas-scaffolder/references/saas-architecture-patterns.md @@ -0,0 +1,100 @@ +# SaaS Architecture Patterns + +This reference outlines common architecture choices for SaaS products. + +## Multi-Tenant Architecture + +### Shared Database, Shared Schema +- Tenant isolation via `tenant_id` columns. +- Lowest operational overhead. +- Requires strict row-level authorization. + +### Shared Database, Separate Schema +- Per-tenant schema boundaries. +- Better logical isolation. +- Higher migration and operations complexity. + +### Separate Database Per Tenant +- Strongest isolation and compliance posture. +- Best for enterprise/high-regulatory environments. +- Highest cost and operational burden. + +### Tenant Isolation Checklist + +- Enforce tenant filters in all read/write queries. +- Validate authorization at API and data layers. +- Audit logs include tenant context. +- Backups and restores preserve tenant boundaries. + +## Authentication Patterns + +### JWT-Based Session Pattern +- Stateless access tokens. +- Use short-lived access tokens + refresh tokens. +- Rotate signing keys with versioning (`kid` usage). + +### OAuth 2.0 / OIDC Pattern +- Preferred for SSO and enterprise identity. +- Support common providers (Google, Microsoft, Okta). +- Map identity claims to internal roles and tenants. + +### Hybrid Auth Pattern +- Email/password for SMB self-serve. +- SSO/OAuth for enterprise accounts. + +## Billing Integration Patterns + +### Subscription Lifecycle +1. Trial start +2. Conversion to paid plan +3. Renewal and invoice events +4. Grace period / dunning +5. Downgrade, cancellation, reactivation + +### Billing Event Handling +- Process webhook events idempotently. +- Verify provider signatures. +- Persist raw event payload for audit/debugging. +- Reconcile billing state asynchronously. + +### Entitlement Model +- Separate billing plans from feature entitlements. +- Resolve effective entitlements per tenant/user at request time. + +## API Versioning Patterns + +### URI Versioning +- `/api/v1/...`, `/api/v2/...` +- Explicit and easy to route. + +### Header Versioning +- Version via request header. +- Cleaner URLs, more client coordination required. + +### Versioning Rules +- Avoid breaking changes inside a version. +- Provide deprecation windows and migration docs. +- Track version adoption per client. + +## Database Schema Patterns for SaaS + +### Core Entities +- `tenants` +- `users` +- `memberships` (user-tenant-role mapping) +- `plans` +- `subscriptions` +- `invoices` +- `events_audit` + +### Recommended Relationship Pattern +- `tenants` 1:N `memberships` +- `users` 1:N `memberships` +- `tenants` 1:1 active `subscriptions` +- `subscriptions` 1:N `invoices` + +### Data Model Guardrails +- Unique constraints on tenant-scoped natural keys. +- Soft-delete where recoverability matters. +- Created/updated timestamps on all mutable entities. +- Migration strategy supports zero-downtime changes. From 0d85ba04d833c54715ec98d906e4e7b12e255951 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 8 Mar 2026 15:32:48 +0100 Subject: [PATCH 03/11] feat: add product analytics skill with metrics calculator --- product-team/product-analytics/SKILL.md | 107 ++++++++++++ .../references/dashboard-templates.md | 66 ++++++++ .../references/metrics-frameworks.md | 84 ++++++++++ .../scripts/metrics_calculator.py | 155 ++++++++++++++++++ 4 files changed, 412 insertions(+) create mode 100644 product-team/product-analytics/SKILL.md create mode 100644 product-team/product-analytics/references/dashboard-templates.md create mode 100644 product-team/product-analytics/references/metrics-frameworks.md create mode 100755 product-team/product-analytics/scripts/metrics_calculator.py diff --git a/product-team/product-analytics/SKILL.md b/product-team/product-analytics/SKILL.md new file mode 100644 index 0000000..8ea35ce --- /dev/null +++ b/product-team/product-analytics/SKILL.md @@ -0,0 +1,107 @@ +--- +name: product-analytics +description: Use when defining product KPIs, building metric dashboards, running cohort or retention analysis, or interpreting feature adoption trends across product stages. +--- + +# Product Analytics + +Define, track, and interpret product metrics across discovery, growth, and mature product stages. + +## When To Use + +Use this skill for: +- Metric framework selection (AARRR, North Star, HEART) +- KPI definition by product stage (pre-PMF, growth, mature) +- Dashboard design and metric hierarchy +- Cohort and retention analysis +- Feature adoption and funnel interpretation + +## Workflow + +1. Select metric framework +- AARRR for growth loops and funnel visibility +- North Star for cross-functional strategic alignment +- HEART for UX quality and user experience measurement + +2. Define stage-appropriate KPIs +- Pre-PMF: activation, early retention, qualitative success +- Growth: acquisition efficiency, expansion, conversion velocity +- Mature: retention depth, revenue quality, operational efficiency + +3. Design dashboard layers +- Executive layer: 5-7 directional metrics +- Product health layer: acquisition, activation, retention, engagement +- Feature layer: adoption, depth, repeat usage, outcome correlation + +4. Run cohort + retention analysis +- Segment by signup cohort or feature exposure cohort +- Compare retention curves, not single-point snapshots +- Identify inflection points around onboarding and first value moment + +5. Interpret and act +- Connect metric movement to product changes and release timeline +- Distinguish signal from noise using period-over-period context +- Propose one clear product action per major metric risk/opportunity + +## KPI Guidance By Stage + +### Pre-PMF +- Activation rate +- Week-1 retention +- Time-to-first-value +- Problem-solution fit interview score + +### Growth +- Funnel conversion by stage +- Monthly retained users +- Feature adoption among new cohorts +- Expansion / upsell proxy metrics + +### Mature +- Net revenue retention aligned product metrics +- Power-user share and depth of use +- Churn risk indicators by segment +- Reliability and support-deflection product metrics + +## Dashboard Design Principles + +- Show trends, not isolated point estimates. +- Keep one owner per KPI. +- Pair each KPI with target, threshold, and decision rule. +- Use cohort and segment filters by default. +- Prefer comparable time windows (weekly vs weekly, monthly vs monthly). + +See: +- `references/metrics-frameworks.md` +- `references/dashboard-templates.md` + +## Cohort Analysis Method + +1. Define cohort anchor event (signup, activation, first purchase). +2. Define retained behavior (active day, key action, repeat session). +3. Build retention matrix by cohort week/month and age period. +4. Compare curve shape across cohorts. +5. Flag early drop points and investigate journey friction. + +## Retention Curve Interpretation + +- Sharp early drop, low plateau: onboarding mismatch or weak initial value. +- Moderate drop, stable plateau: healthy core audience with predictable churn. +- Flattening at low level: product used occasionally, revisit value metric. +- Improving newer cohorts: onboarding or positioning improvements are working. + +## Tooling + +### `scripts/metrics_calculator.py` + +CLI utility for: +- Retention rate calculations by cohort age +- Cohort table generation +- Basic funnel conversion analysis + +Examples: +```bash +python3 scripts/metrics_calculator.py retention events.csv +python3 scripts/metrics_calculator.py cohort events.csv --cohort-grain month +python3 scripts/metrics_calculator.py funnel funnel.csv --stages visit,signup,activate,pay +``` diff --git a/product-team/product-analytics/references/dashboard-templates.md b/product-team/product-analytics/references/dashboard-templates.md new file mode 100644 index 0000000..2b94d33 --- /dev/null +++ b/product-team/product-analytics/references/dashboard-templates.md @@ -0,0 +1,66 @@ +# Dashboard Templates + +## 1. Executive Dashboard Template + +Purpose: quick company-level product signal for leadership. + +Sections: +1. North Star trend (current, target, trailing 12 periods) +2. Growth summary (new users/accounts, activation) +3. Retention summary (short-term + medium-term cohorts) +4. Revenue-linked product indicators +5. Risks and actions + +Suggested KPI block: + +| KPI | Current | Target | Delta | Owner | Action | +|---|---:|---:|---:|---|---| +| North Star | | | | | | +| Activation Rate | | | | | | +| W8 Retention | | | | | | +| Paid Conversion | | | | | | + +## 2. Product Health Dashboard Template + +Purpose: monitor full user journey and detect bottlenecks. + +Sections: +1. Acquisition funnel by channel/segment +2. Activation funnel with drop-off points +3. Cohort retention matrix + curve chart +4. Feature adoption distribution +5. Reliability metrics tied to user outcomes + +Recommended views: +- Weekly cohort retention heatmap +- Funnel stage conversion waterfall +- Segment comparison (SMB vs enterprise) +- New vs returning user behavior split + +## 3. Feature Adoption Dashboard Template + +Purpose: evaluate feature launch quality and ongoing usage. + +Sections: +1. Exposure and eligibility count +2. First-use adoption rate +3. Repeat usage rate (2nd, 3rd, nth use) +4. Time-to-adoption from signup/activation +5. Impact on primary outcomes (retention, conversion) + +Adoption KPI examples: + +| Metric | Definition | +|---|---| +| First-use adoption | Users who used feature at least once / eligible users | +| Repeat adoption | Users with 2+ uses / users with first use | +| Sustained adoption | Users with usage in 3 of last 4 weeks | +| Time to adoption | Median days from eligibility to first use | + +## Dashboard Design Rules + +- Keep each dashboard to one decision horizon (weekly ops vs quarterly strategy). +- Always annotate major product releases on charts. +- Add threshold bands for risk detection. +- Show metric definitions next to charts. +- Include a short "what changed" narrative block. diff --git a/product-team/product-analytics/references/metrics-frameworks.md b/product-team/product-analytics/references/metrics-frameworks.md new file mode 100644 index 0000000..dc23cca --- /dev/null +++ b/product-team/product-analytics/references/metrics-frameworks.md @@ -0,0 +1,84 @@ +# Metrics Frameworks + +## AARRR (Pirate Metrics) + +AARRR breaks the product journey into five stages. + +1. Acquisition +- How users discover the product +- Example metrics: signups, CAC, channel conversion + +2. Activation +- First meaningful value moment +- Example metrics: activation rate, time-to-first-value + +3. Retention +- Ongoing user return behavior +- Example metrics: D7/W4 retention, rolling retained users + +4. Revenue +- Monetization and value capture +- Example metrics: conversion to paid, ARPU, expansion revenue + +5. Referral +- Organic growth from existing users +- Example metrics: referral rate, invite conversion, K-factor + +## North Star Metric Framework + +North Star = metric capturing long-term customer value delivered. + +### North Star Criteria +- Reflects real user value +- Sensitive to product improvements +- Predictive of sustainable growth +- Understandable across functions + +### Example North Star Metrics +- Collaboration SaaS: weekly active teams +- Marketplace: successful transactions per active buyer +- Content product: hours of qualified consumption + +### Input Metrics +Track levers that influence the North Star: +- Acquisition quality +- Activation quality +- Engagement depth +- Retention durability + +## HEART Framework + +HEART is a UX-oriented framework from Google. + +- Happiness: satisfaction, NPS, perceived quality +- Engagement: interaction depth/frequency +- Adoption: first-time use of features/products +- Retention: return behavior over time +- Task Success: completion rate, error rate, time on task + +### HEART + Goals-Signals-Metrics +1. Goals: what UX outcome you want +2. Signals: observed behavior indicating movement +3. Metrics: measurable indicator for each signal + +## Framework Selection Guide + +| Situation | Recommended Framework | +|---|---| +| Early growth and funnel bottlenecks | AARRR | +| Company-wide strategic alignment | North Star | +| UX and product quality optimization | HEART | +| Mixed maturity org | North Star + AARRR operational layers | + +## Example: B2B SaaS Product + +- North Star: weekly active accounts completing core workflow +- AARRR operational metrics: + - Acquisition: qualified signups + - Activation: % accounts completing setup in 7 days + - Retention: W8 retained accounts + - Revenue: paid conversion and expansion rate + - Referral: invited teammate activation rate +- HEART for onboarding redesign: + - Task Success: onboarding completion rate + - Happiness: onboarding CSAT diff --git a/product-team/product-analytics/scripts/metrics_calculator.py b/product-team/product-analytics/scripts/metrics_calculator.py new file mode 100755 index 0000000..5f9087d --- /dev/null +++ b/product-team/product-analytics/scripts/metrics_calculator.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python3 +"""Product metrics calculator: retention, cohort matrix, and funnel conversion.""" + +import argparse +import csv +import datetime as dt +from collections import defaultdict + + +def parse_date(value: str) -> dt.date: + return dt.date.fromisoformat(value.strip()[:10]) + + +def load_csv(path: str): + with open(path, "r", encoding="utf-8", newline="") as handle: + return list(csv.DictReader(handle)) + + +def retention(args: argparse.Namespace) -> int: + rows = load_csv(args.input) + cohorts = {} + activity = defaultdict(set) + + for row in rows: + user = row[args.user_column].strip() + cohort_date = parse_date(row[args.cohort_column]) + activity_date = parse_date(row[args.activity_column]) + cohorts[user] = min(cohorts.get(user, cohort_date), cohort_date) + delta = (activity_date - cohorts[user]).days + if delta >= 0: + activity[delta].add(user) + + base_users = len(cohorts) + if base_users == 0: + print("No users found.") + return 1 + + print("Retention by period") + print("period,active_users,retention_rate") + max_period = args.max_period + for period in range(0, max_period + 1): + users = len(activity.get(period, set())) + rate = users / base_users + print(f"{period},{users},{rate:.4f}") + return 0 + + +def cohort(args: argparse.Namespace) -> int: + rows = load_csv(args.input) + cohorts = {} + activity = defaultdict(set) + + for row in rows: + user = row[args.user_column].strip() + cohort_date = parse_date(row[args.cohort_column]) + activity_date = parse_date(row[args.activity_column]) + + if args.cohort_grain == "month": + cohort_key = cohort_date.strftime("%Y-%m") + else: + cohort_key = f"{cohort_date.isocalendar().year}-W{cohort_date.isocalendar().week:02d}" + + cohorts.setdefault(user, cohort_key) + age = (activity_date - cohort_date).days + if age >= 0: + activity[(cohort_key, age)].add(user) + + cohort_sizes = defaultdict(int) + for cohort_key in cohorts.values(): + cohort_sizes[cohort_key] += 1 + + cohort_keys = sorted(cohort_sizes.keys()) + print("cohort,age_days,active_users,cohort_size,retention_rate") + for cohort_key in cohort_keys: + size = cohort_sizes[cohort_key] + for age in range(0, args.max_period + 1): + active_users = len(activity.get((cohort_key, age), set())) + rate = (active_users / size) if size else 0 + print(f"{cohort_key},{age},{active_users},{size},{rate:.4f}") + return 0 + + +def funnel(args: argparse.Namespace) -> int: + rows = load_csv(args.input) + stages = [item.strip() for item in args.stages.split(",") if item.strip()] + if not stages: + print("No stages provided.") + return 1 + + stage_users = {stage: set() for stage in stages} + for row in rows: + user = row[args.user_column].strip() + stage = row[args.stage_column].strip() + if stage in stage_users: + stage_users[stage].add(user) + + print("stage,users,conversion_from_previous,conversion_from_first") + previous_count = None + first_count = None + for stage in stages: + count = len(stage_users[stage]) + if first_count is None: + first_count = count + conv_prev = (count / previous_count) if previous_count else 1.0 + conv_first = (count / first_count) if first_count else 0 + print(f"{stage},{count},{conv_prev:.4f},{conv_first:.4f}") + previous_count = count + return 0 + + +def build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + description="Calculate retention, cohort, and funnel metrics from CSV data." + ) + subparsers = parser.add_subparsers(dest="command", required=True) + + common = { + "help": "CSV input path", + } + + retention_parser = subparsers.add_parser("retention", help="Calculate retention by day.") + retention_parser.add_argument("input", **common) + retention_parser.add_argument("--user-column", default="user_id") + retention_parser.add_argument("--cohort-column", default="cohort_date") + retention_parser.add_argument("--activity-column", default="activity_date") + retention_parser.add_argument("--max-period", type=int, default=30) + retention_parser.set_defaults(func=retention) + + cohort_parser = subparsers.add_parser("cohort", help="Build cohort retention matrix rows.") + cohort_parser.add_argument("input", **common) + cohort_parser.add_argument("--user-column", default="user_id") + cohort_parser.add_argument("--cohort-column", default="cohort_date") + cohort_parser.add_argument("--activity-column", default="activity_date") + cohort_parser.add_argument("--cohort-grain", choices=["week", "month"], default="week") + cohort_parser.add_argument("--max-period", type=int, default=30) + cohort_parser.set_defaults(func=cohort) + + funnel_parser = subparsers.add_parser("funnel", help="Calculate funnel conversion by stage.") + funnel_parser.add_argument("input", **common) + funnel_parser.add_argument("--user-column", default="user_id") + funnel_parser.add_argument("--stage-column", default="stage") + funnel_parser.add_argument("--stages", required=True) + funnel_parser.set_defaults(func=funnel) + + return parser + + +def main() -> int: + parser = build_parser() + args = parser.parse_args() + return args.func(args) + + +if __name__ == "__main__": + raise SystemExit(main()) From 4dbb0c581f621f5dab3e3a2e066aee20e65a8b1c Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 8 Mar 2026 15:33:44 +0100 Subject: [PATCH 04/11] feat: add experiment designer skill with sample size calculator --- product-team/experiment-designer/SKILL.md | 104 ++++++++++++++++++ .../references/experiment-playbook.md | 70 ++++++++++++ .../references/statistics-reference.md | 56 ++++++++++ .../scripts/sample_size_calculator.py | 100 +++++++++++++++++ 4 files changed, 330 insertions(+) create mode 100644 product-team/experiment-designer/SKILL.md create mode 100644 product-team/experiment-designer/references/experiment-playbook.md create mode 100644 product-team/experiment-designer/references/statistics-reference.md create mode 100755 product-team/experiment-designer/scripts/sample_size_calculator.py diff --git a/product-team/experiment-designer/SKILL.md b/product-team/experiment-designer/SKILL.md new file mode 100644 index 0000000..b74e59b --- /dev/null +++ b/product-team/experiment-designer/SKILL.md @@ -0,0 +1,104 @@ +--- +name: experiment-designer +description: Use when planning product experiments, writing testable hypotheses, estimating sample size, prioritizing tests, or interpreting A/B outcomes with practical statistical rigor. +--- + +# Experiment Designer + +Design, prioritize, and evaluate product experiments with clear hypotheses and defensible decisions. + +## When To Use + +Use this skill for: +- A/B and multivariate experiment planning +- Hypothesis writing and success criteria definition +- Sample size and minimum detectable effect planning +- Experiment prioritization with ICE scoring +- Reading statistical output for product decisions + +## Core Workflow + +1. Write hypothesis in If/Then/Because format +- If we change `[intervention]` +- Then `[metric]` will change by `[expected direction/magnitude]` +- Because `[behavioral mechanism]` + +2. Define metrics before running test +- Primary metric: single decision metric +- Guardrail metrics: quality/risk protection +- Secondary metrics: diagnostics only + +3. Estimate sample size +- Baseline conversion or baseline mean +- Minimum detectable effect (MDE) +- Significance level (alpha) and power + +Use: +```bash +python3 scripts/sample_size_calculator.py --baseline-rate 0.12 --mde 0.02 --mde-type absolute +``` + +4. Prioritize experiments with ICE +- Impact: potential upside +- Confidence: evidence quality +- Ease: cost/speed/complexity + +ICE Score = (Impact * Confidence * Ease) / 10 + +5. Launch with stopping rules +- Decide fixed sample size or fixed duration in advance +- Avoid repeated peeking without proper method +- Monitor guardrails continuously + +6. Interpret results +- Statistical significance is not business significance +- Compare point estimate + confidence interval to decision threshold +- Investigate novelty effects and segment heterogeneity + +## Hypothesis Quality Checklist + +- [ ] Contains explicit intervention and audience +- [ ] Specifies measurable metric change +- [ ] States plausible causal reason +- [ ] Includes expected minimum effect +- [ ] Defines failure condition + +## Common Experiment Pitfalls + +- Underpowered tests leading to false negatives +- Running too many simultaneous changes without isolation +- Changing targeting or implementation mid-test +- Stopping early on random spikes +- Ignoring sample ratio mismatch and instrumentation drift +- Declaring success from p-value without effect-size context + +## Statistical Interpretation Guardrails + +- p-value < alpha indicates evidence against null, not guaranteed truth. +- Confidence interval crossing zero/no-effect means uncertain directional claim. +- Wide intervals imply low precision even when significant. +- Use practical significance thresholds tied to business impact. + +See: +- `references/experiment-playbook.md` +- `references/statistics-reference.md` + +## Tooling + +### `scripts/sample_size_calculator.py` + +Computes required sample size (per variant and total) from: +- baseline rate +- MDE (absolute or relative) +- significance level (alpha) +- statistical power + +Example: +```bash +python3 scripts/sample_size_calculator.py \ + --baseline-rate 0.10 \ + --mde 0.015 \ + --mde-type absolute \ + --alpha 0.05 \ + --power 0.8 +``` diff --git a/product-team/experiment-designer/references/experiment-playbook.md b/product-team/experiment-designer/references/experiment-playbook.md new file mode 100644 index 0000000..07b2cc9 --- /dev/null +++ b/product-team/experiment-designer/references/experiment-playbook.md @@ -0,0 +1,70 @@ +# Experiment Playbook + +## Experiment Types + +### A/B Test +- Compare one control versus one variant. +- Best for high-confidence directional decisions. + +### Multivariate Test +- Test combinations of multiple factors. +- Useful for interaction effects, requires larger traffic. + +### Holdout Test +- Keep a percentage unexposed to intervention. +- Useful for measuring incremental lift over broader changes. + +## Metric Design + +### Primary Metric +- One metric that decides ship/no-ship. +- Must align with user value and business objective. + +### Guardrail Metrics +- Prevent local optimization damage. +- Examples: error rate, latency, churn proxy, support contacts. + +### Diagnostic Metrics +- Explain why change happened. +- Do not use as decision gate unless pre-specified. + +## Stopping Rules + +Define before launch: +- Fixed sample size per group +- Minimum run duration (to capture weekday/weekend behavior) +- Guardrail breach thresholds (pause criteria) + +Avoid: +- Continuous peeking with fixed-horizon inference +- Changing success metric mid-test +- Retroactive segmentation without correction + +## Novelty and Primacy Effects + +- Novelty effect: short-term spike due to newness, not durable value. +- Primacy effect: early exposure creates bias in user behavior. + +Mitigation: +- Run long enough for behavior stabilization. +- Check returning users and delayed cohorts separately. +- Re-run key tests when stakes are high. + +## Pre-Launch Checklist + +- [ ] Hypothesis complete (If/Then/Because) +- [ ] Metric definitions frozen +- [ ] Instrumentation validated +- [ ] Randomization and assignment verified +- [ ] Sample size and duration approved +- [ ] Rollback plan documented + +## Post-Test Readout Template + +1. Hypothesis and scope +2. Experiment setup and quality checks +3. Primary metric effect size + confidence interval +4. Guardrail status +5. Segment-level observations (pre-registered only) +6. Decision: ship, iterate, or reject +7. Follow-up experiments diff --git a/product-team/experiment-designer/references/statistics-reference.md b/product-team/experiment-designer/references/statistics-reference.md new file mode 100644 index 0000000..b933863 --- /dev/null +++ b/product-team/experiment-designer/references/statistics-reference.md @@ -0,0 +1,56 @@ +# Statistics Reference for Product Managers + +## p-value + +The p-value is the probability of observing data at least as extreme as yours if there were no true effect. + +- Small p-value means data is less consistent with "no effect". +- It does not tell you the probability that the variant is best. + +## Confidence Interval (CI) + +A CI gives a plausible range for the true effect size. + +- Narrow interval: more precise estimate. +- Wide interval: uncertain estimate. +- If CI includes zero (or no-effect), directional confidence is weak. + +## Minimum Detectable Effect (MDE) + +The smallest effect worth detecting. + +- Set MDE by business value threshold, not wishful optimism. +- Smaller MDE requires larger sample size. + +## Statistical Power + +Power is the probability of detecting a true effect of at least MDE. + +- Common target: 80% (0.8) +- Higher power increases sample requirements. + +## Type I and Type II Errors + +- Type I (false positive): claim effect when none exists (controlled by alpha). +- Type II (false negative): miss a real effect (controlled by power). + +## Practical Significance + +An effect can be statistically significant but too small to matter. + +Always ask: +- Does the effect clear implementation cost? +- Does it move strategic KPIs materially? + +## Power Analysis Inputs + +For conversion experiments (two proportions): +- Baseline conversion rate +- MDE (absolute points or relative uplift) +- Alpha (e.g., 0.05) +- Power (e.g., 0.8) + +Output: +- Required sample size per variant +- Total sample size +- Approximate runtime based on traffic volume diff --git a/product-team/experiment-designer/scripts/sample_size_calculator.py b/product-team/experiment-designer/scripts/sample_size_calculator.py new file mode 100755 index 0000000..69bd483 --- /dev/null +++ b/product-team/experiment-designer/scripts/sample_size_calculator.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 +"""Calculate sample size for two-proportion A/B tests.""" + +import argparse +import math +import statistics + + +def clamp_rate(value: float, name: str) -> float: + if value <= 0 or value >= 1: + raise ValueError(f"{name} must be between 0 and 1 (exclusive).") + return value + + +def required_sample_size_per_group( + baseline_rate: float, + target_rate: float, + alpha: float, + power: float, +) -> int: + delta = abs(target_rate - baseline_rate) + if delta <= 0: + raise ValueError("MDE resolves to zero; target and baseline must differ.") + + z_alpha = statistics.NormalDist().inv_cdf(1 - alpha / 2) + z_beta = statistics.NormalDist().inv_cdf(power) + pooled = (baseline_rate + target_rate) / 2 + + numerator = 2 * pooled * (1 - pooled) * (z_alpha + z_beta) ** 2 + n = numerator / (delta ** 2) + return math.ceil(n) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Compute sample size for two-proportion product experiments." + ) + parser.add_argument("--baseline-rate", type=float, required=True) + parser.add_argument( + "--mde", + type=float, + required=True, + help="Minimum detectable effect. Absolute points when --mde-type absolute, otherwise relative uplift.", + ) + parser.add_argument("--mde-type", choices=["absolute", "relative"], default="relative") + parser.add_argument("--alpha", type=float, default=0.05) + parser.add_argument("--power", type=float, default=0.8) + parser.add_argument( + "--daily-samples", + type=int, + default=0, + help="Optional total daily samples to estimate runtime in days.", + ) + return parser.parse_args() + + +def main() -> int: + args = parse_args() + baseline = clamp_rate(args.baseline_rate, "baseline-rate") + + if args.mde <= 0: + raise ValueError("mde must be > 0") + if args.alpha <= 0 or args.alpha >= 1: + raise ValueError("alpha must be between 0 and 1") + if args.power <= 0 or args.power >= 1: + raise ValueError("power must be between 0 and 1") + + if args.mde_type == "absolute": + target = baseline + args.mde + else: + target = baseline * (1 + args.mde) + + target = clamp_rate(target, "target-rate") + + n_per_group = required_sample_size_per_group( + baseline_rate=baseline, + target_rate=target, + alpha=args.alpha, + power=args.power, + ) + total_n = n_per_group * 2 + + print("A/B Test Sample Size Estimate") + print(f"baseline_rate: {baseline:.6f}") + print(f"target_rate: {target:.6f}") + print(f"mde_type: {args.mde_type}") + print(f"alpha: {args.alpha}") + print(f"power: {args.power}") + print(f"n_per_group: {n_per_group}") + print(f"n_total: {total_n}") + + if args.daily_samples > 0: + days = math.ceil(total_n / args.daily_samples) + print(f"estimated_days_at_daily_samples_{args.daily_samples}: {days}") + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From 4fd0cb0b2c2061ccef23cd350ec0ff67b5f58f5f Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 8 Mar 2026 15:34:31 +0100 Subject: [PATCH 05/11] feat: add product discovery skill with assumption mapper --- product-team/product-discovery/SKILL.md | 114 ++++++++++++++++ .../references/discovery-frameworks.md | 72 ++++++++++ .../scripts/assumption_mapper.py | 123 ++++++++++++++++++ 3 files changed, 309 insertions(+) create mode 100644 product-team/product-discovery/SKILL.md create mode 100644 product-team/product-discovery/references/discovery-frameworks.md create mode 100755 product-team/product-discovery/scripts/assumption_mapper.py diff --git a/product-team/product-discovery/SKILL.md b/product-team/product-discovery/SKILL.md new file mode 100644 index 0000000..17265ee --- /dev/null +++ b/product-team/product-discovery/SKILL.md @@ -0,0 +1,114 @@ +--- +name: product-discovery +description: Use when validating product opportunities, mapping assumptions, planning discovery sprints, or testing problem-solution fit before committing delivery resources. +--- + +# Product Discovery + +Run structured discovery to identify high-value opportunities and de-risk product bets. + +## When To Use + +Use this skill for: +- Opportunity Solution Tree facilitation +- Assumption mapping and test planning +- Problem validation interviews and evidence synthesis +- Solution validation with prototypes/experiments +- Discovery sprint planning and outputs + +## Core Discovery Workflow + +1. Define desired outcome +- Set one measurable outcome to improve. +- Establish baseline and target horizon. + +2. Build Opportunity Solution Tree (OST) +- Outcome -> opportunities -> solution ideas -> experiments +- Keep opportunities grounded in user evidence, not internal opinions. + +3. Map assumptions +- Identify desirability, viability, feasibility, and usability assumptions. +- Score assumptions by risk and certainty. + +Use: +```bash +python3 scripts/assumption_mapper.py assumptions.csv +``` + +4. Validate the problem +- Conduct interviews and behavior analysis. +- Confirm frequency, severity, and willingness to solve. +- Reject weak opportunities early. + +5. Validate the solution +- Prototype before building. +- Run concept, usability, and value tests. +- Measure behavior, not only stated preference. + +6. Plan discovery sprint +- 1-2 week cycle with explicit hypotheses +- Daily evidence reviews +- End with decision: proceed, pivot, or stop + +## Opportunity Solution Tree (Teresa Torres) + +Structure: +- Outcome: metric you want to move +- Opportunities: unmet customer needs/pains +- Solutions: candidate interventions +- Experiments: fastest learning actions + +Quality checks: +- At least 3 distinct opportunities before converging. +- At least 2 experiments per top opportunity. +- Tie every branch to evidence source. + +## Assumption Mapping + +Assumption categories: +- Desirability: users want this +- Viability: business value exists +- Feasibility: team can build/operate it +- Usability: users can successfully use it + +Prioritization rule: +- High risk + low certainty assumptions are tested first. + +## Problem Validation Techniques + +- Problem interviews focused on current behavior +- Journey friction mapping +- Support ticket and sales-call synthesis +- Behavioral analytics triangulation + +Evidence threshold examples: +- Same pain repeated across multiple target users +- Observable workaround behavior +- Measurable cost of current pain + +## Solution Validation Techniques + +- Concept tests (value proposition comprehension) +- Prototype usability tests (task success/time-to-complete) +- Fake door or concierge tests (demand signal) +- Limited beta cohorts (retention/activation signals) + +## Discovery Sprint Planning + +Suggested 10-day structure: +- Day 1-2: Outcome + opportunity framing +- Day 3-4: Assumption mapping + test design +- Day 5-7: Problem and solution tests +- Day 8-9: Evidence synthesis + decision options +- Day 10: Stakeholder decision review + +## Tooling + +### `scripts/assumption_mapper.py` + +CLI utility that: +- reads assumptions from CSV or inline input +- scores risk/certainty priority +- emits prioritized test plan with suggested test types + +See `references/discovery-frameworks.md` for framework details. diff --git a/product-team/product-discovery/references/discovery-frameworks.md b/product-team/product-discovery/references/discovery-frameworks.md new file mode 100644 index 0000000..64a6a08 --- /dev/null +++ b/product-team/product-discovery/references/discovery-frameworks.md @@ -0,0 +1,72 @@ +# Discovery Frameworks + +## Opportunity Solution Tree (OST) + +Purpose: continuously connect product outcomes to validated opportunities and tested solutions. + +Core structure: +- Outcome (metric) +- Opportunity nodes (needs/pains) +- Solution ideas +- Experiments + +OST practice tips: +- Keep tree live; update after each interview or test. +- Separate opportunity evidence from solution proposals. +- Avoid single-branch trees that force one solution. + +## Jobs-to-be-Done (JTBD) + +Use JTBD to understand progress users seek. + +JTBD template: +"When [situation], I want to [motivation], so I can [expected outcome]." + +JTBD interview focus: +- Trigger moments +- Current alternatives and workarounds +- Purchase/adoption anxieties +- Desired progress and success criteria + +## Kano Model + +Classify features by impact on satisfaction: +- Must-be: expected baseline features +- Performance: more is better +- Delighters: unexpected value multipliers +- Indifferent: low impact +- Reverse: can reduce satisfaction for some users + +Use Kano when prioritizing solution concepts after problem validation. + +## Design Sprint Methodology + +Typical phases: +1. Understand +2. Sketch +3. Decide +4. Prototype +5. Test + +Discovery usage: +- Compress learning cycle into one week. +- Best for high-ambiguity opportunities requiring cross-functional alignment. + +## Assumption Prioritization Matrix + +Map assumptions on two axes: +- Risk if wrong (low -> high) +- Certainty (low -> high) + +Priority order: +1. High risk, low certainty (test first) +2. High risk, high certainty (validate quickly) +3. Low risk, low certainty (defer) +4. Low risk, high certainty (document) + +## Discovery Evidence Rules + +- One source is not enough for major decisions. +- Triangulate qualitative and quantitative signals. +- Predefine decision criteria before test execution. +- Archive evidence with date, segment, and method. diff --git a/product-team/product-discovery/scripts/assumption_mapper.py b/product-team/product-discovery/scripts/assumption_mapper.py new file mode 100755 index 0000000..ace7d6f --- /dev/null +++ b/product-team/product-discovery/scripts/assumption_mapper.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +"""Prioritize product assumptions and suggest validation tests.""" + +import argparse +import csv +from dataclasses import dataclass + + +@dataclass +class Assumption: + statement: str + category: str + risk: float + certainty: float + + @property + def priority_score(self) -> float: + # High-risk, low-certainty assumptions should be tested first. + return self.risk * (1.0 - self.certainty) + + +def parse_float(value: str, field: str) -> float: + number = float(value) + if number < 0 or number > 1: + raise ValueError(f"{field} must be in [0, 1]") + return number + + +def suggest_test(category: str) -> str: + category = category.lower().strip() + if category == "desirability": + return "problem interviews or fake-door test" + if category == "viability": + return "pricing/willingness-to-pay test" + if category == "feasibility": + return "technical spike or architecture prototype" + if category == "usability": + return "moderated usability test" + return "smallest possible experiment with clear success criteria" + + +def load_from_csv(path: str) -> list[Assumption]: + assumptions: list[Assumption] = [] + with open(path, "r", encoding="utf-8", newline="") as handle: + reader = csv.DictReader(handle) + required = {"assumption", "category", "risk", "certainty"} + missing = required - set(reader.fieldnames or []) + if missing: + missing_str = ", ".join(sorted(missing)) + raise ValueError(f"Missing required columns: {missing_str}") + + for row in reader: + assumptions.append( + Assumption( + statement=(row.get("assumption") or "").strip(), + category=(row.get("category") or "").strip(), + risk=parse_float(row.get("risk") or "0", "risk"), + certainty=parse_float(row.get("certainty") or "0", "certainty"), + ) + ) + return assumptions + + +def parse_inline(items: list[str]) -> list[Assumption]: + assumptions: list[Assumption] = [] + for item in items: + # format: statement|category|risk|certainty + parts = [part.strip() for part in item.split("|")] + if len(parts) != 4: + raise ValueError("Inline assumption must be: statement|category|risk|certainty") + assumptions.append( + Assumption( + statement=parts[0], + category=parts[1], + risk=parse_float(parts[2], "risk"), + certainty=parse_float(parts[3], "certainty"), + ) + ) + return assumptions + + +def build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser(description="Prioritize assumptions and generate test plan.") + parser.add_argument("input", nargs="?", help="CSV file path") + parser.add_argument( + "--assumption", + action="append", + default=[], + help="Inline assumption: statement|category|risk|certainty", + ) + parser.add_argument("--top", type=int, default=10, help="Maximum assumptions to print") + return parser + + +def main() -> int: + parser = build_parser() + args = parser.parse_args() + + assumptions: list[Assumption] = [] + if args.input: + assumptions.extend(load_from_csv(args.input)) + if args.assumption: + assumptions.extend(parse_inline(args.assumption)) + + if not assumptions: + parser.error("Provide a CSV input file or at least one --assumption value.") + + assumptions.sort(key=lambda item: item.priority_score, reverse=True) + + print("prioritized_assumption_test_plan") + print("rank,priority_score,category,risk,certainty,test,assumption") + for rank, item in enumerate(assumptions[: args.top], start=1): + test = suggest_test(item.category) + print( + f"{rank},{item.priority_score:.4f},{item.category},{item.risk:.2f}," + f"{item.certainty:.2f},{test},{item.statement}" + ) + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From bed0f41aff54372a2595441d4894a67b69f9814f Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 8 Mar 2026 15:35:18 +0100 Subject: [PATCH 06/11] feat: add roadmap communicator skill with changelog generator --- product-team/roadmap-communicator/SKILL.md | 92 +++++++++++++++++ .../references/communication-templates.md | 63 ++++++++++++ .../references/roadmap-templates.md | 44 +++++++++ .../scripts/changelog_generator.py | 98 +++++++++++++++++++ 4 files changed, 297 insertions(+) create mode 100644 product-team/roadmap-communicator/SKILL.md create mode 100644 product-team/roadmap-communicator/references/communication-templates.md create mode 100644 product-team/roadmap-communicator/references/roadmap-templates.md create mode 100755 product-team/roadmap-communicator/scripts/changelog_generator.py diff --git a/product-team/roadmap-communicator/SKILL.md b/product-team/roadmap-communicator/SKILL.md new file mode 100644 index 0000000..f450187 --- /dev/null +++ b/product-team/roadmap-communicator/SKILL.md @@ -0,0 +1,92 @@ +--- +name: roadmap-communicator +description: Use when preparing roadmap narratives, release notes, changelogs, or stakeholder updates tailored for executives, engineering teams, and customers. +--- + +# Roadmap Communicator + +Create clear roadmap communication artifacts for internal and external stakeholders. + +## When To Use + +Use this skill for: +- Building roadmap presentations in different formats +- Writing stakeholder updates (board, engineering, customers) +- Producing release notes (user-facing and internal) +- Generating changelogs from git history +- Structuring feature announcements + +## Roadmap Formats + +1. Now / Next / Later +- Best for uncertainty and strategic flexibility. +- Communicate direction without false precision. + +2. Timeline roadmap +- Best for fixed-date commitments and launch coordination. +- Requires active risk and dependency management. + +3. Theme-based roadmap +- Best for outcome-led planning and cross-team alignment. +- Groups initiatives by problem space or strategic objective. + +See `references/roadmap-templates.md` for templates. + +## Stakeholder Update Patterns + +### Board / Executive +- Outcome and risk oriented +- Focus on progress against strategic goals +- Highlight trade-offs and required decisions + +### Engineering +- Scope, dependencies, and sequencing clarity +- Status, blockers, and resourcing implications + +### Customers +- Value narrative and timing window +- What is available now vs upcoming +- Clear expectation setting + +See `references/communication-templates.md` for reusable templates. + +## Release Notes Guidance + +### User-Facing Release Notes +- Lead with user value, not internal implementation details. +- Group by workflows or user jobs. +- Include migration/behavior changes explicitly. + +### Internal Release Notes +- Include technical details, operational impact, and known issues. +- Capture rollout plan, rollback criteria, and monitoring notes. + +## Changelog Generation + +Use: +```bash +python3 scripts/changelog_generator.py --from v1.0.0 --to HEAD +``` + +Features: +- Reads git log range +- Parses conventional commit prefixes +- Groups entries by type (`feat`, `fix`, `chore`, etc.) +- Outputs markdown or plain text + +## Feature Announcement Framework + +1. Problem context +2. What changed +3. Why it matters +4. Who benefits most +5. How to get started +6. Call to action and feedback channel + +## Communication Quality Checklist + +- [ ] Audience-specific framing is explicit. +- [ ] Outcomes and trade-offs are clear. +- [ ] Terminology is consistent across artifacts. +- [ ] Risks and dependencies are not hidden. +- [ ] Next actions and owners are specified. diff --git a/product-team/roadmap-communicator/references/communication-templates.md b/product-team/roadmap-communicator/references/communication-templates.md new file mode 100644 index 0000000..407437d --- /dev/null +++ b/product-team/roadmap-communicator/references/communication-templates.md @@ -0,0 +1,63 @@ +# Communication Templates + +## Stakeholder Update Email + +Subject: Product roadmap update - [Period] + +Hi [Audience], + +Here is the [weekly/monthly/quarterly] product update. + +- Progress: +- KPI movement: +- Risks/blockers: +- Decisions needed: +- Next period focus: + +Thanks, +[Owner] + +## User-Facing Release Notes Template + +# Release [Version/Date] + +## Highlights +- [User value outcome] + +## New +- [Feature + benefit] + +## Improved +- [Improvement + impact] + +## Fixed +- [Issue + user-facing resolution] + +## Known Limitations +- [If applicable] + +## Internal Release Notes Template + +# Internal Release [Version/Date] + +## Scope +- Included workstreams and commit range + +## Operational Notes +- Rollout plan +- Monitoring checks +- Rollback criteria + +## Risks +- Known issues and mitigations + +## Feature Announcement Template + +Title: [Outcome-focused headline] + +1. The problem: +2. The new capability: +3. Why this matters: +4. Who should use it: +5. How to start: +6. Feedback channel: diff --git a/product-team/roadmap-communicator/references/roadmap-templates.md b/product-team/roadmap-communicator/references/roadmap-templates.md new file mode 100644 index 0000000..e227f21 --- /dev/null +++ b/product-team/roadmap-communicator/references/roadmap-templates.md @@ -0,0 +1,44 @@ +# Roadmap Templates + +## Now / Next / Later Template + +### Now (0-1 quarter) +- Committed initiatives in active execution +- Success metrics and owners +- Dependencies and known risks + +### Next (1-2 quarters) +- Prioritized bets with confidence levels +- Discovery items needed before commit +- Resource assumptions + +### Later (2+ quarters) +- Strategic themes and directional intent +- Explicitly marked as non-commitment + +## Quarterly Roadmap Template + +| Quarter | Theme | Key Initiatives | Success Metrics | Risks | +|---|---|---|---|---| +| Q1 | | | | | +| Q2 | | | | | +| Q3 | | | | | +| Q4 | | | | | + +## Theme-Based Roadmap Template + +| Theme | Problem Statement | Initiatives | KPI Link | Owner | +|---|---|---|---|---| +| Activation | | | | | +| Retention | | | | | +| Expansion | | | | | + +## OKR-Aligned Roadmap Template + +| Objective | Key Result | Initiative | Milestone | Team | +|---|---|---|---|---| +| | | | | | + +Guideline: +- Every initiative should map to an objective or key result. +- Mark items without alignment as candidate de-scope. diff --git a/product-team/roadmap-communicator/scripts/changelog_generator.py b/product-team/roadmap-communicator/scripts/changelog_generator.py new file mode 100755 index 0000000..6e50535 --- /dev/null +++ b/product-team/roadmap-communicator/scripts/changelog_generator.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 +"""Generate changelog sections from git log using conventional commit prefixes.""" + +import argparse +import subprocess +from collections import defaultdict + + +SECTIONS = { + "feat": "Features", + "fix": "Fixes", + "docs": "Documentation", + "refactor": "Refactors", + "test": "Tests", + "chore": "Chores", + "perf": "Performance", + "ci": "CI", + "build": "Build", + "style": "Style", + "revert": "Reverts", +} + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description="Generate changelog from git commits.") + parser.add_argument("--from", dest="from_ref", default="HEAD~50") + parser.add_argument("--to", dest="to_ref", default="HEAD") + parser.add_argument("--format", choices=["markdown", "text"], default="markdown") + return parser.parse_args() + + +def get_git_log(from_ref: str, to_ref: str) -> list[str]: + commit_range = f"{from_ref}..{to_ref}" + cmd = ["git", "log", "--pretty=format:%s", commit_range] + result = subprocess.run(cmd, check=True, capture_output=True, text=True) + lines = [line.strip() for line in result.stdout.splitlines() if line.strip()] + return lines + + +def group_commits(subjects: list[str]) -> dict[str, list[str]]: + grouped = defaultdict(list) + grouped["other"] = [] + + for subject in subjects: + commit_type = "other" + for prefix in SECTIONS: + if subject.startswith(f"{prefix}:"): + commit_type = prefix + break + grouped[commit_type].append(subject) + + return grouped + + +def render_markdown(grouped: dict[str, list[str]]) -> str: + out = ["# Changelog", ""] + ordered_types = list(SECTIONS.keys()) + ["other"] + for commit_type in ordered_types: + commits = grouped.get(commit_type, []) + if not commits: + continue + header = SECTIONS.get(commit_type, "Other") + out.append(f"## {header}") + for item in commits: + out.append(f"- {item}") + out.append("") + return "\n".join(out).rstrip() + "\n" + + +def render_text(grouped: dict[str, list[str]]) -> str: + out = [] + ordered_types = list(SECTIONS.keys()) + ["other"] + for commit_type in ordered_types: + commits = grouped.get(commit_type, []) + if not commits: + continue + header = SECTIONS.get(commit_type, "Other") + out.append(header.upper()) + for item in commits: + out.append(f"* {item}") + out.append("") + return "\n".join(out).rstrip() + "\n" + + +def main() -> int: + args = parse_args() + subjects = get_git_log(args.from_ref, args.to_ref) + grouped = group_commits(subjects) + + if args.format == "markdown": + print(render_markdown(grouped), end="") + else: + print(render_text(grouped), end="") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From d740f77ef74494dea032333894e335f6332cb423 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 8 Mar 2026 15:35:45 +0100 Subject: [PATCH 07/11] feat: add product specialist agent definitions --- agents/product/cs-product-analyst.md | 31 ++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 agents/product/cs-product-analyst.md diff --git a/agents/product/cs-product-analyst.md b/agents/product/cs-product-analyst.md new file mode 100644 index 0000000..d80dcb3 --- /dev/null +++ b/agents/product/cs-product-analyst.md @@ -0,0 +1,31 @@ +--- +name: cs-product-analyst +description: Product analytics agent for KPI definition, dashboard setup, experiment design, and test result interpretation. +skills: + - product-team/product-analytics + - product-team/experiment-designer +domain: product +model: sonnet +tools: [Read, Write, Bash, Grep, Glob] +--- + +# Product Analyst Agent + +## Skill Links +- `../../product-team/product-analytics/SKILL.md` +- `../../product-team/experiment-designer/SKILL.md` + +## Primary Workflows +1. Metric framework and KPI definition +2. Dashboard design and cohort/retention analysis +3. Experiment design with hypothesis + sample sizing +4. Result interpretation and decision recommendations + +## Tooling +- `../../product-team/product-analytics/scripts/metrics_calculator.py` +- `../../product-team/experiment-designer/scripts/sample_size_calculator.py` + +## Usage Notes +- Define decision metrics before analysis to avoid post-hoc bias. +- Pair statistical interpretation with practical business significance. +- Use guardrail metrics to prevent local optimization mistakes. From 7857cff3bdeb16f1833235b32534cff3a8eb5413 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 8 Mar 2026 15:36:04 +0100 Subject: [PATCH 08/11] feat: add product slash commands --- commands/prd.md | 25 +++++++++++++++++++++++++ commands/sprint-plan.md | 25 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 commands/prd.md create mode 100644 commands/sprint-plan.md diff --git a/commands/prd.md b/commands/prd.md new file mode 100644 index 0000000..2c00542 --- /dev/null +++ b/commands/prd.md @@ -0,0 +1,25 @@ +--- +name: prd +description: Quick PRD generation command. Usage: /prd +--- + +# /prd + +Generate a concise product requirements document for a feature, initiative, or problem statement. + +## Usage + +```bash +/prd +``` + +## Output Structure + +- Problem statement +- Goals and non-goals +- User stories and acceptance criteria +- Metrics and success thresholds +- Scope and timeline assumptions + +## Skill Reference +- `product-team/product-manager-toolkit/SKILL.md` diff --git a/commands/sprint-plan.md b/commands/sprint-plan.md new file mode 100644 index 0000000..a504d23 --- /dev/null +++ b/commands/sprint-plan.md @@ -0,0 +1,25 @@ +--- +name: sprint-plan +description: Sprint planning shortcut. Usage: /sprint-plan [capacity] +--- + +# /sprint-plan + +Create a sprint plan with prioritized stories and capacity guardrails. + +## Usage + +```bash +/sprint-plan [capacity] +``` + +## Output Structure + +- Sprint goal +- Committed scope +- Stretch scope +- Risks and dependencies +- Story-level acceptance criteria checks + +## Skill Reference +- `product-team/agile-product-owner/SKILL.md` From be61f84e36b7e05202c77f7d2b5c7f72bc7a6366 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 8 Mar 2026 15:36:32 +0100 Subject: [PATCH 09/11] docs: refresh product team guidance and plugin metadata --- product-team/.claude-plugin/plugin.json | 2 +- product-team/CLAUDE.md | 242 +++++++++--------------- 2 files changed, 95 insertions(+), 149 deletions(-) diff --git a/product-team/.claude-plugin/plugin.json b/product-team/.claude-plugin/plugin.json index 0741b59..6591e81 100644 --- a/product-team/.claude-plugin/plugin.json +++ b/product-team/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "product-skills", - "description": "8 product skills: product manager toolkit (RICE, PRDs), agile product owner, product strategist, UX researcher designer, UI design system, competitive teardown, landing page generator, and SaaS scaffolder", + "description": "12 production-ready product skills: product manager toolkit (RICE, PRDs), agile product owner, product strategist, UX researcher, UI design system, competitive teardown, landing page generator, SaaS scaffolder, product analytics, experiment designer, product discovery, and roadmap communicator", "version": "2.1.2", "author": { "name": "Alireza Rezvani", diff --git a/product-team/CLAUDE.md b/product-team/CLAUDE.md index 33d9558..472505a 100644 --- a/product-team/CLAUDE.md +++ b/product-team/CLAUDE.md @@ -1,6 +1,6 @@ # Product Team Skills - Claude Code Guidance -This guide covers the 8 production-ready product management skills and their Python automation tools. +This guide covers the 12 production-ready product management skills and their Python automation tools. ## Product Skills Overview @@ -13,12 +13,16 @@ This guide covers the 8 production-ready product management skills and their Pyt 6. **competitive-teardown/** - Competitive matrix building, gap analysis (1 tool) 7. **landing-page-generator/** - Landing page scaffolding (1 tool) 8. **saas-scaffolder/** - SaaS project bootstrapping (1 tool) +9. **product-analytics/** - KPI design, retention/cohort/funnel analysis (1 tool) +10. **experiment-designer/** - Experiment design and sample size planning (1 tool) +11. **product-discovery/** - Discovery frameworks and assumption mapping (1 tool) +12. **roadmap-communicator/** - Roadmap communication and changelog generation (1 tool) -**Total Tools:** 9 Python automation tools +**Total Tools:** 13 Python automation tools -**Agents:** 4 (cs-product-manager, cs-agile-product-owner, cs-product-strategist, cs-ux-researcher) +**Agents:** 5 (cs-product-manager, cs-agile-product-owner, cs-product-strategist, cs-ux-researcher, cs-product-analyst) -**Slash Commands:** 5 (/rice, /okr, /persona, /user-story, /competitive-matrix) +**Slash Commands:** 7 (/rice, /okr, /persona, /user-story, /competitive-matrix, /prd, /sprint-plan) ## Python Automation Tools @@ -95,14 +99,6 @@ python agile-product-owner/scripts/user_story_generator.py python agile-product-owner/scripts/user_story_generator.py sprint 30 ``` -**Output Format:** -``` -US-001: As a user, I want to... -Priority: High | Points: 5 -Acceptance Criteria: -- Given... When... Then... -``` - ### 4. OKR Cascade Generator (`product-strategist/scripts/okr_cascade_generator.py`) **Purpose:** Automated OKR hierarchy (company → product → team) @@ -126,18 +122,9 @@ python product-strategist/scripts/okr_cascade_generator.py retention **Purpose:** Data-driven persona creation from user research -**Features:** -- Demographic and psychographic profiling -- Goals, pain points, and behavior patterns -- User journey mapping integration -- Empathy map generation - **Usage:** ```bash -# Interactive persona creation python ux-researcher-designer/scripts/persona_generator.py - -# JSON export python ux-researcher-designer/scripts/persona_generator.py --output json ``` @@ -145,22 +132,10 @@ python ux-researcher-designer/scripts/persona_generator.py --output json **Purpose:** Complete design token system from brand color -**Features:** -- Color palette generation (primary, secondary, neutrals) -- Typography scale (font sizes, line heights, weights) -- Spacing system (4px/8px grid) -- Shadow and elevation tokens -- Export formats: CSS, JSON, SCSS - **Usage:** ```bash -# Generate design tokens python ui-design-system/scripts/design_token_generator.py "#0066CC" modern css - -# SCSS output python ui-design-system/scripts/design_token_generator.py "#0066CC" modern scss - -# JSON for Figma integration python ui-design-system/scripts/design_token_generator.py "#0066CC" modern json ``` @@ -182,47 +157,11 @@ python competitive-teardown/scripts/competitive_matrix_builder.py competitors.js - 4 design styles: `dark-saas`, `clean-minimal`, `bold-startup`, `enterprise` - 7 section generators: nav, hero, features, testimonials, pricing, CTA, footer - Copy frameworks: PAS, AIDA, BAB -- SEO metadata export -- HTML output preserved via `--format html` **Usage:** ```bash -# TSX output (default) with design style python landing-page-generator/scripts/landing_page_scaffolder.py config.json --format tsx - -# HTML output python landing-page-generator/scripts/landing_page_scaffolder.py config.json --format html - -# JSON manifest (dry run) -python landing-page-generator/scripts/landing_page_scaffolder.py config.json --format json -``` - -**Config JSON format:** -```json -{ - "product_name": "Acme", - "tagline": "Ship faster. Break less.", - "design_style": "dark-saas", - "copy_framework": "PAS", - "sections": ["nav", "hero", "features", "pricing", "cta", "footer"], - "features": [ - {"title": "Fast deploys", "description": "Zero-downtime deployments"} - ], - "pricing": [ - {"name": "Free", "price": "$0/mo", "features": ["5 projects"]}, - {"name": "Pro", "price": "$29/mo", "features": ["Unlimited"], "highlighted": true} - ] -} -``` - -**Brand Voice Integration:** Before generating copy, run the brand voice analyzer to establish tone and formality: -```bash -# 1. Analyze existing brand content to establish voice profile -python ../marketing-skill/content-production/scripts/brand_voice_analyzer.py brand_samples.txt --format json > voice_profile.json - -# 2. Use the voice profile (formality, tone, perspective) to guide copy framework selection -# 3. Generate landing page with matching style -python landing-page-generator/scripts/landing_page_scaffolder.py config.json --format tsx ``` ### 9. Project Bootstrapper (`saas-scaffolder/scripts/project_bootstrapper.py`) @@ -234,102 +173,123 @@ python landing-page-generator/scripts/landing_page_scaffolder.py config.json --f python saas-scaffolder/scripts/project_bootstrapper.py project_config.json ``` +### 10. Metrics Calculator (`product-analytics/scripts/metrics_calculator.py`) + +**Purpose:** Product analytics — retention, cohort, and funnel analysis + +**Features:** +- Retention curve analysis from event data +- Funnel conversion tracking with stage-by-stage drop-off +- Cohort grouping and comparison + +**Usage:** +```bash +# Retention analysis +python product-analytics/scripts/metrics_calculator.py retention events.csv + +# Funnel analysis +python product-analytics/scripts/metrics_calculator.py funnel funnel.csv --stages visit,signup,activate,pay + +# KPI summary +python product-analytics/scripts/metrics_calculator.py kpi metrics.csv --json +``` + +### 11. Sample Size Calculator (`experiment-designer/scripts/sample_size_calculator.py`) + +**Purpose:** Statistical sample size planning for A/B tests and experiments + +**Features:** +- Minimum detectable effect (MDE) calculation +- Absolute and relative effect size modes +- Power analysis with configurable alpha/beta + +**Usage:** +```bash +# Absolute MDE +python experiment-designer/scripts/sample_size_calculator.py --baseline-rate 0.12 --mde 0.02 --mde-type absolute + +# Relative MDE +python experiment-designer/scripts/sample_size_calculator.py --baseline-rate 0.12 --mde 0.15 --mde-type relative + +# Custom power/significance +python experiment-designer/scripts/sample_size_calculator.py --baseline-rate 0.12 --mde 0.02 --alpha 0.01 --power 0.9 +``` + +### 12. Assumption Mapper (`product-discovery/scripts/assumption_mapper.py`) + +**Purpose:** Map and prioritize product assumptions for discovery validation + +**Features:** +- Risk × uncertainty scoring for prioritization +- CSV input with structured assumption fields +- Categorization by assumption type (desirability, viability, feasibility, usability) + +**Usage:** +```bash +python product-discovery/scripts/assumption_mapper.py assumptions.csv +python product-discovery/scripts/assumption_mapper.py assumptions.csv --json +``` + +### 13. Changelog Generator (`roadmap-communicator/scripts/changelog_generator.py`) + +**Purpose:** Generate structured changelogs from git commit history + +**Note:** Requires `git` on PATH — must be run inside a git repository. + +**Usage:** +```bash +python roadmap-communicator/scripts/changelog_generator.py --from v1.0.0 --to HEAD +python roadmap-communicator/scripts/changelog_generator.py --from v1.0.0 --to v2.0.0 --json +``` + ## Product Workflows -### Workflow 1: Feature Prioritization +### Workflow 1: Feature Prioritization to Sprint Execution ```bash -# 1. Collect feature requests -cat feature-requests.csv - -# 2. Run RICE prioritization python product-manager-toolkit/scripts/rice_prioritizer.py features.csv --capacity 30 - -# 3. Generate quarterly roadmap - -# 4. Create user stories for top priorities python agile-product-owner/scripts/user_story_generator.py sprint 30 ``` -### Workflow 2: User Research to Product +### Workflow 2: Strategy to Team-Level OKRs ```bash -# 1. Conduct user interviews - -# 2. Analyze transcripts -python product-manager-toolkit/scripts/customer_interview_analyzer.py interview-001.txt - -# 3. Generate personas -python ux-researcher-designer/scripts/persona_generator.py - -# 4. Create OKRs based on insights -python product-strategist/scripts/okr_cascade_generator.py growth +python product-strategist/scripts/okr_cascade_generator.py growth --json > okrs.json ``` -### Workflow 3: Sprint Planning +### Workflow 3: Research to Persona Artifacts ```bash -# 1. Set sprint capacity (story points) -CAPACITY=30 - -# 2. Generate user stories -python agile-product-owner/scripts/user_story_generator.py sprint $CAPACITY - -# 3. Export to Jira (via JSON) -python product-manager-toolkit/scripts/rice_prioritizer.py features.csv --output json > priorities.json +python ux-researcher-designer/scripts/persona_generator.py json > personas.json ``` ### Workflow 4: Brand-Aligned Landing Page -This workflow connects the marketing brand voice skill with the landing page generator to ensure copy consistency. - ```bash -# 1. Analyze existing brand content for voice profile python ../marketing-skill/content-production/scripts/brand_voice_analyzer.py website_copy.txt --format json > voice.json -# Output: formality (formal/casual), tone (professional/friendly), perspective (authoritative/conversational) - -# 2. Map voice profile to design style + copy framework: -# - formal + professional → enterprise style, AIDA framework -# - casual + friendly → bold-startup style, BAB framework -# - professional + authoritative → dark-saas style, PAS framework -# - casual + conversational → clean-minimal style, BAB framework - -# 3. Generate design tokens for brand consistency python ui-design-system/scripts/design_token_generator.py "#0066CC" modern css - -# 4. Generate the landing page python landing-page-generator/scripts/landing_page_scaffolder.py config.json --format tsx - -# 5. Run competitive teardown to refine positioning python competitive-teardown/scripts/competitive_matrix_builder.py competitors.json ``` -## Integration Patterns - -### Jira Integration - -All tools support JSON output for Jira import: +### Workflow 5: Product Analytics and Experimentation ```bash -# Export prioritized features -python product-manager-toolkit/scripts/rice_prioritizer.py features.csv --output json > jira-import.json +python product-analytics/scripts/metrics_calculator.py retention events.csv +python product-analytics/scripts/metrics_calculator.py funnel funnel.csv --stages visit,signup,activate,pay +python experiment-designer/scripts/sample_size_calculator.py --baseline-rate 0.12 --mde 0.02 --mde-type absolute ``` -### Figma Integration - -Design tokens export for Figma plugins: +### Workflow 6: Discovery and Opportunity Validation ```bash -# Generate tokens -python ui-design-system/scripts/design_token_generator.py "#0066CC" modern json > design-tokens.json +python product-discovery/scripts/assumption_mapper.py assumptions.csv ``` -### Confluence Documentation - -Use persona generator output for user documentation: +### Workflow 7: Roadmap and Release Communication ```bash -python ux-researcher-designer/scripts/persona_generator.py --output json > personas.json +python roadmap-communicator/scripts/changelog_generator.py --from v1.0.0 --to HEAD ``` ## Quality Standards @@ -341,20 +301,6 @@ python ux-researcher-designer/scripts/persona_generator.py --output json > perso - Standard library only (minimal dependencies) - Actionable recommendations -## Cross-Domain Integration - -### Brand Voice → Landing Page - -The landing page generator integrates with the marketing brand voice analyzer (`marketing-skill/content-production/scripts/brand_voice_analyzer.py`) to ensure copy on generated pages matches the brand's established voice. The analyzer outputs formality, tone, and perspective dimensions which map to design style and copy framework choices. See Workflow 4 above. - -### Design Tokens → Landing Page - -Design tokens from `ui-design-system/scripts/design_token_generator.py` can be generated alongside landing pages to ensure consistent color, typography, and spacing across the product. - -### Competitive Teardown → Landing Page - -Competitive positioning from `competitive-teardown/scripts/competitive_matrix_builder.py` informs landing page messaging — use SWOT analysis to identify differentiation points and translate them into hero copy and feature sections. - ## Additional Resources - **Main Documentation:** `../CLAUDE.md` @@ -362,7 +308,7 @@ Competitive positioning from `competitive-teardown/scripts/competitive_matrix_bu --- -**Last Updated:** March 10, 2026 -**Skills Deployed:** 8/8 product skills production-ready -**Total Tools:** 9 Python automation tools -**Agents:** 4 | **Commands:** 5 +**Last Updated:** March 11, 2026 +**Skills Deployed:** 12/12 product skills production-ready +**Total Tools:** 13 Python automation tools +**Agents:** 5 | **Commands:** 7 From d18c63d2aa0ffd95107409719e954ab7410c9fe0 Mon Sep 17 00:00:00 2001 From: Reza Rezvani Date: Wed, 11 Mar 2026 15:00:48 +0100 Subject: [PATCH 10/11] fix(product): resolve merge conflicts and improve changelog generator - Resolve plugin.json conflict: keep version 2.1.2, update to 12 skills - Resolve CLAUDE.md conflict: merge detailed tool docs with new skills - Improve changelog_generator.py: add --stdin, --demo modes, graceful error when git unavailable, support scoped prefixes (feat(scope):) Co-Authored-By: Claude Opus 4.6 --- .../scripts/changelog_generator.py | 75 ++++++++++++++++--- 1 file changed, 64 insertions(+), 11 deletions(-) diff --git a/product-team/roadmap-communicator/scripts/changelog_generator.py b/product-team/roadmap-communicator/scripts/changelog_generator.py index 6e50535..aa60675 100755 --- a/product-team/roadmap-communicator/scripts/changelog_generator.py +++ b/product-team/roadmap-communicator/scripts/changelog_generator.py @@ -1,8 +1,10 @@ #!/usr/bin/env python3 -"""Generate changelog sections from git log using conventional commit prefixes.""" +"""Generate changelog sections from git log or piped commit messages using conventional commit prefixes.""" import argparse +import shutil import subprocess +import sys from collections import defaultdict @@ -20,31 +22,71 @@ SECTIONS = { "revert": "Reverts", } +DEMO_COMMITS = [ + "feat: add user dashboard with analytics widgets", + "feat: implement dark mode toggle", + "fix: resolve crash on empty CSV import", + "fix: correct timezone offset in calendar view", + "docs: update API reference for v2 endpoints", + "refactor: extract shared validation into utils module", + "chore: bump dependencies to latest patch versions", + "perf: optimize database queries for user listing", +] + def parse_args() -> argparse.Namespace: - parser = argparse.ArgumentParser(description="Generate changelog from git commits.") - parser.add_argument("--from", dest="from_ref", default="HEAD~50") - parser.add_argument("--to", dest="to_ref", default="HEAD") - parser.add_argument("--format", choices=["markdown", "text"], default="markdown") + parser = argparse.ArgumentParser( + description="Generate changelog from git commits or piped input.", + epilog="Examples:\n" + " %(prog)s --from v1.0.0 --to HEAD\n" + " git log --pretty=format:%%s v1.0..HEAD | %(prog)s --stdin\n" + " %(prog)s --demo\n", + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + parser.add_argument("--from", dest="from_ref", default="HEAD~50", + help="Start ref for git log (default: HEAD~50)") + parser.add_argument("--to", dest="to_ref", default="HEAD", + help="End ref for git log (default: HEAD)") + parser.add_argument("--format", choices=["markdown", "text"], default="markdown", + help="Output format (default: markdown)") + parser.add_argument("--stdin", action="store_true", + help="Read commit subjects from stdin instead of git log") + parser.add_argument("--demo", action="store_true", + help="Run with sample data (no git required)") return parser.parse_args() def get_git_log(from_ref: str, to_ref: str) -> list[str]: + """Get commit subjects from git log. Requires git on PATH and a git repo.""" + if not shutil.which("git"): + print("Error: git not found on PATH. Use --stdin or --demo instead.", file=sys.stderr) + sys.exit(1) commit_range = f"{from_ref}..{to_ref}" cmd = ["git", "log", "--pretty=format:%s", commit_range] - result = subprocess.run(cmd, check=True, capture_output=True, text=True) + try: + result = subprocess.run(cmd, capture_output=True, text=True, timeout=30) + except subprocess.TimeoutExpired: + print("Error: git log timed out.", file=sys.stderr) + sys.exit(1) + if result.returncode != 0: + print(f"Error: git log failed: {result.stderr.strip()}", file=sys.stderr) + sys.exit(1) lines = [line.strip() for line in result.stdout.splitlines() if line.strip()] return lines +def read_stdin() -> list[str]: + """Read commit subjects from stdin, one per line.""" + return [line.strip() for line in sys.stdin if line.strip()] + + def group_commits(subjects: list[str]) -> dict[str, list[str]]: - grouped = defaultdict(list) - grouped["other"] = [] + grouped: dict[str, list[str]] = defaultdict(list) for subject in subjects: commit_type = "other" for prefix in SECTIONS: - if subject.startswith(f"{prefix}:"): + if subject.startswith(f"{prefix}:") or subject.startswith(f"{prefix}("): commit_type = prefix break grouped[commit_type].append(subject) @@ -68,7 +110,7 @@ def render_markdown(grouped: dict[str, list[str]]) -> str: def render_text(grouped: dict[str, list[str]]) -> str: - out = [] + out: list[str] = [] ordered_types = list(SECTIONS.keys()) + ["other"] for commit_type in ordered_types: commits = grouped.get(commit_type, []) @@ -84,7 +126,18 @@ def render_text(grouped: dict[str, list[str]]) -> str: def main() -> int: args = parse_args() - subjects = get_git_log(args.from_ref, args.to_ref) + + if args.demo: + subjects = DEMO_COMMITS + elif args.stdin: + subjects = read_stdin() + else: + subjects = get_git_log(args.from_ref, args.to_ref) + + if not subjects: + print("No commits found.", file=sys.stderr) + return 0 + grouped = group_commits(subjects) if args.format == "markdown": From e2fff2f8f2d6044bdfe2e927dcc8bded0d3eb898 Mon Sep 17 00:00:00 2001 From: Reza Rezvani Date: Wed, 11 Mar 2026 15:15:39 +0100 Subject: [PATCH 11/11] docs: sync counts and regenerate pages for product team expansion Update all documentation to reflect 177 skills, 254 tools, 357 references, 16 agents, and 17 commands. Add 4 new skill pages, 1 agent page, and 2 command pages to MkDocs site. Sync Codex (156) and Gemini (218) indexes. Co-Authored-By: Claude Opus 4.6 --- .claude-plugin/marketplace.json | 12 +- .codex/skills-index.json | 28 +++- .codex/skills/experiment-designer | 1 + .codex/skills/product-analytics | 1 + .codex/skills/product-discovery | 1 + .codex/skills/roadmap-communicator | 1 + .gemini/skills-index.json | 43 +++++- .gemini/skills/cs-product-analyst/SKILL.md | 1 + .gemini/skills/experiment-designer/SKILL.md | 1 + .gemini/skills/prd/SKILL.md | 1 + .gemini/skills/product-analytics/SKILL.md | 1 + .gemini/skills/product-discovery/SKILL.md | 1 + .gemini/skills/roadmap-communicator/SKILL.md | 1 + .gemini/skills/sprint-plan/SKILL.md | 1 + CLAUDE.md | 12 +- README.md | 18 +-- agents/CLAUDE.md | 7 +- docs/agents/cs-product-analyst.md | 32 +++++ docs/agents/index.md | 10 +- docs/commands/index.md | 16 ++- docs/commands/prd.md | 31 +++++ docs/commands/sprint-plan.md | 31 +++++ docs/getting-started.md | 4 +- docs/index.md | 16 +-- docs/plugins/index.md | 10 +- .../product-team/experiment-designer.md | 115 ++++++++++++++++ docs/skills/product-team/index.md | 28 +++- docs/skills/product-team/product-analytics.md | 118 +++++++++++++++++ docs/skills/product-team/product-discovery.md | 125 ++++++++++++++++++ .../product-team/roadmap-communicator.md | 103 +++++++++++++++ mkdocs.yml | 9 +- 31 files changed, 729 insertions(+), 50 deletions(-) create mode 120000 .codex/skills/experiment-designer create mode 120000 .codex/skills/product-analytics create mode 120000 .codex/skills/product-discovery create mode 120000 .codex/skills/roadmap-communicator create mode 120000 .gemini/skills/cs-product-analyst/SKILL.md create mode 120000 .gemini/skills/experiment-designer/SKILL.md create mode 120000 .gemini/skills/prd/SKILL.md create mode 120000 .gemini/skills/product-analytics/SKILL.md create mode 120000 .gemini/skills/product-discovery/SKILL.md create mode 120000 .gemini/skills/roadmap-communicator/SKILL.md create mode 120000 .gemini/skills/sprint-plan/SKILL.md create mode 100644 docs/agents/cs-product-analyst.md create mode 100644 docs/commands/prd.md create mode 100644 docs/commands/sprint-plan.md create mode 100644 docs/skills/product-team/experiment-designer.md create mode 100644 docs/skills/product-team/product-analytics.md create mode 100644 docs/skills/product-team/product-discovery.md create mode 100644 docs/skills/product-team/roadmap-communicator.md diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 6443fb3..2749d48 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -4,11 +4,11 @@ "name": "Alireza Rezvani", "url": "https://alirezarezvani.com" }, - "description": "173 production-ready skill packages for Claude AI across 9 domains: marketing (43), engineering (24+25), C-level advisory (28), regulatory/QMS (12), product (8), project management (6), business growth (4), and finance (2). Includes 250 Python tools, 347 reference documents, 15 agents, and 15 slash commands.", + "description": "177 production-ready skill packages for Claude AI across 9 domains: marketing (43), engineering (24+25), C-level advisory (28), regulatory/QMS (12), product (12), project management (6), business growth (4), and finance (2). Includes 254 Python tools, 357 reference documents, 16 agents, and 17 slash commands.", "homepage": "https://github.com/alirezarezvani/claude-skills", "repository": "https://github.com/alirezarezvani/claude-skills", "metadata": { - "description": "173 production-ready skill packages across 9 domains with 250 Python tools, 347 reference documents, 15 agents, and 15 slash commands. Compatible with Claude Code, Codex CLI, Gemini CLI, and OpenClaw.", + "description": "177 production-ready skill packages across 9 domains with 254 Python tools, 357 reference documents, 16 agents, and 17 slash commands. Compatible with Claude Code, Codex CLI, Gemini CLI, and OpenClaw.", "version": "2.1.2" }, "plugins": [ @@ -129,7 +129,7 @@ { "name": "product-skills", "source": "./product-team", - "description": "8 product skills with 9 Python tools: product manager toolkit (RICE, PRDs), agile product owner, product strategist, UX researcher designer, UI design system, competitive teardown, landing page generator, SaaS scaffolder.", + "description": "12 product skills with 13 Python tools: product manager toolkit (RICE, PRDs), agile product owner, product strategist, UX researcher, UI design system, competitive teardown, landing page generator, SaaS scaffolder, product analytics, experiment designer, product discovery, roadmap communicator.", "version": "2.1.2", "author": { "name": "Alireza Rezvani" @@ -142,7 +142,11 @@ "design-system", "competitive-analysis", "landing-page", - "saas" + "saas", + "analytics", + "experimentation", + "discovery", + "roadmap" ], "category": "product" }, diff --git a/.codex/skills-index.json b/.codex/skills-index.json index 5ffdd16..8f22ac4 100644 --- a/.codex/skills-index.json +++ b/.codex/skills-index.json @@ -3,7 +3,7 @@ "name": "claude-code-skills", "description": "Production-ready skill packages for AI agents - Marketing, Engineering, Product, C-Level, PM, and RA/QM", "repository": "https://github.com/alirezarezvani/claude-skills", - "total_skills": 152, + "total_skills": 156, "skills": [ { "name": "contract-and-proposal-writer", @@ -773,12 +773,30 @@ "category": "product", "description": "Analyzes competitor products and companies by synthesizing data from pricing pages, app store reviews, job postings, SEO signals, and social media into structured competitive intelligence. Produces feature comparison matrices scored across 12 dimensions, SWOT analyses, positioning maps, UX audits, pricing model breakdowns, action item roadmaps, and stakeholder presentation templates. Use when conducting competitor analysis, comparing products against competitors, researching the competitive landscape, building battle cards for sales, preparing for a product strategy or roadmap session, responding to a competitor's new feature or pricing change, or performing a quarterly competitive review." }, + { + "name": "experiment-designer", + "source": "../../product-team/experiment-designer", + "category": "product", + "description": "Use when planning product experiments, writing testable hypotheses, estimating sample size, prioritizing tests, or interpreting A/B outcomes with practical statistical rigor." + }, { "name": "landing-page-generator", "source": "../../product-team/landing-page-generator", "category": "product", "description": "Generates high-converting landing pages as complete Next.js/React (TSX) components with Tailwind CSS. Creates hero sections, feature grids, pricing tables, FAQ accordions, testimonial blocks, and CTA sections using proven copy frameworks (PAS, AIDA, BAB). Outputs SEO meta tags, structured data, and performance-optimised code targeting Core Web Vitals (LCP < 1s, CLS < 0.1). Use when the user asks to create a landing page, marketing page, homepage, single-page site, lead capture page, campaign page, promo page, or conversion-optimised web page \u2014 or when they want to A/B test landing page variants or replace a static page with one designed to convert." }, + { + "name": "product-analytics", + "source": "../../product-team/product-analytics", + "category": "product", + "description": "Use when defining product KPIs, building metric dashboards, running cohort or retention analysis, or interpreting feature adoption trends across product stages." + }, + { + "name": "product-discovery", + "source": "../../product-team/product-discovery", + "category": "product", + "description": "Use when validating product opportunities, mapping assumptions, planning discovery sprints, or testing problem-solution fit before committing delivery resources." + }, { "name": "product-manager-toolkit", "source": "../../product-team/product-manager-toolkit", @@ -791,6 +809,12 @@ "category": "product", "description": "Strategic product leadership toolkit for Head of Product covering OKR cascade generation, quarterly planning, competitive landscape analysis, product vision documents, and team scaling proposals. Use when creating quarterly OKR documents, defining product goals or KPIs, building product roadmaps, running competitive analysis, drafting team structure or hiring plans, aligning product strategy across engineering and design, or generating cascaded goal hierarchies from company to team level." }, + { + "name": "roadmap-communicator", + "source": "../../product-team/roadmap-communicator", + "category": "product", + "description": "Use when preparing roadmap narratives, release notes, changelogs, or stakeholder updates tailored for executives, engineering teams, and customers." + }, { "name": "saas-scaffolder", "source": "../../product-team/saas-scaffolder", @@ -950,7 +974,7 @@ "description": "Marketing, content, and demand generation skills" }, "product": { - "count": 8, + "count": 12, "source": "../../product-team", "description": "Product management and design skills" }, diff --git a/.codex/skills/experiment-designer b/.codex/skills/experiment-designer new file mode 120000 index 0000000..988ee30 --- /dev/null +++ b/.codex/skills/experiment-designer @@ -0,0 +1 @@ +../../product-team/experiment-designer \ No newline at end of file diff --git a/.codex/skills/product-analytics b/.codex/skills/product-analytics new file mode 120000 index 0000000..330c4d6 --- /dev/null +++ b/.codex/skills/product-analytics @@ -0,0 +1 @@ +../../product-team/product-analytics \ No newline at end of file diff --git a/.codex/skills/product-discovery b/.codex/skills/product-discovery new file mode 120000 index 0000000..f24f6fd --- /dev/null +++ b/.codex/skills/product-discovery @@ -0,0 +1 @@ +../../product-team/product-discovery \ No newline at end of file diff --git a/.codex/skills/roadmap-communicator b/.codex/skills/roadmap-communicator new file mode 120000 index 0000000..a24961e --- /dev/null +++ b/.codex/skills/roadmap-communicator @@ -0,0 +1 @@ +../../product-team/roadmap-communicator \ No newline at end of file diff --git a/.gemini/skills-index.json b/.gemini/skills-index.json index e350747..74f3e97 100644 --- a/.gemini/skills-index.json +++ b/.gemini/skills-index.json @@ -1,7 +1,7 @@ { "version": "1.0.0", "name": "gemini-cli-skills", - "total_skills": 211, + "total_skills": 218, "skills": [ { "name": "cs-agile-product-owner", @@ -43,6 +43,11 @@ "category": "agent", "description": "Growth Strategist agent for revenue operations, sales engineering, customer success, and business development. Orchestrates business-growth skills. Spawn when users need pipeline analysis, churn prevention, expansion scoring, sales demos, or proposal writing." }, + { + "name": "cs-product-analyst", + "category": "agent", + "description": "Product analytics agent for KPI definition, dashboard setup, experiment design, and test result interpretation." + }, { "name": "cs-product-manager", "category": "agent", @@ -308,6 +313,11 @@ "category": "command", "description": "Detect stack and generate CI/CD pipeline configs. Usage: /pipeline [options]" }, + { + "name": "prd", + "category": "command", + "description": "Quick PRD generation command. Usage: /prd " + }, { "name": "project-health", "category": "command", @@ -333,6 +343,11 @@ "category": "command", "description": "Sprint health scoring and velocity analysis for agile teams. Usage: /sprint-health [options]" }, + { + "name": "sprint-plan", + "category": "command", + "description": "Sprint planning shortcut. Usage: /sprint-plan [capacity]" + }, { "name": "tdd", "category": "command", @@ -923,11 +938,26 @@ "category": "product", "description": "Analyzes competitor products and companies by synthesizing data from pricing pages, app store reviews, job postings, SEO signals, and social media into structured competitive intelligence. Produces feature comparison matrices scored across 12 dimensions, SWOT analyses, positioning maps, UX audits, pricing model breakdowns, action item roadmaps, and stakeholder presentation templates. Use when conducting competitor analysis, comparing products against competitors, researching the competitive landscape, building battle cards for sales, preparing for a product strategy or roadmap session, responding to a competitor's new feature or pricing change, or performing a quarterly competitive review." }, + { + "name": "experiment-designer", + "category": "product", + "description": "Use when planning product experiments, writing testable hypotheses, estimating sample size, prioritizing tests, or interpreting A/B outcomes with practical statistical rigor." + }, { "name": "landing-page-generator", "category": "product", "description": "Generates high-converting landing pages as complete Next.js/React (TSX) components with Tailwind CSS. Creates hero sections, feature grids, pricing tables, FAQ accordions, testimonial blocks, and CTA sections using proven copy frameworks (PAS, AIDA, BAB). Outputs SEO meta tags, structured data, and performance-optimised code targeting Core Web Vitals (LCP < 1s, CLS < 0.1). Use when the user asks to create a landing page, marketing page, homepage, single-page site, lead capture page, campaign page, promo page, or conversion-optimised web page \u2014 or when they want to A/B test landing page variants or replace a static page with one designed to convert." }, + { + "name": "product-analytics", + "category": "product", + "description": "Use when defining product KPIs, building metric dashboards, running cohort or retention analysis, or interpreting feature adoption trends across product stages." + }, + { + "name": "product-discovery", + "category": "product", + "description": "Use when validating product opportunities, mapping assumptions, planning discovery sprints, or testing problem-solution fit before committing delivery resources." + }, { "name": "product-manager-toolkit", "category": "product", @@ -943,6 +973,11 @@ "category": "product", "description": "8 production-ready product skills: product manager toolkit with RICE prioritization, agile product owner, product strategist with OKR cascades, UX researcher, UI design system, competitive teardown, landing page generator, and SaaS scaffolder. Python tools included (all stdlib-only). Works with Claude Code, Codex CLI, and OpenClaw." }, + { + "name": "roadmap-communicator", + "category": "product", + "description": "Use when preparing roadmap narratives, release notes, changelogs, or stakeholder updates tailored for executives, engineering teams, and customers." + }, { "name": "saas-scaffolder", "category": "product", @@ -1061,7 +1096,7 @@ ], "categories": { "agent": { - "count": 15, + "count": 16, "description": "Agent resources" }, "business-growth": { @@ -1073,7 +1108,7 @@ "description": "C-level resources" }, "command": { - "count": 15, + "count": 17, "description": "Command resources" }, "engineering": { @@ -1093,7 +1128,7 @@ "description": "Marketing resources" }, "product": { - "count": 9, + "count": 13, "description": "Product resources" }, "project-management": { diff --git a/.gemini/skills/cs-product-analyst/SKILL.md b/.gemini/skills/cs-product-analyst/SKILL.md new file mode 120000 index 0000000..0c485c2 --- /dev/null +++ b/.gemini/skills/cs-product-analyst/SKILL.md @@ -0,0 +1 @@ +../../../agents/product/cs-product-analyst.md \ No newline at end of file diff --git a/.gemini/skills/experiment-designer/SKILL.md b/.gemini/skills/experiment-designer/SKILL.md new file mode 120000 index 0000000..f6f266b --- /dev/null +++ b/.gemini/skills/experiment-designer/SKILL.md @@ -0,0 +1 @@ +../../../product-team/experiment-designer/SKILL.md \ No newline at end of file diff --git a/.gemini/skills/prd/SKILL.md b/.gemini/skills/prd/SKILL.md new file mode 120000 index 0000000..a8c3f80 --- /dev/null +++ b/.gemini/skills/prd/SKILL.md @@ -0,0 +1 @@ +../../../commands/prd.md \ No newline at end of file diff --git a/.gemini/skills/product-analytics/SKILL.md b/.gemini/skills/product-analytics/SKILL.md new file mode 120000 index 0000000..16a10cd --- /dev/null +++ b/.gemini/skills/product-analytics/SKILL.md @@ -0,0 +1 @@ +../../../product-team/product-analytics/SKILL.md \ No newline at end of file diff --git a/.gemini/skills/product-discovery/SKILL.md b/.gemini/skills/product-discovery/SKILL.md new file mode 120000 index 0000000..0025041 --- /dev/null +++ b/.gemini/skills/product-discovery/SKILL.md @@ -0,0 +1 @@ +../../../product-team/product-discovery/SKILL.md \ No newline at end of file diff --git a/.gemini/skills/roadmap-communicator/SKILL.md b/.gemini/skills/roadmap-communicator/SKILL.md new file mode 120000 index 0000000..e65911e --- /dev/null +++ b/.gemini/skills/roadmap-communicator/SKILL.md @@ -0,0 +1 @@ +../../../product-team/roadmap-communicator/SKILL.md \ No newline at end of file diff --git a/.gemini/skills/sprint-plan/SKILL.md b/.gemini/skills/sprint-plan/SKILL.md new file mode 120000 index 0000000..ab487f7 --- /dev/null +++ b/.gemini/skills/sprint-plan/SKILL.md @@ -0,0 +1 @@ +../../../commands/sprint-plan.md \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md index 5d49f71..41717a8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co This is a **comprehensive skills library** for Claude AI and Claude Code - reusable, production-ready skill packages that bundle domain expertise, best practices, analysis tools, and strategic frameworks. The repository provides modular skills that teams can download and use directly in their workflows. -**Current Scope:** 173 production-ready skills across 9 domains with 250 Python automation tools, 347 reference guides, 15 agents, and 15 slash commands. +**Current Scope:** 177 production-ready skills across 9 domains with 254 Python automation tools, 357 reference guides, 16 agents, and 17 slash commands. **Key Distinction**: This is NOT a traditional application. It's a library of skill packages meant to be extracted and deployed by users into their own Claude workflows. @@ -37,10 +37,10 @@ This repository uses **modular documentation**. For domain-specific guidance, se claude-code-skills/ ├── .claude-plugin/ # Plugin registry (marketplace.json) ├── agents/ # 15 cs-* prefixed agents across all domains -├── commands/ # 15 slash commands (changelog, tdd, saas-health, workspace, etc.) +├── commands/ # 17 slash commands (changelog, tdd, saas-health, workspace, prd, sprint-plan, etc.) ├── engineering-team/ # 24 core engineering skills + Playwright Pro + Self-Improving Agent ├── engineering/ # 25 POWERFUL-tier advanced skills -├── product-team/ # 8 product skills + Python tools +├── product-team/ # 12 product skills + Python tools ├── marketing-skill/ # 43 marketing skills (7 pods) + Python tools ├── c-level-advisor/ # 28 C-level advisory skills (10 roles + orchestration) ├── project-management/ # 6 PM skills + Atlassian MCP @@ -148,9 +148,9 @@ See [standards/git/git-workflow-standards.md](standards/git/git-workflow-standar ## Roadmap -**Phase 1-2 Complete:** 173 production-ready skills deployed across 9 domains +**Phase 1-2 Complete:** 177 production-ready skills deployed across 9 domains - Engineering Core (24), Engineering POWERFUL (25), Product (8), Marketing (43), PM (6), C-Level (28), RA/QM (12), Business & Growth (4), Finance (2) -- 250 Python automation tools, 347 reference guides, 15 agents, 15 commands +- 254 Python automation tools, 357 reference guides, 16 agents, 17 commands - Complete enterprise coverage from engineering through regulatory compliance, sales, customer success, and finance - MkDocs Material docs site with 210+ indexed pages for SEO @@ -203,4 +203,4 @@ This repository publishes skills to **ClawHub** (clawhub.com) as the distributio **Last Updated:** March 11, 2026 **Version:** v2.1.2 -**Status:** 173 skills deployed across 9 domains, 19 marketplace plugins, docs site live +**Status:** 177 skills deployed across 9 domains, 19 marketplace plugins, docs site live diff --git a/README.md b/README.md index 86da08e..a99fbd3 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # Claude Code Skills & Plugins -**173 production-ready skills and plugins for Claude Code, OpenAI Codex, Gemini CLI, and OpenClaw** — reusable expertise bundles that transform AI coding agents into specialized professionals across engineering, product, marketing, compliance, and more. +**177 production-ready skills and plugins for Claude Code, OpenAI Codex, Gemini CLI, and OpenClaw** — reusable expertise bundles that transform AI coding agents into specialized professionals across engineering, product, marketing, compliance, and more. [![License: MIT](https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge)](https://opensource.org/licenses/MIT) -[![Skills](https://img.shields.io/badge/Skills-173-brightgreen?style=for-the-badge)](#skills-overview) -[![Agents](https://img.shields.io/badge/Agents-15-blue?style=for-the-badge)](#agents) -[![Commands](https://img.shields.io/badge/Commands-15-orange?style=for-the-badge)](#commands) +[![Skills](https://img.shields.io/badge/Skills-177-brightgreen?style=for-the-badge)](#skills-overview) +[![Agents](https://img.shields.io/badge/Agents-16-blue?style=for-the-badge)](#agents) +[![Commands](https://img.shields.io/badge/Commands-17-orange?style=for-the-badge)](#commands) [![Stars](https://img.shields.io/github/stars/alirezarezvani/claude-skills?style=for-the-badge)](https://github.com/alirezarezvani/claude-skills/stargazers) [![SkillCheck Validated](https://img.shields.io/badge/SkillCheck-Validated-4c1?style=for-the-badge)](https://getskillcheck.com) @@ -17,7 +17,7 @@ Skills are modular instruction packages (plugins) that give AI coding agents domain expertise they don't have out of the box. Each skill includes a `SKILL.md` (instructions + workflows), Python CLI tools, and reference documentation — everything the agent needs to perform like a specialist. -**One repo, four platforms:** Works natively as Claude Code plugins, OpenAI Codex CLI and agents, Gemini CLI skills, and OpenClaw skills. All 250 Python tools are stdlib-only and verified working. +**One repo, four platforms:** Works natively as Claude Code plugins, OpenAI Codex CLI and agents, Gemini CLI skills, and OpenClaw skills. All 254 Python tools are stdlib-only and verified working. --- @@ -46,7 +46,7 @@ cd claude-skills # Install by domain /plugin install engineering-skills@claude-code-skills # 24 core engineering /plugin install engineering-advanced-skills@claude-code-skills # 25 POWERFUL-tier -/plugin install product-skills@claude-code-skills # 8 product skills +/plugin install product-skills@claude-code-skills # 12 product skills /plugin install marketing-skills@claude-code-skills # 43 marketing skills /plugin install ra-qm-skills@claude-code-skills # 12 regulatory/quality /plugin install pm-skills@claude-code-skills # 6 project management @@ -85,7 +85,7 @@ git clone https://github.com/alirezarezvani/claude-skills.git ## Skills Overview -**173 skills across 9 domains:** +**177 skills across 9 domains:** | Domain | Skills | Highlights | Details | |--------|--------|------------|---------| @@ -93,7 +93,7 @@ git clone https://github.com/alirezarezvani/claude-skills.git | **🎭 Playwright Pro** | 9+3 | Test generation, flaky fix, Cypress/Selenium migration, TestRail, BrowserStack, 55 templates | [engineering-team/playwright-pro](engineering-team/playwright-pro/) | | **🧠 Self-Improving Agent** | 5+2 | Auto-memory curation, pattern promotion, skill extraction, memory health | [engineering-team/self-improving-agent](engineering-team/self-improving-agent/) | | **⚡ Engineering — POWERFUL** | 25 | Agent designer, RAG architect, database designer, CI/CD builder, security auditor, MCP builder | [engineering/](engineering/) | -| **🎯 Product** | 8 | Product manager, agile PO, strategist, UX researcher, UI design, landing pages (TSX + Tailwind), SaaS scaffolder | [product-team/](product-team/) | +| **🎯 Product** | 12 | Product manager, agile PO, strategist, UX researcher, UI design, landing pages, SaaS scaffolder, analytics, experiment designer, discovery, roadmap communicator | [product-team/](product-team/) | | **📣 Marketing** | 43 | 7 pods: Content (8), SEO (5), CRO (6), Channels (6), Growth (4), Intelligence (4), Sales (2) + context foundation + orchestration router. 32 Python tools. | [marketing-skill/](marketing-skill/) | | **📋 Project Management** | 6 | Senior PM, scrum master, Jira, Confluence, Atlassian admin, templates | [project-management/](project-management/) | | **🏥 Regulatory & QM** | 12 | ISO 13485, MDR 2017/745, FDA, ISO 27001, GDPR, CAPA, risk management | [ra-qm-team/](ra-qm-team/) | @@ -189,7 +189,7 @@ for MDR Annex II compliance gaps. ## Python Analysis Tools -250 CLI tools ship with the skills (all verified, stdlib-only): +254 CLI tools ship with the skills (all verified, stdlib-only): ```bash # SaaS health check diff --git a/agents/CLAUDE.md b/agents/CLAUDE.md index c0986f7..57f7346 100644 --- a/agents/CLAUDE.md +++ b/agents/CLAUDE.md @@ -6,7 +6,7 @@ This guide provides comprehensive instructions for creating **cs-* prefixed agen ### What are cs-* Agents? -**cs-* agents** are specialized Claude Code agents that orchestrate the 173 existing skills. Each agent: +**cs-* agents** are specialized Claude Code agents that orchestrate the 177 existing skills. Each agent: - References skills via relative paths (`../../marketing-skill/`) - Executes Python automation tools from skill packages - Follows established workflows and templates @@ -24,7 +24,7 @@ When skills are published to **ClawHub** (clawhub.com): ### Production Agents -**15 Agents Currently Available**: +**16 Agents Currently Available**: | Agent | Domain | Description | |-------|--------|-------------| @@ -36,6 +36,7 @@ When skills are published to **ClawHub** (clawhub.com): | [cs-product-strategist](product/cs-product-strategist.md) | Product | Product strategy, OKR cascades, market positioning | | [cs-agile-product-owner](product/cs-agile-product-owner.md) | Product | Agile product ownership and backlog management | | [cs-ux-researcher](product/cs-ux-researcher.md) | Product | UX research, usability testing, design insights | +| [cs-product-analyst](product/cs-product-analyst.md) | Product | Product analytics, KPI design, experiment design | | [cs-engineering-lead](engineering-team/cs-engineering-lead.md) | Engineering | Engineering team coordination and incident management | | [cs-workspace-admin](engineering-team/cs-workspace-admin.md) | Engineering | Google Workspace administration via gws CLI | | [cs-senior-engineer](engineering/cs-senior-engineer.md) | Engineering | Architecture decisions, code review, CI/CD setup | @@ -375,5 +376,5 @@ After creating an agent: --- **Last Updated:** March 11, 2026 -**Current:** 15 agents across 8 domains +**Current:** 16 agents across 8 domains **Related:** See [main CLAUDE.md](../CLAUDE.md) for repository overview diff --git a/docs/agents/cs-product-analyst.md b/docs/agents/cs-product-analyst.md new file mode 100644 index 0000000..7a1a958 --- /dev/null +++ b/docs/agents/cs-product-analyst.md @@ -0,0 +1,32 @@ +--- +title: "Product Analyst Agent" +description: "Product Analyst Agent - Claude Code agent for Product." +--- + +# Product Analyst Agent + +
+:material-robot: Agent +:material-lightbulb-outline: Product +:material-github: Source +
+ + +## Skill Links +- `../../product-team/product-analytics/SKILL.md` +- `../../product-team/experiment-designer/SKILL.md` + +## Primary Workflows +1. Metric framework and KPI definition +2. Dashboard design and cohort/retention analysis +3. Experiment design with hypothesis + sample sizing +4. Result interpretation and decision recommendations + +## Tooling +- `../../product-team/product-analytics/scripts/metrics_calculator.py` +- `../../product-team/experiment-designer/scripts/sample_size_calculator.py` + +## Usage Notes +- Define decision metrics before analysis to avoid post-hoc bias. +- Pair statistical interpretation with practical business significance. +- Use guardrail metrics to prevent local optimization mistakes. diff --git a/docs/agents/index.md b/docs/agents/index.md index 694a52d..939e635 100644 --- a/docs/agents/index.md +++ b/docs/agents/index.md @@ -1,13 +1,13 @@ --- title: "Agents" -description: "All 15 Claude Code agents — multi-skill orchestrators across domains." +description: "All 16 Claude Code agents — multi-skill orchestrators across domains." ---
# :material-robot: Agents -

15 agents that orchestrate skills across domains

+

16 agents that orchestrate skills across domains

@@ -73,6 +73,12 @@ description: "All 15 Claude Code agents — multi-skill orchestrators across dom Product +- :material-lightbulb-outline:{ .lg .middle } **[Product Analyst Agent](cs-product-analyst.md)** + + --- + + Product + - :material-lightbulb-outline:{ .lg .middle } **[Product Manager Agent](cs-product-manager.md)** --- diff --git a/docs/commands/index.md b/docs/commands/index.md index 2f711ea..a2c13ca 100644 --- a/docs/commands/index.md +++ b/docs/commands/index.md @@ -1,13 +1,13 @@ --- title: "Commands" -description: "All 15 slash commands for quick access to common operations." +description: "All 17 slash commands for quick access to common operations." ---
# :material-console: Slash Commands -

15 commands for quick access to common operations

+

17 commands for quick access to common operations

@@ -55,6 +55,12 @@ description: "All 15 slash commands for quick access to common operations." Detect project stack and generate CI/CD pipeline configurations for GitHub Actions or GitLab CI. +- :material-console:{ .lg .middle } **[`/prd`](prd.md)** + + --- + + Generate a concise product requirements document for a feature, initiative, or problem statement. + - :material-console:{ .lg .middle } **[`/project-health`](project-health.md)** --- @@ -85,6 +91,12 @@ description: "All 15 slash commands for quick access to common operations." Score sprint health across delivery, quality, and team metrics with velocity trend analysis. +- :material-console:{ .lg .middle } **[`/sprint-plan`](sprint-plan.md)** + + --- + + Create a sprint plan with prioritized stories and capacity guardrails. + - :material-console:{ .lg .middle } **[`/tdd`](tdd.md)** --- diff --git a/docs/commands/prd.md b/docs/commands/prd.md new file mode 100644 index 0000000..88bca11 --- /dev/null +++ b/docs/commands/prd.md @@ -0,0 +1,31 @@ +--- +title: "/prd" +description: "/prd — Claude Code slash command." +--- + +# /prd + +
+:material-console: Slash Command +:material-github: Source +
+ + +Generate a concise product requirements document for a feature, initiative, or problem statement. + +## Usage + +```bash +/prd +``` + +## Output Structure + +- Problem statement +- Goals and non-goals +- User stories and acceptance criteria +- Metrics and success thresholds +- Scope and timeline assumptions + +## Skill Reference +- `product-team/product-manager-toolkit/SKILL.md` diff --git a/docs/commands/sprint-plan.md b/docs/commands/sprint-plan.md new file mode 100644 index 0000000..5bdc90a --- /dev/null +++ b/docs/commands/sprint-plan.md @@ -0,0 +1,31 @@ +--- +title: "/sprint-plan" +description: "/sprint-plan — Claude Code slash command." +--- + +# /sprint-plan + +
+:material-console: Slash Command +:material-github: Source +
+ + +Create a sprint plan with prioritized stories and capacity guardrails. + +## Usage + +```bash +/sprint-plan [capacity] +``` + +## Output Structure + +- Sprint goal +- Committed scope +- Stretch scope +- Risks and dependencies +- Story-level acceptance criteria checks + +## Skill Reference +- `product-team/agile-product-owner/SKILL.md` diff --git a/docs/getting-started.md b/docs/getting-started.md index 314ae23..302e66d 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -72,7 +72,7 @@ Choose your platform and follow the steps: |--------|----------------|--------| | **Engineering Core** | `/plugin install engineering-skills@claude-code-skills` | 24 | | **Engineering POWERFUL** | `/plugin install engineering-advanced-skills@claude-code-skills` | 25 | -| **Product** | `/plugin install product-skills@claude-code-skills` | 8 | +| **Product** | `/plugin install product-skills@claude-code-skills` | 12 | | **Marketing** | `/plugin install marketing-skills@claude-code-skills` | 43 | | **Regulatory & Quality** | `/plugin install ra-qm-skills@claude-code-skills` | 12 | | **Project Management** | `/plugin install pm-skills@claude-code-skills` | 6 | @@ -112,7 +112,7 @@ AI-augmented development. Optimize for SEO. ## Python Tools -All 250 tools use the standard library only — zero pip installs, all verified. +All 254 tools use the standard library only — zero pip installs, all verified. ```bash # Security audit a skill before installing diff --git a/docs/index.md b/docs/index.md index 661e498..b9f52a9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ --- title: Claude Code Skills & Plugins -description: "173 production-ready skills, 19 plugins, 15 agents, and 15 commands for Claude Code, OpenAI Codex, Gemini CLI, and OpenClaw." +description: "177 production-ready skills, 19 plugins, 16 agents, and 17 commands for Claude Code, OpenAI Codex, Gemini CLI, and OpenClaw." hide: - toc - edit @@ -14,7 +14,7 @@ hide: # Claude Code Skills -173 production-ready skills that transform AI coding agents into specialized professionals. +177 production-ready skills that transform AI coding agents into specialized professionals. { .hero-subtitle } **Claude Code** | **OpenAI Codex** | **Gemini CLI** | **OpenClaw** @@ -27,19 +27,19 @@ hide:
-- :material-counter:{ .lg .middle } **173** +- :material-counter:{ .lg .middle } **177** --- Production-ready skills -- :material-language-python:{ .lg .middle } **250** +- :material-language-python:{ .lg .middle } **254** --- Python CLI tools (stdlib-only, all verified) -- :material-robot:{ .lg .middle } **15** +- :material-robot:{ .lg .middle } **16** --- @@ -51,7 +51,7 @@ hide: [Installable plugins](plugins/) -- :material-console:{ .lg .middle } **15** +- :material-console:{ .lg .middle } **17** --- @@ -85,9 +85,9 @@ hide: --- - Product manager, agile PO, strategist, UX researcher, UI design system, landing pages (TSX + Tailwind), SaaS scaffolder + Product manager, agile PO, strategist, UX researcher, UI design system, landing pages, SaaS scaffolder, analytics, experiment designer, discovery, roadmap communicator - [:octicons-arrow-right-24: 8 skills](skills/product-team/) + [:octicons-arrow-right-24: 12 skills](skills/product-team/) - :material-bullhorn:{ .lg .middle } **Marketing** diff --git a/docs/plugins/index.md b/docs/plugins/index.md index 55f7a68..769e1be 100644 --- a/docs/plugins/index.md +++ b/docs/plugins/index.md @@ -31,7 +31,7 @@ description: "19 installable plugins for Claude Code, Codex CLI, Gemini CLI, and Engineering, Marketing, Product, C-Level, PM, RA/QM, Business, Finance -- :material-toolbox-outline:{ .lg .middle } **173 Skills** +- :material-toolbox-outline:{ .lg .middle } **177 Skills** --- @@ -99,7 +99,7 @@ graph TB B3["marketing-skills
43 skills"] B4["c-level-skills
28 skills"] B5["ra-qm-skills
12 skills"] - B6["product-skills
8 skills"] + B6["product-skills
12 skills"] B7["pm-skills
6 skills"] B8["business-growth-skills
4 skills"] B9["finance-skills
2 skills"] @@ -203,10 +203,10 @@ ISO 13485 QMS, MDR 2017/745, FDA 510(k)/PMA, GDPR/DSGVO, ISO 27001 ISMS, CAPA ma | | | |---|---| | **Plugin** | `product-skills` | -| **Skills** | 8 | +| **Skills** | 12 | | **Install** | `claude /plugin install product-skills` | -Product manager toolkit (RICE, PRDs), agile product owner, product strategist, UX researcher, UI design system, competitive teardown, landing page generator, SaaS scaffolder. 9 Python tools. +Product manager toolkit (RICE, PRDs), agile product owner, product strategist, UX researcher, UI design system, competitive teardown, landing page generator, SaaS scaffolder, product analytics, experiment designer, product discovery, roadmap communicator. 13 Python tools. [:octicons-arrow-right-24: Browse skills](../skills/product-team/index.md) @@ -431,7 +431,7 @@ domain-name/ | `engineering-advanced-skills` | Bundle | 25 | Development | agent, rag, database, ci-cd, mcp | | `engineering-skills` | Bundle | 24 | Development | architecture, devops, ai, ml | | `ra-qm-skills` | Bundle | 12 | Compliance | iso-13485, mdr, fda, gdpr | -| `product-skills` | Bundle | 8 | Product | pm, agile, ux, saas | +| `product-skills` | Bundle | 12 | Product | pm, agile, ux, saas, analytics, experimentation, discovery, roadmap | | `pm-skills` | Bundle | 6 | PM | scrum, jira, confluence | | `business-growth-skills` | Bundle | 4 | Business | sales, revenue, customer-success | | `finance-skills` | Bundle | 2 | Finance | dcf, valuation, saas-metrics | diff --git a/docs/skills/product-team/experiment-designer.md b/docs/skills/product-team/experiment-designer.md new file mode 100644 index 0000000..bdd0d90 --- /dev/null +++ b/docs/skills/product-team/experiment-designer.md @@ -0,0 +1,115 @@ +--- +title: "Experiment Designer" +description: "Experiment Designer - Claude Code skill from the Product domain." +--- + +# Experiment Designer + +
+:material-lightbulb-outline: Product +:material-identifier: `experiment-designer` +:material-github: Source +
+ +
+Install: claude /plugin install product-skills +
+ + +Design, prioritize, and evaluate product experiments with clear hypotheses and defensible decisions. + +## When To Use + +Use this skill for: +- A/B and multivariate experiment planning +- Hypothesis writing and success criteria definition +- Sample size and minimum detectable effect planning +- Experiment prioritization with ICE scoring +- Reading statistical output for product decisions + +## Core Workflow + +1. Write hypothesis in If/Then/Because format +- If we change `[intervention]` +- Then `[metric]` will change by `[expected direction/magnitude]` +- Because `[behavioral mechanism]` + +2. Define metrics before running test +- Primary metric: single decision metric +- Guardrail metrics: quality/risk protection +- Secondary metrics: diagnostics only + +3. Estimate sample size +- Baseline conversion or baseline mean +- Minimum detectable effect (MDE) +- Significance level (alpha) and power + +Use: +```bash +python3 scripts/sample_size_calculator.py --baseline-rate 0.12 --mde 0.02 --mde-type absolute +``` + +4. Prioritize experiments with ICE +- Impact: potential upside +- Confidence: evidence quality +- Ease: cost/speed/complexity + +ICE Score = (Impact * Confidence * Ease) / 10 + +5. Launch with stopping rules +- Decide fixed sample size or fixed duration in advance +- Avoid repeated peeking without proper method +- Monitor guardrails continuously + +6. Interpret results +- Statistical significance is not business significance +- Compare point estimate + confidence interval to decision threshold +- Investigate novelty effects and segment heterogeneity + +## Hypothesis Quality Checklist + +- [ ] Contains explicit intervention and audience +- [ ] Specifies measurable metric change +- [ ] States plausible causal reason +- [ ] Includes expected minimum effect +- [ ] Defines failure condition + +## Common Experiment Pitfalls + +- Underpowered tests leading to false negatives +- Running too many simultaneous changes without isolation +- Changing targeting or implementation mid-test +- Stopping early on random spikes +- Ignoring sample ratio mismatch and instrumentation drift +- Declaring success from p-value without effect-size context + +## Statistical Interpretation Guardrails + +- p-value < alpha indicates evidence against null, not guaranteed truth. +- Confidence interval crossing zero/no-effect means uncertain directional claim. +- Wide intervals imply low precision even when significant. +- Use practical significance thresholds tied to business impact. + +See: +- `references/experiment-playbook.md` +- `references/statistics-reference.md` + +## Tooling + +### `scripts/sample_size_calculator.py` + +Computes required sample size (per variant and total) from: +- baseline rate +- MDE (absolute or relative) +- significance level (alpha) +- statistical power + +Example: +```bash +python3 scripts/sample_size_calculator.py \ + --baseline-rate 0.10 \ + --mde 0.015 \ + --mde-type absolute \ + --alpha 0.05 \ + --power 0.8 +``` diff --git a/docs/skills/product-team/index.md b/docs/skills/product-team/index.md index 3cc0f93..855dc0e 100644 --- a/docs/skills/product-team/index.md +++ b/docs/skills/product-team/index.md @@ -1,13 +1,13 @@ --- title: "Product Skills" -description: "All 9 Product skills for Claude Code, Codex CLI, Gemini CLI, and OpenClaw." +description: "All 13 Product skills for Claude Code, Codex CLI, Gemini CLI, and OpenClaw." ---
# :material-lightbulb-outline: Product -

9 skills in this domain

+

13 skills in this domain

@@ -29,12 +29,30 @@ description: "All 9 Product skills for Claude Code, Codex CLI, Gemini CLI, and O Tier: POWERFUL +- **[Experiment Designer](experiment-designer.md)** + + --- + + Design, prioritize, and evaluate product experiments with clear hypotheses and defensible decisions. + - **[Landing Page Generator](landing-page-generator.md)** --- Generate high-converting landing pages from a product description. Output complete Next.js/React components with mult... +- **[Product Analytics](product-analytics.md)** + + --- + + Define, track, and interpret product metrics across discovery, growth, and mature product stages. + +- **[Product Discovery](product-discovery.md)** + + --- + + Run structured discovery to identify high-value opportunities and de-risk product bets. + - **[Product Manager Toolkit](product-manager-toolkit.md)** --- @@ -53,6 +71,12 @@ description: "All 9 Product skills for Claude Code, Codex CLI, Gemini CLI, and O 8 production-ready product skills covering product management, UX/UI design, and SaaS development. +- **[Roadmap Communicator](roadmap-communicator.md)** + + --- + + Create clear roadmap communication artifacts for internal and external stakeholders. + - **[SaaS Scaffolder](saas-scaffolder.md)** --- diff --git a/docs/skills/product-team/product-analytics.md b/docs/skills/product-team/product-analytics.md new file mode 100644 index 0000000..9ce09ce --- /dev/null +++ b/docs/skills/product-team/product-analytics.md @@ -0,0 +1,118 @@ +--- +title: "Product Analytics" +description: "Product Analytics - Claude Code skill from the Product domain." +--- + +# Product Analytics + +
+:material-lightbulb-outline: Product +:material-identifier: `product-analytics` +:material-github: Source +
+ +
+Install: claude /plugin install product-skills +
+ + +Define, track, and interpret product metrics across discovery, growth, and mature product stages. + +## When To Use + +Use this skill for: +- Metric framework selection (AARRR, North Star, HEART) +- KPI definition by product stage (pre-PMF, growth, mature) +- Dashboard design and metric hierarchy +- Cohort and retention analysis +- Feature adoption and funnel interpretation + +## Workflow + +1. Select metric framework +- AARRR for growth loops and funnel visibility +- North Star for cross-functional strategic alignment +- HEART for UX quality and user experience measurement + +2. Define stage-appropriate KPIs +- Pre-PMF: activation, early retention, qualitative success +- Growth: acquisition efficiency, expansion, conversion velocity +- Mature: retention depth, revenue quality, operational efficiency + +3. Design dashboard layers +- Executive layer: 5-7 directional metrics +- Product health layer: acquisition, activation, retention, engagement +- Feature layer: adoption, depth, repeat usage, outcome correlation + +4. Run cohort + retention analysis +- Segment by signup cohort or feature exposure cohort +- Compare retention curves, not single-point snapshots +- Identify inflection points around onboarding and first value moment + +5. Interpret and act +- Connect metric movement to product changes and release timeline +- Distinguish signal from noise using period-over-period context +- Propose one clear product action per major metric risk/opportunity + +## KPI Guidance By Stage + +### Pre-PMF +- Activation rate +- Week-1 retention +- Time-to-first-value +- Problem-solution fit interview score + +### Growth +- Funnel conversion by stage +- Monthly retained users +- Feature adoption among new cohorts +- Expansion / upsell proxy metrics + +### Mature +- Net revenue retention aligned product metrics +- Power-user share and depth of use +- Churn risk indicators by segment +- Reliability and support-deflection product metrics + +## Dashboard Design Principles + +- Show trends, not isolated point estimates. +- Keep one owner per KPI. +- Pair each KPI with target, threshold, and decision rule. +- Use cohort and segment filters by default. +- Prefer comparable time windows (weekly vs weekly, monthly vs monthly). + +See: +- `references/metrics-frameworks.md` +- `references/dashboard-templates.md` + +## Cohort Analysis Method + +1. Define cohort anchor event (signup, activation, first purchase). +2. Define retained behavior (active day, key action, repeat session). +3. Build retention matrix by cohort week/month and age period. +4. Compare curve shape across cohorts. +5. Flag early drop points and investigate journey friction. + +## Retention Curve Interpretation + +- Sharp early drop, low plateau: onboarding mismatch or weak initial value. +- Moderate drop, stable plateau: healthy core audience with predictable churn. +- Flattening at low level: product used occasionally, revisit value metric. +- Improving newer cohorts: onboarding or positioning improvements are working. + +## Tooling + +### `scripts/metrics_calculator.py` + +CLI utility for: +- Retention rate calculations by cohort age +- Cohort table generation +- Basic funnel conversion analysis + +Examples: +```bash +python3 scripts/metrics_calculator.py retention events.csv +python3 scripts/metrics_calculator.py cohort events.csv --cohort-grain month +python3 scripts/metrics_calculator.py funnel funnel.csv --stages visit,signup,activate,pay +``` diff --git a/docs/skills/product-team/product-discovery.md b/docs/skills/product-team/product-discovery.md new file mode 100644 index 0000000..75ba80f --- /dev/null +++ b/docs/skills/product-team/product-discovery.md @@ -0,0 +1,125 @@ +--- +title: "Product Discovery" +description: "Product Discovery - Claude Code skill from the Product domain." +--- + +# Product Discovery + +
+:material-lightbulb-outline: Product +:material-identifier: `product-discovery` +:material-github: Source +
+ +
+Install: claude /plugin install product-skills +
+ + +Run structured discovery to identify high-value opportunities and de-risk product bets. + +## When To Use + +Use this skill for: +- Opportunity Solution Tree facilitation +- Assumption mapping and test planning +- Problem validation interviews and evidence synthesis +- Solution validation with prototypes/experiments +- Discovery sprint planning and outputs + +## Core Discovery Workflow + +1. Define desired outcome +- Set one measurable outcome to improve. +- Establish baseline and target horizon. + +2. Build Opportunity Solution Tree (OST) +- Outcome -> opportunities -> solution ideas -> experiments +- Keep opportunities grounded in user evidence, not internal opinions. + +3. Map assumptions +- Identify desirability, viability, feasibility, and usability assumptions. +- Score assumptions by risk and certainty. + +Use: +```bash +python3 scripts/assumption_mapper.py assumptions.csv +``` + +4. Validate the problem +- Conduct interviews and behavior analysis. +- Confirm frequency, severity, and willingness to solve. +- Reject weak opportunities early. + +5. Validate the solution +- Prototype before building. +- Run concept, usability, and value tests. +- Measure behavior, not only stated preference. + +6. Plan discovery sprint +- 1-2 week cycle with explicit hypotheses +- Daily evidence reviews +- End with decision: proceed, pivot, or stop + +## Opportunity Solution Tree (Teresa Torres) + +Structure: +- Outcome: metric you want to move +- Opportunities: unmet customer needs/pains +- Solutions: candidate interventions +- Experiments: fastest learning actions + +Quality checks: +- At least 3 distinct opportunities before converging. +- At least 2 experiments per top opportunity. +- Tie every branch to evidence source. + +## Assumption Mapping + +Assumption categories: +- Desirability: users want this +- Viability: business value exists +- Feasibility: team can build/operate it +- Usability: users can successfully use it + +Prioritization rule: +- High risk + low certainty assumptions are tested first. + +## Problem Validation Techniques + +- Problem interviews focused on current behavior +- Journey friction mapping +- Support ticket and sales-call synthesis +- Behavioral analytics triangulation + +Evidence threshold examples: +- Same pain repeated across multiple target users +- Observable workaround behavior +- Measurable cost of current pain + +## Solution Validation Techniques + +- Concept tests (value proposition comprehension) +- Prototype usability tests (task success/time-to-complete) +- Fake door or concierge tests (demand signal) +- Limited beta cohorts (retention/activation signals) + +## Discovery Sprint Planning + +Suggested 10-day structure: +- Day 1-2: Outcome + opportunity framing +- Day 3-4: Assumption mapping + test design +- Day 5-7: Problem and solution tests +- Day 8-9: Evidence synthesis + decision options +- Day 10: Stakeholder decision review + +## Tooling + +### `scripts/assumption_mapper.py` + +CLI utility that: +- reads assumptions from CSV or inline input +- scores risk/certainty priority +- emits prioritized test plan with suggested test types + +See `references/discovery-frameworks.md` for framework details. diff --git a/docs/skills/product-team/roadmap-communicator.md b/docs/skills/product-team/roadmap-communicator.md new file mode 100644 index 0000000..903c20e --- /dev/null +++ b/docs/skills/product-team/roadmap-communicator.md @@ -0,0 +1,103 @@ +--- +title: "Roadmap Communicator" +description: "Roadmap Communicator - Claude Code skill from the Product domain." +--- + +# Roadmap Communicator + +
+:material-lightbulb-outline: Product +:material-identifier: `roadmap-communicator` +:material-github: Source +
+ +
+Install: claude /plugin install product-skills +
+ + +Create clear roadmap communication artifacts for internal and external stakeholders. + +## When To Use + +Use this skill for: +- Building roadmap presentations in different formats +- Writing stakeholder updates (board, engineering, customers) +- Producing release notes (user-facing and internal) +- Generating changelogs from git history +- Structuring feature announcements + +## Roadmap Formats + +1. Now / Next / Later +- Best for uncertainty and strategic flexibility. +- Communicate direction without false precision. + +2. Timeline roadmap +- Best for fixed-date commitments and launch coordination. +- Requires active risk and dependency management. + +3. Theme-based roadmap +- Best for outcome-led planning and cross-team alignment. +- Groups initiatives by problem space or strategic objective. + +See `references/roadmap-templates.md` for templates. + +## Stakeholder Update Patterns + +### Board / Executive +- Outcome and risk oriented +- Focus on progress against strategic goals +- Highlight trade-offs and required decisions + +### Engineering +- Scope, dependencies, and sequencing clarity +- Status, blockers, and resourcing implications + +### Customers +- Value narrative and timing window +- What is available now vs upcoming +- Clear expectation setting + +See `references/communication-templates.md` for reusable templates. + +## Release Notes Guidance + +### User-Facing Release Notes +- Lead with user value, not internal implementation details. +- Group by workflows or user jobs. +- Include migration/behavior changes explicitly. + +### Internal Release Notes +- Include technical details, operational impact, and known issues. +- Capture rollout plan, rollback criteria, and monitoring notes. + +## Changelog Generation + +Use: +```bash +python3 scripts/changelog_generator.py --from v1.0.0 --to HEAD +``` + +Features: +- Reads git log range +- Parses conventional commit prefixes +- Groups entries by type (`feat`, `fix`, `chore`, etc.) +- Outputs markdown or plain text + +## Feature Announcement Framework + +1. Problem context +2. What changed +3. Why it matters +4. Who benefits most +5. How to get started +6. Call to action and feedback channel + +## Communication Quality Checklist + +- [ ] Audience-specific framing is explicit. +- [ ] Outcomes and trade-offs are clear. +- [ ] Terminology is consistent across artifacts. +- [ ] Risks and dependencies are not hidden. +- [ ] Next actions and owners are specified. diff --git a/mkdocs.yml b/mkdocs.yml index 4cd1d5f..ea0451e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,6 +1,6 @@ site_name: Claude Code Skills & Plugins site_url: https://alirezarezvani.github.io/claude-skills/ -site_description: "173 production-ready skills, 15 agents, and 15 commands for Claude Code, OpenAI Codex, Gemini CLI, and OpenClaw. Reusable expertise for engineering, product, marketing, compliance, and more." +site_description: "177 production-ready skills, 16 agents, and 17 commands for Claude Code, OpenAI Codex, Gemini CLI, and OpenClaw. Reusable expertise for engineering, product, marketing, compliance, and more." site_author: Alireza Rezvani repo_url: https://github.com/alirezarezvani/claude-skills repo_name: alirezarezvani/claude-skills @@ -190,9 +190,13 @@ nav: - Overview: skills/product-team/index.md - "Agile Product Owner": skills/product-team/agile-product-owner.md - "Competitive Teardown": skills/product-team/competitive-teardown.md + - "Experiment Designer": skills/product-team/experiment-designer.md - "Landing Page Generator": skills/product-team/landing-page-generator.md + - "Product Analytics": skills/product-team/product-analytics.md + - "Product Discovery": skills/product-team/product-discovery.md - "Product Manager Toolkit": skills/product-team/product-manager-toolkit.md - "Product Strategist": skills/product-team/product-strategist.md + - "Roadmap Communicator": skills/product-team/roadmap-communicator.md - "SaaS Scaffolder": skills/product-team/saas-scaffolder.md - "UI Design System": skills/product-team/ui-design-system.md - "UX Researcher & Designer": skills/product-team/ux-researcher-designer.md @@ -325,6 +329,7 @@ nav: - "CS Growth Strategist": agents/cs-growth-strategist.md - "CS Product Manager": agents/cs-product-manager.md - "CS Workspace Admin": agents/cs-workspace-admin.md + - "CS Product Analyst": agents/cs-product-analyst.md - "CS Product Strategist": agents/cs-product-strategist.md - "CS Project Manager": agents/cs-project-manager.md - "CS Quality & Regulatory": agents/cs-quality-regulatory.md @@ -338,11 +343,13 @@ nav: - "/okr": commands/okr.md - "/persona": commands/persona.md - "/pipeline": commands/pipeline.md + - "/prd": commands/prd.md - "/project-health": commands/project-health.md - "/retro": commands/retro.md - "/rice": commands/rice.md - "/saas-health": commands/saas-health.md - "/sprint-health": commands/sprint-health.md + - "/sprint-plan": commands/sprint-plan.md - "/tdd": commands/tdd.md - "/tech-debt": commands/tech-debt.md - "/user-story": commands/user-story.md