Agent skill

Pattern To PDF

by deusXmachina-dev in deusXmachina-dev/memorylane

Generate a process description document as a downloadable PDF from a detected pattern

GPL-3.0Auto-check passedDocuments & Office

Install Pattern To PDF

skills CLI
$ npx skills add deusXmachina-dev/memorylane --skill pattern-to-pdf -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install deusXmachina-dev/memorylane pattern-to-pdf --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/deusXmachina-dev/memorylane.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/memorylane/skills/pattern-to-pdf .claude/skills/pattern-to-pdf && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pattern-to-pdf
GitHub stars
121
Token cost
~6.4k tokens
SKILL.md length
1,612 words
Files
1
Skills in repo
9
Repo updated
First seen
Licence
GPL-3.0

At a glance

Generate a process description document as a downloadable PDF from a detected pattern

  • Works in 12 steps: Identify the Process → Search for Instances → Cluster into Occurrences → …
  • Tasks that involve PDF
  • SKILL.md covers Before you start, The Goal, Instructions and Document Sections, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Pattern To PDF is an agent skill from deusXmachina-dev/memorylane. Generate a process description document as a downloadable PDF from a detected pattern

Its SKILL.md is about 6.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Documents & Office, covering PDF. The licence is GPL-3.0.

When your agent uses it

  • Tasks that involve PDF

Example prompts

  • “/pattern-to-pdf”

Requirements

  • Pre-approved tools (allowed-tools): mcp__memorylane__browse_timeline, mcp__memorylane__search_context, mcp__memorylane__get_activity_details

Workflow steps

12 steps, taken from the step headings in SKILL.md.

  1. Identify the Process
  2. Search for Instances
  3. Cluster into Occurrences
  4. Deep Dive
  5. Fallback for Sparse Data
  6. Synthesize
  7. Render as PDF
  8. Executive Summary
  9. At a Glance
  10. Process Map
  11. Steps
  12. Opportunity

What it can do on your machine

Read from SKILL.md and the folder at commit 16abbe0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • mcp__memorylane__browse_timeline
    • mcp__memorylane__search_context
    • mcp__memorylane__get_activity_details

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are html and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Pattern To PDF loads about 6.4k tokens when it runs. Until then it costs about 25 tokens; SKILL.md has 1,612 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~25
When it runs · the whole SKILL.md, loaded when a task matches
~6.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from deusXmachina-dev/memorylane at commit 16abbe0, republished under its GPL-3.0 licence (© deusXmachina-dev). 1,612 words, ~6,405 tokens.

Download SKILL.mdSave it as .claude/skills/pattern-to-pdf/SKILL.md (or your agent's skills folder).
name
pattern-to-pdf
description
Generate a process description document as a downloadable PDF from a detected pattern
allowed-tools
mcp__memorylane__browse_timeline, mcp__memorylane__search_context, mcp__memorylane__get_activity_details

Pattern to PDF

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.

Before you start

If the browse_timeline tool is not available, stop and reply with exactly:

MemoryLane isn't connected to Claude yet. Open the MemoryLane app, go to Integrations, click Add to Claude, then restart Claude Desktop and run this again.

Do not suggest plugin settings, Retry, or toggling the plugin.

The Goal

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

Instructions

Step 1 — Identify the Process

Determine which process to document:

  1. If the user names a specific pattern (e.g., from a previous /discover-patterns run), use that as the starting point.
  2. If the user describes a process vaguely ("the thing I do with invoices"), ask a clarifying question to get the key apps and actions involved.
  3. If nothing is specified, ask: "Which process would you like me to document? Name it or describe the key apps/steps and I'll find it in your activity."
Step 2 — Search for Instances

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).

Step 3 — Cluster into Occurrences

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.

  • If 5+ occurrences: excellent — pick the 3–5 clearest for deep dive.
  • If 3–4 occurrences: sufficient — deep dive all of them.
  • If < 3 occurrences: use the fallback in Step 5.
Step 4 — Deep Dive

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.

Step 5 — Fallback for Sparse Data

If fewer than 3 instances were found in Step 2:

  1. Use any known dates from the search results as anchors.
  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")
  1. Reconstruct the process sequence from surrounding context.
  2. If still fewer than 2 clear instances after fallback, tell the user there isn't enough data to produce a reliable document. Suggest they try again after performing the process a few more times with MemoryLane running.
Step 6 — Synthesize

