From memorylane
Discovers repeated workflow patterns from screen activity timelines and suggests automations via native integrations, n8n/Make/Zapier, or custom scripts.
npx claudepluginhub deusxmachina-dev/memorylane --plugin memorylaneThis skill is limited to using the following tools:
Mine the user's screen activity for repeated workflows worth automating — via native integrations, n8n/Make/Zapier, or custom scripts. This command scans timeline data directly, applies aggressive filtering to discard casual activity, and surfaces only patterns with real automation potential.
Reviews detected patterns from MemoryLane, scores on repetition cross-app flow feasibility and specificity, filters aggressively, surfaces top automation candidates.
Detects repeated workflow patterns from AI sessions and suggests reusable skills to automate them. Use when optimizing workflows.
Masters AI tools for administrative tasks like meeting notes, email management, calendar optimization, and time management to boost personal productivity. Activates on productivity keywords.
Share bugs, ideas, or general feedback.
Mine the user's screen activity for repeated workflows worth automating — via native integrations, n8n/Make/Zapier, or custom scripts. This command scans timeline data directly, applies aggressive filtering to discard casual activity, and surfaces only patterns with real automation potential.
Pattern detection requires sequential context — the order of app switches within a day reveals the loops.
Iterate backwards, one day at a time:
browse_timeline(startTime="today", endTime="now", limit=50, sampling="uniform")browse_timeline(startTime="2 days ago", endTime="1 day ago", limit=50, sampling="uniform")After each day's scan, run Step 2 on that batch before moving to the next day.
For each day's batch, apply the analysis structure below, then run every candidate through the Automation Fitness Filter.
STEP 1 — App frequency
Which apps appear most? What pairs appear together?
STEP 2 — Semantic clustering
Group activities by what they describe. Are there clusters of similar descriptions?
STEP 3 — Temporal sequences
Within each cluster, do activities follow a consistent order?
STEP 4 — Repetition detection
For each sequence, does it repeat? How many times? Over what time span?
STEP 4.5 — Automation fitness check
Apply the filter below. Discard anything on the DISCARD list.
Only keep candidates that match a REPORT category.
STEP 5 — Variation analysis
Within repeated sequences, what changes between iterations? What stays the same?
STEP 6 — Automation assessment
For the "stays the same" parts — can these be scripted, scheduled, or API-driven?
The core question for every candidate: "Could a native integration, n8n/Make/Zapier workflow, or custom script replace this entire workflow end-to-end?"
If no, discard it. If yes, classify it into one of the categories below.
REPORT — these 5 categories only:
| Category | Badge Color | Signal | Example |
|---|---|---|---|
| Data Shuttle | blue #3b82f6 | Copy-paste structured data between apps | Stripe → Sheets, CRM → billing |
| Reporting Ritual | purple #8b5cf6 | Same app sequence on a schedule | Monday: analytics → chart → Slack |
| Review Pipeline | pink #ec4899 | Queue → cross-reference → decide | Expense PDF → policy check → approve |
| Data Entry | orange #f97316 | Read source, type into forms | Contract email → CRM fields → billing |
| Alert Response | teal #14b8a6 | Notification → switch → act → return, 5+/day | Zendesk alert → dashboard → respond |
DISCARD — explicit noise list:
Maintain a running candidate list across all days. A pattern spotted on multiple days is stronger evidence — merge duplicates and increase confidence.
For each candidate with 3+ occurrences:
search_context(query) — widen to 30 days to verify the pattern holds beyond the scan window.get_activity_details(ids) — only for high-confidence candidates where OCR text would reveal automation-relevant specifics (URLs, field names, data being moved). Keep to a minimum.Rank patterns by automation impact — frequency x time per loop x ease of automation.
Write the HTML to a file — save it as pattern-report.html in the current working directory using the Write tool. Do NOT output raw HTML in your response. After writing the file, tell the user the report has been saved and they can open it. Repeat the pattern card block for each detected pattern.
<div
style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 720px; margin: 0 auto; color: #0f172a;"
>
<!-- HEADER -->
<div
style="background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%); border-radius: 16px; padding: 32px; margin-bottom: 28px; color: white;"
>
<div style="font-size: 24px; font-weight: 800; margin-bottom: 6px; letter-spacing: -0.5px;">
Pattern Report
</div>
<div style="font-size: 14px; opacity: 0.85; line-height: 1.5;">
{analysis_window} · {total_activities_analyzed} activities analyzed · {pattern_count} patterns
found
</div>
</div>
<!-- PATTERN CARD — repeat for each pattern -->
<div
style="border: 1px solid #e2e8f0; border-left: 4px solid {category_color}; border-radius: 12px; margin-bottom: 20px; background: #fff; overflow: hidden;"
>
<!-- Card Header -->
<div style="padding: 20px 24px 16px; border-bottom: 1px solid #f1f5f9;">
<div style="display: flex; align-items: center; gap: 12px; margin-bottom: 8px;">
<span
style="display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; background: {category_color}; color: white; font-size: 13px; font-weight: 700; border-radius: 8px;"
>{rank}</span
>
<span style="font-size: 18px; font-weight: 700; color: #0f172a; letter-spacing: -0.3px;"
>{pattern_name}</span
>
<span
style="font-size: 11px; font-weight: 600; color: white; background: {category_color}; padding: 3px 12px; border-radius: 999px; text-transform: uppercase; letter-spacing: 0.5px;"
>{category_name}</span
>
</div>
<div style="font-size: 14px; color: #64748b; line-height: 1.6;">{description}</div>
</div>
<!-- Stats Row -->
<div
style="display: flex; padding: 16px 24px; gap: 12px; flex-wrap: wrap; background: #f8fafc; border-bottom: 1px solid #f1f5f9;"
>
<div
style="flex: 1; min-width: 100px; background: white; border-radius: 8px; padding: 10px 14px; border: 1px solid #e2e8f0;"
>
<div
style="font-size: 10px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px;"
>
Frequency
</div>
<div style="font-size: 15px; font-weight: 700; color: #0f172a;">{frequency}</div>
</div>
<div
style="flex: 1; min-width: 100px; background: white; border-radius: 8px; padding: 10px 14px; border: 1px solid #e2e8f0;"
>
<div
style="font-size: 10px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px;"
>
Time / loop
</div>
<div style="font-size: 15px; font-weight: 700; color: #0f172a;">{time_per_loop}</div>
</div>
<div
style="flex: 1; min-width: 100px; background: white; border-radius: 8px; padding: 10px 14px; border: 1px solid #e2e8f0;"
>
<div
style="font-size: 10px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px;"
>
Apps
</div>
<div style="font-size: 15px; font-weight: 700; color: #0f172a;">{apps_involved}</div>
</div>
<div
style="flex: 1; min-width: 100px; background: white; border-radius: 8px; padding: 10px 14px; border: 1px solid #e2e8f0;"
>
<div
style="font-size: 10px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px;"
>
Effort
</div>
<div style="font-size: 15px; font-weight: 700; color: {effort_color};">{effort}</div>
</div>
</div>
<!-- Card Body -->
<div style="padding: 16px 24px 20px;">
<!-- Loop Structure -->
<div
style="background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 14px 16px; margin-bottom: 16px;"
>
<div
style="font-size: 10px; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 8px; font-weight: 600;"
>
Loop structure
</div>
<div
style="font-size: 13px; color: #334155; font-family: 'SF Mono', Monaco, Consolas, monospace; line-height: 1.6;"
>
{loop_structure}
</div>
</div>
<!-- What Varies vs What's Constant -->
<div style="display: flex; gap: 12px; margin-bottom: 16px; flex-wrap: wrap;">
<div
style="flex: 1; min-width: 200px; background: #fef3c7; border-radius: 8px; padding: 12px 16px;"
>
<div
style="font-size: 10px; color: #92400e; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px; font-weight: 600;"
>
What varies
</div>
<div style="font-size: 13px; color: #78350f; line-height: 1.5;">{what_varies}</div>
</div>
<div
style="flex: 1; min-width: 200px; background: #d1fae5; border-radius: 8px; padding: 12px 16px;"
>
<div
style="font-size: 10px; color: #065f46; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px; font-weight: 600;"
>
What's constant
</div>
<div style="font-size: 13px; color: #064e3b; line-height: 1.5;">
{what_stays_constant}
</div>
</div>
</div>
<!-- Automation Suggestion -->
<div
style="background: linear-gradient(135deg, #eef2ff 0%, #f5f3ff 100%); border: 1px solid #c7d2fe; border-radius: 8px; padding: 16px;"
>
<div
style="font-size: 11px; font-weight: 700; color: #6366f1; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 8px;"
>
Automation suggestion
</div>
<div style="font-size: 14px; color: #1e293b; line-height: 1.6; margin-bottom: 10px;">
{automation_approach}
</div>
<div
style="display: inline-block; background: white; border: 1px solid #c7d2fe; border-radius: 6px; padding: 4px 12px; font-size: 12px; color: #4f46e5; font-weight: 600;"
>
{automation_method}
</div>
</div>
</div>
</div>
<!-- END PATTERN CARD -->
<!-- SUMMARY FOOTER -->
<div
style="background: linear-gradient(135deg, #f0fdf4 0%, #ecfdf5 100%); border-radius: 12px; padding: 20px 24px; border: 1px solid #bbf7d0;"
>
<div style="font-size: 14px; color: #166534; line-height: 1.5;">
<strong>Estimated time savings:</strong> {total_time_savings} per week if all suggested
automations are implemented.
</div>
</div>
</div>
{rank} — the pattern's position number, ranked by automation impact (1 = highest){category_name} — one of: Data Shuttle, Reporting Ritual, Review Pipeline, Data Entry, Alert Response{category_color} — the badge color from the table above (#3b82f6, #8b5cf6, #ec4899, #f97316, #14b8a6){automation_method} — one of: API script, n8n/Make/Zapier, cron + script, browser automation, webhookEffort colors for {effort_color}:
| Effort | Color |
|---|---|
| Easy | #10b981 (green) |
| Medium | #f59e0b (amber) |
| Hard | #ef4444 (red) |
If no patterns survive the filter, say so directly: "No automatable patterns found in the last N days. Your activity was mostly [programming / browsing / messaging / etc.]. Try again after a week that includes cross-app operational workflows."
After saving the HTML report, use the AskUserQuestion tool to present two interactive prompts. Build the first question dynamically from the discovered patterns — each pattern becomes a selectable option.
{
"questions": [
{
"question": "Which patterns are interesting to you?",
"header": "Patterns",
"options": [
{
"label": "1. {pattern_name}",
"description": "{short_description}"
},
{
"label": "2. {pattern_name}",
"description": "{short_description}"
}
],
"multiSelect": true
},
{
"question": "What should I do next with the selected patterns?",
"header": "Next step",
"options": [
{
"label": "Pattern to PDF",
"description": "Create a process description document as PDF — via /pattern-to-pdf"
},
{
"label": "Pattern to runbook",
"description": "Create an automation runbook — via /pattern-to-runbook"
}
],
"multiSelect": true
}
]
}
Generate one option per discovered pattern in the first question (up to 4 — if more than 4 patterns, list the top 4 by automation impact and mention the rest in descriptions). Then invoke the corresponding command for each selected pattern.
These show the level of specificity to aim for. Each example: observable screen behavior → concrete automation suggestion.
Finance & Accounting
User downloads bank statement CSV, opens QuickBooks, manually enters each transaction, cross-references against invoices in Google Drive. Every Monday morning, ~45 min. → Bank feed integration with auto-matching rules. (Data Entry)
User pulls revenue numbers from Stripe dashboard, copies into a Google Sheet, applies formulas, then pastes the summary into a Slack channel for the weekly finance update. → Scheduled script that queries Stripe API, computes metrics, posts to Slack. (Reporting Ritual)
User reviews each expense report by opening the PDF, checking line items against policy in a separate browser tab, then entering approval/rejection in the expense tool. 10-15 reports per batch. → Policy-checking script that pre-flags violations, surfaces only exceptions for human review. (Review Pipeline)
Operations & Back-Office
User receives client onboarding forms via email, manually copies fields (name, company, billing address, tax ID) into CRM, then into billing system, then sends a welcome email template with the same details. Per new client, ~20 min. → Intake form that auto-populates CRM + billing via API, triggers welcome email. (Data Entry)
User checks Zendesk queue every 2 hours, scans for high-priority tickets, copies ticket summaries into a Slack channel for the ops team. → Webhook that auto-posts P0/P1 tickets to Slack with summary and link. (Alert Response)
User exports weekly sales data from CRM, imports into Excel, builds a pivot table, screenshots the chart, pastes into a PowerPoint slide deck for the Monday review. Every Friday, ~1 hour. → Automated report generation from CRM API to formatted slides. (Reporting Ritual)
User checks LinkedIn, Crunchbase, and the company website before every sales call to build a prospect brief in Notion. 3-5 calls/day, ~10 min each. → Enrichment script that auto-generates prospect briefs from company domain. (Data Shuttle)
HR & Compliance
User receives signed offer letters via DocuSign, downloads PDF, enters start date + salary + role into HRIS, then creates accounts in Slack + Google Workspace + Jira. Per new hire, ~30 min. → Webhook on DocuSign completion triggers HRIS entry + account provisioning. (Data Entry)
User opens the compliance training dashboard weekly to check which employees haven't completed required training, then sends individual reminder emails. → Scheduled check with auto-reminder emails for overdue training. (Reporting Ritual)
Engineering
User scrapes GitHub stargazers, cleans data in Sheets, imports to email tool, writes personalized emails with Claude. → End-to-end script from repo URL to campaign launch. (Data Shuttle)
User opens Datadog dashboard 4-5 times/day to check error rates after a deploy. → Slack alert triggered by error rate threshold, with auto-rollback on spike. (Alert Response)
These would appear as repeated patterns but should never be reported:
get_activity_details for high-confidence candidates only.