showdar-skills 0.2.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 (304) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +322 -0
  3. package/bin/showdar.js +118 -0
  4. package/bundles/bugfix.yaml +4 -0
  5. package/bundles/design.yaml +4 -0
  6. package/bundles/feature.yaml +4 -0
  7. package/bundles/release.yaml +4 -0
  8. package/bundles/upgrade.yaml +4 -0
  9. package/commands/opencode/showdar/build.md +6 -0
  10. package/commands/opencode/showdar/debug.md +6 -0
  11. package/commands/opencode/showdar/design.md +6 -0
  12. package/commands/opencode/showdar/git.md +6 -0
  13. package/commands/opencode/showdar/ops.md +7 -0
  14. package/commands/opencode/showdar/plan.md +6 -0
  15. package/commands/opencode/showdar/quality.md +7 -0
  16. package/commands/opencode/showdar/recover.md +6 -0
  17. package/commands/opencode/showdar/requirements.md +7 -0
  18. package/commands/opencode/showdar/review.md +6 -0
  19. package/commands/opencode/showdar/security.md +7 -0
  20. package/commands/opencode/showdar/ship.md +6 -0
  21. package/commands/opencode/showdar/skill.md +6 -0
  22. package/commands/opencode/showdar/test.md +6 -0
  23. package/commands/opencode/showdar/understand.md +6 -0
  24. package/commands/opencode/showdar/upgrade.md +6 -0
  25. package/engine/csv.mjs +45 -0
  26. package/engine/detect-stack.mjs +48 -0
  27. package/engine/rank.mjs +40 -0
  28. package/engine/search.mjs +20 -0
  29. package/package.json +28 -0
  30. package/profiles/backend.json +1 -0
  31. package/profiles/developer.json +1 -0
  32. package/profiles/full.json +1 -0
  33. package/profiles/minimal.json +1 -0
  34. package/profiles/product.json +1 -0
  35. package/profiles/qa.json +1 -0
  36. package/router/conflicts.yaml +50 -0
  37. package/router/skill-map.yaml +54 -0
  38. package/router/triggers.yaml +30 -0
  39. package/skills/showdar-build/SKILL.md +154 -0
  40. package/skills/showdar-build/data/change-smells.csv +24 -0
  41. package/skills/showdar-build/data/index.json +14 -0
  42. package/skills/showdar-build/examples/change-surface.md +18 -0
  43. package/skills/showdar-build/references/architecture-boundaries.md +3 -0
  44. package/skills/showdar-build/references/error-handling.md +3 -0
  45. package/skills/showdar-build/references/feature-flags.md +3 -0
  46. package/skills/showdar-build/references/minimal-change.md +3 -0
  47. package/skills/showdar-build/scripts/change-surface.mjs +5 -0
  48. package/skills/showdar-build/stacks/dart.md +3 -0
  49. package/skills/showdar-build/stacks/flutter.md +3 -0
  50. package/skills/showdar-build/stacks/kotlin.md +3 -0
  51. package/skills/showdar-build/stacks/nextjs.md +3 -0
  52. package/skills/showdar-build/stacks/node-fastify.md +3 -0
  53. package/skills/showdar-build/stacks/node-nestjs.md +3 -0
  54. package/skills/showdar-build/stacks/react-native.md +3 -0
  55. package/skills/showdar-build/stacks/react.md +3 -0
  56. package/skills/showdar-build/stacks/rust-tauri.md +3 -0
  57. package/skills/showdar-build/stacks/swift.md +3 -0
  58. package/skills/showdar-build/stacks/typescript.md +3 -0
  59. package/skills/showdar-debug/SKILL.md +179 -0
  60. package/skills/showdar-debug/data/failure-patterns.csv +34 -0
  61. package/skills/showdar-debug/data/index.json +14 -0
  62. package/skills/showdar-debug/examples/evidence-log.md +19 -0
  63. package/skills/showdar-debug/references/async-races.md +3 -0
  64. package/skills/showdar-debug/references/build-failures.md +3 -0
  65. package/skills/showdar-debug/references/hypothesis-driven-debugging.md +3 -0
  66. package/skills/showdar-debug/references/memory.md +3 -0
  67. package/skills/showdar-debug/references/networking.md +3 -0
  68. package/skills/showdar-debug/references/performance.md +3 -0
  69. package/skills/showdar-debug/scripts/collect-context.mjs +8 -0
  70. package/skills/showdar-debug/scripts/lib/detect-stack.mjs +48 -0
  71. package/skills/showdar-debug/stacks/android.md +21 -0
  72. package/skills/showdar-debug/stacks/docker.md +21 -0
  73. package/skills/showdar-debug/stacks/flutter.md +21 -0
  74. package/skills/showdar-debug/stacks/ios.md +21 -0
  75. package/skills/showdar-debug/stacks/nextjs.md +21 -0
  76. package/skills/showdar-debug/stacks/node.md +21 -0
  77. package/skills/showdar-debug/stacks/react-native.md +21 -0
  78. package/skills/showdar-debug/stacks/react.md +21 -0
  79. package/skills/showdar-debug/stacks/tauri.md +21 -0
  80. package/skills/showdar-design/SKILL.md +179 -0
  81. package/skills/showdar-design/data/accessibility.csv +16 -0
  82. package/skills/showdar-design/data/colors.csv +13 -0
  83. package/skills/showdar-design/data/components.csv +20 -0
  84. package/skills/showdar-design/data/index.json +25 -0
  85. package/skills/showdar-design/data/motion.csv +13 -0
  86. package/skills/showdar-design/data/products.csv +19 -0
  87. package/skills/showdar-design/data/stacks/compose.csv +9 -0
  88. package/skills/showdar-design/data/stacks/flutter.csv +9 -0
  89. package/skills/showdar-design/data/stacks/html-tailwind.csv +9 -0
  90. package/skills/showdar-design/data/stacks/nextjs.csv +9 -0
  91. package/skills/showdar-design/data/stacks/nuxt.csv +9 -0
  92. package/skills/showdar-design/data/stacks/react-native.csv +9 -0
  93. package/skills/showdar-design/data/stacks/react.csv +9 -0
  94. package/skills/showdar-design/data/stacks/svelte.csv +9 -0
  95. package/skills/showdar-design/data/stacks/swiftui.csv +9 -0
  96. package/skills/showdar-design/data/stacks/tauri.csv +9 -0
  97. package/skills/showdar-design/data/stacks/vue.csv +9 -0
  98. package/skills/showdar-design/data/styles.csv +13 -0
  99. package/skills/showdar-design/data/typography.csv +13 -0
  100. package/skills/showdar-design/data/ui-patterns.csv +19 -0
  101. package/skills/showdar-design/examples/design-brief.md +19 -0
  102. package/skills/showdar-design/references/accessibility.md +5 -0
  103. package/skills/showdar-design/references/anti-ai-ui.md +5 -0
  104. package/skills/showdar-design/references/architecture.md +12 -0
  105. package/skills/showdar-design/references/interaction.md +5 -0
  106. package/skills/showdar-design/references/layout.md +5 -0
  107. package/skills/showdar-design/references/release-readiness.md +12 -0
  108. package/skills/showdar-design/references/responsive.md +5 -0
  109. package/skills/showdar-design/references/security.md +12 -0
  110. package/skills/showdar-design/references/visual-hierarchy.md +7 -0
  111. package/skills/showdar-design/scripts/lib/csv.mjs +40 -0
  112. package/skills/showdar-design/scripts/lib/rank.mjs +35 -0
  113. package/skills/showdar-design/scripts/lib/search.mjs +20 -0
  114. package/skills/showdar-design/scripts/search.mjs +38 -0
  115. package/skills/showdar-design/stacks/flutter.md +13 -0
  116. package/skills/showdar-design/stacks/html-tailwind.md +12 -0
  117. package/skills/showdar-design/stacks/jetpack-compose.md +13 -0
  118. package/skills/showdar-design/stacks/nextjs.md +12 -0
  119. package/skills/showdar-design/stacks/nuxt.md +11 -0
  120. package/skills/showdar-design/stacks/react-native.md +13 -0
  121. package/skills/showdar-design/stacks/react.md +12 -0
  122. package/skills/showdar-design/stacks/svelte.md +11 -0
  123. package/skills/showdar-design/stacks/swiftui.md +12 -0
  124. package/skills/showdar-design/stacks/tauri.md +12 -0
  125. package/skills/showdar-design/stacks/vue.md +12 -0
  126. package/skills/showdar-git/SKILL.md +291 -0
  127. package/skills/showdar-git/data/git-workflows.csv +7 -0
  128. package/skills/showdar-git/data/index.json +14 -0
  129. package/skills/showdar-git/examples/commit-task-only.md +15 -0
  130. package/skills/showdar-git/examples/conflict-stop.md +7 -0
  131. package/skills/showdar-git/examples/explicit-push.md +7 -0
  132. package/skills/showdar-git/examples/feature-merge-no-push.md +13 -0
  133. package/skills/showdar-git/references/operation-safety.md +34 -0
  134. package/skills/showdar-git/scripts/inspect-git-state.mjs +53 -0
  135. package/skills/showdar-ops/SKILL.md +160 -0
  136. package/skills/showdar-ops/data/index.json +14 -0
  137. package/skills/showdar-ops/data/ops-patterns.csv +12 -0
  138. package/skills/showdar-ops/examples/explicit-deployment.md +5 -0
  139. package/skills/showdar-ops/examples/fix-existing-ci.md +5 -0
  140. package/skills/showdar-ops/examples/inspect-ci-readonly.md +7 -0
  141. package/skills/showdar-ops/examples/rollback-plan.md +5 -0
  142. package/skills/showdar-ops/examples/staging-plan.md +5 -0
  143. package/skills/showdar-ops/references/ci-cd.md +5 -0
  144. package/skills/showdar-ops/references/containers.md +5 -0
  145. package/skills/showdar-ops/references/deployment.md +5 -0
  146. package/skills/showdar-ops/references/desktop-release.md +3 -0
  147. package/skills/showdar-ops/references/environments.md +5 -0
  148. package/skills/showdar-ops/references/mobile-release.md +3 -0
  149. package/skills/showdar-ops/references/observability.md +5 -0
  150. package/skills/showdar-ops/references/rollback.md +5 -0
  151. package/skills/showdar-ops/scripts/inspect-ops-state.mjs +54 -0
  152. package/skills/showdar-plan/SKILL.md +159 -0
  153. package/skills/showdar-plan/data/index.json +14 -0
  154. package/skills/showdar-plan/data/planning-checklists.csv +25 -0
  155. package/skills/showdar-plan/examples/feature-plan.md +19 -0
  156. package/skills/showdar-plan/references/architecture.md +5 -0
  157. package/skills/showdar-plan/references/requirements.md +5 -0
  158. package/skills/showdar-plan/references/risk-analysis.md +5 -0
  159. package/skills/showdar-plan/references/scope.md +5 -0
  160. package/skills/showdar-plan/references/task-decomposition.md +5 -0
  161. package/skills/showdar-plan/scripts/collect-planning-context.mjs +9 -0
  162. package/skills/showdar-plan/scripts/lib/detect-stack.mjs +48 -0
  163. package/skills/showdar-plan/stacks/backend.md +3 -0
  164. package/skills/showdar-plan/stacks/mobile.md +3 -0
  165. package/skills/showdar-plan/stacks/web.md +3 -0
  166. package/skills/showdar-quality/SKILL.md +166 -0
  167. package/skills/showdar-quality/data/index.json +14 -0
  168. package/skills/showdar-quality/data/quality-patterns.csv +11 -0
  169. package/skills/showdar-quality/references/qa-guide.md +20 -0
  170. package/skills/showdar-recover/SKILL.md +164 -0
  171. package/skills/showdar-recover/data/index.json +14 -0
  172. package/skills/showdar-recover/data/recovery-signals.csv +23 -0
  173. package/skills/showdar-recover/examples/recovery-report.md +18 -0
  174. package/skills/showdar-recover/references/failed-runs.md +3 -0
  175. package/skills/showdar-recover/references/interrupted-session.md +3 -0
  176. package/skills/showdar-recover/references/merge-conflicts.md +3 -0
  177. package/skills/showdar-recover/references/partial-implementation.md +3 -0
  178. package/skills/showdar-recover/scripts/inspect-state.mjs +5 -0
  179. package/skills/showdar-requirements/SKILL.md +172 -0
  180. package/skills/showdar-requirements/data/index.json +14 -0
  181. package/skills/showdar-requirements/data/requirements-patterns.csv +11 -0
  182. package/skills/showdar-requirements/references/analysis-guide.md +30 -0
  183. package/skills/showdar-review/SKILL.md +155 -0
  184. package/skills/showdar-review/data/index.json +14 -0
  185. package/skills/showdar-review/data/review-patterns.csv +27 -0
  186. package/skills/showdar-review/examples/finding.md +16 -0
  187. package/skills/showdar-review/references/architecture.md +3 -0
  188. package/skills/showdar-review/references/correctness.md +3 -0
  189. package/skills/showdar-review/references/maintainability.md +3 -0
  190. package/skills/showdar-review/references/performance.md +3 -0
  191. package/skills/showdar-review/references/security.md +3 -0
  192. package/skills/showdar-review/references/testing.md +3 -0
  193. package/skills/showdar-review/scripts/collect-diff.mjs +5 -0
  194. package/skills/showdar-review/stacks/android.md +3 -0
  195. package/skills/showdar-review/stacks/flutter.md +3 -0
  196. package/skills/showdar-review/stacks/ios.md +3 -0
  197. package/skills/showdar-review/stacks/nextjs.md +3 -0
  198. package/skills/showdar-review/stacks/node-backend.md +3 -0
  199. package/skills/showdar-review/stacks/react-native.md +3 -0
  200. package/skills/showdar-review/stacks/react.md +3 -0
  201. package/skills/showdar-review/stacks/swift-kotlin.md +3 -0
  202. package/skills/showdar-review/stacks/typescript.md +3 -0
  203. package/skills/showdar-security/SKILL.md +169 -0
  204. package/skills/showdar-security/data/index.json +14 -0
  205. package/skills/showdar-security/data/security-patterns.csv +13 -0
  206. package/skills/showdar-security/examples/api-authorization-review.md +9 -0
  207. package/skills/showdar-security/examples/mobile-deeplink-review.md +7 -0
  208. package/skills/showdar-security/examples/secret-exposure-review.md +5 -0
  209. package/skills/showdar-security/examples/threat-model-open-assumptions.md +11 -0
  210. package/skills/showdar-security/references/authz-secrets.md +7 -0
  211. package/skills/showdar-security/references/mobile-security.md +7 -0
  212. package/skills/showdar-security/references/supply-chain.md +5 -0
  213. package/skills/showdar-security/references/threat-modeling.md +12 -0
  214. package/skills/showdar-security/scripts/inspect-security-surface.mjs +47 -0
  215. package/skills/showdar-ship/SKILL.md +234 -0
  216. package/skills/showdar-ship/data/index.json +14 -0
  217. package/skills/showdar-ship/data/release-checks.csv +28 -0
  218. package/skills/showdar-ship/examples/release-report.md +25 -0
  219. package/skills/showdar-ship/references/migrations.md +12 -0
  220. package/skills/showdar-ship/references/post-deploy.md +12 -0
  221. package/skills/showdar-ship/references/release-readiness.md +13 -0
  222. package/skills/showdar-ship/references/rollback.md +12 -0
  223. package/skills/showdar-ship/references/secrets.md +3 -0
  224. package/skills/showdar-ship/scripts/detect-targets.mjs +5 -0
  225. package/skills/showdar-ship/scripts/lib/detect-stack.mjs +48 -0
  226. package/skills/showdar-ship/scripts/release-check.mjs +6 -0
  227. package/skills/showdar-ship/stacks/android.md +33 -0
  228. package/skills/showdar-ship/stacks/docker.md +30 -0
  229. package/skills/showdar-ship/stacks/electron.md +7 -0
  230. package/skills/showdar-ship/stacks/ios.md +34 -0
  231. package/skills/showdar-ship/stacks/nextjs.md +30 -0
  232. package/skills/showdar-ship/stacks/node-backend.md +37 -0
  233. package/skills/showdar-ship/stacks/orchestration.md +12 -0
  234. package/skills/showdar-ship/stacks/tauri.md +35 -0
  235. package/skills/showdar-ship/stacks/web.md +35 -0
  236. package/skills/showdar-test/SKILL.md +164 -0
  237. package/skills/showdar-test/data/index.json +14 -0
  238. package/skills/showdar-test/data/test-strategy.csv +22 -0
  239. package/skills/showdar-test/examples/regression.md +14 -0
  240. package/skills/showdar-test/references/e2e.md +3 -0
  241. package/skills/showdar-test/references/integration.md +3 -0
  242. package/skills/showdar-test/references/regression.md +3 -0
  243. package/skills/showdar-test/references/test-smells.md +3 -0
  244. package/skills/showdar-test/references/unit.md +3 -0
  245. package/skills/showdar-test/scripts/detect-test-tools.mjs +6 -0
  246. package/skills/showdar-test/stacks/android-testing.md +13 -0
  247. package/skills/showdar-test/stacks/detox.md +13 -0
  248. package/skills/showdar-test/stacks/flutter-test.md +13 -0
  249. package/skills/showdar-test/stacks/integration-test.md +13 -0
  250. package/skills/showdar-test/stacks/jest.md +13 -0
  251. package/skills/showdar-test/stacks/playwright.md +13 -0
  252. package/skills/showdar-test/stacks/react-native-testing.md +17 -0
  253. package/skills/showdar-test/stacks/react-testing-library.md +13 -0
  254. package/skills/showdar-test/stacks/vitest.md +13 -0
  255. package/skills/showdar-test/stacks/xctest.md +13 -0
  256. package/skills/showdar-understand/SKILL.md +159 -0
  257. package/skills/showdar-understand/data/architecture-signals.csv +28 -0
  258. package/skills/showdar-understand/data/index.json +14 -0
  259. package/skills/showdar-understand/examples/repository-audit.md +17 -0
  260. package/skills/showdar-understand/references/architecture-signals.md +25 -0
  261. package/skills/showdar-understand/references/dependency-analysis.md +9 -0
  262. package/skills/showdar-understand/references/repository-analysis.md +24 -0
  263. package/skills/showdar-understand/scripts/inspect-repo.mjs +16 -0
  264. package/skills/showdar-understand/scripts/lib/detect-stack.mjs +48 -0
  265. package/skills/showdar-understand/stacks/android.md +3 -0
  266. package/skills/showdar-understand/stacks/backend.md +5 -0
  267. package/skills/showdar-understand/stacks/electron.md +3 -0
  268. package/skills/showdar-understand/stacks/fastify.md +3 -0
  269. package/skills/showdar-understand/stacks/flutter.md +3 -0
  270. package/skills/showdar-understand/stacks/ios.md +3 -0
  271. package/skills/showdar-understand/stacks/mobile.md +5 -0
  272. package/skills/showdar-understand/stacks/nestjs.md +3 -0
  273. package/skills/showdar-understand/stacks/nextjs.md +3 -0
  274. package/skills/showdar-understand/stacks/node.md +3 -0
  275. package/skills/showdar-understand/stacks/react-native.md +3 -0
  276. package/skills/showdar-understand/stacks/react.md +3 -0
  277. package/skills/showdar-understand/stacks/tauri.md +3 -0
  278. package/skills/showdar-upgrade/SKILL.md +162 -0
  279. package/skills/showdar-upgrade/data/compatibility-checklist.csv +24 -0
  280. package/skills/showdar-upgrade/data/index.json +14 -0
  281. package/skills/showdar-upgrade/examples/upgrade-report.md +18 -0
  282. package/skills/showdar-upgrade/references/breaking-changes.md +3 -0
  283. package/skills/showdar-upgrade/references/compatibility.md +3 -0
  284. package/skills/showdar-upgrade/references/dependency-resolution.md +3 -0
  285. package/skills/showdar-upgrade/references/migration-strategy.md +3 -0
  286. package/skills/showdar-upgrade/references/rollback.md +3 -0
  287. package/skills/showdar-upgrade/scripts/inspect-dependencies.mjs +6 -0
  288. package/skills/showdar-upgrade/scripts/lib/detect-stack.mjs +48 -0
  289. package/skills/showdar-upgrade/stacks/android.md +15 -0
  290. package/skills/showdar-upgrade/stacks/cocoapods-spm.md +17 -0
  291. package/skills/showdar-upgrade/stacks/expo.md +17 -0
  292. package/skills/showdar-upgrade/stacks/flutter.md +17 -0
  293. package/skills/showdar-upgrade/stacks/gradle.md +13 -0
  294. package/skills/showdar-upgrade/stacks/ios.md +15 -0
  295. package/skills/showdar-upgrade/stacks/nextjs.md +17 -0
  296. package/skills/showdar-upgrade/stacks/node.md +17 -0
  297. package/skills/showdar-upgrade/stacks/react-native.md +17 -0
  298. package/skills/showdar-upgrade/stacks/react.md +17 -0
  299. package/skills/showdar-upgrade/stacks/tauri-rust.md +15 -0
  300. package/src/adapters.js +44 -0
  301. package/src/catalog.js +57 -0
  302. package/src/project.js +287 -0
  303. package/src/runtime.js +9 -0
  304. package/src/validate.js +310 -0
