devendra-skill-package 1.0.2

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 (223) hide show
  1. package/.github/skills/boiler-project-generator/SKILL.md +103 -0
  2. package/.github/skills/boiler-project-generator/assets/templates/android/README.md +3 -0
  3. package/.github/skills/boiler-project-generator/assets/templates/angular/README.md +3 -0
  4. package/.github/skills/boiler-project-generator/assets/templates/flutter/README.md +3 -0
  5. package/.github/skills/boiler-project-generator/assets/templates/ios/README.md +3 -0
  6. package/.github/skills/boiler-project-generator/assets/templates/react/README.md +3 -0
  7. package/.github/skills/boiler-project-generator/assets/templates/react-native/README.md +3 -0
  8. package/.github/skills/boiler-project-generator/assets/templates/react-native/api-setup.ts +76 -0
  9. package/.github/skills/boiler-project-generator/assets/templates/react-native/component-primary-button.tsx +29 -0
  10. package/.github/skills/boiler-project-generator/assets/templates/react-native/env-config.env +4 -0
  11. package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-auth-screen.tsx +45 -0
  12. package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-dashboard-screen.tsx +45 -0
  13. package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-profile-screen.tsx +45 -0
  14. package/.github/skills/boiler-project-generator/assets/templates/react-native/hook-use-app-boot.ts +11 -0
  15. package/.github/skills/boiler-project-generator/assets/templates/react-native/navigation-setup.tsx +25 -0
  16. package/.github/skills/boiler-project-generator/assets/templates/react-native/project-structure.md +24 -0
  17. package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-hooks.ts +5 -0
  18. package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-session-slice.ts +29 -0
  19. package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-store.ts +15 -0
  20. package/.github/skills/boiler-project-generator/assets/templates/react-native/theme-index.ts +23 -0
  21. package/.github/skills/boiler-project-generator/assets/templates/react-native/utils-helpers.ts +7 -0
  22. package/.github/skills/boiler-project-generator/metadata.yaml +29 -0
  23. package/.github/skills/boiler-project-generator/references/android.md +19 -0
  24. package/.github/skills/boiler-project-generator/references/angular.md +14 -0
  25. package/.github/skills/boiler-project-generator/references/flutter.md +17 -0
  26. package/.github/skills/boiler-project-generator/references/ios.md +17 -0
  27. package/.github/skills/boiler-project-generator/references/react-native.md +103 -0
  28. package/.github/skills/boiler-project-generator/references/react.md +17 -0
  29. package/.github/skills/boiler-project-generator/scripts/angular.js +43 -0
  30. package/.github/skills/boiler-project-generator/scripts/generate-project.mjs +107 -0
  31. package/.github/skills/boiler-project-generator/scripts/init.js +105 -0
  32. package/.github/skills/boiler-project-generator/scripts/react-native.js +1041 -0
  33. package/.github/skills/boiler-project-generator/scripts/react.js +32 -0
  34. package/.github/skills/clean-architecture-generator/SKILL.md +235 -0
  35. package/.github/skills/clean-architecture-generator/references/architecture-core.md +126 -0
  36. package/.github/skills/clean-architecture-generator/references/platform-angular.md +374 -0
  37. package/.github/skills/clean-architecture-generator/references/platform-flutter.md +366 -0
  38. package/.github/skills/clean-architecture-generator/references/platform-react-native.md +590 -0
  39. package/.github/skills/clean-architecture-generator/references/platform-react.md +261 -0
  40. package/.github/skills/code-test-coverage-analyzer/SKILL.md +1358 -0
  41. package/.github/skills/code-test-coverage-analyzer/assets/config-questionnaire.md +118 -0
  42. package/.github/skills/code-test-coverage-analyzer/assets/conflict-resolution-protocol.md +99 -0
  43. package/.github/skills/code-test-coverage-analyzer/assets/coverage-calculation-rules.md +294 -0
  44. package/.github/skills/code-test-coverage-analyzer/assets/multi-strategy-search.md +145 -0
  45. package/.github/skills/code-test-coverage-analyzer/assets/output-file-contracts.md +651 -0
  46. package/.github/skills/code-test-coverage-analyzer/assets/status-definitions.md +273 -0
  47. package/.github/skills/code-test-coverage-analyzer/examples/example-invocation.md +208 -0
  48. package/.github/skills/code-test-coverage-analyzer/references/android-patterns.md +229 -0
  49. package/.github/skills/code-test-coverage-analyzer/references/angular-patterns.md +177 -0
  50. package/.github/skills/code-test-coverage-analyzer/references/backend-patterns.md +383 -0
  51. package/.github/skills/code-test-coverage-analyzer/references/flutter-patterns.md +254 -0
  52. package/.github/skills/code-test-coverage-analyzer/references/ios-patterns.md +228 -0
  53. package/.github/skills/code-test-coverage-analyzer/references/react-native-patterns.md +431 -0
  54. package/.github/skills/code-test-coverage-analyzer/references/react-patterns.md +206 -0
  55. package/.github/skills/code-test-coverage-analyzer/scripts/detect-platform.ps1 +261 -0
  56. package/.github/skills/code-test-coverage-analyzer/scripts/scan-repository.ps1 +242 -0
  57. package/.github/skills/code-test-coverage-analyzer/templates/brd-compliance-row.md +107 -0
  58. package/.github/skills/code-test-coverage-analyzer/templates/test-case-row.md +130 -0
  59. package/.github/skills/code-test-coverage-analyzer/templates/user-story-compliance-row.md +170 -0
  60. package/.github/skills/custom-font-integrator/SKILL.md +373 -0
  61. package/.github/skills/custom-font-integrator/assets/FontTestScreen.js +150 -0
  62. package/.github/skills/custom-font-integrator/references/example-info-plist.xml +21 -0
  63. package/.github/skills/custom-font-integrator/scripts/setup-fonts.sh +99 -0
  64. package/.github/skills/encryption-decryption-utility/Instructions.md +282 -0
  65. package/.github/skills/encryption-decryption-utility/README.md +222 -0
  66. package/.github/skills/encryption-decryption-utility/SKILL.md +645 -0
  67. package/.github/skills/encryption-decryption-utility/assets/encryption-config-template.json +13 -0
  68. package/.github/skills/encryption-decryption-utility/assets/platform-matrix.json +180 -0
  69. package/.github/skills/encryption-decryption-utility/metadata.yaml +51 -0
  70. package/.github/skills/encryption-decryption-utility/references/android-crypto.md +157 -0
  71. package/.github/skills/encryption-decryption-utility/references/angular-crypto.md +130 -0
  72. package/.github/skills/encryption-decryption-utility/references/approach-1-webcrypto.md +95 -0
  73. package/.github/skills/encryption-decryption-utility/references/approach-2-rsa-aes-cbc.md +111 -0
  74. package/.github/skills/encryption-decryption-utility/references/approach-3-aes-sharedkey.md +114 -0
  75. package/.github/skills/encryption-decryption-utility/references/architecture.md +233 -0
  76. package/.github/skills/encryption-decryption-utility/references/backend-alignment.md +506 -0
  77. package/.github/skills/encryption-decryption-utility/references/dependency-guidance.md +234 -0
  78. package/.github/skills/encryption-decryption-utility/references/ec-implementation.md +832 -0
  79. package/.github/skills/encryption-decryption-utility/references/error-handling-playbook.md +234 -0
  80. package/.github/skills/encryption-decryption-utility/references/flutter-crypto.md +105 -0
  81. package/.github/skills/encryption-decryption-utility/references/ios-crypto.md +338 -0
  82. package/.github/skills/encryption-decryption-utility/references/native-rsa-implementation.md +373 -0
  83. package/.github/skills/encryption-decryption-utility/references/node-crypto.md +86 -0
  84. package/.github/skills/encryption-decryption-utility/references/react-crypto.md +105 -0
  85. package/.github/skills/encryption-decryption-utility/references/react-native-crypto.md +1001 -0
  86. package/.github/skills/encryption-decryption-utility/references/react-web-crypto.md +668 -0
  87. package/.github/skills/encryption-decryption-utility/references/security-checklist.md +176 -0
  88. package/.github/skills/encryption-decryption-utility/references/web-crypto.md +74 -0
  89. package/.github/skills/encryption-decryption-utility/scripts/detect.js +128 -0
  90. package/.github/skills/encryption-decryption-utility/scripts/install.js +1713 -0
  91. package/.github/skills/encryption-decryption-utility/scripts/setup.js +800 -0
  92. package/.github/skills/encryption-decryption-utility/template.md +241 -0
  93. package/.github/skills/encryption-decryption-utility/templates/config-questionnaire.md +467 -0
  94. package/.github/skills/encryption-decryption-utility/templates/delivery-checklist.md +206 -0
  95. package/.github/skills/encryption-decryption-utility/templates/implementation-plan.md +304 -0
  96. package/.github/skills/feature-generator/SKILL.MD +2741 -0
  97. package/.github/skills/feature-generator/assets/fingerprint-schema.json +385 -0
  98. package/.github/skills/feature-generator/assets/spec-template.md +172 -0
  99. package/.github/skills/feature-generator/assets/transform-rules.json +82 -0
  100. package/.github/skills/feature-generator/references/api-envelope-patterns.md +327 -0
  101. package/.github/skills/feature-generator/references/screen-logic-patterns.md +399 -0
  102. package/.github/skills/feature-generator/references/state-library-patterns.md +464 -0
  103. package/.github/skills/figma-ui-mapper/README.md +34 -0
  104. package/.github/skills/figma-ui-mapper/SKILL.md +101 -0
  105. package/.github/skills/figma-ui-mapper/assets/templates/component-map-template.md +30 -0
  106. package/.github/skills/figma-ui-mapper/assets/templates/generation-report-template.md +49 -0
  107. package/.github/skills/figma-ui-mapper/metadata.yaml +22 -0
  108. package/.github/skills/figma-ui-mapper/references/android.md +11 -0
  109. package/.github/skills/figma-ui-mapper/references/angular.md +18 -0
  110. package/.github/skills/figma-ui-mapper/references/capacitor.md +18 -0
  111. package/.github/skills/figma-ui-mapper/references/common.md +23 -0
  112. package/.github/skills/figma-ui-mapper/references/expo.md +18 -0
  113. package/.github/skills/figma-ui-mapper/references/flutter.md +18 -0
  114. package/.github/skills/figma-ui-mapper/references/frameworks/angular/rules.md +23 -0
  115. package/.github/skills/figma-ui-mapper/references/frameworks/capacitor/rules.md +23 -0
  116. package/.github/skills/figma-ui-mapper/references/frameworks/expo/rules.md +23 -0
  117. package/.github/skills/figma-ui-mapper/references/frameworks/flutter/rules.md +23 -0
  118. package/.github/skills/figma-ui-mapper/references/frameworks/ionic/rules.md +23 -0
  119. package/.github/skills/figma-ui-mapper/references/frameworks/kotlin-multiplatform/rules.md +23 -0
  120. package/.github/skills/figma-ui-mapper/references/frameworks/native-android/rules.md +23 -0
  121. package/.github/skills/figma-ui-mapper/references/frameworks/native-ios/rules.md +23 -0
  122. package/.github/skills/figma-ui-mapper/references/frameworks/next/rules.md +23 -0
  123. package/.github/skills/figma-ui-mapper/references/frameworks/nuxt/rules.md +23 -0
  124. package/.github/skills/figma-ui-mapper/references/frameworks/react/rules.md +19 -0
  125. package/.github/skills/figma-ui-mapper/references/frameworks/react-native/rules.md +23 -0
  126. package/.github/skills/figma-ui-mapper/references/frameworks/svelte/rules.md +23 -0
  127. package/.github/skills/figma-ui-mapper/references/frameworks/vue/rules.md +23 -0
  128. package/.github/skills/figma-ui-mapper/references/ionic.md +18 -0
  129. package/.github/skills/figma-ui-mapper/references/ios.md +11 -0
  130. package/.github/skills/figma-ui-mapper/references/kotlin-multiplatform.md +18 -0
  131. package/.github/skills/figma-ui-mapper/references/native-android.md +18 -0
  132. package/.github/skills/figma-ui-mapper/references/native-ios.md +18 -0
  133. package/.github/skills/figma-ui-mapper/references/next.md +18 -0
  134. package/.github/skills/figma-ui-mapper/references/nuxt.md +18 -0
  135. package/.github/skills/figma-ui-mapper/references/react-figma-guideline.md +21 -0
  136. package/.github/skills/figma-ui-mapper/references/react-native.md +18 -0
  137. package/.github/skills/figma-ui-mapper/references/react.md +18 -0
  138. package/.github/skills/figma-ui-mapper/references/script-usage.md +46 -0
  139. package/.github/skills/figma-ui-mapper/references/svelte.md +18 -0
  140. package/.github/skills/figma-ui-mapper/references/vue.md +18 -0
  141. package/.github/skills/figma-ui-mapper/references/workflow.md +74 -0
  142. package/.github/skills/figma-ui-mapper/scripts/generate-page-through-figma.js +635 -0
  143. package/.github/skills/figma-ui-mapper/scripts/generate-react-page-through-figma.js +4 -0
  144. package/.github/skills/frontend-task-breakdown/SKILL.md +734 -0
  145. package/.github/skills/md-file-converter/SKILL.md +291 -0
  146. package/.github/skills/md-file-converter/config/formats.json +114 -0
  147. package/.github/skills/md-file-converter/extractors/extract-docx.sh +120 -0
  148. package/.github/skills/md-file-converter/extractors/extract-eml.py +108 -0
  149. package/.github/skills/md-file-converter/extractors/extract-pdf.sh +97 -0
  150. package/.github/skills/md-file-converter/extractors/extract-pptx.py +143 -0
  151. package/.github/skills/md-file-converter/extractors/extract-xlsx.py +175 -0
  152. package/.github/skills/md-file-converter/scripts/check-tools.sh +47 -0
  153. package/.github/skills/md-file-converter/scripts/extract-archive.sh +83 -0
  154. package/.github/skills/md-file-converter/scripts/extract-ocr.sh +77 -0
  155. package/.github/skills/md-file-converter/scripts/get-metadata.sh +57 -0
  156. package/.github/skills/md-file-converter/templates/output.md +73 -0
  157. package/.github/skills/md-file-converter/templates/unsupported-object.md +6 -0
  158. package/.github/skills/mockAPI-contract-generator/SKILL.md +607 -0
  159. package/.github/skills/test-case-validator/CHANGELOG.md +155 -0
  160. package/.github/skills/test-case-validator/CONFIGURATION.md +130 -0
  161. package/.github/skills/test-case-validator/EXAMPLES.md +50 -0
  162. package/.github/skills/test-case-validator/QUALITY_SCORING.md +98 -0
  163. package/.github/skills/test-case-validator/README.md +111 -0
  164. package/.github/skills/test-case-validator/REPORT_TEMPLATE.md +116 -0
  165. package/.github/skills/test-case-validator/SKILL.md +209 -0
  166. package/.github/skills/test-case-validator/SYSTEM_PROMPT.md +127 -0
  167. package/.github/skills/test-case-validator/TRACEABILITY_ENGINE.md +152 -0
  168. package/.github/skills/test-case-validator/VALIDATION_RULES.md +411 -0
  169. package/.github/skills/test-case-validator/config/default.config.yaml +62 -0
  170. package/.github/skills/test-case-validator/docs/ARCHITECTURE.md +66 -0
  171. package/.github/skills/test-case-validator/docs/EXTENDING.md +85 -0
  172. package/.github/skills/test-case-validator/docs/FAQ.md +88 -0
  173. package/.github/skills/test-case-validator/docs/VERSIONING.md +55 -0
  174. package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-brd.md +43 -0
  175. package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-test-cases.csv +9 -0
  176. package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-user-story.md +29 -0
  177. package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/output-report.md +303 -0
  178. package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/input-spec.md +43 -0
  179. package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/input-test-files-index.md +56 -0
  180. package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/output-report.md +274 -0
  181. package/.github/skills/test-case-validator/prompts/00-applicability-resolution.md +61 -0
  182. package/.github/skills/test-case-validator/prompts/01-extraction-user-story.md +58 -0
  183. package/.github/skills/test-case-validator/prompts/02-extraction-brd.md +64 -0
  184. package/.github/skills/test-case-validator/prompts/03-extraction-test-cases.md +92 -0
  185. package/.github/skills/test-case-validator/prompts/04-traceability-matrix.md +41 -0
  186. package/.github/skills/test-case-validator/prompts/05-coverage-analysis.md +46 -0
  187. package/.github/skills/test-case-validator/prompts/06-missing-scenario-detection.md +32 -0
  188. package/.github/skills/test-case-validator/prompts/07-duplicate-detection.md +36 -0
  189. package/.github/skills/test-case-validator/prompts/08-risk-analysis.md +39 -0
  190. package/.github/skills/test-case-validator/prompts/09-gated-wiring-validation.md +53 -0
  191. package/.github/skills/test-case-validator/prompts/10-observation-report.md +56 -0
  192. package/.github/skills/test-case-validator/prompts/11-final-report-assembly.md +57 -0
  193. package/.github/skills/test-case-validator/templates/coverage-table.md +25 -0
  194. package/.github/skills/test-case-validator/templates/executive-summary.md +38 -0
  195. package/.github/skills/test-case-validator/templates/final-summary-block.md +87 -0
  196. package/.github/skills/test-case-validator/templates/observation-entry.md +41 -0
  197. package/.github/skills/test-case-validator/templates/rtm-row.md +25 -0
  198. package/.github/skills/validation-engine-builder/README.md +50 -0
  199. package/.github/skills/validation-engine-builder/SKILL.md +241 -0
  200. package/.github/skills/validation-engine-builder/references/core.md +158 -0
  201. package/.github/skills/validation-engine-builder/references/platform-angular.md +166 -0
  202. package/.github/skills/validation-engine-builder/references/platform-flutter.md +118 -0
  203. package/.github/skills/validation-engine-builder/references/platform-react-native.md +170 -0
  204. package/.github/skills/validation-engine-builder/references/platform-react.md +94 -0
  205. package/.github/skills/validation-engine-builder/scripts/apply-to-project.js +80 -0
  206. package/.github/skills/validation-engine-builder/scripts/generate-angular.js +271 -0
  207. package/.github/skills/validation-engine-builder/scripts/generate-flutter.js +298 -0
  208. package/.github/skills/validation-engine-builder/scripts/generate-react-native.js +217 -0
  209. package/.github/skills/validation-engine-builder/scripts/generate-react.js +163 -0
  210. package/.github/skills/validation-engine-builder/scripts/install-deps.js +53 -0
  211. package/.github/skills/validation-engine-builder/scripts/shared/detect-platform.js +68 -0
  212. package/.github/skills/validation-engine-builder/scripts/shared/npm-deps.js +103 -0
  213. package/.github/skills/validation-engine-builder/scripts/shared/rhf-hook.js +43 -0
  214. package/.github/skills/validation-engine-builder/scripts/shared/ts-messages-regex.js +62 -0
  215. package/.github/skills/validation-engine-builder/scripts/shared/util.js +44 -0
  216. package/.github/skills/validation-engine-builder/scripts/shared/yup-schemas.js +80 -0
  217. package/.github/skills/validation-engine-builder/template.md +73 -0
  218. package/.github/skills/validation-engine-builder/templates/messages.json +22 -0
  219. package/.github/skills/validation-engine-builder/templates/regex.json +16 -0
  220. package/.github/skills/validation-engine-builder/templates/schemas.json +48 -0
  221. package/bin/index.js +145 -0
  222. package/package.json +22 -0
  223. package/readme.md +0 -0
