Skip to content
Monitoring
Skill

/build-report

Turn a process analysis into a polished, client-ready report, first an HTML deck you review, then a matching PDF. Use to package an analysis into an exec report or PDF. Shows the deck for approval before making the PDF, and never makes up numbers.

From plugin
memorylane
1246 skills1 MCP

Claude Code

$ npx -y skills add deusXmachina-dev/memorylane --skill build-report --agent claude-code

SKILL.md

build-report.SKILL.md
name: build-report
allowed-tools: Read, Write(./report*.html), Edit(./report*.html), Bash(bash ${CLAUDE_SKILL_DIR}/assets/make-pdf.sh *), Bash(base64 -i /tmp/logo.*), Bash(open ./report*.html), Glob, Grep, Task, AskUserQuestion
description: >
  Turn a process analysis into a polished, client-ready report, first an HTML
  deck you review, then a matching PDF. Use to package an analysis into an exec report
  or PDF. Shows the deck for approval before making the PDF, and never makes up numbers.

Report Packaging (Visual Deliverable)

Turns a **process-mining ledger** (where time goes, repeated processes, automation, savings, all basis-labelled) into the **deliverable an exec says "YES" to**: a clean, visual, defensible **HTML + PDF**. The ledger is the input; this skill renders and persuades. Runs **independently** of any analysis skill: if input is missing, it asks.

Two hard requirements:

1. **Beautiful, concise, grounded.** Beat a top consulting deck on design, clarity and brevity (`assets/components.html`). Less prose, more structure. Recommendations are **hyper-specific to this customer**: their actual tools, the concrete mechanism, the human remainder. Never invent a number, app, tool or step not in the ledger. 2. **PDF == HTML.** Exact reproduction: clean page breaks, nothing clipped or split. By design (fixed-size pages + one inlined stylesheet) + a verify step.

**Never fabricate. Always nudge.** Any missing key input (a ledger, a bound field, a role/department label, client name, logo, cost rate) → STOP and ask in one batched question. Never invent identity, numbers, roles, tools, or steps to fill a gap or smooth a layout. This overrides speed and overrides every default below.

**HTML first. PDF only after the user approves (mandatory stop).** The user ALWAYS reviews the HTML deck before any PDF exists. Render `report.html`, show it, then STOP and wait for explicit approval ("yes" / "approved" / "ship it"). Never generate the HTML and the PDF in the same turn; never jump to a PDF or a `*-final.*` file unprompted. The ONLY PDF allowed before approval is the throwaway `/tmp` overflow probe in stage 5 (internal QA, never presented as the deliverable). If you have not received approval in this conversation, end your turn after the review step (stage 6). This overrides speed.

---

1. Inputs (1 or many users)

Source: one or more `process-analysis*.md` files in the working dir. Each file embeds the full ledger as a single fenced ```json code block (the **last** fenced json block in the file, so a json snippet quoted earlier in the narrative can't be grabbed by mistake); extract that block to get the ledger object, and use the narrative text above it for wording. Each ledger is **one observed person** (the analysis is single-user by construction). Any producer of the same shape works. **Never print a ledger's source filename or any per-person file label anywhere in the deck or appendix** (a filename like `process-analysis-jane.md` is itself an identifier); refer to ledgers by role only.

  • **Detect the cohort:** glob `process-analysis*.md` (and any paths the user

gives), then extract each file's embedded json block. 1 file → single-user report. 2+ → **consolidated** report (§7 stage 2).

  • Each ledger MUST carry `meta.user_role` (and ideally `department`) for

grouping. If a ledger lacks a role label, **ask** which role/department it belongs to; never guess.

**Expected ledger shape** (top-level keys + the leaves the report binds; omit any element whose field is absent, per §2):

  • `meta`: user_role, department, location, window, active_days,

measurement_scope, `cost_basis` (rate, derivation, basis); optional report_title, client.

  • `exec_rollup`: total_repetitive_hours_per_week, automatable_pct,

capacity_unlocked_pct, hours_saved_per_year, dollars_saved_per_year_net, fte_capacity_unlocked_this_person, overall_confidence{grade,why}, shown_caveat. Headline figures = `{low,base,high,basis}`.

  • `baseline`: total_active_hours, active_days, `app_time_share[]`{app,pct,hours},

deep_work_share.

  • `processes[]`: name, category, role_department, tier,

frequency{occurrences_clean,occurrences_possible,period}, time_per_instance_min, common_path{description,approx_coverage_pct}, `steps[]`{action,app,input,output, time_min,pain,automatable,basis}, `automation`{verdict,future_state,route, effort_tier,work_nature,mechanism,feasibility,tool,automatable_fraction_low, automatable_fraction_high,human_remainder,automation_cost}, `scores`{impact_hours,automatability,effort,priority_rank}, confidence{grade}, `savings`{annual_hours_saved,gross_annual_dollars_saved,net_annual_dollars_saved,payback_months,dominant_uncertainty}.

  • `systems_landscape[]`, `reasoning_log[]`(+counts), `assumptions[]`,

`what_would_sharpen[]`, `narrative_summary`, `review`{reproducibility_note}.

`assets/components.html` shows the exact field→page binding on sample data.

**Intake gate.** Ask ONCE in a single batched `AskUserQuestion` for everything missing. Cosmetic fields take a default on skip; **data-affecting gaps are never invented** (per the rule above): label them missing/estimated or omit:

  • **Ledger(s)** path/data, and which users form the cohort (if absent or a

different shape: ask for the file(s) or the fields above).

  • **Role/department** for any ledger missing it (grouping key, never guessed).
  • **Cost rate** if absent from a ledger (else mark estimated, show derivation).
  • **Report title** (default "<role/team> Automation Map"); **client/company

name**; **confidentiality line** (default "COMMERCIAL IN CONFIDENCE").

  • **Client logo** (file path or URL). See §4 — **always nudge if not given**.
  • **Branding** (MemoryLane default / neutral) and **orientation** (landscape

default / portrait).

  • **Report language + locale** (default English; ask if the ledger's

`meta.location`/market suggests Philippines, Malaysia, Czech Republic, Slovakia, Germany, Aus

Read more
@deusxmachina-dev
Ships withmemorylane
1246 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
124
Star history of deusXmachina-dev/memorylane on GitHub, a chart by star-history.com

Other skills on memorylane.

More skills from other plugins.

agentdb-advanced

agentdb-advanced

Master advanced AgentDB features including QUIC synchronization, multi-database management, custom distance metrics, hybrid…

ruview2w102k
@ruvnet@ruvnetInstall Skill
install

install

Kubeshark installation and deployment skill. Use this skill whenever the user wants to install Kubeshark, deploy Kubeshark to a…

@kubeshark@kubesharkInstall Skill
scan

scan

Scan a project with sentrux to get structural health grades (A-F) across 14 dimensions including coupling, cycles, cohesion, dead…

sentrux8mo3.3k
@sentrux@sentruxInstall Skill
phone-input

phone-input

Call the user on the phone for real-time voice conversations. Use this when you need input, want to report on completed work, or…

callme7mo2.7k
@zeframlou@zeframlouInstall Skill

Questions about build-report.

Which coding agents can use build-report?
build-report installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.