Skip to content
cccskills
FreePublished on GitHub

vibe-fuzz-parser-inputs

Generates fuzz test scaffolding for parsers handling external input (YAML, JSON, config files, user input). Seeds corpus from existing fixtures and runs initial pass. Use when implementing or changing a parser, or any code that ingests user input, webhook payloads, API responses, or file formats.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md2.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

vibe-fuzz-parser-inputs

Every parser will eventually see input you didn't expect. Fuzz testing finds the crashes before production does.

When to Use This Skill

  • Implementing any parser (YAML, JSON, XML, config, DSL)
  • Processing user-supplied input
  • Handling webhook payloads or API responses
  • Parsing file formats

When NOT to Use This Skill

  • The parser is a well-tested standard library (e.g., encoding/json)
  • You're only reading known, controlled input
  • The parser is trivial (e.g., splitting a string by comma)

Steps

Go Fuzz Tests

  1. Create fuzz test file (parser_fuzz_test.go):

    func FuzzParseConfig(f *testing.F) {
        // Seed corpus from existing test fixtures
        files, _ := filepath.Glob("testdata/*.yaml")
        for _, file := range files {
            data, _ := os.ReadFile(file)
            f.Add(data)
        }
    
        // Add targeted seeds
        f.Add([]byte(""))           // empty
        f.Add([]byte("{}"))         // minimal valid
        f.Add([]byte("\x00\x00"))   // binary
    
        f.Fuzz(func(t *testing.T, data []byte) {
            // Should never panic
            result, err := ParseConfig(data)
            if err != nil {
                return // errors are fine
            }
            // If no error, result should be valid
            if result.Name == "" {
                t.Error("parsed successfully but Name is empty")
            }
        })
    }
    
  2. Seed the corpus from:

    • Existing test fixtures
    • Real production examples
    • Known edge cases
    • Minimally valid inputs
    • Binary/garbage data
  3. Run initial fuzz:

    go test -fuzz=FuzzParseConfig -fuzztime=30s
    
  4. Record results:

    • Crashes found
    • New corpus entries generated
    • Edge cases discovered
  5. Fix crashes -- Every panic or unexpected behavior becomes a permanent test case

Other Languages

  • JavaScript/TypeScript: Use jest-fuzz or fast-check property-based testing
  • Python: Use hypothesis for property-based testing
  • Rust: Use cargo-fuzz with libfuzzer

Output Format

Fuzz Test: [Parser Name]

Seeds: X (Y from fixtures, Z manual) Duration: [fuzz time] Corpus growth: X -> Y entries (Z% expansion) Crashes found: N

#Input (hex)Crash TypeFix
1\x00\xff...nil panic in tokenizerAdded nil check at line 42

New Edge Cases Discovered

  1. [Description] -- added as permanent test case

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Validates completed work against defined acceptance criteria. Use after completing a task that has specific success criteria defined in issues, specs, or task descriptions.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

Generates edge case, failure mode, and spec-driven test cases. Covers boundary values, nil inputs, concurrency, resource exhaustion, malformed data, and requirement-linked traceability tests. Use after happy-path tests exist and before claiming coverage is complete, when requirements lack tests, or before a security review.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

Catches shortcuts and reward hacking — weakening or deleting tests to make them pass, hard-coding expected outputs, silently dropping requirements, or claiming work is done without running it. Use before declaring a task complete and whenever a test or requirement feels like it's in the way.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

Safely integrates commits from parallel agent branches using sequential cherry-pick. Use after parallel work completes in isolated branches or worktrees.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

Audits tests for concurrency safety — race conditions, shared mock state, cleanup ordering. Use when writing tests that involve goroutines, async operations, or shared mutable state.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

Enforces tiered test coverage standards with three dimensions — line coverage by tier, spec-to-test traceability, and spec-to-code implementation mapping. Use before claiming code is complete.

The English summary is being prepared. Showing the original description.

ash1794/vibe-engineering164Updated Oct 8, 2026

See all skills by ash1794

Report a problem with this skill