@@ -0,0 +1,274 @@
1
+ # Test Case Validation Report — Beta Features Toggle
2
+
3
+ Generated: 2026-07-08 · Project Profile: `frontend_automated` (auto-detected
4
+ — `TEST_CASE_INPUT` matched a Jest source glob with React component
5
+ imports) · BRD Mode: **Combined Spec Mode** (no `BRD_INPUT` provided;
6
+ `input-spec.md` serves as both User Story and BRD source)
7
+
8
+ ## 1. Executive Summary
9
+
10
+ This validates 9 in-scope automated tests (across 5 files) against 4
11
+ functional requirements, 3 acceptance criteria, and 2 success criteria in
12
+ `input-spec.md`. **Headline finding**: every individual piece of this
13
+ feature is unit-tested and green — persistence, the toggle component, the
14
+ entry-card component, and the deep-link guard all pass their own tests in
15
+ isolation — but the Home screen's actual, real-preference-driven decision to
16
+ show or hide the Beta Dashboard entry card (FR-003) is never exercised by
17
+ any test. This is a textbook **Gated-Behavior Wiring Gap** (Rule 16): a user
18
+ could toggle the feature on, the toggle would correctly persist `true`, and
19
+ the entry card would still never appear, because nothing verifies the Home
20
+ screen actually reads that persisted value — and every existing test would
21
+ stay green.
22
+
23
+ **Scope**
24
+
25
+ | Category | Applicable? | Reason if N/A |
26
+ |---|---|---|
27
+ | Database Coverage | N/A | `frontend_automated` profile — preference persistence uses local storage, covered under Backend/Data-Layer Coverage instead |
28
+ | Browser Compatibility, Localization | N/A | `frontend_automated` profile default exclusions; not in scope of this spec |
29
+ | All other Rule 2-11 categories | Applicable | |
30
+
31
+ **Configuration used**: Project Profile `frontend_automated` (auto-detected)
32
+ · BRD Mode: Combined Spec Mode · Scoring weights: default.
33
+
34
+ ## 2. Requirement Traceability Matrix
35
+
36
+ | Requirement ID | Requirement | Mapped Test Cases | Status | Observation |
37
+ |---|---|---|---|---|
38
+ | FR-001 | Toggle defaults off | `betaFeaturePreference.test.ts::...defaults to false...(FR-001)` (T1), `BetaFeatureToggle.test.tsx::...renders as off by default` (T2) | Full | — |
39
+ | FR-002 | Toggling persists preference | `betaFeaturePreference.test.ts::...(FR-002)` ×2 (T1) | Full | — |
40
+ | FR-003 | Entry card shown/hidden by real preference; tap navigates | `BetaDashboardEntryCard.test.tsx` ×2 (T2, logic-level only) | **Partial** | Component renders and its `onClick` fires correctly in isolation, but no test confirms `HomeScreen` actually reads the real preference and conditionally renders/hides this component — see §17 |
41
+ | FR-004 | Deep-link redirect when preference is false | `betaDashboardGuard.test.ts::...(FR-004)` ×2 — both true/false states (T1) | Full | Genuine integration-level evidence — the guard test drives the real preference value, not a mock |
42
+ | US-01-AC1 | Toggle on → persisted + entry card shown | betaFeaturePreference tests + BetaDashboardEntryCard tests | Partial | Persistence half is Full; entry-card-on-real-Home half is the FR-003 wiring gap |
43
+ | US-01-AC2 | Toggle off → entry card hidden | Same as AC1 | Partial | Same wiring gap, inverse direction |
44
+ | US-01-AC3 | Deep link while off → redirect to Home | `betaDashboardGuard.test.ts` | Full | — |
45
+ | SC-001 | Never-toggled user sees no entry card | None directly | Partial | Depends on the same untested Home-screen wiring as FR-003 |
46
+ | SC-002 | Toggle-on survives reload, entry card still shown | `betaFeaturePreference.test.ts` (persistence only) | Partial | Persistence confirmed; post-reload Home rendering not confirmed |
47
+
48
+ **Excluded from this RTM (correctly, not as orphans)**: `HomeScreen.test.tsx`'s
49
+ "shows the standard home content" and "shows the refresh button" — these
50
+ test pre-existing Home screen behavior unrelated to beta features and are
51
+ out of this spec's scope, not orphan test cases for *this* feature.
52
+
53
+ ## 3. User Story Validation
54
+
55
+ | Story | Priority | ACs Covered | Status |
56
+ |---|---|---|---|
57
+ | US-01 — Enable Beta Features | P2 | 1 Full / 2 Partial of 3 | Partial |
58
+
59
+ ## 4. BRD Validation
60
+
61
+ **N/A — Combined Spec Mode.** No separate BRD was provided; `input-spec.md`
62
+ serves as the sole requirements source and is fully covered by Section 2.
63
+
64
+ ## 5. Acceptance Criteria Validation
65
+
66
+ | AC | Positive | Negative | Status |
67
+ |---|---|---|---|
68
+ | AC1 (toggle on) | Partial — persistence yes, real-Home rendering no | n/a | Partial |
69
+ | AC2 (toggle off) | Partial — same gap, inverse | n/a | Partial |
70
+ | AC3 (deep link while off) | n/a | ✓ `betaDashboardGuard.test.ts` | Full |
71
+
72
+ ## 6. Frontend Coverage Report
73
+
74
+ | Category | Status | Evidence |
75
+ |---|---|---|
76
+ | UI Rendering | Full | Toggle and entry-card components both render-tested |
77
+ | Button Clicks | Full | Toggle `onToggle` and entry-card `onClick` both tested |
78
+ | Navigation | Partial | Deep-link redirect (FR-004) fully tested; entry-card-triggered navigation to Beta Dashboard is asserted only as a called callback, not as an actual route change |
79
+ | Loading / Empty / Error States | N/A | Not applicable to this feature — no async load in the toggle flow |
80
+ | Accessibility, Keyboard Navigation | Missing | Not referenced in any test in the provided suite |
81
+
82
+ ## 7. Backend / Data-Layer Coverage Report
83
+
84
+ *(Reinterpreted per `VALIDATION_RULES.md` Rule 3's no-real-backend note — no
85
+ server-side component exists for this feature; persistence is local.)*
86
+
87
+ | Category | Status | Evidence |
88
+ |---|---|---|
89
+ | Preference persistence (write) | Full | `betaFeaturePreference.test.ts` |
90
+ | Preference persistence (read, at Home-mount time) | **Missing** | No test confirms `HomeScreen` reads the persisted value on mount — see §17 |
91
+ | Route guard logic | Full | `betaDashboardGuard.test.ts` |
92
+
93
+ ## 8. Functional Coverage Report
94
+
95
+ | Dimension | Status |
96
+ |---|---|
97
+ | Positive | Partial — see FR-003 gap |
98
+ | Negative | Full — off-state and redirect-while-off both tested |
99
+ | Boundary | N/A — no numeric/length limits in this feature |
100
+ | Business Rule | N/A — see Section 12 |
101
+
102
+ ## 9. API Coverage
103
+
104
+ N/A — this feature has no network API surface.
105
+
106
+ ## 10. Database Coverage
107
+
108
+ N/A — see Scope table, Section 1.
109
+
110
+ ## 11. Security Coverage
111
+
112
+ No security-sensitive behavior in this feature beyond the deep-link guard
113
+ (FR-004), which is fully and correctly tested at the integration level.
114
+
115
+ ## 12. Business Rule Coverage
116
+
117
+ No calculation, eligibility, or approval-flow business rules are documented
118
+ in this spec — this feature is a preference toggle with a visibility gate,
119
+ not a business-rule-bearing feature. Section marked complete by default
120
+ (nothing to test) rather than silently omitted.
121
+
122
+ ## 13. Missing Scenario Report
123
+
124
+ | Category | Applicable? | Present? | Affected Requirement(s) | Note |
125
+ |---|---|---|---|---|
126
+ | Refresh / Reload | Yes | No | SC-002 | No test confirms the entry card survives a simulated app reload with the preference already persisted true |
127
+ | Race Condition | Yes | No | FR-002 | Rapid double-toggle (on-then-off before the first persist completes) is untested |
128
+
129
+ ## 14. Duplicate Test Case Report
130
+
131
+ No duplicate test cases found across the 9 in-scope tests.
132
+
133
+ ## 15. Test Case Quality Report
134
+
135
+ | Test Case | Issue | Impact |
136
+ |---|---|---|
137
+ | `BetaFeatureToggle.test.tsx`, `BetaDashboardEntryCard.test.tsx` (4 tests) | No inline `(FR-NNN)` tag, relying on Tier-2 structural mapping | Low — mapping is still `confirmed`-tier via unambiguous folder structure, but if this module ever splits into more files, structural mapping could become ambiguous; recommend adding explicit tags proactively |
138
+
139
+ ## 16. Risk Coverage Report
140
+
141
+ | Requirement/Feature | Risk Tier (+ why) | Test Count | Meets Minimum? |
142
+ |---|---|---|---|
143
+ | FR-003 (entry card visibility) | Medium — a visible-feature bug, not security/financial, but affects every user of the feature | 2 (both logic-level only) | Meets numeric minimum (3) — no, 2 present; **and** neither is integration-level — see §17 |
144
+ | FR-004 (deep-link guard) | Medium — prevents unauthorized early access to beta functionality | 2 | Yes, and both are integration-level |
145
+
146
+ ## 17. Gated-Behavior Wiring Report
147
+
148
+ | Requirement ID | Gate Condition | Logic-Level Test | Integration-Level Test | Status | Severity |
149
+ |---|---|---|---|---|---|
150
+ | FR-003 | `betaFeaturesPreference === true` read by `HomeScreen` to decide whether to render `BetaDashboardEntryCard` | `BetaDashboardEntryCard.test.tsx` (component renders and fires `onClick` when directly mounted) | **None** — no `HomeScreen.test.tsx` test sets the real preference to `true`/`false` and asserts the card's presence/absence | **Wiring Gap** | Medium |
151
+ | FR-004 | `betaFeaturesPreference === false` read by the Beta Dashboard route guard | `betaDashboardGuard.test.ts` (both states) | `betaDashboardGuard.test.ts` (both states) — this test *is* the integration point | Full | — |
152
+
153
+ This is the report's central finding: FR-003 and FR-004 look identically
154
+ "done" by ordinary traceability counting (each has 2 mapped tests), but only
155
+ FR-004's tests actually exercise the real gate. FR-003's tests exercise a
156
+ component that *could* be wired correctly or incorrectly with no observable
157
+ difference in test results either way.
158
+
159
+ ## 18. Observation Report
160
+
161
+ ### Beta Dashboard entry card's visibility is never tested against the real preference (FR-003)
162
+ **Severity**: Medium
163
+ **Evidence**: `BetaDashboardEntryCard.test.tsx` renders the component
164
+ directly and asserts its label and `onClick` behavior. No test in
165
+ `HomeScreen.test.tsx` (or anywhere else in the suite) sets the real
166
+ persisted `betaFeaturesPreference` value and asserts the card's presence at
167
+ `true` and absence at `false`.
168
+ **Affected Requirement(s)**: FR-003, US-01-AC1, US-01-AC2, SC-001, SC-002
169
+ **Affected Test Case(s)**: `BetaDashboardEntryCard.test.tsx` (covers the
170
+ component, not the wiring), `HomeScreen.test.tsx` (covers unrelated Home
171
+ behavior, not this feature)
172
+ **Impact**: A future refactor of `HomeScreen`'s mount logic (e.g. a typo in
173
+ the preference-key string, a forgotten `useEffect` dependency, an
174
+ accidentally-removed conditional) would break this feature for every user
175
+ who enables it, and every existing test — including this feature's own
176
+ "passing" ones — would remain green.
177
+ **Recommendation**: Add a `HomeScreen.test.tsx` test that mocks the
178
+ preference read to `true`, renders `HomeScreen`, and asserts the entry card
179
+ is present; and a second test with the mock at `false` asserting it's
180
+ absent. Model this directly on `betaDashboardGuard.test.ts`'s pattern, which
181
+ already does this correctly for FR-004.
182
+ **Suggested Test Case**: "Given the beta-features preference is `true`, when
183
+ `HomeScreen` mounts, then the Beta Dashboard entry card is rendered; given
184
+ the preference is `false`, when `HomeScreen` mounts, then it is absent."
185
+
186
+ ### Reload/persistence-survival scenario (SC-002) untested end to end
187
+ **Severity**: Low
188
+ **Evidence**: `betaFeaturePreference.test.ts` confirms the write; no test
189
+ simulates a reload (fresh mount reading the already-persisted value) and
190
+ confirms the Home screen reflects it — this is really the same root
191
+ integration point as the Medium-severity finding above, so consider it
192
+ resolved by the same fix rather than a separate one.
193
+ **Affected Requirement(s)**: SC-002
194
+ **Affected Test Case(s)**: None directly
195
+ **Impact**: Low incremental risk beyond the finding above — same underlying
196
+ gap.
197
+ **Recommendation**: The `HomeScreen` test added for the finding above
198
+ naturally covers this too, since it mounts fresh with a pre-set preference
199
+ value (functionally equivalent to "after reload").
200
+ **Suggested Test Case**: Covered by the suggested test above.
201
+
202
+ ## 19. Recommendations
203
+
204
+ 1. **Add the two `HomeScreen` integration tests** (real preference → entry
205
+ card presence/absence) — closes the report's central finding and both
206
+ observations above in one change.
207
+ 2. **Add explicit `(FR-NNN)` tags** to `BetaFeatureToggle.test.tsx` and
208
+ `BetaDashboardEntryCard.test.tsx` — low effort, removes reliance on
209
+ structural (Tier 2) mapping.
210
+ 3. **Add a rapid-double-toggle test** for FR-002 if this preference write is
211
+ not already debounced/sequenced at the state-management layer.
212
+
213
+ ## 20. Overall Quality Score
214
+
215
+ | Category | Weight | Fraction | Points |
216
+ |---|---|---|---|
217
+ | Requirement Traceability | 25 | 0.72 | 18 |
218
+ | Coverage | 20 | 0.78 | 16 |
219
+ | Acceptance Criteria | 15 | 0.67 | 10 |
220
+ | Frontend Coverage | 10 | 0.75 | 8 |
221
+ | Backend/Data-Layer Coverage | 10 | 1.00 | 10 |
222
+ | Business Rules | 10 | 1.00 | 10 |
223
+ | Quality | 5 | 0.89 | 4 |
224
+ | Duplicates | 5 | 1.00 | 5 |
225
+ | **Total** | | | **81** |
226
+
227
+ A genuinely well-tested small feature — no duplicates, no missing business
228
+ rules, strong frontend/data-layer scores — held out of `PASS` almost
229
+ entirely by one Rule 16 finding. This is the intended behavior of Rule 16:
230
+ it should be possible for an otherwise-excellent suite to fall short of 95
231
+ specifically because of an unverified wiring point, since that's exactly
232
+ the kind of gap that erodes confidence in an all-green test run.
233
+
234
+ ## Final Summary
235
+
236
+ TEST CASE VALIDATION SUMMARY
237
+
238
+ Project Profile: frontend_automated
239
+ BRD Mode: Combined Spec Mode
240
+
241
+ Total Requirements: 4
242
+ Covered Requirements: 4 (3 Full + 1 Partial)
243
+ Missing Requirements: 0
244
+
245
+ Total User Stories: 1
246
+ Covered User Stories: 1 (Partial)
247
+
248
+ Total Acceptance Criteria: 3
249
+ Covered Acceptance Criteria: 3 (1 Full + 2 Partial)
250
+
251
+ Total Test Cases: 9 (in scope; 2 additional pre-existing tests excluded as out of scope)
252
+
253
+ Requirement Coverage: 72%
254
+ Acceptance Criteria Coverage: 67%
255
+ Frontend Coverage: 75%
256
+ Backend/Data-Layer Coverage: 100%
257
+ Functional Coverage: ~85%
258
+ Negative Coverage: 100%
259
+ Boundary Coverage: N/A — no boundary conditions in this feature
260
+ Business Rule Coverage: N/A — no business rules documented
261
+ API Coverage: N/A — no network API surface
262
+ Database Coverage: N/A — local persistence only, see Backend/Data-Layer
263
+ Security Coverage: Full (only security-relevant path is FR-004, fully tested)
264
+ Automation Coverage: 100% (all 9 are automated source tests)
265
+
266
+ Duplicate Test Cases: 0
267
+
268
+ Missing Scenarios: 2 categories (see Section 13)
269
+
270
+ Gated-Behavior Wiring Gaps: 1 (FR-003 — see Section 17)
271
+
272
+ Overall Quality Score: 81/100
273
+
274
+ Status: **NEEDS IMPROVEMENT**
@@ -0,0 +1,61 @@
1
+ # Prompt 00 — Applicability Resolution
2
+
3
+ **Input**: `TEST_CASE_INPUT` (for auto-detection signal), `PROJECT_PROFILE_INPUT`
4
+ (if explicit), `config/default.config.yaml`.
5
+ **Output**: `RESOLVED_PROFILE` (the active profile name) and
6
+ `APPLICABILITY_MAP` (category → `Applicable` | `N/A` + reason), consumed by
7
+ every later step per `VALIDATION_RULES.md` Rule 17.
8
+
9
+ This is Rule 17's procedure. It has its own file — and runs first, before
10
+ extraction even completes — because every other rule (2 through 11, and the
11
+ Missing-Scenario categories in Rule 7) depends on knowing what's in scope
12
+ *before* it can correctly classify anything as `Missing` rather than `N/A`.
13
+ Rule 1 (Requirement Traceability) does not depend on this step — it
14
+ operates on specific requirement IDs, not on the category checklist — but
15
+ running this step before Rule 1 anyway is harmless and keeps the pipeline's
16
+ step order simple to reason about.
17
+
18
+ ## Procedure
19
+
20
+ 1. **Resolve the profile.**
21
+ - If `PROJECT_PROFILE_INPUT` names a profile in
22
+ `config/default.config.yaml`'s `profiles` map, use it directly.
23
+ - Otherwise, evaluate `auto_detect.order` (see `CONFIGURATION.md` for the
24
+ exact structure) top to bottom against `TEST_CASE_INPUT`'s shape; use
25
+ the first matching rule's profile. If none match, use
26
+ `auto_detect.fallback_profile`.
27
+ - Record which path was taken (`explicit` vs. `auto-detected`, and if
28
+ auto-detected, which signal matched) — this must be stated in the
29
+ Executive Summary per `templates/executive-summary.md`.
30
+
31
+ 2. **Build `APPLICABILITY_MAP`.** For every category referenced anywhere in
32
+ `VALIDATION_RULES.md` Rules 2, 3, 7, and 9-11, look up its entry in
33
+ `CONFIGURATION.md`'s Applicability Matrix for `RESOLVED_PROFILE`:
34
+ - Present in the resolved profile's `disabled_categories` (config key,
35
+ snake_case) → `N/A`, with the matrix's stated reason.
36
+ - Not present → `Applicable`.
37
+ - **Not found in the Applicability Matrix at all** (a category newly
38
+ added to `VALIDATION_RULES.md` without a corresponding matrix row) →
39
+ default to `Applicable`, and separately record it as
40
+ `unclassified: true` — this must surface in the final report's
41
+ Recommendations section ("category X is not yet classified in the
42
+ Applicability Matrix — please confirm and add it"), per
43
+ `VALIDATION_RULES.md` Rule 17 step 4. Do not silently guess which
44
+ profiles should exclude it.
45
+
46
+ 3. **Category name mapping.** Config keys are snake_case
47
+ (`browser_compatibility`); prose/report category names are Title Case
48
+ ("Browser Compatibility"). Convert deterministically
49
+ (`snake_case → Title Case` by replacing underscores with spaces and
50
+ capitalizing each word) — do not introduce a second, inconsistent
51
+ naming scheme. If a category's natural prose name doesn't
52
+ round-trip cleanly through this conversion (e.g. an acronym like "API"),
53
+ the Applicability Matrix's prose column is authoritative for display;
54
+ the config key is authoritative for matching.
55
+
56
+ ## Output
57
+
58
+ `APPLICABILITY_MAP`: one entry per category —
59
+ `{ category: string, applicable: boolean, reason: string | null, unclassified: boolean }`.
60
+ Feed this into every later rule; a category never gets a second, ad hoc
61
+ applicability judgment call inside an individual rule's prompt file.
@@ -0,0 +1,58 @@
1
+ # Prompt 01 — User Story Extraction
2
+
3
+ **Input**: `USER_STORY_INPUT` (raw document, any supported format).
4
+ **Output**: `US_MODEL` conforming to `TRACEABILITY_ENGINE.md` §1's
5
+ `UserStory`/`AcceptanceCriterion`/`Requirement` shapes.
6
+
7
+ ## Procedure
8
+
9
+ 1. **Detect structure first.** Is this a prose user-story document ("As a
10
+ ..., I want ..., so that ..."), a Spec-Kit-style `spec.md` (User Stories +
11
+ `FR-NNN` Functional Requirements + `SC-NNN` Success Criteria), or a
12
+ requirements table? The extraction target is the same regardless; the
13
+ parsing path differs.
14
+
15
+ 2. **Extract per user story**:
16
+ - ID (explicit, or synthesize `US-<n>` per `TRACEABILITY_ENGINE.md` §2.5)
17
+ - Title / one-line summary
18
+ - Priority (P1/P2/... or High/Medium/Low if stated; `null` if absent —
19
+ never invent one)
20
+ - Actor(s) / role(s)
21
+ - Business goal ("so that ...")
22
+ - Acceptance Criteria — extract every "Given/When/Then" or numbered
23
+ criterion as its own `AcceptanceCriterion`, synthesizing
24
+ `<story-id>-AC-<m>` IDs if the source doesn't number them
25
+ - Functional Requirements referenced or implied within the story (if the
26
+ document has a separate FR-NNN list, cross-link rather than duplicate)
27
+ - Non-Functional Requirements (performance, security, accessibility,
28
+ compliance) stated for this story specifically
29
+ - Business Rules embedded in the story's prose
30
+ - Validation Rules (input constraints, format rules)
31
+ - Workflow / state-transition steps described
32
+ - Calculations described (capture the exact formula text verbatim — do
33
+ not paraphrase a formula, paraphrasing risks silently changing it)
34
+ - APIs referenced (endpoint names/paths if given)
35
+ - UI elements referenced (screens, components, specific labels/copy)
36
+ - Navigation flow (what leads to this screen, what it leads to)
37
+ - Dependencies (on other stories, other systems, other teams)
38
+ - Error handling described
39
+ - Security requirements described (auth, authorization, data handling)
40
+
41
+ 3. **Also extract document-level items** not tied to one story: a shared
42
+ glossary, cross-cutting NFRs, an explicit Out-of-Scope section (capture
43
+ this — Rule 1's Document Integrity check needs to know what was
44
+ deliberately excluded vs. accidentally uncovered).
45
+
46
+ 4. **Flag extraction uncertainty inline.** If a sentence could be read as
47
+ either a requirement or a design note, extract it but mark
48
+ `category: "ambiguous"` rather than silently picking one classification —
49
+ surface this in the Executive Summary's Document Integrity note.
50
+
51
+ ## Do Not
52
+
53
+ - Do not infer an acceptance criterion that "should" exist based on the
54
+ story's title if it isn't written in the document.
55
+ - Do not merge two similarly-worded stories into one unless the document
56
+ itself presents them as one.
57
+ - Do not resolve a `[NEEDS CLARIFICATION]`-style marker in the source
58
+ document — extract it as-is and flag it as an open item.
@@ -0,0 +1,64 @@
1
+ # Prompt 02 — BRD Extraction
2
+
3
+ **Input**: `BRD_INPUT`, if provided.
4
+ **Output**: `BRD_MODEL` conforming to `TRACEABILITY_ENGINE.md` §1's
5
+ `Requirement` shape (plus the BRD-specific fields below).
6
+
7
+ ## Step 0 — Combined Spec Mode Check
8
+
9
+ If `BRD_INPUT` was not provided (per `SKILL.md` step 2, `COMBINED_SPEC_MODE =
10
+ true`): **do not run this extraction**. Produce
11
+ `BRD_MODEL = { combined_spec_mode: true, requirements: [] }` and move on.
12
+ Report sections 4 and 10 (BRD Validation, Database Coverage if it was
13
+ BRD-sourced) must read this flag and render
14
+ `N/A — Combined Spec Mode` rather than iterating an empty list and reporting
15
+ 0% coverage.
16
+
17
+ ## Procedure (when a separate BRD exists)
18
+
19
+ 1. **Extract per requirement**:
20
+ - Requirement ID (explicit; never synthesize a BRD ID without flagging it
21
+ as synthesized — BRD IDs are usually load-bearing elsewhere, e.g. in a
22
+ compliance sign-off, so guessing one is riskier than guessing a user
23
+ story ID)
24
+ - Requirement text (verbatim for calculations/eligibility rules)
25
+ - Functional vs. Non-Functional classification
26
+ - Business Rules (eligibility, calculation, workflow, approval,
27
+ status-transition — capture each as its own `BusinessRule` entry per
28
+ `VALIDATION_RULES.md` Rule 9, with the exact source citation)
29
+ - Process Flow / Status Flow / Decision Trees — extract every branch of a
30
+ decision tree individually; a tree with 4 branches and only the "happy"
31
+ branch documented in prose is itself a Document Integrity finding
32
+ - Approval Flow (who approves, what triggers escalation)
33
+ - Eligibility Rules
34
+ - UI Rules (if the BRD specifies UI behavior distinct from the user
35
+ story — common when BRD is the compliance-owned document and user
36
+ story is the product-owned one; note any conflict between the two as
37
+ a Document Integrity finding, never silently prefer one)
38
+ - API Details (contract-level: endpoint, method, request/response shape,
39
+ status codes)
40
+ - Integration Points (external systems, third-party services)
41
+ - Database Requirements (entities, retention rules, migration
42
+ implications)
43
+ - Configuration Rules (feature flags, environment-specific behavior)
44
+ - Exception Handling
45
+ - Security requirements
46
+ - Compliance requirements (regulatory citations if given — extract the
47
+ citation verbatim, do not summarize a legal requirement in your own
48
+ words)
49
+ - Logging / Audit requirements
50
+ - Reporting requirements
51
+
52
+ 2. **Cross-reference against `US_MODEL`** (already extracted by Prompt 01):
53
+ for every requirement mentioned in both documents, confirm the two
54
+ descriptions agree. Any material disagreement is a Document Integrity
55
+ finding (Rule 1) — cite both locations, do not adjudicate which is
56
+ "correct" unless one document explicitly supersedes the other.
57
+
58
+ ## Do Not
59
+
60
+ - Do not treat a BRD requirement's absence from the user story (or vice
61
+ versa) as an error by default — a BRD legitimately contains
62
+ requirements no single user story covers (e.g. cross-cutting compliance
63
+ rules). Only flag a genuine contradiction, not a difference in scope.
64
+ - Do not paraphrase a compliance/legal citation.
@@ -0,0 +1,92 @@
1
+ # Prompt 03 — Test Case Extraction
2
+
3
+ **Input**: `TEST_CASE_INPUT` — either manually-authored test cases or a
4
+ path/glob to automated test source files.
5
+ **Output**: `TEST_CASE_MODEL`, a list of `TestCase` per
6
+ `TRACEABILITY_ENGINE.md` §1.
7
+
8
+ ## Step 0 — Determine Input Shape
9
+
10
+ - Matches a source-code glob or is explicitly framed as "our test suite" /
11
+ "our test files" → **Automated Source path** (§B).
12
+ - Is a spreadsheet, CSV, Markdown table, or Gherkin `.feature` file with
13
+ human-authored steps → **Manual path** (§A).
14
+ - Ambiguous → ask, or default to Manual path and state the assumption in the
15
+ Executive Summary (per Auto Mode conventions of the calling context —
16
+ don't silently guess without saying so).
17
+
18
+ ## A. Manual Path
19
+
20
+ Extract per row/case: Test Case ID, Title, Module, Requirement ID(s), User
21
+ Story, BRD Reference, Preconditions, Test Data, Steps, Expected Result,
22
+ Priority, Severity, Test Type, Automation Candidate, Owner, Tags, Status.
23
+ Any column absent from the source is `null`/`not tracked` — never fabricate
24
+ a plausible-looking value for a missing Priority or Owner.
25
+
26
+ Infer `Test Type` (positive/negative/boundary/...) from the steps + expected
27
+ result when not explicitly labeled, but mark it `inferred` (see
28
+ `TRACEABILITY_ENGINE.md` confidence tiers — the same confidence-tiering
29
+ concept applies to inferred test type, not just inferred requirement
30
+ mapping).
31
+
32
+ ## B. Automated Source Path
33
+
34
+ This is the extraction procedure v1 of this skill did not define — added in
35
+ v2.0.0 after real use against a Jest/TypeScript suite; adapt the pattern
36
+ names below to the actual framework/language found.
37
+
38
+ 1. **Locate test declarations.** Search recursively for the target
39
+ language's test-block syntax:
40
+ - JS/TS (Jest/Mocha/Vitest): `describe(...)`, `it(...)`, `test(...)`
41
+ - Python (pytest): `def test_*`, `class Test*`
42
+ - Java/Kotlin (JUnit): `@Test`-annotated methods, nested `@Nested` classes
43
+ - Go: `func Test*(t *testing.T)`
44
+ - Ruby (RSpec): `describe`, `context`, `it`
45
+ - Adapt for whatever else is present — the shape is always "a named,
46
+ nested grouping of individually-titled assertions."
47
+
48
+ 2. **Build the Test Case ID** as
49
+ `<relative-file-path>::<full nested block path>` (e.g.
50
+ `presentation/screens/HoldingsView/HoldingsViewScreen.test.tsx::HoldingsViewScreen > shows the movers carousel only when the feature flag is enabled (FR-013)`).
51
+ This must be stable across reruns — see `TRACEABILITY_ENGINE.md` §2.5 for
52
+ why line numbers are not used.
53
+
54
+ 3. **Title** = the innermost block's string argument, verbatim (including
55
+ any inline `(FR-NNN)`/`(USn ACn)` tag — this is the primary signal for
56
+ Tier-1 mapping in `TRACEABILITY_ENGINE.md` §2.1).
57
+
58
+ 4. **Steps / Expected Result** = summarize the test body: what is
59
+ arranged/mocked (Preconditions + Test Data), what action is taken
60
+ (Steps), and what is asserted (`expect(...)` or equivalent calls →
61
+ Expected Result). Do not just paste raw code as the "steps" — translate
62
+ it into the same human-readable shape a manual test case would have, so
63
+ Rule 5/6/11 can be applied uniformly regardless of source.
64
+
65
+ 5. **Requirement mapping**: run Tier 1 (explicit tag in title) → Tier 2
66
+ (folder/module structural match) → Tier 3 (fuzzy keyword match) per
67
+ `TRACEABILITY_ENGINE.md` §2. Record the tier used as `mapping_confidence`.
68
+
69
+ 6. **Fields not present in source code**: Priority, Severity, Owner, Tags,
70
+ Status, and (usually) BRD Reference have no natural home in a test file.
71
+ Report these as `"not tracked in this suite"` per
72
+ `VALIDATION_RULES.md` Rule 5 — this is a property of the team's process,
73
+ not a defect in any individual test, and `QUALITY_SCORING.md`'s Quality
74
+ fraction must not penalize a suite for a field class the language/
75
+ framework has no place to put, only for fields the *team's own
76
+ convention* implies should exist (e.g. if some tests do tag an FR and
77
+ others in the same file don't, that inconsistency is a legitimate Rule 11
78
+ finding).
79
+
80
+ 7. **Automation Candidate** = always `"Already Automated"` for this path —
81
+ don't ask whether an existing automated test "should" be automated.
82
+
83
+ ## Do Not
84
+
85
+ - Do not run the actual test suite to determine pass/fail status as part of
86
+ extraction — this skill validates *coverage against requirements*, not
87
+ *current pass/fail health*. If the user also wants pass/fail health, that
88
+ is a distinct request (point them at their CI/test-runner output).
89
+ - Do not silently drop a `.skip`/`.todo`/`@Disabled` test from the model —
90
+ extract it and mark `status: "disabled"`; a disabled test that would have
91
+ covered a requirement is a coverage gap in practice even though it exists
92
+ in source, and Rule 1 needs to know the difference.
@@ -0,0 +1,41 @@
1
+ # Prompt 04 — Requirement Traceability Matrix Assembly
2
+
3
+ **Input**: `US_MODEL`, `BRD_MODEL`, `TEST_CASE_MODEL`.
4
+ **Output**: `RTM` — the master list every later step reads from.
5
+
6
+ ## Procedure
7
+
8
+ 1. Build the unified requirement list: every `Requirement` from `BRD_MODEL`
9
+ (empty if Combined Spec Mode) plus every `UserStory`/`AcceptanceCriterion`
10
+ from `US_MODEL`, each retaining its `source_document` tag.
11
+
12
+ 2. For each item in the unified list, run the linking algorithm in
13
+ `TRACEABILITY_ENGINE.md` §2 against every `TestCase` in `TEST_CASE_MODEL`.
14
+ Record all matches found (not just the first), with their tier/confidence.
15
+
16
+ 3. Classify each item's `Status` per `TRACEABILITY_ENGINE.md` §4
17
+ (`Full`/`Partial`/`Missing`/`N/A`) — apply Rule 17's Applicability check
18
+ before classifying `Missing`; an inapplicable item is `N/A`, full stop.
19
+
20
+ 4. Populate the `Observation` field for every row that is not cleanly `Full`:
21
+ state *why* in one sentence (e.g. "only an `inferred_medium` match found,
22
+ no explicit ID reference" or "logic tested, no integration-level test —
23
+ see Rule 16").
24
+
25
+ 5. Identify orphan test cases: any `TestCase` in `TEST_CASE_MODEL` with zero
26
+ matches after all three tiers. List these separately — they don't get a
27
+ row in the main RTM (which is organized by requirement), but they must
28
+ appear in the report (Section 2, as a trailing "Orphan Test Cases" list,
29
+ or in Section 18 as their own Observation).
30
+
31
+ 6. Compute per-row coverage % is not applicable at the row level (a
32
+ requirement either has matches or doesn't) — row-level coverage nuance
33
+ belongs in the `Observation` field; the numeric coverage percentages
34
+ (Rule 13) are aggregate, computed once across the whole `RTM` in
35
+ `TRACEABILITY_ENGINE.md` §3, not per row.
36
+
37
+ ## Output Shape
38
+
39
+ One `templates/rtm-row.md` row per unified requirement/AC item, grouped in
40
+ the report by the source document's own organizing structure (by user story,
41
+ then by BRD section if Combined Spec Mode is false).
@@ -0,0 +1,46 @@
1
+ # Prompt 05 — Coverage Analysis
2
+
3
+ **Input**: `RTM`, `TEST_CASE_MODEL`, `RESOLVED_CONFIG`.
4
+ **Output**: Filled tables for `VALIDATION_RULES.md` Rules 1-4 and 9, ready
5
+ for Report Template sections 2-8 and 12.
6
+
7
+ ## Procedure
8
+
9
+ 1. **Run Rule 17 first** (if not already resolved earlier in the pipeline) —
10
+ produce the per-category Applicable/N/A determination for this project's
11
+ resolved profile. Every step below reads this determination before
12
+ reporting anything as a gap.
13
+
14
+ 2. **Rule 1 (Traceability)** — already substantially produced by Prompt 04;
15
+ this step adds the "No orphan test cases" check output and the Document
16
+ Integrity findings collected during Prompts 01-02.
17
+
18
+ 3. **Rule 2 (Frontend Coverage)** — for each Applicable category, scan
19
+ `TEST_CASE_MODEL` for evidence (an explicit test, or — for automated
20
+ source — a test whose body/assertions match the category's code-level
21
+ signature per `VALIDATION_RULES.md` Rule 2's automated-suite note).
22
+ Status per category: `Full` (multiple tests, including edge cases) /
23
+ `Partial` (some evidence, not exhaustive — say what's missing) /
24
+ `Missing` (Applicable, zero evidence) / `N/A`.
25
+
26
+ 4. **Rule 3 (Backend/Data-Layer Coverage)** — same procedure, reinterpreted
27
+ per `VALIDATION_RULES.md` Rule 3's no-real-backend note when applicable.
28
+
29
+ 5. **Rule 4 (Requirement Coverage breadth)** — for each requirement in
30
+ `RTM`, check which of the 18 test-type categories (Positive through
31
+ Sanity) have at least one matched test case exhibiting that type
32
+ (from the `test_type` field extracted in Prompt 03, or inferred from the
33
+ manual test case's steps/expected result).
34
+
35
+ 6. **Rule 9 (Business Rule Validation)** — for each `BusinessRule` extracted
36
+ in Prompts 01-02, locate test evidence and independently verify the
37
+ formula/logic match: recompute the rule's stated formula against the
38
+ test's own worked example/fixture values, and confirm they agree.
39
+ A test that merely asserts *a* value without the report-writer having
40
+ independently checked that value against the source formula is not
41
+ sufficient evidence of a "Yes" match — do the arithmetic.
42
+
43
+ ## Output
44
+
45
+ Populates Report Template Sections 2 (partially — RTM itself comes from
46
+ Prompt 04), 3, 4, 6, 7, 8, and 12.