vibe-fuzz-parser-inputs
SkillFiles & storageGenerates fuzz test scaffolding for parsers handling external input (YAML, JSON, config files, user input). Seeds corpus from existing fixtures and runs initial pass.
Use vibe-fuzz-parser-inputs in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add vibe-fuzz-parser-inputs and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the vibe-fuzz-parser-inputs skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by ash1794/vibe-engineering in plugins/vibe-engineering/skills/vibe-fuzz-parser-inputs/SKILL.md and read by Ahel’s review.
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
-
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") } }) } -
Seed the corpus from:
- Existing test fixtures
- Real production examples
- Known edge cases
- Minimally valid inputs
- Binary/garbage data
-
Run initial fuzz:
go test -fuzz=FuzzParseConfig -fuzztime=30s -
Record results:
- Crashes found
- New corpus entries generated
- Edge cases discovered
-
Fix crashes -- Every panic or unexpected behavior becomes a permanent test case
Other Languages
- JavaScript/TypeScript: Use
jest-fuzzorfast-checkproperty-based testing - Python: Use
hypothesisfor property-based testing - Rust: Use
cargo-fuzzwithlibfuzzer
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 Type | Fix |
|---|---|---|---|
| 1 | \x00\xff... | nil panic in tokenizer | Added nil check at line 42 |
New Edge Cases Discovered
- [Description] -- added as permanent test case
Signals
- GitHub stars
- 162
- Forks
- 40
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
vibe-fuzz-parser-inputs- Source
- github.com/ash1794/vibe-engineering
github.com/ash1794/vibe-engineering
Related picks
Skill · samber
The pick for Gogo-sdk-specialist
Skill · a5c-ai
The pick for Golegacy-js
Skill · thedaviddias
The pick for JavaScriptmodern-javascript-patterns
Skill · wshobson
The pick for JavaScriptpython-performance-optimization
Skill · wshobson
The pick for Pythonpython-pro
Skill · jeffallan
The pick for Python