feat: introduce archify skill for generating architecture diagrams

- 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.
This commit is contained in:
shancheas
2026-08-31 11:31:29 +07:00
parent 050fafd731
commit 166e0d40ac
221 changed files with 191228 additions and 1 deletions
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

@@ -0,0 +1,32 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Archify visual-check · agent-tool-call-loop.html</title>
<style>
*{box-sizing:border-box}body{margin:0;padding:24px;background:#e9eef5;color:#172033;font:14px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}header{max-width:1500px;margin:0 auto 18px}h1{margin:0 0 6px;font-size:20px}p{margin:0;color:#526176}.grid{max-width:1500px;margin:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}figure{margin:0;padding:10px;background:white;border:1px solid #c9d4e3;border-radius:12px;box-shadow:0 10px 30px rgba(15,23,42,.08)}img{display:block;width:100%;height:auto;border:1px solid #e2e8f0}figcaption{padding:9px 4px 2px;color:#526176}@media(max-width:900px){.grid{grid-template-columns:1fr}}
</style>
</head>
<body>
<header><h1>Archify visual-check</h1><p>agent-tool-call-loop.html · automated containment pass · visual review pending</p></header>
<main class="grid">
<figure>
<img src="agent-tool-call-loop.visual-check.1440x900.light.png" alt="light 1440 by 900">
<figcaption><strong>LIGHT</strong> · 1440×900 · containment pass</figcaption>
</figure>
<figure>
<img src="agent-tool-call-loop.visual-check.1440x900.dark.png" alt="dark 1440 by 900">
<figcaption><strong>DARK</strong> · 1440×900 · containment pass</figcaption>
</figure>
<figure>
<img src="agent-tool-call-loop.visual-check.2048x1320.light.png" alt="light 2048 by 1320">
<figcaption><strong>LIGHT</strong> · 2048×1320 · containment pass</figcaption>
</figure>
<figure>
<img src="agent-tool-call-loop.visual-check.2048x1320.dark.png" alt="dark 2048 by 1320">
<figcaption><strong>DARK</strong> · 2048×1320 · containment pass</figcaption>
</figure>
</main>
</body>
</html>
@@ -0,0 +1,547 @@
{
"schemaVersion": 1,
"ok": true,
"command": "visual-check",
"status": "pass",
"visualReview": "pending",
"artifact": {
"path": "/Users/irfanzaelani/Data/works/eigen/tracking/trackgo-fe/docs/architecture/agent-tool-call-loop.html",
"sha256": "428960e1c5ff681765c4e3a2528808bf482ff61f4f0ba8a9a45365b40c400b54",
"bytes": 722323
},
"state": {
"detail": "read",
"motion": "still"
},
"chrome": {
"status": "available",
"executable": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
},
"diagnostics": [],
"containment": {
"status": "pass",
"viewports": [
{
"width": 1440,
"height": 900,
"theme": "light",
"innerWidth": 1440,
"innerHeight": 900,
"scrollWidth": 1440,
"scrollHeight": 900,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1012,
"diagramWidth": 982,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 7.274074074074074,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 51,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
},
{
"width": 1600,
"height": 1000,
"theme": "light",
"innerWidth": 1600,
"innerHeight": 1000,
"scrollWidth": 1600,
"scrollHeight": 1000,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1042,
"diagramWidth": 1012,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 7.496296296296296,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 51,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
},
{
"width": 1920,
"height": 1080,
"theme": "light",
"innerWidth": 1920,
"innerHeight": 1080,
"scrollWidth": 1920,
"scrollHeight": 1080,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1201,
"diagramWidth": 1171,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 8,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 51,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
},
{
"width": 2048,
"height": 1320,
"theme": "light",
"innerWidth": 2048,
"innerHeight": 1320,
"scrollWidth": 2048,
"scrollHeight": 1320,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1549,
"diagramWidth": 1499,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 8,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 41,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
}
]
},
"readability": {
"status": "pass",
"minimumProjectedNodeTextPx": 6,
"viewports": [
{
"width": 1440,
"height": 900,
"theme": "light",
"innerWidth": 1440,
"innerHeight": 900,
"scrollWidth": 1440,
"scrollHeight": 900,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1012,
"diagramWidth": 982,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 7.274074074074074,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 51,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
},
{
"width": 1600,
"height": 1000,
"theme": "light",
"innerWidth": 1600,
"innerHeight": 1000,
"scrollWidth": 1600,
"scrollHeight": 1000,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1042,
"diagramWidth": 1012,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 7.496296296296296,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 51,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
},
{
"width": 1920,
"height": 1080,
"theme": "light",
"innerWidth": 1920,
"innerHeight": 1080,
"scrollWidth": 1920,
"scrollHeight": 1080,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1201,
"diagramWidth": 1171,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 8,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 51,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
},
{
"width": 2048,
"height": 1320,
"theme": "light",
"innerWidth": 2048,
"innerHeight": 1320,
"scrollWidth": 2048,
"scrollHeight": 1320,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1549,
"diagramWidth": 1499,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 8,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 41,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
}
]
},
"viewerChrome": {
"status": "pass",
"viewports": [
{
"width": 1440,
"height": 900,
"theme": "light",
"innerWidth": 1440,
"innerHeight": 900,
"scrollWidth": 1440,
"scrollHeight": 900,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1012,
"diagramWidth": 982,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 7.274074074074074,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 51,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
},
{
"width": 1600,
"height": 1000,
"theme": "light",
"innerWidth": 1600,
"innerHeight": 1000,
"scrollWidth": 1600,
"scrollHeight": 1000,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1042,
"diagramWidth": 1012,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 7.496296296296296,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 51,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
},
{
"width": 1920,
"height": 1080,
"theme": "light",
"innerWidth": 1920,
"innerHeight": 1080,
"scrollWidth": 1920,
"scrollHeight": 1080,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1201,
"diagramWidth": 1171,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 8,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 51,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
},
{
"width": 2048,
"height": 1320,
"theme": "light",
"innerWidth": 2048,
"innerHeight": 1320,
"scrollWidth": 2048,
"scrollHeight": 1320,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1549,
"diagramWidth": 1499,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 8,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 41,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light"
}
]
},
"captures": {
"status": "pass",
"screenshots": [
{
"width": 1440,
"height": 900,
"theme": "light",
"innerWidth": 1440,
"innerHeight": 900,
"scrollWidth": 1440,
"scrollHeight": 900,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1012,
"diagramWidth": 982,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 7.274074074074074,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 51,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light",
"file": "agent-tool-call-loop.visual-check.1440x900.light.png"
},
{
"width": 1440,
"height": 900,
"theme": "dark",
"innerWidth": 1440,
"innerHeight": 900,
"scrollWidth": 1440,
"scrollHeight": 900,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1012,
"diagramWidth": 982,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 7.274074074074074,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 51,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "dark",
"file": "agent-tool-call-loop.visual-check.1440x900.dark.png"
},
{
"width": 2048,
"height": 1320,
"theme": "light",
"innerWidth": 2048,
"innerHeight": 1320,
"scrollWidth": 2048,
"scrollHeight": 1320,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1549,
"diagramWidth": 1499,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 8,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 41,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "light",
"file": "agent-tool-call-loop.visual-check.2048x1320.light.png"
},
{
"width": 2048,
"height": 1320,
"theme": "dark",
"innerWidth": 2048,
"innerHeight": 1320,
"scrollWidth": 2048,
"scrollHeight": 1320,
"overflowX": false,
"overflowY": false,
"ok": true,
"readerWidth": 1549,
"diagramWidth": 1499,
"viewBoxWidth": 1080,
"minimumProjectedNodeTextPx": 8,
"minimumProjectedNodeText": "Cursor chat",
"minimumProjectedNodeTextDetail": "context",
"minimumRequiredNodeTextPx": 6,
"readabilityOk": true,
"hasLegend": true,
"hasNavigationDock": true,
"legendDockIntersectionArea": 0,
"dockStageIntersectionArea": 0,
"dockStageGap": 10.21875,
"requiredDockStageGap": 10,
"viewerChromeStageOk": true,
"viewerChromeReserve": 41,
"viewerChromeActive": true,
"viewerChromeOk": true,
"resolvedTheme": "dark",
"file": "agent-tool-call-loop.visual-check.2048x1320.dark.png"
}
],
"contactSheet": "agent-tool-call-loop.visual-check.html"
},
"sidecars": {
"receipt": "agent-tool-call-loop.visual-check.json",
"contactSheet": "agent-tool-call-loop.visual-check.html"
}
}
@@ -0,0 +1,94 @@
{
"schema_version": 2,
"diagram_type": "workflow",
"meta": {
"title": "TrackGo Cursor Agent Tool-Call Loop",
"locale": "en",
"quality_profile": "showcase",
"views": [
{
"id": "success-path",
"label": "Allow and reply",
"focus": ["user_prompt", "parent_agent", "tool_select", "shell_hook", "run_shell", "user_reply"],
"note": "Matching shell commands that are allowed skip the consent wait and return a reply."
},
{
"id": "consent-paths",
"label": "Ask, wait, revise",
"focus": ["shell_hook", "consent_wait", "revise_cmd"],
"note": "git push and non-tmux dev servers pause with permission ask. The hook never returns deny."
},
{
"id": "evidence-path",
"label": "Session evidence",
"focus": ["session_files", "compact_hint"],
"note": "sessionStart loads prior context; afterFileEdit counts tool calls; sessionEnd may evaluate a transcript."
}
]
},
"lanes": [
{ "id": "user", "label": "User surface" },
{ "id": "agent", "label": "Agent runtime" },
{ "id": "policy", "label": "Policy & exception", "variant": "exception" },
{ "id": "tools", "label": "Tools & observability" }
],
"phases": [
{ "id": "intake", "label": "Intake", "fromCol": 0, "toCol": 1 },
{ "id": "route", "label": "Select + gate", "fromCol": 2, "toCol": 3, "variant": "emphasis" },
{ "id": "execute", "label": "Execute + record", "fromCol": 4, "toCol": 5, "variant": "dashed" }
],
"groups": [
{ "id": "policy_gate", "label": "Policy boundary", "lane": "policy", "fromCol": 3, "toCol": 3, "variant": "security" },
{ "id": "exception_wait", "label": "Exception handling", "lane": "policy", "fromCol": 4, "toCol": 5, "variant": "security" },
{ "id": "tool_work", "label": "Tool execution", "lane": "tools", "fromCol": 2, "toCol": 2, "variant": "dashed" },
{ "id": "shell_run", "label": "Shell run", "lane": "tools", "fromCol": 5, "toCol": 5, "variant": "dashed" },
{ "id": "evidence", "label": "Observability", "lane": "tools", "fromCol": 0, "toCol": 1, "variant": "dashed" }
],
"mainPath": ["user_prompt", "parent_agent", "tool_select", "shell_hook", "run_shell", "user_reply"],
"semanticChecks": {
"allowedRoots": ["user_prompt", "session_files"],
"allowedTerminals": ["user_reply", "consent_wait", "revise_cmd", "compact_hint"]
},
"nodes": [
{ "id": "user_prompt", "lane": "user", "col": 0, "type": "external", "label": "User prompt", "sublabel": "Cursor chat", "width": 132 },
{ "id": "user_reply", "lane": "user", "col": 5, "type": "frontend", "label": "Final reply", "sublabel": "answer + diffs", "width": 132 },
{ "id": "parent_agent", "lane": "agent", "col": 1, "type": "backend", "label": "Parent agent", "sublabel": "rules + skills", "width": 132 },
{ "id": "tool_select", "lane": "agent", "col": 2, "type": "backend", "label": "Select tool", "sublabel": "Shell or files", "width": 132 },
{ "id": "shell_hook", "lane": "policy", "col": 3, "type": "security", "label": "Shell hook", "sublabel": "before-shell.sh", "width": 132 },
{ "id": "consent_wait", "lane": "policy", "col": 4, "type": "security", "label": "Consent wait", "sublabel": "permission ask", "width": 132 },
{ "id": "revise_cmd", "lane": "policy", "col": 5, "type": "messagebus", "label": "Revise command", "sublabel": "wrap in tmux", "width": 132 },
{ "id": "file_tools", "lane": "tools", "col": 2, "type": "backend", "label": "File tools", "sublabel": "Read / Grep / Write", "width": 132 },
{ "id": "run_shell", "lane": "tools", "col": 5, "type": "messagebus", "label": "Run Shell", "sublabel": "permission allow", "width": 132 },
{ "id": "session_files", "lane": "tools", "col": 0, "type": "database", "label": "Session files", "sublabel": ".cursor/sessions", "width": 132 },
{ "id": "compact_hint", "lane": "tools", "col": 1, "type": "database", "label": "Compact hint", "sublabel": "afterFileEdit", "width": 132 }
],
"edges": [
{ "id": "prompt-to-agent", "from": "user_prompt", "to": "parent_agent" },
{ "id": "load-session", "from": "session_files", "to": "parent_agent", "label": "sessionStart", "variant": "dashed", "role": "async" },
{ "id": "agent-selects", "from": "parent_agent", "to": "tool_select", "label": "plan next tool", "variant": "emphasis" },
{ "id": "select-to-hook", "from": "tool_select", "to": "shell_hook", "label": "dev or git push" },
{ "id": "select-to-files", "from": "tool_select", "to": "file_tools", "label": "other tools", "role": "branch" },
{ "id": "hook-allow", "from": "shell_hook", "to": "run_shell", "label": "allow", "variant": "emphasis" },
{ "id": "hook-ask", "from": "shell_hook", "to": "consent_wait", "label": "ask", "variant": "security", "role": "error" },
{ "id": "wait-revise", "from": "consent_wait", "to": "revise_cmd", "label": "agent_message", "variant": "dashed", "role": "branch" },
{ "id": "shell-reply", "from": "run_shell", "to": "user_reply", "variant": "emphasis", "role": "return", "fromSide": "right", "toSide": "right", "route": "outside-right" },
{ "id": "files-return", "from": "file_tools", "to": "parent_agent", "label": "tool result", "role": "return" },
{ "id": "edit-count", "from": "file_tools", "to": "compact_hint", "label": "afterFileEdit", "variant": "dashed", "role": "async" }
],
"cards": [
{
"dot": "rose",
"title": "What the hook gates",
"items": [
"Asks on git push and non-tmux * run dev; never denies; errors exit 0"
]
},
{
"dot": "cyan",
"title": "Evidence the repo writes",
"items": [
"sessionStart loads 7-day .tmp files; afterFileEdit logs at 50 calls"
]
}
]
}