Sf Diagram Mermaid
by Jaganpro
>
Skill Details
Repository Files
39 files in this skill directory
name: sf-diagram-mermaid description: > Creates Salesforce architecture diagrams using Mermaid with ASCII fallback. Use when visualizing OAuth flows, data models (ERDs), integration sequences, system landscapes, role hierarchies, or Agentforce agent architectures. license: MIT compatibility: "Requires Mermaid-capable renderer for diagram previews" metadata: version: "1.2.0" author: "Jag Valaiyapathy" scoring: "80 points across 5 categories" hooks: PreToolUse: - matcher: Bash hooks: - type: command command: "python3 ${SHARED_HOOKS}/scripts/guardrails.py" timeout: 5000 PostToolUse: - matcher: "Write|Edit" hooks: - type: command command: "python3 ${SHARED_HOOKS}/suggest-related-skills.py sf-diagram-mermaid" timeout: 5000 SubagentStop: - type: command command: "python3 ${SHARED_HOOKS}/scripts/chain-validator.py sf-diagram-mermaid" timeout: 5000
sf-diagram-mermaid: Salesforce Diagram Generation
Expert diagram creator specializing in Salesforce architecture visualization. Generate clear, accurate, production-ready diagrams using Mermaid syntax with ASCII fallback for terminal compatibility.
Core Responsibilities
- Diagram Generation: Create Mermaid diagrams from requirements or existing metadata
- Multi-Format Output: Provide both Mermaid code and ASCII art fallback
- sf-metadata Integration: Auto-discover objects/fields for ERD diagrams
- Validation & Scoring: Score diagrams against 5 categories (0-80 points)
Supported Diagram Types
| Type | Mermaid Syntax | Use Case |
|---|---|---|
| OAuth Flows | sequenceDiagram |
Authorization Code, JWT Bearer, PKCE, Device Flow |
| Data Models | flowchart LR |
Object relationships with color coding (preferred) |
| Integration Sequences | sequenceDiagram |
API callouts, event-driven flows |
| System Landscapes | flowchart |
High-level architecture, component diagrams |
| Role Hierarchies | flowchart |
User hierarchies, profile/permission structures |
| Agentforce Flows | flowchart |
Agent → Topic → Action flows |
Workflow (5-Phase Pattern)
Phase 1: Requirements Gathering
Use AskUserQuestion to gather:
- Diagram type (OAuth, ERD, Integration, Landscape, Role Hierarchy, Agentforce)
- Specific flow or scope (e.g., "JWT Bearer flow" or "Account-Contact-Opportunity model")
- Output preference (Mermaid only, ASCII only, or Both)
- Any custom styling requirements
Then:
- If ERD requested, check for sf-metadata availability
- Create TodoWrite tasks for multi-diagram requests
Phase 2: Template Selection
Select template based on diagram type:
| Diagram Type | Template File |
|---|---|
| Authorization Code Flow | oauth/authorization-code.md |
| Authorization Code + PKCE | oauth/authorization-code-pkce.md |
| JWT Bearer Flow | oauth/jwt-bearer.md |
| Client Credentials Flow | oauth/client-credentials.md |
| Device Authorization Flow | oauth/device-authorization.md |
| Refresh Token Flow | oauth/refresh-token.md |
| Data Model (ERD) | datamodel/salesforce-erd.md |
| Integration Sequence | integration/api-sequence.md |
| System Landscape | architecture/system-landscape.md |
| Role Hierarchy | role-hierarchy/user-hierarchy.md |
| Agentforce Flow | agentforce/agent-flow.md |
Template Path Resolution (try in order):
- Marketplace folder (always available):
~/.claude/plugins/marketplaces/sf-skills/sf-diagram-mermaid/templates/[template] - Project folder (if working in sf-skills repo):
[project-root]/sf-diagram-mermaid/templates/[template] - Cache folder (if installed individually):
~/.claude/plugins/cache/sf-diagram-mermaid/*/sf-diagram-mermaid/templates/[template]
Example: To load JWT Bearer template:
Read: ~/.claude/plugins/marketplaces/sf-skills/sf-diagram-mermaid/templates/oauth/jwt-bearer.md
Phase 3: Data Collection
For OAuth Diagrams:
- Use standard actors (Browser, Client App, Salesforce)
- Apply CloudSundial-inspired styling
- Include all protocol steps with numbered sequence
For ERD/Data Model Diagrams:
- If org connected, query record counts for LDV indicators:
python3 scripts/query-org-metadata.py --objects Account,Contact --target-org myorg - Identify relationships (Lookup vs Master-Detail)
- Determine object types (Standard, Custom, External)
- Generate
flowchart LRwith color coding (preferred format)
For Integration Diagrams:
- Identify all systems involved
- Capture request/response patterns
- Note async vs sync interactions
Phase 4: Diagram Generation
Generate Mermaid code:
- Apply color scheme from
docs/color-palette.md - Add annotations and notes where helpful
- Include autonumber for sequence diagrams
- For data models: Use
flowchart LRwith object-type color coding - Keep ERD objects simple - show object name and record count only (no fields)
Generate ASCII fallback:
- Use box-drawing characters:
┌ ─ ┐ │ └ ┘ ├ ┤ ┬ ┴ ┼ - Use arrows:
──><──────┼─ - Keep width under 80 characters when possible
Run Validation:
Score: XX/80 ⭐⭐⭐⭐ Rating
├─ Accuracy: XX/20 (Correct actors, flow steps, relationships)
├─ Clarity: XX/20 (Easy to read, proper labeling)
├─ Completeness: XX/15 (All relevant steps/entities included)
├─ Styling: XX/15 (Color scheme, theming, annotations)
└─ Best Practices: XX/10 (Proper notation, UML conventions)
Phase 5: Output & Documentation
Delivery Format:
## 📊 [Diagram Title]
### Mermaid Diagram
```mermaid
[Generated Mermaid code]
```
### ASCII Fallback
```
[Generated ASCII diagram]
```
### Key Points
- [Important note 1]
- [Important note 2]
### Diagram Score
[Validation results]
Phase 5.5: Preview (Optional)
Offer localhost preview for real-time diagram iteration. See references/preview-guide.md for setup instructions.
Mermaid Styling Guide
Use Tailwind 200-level pastel fills with dark strokes. See references/mermaid-styling.md for complete color palette and examples.
Quick reference:
%%{init: {"flowchart": {"nodeSpacing": 80, "rankSpacing": 70}} }%%
style A fill:#fbcfe8,stroke:#be185d,color:#1f2937
Scoring Thresholds
| Rating | Score | Meaning |
|---|---|---|
| ⭐⭐⭐⭐⭐ Excellent | 72-80 | Production-ready, comprehensive, well-styled |
| ⭐⭐⭐⭐ Very Good | 60-71 | Complete with minor improvements possible |
| ⭐⭐⭐ Good | 48-59 | Functional but could be clearer |
| ⭐⭐ Needs Work | 35-47 | Missing key elements or unclear |
| ⭐ Critical Issues | <35 | Inaccurate or incomplete |
OAuth Flow Quick Reference
| Flow | Use Case | Key Detail | Template |
|---|---|---|---|
| Authorization Code | Web apps with backend | User → Browser → App → SF | oauth/authorization-code.md |
| Auth Code + PKCE | Mobile, SPAs, public clients | code_verifier + SHA256 challenge | oauth/authorization-code-pkce.md |
| JWT Bearer | Server-to-server, CI/CD | Sign JWT with private key | oauth/jwt-bearer.md |
| Client Credentials | Service accounts, background | No user context | oauth/client-credentials.md |
| Device Authorization | CLI, IoT, Smart TVs | Poll for token after user auth | oauth/device-authorization.md |
| Refresh Token | Extend access | Reuse existing tokens | oauth/refresh-token.md |
Templates in templates/oauth/.
Data Model Notation Reference
Preferred Format: flowchart LR
Use flowchart LR (left-to-right) for data model diagrams. This format supports:
- Individual node color coding by object type
- Thick arrows (
==>) for Master-Detail relationships - Left-to-right flow for readability
Relationship Arrows
--> Lookup (LK) - optional parent, no cascade delete
==> Master-Detail (MD) - required parent, cascade delete
-.-> Conversion/special relationship (e.g., Lead converts)
Object Node Format
ObjectName["ObjectName<br/>(record count)"]
Example: Account["Account<br/>(317)"]
Enhanced ERD Features
Object Type Color Coding
When using the flowchart-based ERD format, objects are color-coded by type:
| Object Type | Color | Fill | Stroke |
|---|---|---|---|
| Standard Objects | Sky Blue | #bae6fd |
#0369a1 |
Custom Objects (__c) |
Orange | #fed7aa |
#c2410c |
External Objects (__x) |
Green | #a7f3d0 |
#047857 |
LDV (Large Data Volume) Indicators
For orgs with large datasets, query record counts and display LDV indicators:
python3 ~/.claude/plugins/marketplaces/sf-skills/sf-diagram-mermaid/scripts/query-org-metadata.py \
--objects Account,Contact,Opportunity \
--target-org myorg
Objects with >2M records display: LDV[~4M]
OWD (Org-Wide Defaults)
Display sharing model on entities: OWD:Private, OWD:ReadWrite, OWD:Parent
Relationship Types
| Label | Type | Arrow Style | Behavior |
|---|---|---|---|
LK |
Lookup | --> |
Optional parent, no cascade |
MD |
Master-Detail | ==> |
Required parent, cascade delete |
In flowchart format:
- Lookup:
-->(single arrow) - Master-Detail:
==>(thick double arrow)
Data Model Templates
| Template | Objects | Path |
|---|---|---|
| Core | Account, Contact, Opportunity, Case | templates/datamodel/salesforce-erd.md |
| Sales Cloud | Account, Contact, Lead, Opportunity, Product, Campaign | templates/datamodel/sales-cloud-erd.md |
| Service Cloud | Case, Entitlement, Knowledge, ServiceContract | templates/datamodel/service-cloud-erd.md |
| Campaigns | Campaign, CampaignMember, CampaignInfluence | templates/datamodel/campaigns-erd.md |
| Territory Management | Territory2, Territory2Model, UserTerritory2Association | templates/datamodel/territory-management-erd.md |
| Party Model | AccountContactRelation, ContactContactRelation | templates/datamodel/party-model-erd.md |
| Quote & Order | Quote, QuoteLineItem, Order, OrderItem | templates/datamodel/quote-order-erd.md |
| Forecasting | ForecastingItem, ForecastingQuota, OpportunitySplit | templates/datamodel/forecasting-erd.md |
| Consent (GDPR) | Individual, ContactPointEmail, DataUsePurpose | templates/datamodel/consent-erd.md |
| Files | ContentDocument, ContentVersion, ContentDocumentLink | templates/datamodel/files-erd.md |
| Scheduler | ServiceAppointment, ServiceResource, ServiceTerritory | templates/datamodel/scheduler-erd.md |
| Field Service | WorkOrder, ServiceAppointment, TimeSheet | templates/datamodel/fsl-erd.md |
| B2B Commerce | WebStore, WebCart, BuyerGroup, BuyerAccount | templates/datamodel/b2b-commerce-erd.md |
| Revenue Cloud | ProductCatalog, ProductSellingModel, PriceAdjustment | templates/datamodel/revenue-cloud-erd.md |
ERD Conventions Documentation
See docs/erd-conventions.md for complete documentation of:
- Object type indicators (
[STD],[CUST],[EXT]) - LDV display format
- OWD display format
- Relationship type labels
- Color palette details
Best Practices
Sequence Diagrams
- Use
autonumberfor OAuth flows (step tracking) - Use
->>for requests,-->>for responses - Use
activate/deactivatefor long-running processes - Group related actors with
boxblocks - Add
Note overfor protocol details (tokens, codes)
Data Model Diagrams
- Use
flowchart LRformat (left-to-right flow) - Keep objects simple: name + record count only (no fields)
- Color code by object type: Blue=Standard, Orange=Custom, Green=External
- Use
-->for Lookup,==>for Master-Detail relationships - Add LDV indicator for objects >2M records
- Use API names, not labels (e.g.,
Accountnot "Accounts")
Integration Diagrams
- Show error paths with
alt/elseblocks - Include timeout handling for external calls
- Mark async calls with
-)notation - Add system icons for clarity (☁️ 🔄 🏭 💾)
ASCII Diagrams
- Keep width ≤80 characters
- Use consistent box sizes
- Align arrows clearly
- Add step numbers for sequences
Cross-Skill Integration
| Skill | When to Use | Example |
|---|---|---|
| sf-metadata | Get real object/field definitions for ERD | Skill(skill="sf-metadata") → "Describe Lead object" |
| sf-connected-apps | Link OAuth flow to Connected App setup | "Generate JWT Bearer diagram for this Connected App" |
| sf-ai-agentscript | Visualize Agentforce agent architecture | "Create flow diagram for FAQ Agent" |
| sf-flow | Document Flow logic as flowchart | "Diagram the approval process flow" |
Dependencies
Optional: sf-metadata (for ERD auto-discovery)
Example Usage
1. OAuth Flow Request
User: "Create a JWT Bearer OAuth flow diagram"
You should:
1. Load templates/oauth/jwt-bearer.md
2. Generate Mermaid sequenceDiagram
3. Generate ASCII fallback
4. Score and deliver
2. Data Model Request
User: "Create an ERD for Account, Contact, Opportunity, and Case"
You should:
1. If org connected: Query record counts via query-org-metadata.py
2. Load templates/datamodel/salesforce-erd.md (or cloud-specific template)
3. Generate Mermaid flowchart LR with:
- Object nodes (name + record count, no fields)
- Color coding by object type (Standard=Blue, Custom=Orange)
- Relationship arrows (LK=-->, MD===>)
4. Generate ASCII fallback
5. Score and deliver
3. Integration Diagram Request
User: "Diagram our Salesforce to SAP integration flow"
You should:
1. Ask clarifying questions (sync/async, trigger, protocol)
2. Load templates/integration/api-sequence.md
3. Generate Mermaid sequenceDiagram
4. Generate ASCII fallback
5. Score and deliver
Notes
- Mermaid Rendering: Works in GitHub, VS Code, Notion, Confluence, and most modern tools
- ASCII Purpose: Terminal compatibility, documentation that needs plain text
- Color Accessibility: Palette designed for color-blind accessibility
- Template Customization: Templates are starting points; customize per requirements
License
MIT License. See LICENSE file. Copyright (c) 2024-2025 Jag Valaiyapathy
Related Skills
Attack Tree Construction
Build comprehensive attack trees to visualize threat paths. Use when mapping attack scenarios, identifying defense gaps, or communicating security risks to stakeholders.
Grafana Dashboards
Create and manage production Grafana dashboards for real-time visualization of system and application metrics. Use when building monitoring dashboards, visualizing metrics, or creating operational observability interfaces.
Matplotlib
Foundational plotting library. Create line plots, scatter, bar, histograms, heatmaps, 3D, subplots, export PNG/PDF/SVG, for scientific visualization and publication figures.
Scientific Visualization
Create publication figures with matplotlib/seaborn/plotly. Multi-panel layouts, error bars, significance markers, colorblind-safe, export PDF/EPS/TIFF, for journal-ready scientific plots.
Seaborn
Statistical visualization. Scatter, box, violin, heatmaps, pair plots, regression, correlation matrices, KDE, faceted plots, for exploratory analysis and publication figures.
Shap
Model interpretability and explainability using SHAP (SHapley Additive exPlanations). Use this skill when explaining machine learning model predictions, computing feature importance, generating SHAP plots (waterfall, beeswarm, bar, scatter, force, heatmap), debugging models, analyzing model bias or fairness, comparing models, or implementing explainable AI. Works with tree-based models (XGBoost, LightGBM, Random Forest), deep learning (TensorFlow, PyTorch), linear models, and any black-box model
Pydeseq2
Differential gene expression analysis (Python DESeq2). Identify DE genes from bulk RNA-seq counts, Wald tests, FDR correction, volcano/MA plots, for RNA-seq analysis.
Query Writing
For writing and executing SQL queries - from simple single-table queries to complex multi-table JOINs and aggregations
Pydeseq2
Differential gene expression analysis (Python DESeq2). Identify DE genes from bulk RNA-seq counts, Wald tests, FDR correction, volcano/MA plots, for RNA-seq analysis.
Scientific Visualization
Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib/seaborn/plotly with publication styles. For quick exploration use seaborn or plotly directly.
