.gemini/skills/validate-ticket/SKILL.md
Pre-decomposition ticket validation. Fast structural check for required fields, platform detection, and dependency status. Blocks invalid tickets early.
npx skillsauth add astro44/Autonom8-Agents validate-ticketInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Lightweight pre-flight check that validates ticket structure before decomposition begins. Catches structural issues early to avoid wasted LLM calls.
{
"ticket_path": "/path/to/ticket.json",
"ticket_id": "TICKET-XXX",
"validate": {
"required_fields": true,
"platform": true,
"dependencies": true
}
}
# Read ticket JSON
cat "$ticket_path" | jq .
# Quick structure validation
jq -e '.id and .title and .description' "$ticket_path"
| Field | Required | Validation |
|-------|----------|------------|
| id | YES | Non-empty, matches ticket_id param |
| title | YES | Non-empty string |
| description | YES | Non-empty string, >10 chars |
| acceptance_criteria | YES | Array with >=1 item |
| scope.allowed_directories | Recommended | Array of paths |
Detect platform from ticket or project.yaml:
ticket.platform exists?
YES → Use ticket.platform
NO → Infer from scope.allowed_directories:
- src/components → "web"
- lib/src → "flutter"
- Sources/ → "ios"
- contracts/ → "solidity"
- terraform/ → "infrastructure"
ticket.dependencies exists and not empty?
YES → For each dependency:
└── Check tickets/sprint_current/deployed/{dep}.json exists
YES → satisfied
NO → unsatisfied (blocking)
NO → Skip (no dependencies)
{
"skill": "validate-ticket",
"status": "valid|invalid|blocked",
"ticket_id": "TICKET-XXX",
"platform_detected": "web",
"validation": {
"required_fields": {
"passed": true,
"missing": []
},
"platform": {
"passed": true,
"detected": "web"
},
"dependencies": {
"passed": true,
"satisfied": ["TICKET-001"],
"unsatisfied": []
}
},
"errors": [],
"warnings": [],
"next_action": "proceed|fix|wait"
}
Missing required fields?
YES → status: "invalid", next_action: "fix"
Unsatisfied dependencies?
YES → status: "blocked", next_action: "wait"
Platform mismatch with project.yaml?
YES → Add warning, continue
All checks pass?
YES → status: "valid", next_action: "proceed"
| Error | Severity | Blocking |
|-------|----------|----------|
| missing_id | CRITICAL | YES |
| missing_title | CRITICAL | YES |
| missing_description | CRITICAL | YES |
| empty_acceptance_criteria | HIGH | YES |
| unsatisfied_dependency | HIGH | YES (blocked) |
| platform_mismatch | LOW | NO (warning) |
Basic validation:
{
"ticket_path": "/projects/oxygen_site/tickets/TICKET-OXY-001.json",
"ticket_id": "TICKET-OXY-001",
"validate": {
"required_fields": true,
"platform": true,
"dependencies": true
}
}
Fields only (skip dependency check):
{
"ticket_path": "/projects/app/tickets/TICKET-APP-001.json",
"ticket_id": "TICKET-APP-001",
"validate": {
"required_fields": true,
"platform": false,
"dependencies": false
}
}
| Aspect | validate-ticket | review-validate-ticket | |--------|-----------------|------------------------| | When | Before decomposition | Before implementation | | Speed | Fast (<1s) | Moderate (1-3s) | | Depth | Structural only | Includes project context | | Blocking | Blocks decomposition | Blocks implementation |
development
Scores proposal complexity against codebase surface. Uses proposal text analysis and readiness stats to determine decomposition tier and agent count.
testing
Fast filesystem readiness scan — counts docs, source files, manifests, platform signals. Produces initial ReadinessReport for agent spawning decisions.
testing
Merges bookend agent reports into revised readiness, complexity, and decomposition plan. Produces the final evidence-backed assessment consumed by sprint-architect-agent.
development
Rigorously reasons about definitions, proofs, and computations in algebra, analysis, discrete math, probability, linear algebra, and applied math. Verifies derivations, spots invalid steps, and states assumptions clearly. Use when solving or proving math problems, reviewing mathematical arguments, modeling with equations, interpreting statistics, or when the user mentions proofs, lemmas, theorems, integrals, series, matrices, optimization, or numerical methods.