One-command dev loop boot. An agent skill from yonatangross/orchestkit.

MITAuto-check passedProductivity & Automation

Install Dev

skills CLI
$ npx skills add yonatangross/orchestkit --skill dev -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install yonatangross/orchestkit dev --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/skills/dev .claude/skills/dev && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
dev
GitHub stars
288
Token cost
~2.9k tokens
SKILL.md length
1,003 words
Files
13 (incl. scripts, references)
Skills in repo
107
Repo updated
First seen
Licence
MIT

At a glance

One-command dev loop boot. An agent skill from yonatangross/orchestkit.

  • Works in 4 steps: portless → named HTTPS… → emulate → stateful API emulators on the… → dev server → pnpm dev / npm run dev /… → …
  • Starting a feature branch
  • SKILL.md covers When to invoke, Modes (M127), Boot sequence and State file shape, plus 13 more sections
  • Runs Shell scripts from its folder; calls claude, pnpm and npm

What it does

Dev is an agent skill from yonatangross/orchestkit. One-command dev loop boot. Spins up portless (named HTTPS subdomain), emulate (stateful API mocks), the project's dev server, and an agent-browser session, all keyed to the current git branch. Use when starting a feature branch, switching worktrees, or returning to a project after a break. Skips silently with install hints when prerequisite binaries are missing.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 15 other files, including scripts and reference files (for example `references/boot-sequence.md`, `references/state-schema.md` and `rules/_sections.md`). Compatibility notes: Claude Code 2.1.277+

It sits in Productivity & Automation, covering Git worktrees, Browser automation and Git workflow. The repository describes itself as: The Complete AI Development Toolkit for Claude Code. 106 skills, 36 agents, 171 hooks. Install ork for stable (v9.x), or ork-alpha for the v10 line, which ships daily. The licence is MIT.

When your agent uses it

  • Starting a feature branch
  • Switching worktrees
  • Returning to a project after a break

Example prompts

  • “/dev”

Requirements

  • Node.js
  • A Bash shell
  • Compatibility (from SKILL.md): Claude Code 2.1.277+

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. portless → named HTTPS https://.localhost (no port collisions across worktrees)
  2. emulate → stateful API emulators on the same origin via @emulators/adapter-next
  3. dev server → pnpm dev / npm run dev / yarn dev (auto-detected)
  4. agent-browser → pre-warmed session named after the branch

What it can do on your machine

Read from SKILL.md and the folder at commit 1f8d8f3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 3 files in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • claude
    • pnpm
    • npm
    • yarn

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pnpm, npm and yarn, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Claude Code 2.1.277+

    From compatibility in the SKILL.md frontmatter.

Context cost

Dev loads about 2.9k tokens when it runs, and up to ~5.8k if it reads all its reference files. Until then it costs about 92 tokens; SKILL.md has 1,003 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~92
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from yonatangross/orchestkit at commit 1f8d8f3, republished under its MIT licence (© yonatangross). 1,003 words, ~2,873 tokens.

Download SKILL.mdSave it as .claude/skills/dev/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.
name
dev
description
One-command dev loop boot. Spins up portless (named HTTPS subdomain), emulate (stateful API mocks), the project's dev server, and an agent-browser session, all keyed to the current git branch. Use when starting a feature branch, switching worktrees, or returning to a project after a break. Skips silently with install hints when prerequisite binaries are missing.
compatibility
Claude Code 2.1.277+
argument-hint
[start|stop|status] [--share|--funnel|--live H]
user-invocable
true
disable-model-invocation
false
context
inherit
metadata.category
devops
metadata.milestone
M127
metadata.upstream-packages
portless, emulate, agent-browser, tailscale
metadata.version
1.1.0
metadata.author
OrchestKit
metadata.complexity
medium

dev — Lab-Stack Boot

