@pickaxe/pickaxe-cli
v0.2.1
Published
Standalone Pickaxe CLI workspace
Readme
pickaxe-cli
Standalone workspace for the Pickaxe CLI.
This repo is initialized around the Alpha surface from the product plan:
- workspace API key auth
- local project initialization
- doctor, remote whoami, and workspace discovery
- sync, deploy, and remote builder session commands
- a small SDK boundary for the current
/v1/studioendpoints
Install from npm after publishing:
npm install -g @pickaxe/pickaxe-cli
pickaxe --helpOr run without a global install:
npx @pickaxe/pickaxe-cli --helpQuick Start
Published package:
npm install -g @pickaxe/pickaxe-cli
pickaxe --helpLocal development:
pnpm link --global
pickaxe
pnpm cli
pnpm cli --help
pnpm cli init
pnpm cli doctor
pnpm cli auth login --api-key studio-...
pnpm cli whoami
pnpm cli workspace list
pnpm cli list
pnpm cli create
pnpm cli build "make me a pricing copilot"
pnpm cli review
pnpm cli apply
pnpm cli test --message "hello"Interactive terminals can now fill in missing builder/test inputs for you:
pickaxe build,pickaxe improve,pickaxe plan, andpickaxe chatprompt for missing text and can open a live Pickaxe picker when no id is available.pickaxe testcan prompt for a test message and choose a live Pickaxe when--idis omitted.- on one-shot builder backends,
pickaxe buildnow renders the preview and then tells you what to do next instead of failing into missing session flows.
Current Layout
pickaxe-cli/
package.json
pnpm-workspace.yaml
packages/
sdk/
src/
cli/
src/
bin/
docs/
fixtures/Current Command Status
Implemented now:
pickaxe auth login --api-keypickaxe auth logoutpickaxe whoamipickaxe workspace listpickaxe listpickaxe createpickaxe buildpickaxe improvepickaxe planpickaxe chatpickaxe reviewpickaxe applypickaxe initpickaxe doctorpickaxe pull --id <pickaxe-id> [--force]pickaxe diffpickaxe pushpickaxe docs addpickaxe docs listpickaxe docs removepickaxe historypickaxe memory <list|create|get|update|user>pickaxe users <list|get|invite|create|update>pickaxe access-groups <list|get|create|update|assign|remove>pickaxe deploy createpickaxe deploy listpickaxe test
Notes:
pull,diff,push, anddeploy createuse the current/v1/studioendpoints only.list,workspace list,whoami,deploy list,test, and the builder commands use the deployed Studio discovery and builder endpoints.createis the current CLI orchestration flow:- guided chatbot setup in the terminal
- writes or updates the local project in the current folder
- pushes the Pickaxe remotely
- can create a deployment
- can create or attach an access group to that deployment
buildsupports both backend shapes:- session-capable builder backends return a
builderSessionIdand persist it in.pickaxe/state.json - older one-shot build backends return a summary/change-set preview only, and the CLI stops cleanly after rendering it
- session-capable builder backends return a
- in interactive terminals,
create,build,improve,plan,chat, and livetestprompt for missing text and can guide you to a live Pickaxe when no id is available or the tracked id is stale. improve,plan,chat,review,apply, andtest --draftrequire a session-capable backend. On one-shot environments, the CLI prints a clear “backend only supports one-shot build” message.- if the tracked
pickaxe.idis stale and no longer exists remotely, the CLI now tells you to relink withpickaxe listplus--id <pickaxe-id>instead of surfacing a raw backend error. pullstill needs an explicit pickaxe id unless the local project already tracks one inpickaxe.yamlor.pickaxe/state.json.pullrefuses to overwrite divergent localpickaxe.yamlor prompt files unless you pass--force.- publish from the repo root with
npm publish --access publiconce the@pickaxescope permissions are configured.
Status Graph
flowchart TD
A["pickaxe cli status today"] --> B["works today"]
A --> C["works with caveats"]
A --> D["still needs work"]
B --> B1["pickaxe auth login --api-key"]
B --> B2["pickaxe auth logout"]
B --> B3["pickaxe init"]
B --> B4["pickaxe doctor"]
B --> B5["pickaxe whoami"]
B --> B6["pickaxe workspace list"]
B --> B7["pickaxe list"]
B --> B8["pickaxe memory <list|create|get|update|user>"]
B --> B9["pickaxe users <list|get|invite|create|update>"]
B --> B10["pickaxe access-groups <list|get|create|update|assign|remove>"]
B --> B11["pickaxe deploy list"]
C --> C1["pickaxe build<br/>works on both session and one-shot backends"]
C --> C2["pickaxe improve|plan|chat<br/>requires session-capable backend"]
C --> C3["pickaxe review|apply|test --draft<br/>requires stored builder session"]
C --> C4["pickaxe pull --id <pickaxe-id><br/>needs api key + explicit id or tracked local id"]
C --> C5["pickaxe diff [--id] [--verbose]<br/>needs api key"]
C --> C6["pickaxe push [--id] [--dry-run]<br/>needs api key"]
C --> C7["pickaxe docs add|list|remove<br/>needs api key"]
C --> C8["pickaxe history [--id ...]<br/>needs api key"]
C --> C9["pickaxe deploy create --type ...<br/>needs api key"]
C --> C10["pickaxe test --message ...<br/>depends on backend support"]
D --> D1["explain command"]
D --> D2["actions and mcps manifest parity"]
classDef good fill:#e8f5e9,stroke:#2e7d32,color:#1b5e20;
classDef partial fill:#fff8e1,stroke:#f9a825,color:#5d4037;
classDef todo fill:#ffebee,stroke:#c62828,color:#7f1d1d;
class B,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11 good;
class C,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 partial;
class D,D1,D2 todo;For this pass, local auth is stored in ~/.pickaxe/config.json as a temporary fallback until keychain support lands.
