qgraphflow 0.0.6

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 (78) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/.claude-plugin/marketplace.json +17 -0
  3. package/.claude-plugin/plugin.json +13 -0
  4. package/.codex-plugin/plugin.json +26 -0
  5. package/.cursor-plugin/plugin.json +9 -0
  6. package/.qoder-plugin/plugin.json +9 -0
  7. package/LICENSE +21 -0
  8. package/README.md +262 -0
  9. package/THIRD_PARTY_NOTICES.md +190 -0
  10. package/bin/qgraphflow.mjs +17 -0
  11. package/docs/clients.de.md +83 -0
  12. package/docs/clients.es.md +83 -0
  13. package/docs/clients.ja.md +83 -0
  14. package/docs/clients.md +83 -0
  15. package/docs/clients.pt.md +83 -0
  16. package/docs/clients.ru.md +83 -0
  17. package/docs/clients.zh-CN.md +83 -0
  18. package/docs/readme/README.de.md +262 -0
  19. package/docs/readme/README.es.md +262 -0
  20. package/docs/readme/README.ja.md +262 -0
  21. package/docs/readme/README.pt.md +262 -0
  22. package/docs/readme/README.ru.md +262 -0
  23. package/docs/readme/README.zh-CN.md +264 -0
  24. package/examples/order-flow.graph.json +94 -0
  25. package/package.json +61 -0
  26. package/skills/q-flow/SKILL.md +69 -0
  27. package/skills/q-flow/agents/openai.yaml +5 -0
  28. package/skills/q-flow/assets/layout-dist/ELK-LICENSE.md +264 -0
  29. package/skills/q-flow/assets/layout-dist/worker.mjs +24 -0
  30. package/skills/q-flow/assets/viewer/package.json +22 -0
  31. package/skills/q-flow/assets/viewer/src/diagrams/architecture.js +43 -0
  32. package/skills/q-flow/assets/viewer/src/diagrams/card.js +21 -0
  33. package/skills/q-flow/assets/viewer/src/diagrams/class.js +52 -0
  34. package/skills/q-flow/assets/viewer/src/diagrams/dataflow.js +19 -0
  35. package/skills/q-flow/assets/viewer/src/diagrams/deployment.js +41 -0
  36. package/skills/q-flow/assets/viewer/src/diagrams/drawing.js +174 -0
  37. package/skills/q-flow/assets/viewer/src/diagrams/er.js +34 -0
  38. package/skills/q-flow/assets/viewer/src/diagrams/flowchart.js +37 -0
  39. package/skills/q-flow/assets/viewer/src/diagrams/registry.js +28 -0
  40. package/skills/q-flow/assets/viewer/src/diagrams/sequence.js +38 -0
  41. package/skills/q-flow/assets/viewer/src/diagrams/state.js +91 -0
  42. package/skills/q-flow/assets/viewer/src/diagrams/usecase.js +28 -0
  43. package/skills/q-flow/assets/viewer/src/edge-routing.js +596 -0
  44. package/skills/q-flow/assets/viewer/src/export-svg.js +90 -0
  45. package/skills/q-flow/assets/viewer/src/graph-validation.js +286 -0
  46. package/skills/q-flow/assets/viewer/src/i18n-messages.json +1314 -0
  47. package/skills/q-flow/assets/viewer/src/i18n.js +14 -0
  48. package/skills/q-flow/assets/viewer/src/layout-measure.js +55 -0
  49. package/skills/q-flow/assets/viewer/src/layout-quality.js +164 -0
  50. package/skills/q-flow/assets/viewer/src/layout-spacing.js +12 -0
  51. package/skills/q-flow/assets/viewer/src/node-svg.js +28 -0
  52. package/skills/q-flow/assets/viewer/src/radix-colors.js +47 -0
  53. package/skills/q-flow/assets/viewer/src/sequence-executions.js +140 -0
  54. package/skills/q-flow/assets/viewer/src/sequence-fragments.js +208 -0
  55. package/skills/q-flow/assets/viewer/src/session-graph.js +43 -0
  56. package/skills/q-flow/assets/viewer/src/text-layout.js +126 -0
  57. package/skills/q-flow/assets/viewer/src/visual-style.js +158 -0
  58. package/skills/q-flow/assets/viewer-dist/index.html +291 -0
  59. package/skills/q-flow/references/acceptance.md +11 -0
  60. package/skills/q-flow/references/evidence-sources.md +38 -0
  61. package/skills/q-flow/references/graph-common.md +54 -0
  62. package/skills/q-flow/references/graph-schema.md +214 -0
  63. package/skills/q-flow/references/guided-intake.md +100 -0
  64. package/skills/q-flow/references/types/architecture.md +41 -0
  65. package/skills/q-flow/references/types/class.md +40 -0
  66. package/skills/q-flow/references/types/dataflow.md +41 -0
  67. package/skills/q-flow/references/types/deployment.md +37 -0
  68. package/skills/q-flow/references/types/er.md +36 -0
  69. package/skills/q-flow/references/types/flowchart.md +47 -0
  70. package/skills/q-flow/references/types/sequence.md +74 -0
  71. package/skills/q-flow/references/types/state.md +44 -0
  72. package/skills/q-flow/references/types/usecase.md +39 -0
  73. package/skills/q-flow/references/viewer-development.md +258 -0
  74. package/skills/q-flow/references/visual-contract.md +54 -0
  75. package/skills/q-flow/scripts/compile-layout.mjs +565 -0
  76. package/skills/q-flow/scripts/compile-sequence.mjs +112 -0
  77. package/skills/q-flow/scripts/generate-viewer.mjs +126 -0
  78. package/skills/q-flow/scripts/validate-graph.mjs +278 -0
