AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Detect Stack

skill-benmarte-autoimprove-detect-stack · by benmarte

Automatically detect the language, framework, package manager, test runner, linter, and build tool used in the current project. Produces an .claude/autoimprove/config.md file that the improve loop uses as its measurement suite. Run this once before starting the improve loop in a new project.

No reviews yet
0 installs
19 views
0.0% view→install

Install

$ agentstack add skill-benmarte-autoimprove-detect-stack

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-benmarte-autoimprove-detect-stack)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
4mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Detect Stack? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Detect Stack Skill

Analyse the project root and produce a .claude/autoimprove/config.md that configures the measurement suite for this specific codebase.

Step 1 — Fingerprint the project

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"

Step 2 — Build the measurement suite

Based on what you find, map to these commands:

Language → Commands Reference

Go

  • Type check: go build ./...
  • Test: go test ./...
  • Lint: golangci-lint run or go vet ./...
  • Format check: gofmt -l . | wc -l (unformatted files)

Rust

  • Type check: cargo check
  • Test: cargo test
  • Lint: cargo clippy -- -D warnings
  • Format check: cargo fmt --check

Python

  • Type check: mypy . or pyright (if configured)
  • Test: pytest or python -m pytest
  • Lint: ruff check . or flake8 . or pylint src/
  • Format check: ruff format --check . or black --check .

JavaScript / TypeScript (Node)

  • Type check: npx tsc --noEmit (if tsconfig exists)
  • Test: detect from package.json scripts (test, vitest, jest)
  • Lint: npx eslint . or npm run lint
  • Build: npm run build / yarn build / pnpm build

Next.js / Nuxt / Remix / Astro

  • Same as JS/TS + framework build command
  • Bundle size: check build output for size warnings

Ruby

  • Type check: srb tc (if Sorbet configured)
  • Test: bundle exec rspec or bundle exec rake test
  • Lint: bundle exec rubocop

Java / Kotlin

  • Type check / build: mvn compile or ./gradlew compileKotlin
  • Test: mvn test or ./gradlew test
  • Lint: ./gradlew ktlintCheck or Checkstyle

C# / .NET

  • Type check / build: dotnet build
  • Test: dotnet test
  • Lint: dotnet format --verify-no-changes

PHP

  • Type check: ./vendor/bin/phpstan analyse
  • Test: ./vendor/bin/phpunit
  • Lint: ./vendor/bin/phpcs

Swift

  • Build: swift build
  • Test: swift test
  • Lint: swiftlint

Makefile / custom

  • Look for make test, make lint, make check, make build targets

Step 3 — Assign weights

Use 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.

Step 4 — Write .claude/autoimprove/config.md

Create the directory and config file:

mkdir -p .claude/autoimprove
# .claude/autoimprove/config.md

## 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.]

Step 5 — Confirm with user

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.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.