一键导入
property-stress
Stress-test property tests across many rounds to find rare bugs. Each round uses fresh random seeds.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Stress-test property tests across many rounds to find rare bugs. Each round uses fresh random seeds.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Suggest and apply a semver version bump based on commits since the last tag
Push current branch to remote origin
Scaffold a new Sharpy.Stdlib module (spy-sourced or handwritten C#) with all required files, conventions, docs, and tests
Implement a plan with a coordinated agent team
Run compiler or cross-language benchmarks and compare results
Regenerate C# snapshot tests and spy stdlib after intentional codegen changes
| name | property-stress |
| description | Stress-test property tests across many rounds to find rare bugs. Each round uses fresh random seeds. |
| argument-hint | [rounds=10] [filter] |
Run property tests repeatedly with fresh random seeds each round to surface rare failures that normal test runs miss. CsCheck generates different random inputs each invocation, so N rounds = N × (100–200) unique inputs per test.
Usage:
/property-stress — 10 rounds of all property tests (~10 min)/property-stress 50 — 50 rounds (~50 min)/property-stress 10 Parser — 10 rounds, only parser property tests/property-stress 20 Metamorphic — 20 rounds, only metamorphic testsOutput: A bug report with each unique failure, its CsCheck reproduction seed, the failing test, and which round it occurred in.
Log location: .claude/tmp/property-stress/ (one log per round + summary)
Parse $ARGUMENTS to extract rounds and optional filter:
"Category=RandomProperty&FullyQualifiedName~{filter}", otherwise "Category=RandomProperty"mkdir -p .claude/tmp/property-stress
rm -f .claude/tmp/property-stress/*.log
Run .claude/scripts/dotnet-serialized build sharpy.sln --nologo -v q 2>&1 | tail -5. If build fails, print "BUILD FAILED — cannot stress test" and stop.
For each round 1..N:
=== Round {i}/{N} ===.claude/scripts/dotnet-serialized test src/Sharpy.Compiler.Tests/Sharpy.Compiler.Tests.csproj --filter "{filter}" --no-build --logger "console;verbosity=normal" > .claude/tmp/property-stress/round-{i}.log 2>&1pkill -f testhost 2>/dev/null || true[FAIL] to get test names, and lines containing Set seed: to get CsCheck reproduction seeds.Round {i}: FAIL — {test_name} (seed: {seed})Round {i}: PASSAfter all rounds complete, produce a summary by scanning all round logs:
# Count passes/failures
passes=$(grep -c "^Round.*PASS$" output)
failures=$(grep -c "^Round.*FAIL" output)
# Extract unique failures (deduplicate by test name)
grep -h "FAIL" .claude/tmp/property-stress/*.log | sort -u
Print the final report in this format:
=== Property Stress Test Report ===
Rounds: N
Passed: X
Failed: Y
Failure rate: Z%
Unique failures:
1. TestClass.TestMethod
Seed: "xxxxx" (reproduce: CsCheck_Seed=xxxxx dotnet test --filter "DisplayName~TestMethod")
Error: <first line of error message>
Rounds: 3, 7, 12
2. ...
To reproduce any failure:
CsCheck_Seed=<seed> dotnet test --filter "DisplayName~<test>" --no-build
Full logs: .claude/tmp/property-stress/
--no-build after the initial build to avoid rebuilding each roundSet seed: "([^"]+)" or CsCheck_Seed=(\S+)Failed\s+(\S+)\s+\[ in the console outputError Message: and Stack Trace: in the console output