- Added a new Archify skill, enabling users to create polished architecture, workflow, sequence, data-flow, and lifecycle diagrams. - Implemented comprehensive functionality including rendering, validation, and delivery of diagrams in various formats. - Integrated a user-friendly command-line interface for generating and previewing diagrams. - Developed supporting files including package.json, LICENSE, and SKILL.md for documentation and licensing. - Added unit tests to ensure reliability and functionality of the new skill. These changes enhance the application by providing a structured approach to visualizing system architecture and workflows, improving user experience and data representation.
76 lines
3.5 KiB
JSON
76 lines
3.5 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"diagram_type": "sequence",
|
|
"meta": {
|
|
"title": "Cache Miss Request Sequence",
|
|
"subtitle": "Frontend request path with auth, cache fallback, persistence, and async trace",
|
|
"output": "examples/sequence-cache-miss-request.html",
|
|
"viewBox": [820, 760]
|
|
},
|
|
"participants": [
|
|
{ "id": "user", "type": "external", "label": "User", "sublabel": "browser session" },
|
|
{ "id": "web", "type": "frontend", "label": "Web App", "sublabel": "React UI" },
|
|
{ "id": "api", "type": "backend", "label": "API", "sublabel": "request handler" },
|
|
{ "id": "auth", "type": "security", "label": "Auth", "sublabel": "JWT verify" },
|
|
{ "id": "redis", "type": "database", "label": "Redis", "sublabel": "cache" },
|
|
{ "id": "db", "type": "database", "label": "Postgres", "sublabel": "source of truth" },
|
|
{ "id": "trace", "type": "messagebus", "label": "Trace", "sublabel": "async event" }
|
|
],
|
|
"segments": [
|
|
{ "from": 150, "to": 295, "label": "Request" },
|
|
{ "from": 315, "to": 505, "label": "Fallback" },
|
|
{ "from": 525, "to": 665, "label": "Response + trace" }
|
|
],
|
|
"messages": [
|
|
{ "from": "user", "to": "web", "y": 185, "label": "open page", "variant": "default" },
|
|
{ "from": "web", "to": "api", "y": 228, "label": "GET /dashboard", "variant": "emphasis" },
|
|
{ "from": "api", "to": "auth", "y": 270, "label": "verify JWT", "variant": "security" },
|
|
{ "from": "auth", "to": "api", "y": 305, "label": "claims ok", "variant": "return" },
|
|
{ "from": "api", "to": "redis", "y": 354, "label": "read cache", "variant": "default" },
|
|
{ "from": "redis", "to": "api", "y": 391, "label": "miss", "variant": "return" },
|
|
{ "from": "api", "to": "db", "y": 443, "label": "query profile + metrics", "variant": "emphasis" },
|
|
{ "from": "db", "to": "api", "y": 489, "label": "rows", "variant": "return" },
|
|
{ "from": "api", "to": "redis", "y": 536, "label": "set cache", "variant": "dashed" },
|
|
{ "from": "api", "to": "trace", "y": 580, "label": "emit trace", "variant": "dashed" },
|
|
{ "from": "api", "to": "web", "y": 625, "label": "200 JSON", "variant": "return" },
|
|
{ "from": "web", "to": "user", "y": 662, "label": "render", "variant": "return" }
|
|
],
|
|
"activations": [
|
|
{ "participant": "web", "from": 220, "to": 668, "type": "frontend" },
|
|
{ "participant": "api", "from": 228, "to": 632, "type": "backend" },
|
|
{ "participant": "auth", "from": 265, "to": 310, "type": "security" },
|
|
{ "participant": "redis", "from": 349, "to": 398, "type": "database" },
|
|
{ "participant": "db", "from": 438, "to": 496, "type": "database" },
|
|
{ "participant": "trace", "from": 575, "to": 630, "type": "messagebus" }
|
|
],
|
|
"cards": [
|
|
{
|
|
"dot": "emerald",
|
|
"title": "Happy Path",
|
|
"items": [
|
|
"The main request is Web App -> API -> data source -> response",
|
|
"Return messages are quieter than forward calls",
|
|
"Activation bars make ownership duration visible"
|
|
]
|
|
},
|
|
{
|
|
"dot": "rose",
|
|
"title": "Policy + Fallback",
|
|
"items": [
|
|
"JWT verification is colored as a security interaction",
|
|
"Cache miss is visible without overpowering the main path",
|
|
"Database access only appears after cache fallback"
|
|
]
|
|
},
|
|
{
|
|
"dot": "orange",
|
|
"title": "Async Trace",
|
|
"items": [
|
|
"Trace emission is dashed and secondary",
|
|
"It does not block the response path",
|
|
"The diagram separates user-facing latency from observability"
|
|
]
|
|
}
|
|
]
|
|
}
|