@mohammadhprp/system-prompt 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +35 -0
- package/bin/system-prompt.js +8 -0
- package/framework/README.md +163 -0
- package/framework/agents/README.md +49 -0
- package/framework/agents/backend-architect.md +146 -0
- package/framework/agents/researcher.md +79 -0
- package/framework/agents/reviewer.md +183 -0
- package/framework/agents/security-auditor.md +131 -0
- package/framework/commands/README.md +43 -0
- package/framework/commands/changelog.md +44 -0
- package/framework/commands/commit.md +31 -0
- package/framework/commands/learn.md +24 -0
- package/framework/commands/mr.md +46 -0
- package/framework/commands/pr.md +39 -0
- package/framework/commands/release.md +34 -0
- package/framework/commands/review.md +24 -0
- package/framework/commands/summarize-changes.md +49 -0
- package/framework/mcps/README.md +78 -0
- package/framework/mcps/excalidraw/README.md +37 -0
- package/framework/mcps/excalidraw/capabilities.md +54 -0
- package/framework/mcps/excalidraw/configs/opencode.json +8 -0
- package/framework/mcps/excalidraw/install.md +92 -0
- package/framework/mcps/excalidraw/troubleshooting.md +67 -0
- package/framework/mcps/figma-mcp-go/README.md +51 -0
- package/framework/mcps/figma-mcp-go/capabilities.md +190 -0
- package/framework/mcps/figma-mcp-go/configs/opencode.json +9 -0
- package/framework/mcps/figma-mcp-go/install.md +74 -0
- package/framework/mcps/figma-mcp-go/troubleshooting.md +99 -0
- package/framework/mcps/github-mcp/README.md +51 -0
- package/framework/mcps/github-mcp/capabilities.md +83 -0
- package/framework/mcps/github-mcp/configs/.env.example +1 -0
- package/framework/mcps/github-mcp/configs/opencode.json +13 -0
- package/framework/mcps/github-mcp/install.md +60 -0
- package/framework/mcps/github-mcp/troubleshooting.md +79 -0
- package/framework/mcps/gitlab-mcp/README.md +54 -0
- package/framework/mcps/gitlab-mcp/capabilities.md +216 -0
- package/framework/mcps/gitlab-mcp/configs/.env.example +2 -0
- package/framework/mcps/gitlab-mcp/configs/opencode.json +13 -0
- package/framework/mcps/gitlab-mcp/install.md +99 -0
- package/framework/mcps/gitlab-mcp/troubleshooting.md +116 -0
- package/framework/mcps/jira-mcp/README.md +53 -0
- package/framework/mcps/jira-mcp/capabilities.md +79 -0
- package/framework/mcps/jira-mcp/configs/.env.example +2 -0
- package/framework/mcps/jira-mcp/configs/opencode.json +13 -0
- package/framework/mcps/jira-mcp/install.md +94 -0
- package/framework/mcps/jira-mcp/troubleshooting.md +113 -0
- package/framework/mcps/laravel-boost/README.md +53 -0
- package/framework/mcps/laravel-boost/capabilities.md +92 -0
- package/framework/mcps/laravel-boost/configs/opencode.json +9 -0
- package/framework/mcps/laravel-boost/install.md +106 -0
- package/framework/mcps/laravel-boost/troubleshooting.md +119 -0
- package/framework/mcps/notion-mcp/README.md +58 -0
- package/framework/mcps/notion-mcp/capabilities.md +118 -0
- package/framework/mcps/notion-mcp/configs/opencode.json +9 -0
- package/framework/mcps/notion-mcp/install.md +70 -0
- package/framework/mcps/notion-mcp/troubleshooting.md +95 -0
- package/framework/mcps/playwright-mcp/README.md +50 -0
- package/framework/mcps/playwright-mcp/capabilities.md +149 -0
- package/framework/mcps/playwright-mcp/configs/opencode.json +9 -0
- package/framework/mcps/playwright-mcp/install.md +136 -0
- package/framework/mcps/playwright-mcp/troubleshooting.md +154 -0
- package/framework/mcps/supabase-mcp/README.md +66 -0
- package/framework/mcps/supabase-mcp/capabilities.md +127 -0
- package/framework/mcps/supabase-mcp/configs/opencode.json +9 -0
- package/framework/mcps/supabase-mcp/install.md +85 -0
- package/framework/mcps/supabase-mcp/troubleshooting.md +113 -0
- package/framework/memory/README.md +17 -0
- package/framework/memory/codebase-insights.md +6 -0
- package/framework/memory/user-preferences.md +5 -0
- package/framework/modes/README.md +52 -0
- package/framework/modes/audit.md +88 -0
- package/framework/plugins/README.md +65 -0
- package/framework/plugins/opencode-goal-plugin/README.md +45 -0
- package/framework/plugins/opencode-goal-plugin/capabilities.md +127 -0
- package/framework/plugins/opencode-goal-plugin/install.md +71 -0
- package/framework/plugins/opencode-goal-plugin/troubleshooting.md +112 -0
- package/framework/plugins/ponytail/README.md +44 -0
- package/framework/plugins/ponytail/capabilities.md +112 -0
- package/framework/plugins/ponytail/install.md +77 -0
- package/framework/plugins/ponytail/troubleshooting.md +116 -0
- package/framework/references/standards/api.md +44 -0
- package/framework/references/standards/architecture.md +43 -0
- package/framework/references/standards/database.md +43 -0
- package/framework/references/standards/debugging.md +44 -0
- package/framework/references/standards/documentation.md +43 -0
- package/framework/references/standards/logging.md +43 -0
- package/framework/references/standards/naming.md +43 -0
- package/framework/references/standards/observability.md +43 -0
- package/framework/references/standards/performance.md +43 -0
- package/framework/references/standards/pull-requests.md +43 -0
- package/framework/references/standards/security.md +43 -0
- package/framework/references/standards/testing.md +43 -0
- package/framework/references/templates/adr.md +28 -0
- package/framework/references/templates/api-spec.md +56 -0
- package/framework/references/templates/design-document.md +39 -0
- package/framework/references/templates/incident-report.md +38 -0
- package/framework/references/templates/postmortem.md +41 -0
- package/framework/references/templates/pull-request.md +34 -0
- package/framework/references/templates/runbook.md +48 -0
- package/framework/references/templates/task.md +27 -0
- package/framework/skills/README.md +68 -0
- package/framework/skills/agent-browser/SKILL.md +51 -0
- package/framework/skills/backend-best-practices/SKILL.md +136 -0
- package/framework/skills/backend-best-practices/examples.md +31 -0
- package/framework/skills/backend-best-practices/references/api-design.md +79 -0
- package/framework/skills/backend-best-practices/references/architecture-review.md +77 -0
- package/framework/skills/backend-best-practices/references/database-design.md +78 -0
- package/framework/skills/backend-best-practices/references/debugging.md +76 -0
- package/framework/skills/backend-best-practices/references/observability.md +78 -0
- package/framework/skills/backend-best-practices/references/performance.md +78 -0
- package/framework/skills/backend-best-practices/references/refactoring.md +77 -0
- package/framework/skills/backend-best-practices/references/security.md +80 -0
- package/framework/skills/backend-best-practices/references/testing.md +77 -0
- package/framework/skills/backend-engineer/SKILL.md +76 -0
- package/framework/skills/backend-engineer/examples.md +31 -0
- package/framework/skills/brainstorming/SKILL.md +159 -0
- package/framework/skills/brainstorming/examples.md +49 -0
- package/framework/skills/brainstorming/scripts/frame-template.html +213 -0
- package/framework/skills/brainstorming/scripts/helper.js +167 -0
- package/framework/skills/brainstorming/scripts/server.cjs +723 -0
- package/framework/skills/brainstorming/scripts/start-server.sh +209 -0
- package/framework/skills/brainstorming/scripts/stop-server.sh +120 -0
- package/framework/skills/brainstorming/visual-companion.md +291 -0
- package/framework/skills/brand-guidelines/LICENSE.txt +202 -0
- package/framework/skills/brand-guidelines/SKILL.md +73 -0
- package/framework/skills/code-review/SKILL.md +72 -0
- package/framework/skills/code-review/examples.md +31 -0
- package/framework/skills/design/SKILL.md +399 -0
- package/framework/skills/design/examples.md +34 -0
- package/framework/skills/diagram-design/SKILL.md +485 -0
- package/framework/skills/diagram-design/assets/example-architecture-dark.html +180 -0
- package/framework/skills/diagram-design/assets/example-architecture-full.html +192 -0
- package/framework/skills/diagram-design/assets/example-architecture.html +181 -0
- package/framework/skills/diagram-design/assets/example-bar-dark.html +127 -0
- package/framework/skills/diagram-design/assets/example-bar-full.html +103 -0
- package/framework/skills/diagram-design/assets/example-bar.html +127 -0
- package/framework/skills/diagram-design/assets/example-data-flow-dark.html +143 -0
- package/framework/skills/diagram-design/assets/example-data-flow-full.html +185 -0
- package/framework/skills/diagram-design/assets/example-data-flow.html +143 -0
- package/framework/skills/diagram-design/assets/example-datalake-dark.html +241 -0
- package/framework/skills/diagram-design/assets/example-datalake-full.html +246 -0
- package/framework/skills/diagram-design/assets/example-datalake.html +267 -0
- package/framework/skills/diagram-design/assets/example-dp-integration-dark.html +78 -0
- package/framework/skills/diagram-design/assets/example-dp-integration-full.html +88 -0
- package/framework/skills/diagram-design/assets/example-dp-integration.html +78 -0
- package/framework/skills/diagram-design/assets/example-dp-security-matrix-dark.html +31 -0
- package/framework/skills/diagram-design/assets/example-dp-security-matrix-full.html +32 -0
- package/framework/skills/diagram-design/assets/example-dp-security-matrix.html +88 -0
- package/framework/skills/diagram-design/assets/example-er-dark.html +200 -0
- package/framework/skills/diagram-design/assets/example-er-full.html +203 -0
- package/framework/skills/diagram-design/assets/example-er.html +200 -0
- package/framework/skills/diagram-design/assets/example-flowchart-dark.html +154 -0
- package/framework/skills/diagram-design/assets/example-flowchart-full.html +157 -0
- package/framework/skills/diagram-design/assets/example-flowchart.html +154 -0
- package/framework/skills/diagram-design/assets/example-gantt-dark.html +135 -0
- package/framework/skills/diagram-design/assets/example-gantt-full.html +125 -0
- package/framework/skills/diagram-design/assets/example-gantt.html +135 -0
- package/framework/skills/diagram-design/assets/example-high-level-dark.html +249 -0
- package/framework/skills/diagram-design/assets/example-high-level-full.html +245 -0
- package/framework/skills/diagram-design/assets/example-high-level-vertical-dark.html +272 -0
- package/framework/skills/diagram-design/assets/example-high-level-vertical-full.html +250 -0
- package/framework/skills/diagram-design/assets/example-high-level-vertical.html +323 -0
- package/framework/skills/diagram-design/assets/example-high-level.html +299 -0
- package/framework/skills/diagram-design/assets/example-it-state-dark.html +90 -0
- package/framework/skills/diagram-design/assets/example-it-state-full.html +69 -0
- package/framework/skills/diagram-design/assets/example-it-state.html +128 -0
- package/framework/skills/diagram-design/assets/example-layers-dark.html +121 -0
- package/framework/skills/diagram-design/assets/example-layers-full.html +124 -0
- package/framework/skills/diagram-design/assets/example-layers.html +121 -0
- package/framework/skills/diagram-design/assets/example-line-dark.html +109 -0
- package/framework/skills/diagram-design/assets/example-line-full.html +103 -0
- package/framework/skills/diagram-design/assets/example-line.html +109 -0
- package/framework/skills/diagram-design/assets/example-loop-dark.html +100 -0
- package/framework/skills/diagram-design/assets/example-loop-full.html +137 -0
- package/framework/skills/diagram-design/assets/example-loop-terminal.html +347 -0
- package/framework/skills/diagram-design/assets/example-loop.html +100 -0
- package/framework/skills/diagram-design/assets/example-medallion-dark.html +159 -0
- package/framework/skills/diagram-design/assets/example-medallion-full.html +201 -0
- package/framework/skills/diagram-design/assets/example-medallion.html +159 -0
- package/framework/skills/diagram-design/assets/example-nested-dark.html +130 -0
- package/framework/skills/diagram-design/assets/example-nested-full.html +133 -0
- package/framework/skills/diagram-design/assets/example-nested.html +134 -0
- package/framework/skills/diagram-design/assets/example-org-chart-dark.html +45 -0
- package/framework/skills/diagram-design/assets/example-org-chart-full.html +45 -0
- package/framework/skills/diagram-design/assets/example-org-chart.html +45 -0
- package/framework/skills/diagram-design/assets/example-process-dark.html +62 -0
- package/framework/skills/diagram-design/assets/example-process-full.html +72 -0
- package/framework/skills/diagram-design/assets/example-process.html +62 -0
- package/framework/skills/diagram-design/assets/example-pyramid-dark.html +117 -0
- package/framework/skills/diagram-design/assets/example-pyramid-full.html +120 -0
- package/framework/skills/diagram-design/assets/example-pyramid.html +117 -0
- package/framework/skills/diagram-design/assets/example-quadrant-consultant.html +164 -0
- package/framework/skills/diagram-design/assets/example-quadrant-dark.html +133 -0
- package/framework/skills/diagram-design/assets/example-quadrant-full.html +136 -0
- package/framework/skills/diagram-design/assets/example-quadrant.html +133 -0
- package/framework/skills/diagram-design/assets/example-radar-dark.html +137 -0
- package/framework/skills/diagram-design/assets/example-radar-full.html +133 -0
- package/framework/skills/diagram-design/assets/example-radar.html +137 -0
- package/framework/skills/diagram-design/assets/example-scatter-dark.html +139 -0
- package/framework/skills/diagram-design/assets/example-scatter-full.html +114 -0
- package/framework/skills/diagram-design/assets/example-scatter.html +139 -0
- package/framework/skills/diagram-design/assets/example-sequence-dark.html +220 -0
- package/framework/skills/diagram-design/assets/example-sequence-full.html +386 -0
- package/framework/skills/diagram-design/assets/example-sequence.html +220 -0
- package/framework/skills/diagram-design/assets/example-state-dark.html +145 -0
- package/framework/skills/diagram-design/assets/example-state-full.html +148 -0
- package/framework/skills/diagram-design/assets/example-state.html +145 -0
- package/framework/skills/diagram-design/assets/example-swimlane-dark.html +170 -0
- package/framework/skills/diagram-design/assets/example-swimlane-full.html +173 -0
- package/framework/skills/diagram-design/assets/example-swimlane.html +170 -0
- package/framework/skills/diagram-design/assets/example-timeline-dark.html +133 -0
- package/framework/skills/diagram-design/assets/example-timeline-full.html +136 -0
- package/framework/skills/diagram-design/assets/example-timeline.html +133 -0
- package/framework/skills/diagram-design/assets/example-tree-dark.html +171 -0
- package/framework/skills/diagram-design/assets/example-tree-full.html +174 -0
- package/framework/skills/diagram-design/assets/example-tree.html +171 -0
- package/framework/skills/diagram-design/assets/example-venn-dark.html +130 -0
- package/framework/skills/diagram-design/assets/example-venn-full.html +133 -0
- package/framework/skills/diagram-design/assets/example-venn.html +108 -0
- package/framework/skills/diagram-design/assets/icons.html +230 -0
- package/framework/skills/diagram-design/assets/index.html +333 -0
- package/framework/skills/diagram-design/assets/template-dark.html +82 -0
- package/framework/skills/diagram-design/assets/template-full.html +410 -0
- package/framework/skills/diagram-design/assets/template-terminal.html +170 -0
- package/framework/skills/diagram-design/assets/template.html +83 -0
- package/framework/skills/diagram-design/references/export.md +107 -0
- package/framework/skills/diagram-design/references/onboarding.md +268 -0
- package/framework/skills/diagram-design/references/primitive-annotation.md +36 -0
- package/framework/skills/diagram-design/references/primitive-icons.md +821 -0
- package/framework/skills/diagram-design/references/primitive-sketchy.md +43 -0
- package/framework/skills/diagram-design/references/primitive-terminal.md +76 -0
- package/framework/skills/diagram-design/references/style-guide.md +139 -0
- package/framework/skills/diagram-design/references/type-architecture.md +78 -0
- package/framework/skills/diagram-design/references/type-bar.md +48 -0
- package/framework/skills/diagram-design/references/type-data-flow.md +374 -0
- package/framework/skills/diagram-design/references/type-dp-integration.md +410 -0
- package/framework/skills/diagram-design/references/type-dp-security-matrix.md +379 -0
- package/framework/skills/diagram-design/references/type-er.md +23 -0
- package/framework/skills/diagram-design/references/type-flowchart.md +23 -0
- package/framework/skills/diagram-design/references/type-gantt.md +45 -0
- package/framework/skills/diagram-design/references/type-high-level.md +458 -0
- package/framework/skills/diagram-design/references/type-it-state.md +470 -0
- package/framework/skills/diagram-design/references/type-layers.md +26 -0
- package/framework/skills/diagram-design/references/type-line.md +44 -0
- package/framework/skills/diagram-design/references/type-loop.md +223 -0
- package/framework/skills/diagram-design/references/type-medallion.md +356 -0
- package/framework/skills/diagram-design/references/type-nested.md +22 -0
- package/framework/skills/diagram-design/references/type-org-chart.md +44 -0
- package/framework/skills/diagram-design/references/type-process.md +495 -0
- package/framework/skills/diagram-design/references/type-pyramid.md +33 -0
- package/framework/skills/diagram-design/references/type-quadrant.md +81 -0
- package/framework/skills/diagram-design/references/type-radar.md +80 -0
- package/framework/skills/diagram-design/references/type-scatter.md +39 -0
- package/framework/skills/diagram-design/references/type-sequence.md +35 -0
- package/framework/skills/diagram-design/references/type-state.md +21 -0
- package/framework/skills/diagram-design/references/type-swimlane.md +20 -0
- package/framework/skills/diagram-design/references/type-timeline.md +20 -0
- package/framework/skills/diagram-design/references/type-tree.md +24 -0
- package/framework/skills/diagram-design/references/type-venn.md +26 -0
- package/framework/skills/documentation/SKILL.md +74 -0
- package/framework/skills/documentation/examples.md +31 -0
- package/framework/skills/find-skills/SKILL.md +141 -0
- package/framework/skills/find-skills/examples.md +35 -0
- package/framework/skills/gitlab-mcp/SKILL.md +83 -0
- package/framework/skills/gitlab-mcp/examples.md +31 -0
- package/framework/skills/gitlab-mcp/references/code-review.md +110 -0
- package/framework/skills/gitlab-mcp/references/issues.md +141 -0
- package/framework/skills/gitlab-mcp/references/merge-requests.md +120 -0
- package/framework/skills/gitlab-mcp/references/pipelines.md +67 -0
- package/framework/skills/gitlab-mcp/references/search.md +17 -0
- package/framework/skills/gitlab-mcp/references/webhooks.md +32 -0
- package/framework/skills/gitlab-mcp/references/work-items.md +50 -0
- package/framework/skills/jira-mcp/SKILL.md +57 -0
- package/framework/skills/jira-mcp/examples.md +31 -0
- package/framework/skills/jira-mcp/references/comments.md +27 -0
- package/framework/skills/jira-mcp/references/issues.md +97 -0
- package/framework/skills/jira-mcp/references/projects.md +39 -0
- package/framework/skills/laravel-best-practices/SKILL.md +229 -0
- package/framework/skills/laravel-best-practices/examples.md +31 -0
- package/framework/skills/laravel-best-practices/references/advanced-queries.md +106 -0
- package/framework/skills/laravel-best-practices/references/architecture.md +202 -0
- package/framework/skills/laravel-best-practices/references/blade-views.md +36 -0
- package/framework/skills/laravel-best-practices/references/caching.md +70 -0
- package/framework/skills/laravel-best-practices/references/collections.md +44 -0
- package/framework/skills/laravel-best-practices/references/config.md +73 -0
- package/framework/skills/laravel-best-practices/references/db-performance.md +192 -0
- package/framework/skills/laravel-best-practices/references/eloquent.md +148 -0
- package/framework/skills/laravel-best-practices/references/error-handling.md +72 -0
- package/framework/skills/laravel-best-practices/references/events-notifications.md +52 -0
- package/framework/skills/laravel-best-practices/references/http-client.md +160 -0
- package/framework/skills/laravel-best-practices/references/mail.md +27 -0
- package/framework/skills/laravel-best-practices/references/migrations.md +121 -0
- package/framework/skills/laravel-best-practices/references/passport.md +197 -0
- package/framework/skills/laravel-best-practices/references/pennant.md +61 -0
- package/framework/skills/laravel-best-practices/references/pest-testing.md +166 -0
- package/framework/skills/laravel-best-practices/references/pulse.md +196 -0
- package/framework/skills/laravel-best-practices/references/queue-jobs.md +144 -0
- package/framework/skills/laravel-best-practices/references/routing.md +99 -0
- package/framework/skills/laravel-best-practices/references/scheduling.md +39 -0
- package/framework/skills/laravel-best-practices/references/scout.md +176 -0
- package/framework/skills/laravel-best-practices/references/security.md +198 -0
- package/framework/skills/laravel-best-practices/references/spatie-laravel-backup.md +222 -0
- package/framework/skills/laravel-best-practices/references/spatie-laravel-permission.md +272 -0
- package/framework/skills/laravel-best-practices/references/spatie-medialibrary.md +672 -0
- package/framework/skills/laravel-best-practices/references/style.md +125 -0
- package/framework/skills/laravel-best-practices/references/tailwindcss.md +112 -0
- package/framework/skills/laravel-best-practices/references/testing.md +43 -0
- package/framework/skills/laravel-best-practices/references/validation.md +75 -0
- package/framework/skills/lavish/SKILL.md +67 -0
- package/framework/skills/lavish/examples.md +31 -0
- package/framework/skills/notion-mcp/SKILL.md +57 -0
- package/framework/skills/notion-mcp/examples.md +31 -0
- package/framework/skills/notion-mcp/references/comments.md +112 -0
- package/framework/skills/notion-mcp/references/databases.md +193 -0
- package/framework/skills/notion-mcp/references/pages.md +235 -0
- package/framework/skills/skill-creator/LICENSE.txt +202 -0
- package/framework/skills/skill-creator/SKILL.md +485 -0
- package/framework/skills/skill-creator/agents/analyzer.md +274 -0
- package/framework/skills/skill-creator/agents/comparator.md +202 -0
- package/framework/skills/skill-creator/agents/grader.md +223 -0
- package/framework/skills/skill-creator/assets/eval_review.html +146 -0
- package/framework/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/framework/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/framework/skills/skill-creator/examples.md +31 -0
- package/framework/skills/skill-creator/references/schemas.md +430 -0
- package/framework/skills/skill-creator/scripts/__init__.py +0 -0
- package/framework/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/framework/skills/skill-creator/scripts/generate_report.py +326 -0
- package/framework/skills/skill-creator/scripts/improve_description.py +247 -0
- package/framework/skills/skill-creator/scripts/package_skill.py +136 -0
- package/framework/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/framework/skills/skill-creator/scripts/run_eval.py +310 -0
- package/framework/skills/skill-creator/scripts/run_loop.py +328 -0
- package/framework/skills/skill-creator/scripts/utils.py +47 -0
- package/framework/styles/README.md +35 -0
- package/framework/styles/linear/DESIGN.md +478 -0
- package/framework/styles/linear/README.md +36 -0
- package/framework/styles/linear/assets/preview.jpg +0 -0
- package/framework/styles/raycast/DESIGN.md +495 -0
- package/framework/styles/raycast/README.md +35 -0
- package/framework/styles/raycast/assets/preview.jpg +0 -0
- package/package.json +33 -0
- package/src/agent-configs.js +96 -0
- package/src/catalog.js +145 -0
- package/src/cli.js +254 -0
- package/src/installer.js +303 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Export to PNG / SVG
|
|
2
|
+
|
|
3
|
+
Convert a generated diagram HTML file into a portable `.svg` and/or `.png` next to it. **Manual only — never run unprompted.**
|
|
4
|
+
|
|
5
|
+
## Trigger
|
|
6
|
+
|
|
7
|
+
Load this file when:
|
|
8
|
+
|
|
9
|
+
- The user invokes `/diagram-design:export <html-file>` (the plugin's slash command — defined in `commands/export.md` at the repo root).
|
|
10
|
+
- The user asks in natural language to export, save, rasterize, convert, or download a diagram in `.svg` or `.png` form. Typical phrasings:
|
|
11
|
+
- "export this as PNG"
|
|
12
|
+
- "save as SVG"
|
|
13
|
+
- "give me a PNG of that diagram"
|
|
14
|
+
- "rasterize it"
|
|
15
|
+
- "convert to png and svg"
|
|
16
|
+
|
|
17
|
+
The slash command is a thin wrapper that delegates here — both paths run the same procedure below.
|
|
18
|
+
|
|
19
|
+
## Scope
|
|
20
|
+
|
|
21
|
+
Both formats are **diagram-only** — just the `<svg>` node. Editorial wrappers (header, summary cards, footer in `-full` variants) are intentionally dropped: the export deliverable is the diagram itself, suitable for Figma, slides, social cards, or blog images.
|
|
22
|
+
|
|
23
|
+
If the user explicitly asks for "a screenshot of the whole page including the cards", that's a different request — fall back to a normal full-page screenshot via the user's OS or browser.
|
|
24
|
+
|
|
25
|
+
## SVG export procedure
|
|
26
|
+
|
|
27
|
+
1. Read the source HTML file.
|
|
28
|
+
2. Extract the **first** `<svg ...>...</svg>` block. Use a multiline regex anchored on `<svg` and `</svg>`. Most generated diagrams have only one SVG; if there are multiple, the first is the diagram (gallery files are an exception — see *Edge cases*).
|
|
29
|
+
3. Make it standalone:
|
|
30
|
+
- Ensure the opening tag has `xmlns="http://www.w3.org/2000/svg"`. Add it if missing.
|
|
31
|
+
- Ensure a `viewBox` is present. The skill's templates always include one; warn the user if absent rather than guessing.
|
|
32
|
+
- Inject Google Fonts `@import` so the SVG renders with correct typography in a browser:
|
|
33
|
+
```svg
|
|
34
|
+
<defs>
|
|
35
|
+
<style>@import url('https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Geist:wght@400;500;600&family=Geist+Mono:wght@400;500;600&display=swap');</style>
|
|
36
|
+
</defs>
|
|
37
|
+
```
|
|
38
|
+
If the SVG already contains a `<defs>` block, **merge** the `<style>` into it (don't add a second `<defs>`).
|
|
39
|
+
4. Prepend `<?xml version="1.0" encoding="UTF-8"?>\n` so the file is well-formed XML.
|
|
40
|
+
5. Write to `<basename>.svg` next to the source (e.g. `example-architecture.html` → `example-architecture.svg`). Honour an explicit output path if the user provides one.
|
|
41
|
+
|
|
42
|
+
### Caveat to surface to the user
|
|
43
|
+
|
|
44
|
+
Tools that don't fetch remote fonts at import time (offline Illustrator, some Figma import paths, older SVG viewers) will substitute typography. The SVG renders correctly in any modern browser. For pixel-perfect portability, recommend the PNG export.
|
|
45
|
+
|
|
46
|
+
## PNG export procedure
|
|
47
|
+
|
|
48
|
+
Render **the original HTML** (not the extracted SVG) and screenshot only the `<svg>` element's bounding box. This keeps font loading reliable (already wired in the source HTML) while satisfying the "diagram only" rule. The PNG always has a **transparent background** (`omit_background=True`) so it can be placed on any slide or doc colour without a white halo.
|
|
49
|
+
|
|
50
|
+
### Detection
|
|
51
|
+
|
|
52
|
+
Before running anything, verify Playwright is installed:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
python -c "import playwright" 2>NUL || python -c "import playwright"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
If the import fails, surface this exact instruction to the user and stop:
|
|
59
|
+
|
|
60
|
+
> Playwright isn't installed. To enable PNG export, run:
|
|
61
|
+
> ```
|
|
62
|
+
> pip install playwright
|
|
63
|
+
> playwright install chromium
|
|
64
|
+
> ```
|
|
65
|
+
> Then ask me to export again.
|
|
66
|
+
|
|
67
|
+
Don't auto-install. The user asked for one feature, not a system change.
|
|
68
|
+
|
|
69
|
+
### Rasterize
|
|
70
|
+
|
|
71
|
+
Write the snippet below to a temp file and run it with `python <tmp.py> <src.html> <out.png>`:
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
from playwright.sync_api import sync_playwright
|
|
75
|
+
import sys, pathlib
|
|
76
|
+
|
|
77
|
+
src, out = sys.argv[1], sys.argv[2]
|
|
78
|
+
scale = int(sys.argv[3]) if len(sys.argv) > 3 else 2
|
|
79
|
+
|
|
80
|
+
with sync_playwright() as p:
|
|
81
|
+
browser = p.chromium.launch()
|
|
82
|
+
page = browser.new_page(device_scale_factor=scale)
|
|
83
|
+
page.goto(f"file://{pathlib.Path(src).resolve()}")
|
|
84
|
+
page.wait_for_load_state("networkidle")
|
|
85
|
+
page.locator("svg").first.screenshot(path=out, omit_background=True)
|
|
86
|
+
browser.close()
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Default `device_scale_factor=2` for crisp output. Accept `1` for compact assets or `3` for print/retina hero use, passed as a third CLI arg.
|
|
90
|
+
|
|
91
|
+
### Output naming
|
|
92
|
+
|
|
93
|
+
`example-architecture.html` → `example-architecture.png`, written next to the source. Honour explicit user-provided paths.
|
|
94
|
+
|
|
95
|
+
## Edge cases
|
|
96
|
+
|
|
97
|
+
- **Source is `assets/index.html`** (the gallery, multiple SVGs in one file): refuse the export and ask the user which specific diagram file they meant. Don't guess.
|
|
98
|
+
- **No `<svg>` block found**: the source isn't a diagram file. Tell the user; don't write anything.
|
|
99
|
+
- **Surrounding HTML matters to the user**: they want cards/header in the image. Tell them this skill exports diagrams only, and recommend a browser-based full-page screenshot (or a separate PDF print).
|
|
100
|
+
- **Source is missing fonts at runtime**: Playwright will substitute, the screenshot will look off. Check that the source HTML has the `<link href="...fonts.googleapis.com...">` tag in `<head>`. If absent, the file isn't from a current template — fix the source rather than working around it in export.
|
|
101
|
+
|
|
102
|
+
## What this command never does
|
|
103
|
+
|
|
104
|
+
- Modifies the source HTML.
|
|
105
|
+
- Adds export buttons or `<script>` tags to generated diagrams (the "no JS in deliverables" rule in §11 still stands).
|
|
106
|
+
- Auto-emits `.svg` or `.png` alongside HTML generation. Manual on every call.
|
|
107
|
+
- Embeds an HTML wrapper (cards, headers) into the SVG via `foreignObject`. Too fragile across renderers.
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# Onboarding — generate your skin from a design source
|
|
2
|
+
|
|
3
|
+
**Goal:** point the skill at a design source — a website, an installed skill, or a local folder — and have it extract the palette + typography, then rewrite `style-guide.md` so every future diagram inherits that skin.
|
|
4
|
+
|
|
5
|
+
Takes about 60 seconds.
|
|
6
|
+
|
|
7
|
+
Three source methods are supported. Jump to the relevant section:
|
|
8
|
+
|
|
9
|
+
- [§ URL](#url) — fetch a live website
|
|
10
|
+
- [§ Skill](#skill) — read an installed Claude Code skill that carries design tokens
|
|
11
|
+
- [§ Folder](#folder) — read a local design-system directory (CSS, JSON, Markdown)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## The flow (all methods)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Source you provide (URL / skill name / folder path)
|
|
19
|
+
↓
|
|
20
|
+
[1] read / fetch the source
|
|
21
|
+
↓
|
|
22
|
+
[2] extract dominant colors + fonts
|
|
23
|
+
↓
|
|
24
|
+
[3] map to semantic roles (paper, ink, muted, accent, …)
|
|
25
|
+
↓
|
|
26
|
+
[4] propose a style-guide.md diff
|
|
27
|
+
↓
|
|
28
|
+
[5] write the diff (with your approval)
|
|
29
|
+
↓
|
|
30
|
+
future diagrams use your tokens
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## § URL
|
|
38
|
+
|
|
39
|
+
### Invocation
|
|
40
|
+
|
|
41
|
+
> *"Onboard Schematic to my site — `https://example.com`"*
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### Step 1 — fetch the page
|
|
46
|
+
|
|
47
|
+
Use `agent-browser` (preferred) or a plain `fetch`. If the site has multiple pages worth sampling (landing + blog + product), fetch 2–3 and merge the palette signals.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
agent-browser navigate https://example.com --screenshot out.png --html out.html
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Step 2 — extract colors and fonts
|
|
56
|
+
|
|
57
|
+
### Colors
|
|
58
|
+
|
|
59
|
+
Parse the rendered CSS and screenshot:
|
|
60
|
+
|
|
61
|
+
- **Background color** of `<body>` or the dominant large region → `paper`
|
|
62
|
+
- **Primary text color** (body text) → `ink`
|
|
63
|
+
- **Secondary text color** (captions, meta) → `muted`
|
|
64
|
+
- **Most-used brand color** (CTA button, link, heading accent) → `accent`
|
|
65
|
+
- **Container / card background** slightly darker than paper → `paper-2`
|
|
66
|
+
- **Border / hairline color** → `rule` (convert to rgba of ink at ~0.12 opacity)
|
|
67
|
+
|
|
68
|
+
Prefer CSS custom properties when the site exposes them (`:root { --accent: …; }`). Otherwise pull via rendered `getComputedStyle` samples or a color-histogram pass over the screenshot.
|
|
69
|
+
|
|
70
|
+
### Fonts
|
|
71
|
+
|
|
72
|
+
Read the rendered `font-family` stack of:
|
|
73
|
+
|
|
74
|
+
- `<h1>` → `title` family
|
|
75
|
+
- `<body>` → `node-name` family
|
|
76
|
+
- `<code>`, `<pre>`, or any mono-styled element → `sublabel` family
|
|
77
|
+
|
|
78
|
+
If the site has only one family, keep the schematic defaults for the missing roles (Instrument Serif for title, Geist Mono for mono). Don't force-pick a mono font that isn't on the site.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Step 3 — map to semantic roles
|
|
83
|
+
|
|
84
|
+
Propose a diff by filling this table:
|
|
85
|
+
|
|
86
|
+
| Role | Detected | Confidence |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| paper | `#f8f6f0` | high |
|
|
89
|
+
| ink | `#111111` | high |
|
|
90
|
+
| muted | `#6b6b68` | medium |
|
|
91
|
+
| accent | `#c73a2b` | high |
|
|
92
|
+
| … | … | … |
|
|
93
|
+
|
|
94
|
+
Flag low-confidence guesses so the user can correct before applying.
|
|
95
|
+
|
|
96
|
+
### Constraint checks
|
|
97
|
+
|
|
98
|
+
Before writing, validate:
|
|
99
|
+
|
|
100
|
+
- **AA contrast**: `ink` on `paper` ≥ 4.5:1. `muted` on `paper` ≥ 4.5:1 for body text.
|
|
101
|
+
- **Accent is the most saturated color**: not muted-ish, not near-grey.
|
|
102
|
+
- **paper ≠ pure white**: if the site uses `#ffffff`, fall back to `#fafaf7` to preserve Schematic's warm-neutral feel — or ask the user to confirm pure-white is intentional.
|
|
103
|
+
|
|
104
|
+
If any check fails, propose an adjusted value and explain why.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Step 4 — preview the diff
|
|
109
|
+
|
|
110
|
+
Show the user what will change in `style-guide.md`. Only the tokens table — everything else stays the same.
|
|
111
|
+
|
|
112
|
+
```diff
|
|
113
|
+
-| `paper` | `#f5f4ed` | `#1c1a17` |
|
|
114
|
+
-| `ink` | `#0b0d0b` | `#f1efe7` |
|
|
115
|
+
-| `accent` | `#f7591f` | `#ff6a30` |
|
|
116
|
+
+| `paper` | `#f8f6f0` | `#1a1815` |
|
|
117
|
+
+| `ink` | `#111111` | `#efeee7` |
|
|
118
|
+
+| `accent` | `#c73a2b` | `#e05440` |
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Also regenerate the dark variant via the inversion rule (`rgba(11,13,11, X)` → `rgba(ink-rgb, X)`).
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Step 5 — apply
|
|
126
|
+
|
|
127
|
+
Write the new tokens to `style-guide.md`. Suggest running the `/regenerate-examples` flow (if it exists) or rebuilding one example to verify the new skin reads cleanly.
|
|
128
|
+
|
|
129
|
+
After onboarding, the user should:
|
|
130
|
+
|
|
131
|
+
1. Open `assets/index.html` (gallery) and confirm the new palette feels coherent across all 26 types.
|
|
132
|
+
2. If any type looks off, they usually need to tune `muted` (often too dark or too light against the new `paper`).
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## When URL onboarding fails
|
|
137
|
+
|
|
138
|
+
- **Site uses webfonts you can't replicate** (custom-hosted, paid): keep the schematic defaults for typography and skin only the colors.
|
|
139
|
+
- **Brand has 6+ colors** and you can't identify a clear hierarchy: pick one as `accent`, demote the rest to `muted` variants or ignore them. The schematic grammar only uses 5–7 roles.
|
|
140
|
+
- **Site is dark-mode first**: flip the inversion — treat their dark paper as the default `paper`, and generate a light variant via inversion.
|
|
141
|
+
- **Homepage is all imagery, no text**: ask for a blog or docs URL instead — text-heavy pages expose the type hierarchy.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## § Skill
|
|
146
|
+
|
|
147
|
+
Extract tokens from an installed Claude Code skill that carries its own design system (e.g. a `brand-design` or `ui-kit` skill).
|
|
148
|
+
|
|
149
|
+
### Invocation
|
|
150
|
+
|
|
151
|
+
> *"Onboard Schematic from my `acme-design` skill"*
|
|
152
|
+
|
|
153
|
+
Or the gate offers this as option (b) and the user names the skill.
|
|
154
|
+
|
|
155
|
+
### Step 1 — locate the skill
|
|
156
|
+
|
|
157
|
+
Search for the skill in order:
|
|
158
|
+
|
|
159
|
+
1. `~/.claude/skills/<skill-name>/` (user install)
|
|
160
|
+
2. `.claude/skills/<skill-name>/` (project install)
|
|
161
|
+
3. Any path the user provides explicitly
|
|
162
|
+
|
|
163
|
+
If not found, ask the user to confirm the skill name or provide the path.
|
|
164
|
+
|
|
165
|
+
### Step 2 — read token sources
|
|
166
|
+
|
|
167
|
+
Glob the skill directory for any of these files and read them all:
|
|
168
|
+
|
|
169
|
+
| Priority | Pattern | What to look for |
|
|
170
|
+
|---|---|---|
|
|
171
|
+
| 1 | `*.css`, `colors*.css`, `tokens.css` | CSS custom properties in `:root { --color-*: …; }` |
|
|
172
|
+
| 2 | `tokens.json`, `design-tokens.json`, `*.tokens.json` | Style Dictionary / Figma token JSON |
|
|
173
|
+
| 3 | `SKILL.md`, `README.md` | Markdown tables listing colors, fonts, hex values |
|
|
174
|
+
| 4 | `style-guide.md`, `*design*.md` | Any narrative design documentation |
|
|
175
|
+
| 5 | `*.html` (preview/example files) | Inline `<style>` blocks — scan `:root` and `body` rules |
|
|
176
|
+
|
|
177
|
+
Read all matches and merge — CSS custom properties take priority over inferred values from HTML.
|
|
178
|
+
|
|
179
|
+
### Step 3 — extract colors and fonts
|
|
180
|
+
|
|
181
|
+
**From CSS custom properties:**
|
|
182
|
+
Map variable names to semantic roles using name-heuristics:
|
|
183
|
+
|
|
184
|
+
| If the variable name contains… | Map to role |
|
|
185
|
+
|---|---|
|
|
186
|
+
| `background`, `bg`, `paper`, `surface`, `canvas` | `paper` |
|
|
187
|
+
| `foreground`, `text`, `body`, `ink`, `on-surface` | `ink` |
|
|
188
|
+
| `muted`, `subtle`, `secondary`, `caption` | `muted` |
|
|
189
|
+
| `accent`, `brand`, `primary`, `cta`, `highlight` | `accent` |
|
|
190
|
+
| `border`, `rule`, `divider`, `outline` | `rule` |
|
|
191
|
+
| `mono`, `code`, `pre` | `sublabel` font |
|
|
192
|
+
|
|
193
|
+
**From JSON tokens:** follow the same heuristics on key names. If the JSON follows Style Dictionary format (`{ "color": { "brand": { "value": "#…" } } }`), flatten the path and apply heuristics to the leaf key.
|
|
194
|
+
|
|
195
|
+
**From Markdown tables:** look for rows with hex values (`#rrggbb`) adjacent to role-like words. A row like `| accent | #eb6c36 |` maps directly.
|
|
196
|
+
|
|
197
|
+
**Fonts:** look for `font-family` rules, `@import` or `@font-face` declarations, and Markdown mentions of font names alongside size/weight.
|
|
198
|
+
|
|
199
|
+
### Step 4 — map, validate, propose diff
|
|
200
|
+
|
|
201
|
+
Same as the URL method: fill the role table, run contrast checks, show the diff, ask for approval before writing.
|
|
202
|
+
|
|
203
|
+
### When skill extraction is ambiguous
|
|
204
|
+
|
|
205
|
+
- **Skill has no CSS or token files**: fall back to reading all `.md` files and look for hex values mentioned in prose. Surface what you found and ask the user to confirm mappings before applying.
|
|
206
|
+
- **Multiple accent candidates**: list them and ask the user to pick one. Don't guess.
|
|
207
|
+
- **Skill is dark-mode first**: ask whether to treat the dark values as the `paper`/`ink` defaults or to invert.
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## § Folder
|
|
212
|
+
|
|
213
|
+
Extract tokens from a local directory — a checked-out design system repo, a Figma export, or any folder the user points you at.
|
|
214
|
+
|
|
215
|
+
### Invocation
|
|
216
|
+
|
|
217
|
+
> *"Onboard Schematic from my design system at `~/projects/brand/design-tokens/`"*
|
|
218
|
+
|
|
219
|
+
Or the gate offers this as option (c) and the user provides the path.
|
|
220
|
+
|
|
221
|
+
### Step 1 — discover files
|
|
222
|
+
|
|
223
|
+
Glob the folder (recursively, up to 3 levels deep) for:
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
**/*.css
|
|
227
|
+
**/*.scss (read @forward / $variable declarations)
|
|
228
|
+
**/tokens.json
|
|
229
|
+
**/*.tokens.json
|
|
230
|
+
**/design-tokens.json
|
|
231
|
+
**/colors.json
|
|
232
|
+
**/*style-guide*.md
|
|
233
|
+
**/*design-system*.md
|
|
234
|
+
**/README.md
|
|
235
|
+
**/*.html (scan <style> blocks only)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
If the result set is large (>20 files), prefer files in the root and files whose names contain `color`, `token`, `brand`, `palette`, `style`, or `theme`.
|
|
239
|
+
|
|
240
|
+
### Step 2 — read and merge
|
|
241
|
+
|
|
242
|
+
Read every discovered file. Apply the same extraction logic as the Skill method (§ Skill → Step 3). CSS custom properties and JSON tokens take priority over inferred values from prose.
|
|
243
|
+
|
|
244
|
+
**SCSS variables:** treat `$variable-name: value;` the same as a CSS custom property — apply name heuristics to `$variable-name`.
|
|
245
|
+
|
|
246
|
+
**Figma token JSON** (Figma Tokens Plugin format):
|
|
247
|
+
|
|
248
|
+
```json
|
|
249
|
+
{ "colors": { "brand": { "primary": { "value": "#eb6c36", "type": "color" } } } }
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Walk the tree; the leaf `value` fields are the colors, the path segments supply the role heuristic.
|
|
253
|
+
|
|
254
|
+
### Step 3 — map, validate, propose diff
|
|
255
|
+
|
|
256
|
+
Same as the URL method: run contrast checks, show the full diff against current `style-guide.md`, and write only after the user approves.
|
|
257
|
+
|
|
258
|
+
### When folder extraction is ambiguous
|
|
259
|
+
|
|
260
|
+
- **No structured token files, only prose docs**: read every `.md` in the root and extract hex values found near role-like words. Show the user a table of what you inferred — don't silently apply uncertain mappings.
|
|
261
|
+
- **Multiple themes / color schemes found**: list them, ask the user which one to use as the diagram skin.
|
|
262
|
+
- **Folder has zero readable files**: tell the user and ask for a more specific path or switch to manual token entry.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Future: per-project skins
|
|
267
|
+
|
|
268
|
+
If the user wants multiple skins (one per project), duplicate `style-guide.md` as `style-guides/<project>.md` and add a header comment pointing the build to the active one. That's a v5.2 feature — for now, one skin per skill install.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Annotation Callout (italic-serif aside)
|
|
2
|
+
|
|
3
|
+
Use for editorial asides — the "italic pointer" that marks a detail without competing with the primary diagram grammar. Think marginalia: *"structure IS the index"*, *"no imports, no configuration"*.
|
|
4
|
+
|
|
5
|
+
## Grammar
|
|
6
|
+
|
|
7
|
+
```svg
|
|
8
|
+
<!-- 1. Italic Instrument Serif text -->
|
|
9
|
+
<text x="904" y="36" fill="#2d3142" font-size="14" font-style="italic"
|
|
10
|
+
font-family="'Instrument Serif', serif" text-anchor="end">no imports, no configuration</text>
|
|
11
|
+
<!-- 2. Dashed Bézier leader -->
|
|
12
|
+
<path d="M 820 44 Q 700 84 520 216" fill="none"
|
|
13
|
+
stroke="rgba(45,49,66,0.40)" stroke-width="1" stroke-dasharray="4,3"/>
|
|
14
|
+
<!-- 3. Landing dot -->
|
|
15
|
+
<circle cx="520" cy="216" r="2" fill="#2d3142"/>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Rules
|
|
19
|
+
- Italic + serif together signal "editorial voice" against the diagram's sans/mono body. Don't substitute italic sans or italic mono — the combination is load-bearing.
|
|
20
|
+
- Dashed path (`stroke-dasharray="4,3"`) distinguishes the callout leader from primary arrows (which are solid).
|
|
21
|
+
- Place callouts in margins (top-right, bottom-left). Never inside the active diagram area.
|
|
22
|
+
- Max 2 callouts per diagram. More becomes commentary, not signal.
|
|
23
|
+
|
|
24
|
+
## Colors
|
|
25
|
+
|
|
26
|
+
| Intent | Text | Leader |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| Neutral aside | ink `#2d3142` | `rgba(45,49,66,0.40)` |
|
|
29
|
+
| Focal / accent | coral `#eb6c36` | `rgba(235,108,54,0.50)` |
|
|
30
|
+
| Tertiary (muted) | muted `#4f5d75` | `rgba(45,49,66,0.30)` |
|
|
31
|
+
|
|
32
|
+
## Anti-patterns
|
|
33
|
+
- Solid arrow leader (reads as a flow arrow).
|
|
34
|
+
- Italic sans or italic mono — the serif is load-bearing.
|
|
35
|
+
- Callouts crossing primary arrows / lifelines — offset to a clear margin.
|
|
36
|
+
- Using a callout to label something the diagram should label directly — put the label on the element.
|