Skip to content
Back to skills

Bug Magnet Data

ASecurity

Curated edge case test data for boundary testing, verification scripts, and test generation. Provides pre-curated reference data organized by data type with context-specific loading guidance.

  • 8 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 26, 2026
developmentjavascriptpythonrustgojavasqltestingdatabasesecurityperformance

Works with

  • cli

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add QBall-Inc/the-bulwark --skill bug-magnet-data --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bug Magnet Data?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bug Magnet Data
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/qball-inc-bug-magnet-data/badge)](https://www.skillsdirectory.com/skills/qball-inc-bug-magnet-data)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bug-magnet-data
description: Curated edge case test data for boundary testing, verification scripts, and test generation. Provides pre-curated reference data organized by data type with context-specific loading guidance.
user-invocable: false
version: 1.0.0
author: "Ashay Kubal @ Qball Inc."
---

# Bug Magnet Data

Curated edge case test data for boundary testing, verification scripts, and test generation. 50+ years of testing wisdom distilled into small, high-signal collections organized by data type.

**Core Principle**: Curation beats generation. 50 well-chosen edge cases find more bugs than 10,000 random inputs.

---

## When to Use This Skill

**Load this skill when the consumer request matches ANY of these patterns:**

| Consumer | Trigger | Usage |
|----------|---------|-------|
| test-audit | Step 7 (edge case gap detection) | Identify missing boundary test coverage |
| bulwark-verify | Generating verification scripts | Inject edge cases into test scenarios |
| bulwark-fix-validator | Validating a fix | Test fix against boundary conditions |

**DO NOT use for:**
- Encrypted/compressed data (edge cases won't penetrate wrapping)
- Pure unit tests with fully mocked dependencies (edge cases need real execution)
- Performance/load testing (use dedicated load testing tools)

---

## Pre-Flight Gate (BLOCKING)

**STOP. Before providing ANY edge case data, you MUST follow the three-phase workflow.**

This skill provides **curated data** through a **deterministic workflow**. You must execute all phases.

### What You MUST Do

1. **Phase 1: Component Detection** - Identify component type and load context file
2. **Phase 2: Data Loading** - Load T0 + T1 data files (REQUIRED), T2 if specified by context
3. **Phase 3: Edge Case Application** - Apply edge cases and report what was loaded

### What You MUST NOT Do

- **Do NOT generate edge cases from your own knowledge** - use the curated data files
- **Do NOT skip loading context files** - they determine which categories apply
- **Do NOT skip the safety filter** - patterns marked `safe_for_automation: false` must be excluded
- **Do NOT return partial data** - all applicable tiers must be loaded

### Why This Matters

The curated data exists because:
- **Curation beats generation** - 50 well-chosen edge cases find more bugs than 10,000 random inputs
- **Reproducibility** - Same component type = same edge cases every time
- **Safety** - Destructive patterns are explicitly marked and filtered

**If you find yourself thinking "I know some good edge cases" - STOP. Use the data files.**

### Completion Checklist

Before returning to consumer, verify ALL items:

- [ ] Phase 1: Component type detected
- [ ] Phase 1: Context file loaded for component type
- [ ] Phase 2: T0 data files loaded (boundaries, booleans, collections)
- [ ] Phase 2: T1 data files loaded (unicode, special-chars, injection, special numbers)
- [ ] Phase 2: T2 data files loaded (if specified by context file)
- [ ] Phase 2: Safety filter applied (excluded manual_only and safe_for_automation: false)
- [ ] Phase 3: Edge cases applied to test/verification scenario
- [ ] Phase 3: Report includes categories loaded and patterns excluded

**Do NOT return to consumer until all checkboxes can be marked complete.**

---

## Dependencies

This skill provides data files and context guidance. Understanding what to load ensures deterministic execution.

| Category | Files | Requirement | When to Load |
|----------|-------|-------------|--------------|
| **Context files** | `context/{component-type}.md` | REQUIRED | Always load for detected component type |
| **T0 data (boundaries)** | `data/strings/boundaries.yaml`, `data/numbers/boundaries.yaml`, `data/booleans/boundaries.yaml`, `data/collections/arrays.yaml` | REQUIRED | Every edge case injection |
| **T1 data (common)** | `data/strings/unicode.yaml`, `data/strings/special-chars.yaml`, `data/strings/injection.yaml`, `data/numbers/special.yaml` | REQUIRED | Most edge case injections |
| **T2 data (context-specific)** | `data/dates/*.yaml`, `data/encoding/*.yaml`, `data/formats/*.yaml`, `data/concurrency/*.yaml` | CONDITIONALLY REQUIRED | If context file specifies → MUST load |
| **Language-specific** | `data/language-specific/{language}.yaml` | CONDITIONALLY REQUIRED | If testing language-specific behavior → MUST load |
| **External references** | `references/external-lists.md` | REQUIRED | For source attribution and update checking |

**Fallback behavior:**
- If component type detected → Loading `context/{type}.md` is REQUIRED
- If context file specifies a category → Loading that category is REQUIRED
- If a referenced file is missing → Note in output, continue with available data

---

## Data Tiers

| Tier | Categories | When to Load |
|------|------------|--------------|
| **T0 (Always)** | Boundaries (empty/single/max), Null handling | Every edge case injection |
| **T1 (Common)** | Basic injection, Unicode basics, Numeric edges | Every edge case injection |
| **T2 (Context)** | Date/time, Encoding, Formats, Concurrency | When context file specifies |
| **T3 (Manual)** | Patterns marked `manual_only: true` | NEVER for automated runs |

**Safety Filtering**: Patterns with `safe_for_automation: false` or `manual_only: true` MUST be excluded from automated test runs.

---

## Three-Phase Workflow

**CRITICAL**: All three phases are REQUIRED. Do not skip any phase.

```
Phase 1: Component Detection (Deterministic)
├── Identify component type from code under test
├── Map to context file: context/{cli-args|http-body|file-contents|db-query|process-spawn}.md
└── Load context file → get applicable categories list

Phase 2: Data Loading (Deterministic)
├── Load T0 data files (REQUIRED - always)
├── Load T1 data files (REQUIRED - always)
├── Load T2 data files specified by context file (CONDITIONALLY REQUIRED)
├── Load language-specific file if applicable (CONDITIONALLY REQUIRED)
└── Apply safety filter: exclude patterns with safe_for_automation: false

Phase 3: Edge Case Application
├── Inject loaded edge cases into test scenarios
├── Report which categories were loaded
└── Report any patterns excluded due to safety filtering
```

---

## Component Type Detection

Map code under test to component type. **Detection determines which context file to load.**

| Code Pattern | Component Type | Context File |
|--------------|----------------|--------------|
| CLI argument parsing, process.argv, argparse | CLI | `context/cli-args.md` |
| HTTP request/response, req.body, fetch, axios | HTTP | `context/http-body.md` |
| File I/O, fs.read, open(), file parsing | File | `context/file-contents.md` |
| Database queries, SQL, ORM operations | Database | `context/db-query.md` |
| Child process, spawn, exec, subprocess | Process | `context/process-spawn.md` |

**If multiple types apply**: Load context files for each applicable type.

---

## Category Reference

### Strings (T0/T1)

| File | Contents | Bugs Caught |
|------|----------|-------------|
| `strings/boundaries.yaml` | Empty, single char, long strings, whitespace | NullPointerException, buffer overflow, off-by-one |
| `strings/unicode.yaml` | Multi-byte, normalization, emoji, RTL | Encoding errors, length calculation bugs |
| `strings/special-chars.yaml` | Quotes, escapes, control characters | Escape sequence handling, delimiter confusion |
| `strings/injection.yaml` | SQL, XSS, command injection, path traversal | Security vulnerabilities |

### Numbers (T0/T1)

| File | Contents | Bugs Caught |
|------|----------|-------------|
| `numbers/boundaries.yaml` | 0, -1, 1, MAX_INT, MIN_INT | Integer overflow/underflow, off-by-one |
| `numbers/special.yaml` | NaN, Infinity, -0 | Special value handling, NaN propagation |
| `numbers/precision.yaml` | 0.1+0.2, large/small floats | Floating point comparison failures |

### Booleans (T0)

| File | Contents | Bugs Caught |
|------|----------|-------------|
| `booleans/boundaries.yaml` | true, false, null, truthy/falsy | Null reference, truthy/falsy confusion |

### Collections (T0)

| File | Contents | Bugs Caught |
|------|----------|-------------|
| `collections/arrays.yaml` | Empty, single, large, nested, sparse | Index out of bounds, empty collection crashes |
| `collections/objects.yaml` | Empty, nested, circular, prototype pollution | Null reference, prototype pollution |

### Dates (T2)

| File | Contents | Bugs Caught |
|------|----------|-------------|
| `dates/boundaries.yaml` | Epoch, Y2K38, leap year | Y2K38 overflow, leap year bugs |
| `dates/timezone.yaml` | DST transitions, UTC offsets | DST errors, timezone conversion |
| `dates/invalid.yaml` | Feb 30, invalid formats | Date parsing failures |

### Encoding (T2)

| File | Contents | Bugs Caught |
|------|----------|-------------|
| `encoding/charset.yaml` | ASCII, UTF-8, BOM | Encoding detection, mojibake |
| `encoding/normalization.yaml` | NFC, NFD, overlong | Normalization mismatches |

### Formats (T2)

| File | Contents | Bugs Caught |
|------|----------|-------------|
| `formats/email.yaml` | Valid/invalid patterns | Overly strict/lenient validation |
| `formats/url.yaml` | Valid/invalid patterns | URL parsing errors |
| `formats/json.yaml` | Valid/invalid patterns | JSON parsing errors |

### Concurrency (T2)

| File | Contents | Bugs Caught |
|------|----------|-------------|
| `concurrency/race-conditions.yaml` | Double submit, concurrent edit | Race conditions, lost updates |
| `concurrency/state-machines.yaml` | Invalid transitions | State corruption |

### Language-Specific (Conditional)

| File | Contents | Bugs Caught |
|------|----------|-------------|
| `language-specific/javascript.yaml` | == vs ===, truthy/falsy | Type coercion bugs |
| `language-specific/python.yaml` | None vs False, mutable defaults | Python-specific gotchas |
| `language-specific/rust.yaml` | Ownership, borrowing | Memory safety issues |

---

## Data File Format

All data files use this YAML structure:

```yaml
metadata:
  version: "1.0.0"
  last_updated: "2026-02-01"
  source_urls: []

category: strings
subcategory: boundaries
tier: T0

values:
  identifier:
    value: "actual value"
    bugs_caught: ["Bug type 1", "Bug type 2"]
    safe_for_automation: true
    manual_only: false
```

**Safety flags to check:**
- `safe_for_automation: false` → Exclude from automated runs
- `manual_only: true` → NEVER include in automated runs

---

## Integration Examples

### test-audit (Step 7)

```
1. Detect component type from test file
2. Load context file for component type
3. Load T0 + T1 data files
4. Load T2 files specified by context
5. Compare test coverage against loaded edge cases
6. Report missing edge case coverage
```

### bulwark-verify

```
1. Detect component type from code under verification
2. Load context file for component type
3. Load T0 + T1 data files
4. Load T2 files specified by context
5. Filter out patterns with safe_for_automation: false
6. Inject applicable edge cases into verification script
```

### bulwark-fix-validator

```
1. Detect component type from fix
2. Load context file for component type
3. Load T0 + T1 data files
4. Test fix against loaded edge cases
5. Report any edge cases that break the fix
```

Files in this skill

  • SKILL.md11 KB
  • context/cli-args.md1.8 KB
  • context/db-query.md2.4 KB
  • context/file-contents.md1.9 KB
  • context/http-body.md2 KB
  • context/process-spawn.md2.6 KB
  • data/booleans/boundaries.yaml2.9 KB
  • data/collections/arrays.yaml2.6 KB
  • data/collections/objects.yaml2.8 KB
  • data/concurrency/race-conditions.yaml3.7 KB
  • data/concurrency/state-machines.yaml3.5 KB
  • data/dates/boundaries.yaml2.8 KB
  • data/dates/invalid.yaml2.7 KB
  • data/dates/timezone.yaml2.7 KB
  • data/encoding/charset.yaml1.7 KB
  • data/encoding/normalization.yaml2.3 KB
  • data/formats/email.yaml3.1 KB
  • data/formats/json.yaml3.6 KB
  • data/formats/url.yaml3.2 KB
  • data/language-specific/javascript.yaml3.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.