{"_id":"@baseline-ia/baseline-cloud-client","_rev":"6-c7a98ea05a236a89ff26353f1fe11ca7","name":"@baseline-ia/baseline-cloud-client","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.0":{"name":"@baseline-ia/baseline-cloud-client","version":"0.1.0","keywords":["baseline","baseline-cloud","telemetry","opencode","claude-code","kiro","cli","plugin"],"license":"MIT","_id":"@baseline-ia/baseline-cloud-client@0.1.0","maintainers":[{"name":"mikecobas","email":"cobas.miguel@gmail.com"}],"homepage":"https://github.com/baseline-ia/baseline-cloud-client#readme","bugs":{"url":"https://github.com/baseline-ia/baseline-cloud-client/issues"},"bin":{"baseline-cloud":"dist/cli.js"},"dist":{"shasum":"1e4239f66db6dc9b8f4590669e2c5dafcfcd601b","tarball":"https://registry.npmjs.org/@baseline-ia/baseline-cloud-client/-/baseline-cloud-client-0.1.0.tgz","fileCount":8,"integrity":"sha512-au6D+ND56eHS26H1Jt4Evz2037vf9UoqnZOHxIN5j8SgIbYNOoH+H7M+9wpUsLQ3AV0JkcjPhE4x12HMnBFcMg==","signatures":[{"sig":"MEYCIQD2mBWi5hNEpcZ1RZG1B1bkYsC7SUuDBnWi/CnJTjcxhwIhAPGx+Tw073MkHQT40vSvnqccRKx0P69Hjt+oVXWc7rl6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":462736},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"a14d700c4b77394d1257e99f99c2a82bafe3be85","scripts":{"dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsup src/index.ts src/cli.ts --format cjs --dts --sourcemap=inline --outDir dist --clean","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mikecobas","email":"cobas.miguel@gmail.com"},"repository":{"url":"git+https://github.com/baseline-ia/baseline-cloud-client.git","type":"git"},"_npmVersion":"11.6.2","description":"Optional addon — connects any CLI to a self-hosted baseline-cloud instance for telemetry, openspec lifecycle tracking, and post-commit git hooks.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"chalk":"4.1.2","fs-extra":"^11.0.0","commander":"^12.1.0"},"preferGlobal":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.3.0","vitest":"^1.6.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/fs-extra":"^11.0.4","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/baseline-cloud-client_0.1.0_1786255174793_0.8468696384979357","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@baseline-ia/baseline-cloud-client","version":"0.1.1","keywords":["baseline","baseline-cloud","telemetry","opencode","claude-code","kiro","cli","plugin"],"license":"MIT","_id":"@baseline-ia/baseline-cloud-client@0.1.1","maintainers":[{"name":"mikecobas","email":"cobas.miguel@gmail.com"}],"homepage":"https://github.com/baseline-ia/baseline-cloud-client#readme","bugs":{"url":"https://github.com/baseline-ia/baseline-cloud-client/issues"},"bin":{"baseline-cloud":"dist/cli.js"},"dist":{"shasum":"7f77eee36d8479203535172bceef4d36a4f79f15","tarball":"https://registry.npmjs.org/@baseline-ia/baseline-cloud-client/-/baseline-cloud-client-0.1.1.tgz","fileCount":8,"integrity":"sha512-xaP7GUs0QIlqRWPfXkV9DBirDqKU11/Qs9tZLad3IFOwZ0fF6nCtKkYyvfRI347/3757bgRhGiMehsYwUzK6jA==","signatures":[{"sig":"MEUCICpX3yvDEWD4zEHpEs0aYJRS/F9X3D29j1bRGY+ZJYmGAiEAxRxYUnjJ15YRjkZo3oo5geh9RMU4c81kyqTN/RBe60c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":487724},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"cb9d291c18218c9db4ba2c965684407c9e3a2a19","scripts":{"dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsup src/index.ts src/cli.ts --format cjs --dts --sourcemap=inline --outDir dist --clean","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mikecobas","email":"cobas.miguel@gmail.com"},"repository":{"url":"git+https://github.com/baseline-ia/baseline-cloud-client.git","type":"git"},"_npmVersion":"11.6.2","description":"Optional addon — connects any CLI to a self-hosted baseline-cloud instance for telemetry, openspec lifecycle tracking, and post-commit git hooks.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"chalk":"4.1.2","fs-extra":"^11.0.0","commander":"^12.1.0"},"preferGlobal":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.3.0","vitest":"^1.6.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/fs-extra":"^11.0.4","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/baseline-cloud-client_0.1.1_1786256124084_0.5336231929260054","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@baseline-ia/baseline-cloud-client","version":"0.1.2","keywords":["baseline","baseline-cloud","telemetry","opencode","claude-code","kiro","cli","plugin"],"license":"MIT","_id":"@baseline-ia/baseline-cloud-client@0.1.2","maintainers":[{"name":"mikecobas","email":"cobas.miguel@gmail.com"}],"homepage":"https://github.com/baseline-ia/baseline-cloud-client#readme","bugs":{"url":"https://github.com/baseline-ia/baseline-cloud-client/issues"},"bin":{"baseline-cloud":"dist/cli.js"},"dist":{"shasum":"777c90173379ace28feb8ab3054a70d3c4723e67","tarball":"https://registry.npmjs.org/@baseline-ia/baseline-cloud-client/-/baseline-cloud-client-0.1.2.tgz","fileCount":8,"integrity":"sha512-kR+E1Bv3WRhZ2pLFmZz6aua8ikAtibW9mBWiCXt6rYNIEHxMgi3o/uLhA613wUM8kc0lmBMahDtBfFJ3cPZ16w==","signatures":[{"sig":"MEUCIQD2ISEEFdA7VxOEsHOVm5QTqzAKjhZ0dvA6xr1PrX7KygIgQC0ocJKnN8TY9z1lK4z7TbXIJz8PU0nZChXLniliSGE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":550352},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"488586ba42fc48fc32fae56aad70c2a4d91e67b4","scripts":{"dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsup src/index.ts src/cli.ts --format cjs --dts --sourcemap=inline --outDir dist --clean","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mikecobas","email":"cobas.miguel@gmail.com"},"repository":{"url":"git+https://github.com/baseline-ia/baseline-cloud-client.git","type":"git"},"_npmVersion":"11.6.2","description":"Optional addon — connects any CLI to a self-hosted baseline-cloud instance for telemetry, openspec lifecycle tracking, and post-commit git hooks.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"chalk":"4.1.2","fs-extra":"^11.0.0","commander":"^12.1.0"},"preferGlobal":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.3.0","vitest":"^1.6.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/fs-extra":"^11.0.4","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/baseline-cloud-client_0.1.2_1786261128614_0.7226075382631989","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@baseline-ia/baseline-cloud-client","version":"0.1.3","keywords":["baseline","baseline-cloud","telemetry","opencode","claude-code","kiro","cli","plugin"],"license":"MIT","_id":"@baseline-ia/baseline-cloud-client@0.1.3","maintainers":[{"name":"mikecobas","email":"cobas.miguel@gmail.com"}],"homepage":"https://github.com/baseline-ia/baseline-cloud-client#readme","bugs":{"url":"https://github.com/baseline-ia/baseline-cloud-client/issues"},"bin":{"baseline-cloud":"dist/cli.js"},"dist":{"shasum":"1dbd7fd9c35c589a1372b129a18eb099b7a4fdbb","tarball":"https://registry.npmjs.org/@baseline-ia/baseline-cloud-client/-/baseline-cloud-client-0.1.3.tgz","fileCount":10,"integrity":"sha512-dTUJFwgcZHABQUJ4KNCUXnpUHX5SrY845S/VOsHqHntIhPZGnLPKPKpys9s4XVOIbQVcRzE3338kcGFDC1/FCw==","signatures":[{"sig":"MEYCIQDFkCHa09BoVNjMLiQkG+aW7AV9deE8x6XAzZ6J60PBxQIhAPsqmSzaQ/yLuZFRJ4K5ywJttLjcntwIQW2bVqRPgFCY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":599352},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"d56e5521aac20d57654f1e7de12e9c20810cf748","scripts":{"dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsup src/index.ts src/cli.ts --format cjs --dts --sourcemap=inline --outDir dist --clean","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mikecobas","email":"cobas.miguel@gmail.com"},"repository":{"url":"git+https://github.com/baseline-ia/baseline-cloud-client.git","type":"git"},"_npmVersion":"11.6.2","description":"Optional addon — connects any CLI to a self-hosted baseline-cloud instance for telemetry, openspec lifecycle tracking, and post-commit git hooks.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"chalk":"4.1.2","fs-extra":"^11.0.0","commander":"^12.1.0"},"preferGlobal":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.3.0","vitest":"^1.6.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/fs-extra":"^11.0.4","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/baseline-cloud-client_0.1.3_1786313695583_0.18599083490672563","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@baseline-ia/baseline-cloud-client","version":"0.1.4","keywords":["baseline","baseline-cloud","telemetry","opencode","claude-code","kiro","cli","plugin"],"license":"MIT","_id":"@baseline-ia/baseline-cloud-client@0.1.4","maintainers":[{"name":"mikecobas","email":"cobas.miguel@gmail.com"}],"homepage":"https://github.com/baseline-ia/baseline-cloud-client#readme","bugs":{"url":"https://github.com/baseline-ia/baseline-cloud-client/issues"},"bin":{"baseline-cloud":"dist/cli.js"},"dist":{"shasum":"dac6bfe752d96d2c77ecea312c85b7c9f2ef7ee9","tarball":"https://registry.npmjs.org/@baseline-ia/baseline-cloud-client/-/baseline-cloud-client-0.1.4.tgz","fileCount":10,"integrity":"sha512-Wxx6Q9/Fsm8ZQPAFpeOQ+Uu/wl2NWH8V6eyERpAhm8tLQ9Az7VcBs+ZdYCKaniq8Zw2wZggUKYic6tjGfyPBGg==","signatures":[{"sig":"MEQCIAoxetf9LSgRJJ1oYib4qMp5AVBiDW7oE/Wi3K6hPE+RAiBCJs8eOHB8f8j6n15McuxWyWw8wBXox3KGhj2xUAS7fA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621380},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"6f54c4bddb2ade68cbd66915b8de67c93da41842","scripts":{"dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest run","build":"tsup src/index.ts src/cli.ts --format cjs --dts --sourcemap=inline --outDir dist --clean","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mikecobas","email":"cobas.miguel@gmail.com"},"repository":{"url":"git+https://github.com/baseline-ia/baseline-cloud-client.git","type":"git"},"_npmVersion":"11.6.2","description":"Optional addon — connects any CLI to a self-hosted baseline-cloud instance for telemetry, openspec lifecycle tracking, and post-commit git hooks.","directories":{},"_nodeVersion":"20.19.5","dependencies":{"chalk":"4.1.2","fs-extra":"^11.0.0","commander":"^12.1.0"},"preferGlobal":true,"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.3.0","vitest":"^1.6.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/fs-extra":"^11.0.4","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/baseline-cloud-client_0.1.4_1786318936715_0.9268837922426101","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@baseline-ia/baseline-cloud-client","version":"0.1.5","description":"Optional addon — connects any CLI to a self-hosted baseline-cloud instance for telemetry, openspec lifecycle tracking, and post-commit git hooks.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/baseline-ia/baseline-cloud-client.git"},"homepage":"https://github.com/baseline-ia/baseline-cloud-client#readme","bugs":{"url":"https://github.com/baseline-ia/baseline-cloud-client/issues"},"keywords":["baseline","baseline-cloud","telemetry","opencode","claude-code","kiro","cli","plugin"],"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js","import":"./dist/index.js","default":"./dist/index.js"}},"bin":{"baseline-cloud":"dist/cli.js"},"scripts":{"build":"tsup src/index.ts src/cli.ts --format cjs --dts --sourcemap=inline --outDir dist --clean","dev":"tsx src/index.ts","lint":"tsc --noEmit","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"preferGlobal":true,"dependencies":{"chalk":"4.1.2","commander":"^12.1.0","fs-extra":"^11.0.0"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/node":"^22.0.0","@vitest/coverage-v8":"^1.6.0","tsup":"^8.3.0","tsx":"^4.19.0","typescript":"^5.7.0","vitest":"^1.6.0"},"engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"gitHead":"cda895a4cf0056fcd8f94b5814d0082d8cce412d","_id":"@baseline-ia/baseline-cloud-client@0.1.5","_nodeVersion":"20.19.5","_npmVersion":"11.6.2","dist":{"integrity":"sha512-hki0oBzMuyGtoofnIXTkkt4Zq3rNdiMEZG0gefNgWcC/EquBxRaPu4Hk/EIlKc9RJlKrtbPWevlL6C8IP1YVUQ==","shasum":"87f553100bd31c0060e62511dc4018a1aebf6fc6","tarball":"https://registry.npmjs.org/@baseline-ia/baseline-cloud-client/-/baseline-cloud-client-0.1.5.tgz","fileCount":10,"unpackedSize":714546,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAOgx5KpHLCNWsrGD6V3gHGZe68KwQr1K7TTq2d1pxb8AiANd2dC6soYZRfMveejUObikXHqnJk2E8/dnI1ebCKIrA=="}]},"_npmUser":{"name":"mikecobas","email":"cobas.miguel@gmail.com"},"directories":{},"maintainers":[{"name":"mikecobas","email":"cobas.miguel@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/baseline-cloud-client_0.1.5_1786348588944_0.42697233823460135"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-09T05:59:34.585Z","modified":"2026-08-10T07:56:29.293Z","0.1.0":"2026-08-09T05:59:34.980Z","0.1.1":"2026-08-09T06:15:24.261Z","0.1.2":"2026-08-09T07:38:48.791Z","0.1.3":"2026-08-09T22:14:55.732Z","0.1.4":"2026-08-09T23:42:16.963Z","0.1.5":"2026-08-10T07:56:29.088Z"},"bugs":{"url":"https://github.com/baseline-ia/baseline-cloud-client/issues"},"license":"MIT","homepage":"https://github.com/baseline-ia/baseline-cloud-client#readme","keywords":["baseline","baseline-cloud","telemetry","opencode","claude-code","kiro","cli","plugin"],"repository":{"type":"git","url":"git+https://github.com/baseline-ia/baseline-cloud-client.git"},"description":"Optional addon — connects any CLI to a self-hosted baseline-cloud instance for telemetry, openspec lifecycle tracking, and post-commit git hooks.","maintainers":[{"name":"mikecobas","email":"cobas.miguel@gmail.com"}],"readme":"# @baseline-ia/baseline-cloud-client\n\nOptional client and CLI for connecting a Baseline CLI to a self-hosted baseline-cloud server. It provides token authentication, telemetry, OpenSpec lifecycle tracking, post-commit hooks, and integrations for supported AI tools.\n\n## Requirements\n\n- Node.js 18 or newer\n- A self-hosted baseline-cloud server for cloud features\n\n## Install\n\nInstall the CLI globally:\n\n```bash\nnpm install --global @baseline-ia/baseline-cloud-client\n```\n\nOr install it in a project:\n\n```bash\nnpm install @baseline-ia/baseline-cloud-client\n```\n\nThe package exports a programmatic plugin API and the `baseline-cloud` executable.\n\n### Install from the repository\n\nUntil the package is published to npm, install the CLI from a local checkout:\n\n```bash\ngit clone https://github.com/baseline-ia/baseline-cloud-client.git\ncd baseline-cloud-client\nnpm install\nnpm install --global .\n```\n\nVerify the installation with:\n\n```bash\nbaseline-cloud --help\n```\n\n## CLI Usage\n\nAuthenticate interactively:\n\n```bash\nbaseline-cloud cloud login\n```\n\nThe interactive command asks whether to use username/password or an existing API token. The token option prompts for the server URL and token, then stores the credentials with owner-only file permissions.\n\nUse an existing bearer token instead of username and password:\n\n```bash\nbaseline-cloud cloud login --server https://cloud.example.com --token <raw-token>\n```\n\nFor CI, provide `BASELINE_CLOUD_URL`, `BASELINE_CLOUD_USERNAME`, and `BASELINE_CLOUD_PASSWORD`, then run:\n\n```bash\nbaseline-cloud cloud login --no-input\n```\n\nThe token is stored in `~/.baseline/cloud.json` with owner-only permissions. To inspect the connection or remove the local and server-side token:\n\n```bash\nbaseline-cloud cloud status\nbaseline-cloud cloud logout\n```\n\n## Setup Integrations\n\nDetect supported tools and install their telemetry integrations:\n\n```bash\nbaseline-cloud setup\n```\n\nSetup currently supports Claude Code, OpenCode, Kiro IDE, Kiro CLI, and CommandCode. It can install hooks, steering instructions, or the OpenCode plugin where the tool is detected.\n\n### Update the CLI\n\nWhen an installed CLI is stale or does not include a requested command, update the global npm package and refresh detected integrations in one step:\n\n```bash\nbaseline-cloud update\n```\n\nThe command runs `npm install --global @baseline-ia/baseline-cloud-client@latest`, then invokes setup from the freshly installed package. Setup is idempotent and does not replace existing user skill files or integration content. A failed install or setup returns a non-zero status. Credentials in `~/.baseline/cloud.json` and the project identity in `.baseline/project.json` remain unchanged.\n\n### Conversational AI skill\n\n`baseline-cloud setup` installs the reusable `baseline-cloud-workflow` skill into the detected project's `.claude/skills` and `.opencode/skills` locations without replacing existing files. Kiro receives the same guidance in its managed steering block, which is appended only when missing. The skill teaches supported agents to resolve `.baseline/project.json`, wrap SDD timing, and sync queued telemetry without interrupting user work. Re-running setup is safe and idempotent.\n\n### Corporate skills\n\nCorporate skills are assigned to an enrolled project by baseline-cloud and can be synchronized locally:\n\n```bash\nbaseline-cloud skills sync\nbaseline-cloud skills status\nbaseline-cloud skills verify\nbaseline-cloud skills verify --project /path/to/project\n```\n\n`skills sync` requires cloud credentials and the stable project identity from `.baseline/project.json` (or the project option). It calls the corporate-skills APIs, verifies each SHA-256 hash before writing, and stores canonical files at `~/.baseline/skills/<slug>/<version>/SKILL.md` with a generated `manifest.json`. The lock is `~/.baseline/skills/lock.json`; its `skills` object is keyed by slug and records the skill id, version, hash, installation time, fail-closed policy, and logical canonical path.\n\nCanonical files and copies under `.claude/skills/<slug>/` and `.opencode/skills/<slug>/` are read-only (`0444`). Corporate copies take precedence over editable local copies at those managed paths. `setup` warns when they already exist, and a later `skills sync` may replace them atomically only as part of a verified update; manual edits are not a supported override.\n\n`skills verify` checks the local content and manifest against the lock and is suitable for CI. Skills with `fail_closed: true` also require online verification; use `BASELINE_CLOUD_URL` and `BASELINE_CLOUD_TOKEN` in CI or a saved cloud login. The server must provide `GET /api/v1/skills?project=<slug>`, `GET /api/v1/skills/<slug>/verify?project=<slug>`, and project enrollment responses with `assigned_skills` for automatic post-enrollment sync.\n\n## Telemetry\n\nTelemetry is sent only when cloud credentials are available. Opt out for a process or CI job with:\n\n```bash\nBASELINE_TELEMETRY=0 baseline-cloud cloud status\n```\n\nHost applications can also disable telemetry with their own `--no-telemetry` option when supported. Disabling telemetry clears queued events and prevents new events from being sent.\n\n### Project identity\n\nProject-scoped telemetry uses one stable slug resolver. The precedence is:\n\n1. An explicit simple name passed with `--project`, such as `--project baseline-cloud-client`.\n2. The nearest `.baseline/project.json` found from the requested directory (or cwd) upward.\n3. The repository name from the directory's Git `remote.origin.url` when it is a GitHub or Bitbucket HTTPS, SSH, or SCP URL.\n4. The current directory basename when no valid supported Git origin exists.\n\nThe result is lowercased, unsupported characters become `-`, and the slug is limited to 128 characters. For example, `https://github.com/baseline-ia/baseline-cloud-client.git` becomes `baseline-cloud-client`; `--project client-a` always remains the explicit `client-a` identity.\n\nTo configure a stable identity for a repository, commit this normal JSON file at `.baseline/project.json`:\n\n```json\n{\n  \"slug\": \"baseline-cloud-client\"\n}\n```\n\nInitialize it from the repository root, or target another directory with `--path`:\n\n```bash\nbaseline-cloud project init --slug baseline-cloud-client\nbaseline-cloud project init --slug client-a --path /path/to/project\n```\n\nThe command refuses to overwrite an existing file unless `--force` is provided. Commit `.baseline/project.json` with the project so every checkout uses the same identity. Never put credentials or tokens in this file; tokens remain in `~/.baseline/cloud.json`.\n\n## SDD Phase Timing\n\nRecord actual elapsed time for each SDD phase with the explicit commands below:\n\n```bash\nbaseline-cloud sdd phase start --phase design --change add-feature [--project /path/to/project]\nbaseline-cloud sdd phase complete --phase design --change add-feature [--project /path/to/project]\nbaseline-cloud sdd phase run --phase design --change add-feature [--project /path/to/project] -- npm run build\nbaseline-cloud telemetry sync\n```\n\nSupported phases are `explore`, `propose`, `spec`, `design`, `tasks`, `apply`, `verify`, and `archive`. Start state is stored in `~/.baseline/sdd-phase-state.json` with owner-only permissions. Completion emits the measured `durationSeconds` and removes the matching state only after the event receives a confirmed 2xx response.\n\n`phase run` starts timing, runs the command with inherited stdio, records `completed` or `failed`, and returns the child exit code. A signal or non-zero child exit still records a failed completion. If the wrapper process itself is interrupted, the active phase is retained and no completion is invented.\n\nStart and completion events are written to the durable state file before network delivery. Logout removes only credentials; it does not remove timing state. Missing credentials, disabled telemetry, network errors, and 401/403/5xx responses leave pending events in place. After logging in, run `baseline-cloud telemetry sync`; only confirmed 2xx deliveries are removed, so repeating the command is safe. The wrapper does not launch another `baseline-cloud` process, so uninstalling the global CLI while it is already running does not prevent its in-memory completion path or later recovery.\n\nAn SDD orchestrator using separate commands must invoke `start` immediately before each phase begins and `complete` immediately after it ends. The CLI does not infer phase boundaries from `sdd init`, filesystem changes, or skill events.\n\n## OpenCode Plugin\n\nRun `baseline-cloud setup` with OpenCode installed to copy and register the bundled plugin automatically. The plugin tracks skill invocations and session token usage through the `baseline-cloud` CLI.\n\nFor a host that loads plugins programmatically, import the package and register it with the host plugin context:\n\n```js\nconst { default: register } = await import('@baseline-ia/baseline-cloud-client')\nawait register(pluginContext)\n```\n\nThe package also exposes named helpers such as `login`, `logout`, `track`, and `flush`.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}