One command boots the four moving parts of a Vercel-Labs-flavored dev loop:

  1. portless → named HTTPS https://<branch>.localhost (no port collisions across worktrees)
  2. emulate → stateful API emulators on the same origin via @emulators/adapter-next
  3. dev server → pnpm dev / npm run dev / yarn dev (auto-detected)
  4. agent-browser → pre-warmed session named after the branch

State lives in .claude/state/dev-stack.json. Teardown via dev stop reads the PIDs and signals SIGTERM in reverse boot order.

Paired with expect: the agent-browser session that dev warms is the same one expect (and the M125 #2 auto-trigger) attach to — no second startup latency on the first UI test.

When to invoke

SituationCommand
Start work on a new branchdev
Resume after a session breakdev (idempotent — skips already-live processes)
Tear down before deleting branchdev stop
Inspect statedev status
Share preview with stakeholderdev --share (tailnet) or dev --funnel (public)
Time-boxed live demodev --live 4 (public funnel, 4-hour expiry)

Resuming a backgrounded dev session (CC 2.1.144+): Sessions started via claude --bg now appear in /resume alongside interactive ones, marked bg — use /resume as the direct recovery path after a crash or session end instead of navigating the agent view.

Background shell sessions (CC 2.1.154+): In claude agents, type ! <command> to run a shell command as a backgrounded session you can attach to and detach from — also available as claude --bg --exec '<command>'. Useful for long dev-loop processes (watchers, builds, servers) you want to monitor without holding a terminal.

Modes (M127)

FlagWrapsReachTailscale CLI
(none)portless <slug> <pkg-mgr> run devhttps://<branch>.localhost onlynot required
--shareportless --tailscale ...tailnet members on https://*.ts.netrequired
--funnelportless --funnel ...public on the internetrequired
--live Nportless --funnel ... + N-hour expirypublic, tracked in live-demos.jsonlrequired

Tailscale is optional — required only behind --share/--funnel/--live. Default dev is unchanged for users who don't share.

When turbo.json or package.json workspaces is detected (#1562), the boot uses bare portless (zero-config) which auto-discovers each workspace's dev script and assigns subdomains via the task graph. State file shows mode: "monorepo"; list subdomains via portless list or dev status.

Boot sequence

portless is a wrapper, not a sidecar — portless <slug> <pkg-mgr> run dev is one fused command that owns the dev server's lifecycle. boot.sh tracks the wrapper PID; stop.sh walks its process tree to clean up children.

0. Detect package manager      pnpm > yarn > bun > npm   (lockfile-based)
1. Resolve subdomain slug      <branch> → lower → / to - → DNS-safe → ≤63 chars
2. portless proxy start         (idempotent — skipped if `portless list` already responds)
3. emulate --seed <yaml>        (sidecar, optional — only if emulate.config.yaml exists)
4. portless <slug> <pkg-mgr> run dev   (FUSED — wrapper owns dev server's lifecycle)
5. portless get <slug>          (poll up to 30s for the route to register)
6. wait-on <baseUrl>            (poll up to 30s for the dev server through the proxy)
7. AGENT_BROWSER_SESSION=<slug> agent-browser open <baseUrl>   (warm + register session)
8. atomic state write           (.claude/state/dev-stack.json via jq + temp + mv)
9. print summary

The full annotated walkthrough: references/boot-sequence.md.

State file shape

json
{
  "bootedAt": "2026-04-27T12:34:56Z",
  "branch": "feat/m125-lane-b",
  "subdomain": "feat-m125-lane-b.localhost",
  "baseUrl": "https://feat-m125-lane-b.localhost",
  "mode": "single",
  "processes": {
    "portlessWrapper": {
      "pid": 86104,
      "command": "portless feat-m125-lane-b pnpm run dev"
    },
    "agentBrowser": { "sessionName": "feat-m125-lane-b" },
    "emulate":      { "pid": 86200, "command": "emulate --seed emulate.config.yaml" }
  },
  "emulators": ["github", "stripe"],
  "share": null,
  "notes": "portless proxy daemon is shared and not tracked here — stop.sh leaves it running."
}

When --share / --funnel / --live is used (M127 #1561 / #1565), share becomes:

json
"share": {
  "mode": "tailscale",
  "tailscaleUrl": "https://app.your-tailnet.ts.net",
  "expiresAt": "2026-05-03T20:00:00Z"
}

mode is "single" (default) or "monorepo" (when turbo.json/workspaces detected). Note portlessWrapper (not portless + devServer) — portless owns the dev server. Full schema: references/state-schema.md.

Auto-surfaced hints (M127)

When dev boots, it inspects package.json and emits hints:

  • @json-render/* detected (#1560) → prints the devtools adapter import line so the inspector panel (Spec / State / Actions / Stream / Catalog / Pick) can be enabled in dev. Tree-shakes from production builds.
  • @clerk/* detected (#1563) → if clerk is in emulate.config.yaml, prints the mock login URL (http://localhost:4012); otherwise warns to run emulate-seed --auto.

Prerequisites + graceful no-op

$ dev
✓ portless     found
✓ agent-browser     found
✓ jq     found
[1] slug       feat-m125-lane-b

# OR with a missing prereq:
✗ portless not found.   Install: npm i -g portless

Skipping boot — install missing tools and re-run.

portless, agent-browser, and jq are required. emulate is optional — required only if emulate.config.yaml exists. The boot is all-or-nothing on the required set; with no emulate config the boot proceeds without emulators.

CI=1 short-circuits the boot (exits 0 immediately).

Status + teardown

$ dev status
ork:dev — feat/m125-lane-b
  ✓ portlessWrapper    portless feat-m125-lane-b pnpm run dev
  ✓ agentBrowser       feat-m125-lane-b
  base url:  https://feat-m125-lane-b.localhost
  booted:    2026-04-27T19:36:54Z
  portless:  route registered ✓

$ dev stop
ork:dev — sending SIGTERM in reverse boot order…
  ✓ agent-browser session "feat-m125-lane-b" closed
  ✓ portless wrapper (pid 86104) + 21 descendant(s) stopped
Cleared .claude/state/dev-stack.json

Note: portless proxy daemon left running (shared). Run `portless proxy stop` if you really mean to stop the daemon.

Stop walks the wrapper's process tree (pgrep -P recursively) and SIGTERMs descendants leaves-first because portless doesn't always propagate signals cleanly. The portless proxy daemon itself is shared infrastructure and is never killed by dev stop.

Worktree behavior

Each git worktree gets its own subdomain — feat-foo.localhost and feat-bar.localhost coexist on the same machine. The state file lives under each worktree's .claude/state/, so dev from one worktree doesn't see the other's processes.

Show full SKILL.md (405 more words)Show less

Idempotency

Re-running dev while the stack is already live is a no-op:

$ dev
ork:dev — feat/m125-lane-b already running.
  https://feat-m125-lane-b.localhost  (uptime 2h 14m)
Run dev stop to tear down, or dev status for detail.

Liveness probe: process.kill(pid, 0) against each tracked PID. If any are dead, the skill prints which ones and offers to clean up state and reboot.

How agent-browser composes

The session name equals the subdomain — agent-browser commands targeting that session don't need a --session flag if it's the only one connected:

bash
agent-browser open "https://feat-m125-lane-b.localhost/dashboard"
# implicit session = "feat-m125-lane-b" because it's the only one

expect (M125 #2) reads the dev-stack state file and reuses this same session — no second handshake.

Integration with expect (M125 #2)

When auto-expect fires after a .tsx edit, it:

  1. Reads .claude/state/dev-stack.json to find the agent-browser session and base URL.
  2. Computes the affected route from the file path (app/dashboard/page.tsx → /dashboard).
  3. Drives agent-browser against <baseUrl><route> using the live session.
  4. Records the ARIA snapshot to memory keyed by (route, parentCommit) (M125 #6).

If the dev stack isn't live, auto-expect skips silently — dev is the prerequisite, not a hard dep.

When NOT to use

  • CI — set CI=1; the skill exits 0 without booting.
  • Production deploys — never; this is dev-loop only.
  • Non-Vercel-Labs stacks — falls back to install hints; you can still run the underlying tools manually.
  • Inside a tmux -CC session — agent-browser dashboard incompatible with iTerm2 tmux integration.

Scripts

ScriptWhat it does
scripts/boot.shAll-or-nothing prereq check, then 9-step boot. Idempotent (no-ops if already live). Honors CI=1 to skip in CI.
scripts/stop.shSIGTERM in reverse boot order with 5-second SIGKILL fallback. Removes state file last.
scripts/status.shPretty status. --quiet for liveness-only (exit 0 live, 1 down). Used by boot for idempotency.

dev invokes scripts/boot.sh; stop → stop.sh; status → status.sh. The shell scripts are the source of truth.

References

FilePurpose
references/boot-sequence.mdStep-by-step boot annotated with commands
references/state-schema.mdFull JSON shape + field semantics

Rules

RuleImpactWhen it applies
rules/lab-stack-prerequisites.mdCRITICALEvery boot
rules/branch-named-subdomain.mdHIGHSubdomain resolution
rules/idempotent-boot.mdHIGHRe-running while live
rules/teardown-order.mdMEDIUMstop invocations

Running unattended with /goal

Set a completion condition with /goal (CC 2.1.139+) and this skill will keep working across turns until the condition is met. Works in interactive, -p, and Remote Control. The overlay panel shows live elapsed / turns / tokens.

Example completion condition for this skill:

/goal until services.running == 4, or stop after 5 turns

Stops when: all 4 dev-loop services (portless + emulate + dev-server + agent-browser) report healthy on their respective ports/sockets. Compatible with claude.ai Remote Control runs.

  • expect — diff-aware browser tests; reuses the agent-browser session this skill warms
  • emulate-seed — generates the emulator config that step 3 consumes
  • portless (skill) — underlying tool docs
  • browser-tools (skill) — agent-browser command reference

© yonatangross, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 12 other files (scripts, references) in src/skills/dev of yonatangross/orchestkit.

  • SKILL.md
  • references/boot-sequence.md
  • references/state-schema.md
  • rules/_sections.md
  • rules/_template.md
  • rules/branch-named-subdomain.md
  • rules/idempotent-boot.md
  • rules/lab-stack-prerequisites.md
  • rules/teardown-order.md
  • scripts/boot.sh
  • scripts/status.sh
  • scripts/stop.sh
  • test-cases.json

Open the folder on GitHubat commit 1f8d8f3

Compare with similar skills

Dev next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Dev compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dev this skillyonatangross/orchestkit288—~2.9kAutomated safety check: PassMIT
Berth Browsersean-brydon/berthd107—~779Automated safety check: PassMIT
Finishing a Development Branchobra/superpowers296k5 repos~1.9kAutomated safety check: PassMIT
Git Worktree Cleanuplobehub/lobehub83k—~2.8kAutomated safety check: PassCustom licence
Ccmanager Configkbwo/ccmanager1.3k—~1.5kAutomated safety check: PassMIT
Git Worktree Managermicrosoft/WindowsAppSDK4.7k—~2kAutomated safety check: PassMIT

Similar skills

  • Berth Browser

    sean-brydon/berthd

    Use your worktree's own page in a headless browser on the box — open it, read a compact snapshot with @refs, click, fill, press keys, wait, take a screenshot to a file, and read console errors —…

    107 GitHub stars~779 tokensUpdated today
    Productivity & AutomationAuto-check passed
  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    296k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Git Worktree Cleanup

    lobehub/lobehub

    Audits stale Git worktrees and branches with a bundled script, classifies each one, and deletes only after you approve the exact candidates.

    83k GitHub stars~2.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Ccmanager Config

    kbwo/ccmanager

    Set up, review, or repair a CCManager config — .ccmanager.json at a git repository root, or the global ~/.config/ccmanager/config.json.

    1.3k GitHub stars~1.5k tokensUpdated 10 days ago
    DevelopmentAuto-check passed
  • Git Worktree Manager

    microsoft/WindowsAppSDK

    Official

    Creates and manages Git worktrees with PowerShell scripts so separate issues and Copilot sessions each get an isolated branch, build and test environment.

    4.7k GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed
  • Codewhale Landing Workflow

    codewhale-hq/Codewhale

    Decides how verified work should reach main, directly, in a worktree or on an integration branch, while keeping contributor credit and respecting merge gates.

    41k GitHub stars~1.6k tokensUpdated today
    DevelopmentAuto-check passed

More from yonatangross/orchestkit

All 107 skills in this repo
  • API Design

    yonatangross/orchestkit

    API contract design for REST and GraphQL, covering resource shape, URL and header versioning with deprecation windows, RFC 9457 Problem Details error handling, and OpenAPI specs.

    288 GitHub stars~2.9k tokensUpdated yesterday
    Auto-check passed
  • Architecture Decision Record

    yonatangross/orchestkit

    ADR templates in the Nygard format with context, decision, consequences, and alternatives.

    288 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Audit Full

    yonatangross/orchestkit

    Single-pass codebase analysis leveraging a 1M-token context window for comprehensive security scanning, architecture review, and dependency auditing.

    288 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check: notes
  • Code Review Playbook

    yonatangross/orchestkit

    Structured review processes, conventional comments, language-specific checklists, and feedback templates.

    288 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Create PR

    yonatangross/orchestkit

    Creates GitHub pull requests with pre-flight validation, conventional title formatting, and structured summary generation.

    288 GitHub stars~4.5k tokensUpdated yesterday
    Auto-check: notes
  • Explore

    yonatangross/orchestkit

    Multi-angle codebase exploration spawning 3-5 parallel agents for code structure, data flow, architecture patterns, and health assessment.

    288 GitHub stars~3.9k tokensUpdated yesterday
    Auto-check: notes

Questions about Dev

What does Dev do?

One-command dev loop boot. An agent skill from yonatangross/orchestkit. Dev is an agent skill from yonatangross/orchestkit. One-command dev loop boot.

When should I use Dev?

Dev fits situations like: starting a feature branch; switching worktrees; returning to a project after a break.

How do I install Dev in Claude Code?

Run `npx skills add yonatangross/orchestkit --skill dev -a claude-code`. Or copy the skill folder (src/skills/dev in yonatangross/orchestkit) into .claude/skills/dev in your project. Claude Code loads it when a task matches its description.

How do I install Dev in Codex?

Run `npx skills add yonatangross/orchestkit --skill dev -a codex`. Or copy the skill folder (src/skills/dev in yonatangross/orchestkit) into .agents/skills/dev in your project. Codex loads it when a task matches its description.

Can I use Dev in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add yonatangross/orchestkit --skill dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dev, .gemini/skills/dev, .github/skills/dev and .opencode/skills/dev in your project.

What does Dev need to run?

Going by SKILL.md and its folder, Dev needs a shell for the scripts in its folder and the command-line tools its instructions call (claude, pnpm, npm and yarn). Our summary lists: Node.js; A Bash shell. Compatibility (from SKILL.md): Claude Code 2.1.277+.

Does Dev access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Dev safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Dev use?

Dev is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Dev use?

About 2.9k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.9k tokens, read only when the agent opens those files.

What are the alternatives to Dev?

Skills that share tags, products or a category with Dev: Berth Browser (sean-brydon/berthd, 107 stars), Finishing a Development Branch (obra/superpowers, 296k stars), Git Worktree Cleanup (lobehub/lobehub, 83k stars) and Ccmanager Config (kbwo/ccmanager, 1.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dev?

yonatangross (a GitHub user) maintains it in yonatangross/orchestkit, which has 288 GitHub stars. The repository holds 107 skills in this directory. The repository was last updated on October 6, 2026.

Source: yonatangross/orchestkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.