agentsclimarketplace

Validator protocol

Skill gustavo-meilus/superpipelines/.superpipelines/skills/superpipelines/parity-test-h/validator-protocol

Loop Engineering for AI coding agents, with real review boundaries. Your AI reviewer cannot edit code. Structurally.

Install
npx -y skills add gustavo-meilus/superpipelines --skill validator-protocol

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Loaded by the run-parity-test-h entry skill to supply operating protocol and invariants for YAML config validation in the parity-test-h pipeline. Not user-invocable.

SKILL.md

6.8 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it

Validator — Operational Protocol

<overview> The validator step reads an input YAML config file, parses it, and checks it against a schema: required fields must be present, field values must match expected types, and deprecated keys must be flagged. It writes a structured JSON findings file to the pipeline temp directory. It is the first step of the parity-test-h Sequential pipeline (Pattern 1) on Tier 2 (Cursor/Windsurf/Cline), executing inline in the entry skill's session. The quality bar is: validator-findings.json must be machine-readable JSON that the reviewer can consume without ambiguity. </overview>

Protocol

<protocol>

1. DISCOVER

  1. Read inputs from the orchestrator execution context:
    • input_path: path to the input YAML config file to read.
    • findings_output_path: path where validator-findings.json must be written.
    • state_path: path to pipeline-state.json for status updates.
    • run_id: current run identifier.
    • root: resolved scope root.
  2. Verify input_path exists and is a readable file. If not: update pipeline-state.json phases[0].status = "blocked"; emit NEEDS_CONTEXT with message: "Input YAML config file not found at {input_path}. Provide a valid path and re-run."
  3. Read the file content and parse it as YAML. If the file is empty: write a zero-findings validator-findings.json and emit DONE_WITH_CONCERNS with message: "Input file at {input_path} is empty. Findings file written with zero entries."
  4. If the YAML is syntactically invalid (parse error): update pipeline-state.json phases[0].status = "blocked"; emit BLOCKED with message: "Input file at {input_path} is not valid YAML: {parse_error_detail}. Fix the syntax and re-run."

2. PROCESS

Step 2.1 — Check required fields:

Verify each of the following fields is present at the top level of the parsed YAML document:

name, version, environment, timeout, resources

For each missing field, create a finding:

{
  "id": "F-{NNN}",
  "category": "required_field",
  "key": "{field_name}",
  "message": "Required field '{field_name}' is missing.",
  "severity": "error"
}

Step 2.2 — Check type constraints:

For fields that are present, validate their types against the following rules:

FieldExpected typeNotes
namestringNon-empty
versionstringSemantic version pattern \d+\.\d+\.\d+ preferred but not enforced
timeoutintegerPositive integer (seconds); string values like "30s" are a type mismatch
environmentstringOne of: development, staging, production
resourcesmapping (object)Must be a YAML mapping, not a scalar or list
replicasintegerIf present, must be a positive integer
enabledbooleanIf present, must be a boolean (true/false); string "true" is a type mismatch
tagslistIf present, must be a YAML sequence

For each type mismatch, create a finding:

{
  "id": "F-{NNN}",
  "category": "type_mismatch",
  "key": "{field_name}",
  "expected_type": "{expected}",
  "actual_type": "{actual}",
  "actual_value": "{value_as_string_truncated_to_50_chars}",
  "message": "Field '{field_name}' expected {expected} but got {actual}.",
  "severity": "error"
}

Step 2.3 — Check deprecated keys:

Flag any of the following keys if present at any level in the YAML document:

legacy_mode, old_timeout, deprecated_env, use_legacy_auth, v1_compat

For each deprecated key found, create a finding:

{
  "id": "F-{NNN}",
  "category": "deprecated_key",
  "key": "{key_name}",
  "message": "Key '{key_name}' is deprecated. {replacement_hint}",
  "severity": "warning"
}

Replacement hints:

  • legacy_mode → "Use mode instead."
  • old_timeout → "Use timeout instead."
  • deprecated_env → "Use environment instead."
  • use_legacy_auth → "Use auth.method instead."
  • v1_compat → "Remove this key; v1 compatibility layer is no longer supported."

Step 2.4 — Assign sequential finding IDs:

Assign IDs in the order findings were discovered: F-001, F-002, F-003, … (zero-padded to 3 digits).

Step 2.5 — Sort findings:

Sort the findings list: errors first (sorted alphabetically by key), then warnings (sorted alphabetically by key).

Step 2.6 — Handle zero-finding case:

If no findings were produced (the YAML is fully valid), findings is an empty array and total_findings is 0. Emit DONE_WITH_CONCERNS with message: "No findings produced. The YAML config appears fully valid against the schema." — this is a concern because zero findings on a parity-test run may indicate the schema check did not execute as expected.

3. DELIVER

  1. Write validator-findings.json to findings_output_path using the Write tool. Structure:
{
  "source_path": "{input_path}",
  "total_findings": 0,
  "findings": []
}

Fields:

  • source_path: path of the input YAML file (verbatim from execution context).
  • total_findings: total count of all findings (errors + warnings).
  • findings: array of finding objects as defined in Steps 2.1–2.5.
  1. Update pipeline-state.json:

    • Set phases[0].status = "completed" (or "completed_with_concerns" if zero findings).
    • Set phases[0].outputs = [findings_output_path].
    • Set phases[0].outputs_summary = { "total_findings": N, "required_field_violations": N, "type_mismatches": N, "deprecated_keys": N }.
  2. Emit terminal status:

    • DONE — validator-findings.json written successfully with at least one finding.
    • DONE_WITH_CONCERNS — file written but zero findings (may indicate schema check did not run as expected), or input was empty.
    • NEEDS_CONTEXT — input file not found or not accessible.
    • BLOCKED — input YAML is syntactically invalid; or findings file could not be written.
</protocol> <invariants> - NEVER write findings to a path outside `{ROOT}/superpipelines/temp/parity-test-h/{runId}/`. - NEVER pass file contents back to the orchestrator in the status message — pass only the findings file path. - NEVER hardcode platform paths — use only the `root` value supplied in the execution context. - ALWAYS validate that `findings_output_path` is writable before attempting write. - ALWAYS update `pipeline-state.json` phases[0] after writing findings. - ALWAYS include ALL findings in the output (do not suppress or truncate — the reviewer decides which to dismiss). - ALWAYS re-read the source YAML from disk; do not rely on cached or context-bleed content. - Emit exactly one terminal status: DONE / DONE_WITH_CONCERNS / NEEDS_CONTEXT / BLOCKED. </invariants>

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,984. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.