deploy-pester-test-development — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited deploy-pester-test-development (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
./tests/ and pass locally./src/Before deploying to CI/CD, verify everything works:
# Install Pester if needed
Install-Module Pester -MinimumVersion 5.5.0 -Force -Scope CurrentUser
# Run with coverage
$config = New-PesterConfiguration
$config.Run.Path = './tests'
$config.Run.Exit = $true
$config.Run.PassThru = $true
$config.CodeCoverage.Enabled = $true
$config.CodeCoverage.Path = './src'
$config.CodeCoverage.CoveragePercentTarget = 90
$config.Output.Verbosity = 'Detailed'
$result = Invoke-Pester -Configuration $config
# Verify
Write-Host "Pass: $($result.PassedCount) | Fail: $($result.FailedCount) | Coverage: check reports/"If tests fail locally, fix them BEFORE deploying to CI/CD.
Read the template: .github/workflows/pester-ci-github.yml
Key features of the template:
./reports/coverage.xml./reports/test-results.xmlCustomer deploys by copying to their repo's `.github/workflows/`
Read the template: .github/workflows/azure-pipelines.yml.template
Key features of the template:
Customer deploys by copying to repo root as `azure-pipelines.yml`
Coverage gates prevent merging code that reduces test quality:
| Gate | Threshold | Enforcement |
|---|---|---|
| Line coverage | ≥ 90% | Pipeline fails if below |
| Branch coverage | ≥ 80% | Warning logged |
| Function coverage | 100% | Pipeline fails if any function untested |
| Test pass rate | 100% | Pipeline fails on any test failure |
# Parse JaCoCo coverage XML
[xml]$coverage = Get-Content './reports/coverage.xml'
$counters = $coverage.report.counter
$line = $counters | Where-Object { $_.type -eq 'LINE' }
$lineRate = [math]::Round(
([int]$line.covered / ([int]$line.covered + [int]$line.missed)) * 100, 1
)
if ($lineRate -lt 90) {
Write-Error "Coverage $lineRate% is below 90% gate"
exit 1
}
Write-Host "Coverage gate PASSED: $lineRate%"Ensure reports directory structure:
project/
├── src/ # Source code
├── tests/ # Pester tests
└── reports/ # Generated by CI
├── coverage.xml # JaCoCo format
└── test-results.xml # NUnit formatAdd to .gitignore:
reports/After deploying:
| Issue | Cause | Fix |
|---|---|---|
| "Pester not found" | Module not installed in CI | Add Install-Module Pester -Force step |
| Coverage = 0% | Wrong CodeCoverage.Path | Verify $config.CodeCoverage.Path matches source location |
| NUnit XML empty | Tests not in Run.Path | Verify $config.Run.Path matches test directory |
| Pipeline passes but 0 tests | Exit code not checked | Set $config.Run.Exit = $true |
| "Cannot bind parameter" | Wrong Pester version | Ensure Pester 5.5.0+ (not 4.x) |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.