Development instructions for agents working on this repository.
- Standalone TypeScript package for the put.io CLI
- Main code lives in
src/* - Durable docs live in
docs/* - Consumer-facing skills live in
skills/*
Primary:
pnpm exec vp run verify
Focused:
pnpm exec vp run checkpnpm exec vp run buildpnpm exec vp run testpnpm exec vp run coveragepnpm exec vp run check:dead-codepnpm exec vp run skills:lintpnpm exec vp run smoke:pack— writes the report to.artifacts/smoke-packed-install.jsonpnpm exec vp run build:seathenpnpm exec vp run verify:sea
Contributing explains when each focused check applies.
Runtime proofs:
./dist/bin.mjs describe./dist/bin.mjs whoami --fields auth --output json
Run pnpm exec vp install, pnpm exec vp config, then
pnpm exec vp run verify. Effect guidance and inspectable source come from the
installed package under node_modules/effect.
- Keep
README.mduser-facing. Put contributor workflow inCONTRIBUTING.md, architecture indocs/*, and consumer usage patterns inskills/*. - Keep command modules thin and move shared behavior into internal Effect-native helpers and services.
- Prefer
Effect, services, layers,Schema, and tagged errors over ad hoc control flow. - Treat JSON output as the machine contract and terminal output as a separate adapter layer.
- Update docs when flags, command behavior, or architecture boundaries change.
- When the public CLI surface or agent-facing setup flow changes, update
README.mdandskills/putio-cli/SKILL.mdtogether so the copy-paste prompt and consumer guidance stay aligned. - Keep docs free of volatile metrics.
This repository uses the Effect TypeScript library.
Before writing any Effect code, first read node_modules/effect/AGENTS.md
completely, and follow the links in the file when required.
If you need to learn more about particular Effect APIs and concepts that the
guide doesn't cover, search through the source code in node_modules/effect/src.
- Prefer in-process tests unless the process boundary is the behavior under test.
- Add command-path coverage when the
@effect/cliboundary changes. - Run repo guardrails before closing work, then prove important command-surface changes with the built binary.
skills/*is for reusable consumer-facing skills, not repo onboarding.CLAUDE.mdshould remain a symlink to this file.