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-plan
3
+ description: Use when agreed behavior needs a bounded implementation plan, change surface, task order, risks, or verification steps.
4
+ ---
5
+
6
+ # Showdar Plan
7
+
8
+ ## Purpose
9
+
10
+ - Turn an idea, bug requirement, migration, or design decision into executable engineering work.
11
+ - Make scope and non-goals explicit before code changes begin.
12
+ - Derive tasks from current repository evidence instead of generic software phases.
13
+ - Expose compatibility, data, lifecycle, platform, security, and rollback risks early.
14
+ - Read `references/requirements.md`, `references/scope.md`, and `references/task-decomposition.md` when requirements are ambiguous or the plan is expanding.
15
+
16
+ ## When to use
17
+
18
+ - New feature or behavior spans multiple files or boundaries.
19
+ - The user explicitly asks for a plan, breakdown, architecture approach, or implementation order.
20
+ - An upgrade/migration needs staged execution.
21
+ - A risky fix needs change-surface and rollback thinking before implementation.
22
+ - Multiple agents/engineers may execute the work and need unambiguous handoff.
23
+
24
+ ## When not to use
25
+
26
+ - A tiny local edit is already fully specified and planning would add no decision value.
27
+ - The user only wants repository understanding; use showdar-understand.
28
+ - Root cause is unknown; debug first instead of planning a guessed fix.
29
+ - Do not write a long plan merely to satisfy ceremony for a one-line safe change.
30
+
31
+ ## Inputs and assumptions
32
+
33
+ - The requirement or intended outcome is available.
34
+ - The current repository flow is understood enough to name the real change surface.
35
+ - If not, run showdar-understand first or collect focused context with `scripts/collect-planning-context.mjs`.
36
+ - Existing repository conventions and public contracts are constraints unless the user asks to change them.
37
+ - Plan from current versions/config, not assumed framework behavior.
38
+
39
+ ## Non-negotiable rules
40
+
41
+ - Every task must correspond to an observable requirement or necessary safety/verification step.
42
+ - State non-goals to prevent scope creep.
43
+ - Name exact files/symbols when repository evidence supports them; otherwise name the boundary and explain uncertainty.
44
+ - Put tests/verification beside the behavior they prove, not in a vague final “add tests” task.
45
+ - Include rollback or staged rollout for irreversible/high-blast-radius changes.
46
+ - Do not invent requirements to make the architecture cleaner.
47
+ - Avoid placeholders such as “handle errors appropriately” without defining the required behavior.
48
+
49
+ ## Workflow
50
+
51
+ ### Phase 1 — normalize the requirement
52
+ - Rewrite the goal as observable behavior.
53
+ - Separate constraints, invariants, preferences, and non-goals.
54
+ - Identify unresolved questions that materially change architecture or scope.
55
+
56
+ ### Phase 2 — anchor to current state
57
+ - Summarize current runtime/data/state flow only as far as the requirement needs.
58
+ - Identify owning boundaries and public interfaces.
59
+ - Record exact current versions/configuration for migrations or platform work.
60
+
61
+ ### Phase 3 — choose an approach
62
+ - Generate at least two viable approaches when trade-offs are real.
63
+ - Compare complexity, compatibility, reversibility, performance, testability, and maintenance.
64
+ - Recommend one and state why it fits this repository rather than a greenfield ideal.
65
+
66
+ ### Phase 4 — define change surface and risk
67
+ - List required changes, possible affected areas, and must-not-change contracts.
68
+ - Use `references/risk-analysis.md` for data/auth/native/concurrency/deployment-sensitive work.
69
+ - Query `data/planning-checklists.csv` through its indexed `category`, `tags`, and `stack` fields before finalizing tasks.
70
+ - For every task include producer/consumer order, compatibility window, rollback boundary, negative path, and exact proof command when those risks apply.
71
+ - Define rollout/rollback or feature-flag needs.
72
+
73
+ ### Phase 5 — decompose execution
74
+ - Order tasks by dependency and independent reviewability.
75
+ - Each task states files/symbols, behavior, error/edge behavior, test, and verification command.
76
+ - Keep task boundaries small enough that a reviewer could approve one and reject the next.
77
+
78
+ ### Phase 6 — self-review
79
+ - Check coverage against every requirement and non-goal.
80
+ - Remove generic steps, duplicated tasks, speculative refactors, and unresolved placeholders.
81
+
82
+ ## Decision points
83
+
84
+ - Unknown root cause? Stop planning the fix and switch to debugging.
85
+ - One local coherent change? Use a short plan instead of multi-phase decomposition.
86
+ - Public API/schema change? Add compatibility and consumer migration tasks.
87
+ - Data migration? Define expand/migrate/contract or another reversible sequence.
88
+ - Native mobile change? Separate shared code from iOS/Android build/release work.
89
+ - New abstraction? Require a concrete ownership/volatility reason before including it.
90
+
91
+ ## Stack detection
92
+
93
+ - Detect stack before naming verification commands or platform files.
94
+ - Use `stacks/mobile.md` for lifecycle/native/release concerns.
95
+ - Use `stacks/web.md` for rendering/cache/responsive/accessibility concerns.
96
+ - Use `stacks/backend.md` for contract/persistence/idempotency/rollout concerns.
97
+ - Unsupported stacks follow the same planning contract using repository-specific build/test evidence.
98
+
99
+ ## Failure modes
100
+
101
+ - Generic sequence: “update code, add tests, verify”.
102
+ - Planning a guessed solution before root cause or current ownership is known.
103
+ - Adding architectural cleanup unrelated to the user outcome.
104
+ - Omitting non-happy paths, migration ordering, or compatibility surfaces.
105
+ - One huge task that spans independent review boundaries.
106
+ - Tests only at the end with no mapping to behavior.
107
+
108
+ ## Stop conditions
109
+
110
+ - Stop when the requested outcome is outside this skill and hand off to the more appropriate workflow.
111
+ - Stop before destructive, irreversible, production, credential, publishing, or deployment actions unless the user explicitly approved them.
112
+ - Stop when required evidence is unavailable and proceeding would require guessing about behavior, ownership, or safety.
113
+ - Stop when a repository instruction conflicts with this playbook; repository/user instructions win.
114
+ - Stop when every requirement maps to an ordered, independently verifiable task and remaining uncertainty is explicitly documented.
115
+
116
+ ## Escalation conditions
117
+
118
+ - Ask one focused question when an unresolved product/compatibility choice changes the approach.
119
+ - Escalate production data, auth/security policy, billing, or destructive migration decisions to the user.
120
+ - Split the plan when independent subsystems can deliver/test separately.
121
+ - If exact files cannot be named because current state is unclear, return to repository understanding rather than guessing.
122
+
123
+ ## Verification
124
+
125
+ - Map each stated requirement to at least one task and proof step.
126
+ - Confirm every named command/script exists in the repository or label it as an expected new interface.
127
+ - Check type/signature names for consistency across tasks.
128
+ - Search for vague placeholders and replace them with behavior/commands.
129
+ - Confirm non-goals are not reintroduced by task descriptions.
130
+ - Confirm rollback/compatibility steps exist for high-risk changes.
131
+
132
+ ## Output contract
133
+
134
+ - **Goal** — one observable outcome.
135
+ - **Non-goals** — excluded adjacent work.
136
+ - **Current state** — task-relevant flow and ownership.
137
+ - **Chosen approach** — with alternatives/trade-offs.
138
+ - **Change surface** — required, possibly affected, must not change.
139
+ - **Risks and dependencies** — including compatibility/rollback.
140
+ - **Ordered tasks** — exact behavior and files/symbols where known.
141
+ - **Verification matrix** — command/scenario proving each task and final result.
142
+
143
+ ## Anti-patterns
144
+
145
+ - Turning the plan into a restatement of the ticket.
146
+ - Treating folder structure as implementation detail without data/control flow.
147
+ - “Add validation/error handling/tests” without concrete cases.
148
+ - Over-designing abstractions before a second real use exists.
149
+ - Hiding unresolved product decisions inside implementation tasks.
150
+ - Claiming “low risk” based only on small diff size.
151
+
152
+ ## Example
153
+
154
+ User request: “Add biometric login to the mobile app.”
155
+ - Goal: returning authenticated users can unlock a locally stored session using supported device biometrics.
156
+ - Non-goals: account recovery and server auth redesign.
157
+ - Plan secure storage/session ownership, enrollment state, iOS/Android capability/permission behavior, fallback, tests, and release checks.
158
+ - Split shared session logic from native platform configuration where required.
159
+ - See `examples/feature-plan.md` for the expected shape.
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 1,
3
+ "skill": "showdar-plan",
4
+ "datasets": [
5
+ {
6
+ "file": "data/planning-checklists.csv",
7
+ "idField": "id",
8
+ "requiredColumns": ["id", "category", "question", "decision", "evidence", "risk", "tags", "reference", "stack"],
9
+ "searchableFields": ["category", "question", "decision", "evidence", "risk", "tags"],
10
+ "filterFields": ["category", "stack"],
11
+ "reference": "references/requirements.md"
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,25 @@
1
+ id,category,question,decision,evidence,risk,tags,reference,stack
2
+ goal-observable,requirements,What observable outcome proves success?,write a user or system assertion with input and expected result,acceptance scenario or failing test,plan can complete without solving need,goal acceptance,references/requirements.md,*
3
+ goal-metric,requirements,Is success measurable?,name baseline and target or regression threshold,metric query; benchmark; test assertion,qualitative claim hides failure,measurement acceptance,references/requirements.md,*
4
+ goal-actor,requirements,Who performs and observes the change?,identify actor; trigger; output; permission,journey or API caller,wrong owner and missing authorization,actor boundary,references/requirements.md,*
5
+ non-goal,scope,What tempting adjacent work is excluded?,list explicit non-goals and preserve current behavior,issue text plus current callers,scope creep,scope control,references/scope.md,*
6
+ scope-smallest,scope,What is the smallest coherent change surface?,include only files required by behavior and proof,call graph; tests; config,shotgun change,change surface,references/scope.md,*
7
+ scope-deferred,scope,What can remain unchanged?,record safe deferred cleanup with reason,diff and contract review,unrelated refactor expands blast radius,non-goal discipline,references/scope.md,*
8
+ state-owner,architecture,Where does source of truth live now?,name owner and read/write path,store; database; route params; native state,duplicated state diverges,state ownership,references/architecture.md,*
9
+ boundary,architecture,Which layer owns policy?,keep UI; domain; persistence; platform responsibilities explicit,imports and side effects,policy leakage,ownership boundary,references/architecture.md,*
10
+ api-contract,contract,Which public interfaces or schemas change?,write old/new shape and compatibility rule,types; OpenAPI; serializers; consumers,downstream breakage,api compatibility,references/architecture.md,node
11
+ serialization,contract,What crosses process or storage boundaries?,define optionality; errors; versioning,JSON fixtures; wire schema; migration,unknown fields or data loss,serialization contract,references/requirements.md,*
12
+ dependency-runtime,dependencies,Which runtime dependencies are required?,reuse existing package and record version constraint,lockfile and import graph,unplanned install or peer breakage,dependencies,references/risk-analysis.md,*
13
+ dependency-order,dependencies,What must land first?,order producer/schema/config before consumers,dependency graph; task prerequisites,partial interface blocks integration,task ordering,references/task-decomposition.md,*
14
+ rollout,rollout,Can the change be staged?,choose flag; canary; percentage; or atomic release,traffic and feature exposure controls,all users hit unproven path,rollout strategy,references/risk-analysis.md,*
15
+ flag-default,rollout,What is the flag default and owner?,define default; branch behavior; removal condition,config and owner record,permanent hidden branch,feature flag,references/risk-analysis.md,*
16
+ migration-expand,rollout,Can old and new versions coexist?,expand schema/API; deploy compatible reader/writer; migrate; contract,rollback matrix and schema diff,rolling deploy outage or data loss,migration compatibility,references/risk-analysis.md,node
17
+ rollback-boundary,rollout,What is reversible?,name artifact; config; schema and irreversible step,backup; previous artifact; migration status,rollback that cannot run,rollback,references/risk-analysis.md,*
18
+ backward-api,compatibility,Do old clients continue to work?,keep additive or version the contract,consumer versions and contract tests,client outage,backwards compatibility,references/architecture.md,*
19
+ backward-data,compatibility,Can old code read changed data?,preserve defaults and nullable transition,fixture; decoder; old-version test,rollback reads unknown schema,data compatibility,references/risk-analysis.md,*
20
+ test-invariant,verification,Which invariant is proven?,choose lowest effective test level,test case that fails when invariant breaks,tests check implementation only,test strategy,references/task-decomposition.md,*
21
+ test-boundary,verification,Which boundary needs real semantics?,use integration for DB; HTTP; native; cache,ephemeral dependency or contract fixture,mock hides defect,test boundary,references/task-decomposition.md,*
22
+ acceptance-negative,verification,What should fail safely?,include validation; auth; retry; empty; offline; cancellation behavior,negative acceptance cases,silent failure or unsafe fallback,negative path,references/requirements.md,*
23
+ acceptance-observability,verification,How will operation be diagnosed?,define correlation; metric; log/event without secrets,observable field or dashboard,correctness failure becomes opaque,observability,references/risk-analysis.md,*
24
+ platform-native,platform,Which native files/builds are touched?,split shared and iOS/Android/desktop tasks,project files; schemes; flavors,local pass but release failure,native surface,references/risk-analysis.md,react-native
25
+ platform-web,platform,Does server/client or cache ownership change?,define render; URL; freshness; accessibility behavior,route config; browser scenario,hydration/cache regression,web boundary,references/architecture.md,nextjs
@@ -0,0 +1,19 @@
1
+ # Example plan shape
2
+
3
+ Request: add invitation RSVP editing for authenticated hosts.
4
+
5
+ Current evidence: the host route reads invitation data, the API accepts a full
6
+ payload, and the database already has an `rsvpDeadline`; guests use the same
7
+ read model, so its response shape is a compatibility boundary.
8
+
9
+ Scope: add a host-only partial update and optimistic UI feedback. Non-goals are
10
+ guest account changes, schema redesign, and replacing the existing form library.
11
+
12
+ Chosen approach:
13
+ 1. Validate the patch at the API boundary and authorize invitation ownership.
14
+ 2. Reuse the existing repository update method and invalidate the host query.
15
+ 3. Keep the guest read model unchanged and reject edits after the deadline.
16
+
17
+ Proof per task: authorization integration test, validation test, deadline test,
18
+ cache invalidation test, then typecheck/build. Rollback is a server-side flag
19
+ that hides editing while preserving reads.
@@ -0,0 +1,5 @@
1
+ # Architecture choices
2
+
3
+ Prefer existing repository patterns when they are safe and comprehensible. Introduce a new abstraction only when it creates a real ownership boundary, removes duplicated policy, or isolates volatility. Avoid new layers that only rename calls.
4
+
5
+ Document public contracts, data flow, state ownership, failure propagation, concurrency, and lifecycle effects. For each boundary state who validates input, who owns side effects, who can retry or cancel, and which test observes the result. Explain why the chosen boundary is safer than nearby alternatives and what is intentionally not changed.
@@ -0,0 +1,5 @@
1
+ # Requirements extraction
2
+
3
+ Translate prose into observable outcomes, constraints, invariants, and non-goals. Separate user-visible behavior from implementation preference. Resolve contradictions before planning. When a requirement is inferred rather than stated, label it and explain the evidence.
4
+
5
+ A good requirement can be verified. “Improve performance” is not sufficient; define the measured path, current baseline if known, and acceptable result or regression guard. Normalize each item into `actor + trigger + input + observable result + failure/recovery behavior`, and record explicit unknowns instead of filling them with product assumptions.
@@ -0,0 +1,5 @@
1
+ # Risk analysis
2
+
3
+ Classify risk by blast radius and reversibility: data loss, auth/security, public API compatibility, native build/signing, migration, concurrency, performance hot paths, and deployment coupling deserve explicit treatment.
4
+
5
+ For each high-risk item record affected users or systems, failure mode, detection signal, containment, recovery mechanism, and irreversible step. Check whether old and new readers or writers coexist during rollout. A feature flag is useful only when both branches are tested and its removal owner or event is explicit. For high-risk changes, define rollback before implementation; a one-line schema or permission change can have a large blast radius.
@@ -0,0 +1,5 @@
1
+ # Scope control
2
+
3
+ The plan should name the smallest coherent change surface. Include only adjacent refactors required to make the requested behavior safe or testable. Put attractive but unnecessary cleanup in non-goals.
4
+
5
+ Build a change-surface table with `required`, `possibly affected`, `must not change`, and `verification owner`. Trace callers before editing shared functions, and include generated, native, or config files only when the actual flow proves they participate. For every proposed file or subsystem, answer: what requirement forces this change? If no requirement does, remove it. If it is only future reuse, remove it.
@@ -0,0 +1,5 @@
1
+ # Task decomposition
2
+
3
+ A task is independently reviewable and testable. Sequence tasks by dependency, not by file type. Fold setup into the first task that needs it. Put tests alongside behavior, not in a final generic testing task.
4
+
5
+ Every task should identify exact files or symbols when repository evidence is available, expected behavior, error and edge behavior, ownership, rollback checkpoint, verification command, and completion evidence. A task is not complete because files exist; its proof must observe the required behavior.
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ import { access, readFile } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { detectStacks } from './lib/detect-stack.mjs';
5
+ const root=path.resolve(process.argv[2]??process.cwd());
6
+ const exists=async p=>{try{await access(p);return true}catch{return false}};
7
+ const files={};
8
+ for(const f of ['package.json','pubspec.yaml','README.md','AGENTS.md']) if(await exists(path.join(root,f))) files[f]=(await readFile(path.join(root,f),'utf8')).slice(0,12000);
9
+ console.log(JSON.stringify({root,stacks:await detectStacks(root),contextFiles:Object.keys(files),snippets:files},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
+ # Backend planning
2
+
3
+ Plan API contracts, persistence and migrations, idempotency, authorization, transactions, retries, queues, observability, rollout, and rollback. Map request and worker lifecycles separately and name health/readiness evidence.
@@ -0,0 +1,3 @@
1
+ # Mobile planning
2
+
3
+ Plan lifecycle, navigation, offline/network state, permissions, native integration, device-size and text-scale behavior, platform build files, and release impact when relevant. Separate shared Dart/JavaScript changes from iOS/Android changes. Include back/deep-link/process-death behavior and the device or release build that proves each native requirement.
@@ -0,0 +1,3 @@
1
+ # Web planning
2
+
3
+ Plan rendering boundary, data/cache semantics, responsive behavior, accessibility, browser/server ownership, URL/navigation state, and deployment/runtime constraints. Include loading, empty, error, hydration, metadata, keyboard, reduced-motion, and long-content behavior when UI changes.
@@ -0,0 +1,166 @@
1
+ ---
2
+ name: showdar-quality
3
+ description: Use when planning QA/QC scenarios, risk coverage, regression scope, compatibility checks, or bug-report evidence.
4
+ ---
5
+
6
+ # Showdar Quality
7
+
8
+ ## Purpose
9
+
10
+ - Decide what should be verified, which risks matter, and what evidence supports acceptance confidence.
11
+ - Produce compact QA scenarios, manual test cases, risk matrices, compatibility plans, regression scope, release checklists, or complete bug reports.
12
+ - Cover behavior beyond automated tests: exploratory, platform, permission, network, data, accessibility, localization, performance, and recovery quality.
13
+ - Use `data/quality-patterns.csv` as a searchable prompt and read `references/qa-guide.md` when a broad verification plan is needed.
14
+
15
+ ## When to use
16
+
17
+ - QA needs scenarios, manual cases, risk-based coverage, acceptance verification, exploratory charters, or a regression scope.
18
+ - A release needs a platform/browser/device matrix, smoke/sanity checklist, or evidence review.
19
+ - A requirement needs coverage analysis across happy, negative, boundary, state, offline, concurrency, retry, or idempotency behavior.
20
+ - A bug report is incomplete and needs reproducible environment, steps, actual/expected result, evidence, and impact.
21
+ - The user asks what to verify, not how to implement an automated test.
22
+
23
+ ## When not to use
24
+
25
+ - Do not use this to implement unit, integration, component, or E2E tests; use `showdar-test` for automated test-level selection and code changes.
26
+ - Do not use this as a code/diff defect review; use `showdar-review`.
27
+ - Do not use this as the overall delivery-readiness decision; use `showdar-ship`.
28
+ - Do not mutate application source, production data, test environments, tickets, or release infrastructure by default.
29
+
30
+ ## Inputs and assumptions
31
+
32
+ - Prefer the requirement, acceptance criteria, change diff, release scope, supported platforms, test evidence, environment, and known defects.
33
+ - Inspect relevant code, schemas, state models, navigation, permissions, existing tests, feature flags, and build metadata when they define observable behavior.
34
+ - Record what was supplied, what was observed, what was executed, and what remains unknown.
35
+ - Treat missing environment/device/network details as a coverage gap; do not invent a passing result or reproduction rate.
36
+ - Use the smallest useful scenario set. Add a case when it covers a distinct risk, boundary, actor, state, platform, or failure mode.
37
+
38
+ ## Non-negotiable rules
39
+
40
+ - Start from risk and observable behavior, not from a tool or a desired test count.
41
+ - Distinguish planned verification from verification actually executed; showdar-quality does not claim tests ran when they were only planned.
42
+ - Do not invent evidence, device results, severity, reproduction rate, business impact, or acceptance.
43
+ - Cover must-test risks first and label optional/deferred coverage.
44
+ - Include negative, boundary, state-transition, permission, retry, idempotency, offline, and data-integrity checks when the behavior makes them relevant.
45
+ - Do not require every combination; explain omitted combinations and choose representative partitions.
46
+ - Preserve requirement terminology and trace each scenario to a requirement, risk, change surface, or observed defect.
47
+ - If a check belongs inside an automated test, state the boundary and hand implementation to `showdar-test`.
48
+
49
+ ## Workflow
50
+
51
+ ### Phase 1 — define the quality question
52
+
53
+ - Identify the decision: acceptance, regression confidence, release risk, bug reproduction, compatibility, or exploratory discovery.
54
+ - Identify changed behavior, affected actors, state transitions, data, integrations, platforms, and rollback/recovery concerns.
55
+ - Separate known evidence from assumptions and list missing environment or requirement inputs.
56
+
57
+ ### Phase 2 — map risks and coverage
58
+
59
+ - Partition behavior into happy, negative, boundary, alternate, state, concurrency, retry/idempotency, and recovery scenarios.
60
+ - Choose an appropriate verification boundary: manual, component, API/integration, native/platform, browser/device, or exploratory.
61
+ - Build a risk-based matrix using likelihood, impact, detectability/evidence, and priority; do not inflate low-value cases.
62
+ - For web/backend/mobile/desktop, identify platform-specific behavior instead of copying a generic checklist.
63
+
64
+ ### Phase 3 — plan and report evidence
65
+
66
+ - Produce a compact table with preconditions, trigger/steps, expected result, priority, type, and traceability.
67
+ - For regression, separate must-test, high-risk targeted, ordinary targeted, and optional/deferred scope.
68
+ - For a bug, record the environment and evidence exactly; use `unknown` or an open question when data is absent.
69
+ - State what was verified, what was not run, and what evidence is still required for confidence.
70
+
71
+ ## Decision points
72
+
73
+ - Use smoke testing for a fast build/install/launch/core-path gate; use sanity testing for a narrow change-focused check after a build or fix.
74
+ - Use exploratory testing when the risk is poorly specified or emergent; record a charter, observations, and follow-up cases.
75
+ - Use manual verification for visual, accessibility, permission, lifecycle, and exploratory behavior where automation would miss the risk.
76
+ - Use an automated-test handoff when deterministic regression should live in code; `showdar-test` chooses and implements the level.
77
+ - Use a platform matrix when OS, browser, device class, orientation, permission state, network, or app lifecycle changes behavior.
78
+ - Use boundary testing for minimum, maximum, missing, duplicate, expired, and just-outside-valid inputs when those values change the outcome.
79
+ - Use severity for user/system impact and priority for execution order; do not conflate either with reproduction rate.
80
+
81
+ ## Stack detection
82
+
83
+ - Web/Next.js: cover browser matrix, responsive breakpoints, keyboard/accessibility, cookies/storage, cache, server/client boundaries, and runtime configuration.
84
+ - Backend/API/Node: cover schema validation, auth roles, timeout/retry, idempotency, concurrency, migrations, compatibility, observability, and data integrity.
85
+ - React Native: cover iOS/Android devices, permission states, cold/warm launch, foreground/background, deep links, offline transitions, push, orientation, and low-memory behavior.
86
+ - Flutter: cover widget states, rebuild/layout/raster risk, isolates, platform channels, plugin behavior, generated files, and Android/iOS integration.
87
+ - iOS/Android: cover supported OS/device range, signing/build flavor, permissions, background behavior, upgrade path, native crashes, and store-relevant configuration.
88
+ - Tauri/Electron: cover native command/capability permissions, serialization, packaging, updater artifacts, and macOS/Windows/Linux differences where supported.
89
+
90
+ ## Failure modes
91
+
92
+ - Producing hundreds of permutations without prioritizing distinct risk.
93
+ - Calling a test strategy complete because unit tests exist while permissions, data, platform, or recovery paths are unverified.
94
+ - Treating a planned scenario as executed evidence.
95
+ - Using arbitrary sleeps, unstable environments, or vague “works” expectations.
96
+ - Omitting preconditions, data setup, cleanup, account roles, or state reset.
97
+ - Marking a bug non-reproducible without recording attempts, environment, and evidence.
98
+ - Copying a generic mobile/browser matrix without mapping it to supported behavior.
99
+
100
+ ## Stop conditions
101
+
102
+ - Stop a readiness verdict when acceptance criteria, environment, required devices, data setup, or evidence are missing.
103
+ - Stop before assigning severity when impact or affected users cannot be supported by evidence.
104
+ - Stop before destructive data, production, deployment, or publish actions; this skill plans verification and does not authorize them.
105
+ - Stop when the requested work is automated test implementation and hand off the boundary to `showdar-test`.
106
+
107
+ ## Escalation conditions
108
+
109
+ - Escalate high-impact data loss, authorization, payment, privacy, security, or migration risks immediately with the evidence and affected surface.
110
+ - Escalate unsupported OS/browser/device combinations rather than treating them as passed.
111
+ - Escalate a blocked environment, missing fixture, unavailable native device, or unreliable test signal.
112
+ - Escalate contradictory requirements to `showdar-requirements` when QA cannot derive a stable expected result.
113
+
114
+ ## Verification
115
+
116
+ - Every scenario has a meaningful expected result, priority, type, and traceability source.
117
+ - Critical negative, boundary, state, permission, offline, concurrency, retry, and data-integrity risks are either covered or explicitly deferred.
118
+ - Matrix entries are limited to supported platforms and representative partitions.
119
+ - Bug reports contain only observed evidence; unknown fields are labelled rather than guessed.
120
+ - Distinguish “planned”, “executed”, “passed”, “failed”, and “blocked”; attach commands, logs, screenshots, or device details only when available.
121
+ - Re-read the plan for duplicate low-value cases and for gaps hidden by happy-path language.
122
+
123
+ ## Output contract
124
+
125
+ ### Test scenarios
126
+
127
+ | ID | Scenario | Precondition | Steps/trigger | Expected result | Priority | Type |
128
+ | --- | --- | --- | --- | --- | --- | --- |
129
+ | source or analysis ID | distinct risk/behavior | required state/data | concise action | observable result | P0-P3 or must/high/targeted | manual/automated handoff/exploratory |
130
+
131
+ ### Risk-based matrix
132
+
133
+ | Area | Risk | Likelihood | Impact | Evidence/coverage | Priority |
134
+ | --- | --- | --- | --- | --- | --- |
135
+ | changed surface | concrete failure | low/medium/high | low/medium/high | scenario, test, or missing evidence | must/high/deferred |
136
+
137
+ ### Regression scope
138
+
139
+ - **Must test:** acceptance and safety-critical paths.
140
+ - **High-risk regression:** changed boundaries, integrations, permissions, data, state, and platform behavior.
141
+ - **Targeted regression:** nearby behavior with plausible causal impact.
142
+ - **Optional/deferred:** useful coverage blocked by cost or low risk, with reason.
143
+
144
+ ### Bug report
145
+
146
+ Include `Title`, `Environment`, `Preconditions`, `Steps`, `Actual`, `Expected`, `Repro rate`, `Evidence`, `Impact/severity`, and `Notes`. Preserve unknowns and do not infer missing evidence.
147
+
148
+ ## Anti-patterns
149
+
150
+ - “Test everything” without partitions, risk, or an execution order.
151
+ - Treating showdar-quality as a replacement for automated test implementation.
152
+ - A test case with no expected result or no reproducible setup.
153
+ - A severity label based only on how often the reporter saw the issue.
154
+ - A release checklist that ignores changed behavior and only repeats build commands.
155
+ - Reporting “QA passed” when only a plan was written.
156
+ - Adding CI/CD, deployment, production data, or release automation to create evidence.
157
+
158
+ ## Example
159
+
160
+ **Request:** “Create regression scenarios for OTP login.”
161
+
162
+ - **Must test:** valid OTP within validity window; invalid OTP; expired OTP; wrong account; lockout/rate limit; resend invalidates or supersedes the prior code according to the requirement.
163
+ - **High-risk:** duplicate submit, concurrent verification, app background/foreground, offline during submit, clock skew boundary, localization of errors, and masked destination.
164
+ - **Platform matrix:** supported iOS/Android versions, cold and warm launch, permission/network state only where OTP delivery depends on it.
165
+ - **Expected evidence:** account fixture, timestamps, API response, UI state, logs/correlation ID, and observed device/browser details.
166
+ - **Boundary:** these are QA scenarios. If the user asks to implement deterministic API or UI tests, hand the selected boundary to `showdar-test`.
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 1,
3
+ "skill": "showdar-quality",
4
+ "datasets": [
5
+ {
6
+ "file": "data/quality-patterns.csv",
7
+ "idField": "id",
8
+ "requiredColumns": ["id", "category", "question", "evidence", "boundary", "risk", "tags", "reference", "stack"],
9
+ "searchableFields": ["category", "question", "evidence", "boundary", "risk", "tags"],
10
+ "filterFields": ["category", "stack"],
11
+ "reference": "references/qa-guide.md"
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,11 @@
1
+ id,category,question,evidence,boundary,risk,tags,reference,stack
2
+ scenario-partition,scenario,Which happy negative alternate and boundary scenarios can change the outcome?,requirements state model examples,valid invalid missing minimum maximum duplicate and cancelled inputs,happy path misses failure behavior,scenario coverage boundary,references/qa-guide.md,*
3
+ risk-based,risk,Which changed area has the highest likelihood and impact?,diff dependency data and incident history,prioritize authorization data integrity integration and recovery,uniform checklist hides critical risk,risk based testing,references/qa-guide.md,*
4
+ regression-scope,regression,What must high-risk targeted and optional regression cover?,change surface release notes known defects,changed boundaries plus adjacent behavior with explicit deferrals,release confidence is not tied to change,risk regression scope,references/qa-guide.md,*
5
+ platform-matrix,compatibility,Which OS browser device locale orientation and lifecycle partitions matter?,support matrix feature behavior native config,representative supported partitions not every combination,platform defect escapes desktop-only verification,device browser platform matrix,references/qa-guide.md,react-native;flutter;ios;android
6
+ network-offline,network,What happens across offline timeout reconnect retry and duplicate submission?,API contract logs state transitions,assert user state data integrity and idempotency after recovery,network transitions create duplicate or lost effects,offline retry idempotency,references/qa-guide.md,node;react-native;flutter
7
+ permission-lifecycle,platform,What should happen for denied limited revoked and background permission states?,permission API navigation lifecycle evidence,verify explain recover and re-entry behavior per platform,permission denial traps the user,permissions lifecycle,references/qa-guide.md,react-native;ios;android
8
+ accessibility-localization,quality,Which keyboard screen-reader text-scaling locale and formatting checks apply?,semantic roles snapshots locale fixtures,verify names focus errors order truncation and translated meaning,visual pass hides inaccessible or broken localized flow,accessibility localization,references/qa-guide.md,react;react-native;flutter
9
+ data-concurrency,data,How are concurrent retry and partial operations kept consistent?,transaction logs idempotency keys controlled interleavings,assert no duplicate loss or impossible state,serial-only testing misses races,data integrity concurrency,references/qa-guide.md,node
10
+ bug-reproduction,bug-report,What environment preconditions steps actual expected and evidence make this defect reproducible?,logs screen recording build and account details,record unknown fields and repro attempts without guessing,weak report cannot be triaged,bug reproduction evidence,references/qa-guide.md,*
11
+ release-qa,release,What smoke sanity acceptance and rollback-adjacent checks are required before handoff?,release scope build metadata test results,verify artifact and critical path without implying deployment,ship checklist claims unexecuted confidence,release QA smoke sanity,references/qa-guide.md,*
@@ -0,0 +1,20 @@
1
+ # QA planning guide
2
+
3
+ Use this reference to keep a QA plan small but risk-complete.
4
+
5
+ ## Risk partitions
6
+
7
+ Prioritize changed boundaries, high-impact data, authorization, state transitions, external integrations, platform differences, and recovery. Partition inputs into valid, invalid, missing, minimum, maximum, duplicate, stale, concurrent, offline, and cancelled cases only when each can produce a distinct outcome.
8
+
9
+ ## Evidence vocabulary
10
+
11
+ - **Planned:** scenario exists but was not run.
12
+ - **Executed:** command/device/environment and result are recorded.
13
+ - **Passed/failed:** an executed check has observable evidence against its expected result.
14
+ - **Blocked:** required environment, fixture, device, permission, or dependency was unavailable.
15
+
16
+ Never turn planned coverage into a pass claim.
17
+
18
+ ## Platform matrix
19
+
20
+ Choose supported partitions rather than every device. Record OS/browser version, device class, orientation, permission state, network transition, app lifecycle, locale, and build flavor when those dimensions affect behavior. For native apps include cold/warm launch, background/foreground, upgrade, and low-memory checks when the feature touches lifecycle or resources.