Cross-reference all deep-dived instances to build:

  1. Canonical step sequence — steps that appear consistently across instances
  2. Variations — what changes between instances
  3. Decision points — where the process branches
  4. Timing — average duration overall and per step (from timestamps)
  5. Opportunity — biggest time sink and what's automatable
Step 7 — Render as PDF

Use the HTML Template below to produce the final document. Include:

  1. Header with process name and scan metadata
  2. Executive summary — 3–4 sentences
  3. At a Glance stats — frequency, duration, apps, last seen, instances
  4. Process map — vertical flowchart using the node types below (solid for constant steps, dashed for variable, distinct color for decisions)
  5. Steps table — numbered walkthrough with app, action, and what varies
  6. Opportunity section — time sink, automatable parts, concrete suggestion
  7. Footer with methodology note

Convert to PDF:

  1. Wrap the filled-in HTML template in a full HTML document:
html
<!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>
  1. Write to /tmp/pdd-temp.html using the Write tool.
  2. Convert to PDF using Bash — use a slugified version of the process name (e.g., "Client Onboarding" → client-onboarding-pdd.pdf):
bash
"/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.

  1. Tell the user the PDF has been saved and they can open it.

Document Sections

1. Executive Summary

3–4 sentences covering:

  • What the process accomplishes
  • Why it exists (what business need it serves)
  • How often it happens (frequency from occurrence data)
  • How long it takes (average duration from timestamps)
2. At a Glance

A stats bar with key metrics at a glance:

MetricSource
FrequencyOccurrence count ÷ time window (e.g., "~3x/week")
Avg durationMean time from first to last activity per occurrence
Apps involvedDistinct apps seen across all instances
Last seenDate of most recent occurrence
Instances observedHow many occurrences the PDD is based on
3. Process Map

A vertical CSS flowchart — the visual centerpiece of the document.

Design rules:

  • Vertical flow, top to bottom
  • Each step = a styled node with an app badge (colored pill with app name) + action text
  • Connector lines between steps (CSS borders/pseudo-elements)
  • Decision points = distinct styled node (octagonal or highlighted border) with Yes/No branches
  • Constant steps = solid border — these happen every time
  • Variable steps = dashed border + annotation explaining what varies
  • Steps derived from cross-instance analysis (Step 6)

Node anatomy:

┌─────────────────────────────┐
│  [App Badge]  Action text   │
│  "Enter client details"     │
└──────────────┬──────────────┘
               │
               ▼

Decision node anatomy:

        ┌──────────────┐
       ╱  International  ╲
      ╱    client?        ╲
      ╲                  ╱
       ╲                ╱
        └──┬────────┬──┘
       Yes │        │ No
           ▼        ▼
4. Steps

A numbered walkthrough — each step includes:

FieldDescription
#Step number in sequence
AppWhich application is used
ActionWhat the user does (specific: "Enter client name and billing address", not "Use CRM")
What variesWhat changes between instances (e.g., "Client name, billing amount") or "Nothing — identical each time"
5. Opportunity

A brief assessment:

  • Biggest time sink — which step(s) consume the most time
  • What's automatable — which constant steps could be scripted or API-driven
  • One concrete suggestion — a single, actionable automation recommendation (same specificity level as pattern-detector suggestions)
Show full SKILL.md (655 more words)Show less

Process Map HTML Design

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:

html
<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):

html
<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:

html
<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:

html
<div style="width: 2px; height: 28px; background: #cbd5e1; margin: 0 auto;"></div>

Branch connector (Yes/No):

html
<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>

HTML Template

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.

html
<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>

Calibration Examples

These show the expected level of detail. Each example: input pattern → what the PDD should contain.

Example 1: Client Onboarding

Input pattern: "Client Onboarding — Email → CRM → billing system → welcome email, 3-4x/week, ~20 min"

Expected PDD structure:

  • Executive summary: "Client onboarding is a 5-step process that sets up new clients in the company's systems. It runs 3–4 times per week, triggered by a signed contract arriving via email. Average duration is 20 minutes. The process touches Gmail, HubSpot CRM, Stripe billing, and Gmail again for the welcome email."
  • Process map: 5 nodes — (1) Gmail: Open signed contract email → (2) HubSpot: Create contact with company details [variable: client name, company, address] → (3) HubSpot: Add deal and set stage to "Won" → (4) Stripe: Create customer and subscription [variable: plan type, billing amount] → (5) Gmail: Send welcome email template [variable: recipient, personalized greeting]
  • Decision branch: None observed — process is linear across all instances.
  • Opportunity: Steps 2–4 are data entry of the same information into three systems. An intake form → API integration could eliminate 15 of the 20 minutes.
