detect-stack — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited detect-stack (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.
Analyse the project root and produce a .claude/autoimprove/config.md that configures the measurement suite for this specific codebase.
Run these checks to identify the stack:
# Language detection
ls *.go go.mod 2>/dev/null && echo "LANG=go"
ls *.rs Cargo.toml 2>/dev/null && echo "LANG=rust"
ls *.py pyproject.toml setup.py requirements.txt 2>/dev/null && echo "LANG=python"
ls package.json 2>/dev/null && echo "LANG=js"
ls *.java pom.xml build.gradle 2>/dev/null && echo "LANG=java"
ls *.rb Gemfile 2>/dev/null && echo "LANG=ruby"
ls *.php composer.json 2>/dev/null && echo "LANG=php"
ls *.cs *.csproj 2>/dev/null && echo "LANG=csharp"
ls *.swift Package.swift 2>/dev/null && echo "LANG=swift"
ls *.kt *.kts 2>/dev/null && echo "LANG=kotlin"
# Framework detection (JS)
cat package.json 2>/dev/null | grep -E '"next"|"nuxt"|"remix"|"astro"|"svelte"|"react"|"vue"'
# Package manager
ls yarn.lock 2>/dev/null && echo "PKG=yarn"
ls pnpm-lock.yaml 2>/dev/null && echo "PKG=pnpm"
ls bun.lockb 2>/dev/null && echo "PKG=bun"
ls package-lock.json 2>/dev/null && echo "PKG=npm"
ls Pipfile 2>/dev/null && echo "PKG=pipenv"
ls poetry.lock 2>/dev/null && echo "PKG=poetry"
ls Cargo.lock 2>/dev/null && echo "PKG=cargo"
# Test runner
cat package.json 2>/dev/null | grep -E '"jest"|"vitest"|"mocha"|"playwright"|"cypress"'
ls pytest.ini pyproject.toml 2>/dev/null | xargs grep -l "pytest" 2>/dev/null
ls *_test.go 2>/dev/null && echo "TEST=go test"
# Linter
ls .eslintrc* eslint.config* 2>/dev/null && echo "LINT=eslint"
ls .golangci.yml .golangci.yaml 2>/dev/null && echo "LINT=golangci-lint"
ls .rubocop.yml 2>/dev/null && echo "LINT=rubocop"
cat pyproject.toml 2>/dev/null | grep -E "ruff|flake8|pylint"
ls Makefile 2>/dev/null && grep -E "lint|check|fmt" Makefile
# Type checker
cat package.json 2>/dev/null | grep '"typescript"'
ls mypy.ini .mypy.ini 2>/dev/null && echo "TYPES=mypy"
cat pyproject.toml 2>/dev/null | grep -E "mypy|pyright"Based on what you find, map to these commands:
Go
go build ./...go test ./...golangci-lint run or go vet ./...gofmt -l . | wc -l (unformatted files)Rust
cargo checkcargo testcargo clippy -- -D warningscargo fmt --checkPython
mypy . or pyright (if configured)pytest or python -m pytestruff check . or flake8 . or pylint src/ruff format --check . or black --check .JavaScript / TypeScript (Node)
npx tsc --noEmit (if tsconfig exists)test, vitest, jest)npx eslint . or npm run lintnpm run build / yarn build / pnpm buildNext.js / Nuxt / Remix / Astro
Ruby
srb tc (if Sorbet configured)bundle exec rspec or bundle exec rake testbundle exec rubocopJava / Kotlin
mvn compile or ./gradlew compileKotlinmvn test or ./gradlew test./gradlew ktlintCheck or CheckstyleC# / .NET
dotnet builddotnet testdotnet format --verify-no-changesPHP
./vendor/bin/phpstan analyse./vendor/bin/phpunit./vendor/bin/phpcsSwift
swift buildswift testswiftlintMakefile / custom
make test, make lint, make check, make build targetsUse this scoring framework regardless of language:
| Metric | Weight | Notes |
|---|---|---|
| Type errors / compile errors | 40 pts | Must compile cleanly. Errors × penalty. |
| Build / compile success | 20 pts | Binary/artifact builds without error |
| Test suite pass rate | 30 pts | (passing / total) × 30 |
| Lint / style errors | 10 pts | Errors × penalty, capped at 0 |
If a metric doesn't apply (e.g. no tests yet, no linter configured), redistribute its weight equally to the others and note it.
Create the directory and config file:
mkdir -p .claude/autoimprove# .claude/autoimprove/config.md
<!-- Auto-generated by /autoimprove:setup — edit to customise -->
## Stack
- Language: [detected]
- Framework: [detected or none]
- Package manager: [detected]
## Measurement Commands
### Type Check (40 pts)
\`\`\`bash
[command]
\`\`\`
Error pattern: [regex or grep to count errors]
Penalty: [X] pts per error
### Build (20 pts)
\`\`\`bash
[command]
\`\`\`
Success pattern: [what exit code / output means success]
### Tests (30 pts)
\`\`\`bash
[command]
\`\`\`
Parse pattern: [how to extract pass/fail counts]
### Lint (10 pts)
\`\`\`bash
[command]
\`\`\`
Error pattern: [regex or grep to count errors]
Penalty: [X] pts per error
## Improvement Areas
[list 5-8 language-specific improvement areas based on the detected stack]
## Files to Never Modify
[list lock files, generated files, migration files, .env, etc.]Print a summary:
✅ Stack detected: [language] / [framework]
📦 Package manager: [pm]
🧪 Test runner: [runner]
🔍 Linter: [linter]
📐 Type checker: [checker]
Measurement suite written to .claude/autoimprove/config.md.
Run /autoimprove:measure to check your baseline score.If any tool is missing or not configured, suggest the most popular option for that language and offer to help set it up.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.