Awesome-omni-skill doc-ctr-validator

Validate Data Contracts (CTR) documents against Layer 8 schema standards

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data-ai/doc-ctr-validator" ~/.claude/skills/diegosouzapw-awesome-omni-skill-doc-ctr-validator && rm -rf "$T"
manifest: skills/data-ai/doc-ctr-validator/SKILL.md
source content

doc-ctr-validator

Validate Data Contracts (CTR) documents against Layer 8 schema standards.

Activation

Invoke when user requests validation of CTR documents or after creating/modifying CTR artifacts.

Validation Schema Reference

Schema:

ai_dev_ssd_flow/08_CTR/CTR_SCHEMA.yaml
Layer: 8 Artifact Type: CTR

Validation Checklist

0. Folder Structure Validation (BLOCKING)

Nested Folder Rule: ALL CTR documents MUST be in nested folders regardless of size.

Required Structure:

CTR TypeRequired Location
Dual-File
docs/08_CTR/CTR-NN_{slug}/CTR-NN_{slug}.md
+
CTR-NN_{slug}.yaml

Validation:

1. Check document is inside a nested folder: docs/08_CTR/CTR-NN_{slug}/
2. Verify folder name matches CTR ID pattern: CTR-NN_{slug}
3. Verify both .md and .yaml files exist with matching names
4. Parent path must be: docs/08_CTR/

Example Valid Structure:

docs/08_CTR/
├── CTR-01_f1_iam_api/
│   ├── CTR-01_f1_iam_api.md       ✓ Valid
│   ├── CTR-01_f1_iam_api.yaml     ✓ Valid (companion schema)
│   ├── CTR-01.R_review_report_v001.md
│   └── .drift_cache.json
├── CTR-02_f2_session_api/
│   ├── CTR-02_f2_session_api.md   ✓ Valid
│   └── CTR-02_f2_session_api.yaml ✓ Valid

Invalid Structure:

docs/08_CTR/
├── CTR-01_f1_iam_api.md           ✗ NOT in nested folder
├── CTR-01_f1_iam_api.yaml         ✗ NOT in nested folder

Error Codes:

CodeSeverityDescription
CTR-E020ERRORCTR not in nested folder (BLOCKING)
CTR-E021ERRORFolder name doesn't match CTR ID
CTR-E022ERRORFile name doesn't match folder name
VAL-H001ERRORDrift cache missing hash for upstream document
VAL-H002ERRORInvalid hash format (must be sha256:<64 hex chars>)

This check is BLOCKING - CTR must pass folder structure validation before other checks proceed.


1. Metadata Validation

Required custom_fields:
  - document_type: ["ctr", "template"]
  - artifact_type: "CTR"
  - layer: 8
  - architecture_approaches: [array format]
  - priority: ["primary", "shared", "fallback"]
  - development_status: ["active", "draft", "deprecated", "reference"]

Required tags:
  - ctr (or ctr-template)
  - layer-8-artifact

Forbidden tag patterns:
  - "^ctr-document$"
  - "^contract$"
  - "^api-contract$"
  - "^ctr-\\d{3}$"

2. Structure Validation (Dual-File Format)

File Format:

  • Documentation:
    .md
    file
  • Schema:
    .yaml
    file
  • Pattern:
    CTR-NNN_descriptive_name.md
    +
    CTR-NNN_descriptive_name.yaml

Required Sections (12 Sections + 2 Optional Appendices):

SectionTitleRequired
Title
# CTR-NN: Title
(H1)
MANDATORY
1Document ControlMANDATORY
2ContextMANDATORY
3Contract DefinitionMANDATORY
4Requirements SatisfiedMANDATORY
5Interface DefinitionMANDATORY
6Error HandlingMANDATORY
7Quality AttributesMANDATORY
8Versioning StrategyMANDATORY
9ExamplesMANDATORY
10VerificationMANDATORY
11TraceabilityMANDATORY
12ReferencesMANDATORY

Optional Appendices:

SectionTitleRequired
Appendix AAlternatives ConsideredOPTIONAL
Appendix BImplementation NotesOPTIONAL

Document Control Required Fields:

  • Project Name
  • Document Version
  • Date
  • Document Owner
  • Prepared By
  • Status

3. Content Validation

Status Values:

  • Draft
  • In Review
  • Approved
  • Active
  • Deprecated

Communication Patterns:

  • Synchronous: REST, gRPC, GraphQL
  • Asynchronous: Event-driven, Message Queue, Pub/Sub

Error Code Format:

  • Pattern:
    ^[A-Z_]+$
  • Examples: INVALID_INPUT, INSUFFICIENT_DATA, RATE_LIMITED, SERVICE_UNAVAILABLE, INTERNAL_ERROR

Versioning:

  • Format: MAJOR.MINOR.PATCH (Semantic versioning)