Example 2: Weekly Revenue Report

Input pattern: "Revenue reporting — Stripe → Google Sheets → formulas → Slack, every Monday, ~35 min"

Expected PDD structure:

  • Executive summary: "The weekly revenue report aggregates Stripe payment data into a formatted summary shared with the finance team via Slack. It runs every Monday morning, takes approximately 35 minutes, and involves Stripe dashboard, Google Sheets, and Slack."
  • Process map: 6 nodes — (1) Stripe: Export last 7 days of payments as CSV → (2) Sheets: Import CSV into "Weekly Revenue" tab [constant: same spreadsheet] → (3) Sheets: Update date range in summary formulas → (4) Sheets: Review computed totals, check for anomalies [variable: time spent varies 2–15 min depending on discrepancies] → (5) Sheets: Screenshot summary table → (6) Slack: Post screenshot + commentary to #finance [variable: commentary text]
  • Decision branch: After step 4 — "Discrepancy found?" → Yes: investigate in Stripe (adds 10–20 min) → No: continue to step 5.
  • Opportunity: Steps 1–3 are fully automatable via Stripe API → Sheets API. A scheduled script could have the spreadsheet pre-populated by Monday morning, reducing the process to review + post (~10 min).
Example 3: Expense Approval Batch

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:

  • Executive summary: "Expense approval processes 10–15 expense reports in a single sitting. It runs twice per week (typically Tuesday and Thursday), taking 30–45 minutes per batch. Each report involves reviewing the PDF, checking line items against company policy, and recording the decision."
  • Process map: 4 nodes per report, wrapped in a "Repeat for each report" annotation — (1) Expense tool: Open next pending report → (2) Preview: Review PDF receipt/invoice [variable: vendor, amount, category] → (3) Browser: Check expense policy for category limits [variable: policy section checked] → (4) Expense tool: Approve or reject with notes [decision: "Within policy?" → Yes: approve → No: reject with reason]
  • Decision branch: After step 3 — "Within policy limits?" → Yes: approve → No: reject with policy citation.
  • Opportunity: Step 3 (policy lookup) is the bottleneck — different policy sections for different expense categories. A pre-check script that flags policy violations before human review would eliminate the manual lookup for ~80% of reports.

Notes

  • Minimum data threshold — need at least 2 clear instances to produce a document. Below that, tell the user.
  • Privacy — summaries are the primary data source. Only use get_activity_details for the deep-dive step. Never reproduce raw OCR in the output.
  • Scope — one document per process. If the user wants multiple processes documented, run this skill once per process.

© deusXmachina-dev, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/memorylane/skills/pattern-to-pdf of deusXmachina-dev/memorylane.

Open the folder on GitHubat commit 16abbe0

Compare with similar skills

Pattern To PDF next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Pattern To PDF compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pattern To PDF this skilldeusXmachina-dev/memorylane121—~6.4kAutomated safety check: PassGPL-3.0
MarkitdownImCa0/just-laws78114 repos~3.2kAutomated safety check: NotesMIT
Gzh Designisjiamu/gzh-design-skill3.9k1 repos~2.2kAutomated safety check: PassAGPL-3.0
GenOffice Document CLIgenspark-ai/genoffice8.9k—~19kAutomated safety check: PassApache-2.0
Harness Book Best Practicewquguru/harness-books3.2k—~4.1kAutomated safety check: PassNone
Bookforge Korean Ebook PDF Makergongnyang/bookforge3141 repos~1.7kAutomated safety check: PassMIT

