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,411 @@
1
+ # Validation Rules
2
+
3
+ Seventeen independently addressable rules. Each is self-contained: purpose,
4
+ what to check, how to report it. New rules are added by appending a new
5
+ numbered section here and registering it in `SKILL.md`'s Execution Steps —
6
+ see `docs/EXTENDING.md`. Do not renumber existing rules when adding a new one;
7
+ append at the end even if it logically belongs earlier, so existing
8
+ citations (`Rule 7`, etc.) in past reports stay valid.
9
+
10
+ Every rule below is filtered through **Rule 17 (Applicability Resolution)**
11
+ first — read that one before any other, because it changes what "missing"
12
+ means for every rule that follows.
13
+
14
+ ---
15
+
16
+ ## Rule 17 — Applicability Resolution
17
+
18
+ **Purpose**: Prevent a category that doesn't apply to this project from being
19
+ reported as a gap.
20
+
21
+ **Run this before Rules 1–16.** **Procedure**: see
22
+ `prompts/00-applicability-resolution.md` for the exact steps and output
23
+ shape (`RESOLVED_PROFILE`, `APPLICABILITY_MAP`) referenced below.
24
+
25
+ 1. Resolve the active project profile (`CONFIGURATION.md` → *Project
26
+ Profiles*), explicit or auto-detected.
27
+ 2. For every category referenced anywhere in Rules 1–16, look it up in the
28
+ Applicability Matrix (`CONFIGURATION.md`).
29
+ 3. Mark each category exactly one of:
30
+ - **Applicable** — proceed with normal validation.
31
+ - **N/A** — exclude from coverage-percentage denominators entirely; report
32
+ as `N/A` with the one-line reason from the matrix (e.g. "N/A — no
33
+ persistent database in this module's scope").
34
+ 4. If a category isn't in the matrix at all (a genuinely novel one), default
35
+ to **Applicable** and flag it in the report's Recommendations section as
36
+ "not yet classified in the Applicability Matrix — please confirm and add
37
+ it" rather than silently guessing.
38
+
39
+ **Report**: One row per category in the Executive Summary's "Scope" table:
40
+ Category | Applicable? | Reason (if N/A).
41
+
42
+ ---
43
+
44
+ ## Rule 1 — Requirement Traceability
45
+
46
+ **Purpose**: Every requirement must be provably tested; every test case must
47
+ provably trace to a requirement.
48
+
49
+ **Validate**:
50
+ - Every Requirement (BRD or combined-spec) has ≥1 mapped test case.
51
+ - Every User Story has ≥1 mapped test case.
52
+ - Every Acceptance Criterion has ≥1 mapped test case.
53
+ - Every Requirement ID referenced anywhere is resolvable (no dangling IDs).
54
+ - No orphan test cases (a test case with no requirement it maps to —
55
+ distinguish from Rule 16's *gated-wiring* orphans, which do have a mapped
56
+ requirement but lack integration-level evidence).
57
+
58
+ **Document Integrity sub-check** (run alongside the above, not instead of
59
+ it): note any of — inconsistent ID scheme, a requirement referenced in one
60
+ document but absent from where it should be defined, a section implied by
61
+ cross-references but missing, contradictory statements about the same
62
+ requirement across documents. Report these as their own finding, tagged
63
+ `Document Integrity`, not folded into a coverage percentage.
64
+
65
+ **Report** (one row per requirement, per `templates/rtm-row.md`):
66
+ Requirement ID | Requirement | Mapped Test Cases | Coverage | Missing | Status | Observation.
67
+
68
+ ---
69
+
70
+ ## Rule 2 — Frontend Coverage
71
+
72
+ **Purpose**: Validate UI-facing behavior end to end.
73
+
74
+ **Validate** (each filtered by Rule 17):; UI Rendering · Navigation · Field
75
+ Validation (Mandatory / Optional / Editable / Read-only / Default Values) ·
76
+ Button Clicks · Dropdown · Checkbox · Radio Button · Date Picker · Search ·
77
+ Sorting · Filtering · Pagination · Upload · Download · Responsive Design ·
78
+ Accessibility · Keyboard Navigation · Loading State · Empty State · Success
79
+ Message · Warning · Error Message · Toast · Popup · Confirmation Dialog ·
80
+ Session Timeout · Browser Compatibility · Theme · Localization.
81
+
82
+ **Automated-suite note**: when `TEST_CASE_INPUT` is component/screen test
83
+ source (React Testing Library, Vue Test Utils, Playwright, etc.), map these
84
+ categories to their code-level equivalents — e.g. "Loading State" →
85
+ a test asserting a `status === 'loading'` render branch; "Error Message" →
86
+ a test asserting an error/alert role renders with the right copy. See
87
+ `prompts/03-extraction-test-cases.md`.
88
+
89
+ **Report**: Category | Status (Full / Partial / Missing / N/A) | Evidence.
90
+
91
+ ---
92
+
93
+ ## Rule 3 — Backend Coverage
94
+
95
+ **Purpose**: Validate server-side / data-layer behavior.
96
+
97
+ **Validate** (each filtered by Rule 17): API Request shape · API Response
98
+ shape · Headers · Authentication · Authorization · Business Logic ·
99
+ Calculations · Data Validation · Data Integrity · Database Validation · CRUD
100
+ Operations · Duplicate Data handling · Concurrency · Retry · Timeout ·
101
+ Failure handling · Rollback · Logging · Monitoring · Caching · Performance ·
102
+ Audit Trail.
103
+
104
+ **No-real-backend note**: for a frontend-only module that talks to a mocked
105
+ or not-yet-built API, "Backend Coverage" is reinterpreted as **data-layer
106
+ coverage** — DTO-to-entity mapping, repository logic (cache, retry, dedup),
107
+ and the API-client's own request-construction code. State this
108
+ reinterpretation explicitly in the report rather than marking the whole rule
109
+ `N/A` — the underlying risk (does the client build correct requests and
110
+ handle bad responses?) still exists and should still be assessed.
111
+
112
+ **Report**: Category | Status | Evidence.
113
+
114
+ ---
115
+
116
+ ## Rule 4 — Requirement Coverage (Test-Type Breadth)
117
+
118
+ **Purpose**: Confirm each requirement is exercised by more than just its
119
+ happy path.
120
+
121
+ **Validate, per requirement**: Positive · Negative · Boundary · Validation ·
122
+ Business Rule · Calculation · Workflow · API · Database · Integration ·
123
+ Security · Permission · Role-Based Access · Exception · Error Handling ·
124
+ Regression · Smoke · Sanity.
125
+
126
+ **Report**: Requirement ID | Test types present | Test types absent | Status.
127
+
128
+ ---
129
+
130
+ ## Rule 5 — Test Case Quality (Structural)
131
+
132
+ **Purpose**: Confirm each test case is well-formed enough to be trusted and
133
+ maintained.
134
+
135
+ **Every test case (manual or automated) should resolve to**: Test Case ID ·
136
+ Title · Module · Requirement ID · User Story · BRD Reference · Priority ·
137
+ Severity · Test Type · Preconditions · Test Data · Steps · Expected Result ·
138
+ Automation Candidate · Owner · Tags · Status.
139
+
140
+ **Automated-suite mapping**: a source test file's `describe`/`it` (or
141
+ equivalent) structure supplies Title, Steps (the test body), and Expected
142
+ Result (the assertions) directly. Requirement/User-Story/BRD Reference come
143
+ from an inline tag in the title (e.g. `it('...(FR-006)', ...)`) when present,
144
+ or from `TRACEABILITY_ENGINE.md`'s fuzzy-mapping fallback when absent — in
145
+ the latter case, mark the mapping `inferred` with a confidence level, never
146
+ `confirmed`. Priority/Severity/Owner/Status/Tags typically don't exist in
147
+ source code and should be reported as `not tracked in this suite` rather
148
+ than `missing` — that's a property of the process, not a defect in any one
149
+ test, and it says something different in a report (see Rule 15's Quality
150
+ Score treatment of this).
151
+
152
+ **Report**: Test Case ID | Missing/untracked fields | Impact.
153
+
154
+ ---
155
+
156
+ ## Rule 6 — Acceptance Criteria Validation
157
+
158
+ **Purpose**: Confirm each Acceptance Criterion is tested from more than one
159
+ angle.
160
+
161
+ **Each Acceptance Criterion should have**: a Positive Scenario · a Negative
162
+ Scenario · a Validation Scenario (if it involves input) · a Boundary
163
+ Scenario (if it involves a limit or threshold) · a Business Rule check (if
164
+ one applies) · an Error Scenario · a Permission Scenario (if role/eligibility
165
+ gated) · an API Validation (if it triggers a network call).
166
+
167
+ Not every AC needs every scenario type — an AC with no input has no
168
+ Validation Scenario to write. Apply judgment, but state the reasoning: "No
169
+ Boundary Scenario expected — this AC has no numeric/length limit" is a valid
170
+ line in the report; a silent absence is not.
171
+
172
+ **Report**: AC ID | Scenario types present | Scenario types absent/N/A (with
173
+ reason) | Status.
174
+
175
+ ---
176
+
177
+ ## Rule 7 — Missing Scenario Detection
178
+
179
+ **Purpose**: Catch the categories of input/condition that are easy to forget
180
+ even when the "main" scenarios are well covered.
181
+
182
+ **Detect absence of coverage for**: Null · Blank · Whitespace-only · Invalid
183
+ Input · Maximum Length · Minimum Length · Special Characters · Unicode ·
184
+ Duplicate Data · Expired Session · Invalid Token · Unauthorized · Forbidden ·
185
+ Network Failure · Offline · Timeout · Retry · API Failure · Database Failure
186
+ · Concurrent Users · Race Condition · Slow Response · Large Data Volume ·
187
+ File Upload · Large File · Invalid File Type · Malicious/Virus File ·
188
+ Pagination · Sorting · Filtering · Accessibility · Localization · Responsive
189
+ Layout · Cache Staleness · Refresh · Browser Back/Forward · Deep Link ·
190
+ Notification.
191
+
192
+ Filter every entry through Rule 17 first (e.g. "File Upload" categories are
193
+ `N/A` for a module with no upload feature at all — don't report them as
194
+ missing scenarios; they're inapplicable ones).
195
+
196
+ **Report**: Category | Applicable? | Present? | Affected Requirement(s) | Note.
197
+
198
+ ---
199
+
200
+ ## Rule 8 — Duplicate Test Case Detection
201
+
202
+ **Purpose**: Find redundant test cases before they multiply maintenance cost.
203
+
204
+ **Compare across all test cases**: Objective · Requirement mapped ·
205
+ Steps/body · Expected Result · Test Data.
206
+
207
+ **Classify each pair found**:
208
+ - **Exact Duplicate** — same requirement, same steps, same expected result.
209
+ Genuinely redundant; recommend removing one.
210
+ - **Partial Duplicate** — same requirement and steps, different expected
211
+ result or test data (e.g. two boundary values of the same check). Usually
212
+ fine — this is normal boundary-testing breadth, not waste.
213
+ - **Near Duplicate** — same objective, different requirement or layer (e.g.
214
+ a unit test and a component test asserting the same worked example).
215
+ **This is intentional layered coverage, not a duplicate**, unless the two
216
+ tests are at the *same* layer. State explicitly which case applies —
217
+ conflating layered coverage with true duplication is a common false
218
+ positive; see `docs/FAQ.md`.
219
+
220
+ **Report**: Pair (Test Case IDs) | Classification | Recommendation.
221
+
222
+ **Performance note (large suites)**: comparing every test case against every
223
+ other is only tractable because comparisons are scoped *within* each
224
+ requirement's mapped test cases (per the "Compare across all test cases"
225
+ step above, grouped by requirement first) rather than across the whole
226
+ suite — a 2,000-test-case suite with an average of 5 tests per requirement
227
+ is ~400 small comparison groups, not one 2,000-choose-2 comparison. If a
228
+ single requirement has an unusually large mapped-test-case count (a few
229
+ hundred+), sample the largest/most-similar-looking clusters first
230
+ (by title/objective similarity) rather than exhaustively comparing every
231
+ pair in that one group, and state in the report that sampling was used and
232
+ why — never silently truncate without saying so.
233
+
234
+ ---
235
+
236
+ ## Rule 9 — Business Rule Validation
237
+
238
+ **Purpose**: Confirm every documented business rule is both correctly stated
239
+ and tested.
240
+
241
+ **Validate**: Eligibility Rules · Calculation Rules (cite the exact formula
242
+ from the source document and the exact assertion in the test) · Workflow
243
+ Rules · Approval Flow · Status Transition Rules · Mandatory Document Rules ·
244
+ Configuration Rules · Role Rules · Permission Rules · Validation Rules ·
245
+ Decision Trees (every branch, not just the ones exercised).
246
+
247
+ **Report**: Business Rule | Source (document + section/line) | Test Evidence
248
+ | Formula/Logic Match? (Yes/No/Partially, with the discrepancy stated) | Status.
249
+
250
+ ---
251
+
252
+ ## Rule 10 — Risk-Based Coverage
253
+
254
+ **Purpose**: Ensure test depth is proportional to risk, not just to whether a
255
+ requirement has *a* test.
256
+
257
+ **Thresholds** (from `RESOLVED_CONFIG.risk_thresholds`, defaults shown):
258
+
259
+ | Risk Tier | Minimum Test Cases | Typical Signal |
260
+ |---|---|---|
261
+ | High | 5 | money/financial calculations, auth/security, data integrity, irreversible actions |
262
+ | Medium | 3 | core user workflows, state management, cross-feature integration |
263
+ | Low | 1 | cosmetic UI, static/read-only display, well-isolated pure functions with no external risk |
264
+
265
+ Risk tier is assigned by evidence in the source documents (a requirement
266
+ explicitly flagged security/compliance-relevant, or a calculation involving
267
+ money/legal thresholds, is High by default) — never by guessing; if risk
268
+ tier isn't determinable from the documents, default to Medium and say so.
269
+
270
+ **Report**: Requirement/Feature | Assigned Risk Tier (+ why) | Test Count |
271
+ Meets Minimum? | Gap (if any).
272
+
273
+ ---
274
+
275
+ ## Rule 11 — Quality Checks (Prose / Hygiene)
276
+
277
+ **Purpose**: Catch issues that don't show up in coverage percentages but
278
+ still erode trust in the suite.
279
+
280
+ **Validate**: Naming Convention consistency · Formatting consistency ·
281
+ Grammar/clarity · Duplicate steps within one test case · Missing Expected
282
+ Results · Ambiguous test cases (steps that don't determine a single outcome)
283
+ · Incomplete Preconditions · Incorrect Requirement Mapping (a test case that
284
+ cites a requirement ID it doesn't actually exercise).
285
+
286
+ **Report**: Issue | Affected Test Case(s) | Recommendation.
287
+
288
+ ---
289
+
290
+ ## Rule 12 — Traceability Matrix Assembly
291
+
292
+ **Purpose**: Produce the master artifact every other rule's report rows
293
+ ultimately summarize into.
294
+
295
+ See `TRACEABILITY_ENGINE.md` for the linking algorithm and
296
+ `templates/rtm-row.md` for the row shape. Columns: Requirement ID |
297
+ Requirement | User Story | Acceptance Criteria | Mapped Test Cases | Coverage
298
+ % | Status | Observation.
299
+
300
+ ---
301
+
302
+ ## Rule 13 — Coverage Percentage Calculation
303
+
304
+ **Purpose**: Turn Rule 1–10's findings into the numbers the Final Summary
305
+ reports.
306
+
307
+ **Calculate** (formulas in `TRACEABILITY_ENGINE.md` § Coverage Formulas, each
308
+ one excluding `N/A`-marked items from its denominator per Rule 17): Total
309
+ Requirements · Covered Requirements · Missing Requirements · Requirement
310
+ Coverage % · Acceptance Criteria Coverage % · Frontend Coverage % · Backend
311
+ Coverage % · Business Rule Coverage % · Negative Coverage % · Boundary
312
+ Coverage % · Security Coverage % · API Coverage % · Database Coverage % ·
313
+ Automation Coverage %.
314
+
315
+ ---
316
+
317
+ ## Rule 14 — Observation Report
318
+
319
+ **Purpose**: The report's actionable core — every gap found anywhere above,
320
+ consolidated, deduplicated, and made specific enough to act on.
321
+
322
+ **Every observation must include**: Severity (High / Medium / Low — see
323
+ `docs/FAQ.md` for the rubric) · Evidence (exact citation) · Affected
324
+ Requirement(s) · Affected Test Case(s) (or "none — orphan gap") · Impact
325
+ (what happens in production if this ships as-is) · Recommendation · a
326
+ **Suggested Test Case** (objective + key input + expected result — not a
327
+ full script; see `SYSTEM_PROMPT.md` Rule 9).
328
+
329
+ **Sample**:
330
+
331
+ ```
332
+ Missing Requirement Coverage — RQ-15
333
+
334
+ Severity: High
335
+
336
+ Evidence: RQ-15 ("system must lock the account after 5 failed login
337
+ attempts") is defined in BRD §4.2 and referenced by User Story US-08 AC-3,
338
+ but no test case in the provided suite references RQ-15 or US-08 AC-3.
339
+
340
+ Affected Requirement: RQ-15 / US-08 AC-3
341
+ Affected Test Cases: None (orphan requirement)
342
+
343
+ Impact: Account lockout logic could ship unverified; a regression here is a
344
+ security control failure, not a cosmetic bug.
345
+
346
+ Recommendation: Add positive (5th failure locks the account), negative
347
+ (4 failures does not lock it), and boundary (exactly 5 vs. 6 attempts)
348
+ scenarios before this ships.
349
+
350
+ Suggested Test Case: "Given 4 prior failed login attempts, when the 5th
351
+ fails, then the account is locked and a lockout message is shown" —
352
+ Expected Result: account status = locked, login blocked even with correct
353
+ credentials until unlock flow completes.
354
+ ```
355
+
356
+ ---
357
+
358
+ ## Rule 15 — Quality Score
359
+
360
+ `QUALITY_SCORING.md` is the single source of truth for category weights,
361
+ the scoring formula, and the worked example — do not restate the weight
362
+ numbers here, in `SKILL.md`, or in `config/default.config.yaml`'s comments;
363
+ a number copied into a second place is a number that can silently drift
364
+ out of sync with the actual rubric. Weights are configurable in
365
+ `RESOLVED_CONFIG.scoring_weights`; the default set is defined once, in
366
+ `QUALITY_SCORING.md`.
367
+
368
+ ---
369
+
370
+ ## Rule 16 — Gated-Behavior Wiring Validation
371
+
372
+ **Purpose**: Catch the single most common false sense of coverage in mature,
373
+ well-tested codebases — a conditional/gated behavior's *logic* is unit
374
+ tested, but nothing tests it through its real *consumption point*, so a
375
+ wiring mistake (wrong flag name, forgotten `useEffect` dependency, an
376
+ un-called handler) would pass every existing test.
377
+
378
+ This rule exists as its own numbered rule rather than living inside Rule 1
379
+ because standard traceability checks (Rule 1) are satisfied the moment *any*
380
+ test cites the requirement — they don't distinguish "the underlying function
381
+ is tested" from "the feature actually turns on when it's supposed to."
382
+ `docs/FAQ.md` has the full rationale and the real-world case that surfaced
383
+ this gap.
384
+
385
+ **Detect, for every requirement described as conditional** (a feature flag,
386
+ a deep-link/URL-triggered action, a role/eligibility gate, a
387
+ scheduled/cron-triggered job, an event-driven side effect):
388
+
389
+ 1. Is there a test of the underlying logic in isolation? (e.g. a pure
390
+ function, a reducer, a slice transition, an isolated component with the
391
+ condition passed as a prop)
392
+ 2. Is there a **separate** test that exercises the actual consumption point
393
+ — the screen/controller/handler that *reads* the real gate (the flag
394
+ accessor, the route param, the session/role check) and *triggers* the
395
+ behavior — with the gate set to both its true and false state?
396
+
397
+ If (1) is yes and (2) is no: report a **Gated-Wiring Gap** — logic is
398
+ covered, integration is not.
399
+ If neither exists: this is an ordinary Rule 1 traceability gap, not a
400
+ wiring gap — don't double-count it under both rules.
401
+
402
+ **Report**: Requirement ID | Gate Condition | Logic-Level Test | Integration-
403
+ Level Test (or "none") | Status (`Full` / `Wiring Gap` / `Untested`).
404
+
405
+ ---
406
+
407
+ ## Applicability Matrix Pointer
408
+
409
+ Rule 17 depends on a concrete table of category → project-profile
410
+ applicability. That table lives in `CONFIGURATION.md` (not duplicated here)
411
+ so it can be edited independently of the rules that consume it.
@@ -0,0 +1,62 @@
1
+ skill:
2
+ name: test-case-validator
3
+ version: 2.1.0
4
+
5
+ inputs:
6
+ combined_spec_mode: auto
7
+ supported_document_formats: [markdown, pdf, docx, xlsx, csv, txt]
8
+ supported_test_case_formats: [manual_spreadsheet, gherkin, automated_source]
9
+
10
+ project_profile:
11
+ active: auto
12
+ auto_detect: # only consulted when active == "auto"
13
+ order:
14
+ - match: "TEST_CASE_INPUT matches a source-code glob (*.test.*, *.spec.*, *Test.*, *_test.*)"
15
+ profile_if_ui_imports_detected: frontend_automated
16
+ profile_if_no_ui_imports: api_only
17
+ - match: "TEST_CASE_INPUT is spreadsheet/CSV/Gherkin"
18
+ profile: manual_qa
19
+ fallback_profile: default # used when no rule in `order` matches
20
+
21
+ profiles:
22
+ default:
23
+ description: "No categories excluded — full Rule 2-11 checklist applies."
24
+ disabled_categories: []
25
+ frontend_automated:
26
+ description: "A frontend module with no owned database or backend deploy, tested via component/unit test source files."
27
+ disabled_categories: [database, browser_compatibility, localization, file_upload_virus_scan]
28
+ test_case_source: automated_source
29
+ manual_qa:
30
+ description: "Traditional manually-authored QA test case suite (spreadsheet/Gherkin), full-stack scope assumed unless stated otherwise."
31
+ disabled_categories: []
32
+ test_case_source: manual_spreadsheet
33
+ api_only:
34
+ description: "A backend service or API with no owned UI."
35
+ disabled_categories: [frontend_ui, accessibility, browser_compatibility, localization, theme, keyboard_navigation]
36
+ test_case_source: automated_source
37
+ full_stack:
38
+ description: "Owns both UI and backend/database — every category applies."
39
+ disabled_categories: []
40
+
41
+ risk_thresholds:
42
+ high: 5
43
+ medium: 3
44
+ low: 1
45
+
46
+ scoring_weights:
47
+ requirement_traceability: 25
48
+ coverage: 20
49
+ acceptance_criteria: 15
50
+ frontend_coverage: 10
51
+ backend_coverage: 10
52
+ business_rules: 10
53
+ quality: 5
54
+ duplicates: 5
55
+
56
+ thresholds:
57
+ pass: 95
58
+ needs_improvement: 70
59
+
60
+ rules_enabled:
61
+ gated_behavior_wiring: true
62
+ document_integrity_check: true
@@ -0,0 +1,66 @@
1
+ # Architecture
2
+
3
+ How the modules in this skill fit together. Read this before `EXTENDING.md`
4
+ if you're not already familiar with the file layout.
5
+
6
+ ## Pipeline Shape
7
+
8
+ ```
9
+ (profile/applicability resolved first — prompts/00 ──▶ RESOLVED_PROFILE + APPLICABILITY_MAP)
10
+
11
+ Inputs Extraction Linking Analysis Assembly
12
+ ────── ────────── ─────── ──────── ────────
13
+ USER_STORY_INPUT ──▶ prompts/01 ──▶ US_MODEL ─┐
14
+ ├─▶ prompts/04 ──▶ RTM ──▶ prompts/05 ──▶ coverage tables ─┐
15
+ BRD_INPUT (opt.) ──▶ prompts/02 ──▶ BRD_MODEL ─┘ (TRACEABILITY_ENGINE) │ │
16
+ ├─▶ prompts/06 (missing) ─┤
17
+ TEST_CASE_INPUT ───▶ prompts/03 ──▶ TEST_CASE_MODEL ─────────────────────────────┼─▶ prompts/07 (dupes) ─┼─▶ prompts/10 ──▶ Observations
18
+ ├─▶ prompts/08 (risk) ─┤ │
19
+ └─▶ prompts/09 (wiring) ─┘ ▼
20
+ QUALITY_SCORING.md
21
+
22
+
23
+ prompts/11 ──▶ REPORT_TEMPLATE.md ──▶ Final Report
24
+ ```
25
+
26
+ `config/default.config.yaml` (surfaced as `RESOLVED_CONFIG` after Step 1 of
27
+ `SKILL.md`) is read by nearly every box in this diagram — it isn't drawn as
28
+ its own pipeline stage because it's cross-cutting, not sequential.
29
+
30
+ ## Why It's Split This Way
31
+
32
+ - **Extraction is separated from linking** because the three input types
33
+ (User Story, BRD, Test Cases) have almost nothing in common in *how* you
34
+ read them, but produce a common shape (`TRACEABILITY_ENGINE.md` §1) that
35
+ the linking step can treat uniformly. Adding a fourth input type (say, a
36
+ Figma-exported design-requirements doc) means adding `prompts/0X` and a
37
+ mapping into the same canonical model — it does not touch linking,
38
+ coverage, or reporting at all.
39
+ - **Linking is separated from analysis** because the RTM is consumed by
40
+ *every* analysis rule (Rules 1-16), not just one. Rebuilding it inside
41
+ each rule would both duplicate work and risk the rules disagreeing about
42
+ what's linked to what.
43
+ - **Configuration is data, not logic**, so that changing a threshold, a
44
+ weight, or which categories apply to a given project type never requires
45
+ touching `VALIDATION_RULES.md`, `prompts/`, or `TRACEABILITY_ENGINE.md` —
46
+ see `CONFIGURATION.md`.
47
+ - **Rule 16 (Gated-Behavior Wiring) is a sibling to Rule 1, not a sub-step of
48
+ it**, because it asks a genuinely different question (does the
49
+ *integration point* work, not just does *a* test exist) and needs its own
50
+ report section so the finding is visible rather than hidden inside a
51
+ technically-passing Rule 1 row. See `FAQ.md` for the concrete case that
52
+ motivated this.
53
+
54
+ ## File Responsibilities at a Glance
55
+
56
+ | File/Directory | Answers |
57
+ |---|---|
58
+ | `SKILL.md` | When do I run, and in what order? |
59
+ | `SYSTEM_PROMPT.md` | How should I behave throughout? |
60
+ | `prompts/*.md` | How do I do *this specific step*? |
61
+ | `VALIDATION_RULES.md` | What am I checking, rule by rule? |
62
+ | `TRACEABILITY_ENGINE.md` | How do I decide two things are linked, and how do I turn links into percentages? |
63
+ | `CONFIGURATION.md` + `config/*.yaml` | What varies by project, and what are today's actual values? |
64
+ | `REPORT_TEMPLATE.md` + `templates/*.md` | What does the output look like? |
65
+ | `QUALITY_SCORING.md` | How do I turn findings into one number? |
66
+ | `examples/*` | What does a correct run actually look like end to end? |
@@ -0,0 +1,85 @@
1
+ # Extending This Skill
2
+
3
+ The whole point of the modular structure (`ARCHITECTURE.md`) is that these
4
+ are additions, not rewrites. If you find yourself editing more than one of
5
+ the "core" files (`SKILL.md`, `SYSTEM_PROMPT.md`, `TRACEABILITY_ENGINE.md`)
6
+ to make a change, stop and reconsider whether the change actually belongs in
7
+ a new `prompts/` file, a new row in `CONFIGURATION.md`'s Applicability
8
+ Matrix, or a new rule in `VALIDATION_RULES.md` instead.
9
+
10
+ ## Add a New Validation Rule
11
+
12
+ 1. Append a new numbered section to `VALIDATION_RULES.md` (do not renumber
13
+ existing rules — old report citations like "Rule 7" must stay valid).
14
+ State its Purpose, what to Validate, and its Report shape, matching the
15
+ style of Rules 1-16.
16
+ 2. Add a corresponding `prompts/NN-your-rule-name.md` file describing the
17
+ step-by-step procedure, following the shape of
18
+ `prompts/09-gated-wiring-validation.md` (the most recently added rule) as
19
+ a template.
20
+ 3. Register the new step in `SKILL.md`'s Execution Steps list, in the
21
+ correct pipeline position (does it need the RTM first? Does anything
22
+ downstream need its output?).
23
+ 4. Add a new numbered section to `REPORT_TEMPLATE.md` if the rule produces
24
+ its own report section (like Rule 16 did), or fold its output into an
25
+ existing section if it's a refinement of an existing check.
26
+ 5. Add the new category's weight to `QUALITY_SCORING.md` and
27
+ `config/default.config.yaml`'s `scoring_weights` — **and rebalance the
28
+ others so the total still sums to 100.**
29
+ 6. Add a worked instance to one of the `examples/` reports, or create a
30
+ third example if neither existing one naturally exercises it — an
31
+ unexercised rule is a rule nobody has verified actually produces a
32
+ sensible finding.
33
+ 7. Add a `CHANGELOG.md` entry.
34
+
35
+ ## Add a New Project Profile
36
+
37
+ 1. Add the profile to `CONFIGURATION.md` and `config/default.config.yaml`'s
38
+ `profiles` map: a description, `disabled_categories`, and (if relevant)
39
+ a `test_case_source` default.
40
+ 2. Add a row for the new profile to the Applicability Matrix table in
41
+ `CONFIGURATION.md` for every existing category — don't leave cells
42
+ implicitly blank; every category needs an explicit Applicable/N/A
43
+ determination for every profile, or Rule 17 step 4's "not yet
44
+ classified" fallback will fire constantly for that profile.
45
+ 3. Add or extend an `auto_detect.order` entry (or `auto_detect.fallback_profile`
46
+ if it should be the new catch-all) if the profile should be reachable via
47
+ auto-detection, not just explicit selection.
48
+ 4. Consider whether an example under `examples/` should demonstrate it.
49
+
50
+ ## Add Support for a New Input Format
51
+
52
+ 1. If it's a new *document* format (User Story/BRD) that isn't already
53
+ covered by "Markdown, PDF, DOCX, XLSX, CSV, TXT" — this is usually just a
54
+ parsing detail, not a new extraction procedure; note it in
55
+ `SKILL.md`'s Inputs table and `prompts/01`/`02`'s Step 0.
56
+ 2. If it's a new *test case* format (e.g. a new test framework's block
57
+ syntax for automated source, or a new manual-test tool's export format)
58
+ — extend `prompts/03-extraction-test-cases.md` §B's language/framework
59
+ list, following the same "named, nested grouping of individually-titled
60
+ assertions" pattern already documented there.
61
+
62
+ ## Add a New Report Section
63
+
64
+ Only do this if the section reports something genuinely new — if it's a
65
+ different view of data already in another section (e.g. "show me just the
66
+ High-severity items"), that's a filter a report *consumer* can apply, not a
67
+ reason to add Section 21. Sections should map 1:1 to a rule or a rule
68
+ family, matching the existing Rule → Section correspondence in
69
+ `REPORT_TEMPLATE.md`.
70
+
71
+ ## Things to Never Do When Extending
72
+
73
+ - Never hardcode a threshold, weight, or category list directly into
74
+ `VALIDATION_RULES.md` or a `prompts/*.md` file if it's the kind of value
75
+ that should vary by project — put it in `config/default.config.yaml` and
76
+ reference it as `RESOLVED_CONFIG.<field>`.
77
+ - Never remove a rule or renumber an existing one to "clean up" the
78
+ numbering — old reports and citations depend on rule numbers staying
79
+ stable. Deprecate instead: mark it deprecated in `VALIDATION_RULES.md`
80
+ with a pointer to its replacement, and note the deprecation in
81
+ `CHANGELOG.md`.
82
+ - Never change `SYSTEM_PROMPT.md`'s Non-Negotiable Behaviors list without
83
+ very strong justification and a `CHANGELOG.md` entry explaining why —
84
+ these are the properties (never assume, always cite evidence, be
85
+ deterministic) that make every other part of this skill trustworthy.