{"_id":"@commercetools-demo/wd","_rev":"2-585e696b36588de4241dc770263e381d","name":"@commercetools-demo/wd","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@commercetools-demo/wd","version":"0.1.0","keywords":["claude","claude-code","github-actions","cli","automation","repository-dispatch"],"license":"MIT","_id":"@commercetools-demo/wd@0.1.0","maintainers":[{"name":"lgiavedoni","email":"lgiavedoni@gmail.com"},{"name":"behnam777","email":"behnam777@gmail.com"}],"homepage":"https://github.com/commercetools-demo/workload-dispatcher#readme","bugs":{"url":"https://github.com/commercetools-demo/workload-dispatcher/issues"},"bin":{"wd":"dist/cli.js"},"dist":{"shasum":"c7653dc00851a0ac19288237f2fb0618beb9732c","tarball":"https://registry.npmjs.org/@commercetools-demo/wd/-/wd-0.1.0.tgz","fileCount":18,"integrity":"sha512-dFIJsL0s4TCWRhGxwmm3LlGqLSx8nvS4FCgQXoiCbkzKjudNB2xbq4acCX4sx8cNrnnmJIKtxCCh/wO5xOJfMQ==","signatures":[{"sig":"MEYCIQDnDpN8J/L+GLapCinMFulZrGLDjzxkhVIxvn7bza/AsgIhALIsjLs70vM/J9XEPEst1tIZEZCfH4baYh3B/6XNTH/J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127120},"type":"module","engines":{"node":">=20"},"gitHead":"abd011d318eba846ab525f190d41573bc9bd8f01","scripts":{"dev":"node scripts/embed-workflow.mjs && tsx src/cli.ts","e2e":"../scripts/e2e.sh","build":"tsc -p tsconfig.json","prepack":"npm run build","prebuild":"node scripts/embed-workflow.mjs"},"_npmUser":{"name":"behnam777","email":"behnam777@gmail.com"},"repository":{"url":"git+https://github.com/commercetools-demo/workload-dispatcher.git","type":"git","directory":"cli"},"_npmVersion":"10.9.4","description":"Hand a Claude Code assignment to GitHub Actions when your own quota is gone","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^20.17.10"},"_npmOperationalInternal":{"tmp":"tmp/wd_0.1.0_1787684760503_0.3023093211474095","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@commercetools-demo/wd","version":"0.1.1","description":"Hand a Claude Code assignment to GitHub Actions when your own quota is gone","keywords":["claude","claude-code","github-actions","cli","automation","repository-dispatch"],"homepage":"https://github.com/commercetools-demo/workload-dispatcher#readme","bugs":{"url":"https://github.com/commercetools-demo/workload-dispatcher/issues"},"repository":{"type":"git","url":"git+https://github.com/commercetools-demo/workload-dispatcher.git","directory":"cli"},"license":"MIT","type":"module","bin":{"wd":"dist/cli.js"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"scripts":{"prebuild":"node scripts/embed-workflow.mjs","build":"tsc -p tsconfig.json","prepack":"npm run build","dev":"node scripts/embed-workflow.mjs && tsx src/cli.ts","e2e":"../scripts/e2e.sh"},"devDependencies":{"@types/node":"^20.17.10","tsx":"^4.19.2","typescript":"^5.7.2"},"_id":"@commercetools-demo/wd@0.1.1","gitHead":"7ae83314c4b06b12f1e627808e9e46f2c73f1131","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-UiTNqzCp04apAGAGgMSi0t3zx2EXauryLyFGKzB7fM9yue4uytiLPO/W++9dS15BZ6wPqXDj1k3FXiCt+RjSuA==","shasum":"a644d6b0b3282d0cf0590584efb4b899e376cff6","tarball":"https://registry.npmjs.org/@commercetools-demo/wd/-/wd-0.1.1.tgz","fileCount":18,"unpackedSize":127121,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHf95q/4oAGOlHWZ6OolKcH4eOY7YxIjvb5ltE+vauurAiBb+3F/she80zV6YUMIkQvU3TRvOeAsn2/tNmSZFjcwRQ=="}]},"_npmUser":{"name":"behnam777","email":"behnam777@gmail.com"},"directories":{},"maintainers":[{"name":"lgiavedoni","email":"lgiavedoni@gmail.com"},{"name":"behnam777","email":"behnam777@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/wd_0.1.1_1787686569707_0.10381215191221749"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-25T19:06:00.213Z","modified":"2026-08-25T19:36:10.004Z","0.1.0":"2026-08-25T19:06:00.688Z","0.1.1":"2026-08-25T19:36:09.849Z"},"bugs":{"url":"https://github.com/commercetools-demo/workload-dispatcher/issues"},"license":"MIT","homepage":"https://github.com/commercetools-demo/workload-dispatcher#readme","keywords":["claude","claude-code","github-actions","cli","automation","repository-dispatch"],"repository":{"type":"git","url":"git+https://github.com/commercetools-demo/workload-dispatcher.git","directory":"cli"},"description":"Hand a Claude Code assignment to GitHub Actions when your own quota is gone","maintainers":[{"name":"lgiavedoni","email":"lgiavedoni@gmail.com"},{"name":"behnam777","email":"behnam777@gmail.com"}],"readme":"# @commercetools-demo/wd\n\nHand a Claude Code assignment to GitHub Actions. For when your own quota is\ngone: you describe the work, CI does it, and the result comes back as a pull\nrequest.\n\n```bash\nnpm install -g @commercetools-demo/wd\n```\n\nNeeds Node 20+ and the [GitHub CLI](https://cli.github.com) logged in — `wd`\nstores no credential of its own and uses your existing `gh` login.\n\n> **Name clash worth knowing:** oh-my-zsh ships a `wd` (\"warp directory\") shell\n> *function*, and shell functions beat `$PATH`. If `wd send` gives you a\n> directory error, run `type wd` — you have the other one.\n\n## How it works\n\nThere are two repos in play, and the CLI keeps them strictly apart:\n\n- The **hub** holds one workflow and two secrets. One per team.\n- The **target** is the repo the work happens in. It comes from your current\n  directory's git remote and travels inside the dispatch payload.\n\n`wd send` composes your assignment (prepending a fixed preamble that tells\nClaude to work unattended and never ask questions), sends a\n`repository_dispatch` at the hub, then finds and optionally follows the run. The\nhub's workflow clones the target, runs Claude, stages the changed paths by name,\npushes a branch and opens a PR.\n\nThe assignment is deliberately kept out of the Actions log: it travels in a\npayload GitHub renders in no UI, is read off disk rather than through a `${{ }}`\ninterpolation, and is masked before anything else runs. That protects it from\nanyone with *read* access to the hub — not from anyone with *write* access. See\nthe repo's `JOINING.md` for the exact boundary before you rely on it.\n\n## Setup\n\n```bash\nwd init --hub <owner/repo>   # where the workflow and secrets live\nwd install                   # opens a PR adding the workflow to the hub\nwd doctor                    # preflight; run this whenever something is wrong\n```\n\nMerge that PR before expecting anything to happen — `repository_dispatch` only\never runs the copy of a workflow that is on the **default branch**, and a copy on\na feature branch is invisible to it. That is the most common first-run failure,\nand `wd doctor` checks for it specifically.\n\n## Sending\n\nFrom inside the repo the work is for:\n\n```bash\nwd send \"Fix PDP price rounding\" \\\n  --prompt \"Prices round down in cartTotals.ts. Make it half-up and add a test.\"\n```\n\nIt asks which remote (only if there are several) and what to call the branch,\nthen dispatches. `--watch` follows the run to its conclusion.\n\n**Write the assignment for a stranger who cannot ask you anything.** State the\nend condition, name the files if you know them, and say how to tell it worked.\n`wd send --dry-run` prints byte for byte what Claude will read.\n\nA prompt on stdin makes the run non-interactive — stdin is one stream, so it\ncannot also carry your answers. Pass `--repo` in that case.\n\n## Commands\n\n| | |\n|---|---|\n| `wd send [title]` | Dispatch an assignment (`--prompt`, `--prompt-file`, or stdin) |\n| `wd ls` | Recent dispatched runs on the hub |\n| `wd watch <job-id>` | Follow a run, from any directory, days later |\n| `wd doctor` | Preflight the hub and the target |\n| `wd install` | Add the workflow to the hub via a PR |\n| `wd init` / `wd whoami` | Configure and inspect |\n\nExit codes are meant to be scripted against: `0` ok, `1` error, `2` usage,\n`3` dispatched but no run found, `4` the run failed.\n\nFull documentation, the workflow itself, and the trust story:\n**[commercetools-demo/workload-dispatcher](https://github.com/commercetools-demo/workload-dispatcher)**\n\nMIT\n","readmeFilename":"README.md"}