Files
claude-scientific-skills/scientific-skills/markdown-mermaid-writing/references/diagrams/zenuml.md
borealBytes 02e19e3df9 docs(references): port style guides, 24 diagram guides, and 9 templates from opencode
All content ported from borealBytes/opencode under Apache-2.0 license with
attribution headers prepended to each file.

- references/markdown_style_guide.md (~733 lines): full markdown formatting,
  citation, collapsible sections, emoji, Mermaid integration, and template
  selection guide
- references/mermaid_style_guide.md (~458 lines): full Mermaid standards —
  emoji set, classDef color palette, accessibility (accTitle/accDescr),
  theme neutrality (no %%{init}), and diagram type selection table
- references/diagrams/ (24 files): per-type exemplars, tips, and templates
  for all Mermaid diagram types
- templates/ (9 files): PR, issue, kanban, ADR, presentation, how-to,
  status report, research paper, project docs

Source: https://github.com/borealBytes/opencode
2026-02-19 18:25:20 -05:00

2.2 KiB

ZenUML Sequence Diagram

Back to Style Guide — Read the style guide first for emoji, color, and accessibility rules.

Syntax keyword: zenuml Best for: Code-like sequence diagrams, method-call-style interactions, developers familiar with programming syntax When NOT to use: Prefer standard Sequence Diagrams for most use cases — ZenUML requires an external plugin and has limited GitHub support.

⚠️ GitHub support: ZenUML requires the @mermaid-js/mermaid-zenuml external module. It may not render on GitHub natively. Use standard sequenceDiagram syntax for GitHub compatibility.

⚠️ Accessibility: ZenUML does not support accTitle/accDescr. Always place a descriptive italic Markdown paragraph directly above the code block.


Exemplar Diagram

ZenUML sequence diagram showing a user authentication flow with credential validation and token generation using programming-style syntax:

zenuml
    @Actor User
    @Boundary AuthAPI
    @Entity Database

    // User initiates login
    User->AuthAPI.login(credentials) {
        AuthAPI->Database.findUser(email) {
            return user
        }
        if (user.valid) {
            return token
        } else {
            return error
        }
    }

Tips

  • Uses programming-style syntax with method calls: A->B.method(args)
  • Curly braces {} create natural nesting (activation bars)
  • Control flow: if/else, while, for, try/catch/finally, par
  • Participant types: @Actor, @Boundary, @Entity, @Database, @Control
  • Comments with // render above messages
  • return keyword draws return arrows
  • Prefer standard sequenceDiagram for GitHub compatibility
  • Use ZenUML only when the code-style syntax is specifically desired

Template

Description of the interaction flow:

zenuml
    @Actor User
    @Boundary Server
    @Entity DB

    User->Server.request(data) {
        Server->DB.query(params) {
            return results
        }
        return response
    }