jig-dev
v0.15.0
Published
CLI tool for AI-powered spec-to-task decomposition and execution
Downloads
3,458
Maintainers
Readme
jig-dev
AI-powered spec-to-task decomposition and execution. Jig transforms high-level feature specifications into structured, executable tasks for AI coding agents.
Install
Quick start (no install)
npx jig-dev init
# or
bunx jig-dev initGlobal install
npm install -g jig-dev
# or
bun add -g jig-devThen run:
jig initUsage
Initialize a project
jig initJig detects your framework, creates the .jig/ directory, and sets up your project.
Bootstrap from existing code
jig bootstrapScans your codebase and generates feature specifications automatically.
Work with specs
jig spec list # List all specs
jig spec show <name> # View a spec
jig spec new <name> # Create a new specDecompose and execute
jig decompose <spec> # Break spec into tasks
jig tasks <spec> # List tasks for a spec
jig run <spec> <task> # Execute a task via Claude Code
jig verify <spec> <task> # Run verification gates
jig status # View project statusCloud sync
jig auth login # Authenticate
jig sync # Sync with cloudHow it works
- Write specs -- Describe features in markdown with intent, acceptance criteria, and constraints
- Decompose -- Jig breaks specs into executable tasks with file scopes and verification gates
- Execute -- Claude Code runs tasks autonomously, guided by rich context
- Verify -- Automated verification gates confirm each task meets its criteria
Deploying the MCP Server
The hosted MCP server runs on Fly.io at mcp.usejig.dev.
Deploy
fly deployDeploys use blue-green strategy: the new instance boots and passes health checks before traffic switches over. Active SSE connections on the old instance are closed gracefully (in-flight requests finish, then transports close).
How graceful shutdown works
- Fly.io sends
SIGTERMto the old instance (forwarded bydumb-init). - The server stops accepting new connections.
- All active MCP transports are closed (SSE streams end cleanly with
retry: 3000msheader). - In-flight requests have up to 55 seconds to complete (Fly.io
kill_timeoutis 60s). - Clients that lose their SSE stream will auto-reconnect within 3 seconds using the
retryinterval. - If the old session ID is unknown to the new instance, clients re-initialize per the MCP spec (HTTP 404 triggers new
InitializeRequest).
Monitoring
# Check server health
curl https://mcp.usejig.dev/health
# View active sessions and uptime
fly ssh console -C "curl -s localhost:8080/health"
# Stream logs during deploy
fly logsConfiguration
Key settings in fly.toml:
deploy.strategy = "bluegreen"-- zero-downtime traffic switchhttp_service.min_machines_running = 1-- always-onexperimental.kill_timeout = "60s"-- drain window before SIGKILLhttp_service.http_options.idle_timeout = 300-- 5-minute idle timeout for SSE
SSE settings in src/mcp/hosted.ts:
retryInterval: 3000-- clients retry SSE connection after 3 secondseventStore: InMemoryEventStore-- enables mid-session SSE resumption viaLast-Event-ID- Keepalive comments every 15 seconds prevent Fly.io proxy timeout
Requirements
- Node.js 18+ or Bun 1.0+
- Claude Code CLI (for task execution)
License
MIT
