Source profileQuality 82/100

affaan-m/ECC/skills/delivery-gate/SKILL.md

delivery-gate

Stop hook that blocks Claude from finishing until quality checks pass. Detects rationalization patterns (surface text heuristics), stale learning logs (filesystem mtime), and low disk space. Complements self-audit by mechanically enforcing learning capture habits.

Source repository stars
234,327
Declared platforms
1
Static risk flags
0
Last source update
2026-07-27
Source checked
2026-07-28

Decision brief

What it does—and where it fits

A Stop hook that checks three things before Claude can finish a session, using only deterministic checks — file modification timestamps, disk usage, and regex patterns on the transcript text. No AI inference.

Best for

    Not for

    • The hook enforces the habit of touching learning libraries, not the quality of what was recorded. If output-index.md is updated but growth-log is skipped, the hook passes (1 of 5 libraries touched). This is by design: m…

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeDeclaredSource recordInstall path and trigger
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/affaan-m/ECC --skill "skills/delivery-gate"
    Safe inspection promptEditorial

    Inspect the Agent Skill "delivery-gate" from https://github.com/affaan-m/ECC/blob/4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38/skills/delivery-gate/SKILL.md at commit 4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      What It Checks

      Rationalization detection warns about patterns like "skip tests for now" and "pre-existing bug" — surface signals that thinking may have been cut short. It never blocks on its own, because regex heuristics can false-positive. The blocking conditions are: disk critical, =3 learni…

      Rationalization detection warns about patterns like "skip tests for now" and "pre-existing bug" — surface signals that thinking may have been cut short. It never blocks on its own, because regex heuristics can false-pos…
    2. 02

      Why

      Claude Code's built-in checks cover code quality (build → type → lint → test). But there's a different failure mode: the agent produces working code while the session hygiene was neglected — learning not captured, rationalized shortcuts, disk running out silently.

      Claude Code's built-in checks cover code quality (build → type → lint → test). But there's a different failure mode: the agent produces working code while the session hygiene was neglected — learning not captured, ratio…Over many sessions of "ship and forget," the human hasn't grown. This hook enforces the habit: complex task → must touch learning libraries.
    3. 03

      Install

      Add to /.claude/settings.json:

      Add to /.claude/settings.json:
    4. 04

      Learning Libraries

      Create these files in your project's memory directory. The hook checks if at least one was updated today:

      Create these files in your project's memory directory. The hook checks if at least one was updated today:Customize the LIBS dict to match your own file structure.
    5. 05

      Configuration

      Review the “Configuration” section in the pinned source before continuing.

      Review and apply the “Configuration” source section.

    Permission review

    Static risk signals and limitations

    No configured static risk pattern was detected

    This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score82/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars234,327SourceRepository attention, not individual Skill quality
    Compatibility1 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    affaan-m/ECC
    Skill path
    skills/delivery-gate/SKILL.md
    Commit
    4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38
    License
    MIT
    Collected
    2026-07-28
    Default branch
    main
    View the original SKILL.md

    Delivery Gate — Mechanical Quality Gate for Claude Code

    A Stop hook that checks three things before Claude can finish a session, using only deterministic checks — file modification timestamps, disk usage, and regex patterns on the transcript text. No AI inference.

    This is distinct from reasoning gates (like self-audit): delivery-gate checks machine-verifiable facts; self-audit checks output quality across four reasoning dimensions. Together they form defense in depth:

    • delivery-gate: "Was the learning library touched today? Is disk space safe?"
    • self-audit: "Is the file content correct, complete, and honest?"

    This is the same pattern as CI pipeline gates — automated, deterministic checks that verify machine-readable facts rather than trusting self-reported status.

    What It Checks

    CheckMechanismOn Hit
    Rationalization patternsRegex on transcript tailWarning only (never blocks)
    Stale learning librariesmtime on 5 configurable pathsWarning if some stale; Block if >=3 stale OR growth-log stale + complex task
    Disk space < 50GBshutil.disk_usageWarning
    Disk space < 15GBshutil.disk_usageBlock (exit 2)

    Rationalization detection warns about patterns like "skip tests for now" and "pre-existing bug" — surface signals that thinking may have been cut short. It never blocks on its own, because regex heuristics can false-positive. The blocking conditions are: disk critical, >=3 learning libs stale, OR growth-log specifically stale (all require complex task >=3 edits).

    Why

    Claude Code's built-in checks cover code quality (build → type → lint → test). But there's a different failure mode: the agent produces working code while the session hygiene was neglected — learning not captured, rationalized shortcuts, disk running out silently.

    Over many sessions of "ship and forget," the human hasn't grown. This hook enforces the habit: complex task → must touch learning libraries.

    Install

    cp quality-gate.py ~/.claude/scripts/
    

    Add to ~/.claude/settings.json:

    {
      "hooks": {
        "Stop": [{
          "hooks": [{
            "type": "command",
            "command": "python3 ~/.claude/scripts/quality-gate.py",
            "timeout": 5000
          }]
        }]
      }
    }
    

    Learning Libraries

    Create these files in your project's memory directory. The hook checks if at least one was updated today:

    memory/
    ├── growth-log/          # Daily learning entries (directory)
    ├── decisions/log.md     # Decision log
    ├── output-index.md      # Index of session outputs
    ├── ratings-tracker.md   # Skill ratings over time
    └── tooling_capabilities.md  # Known tools inventory
    

    Customize the LIBS dict to match your own file structure.

    Configuration

    Edit quality-gate.py:

    VariableDefaultPurpose
    RATIONALIZE4 patternsRegex patterns for rationalization detection
    LIBS5 librariesFiles/dirs to check for today's updates
    COMPLEX_THRESHOLD3Edit/Write calls to classify as complex
    DISK_WARN_GB50Warn below this
    DISK_CRIT_GB15Block below this

    Examples

    Simple session — allowed:

    edit_count=1 (< 3, not complex) → exit 0
    

    Complex task, learning captured — allowed:

    edit_count=5 (complex) → checks LIBS → growth-log updated today → exit 0
    

    Complex task, no learning — BLOCKED:

    edit_count=4 (complex) → checks LIBS → all 5 stale → exit 2
    stderr: "Blocked: complex task completed but no learning captured today."
    

    Low disk space — BLOCKED:

    disk_free=12GB < 15GB critical → exit 2
    stderr: "Blocked: disk space at 12GB (threshold: 15GB)."
    

    Limitations

    The hook enforces the habit of touching learning libraries, not the quality of what was recorded. If output-index.md is updated but growth-log is skipped, the hook passes (1 of 5 libraries touched). This is by design: mechanical gates check machine-verifiable facts. For content quality verification, pair with self-audit.

    Compatibility

    • Python 3.8+ (uses from __future__ import annotations)
    • Cross-platform: Windows, macOS, Linux
    • Zero dependencies beyond stdlib

    Quality

    This code went through 4 rounds of automated code review (CodeRabbit + Greptile) with 9 real bugs found and fixed.

    See Also

    • self-audit — Reasoning quality gate (completeness/consistency/groundedness/honesty)
    • verification-loop — Code quality checks (build/type/lint/test)
    • gateguard — PreToolUse safety gate

    Alternatives

    Compare before choosing