{"_id":"@binxgodteli/claude-ship","_rev":"7-9a47419c40ef0bf7fe6bd1e58f58a75d","name":"@binxgodteli/claude-ship","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.0":{"name":"@binxgodteli/claude-ship","version":"1.0.0","keywords":["claude","anthropic","ai","cli","github","scaffolding","ship"],"author":"","license":"MIT","_id":"@binxgodteli/claude-ship@1.0.0","maintainers":[{"name":"binxgodteli","email":"binxgodteli@gmail.com"}],"homepage":"https://github.com/binxgtl/claude-ship#readme","bugs":{"url":"https://github.com/binxgtl/claude-ship/issues"},"bin":{"claude-ship":"dist/index.js"},"dist":{"shasum":"a911bf0623d0d0049aa353efe26a31b84a99d537","tarball":"https://registry.npmjs.org/@binxgodteli/claude-ship/-/claude-ship-1.0.0.tgz","fileCount":59,"integrity":"sha512-sygqjVlvr9ln294XW3o3aYmAmv3V0BnK61Ba1KrMu5nv5KvNLNrLFqoS+R/82wJlIEJUyrt27qqdJ3AAgvpkZw==","signatures":[{"sig":"MEUCIQCTKw9oDZSGuatyGHYjgaysy1oRwTTefmTYC3XdFB4vdQIgH6hQhGTFBBOOYCbUqAJFUJTZ7K4rOhddcVaBGB0Wlc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":397779},"type":"module","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","build":"tsc","start":"node dist/index.js","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","prepublishOnly":"npm run lint && npm run build"},"_npmUser":{"name":"binxgodteli","email":"binxgodteli@gmail.com"},"repository":{"url":"git+https://github.com/binxgtl/claude-ship.git","type":"git"},"_npmVersion":"10.9.2","description":"Ship Claude-generated projects to GitHub in seconds — parse, scaffold, and publish with one command.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^10.2.2","commander":"^12.1.0","simple-git":"^3.27.0","@google/genai":"^1.48.0","@octokit/rest":"^21.0.2","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.14.0","@eslint/js":"^9.14.0","typescript":"^5.6.3","@types/node":"^22.9.1","@types/inquirer":"^9.0.7","typescript-eslint":"^8.14.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-ship_1.0.0_1775374246059_0.49839131135810555","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@binxgodteli/claude-ship","version":"1.0.1","keywords":["claude","anthropic","ai","cli","github","scaffolding","ship"],"author":"","license":"MIT","_id":"@binxgodteli/claude-ship@1.0.1","maintainers":[{"name":"binxgodteli","email":"binxgodteli@gmail.com"}],"homepage":"https://github.com/binxgtl/claude-ship#readme","bugs":{"url":"https://github.com/binxgtl/claude-ship/issues"},"bin":{"claude-ship":"dist/index.js"},"dist":{"shasum":"db311e0e74e5a7194ab0b89ff8debfca6cfc237d","tarball":"https://registry.npmjs.org/@binxgodteli/claude-ship/-/claude-ship-1.0.1.tgz","fileCount":59,"integrity":"sha512-nltUOOJX7kyeB98wsdPcidx/h6dRZbILnUDbs23UD8grd45QPjlsiByIuk5nzqybFhbPhYExqjlAkWZ5/cn/Ow==","signatures":[{"sig":"MEYCIQDF0cYjonH6hVuZ/4l9fgY5EQp67tDG5YibAInISHTTnwIhAIYMBS32bwkanUqKdCZt4A9tSmki1DcfMpgjniQeIuzX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":396024},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"8c3aa530e9153119edcb8a20df37839772ccc3a5","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","build":"tsc","start":"node dist/index.js","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","prepublishOnly":"npm run lint && npm run build"},"_npmUser":{"name":"binxgodteli","email":"binxgodteli@gmail.com"},"repository":{"url":"git+https://github.com/binxgtl/claude-ship.git","type":"git"},"_npmVersion":"10.9.2","description":"Ship Claude-generated projects to GitHub in seconds — parse, scaffold, and publish with one command.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^10.2.2","commander":"^12.1.0","simple-git":"^3.27.0","@google/genai":"^1.48.0","@octokit/rest":"^21.0.2","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.14.0","@eslint/js":"^9.14.0","typescript":"^5.6.3","@types/node":"^22.9.1","@types/inquirer":"^9.0.7","typescript-eslint":"^8.14.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-ship_1.0.1_1775384535715_0.8012297596652562","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@binxgodteli/claude-ship","version":"1.0.2","keywords":["claude","anthropic","ai","cli","github","scaffolding","ship"],"author":"","license":"MIT","_id":"@binxgodteli/claude-ship@1.0.2","maintainers":[{"name":"binxgodteli","email":"binxgodteli@gmail.com"}],"homepage":"https://github.com/binxgtl/claude-ship#readme","bugs":{"url":"https://github.com/binxgtl/claude-ship/issues"},"bin":{"claude-ship":"dist/index.js"},"dist":{"shasum":"9662aca47e10c6a47e8500e888ce6c5405b07bf4","tarball":"https://registry.npmjs.org/@binxgodteli/claude-ship/-/claude-ship-1.0.2.tgz","fileCount":71,"integrity":"sha512-uaIS4errMxDsc96VVY67Tl+4cyexm0D9n53wS+kaq1FLipbzFTSBSPmdwN3DDv0HOe2eywqYXf209j90Y/nGxA==","signatures":[{"sig":"MEQCIA6GDE7gIl+3PXuMlYQv5RhVxy9TD+Y8GrWT3/IDHplmAiACL/yA87/AQlvuZ2gBC9e3RPE9VkpyKv3M5NrQ2MX7ng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":404715},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"00ca729ed7db3f5e2ad2350ca8c021560539cdd9","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","prepublishOnly":"npm run lint && npm run build"},"_npmUser":{"name":"binxgodteli","email":"binxgodteli@gmail.com"},"repository":{"url":"git+https://github.com/binxgtl/claude-ship.git","type":"git"},"_npmVersion":"10.9.2","description":"Ship Claude-generated projects to GitHub in seconds — parse, scaffold, and publish with one command.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^10.2.2","commander":"^12.1.0","simple-git":"^3.27.0","@google/genai":"^1.48.0","@octokit/rest":"^21.0.2","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.14.0","vitest":"^4.1.2","@eslint/js":"^9.14.0","typescript":"^5.6.3","@types/node":"^22.9.1","@types/inquirer":"^9.0.7","typescript-eslint":"^8.14.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-ship_1.0.2_1775551188802_0.06389568512874488","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@binxgodteli/claude-ship","version":"1.0.3","keywords":["claude","anthropic","ai","cli","github","scaffolding","ship"],"author":"","license":"MIT","_id":"@binxgodteli/claude-ship@1.0.3","maintainers":[{"name":"binxgodteli","email":"binxgodteli@gmail.com"}],"homepage":"https://github.com/binxgtl/claude-ship#readme","bugs":{"url":"https://github.com/binxgtl/claude-ship/issues"},"bin":{"claude-ship":"dist/index.js"},"dist":{"shasum":"826c2bc62b52e0ca70f3a1c750b2dadb06bc9112","tarball":"https://registry.npmjs.org/@binxgodteli/claude-ship/-/claude-ship-1.0.3.tgz","fileCount":71,"integrity":"sha512-ruOEtWzTuPpoGzwUt4opnRYySlalqe31dtMLbKTuQH0FbhIMODWN1JN8qtRCXmqvygjxe85yresGszsYuzSz0w==","signatures":[{"sig":"MEYCIQCzaVOiZwaVNBlWXcYL5w93EFW3n2YMazOt425c/Rc2bAIhAN0X3J4vg3qdETmpOaiZ6+6bkukZJ1hzwUwdx4waMh6f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":481195},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"fdcbf59c5f97c5ba91f3549b2827c7d645ed331f","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","prepublishOnly":"npm run lint && npm run build"},"_npmUser":{"name":"binxgodteli","email":"binxgodteli@gmail.com"},"repository":{"url":"git+https://github.com/binxgtl/claude-ship.git","type":"git"},"_npmVersion":"10.9.2","description":"Ship Claude-generated projects to GitHub in seconds — parse, scaffold, and publish with one command.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^10.2.2","commander":"^12.1.0","simple-git":"^3.27.0","@google/genai":"^1.48.0","@octokit/rest":"^21.0.2","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.14.0","vitest":"^4.1.2","@eslint/js":"^9.14.0","typescript":"^5.6.3","@types/node":"^22.9.1","@types/inquirer":"^9.0.7","typescript-eslint":"^8.14.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-ship_1.0.3_1775562996600_0.13934755010336608","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@binxgodteli/claude-ship","version":"1.0.4","keywords":["claude","anthropic","ai","cli","github","scaffolding","ship"],"author":"","license":"MIT","_id":"@binxgodteli/claude-ship@1.0.4","maintainers":[{"name":"binxgodteli","email":"binxgodteli@gmail.com"}],"homepage":"https://github.com/binxgtl/claude-ship#readme","bugs":{"url":"https://github.com/binxgtl/claude-ship/issues"},"bin":{"claude-ship":"dist/index.js"},"dist":{"shasum":"1a228ee4c3fa7ee817c59c5c528422c3c4aa3a9c","tarball":"https://registry.npmjs.org/@binxgodteli/claude-ship/-/claude-ship-1.0.4.tgz","fileCount":71,"integrity":"sha512-kiQMU/1M2gFaIAJyZAOuCd+5y6440sx4I7Q33rXI1mvPmHTlUvDtcJ+kUe5LnVt2wTrGvIFvmSHo2DgePSdr+g==","signatures":[{"sig":"MEQCIErSMLii5yCCE+2x0BUTa0V1mNSTGk4i4L4bJ/ETvT9HAiBu1zSm13jSfp2Y+9yBisl79AXC5TKBfA9zRskx37S5rA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":483692},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"f65a6cc351e199547e72884438df278e9a6b7bb6","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","prepublishOnly":"npm run lint && npm run build"},"_npmUser":{"name":"binxgodteli","email":"binxgodteli@gmail.com"},"repository":{"url":"git+https://github.com/binxgtl/claude-ship.git","type":"git"},"_npmVersion":"10.9.2","description":"Ship Claude-generated projects to GitHub in seconds — parse, scaffold, and publish with one command.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","inquirer":"^10.2.2","commander":"^12.1.0","simple-git":"^3.27.0","@google/genai":"^1.48.0","@octokit/rest":"^21.0.2","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.14.0","vitest":"^4.1.2","@eslint/js":"^9.14.0","typescript":"^5.6.3","@types/node":"^22.9.1","@types/inquirer":"^9.0.7","typescript-eslint":"^8.14.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-ship_1.0.4_1775644902364_0.8308126792927559","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@binxgodteli/claude-ship","version":"1.0.5","keywords":["claude","anthropic","ai","cli","github","scaffolding","ship"],"author":"","license":"MIT","_id":"@binxgodteli/claude-ship@1.0.5","maintainers":[{"name":"binxgodteli","email":"binxgodteli@gmail.com"}],"homepage":"https://github.com/binxgtl/claude-ship#readme","bugs":{"url":"https://github.com/binxgtl/claude-ship/issues"},"bin":{"claude-ship":"dist/index.js"},"dist":{"shasum":"95286a213f7c46a128f5fa4585e2f0978506fd69","tarball":"https://registry.npmjs.org/@binxgodteli/claude-ship/-/claude-ship-1.0.5.tgz","fileCount":119,"integrity":"sha512-cBPbrr2hQtxvCaliB8CruO64t7yVeubwpzBzdNU6iv2h9dkDkBf/vI3y3gRCrQPiKWMxoaFY6MdIV1Z64vuPPA==","signatures":[{"sig":"MEYCIQDPNE1xPqpynRrIANbHNH4TSYV/emM7N81ZKtEOQDYusQIhAIWn8GppU13tTnlzSss8Bss30zgFZg3sU+C9L+RUqK+z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":612519},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"8b2235d5c7153ce58298357fac2aa8bd03759098","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"vitest run","build":"tsc","start":"node dist/index.js","lint:fix":"eslint src --ext .ts --fix","typecheck":"tsc --noEmit","prepublishOnly":"npm run lint && npm run build"},"_npmUser":{"name":"binxgodteli","email":"binxgodteli@gmail.com"},"repository":{"url":"git+https://github.com/binxgtl/claude-ship.git","type":"git"},"_npmVersion":"10.9.2","description":"Ship Claude-generated projects to GitHub in seconds — parse, scaffold, and publish with one command.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ora":"^8.1.1","open":"^11.0.0","chalk":"^5.3.0","inquirer":"^10.2.2","commander":"^12.1.0","simple-git":"^3.27.0","@google/genai":"^1.48.0","@octokit/rest":"^21.0.2","@anthropic-ai/sdk":"^0.39.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.14.0","vitest":"^4.1.2","@eslint/js":"^9.14.0","typescript":"^5.6.3","@types/node":"^22.9.1","@types/inquirer":"^9.0.7","typescript-eslint":"^8.14.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-ship_1.0.5_1775664041511_0.08789419159272338","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@binxgodteli/claude-ship","version":"1.0.6","description":"Ship Claude-generated projects to GitHub in seconds — parse, scaffold, and publish with one command.","keywords":["claude","anthropic","ai","cli","github","scaffolding","ship"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/binxgtl/claude-ship.git"},"homepage":"https://github.com/binxgtl/claude-ship#readme","bugs":{"url":"https://github.com/binxgtl/claude-ship/issues"},"type":"module","bin":{"claude-ship":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsx src/index.ts","start":"node dist/index.js","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","test":"vitest run","prepublishOnly":"npm run lint && npm run build","typecheck":"tsc --noEmit"},"dependencies":{"@anthropic-ai/sdk":"^0.39.0","@google/genai":"^1.48.0","@octokit/rest":"^21.0.2","chalk":"^5.3.0","commander":"^12.1.0","inquirer":"^10.2.2","open":"^11.0.0","ora":"^8.1.1","simple-git":"^3.27.0"},"devDependencies":{"@eslint/js":"^9.14.0","@types/inquirer":"^9.0.7","@types/node":"^22.9.1","eslint":"^9.14.0","tsx":"^4.19.2","typescript":"^5.6.3","typescript-eslint":"^8.14.0","vitest":"^4.1.2"},"engines":{"node":">=18.0.0"},"_id":"@binxgodteli/claude-ship@1.0.6","gitHead":"b098aca85c7cc6dcf8598451fbc6ca8b5f202f01","_nodeVersion":"22.17.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-5i1tySbrwLhymjomYKZ93h/OtgURbLJtaGARr80MPNKghnNMvHZWxYQ2FA1fjM0SN2N1LmXXCfBkL7gI9QB/ng==","shasum":"a2009c3cf34c1835f87c0a56d40f3f96f121389f","tarball":"https://registry.npmjs.org/@binxgodteli/claude-ship/-/claude-ship-1.0.6.tgz","fileCount":127,"unpackedSize":653494,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCnsCyzBsGBDJRDsK7tbJnWXSIbBg3rbm8O4X1XUGwtXAIgIKc+NduWnP7/QAqozR6j/HMwmiF4WjiiYCX3BAPyj7U="}]},"_npmUser":{"name":"binxgodteli","email":"binxgodteli@gmail.com"},"directories":{},"maintainers":[{"name":"binxgodteli","email":"binxgodteli@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-ship_1.0.6_1775916313078_0.07056499790836113"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-05T07:30:45.833Z","modified":"2026-04-11T14:05:13.394Z","1.0.0":"2026-04-05T07:30:46.258Z","1.0.1":"2026-04-05T10:22:15.892Z","1.0.2":"2026-04-07T08:39:48.976Z","1.0.3":"2026-04-07T11:56:36.786Z","1.0.4":"2026-04-08T10:41:42.527Z","1.0.5":"2026-04-08T16:00:41.683Z","1.0.6":"2026-04-11T14:05:13.279Z"},"bugs":{"url":"https://github.com/binxgtl/claude-ship/issues"},"license":"MIT","homepage":"https://github.com/binxgtl/claude-ship#readme","keywords":["claude","anthropic","ai","cli","github","scaffolding","ship"],"repository":{"type":"git","url":"git+https://github.com/binxgtl/claude-ship.git"},"description":"Ship Claude-generated projects to GitHub in seconds — parse, scaffold, and publish with one command.","maintainers":[{"name":"binxgodteli","email":"binxgodteli@gmail.com"}],"readme":"# claude-ship\n\n[![npm version](https://img.shields.io/npm/v/@binxgodteli/claude-ship?style=flat-square&color=cb3837&logo=npm)](https://www.npmjs.com/package/@binxgodteli/claude-ship)\n[![npm downloads](https://img.shields.io/npm/dm/@binxgodteli/claude-ship?style=flat-square&color=cb3837)](https://www.npmjs.com/package/@binxgodteli/claude-ship)\n[![Node.js](https://img.shields.io/badge/Node.js-18%2B-339933?style=flat-square&logo=node.js&logoColor=white)](https://nodejs.org)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow?style=flat-square)](LICENSE)\n\n**Language / Ngôn ngữ:** **English** | [Tiếng Việt](README_VI.md)\n\n> Ship Claude-generated projects to GitHub in seconds — parse, scaffold, and publish with one command.\n\n---\n\n## Quick Start\n\n```bash\n# 1. Copy your Claude conversation to a file\n# 2. Ship it to a new GitHub repo in one command\nnpx @binxgodteli/claude-ship ship --file ./claude-output.txt --name my-project\n\n# Push an existing local project\nnpx @binxgodteli/claude-ship push --no-readme\n\n# Regenerate your README with AI\nnpx @binxgodteli/claude-ship readme --provider gemini --api-key YOUR_KEY\n\n# Scaffold a new project from a template (no Claude needed)\nnpx @binxgodteli/claude-ship init\n\n# Generate CHANGELOG from git history\nnpx @binxgodteli/claude-ship changelog\n\n# Login with OpenAI (free via ChatGPT subscription)\nnpx @binxgodteli/claude-ship login\n\n# Batch process multiple Claude responses\nnpx @binxgodteli/claude-ship batch ./responses/\n\n# AI-generated commit message from staged changes\nnpx @binxgodteli/claude-ship commit\n\n# Bump version + changelog + GitHub Release\nnpx @binxgodteli/claude-ship release --bump minor\n```\n\nNo setup required. `claude-ship` detects your GitHub token from the `gh` CLI, `GITHUB_TOKEN`, or a saved config automatically.\n\n---\n\n## Installation\n\n```bash\n# Run without installing (one-off use)\nnpx @binxgodteli/claude-ship --help\n\n# Install globally\nnpm install -g @binxgodteli/claude-ship\nclaude-ship --help\n```\n\n---\n\n## Features\n\n- **Parse Claude output** — extracts files from fenced code blocks and `<antArtifact>` tags\n- **Auto-scaffold** — writes files, generates `.gitignore` presets based on detected tech stack\n- **4 AI providers** — Anthropic (Claude Sonnet 4.6), Google Gemini (3 Flash), OpenAI (GPT-5.4 via Codex OAuth or API key), and Ollama (local models)\n- **AI README generation** — 4 detail levels, 3 tones, Vietnamese support; streaming output, AI self-evaluation with quality scoring, multi-provider fallback, and custom section preservation on regenerate\n- **OpenAI Codex OAuth** — `login` command authenticates via browser using your ChatGPT subscription (free, no API key needed); configurable model (gpt-5.4, gpt-5.4-mini, gpt-5.3-codex)\n- **GitHub integration** — creates repos (personal or org, public or private) via Octokit; handles force-push flow\n- **Push existing projects** — no Claude output needed; creates repo if it doesn't exist\n- **Project templates** — `init` command bootstraps new projects from 6 stack templates (Node.js, React, Next.js, Express, FastAPI, CLI Tool)\n- **AI changelog** — `changelog` command generates CHANGELOG.md from git history using AI\n- **Batch processing** — `batch` command processes multiple Claude response files into separate projects\n- **AI commit messages** — `commit` command reads staged `git diff`, generates a conventional commit message, lets you review/edit/regenerate before committing\n- **Release management** — `release` command bumps version, generates changelog, creates git tag, and publishes GitHub Release\n- **Docker generation** — `--docker` flag generates `Dockerfile` and `docker-compose.yml` (multi-stage builds for Node/Python/Rust/Go)\n- **`.env.example` generation** — `--env-example` flag detects environment variables and generates a `.env.example` template\n- **Pre-commit hooks** — `--hooks` flag generates husky + lint-staged configuration\n- **GitHub Actions CI** — auto-generate `.github/workflows/ci.yml` via `--ci` flag (Node.js, Python, Rust, Go)\n- **Monorepo support** — detects npm/pnpm/yarn workspaces and includes package info in generated READMEs\n- **Preview & diff** — `readme --preview` to review before writing; `push --diff` to see changes summary before pushing\n- **Dry-run mode** — preview all actions without writing files or calling APIs\n- **Encrypted config** — API keys and tokens stored with AES-256-GCM at `~/.claudeship/config.json` (machine-bound key)\n- **SSH/HTTPS remotes** — configurable per project or globally\n\n---\n\n## Commands\n\n### `ship` — Parse, scaffold, and publish\n\nParse a Claude response, scaffold a project directory, and push to a new GitHub repo.\n\n```bash\nnpx @binxgodteli/claude-ship ship --file ./claude-output.txt --name my-project --desc \"A project\"\n\n# Private repo with Gemini README + CI workflow\nnpx @binxgodteli/claude-ship ship --file ./output.txt --name my-project --private --provider gemini --api-key KEY --ci\n\n# Preview without writing anything\nnpx @binxgodteli/claude-ship ship --file ./output.txt --name my-project -d\n```\n\n| Flag | Description |\n| :--- | :---------- |\n| `--file <path>` | Path to a file containing the Claude response |\n| `--name <name>` | Project / repository name |\n| `--desc <description>` | Short project description |\n| `--out <dir>` | Output directory (default: `./<project-name>`) |\n| `--private` | Create a private GitHub repository |\n| `--no-readme` | Skip AI README generation |\n| `--vi` | Generate README in Vietnamese |\n| `--provider <name>` | AI provider: `anthropic`, `gemini`, `openai`, or `ollama` |\n| `--api-key <key>` | API key for the selected provider |\n| `--detail <level>` | README detail: `short`, `normal`, `large`, `carefully` |\n| `--style <style>` | README tone: `practical`, `balanced` (default), `marketing` |\n| `--max-tokens <n>` | Max tokens for README generation (`0` = no limit) |\n| `--token <token>` | GitHub personal access token |\n| `--org <org>` | GitHub organization to create the repo under |\n| `--branch <name>` | Git branch name (default: `main`) |\n| `--no-push` | Scaffold locally, skip GitHub push |\n| `--ci` | Generate GitHub Actions CI workflow |\n| `--docker` | Generate `Dockerfile` and `docker-compose.yml` |\n| `--env-example` | Generate `.env.example` from detected env vars |\n| `--hooks` | Generate pre-commit hooks (husky + lint-staged) |\n| `-d, --dry-run` | Preview what would happen — no writes, no API calls |\n\n---\n\n### `push` — Push an existing project\n\nPush a local project to GitHub. Creates the repo if it doesn't exist; handles diverged remotes interactively.\n\n```bash\n# Push current directory (keep existing README)\nnpx @binxgodteli/claude-ship push --no-readme\n\n# Push with diff summary and CI generation\nnpx @binxgodteli/claude-ship push --diff --ci\n\n# Push to an org as private\nnpx @binxgodteli/claude-ship push --org my-org --private --no-readme\n```\n\n| Flag | Description |\n| :--- | :---------- |\n| `--dir <path>` | Project directory (default: current working directory) |\n| `--name <name>` | Repo name (default: from `package.json` or folder name) |\n| `--desc <description>` | Repo description |\n| `--private` | Create as private repo |\n| `--no-readme` | Skip README regeneration |\n| `--vi` | Generate README in Vietnamese |\n| `--provider <name>` | AI provider: `anthropic`, `gemini`, `openai`, or `ollama` |\n| `--api-key <key>` | API key for the selected provider |\n| `--detail <level>` | README detail: `short`, `normal`, `large`, `carefully` |\n| `--style <style>` | README tone: `practical`, `balanced`, `marketing` |\n| `--max-tokens <n>` | Max tokens for README generation |\n| `--token <token>` | GitHub personal access token |\n| `--org <org>` | GitHub organization |\n| `--branch <name>` | Branch name (default: `main`) |\n| `--message <msg>` | Git commit message (default: `🚀 Update via claude-ship`) |\n| `--diff` | Show changes summary and confirm before pushing |\n| `--ci` | Generate GitHub Actions CI workflow |\n| `--docker` | Generate `Dockerfile` and `docker-compose.yml` |\n| `--env-example` | Generate `.env.example` from detected env vars |\n| `--hooks` | Generate pre-commit hooks (husky + lint-staged) |\n\n---\n\n### `readme` — Regenerate README\n\nRegenerate the README for an existing project directory. Supports streaming output, AI quality scoring, and custom section preservation.\n\n```bash\nnpx @binxgodteli/claude-ship readme\nnpx @binxgodteli/claude-ship readme --dir ./my-project --provider gemini --vi --api-key KEY\n\n# Preview in terminal before writing\nnpx @binxgodteli/claude-ship readme --preview\n```\n\n| Flag | Description |\n| :--- | :---------- |\n| `--dir <path>` | Project directory (default: current working directory) |\n| `--provider <name>` | AI provider: `anthropic` (default), `gemini`, `openai`, or `ollama` |\n| `--api-key <key>` | API key for the selected provider |\n| `--vi` | Generate in Vietnamese |\n| `--detail <level>` | Detail level: `short`, `normal`, `large`, `carefully` |\n| `--style <style>` | Tone: `practical`, `balanced`, `marketing` |\n| `--max-tokens <n>` | Max tokens (`0` = no limit) |\n| `--preview` | Preview generated README in terminal before writing |\n\n---\n\n### `init` — Scaffold a new project\n\nInteractively create a new project from a template — no Claude output needed.\n\n```bash\nnpx @binxgodteli/claude-ship init\n```\n\nAvailable templates:\n\n| Template | Stack |\n| :------- | :---- |\n| Node.js + TypeScript (ESM) | TypeScript, tsx |\n| React + Vite + TypeScript | React 19, Vite 6 |\n| Next.js (App Router) | Next.js 15, React 19 |\n| Express API + TypeScript | Express 5, TypeScript |\n| Python (FastAPI) | FastAPI, uvicorn |\n| CLI Tool (Commander) | Commander.js, chalk |\n\nOptionally generates a GitHub Actions CI workflow during scaffolding.\n\n---\n\n### `changelog` — Generate CHANGELOG from git history\n\nReads git commit history and uses AI to produce a CHANGELOG.md in [Keep a Changelog](https://keepachangelog.com) format.\n\n```bash\nnpx @binxgodteli/claude-ship changelog\nnpx @binxgodteli/claude-ship changelog --dir ./my-project --provider gemini --api-key KEY\nnpx @binxgodteli/claude-ship changelog --count 50\n```\n\n| Flag | Description |\n| :--- | :---------- |\n| `--dir <path>` | Project directory (default: current working directory) |\n| `--provider <name>` | AI provider: `anthropic`, `gemini`, `openai`, or `ollama` |\n| `--api-key <key>` | API key for the selected provider |\n| `--count <n>` | Max commits to include (default: 100) |\n\n---\n\n### `update` — Re-detect stack and update README\n\nRe-scans an existing project, detects the tech stack, and regenerates the README while preserving custom sections.\n\n```bash\nnpx @binxgodteli/claude-ship update\nnpx @binxgodteli/claude-ship update --dir ./my-project --vi\n```\n\n| Flag | Description |\n| :--- | :---------- |\n| `--dir <path>` | Project directory (default: current working directory) |\n| `--provider <name>` | AI provider: `anthropic`, `gemini`, `openai`, or `ollama` |\n| `--api-key <key>` | API key for the selected provider |\n| `--vi` | Generate README in Vietnamese |\n| `--detail <level>` | Detail level: `short`, `normal`, `large`, `carefully` |\n| `--style <style>` | Tone: `practical`, `balanced`, `marketing` |\n| `--max-tokens <n>` | Max tokens for README generation |\n\n---\n\n### `commit` — AI-generated commit messages\n\nGenerate a commit message from staged changes using AI. Supports review, edit, and regenerate before committing.\n\n```bash\n# Generate message from staged changes\nnpx @binxgodteli/claude-ship commit\n\n# Stage all + commit + push in one go\nnpx @binxgodteli/claude-ship commit -a -p\n\n# Skip confirmation (CI-friendly)\nnpx @binxgodteli/claude-ship commit -a -y\n```\n\n| Flag | Description |\n| :--- | :---------- |\n| `--dir <path>` | Project directory (default: current working directory) |\n| `--provider <name>` | AI provider: `anthropic`, `gemini`, `openai`, or `ollama` |\n| `--api-key <key>` | API key for the selected provider |\n| `-a, --all` | Stage all changes before committing |\n| `-p, --push` | Push to remote after committing |\n| `-y, --yes` | Skip confirmation, commit immediately |\n\n---\n\n### `login` — Authenticate with OpenAI\n\nLogin with your ChatGPT account via OAuth to use OpenAI models for free (no API key required).\n\n```bash\nnpx @binxgodteli/claude-ship login\n```\n\nOpens your browser for OpenAI authentication. Tokens are saved to `~/.claudeship/openai-auth.json` and used automatically when `--provider openai` is set. Also reads tokens from `~/.codex/auth.json` (created by `npx @openai/codex login`) as a fallback.\n\n---\n\n### `batch` — Process multiple files\n\nProcess multiple Claude response files from a directory into separate projects.\n\n```bash\nnpx @binxgodteli/claude-ship batch ./responses/\nnpx @binxgodteli/claude-ship batch ./responses/ --private --ci --docker\n```\n\n| Flag | Description |\n| :--- | :---------- |\n| `<dir>` | Directory containing `.txt` or `.md` files with Claude responses |\n| `--token <token>` | GitHub personal access token |\n| `--private` | Create private repos |\n| `--no-push` | Scaffold locally, skip GitHub push |\n| `--provider <name>` | AI provider for README generation |\n| `--api-key <key>` | API key for the selected provider |\n| `--out <dir>` | Parent output directory (default: current working directory) |\n| `--ci` | Generate GitHub Actions CI workflow |\n| `--docker` | Generate Dockerfile and docker-compose.yml |\n\n---\n\n### `release` — Version bump + GitHub Release\n\nBump version in `package.json`, generate changelog, create git tag, push, and create a GitHub Release.\n\n```bash\nnpx @binxgodteli/claude-ship release\nnpx @binxgodteli/claude-ship release --bump minor\nnpx @binxgodteli/claude-ship release --bump major --draft\n```\n\n| Flag | Description |\n| :--- | :---------- |\n| `--dir <path>` | Project directory (default: current working directory) |\n| `--bump <type>` | Version bump: `patch` (default), `minor`, `major` |\n| `--token <token>` | GitHub personal access token |\n| `--provider <name>` | AI provider for changelog |\n| `--api-key <key>` | API key for the selected provider |\n| `--draft` | Create as draft release |\n\n---\n\n### `config` — Interactive setup\n\nLaunch a TUI to save API keys, GitHub tokens, and default preferences.\n\n```bash\nnpx @binxgodteli/claude-ship config\n```\n\nSections: **AI Keys** · **GitHub** (token or OAuth) · **Defaults** (privacy, org, branch) · **README** (detail, license, author) · **Files** (glob exclusion patterns)\n\n---\n\n## Configuration\n\nSettings are stored in `~/.claudeship/config.json`. Manage them via `claude-ship config` or flags.\n\n**GitHub token resolution order**: `--token` flag → `gh auth token` → `GITHUB_TOKEN` env → `GH_TOKEN` env → saved config.\n\n### Environment Variables\n\n| Variable | Description |\n| :------- | :---------- |\n| `GITHUB_TOKEN` / `GH_TOKEN` | GitHub Personal Access Token |\n| `ANTHROPIC_API_KEY` | Anthropic API key |\n| `GEMINI_API_KEY` / `GOOGLE_API_KEY` | Google Gemini API key |\n| `OPENAI_API_KEY` | OpenAI API key (or use `claude-ship login` for OAuth) |\n| `CLAUDE_SHIP_CLIENT_ID` | GitHub OAuth App client ID for device flow |\n\n### Config File Fields\n\n| Field | Description | Default |\n| :---- | :---------- | :------ |\n| `defaultProvider` | AI provider (`anthropic`, `gemini`, `openai`, `ollama`) | `anthropic` |\n| `defaultPrivate` | Repo visibility | `false` |\n| `githubUsername` | GitHub username | `\"\"` |\n| `defaultOrg` | GitHub organization | `\"\"` |\n| `defaultBranch` | Default branch name | `main` |\n| `useSshRemote` | Use SSH remotes instead of HTTPS | `false` |\n| `defaultReadmeDetail` | Default detail level | `normal` |\n| `defaultLicense` | License type | `MIT` |\n| `projectAuthor` | Author for copyright notices | `\"\"` |\n| `defaultVi` | Generate READMEs in Vietnamese | `false` |\n| `maxReadmeTokens` | Max tokens for AI README (`0` = no limit) | `0` |\n| `gitIncludePatterns` | Glob patterns to include in Git commits | `[]` |\n| `gitExcludePatterns` | Glob patterns to exclude from Git commits | `[]` |\n| `aiExcludePatterns` | Files never sent to AI (`.env*`, `*.key`, etc.) | `[]` |\n| `readmeExcludePatterns` | Files excluded from README context | `[]` |\n| `openaiModel` | OpenAI model name | `gpt-5.4` |\n| `ollamaBaseUrl` | Ollama server URL | `http://localhost:11434` |\n| `ollamaModel` | Ollama model name | `llama3.1` |\n\nEncrypted fields: `anthropicApiKey`, `geminiApiKey`, `openaiApiKey`, `githubToken` (AES-256-GCM, machine-bound).\n\n---\n\n## Troubleshooting\n\n**\"No GitHub token found\"** — Run `gh auth login`, set `GITHUB_TOKEN`, or run `claude-ship config`.\n\n**AI key errors** — Verify your key in `claude-ship config` or pass `--api-key`. Check billing/quota on your provider's dashboard.\n\n**Wrong files parsed** — Use `-d` (dry-run) to inspect. Ensure code blocks in the Claude response use standard fenced code blocks (` ``` `).\n\n**Repo creation failed** — Confirm your token has the `repo` scope. Check the repo name isn't already taken. For orgs, verify you have write access.\n\n---\n\n## Contributing\n\n1. Fork and clone the repo\n2. `npm install`\n3. Make changes, run `npm run lint` and `npm test`\n4. Open a PR against `main`\n\n---\n\n## Star History\n\n<p align=\"center\">\n  <a href=\"https://star-history.com/#binxgtl/claude-ship&Date\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=binxgtl/claude-ship&type=Date&theme=dark\" />\n      <source media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=binxgtl/claude-ship&type=Date\" />\n      <img alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=binxgtl/claude-ship&type=Date\" width=\"600\" />\n    </picture>\n  </a>\n</p>\n\n---\n\n[MIT](LICENSE) © 2026 binxgtl\n","readmeFilename":"README.md"}