Similar skills

  • Markitdown

    ImCa0/just-laws

    Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.

    781 GitHub starsUsed in 14 repos~3.2k tokens
    Documents & OfficeAuto-check: notes
  • Gzh Design

    isjiamu/gzh-design-skill

    微信公众号文章排版引擎,将 Markdown 转换为可直接粘贴到公众号编辑器的 HTML。主题风格从 references/theme-index.md 注册的自定义主题库中选取,自动章节编号、关键词下划线标记、引言卡片、目录导航、代码块、图片/GIF、作者签名。支持 Markdown / Word(.docx) / PDF / 纯文本输入(非 Markdown…

    3.9k GitHub starsUsed in 1 repo~2.2k tokens
    Documents & OfficeAuto-check passed
  • GenOffice Document CLI

    genspark-ai/genoffice

    Creates, converts, reads and edits real pptx, xlsx, docx and PDF files locally through the genoffice command line.

    8.9k GitHub stars~19k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Harness Book Best Practice

    wquguru/harness-books

    Best practices for working on the Harness books repo. An agent skill from wquguru/harness-books.

    3.2k GitHub stars~4.1k tokensUpdated 5 mo ago
    Documents & OfficeAuto-check passed
  • Produces book-style Korean ebook PDFs from a topic or finished manuscript, with six design styles, real book parts and quality-check gates before output.

    314 GitHub starsUsed in 1 repo~1.7k tokens
    Documents & OfficeAuto-check passed
  • Instrument Data To Allotrope

    aws-samples/amazon-bedrock-agents-healthcare-lifesciences

    Official

    Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV.

    274 GitHub starsUsed in 2 repos~2.7k tokens
    Documents & OfficeAuto-check passed

More from deusXmachina-dev/memorylane

All 9 skills in this repo
  • Makemigrations

    deusXmachina-dev/memorylane

    Create SQLite migrations for MemoryLane storage schema changes.

    121 GitHub stars~973 tokensUpdated yesterday
    Auto-check passed
  • Release

    deusXmachina-dev/memorylane

    Prepare a MemoryLane release by updating the version and release notes, then creating and pushing the tagged release commit that triggers CI.

    121 GitHub stars~982 tokensUpdated yesterday
    Auto-check passed
  • Process Analyst New

    deusXmachina-dev/memorylane

    (new) Find a person's repeated tasks from their screen activity, and what each one is worth automating, with the time and money saved.

    121 GitHub stars~13k tokensUpdated yesterday
    Auto-check: notes
  • Automation Instructions

    deusXmachina-dev/memorylane

    Write step-by-step automation instructions for a workflow, tailored to your tool (Claude, n8n or Zapier).

    121 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Discover Patterns

    deusXmachina-dev/memorylane

    Discover repeated workflow patterns from screen activity and suggest automations

    121 GitHub stars~4.8k tokensUpdated yesterday
    Auto-check passed
  • Last 30 Minutes

    deusXmachina-dev/memorylane

    Summarize what you've been doing in the last 30 minutes. An agent skill from deusXmachina-dev/memorylane.

    121 GitHub stars~696 tokensUpdated yesterday
    Auto-check passed

Questions about Pattern To PDF

What does Pattern To PDF do?

Generate a process description document as a downloadable PDF from a detected pattern. Pattern To PDF is an agent skill from deusXmachina-dev/memorylane.

When should I use Pattern To PDF?

Pattern To PDF fits situations like: tasks that involve PDF.

How do I install Pattern To PDF in Claude Code?

Run `npx skills add deusXmachina-dev/memorylane --skill pattern-to-pdf -a claude-code`. Or copy the skill folder (plugins/memorylane/skills/pattern-to-pdf in deusXmachina-dev/memorylane) into .claude/skills/pattern-to-pdf in your project. Claude Code loads it when a task matches its description.

How do I install Pattern To PDF in Codex?

Run `npx skills add deusXmachina-dev/memorylane --skill pattern-to-pdf -a codex`. Or copy the skill folder (plugins/memorylane/skills/pattern-to-pdf in deusXmachina-dev/memorylane) into .agents/skills/pattern-to-pdf in your project. Codex loads it when a task matches its description.

Can I use Pattern To PDF in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add deusXmachina-dev/memorylane --skill pattern-to-pdf -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pattern-to-pdf, .gemini/skills/pattern-to-pdf, .github/skills/pattern-to-pdf and .opencode/skills/pattern-to-pdf in your project.

What does Pattern To PDF need to run?

SKILL.md names no scripts, command-line tools or credentials: Pattern To PDF is instructions for the agent only. Its frontmatter pre-approves these tools: mcp__memorylane__browse_timeline, mcp__memorylane__search_context, mcp__memorylane__get_activity_details.

Does Pattern To PDF access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Pattern To PDF safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Pattern To PDF use?

Pattern To PDF is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pattern To PDF use?

About 6.4k tokens (SKILL.md is roughly 26k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Pattern To PDF?

Skills that share tags, products or a category with Pattern To PDF: Markitdown (ImCa0/just-laws, 781 stars), Gzh Design (isjiamu/gzh-design-skill, 3.9k stars), GenOffice Document CLI (genspark-ai/genoffice, 8.9k stars) and Harness Book Best Practice (wquguru/harness-books, 3.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pattern To PDF?

deusXmachina-dev (a GitHub organization) maintains it in deusXmachina-dev/memorylane, which has 121 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 7, 2026.

Source: deusXmachina-dev/memorylane on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.