From memorylane
Generates downloadable PDF process briefing from detected patterns or workflows: visual flowchart, steps with apps/actions, stats, and automation suggestions. Useful for documenting real team processes.
npx claudepluginhub deusxmachina-dev/memorylane --plugin memorylaneThis skill is limited to using the following tools:
Generate a shareable process briefing from a detected pattern or user-described workflow — a visual process map, step-by-step walkthrough, occurrence stats, and improvement opportunities. Output is a downloadable PDF.
Generates vertical process flowcharts as SVG and JPEG from user-described workflows, patterns, or activity history. Searches and analyzes instances to map steps.
Visualizes and documents current and future business processes to identify inefficiencies, dependencies, and improvements. Useful for workflow analysis, onboarding, bottleneck discovery, and automation planning.
Documents business processes into complete SOPs with RACI matrices, ASCII flowcharts, detailed steps, exceptions, metrics, and related docs. Use for formalizing informal workflows or handoffs.
Share bugs, ideas, or general feedback.
Generate a shareable process briefing from a detected pattern or user-described workflow — a visual process map, step-by-step walkthrough, occurrence stats, and improvement opportunities. Output is a downloadable PDF.
A PDD is a process briefing document — not a corporate BPM artifact with swim lanes and BPMN notation. It's the document you wish existed when you joined a team: "here's how we actually do X, step by step, with the apps involved, how long it takes, and what varies each time."
The pattern-detector finds that a process exists. The PDD describes how it works — with enough detail that someone unfamiliar could follow it, and enough structure to spot what's automatable.
Pattern Detector output:
"Client Onboarding" — Email → CRM → billing → welcome email,
3-4x/week, ~20 min each
↓ PDD Generator
Process Description Document:
Executive summary — what, why, how often, how long
At a Glance — stats bar with key metrics
Process Map — visual flowchart showing each step
Steps — numbered walkthrough with apps, actions, variations
Opportunity — biggest time sink + concrete automation suggestion
Determine which process to document:
/discover-patterns run), use that as the starting point.Cast a wide net across 30 days:
search_context(query="<process description + key apps>", startTime="30 days ago", endTime="now", limit=30)
Use the pattern name, key apps, and distinguishing actions as search terms. Try 2–3 query variations if the first returns sparse results (e.g., search by app name, then by action description, then by output artifact).
Group returned activities by date proximity — activities within 60 minutes of each other likely belong to the same occurrence. Count distinct occurrences and note their date ranges.
For the selected instances, fetch full details:
get_activity_details(ids=["id1", "id2", "id3", ...])
Use OCR text to understand exactly what happens at each step — what fields are filled, what data moves between apps, what decisions are made.
Privacy: never reproduce passwords, API keys, or personal messages from OCR in the output.
If fewer than 3 instances were found in Step 2:
browse_timeline around each known date with a ±2 hour window:browse_timeline(startTime="<known_date> - 2 hours", endTime="<known_date> + 2 hours", limit=50, sampling="uniform")
Cross-reference all deep-dived instances to build:
Use the HTML Template below to produce the final document. Include:
Convert to PDF:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
@page {
margin: 24px;
}
body {
margin: 0;
padding: 24px;
}
@media print {
body {
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
}
</style>
</head>
<body>
<!-- filled-in template HTML here -->
</body>
</html>
/tmp/pdd-temp.html using the Write tool.client-onboarding-pdd.pdf):"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --headless --disable-gpu --no-pdf-header-footer --print-to-pdf="<slug>-pdd.pdf" /tmp/pdd-temp.html 2>/dev/null && rm /tmp/pdd-temp.html
If Chrome is not installed, fall back to saving as <slug>-pdd.html and tell the user.
3–4 sentences covering:
A stats bar with key metrics at a glance:
| Metric | Source |
|---|---|
| Frequency | Occurrence count ÷ time window (e.g., "~3x/week") |
| Avg duration | Mean time from first to last activity per occurrence |
| Apps involved | Distinct apps seen across all instances |
| Last seen | Date of most recent occurrence |
| Instances observed | How many occurrences the PDD is based on |
A vertical CSS flowchart — the visual centerpiece of the document.
Design rules:
Node anatomy:
┌─────────────────────────────┐
│ [App Badge] Action text │
│ "Enter client details" │
└──────────────┬──────────────┘
│
▼
Decision node anatomy:
┌──────────────┐
╱ International ╲
╱ client? ╲
╲ ╱
╲ ╱
└──┬────────┬──┘
Yes │ │ No
▼ ▼
A numbered walkthrough — each step includes:
| Field | Description |
|---|---|
| # | Step number in sequence |
| App | Which application is used |
| Action | What the user does (specific: "Enter client name and billing address", not "Use CRM") |
| What varies | What changes between instances (e.g., "Client name, billing amount") or "Nothing — identical each time" |
A brief assessment:
The process map uses pure inline CSS (no classes, no external styles). It follows the same design language as the pattern-detector template.
Step node:
<div
style="background: #fff; border: 2px solid #e2e8f0; border-radius: 10px; padding: 14px 18px; max-width: 420px; margin: 0 auto;"
>
<span
style="display: inline-block; background: #6366f1; color: white; font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 99px; margin-right: 8px;"
>{app_name}</span
>
<span style="font-size: 14px; color: #1e293b;">{action_text}</span>
</div>
Variable step node (dashed border):
<div
style="background: #fffbeb; border: 2px dashed #f59e0b; border-radius: 10px; padding: 14px 18px; max-width: 420px; margin: 0 auto;"
>
<span
style="display: inline-block; background: #f59e0b; color: white; font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 99px; margin-right: 8px;"
>{app_name}</span
>
<span style="font-size: 14px; color: #1e293b;">{action_text}</span>
<div style="font-size: 12px; color: #92400e; margin-top: 6px;">Varies: {what_varies}</div>
</div>
Decision node:
<div
style="background: #f0f9ff; border: 2px solid #38bdf8; border-radius: 10px; padding: 14px 18px; max-width: 420px; margin: 0 auto; text-align: center;"
>
<span style="font-size: 14px; font-weight: 600; color: #0369a1;">{decision_question}</span>
</div>
Connector between steps:
<div style="width: 2px; height: 28px; background: #cbd5e1; margin: 0 auto;"></div>
Branch connector (Yes/No):
<div style="display: flex; justify-content: center; gap: 80px; margin: 0 auto; max-width: 420px;">
<div style="text-align: center;">
<div style="font-size: 12px; font-weight: 600; color: #10b981; margin-bottom: 4px;">Yes</div>
<div style="width: 2px; height: 20px; background: #10b981; margin: 0 auto;"></div>
</div>
<div style="text-align: center;">
<div style="font-size: 12px; font-weight: 600; color: #94a3b8; margin-bottom: 4px;">No</div>
<div style="width: 2px; height: 20px; background: #94a3b8; margin: 0 auto;"></div>
</div>
</div>
Replace all {placeholders} with actual data. Step 7 handles wrapping this in a full HTML document and converting to PDF — this template is just the body content.
<div
style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 720px; color: #1a1a2e;"
>
<!-- HEADER -->
<div
style="background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%); border-radius: 12px; padding: 24px 28px; margin-bottom: 24px; color: white;"
>
<div style="font-size: 20px; font-weight: 700; margin-bottom: 4px;">{process_name}</div>
<div style="font-size: 13px; opacity: 0.85;">
Process Description Document · Based on {instances_observed} observed instances ·
{analysis_window}
</div>
</div>
<!-- EXECUTIVE SUMMARY -->
<div
style="border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px 24px; margin-bottom: 16px; background: #fff;"
>
<div style="font-size: 14px; color: #475569; line-height: 1.6;">{executive_summary}</div>
</div>
<!-- AT A GLANCE — STATS ROW -->
<div style="display: flex; gap: 16px; margin-bottom: 20px; flex-wrap: wrap;">
<div
style="flex: 1; min-width: 120px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; padding: 14px 16px; text-align: center;"
>
<div
style="font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px;"
>
Frequency
</div>
<div style="font-size: 16px; font-weight: 700; color: #1e293b;">{frequency}</div>
</div>
<div
style="flex: 1; min-width: 120px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; padding: 14px 16px; text-align: center;"
>
<div
style="font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px;"
>
Avg Duration
</div>
<div style="font-size: 16px; font-weight: 700; color: #1e293b;">{avg_duration}</div>
</div>
<div
style="flex: 1; min-width: 120px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; padding: 14px 16px; text-align: center;"
>
<div
style="font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px;"
>
Apps
</div>
<div style="font-size: 16px; font-weight: 700; color: #1e293b;">{apps_involved}</div>
</div>
<div
style="flex: 1; min-width: 120px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; padding: 14px 16px; text-align: center;"
>
<div
style="font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px;"
>
Last Seen
</div>
<div style="font-size: 16px; font-weight: 700; color: #1e293b;">{last_seen}</div>
</div>
<div
style="flex: 1; min-width: 120px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; padding: 14px 16px; text-align: center;"
>
<div
style="font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px;"
>
Instances
</div>
<div style="font-size: 16px; font-weight: 700; color: #1e293b;">{instances_observed}</div>
</div>
</div>
<!-- PROCESS MAP -->
<div
style="border: 1px solid #e2e8f0; border-radius: 10px; padding: 24px; margin-bottom: 16px; background: #fff;"
>
<div
style="font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 16px;"
>
Process Map
</div>
<!-- Step node — repeat and adapt for each step -->
<div
style="background: #fff; border: 2px solid #e2e8f0; border-radius: 10px; padding: 14px 18px; max-width: 420px; margin: 0 auto;"
>
<span
style="display: inline-block; background: #6366f1; color: white; font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 99px; margin-right: 8px;"
>{app_name}</span
>
<span style="font-size: 14px; color: #1e293b;">{action_text}</span>
</div>
<!-- Connector — between each pair of steps -->
<div style="width: 2px; height: 28px; background: #cbd5e1; margin: 0 auto;"></div>
<!-- Variable step node — use when step varies between instances -->
<div
style="background: #fffbeb; border: 2px dashed #f59e0b; border-radius: 10px; padding: 14px 18px; max-width: 420px; margin: 0 auto;"
>
<span
style="display: inline-block; background: #f59e0b; color: white; font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 99px; margin-right: 8px;"
>{app_name}</span
>
<span style="font-size: 14px; color: #1e293b;">{action_text}</span>
<div style="font-size: 12px; color: #92400e; margin-top: 6px;">Varies: {what_varies}</div>
</div>
<!-- Connector -->
<div style="width: 2px; height: 28px; background: #cbd5e1; margin: 0 auto;"></div>
<!-- Decision node — use when process branches -->
<div
style="background: #f0f9ff; border: 2px solid #38bdf8; border-radius: 10px; padding: 14px 18px; max-width: 420px; margin: 0 auto; text-align: center;"
>
<span style="font-size: 14px; font-weight: 600; color: #0369a1;">{decision_question}</span>
</div>
<!-- Branch connector -->
<div
style="display: flex; justify-content: center; gap: 80px; margin: 0 auto; max-width: 420px;"
>
<div style="text-align: center;">
<div style="font-size: 12px; font-weight: 600; color: #10b981; margin-bottom: 4px;">
Yes
</div>
<div style="width: 2px; height: 20px; background: #10b981; margin: 0 auto;"></div>
</div>
<div style="text-align: center;">
<div style="font-size: 12px; font-weight: 600; color: #94a3b8; margin-bottom: 4px;">No</div>
<div style="width: 2px; height: 20px; background: #94a3b8; margin: 0 auto;"></div>
</div>
</div>
<!-- END PROCESS MAP — adapt the above node types to build the actual flowchart -->
</div>
<!-- STEPS TABLE -->
<div
style="border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px 24px; margin-bottom: 16px; background: #fff;"
>
<div
style="font-size: 11px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 12px;"
>
Steps
</div>
<table style="width: 100%; border-collapse: collapse; font-size: 14px;">
<thead>
<tr style="border-bottom: 2px solid #e2e8f0;">
<th
style="text-align: left; padding: 8px 12px; color: #64748b; font-weight: 600; font-size: 12px;"
>
#
</th>
<th
style="text-align: left; padding: 8px 12px; color: #64748b; font-weight: 600; font-size: 12px;"
>
App
</th>
<th
style="text-align: left; padding: 8px 12px; color: #64748b; font-weight: 600; font-size: 12px;"
>
Action
</th>
<th
style="text-align: left; padding: 8px 12px; color: #64748b; font-weight: 600; font-size: 12px;"
>
What Varies
</th>
</tr>
</thead>
<tbody>
<!-- Repeat for each step -->
<tr style="border-bottom: 1px solid #f1f5f9;">
<td style="padding: 10px 12px; color: #6366f1; font-weight: 700;">{step_number}</td>
<td style="padding: 10px 12px;">
<span
style="display: inline-block; background: #f1f5f9; color: #334155; font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: 6px;"
>{app_name}</span
>
</td>
<td style="padding: 10px 12px; color: #1e293b;">{action}</td>
<td style="padding: 10px 12px; color: #64748b; font-style: italic;">{what_varies}</td>
</tr>
<!-- END step row -->
</tbody>
</table>
</div>
<!-- OPPORTUNITY -->
<div
style="border: 1px solid #e2e8f0; border-radius: 10px; padding: 20px 24px; margin-bottom: 16px; background: #fff;"
>
<div style="font-size: 12px; font-weight: 600; color: #6366f1; margin-bottom: 10px;">
Opportunity
</div>
<div style="display: flex; gap: 12px; margin-bottom: 14px; flex-wrap: wrap;">
<div
style="flex: 1; min-width: 200px; background: #fef3c7; border-radius: 8px; padding: 12px 16px;"
>
<div
style="font-size: 11px; color: #92400e; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px;"
>
Biggest time sink
</div>
<div style="font-size: 13px; color: #78350f;">{biggest_time_sink}</div>
</div>
<div
style="flex: 1; min-width: 200px; background: #d1fae5; border-radius: 8px; padding: 12px 16px;"
>
<div
style="font-size: 11px; color: #065f46; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px;"
>
Automatable
</div>
<div style="font-size: 13px; color: #064e3b;">{whats_automatable}</div>
</div>
</div>
<div style="background: #f8fafc; border-radius: 8px; padding: 14px 16px;">
<div
style="font-size: 11px; color: #6366f1; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px;"
>
Recommended next step
</div>
<div style="font-size: 14px; color: #334155; line-height: 1.5;">{automation_suggestion}</div>
</div>
</div>
<!-- FOOTER -->
<div
style="background: #f8fafc; border-radius: 10px; padding: 16px 20px; border: 1px solid #e2e8f0;"
>
<div style="font-size: 13px; color: #64748b; line-height: 1.5;">
<strong style="color: #1e293b;">Generated from screen activity data.</strong>
This document reflects observed behavior, not self-reported processes. Steps marked as
variable were found to differ across instances.
</div>
</div>
</div>
These show the expected level of detail. Each example: input pattern → what the PDD should contain.
Input pattern: "Client Onboarding — Email → CRM → billing system → welcome email, 3-4x/week, ~20 min"
Expected PDD structure:
Input pattern: "Revenue reporting — Stripe → Google Sheets → formulas → Slack, every Monday, ~35 min"
Expected PDD structure:
Input pattern: "Expense review — PDF open → policy check in browser → approve/reject in expense tool, 10-15 per batch, twice a week"
Expected PDD structure:
get_activity_details for the deep-dive step. Never reproduce raw OCR in the output.