- Home
- Skills
- DevOps & Cloud
- Dev Setup Bootstrap: One-Command Setup and Devcontainers
Works with the AI Agents you already use
Dev Setup Bootstrap: One-Command Setup and Devcontainers
Generates a re-runnable setup.sh, a Makefile or justfile, a devcontainer.json and a "could not decide" report from the lockfiles, version files and manifests your repository already has.
$5
Dev Setup Bootstrap: One-Command Setup and Devcontainers
Example session with this skill installed
Make a setup script for this repo so a new hire can run one command.
- Read your context and instructions
- Compiled the dev setup bootstrap
I ran the stack detector on the bundled demo repository (a Node.js project managed with pnpm, plus Python dependencies in requirements.txt) and generated the files from what it found.
Stack detection
| stack | tool | version | evidence |
|---|---|---|---|
| node | pnpm | 20.11.1 | package.json, package.json "packageManager": pnpm@9.12.0, pnpm-lock.yaml, .nvmrc |
| python | pip | not pinned | requirements.txt |
Other files: env_example, compose, pre_commit
Could not decide
- Python version is not pinned (no usable .python-version or .tool-versions entry)
setup.sh
#!/usr/bin/env bash
# One-command project setup. Generated from the files in this repository; review before running.
# Safe to run more than once. It does not install language runtimes itself: it tells you what is
# missing. A package manager can still fetch one when the project asks for it; the report lists those cases.
set -euo pipefail
here="$(dirname "$0")" && [ -n "$here" ] && cd "$here" || exit 1
missing=0
need() { if ! command -v "$1" >/dev/null 2>&1; then echo "missing: $1 ($2)" >&2; missing=1; fi; }
need node 'install Node.js 20.11.1 with your version manager (nvm, fnm, asdf or mise) or from nodejs.org'
need pnpm 'install pnpm: corepack enable works on Node.js before 25, otherwise use your package manager'
need python3 'install Python with your version manager (pyenv, asdf, mise or uv) or from python.org'
if [ "$missing" -ne 0 ]; then echo "Install the tools above, then run this script again." >&2; exit 1; fi
if [ "$(node -p 'process.versions.node.split(".")[0]')" != 20 ]; then echo "warning: this project expects Node 20" >&2; fi
echo '==> node dependencies'
pnpm install --frozen-lockfile
echo '==> python dependencies'
[ -d .venv ] || python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
if [ ! -e .env ] && [ ! -L .env ] && [ ! -L .env.example ]; then cp -- .env.example .env; echo 'created .env from .env.example: fill in the values'; fi
if [ -e .git ] && command -v pre-commit >/dev/null 2>&1; then pre-commit install; else echo 'tip: run pre-commit install inside a git checkout to enable the hooks' >&2; fi
echo 'Setup complete.'
Makefile
# Generated by dev-setup-bootstrap. Recipes are indented with a tab.
.PHONY: setup test lint dev build
setup:
bash setup.sh
test:
pnpm test
.venv/bin/python -m pytest
lint:
pnpm run lint
dev:
pnpm run dev
build:
pnpm run build
.devcontainer/devcontainer.json
{
"name": "dev",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu24.04",
"features": {
"ghcr.io/devcontainers/features/node:2": {
"version": "20.11.1"
},
"ghcr.io/devcontainers/features/python:1": {}
},
"postCreateCommand": "bash setup.sh"
}
Why each line is there
pnpm because of pnpm-lock.yaml and the packageManager field (pnpm@9.12.0), installed with --frozen-lockfile.
- Node.js 20.11.1 from
.nvmrc, used both in the version check and in the devcontainer feature.
Python is left unpinned: the repository has no .python-version or .tool-versions entry, so the report lists it under "Could not decide" instead of guessing.
compose.yml was found, but services are not started by setup.sh; the report tells you to start them with your compose command.
Want me to run the same on your repository? Existing files such as a Makefile are never overwritten; you get a merge proposal instead.
Connects securely to your tools. The creator never sees your data.
About this skill
Use when a new developer should get a project running with one command, or when setup lives in tribal knowledge. Two standard-library Python scripts read the file list and a fixed set of small manifests (never following symlinks or leaving the repository) and generate setup files from that evidence only: a setup.sh with set -euo pipefail that checks every tool first, installs dependencies held to your lockfile where there is one (npm ci, uv sync --locked, cargo fetch --locked and the like), never runs an installer, switches off the automatic runtime downloads of uv, Go, rustup and Pipenv, and reports a pnpm devEngines runtime (pnpm can still download that Node.js runtime during install); setup and test targets; a devcontainer built from the Ubuntu 24.04 base image plus official Dev Container Features with the versions your version files pin (ranges are reported, never guessed); and a report of what it could not decide, such as missing lockfiles or conflicting tools. Developed against 11 stack fixtures with stand-in tools: Node.js (npm, pnpm, Yarn Berry), Python (pip, Poetry, uv), Go, Ruby, PHP, Rust and Java with Maven. Do not use when you need to debug a broken environment, write a production Dockerfile or build a CI pipeline.
Example prompts
- "Make a setup script for this repo so a new hire can run one command."
- "Write a devcontainer for this project with the Node and Python versions it already pins."
- "Add a Makefile with setup and test targets, but don't overwrite the one we have."
Requires
Python 3.8+ (standard library only) to run the scripts; bash for the generated setup.sh; git is optional (for git ls-files). On claude.ai the demo runs with code execution enabled; generating files for your own repository needs a local agent with file access.
Compatibility
Written for SKILL.md-compatible agents, for example Claude Code, Claude.ai skills, Codex CLI, Cursor or Gemini CLI. Each documents the SKILL.md format; not every agent was tested. The seller suggests Claude Sonnet 4.5 or later.
Limits
Reads only top-level manifests (no monorepo workspaces), does not start services or detect system packages, and its own commands do not install language runtimes. Where a package manager would fetch one, that is switched off, except pnpm: when package.json declares devEngines.runtime, pnpm install can download a Node.js runtime; this is reported, not stopped.
Independence
Not affiliated with or endorsed by Anthropic, OpenAI, Cursor, Google, Microsoft or any tool vendor named here. Node.js is a trademark of the OpenJS Foundation; other product names are used only to describe compatibility.
Reads only top-level manifests (no monorepo workspaces), does not start services or detect system packages, and its own commands do not install language runtimes. Where a package manager would fetch one, that is switched off, except pnpm: when package.json declares devEngines.runtime, pnpm install can download a Node.js runtime; this is reported, not stopped.
How to use
- 1
Connect your agent to the Agensi MCP
Copy the prompt and paste it into Claude, ChatGPT, Cursor or any agent that supports MCP. It sets up the connection for you. Manual setup
- 2
Sign in to Agensi
Your agent shows a sign-in link. Sign in and click Allow.
- 3
Ask for what you need
Your agent loads this skill and uses it on your task. It always asks before any payment.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill goes through the trust checks below.
Security scanned
Checked by our 8-point scan before listing
Fresh listing
Recently published to Agensi
Money-back guarantee
Doesn't do what its page promises? You get your money back.
Trust & safety
Security scan
Security scan passed 9 days ago
Requires