skills/deployment-analysis/SKILL.md
Analyze a repository to determine ecosystem, deployment targets, ports, build commands, and monorepo structure. Use when starting a new deployment, onboarding a repository, or when the user asks what stack or framework a project uses.
npx skillsauth add nixopus/agent deployment-analysisInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When analyzing a repository for deployment, follow this sequence using workspace tools.
Run list_directory on the repo root. Look for:
| File | Meaning |
|------|---------|
| package.json | Node.js (check engines, scripts.start, scripts.build) |
| go.mod | Go |
| requirements.txt / pyproject.toml / Pipfile | Python |
| Cargo.toml | Rust |
| pom.xml / build.gradle | Java |
| Gemfile | Ruby |
| mix.exs | Elixir |
| Dockerfile | Already containerized |
| docker-compose.yml / docker-compose.yaml | Multi-service |
| .env.example / .env.sample | Env vars documented |
Read the manifest file to identify the framework:
Node.js — read package.json:
dependencies.next → Next.js. Default port 3000. Build: npm run build. Start: npm start.dependencies.nuxt → Nuxt. Default port 3000.dependencies.react-scripts → Create React App. Static build. Port 80 (nginx).dependencies.vite → Vite app. Build outputs to dist/. Static or SSR depending on config.dependencies.express or dependencies.fastify or dependencies.hono → API server. Check scripts.start for port.dependencies.@remix-run/node → Remix. Port 3000.dependencies.astro → Astro. Check if SSR or static.Go — read go.mod: Check module path. Look for main.go or cmd/ directory. Default port 8080.
Python — read requirements.txt or pyproject.toml:
django → Django. Default port 8000. Start: gunicorn or python manage.py runserver.flask → Flask. Default port 5000. Start: gunicorn app:app.fastapi → FastAPI. Default port 8000. Start: uvicorn main:app.Rust — read Cargo.toml: Check [dependencies] for actix-web, axum, rocket. Default port 8080.
Priority order for port detection:
Dockerfile — look for EXPOSE directivedocker-compose.yml — look for ports: mapping.env.example — look for PORT=--port, -p, or PORT referencesgrep("listen|EXPOSE|PORT", repoRoot) for hardcoded portsSigns of a monorepo:
apps/ or packages/ or services/ directories at rootturbo.json or nx.json or lerna.json or pnpm-workspace.yamlpackage.json files in subdirectoriesDockerfile files in subdirectoriesFor monorepos:
apps/ or services/ is a separate deployment targetdocker-compose.yml is likely neededpackage.json| Ecosystem | Install | Build | Start |
|-----------|---------|-------|-------|
| Node (npm) | npm install | npm run build | npm start |
| Node (yarn) | yarn install | yarn build | yarn start |
| Node (pnpm) | pnpm install | pnpm build | pnpm start |
| Go | go mod download | go build -o app ./... | ./app |
| Python (pip) | pip install -r requirements.txt | n/a | gunicorn/uvicorn |
| Python (poetry) | poetry install | n/a | poetry run |
| Rust | n/a | cargo build --release | ./target/release/<name> |
| Java (Maven) | mvn install | mvn package | java -jar target/*.jar |
| Java (Gradle) | gradle build | gradle build | java -jar build/libs/*.jar |
Detect package manager: check for yarn.lock (yarn), pnpm-lock.yaml (pnpm), package-lock.json (npm), bun.lockb (bun).
After analysis, you should know:
env-detection — After analysis, detect required environment variablesdockerfile-generation — Generate a Dockerfile based on the detected ecosystempre-deploy-checklist — Validate deployment readiness before triggering a buildnode-deploy, python-deploy, go-deploy, etc.) — Detailed build and deploy instructions for the detected ecosystemtools
Compressed catalog of all Nixopus API operations for the nixopus_api() tool
development
Deploy static file sites — Caddy/nginx serving, Staticfile config, and Dockerfile patterns. Use when deploying a static HTML site with no server-side runtime, or when index.html or a Staticfile is detected at the project root.
devops
Deploy shell script applications — interpreter detection, setup scripts, and Dockerfile patterns. Use when deploying a shell script project, or when start.sh is detected.
development
Self-healing loop for failed deployments — diagnose, fix, redeploy up to 3 attempts, then escalate or rollback. Load when a deployment fails or build errors occur.