dsh-knowhub 0.9.1 → 0.10.0

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.
Files changed (192) hide show
  1. package/README.md +10 -1
  2. package/cordis.patch.yml +10 -0
  3. package/lib/host/pipeline/initialize.js +144 -27
  4. package/package.json +3 -2
  5. package/skills/archify/LICENSE +202 -0
  6. package/skills/archify/LICENSE-MIT +22 -0
  7. package/skills/archify/NOTICE +26 -0
  8. package/skills/archify/SKILL.md +137 -0
  9. package/skills/archify/THIRD_PARTY_NOTICES.md +78 -0
  10. package/skills/archify/assets/JetBrainsMono-OFL.txt +93 -0
  11. package/skills/archify/assets/template.html +14768 -0
  12. package/skills/archify/bin/archify.mjs +7289 -0
  13. package/skills/archify/bin/delivery-update.mjs +92 -0
  14. package/skills/archify/bin/finalize.mjs +1055 -0
  15. package/skills/archify/bin/open-artifact.mjs +146 -0
  16. package/skills/archify/bin/preview.mjs +970 -0
  17. package/skills/archify/bin/recover-output.mjs +41 -0
  18. package/skills/archify/bin/visual-check.mjs +2780 -0
  19. package/skills/archify/brand-marks/README.md +31 -0
  20. package/skills/archify/brand-marks/catalog.json +131 -0
  21. package/skills/archify/delta/architecture-delta.mjs +1318 -0
  22. package/skills/archify/examples/agent-run.lifecycle.json +55 -0
  23. package/skills/archify/examples/agent-tool-call.workflow.json +74 -0
  24. package/skills/archify/examples/archify-dev-activity.timeline.json +176 -0
  25. package/skills/archify/examples/archify-repository.tree.json +197 -0
  26. package/skills/archify/examples/async-job-roundtrip.sequence.json +56 -0
  27. package/skills/archify/examples/brand-aware-delivery.architecture.json +34 -0
  28. package/skills/archify/examples/cache-miss-request.sequence.json +77 -0
  29. package/skills/archify/examples/checkout-platform.base.architecture.json +32 -0
  30. package/skills/archify/examples/checkout-platform.head.architecture.json +32 -0
  31. package/skills/archify/examples/checkout-request.waterfall.json +20 -0
  32. package/skills/archify/examples/delivery.explainer.json +155 -0
  33. package/skills/archify/examples/deployment-release.lifecycle.json +72 -0
  34. package/skills/archify/examples/event-stream.dataflow.json +52 -0
  35. package/skills/archify/examples/example-rebuild.waterfall.json +212 -0
  36. package/skills/archify/examples/holiday-planning.workflow.json +143 -0
  37. package/skills/archify/examples/incident-response.workflow.json +59 -0
  38. package/skills/archify/examples/locales/de.json +463 -0
  39. package/skills/archify/examples/locales/fr.json +463 -0
  40. package/skills/archify/examples/locales/fr.partial.json +22 -0
  41. package/skills/archify/examples/locales/it.json +463 -0
  42. package/skills/archify/examples/locales/ja.json +463 -0
  43. package/skills/archify/examples/locales/pt.json +463 -0
  44. package/skills/archify/examples/locales/ru.json +463 -0
  45. package/skills/archify/examples/orders.erd.json +337 -0
  46. package/skills/archify/examples/payment-incident.timeline.json +24 -0
  47. package/skills/archify/examples/payment-platform.tree.json +22 -0
  48. package/skills/archify/examples/payment-processors.class.json +177 -0
  49. package/skills/archify/examples/payments.class.json +85 -0
  50. package/skills/archify/examples/product-analytics.dataflow.json +71 -0
  51. package/skills/archify/examples/production-deployment.architecture.json +51 -0
  52. package/skills/archify/examples/release-delivery.workflow.json +57 -0
  53. package/skills/archify/examples/subscription-billing.erd.json +548 -0
  54. package/skills/archify/examples/web-app.architecture.json +41 -0
  55. package/skills/archify/explainer/browser-check.mjs +208 -0
  56. package/skills/archify/explainer/charts.mjs +70 -0
  57. package/skills/archify/explainer/check.mjs +167 -0
  58. package/skills/archify/explainer/diagrams.mjs +517 -0
  59. package/skills/archify/explainer/diff.mjs +124 -0
  60. package/skills/archify/explainer/inline.mjs +155 -0
  61. package/skills/archify/explainer/layout.mjs +35 -0
  62. package/skills/archify/explainer/page-bundle.mjs +16 -0
  63. package/skills/archify/explainer/parse.mjs +300 -0
  64. package/skills/archify/explainer/patch.mjs +117 -0
  65. package/skills/archify/explainer/prepare.mjs +131 -0
  66. package/skills/archify/explainer/reader.css +472 -0
  67. package/skills/archify/explainer/reader.js +666 -0
  68. package/skills/archify/explainer/render.mjs +224 -0
  69. package/skills/archify/explainer/revision.mjs +20 -0
  70. package/skills/archify/explainer/sources.mjs +318 -0
  71. package/skills/archify/explainer/validate.mjs +138 -0
  72. package/skills/archify/explainer/vendor/pele/LICENSE +40 -0
  73. package/skills/archify/explainer/vendor/pele/README.md +5 -0
  74. package/skills/archify/explainer/vendor/pele/chunks/3DKXF73K.js +4 -0
  75. package/skills/archify/explainer/vendor/pele/chunks/42UTT654.js +3 -0
  76. package/skills/archify/explainer/vendor/pele/chunks/DKTLEL5E.js +1 -0
  77. package/skills/archify/explainer/vendor/pele/chunks/EEIX5ZYH.js +2 -0
  78. package/skills/archify/explainer/vendor/pele/chunks/EJ5KOXYD.js +25 -0
  79. package/skills/archify/explainer/vendor/pele/chunks/GUJTEFZK.js +1 -0
  80. package/skills/archify/explainer/vendor/pele/chunks/IZOKQ2GT.js +4 -0
  81. package/skills/archify/explainer/vendor/pele/chunks/L4LY553T.js +3 -0
  82. package/skills/archify/explainer/vendor/pele/chunks/MSKIJHB2.js +2 -0
  83. package/skills/archify/explainer/vendor/pele/chunks/RVARI57O.js +1 -0
  84. package/skills/archify/explainer/vendor/pele/chunks/UKSIWDDN.js +2 -0
  85. package/skills/archify/explainer/vendor/pele/chunks/UPTXNAXN.js +2 -0
  86. package/skills/archify/explainer/vendor/pele/chunks/XTDUIGUI.js +9 -0
  87. package/skills/archify/explainer/vendor/pele/chunks/YAYTP6L5.js +9 -0
  88. package/skills/archify/explainer/vendor/pele/core.js +1 -0
  89. package/skills/archify/explainer/vendor/pele/diagrams/pie.js +1 -0
  90. package/skills/archify/explainer/vendor/pele/diagrams/quadrantChart.js +1 -0
  91. package/skills/archify/explainer/vendor/pele/diagrams/radar.js +1 -0
  92. package/skills/archify/explainer/vendor/pele/diagrams/sankey.js +1 -0
  93. package/skills/archify/explainer/vendor/pele/diagrams/venn.js +1 -0
  94. package/skills/archify/explainer/vendor/pele/diagrams/xychart.js +1 -0
  95. package/skills/archify/explainer/writing.mjs +139 -0
  96. package/skills/archify/locales/README.md +40 -0
  97. package/skills/archify/locales/ar.json +488 -0
  98. package/skills/archify/locales/en.json +488 -0
  99. package/skills/archify/locales/es.json +488 -0
  100. package/skills/archify/locales/ko.json +488 -0
  101. package/skills/archify/locales/manifest.json +10 -0
  102. package/skills/archify/locales/zh-CN.json +488 -0
  103. package/skills/archify/locales/zh-TW.json +488 -0
  104. package/skills/archify/migrations/workflow-v2.mjs +280 -0
  105. package/skills/archify/package.json +17 -0
  106. package/skills/archify/recipes/scenarios.mjs +455 -0
  107. package/skills/archify/references/architecture-layout-repair.md +18 -0
  108. package/skills/archify/references/authoring-contract.md +645 -0
  109. package/skills/archify/references/authoring-defaults.md +57 -0
  110. package/skills/archify/references/brand-marks.md +119 -0
  111. package/skills/archify/references/delivery-contract.md +665 -0
  112. package/skills/archify/references/explainer-authoring.md +274 -0
  113. package/skills/archify/references/repository-authoring.md +126 -0
  114. package/skills/archify/references/update-awareness.md +13 -0
  115. package/skills/archify/references/viewer-runtime.md +52 -0
  116. package/skills/archify/renderers/architecture/grid.mjs +62 -0
  117. package/skills/archify/renderers/architecture/labels.mjs +2 -0
  118. package/skills/archify/renderers/architecture/render-architecture.mjs +1204 -0
  119. package/skills/archify/renderers/architecture/routing.mjs +1469 -0
  120. package/skills/archify/renderers/class/README.md +130 -0
  121. package/skills/archify/renderers/class/render-class.mjs +1095 -0
  122. package/skills/archify/renderers/dataflow/README.md +176 -0
  123. package/skills/archify/renderers/dataflow/dataflow-compiler.mjs +1605 -0
  124. package/skills/archify/renderers/dataflow/joint-label-routing.mjs +165 -0
  125. package/skills/archify/renderers/dataflow/label-capacity.mjs +81 -0
  126. package/skills/archify/renderers/dataflow/render-dataflow.mjs +23 -0
  127. package/skills/archify/renderers/erd/README.md +246 -0
  128. package/skills/archify/renderers/erd/grid.mjs +150 -0
  129. package/skills/archify/renderers/erd/render-erd.mjs +1588 -0
  130. package/skills/archify/renderers/explainer/render-explainer.mjs +42 -0
  131. package/skills/archify/renderers/lifecycle/README.md +104 -0
  132. package/skills/archify/renderers/lifecycle/render-lifecycle.mjs +1134 -0
  133. package/skills/archify/renderers/sequence/README.md +146 -0
  134. package/skills/archify/renderers/sequence/render-sequence.mjs +1105 -0
  135. package/skills/archify/renderers/shared/atomic-output.mjs +1982 -0
  136. package/skills/archify/renderers/shared/automatic-labels.mjs +290 -0
  137. package/skills/archify/renderers/shared/brand-marks.mjs +706 -0
  138. package/skills/archify/renderers/shared/cli.mjs +430 -0
  139. package/skills/archify/renderers/shared/desktop-readability.mjs +132 -0
  140. package/skills/archify/renderers/shared/diagnostics.mjs +0 -0
  141. package/skills/archify/renderers/shared/engineering-profiles.mjs +157 -0
  142. package/skills/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
  143. package/skills/archify/renderers/shared/generated-validators.mjs +279 -0
  144. package/skills/archify/renderers/shared/geometry.mjs +2073 -0
  145. package/skills/archify/renderers/shared/i18n.mjs +328 -0
  146. package/skills/archify/renderers/shared/layout-report.mjs +57 -0
  147. package/skills/archify/renderers/shared/legend.mjs +227 -0
  148. package/skills/archify/renderers/shared/node-card-style.mjs +32 -0
  149. package/skills/archify/renderers/shared/output-path.mjs +440 -0
  150. package/skills/archify/renderers/shared/owned-temp-directory.mjs +82 -0
  151. package/skills/archify/renderers/shared/path-semantics.mjs +1017 -0
  152. package/skills/archify/renderers/shared/portable-path.mjs +408 -0
  153. package/skills/archify/renderers/shared/repository-evidence.mjs +394 -0
  154. package/skills/archify/renderers/shared/repository-location.mjs +71 -0
  155. package/skills/archify/renderers/shared/route-quality.mjs +670 -0
  156. package/skills/archify/renderers/shared/sidecar-path.mjs +38 -0
  157. package/skills/archify/renderers/shared/software-notices.mjs +6 -0
  158. package/skills/archify/renderers/shared/spatial-grid.mjs +66 -0
  159. package/skills/archify/renderers/shared/svg-path-analysis.mjs +135 -0
  160. package/skills/archify/renderers/shared/text-fit.mjs +105 -0
  161. package/skills/archify/renderers/shared/utils.mjs +260 -0
  162. package/skills/archify/renderers/shared/validator.mjs +83 -0
  163. package/skills/archify/renderers/timeline/README.md +76 -0
  164. package/skills/archify/renderers/timeline/render-timeline.mjs +576 -0
  165. package/skills/archify/renderers/tree/README.md +96 -0
  166. package/skills/archify/renderers/tree/render-tree.mjs +573 -0
  167. package/skills/archify/renderers/waterfall/README.md +73 -0
  168. package/skills/archify/renderers/waterfall/render-waterfall.mjs +413 -0
  169. package/skills/archify/renderers/workflow/README.md +337 -0
  170. package/skills/archify/renderers/workflow/render-workflow.mjs +47 -0
  171. package/skills/archify/renderers/workflow/workflow-compiler.mjs +5920 -0
  172. package/skills/archify/renderers/workflow/workflow-migration-geometry.mjs +161 -0
  173. package/skills/archify/renderers/workflow/workflow-placement-repair.mjs +94 -0
  174. package/skills/archify/schemas/README.md +258 -0
  175. package/skills/archify/schemas/architecture.schema.json +152 -0
  176. package/skills/archify/schemas/class.schema.json +345 -0
  177. package/skills/archify/schemas/common.schema.json +181 -0
  178. package/skills/archify/schemas/dataflow.schema.json +254 -0
  179. package/skills/archify/schemas/erd.schema.json +381 -0
  180. package/skills/archify/schemas/explainer.schema.json +927 -0
  181. package/skills/archify/schemas/lifecycle.schema.json +179 -0
  182. package/skills/archify/schemas/sequence.schema.json +234 -0
  183. package/skills/archify/schemas/timeline.schema.json +160 -0
  184. package/skills/archify/schemas/tree.schema.json +141 -0
  185. package/skills/archify/schemas/waterfall.schema.json +147 -0
  186. package/skills/archify/schemas/workflow.schema.json +439 -0
  187. package/skills/archify/scripts/check-render-output.mjs +1469 -0
  188. package/skills/archify/scripts/check-update.mjs +1717 -0
  189. package/skills/archify/scripts/delivery-update-child.mjs +26 -0
  190. package/skills/archify/scripts/render-examples.mjs +36 -0
  191. package/skills/archify/scripts/update-contract.mjs +187 -0
  192. package/skills/archify/skill-release.json +10 -0
