runtime-tooling-validation
Skill4 starsChanged 10 months agoMITView on GitHub
Use when setting up a development environment, cloning a repository, or before running builds and tests. Validates runtime dependencies, SDK versions, environment variables, and service connectivity before attempting operations that would fail without them.
- Reads credentials
- Installs packages
In this repository67 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- agents-onboardingSkill
- agent-workitem-automationSkill
- architecture-testingSkill
- aspire-integration-testingSkill
- automated-standards-enforcementSkill
- best-practice-introductionSkill
- branching-strategy-and-conventionsSkill
- broken-windowSkill
- change-risk-rollbackSkill
- ci-cd-conformanceSkill
- component-boundary-ownershipSkill
- contract-consistency-validationSkill
- csharp-best-practicesSkill
- deployment-provenanceSkill
- documentation-as-codeSkill
- documentation-scaffoldSkill
- dotnet-bespoke-code-minimisationSkill
- dotnet-best-practicesSkill
- dotnet-domain-primitivesSkill
- dotnet-efcore-practicesSkill
- dotnet-healthchecksSkill
- dotnet-logging-serilogSkill
- dotnet-mapping-standardSkill
- dotnet-open-source-first-governanceSkill
- dotnet-source-generation-firstSkill
- dotnet-specification-patternSkill
- dotnet-testing-assertionsSkill
- environment-traceabilitySkill
- finishing-a-development-branch-iddSkill
- greenfield-baselineSkill
- impacted-scope-enforcementSkill
- incremental-change-impactSkill
- incremental-deploymentSkill
- innersource-governance-bootstrapSkill
- issue-driven-deliverySkill
- library-extraction-stabilisationSkill
- local-dev-experienceSkill
- markdown-authorSkill
- modern-csharp-coding-standardsSkill
- monorepo-orchestration-setupSkill
- observability-logging-baselineSkill
- pair-programmingSkill
- persona-switchingSkill
- process-skill-routerSkill
- quality-gate-enforcementSkill
- release-tagging-planSkill
- repo-best-practices-bootstrapSkill
- repository-foundation-bootstrapSkill
- requirements-gatheringSkill
- safe-brownfield-refactorSkill
- scoped-colocationSkill
- security-processesSkill
- selective-build-testSkill
- semantic-version-impactSkill
- session-awareSkill
- skills-first-workflowSkill
- static-analysis-securitySkill
- structured-review-workflowSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 8 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 20
Before running builds, tests, or applications
- Distinctive: line 23
After CI passes but local fails
- Distinctive: line 29
Check runtime/SDK version against project specification
- Distinctive: line 30
Verify required tools and extensions installed
- Distinctive: line 32
Test connectivity to required services
- Distinctive: line 84
Before integration tests or full application startup:
- Distinctive: line 99
All mean: Run validation checks first.
- Distinctive: line 103
When issues found, provide:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Runtime Tooling Validation
Overview
P1 Quality & Correctness - Validate prerequisites before operations that depend on them.
Principle: Validate first, run second. Never discover missing dependencies through runtime failures.
When to Use
- Cloning and setting up a new repository
- Before running builds, tests, or applications
- Debugging "works on my machine" issues
- Onboarding new team members
- After CI passes but local fails
- Opt-out: Validated environment confirmed within current session
Core Workflow
- Identify project type and requirements sources
- Check runtime/SDK version against project specification
- Verify required tools and extensions installed
- Validate environment variables against template
- Test connectivity to required services
- Report all issues with remediation commands
- Proceed with build/run only after validation passes
Quick Reference
| Check Type | .NET | Node.js | Python |
| Version requirement | global.json | .nvmrc, engines | .python-version |
| Version command | dotnet --version | node --version | python --version |
| Package validation | dotnet restore | npm ls | pip check |
| Tool requirements | dotnet tool list | npx --version | pip list |
| Env var template | appsettings.Development.json | .env.example | .env.example |
Validation Commands
# .NET SDK validation
dotnet --list-sdks
cat global.json # Compare required version
# Node.js validation
node --version
cat .nvmrc # Compare required version
npm ls # Check peer dependencies
# Python validation
python --version
cat .python-version # Compare required version
pip check # Verify installed packages
# Docker validation
docker version
docker compose version
docker ps # Daemon running checkEnvironment Variable Validation
- Find template file (.env.example, appsettings template)
- Compare against current environment
- List missing variables with descriptions
- Provide secure value guidance (secrets vs defaults)
# Compare .env.example with current .env
comm -23 <(grep -oP '^[A-Z_]+' .env.example | sort) \
<(grep -oP '^[A-Z_]+' .env 2>/dev/null | sort)Service Connectivity Checks
Before integration tests or full application startup:
- Database: Test connection with timeout
- Message queue: Verify broker reachable
- External APIs: Validate auth configured
- Cache: Confirm service available
Red Flags - STOP
- "Let's try it and see"
- "The error will tell us"
- "Just run npm install"
- "Works on CI"
- "Should work"
All mean: Run validation checks first. 30 seconds of validation saves hours of debugging.
Remediation Pattern
When issues found, provide:
- What is missing or wrong
- Why it matters
- Exact command to fix
- Verification command after fix
Issue: Node.js version mismatch
Required: 20.x (from .nvmrc)
Current: 18.17.0
Fix: nvm install 20 && nvm use 20
Verify: node --versionCommand Output Examples
.NET Validation Example
$ dotnet --list-sdks
6.0.401 [/usr/share/dotnet/sdk]
7.0.203 [/usr/share/dotnet/sdk]
8.0.100 [/usr/share/dotnet/sdk]
$ cat global.json
{
"sdk": {
"version": "8.0.100",
"rollForward": "latestMinor"
}
}
$ dotnet --version
8.0.100
✓ SDK version matches requirementNode.js Validation Example
$ cat .nvmrc
20
$ node --version
v20.10.0
✓ Node version matches requirement
$ npm ls --depth=0
my-project@1.0.0
├── express@4.18.2
├── typescript@5.3.2
└── UNMET PEER DEPENDENCY react@17.0.2
✗ Unmet peer dependency found - run: npm install react@18Python Validation Example
$ cat .python-version
3.11
$ python --version
Python 3.11.5
✓ Python version matches requirement
$ pip check
No broken requirements found.
✓ All dependencies satisfiedDocker Validation Example
$ docker version --format '{{.Server.Version}}'
24.0.7
✓ Docker daemon running
$ docker compose version
Docker Compose version v2.23.0
✓ Compose available
$ docker ps
CONTAINER ID IMAGE ...
✓ Can list containers (permissions OK)Must-Pass Checklist by Stack
.NET Checklist
dotnet --versionmatches global.json requirementdotnet restorecompletes without errorsdotnet tool restoreinstalls required tools (if .config/dotnet-tools.json exists)- Database connection string configured (if applicable)
- Environment variables from appsettings template set
#!/bin/bash
# dotnet-validate.sh
ERRORS=0
# Check SDK version
REQUIRED=$(jq -r '.sdk.version' global.json 2>/dev/null)
CURRENT=$(dotnet --version)
if [[ "$CURRENT" != "$REQUIRED"* ]]; then
echo "✗ SDK mismatch: need $REQUIRED, have $CURRENT"
((ERRORS++))
else
echo "✓ SDK version: $CURRENT"
fi
# Check restore
if dotnet restore --verbosity quiet; then
echo "✓ Package restore successful"
else
echo "✗ Package restore failed"
((ERRORS++))
fi
# Check tools
if [ -f ".config/dotnet-tools.json" ]; then
if dotnet tool restore; then
echo "✓ Tool restore successful"
else
echo "✗ Tool restore failed"
((ERRORS++))
fi
fi
exit $ERRORSNode.js Checklist
node --versionmatches .nvmrc or engines.nodenpm lsshows no unmet peer dependenciesnpm cicompletes without errors- Environment variables from .env.example set
#!/bin/bash
# node-validate.sh
ERRORS=0
# Check Node version
if [ -f ".nvmrc" ]; then
REQUIRED=$(cat .nvmrc)
CURRENT=$(node --version | sed 's/v//')
if [[ "$CURRENT" != "$REQUIRED"* ]]; then
echo "✗ Node mismatch: need $REQUIRED, have $CURRENT"
echo " Fix: nvm use $REQUIRED"
((ERRORS++))
else
echo "✓ Node version: $CURRENT"
fi
fi
# Check dependencies
if npm ls --depth=0 2>&1 | grep -q "UNMET"; then
echo "✗ Unmet peer dependencies found"
npm ls --depth=0 2>&1 | grep "UNMET"
((ERRORS++))
else
echo "✓ All dependencies satisfied"
fi
# Check env vars
if [ -f ".env.example" ] && [ ! -f ".env" ]; then
echo "✗ .env file missing (copy from .env.example)"
((ERRORS++))
fi
exit $ERRORSPython Checklist
python --versionmatches .python-version or pyproject.tomlpip checkshows no broken requirementspip install -r requirements.txtcompletes without errors- Virtual environment activated
#!/bin/bash
# python-validate.sh
ERRORS=0
# Check Python version
if [ -f ".python-version" ]; then
REQUIRED=$(cat .python-version)
CURRENT=$(python --version 2>&1 | awk '{print $2}')
if [[ "$CURRENT" != "$REQUIRED"* ]]; then
echo "✗ Python mismatch: need $REQUIRED, have $CURRENT"
((ERRORS++))
else
echo "✓ Python version: $CURRENT"
fi
fi
# Check virtual environment
if [ -z "$VIRTUAL_ENV" ]; then
echo "⚠ No virtual environment active"
echo " Fix: source venv/bin/activate"
fi
# Check dependencies
if pip check 2>&1 | grep -q "No broken"; then
echo "✓ All dependencies satisfied"
else
echo "✗ Broken dependencies found"
pip check
((ERRORS++))
fi
exit $ERRORSUniversal Checklist
- Git repository initialized and clean
- Required environment variables set
- Database/services reachable (if applicable)
- Docker daemon running (if using containers)
#!/bin/bash
# universal-validate.sh
ERRORS=0
# Git check
if git rev-parse --git-dir > /dev/null 2>&1; then
echo "✓ Git repository"
else
echo "✗ Not a git repository"
((ERRORS++))
fi
# Docker check (if docker-compose.yml exists)
if [ -f "docker-compose.yml" ] || [ -f "docker-compose.yaml" ]; then
if docker ps > /dev/null 2>&1; then
echo "✓ Docker daemon running"
else
echo "✗ Docker daemon not running"
((ERRORS++))
fi
fi
exit $ERRORSDoes it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

