Home / Skills / Developer Productivity / Markdown and Mermaid Writing
Developer Productivity

Markdown and Mermaid Writing

Clayton Young / Superior Byte WorksApache-2.0Skill language: English
License verifiedNo scriptsMedium risk
DemoReal run ยท claude-sonnet-5-5 ยท October 2026
I'm documenting a small data pipeline for my team's repo README. Every night a scheduler triggers an ingest job that pulls CSV files from an SFTP server, a validation step checks the schema and moves bad files to a quarantine folder, good files are loaded into a staging table, then a transform job builds the reporting tables, and finally a Slack message is sent. Please write the README section "How the nightly pipeline works": a short intro, a diagram of the flow, and a sequence diagram showing the interaction between the scheduler, the ingest job, the SFTP server, the database and Slack. Our README is viewed on GitHub.
Skill: markdown-mermaid-writing
Read: references/mermaid_style_guide.md
Read: references/diagrams/sequence.md

Here's the section, ready to paste into your README. Both diagrams use standard Mermaid, which GitHub renders natively in light and dark mode.

## How the nightly pipeline works

Every night a scheduler triggers an ingest job. The job pulls CSV files from an SFTP server and checks each file's schema. Files that fail go to a quarantine folder, and files that pass are loaded into a staging table. A transform job then builds the reporting tables from staging, and a Slack message is sent at the end of the run.

### Pipeline flow

```mermaid
flowchart LR
    accTitle: Nightly Pipeline Flow
    accDescr: A scheduler triggers ingest from SFTP. Each CSV is validated. Bad files go to quarantine, good files load into staging, then the transform builds reporting tables and Slack is notified.

    schedule([โฐ Nightly trigger]) --> ingest[๐Ÿ“ฅ Pull CSVs from SFTP]
    ingest --> validate{๐Ÿ” Schema valid?}
    validate -->|No| quarantine[๐Ÿ—‚๏ธ Move to quarantine]
    validate -->|Yes| staging[๐Ÿ’พ Load into staging table]
    staging --> transform[โš™๏ธ Build reporting tables]
    transform --> notify([๐Ÿ“ค Send Slack message])
    quarantine --> notify

    classDef good fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d
    classDef bad fill:#fee2e2,stroke:#dc2626,stroke-width:2px,color:#7f1d1d

    class staging,transform good
    class quarantine bad
```

### Interaction between components

```mermaid
sequenceDiagram
    accTitle: Nightly Pipeline Sequence
    accDescr: The scheduler starts the ingest job, which downloads files from SFTP, validates each one, quarantines bad files or loads good ones into the database, runs the transform, and posts a summary to Slack.

    participant sched as โฐ Scheduler
    participant ingest as ๐Ÿ“ฅ Ingest job
    participant sftp as ๐Ÿ–ฅ๏ธ SFTP server
    participant db as ๐Ÿ’พ Database
    participant slack as ๐Ÿ“ค Slack

    sched->>ingest: Trigger nightly run
    ingest->>sftp: List and download CSV files
    sftp-->>ingest: CSV files

    loop ๐Ÿ”„ Each file
        ingest->>ingest: ๐Ÿ” Validate schema
        alt โœ… Schema valid
            ingest->>db: Load into staging table
            db-->>ingest: Rows loaded
        else โŒ Schema invalid
            ingest->>ingest: ๐Ÿ—‚๏ธ Move to quarantine folder
        end
    end

    ingest->>db: Run transform (build reporting tables)
    db-->>ingest: Reporting tables updated

    ingest->>slack: ๐Ÿ“ค Post run summary
    slack-->>ingest: Message accepted
```

A few details are my assumptions, so please check them against your setup:

  • Who runs what: You didn't say which component runs validation and the transform. I showed the ingest job doing validation and loading, then triggering the transform in the database. If the transform is a separate job, add it as a sixth participant between the database and Slack.
  • Failures: The Slack message is sent after both good and bad files, as in the flow diagram. If it should only fire on success, or should list the quarantined files, say so and I'll adjust both diagrams.
  • Quarantine location: I didn't say whether the folder is on the SFTP server or local storage. Name it in the intro if readers will need to find it.

I couldn't render the diagrams here, but they follow standard Mermaid syntax. You can paste them into mermaid.live, or preview the README on GitHub, to confirm they display.

Real run in an isolated folder with only this skill installed. Only the Skill and Read tools were enabled, so no command was run and no file was written. The scenario is fictional. The diagrams were not rendered in this run: check them in a Mermaid-aware preview such as GitHub or mermaid.live before publishing.

What it does

Provides an optional house style for Markdown documentation with Mermaid diagrams, so structure lives in editable, diff-friendly text instead of screenshots. It helps pick the right diagram type (flowchart, sequence, ER, state, Gantt, C4, timeline, mindmap and more), then points to a guide for that type with a tested example and a copy-paste template. It adds accTitle and accDescr accessibility metadata, keeps one emoji per node at most, and reminds you to check the Mermaid version of the place where the document will be shown.

Bundled references

A Markdown style guide, a Mermaid style guide, notes on current Mermaid rendering and CLI export, 21 diagram guides, and 6 document templates (decision record, how-to guide, presentation, project documentation, research paper, status report).

Good for

READMEs, design docs, methods notes and reports where a workflow, data model or timeline should stay editable text.

Notes & risks

Medium risk: it writes and edits Markdown files; there are no scripts. Optional diagram export uses npm to install the Mermaid command-line tool and a Chromium browser, which needs a network connection. Mermaid versions differ between hosts such as GitHub, so check that diagrams render where you publish; the diagrams in the trial were not rendered. Its house style (emoji on level-two headings, one H1) is optional: follow your project's own style first. This copy is trimmed: six of the 40 files were removed to fit a size limit, as noted in SKILL.md. Apache-2.0 by Clayton Young and Superior Byte Works, with an MIT integration by K-Dense; license files included.