Raw capture β€” raw/paad.md


url: https://github.com/ovid/paad title: PAAD β€” Defense-in-Depth for AI-Assisted Development author: Curtis "Ovid" Poe date_fetched: 2026-07-25 date_published: 2026-03-14


PAAD β€” Defense-in-Depth for AI-Assisted Development

Repository: https://github.com/ovid/paad Author: Curtis "Ovid" Poe License: MIT Version: 1.11.0 Total skill LOC: ~2,237 lines of SKILL.md across 8 skills

What It Is

PAAD (Pushback, Alignment, Architecture, Discipline) is a Claude Code plugin marketplace and multi-platform skill suite that adds defense-in-depth safeguards to AI-assisted development. It's a system of AI agent skills β€” each a document of prompts, procedures, and decision graphs β€” designed to catch the failure modes AI coding assistants don't reliably catch on their own: weak specs, plan-spec drift, architectural decay, and skipped quality gates.

PAAD supports Claude Code natively and ships compatible SKILL.md files for Cursor, Kiro, and Antigravity. A convert_skills.py script strips Claude Code-specific paths and paad: command references to produce platform-neutral versions.

Architecture

Plugin distribution model

PAAD is structured as a Claude Code plugin marketplace hosting a single plugin also called paad:

paad/
β”œβ”€β”€ .claude-plugin/marketplace.json    ← marketplace catalog (lists plugins)
β”œβ”€β”€ plugins/paad/                       ← the paad plugin
β”‚   β”œβ”€β”€ .claude-plugin/plugin.json      ← plugin manifest (v1.11.0)
β”‚   └── skills/                         ← 8 SKILL.md files
β”‚       β”œβ”€β”€ pushback/SKILL.md           ← spec critique
β”‚       β”œβ”€β”€ alignment/SKILL.md           ← requirements-to-tasks alignment
β”‚       β”œβ”€β”€ agentic-architecture/SKILL.md ← multi-agent architecture analysis
β”‚       β”œβ”€β”€ fix-architecture/SKILL.md    ← guided architecture fix loop
β”‚       β”œβ”€β”€ agentic-review/SKILL.md      ← multi-agent bug-hunting review
β”‚       β”œβ”€β”€ agentic-a11y/SKILL.md        ← multi-platform accessibility audit
β”‚       β”œβ”€β”€ vibe/SKILL.md                ← TDD-guarded quick fixes
β”‚       β”œβ”€β”€ makefile/SKILL.md            ← Makefile generation
β”‚       └── help/SKILL.md                ← help display
β”œβ”€β”€ kiro_and_antigravity/skills/        ← ported versions for Kiro/Cursor/Antigravity
β”‚   β”œβ”€β”€ .kiro/skills/                   ← Kiro-compatible (paths neutralized)
β”‚   └── .agent/skills/                  ← Antigravity wrappers referencing .kiro files
β”œβ”€β”€ scripts/convert_skills.py           ← strips Claude Code references for portability
└── docs/plans/                         ← design documents for skill creation

Invocation model: /paad:<skill-name> in Claude Code. Outside Claude Code, the SKILL.md files are auto-discovered by the hosting platform (Cursor, Kiro, Antigravity) and triggered by natural language.

The skill format

Each skill is a single SKILL.md file with YAML frontmatter (name, description) followed by Markdown prose containing:

  1. Pre-flight check digraph β€” A Graphviz dot block visualizing decision points and stop conditions. Required for every skill except help. The digraph is a safety mechanism: it ensures the LLM doesn't skip gates (e.g., branch protection, context window warnings, test infrastructure checks).
  2. Phased workflow β€” Numbered phases with explicit instructions for what to read, what to run, and what to check at each step.
  3. Agent prompt templates β€” For multi-agent skills, exact prompt text to dispatch to specialist subagents, including caveats ("steering files may be stale").
  4. Report templates β€” Exact markdown structures for output files, with sections for findings, metadata, and coverage checklists.

The specialist + verifier pattern

The core architectural pattern across the three "agentic-" skills (architecture, review, a11y) is:

  1. Phase 1: Reconnaissance β€” Collect repo metadata, build file manifests, scan for steering files
  2. Phase 2: Parallel specialists β€” Dispatch 5+ agents simultaneously, each with a distinct lens (e.g., Logic & Correctness, Error Handling, Security). Each specialist receives the file manifest, repo overview, and their specific flaw/strength taxonomy.
  3. Phase 3: Verification β€” Dispatch a single verifier agent with ALL specialist findings. The verifier reads actual code at each referenced file:line, confirms the bug/barrier exists, drops false positives, deduplicates cross-specialist findings, and assigns severity.
  4. Phase 4: Report β€” Write verified findings to a structured template with coverage checklists.

