본문으로 건너뛰기
cccskills
무료GitHub에 공개

vibe-concurrent-test-safety

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md2.6 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

vibe-concurrent-test-safety

Flaky tests are almost always concurrency bugs in the test, not the code.

When to Use This Skill

  • Writing tests that launch goroutines or async operations
  • Tests use shared mock objects accessed by multiple goroutines
  • Tests that fail intermittently ("flaky")
  • After adding -race flag and getting failures
  • Tests that involve daemon/server startup and shutdown

When NOT to Use This Skill

  • Purely synchronous tests with no concurrency
  • Tests that are already race-free (verified with -race flag)
  • Simple mock-based tests with single-threaded access

Common Concurrency Bugs in Tests

1. Direct Mock State Access

// BAD: Race condition -- mock.Requests accessed while goroutine writes
go daemon.Run(ctx)
time.Sleep(100 * time.Millisecond)
assert.Equal(t, 3, len(mock.Requests)) // RACE!

// GOOD: Thread-safe accessor
go daemon.Run(ctx)
time.Sleep(100 * time.Millisecond)
assert.Equal(t, 3, mock.RequestCount()) // Safe

2. Missing Context Cancellation Before Cleanup

// BAD: Close bus while daemon goroutine still using it
go daemon.Run(ctx)
defer bus.Close() // daemon may still be writing!

// GOOD: Cancel context first, wait, then cleanup
go daemon.Run(ctx)
defer func() {
    cancel()          // Signal daemon to stop
    <-daemon.Done()   // Wait for it
    bus.Close()        // Now safe
}()

3. Assertions on Timing

// BAD: Relies on timing
go startServer()
time.Sleep(50 * time.Millisecond) // May not be enough
resp := callServer()

// GOOD: Wait for readiness
go startServer()
waitForReady(server) // Poll or use channel
resp := callServer()

Audit Checklist

  • No direct access to shared mock fields (use accessors)
  • Context cancelled before resource cleanup
  • Goroutines joined before test ends (<-done or wg.Wait())
  • No time.Sleep for synchronization (use channels, waitgroups, or polling)
  • Assertions use Eventually or polling for async results
  • Test passes with -race flag
  • Test passes when run 100 times (-count=100)

Output Format

Concurrent Test Safety Audit: [Test File]

Issues Found: X

#IssueLineFix
1Direct mock access:42Use mock.RequestCount()
2Missing cancel before Close:15Add cancel() before defer

Suggested Fixes

[Code snippets for each fix]

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ash1794/vibe-engineering1642026년 10월 8일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ash1794/vibe-engineering1642026년 10월 8일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ash1794/vibe-engineering1642026년 10월 8일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ash1794/vibe-engineering1642026년 10월 8일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ash1794/vibe-engineering1642026년 10월 8일 업데이트

Extracts and records architectural decisions from diffs, conversation context, and explicit choices. Supports automatic extraction from staged changes, deduplication against prior decisions, and persistent ADR-format logging with spec traceability. Use after a significant design or architecture choice, before committing a diff that embeds implicit decisions, or when the same question keeps resurfacing.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

ash1794/vibe-engineering1642026년 10월 8일 업데이트

ash1794의 스킬 모두 보기

이 스킬의 문제 신고