Skipper is available as an npm package. You can run it directly with npx:
npx @skiplabs/skipper [command]Or install it globally:
npm install -g @skiplabs/skipper
skipper [command]| Option | Description |
|---|---|
-v, --version |
Print the current version |
-h, --help |
Show help |
Authenticate with Skipper.
npx @skiplabs/skipper loginOpens your browser to obtain an API token. Paste the token into the terminal when prompted. The token is saved to ~/.skipper/config.yml.
If the browser doesn't open automatically, the URL is printed so you can open it manually.
Check whether you are currently logged in.
npx @skiplabs/skipper login statusOutput:
✓ Logged in (token ••••G8tw from ~/.skipper/config.yml)
Clear your saved API token.
npx @skiplabs/skipper logoutOutput:
✓ Logged out (cleared ~/.skipper/config.yml).
Generate a service from a prompt.md file.
npx @skiplabs/skipper create <path> [options]Aliases: iterate
| Argument | Description |
|---|---|
path |
Directory containing a prompt.md file (must exist) |
| Option | Description |
|---|---|
--update |
Force re-pull of the Docker image before running |
- The directory at
<path>must exist <path>/prompt.mdmust exist and be a regular file- You must be logged in
- Docker must be running
- Validates the directory and
prompt.mdfile - Pulls the Docker image if needed (or if
--updateis passed) - Runs the code generator inside a Docker container
- Writes generated files into
<path> - Records the project in
~/.skipper/config.yml
# Basic usage
mkdir my-service
echo "Build me a todo service" > my-service/prompt.md
npx @skiplabs/skipper create my-service
# Force image update
npx @skiplabs/skipper create my-service --update
# Iterate on an existing service (same command)
npx @skiplabs/skipper iterate my-serviceStart a generated service in a Docker container.
npx @skiplabs/skipper run <path> [options]| Argument | Description |
|---|---|
path |
Project directory (required) |
| Option | Description | Default |
|---|---|---|
-p, --port <n> |
Host port to bind | 3000 |
--update |
Force re-pull of the Docker image before running |
- If the default port (3000) is in use and no explicit
--portwas given, Skipper automatically scans ports 3001-3009 and uses the first free one. - If you specify
--portexplicitly and that port is in use, the command fails with an error.
- Validates the directory exists and you are logged in
- Checks that no container is already running for this project
- Picks a free port
- Runs the service inside a Docker container (installs dependencies, transpiles TypeScript, starts the server)
- Displays the service URL
- Runs in the foreground -- press
CTRL+Cto stop
# Default port 3000
npx @skiplabs/skipper run my-service
# Custom port
npx @skiplabs/skipper run my-service --port 4000
# Re-pull image first
npx @skiplabs/skipper run my-service --updateStop a running service.
npx @skiplabs/skipper stop <path>| Argument | Description |
|---|---|
path |
Project directory path or tracked project name |
- Resolves the path (can be a directory path or a project name from your tracked projects)
- Stops and removes the Docker container
- If the container isn't running, prints a warning and exits cleanly
# By path
npx @skiplabs/skipper stop my-service
# By relative path
npx @skiplabs/skipper stop ./scratch/demoView logs from a running service's container.
npx @skiplabs/skipper logs <path> [options]| Argument | Description |
|---|---|
path |
Project directory (required) |
| Option | Description | Default |
|---|---|---|
-f, --follow |
Stream log output in real time | |
-n, --tail <n> |
Number of trailing lines to show | all |
# Show all logs
npx @skiplabs/skipper logs my-service
# Follow live output
npx @skiplabs/skipper logs my-service -f
# Last 100 lines, then follow
npx @skiplabs/skipper logs my-service -n 100 -fList all Skipper projects created on this machine.
npx @skiplabs/skipper projects [options]
npx @skiplabs/skipper ls [options]| Option | Description |
|---|---|
--json |
Output raw JSON project data |
Displays a table with columns:
| Column | Description |
|---|---|
| NAME | Project name (directory basename) |
| STATUS | running or stopped |
| CREATED | When the project was first generated |
| LAST RUN | When the project was last started |
| PATH | Directory path |
NAME STATUS CREATED LAST RUN PATH
my-service running 2 days ago 5 mins ago ~/projects/my-service
demo stopped 1 month ago 3 days ago ~/scratch/demo
Show your remaining Skipper credit balance.
npx @skiplabs/skipper balanceTotal $94.67
Regular $71.22
Promotional $23.45
Promotions:
LAUNCH $20.00
REFERRAL $3.45
Shows a breakdown of regular and promotional credits, including individual promotions if any are active.
Show a digest of the current Skipper state.
npx @skiplabs/skipper status [options]| Option | Description |
|---|---|
--json |
Output machine-readable JSON |
CLI version 0.4.0
Environment prod
Docker running
Image skiplabs/skipper:latest (cached)
Logged in yes ••••G8tw
Balance $94.67
Config ~/.skipper/config.yml
Projects (2 total, 1 running)
NAME STATUS LAST RUN PORT PATH
my-service running 5 mins ago 3000 ~/projects/my-service
demo stopped 3 days ago 3001 ~/scratch/demo
Shows: CLI version, Docker status, whether the image is cached locally, login state, balance, and a summary of all projects.