Agent Skills: strict-validation-setup

Bootstrap strict-mode tooling and per-task GOALS.md scaffolding so an agentic loop can self-verify. Use when setting up a new project, making a task self-verifying, or scaffolding goals for an agentic loop.

UncategorizedID: OutlineDriven/odin-claude-plugin/strict-validation-setup

Install this agent skill to your local

pnpm dlx add-skill https://github.com/OutlineDriven/odin-claude-plugin/tree/HEAD/skills/strict-validation-setup

Skill Files

Browse the full folder contents for strict-validation-setup.

Download Skill

Loading file tree…

skills/strict-validation-setup/SKILL.md

Skill Metadata

Name
strict-validation-setup
Description
Bootstrap strict-mode tooling and per-task GOALS.md scaffolding so an agentic loop can self-verify. Use when setting up a new project, making a task self-verifying, or scaffolding goals for an agentic loop.

The skill ships two distinct concerns split by temporal phase:

  • Project-stable: strict-mode tooling config + AGENTS.md authoring (defer the AGENTS.md content to init; this skill only ensures it exists and references the per-task pattern).
  • Task-ephemeral: .agent-tasks/<task-id>/GOALS.md per task plus failing-test scaffolding co-located with it.

These never mix. Task goals never go into AGENTS.md (would leak as project policy). Project invariants never go into per-task GOALS.md (would duplicate per task and drift).

Modality differentiation

| Skill | Owns | | --------------------------- | -------------------------------------------------------------------------------- | | strict-validation-setup | Strict-mode tooling configs + per-task GOALS.md convention (this file) | | init | AGENTS.md authoring (project-stable): defer to it for content | | test-driven | TDD discipline (RED → GREEN → REFACTOR): defer for test-writing methodology | | type-driven | Refined-type / typestate specs: defer for type-system invariants | | design-by-contract | Pre/post conditions, runtime contracts: defer for assertion patterns | | validation-first | State-machine specs (typestate / FSM / actor): defer for FSM modeling | | tests-adversarial | Assumption-violation tests: defer for the adversarial test pattern | | setup-pre-commit | Commit-hook installation: defer for hook tooling | | setup-gitignore | Gitignore patterns: defer for ignore-file composition |

When the surface narrows to a single concern above, defer.

Three parts

1. Strict-mode tooling bootstrap (project-stable)

Detect the ecosystem from manifests, then write strict-mode config per the relevant references/<ecosystem>.md. Idempotency: merge with existing config; raise if a destructive overwrite would be required and --overwrite is not explicit.

Languages with bundled references (Q5-approved set; framework specifics deferred to a follow-up):

  • references/typescript.md
  • references/python.md
  • references/rust.md
  • references/go.md
  • references/ocaml.md

Languages noted but not yet bundled are deferred per Q8 rollback path: C++, Java, Kotlin, plus framework specifics (Spring Boot, Nest, React-strict). When the user invokes the skill on one of these, surface the gap explicitly and propose authoring the reference now or escalating to a follow-up commit.

2. AGENTS.md and per-task GOALS.md split (load-bearing)

  • AGENTS.md: project-wide, stable across sessions and tasks. Contains: build/test commands, banned tooling, conventions, contract patterns, and the location pattern of per-task goal files (.agent-tasks/<task-id>/GOALS.md or whatever path the project chooses). Defer authoring the AGENTS.md content to init. This skill only ensures the file exists and contains the goal-location pointer.
  • .agent-tasks/<task-id>/GOALS.md: task-ephemeral. Contains: the user's goal in prose, the success criteria the loop checks against, links to the failing tests in .agent-tasks/<task-id>/tests/. Cleaned up after the task merges. Write it from references/agent-goals.md, which carries the section layout and the rules for what belongs here rather than in AGENTS.md.

The architectural rule: task A's goals never appear in AGENTS.md. AGENTS.md never contains task-specific success criteria. If the line blurs, surface and refuse.

3. Verifiable-goals scaffolding (task-ephemeral)

For the current task, translate the user's stated goal into failing tests / contract assertions. The tests live in .agent-tasks/<task-id>/tests/ alongside the GOALS.md. The loop runs until the tests pass. Goals therefore exist both as prose (GOALS.md) and as code (tests).

Three sub-shapes, decide while drafting per task:

  • Interactive: ask the user what success means, stub failing tests, hand back for review before agent loop begins.
  • Template-driven: language-specific test stubs in references/ (per-ecosystem). Pick the matching language template; let the user fill specifics.
  • Hybrid: start template-driven; promote to interactive when the user's goal does not fit the template.

The term verifiable goals (Devin Agents101, Jun 2025) is preferred over TDD-for-agents (non-idiomatic in 2026 production stacks).

Posture

Bootstrap is a one-shot mode. After running, do not stay resident. The loop that follows is llm-self-loop's territory.