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.
- package/.github/skills/boiler-project-generator/SKILL.md +103 -0
- package/.github/skills/boiler-project-generator/assets/templates/android/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/angular/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/flutter/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/ios/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/react/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/api-setup.ts +76 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/component-primary-button.tsx +29 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/env-config.env +4 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-auth-screen.tsx +45 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-dashboard-screen.tsx +45 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-profile-screen.tsx +45 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/hook-use-app-boot.ts +11 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/navigation-setup.tsx +25 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/project-structure.md +24 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-hooks.ts +5 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-session-slice.ts +29 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-store.ts +15 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/theme-index.ts +23 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/utils-helpers.ts +7 -0
- package/.github/skills/boiler-project-generator/metadata.yaml +29 -0
- package/.github/skills/boiler-project-generator/references/android.md +19 -0
- package/.github/skills/boiler-project-generator/references/angular.md +14 -0
- package/.github/skills/boiler-project-generator/references/flutter.md +17 -0
- package/.github/skills/boiler-project-generator/references/ios.md +17 -0
- package/.github/skills/boiler-project-generator/references/react-native.md +103 -0
- package/.github/skills/boiler-project-generator/references/react.md +17 -0
- package/.github/skills/boiler-project-generator/scripts/angular.js +43 -0
- package/.github/skills/boiler-project-generator/scripts/generate-project.mjs +107 -0
- package/.github/skills/boiler-project-generator/scripts/init.js +105 -0
- package/.github/skills/boiler-project-generator/scripts/react-native.js +1041 -0
- package/.github/skills/boiler-project-generator/scripts/react.js +32 -0
- package/.github/skills/clean-architecture-generator/SKILL.md +235 -0
- package/.github/skills/clean-architecture-generator/references/architecture-core.md +126 -0
- package/.github/skills/clean-architecture-generator/references/platform-angular.md +374 -0
- package/.github/skills/clean-architecture-generator/references/platform-flutter.md +366 -0
- package/.github/skills/clean-architecture-generator/references/platform-react-native.md +590 -0
- package/.github/skills/clean-architecture-generator/references/platform-react.md +261 -0
- package/.github/skills/code-test-coverage-analyzer/SKILL.md +1358 -0
- package/.github/skills/code-test-coverage-analyzer/assets/config-questionnaire.md +118 -0
- package/.github/skills/code-test-coverage-analyzer/assets/conflict-resolution-protocol.md +99 -0
- package/.github/skills/code-test-coverage-analyzer/assets/coverage-calculation-rules.md +294 -0
- package/.github/skills/code-test-coverage-analyzer/assets/multi-strategy-search.md +145 -0
- package/.github/skills/code-test-coverage-analyzer/assets/output-file-contracts.md +651 -0
- package/.github/skills/code-test-coverage-analyzer/assets/status-definitions.md +273 -0
- package/.github/skills/code-test-coverage-analyzer/examples/example-invocation.md +208 -0
- package/.github/skills/code-test-coverage-analyzer/references/android-patterns.md +229 -0
- package/.github/skills/code-test-coverage-analyzer/references/angular-patterns.md +177 -0
- package/.github/skills/code-test-coverage-analyzer/references/backend-patterns.md +383 -0
- package/.github/skills/code-test-coverage-analyzer/references/flutter-patterns.md +254 -0
- package/.github/skills/code-test-coverage-analyzer/references/ios-patterns.md +228 -0
- package/.github/skills/code-test-coverage-analyzer/references/react-native-patterns.md +431 -0
- package/.github/skills/code-test-coverage-analyzer/references/react-patterns.md +206 -0
- package/.github/skills/code-test-coverage-analyzer/scripts/detect-platform.ps1 +261 -0
- package/.github/skills/code-test-coverage-analyzer/scripts/scan-repository.ps1 +242 -0
- package/.github/skills/code-test-coverage-analyzer/templates/brd-compliance-row.md +107 -0
- package/.github/skills/code-test-coverage-analyzer/templates/test-case-row.md +130 -0
- package/.github/skills/code-test-coverage-analyzer/templates/user-story-compliance-row.md +170 -0
- package/.github/skills/custom-font-integrator/SKILL.md +373 -0
- package/.github/skills/custom-font-integrator/assets/FontTestScreen.js +150 -0
- package/.github/skills/custom-font-integrator/references/example-info-plist.xml +21 -0
- package/.github/skills/custom-font-integrator/scripts/setup-fonts.sh +99 -0
- package/.github/skills/encryption-decryption-utility/Instructions.md +282 -0
- package/.github/skills/encryption-decryption-utility/README.md +222 -0
- package/.github/skills/encryption-decryption-utility/SKILL.md +645 -0
- package/.github/skills/encryption-decryption-utility/assets/encryption-config-template.json +13 -0
- package/.github/skills/encryption-decryption-utility/assets/platform-matrix.json +180 -0
- package/.github/skills/encryption-decryption-utility/metadata.yaml +51 -0
- package/.github/skills/encryption-decryption-utility/references/android-crypto.md +157 -0
- package/.github/skills/encryption-decryption-utility/references/angular-crypto.md +130 -0
- package/.github/skills/encryption-decryption-utility/references/approach-1-webcrypto.md +95 -0
- package/.github/skills/encryption-decryption-utility/references/approach-2-rsa-aes-cbc.md +111 -0
- package/.github/skills/encryption-decryption-utility/references/approach-3-aes-sharedkey.md +114 -0
- package/.github/skills/encryption-decryption-utility/references/architecture.md +233 -0
- package/.github/skills/encryption-decryption-utility/references/backend-alignment.md +506 -0
- package/.github/skills/encryption-decryption-utility/references/dependency-guidance.md +234 -0
- package/.github/skills/encryption-decryption-utility/references/ec-implementation.md +832 -0
- package/.github/skills/encryption-decryption-utility/references/error-handling-playbook.md +234 -0
- package/.github/skills/encryption-decryption-utility/references/flutter-crypto.md +105 -0
- package/.github/skills/encryption-decryption-utility/references/ios-crypto.md +338 -0
- package/.github/skills/encryption-decryption-utility/references/native-rsa-implementation.md +373 -0
- package/.github/skills/encryption-decryption-utility/references/node-crypto.md +86 -0
- package/.github/skills/encryption-decryption-utility/references/react-crypto.md +105 -0
- package/.github/skills/encryption-decryption-utility/references/react-native-crypto.md +1001 -0
- package/.github/skills/encryption-decryption-utility/references/react-web-crypto.md +668 -0
- package/.github/skills/encryption-decryption-utility/references/security-checklist.md +176 -0
- package/.github/skills/encryption-decryption-utility/references/web-crypto.md +74 -0
- package/.github/skills/encryption-decryption-utility/scripts/detect.js +128 -0
- package/.github/skills/encryption-decryption-utility/scripts/install.js +1713 -0
- package/.github/skills/encryption-decryption-utility/scripts/setup.js +800 -0
- package/.github/skills/encryption-decryption-utility/template.md +241 -0
- package/.github/skills/encryption-decryption-utility/templates/config-questionnaire.md +467 -0
- package/.github/skills/encryption-decryption-utility/templates/delivery-checklist.md +206 -0
- package/.github/skills/encryption-decryption-utility/templates/implementation-plan.md +304 -0
- package/.github/skills/feature-generator/SKILL.MD +2741 -0
- package/.github/skills/feature-generator/assets/fingerprint-schema.json +385 -0
- package/.github/skills/feature-generator/assets/spec-template.md +172 -0
- package/.github/skills/feature-generator/assets/transform-rules.json +82 -0
- package/.github/skills/feature-generator/references/api-envelope-patterns.md +327 -0
- package/.github/skills/feature-generator/references/screen-logic-patterns.md +399 -0
- package/.github/skills/feature-generator/references/state-library-patterns.md +464 -0
- package/.github/skills/figma-ui-mapper/README.md +34 -0
- package/.github/skills/figma-ui-mapper/SKILL.md +101 -0
- package/.github/skills/figma-ui-mapper/assets/templates/component-map-template.md +30 -0
- package/.github/skills/figma-ui-mapper/assets/templates/generation-report-template.md +49 -0
- package/.github/skills/figma-ui-mapper/metadata.yaml +22 -0
- package/.github/skills/figma-ui-mapper/references/android.md +11 -0
- package/.github/skills/figma-ui-mapper/references/angular.md +18 -0
- package/.github/skills/figma-ui-mapper/references/capacitor.md +18 -0
- package/.github/skills/figma-ui-mapper/references/common.md +23 -0
- package/.github/skills/figma-ui-mapper/references/expo.md +18 -0
- package/.github/skills/figma-ui-mapper/references/flutter.md +18 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/angular/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/capacitor/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/expo/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/flutter/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/ionic/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/kotlin-multiplatform/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/native-android/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/native-ios/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/next/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/nuxt/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/react/rules.md +19 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/react-native/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/svelte/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/vue/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/ionic.md +18 -0
- package/.github/skills/figma-ui-mapper/references/ios.md +11 -0
- package/.github/skills/figma-ui-mapper/references/kotlin-multiplatform.md +18 -0
- package/.github/skills/figma-ui-mapper/references/native-android.md +18 -0
- package/.github/skills/figma-ui-mapper/references/native-ios.md +18 -0
- package/.github/skills/figma-ui-mapper/references/next.md +18 -0
- package/.github/skills/figma-ui-mapper/references/nuxt.md +18 -0
- package/.github/skills/figma-ui-mapper/references/react-figma-guideline.md +21 -0
- package/.github/skills/figma-ui-mapper/references/react-native.md +18 -0
- package/.github/skills/figma-ui-mapper/references/react.md +18 -0
- package/.github/skills/figma-ui-mapper/references/script-usage.md +46 -0
- package/.github/skills/figma-ui-mapper/references/svelte.md +18 -0
- package/.github/skills/figma-ui-mapper/references/vue.md +18 -0
- package/.github/skills/figma-ui-mapper/references/workflow.md +74 -0
- package/.github/skills/figma-ui-mapper/scripts/generate-page-through-figma.js +635 -0
- package/.github/skills/figma-ui-mapper/scripts/generate-react-page-through-figma.js +4 -0
- package/.github/skills/frontend-task-breakdown/SKILL.md +734 -0
- package/.github/skills/md-file-converter/SKILL.md +291 -0
- package/.github/skills/md-file-converter/config/formats.json +114 -0
- package/.github/skills/md-file-converter/extractors/extract-docx.sh +120 -0
- package/.github/skills/md-file-converter/extractors/extract-eml.py +108 -0
- package/.github/skills/md-file-converter/extractors/extract-pdf.sh +97 -0
- package/.github/skills/md-file-converter/extractors/extract-pptx.py +143 -0
- package/.github/skills/md-file-converter/extractors/extract-xlsx.py +175 -0
- package/.github/skills/md-file-converter/scripts/check-tools.sh +47 -0
- package/.github/skills/md-file-converter/scripts/extract-archive.sh +83 -0
- package/.github/skills/md-file-converter/scripts/extract-ocr.sh +77 -0
- package/.github/skills/md-file-converter/scripts/get-metadata.sh +57 -0
- package/.github/skills/md-file-converter/templates/output.md +73 -0
- package/.github/skills/md-file-converter/templates/unsupported-object.md +6 -0
- package/.github/skills/mockAPI-contract-generator/SKILL.md +607 -0
- package/.github/skills/test-case-validator/CHANGELOG.md +155 -0
- package/.github/skills/test-case-validator/CONFIGURATION.md +130 -0
- package/.github/skills/test-case-validator/EXAMPLES.md +50 -0
- package/.github/skills/test-case-validator/QUALITY_SCORING.md +98 -0
- package/.github/skills/test-case-validator/README.md +111 -0
- package/.github/skills/test-case-validator/REPORT_TEMPLATE.md +116 -0
- package/.github/skills/test-case-validator/SKILL.md +209 -0
- package/.github/skills/test-case-validator/SYSTEM_PROMPT.md +127 -0
- package/.github/skills/test-case-validator/TRACEABILITY_ENGINE.md +152 -0
- package/.github/skills/test-case-validator/VALIDATION_RULES.md +411 -0
- package/.github/skills/test-case-validator/config/default.config.yaml +62 -0
- package/.github/skills/test-case-validator/docs/ARCHITECTURE.md +66 -0
- package/.github/skills/test-case-validator/docs/EXTENDING.md +85 -0
- package/.github/skills/test-case-validator/docs/FAQ.md +88 -0
- package/.github/skills/test-case-validator/docs/VERSIONING.md +55 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-brd.md +43 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-test-cases.csv +9 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-user-story.md +29 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/output-report.md +303 -0
- package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/input-spec.md +43 -0
- package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/input-test-files-index.md +56 -0
- package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/output-report.md +274 -0
- package/.github/skills/test-case-validator/prompts/00-applicability-resolution.md +61 -0
- package/.github/skills/test-case-validator/prompts/01-extraction-user-story.md +58 -0
- package/.github/skills/test-case-validator/prompts/02-extraction-brd.md +64 -0
- package/.github/skills/test-case-validator/prompts/03-extraction-test-cases.md +92 -0
- package/.github/skills/test-case-validator/prompts/04-traceability-matrix.md +41 -0
- package/.github/skills/test-case-validator/prompts/05-coverage-analysis.md +46 -0
- package/.github/skills/test-case-validator/prompts/06-missing-scenario-detection.md +32 -0
- package/.github/skills/test-case-validator/prompts/07-duplicate-detection.md +36 -0
- package/.github/skills/test-case-validator/prompts/08-risk-analysis.md +39 -0
- package/.github/skills/test-case-validator/prompts/09-gated-wiring-validation.md +53 -0
- package/.github/skills/test-case-validator/prompts/10-observation-report.md +56 -0
- package/.github/skills/test-case-validator/prompts/11-final-report-assembly.md +57 -0
- package/.github/skills/test-case-validator/templates/coverage-table.md +25 -0
- package/.github/skills/test-case-validator/templates/executive-summary.md +38 -0
- package/.github/skills/test-case-validator/templates/final-summary-block.md +87 -0
- package/.github/skills/test-case-validator/templates/observation-entry.md +41 -0
- package/.github/skills/test-case-validator/templates/rtm-row.md +25 -0
- package/.github/skills/validation-engine-builder/README.md +50 -0
- package/.github/skills/validation-engine-builder/SKILL.md +241 -0
- package/.github/skills/validation-engine-builder/references/core.md +158 -0
- package/.github/skills/validation-engine-builder/references/platform-angular.md +166 -0
- package/.github/skills/validation-engine-builder/references/platform-flutter.md +118 -0
- package/.github/skills/validation-engine-builder/references/platform-react-native.md +170 -0
- package/.github/skills/validation-engine-builder/references/platform-react.md +94 -0
- package/.github/skills/validation-engine-builder/scripts/apply-to-project.js +80 -0
- package/.github/skills/validation-engine-builder/scripts/generate-angular.js +271 -0
- package/.github/skills/validation-engine-builder/scripts/generate-flutter.js +298 -0
- package/.github/skills/validation-engine-builder/scripts/generate-react-native.js +217 -0
- package/.github/skills/validation-engine-builder/scripts/generate-react.js +163 -0
- package/.github/skills/validation-engine-builder/scripts/install-deps.js +53 -0
- package/.github/skills/validation-engine-builder/scripts/shared/detect-platform.js +68 -0
- package/.github/skills/validation-engine-builder/scripts/shared/npm-deps.js +103 -0
- package/.github/skills/validation-engine-builder/scripts/shared/rhf-hook.js +43 -0
- package/.github/skills/validation-engine-builder/scripts/shared/ts-messages-regex.js +62 -0
- package/.github/skills/validation-engine-builder/scripts/shared/util.js +44 -0
- package/.github/skills/validation-engine-builder/scripts/shared/yup-schemas.js +80 -0
- package/.github/skills/validation-engine-builder/template.md +73 -0
- package/.github/skills/validation-engine-builder/templates/messages.json +22 -0
- package/.github/skills/validation-engine-builder/templates/regex.json +16 -0
- package/.github/skills/validation-engine-builder/templates/schemas.json +48 -0
- package/bin/index.js +145 -0
- package/package.json +22 -0
- 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.
|