@putdotio/cli, theputiobinary, shipped through npm, Homebrew, and standalone binaries.README.mdis for users,CONTRIBUTING.mdfor contributors,skills/putio-clifor consumer agents; that skill ships in the npm package.
- Setup, worktrees included:
pnpm exec vp install, thenpnpm exec vp config. pnpm exec vp run verify: the gate.- Focused checks are the
scriptsin package.json; run them aspnpm exec vp run <script>.
- Keep command modules thin; shared behavior goes in Effect services and layers with
Schemaboundaries and tagged errors. - JSON output is the machine contract; terminal output is a separate adapter.
- When commands, flags, output, auth,
automation, ordescribe.versionchange in a way consumers need, updateREADME.md,skills/putio-cli/SKILL.md, and its references in the same change.
The installed version's guide is node_modules/effect/AGENTS.md; consult it for
the APIs the change touches, and search node_modules/effect/src for anything it
does not cover. Keep the pinned effect version.
- Docs only:
pnpm exec vp check ., pluspnpm exec vp run skills:lintforskills/*; no runtime proof. - Source change:
pnpm exec vp run verify. Prefer in-process tests unless the process boundary is the behavior under test; add command-path coverage when theeffect/clicommand boundary changes. - Commands, flags, output, auth, or config persistence: also
pnpm exec vp run build, then drive the changed command with theverify-putio-cliskill, which sandboxes the binary against a fixture API. - Standalone binary bundling:
pnpm exec vp run build:sea, thenpnpm exec vp run verify:sea.
- The built binary authenticates with
PUTIO_CLI_TOKENwhen it is set, otherwise with the profile in~/.config/putio/config.json(or underXDG_CONFIG_HOME).describeandwhoamionly read; file, transfer, and upload commands change that real account. For isolated state, unsetPUTIO_CLI_TOKENand pointPUTIO_CLI_CONFIG_PATHat a scratch file. - README
Crash Reportingis a public privacy promise. Any change to what a crash event carries or when it is sent updates that section in the same change.
- Pull requests squash-merge to
main; every merge must be releasable. - The squash commit's type decides the release (
.releaserc.json). install.shonmainis the livecurl | shinstaller; a merge changes it at once.
skills/putio-cli/SKILL.mdroutes; surface detail lives in the matching reference file.skills/putio-cli/agents/openai.yamlis the Codex picker metadata; keep it aligned with the skill frontmatter.