@nurix/etna 0.19.66 → 0.19.68

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 (234) hide show
  1. package/bin/etna.js +10 -1
  2. package/data/harness-index.json +1 -5
  3. package/data/harnesses/code/CLAUDE.md +2 -0
  4. package/data/harnesses/code/agents/maintenance.md +4 -1
  5. package/data/harnesses/code/harness.json +7 -2
  6. package/data/harnesses/code/hooks/awareness.mjs +69 -0
  7. package/data/harnesses/code/hooks/compliance.mjs +2 -14
  8. package/data/harnesses/code/hooks/lib/approved.mjs +30 -0
  9. package/data/harnesses/code/hooks/lib/frozen.mjs +3 -0
  10. package/data/harnesses/code/hooks/lib/ownership.mjs +3 -1
  11. package/data/harnesses/code/skills/documentation/references/frontmatter.md +1 -1
  12. package/data/harnesses/code/skills/documentation/scripts/doc-lint.mjs +1 -1
  13. package/data/harnesses/code/skills/documentation/templates/Readme.md +2 -0
  14. package/data/harnesses/code/skills/documentation/templates/structure.md +1 -0
  15. package/data/harnesses/delivery/agents/maintenance.md +4 -1
  16. package/data/harnesses/delivery/harness.json +2 -2
  17. package/data/harnesses/delivery/skills/documentation/references/frontmatter.md +1 -1
  18. package/data/harnesses/delivery/skills/documentation/scripts/doc-lint.mjs +1 -1
  19. package/data/harnesses/delivery/skills/documentation/templates/Readme.md +2 -0
  20. package/data/harnesses/delivery/skills/documentation/templates/structure.md +1 -0
  21. package/data/harnesses/etna/agents/maintenance.md +4 -1
  22. package/data/harnesses/etna/harness.json +2 -2
  23. package/data/harnesses/etna/skills/documentation/references/frontmatter.md +1 -1
  24. package/data/harnesses/etna/skills/documentation/scripts/doc-lint.mjs +1 -1
  25. package/data/harnesses/etna/skills/documentation/templates/Readme.md +2 -0
  26. package/data/harnesses/etna/skills/documentation/templates/structure.md +1 -0
  27. package/lib/install/materialize.mjs +51 -57
  28. package/package.json +2 -2
  29. package/data/harnesses/apollo/.mcp.json +0 -8
  30. package/data/harnesses/apollo/.prettierignore +0 -29
  31. package/data/harnesses/apollo/.prettierrc.json +0 -3
  32. package/data/harnesses/apollo/.vscode/settings.json +0 -19
  33. package/data/harnesses/apollo/CLAUDE.md +0 -162
  34. package/data/harnesses/apollo/agents/bookkeeper.md +0 -28
  35. package/data/harnesses/apollo/agents/brainstorm.md +0 -144
  36. package/data/harnesses/apollo/agents/change-review.md +0 -251
  37. package/data/harnesses/apollo/agents/lld-mode.md +0 -58
  38. package/data/harnesses/apollo/agents/maintenance.md +0 -234
  39. package/data/harnesses/apollo/agents/performance-review.md +0 -223
  40. package/data/harnesses/apollo/agents/retro.md +0 -46
  41. package/data/harnesses/apollo/codex/agents/bookkeeper.toml +0 -26
  42. package/data/harnesses/apollo/codex/agents/brainstorm.toml +0 -142
  43. package/data/harnesses/apollo/codex/agents/change-review.toml +0 -249
  44. package/data/harnesses/apollo/codex/agents/lld-mode.toml +0 -52
  45. package/data/harnesses/apollo/codex/agents/maintenance.toml +0 -228
  46. package/data/harnesses/apollo/codex/agents/performance-review.toml +0 -222
  47. package/data/harnesses/apollo/codex/agents/retro.toml +0 -45
  48. package/data/harnesses/apollo/harness.json +0 -19
  49. package/data/harnesses/apollo/hooks/approved-packages.md +0 -44
  50. package/data/harnesses/apollo/hooks/awareness.mjs +0 -405
  51. package/data/harnesses/apollo/hooks/check-bookkeeping-clean.mjs +0 -19
  52. package/data/harnesses/apollo/hooks/check-changelog-presence.mjs +0 -57
  53. package/data/harnesses/apollo/hooks/check-completion-integrity.mjs +0 -71
  54. package/data/harnesses/apollo/hooks/check-ownership.mjs +0 -22
  55. package/data/harnesses/apollo/hooks/compliance.mjs +0 -457
  56. package/data/harnesses/apollo/hooks/hooks.json +0 -23
  57. package/data/harnesses/apollo/hooks/lib/frozen.mjs +0 -58
  58. package/data/harnesses/apollo/hooks/lib/ownership.mjs +0 -242
  59. package/data/harnesses/apollo/hooks/lib/state.mjs +0 -170
  60. package/data/harnesses/apollo/rules/changelog.md +0 -27
  61. package/data/harnesses/apollo/rules/database.md +0 -34
  62. package/data/harnesses/apollo/rules/frontend.md +0 -30
  63. package/data/harnesses/apollo/rules/general.md +0 -40
  64. package/data/harnesses/apollo/rules/nomenclature.md +0 -30
  65. package/data/harnesses/apollo/rules/pnpm.md +0 -57
  66. package/data/harnesses/apollo/rules/testing.md +0 -64
  67. package/data/harnesses/apollo/skills/boundary/SKILL.md +0 -75
  68. package/data/harnesses/apollo/skills/boundary/references/index.md +0 -16
  69. package/data/harnesses/apollo/skills/boundary/references/mechanisms.md +0 -99
  70. package/data/harnesses/apollo/skills/boundary/references/packs/async-messaging.md +0 -81
  71. package/data/harnesses/apollo/skills/boundary/references/packs/auth.md +0 -93
  72. package/data/harnesses/apollo/skills/boundary/references/packs/build-config-runtime.md +0 -93
  73. package/data/harnesses/apollo/skills/boundary/references/packs/cloudflare.md +0 -93
  74. package/data/harnesses/apollo/skills/boundary/references/packs/frontend.md +0 -93
  75. package/data/harnesses/apollo/skills/boundary/references/packs/generic-tail.md +0 -55
  76. package/data/harnesses/apollo/skills/boundary/references/packs/persistence.md +0 -93
  77. package/data/harnesses/apollo/skills/boundary/references/packs/wire-api.md +0 -87
  78. package/data/harnesses/apollo/skills/brainstorm/README.md +0 -56
  79. package/data/harnesses/apollo/skills/brainstorm/SKILL.md +0 -173
  80. package/data/harnesses/apollo/skills/brainstorm/references/doctrine.md +0 -98
  81. package/data/harnesses/apollo/skills/brainstorm/references/harvest.md +0 -86
  82. package/data/harnesses/apollo/skills/brainstorm/references/session-schema.md +0 -186
  83. package/data/harnesses/apollo/skills/brainstorm/scripts/detector.mjs +0 -460
  84. package/data/harnesses/apollo/skills/design/SKILL.md +0 -121
  85. package/data/harnesses/apollo/skills/design/components/charts.md +0 -76
  86. package/data/harnesses/apollo/skills/design/components/collections.md +0 -132
  87. package/data/harnesses/apollo/skills/design/components/feedback.md +0 -47
  88. package/data/harnesses/apollo/skills/design/components/hooks.md +0 -35
  89. package/data/harnesses/apollo/skills/design/components/index.md +0 -143
  90. package/data/harnesses/apollo/skills/design/components/inputs.md +0 -327
  91. package/data/harnesses/apollo/skills/design/components/layout.md +0 -52
  92. package/data/harnesses/apollo/skills/design/components/media.md +0 -66
  93. package/data/harnesses/apollo/skills/design/components/motion.md +0 -82
  94. package/data/harnesses/apollo/skills/design/components/navigation.md +0 -29
  95. package/data/harnesses/apollo/skills/design/components/overlays.md +0 -72
  96. package/data/harnesses/apollo/skills/design/components/setup.md +0 -40
  97. package/data/harnesses/apollo/skills/design/components/typography.md +0 -46
  98. package/data/harnesses/apollo/skills/design/components/utils.md +0 -37
  99. package/data/harnesses/apollo/skills/design/data/blueprints/browse.md +0 -38
  100. package/data/harnesses/apollo/skills/design/data/blueprints/creation-flow.md +0 -38
  101. package/data/harnesses/apollo/skills/design/data/blueprints/dashboard.md +0 -38
  102. package/data/harnesses/apollo/skills/design/data/blueprints/grid.md +0 -38
  103. package/data/harnesses/apollo/skills/design/data/blueprints/queue.md +0 -38
  104. package/data/harnesses/apollo/skills/design/data/blueprints/record-detail.md +0 -38
  105. package/data/harnesses/apollo/skills/design/data/blueprints/settings.md +0 -38
  106. package/data/harnesses/apollo/skills/design/data/charts/census.csv +0 -58
  107. package/data/harnesses/apollo/skills/design/data/checklists/browse.md +0 -21
  108. package/data/harnesses/apollo/skills/design/data/checklists/creation-flow.md +0 -20
  109. package/data/harnesses/apollo/skills/design/data/checklists/dashboard.md +0 -21
  110. package/data/harnesses/apollo/skills/design/data/checklists/grid.md +0 -21
  111. package/data/harnesses/apollo/skills/design/data/checklists/queue.md +0 -21
  112. package/data/harnesses/apollo/skills/design/data/checklists/record-detail.md +0 -21
  113. package/data/harnesses/apollo/skills/design/data/checklists/settings.md +0 -21
  114. package/data/harnesses/apollo/skills/design/data/chrome/board-column.md +0 -68
  115. package/data/harnesses/apollo/skills/design/data/chrome/data-table.md +0 -63
  116. package/data/harnesses/apollo/skills/design/data/chrome/side-panel.md +0 -60
  117. package/data/harnesses/apollo/skills/design/data/chrome/sidebar.md +0 -78
  118. package/data/harnesses/apollo/skills/design/data/chrome/stat-cards.md +0 -62
  119. package/data/harnesses/apollo/skills/design/data/chrome/topbar.md +0 -65
  120. package/data/harnesses/apollo/skills/design/data/elevation/ant-design-directional-shadow.md +0 -19
  121. package/data/harnesses/apollo/skills/design/data/elevation/apple-liquid-glass-material.md +0 -18
  122. package/data/harnesses/apollo/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +0 -20
  123. package/data/harnesses/apollo/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +0 -20
  124. package/data/harnesses/apollo/skills/design/data/elevation/github-primer-sparing-shadow.md +0 -19
  125. package/data/harnesses/apollo/skills/design/data/elevation/ibm-carbon-layer-and-border.md +0 -19
  126. package/data/harnesses/apollo/skills/design/data/elevation/linear-dark-surface-ladder.md +0 -17
  127. package/data/harnesses/apollo/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +0 -19
  128. package/data/harnesses/apollo/skills/design/data/elevation/material-3-tonal-elevation.md +0 -21
  129. package/data/harnesses/apollo/skills/design/data/elevation/neobrutalist-hard-offset.md +0 -19
  130. package/data/harnesses/apollo/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +0 -18
  131. package/data/harnesses/apollo/skills/design/data/elevation/notion-warm-minimal-hairline.md +0 -17
  132. package/data/harnesses/apollo/skills/design/data/elevation/polaris-elevation-inset-bevel.md +0 -21
  133. package/data/harnesses/apollo/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +0 -19
  134. package/data/harnesses/apollo/skills/design/data/elevation/shadcn-neutral-derived-radius.md +0 -19
  135. package/data/harnesses/apollo/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +0 -18
  136. package/data/harnesses/apollo/skills/design/data/elevation/tailwind-default-utility-scale.md +0 -19
  137. package/data/harnesses/apollo/skills/design/data/elevation/vercel-geist-shadow-as-border.md +0 -20
  138. package/data/harnesses/apollo/skills/design/data/iconography.md +0 -199
  139. package/data/harnesses/apollo/skills/design/data/motion/accordion-expand.md +0 -18
  140. package/data/harnesses/apollo/skills/design/data/motion/destructive-hold-confirm.md +0 -18
  141. package/data/harnesses/apollo/skills/design/data/motion/drag-dismiss-momentum.md +0 -18
  142. package/data/harnesses/apollo/skills/design/data/motion/empty-state-arrive.md +0 -18
  143. package/data/harnesses/apollo/skills/design/data/motion/hover-lift.md +0 -18
  144. package/data/harnesses/apollo/skills/design/data/motion/modal-center-arrive.md +0 -18
  145. package/data/harnesses/apollo/skills/design/data/motion/number-ticker-roll.md +0 -18
  146. package/data/harnesses/apollo/skills/design/data/motion/onboarding-bounce.md +0 -18
  147. package/data/harnesses/apollo/skills/design/data/motion/panel-slide.md +0 -18
  148. package/data/harnesses/apollo/skills/design/data/motion/press-feedback.md +0 -18
  149. package/data/harnesses/apollo/skills/design/data/motion/progress-linear-loop.md +0 -18
  150. package/data/harnesses/apollo/skills/design/data/motion/route-crossfade.md +0 -18
  151. package/data/harnesses/apollo/skills/design/data/motion/rubber-band-overscroll.md +0 -18
  152. package/data/harnesses/apollo/skills/design/data/motion/skeleton-shimmer.md +0 -18
  153. package/data/harnesses/apollo/skills/design/data/motion/stagger-arrive.md +0 -18
  154. package/data/harnesses/apollo/skills/design/data/motion/toast-enter-stack.md +0 -18
  155. package/data/harnesses/apollo/skills/design/data/motion/tooltip-chain-instant.md +0 -18
  156. package/data/harnesses/apollo/skills/design/data/motion/trigger-anchored-reveal.md +0 -18
  157. package/data/harnesses/apollo/skills/design/data/tells.csv +0 -34
  158. package/data/harnesses/apollo/skills/design/data/voices/bright-collaborator.md +0 -29
  159. package/data/harnesses/apollo/skills/design/data/voices/direct-operator.md +0 -29
  160. package/data/harnesses/apollo/skills/design/data/voices/earnest-helper.md +0 -29
  161. package/data/harnesses/apollo/skills/design/data/voices/editorial-composed.md +0 -29
  162. package/data/harnesses/apollo/skills/design/data/voices/quiet-concierge.md +0 -29
  163. package/data/harnesses/apollo/skills/design/data/voices/warm-guide.md +0 -29
  164. package/data/harnesses/apollo/skills/design/references/compose.md +0 -23
  165. package/data/harnesses/apollo/skills/design/references/content.md +0 -28
  166. package/data/harnesses/apollo/skills/design/references/emission.md +0 -21
  167. package/data/harnesses/apollo/skills/design/references/existing-apps.md +0 -27
  168. package/data/harnesses/apollo/skills/design/references/foundations.md +0 -57
  169. package/data/harnesses/apollo/skills/design/references/intake.md +0 -40
  170. package/data/harnesses/apollo/skills/design/references/object-pass.md +0 -24
  171. package/data/harnesses/apollo/skills/design/references/ship-gate.md +0 -29
  172. package/data/harnesses/apollo/skills/design/references/ux-patterns/Readme.md +0 -195
  173. package/data/harnesses/apollo/skills/design/references/ux-patterns/ai-layer.md +0 -49
  174. package/data/harnesses/apollo/skills/design/references/ux-patterns/attributes-lifecycle.md +0 -43
  175. package/data/harnesses/apollo/skills/design/references/ux-patterns/container-choice.md +0 -44
  176. package/data/harnesses/apollo/skills/design/references/ux-patterns/creation-paths.md +0 -46
  177. package/data/harnesses/apollo/skills/design/references/ux-patterns/dashboards.md +0 -42
  178. package/data/harnesses/apollo/skills/design/references/ux-patterns/modes.md +0 -42
  179. package/data/harnesses/apollo/skills/design/references/ux-patterns/object-model.md +0 -46
  180. package/data/harnesses/apollo/skills/design/references/ux-patterns/page-archetype.md +0 -48
  181. package/data/harnesses/apollo/skills/design/references/ux-patterns/promotion-demotion.md +0 -37
  182. package/data/harnesses/apollo/skills/design/references/ux-patterns/settings.md +0 -42
  183. package/data/harnesses/apollo/skills/design/references/ux-patterns/standard-pages.md +0 -46
  184. package/data/harnesses/apollo/skills/design/references/ux-patterns/state-matrix.md +0 -41
  185. package/data/harnesses/apollo/skills/design/references/ux-patterns/table-mechanics.md +0 -48
  186. package/data/harnesses/apollo/skills/design/references/ux-patterns/verbs.md +0 -45
  187. package/data/harnesses/apollo/skills/design/references/ux-patterns/viewer-context.md +0 -40
  188. package/data/harnesses/apollo/skills/design/scripts/README-validator.md +0 -27
  189. package/data/harnesses/apollo/skills/design/scripts/select-chart.mjs +0 -622
  190. package/data/harnesses/apollo/skills/design/scripts/validate-design-md.mjs +0 -1198
  191. package/data/harnesses/apollo/skills/documentation/SKILL.md +0 -135
  192. package/data/harnesses/apollo/skills/documentation/references/examples.md +0 -279
  193. package/data/harnesses/apollo/skills/documentation/references/frontmatter.md +0 -44
  194. package/data/harnesses/apollo/skills/documentation/references/instruction-style.md +0 -50
  195. package/data/harnesses/apollo/skills/documentation/references/style-guide.md +0 -384
  196. package/data/harnesses/apollo/skills/documentation/references/untemplated.md +0 -38
  197. package/data/harnesses/apollo/skills/documentation/scripts/doc-lint.mjs +0 -140
  198. package/data/harnesses/apollo/skills/documentation/templates/Readme.md +0 -35
  199. package/data/harnesses/apollo/skills/documentation/templates/api-reference.md +0 -20
  200. package/data/harnesses/apollo/skills/documentation/templates/architecture-decision.md +0 -121
  201. package/data/harnesses/apollo/skills/documentation/templates/backlog.md +0 -33
  202. package/data/harnesses/apollo/skills/documentation/templates/behavioral-checklist.md +0 -81
  203. package/data/harnesses/apollo/skills/documentation/templates/bookkeeping.md +0 -18
  204. package/data/harnesses/apollo/skills/documentation/templates/changelog-entry.md +0 -57
  205. package/data/harnesses/apollo/skills/documentation/templates/changelog-index.md +0 -41
  206. package/data/harnesses/apollo/skills/documentation/templates/docs-readme.md +0 -72
  207. package/data/harnesses/apollo/skills/documentation/templates/domain-model.md +0 -30
  208. package/data/harnesses/apollo/skills/documentation/templates/environment-registry.md +0 -15
  209. package/data/harnesses/apollo/skills/documentation/templates/feature.md +0 -150
  210. package/data/harnesses/apollo/skills/documentation/templates/glossary.md +0 -11
  211. package/data/harnesses/apollo/skills/documentation/templates/implementation-map.md +0 -42
  212. package/data/harnesses/apollo/skills/documentation/templates/journal.md +0 -13
  213. package/data/harnesses/apollo/skills/documentation/templates/memory-main.md +0 -25
  214. package/data/harnesses/apollo/skills/documentation/templates/migration-runbook.md +0 -34
  215. package/data/harnesses/apollo/skills/documentation/templates/non-goals.md +0 -11
  216. package/data/harnesses/apollo/skills/documentation/templates/operations-procedure.md +0 -36
  217. package/data/harnesses/apollo/skills/documentation/templates/plan.md +0 -88
  218. package/data/harnesses/apollo/skills/documentation/templates/protected-files.md +0 -37
  219. package/data/harnesses/apollo/skills/documentation/templates/root-readme.md +0 -104
  220. package/data/harnesses/apollo/skills/documentation/templates/security-overview.md +0 -27
  221. package/data/harnesses/apollo/skills/documentation/templates/structure.md +0 -65
  222. package/data/harnesses/apollo/skills/documentation/templates/system-overview.md +0 -32
  223. package/data/harnesses/apollo/skills/documentation/templates/testing-strategy.md +0 -29
  224. package/data/harnesses/apollo/skills/schema-design/SKILL.md +0 -141
  225. package/data/harnesses/apollo/skills/test/SKILL.md +0 -104
  226. package/data/harnesses/apollo/skills/testing/SKILL.md +0 -166
  227. package/data/harnesses/apollo/skills/workflow-mapper/SKILL.md +0 -451
  228. package/data/harnesses/apollo/skills/workflow-mapper/references/patterns.md +0 -214
  229. /package/data/harnesses/{apollo → code}/docs/README.md +0 -0
  230. /package/data/harnesses/{apollo → code}/docs/history/CHANGELOG.md +0 -0
  231. /package/data/harnesses/{apollo → code}/docs/history/backlog.md +0 -0
  232. /package/data/harnesses/{apollo → code}/docs/memory/main.md +0 -0
  233. /package/data/harnesses/{apollo → code}/docs/structure.md +0 -0
  234. /package/data/harnesses/{apollo → code}/rules/cloudflare.md +0 -0
