@appstock/via
v0.1.11
Published
Developer environment convergence CLI.
Readme
via
Developer environment convergence CLI for Appstock-Tech.
via converges your machine toward the desired state declared in the private
workspace repo: repos to
clone, AWS profiles, tool versions, and shared Claude Code skills/MCP
servers. Updating the team's environment is a PR to workspace — no release
of this CLI is required for config changes.
Install
npm i -g @appstock/via
mkdir ~/dev && cd ~/dev # any directory you like — this becomes your workspace root
via setupCommands
via setup— one-time onboarding (installs prerequisites, authenticates GitHub/Claude Code/MCP/AWS, clones repos, runs a full sync). Safe to re-run any time — every step checks current state first and prompts only for what's actually missing.via setup --github|--claude|--mcp [--server <name>]|--aws [--profile <name>] [--force]re-runs a single credential step.
via sync— idempotent convergence. Self-updates, pullsworkspace, clones/updates repos, installs Claude Code plugins/MCP servers, ensures the shell env fragment's content lines and the AWS config marker block, and installs/upgrades declared tools. Never prompts.via doctor— read-only drift report with the exact fix for anything out of sync.via uninstall— removes exactly whatviaadded (AWS config block, shell env lines, plugins, marketplace). Cloned repos and~/.aws/credentialsare left untouched.
Development
npm install
npm run dev -- <command> # run from source via tsx
npm test
npm run typecheck
npm run lint
npm run build # bundles to dist/cli.mjsArchitecture
All desired state and shared content (skills, MCP servers, shell env
fragment) lives in the private workspace repo — this CLI contains only
logic. See src/lib/ for the convergence primitives (marker-block editing,
single-line content management, the tool installer engine) and
src/commands/ for the four subcommands, which compose those primitives
against workspace/manifest.json.
The CI workflow (.github/workflows/ci.yml) scans the published npm pack
tarball for AWS account ids, access key patterns, tokens, and internal
hostnames on every push — this package must never contain org-internal data,
which belongs only in the private workspace repo.
