Skip to main content
AIDiveForge AIDiveForge
🧩

Self-Correcting Schema Agent

Agents & Workflows · by AIDiveForge · Apr 20, 2026 · Advanced

Repair structured output against a fixed JSON Schema with bounded retries.

Get schema-valid output or an explicit failure with validation errors.

Free · 2 KB · SKILL.md, instructions and example files. Requires the schema, a validator and an assistant capable of revising the output.

A worked example

A small example to try before using your own data.

Input

{
  "schema": {
    "type": "object",
    "properties": {
      "count": {
        "type": "integer"
      }
    },
    "required": [
      "count"
    ],
    "additionalProperties": false
  },
  "candidate": {
    "count": "3"
  },
  "source": "There are three items.",
  "attempt_budget": 2
}

Expected result

{
  "count": 3
}

What to check: The repaired value is an integer supported by the source, the schema is unchanged and an independent validator accepts the result.

Limits: Schema validity does not establish factual correctness. Retries and API costs remain the caller’s responsibility.

Worked example included. Model-specific performance and vendor compatibility have not been benchmarked.

Installation options and other formats

Install this skill

An agent skill starts with SKILL.md. The ZIP also includes its examples and any helper scripts. Drop the file into your tool of choice — or pick a different format if you use Cursor, Windsurf, Copilot, or something else.

Download SKILL.md
python3 - <<'ADF_SKILL_INSTALL'
import hashlib, io, os, stat, tempfile, urllib.request, zipfile
from pathlib import Path, PurePosixPath
folder = "self-correcting-schema-agent"
root = Path(os.environ.get('ADF_SKILL_ROOT', str(Path.home() / '.claude' / 'skills'))).expanduser()
destination = root / folder
if destination.exists() or destination.is_symlink():
    raise SystemExit('An installation already exists. Back it up and merge the ZIP deliberately.')
root.mkdir(parents=True, exist_ok=True)
request = urllib.request.Request("https://aidiveforge.com/skill/self-correcting-schema-agent.zip", headers={'User-Agent': 'AIDiveForge-Resource-Installer/1.0 (+https://aidiveforge.com/skills/)'})
with urllib.request.urlopen(request, timeout=30) as response:
    data = response.read(8 * 1024 * 1024 + 1)
if len(data) > 8 * 1024 * 1024 or hashlib.sha256(data).hexdigest() != "d2c6a0f30e479c3b604835ac6719c723b78922d900681b588c7dab23be2ecf0b":
    raise SystemExit('The download did not match this reviewed bundle. No files were installed.')
with zipfile.ZipFile(io.BytesIO(data)) as archive, tempfile.TemporaryDirectory(prefix='.adf-skill-', dir=root) as temporary:
    members = archive.infolist()
    if len(members) > 100 or sum(m.file_size for m in members) > 16 * 1024 * 1024:
        raise SystemExit('Unexpected archive size')
    for member in members:
        name = PurePosixPath(member.filename)
        if name.is_absolute() or '..' in name.parts or not name.parts or name.parts[0] != folder or '\\' in member.filename or stat.S_ISLNK(member.external_attr >> 16):
            raise SystemExit('Unsafe archive entry; nothing was installed')
        target = Path(temporary).joinpath(*name.parts)
        if member.is_dir():
            target.mkdir(parents=True, exist_ok=True)
        else:
            target.parent.mkdir(parents=True, exist_ok=True)
            with target.open('xb') as stream:
                stream.write(archive.read(member))
    staged = Path(temporary) / folder
    if not (staged / 'SKILL.md').is_file() or destination.exists() or destination.is_symlink():
        raise SystemExit('The skill could not be installed without replacing existing data')
    os.rename(staged, destination)
print('Installed the complete skill folder:', destination)
ADF_SKILL_INSTALL

Claude Code: ~/.claude/skills/self-correcting-schema-agent/SKILL.md. Codex: ~/.codex/skills/self-correcting-schema-agent/SKILL.md. Keep the complete ZIP folder when helper scripts are included.

🧠 Why it works

The repaired value is an integer supported by the source, the schema is unchanged and an independent validator accepts the result.

⚙️ How it works

  1. Validate the schema itself, then freeze it for the run; do not weaken requirements to make output pass.
  1. Validate the proposed JSON and return concrete error paths to the repair step.
  1. Repair only the failing structure while preserving supported source facts.
  1. Repeat within the stated attempt budget and validate each result independently.
  1. If the budget is exhausted, return failure and the last errors; never label invalid JSON successful.

Description

Get schema-valid output or an explicit failure with validation errors.

Requires the schema, a validator and an assistant capable of revising the output.

Limits: Schema validity does not establish factual correctness. Retries and API costs remain the caller’s responsibility.

Recommended Use

Tools and workflow packs this skill pairs well with. Forge picks are auto-generated from category + capability signals; Community picks are added by people who've used the pairing.

No matches yet. Be the first to suggest a pairing, or the Forge will populate suggestions as signals align.