Skip to content
cccskills
FreePublished on GitHub

vibe-golden-file-testing

Implements snapshot/golden file tests with temporal normalization so tests don't break daily. Use when implementing tests that compare output against expected snapshots.

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

See how to install

Files included (1)

  • SKILL.md2.6 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

vibe-golden-file-testing

Golden file tests are powerful but brittle. This skill makes them robust.

When to Use This Skill

  • Implementing tests that compare output against saved expected output
  • Tests that currently break because dates, timestamps, or IDs change
  • API response testing with dynamic fields
  • CLI output testing

When NOT to Use This Skill

  • Simple unit tests with static assertions
  • Tests where the exact output IS the requirement (byte-for-byte)
  • Performance benchmarks

The Problem

Golden tests break when they contain:

  • Dates/timestamps (2026-02-28 → different tomorrow)
  • UUIDs/IDs (random each run)
  • Hostnames/ports (different per environment)
  • File paths (absolute paths differ per machine)
  • Durations (took 1.23s → varies by machine)

Steps

  1. Identify dynamic fields in the output being tested

  2. Create normalizer function:

    func normalizeOutput(s string) string {
        // Dates: 2026-02-28 → REDACTED_DATE
        s = dateRegex.ReplaceAll(s, "REDACTED_DATE")
        // UUIDs: 550e8400-... → REDACTED_UUID
        s = uuidRegex.ReplaceAll(s, "REDACTED_UUID")
        // Timestamps: 1709136000 → REDACTED_TS
        s = tsRegex.ReplaceAll(s, "REDACTED_TS")
        // Durations: 1.23s → REDACTED_DURATION
        s = durationRegex.ReplaceAll(s, "REDACTED_DURATION")
        return s
    }
    
  3. Apply normalization to BOTH:

    • The actual output (at test time)
    • The golden file (at generation time)
  4. Generate golden file with update flag:

    if os.Getenv("UPDATE_GOLDEN") == "1" {
        os.WriteFile(goldenPath, normalized, 0644)
    }
    
  5. Document update command:

    # To update golden files:
    UPDATE_GOLDEN=1 go test ./...
    

Common Normalizations

PatternRegexReplacement
ISO Date\d{4}-\d{2}-\d{2}REDACTED_DATE
ISO DateTime\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}REDACTED_DATETIME
UUID[0-9a-f]{8}-[0-9a-f]{4}-...REDACTED_UUID
Unix timestamp\b1[6-9]\d{8}\bREDACTED_TS
Duration\d+\.?\d*[µnm]?sREDACTED_DURATION
Absolute path/home/\w+/ or C:\\Users\\REDACTED_PATH
Port:\d{4,5}\b:REDACTED_PORT

Output Format

Golden File Setup: [Test Name]

Dynamic fields found: X Normalizations applied: Y Golden file: [path] Update command: UPDATE_GOLDEN=1 [test command]

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