@@ -1,451 +0,0 @@
1
- ---
2
- name: workflow-mapper
3
- description: "Use when mapping a codebase's major workflows — traces call chains from user action to database or external system and produces mermaid sequence diagrams + markdown. Triggers on 'map workflows', 'trace flows', 'sequence diagram', 'how does X work end-to-end'."
4
- ---
5
-
6
- # Workflow Mapper Skill
7
-
8
- Identify and document every major workflow in a codebase by tracing execution paths from trigger to terminal effect. Output is a single markdown file with mermaid sequence diagrams.
9
-
10
- ---
11
-
12
- ## Decision Tree
13
-
14
- ```
15
- User request
16
- │
17
- ├─ "Map all workflows" ────────────▶ Full Discovery (all phases)
18
- │
19
- ├─ "Map workflow for {feature}" ───▶ Targeted Discovery (skip Phase 1 broad scan)
20
- │
21
- ├─ "Update workflow map" ──────────▶ Incremental (diff against existing map)
22
- │
23
- └─ "How does X work end-to-end" ──▶ Single Workflow Trace (Phase 2-4 only)
24
- ```
25
-
26
- ---
27
-
28
- ## Phase 1: Entry Point Discovery
29
-
30
- Find all places where a multi-step process begins. Use parallel sub-agents — one per technique.
31
-
32
- ### Technique 1: Route Harvesting
33
-
34
- Scan all API route definitions. These are the primary entry points for backend workflows.
35
-
36
- ```
37
- Search patterns (adapt to framework):
38
- Express: router.(get|post|put|patch|delete)\(
39
- Fastify: fastify.(get|post|put|patch|delete)\(
40
- Next.js: export (async )?function (GET|POST|PUT|PATCH|DELETE)
41
- Hono: app.(get|post|put|patch|delete)\(
42
- tRPC: .query\(|.mutation\(
43
- ```
44
-
45
- For each route, record: `{ method, path, handler_function, file }`.
46
-
47
- Filter out trivial CRUD (single DB call + response). Keep routes that:
48
-
49
- - Call `startWorkflow`, `addJob`, `enqueue`, `emit`, `publish` (async dispatch)
50
- - Call 2+ service functions sequentially
51
- - Have transaction blocks (`$transaction`, `BEGIN`, `withTransaction`)
52
- - Return a job/workflow ID for polling
53
- - Trigger WebSocket/SSE events
54
-
55
- ### Technique 2: Background Job Discovery
56
-
57
- Find all registered background jobs, workflows, and queues.
58
-
59
- ```
60
- Search patterns:
61
- Temporal: export async function .*Workflow|workflowModules|startChild\(
62
- BullMQ: new Queue\(|new Worker\(|.add\(|.process\(
63
- Celery: @app.task|@shared_task
64
- Inngest: createFunction\(|inngest.send\(
65
- Cron: cron.schedule\(|@Cron\(|node-cron
66
- EventEmitter: .on\(|.emit\(|EventEmitter
67
- ```
68
-
69
- For Temporal specifically, also check:
70
-
71
- - `temporal/config/workflowModules.js` — workflow registry with queues and dependencies
72
- - `temporal/config/activityModules.js` — activity aggregation
73
-
74
- ### Technique 3: Frontend Action Tracing
75
-
76
- Find UI-initiated multi-step flows.
77
-
78
- ```
79
- Search patterns:
80
- Redux thunks: createAsyncThunk\(|dispatch\(
81
- API calls: api\.(post|put|patch|delete)\(|axios\.(post|put|patch|delete)\(|fetch\(
82
- Form submits: onSubmit|handleSubmit
83
- Custom hooks: use[A-Z].*\(\) that contain API calls
84
- ```
85
-
86
- Focus on actions that:
87
-
88
- - POST/PUT/PATCH/DELETE to backend (not just GETs)
89
- - Dispatch multiple Redux actions in sequence
90
- - Start polling loops (`setInterval`, recursive `setTimeout`, retry patterns)
91
- - Open WebSocket connections or listen for server-sent events
92
-
93
- ### Technique 4: Event & Message Tracing
94
-
95
- Find event-driven workflows (WebSocket, pub/sub, SSE).
96
-
97
- ```
98
- Search patterns:
99
- WebSocket: socket.on\(|io.on\(|ws.on\(
100
- SSE: EventSource|text/event-stream
101
- Redis pub: .publish\(|.subscribe\(
102
- Message: .sendMessage\(|.postMessage\(
103
- ```
104
-
105
- ### Technique 5: Scheduled & Lifecycle Workflows
106
-
107
- ```
108
- Search patterns:
109
- App startup: app.listen|bootstrap|onModuleInit|main\(\)
110
- Shutdown: SIGTERM|SIGINT|gracefulShutdown|onModuleDestroy
111
- Migrations: migrate|seed|up\(\)|down\(\)
112
- Health checks: /health|/ping|/ready|/live
113
- ```
114
-
115
- ---
116
-
117
- ## Phase 2: Call Chain Tracing
118
-
119
- For each discovered entry point, trace the full execution path. Use one sub-agent per workflow for parallelism.
120
-
121
- ### Tracing Algorithm
122
-
123
- ```
124
- 1. Start at the entry point function
125
- 2. Read the function body
126
- 3. For each function call or await:
127
- a. Is it a DB operation? → Record as "Database" participant action
128
- b. Is it an external API call? → Record as "{ServiceName}" participant action
129
- c. Is it a queue/workflow dispatch? → Record as "{QueueSystem}" participant, then recurse into the dispatched handler
130
- d. Is it a Redux dispatch? → Record as "Redux" participant action
131
- e. Is it an internal function in the same service? → Recurse (but cap depth at 4)
132
- f. Is it a WebSocket emit? → Record as "WebSocket" participant action
133
- 4. Record branching (if/else, try/catch, switch) as alt/opt blocks
134
- 5. Record loops (polling, retry, pagination) as loop blocks
135
- 6. Stop when you hit: a return to the caller, a terminal DB write, or an external system response
136
- 7. If a workflow trace exceeds the configured depth cap, stop tracing and note the overflow point with a comment like "→ [continues deeper, capped at depth N]". Do not silently truncate.
137
- ```
138
-
139
- ### Participant Identification
140
-
141
- Map code actors to diagram participants using this hierarchy:
142
-
143
- | Code Pattern | Participant Name |
144
- | --- | --- |
145
- | React component, hook, event handler | `User` + `Frontend` |
146
- | Express/API route handler | `API` |
147
- | Temporal workflow | `Temporal` |
148
- | BullMQ worker/processor | `Queue` |
149
- | Prisma/Sequelize/Knex call | `Database` |
150
- | External HTTP call (axios, fetch to external URL) | `{ServiceName}` (derive from URL or config) |
151
- | Redis operation | `Cache` |
152
- | WebSocket emit/broadcast | `WebSocket` |
153
- | File system / S3 / storage | `Storage` |
154
- | Git API calls | `Git` |
155
- | Email/SMS send | `Notifications` |
156
- | Auth provider (Keycloak, Better Auth, Auth0) | `Auth` |
157
-
158
- ### Branching Detection
159
-
160
- Look for conditional logic that represents meaningful workflow forks:
161
-
162
- ```
163
- - Version conflicts (optimistic locking) → alt block
164
- - Permission/auth checks → opt block
165
- - Feature flags → opt block
166
- - Error handling with different outcomes → alt block
167
- - Retry with backoff → loop block
168
- - Polling for completion → loop block
169
- - Batch processing → loop block
170
- ```
171
-
172
- ---
173
-
174
- ## Phase 3: Classification & Filtering
175
-
176
- Not every API route is a "workflow". Classify and filter.
177
-
178
- ### Workflow Categories
179
-
180
- | Category | Criteria | Include? |
181
- | --- | --- | --- |
182
- | **Orchestration** | Multi-step, multi-service, async handoffs (save, publish, deploy) | Always |
183
- | **Auth & Session** | Login, logout, token refresh, SSO flows | Always |
184
- | **Real-time** | WebSocket connections, live updates, presence | Always |
185
- | **Event-driven** | Pub/sub chains, webhook handlers, event sourcing | Always |
186
- | **Scheduled** | Cron jobs, recurring workflows, cleanup tasks | Always |
187
- | **Data Pipeline** | ETL, import/export, migration, sync between systems | Always |
188
- | **Simple CRUD** | Single DB call + response, no branching | Skip |
189
- | **Static Serving** | File serving, asset delivery | Skip |
190
- | **Health/Config** | Health checks, config endpoints | Skip |
191
-
192
- ### Complexity Scoring
193
-
194
- Score each workflow to determine diagram detail level:
195
-
196
- - **Steps**: Count distinct operations (DB calls, API calls, dispatches). 1-2 = simple, 3-5 = moderate, 6+ = complex
197
- - **Participants**: Count distinct systems involved. 2 = simple, 3-4 = moderate, 5+ = complex
198
- - **Branching**: Count alt/opt blocks. 0 = linear, 1-2 = moderate, 3+ = complex
199
- - **Async**: Has polling, callbacks, child workflows? +1 complexity level
200
-
201
- Simple workflows get a compact diagram. Complex workflows get full detail with alt/opt/loop blocks.
202
-
203
- ---
204
-
205
- ## Phase 4: Mermaid Diagram Generation
206
-
207
- ### Diagram Template
208
-
209
- ````markdown
210
- ### {Workflow Name}
211
-
212
- **Trigger:** {What initiates this — button click, API call, cron schedule, event} **Participants:** {List of systems involved} **Key files:** {3-5 most important files in the chain}
213
-
214
- ```mermaid
215
- sequenceDiagram
216
- participant User
217
- participant Frontend
218
- participant API
219
- participant Database
220
-
221
- User->>Frontend: {User action}
222
- Frontend->>API: {HTTP method} {path}
223
- API->>Database: {Operation}
224
- Database-->>API: {Result}
225
- API-->>Frontend: {Response}
226
- Frontend-->>User: {UI update}
227
- ```
228
-
229
- **Notes:**
230
-
231
- - {Important implementation detail not visible in diagram}
232
- - {Performance consideration, timeout, retry policy}
233
- - {Known edge cases or failure modes}
234
- ````
235
-
236
- ### Diagram Rules
237
-
238
- 1. **Arrow types**: Solid (`->>`) for calls/requests, dashed (`-->>`) for returns/responses
239
- 2. **Activation bars**: Use `activate`/`deactivate` only for long-running operations (Temporal workflows, polling loops)
240
- 3. **Alt blocks**: Use for real workflow branching (conflict vs success), not for error handling
241
- 4. **Loop blocks**: Use for polling, retry, batch processing — include the condition
242
- 5. **Opt blocks**: Use for conditional steps (feature flags, optional integrations)
243
- 6. **Notes**: Use `Note over` for context that doesn't fit in arrow labels
244
- 7. **Participant order**: Left-to-right follows the data flow direction (User → Frontend → API → Backend → Database)
245
- 8. **Label brevity**: Arrow labels should be ≤8 words. Use the action, not the implementation detail
246
- 9. **Max participants**: 7 per diagram. If more, split into sub-diagrams or collapse internal services
247
- 10. **Max steps**: 15 visible interactions per diagram. For longer workflows, group related steps or use `rect` blocks
248
-
249
- ### Grouping Related Steps
250
-
251
- For workflows with many sequential same-type operations, collapse them:
252
-
253
- ```mermaid
254
- sequenceDiagram
255
- rect rgb(240, 240, 240)
256
- Note over Temporal,Database: Save all entities (10 types)
257
- Temporal->>Database: Upsert objects, attributes, pages...
258
- Database-->>Temporal: Saved
259
- end
260
- ```
261
-
262
- ---
263
-
264
- ## Phase 5: Output Assembly
265
-
266
- ### Output File Structure
267
-
268
- Write to the user-specified path, or default to `docs/architecture/workflows.md`. Before writing output files, ensure the target directory exists. Create it with `mkdir -p` if needed.
269
-
270
- ```markdown
271
- ---
272
- generated: { YYYY-MM-DD }
273
- scope: { full | feature-name }
274
- workflows_found: { count }
275
- ---
276
-
277
- # Codebase Workflows
278
-
279
- Auto-generated workflow map. Traces execution paths from user action to terminal effect.
280
-
281
- ## Table of Contents
282
-
283
- | Workflow | Category | Trigger | Participants | Complexity |
284
- | --- | --- | --- | --- | --- |
285
- | [{Name}](#{anchor}) | {Category} | {Trigger} | {Count} | {Simple/Moderate/Complex} |
286
-
287
- ---
288
-
289
- ## Orchestration Workflows
290
-
291
- ### {Workflow Name}
292
-
293
- {Diagram + metadata as defined in Phase 4}
294
-
295
- ---
296
-
297
- ## Authentication & Session Workflows
298
-
299
- ### {Workflow Name}
300
-
301
- {...}
302
-
303
- ---
304
-
305
- ## Real-time Workflows
306
-
307
- ### {Workflow Name}
308
-
309
- {...}
310
-
311
- ---
312
-
313
- ## Event-driven Workflows
314
-
315
- ### {Workflow Name}
316
-
317
- {...}
318
-
319
- ---
320
-
321
- ## Scheduled Workflows
322
-
323
- ### {Workflow Name}
324
-
325
- {...}
326
-
327
- ---
328
-
329
- ## Data Pipeline Workflows
330
-
331
- ### {Workflow Name}
332
-
333
- {...}
334
- ```
335
-
336
- ### Section Ordering
337
-
338
- 1. Orchestration (the core business logic — save, publish, deploy)
339
- 2. Authentication & Session
340
- 3. Real-time (WebSocket, SSE)
341
- 4. Event-driven (pub/sub, webhooks)
342
- 5. Scheduled (cron, recurring)
343
- 6. Data Pipeline (import/export, sync, migration)
344
-
345
- Skip empty sections.
346
-
347
- ---
348
-
349
- ## Execution Strategy
350
-
351
- ### Full Discovery (default)
352
-
353
- Launch 5 parallel sub-agents for Phase 1 (one per technique). Collect results, deduplicate entry points, then launch parallel sub-agents for Phase 2 (one per workflow, max 8 concurrent). Run Phase 3-5 sequentially in the main agent.
354
-
355
- ### Targeted Discovery
356
-
357
- User specifies a feature name. Skip broad Phase 1 scan. Instead:
358
-
359
- 1. Find the feature's directory/files (grep for feature name in routes, components, workflows)
360
- 2. Trace from those entry points only
361
- 3. Output a single-feature workflow document
362
-
363
- ### Incremental Update
364
-
365
- Read the existing workflow map file. For each workflow listed, check if the key files have changed (git diff). Re-trace only changed workflows. Preserve unchanged sections.
366
-
367
- ---
368
-
369
- ## Advanced Techniques
370
-
371
- ### Payload Storage Detection
372
-
373
- Look for patterns where large payloads are stored separately and referenced by ID:
374
-
375
- ```
376
- storePayload|savePayload|workflow_payload|jobData
377
- → then: retrievePayload|fetchPayload|getPayload (in the worker/activity)
378
- ```
379
-
380
- Note this in the diagram as a "Store payload → reference by ID" pattern.
381
-
382
- ### Optimistic Locking Detection
383
-
384
- Look for version comparison patterns:
385
-
386
- ```
387
- version.*!==|version.*conflict|StaleObjectError|OptimisticLock
388
- if.*serverVersion.*localVersion|if.*version.*mismatch
389
- ```
390
-
391
- These indicate conflict branching that should appear as `alt` blocks.
392
-
393
- ### Polling Loop Detection
394
-
395
- Look for patterns where the frontend waits for async completion:
396
-
397
- ```
398
- setInterval|setTimeout.*recursive|poll|retry.*status
399
- GET.*status\?.*workflowId|GET.*status\?.*jobId
400
- ```
401
-
402
- Note the polling interval and timeout in the diagram.
403
-
404
- ### Child Workflow / Sub-job Detection
405
-
406
- Look for spawned sub-processes:
407
-
408
- ```
409
- startChild\(|spawnChild|fork\(|.add\(.*queue
410
- Promise\.all.*map.*startWorkflow
411
- ```
412
-
413
- These should appear as nested sequences or separate linked diagrams.
414
-
415
- ### Transaction Boundary Detection
416
-
417
- Look for explicit transaction markers:
418
-
419
- ```
420
- \$transaction|\$executeRaw|BEGIN|COMMIT|ROLLBACK
421
- withTransaction|runInTransaction|atomic
422
- ```
423
-
424
- Group operations within a transaction using `rect` blocks in the diagram.
425
-
426
- ### Rate Limiting & Middleware Detection
427
-
428
- Look for middleware applied to route groups:
429
-
430
- ```
431
- rateLimit|rateLimiter|throttle
432
- authenticate|authorize|requireAuth|requireRole
433
- validate|validateBody|validateParams
434
- ```
435
-
436
- Note these as guards in the diagram using `opt` blocks or notes.
437
-
438
- ---
439
-
440
- ## Quality Checks
441
-
442
- Before outputting, verify:
443
-
444
- - [ ] Every diagram has ≥3 participants (otherwise it's probably too simple to document)
445
- - [ ] Every diagram has both request and response arrows (no dangling calls)
446
- - [ ] Participant names are consistent across all diagrams (same DB = same name everywhere)
447
- - [ ] Alt/opt/loop blocks have clear conditions written in the block label
448
- - [ ] Key files listed actually exist in the codebase (verify with glob)
449
- - [ ] No workflow is documented twice under different names
450
- - [ ] Mermaid syntax is valid (no unclosed blocks, balanced activate/deactivate)
451
- - [ ] Table of contents anchors match actual heading anchors
@@ -1,214 +0,0 @@
1
- # Search Pattern Reference
2
-
3
- Concrete grep/glob patterns for each discovery technique. Agents should adapt these to the actual framework detected in the codebase.
4
-
5
- ---
6
-
7
- ## Framework Detection (run first)
8
-
9
- Identify the tech stack to select the right patterns:
10
-
11
- | Check | Pattern | Means |
12
- | --- | --- | --- |
13
- | `package.json` contains `express` | `"express"` | Express backend |
14
- | `package.json` contains `@temporalio` | `"@temporalio"` | Temporal workflows |
15
- | `package.json` contains `bullmq` | `"bullmq"` | BullMQ job queues |
16
- | `package.json` contains `@reduxjs/toolkit` | `"@reduxjs/toolkit"` | Redux state management |
17
- | `package.json` contains `socket.io` | `"socket.io"` | WebSocket via Socket.IO |
18
- | `app/workflows/` exists | glob `app/workflows/` | Workflow directory convention |
19
- | `temporal/config/` exists | glob `temporal/config/` | Temporal config convention |
20
- | Files matching `*.workflow.ts` | glob `**/*.workflow.*` | Workflow file convention |
21
- | Files matching `*.queue.ts` | glob `**/*.queue.*` | Queue file convention |
22
-
23
- ---
24
-
25
- ## Route Harvesting Patterns
26
-
27
- ### Express
28
-
29
- ```
30
- # Route definitions
31
- grep: router\.(get|post|put|patch|delete)\(
32
- glob: **/routes/**/*.{js,ts}, **/router/**/*.{js,ts}
33
-
34
- # Route mounting
35
- grep: app\.use\(.*/api
36
- ```
37
-
38
- ### Next.js App Router
39
-
40
- ```
41
- glob: app/**/route.{js,ts}
42
- grep: export (async )?function (GET|POST|PUT|PATCH|DELETE)
43
- ```
44
-
45
- ### Next.js Pages API
46
-
47
- ```
48
- glob: pages/api/**/*.{js,ts}
49
- grep: export default (async )?function handler
50
- ```
51
-
52
- ### Fastify
53
-
54
- ```
55
- grep: fastify\.(get|post|put|patch|delete)\(
56
- grep: (register|plugin).*routes
57
- ```
58
-
59
- ---
60
-
61
- ## Temporal Workflow Patterns
62
-
63
- ```
64
- # Workflow definitions
65
- grep: export async function \w+Workflow
66
- glob: **/workflow.{js,ts}, **/*.workflow.{js,ts}
67
-
68
- # Activity definitions
69
- grep: export async function \w+Activity
70
- glob: **/activities.{js,ts}, **/*.activities.{js,ts}
71
-
72
- # Workflow registry
73
- glob: **/workflowModules.{js,ts}
74
- grep: workflows\s*=\s*\{
75
-
76
- # Activity registry
77
- glob: **/activityModules.{js,ts}
78
- grep: activities\s*=\s*\{
79
-
80
- # Workflow dispatch
81
- grep: startWorkflow\(|startChild\(|executeChild\(
82
-
83
- # Activity proxy
84
- grep: proxyActivities\(
85
-
86
- # Signals and queries
87
- grep: defineSignal\(|defineQuery\(|setHandler\(
88
-
89
- # Continue-as-new
90
- grep: continueAsNew\(
91
- ```
92
-
93
- ---
94
-
95
- ## BullMQ Patterns
96
-
97
- ```
98
- # Queue definitions
99
- grep: new Queue\(|new FlowProducer\(
100
- glob: **/queue.{js,ts}, **/*.queue.{js,ts}
101
-
102
- # Worker definitions
103
- grep: new Worker\(
104
- glob: **/worker.{js,ts}, **/*.worker.{js,ts}
105
-
106
- # Job dispatch
107
- grep: \.add\(|\.addBulk\(|\.addFlow\(
108
-
109
- # Job processing
110
- grep: \.process\(|processor:
111
- ```
112
-
113
- ---
114
-
115
- ## Redux / Frontend Action Patterns
116
-
117
- ```
118
- # Async thunks (dispatched actions that call APIs)
119
- grep: createAsyncThunk\(
120
- glob: **/*Slice.{js,ts}, **/*slice.{js,ts}, **/slices/**/*.{js,ts}
121
-
122
- # API calls from frontend
123
- grep: api\.(post|put|patch|delete)\(|axios\.(post|put|patch|delete)\(
124
- glob: **/hooks/use*.{js,ts,jsx,tsx}, **/services/**/*.{js,ts}
125
-
126
- # Dispatch sequences
127
- grep: dispatch\(.*Actions?\.|dispatch\(.*thunk
128
- ```
129
-
130
- ---
131
-
132
- ## WebSocket Patterns
133
-
134
- ```
135
- # Socket.IO server
136
- grep: io\.on\(|socket\.on\(|socket\.emit\(
137
- glob: **/socket/**/*.{js,ts}, **/ws/**/*.{js,ts}
138
-
139
- # Socket.IO client
140
- grep: socket\.on\(|socket\.emit\(|useSocket
141
- glob: **/hooks/useSocket*.{js,ts,jsx,tsx}
142
-
143
- # Native WebSocket
144
- grep: new WebSocket\(|ws\.on\(
145
- ```
146
-
147
- ---
148
-
149
- ## Database Patterns
150
-
151
- ```
152
- # Prisma
153
- grep: prisma\.\w+\.(findMany|findFirst|findUnique|create|update|delete|upsert|aggregate|groupBy)
154
- grep: \$transaction\(|\$executeRaw\(|\$queryRaw\(
155
-
156
- # Sequelize
157
- grep: \.findAll\(|\.findOne\(|\.create\(|\.update\(|\.destroy\(
158
- grep: sequelize\.transaction\(
159
-
160
- # Raw SQL
161
- grep: \.query\(|\.execute\(|BEGIN|COMMIT|ROLLBACK
162
- ```
163
-
164
- ---
165
-
166
- ## External Service Patterns
167
-
168
- ```
169
- # Outbound HTTP (to other services)
170
- grep: axios\.(get|post|put|patch|delete)\(|fetch\(.*https?://
171
- grep: got\.(get|post|put|patch|delete)\(|request\.(get|post|put|patch|delete)\(
172
-
173
- # Git operations
174
- grep: git.*push|git.*commit|createBlob|createTree|createCommit|updateRef
175
- grep: octokit\.|@octokit/
176
-
177
- # Email
178
- grep: sendMail|transporter\.send|sgMail\.send|resend\.send
179
-
180
- # File storage
181
- grep: s3\.upload|s3\.putObject|uploadToS3|writeFile.*storage
182
- ```
183
-
184
- ---
185
-
186
- ## Workflow Complexity Indicators
187
-
188
- Patterns that suggest a route is a real workflow (not simple CRUD):
189
-
190
- ```
191
- # Async dispatch (work happens later)
192
- grep: startWorkflow\(|\.add\(.*queue|emit\(|publish\(
193
-
194
- # Multi-step (sequential calls)
195
- # Look for functions with 3+ await statements to different services
196
-
197
- # Transaction blocks
198
- grep: \$transaction|\$executeRaw|BEGIN.*COMMIT|withTransaction
199
-
200
- # Polling/status endpoints
201
- grep: /status\?|workflowId|jobId|runId
202
-
203
- # Version/conflict checks
204
- grep: version.*conflict|optimistic|stale|409
205
-
206
- # Retry/backoff
207
- grep: maximumAttempts|retry|backoff|exponential
208
-
209
- # Child/sub workflows
210
- grep: startChild\(|spawnChild|fork\(
211
-
212
- # Feature flags / conditional steps
213
- grep: featureFlag|isEnabled|canAccess
214
- ```
File without changes