{"_id":"@1stvibe/skills","_rev":"3-6db4c4b4a1ac5a5a969fab962896dccc","name":"@1stvibe/skills","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.1":{"name":"@1stvibe/skills","version":"0.1.1","keywords":["claude-code","mcp","1stvibe","skill","cli"],"author":{"name":"1stvibe.ai"},"license":"MIT","_id":"@1stvibe/skills@0.1.1","maintainers":[{"name":"altopalo","email":"michaeltadlock2@yahoo.com"}],"homepage":"https://1stvibe.ai","bugs":{"url":"https://github.com/Alt0Pal0/1stvibe/issues"},"bin":{"1stvibe-skills":"dist/install.js"},"dist":{"shasum":"ab12dcf1c6ebb10ab665f45fd29a0ce6112a2ef3","tarball":"https://registry.npmjs.org/@1stvibe/skills/-/skills-0.1.1.tgz","fileCount":5,"integrity":"sha512-Y3ZENMNzigSGUedA6Gn6Vo5tV/njEGeHDCXOHeFozU+VnYKjQPl0BxSmYNY6t1PeYmza2kCQHu0Of1PwlJCm4Q==","signatures":[{"sig":"MEUCIA7XhME42Yik2lPf1wS9OSVjyx+3wGK8/JKSf0j0lfrXAiEArxSmmA9wvDEZ+jBlTKKrrl2QW9TNaDlbke0yOAqJILc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80510},"type":"module","_from":"file:1stvibe-skills-0.1.1.tgz","engines":{"node":">=20"},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"altopalo","email":"michaeltadlock2@yahoo.com"},"_resolved":"/private/var/folders/x0/2p679xm525dfdz0g4dztbzb00000gn/T/4a41d08575e2f4f2b0f8117b257fafe8/1stvibe-skills-0.1.1.tgz","_integrity":"sha512-Y3ZENMNzigSGUedA6Gn6Vo5tV/njEGeHDCXOHeFozU+VnYKjQPl0BxSmYNY6t1PeYmza2kCQHu0Of1PwlJCm4Q==","repository":{"url":"git+https://github.com/Alt0Pal0/1stvibe.git","type":"git","directory":"packages/1stvibe-skills"},"_npmVersion":"11.12.1","description":"Install BEA + 1stvibe MCP server into your Claude Code. Run: npx @1stvibe/skills install","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.3.6","open":"^10.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.1.4","typescript":"^5","@types/node":"^20"},"_npmOperationalInternal":{"tmp":"tmp/skills_0.1.1_1777351339800_0.43257663200069274","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@1stvibe/skills","version":"0.2.0","keywords":["claude-code","mcp","1stvibe","skill","cli"],"author":{"name":"1stvibe.ai"},"license":"MIT","_id":"@1stvibe/skills@0.2.0","maintainers":[{"name":"altopalo","email":"michaeltadlock2@yahoo.com"}],"homepage":"https://1stvibe.ai","bugs":{"url":"https://github.com/Alt0Pal0/1stvibe/issues"},"bin":{"1stvibe-skills":"dist/install.js"},"dist":{"shasum":"0e534526bb1505aaa0832675c8e0ad0f70272833","tarball":"https://registry.npmjs.org/@1stvibe/skills/-/skills-0.2.0.tgz","fileCount":5,"integrity":"sha512-TEg1VHIHEhhdMRe3FJ20gLL5W2bJ3HejVpG8+y1xBA8A2G8o42tS6CL0iEVKYgvDNVg388XUVb1rAYsRzNYm2Q==","signatures":[{"sig":"MEQCIG+YbJuVLvNvnxGTDOKxSrjKqq90zSy4cwOGvJ/2db1/AiBVCGvEsYAfNvVDi+ws0U3itFlIAjrbVgFliUfPxfs4UA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91040},"type":"module","_from":"file:1stvibe-skills-0.2.0.tgz","engines":{"node":">=20"},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"altopalo","email":"michaeltadlock2@yahoo.com"},"_resolved":"/private/var/folders/x0/2p679xm525dfdz0g4dztbzb00000gn/T/3144c79213bda569cc91a3e79c5548bb/1stvibe-skills-0.2.0.tgz","_integrity":"sha512-TEg1VHIHEhhdMRe3FJ20gLL5W2bJ3HejVpG8+y1xBA8A2G8o42tS6CL0iEVKYgvDNVg388XUVb1rAYsRzNYm2Q==","repository":{"url":"git+https://github.com/Alt0Pal0/1stvibe.git","type":"git","directory":"packages/1stvibe-skills"},"_npmVersion":"11.12.1","description":"Install BEA + 1stvibe MCP server into your Claude Code. Run: npx @1stvibe/skills install","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.3.6","open":"^10.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.1.4","typescript":"^5","@types/node":"^20"},"_npmOperationalInternal":{"tmp":"tmp/skills_0.2.0_1777941621376_0.4402633183054945","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@1stvibe/skills","version":"0.3.0","description":"Install BEA + 1stvibe MCP server into your Claude Code. Run: npx @1stvibe/skills install","keywords":["claude-code","mcp","1stvibe","skill","cli"],"homepage":"https://1stvibe.ai","bugs":{"url":"https://github.com/Alt0Pal0/1stvibe/issues"},"repository":{"type":"git","url":"git+https://github.com/Alt0Pal0/1stvibe.git","directory":"packages/1stvibe-skills"},"license":"MIT","author":{"name":"1stvibe.ai"},"type":"module","bin":{"1stvibe-skills":"dist/install.js"},"engines":{"node":">=20"},"dependencies":{"open":"^10.1.0","zod":"^4.3.6"},"devDependencies":{"@types/node":"^20","tsup":"^8.5.0","typescript":"^5","vitest":"^4.1.4"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit"},"_id":"@1stvibe/skills@0.3.0","_integrity":"sha512-owq+osh6po0DoiL26e5dQmGk/98RVl8A7je0z/yQjRK9yTOOZHx29h2OKQfPYrZV5ej8hiz/tmcQKgVkEwFILw==","_resolved":"/private/var/folders/x0/2p679xm525dfdz0g4dztbzb00000gn/T/02f7c95bdbdbdd1bc849817d9a10d9f0/1stvibe-skills-0.3.0.tgz","_from":"file:1stvibe-skills-0.3.0.tgz","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-owq+osh6po0DoiL26e5dQmGk/98RVl8A7je0z/yQjRK9yTOOZHx29h2OKQfPYrZV5ej8hiz/tmcQKgVkEwFILw==","shasum":"a96bf0066516790083194d0366fb6affe0a882a9","tarball":"https://registry.npmjs.org/@1stvibe/skills/-/skills-0.3.0.tgz","fileCount":5,"unpackedSize":128099,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICeeRlIOxiOnq6LaoH9rUZBBNwT+k4e5zuJqj1HAXSVGAiEA3rLcpJ3SDoG71nx2li6Hr/8zYOIx9IZXAg3jwoL+uIA="}]},"_npmUser":{"name":"altopalo","email":"michaeltadlock2@yahoo.com"},"directories":{},"maintainers":[{"name":"altopalo","email":"michaeltadlock2@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/skills_0.3.0_1778272421768_0.849465680764723"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-28T04:42:19.708Z","modified":"2026-05-08T20:33:42.053Z","0.1.1":"2026-04-28T04:42:19.938Z","0.2.0":"2026-05-05T00:40:21.539Z","0.3.0":"2026-05-08T20:33:41.932Z"},"bugs":{"url":"https://github.com/Alt0Pal0/1stvibe/issues"},"author":{"name":"1stvibe.ai"},"license":"MIT","homepage":"https://1stvibe.ai","keywords":["claude-code","mcp","1stvibe","skill","cli"],"repository":{"type":"git","url":"git+https://github.com/Alt0Pal0/1stvibe.git","directory":"packages/1stvibe-skills"},"description":"Install BEA + 1stvibe MCP server into your Claude Code. Run: npx @1stvibe/skills install","maintainers":[{"name":"altopalo","email":"michaeltadlock2@yahoo.com"}],"readme":"# @1stvibe/skills\n\nThe CLI [Morgan](https://1stvibe.ai) runs in Phase 2 to wire [Claude Code](https://claude.com/code) into 1stvibe's MCP server and drop BEA — her build-phase teammate — into her Claude Code session.\n\n```bash\nnpx @1stvibe/skills install\n```\n\nThat's it. The CLI:\n\n1. Generates a one-time **verification code** (8 chars, e.g. `ABCD-EFGH`) and shows it in your terminal\n2. Opens your browser to `https://1stvibe.ai/account/integrations/cli-auth?session=<nonce>`\n3. Waits while you sign in (Auth.js magic-link), **type the verification code from your terminal**, and click **Authorize**\n4. Mints a bearer token server-side and returns it to the CLI\n5. Registers the `1stvibe` MCP server with Claude Code via `claude mcp add --scope user`\n6. Drops BEA's `SKILL.md` into `~/.claude/skills/bea/`\n7. Mirrors the install state to `~/.1stvibe/mcp-config.json` (chmod 600) so `--unclaim` can find your token later\n\nTotal flow: about 45 seconds end-to-end after you type the code + click Authorize.\n\n> **Why type a code?** It's the [RFC 8628](https://www.rfc-editor.org/rfc/rfc8628) device-authorization-grant pattern — it stops anyone who sends you a 1stvibe authorization link from binding their CLI to your account. The verification code only ever appears on the originating terminal, so if you didn't run `npx @1stvibe/skills install` yourself, you won't have a code to type. Close the page and ignore the link.\n\n## Prerequisites\n\n- Node.js 20 or later\n- [Claude Code](https://claude.com/code) installed and on `PATH` (`claude --version` works)\n- A 1stvibe account at [1stvibe.ai](https://1stvibe.ai)\n\n## Commands\n\n```bash\n# Install\nnpx @1stvibe/skills install\n\n# Uninstall — revokes the bearer token server-side, removes the\n# `1stvibe` MCP server entry from Claude Code, deletes the local mirror.\n# Leaves ~/.claude/skills/bea/SKILL.md in place (it's benign without\n# a working token; remove manually if you want a clean slate).\nnpx @1stvibe/skills install --unclaim\n\n# Version + endpoint\nnpx @1stvibe/skills --version\n```\n\n## Verify it worked\n\nAfter install, in any Claude Code session:\n\n```\n> Use the 1stvibe MCP server to call get_current_session\n```\n\nYou should see either your active 1stvibe session payload or a `no_active_session` envelope (if you haven't started a project yet at [1stvibe.ai](https://1stvibe.ai)). Both are signs the install is healthy.\n\n## Troubleshooting\n\n**\"Claude Code CLI not found\"** — Install Claude Code first ([download](https://claude.com/code)), confirm `claude --version` works, then re-run.\n\n**\"An MCP server named `1stvibe` is already registered\"** — Run `npx @1stvibe/skills install --unclaim` first, then re-install.\n\n**Authorization took too long (> 5 min)** — The browser-auth nonce expires after 5 minutes. Re-run `install` and type the new code + click Authorize sooner.\n\n**\"That verification code doesn't match\"** — Make sure you typed the 8 chars from your terminal, ignoring any hyphens. Codes are case-insensitive and use the alphabet `A-Z` + `2-9` (no `0`, `1`, `O`, `I`, `L` to avoid confusion). If you opened the link from a message someone else sent you, close the page — that's the security model working.\n\n**401 errors from BEA** — The bearer token was revoked (either from the [1stvibe account UI](https://1stvibe.ai/account/integrations) or by running `--unclaim`). Run `install --unclaim` then `install` again to refresh.\n\n**Behind a proxy / corporate firewall** — Set `HTTPS_PROXY` in your environment before running `npx`. The CLI uses Node's native `fetch`, which respects standard proxy env vars.\n\n## What's installed where\n\n| Path | Owner | Mode | Purpose |\n|---|---|---|---|\n| `~/.claude/skills/bea/SKILL.md` | Anthropic Claude Code | 644 | BEA's persona — Claude Code loads this as a Skill |\n| Claude Code's user-scope MCP config | Anthropic Claude Code | (managed) | Routes `1stvibe` tool calls to `https://1stvibe.ai/api/mcp` |\n| `~/.1stvibe/mcp-config.json` | This CLI | 600 | Mirror of the install state — used by `--unclaim` |\n\n## Privacy + security\n\n- **Bearer token never logs** — the only place the plaintext exists locally is `~/.1stvibe/mcp-config.json` (mode 600) and Claude Code's MCP config (managed by Claude Code).\n- **Tokens are scoped per device.** Revoking from the [1stvibe account UI](https://1stvibe.ai/account/integrations) immediately disconnects this device without affecting your laptop / other devices.\n- **No telemetry from the CLI.** The CLI POSTs one `{clientVersion, platform, nodeVersion}` install ping to 1stvibe's server immediately after install (so the platform knows you're set up); after that, all traffic is your Claude Code session ↔ MCP server.\n\n## Source\n\nThis package is open-source. The CLI source lives in the [1stvibe monorepo](https://github.com/Alt0Pal0/1stvibe) under `packages/1stvibe-skills/`. PRs welcome.\n\n## Versioning\n\nSemver. Pre-1.0, breaking changes may land on minor bumps; we'll call them out in the changelog.\n\n| Version | Notes |\n|---|---|\n| 0.1.1 | `--dev` mode now auto-attaches `?x-vercel-protection-bypass=<token>` to the MCP endpoint URL it registers with Claude Code (when `VERCEL_PROTECTION_BYPASS` env is set). Fixes \"Failed to connect\" against `dev.1stvibe.ai` post-install. No effect for production users. |\n| 0.1.0 | First release. RFC 8628 user-code device-grant flow, `claude mcp add --scope user`, BEA scaffold. Symlink-hardened mirror writes (`O_NOFOLLOW`). |\n","readmeFilename":"README.md"}