@@ -0,0 +1,137 @@
1
+ ---
2
+ name: archify
3
+ description: "Create validated architecture, workflow, sequence, data-flow, lifecycle/state, ERD, class, tree, timeline, and waterfall diagrams as explorable standalone HTML with dark/light themes, motion and image/SVG/WebM export. Accept requirements or Mermaid; inspect repository evidence for code-backed diagrams. Use when visualizing systems, API calls, pipelines, schemas, histories, timings, or everyday steps, parts, relationships and states. Also turn an answer into a one-page explainer, with the conclusion first, structured panels, native diagrams and charts, when the user asks for a page, an explainer or an answer to share (做成一页, 用页面讲), or proactively when the user's rules opt in with an [archify explainer: ...] line. Not for dashboards."
4
+ license: Apache-2.0
5
+ metadata:
6
+ version: "3.2"
7
+ author: tt-a1i
8
+ ---
9
+
10
+ # Archify
11
+
12
+ Create checked standalone HTML as a native diagram or a one-page explainer that answers a question.
13
+
14
+ Run commands from your working directory. Unless the user names another location, give each new artifact request its own folder `.archify/<type>-<slug>-<YYYYMMDD-HHMMSS>/` there (local time, chosen once): keep the candidate and `<slug>.html` in it and reuse it for repairs. Native diagrams use `candidate.json` with `meta.output` relative to the working directory; explainers may use `candidate.archify.md` and a portable output filename. A later request gets a new folder. Replace `bin/archify.mjs` in every command with the installed package's absolute path, or its path relative to your working directory; CLI input and output paths resolve from that directory.
15
+
16
+ For a native diagram of a real codebase, read [Repository authoring](references/repository-authoring.md) while tracing the requested behavior. A system description uses the native steps below; a frozen candidate uses the handoff path.
17
+
18
+ ## Choose the artifact
19
+
20
+ - When the user asks to draw or visualize a system, flow, schema or history, use a native diagram and the Type router.
21
+ - Use `explainer` when the user asks for the answer as a page: a page, one page, an explainer, something to share (“做成一页”, “用页面讲”, “answer with a page”). Without such a request, answer in text or draw the requested diagram. A page made on request ends its reply with the one-line mode offer under Output.
22
+ - A rules line in context changes this. `[archify explainer: proactive]`: also make a page, unasked, for an explanation, comparison, trade-off, decision, diagnosis, review or plan that needs a table, steps or several sections. `[archify explainer: always-on]`: every reply that reaches a conclusion also gets a compact page of at most four panels, delivered without opening it, its link closing the reply. `[archify explainer: on-demand]`: only when asked, and never offer a mode.
23
+ - In every mode a page needs a conclusion with some structure behind it: chat, one-line answers, raw command output and text-only requests get none.
24
+ - For `explainer`, read [Explainer authoring](references/explainer-authoring.md) for its conclusion, reasons, scope, board layout and optional native diagrams. Write the complete draft, then run `finalize explainer` for validation, atomic delivery and artifact checks. Use panel patch for local content revisions.
25
+
26
+ ## Existing candidate handoff
27
+
28
+ When the user supplies a frozen candidate, run `finalize` first as one CLI invocation. Its passing receipt completes the automated gates; follow any visual review recommendation under Delivery before claiming visual quality. For repair, follow step 5.
29
+
30
+ `finalize` includes a bounded update check in its delivery receipt; see Update awareness.
31
+
32
+ ## Native diagram authoring
33
+
34
+ Use this path for ordinary generation. Read branch references only when their stated trigger applies.
35
+
36
+ 1. Choose `architecture`, `workflow`, `sequence`, `dataflow`, `lifecycle`, `erd`, `class`, `tree`, `timeline`, or `waterfall` from the question.
37
+ 2. Use the exact schema and example paths in the Type router without listing their directories. Read [Authoring defaults](references/authoring-defaults.md) and the mode's example in a bounded batch separate from project documents and complete schemas so neither is truncated; recover any missing section before writing. For Architecture, use the matching showcase example. For every mode except Architecture, also read the mode and common schemas. Read the relevant schema definition before choosing any new field, enum, or constrained text, especially boundary kinds. Examples teach shape, not facts. Use fresh IDs, wording, and layout. Go directly to the candidate without preliminary help, doctor, starter validation, temporary diagrams, or output-path listing. Query brands only for an explicitly requested mark; read [Brand marks](references/brand-marks.md) for an unknown mark with a user-provided URL.
38
+ 3. Once the requested scope and, for a real codebase, [source evidence](references/repository-authoring.md) are covered, write the complete candidate directly without planning coordinates in prose. Choose Architecture abstraction and connected placement using Authoring defaults before coordinates: show the main user journey and necessary branches, preserve control roles and behavior-changing conditions, and leave enough room for actual relationship labels. No node, relationship, source, view, card, or boundary count is a target or ceiling. Use automatic routes first; add explicit routing only for necessary branch, return, supplied geometry, or measured repair. Set `meta.quality_profile` to `"showcase"` unless the user requests dense `standard`. For ERD, use a table-first layout: show every physical column in `entities[].attributes`, keep its SQL type and source comment, state every key role a column carries (`key` takes a role or a list, so a junction column is `["pk", "fk"]`, and every `fk` column also needs `references` like `"orders.id"`), and never move columns into cards as a substitute for the table. Classify tables into functional domains before placement, give each domain a concise `tag`, and place its members in one solid rectangle of grid cells — a single row, a single column, or a filled rectangular block, not an L or diagonal. A tagged table always needs `row`/`col`, because absolute coordinates have no grid cells and a domain whose tables do not fill one rectangle cannot be drawn as a band: the renderer reports `erd/domain-not-drawn` instead of publishing a diagram that cannot name the domain. A multi-domain schema reads best as one domain per column — each `tag` a vertical run — because the reader scales a wide canvas up to the reader width and shrinks a tall one until the page fits, so the wide arrangement is the one that stays complete and legible inside a laptop viewport. A schema-first ERD over roughly 8 tables or 50 fields is itself a dense map: author its first complete-field pass at `standard` and upgrade only once the layout still reads.
39
+ 4. Once the complete first candidate is written, run `finalize` directly. Its first gate is showcase validation; successful first drafts need no separate pre-validation. Keep the candidate unchanged while the command runs:
40
+
41
+ ```bash
42
+ node bin/archify.mjs finalize <type> <candidate.json> <output.html> --quality showcase --json
43
+ ```
44
+
45
+ For a repository-backed candidate, include evidence on the first draft and use the complete first command: `node bin/archify.mjs finalize <type> <candidate.json> <output.html> --repo-root <repo-root> --quality showcase --json`. Pass the `--quality` that matches `meta.quality_profile`, such as `standard` for a dense first ERD pass.
46
+
47
+ A passing receipt proves the included `validate`, `deliver`, strict `check`, and real-browser `browser-check` gates passed. Use its compact summary; run standalone commands only for a separate request or focused failure diagnosis.
48
+
49
+ 5. A non-zero exit is never success. Read compact stdout or `evidence.summaryReceipt`, then [repair the failed gate](references/delivery-contract.md#failed-finalize-and-candidate-repair), including its repair limit. Preserve requested meaning and source evidence. For several tangled Architecture routes, read [Architecture layout repair](references/architecture-layout-repair.md); for measured field or geometry failures, read [Authoring contract](references/authoring-contract.md). Edit the connected neighborhood and rerun the complete `finalize` command from step 4. Once a run has reached `browser-check`, the output path owns that evidence: give every later run its own `--out-dir <folder>/review-<n>`.
50
+
51
+ ## Update awareness
52
+
53
+ `finalize` and standalone `deliver` include `update` in their receipts. Do not run a separate check for the same delivery. If `update.noticeRequired` is true, read `references/update-awareness.md` and keep one compact update notice in your final response to the user, even after a quality gate fails. For a task with several diagrams, mention the update once in the final response. Snooze or ignore a reminder only when the user explicitly asks; never install or update on your own initiative.
54
+
55
+ Before the first candidate, use the authoring references and relevant repository source, not Archify implementation or tests. Inspect Archify implementation if diagnostics remain unactionable after focused repairs.
56
+
57
+
58
+ ## Type router
59
+
60
+ | Type | Use for | Schema | Example |
61
+ |---|---|---|---|
62
+ | `architecture` | Components, services, cloud/security boundaries, infrastructure; what something everyday is made of | `schemas/architecture.schema.json` | System descriptions, services, libraries, and CLI repos: `examples/web-app.architecture.json`; deployment repos: `examples/production-deployment.architecture.json` |
63
+ | `workflow` | Processes, approval gates, tool calls, runbooks, CI/CD; plans and step-by-step life processes | `schemas/workflow.schema.json` | `examples/agent-tool-call.workflow.json` |
64
+ | `sequence` | API call chains, request lifecycles, async traces, returns; back-and-forth between people | `schemas/sequence.schema.json` | `examples/cache-miss-request.sequence.json` |
65
+ | `dataflow` | Pipelines, ETL/ELT, lineage, governance, consumers; where money or documents go | `schemas/dataflow.schema.json` | `examples/product-analytics.dataflow.json` |
66
+ | `lifecycle` | State/status transitions, retries, waiting and terminal states; where an application or order stands | `schemas/lifecycle.schema.json` | `examples/deployment-release.lifecycle.json` |
67
+ | `erd` | Tables/entities, attributes, primary/foreign/unique keys, cardinality between them | `schemas/erd.schema.json` | `examples/orders.erd.json` |
68
+ | `tree` | Single-parent containment: repository/module trees, capability or feature breakdowns, org-style decomposition | `schemas/tree.schema.json` | `examples/payment-platform.tree.json` |
69
+ | `class` | Classes, interfaces, selected members, and dependency/association/inheritance/realization/composition between types | `schemas/class.schema.json` | `examples/payments.class.json` |
70
+ | `timeline` | When things happened: incident reviews, release histories, timestamped events on a proportional clock with source lanes | `schemas/timeline.schema.json` | `examples/payment-incident.timeline.json` |
71
+ | `waterfall` | Where the time went: span durations, overlap, and nesting of one request or agent run on a common time axis | `schemas/waterfall.schema.json` | `examples/checkout-request.waterfall.json` |
72
+
73
+ When choosing among native diagram types is ambiguous, run `node bin/archify.mjs guide "<scenario>" --json`. Scenario proof examples are structural references, not facts to copy.
74
+
75
+ For an everyday subject, keep the same diagram modes and semantic types, then name them for the reader: use everyday `icon` values and `meta.legend` labels as in [Node icons](references/authoring-contract.md#node-icons). Ask for missing personal facts instead of inventing dates, amounts, or rules.
76
+
77
+ ## Mermaid input
78
+
79
+ Read Mermaid for topology and meaning, then author fresh Archify JSON; do not mechanically render Mermaid styling.
80
+
81
+ - `flowchart` / `graph` → `workflow`, or `architecture` for a component map.
82
+ - `sequenceDiagram` → `sequence`; participants become semantic participants and arrows become messages.
83
+ - `stateDiagram` → `lifecycle`; states and transitions retain meaning, not Mermaid style.
84
+ - `erDiagram` → `erd`; entity and relationship names, keys, and cardinality retain meaning, not Mermaid style.
85
+ - `classDiagram` → `class`; type kinds, selected members, and relationship kinds retain meaning, not Mermaid style.
86
+
87
+ ## Delivery
88
+
89
+ Use the `finalize` command above for the first candidate and after a repair.
90
+
91
+ `finalize` stops at the first non-passing gate. Its compact stdout and `<output-stem>.finalize-summary.json` are ordinary evidence. A passing run creates no screenshots and reports `visualReview: "not-requested"`.
92
+
93
+ When a passing Architecture receipt reports `visualReviewRecommendation.signals.resolvedCrossovers`, copy the candidate aside and apply the hints in one edit that changes only node positions and sizes: every node, relationship (including its `from` and `to`), label, and source stays as it was. Rerun the complete `finalize` once with `--out-dir <folder>/review-2`, because the previous HTML already owns its browser evidence. `--out-dir` relocates the new browser-check and default finalize receipts, not the HTML or its delivery receipt. Successful delivery rewrites that pair at the requested output path; earlier review evidence remains bound to its original artifact bytes. See [review evidence paths](references/delivery-contract.md#a-new-candidate-at-an-existing-output-path). If that run fails, reports more crossings, or reports the same crossings with more `signals.routesOverSuggestedBends`, restore the copy and finalize it with `--out-dir <folder>/review-3`. Do not start a second placement round. Hints about extra bends alone are optional.
94
+
95
+ When `layoutReviewRecommendation.action` is `inspect-sequence-width`, follow [Sequence width review](references/delivery-contract.md#sequence-width-review) before handing off a newly authored Sequence.
96
+
97
+ Perceptual review is optional for ordinary generation, including a newly positioned Architecture. Use [Optional capture evidence](references/delivery-contract.md#optional-capture-evidence), with `--out-dir <folder>/visual-check`, when the user requests visual review, during development audits, or for a concrete route/browser concern. `visualReviewRecommendation` is advisory. Inspect captures before claiming visual quality; qualify any check claim as automated when perceptual review has not occurred.
98
+
99
+ Read [Delivery contract](references/delivery-contract.md) for failed gates, standalone commands, provenance/recovery, repeated delivery, exports, or opening. Native diagram recovery follows `deliver` → strict provenance `check` → `browser-check`; captures require strict provenance. Explainer delivery uses validate, deliver and check as described in its authoring guide.
100
+
101
+ For workflow viewport overflow, read [Workflow viewport repair](references/authoring-contract.md#workflow-viewport-repair) before the next layout edit.
102
+
103
+ When reporting verification details, distinguish artifact checks, browser evidence, captures, and actual perceptual review. For an explicitly requested immediate preview or active desktop loop, see [Optional opening](references/delivery-contract.md#optional-opening).
104
+
105
+ ## Optional viewer capabilities
106
+
107
+ Live motion is enabled by default for every rendered diagram; omit `meta.animation`. The Viewer’s Live/Still button controls playback.
108
+
109
+ Read `references/viewer-runtime.md` only when the user explicitly asks for Share Cards, Route/Reach cards, motion, deep links, presentation, search/focus, or another Viewer Runtime feature.
110
+
111
+ ## Setup and fallback
112
+
113
+ No install is required inside the skill package. For setup diagnosis, verify with:
114
+
115
+ ```bash
116
+ node bin/archify.mjs doctor
117
+ node bin/archify.mjs demo <output-directory>
118
+ ```
119
+
120
+ For native diagrams, when shell access is unavailable, hand-place architecture SVG into `assets/template.html`, use CSS semantic classes rather than inline colors, and follow the visual review contract in `references/delivery-contract.md`. Explainers require their renderer and real delivery gates; if those are unavailable, report the limitation and give a text answer when useful, without claiming HTML delivery.
121
+
122
+ ## Output
123
+
124
+ Reply in the user's language, as briefly as the result allows; the diagram carries the content, so a single diagram usually needs one line.
125
+
126
+ - Lead with a clickable Markdown link to the HTML: a descriptive title, not the file name, and its absolute path, wrapped in `<...>` when it contains spaces.
127
+ - When the user wants to understand a system or codebase rather than draw a described subject, add one or two sentences with the key takeaway. Skip sentences that only restate what the diagram obviously shows.
128
+ - State anything that changes how the diagram should be read: the abstraction level or deliberately omitted parts when a reader might expect them, illustrative rather than measured values, missing source evidence, or requested content dropped or merged during repair.
129
+ - For several diagrams, report completion once with a link to an existing overview or compact per-diagram links, not a directory path.
130
+
131
+ Do not recap commands, repair rounds, hashes, quality profiles, or check lists; they stay in the receipts. If asked whether the diagram was verified, answer in one line, such as “Automated checks passed; not visually reviewed.” Give receipt links and details only for reproducibility or troubleshooting. Disclose requested visual review that could not run, and claim visual inspection only when performed. Keep the required update notice under Update awareness.
132
+
133
+ Example: `Created [Checkout request timing](/abs/path/checkout-timing.html). Durations are illustrative, not measured.`
134
+
135
+ For an explainer, reply in two or three lines: the conclusion and the page link. Mention gates only when one failed or writing warnings remain; do not paste the draft.
136
+
137
+ After an explainer made on request, when no `[archify explainer: ...]` line is in context, end the reply with one optional line offering the proactive mode, once per conversation, for example: “需要的话,以后遇到解释、对比、排查这类问题,我可以主动做成这样的页面,要开启吗?” If the user accepts, add `[archify explainer: proactive] Make an Archify explainer page, unasked, for explanations, comparisons, decisions, diagnoses, reviews and plans that need a table, steps or several sections.` to the global rules file of the current agent (such as `~/.claude/CLAUDE.md`, `~/.codex/AGENTS.md` or `~/.config/devin/AGENTS.md`) and name the file; deleting the line turns it off. If the user declines, offer to add `[archify explainer: on-demand]` so the question does not return.
@@ -0,0 +1,78 @@
1
+ # Third-party notices
2
+
3
+ Archify includes optional vector data for third-party brand marks. These marks
4
+ are provided only to identify technologies and services in user-authored
5
+ diagrams. Their inclusion does not imply sponsorship, endorsement, partnership,
6
+ or affiliation with Archify.
7
+
8
+ Archify's license and historical MIT grants are described in LICENSE, NOTICE,
9
+ and LICENSE-MIT. The software license does not
10
+ replace the copyright licenses, trademark policies, or brand guidelines that
11
+ apply to third-party marks. Users are responsible for confirming that their
12
+ particular use is permitted.
13
+
14
+ ## Simple Icons
15
+
16
+ Most of the built-in vector paths and their metadata were generated from
17
+ [Simple Icons 16.28.0](https://github.com/simple-icons/simple-icons/tree/16.28.0).
18
+ Simple Icons makes its collection work available under
19
+ [CC0 1.0 Universal](https://github.com/simple-icons/simple-icons/blob/16.28.0/LICENSE.md).
20
+
21
+ As Simple Icons explains in its
22
+ [disclaimer](https://github.com/simple-icons/simple-icons/blob/16.28.0/DISCLAIMER.md),
23
+ CC0 for the collection does not mean that every underlying icon is CC0. License
24
+ and brand-guideline metadata may be incomplete or change over time. The absence
25
+ of an individual license entry is not a grant of permission.
26
+
27
+ Archify embeds the selected icons as vector-path data and may render them in a
28
+ user-selected color. The following individual licenses were recorded in the
29
+ pinned Simple Icons 16.28.0 metadata:
30
+
31
+ | Mark | Recorded source | Recorded license | Archify treatment |
32
+ |---|---|---|---|
33
+ | Angular | [Angular press kit](https://angular.dev/press-kit) | [`CC-BY-4.0`](https://creativecommons.org/licenses/by/4.0/) | Embedded as vector-path data; color may be changed by the authored diagram. |
34
+ | Apache Airflow | [Apache logos](https://apache.org/logos) | [`Apache-2.0`](https://www.apache.org/licenses/LICENSE-2.0) | Embedded as vector-path data; Apache trademarks remain subject to the [ASF trademark policy](https://www.apache.org/foundation/marks/). |
35
+ | Apache Kafka | [Apache logos](https://apache.org/logos) | [`Apache-2.0`](https://www.apache.org/licenses/LICENSE-2.0) | Embedded as vector-path data; Apache trademarks remain subject to the [ASF trademark policy](https://www.apache.org/foundation/marks/). |
36
+ | .NET | [.NET brand repository](https://github.com/dotnet/brand/blob/c7d0f51b8ec59531332d05fb27a5b758a7a3d689/logo/dotnet-logo.svg) | [`CC0-1.0`](https://creativecommons.org/publicdomain/zero/1.0/) | Embedded as vector-path data; color may be changed by the authored diagram. |
37
+ | JavaScript | [JS community logo](https://github.com/voodootikigod/logo.js/blob/1544bdeed6d618a6cfe4f0650d04ab8d9cfa76d9/js.svg) | [`MIT`](https://github.com/voodootikigod/logo.js/blob/1544bdeed6d618a6cfe4f0650d04ab8d9cfa76d9/LICENSE) | Embedded as vector-path data; color may be changed by the authored diagram. |
38
+ | Jenkins | [Jenkins artwork source](https://get.jenkins.io/art/) | [`CC-BY-SA-3.0`](https://creativecommons.org/licenses/by-sa/3.0/) | Embedded as vector-path data; color may be changed by the authored diagram. Jenkins retains its trademark rights. |
39
+ | Rust | [Rust project](https://www.rust-lang.org) | [`CC-BY-SA-4.0`](https://creativecommons.org/licenses/by-sa/4.0/) | Embedded as vector-path data; color may be changed by the authored diagram. See the [Rust media guide](https://www.rust-lang.org/policies/media-guide). |
40
+ | Vue.js | [Vue logo source](https://github.com/vuejs/art/blob/a1c78b74569b70a25300925b4eacfefcc143b8f6/logo.svg) | [`CC-BY-NC-SA-4.0`](https://creativecommons.org/licenses/by-nc-sa/4.0/) | Embedded as vector-path data; color may be changed by the authored diagram. The non-commercial and share-alike conditions remain applicable; see the [Vue artwork terms](https://github.com/vuejs/art/blob/a1c78b74569b70a25300925b4eacfefcc143b8f6/README.md). |
41
+
42
+ The source, guideline, and known license fields for every packaged mark are
43
+ preserved in `renderers/shared/generated-brand-marks.mjs`.
44
+
45
+ ## OpenAI mark
46
+
47
+ The OpenAI vector path is recorded from the
48
+ [OpenAI brand guidelines](https://openai.com/brand/), not from Simple Icons.
49
+ Use remains subject to those current guidelines and any applicable trademark
50
+ rights. Its inclusion does not state or imply endorsement by OpenAI.
51
+
52
+ ## JetBrains Mono
53
+
54
+ Delivered Archify viewer artifacts embed the JetBrains Mono variable font
55
+ subsets served by Google Fonts. For characters covered by these subsets, font
56
+ selection does not depend on a network request or a locally installed copy.
57
+ Uncovered characters (including CJK) still use the system fallback stack;
58
+ browser and operating-system rasterization can differ.
59
+ JetBrains Mono is maintained at
60
+ [github.com/JetBrains/JetBrainsMono](https://github.com/JetBrains/JetBrainsMono)
61
+ and is distributed under the SIL Open Font License 1.1. The complete license
62
+ text is preserved in `assets/JetBrainsMono-OFL.txt` in the packaged Skill and
63
+ in the font CSS carried by standalone HTML and SVG exports.
64
+
65
+ ## Pele
66
+
67
+ The explainer renders Mermaid chart fences with an unmodified subset of
68
+ [Pele 1.3.0](https://github.com/obsidianmd/pele), copyright (c) 2026 kepano,
69
+ distributed under the MIT License. The subset and its license text are in
70
+ `explainer/vendor/pele/` in the packaged Skill. Charts are rendered to static
71
+ SVG when a page is built; delivered pages contain no Pele code.
72
+
73
+ ## No additional rights granted
74
+
75
+ Brand names, logos, and trademarks remain the property of their respective
76
+ owners. This notice records provenance and known terms; it does not grant rights
77
+ that Archify does not hold, and it does not state that every packaged mark has
78
+ been cleared for every commercial, promotional, or redistributive use.
@@ -0,0 +1,93 @@
1
+ Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ https://openfontlicense.org
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.