AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Defense In Depth

skill-alexsandrocruz-zenpowers-defense-in-depth · by alexsandrocruz

Use when invalid data causes failures deep in execution, requiring validation at multiple system layers - validates at every layer data passes through to make bugs structurally impossible

No reviews yet
0 installs
13 views
0.0% view→install

Install

$ agentstack add skill-alexsandrocruz-zenpowers-defense-in-depth

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-alexsandrocruz-zenpowers-defense-in-depth)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
9mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Defense In Depth? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Defense-in-Depth Validation

Overview

When you fix a bug caused by invalid data, adding validation at one place feels sufficient. But that single check can be bypassed by different code paths, refactoring, or mocks.

Core principle: Validate at EVERY layer data passes through. Make the bug structurally impossible.

Why Multiple Layers

Single validation: "We fixed the bug" Multiple layers: "We made the bug impossible"

Different layers catch different cases:

  • Entry validation catches most bugs
  • Business logic catches edge cases
  • Environment guards prevent context-specific dangers
  • Debug logging helps when other layers fail

The Four Layers

Layer 1: Entry Point Validation

Purpose: Reject obviously invalid input at API boundary

public static async Task CreateProjectAsync(string name, string workingDirectory)
{
    if (string.IsNullOrWhiteSpace(workingDirectory))
    {
        throw new ArgumentException("Working directory cannot be empty or whitespace", nameof(workingDirectory));
    }
    
    if (!Directory.Exists(workingDirectory))
    {
        throw new DirectoryNotFoundException($"Working directory does not exist: {workingDirectory}");
    }
    
    var dirInfo = new DirectoryInfo(workingDirectory);
    if (!dirInfo.Exists)
    {
        throw new ArgumentException($"Working directory is not accessible: {workingDirectory}", nameof(workingDirectory));
    }
    
    // ... proceed
}

Layer 2: Business Logic Validation

Purpose: Ensure data makes sense for this operation

public static async Task InitializeWorkspaceAsync(string projectDir, string sessionId)
{
    if (string.IsNullOrEmpty(projectDir))
    {
        throw new InvalidOperationException("projectDir required for workspace initialization");
    }
    
    // ... proceed
}

Layer 3: Environment Guards

Purpose: Prevent dangerous operations in specific contexts

public static async Task GitInitAsync(string directory)
{
    // In tests, refuse git init outside temp directories
    var environment = Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT");
    if (environment == "Test")
    {
        var normalized = Path.GetFullPath(directory);
        var tempPath = Path.GetFullPath(Path.GetTempPath());

        if (!normalized.StartsWith(tempPath, StringComparison.OrdinalIgnoreCase))
        {
            throw new InvalidOperationException(
                $"Refusing git init outside temp dir during tests: {directory}");
        }
    }
    
    // ... proceed
}

Layer 4: Debug Instrumentation

Purpose: Capture context for forensics

public static async Task GitInitAsync(string directory)
{
    var stackTrace = Environment.StackTrace;
    
    _logger.LogDebug("About to git init: {Directory}, CWD: {CurrentDirectory}, Stack: {StackTrace}", 
        directory, 
        Environment.CurrentDirectory, 
        stackTrace);
        
    // ... proceed
}

Applying the Pattern

When you find a bug:

  1. Trace the data flow - Where does bad value originate? Where used?
  2. Map all checkpoints - List every point data passes through
  3. Add validation at each layer - Entry, business, environment, debug
  4. Test each layer - Try to bypass layer 1, verify layer 2 catches it

Example from Session

Bug: Empty projectDir caused git init in source code

Data flow:

  1. Test setup → empty string
  2. Project.create(name, '')
  3. WorkspaceManager.createWorkspace('')
  4. git init runs in process.cwd()

Four layers added:

  • Layer 1: Project.create() validates not empty/exists/writable
  • Layer 2: WorkspaceManager validates projectDir not empty
  • Layer 3: WorktreeManager refuses git init outside tmpdir in tests
  • Layer 4: Stack trace logging before git init

Result: All 1847 tests passed, bug impossible to reproduce

Key Insight

All four layers were necessary. During testing, each layer caught bugs the others missed:

  • Different code paths bypassed entry validation
  • Mocks bypassed business logic checks
  • Edge cases on different platforms needed environment guards
  • Debug logging identified structural misuse

Don't stop at one validation point. Add checks at every layer.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.