@@ -0,0 +1,262 @@
1
+ <div align="center">
2
+
3
+ # QGraphFlow
4
+
5
+ ### Превратите сложный код в диаграммы для исследования.
6
+
7
+ Проследите путь. Проверьте основания. Поделитесь одним автономным файлом.
8
+
9
+ <sub>💡 Вдохновлено проектом <a href="https://github.com/Cocoon-AI/architecture-diagram-generator">Cocoon-AI/architecture-diagram-generator</a> — спасибо за идею.</sub>
10
+
11
+ [English](../../README.md) · [中文](../../docs/readme/README.zh-CN.md) · [Русский](../../docs/readme/README.ru.md) · [Português](../../docs/readme/README.pt.md) · [日本語](../../docs/readme/README.ja.md) · [Deutsch](../../docs/readme/README.de.md) · [Español](../../docs/readme/README.es.md)
12
+
13
+ [Онлайн-демо](https://supermax92.github.io/qgraphflow/) · [Установка для клиентов](#установка) · [Сообщить о проблеме](https://github.com/supermax92/qgraphflow/issues) · [MIT](../../LICENSE)
14
+
15
+ </div>
16
+
17
+ ![Архитектура, последовательность и ER-диаграмма примера agent-desk, по 1,5 секунды на вид](https://github.com/supermax92/qgraphflow/releases/download/showcase-v2/agent-desk.ru.hero.gif)
18
+
19
+ *Девять типов: архитектура, блок-схема, последовательность, ER, развёртывание, классы, состояния, варианты использования и поток данных.*
20
+
21
+ QGraphFlow создаёт интерактивные диаграммы программных систем из кода, схем данных, конфигурации и требований. Основания связей можно проверить, а результат — передать как автономный HTML.
22
+
23
+ **Чем отличается:** девять типов диаграмм в одном навыке, источник для каждой связи, автоматическая раскладка, редактирование прямо на странице и никаких сетевых запросов ни от скриптов плагина, ни от самого Viewer.
24
+
25
+ ```bash
26
+ npx skills add supermax92/qgraphflow
27
+ ```
28
+
29
+ Одна команда устанавливает навык для Claude Code, Codex, Cursor и Qoder; установка в виде плагина и другие клиенты описаны в разделе [Установка](#установка).
30
+
31
+ - **Исследование:** поиск, масштабирование и перемещение холста; назначение компонентов, входящие и исходящие связи.
32
+
33
+ ![Исследование: поиск refund, переход к узлу «Инструменты заказов», отдаление до оркестратора выше и базы заказов с отслеживанием доставки ниже, затем перемещение холста](https://github.com/supermax92/qgraphflow/releases/download/showcase-v2/agent-desk.ru.explore.gif)
34
+
35
+ - **Проверка:** файлы, строки, символы и явно обозначенная неопределённость в узлах и связях.
36
+
37
+ ![Проверка: карточка с src/gateway/chat-gateway.js:5-19, панель деталей с символом и фактами, затем связь POST /chat с пометкой inference](https://github.com/supermax92/qgraphflow/releases/download/showcase-v2/agent-desk.ru.verify.gif)
38
+
39
+ - **Редактирование:** разблокировка расположения, изменение текста и перемещение элементов; сброс при необходимости.
40
+
41
+ ![Редактирование: разблокировка расположения, переименование «Провайдер LLM» в «LLM-шлюз», перетаскивание узла вместе со связями, затем сброс](https://github.com/supermax92/qgraphflow/releases/download/showcase-v2/agent-desk.ru.edit.gif)
42
+
43
+ - **Обмен:** автономный HTML или экспорт всей диаграммы в SVG / PNG.
44
+
45
+ ![Обмен: открытие автономного HTML, экспорт PNG из меню «Ещё», затем сам экспортированный файл](https://github.com/supermax92/qgraphflow/releases/download/showcase-v2/agent-desk.ru.share.gif)
46
+
47
+ Верхняя анимация показывает архитектуру, последовательность и ER-диаграмму по 1,5 секунды (цикл 4,5 секунды); четыре анимации возможностей длятся 6,5–8,5 секунды. Все они записаны в собранном из исходников Viewer на [примере agent-desk](../../examples/showcase/agent-desk) — вымышленный бизнес, настоящий код — с русским текстом диаграмм и интерфейса. Они размещены как [ассеты релиза showcase-v2](https://github.com/supermax92/qgraphflow/releases/tag/showcase-v2) и не входят ни в историю Git, ни в пакет плагина, поэтому для просмотра нужна сеть; сгенерированный HTML диаграммы работает автономно.
48
+
49
+ ## Установка
50
+
51
+ Нужны Node.js 22 или новее и клиент с поддержкой плагинов и настроенным доступом к модели.
52
+
53
+ ### Быстрая установка
54
+
55
+ ```bash
56
+ npx skills add supermax92/qgraphflow
57
+ ```
58
+
59
+ Проверено с `skills` 1.7.0 для Claude Code, Codex, Cursor и Qoder. Команда спросит, в какие клиенты устанавливать; `-a claude-code` задаёт клиент сразу, а `-g` устанавливает навык для пользователя, а не для текущего проекта. Навык устанавливается как `q-flow`, без префикса `qgraphflow:`, который дают способы установки плагина ниже.
60
+
61
+ Чтобы установить его как плагин, выполните шаги ниже. В [Qoder Desktop](#qoder-desktop) можно установить плагин из Marketplace и пропустить шаг 1.
62
+
63
+ ### 1. Скачайте плагин
64
+
65
+ Скачайте [qgraphflow-0.0.6.zip](https://github.com/supermax92/qgraphflow/releases/download/v0.0.6/qgraphflow-0.0.6.zip) и распакуйте в отдельный каталог, сохранив скрытые файлы.
66
+
67
+ Все команды ниже выполняйте из **корневого каталога распакованного плагина, содержащего `skills/`**.
68
+
69
+ ### 2. Установите в свой клиент
70
+
71
+ #### Codex App / CLI
72
+
73
+ В терминале должен быть доступен установленный Codex CLI:
74
+
75
+ ```bash
76
+ codex plugin marketplace add .
77
+ codex plugin add qgraphflow@supermax92
78
+ ```
79
+
80
+ Начните новую сессию, введите `$` и выберите `qgraphflow:q-flow`.
81
+
82
+ #### Claude Code
83
+
84
+ Установите напрямую с GitHub без скачивания ZIP:
85
+
86
+ ```bash
87
+ claude plugin marketplace add supermax92/qgraphflow
88
+ claude plugin install qgraphflow@supermax92 --scope user
89
+ ```
90
+
91
+ Или из корня распакованного плагина:
92
+
93
+ ```bash
94
+ claude plugin marketplace add .
95
+ claude plugin install qgraphflow@supermax92 --scope user
96
+ ```
97
+
98
+ Начните новую сессию и введите `/q-flow` (или полное имя `/qgraphflow:q-flow`).
99
+
100
+ #### Qoder CLI
101
+
102
+ ```bash
103
+ qodercli plugins install .
104
+ ```
105
+
106
+ Начните новую сессию и выберите `q-flow`.
107
+
108
+ #### Qoder Desktop
109
+
110
+ **Рекомендуется:** Откройте **Settings → Plugins → Marketplace**, найдите **代码图谱可视化** или **qgraphflow** и установите плагин. Начните новый сеанс и выберите `q-flow`. Скачивать ZIP или собирать исходный код не требуется.
111
+
112
+ Для локальной установки выполните шаг 1, затем откройте **Settings → Plugins → Custom → Import** и импортируйте весь корневой каталог распакованного плагина. Начните новый сеанс и выберите `q-flow`.
113
+
114
+ #### Cursor
115
+
116
+ Скопируйте всё содержимое корневого каталога плагина, включая скрытые файлы, в:
117
+
118
+ ```text
119
+ ~/.cursor/plugins/local/qgraphflow/
120
+ ```
121
+
122
+ Убедитесь, что там есть `.cursor-plugin/plugin.json`, перезагрузите окно и найдите `q-flow` в **Customize**. Если уже установлена старая версия, сначала сделайте резервную копию; не смешивайте старые и новые файлы.
123
+
124
+ ### 3. Начните работу
125
+
126
+ Откройте свой проект в клиенте, начните новую сессию и выберите навык. Опишите задачу по примерам в разделе [Быстрый старт](#быстрый-старт) ниже. Откройте полученный HTML в браузере.
127
+
128
+ <details>
129
+ <summary>Другой способ установки: npm</summary>
130
+
131
+ Вместо ZIP можно получить плагин с npmjs.com — без учётной записи, входа и токена. Создайте отдельный каталог вне своего рабочего проекта:
132
+
133
+ ```bash
134
+ mkdir qgraphflow-install
135
+ cd qgraphflow-install
136
+ npm install qgraphflow --ignore-scripts
137
+ cd node_modules/qgraphflow
138
+ ```
139
+
140
+ Теперь вы в корневом каталоге плагина. Продолжите установку для своего клиента по шагам выше. **Загрузка через npm не устанавливает плагин в клиент автоматически.** Пакет также даёт команду `qgraphflow`, которая используется в разделе [Синхронизация диаграмм с кодом](#синхронизация-диаграмм-с-кодом).
141
+
142
+ </details>
143
+
144
+ Хотите собрать самостоятельно? См. [инструкции по сборке из исходников](https://github.com/supermax92/qgraphflow/blob/main/docs/distribution.md#prepare-locally).
145
+
146
+ ## Быстрый старт
147
+
148
+ Примеры используют `$qgraphflow:q-flow` в Codex. Если клиент показывает `$q-flow`, выберите этот пункт. Для других клиентов используйте способ вызова навыка, указанный выше.
149
+
150
+ **Не знаете, с чего начать?** Вызовите навык, затем выберите предмет и вопрос по подсказке.
151
+
152
+ ```text
153
+ $qgraphflow:q-flow
154
+ ```
155
+
156
+ **Цель уже ясна?** Укажите, какую часть нарисовать и что требуется понять. Тип диаграммы заранее выбирать не нужно.
157
+
158
+ ### Пример 1: Понять архитектуру проекта
159
+
160
+ ```text
161
+ $qgraphflow:q-flow Проанализируй текущий проект и создай диаграмму архитектуры на русском языке: обязанности модулей, зависимости и границы системы.
162
+ ```
163
+
164
+ Подходит для первого знакомства с общей структурой проекта.
165
+
166
+ ### Пример 2: Проследить бизнес-процесс
167
+
168
+ ```text
169
+ $qgraphflow:q-flow Проанализируй создание заказа и создай диаграмму последовательности на русском языке: расчёт цены, резерв запасов, оплата и сохранение заказа, включая ветки сбоев.
170
+ ```
171
+
172
+ Замените создание заказа и его шаги реальным процессом проекта. Продолжите в том же разговоре:
173
+
174
+ ```text
175
+ $qgraphflow:q-flow Подробно раскрой резерв запасов из предыдущей диаграммы отдельной блок-схемой на русском языке с обработкой успеха и сбоев.
176
+ ```
177
+
178
+ По умолчанию результаты находятся в `docs/qgraphflow/`. Откройте `index.html` для исследования, редактирования и экспорта; `graph.json` хранит данные графа. Каждый вид также записывается как SVG (`diagram.svg`, а для нескольких видов — `diagram-<n>-<type>.svg`), который можно встроить как изображение в README, pull request или вики.
179
+
180
+ После правок на странице команда **Ещё → Сохранить изменения** в Chrome или Edge перезаписывает страницу, `graph.json` и SVG на месте, когда вы один раз выберете каталог диаграммы. Другие браузеры сохраняют только `graph.json`: положите его в этот каталог и пересоздайте страницу и SVG командой `npx -y qgraphflow generate docs/qgraphflow/<name>/graph.json docs/qgraphflow/<name> --layout preserve --force`.
181
+
182
+ <details>
183
+ <summary>Запустить торговый пример с девятью видами вручную</summary>
184
+
185
+ Команды ниже запускают пример из репозитория. Для использования установленного плагина клонировать репозиторий не нужно. Подготовьте Node.js 22 или новее:
186
+
187
+ ```bash
188
+ git clone https://github.com/supermax92/qgraphflow.git
189
+ cd qgraphflow
190
+ node skills/q-flow/scripts/validate-graph.mjs examples/showcase/ecommerce.ru.graph.json
191
+ node skills/q-flow/scripts/generate-viewer.mjs examples/showcase/ecommerce.ru.graph.json output/ecommerce-ru
192
+ ```
193
+
194
+ Откройте `output/ecommerce-ru/index.html` в браузере; девять SVG лежат рядом. Переключайтесь через **Типы диаграмм** в верхней панели: сохранённые тексты и позиции сохраняются для каждого вида. **Ещё → Сохранить изменения** сохраняет все виды, как описано выше. Те же страницы есть в [онлайн-демо](https://supermax92.github.io/qgraphflow/).
195
+
196
+ Готовому Viewer не нужны дополнительные зависимости, ключ API или серверная служба. Сбор оснований и создание графов с помощью ИИ используют модельный сервис выбранного клиента.
197
+
198
+ </details>
199
+
200
+ ## Синхронизация диаграмм с кодом
201
+
202
+ Диаграмма, созданная с указанием корня репозитория, запоминает, где определён каждый компонент. Проверка с `--repo-root` завершается ошибкой, если записанного файла больше нет, диапазон строк не помещается в файл или записанный символ ушёл из своих строк; в сообщении указано, в каких строках символ находится теперь. Добавьте эту задачу в CI — ей не нужны сборка, вход или токен:
203
+
204
+ ```yaml
205
+ name: Diagrams
206
+ on: [push, pull_request]
207
+ jobs:
208
+ diagrams:
209
+ runs-on: ubuntu-latest
210
+ steps:
211
+ - uses: actions/checkout@v7
212
+ - uses: actions/setup-node@v7
213
+ with:
214
+ node-version: '22'
215
+ - run: |
216
+ for graph in docs/qgraphflow/*/graph.json; do
217
+ npx -y qgraphflow validate "$graph" --input-only --repo-root . || { echo "::error file=$graph::$graph failed validation"; failed=1; }
218
+ done
219
+ exit ${failed:-0}
220
+ ```
221
+
222
+ Если проверка не прошла, попросите навык обновить диаграмму:
223
+
224
+ ```text
225
+ $qgraphflow:q-flow CI сообщает, что диаграмма docs/qgraphflow/order-sequence устарела. Обнови её.
226
+ ```
227
+
228
+ Навык переносит якоря, символ которых встречается в файле один раз, исправляет только якоря с оставшимися ошибками и пересоздаёт страницу и SVG, сохраняя ваши позиции и тексты. Заново диаграмму он не рисует.
229
+
230
+ ## На какие вопросы отвечают девять видов
231
+
232
+ | Вид · PNG | Главный вопрос | Область примера |
233
+ | --- | --- | --- |
234
+ | Архитектура | Какие зоны ответственности взаимодействуют? | Каналы, покупка, цены, риски, запасы, оплата, заказы, события и доставка |
235
+ | Блок-схема | Где процесс ветвится и сходится? | Нехватка запасов, отказ по риску, компенсация оплаты и успешная фиксация |
236
+ | Последовательность | Каков порядок вызовов и ответов? | Успешная покупка и асинхронный OrderPaid |
237
+ | ER | Как связаны основные данные? | Корзина, заказы, позиции, платежи, резервы и посылки |
238
+ | Развёртывание | Где работают и как соединены единицы исполнения? | Периметр, Kubernetes, данные, платежи и логистические сети |
239
+ | Классы | Как зависят объекты домена и контракты? | Сервис покупки, Order и четыре порта |
240
+ | Состояния | Какие события и условия продвигают заказ? | Оплата, доставка, отмена, возврат денег и закрытие |
241
+ | Варианты использования | Что может каждый участник? | Покупатель, продавец, склад и поддержка |
242
+ | Поток данных | Как данные преобразуются и сохраняются? | Корзина, решения, события, склад и подтверждения доставки |
243
+
244
+ Это концептуальная демонстрация QGraphFlow, а не модель конкретного торгового репозитория. Пример `graph.json` не выдумывает пути к коду и обозначает основания связей как `inference`. Диаграммы реальных проектов требуют прослеживаемых исходников, DDL, конфигурации, тестов и согласованных требований.
245
+
246
+ ## Разработка и участие
247
+
248
+ ```bash
249
+ npm ci --prefix skills/q-flow/assets/viewer
250
+ npm run build --prefix skills/q-flow/assets/viewer
251
+ node --test tests/*.test.mjs skills/q-flow/scripts/*.test.mjs
252
+ ```
253
+
254
+ Нужны Node.js 22 или новее, npm, tar, zip и unzip. В сообщении о проблеме приложите минимальный граф без конфиденциальных данных, версии клиента и браузера и шаги воспроизведения.
255
+
256
+ Справочная документация (на английском): [Источники оснований](../../skills/q-flow/references/evidence-sources.md) · [Формат графов](../../skills/q-flow/references/graph-schema.md) · [Уточнение запроса](../../skills/q-flow/references/guided-intake.md) · [Разработка Viewer](../../skills/q-flow/references/viewer-development.md) · [Композиция диаграмм](../../skills/q-flow/references/visual-contract.md)
257
+
258
+ ## Лицензия и принадлежность
259
+
260
+ [MIT](../../LICENSE) · [Уведомления третьих сторон](../../THIRD_PARTY_NOTICES.md)
261
+
262
+ QGraphFlow — независимый проект под лицензией MIT. Сценарии в этом документе являются концептуальными и не представляют производственную архитектуру какой-либо компании; связь, спонсорство или одобрение не подразумеваются.
@@ -0,0 +1,264 @@
1
+ <div align="center">
2
+
3
+ # QGraphFlow
4
+
5
+ ### 把复杂代码,变成可以探索的图。
6
+
7
+ 跟随路径,查看证据,用一个离线文件分享。
8
+
9
+ <sub>💡 灵感来自 <a href="https://github.com/Cocoon-AI/architecture-diagram-generator">Cocoon-AI/architecture-diagram-generator</a>,感谢原作者的启发。</sub>
10
+
11
+ [English](../../README.md) · [中文](../../docs/readme/README.zh-CN.md) · [Русский](../../docs/readme/README.ru.md) · [Português](../../docs/readme/README.pt.md) · [日本語](../../docs/readme/README.ja.md) · [Deutsch](../../docs/readme/README.de.md) · [Español](../../docs/readme/README.es.md)
12
+
13
+ [在线演示](https://supermax92.github.io/qgraphflow/) · [客户端安装](#安装指南) · [反馈问题](https://github.com/supermax92/qgraphflow/issues) · [MIT](../../LICENSE)
14
+
15
+ </div>
16
+
17
+ ![agent-desk 示例的架构图、时序图与 ER 图,每类 1.5 秒](https://github.com/supermax92/qgraphflow/releases/download/showcase-v2/agent-desk.zh-CN.hero.gif)
18
+
19
+ *支持九类图:【架构图、流程图、时序图、ER 图、部署图、类图、状态图、用例图、数据流图】*
20
+
21
+ QGraphFlow 从源码、数据结构、配置和需求生成交互式软件图,让关系有据可查,并将结果交付为可分享的离线 HTML。
22
+
23
+ **差异在哪:** 一个技能覆盖九类图,每条关系都标明出处,自动布局,能直接在页面里编辑,插件脚本和 Viewer 本身不发任何网络请求。
24
+
25
+ ```bash
26
+ npx skills add supermax92/qgraphflow
27
+ ```
28
+
29
+ 一条命令即可为 Claude Code、Codex、Cursor 和 Qoder 装好技能;以插件方式安装和其他客户端见[安装指南](#安装指南)。
30
+
31
+ - **探索:** 搜索定位、缩放和平移画布,查看组件职责与上下游关系。
32
+
33
+ ![探索:搜索 refund 定位到订单工具集,拉远查看上游的智能体编排器与下游的订单库、物流查询平台,再平移画布](https://github.com/supermax92/qgraphflow/releases/download/showcase-v2/agent-desk.zh-CN.explore.gif)
34
+
35
+ - **核验:** 从节点或连线查看详情,核对源码文件、行号、符号和明确标注的不确定性。
36
+
37
+ ![核验:速览卡显示 src/gateway/chat-gateway.js:5-19,详情栏显示符号与证据事实,再查看标为 inference 的 POST /chat 连线](https://github.com/supermax92/qgraphflow/releases/download/showcase-v2/agent-desk.zh-CN.verify.gif)
38
+
39
+ - **编辑:** 解锁后修改文字、移动元素;不满意时一键重置。
40
+
41
+ ![编辑:解除布局锁定,把 LLM 服务商改名为 LLM 网关,拖动节点带动连线,最后一键重置](https://github.com/supermax92/qgraphflow/releases/download/showcase-v2/agent-desk.zh-CN.edit.gif)
42
+
43
+ - **分享:** 打开离线 HTML,或将完整图导出为 SVG / PNG。
44
+
45
+ ![分享:打开离线 HTML,从「更多」导出 PNG,最后展示导出的文件本身](https://github.com/supermax92/qgraphflow/releases/download/showcase-v2/agent-desk.zh-CN.share.gif)
46
+
47
+ 顶部动图依次展示架构图、时序图与 ER 图,每类 1.5 秒,完整循环 4.5 秒;下方四张能力动图各 6.5–8.5 秒。全部动图用源码构建的 Viewer 录制自 [agent-desk 示例](../../examples/showcase/agent-desk)(虚构业务、真实代码),图中文字与界面均为中文。它们作为 [showcase-v2 Release 附件](https://github.com/supermax92/qgraphflow/releases/tag/showcase-v2)托管,不进入 Git 历史与插件包,查看需要联网;生成的图形 HTML 本身可离线使用。
48
+
49
+ ## 安装指南
50
+
51
+ 准备 Node.js 22 及以上版本,以及已配置好模型访问、支持插件功能的客户端。
52
+
53
+ ### 快速安装
54
+
55
+ ```bash
56
+ npx skills add supermax92/qgraphflow
57
+ ```
58
+
59
+ 已用 `skills` 1.7.0 在 Claude Code、Codex、Cursor 和 Qoder 上实测。命令会询问装到哪些客户端;`-a claude-code` 可直接指定,`-g` 改为装到当前用户而不是当前项目。这样装上的技能名是 `q-flow`,不带下文插件安装方式里的 `qgraphflow:` 前缀。
60
+
61
+ 如需以插件方式安装,按以下步骤操作。[Qoder Desktop](#qoder-desktop) 可直接从插件商城安装,跳过第 1 步。
62
+
63
+ ### 1. 下载插件
64
+
65
+ 下载 [qgraphflow-0.0.6.zip](https://github.com/supermax92/qgraphflow/releases/download/v0.0.6/qgraphflow-0.0.6.zip),解压到独立目录,保留隐藏文件。
66
+
67
+ 以下终端命令均在**解压后包含 `skills/` 的插件根目录**执行。
68
+
69
+ ### 2. 选择客户端安装
70
+
71
+ #### Codex App / CLI
72
+
73
+ 终端需已安装 Codex CLI:
74
+
75
+ ```bash
76
+ codex plugin marketplace add .
77
+ codex plugin add qgraphflow@supermax92
78
+ ```
79
+
80
+ 新建会话,输入 `$`,选择 `qgraphflow:q-flow`。
81
+
82
+ #### Claude Code
83
+
84
+ 直接从 GitHub 安装,无需下载 ZIP:
85
+
86
+ ```bash
87
+ claude plugin marketplace add supermax92/qgraphflow
88
+ claude plugin install qgraphflow@supermax92 --scope user
89
+ ```
90
+
91
+ 或在解压后的插件根目录执行:
92
+
93
+ ```bash
94
+ claude plugin marketplace add .
95
+ claude plugin install qgraphflow@supermax92 --scope user
96
+ ```
97
+
98
+ 新建会话,输入 `/q-flow`(或完整名称 `/qgraphflow:q-flow`)。
99
+
100
+ #### Qoder CLI
101
+
102
+ ```bash
103
+ qodercli plugins install .
104
+ ```
105
+
106
+ 新建会话,选择 `q-flow`。
107
+
108
+ #### Qoder Desktop
109
+
110
+ **推荐:**打开 **Settings → Plugins → Marketplace**,搜索 **代码图谱可视化** 或 **qgraphflow**,安装插件。新建会话,选择 `q-flow`。无需下载 ZIP 或构建源码。
111
+
112
+ 如需本地安装,先完成第 1 步,再打开 **Settings → Plugins → Custom → Import**,导入解压后的完整插件根目录。新建会话,选择 `q-flow`。
113
+
114
+ #### Cursor
115
+
116
+ 将插件根目录中的全部内容(含隐藏文件)复制到:
117
+
118
+ ```text
119
+ ~/.cursor/plugins/local/qgraphflow/
120
+ ```
121
+
122
+ 确认其中存在 `.cursor-plugin/plugin.json`,重新加载窗口,在 **Customize** 中找到 `q-flow`。若已有旧版本,先备份,勿混合新旧文件。
123
+
124
+ ### 3. 开始使用
125
+
126
+ 在客户端打开你的业务项目,新建会话并选择技能,按下方[快速使用](#快速使用)中的示例描述需求。生成后,用浏览器打开输出的 HTML。
127
+
128
+ <details>
129
+ <summary>其他安装方式:npm</summary>
130
+
131
+ 不使用 ZIP 时,也可以从 npmjs.com 获取插件,无需账号、登录或令牌。在业务项目之外创建独立目录:
132
+
133
+ ```bash
134
+ mkdir qgraphflow-install
135
+ cd qgraphflow-install
136
+ npm install qgraphflow --ignore-scripts
137
+ cd node_modules/qgraphflow
138
+ ```
139
+
140
+ 此时已进入插件根目录,继续执行上面的客户端安装步骤。**npm 下载不会自动完成客户端安装。** 这个包还提供 `qgraphflow` 命令,[让图和代码保持同步](#让图和代码保持同步)一节会用到。
141
+
142
+ </details>
143
+
144
+ 需要自行构建?参见[源码构建说明](https://github.com/supermax92/qgraphflow/blob/main/docs/distribution.md#prepare-locally)。
145
+
146
+ ## 快速使用
147
+
148
+ 以下以 Codex 的 `$qgraphflow:q-flow` 入口为例;如果客户端显示 `$q-flow`,请选择它实际提供的入口。其他客户端使用上方对应的技能入口。
149
+
150
+ **不知道从哪里开始?** 直接调用,按提示选择要分析的部分和想了解的问题。
151
+
152
+ ```text
153
+ $qgraphflow:q-flow
154
+ ```
155
+
156
+ **目标已经明确?** 一句话说明“画哪个部分+想看什么”,无需先选择图类型。
157
+
158
+ ### 示例一:看懂项目架构
159
+
160
+ ```text
161
+ $qgraphflow:q-flow 分析当前项目,生成中文架构图,展示主要模块的职责、依赖关系和系统边界。
162
+ ```
163
+
164
+ 适合初次接触项目,先了解整体结构。
165
+
166
+ ### 示例二:追踪业务调用
167
+
168
+ ```text
169
+ $qgraphflow:q-flow 分析订单创建流程,生成中文时序图,展示价格计算、库存预占、支付和订单落库的调用顺序,并标明失败分支。
170
+ ```
171
+
172
+ 将“订单创建”及相关步骤替换成项目中的实际业务流程。看完后,在同一对话中继续追问:
173
+
174
+ ```text
175
+ $qgraphflow:q-flow 展开上一张图中的库存预占步骤,单独生成中文流程图,展示成功与失败的处理流程。
176
+ ```
177
+
178
+ 结果默认保存在 `docs/qgraphflow/` 下:打开 `index.html` 即可交互查看、编辑和导出,`graph.json` 保留图数据。每个视图还会写出一份 SVG(`diagram.svg`,多视图时为 `diagram-<n>-<type>.svg`),可以直接作为图片嵌进 README、PR 或 Wiki。
179
+
180
+ 在页面里编辑后,用 Chrome 或 Edge 执行「更多 → 保存修改」并选一次图所在的文件夹,即可原地重写页面、`graph.json` 和 SVG。其他浏览器只能保存 `graph.json`:把它放回该文件夹,再用 `npx -y qgraphflow generate docs/qgraphflow/<name>/graph.json docs/qgraphflow/<name> --layout preserve --force` 重新生成页面和 SVG。
181
+
182
+ <details>
183
+ <summary>手动运行示例:复杂电商九类图</summary>
184
+
185
+ 以下命令仅用于运行仓库自带示例,使用已安装的插件无需克隆本仓库。
186
+
187
+ 准备 Node.js 22 及以上版本,克隆仓库并执行:
188
+
189
+ ```bash
190
+ git clone https://github.com/supermax92/qgraphflow.git
191
+ cd qgraphflow
192
+ node skills/q-flow/scripts/validate-graph.mjs examples/showcase/ecommerce.zh-CN.graph.json
193
+ node skills/q-flow/scripts/generate-viewer.mjs examples/showcase/ecommerce.zh-CN.graph.json output/ecommerce-zh-CN
194
+ ```
195
+
196
+ 用浏览器打开 `output/ecommerce-zh-CN/index.html`,九个 SVG 就在同一目录。在顶部工具栏的「图类型」菜单切换视图,切换图类型会保留各图已保存的文字和位置。「更多 → 保存修改」按上文所述保存全部视图。同样的页面也在[在线演示](https://supermax92.github.io/qgraphflow/)里。
197
+
198
+ 使用预构建 Viewer 生成页面,无需安装依赖、API Key 或后端服务。让 AI 取证并编写图数据时,使用所选客户端的模型服务。
199
+
200
+ </details>
201
+
202
+ ## 让图和代码保持同步
203
+
204
+ 带仓库根目录生成的图会记下每个组件定义在哪里。用 `--repo-root` 校验时,记录的文件不在了、行号超出文件,或记录的符号离开了原来的行范围,校验都会失败,并在错误里写出这个符号现在所在的行。把下面这个任务加进 CI,不需要构建、登录或令牌:
205
+
206
+ ```yaml
207
+ name: Diagrams
208
+ on: [push, pull_request]
209
+ jobs:
210
+ diagrams:
211
+ runs-on: ubuntu-latest
212
+ steps:
213
+ - uses: actions/checkout@v7
214
+ - uses: actions/setup-node@v7
215
+ with:
216
+ node-version: '22'
217
+ - run: |
218
+ for graph in docs/qgraphflow/*/graph.json; do
219
+ npx -y qgraphflow validate "$graph" --input-only --repo-root . || { echo "::error file=$graph::$graph failed validation"; failed=1; }
220
+ done
221
+ exit ${failed:-0}
222
+ ```
223
+
224
+ 失败后,让技能刷新这张图:
225
+
226
+ ```text
227
+ $qgraphflow:q-flow CI 提示 docs/qgraphflow/order-sequence 的图过时了,刷新一下。
228
+ ```
229
+
230
+ 技能会把在文件里只找到一处的符号重新定位,只修改仍然报错的锚点,再保留你调整过的位置和文字,重新生成页面和 SVG;不会重画整张图。
231
+
232
+ ## 九类图各自回答什么
233
+
234
+ | 视图 · PNG | 主要问题 | 本示例范围 |
235
+ | --- | --- | --- |
236
+ | 架构图 | 系统由哪些责任边界协作? | 渠道、交易编排、价格、风控、库存、支付、订单、事件与履约 |
237
+ | 流程图 | 每个决策点如何分支和收敛? | 缺货、风控拒绝、支付失败补偿与成功提交 |
238
+ | 时序图 | 一次请求按什么顺序调用和返回? | 成功结算主链及异步 OrderPaid |
239
+ | ER 图 | 核心数据如何关联? | 购物车、订单、明细、支付、库存预占和包裹 |
240
+ | 部署图 | 运行单元放在哪里、怎样连接? | 边缘、Kubernetes、数据服务、支付和仓配网络 |
241
+ | 类图 | 领域对象和代码契约怎样依赖? | Checkout 应用服务、Order 与四个端口 |
242
+ | 状态图 | 订单受哪些事件和守卫条件推进? | 支付、履约、取消、退款和关闭 |
243
+ | 用例图 | 每类参与者拥有哪些能力? | 买家、商家、仓库与客服 |
244
+ | 数据流图 | 数据资产经过哪些变换和存储? | 购物车、交易决策、订单事件、仓配和物流回执 |
245
+
246
+ 这是用于展示 QGraphFlow 能力的概念模型,不对应某个电商仓库。`graph.json` 不伪造源码路径,关系证据统一标记为 `inference`;对真实项目绘图时,应改用源码、DDL、配置、测试和已接受需求中的可追溯证据。
247
+
248
+ ## 开发与参与
249
+
250
+ ```bash
251
+ npm ci --prefix skills/q-flow/assets/viewer
252
+ npm run build --prefix skills/q-flow/assets/viewer
253
+ node --test tests/*.test.mjs skills/q-flow/scripts/*.test.mjs
254
+ ```
255
+
256
+ 开发需要 Node.js 22 及以上版本、npm、tar、zip 和 unzip。反馈问题时,请附最小脱敏图数据、客户端和浏览器版本,以及复现步骤。
257
+
258
+ 参考文档(英文):[证据来源](../../skills/q-flow/references/evidence-sources.md) · [图数据格式](../../skills/q-flow/references/graph-schema.md) · [需求引导](../../skills/q-flow/references/guided-intake.md) · [Viewer 开发与验收](../../skills/q-flow/references/viewer-development.md) · [图形表达约定](../../skills/q-flow/references/visual-contract.md)
259
+
260
+ ## 许可证与归属
261
+
262
+ [MIT](../../LICENSE) · [第三方声明](../../THIRD_PARTY_NOTICES.md)
263
+
264
+ QGraphFlow 是采用 MIT 许可证的独立项目。本文场景为概念示例,不代表任何真实公司的生产架构。
@@ -0,0 +1,94 @@
1
+ {
2
+ "meta": {
3
+ "title": "Order service architecture",
4
+ "diagramType": "architecture",
5
+ "sourceRef": "QGraphFlow example: a fictional system that demonstrates graph data and interaction, not evidence from real source code",
6
+ "locale": "en"
7
+ },
8
+ "groups": [],
9
+ "nodes": [
10
+ {
11
+ "id": "client",
12
+ "label": "Client",
13
+ "kind": "external",
14
+ "subtitle": "Sends order requests",
15
+ "facts": [
16
+ "A fictional example that shows how to read node details."
17
+ ]
18
+ },
19
+ {
20
+ "id": "api",
21
+ "label": "Order service",
22
+ "kind": "service",
23
+ "subtitle": "Validates requests and stores orders",
24
+ "tags": [
25
+ "core"
26
+ ],
27
+ "facts": [
28
+ "Receives client requests.",
29
+ "Writes order data and publishes an event to the queue; the example omits transactions and retry policy."
30
+ ]
31
+ },
32
+ {
33
+ "id": "database",
34
+ "label": "Order database",
35
+ "kind": "database",
36
+ "subtitle": "Persists orders",
37
+ "facts": [
38
+ "Stores order records; no particular database product is implied."
39
+ ]
40
+ },
41
+ {
42
+ "id": "queue",
43
+ "label": "Event queue",
44
+ "kind": "component",
45
+ "subtitle": "Carries order events",
46
+ "facts": [
47
+ "Decouples order creation from the follow-up notification."
48
+ ]
49
+ },
50
+ {
51
+ "id": "worker",
52
+ "label": "Notification service",
53
+ "kind": "service",
54
+ "subtitle": "Consumes events and sends notifications",
55
+ "facts": [
56
+ "Handles notifications asynchronously; a real system needs its own failure handling."
57
+ ]
58
+ }
59
+ ],
60
+ "edges": [
61
+ {
62
+ "id": "request",
63
+ "source": "client",
64
+ "target": "api",
65
+ "kind": "request",
66
+ "label": "create order",
67
+ "evidence": "document"
68
+ },
69
+ {
70
+ "id": "save",
71
+ "source": "api",
72
+ "target": "database",
73
+ "kind": "data",
74
+ "label": "save order",
75
+ "evidence": "document"
76
+ },
77
+ {
78
+ "id": "publish",
79
+ "source": "api",
80
+ "target": "queue",
81
+ "kind": "data",
82
+ "label": "order event",
83
+ "evidence": "document"
84
+ },
85
+ {
86
+ "id": "consume",
87
+ "source": "queue",
88
+ "target": "worker",
89
+ "kind": "data",
90
+ "label": "async notification",
91
+ "evidence": "document"
92
+ }
93
+ ]
94
+ }