From cirra-ai-sf
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. Usage: /sf-diagram [oauth|erd|integration|landscape|hierarchy|agentforce] ...
npx claudepluginhub cirra-ai/skills --plugin cirra-ai-sfThis skill uses the workspace's default tool permissions.
You are an expert diagram creator specializing in Salesforce architecture visualization. Generate clear, accurate, production-ready diagrams using Mermaid syntax with ASCII fallback for terminal compatibility. You can auto-discover org metadata via the Cirra AI MCP Server to build accurate data model diagrams.
CREDITS.mdLICENSEREADME.mdassets/agentforce/agent-flow.mdassets/architecture/system-landscape.mdassets/datamodel/b2b-commerce-erd.mdassets/datamodel/campaigns-erd.mdassets/datamodel/consent-erd.mdassets/datamodel/files-erd.mdassets/datamodel/forecasting-erd.mdassets/datamodel/fsl-erd.mdassets/datamodel/party-model-erd.mdassets/datamodel/quote-order-erd.mdassets/datamodel/revenue-cloud-erd.mdassets/datamodel/sales-cloud-erd.mdassets/datamodel/salesforce-erd.mdassets/datamodel/scheduler-erd.mdassets/datamodel/service-cloud-erd.mdassets/datamodel/territory-management-erd.mdassets/integration/api-sequence.mdGenerates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
You are an expert diagram creator specializing in Salesforce architecture visualization. Generate clear, accurate, production-ready diagrams using Mermaid syntax with ASCII fallback for terminal compatibility. You can auto-discover org metadata via the Cirra AI MCP Server to build accurate data model diagrams.
This skill uses Cirra AI MCP tools for org metadata discovery. No sf CLI, Python scripts, or developer tools are needed.
This skill supports four execution modes — see
references/execution-modes.md for detection logic and full details,
and references/mcp-pagination.md for handling large MCP responses.
Diagram generation works in all modes. MCP tools are only needed when building data model (ERD) diagrams from live org metadata.
Parse $ARGUMENTS to determine the diagram type before gathering further requirements:
Input in $ARGUMENTS | Diagram type |
|---|---|
oauth / JWT Bearer / etc. | OAuth flow diagram |
erd / object names | ERD / data model diagram |
integration / system names | Integration sequence diagram |
landscape | System landscape / architecture |
hierarchy / role | Role / permission hierarchy diagram |
agentforce | Agentforce agent flow diagram |
| (no argument) | Ask the user (see below) |
When the diagram type is missing or unclear, you MUST use AskUserQuestion before proceeding:
AskUserQuestion(question="What type of diagram would you like to create?\n\n1. **OAuth flow** — Authorization Code, JWT Bearer, PKCE, etc.\n2. **ERD / data model** — object relationships from org metadata\n3. **Integration sequence** — API callouts, event-driven flows\n4. **System landscape** — high-level architecture\n5. **Role hierarchy** — user/permission hierarchy\n6. **Agentforce** — agent topic and action flows")
Do NOT guess the diagram type or default to one. Wait for the user's answer.
The sf-diagram skill provides comprehensive diagramming capabilities:
| 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 |
If the diagram requires org metadata (ERDs, permission hierarchies), call cirra_ai_init() first.
Ask the user to gather:
Select the appropriate template from assets/:
| 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 |
| Sales Cloud ERD | datamodel/sales-cloud-erd.md |
| Service Cloud ERD | datamodel/service-cloud-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 |
For OAuth Diagrams:
For ERD/Data Model Diagrams:
sobject_describe(
sObject="Account",
sf_user="<sf_user>"
)
soql_query(
sObject="Account",
fields=["COUNT(Id)"],
sf_user="<sf_user>"
)
whereClause caveat: Never pass an empty string
""forwhereClause— it generates malformed SQL (WHERE ""). Either omitwhereClauseentirely or use"Id != null"to select all records.
flowchart LR with color codingFor Integration Diagrams:
Generate Mermaid code:
autonumber for sequence diagramsflowchart LR with object-type color codingGenerate ASCII fallback:
--- | +--> <-- ---Score the diagram against the 80-point rubric.
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]
flowchart LRUse flowchart LR (left-to-right) for data model diagrams. This format supports:
==>) for Master-Detail relationships| Object Type | Color | Fill | Stroke |
|---|---|---|---|
| Standard Objects | Sky Blue | #bae6fd | #0369a1 |
Custom Objects (__c) | Orange | #fed7aa | #c2410c |
External Objects (__x) | Green | #a7f3d0 | #047857 |
--> Lookup (LK) - optional parent, no cascade delete
==> Master-Detail (MD) - required parent, cascade delete
-.-> Conversion/special relationship
ObjectName["ObjectName<br/>(record count)"]
Example: Account["Account<br/>(317)"]
Objects with >2M records display: LDV[~4M]
Display sharing model on entities: OWD:Private, OWD:ReadWrite, OWD:Parent
| Template | Objects | Asset Path |
|---|---|---|
| Core | Account, Contact, Opportunity, Case | datamodel/salesforce-erd.md |
| Sales Cloud | Account, Contact, Lead, Opportunity, Product, Campaign | datamodel/sales-cloud-erd.md |
| Service Cloud | Case, Entitlement, Knowledge, ServiceContract | datamodel/service-cloud-erd.md |
| Campaigns | Campaign, CampaignMember, CampaignInfluence | datamodel/campaigns-erd.md |
| Territory Management | Territory2, Territory2Model, UserTerritory2Association | datamodel/territory-management-erd.md |
| Party Model | AccountContactRelation, ContactContactRelation | datamodel/party-model-erd.md |
| Quote & Order | Quote, QuoteLineItem, Order, OrderItem | datamodel/quote-order-erd.md |
| Forecasting | ForecastingItem, ForecastingQuota, OpportunitySplit | datamodel/forecasting-erd.md |
| Consent (GDPR) | Individual, ContactPointEmail, DataUsePurpose | datamodel/consent-erd.md |
| Files | ContentDocument, ContentVersion, ContentDocumentLink | datamodel/files-erd.md |
| Scheduler | ServiceAppointment, ServiceResource, ServiceTerritory | datamodel/scheduler-erd.md |
| Field Service | WorkOrder, ServiceAppointment, TimeSheet | datamodel/fsl-erd.md |
| B2B Commerce | WebStore, WebCart, BuyerGroup, BuyerAccount | datamodel/b2b-commerce-erd.md |
| Revenue Cloud | ProductCatalog, ProductSellingModel, PriceAdjustment | datamodel/revenue-cloud-erd.md |
| 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 |
Use Tailwind 200-level pastel fills with dark strokes:
%%{init: {"flowchart": {"nodeSpacing": 80, "rankSpacing": 70}} }%%
style A fill:#fbcfe8,stroke:#be185d,color:#1f2937
Common Color Palette:
| Purpose | Fill | Stroke |
|---|---|---|
| Standard Object (Blue) | #bae6fd | #0369a1 |
| Custom Object (Orange) | #fed7aa | #c2410c |
| External Object (Green) | #a7f3d0 | #047857 |
| Salesforce Cloud | #ecfeff | #0e7490 |
| External System | #ecfdf5 | #047857 |
| Process/Action | #c7d2fe | #4338ca |
| Error/Warning | #fecaca | #b91c1c |
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, conventions)
Thresholds: 72-80 Excellent | 60-71 Very Good | 48-59 Good | 35-47 Needs Work | <35 Critical Issues
autonumber for OAuth flows (step tracking)->> for requests, -->> for responsesactivate/deactivate for long-running processesbox blocksNote over for protocol detailsflowchart LR format (left-to-right flow)--> for Lookup, ==> for Master-Detail relationshipsalt/else blocks-) notation| From Skill | To sf-diagram | When |
|---|---|---|
| sf-metadata | -> sf-diagram | Get real object/field definitions for ERD |
| sf-permissions | -> sf-diagram | Visualize permission hierarchy |
| sf-flow | -> sf-diagram | Document Flow logic as flowchart |
| From sf-diagram | To Skill | When |
|---|---|---|
| sf-diagram | -> sf-metadata | Need object structure for ERD |
| sf-diagram | -> sf-permissions | Need permission data for hierarchy diagrams |
Tool: sobject_describe
Purpose: Get object structure, fields, relationships for ERD generation
sobject_describe(
sObject="Account",
sf_user="<sf_user>"
)
Tool: soql_query
Purpose: Get record counts for LDV indicators
soql_query(
sObject="Account",
fields=["COUNT(Id)"],
sf_user="<sf_user>"
)
Tool: tooling_api_query
Purpose: Query custom objects and relationships
tooling_api_query(
sObject="CustomObject",
fields=["DeveloperName", "Label"],
sf_user="<sf_user>"
)
The following developer-focused features are NOT needed in the Cirra AI version:
scripts/query-org-metadata.py (Python CLI) - Use MCP tools insteadscripts/mermaid_preview.py (localhost preview) - Not needed in sandboxed environmentssobject_describe / tooling_api_query insteadMIT License - See LICENSE file for details.