home / skills / outfitter-dev / agents / session-analysis
This skill analyzes conversation patterns to identify frustration or success signals and generates actionable insights for improving dialogue.
npx playbooks add skill outfitter-dev/agents --skill session-analysisReview the files below or copy the command above to add this skill to your agents.
---
name: session-analysis
description: This skill should be used when analyzing conversation patterns, identifying frustration or success signals, or when "analyze conversation", "what went wrong", or "patterns" are mentioned.
metadata:
version: "2.0.0"
---
# Conversation Analysis
Signal extraction → pattern detection → behavioral insights.
<when_to_use>
- User requests conversation analysis
- Identifying frustration, success, or workflow patterns
- Extracting user preferences and requirements
- Understanding task evolution and iterations
NOT for: real-time monitoring, content generation, single message analysis
</when_to_use>
<signal_taxonomy>
| Type | Subtype | Indicators |
|------|---------|------------|
| Success | Explicit Praise | "Perfect!", "Exactly what I needed", exclamation marks |
| Success | Continuation | "Now do the same for...", building on prior work |
| Success | Adoption | User implements suggestion without modification |
| Success | Acceptance | "Looks good", "Ship it", "Merge this" |
| Frustration | Correction | "No, I meant...", "That's wrong", "Do X instead" |
| Frustration | Reversion | User undoes agent changes, "Go back" |
| Frustration | Repetition | Same request 2+ times, escalating specificity |
| Frustration | Explicit | "This isn't working", "Why did you...", accusatory tone |
| Workflow | Sequence | "First...", "Then...", "Finally...", numbered lists |
| Workflow | Transition | "Now that X is done, let's Y", stage changes |
| Workflow | Tool Chain | Recurring tool usage patterns (Read → Edit → Bash) |
| Workflow | Context Switch | Abrupt topic changes, no transition language |
| Request | Prohibition | "Don't use X", "Never do Y", "Avoid Z" |
| Request | Requirement | "Always check...", "Make sure to...", "You must..." |
| Request | Preference | "I prefer...", "It's better to...", comparative language |
| Request | Conditional | "If X then Y", "When A, do B", situational rules |
Confidence levels:
- High (0.8–1.0): Explicit keywords match taxonomy, no ambiguity, strong context
- Medium (0.5–0.79): Implicit signal, partial context, minor ambiguity
- Low (0.2–0.49): Ambiguous language, weak context, borderline classification
</signal_taxonomy>
<stages>
Load the **maintain-tasks** skill for stage tracking. Stages advance only, never regress.
| Stage | Trigger | activeForm |
|-------|---------|------------|
| Parse Input | Session start | "Parsing input" |
| Extract Signals | Scope validated | "Extracting signals" |
| Detect Patterns | Signals extracted | "Detecting patterns" |
| Synthesize Report | Patterns detected | "Synthesizing report" |
Task format:
```text
- Parse Input { scope description }
- Extract Signals { from N messages }
- Detect Patterns { category focus }
- Synthesize Report { output format }
```
Edge cases:
- Small scope (<5 messages): Skip Extract Signals, jump to Synthesize
- Re-analysis: Resume at Detect Patterns
- Narrow focus (single signal type): Skip Detect Patterns
Workflow:
- Start: Create Parse Input `in_progress`
- Transition: Mark current `completed`, add next `in_progress`
- After delivery: Mark Synthesize Report `completed`
</stages>
<workflow>
1. Define Scope
- Message range (all, recent N, date range)
- Actors (user only, agent only, both)
- Exclusions (system messages, tool outputs, code blocks)
- Mark Parse Input `completed`, create Extract Signals `in_progress`
2. Extract Signals
- Scan messages for signal keywords
- Match against taxonomy
- Assign confidence (high/medium/low)
- Record: type, subtype, message_id, timestamp, quote, context
- Mark Extract Signals `completed`, create Detect Patterns `in_progress`
3. Detect Patterns
- Group signals by type/subtype
- Find clusters (3+ related signals)
- Identify evolution (signal changes over time)
- Track repetition (recurring themes)
- Spot correlations (tool chains, workflows)
- Mark Detect Patterns `completed`, create Synthesize Report `in_progress`
4. Output
- Generate JSON with signals, patterns, summary
- Include confidence, recommendations, action items
- Append `△ Caveats` if gaps exist
- Mark Synthesize Report `completed`
</workflow>
<pattern_detection>
Behavioral patterns from signal clusters:
| Pattern | Detection | Confidence |
|---------|-----------|------------|
| Repetition | Same signal 3+ times | Strong: 5+ signals |
| Evolution | Signal type changes over time | Moderate: 3-4 signals |
| Preferences | Consistent request signals | Strong: across sessions |
| Tool Chains | Recurring tool sequences (5+ times) | High: frequent use |
| Problem Areas | Clustered frustration signals | Strong: 3+ in same topic |
Temporal patterns:
- Escalation: Increasing frustration/stronger requirements
- De-escalation: Frustration → success transition
- Cyclical: Same issue recurs across sessions
</pattern_detection>
<output_format>
JSON structure:
```json
{
"analysis": {
"scope": {
"message_count": N,
"date_range": "YYYY-MM-DD to YYYY-MM-DD",
"actors": ["user", "agent"]
},
"signals": [
{
"type": "success|frustration|workflow|request",
"subtype": "specific_subtype",
"message_id": "msg_123",
"timestamp": "ISO8601",
"quote": "exact text",
"confidence": "high|medium|low",
"context": "brief explanation"
}
],
"patterns": [
{
"pattern_type": "repetition|evolution|preference|tool_chain",
"category": "success|frustration|workflow|request",
"description": "pattern summary",
"occurrences": N,
"confidence": "strong|moderate|weak",
"first_seen": "ISO8601",
"last_seen": "ISO8601",
"recommendation": "actionable next step"
}
],
"summary": {
"total_signals": N,
"by_type": { "success": N, "frustration": N, ... },
"key_insights": ["insight 1", "insight 2"],
"action_items": ["item 1", "item 2"]
}
}
}
```
</output_format>
<rules>
ALWAYS:
- Create Parse Input at session start
- Update todos at stage transitions
- Include confidence levels for all signals
- Support patterns with 2+ signals minimum
- Mark Synthesize Report `completed` after delivery
- Apply recency weighting (recent overrides old)
NEVER:
- Skip stage transitions
- Extract low-confidence signals without marking them
- Claim patterns from single occurrences
- Regress stages
- Deliver without marking final stage complete
- Over-interpret neutral language
</rules>
<references>
- [signal-patterns.md](references/signal-patterns.md) — extended taxonomy, edge cases
- [extraction-techniques.md](references/extraction-techniques.md) — regex, heuristics
- [sample-analysis.md](examples/sample-analysis.md) — complete walkthrough
</references>
This skill analyzes conversation sessions to extract signals, detect patterns, and produce behavioral insights. It focuses on identifying success and frustration cues, workflow sequences, and request preferences across a defined message scope. Use it to understand how interactions evolve, surface problem areas, and produce structured, actionable reports.
The skill parses a specified scope of messages, tags signals using a taxonomy (success, frustration, workflow, request), and assigns confidence levels to each detection. It groups signals into patterns (repetition, evolution, preferences, tool chains), applies recency weighting, and synthesizes a JSON report with findings, recommendations, and task-stage updates. Stages are tracked (Parse Input → Extract Signals → Detect Patterns → Synthesize Report) and never regress.
Can this run in real time?
No. This skill is designed for session analysis after messages are collected, not for live monitoring.
What minimum message count is needed?
For full signal extraction and pattern detection, aim for 5+ messages; smaller scopes skip extraction and go straight to synthesis.