This pattern addresses a fundamental reliability problem: LLMs are good at generating plausible-sounding findings but bad at verifying them. The verifier acts as an adversarial filter.

Build system

The Makefile provides six validation checks:

Target What it verifies
check-versions marketplace.json ↔ plugin.json version sync
check-digraphs every skill (except help) has a Graphviz digraph
check-help every skill documented in paad:help overview
check-readme every skill documented in README.md
check-frontmatter SKILL.md name matches folder name, description present
validate claude plugin validate on marketplace and plugin

Skill-by-Skill Analysis

pushback (202 lines)

A spec critic that reviews requirements before implementation begins. Unique design choices:

alignment (255 lines)

Checks that intent documents (requirements, specs) and action documents (plans, tasks) are aligned, then rewrites all tasks in TDD format.

agentic-architecture (278 lines)

Multi-agent architecture analysis spanning 34 flaw types and 14 strength categories. Diagnosis only β€” does not propose fixes.

fix-architecture (286 lines)

Guided, iterative fixing of flaws from an agentic-architecture report. The most procedurally complex skill.

agentic-review (194 lines)

Multi-agent bug-hunting code review. Pre-merge quality gate.

agentic-a11y (392 lines β€” the largest skill)

Multi-platform accessibility audit supporting 8 platform types with platform-specific API checks per specialist.

vibe (169 lines)

Safe vibe coding for small fixes with mandatory TDD guardrails.

makefile (127 lines)

Creates/updates project Makefiles. Key rule: never modifies an existing target without explicit user approval. Detects stack from project files, enforces balanced test output (concise on success, detailed on failure), and forces one-shot mode for coverage tools to avoid watch-mode hangs.

help (334 lines, mostly display text)

Shows overview or per-skill help. All help text is inline in the SKILL.md β€” the skill does not read files or run commands.

Design Philosophy

Honest about risk

"If a specification is weak, a plan is misaligned, an architectural decision is fragile, or a code change introduces problems, the goal is to surface that early and clearly."

Defense-in-depth, not replacement

PAAD does not replace existing AI-assisted development tools; it complements them. The intellectual lineage is from traditional software engineering's layers of protection (specs, tests, code review, CI, QA, UAT), adapted for the AI era.

Tokens over speed

"PAAD optimizes for better decisions and fewer avoidable mistakes, not minimum token consumption." Multi-agent parallel dispatch inherently uses more tokens than a single-pass workflow.

Human-in-the-loop

Every consequential decision requires developer approval. Fix-architecture asks one question at a time and requires explicit go-ahead. Pushback presents issues one at a time and respects "good enough." The system is designed to keep humans in control of what matters.

Cross-Platform Strategy

The convert_skills.py script (scripts/convert_skills.py) converts PAAD's Claude Code skills to Kiro and Antigravity format:

The makefile and help skills are excluded from conversion as they're Claude Code-specific.

What Makes This Non-Obvious

  1. Digraphs as executable safety constraints β€” Most skills-as-prompts just list steps. PAAD uses Graphviz digraphs to encode decision points visually, making it harder for the LLM to rationalize skipping gates. The digraph requirement in CLAUDE.md is enforced by make check-digraphs.

  2. The verifier as adversarial filter β€” Having 5 specialists find issues and then a single skeptical verifier kill false positives is a specific, replicable pattern. The verifier prompt is deliberately adversarial: "Be skeptical β€” reject anything you cannot confirm by reading the code."

  3. Status tracking as multi-session protocol β€” Fix-architecture's inline status annotations turn the architecture report into a state machine that survives session boundaries. This is a pragmatic solution to the fundamental problem that Claude Code sessions are stateless.

  4. Scope shape before content analysis β€” Pushback checks feature cohesion (are these unrelated things bundled?) before analyzing individual requirements. This catches structural document problems that content-level analysis misses.

  5. TDD format as output, not just process β€” Alignment doesn't just recommend TDD; it rewrites all tasks into a specific red/green/refactor template with expected failure modes enumerated. This makes the TDD process harder to skip because it's already been done.

  6. CLI accessibility is real β€” Agentic-a11y treats CLI tools as a first-class accessibility target with specific checks: --no-color flag, structured parseable output, text progress indicators instead of spinners, information not conveyed by color alone.

Related Concepts

PAAD's approach parallels several other agentic development systems: