Patterns for analyzing chat sessions to extract product insights. Covers session sampling, evidence validation, idea deduplication, PII handling, data quality assessment, and prompt injection defense.
From product-playbook-for-agentic-codingnpx claudepluginhub daviswhitehead/product-playbook-for-agentic-coding-plugin --plugin product-playbook-for-agentic-codingThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
This skill provides reusable patterns for analyzing conversational AI chat sessions to extract actionable product insights.
When to use: Selecting which chat sessions to analyze from a larger pool.
Sample sessions in priority order to maximize insight density:
pipeline_state/idea-backlog.json)When to use: Verifying that LLM-generated claims about a session are grounded in actual transcript data.
1. Extract words from the evidence claim (lowercase, deduplicated)
2. Build a "context pool" from all available session data:
- Transcript messages (all roles)
- Feedback comments
- User memory entries (formatted as "key: value")
3. For each evidence word, check if it appears in the context pool
4. Calculate: overlap_ratio = matching_words / total_evidence_words
5. Evidence is validated if overlap_ratio >= 0.60 (60%)
Mark the idea as evidenceValidated: false. It still enters scoring but with reduced credibility. Over multiple runs, if the same idea appears with validated evidence, the confidence boost from deduplication can compensate.
When to use: Comparing new ideas against a persistent backlog to avoid scoring the same idea repeatedly.
Tier 1 — Exact match: Normalize descriptions (lowercase, trim, collapse whitespace) and compare. If exact match, skip the idea entirely and note "previously identified on {date}".
Tier 2 — Jaccard similarity: Compute word-level Jaccard coefficient between new idea and existing ideas within the same category:
jaccard = |intersection(A, B)| / |union(A, B)|
If Jaccard > 0.6, merge with existing idea: boost Confidence by +1 (cap at 5), flag as "cross-session pattern".
Tier 3 — New idea: If no match at Tier 1 or 2, add to backlog and proceed to scoring.
Only compare ideas within the same category (e.g., "agent_instructions" vs "agent_instructions"). Cross-category similarity is coincidence, not duplication.
When to use: Any time user data flows through the pipeline, especially before passing to LLM APIs.
PIPELINE_PII_SALT) is a required secret. Pipeline fails fast if missing.anonymized = "anon_" + HMAC-SHA256(salt, userId).slice(0, 12)
When to use: Evaluating whether the available data is sufficient for meaningful analysis.
| Signal | Good | Degraded | Action |
|---|---|---|---|
| Transcript length | ≥4 messages | 2-3 messages | Analyze but note limited context |
| Feedback present | Has ratings or comments | No feedback | Proceed — transcript is the primary source |
| User memory available | Has preferences stored | Empty memory | Note in context — new user vs returning |
| D7 return resolvable | Session is >7 days old | Session is <7 days old | Mark as "pending" |
| PostHog data | Available | Unavailable | Proceed without — gracefully degrade |
Always include a data quality assessment in the output. This helps the report consumer understand the confidence level of the analysis.
When to use: Processing user-generated content (chat transcripts) that will be included in LLM prompts.