@@ -0,0 +1,159 @@
1
+ ---
2
+ name: showdar-understand
3
+ description: Use when mapping an unfamiliar repository, architecture, dependencies, or impact before deciding what to change.
4
+ ---
5
+
6
+ # Showdar Understand
7
+
8
+ ## Purpose
9
+
10
+ - Build a trustworthy mental model of a repository before changing it.
11
+ - Identify runtime entrypoints, ownership boundaries, state/data flow, dependencies, build/test systems, and platform surfaces.
12
+ - Separate facts observed in files from architectural inferences.
13
+ - Reduce random file reading by following high-signal configuration and representative runtime paths.
14
+ - Read `references/repository-analysis.md` for the default inspection sequence.
15
+ - Use `references/architecture-signals.md` when directory names and actual dependency direction disagree.
16
+ - Use `references/dependency-analysis.md` when the task crosses packages, native modules, persistence, queues, or external services.
17
+
18
+ ## When to use
19
+
20
+ - Entering a repository or subsystem you do not already understand.
21
+ - Before planning a feature whose change surface is unclear.
22
+ - Before a refactor or migration that may cross package/module boundaries.
23
+ - When the user asks for an architecture overview, dependency map, ownership map, or “where should this change go?”
24
+ - When a bug appears to cross layers and you need a minimal map before debugging.
25
+ - When agent context was compacted and repository structure must be re-established.
26
+
27
+ ## When not to use
28
+
29
+ - The task is a tiny, already-localized edit and the exact owning file/contract is known.
30
+ - The user only asks a conceptual question unrelated to the repository.
31
+ - A production incident requires immediate evidence collection from runtime systems; use the relevant incident/debug tooling first.
32
+ - Do not turn this into a comprehensive documentation project unless the user requested one.
33
+
34
+ ## Inputs and assumptions
35
+
36
+ - Repository root or a clearly identified subproject is available.
37
+ - Read repository instructions such as AGENTS.md/CLAUDE.md before source analysis.
38
+ - Prefer current executable config, imports, tests, and build files over stale prose.
39
+ - Generated files can reveal tooling but normally do not define source ownership.
40
+ - If multiple apps/packages exist, record which one the user task targets before expanding analysis.
41
+ - The read-only inspector `scripts/inspect-repo.mjs` may be used to collect deterministic signals.
42
+
43
+ ## Non-negotiable rules
44
+
45
+ - Do not edit implementation files while running this skill unless the user explicitly changed the task.
46
+ - Never claim an architecture pattern solely because folders are named domain, core, clean, feature, or shared.
47
+ - Cite concrete files/symbols in the working notes that support each important architectural conclusion.
48
+ - Mark uncertainty instead of filling missing links with a familiar architecture pattern.
49
+ - Trace at least one representative runtime flow before declaring the repository understood.
50
+ - Keep the map proportional to the user task; avoid exploring unrelated subsystems.
51
+ - Never expose secrets found in configuration. Refer to secret names only.
52
+
53
+ ## Workflow
54
+
55
+ ### Phase 1 — establish repository context
56
+ - Read instructions, manifests, lockfiles, workspace files, build scripts, CI, and platform folders.
57
+ - Run `node scripts/inspect-repo.mjs <repo>` when deterministic stack/top-level signals are useful.
58
+ - Record language, package manager, framework/runtime, workspace layout, test tooling, and build entrypoints.
59
+
60
+ ### Phase 2 — locate runtime entrypoints
61
+ - Find app/server/worker/native entrypoints and route/navigation registration.
62
+ - Identify configuration loading, dependency wiring, state stores, persistence adapters, and external integration seams.
63
+ - Prefer symbols that create or register dependencies over leaf utility files.
64
+
65
+ ### Phase 3 — trace one representative flow
66
+ - Select a flow relevant to the task: a screen transition, request handler, background job, or persistence write.
67
+ - Trace input -> state/policy -> side effects -> output.
68
+ - Record where errors propagate, where state is owned, and where platform boundaries occur.
69
+
70
+ ### Phase 4 — map boundaries and dependencies
71
+ - Distinguish package boundary, runtime boundary, persistence boundary, UI/state boundary, and native/platform boundary.
72
+ - Use `data/architecture-signals.csv` as a checklist, not as proof by itself.
73
+ - Expand dependencies only until the likely change/verification surface is clear.
74
+
75
+ ### Phase 5 — synthesize
76
+ - Produce a concise current-state map, relevant flow, change-relevant boundaries, risks, and unresolved questions.
77
+ - Name the smallest set of files/symbols that should be read next for the user task.
78
+
79
+ ## Decision points
80
+
81
+ - Monorepo? Map package ownership before source internals.
82
+ - Multiple state systems? Identify which owns the task’s state instead of documenting all of them.
83
+ - README contradicts source? Treat source/build configuration as current evidence and flag documentation drift.
84
+ - Cross-platform mobile? Map shared code and native iOS/Android responsibilities separately.
85
+ - Backend with workers/queues? Trace request and background execution as separate lifecycles.
86
+ - If dependency direction is cyclic, report the cycle rather than forcing a clean-layer interpretation.
87
+
88
+ ## Stack detection
89
+
90
+ - Use manifest and directory evidence; the shared engine can detect common stacks.
91
+ - For mobile, read `stacks/mobile.md` and include navigation, lifecycle, native projects, permissions, and release surfaces.
92
+ - For backend, read `stacks/backend.md` and include process entrypoint, persistence, jobs, health, and shutdown.
93
+ - For React/Next.js, inspect render/router, server-client, cache, and state ownership using `stacks/react.md` or `stacks/nextjs.md`.
94
+ - For Node/Fastify/NestJS, inspect bootstrap, plugin/module graph, request contracts, persistence, jobs, and shutdown using the matching stack file.
95
+ - For React Native/Flutter/iOS/Android, separate shared state from native lifecycle, build, signing, and permissions using the matching stack file.
96
+ - For Tauri/Electron, separate frontend, IPC/preload/commands, capabilities, host lifecycle, and packaging using `stacks/tauri.md` or `stacks/electron.md`.
97
+ - Query `data/index.json` and `data/architecture-signals.csv` for stable signal IDs instead of treating folder names as proof.
98
+ - For unsupported stacks, infer from build/config files and keep claims evidence-based.
99
+ - Stack detection changes what to inspect; it does not change the core evidence-first workflow.
100
+
101
+ ## Failure modes
102
+
103
+ - Over-reading every directory instead of following entrypoints and task-relevant flows.
104
+ - Treating architecture diagrams or README prose as more current than executable code.
105
+ - Confusing generated/vendor code with owned source.
106
+ - Missing a second runtime such as worker, extension, native host, or CLI.
107
+ - Describing folder taxonomy without explaining data/state/call flow.
108
+ - Producing a map so broad that it does not reduce the next implementation decision.
109
+
110
+ ## Stop conditions
111
+
112
+ - Stop when the requested outcome is outside this skill and hand off to the more appropriate workflow.
113
+ - Stop before destructive, irreversible, production, credential, publishing, or deployment actions unless the user explicitly approved them.
114
+ - Stop when required evidence is unavailable and proceeding would require guessing about behavior, ownership, or safety.
115
+ - Stop when a repository instruction conflicts with this playbook; repository/user instructions win.
116
+ - Stop when the task-relevant runtime flow, ownership boundaries, and verification surfaces are clear enough to plan or debug.
117
+
118
+ ## Escalation conditions
119
+
120
+ - Ask the user when multiple apps/packages plausibly match the requested task and repository evidence cannot select one.
121
+ - Escalate when required source is generated externally or missing from the checkout.
122
+ - Escalate when repository instructions prohibit reading or executing a needed command.
123
+ - For very large systems, propose narrowing to one user flow or service boundary before continuing.
124
+
125
+ ## Verification
126
+
127
+ - Re-check every architecture claim against at least one executable/source signal.
128
+ - Confirm the representative flow reaches a real entrypoint and observable output/side effect.
129
+ - Confirm identified test/build commands actually exist before recommending them.
130
+ - Verify that no unrelated subsystem was included merely because it looked architecturally interesting.
131
+ - If using the inspector script, treat its output as inventory and manually verify important conclusions.
132
+
133
+ ## Output contract
134
+
135
+ - **Stack and project shape** — languages, runtimes, package/workspace structure.
136
+ - **Entrypoints** — app/server/worker/native entrypoints relevant to the task.
137
+ - **Architecture map** — ownership boundaries and dependency direction with evidence.
138
+ - **Representative flow** — input to output/side effect.
139
+ - **Change-relevant surface** — files/symbols likely involved in the next task.
140
+ - **Verification surface** — tests/builds/platforms that can prove a later change.
141
+ - **Uncertainties** — explicit unknowns and the evidence needed to resolve them.
142
+
143
+ ## Anti-patterns
144
+
145
+ - “This looks like Clean Architecture” without import/runtime proof.
146
+ - Opening hundreds of files alphabetically.
147
+ - Producing a generic technology inventory but no ownership or flow map.
148
+ - Suggesting refactors while the task is only understanding.
149
+ - Hiding uncertainty with confident architecture jargon.
150
+ - Copying sensitive configuration values into notes or output.
151
+
152
+ ## Example
153
+
154
+ User request: “Where should offline caching for the transactions screen live?”
155
+ - Inspect manifests/navigation/state/data clients and trace transactions screen -> state/query -> API.
156
+ - Determine whether cache ownership belongs to query/data layer or screen state based on existing boundaries.
157
+ - Report exact source of truth, invalidation path, persistence options already present, and affected tests.
158
+ - Do not implement caching during this skill.
159
+ - See `examples/repository-audit.md` for a compact output shape.
@@ -0,0 +1,28 @@
1
+ id,category,signal,evidence,interpretation,confidence,tags,reference,stack
2
+ topology-workspace,topology,workspace manifest,pnpm-workspace.yaml; package.json workspaces; melos.yaml,packages have explicit ownership boundaries,high,topology monorepo ownership,references/architecture-signals.md,*
3
+ topology-apps-packages,topology,apps and packages directories,package manifests below apps or packages,possible multi-runtime graph; verify package scripts,medium,topology packages apps,references/repository-analysis.md,*
4
+ topology-generated,topology,generated/vendor directory,codegen output or vendored source markers,inspect generation owner before editing,medium,topology generated ownership,references/repository-analysis.md,*
5
+ monorepo-task-runner,monorepo,task runner config,turbo.json; nx.json; moon.yml; lage.config.js,build and test commands may be graph-aware,high,monorepo task runner,references/dependency-analysis.md,*
6
+ monorepo-local-package,monorepo,workspace dependency,workspace protocol or local package reference,source change can affect multiple consumers,high,monorepo dependency graph,references/dependency-analysis.md,*
7
+ monorepo-boundary,monorepo,package exports,package.json exports or public barrel,public surface is narrower than filesystem,high,monorepo public API,references/architecture-signals.md,*
8
+ entrypoint-web,entrypoint,web entrypoint,app router; pages; main.tsx; index.html,web runtime starts from route or root mount,high,entrypoint frontend,references/repository-analysis.md,react
9
+ entrypoint-next,entrypoint,Next route entry,app or pages directory plus next script,server and client entrypoints coexist,high,entrypoint server client,references/repository-analysis.md,nextjs
10
+ entrypoint-node,entrypoint,Node process entrypoint,bin field; main; start script; src/server.ts,process lifecycle and shutdown owner is here,high,entrypoint backend,references/repository-analysis.md,node
11
+ entrypoint-fastify,entrypoint,Fastify registration,fastify() call and listen() boundary,plugins/routes/hooks form request lifecycle,high,entrypoint http,references/repository-analysis.md,fastify
12
+ entrypoint-nest,entrypoint,Nest bootstrap,NestFactory.create and module graph,module metadata controls provider and route ownership,high,entrypoint dependency injection,references/repository-analysis.md,nestjs
13
+ entrypoint-mobile,mobile,mobile app root,App.tsx; main.dart; SceneDelegate; MainActivity,platform lifecycle begins outside feature folders,high,entrypoint mobile,references/repository-analysis.md,react-native
14
+ entrypoint-desktop,desktop,desktop host entry,src-tauri/src/main.rs; electron main process,frontend and host lifecycles are separate,high,entrypoint desktop,references/repository-analysis.md,tauri
15
+ dependency-direction,dependency,import direction,feature imports shared policy but shared does not import feature,observed direction supports ownership boundary,high,dependency direction,references/architecture-signals.md,*
16
+ dependency-inversion,dependency,injection seam,constructor parameters; provider bindings; get_it registrations,policy can be tested without concrete infrastructure,medium,dependency injection seam,references/dependency-analysis.md,*
17
+ dependency-cycle,dependency,cyclic imports,dependency graph shows A -> B -> A,change surface and initialization order are coupled,high,dependency cycle,references/dependency-analysis.md,*
18
+ dependency-runtime,dependency,runtime dependency,imported package is used in shipped path,upgrade affects behavior and artifact,high,dependency runtime,references/dependency-analysis.md,*
19
+ dependency-build,dependency,build-only dependency,compiler plugin; bundler; codegen tool,upgrade affects build without runtime import,medium,dependency build tooling,references/dependency-analysis.md,*
20
+ dependency-native,dependency,native dependency,Podfile; Package.swift; Gradle; Maven; plugin registration,shared source change may require platform builds,high,dependency native,references/dependency-analysis.md,ios
21
+ package-manager-lock,tooling,lockfile,package-lock.json; yarn.lock; pnpm-lock.yaml; pubspec.lock,resolved versions are evidence; manifest alone is insufficient,high,tooling lockfile,references/dependency-analysis.md,package-manager
22
+ build-script,build,build script,package scripts; Makefile; justfile; Fastlane; Gradle task,verification must use repository-owned command,high,build verification,references/repository-analysis.md,*
23
+ build-config,build,build configuration,tsconfig; vite; webpack; metro; Xcode scheme,configuration can move behavior across environments,high,build configuration,references/repository-analysis.md,typescript
24
+ ci-workflow,ci,CI workflow,.github/workflows; .gitlab-ci.yml; Buildkite config,remote verification may differ from local environment,high,ci environment,references/repository-analysis.md,ci
25
+ ci-gate,ci,required status check,branch protection or CI job dependency,completion requires the named gate rather than a local substitute,medium,ci gate,references/repository-analysis.md,ci
26
+ backend-boundary,backend,persistence or queue adapter,db client; migration folder; queue producer,request and worker lifecycles need separate tracing,high,backend persistence queue,references/dependency-analysis.md,node
27
+ mobile-native-boundary,mobile,native bridge,TurboModule; MethodChannel; JNI; Swift/Kotlin bridge,shared UI behavior crosses platform-owned lifecycle,high,mobile native bridge,references/architecture-signals.md,react-native
28
+ desktop-native-boundary,desktop,desktop IPC command,invoke handler; preload bridge; Tauri command,capability and serialization boundaries need explicit review,high,desktop ipc,references/architecture-signals.md,electron
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 1,
3
+ "skill": "showdar-understand",
4
+ "datasets": [
5
+ {
6
+ "file": "data/architecture-signals.csv",
7
+ "idField": "id",
8
+ "requiredColumns": ["id", "category", "signal", "evidence", "interpretation", "confidence", "tags", "reference", "stack"],
9
+ "searchableFields": ["category", "signal", "evidence", "interpretation", "tags"],
10
+ "filterFields": ["category", "confidence", "stack"],
11
+ "reference": "references/architecture-signals.md"
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,17 @@
1
+ # Example: repository audit output
2
+
3
+ Request: explain where dashboard data comes from and where a stale metric could
4
+ be introduced.
5
+
6
+ Detected stack: Next.js + TypeScript + PostgreSQL; package manager is pnpm; CI
7
+ runs the web test and build jobs. Entrypoints are `app/` routes and
8
+ `src/jobs/worker.ts`. Persistence lives under `src/db/`, with migrations in
9
+ `drizzle/`; client state is limited to local interaction.
10
+
11
+ Critical flow traced: sign-in -> session lookup -> dashboard query -> server
12
+ render -> metric cards. The query cache is a boundary because it can outlive a
13
+ request; the sync worker is the writer that must invalidate it.
14
+
15
+ Uncertainty: queue ownership is split across two packages. Recommended next
16
+ read: package exports plus every queue producer/consumer call site. Output must
17
+ separate observed facts from inferred ownership.
@@ -0,0 +1,25 @@
1
+ # Architecture signals
2
+
3
+ Architecture is inferred from repeated dependency direction, state ownership, public interfaces, and runtime entrypoints—not from folder names alone.
4
+
5
+ ## Signal strength
6
+
7
+ - Strong: workspace/package manifests; route registration; process bootstrap; dependency injection bindings; public exports; repository/service protocols; database migrations; queue registration; native bridges; test providers.
8
+ - Medium: repeated import direction; feature module boundaries; state store ownership; serializer/DTO seams; build targets; separate worker commands.
9
+ - Weak: names such as `core`, `shared`, `utils`, `domain`, or `clean`. Verify these against imports and call paths.
10
+
11
+ ## How to read a signal
12
+
13
+ 1. Record the exact file and symbol that emits the signal.
14
+ 2. Find at least one caller and one owned side effect.
15
+ 3. Check whether another path bypasses the apparent owner.
16
+ 4. Mark the conclusion as observed, inferred, or uncertain.
17
+
18
+ ## Common conflicts
19
+
20
+ - A `repositories/` folder is weak evidence if UI code constructs queries directly.
21
+ - A public barrel is a supported API only when package exports and consumers agree.
22
+ - A state store is the owner only if writes and invalidation route through it.
23
+ - A generated file is evidence of tooling, not necessarily the source of truth.
24
+
25
+ When boundaries conflict, report both intended and observed dependency direction. Do not silently normalize a tangled codebase into textbook architecture.
@@ -0,0 +1,9 @@
1
+ # Dependency analysis
2
+
3
+ Classify dependencies as runtime, build-time, test-only, platform/native, generated, or tooling. For a proposed change, identify direct dependencies first, then only expand transitive dependencies that can alter behavior, build output, or deployment.
4
+
5
+ For each relevant edge record the owner manifest and lockfile; direct importer and exported contract; resolved version or platform constraint; initialization/lifecycle impact; and verification command that exercises the edge.
6
+
7
+ For monorepos, distinguish package graph edges from source imports and task-runner graph edges. For mobile projects, include CocoaPods/SwiftPM/Gradle/Maven, native modules, permissions, and signing configuration. For backend systems, include database, queue, cache, and external service contracts. For desktop hosts, include IPC, capabilities, preload, and updater dependencies.
8
+
9
+ Do not report a long dependency list. A dependency finding is useful only if it changes the change surface, verification plan, or risk assessment.
@@ -0,0 +1,24 @@
1
+ # Repository analysis
2
+
3
+ ## Entry sequence
4
+ 1. Read repository-level instructions before source code.
5
+ 2. Identify package/workspace manifests, lockfiles, build files, CI definitions, and native project files.
6
+ 3. Find runtime entrypoints and public interfaces before leaf utilities.
7
+ 4. Trace one representative user or request flow end-to-end.
8
+ 5. Confirm architecture by evidence from imports, routing, dependency injection, tests, and build configuration.
9
+
10
+ ## Inventory questions
11
+
12
+ - What starts in development, production, CI, background work, and native hosts?
13
+ - Which manifest and lockfile owns each dependency graph?
14
+ - Which scripts are authoritative for build, test, lint, code generation, migration, and release?
15
+ - Which directories are generated, vendored, ignored, or platform-owned?
16
+ - Where are environment variables loaded, validated, and redacted?
17
+
18
+ ## Evidence hierarchy
19
+ Prefer executable configuration and source imports over directory names. Prefer current code over README claims when they disagree. Treat generated files as evidence of tooling, not ownership boundaries. Treat tests as behavior evidence, not always as architecture truth.
20
+
21
+ ## Output discipline
22
+ Separate observed facts from inferred architecture. Mark uncertain claims and name the file or symbol that would resolve them.
23
+
24
+ Do not inventory every file. Stop once the task-relevant entrypoint, owner, side-effect boundary, failure path, and verification command are evidenced.
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ import { access, readFile, readdir } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { detectStacks } from './lib/detect-stack.mjs';
5
+
6
+ const root = path.resolve(process.argv[2] ?? process.cwd());
7
+ const exists = async (p) => { try { await access(p); return true; } catch { return false; } };
8
+ const candidates = ['package.json','pnpm-workspace.yaml','yarn.lock','pnpm-lock.yaml','package-lock.json','pubspec.yaml','Cargo.toml','go.mod','pyproject.toml','Dockerfile','docker-compose.yml','compose.yaml','.github/workflows'];
9
+ const present = [];
10
+ for (const name of candidates) if (await exists(path.join(root,name))) present.push(name);
11
+ let packageSummary = null;
12
+ if (await exists(path.join(root,'package.json'))) {
13
+ try { const p=JSON.parse(await readFile(path.join(root,'package.json'),'utf8')); packageSummary={name:p.name??null,scripts:Object.keys(p.scripts??{}),workspaces:p.workspaces??null}; } catch {}
14
+ }
15
+ const top = (await readdir(root,{withFileTypes:true})).filter(e=>!e.name.startsWith('.')||e.name==='.github').slice(0,80).map(e=>({name:e.name,type:e.isDirectory()?'dir':'file'}));
16
+ console.log(JSON.stringify({root,stacks:await detectStacks(root),signals:present,package:packageSummary,topLevel:top},null,2));
@@ -0,0 +1,48 @@
1
+ import { access, readdir, readFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+
4
+ async function exists(target) { try { await access(target); return true; } catch { return false; } }
5
+
6
+ export async function detectStacks(projectRoot) {
7
+ const found = new Set();
8
+ try {
9
+ const names = await readdir(projectRoot);
10
+ if (names.some((name) => ['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml', 'bun.lockb'].includes(name))) found.add('package-manager');
11
+ if (names.some((name) => ['pnpm-workspace.yaml', 'lerna.json', 'turbo.json', 'nx.json'].includes(name))) found.add('workspace');
12
+ if (names.some((name) => name.endsWith('.xcodeproj') || name.endsWith('.xcworkspace'))) found.add('ios');
13
+ } catch { /* inaccessible repository is reported by the caller */ }
14
+ const packageFile = path.join(projectRoot, 'package.json');
15
+ if (await exists(packageFile)) {
16
+ try {
17
+ const pkg = JSON.parse(await readFile(packageFile, 'utf8'));
18
+ const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}), ...(pkg.peerDependencies ?? {}) };
19
+ if (pkg.packageManager) found.add('package-manager');
20
+ if (pkg.workspaces) found.add('workspace');
21
+ if (deps.next) found.add('nextjs');
22
+ if (deps.react) found.add('react');
23
+ if (deps['react-native']) found.add('react-native');
24
+ if (deps.vue) found.add('vue');
25
+ if (deps.svelte) found.add('svelte');
26
+ if (deps.tailwindcss) found.add('html-tailwind');
27
+ if (deps.fastify || deps['@fastify/core']) found.add('fastify');
28
+ if (deps['@nestjs/core']) found.add('nestjs');
29
+ if (deps['@tauri-apps/api']) found.add('tauri');
30
+ if (deps.electron) found.add('electron');
31
+ if (deps.expo || deps['expo-router']) found.add('expo');
32
+ found.add('node');
33
+ } catch { /* malformed package is reported by higher-level skills */ }
34
+ }
35
+ if (await exists(path.join(projectRoot, 'pubspec.yaml'))) {
36
+ const pubspec = await readFile(path.join(projectRoot, 'pubspec.yaml'), 'utf8');
37
+ if (/\bflutter\s*:/m.test(pubspec)) found.add('flutter');
38
+ found.add('dart');
39
+ }
40
+ if (await exists(path.join(projectRoot, 'ios'))) found.add('ios');
41
+ if (await exists(path.join(projectRoot, 'android'))) found.add('android');
42
+ if (await exists(path.join(projectRoot, 'Package.swift'))) { found.add('swift'); found.add('spm'); }
43
+ if (await exists(path.join(projectRoot, 'Cargo.toml'))) found.add('rust');
44
+ if (await exists(path.join(projectRoot, 'go.mod'))) found.add('go');
45
+ if (await exists(path.join(projectRoot, 'pyproject.toml')) || await exists(path.join(projectRoot, 'requirements.txt'))) found.add('python');
46
+ if (await exists(path.join(projectRoot, '.github', 'workflows')) || await exists(path.join(projectRoot, '.gitlab-ci.yml')) || await exists(path.join(projectRoot, 'Jenkinsfile'))) found.add('ci');
47
+ return [...found].sort();
48
+ }
@@ -0,0 +1,3 @@
1
+ # Android repository signals
2
+
3
+ Locate application/activity or Compose root, navigation, ViewModel/state owner, Gradle modules, manifest, flavors, and resource source sets. Trace a user action through lifecycle-aware state, repository, and rendered output. Record Gradle/AGP/JDK and min/target/compile SDK evidence. Separate debug behavior from release, R8, signing, and process-death behavior.
@@ -0,0 +1,5 @@
1
+ # Backend repository signals
2
+
3
+ Find the process entrypoint, HTTP/RPC registration, dependency wiring, configuration loader, persistence adapters, migrations, jobs/queues, health endpoints, observability hooks, and shutdown path. Separate request lifecycle from background workers and one-off migration tooling.
4
+
5
+ Trace one request as `input -> validation/auth -> handler -> service policy -> persistence or queue -> serializer -> response`. Trace one background job as `enqueue -> durable payload -> worker claim -> side effect -> retry/dead-letter -> completion`. Record transaction and idempotency owners, connection-pool lifecycle, readiness versus liveness, and graceful shutdown behavior. A health endpoint that does not exercise required dependencies is a weak signal.
@@ -0,0 +1,3 @@
1
+ # Electron repository signals
2
+
3
+ Locate the main process, preload bridge, renderer entry, IPC handlers, context isolation/sandbox settings, and packaging config. Trace renderer action through typed IPC, main-process validation, side effect, and result. Identify filesystem and shell authority in the main process. Check platform packaging, signing, auto-update, and clean-install paths separately from renderer tests.
@@ -0,0 +1,3 @@
1
+ # Fastify repository signals
2
+
3
+ Locate the Fastify factory, plugin registration order, route schemas, hooks, decorators, error handler, and `listen`/close ownership. Treat plugin encapsulation as a boundary and inspect where validation and auth are registered. Trace one request through hook, schema, handler, service, and response serializer. Check readiness and graceful shutdown paths separately from route behavior.
@@ -0,0 +1,3 @@
1
+ # Flutter repository signals
2
+
3
+ Inspect `main`, router, dependency injection, state management, repositories, platform channels, and Android/iOS runners. Trace widget action to state/event, async repository work, and rebuild. Identify isolate/background work and lifecycle disposal. Read `pubspec.lock`, flavors, signing, and native project config when the task can affect release behavior.
@@ -0,0 +1,3 @@
1
+ # iOS repository signals
2
+
3
+ Locate App/Scene delegate, navigation root, targets/schemes, Swift package or CocoaPods ownership, capabilities, entitlements, and persistence. Trace one user flow across view/controller, model/service, and native lifecycle. Record deployment target and build configuration. Treat signing, privacy manifests, push, deep links, and background modes as separate release surfaces.
@@ -0,0 +1,5 @@
1
+ # Mobile repository signals
2
+
3
+ Inspect app entrypoint, navigation root, state container, native `ios/` and `android/` integration, build flavors/schemes, permissions, deep links, push setup, and release configuration. React Native and Flutter may share business code while native projects still own signing, capabilities, and platform lifecycle behavior.
4
+
5
+ Trace one cold-start flow and one resumed/deep-link flow. Record where navigation state, server/cache state, draft state, and native lifecycle state live. Check keyboard/safe-area behavior, background/foreground transitions, process death restoration, platform-channel/native-module contracts, and release-only configuration. A shared component test does not prove native permissions, signing, lifecycle, or store artifact behavior.
@@ -0,0 +1,3 @@
1
+ # NestJS repository signals
2
+
3
+ Start at `NestFactory` bootstrap and map root, feature, global, and dynamic modules. Locate controllers, guards, pipes, interceptors, providers, repositories, and exception filters. Record module import/export direction rather than assuming folder names. Trace one request through guard, pipe, controller, service, persistence, and filter. Identify scheduled jobs or queues that bypass HTTP.
@@ -0,0 +1,3 @@
1
+ # Next.js repository signals
2
+
3
+ Inspect `app/` or `pages/`, route handlers, middleware, server/client boundaries, loading/error files, metadata, and deployment config. Locate data fetching and cache/revalidation ownership. Separate build-time, request-time, and browser-only code. Trace one route from URL to server handler/query to rendered output and one mutation back to invalidation. Check runtime selection and environment variable names without printing values.
@@ -0,0 +1,3 @@
1
+ # Node.js repository signals
2
+
3
+ Find the process entrypoint, scripts, module format, configuration loader, HTTP server, worker/queue startup, database pool, and shutdown hooks. Identify whether one process owns multiple lifecycles. Trace request input through validation, service policy, persistence, response serialization, and error mapping. Record runtime and package-manager evidence from the lockfile and container/build files.
@@ -0,0 +1,3 @@
1
+ # React Native repository signals
2
+
3
+ Inspect the JS entry, navigation root, state/query providers, Metro/Babel config, native module registration, and `ios/`/`android/` projects. Trace a screen action through JS state, network/native bridge, and rendered result. Record lifecycle ownership for subscriptions and navigation. Separate shared source changes from native build/signing/configuration evidence.
@@ -0,0 +1,3 @@
1
+ # React repository signals
2
+
3
+ Locate the root render entry, route registry, context/provider composition, query/cache owner, and test setup. Distinguish server data, URL state, draft state, and derived render state. Follow imports from a route to its feature and from feature to API/client boundary. Check whether a component package is public through exports or only internal. Verify state ownership by tracing a user action through event handler, reducer/store, side effect, and rendered result.
@@ -0,0 +1,3 @@
1
+ # Tauri repository signals
2
+
3
+ Map the web frontend entry and routes separately from Rust `main`, commands, events, state, capabilities, and updater configuration. Trace a UI action across serialization, command validation, Rust side effect, and event/result. Identify filesystem, shell, window, and network permissions. Record frontend build, Rust target, bundle, signing, and update artifacts as separate boundaries.
@@ -0,0 +1,162 @@
1
+ ---
2
+ name: showdar-upgrade
3
+ description: Use when upgrading dependencies, frameworks, runtimes, or native platforms and compatibility or rollback risk matters.
4
+ ---
5
+
6
+ # Showdar Upgrade
7
+
8
+ ## Purpose
9
+
10
+ - Make upgrades controlled engineering changes rather than version-number edits.
11
+ - Identify compatibility across runtime, framework, peers, native toolchains, build plugins, and deployment environment.
12
+ - Search repository usage for breaking/deprecated APIs before modifying versions.
13
+ - Keep rollback boundaries explicit.
14
+ - Read `references/compatibility.md`, `references/breaking-changes.md`, and `references/migration-strategy.md` for nontrivial upgrades.
15
+
16
+ ## When to use
17
+
18
+ - Dependency, framework, runtime, SDK, build plugin, iOS/Android platform, or language upgrade.
19
+ - Migration across deprecated APIs or project template/toolchain changes.
20
+ - Resolving peer/toolchain compatibility before installing a new version.
21
+ - Planning staged upgrades across multiple coupled packages.
22
+
23
+ ## When not to use
24
+
25
+ - Installing a new small dependency with no version migration or compatibility question.
26
+ - Debugging an unknown build failure without evidence that version compatibility is causal.
27
+ - Production deploy belongs to showdar-ship after the upgrade is verified.
28
+ - Do not blindly “upgrade everything to latest” unless explicitly requested.
29
+
30
+ ## Inputs and assumptions
31
+
32
+ - Current and target versions (or target policy such as latest supported).
33
+ - Current runtime/toolchain/native platform versions.
34
+ - Lockfile/package manager ownership.
35
+ - Official release/migration information should be checked when freshness matters.
36
+ - `scripts/inspect-dependencies.mjs` can collect current dependency/runtime signals without changes.
37
+
38
+ ## Non-negotiable rules
39
+
40
+ - Record current state before changing versions.
41
+ - Do not assume latest versions are mutually compatible.
42
+ - Separate package resolution, source migration, generated/codegen changes, native/build changes, and release changes.
43
+ - Search current repository usage for removed/changed APIs.
44
+ - Preserve a real rollback path before irreversible migration steps.
45
+ - Change one compatibility layer at a time when that yields diagnosable failures.
46
+ - Build affected native/platform targets after native/toolchain upgrades.
47
+ - Never discard a lockfile just to force resolution without understanding why.
48
+
49
+ ## Workflow
50
+
51
+ ### Phase 1 — inventory
52
+ - Run `node scripts/inspect-dependencies.mjs <repo>` or equivalent package-manager commands.
53
+ - Record framework/runtime, direct/peer deps, lockfile, native toolchain, deployment/runtime constraints.
54
+
55
+ ### Phase 2 — compatibility matrix
56
+ - Use `data/compatibility-checklist.csv` to ensure runtime, peers, native, codegen, and public API surfaces are covered.
57
+ - Verify documented supported combinations for the target version.
58
+ - Identify unknown/unsupported combinations explicitly.
59
+
60
+ ### Phase 3 — breaking-change search
61
+ - Read relevant official release/migration notes for crossed boundaries.
62
+ - Search repository for removed/deprecated APIs and config keys.
63
+ - Identify generated/template diffs separately from source changes.
64
+
65
+ ### Phase 4 — choose migration sequence
66
+ - Decide direct versus staged upgrade based on compatibility and diagnosability.
67
+ - Define package/version order, source edits, codegen, native/project edits, and lockfile regeneration.
68
+ - Define rollback point using `references/rollback.md`.
69
+
70
+ ### Phase 5 — execute controlled changes
71
+ - Update version/config at the owner.
72
+ - Apply required source migrations with minimal unrelated refactor.
73
+ - Regenerate only artifacts owned by the upgraded tooling.
74
+
75
+ ### Phase 6 — verification
76
+ - Install/resolve dependencies cleanly.
77
+ - Run typecheck/analyzer/tests/builds.
78
+ - Build native/release targets touched by toolchain changes.
79
+ - Inspect lockfile/generated diff for unexpected package churn.
80
+
81
+ ## Decision points
82
+
83
+ - Major framework jump with many coupled APIs? Prefer staged if intermediate support reduces ambiguity.
84
+ - Security patch with narrow backport available? Prefer smallest supported safe upgrade when user goal is risk remediation.
85
+ - Peer conflict? Determine which package owns the incompatible range; do not use force/legacy-peer flags as final solution.
86
+ - Native minimum OS/SDK changes? Treat as product/release decision, not invisible build detail.
87
+ - Codegen format changes? Verify source-of-truth inputs and generated ownership before committing churn.
88
+
89
+ ## Stack detection
90
+
91
+ - React: `stacks/react.md` for React/React DOM, renderer, peer, and API migration surfaces.
92
+ - React Native: `stacks/react-native.md`.
93
+ - Flutter: `stacks/flutter.md`.
94
+ - Next.js: `stacks/nextjs.md`.
95
+ - Node runtime: `stacks/node.md`.
96
+ - iOS/Xcode/Swift: `stacks/ios.md`.
97
+ - Android/JDK/Gradle/AGP: `stacks/android.md`.
98
+ - Expo: `stacks/expo.md` for SDK/config-plugin/generated-native coupling.
99
+ - CocoaPods/SPM and Gradle: read `stacks/cocoapods-spm.md` or `stacks/gradle.md` for native lock/build boundaries.
100
+ - Tauri/Rust: `stacks/tauri-rust.md` for capability, crate, target, bundle, and updater coupling.
101
+
102
+ ## Failure modes
103
+
104
+ - Editing package version and waiting for compiler errors to reveal migration plan.
105
+ - Forcing dependency resolution with flags while peers remain incompatible.
106
+ - Deleting lockfile and accepting broad unrelated dependency churn.
107
+ - Updating native project template blindly and overwriting app-specific settings.
108
+ - Missing runtime/deployment version mismatch after local build succeeds.
109
+ - No rollback for schema/minimum-OS/codegen changes.
110
+ - Claiming success after unit tests while native/release build was affected.
111
+
112
+ ## Stop conditions
113
+
114
+ - Stop when the requested outcome is outside this skill and hand off to the more appropriate workflow.
115
+ - Stop before destructive, irreversible, production, credential, publishing, or deployment actions unless the user explicitly approved them.
116
+ - Stop when required evidence is unavailable and proceeding would require guessing about behavior, ownership, or safety.
117
+ - Stop when a repository instruction conflicts with this playbook; repository/user instructions win.
118
+ - Stop when target versions are resolved, breaking usages migrated, lock/generated changes explained, and affected test/build/platform verification passes.
119
+
120
+ ## Escalation conditions
121
+
122
+ - Ask when target version is unspecified and “latest” would materially change support requirements.
123
+ - Escalate minimum OS/SDK/browser/runtime support changes to the user/product owner.
124
+ - Escalate destructive database/data migrations and production rollout decisions.
125
+ - If official compatibility information is unavailable, state risk instead of guessing support.
126
+
127
+ ## Verification
128
+
129
+ - Confirm resolved versions from package manager/tooling, not only manifest text.
130
+ - Run repository search for known removed/deprecated APIs after migration.
131
+ - Run static analysis/tests/builds appropriate to touched stack.
132
+ - Build iOS/Android release targets when native toolchain/project files changed.
133
+ - Inspect lockfile/generated/native project diff for unexplained churn.
134
+ - Document exact environment and any platform not verified.
135
+
136
+ ## Output contract
137
+
138
+ - **Current -> target** versions.
139
+ - **Compatibility matrix** and constraints.
140
+ - **Breaking changes found in this repository**.
141
+ - **Migration sequence** including source/native/generated steps.
142
+ - **Rollback boundary**.
143
+ - **Verification results** by stack/platform.
144
+ - **Unverified/remaining risks**.
145
+
146
+ ## Anti-patterns
147
+
148
+ - `--force` as compatibility strategy.
149
+ - “Upgrade all dependencies while we are here.”
150
+ - Blind template overwrite for native projects.
151
+ - Ignoring lockfile diff.
152
+ - Mixing unrelated refactor with migration so failures are hard to localize.
153
+ - Treating local dev startup as release-build verification.
154
+
155
+ ## Example
156
+
157
+ User request: “Upgrade React Native to the next supported release.”
158
+ - Inventory React/Metro/Babel/Node/JDK/Gradle/AGP/Xcode/CocoaPods and native modules.
159
+ - Check target RN compatibility and template/migration notes.
160
+ - Search deprecated RN APIs and native project changes.
161
+ - Migrate source/native config in controlled steps, inspect lockfile/template diff, build Android+iOS.
162
+ - See `examples/upgrade-report.md`.