Claude Code Plugins

Community-maintained marketplace

Feedback

>-

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name fail-fast
description Detect and halt on precondition failures before expensive operations begin. Validate inputs, permissions, and state upfront in CI/CD and automation workflows.

Fail Fast

When to Use This Skill

Fail fast is a design pattern that validates preconditions before executing expensive or irreversible operations. When validation fails, the system immediately reports the error rather than proceeding and failing later in an unpredictable state.

flowchart TD
    subgraph validation[Validation Phase]
        A[Request] --> B{Preconditions Met?}
    end

    subgraph execution[Execution Phase]
        C[Execute Operation]
        D[Success]
    end

    subgraph failure[Failure Phase]
        E[Report Error]
        F[No Side Effects]
    end

    B -->|Yes| C
    C --> D
    B -->|No| E
    E --> F

    %% Ghostty Hardcore Theme
    style A fill:#65d9ef,color:#1b1d1e
    style B fill:#fd971e,color:#1b1d1e
    style C fill:#a7e22e,color:#1b1d1e
    style D fill:#a7e22e,color:#1b1d1e
    style E fill:#f92572,color:#1b1d1e
    style F fill:#f92572,color:#1b1d1e

The key insight: fail before you start, not in the middle.


When to Apply

Scenario Apply Fail Fast? Reasoning
Invalid user input Yes User error, report immediately
Missing required config Yes Can't continue safely
Insufficient permissions Yes Operation will fail anyway
Resource allocation failure Yes Partial allocation is worse
Network timeout No Use graceful degradation
Cache miss No Expensive path still works

Decision rule: Fail fast on precondition failures. Degrade gracefully on runtime failures.


Implementation

GitHub Actions Workflow Validation

See examples.md for detailed code examples.

Go Function with Precondition Validation

See examples.md for detailed code examples.


Techniques

Fail Fast Techniques

Comprehensive techniques for implementing fail fast patterns:

Early Termination

Stop execution immediately when errors occur:

  • Shell strict mode (set -euo pipefail)
  • GitHub Actions matrix fail-fast
  • Go error propagation
  • Circuit breakers

Strict Mode Execution

Enable strictest validation and error detection:

  • Shell/TypeScript/Go strict modes
  • Linter enforcement
  • Schema validation

Assertion Patterns

Validate assumptions and fail if they're wrong:

  • Runtime assertions
  • Contract validation (pre/post conditions)
  • Invariant checks
  • Type guards

Error Escalation

Determine when to throw vs return, panic vs recover:

  • Throw vs return error
  • Error aggregation vs first-error-wins
  • Panic vs recoverable errors
  • Exit codes

Timeout Enforcement

Prevent operations from running indefinitely:

  • Operation timeouts
  • Job timeouts
  • Circuit breaker timeouts
  • Deadlock detection

See reference.md for additional techniques and detailed examples.

Comparison

These patterns are complementary, not contradictory:

See examples.md for detailed code examples.

Error Type Pattern Example
Missing config Fail Fast Can't start without database URL
Database timeout Graceful Degradation Retry, then use cache
Invalid input Fail Fast Reject malformed request
API unavailable Graceful Degradation Use backup endpoint
Insufficient permissions Fail Fast Don't attempt forbidden operation
Rate limited Graceful Degradation Exponential backoff

Anti-Patterns to Avoid

1. Late Validation

Validating after side effects have occurred.

See examples.md for detailed code examples.

2. Swallowing Errors

Continuing despite failures.

See examples.md for detailed code examples.

3. Partial Execution

Executing some operations before checking all preconditions.

See examples.md for detailed code examples.

4. Vague Error Messages

Failing fast but not explaining why.

# Bad: unhelpful error
[ -f "$CONFIG" ] || exit 1

# Good: actionable error message
[ -f "$CONFIG" ] || { echo "Config file not found: $CONFIG. Create it from config.example.yml"; exit 1; }

Examples

See examples.md for code examples.

Full Reference

See reference.md for complete documentation.

References