YAML Schema Requirements:

  • OpenAPI 3.x or JSON Schema format
  • Required: info (title, version, description), paths, components/schemas
  • All endpoints must have request and response schemas

4. Traceability Validation

Layer 8 Cumulative Tags:

  • @brd: BRD.NN.EE.SS (required)
  • @prd: PRD.NN.EE.SS (required)
  • @ears: EARS.NN.EE.SS (required)
  • @bdd: BDD.NN.EE.SS (required)
  • @adr: ADR-NN (required)
  • @sys: SYS.NN.EE.SS (required)
  • @req: REQ.NN.EE.SS (required)

Downstream Expected:

  • SPEC documents
  • TASKS documents
  • Code (src/...)

Same-Type References:

  • @related-ctr: CTR-NN
  • @depends-ctr: CTR-NN

Error Codes

CodeSeverityDescription
CTR-E001errorMissing required tag 'ctr'
CTR-E002errorMissing required tag 'layer-8-artifact'
CTR-E003errorInvalid document_type
CTR-E004errorInvalid architecture_approaches format
CTR-E005errorForbidden tag pattern detected
CTR-E006errorMissing required section
CTR-E007errorMultiple H1 headings detected
CTR-E008errorSection numbering not sequential (1-12)
CTR-E009errorDocument Control missing required fields
CTR-E010errorMissing companion YAML schema file
CTR-E011errorYAML schema is not valid OpenAPI 3.x or JSON Schema
CTR-E012errorMissing request/response schemas for endpoints
CTR-E013errorMissing Error Handling section
CTR-E014warningFile name does not match format
CTR-E015errorContract Definition missing Provider/Consumer
CTR-E016errorError Codes table missing
CTR-W001warningMissing Context Problem Statement
CTR-W002warningMissing success/failure examples
CTR-W003warningMissing upstream tags (require 7)
CTR-W004warningMissing Versioning Strategy Version Policy
CTR-W005warningError responses not defined in YAML schema
CTR-W006warningMissing contract testing requirements
CTR-I001infoConsider adding performance metrics
CTR-I002infoConsider documenting migration strategy
CTR-I003infoConsider adding alternative approaches

Validation Commands

# Validate single CTR document (validates both .md and .yaml)
python ai_dev_flow/scripts/validate_ctr.py docs/08_CTR/CTR-001_example.md

# Validate all CTR documents
python ai_dev_flow/scripts/validate_ctr.py docs/08_CTR/

# Check with verbose output
python ai_dev_flow/scripts/validate_ctr.py docs/08_CTR/ --verbose

Validation Workflow

  1. Parse YAML frontmatter
  2. Check required metadata fields
  3. Validate tag taxonomy
  4. Verify section structure (1-12)
  5. Validate Document Control table
  6. Check companion YAML schema file exists
  7. Validate YAML schema (OpenAPI 3.x or JSON Schema)
  8. Check Error Handling section (Error Codes table)
  9. Verify Provider/Consumer in Contract Definition
  10. Check Examples section (success and failure)
  11. Validate upstream references (7 required)
  12. Verify file naming convention
  13. Generate validation report

Integration

  • Invoked by: doc-flow, doc-ctr (post-creation)
  • Feeds into: trace-check (cross-document validation)
  • Reports to: quality-advisor

Output Format

CTR Validation Report
=====================
Document: CTR-001_example.md
Status: PASS/FAIL

Dual-File Check:
- Markdown file: Present
- YAML schema file: Present/Missing
- Schema valid: Yes/No

Contract Structure:
- Provider defined: Yes/No
- Consumer defined: Yes/No
- Error codes table: Present/Missing

Schema Coverage:
- OpenAPI/JSON Schema: Valid/Invalid
- Request schemas: Complete/Incomplete
- Response schemas: Complete/Incomplete
- Error responses: Defined/Missing

Errors: N
Warnings: N
Info: N

[Details listed by severity]

Related Resources

  • CTR Skill:
    .claude/skills/doc-ctr/SKILL.md
  • Naming Standards:
    .claude/skills/doc-naming/SKILL.md
    (ID and naming conventions)
  • CTR Validation Rules:
    ai_dev_ssd_flow/08_CTR/CTR_MVP_VALIDATION_RULES.md
  • CTR Schema:
    ai_dev_ssd_flow/08_CTR/CTR_SCHEMA.yaml

Version History

VersionDateChangesAuthor
1.22026-02-11Nested Folder Rule: Added Section 0 Folder Structure Validation (BLOCKING); CTR must be in
docs/08_CTR/CTR-NN_{slug}/
folders; Added error codes CTR-E020, CTR-E021, CTR-E022
1.1.02026-02-08Updated layer assignment from 9 to 8 per LAYER_REGISTRY v1.6; removed @impl from cumulative tagsSystem
1.0.02025-01-15Initial validator skill definitionSystem