{"owner":"vercel-labs","repo":"portless","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# Agent Rules\n\n## Package Manager\n\nUse `pnpm` for all package management commands (not npm or yarn).\n\nException: End-user install instructions should use `npm install -g` (global) or `npm install -D` (project dev dependency) since npm is universal.\n\n## Dependencies\n\nAlways check for the latest npm version when adding dependencies. Use `pnpm add <package>` (without version) to get the latest, or verify with `npm view <package> version` first.\n\n## No Emojis\n\nDo not use emojis anywhere in this repository (code, comments, output, docs).\n\n## Dashes\n\nNever use `--` as a dash in prose, comments, or user-facing output. Use an em dash (\\u2014) when a dash is needed, but prefer rephrasing to avoid dashes entirely. The only exception is CLI flags (e.g. `--port`).\n\n## Boolean Environment Variables\n\nDocument boolean env vars using only `0` and `1` in CLI help, SKILL.md, docs pages, and README. Code accepts `true`/`false` as well (and `skip` for `PORTLESS`), but these alternatives are not documented.\n\n## Docs Updates\n\nWhen a change affects how humans or agents use portless (new/changed/removed commands, flags, behavior, or config), update all of these:\n\n1. `README.md` (user-facing documentation)\n2. `skills/portless/SKILL.md` (agent skill for using portless)\n3. `packages/portless/src/cli.ts` (`--help` output)\n\n## Releasing\n\nReleases are manual, single-PR affairs. The maintainer controls the changelog voice and format.\n\nTo prepare a release:\n\n1. Create a branch (e.g. `prepare-v1.2.0`)\n2. Bump the version in `packages/portless/package.json`\n3. Write the changelog entry in `CHANGELOG.md`, wrapped in `<!-- release:start -->` and `<!-- release:end -->` markers\n4. Remove the `<!-- release:start -->` and `<!-- release:end -->` markers from the previous release entry (only the latest release should have markers)\n5. Add a matching entry to `apps/docs/src/app/changelog/page.mdx`\n6. Open a PR and merge to `main`\n\nCI compares the version in `packages/portless/package.json` to what's on npm. If it differs, it builds, publishes, and creates the GitHub release automatically. The release body is extracted from the content between the markers.\n\n## Windows Debugging\n\nA remote Windows Server 2022 EC2 instance is available for debugging Windows-specific issues. It uses AWS Systems Manager (SSM) with no SSH or open ports. Commands run via `aws ssm send-command` and return stdout/stderr.\n\nAll scripts require `AWS_PROFILE=portless-debug` (or the profile must be set as default). Prefix every command with it or export it for the session:\n\n```bash\nexport AWS_PROFILE=portless-debug\n```\n\n### Prerequisites\n\nThe instance must be provisioned first (one-time, by a human):\n\n```bash\n./scripts/windows-debug/provision.sh\n```\n\nRequires: AWS CLI v2 configured with `ec2:*`, `iam:CreateRole`, `iam:AttachRolePolicy`, `ssm:SendCommand`, `ssm:GetCommandInvocation` permissions and a default VPC.\n\n### Usage\n\nStart the instance (if stopped):\n\n```bash\n./scripts/windows-debug/start.sh\n```\n\nRun a command on Windows:\n\n```bash\n./scripts/windows-debug/run.sh \"<powershell-command>\"\n```\n\nSync the current git branch and rebuild:\n\n```bash\n./scripts/windows-debug/sync.sh\n```\n\nStop the instance when done (avoids cost):\n\n```bash\n./scripts/windows-debug/stop.sh\n```\n\n### Important notes\n\n**SSM agent takes a long time to come online.** After starting or restarting the instance, the SSM agent can take 5 to 10 minutes before it accepts commands. If `run.sh` returns `InvalidInstanceId`, wait and retry. Do not assume the instance is broken; poll with increasing intervals.\n\n**PowerShell uses `;` not `&&`.** The `run.sh` wrapper executes PowerShell, which does not support `&&` as a command separator. Use `;` instead:\n\n```bash\n./scripts/windows-debug/run.sh \"cd C:\\portless; pnpm test\"\n```\n\n**OpenSSL may not be at the expected path.** The bootstrap installs OpenSSL to `C:\\Program Files\\OpenSSL-Win64\\bin`, but this can fail silently. Git bundles its own OpenSSL at `C:\\Program Files\\Git\\mingw64\\bin`. If `openssl` is not found, add Git's path:\n\n```bash\n./scripts/windows-debug/run.sh '$env:PATH = \"C:\\Program Files\\Git\\mingw64\\bin;$env:PATH\"; openssl version'\n```\n\n**SSM runs as SYSTEM.** Commands execute as the SYSTEM account, not a normal user. This affects user-specific operations (e.g., `certutil -addstore -user Root` targets SYSTEM's trust store, not a real user's). Keep this in mind when testing user-facing features.\n\n### Common Workflows\n\nRun unit tests on Windows:\n\n```bash\n./scripts/windows-debug/run.sh \"cd C:\\portless; pnpm test\"\n```\n\nRun e2e tests on Windows:\n\n```bash\n./scripts/windows-debug/run.sh \"cd C:\\portless; pnpm test:e2e\"\n```\n\nCheck bootstrap progress (first boot only):\n\n```bash\n./scripts/windows-debug/run.sh \"Get-Content C:\\bootstrap.log\"\n```\n\nThe repo lives at `C:\\portless` on the instance. Node.js 24, pnpm 11, Git, and OpenSSL are pre-installed. The `run.sh` wrapper automatically adds these tools to PATH.\n\n<!-- opensrc:start -->\n\n## Source Code Reference\n\nSource code for dependencies is available in `opensrc/` for deeper understanding of implementation details.\n\nSee `opensrc/sources.json` for the list of available packages and their versions.\n\nUse this source code when you need to understand how a package works internally, not just its types/interface.\n\n### Fetching Additional Source Code\n\nTo fetch source code for a package or repository you need to understand, run:\n\n```bash\nnpx opensrc <package>           # npm package (e.g., npx opensrc zod)\nnpx opensrc pypi:<package>      # Python package (e.g., npx opensrc pypi:requests)\nnpx opensrc crates:<package>    # Rust crate (e.g., npx opensrc crates:serde)\nnpx opensrc <owner>/<repo>      # GitHub repo (e.g., npx opensrc vercel/ai)\n```\n\n<!-- opensrc:end -->\n"},"files":{"AGENTS.md":"# Agent Rules\n\n## Package Manager\n\nUse `pnpm` for all package management commands (not npm or yarn).\n\nException: End-user install instructions should use `npm install -g` (global) or `npm install -D` (project dev dependency) since npm is universal.\n\n## Dependencies\n\nAlways check for the latest npm version when adding dependencies. Use `pnpm add <package>` (without version) to get the latest, or verify with `npm view <package> version` first.\n\n## No Emojis\n\nDo not use emojis anywhere in this repository (code, comments, output, docs).\n\n## Dashes\n\nNever use `--` as a dash in prose, comments, or user-facing output. Use an em dash (\\u2014) when a dash is needed, but prefer rephrasing to avoid dashes entirely. The only exception is CLI flags (e.g. `--port`).\n\n## Boolean Environment Variables\n\nDocument boolean env vars using only `0` and `1` in CLI help, SKILL.md, docs pages, and README. Code accepts `true`/`false` as well (and `skip` for `PORTLESS`), but these alternatives are not documented.\n\n## Docs Updates\n\nWhen a change affects how humans or agents use portless (new/changed/removed commands, flags, behavior, or config), update all of these:\n\n1. `README.md` (user-facing documentation)\n2. `skills/portless/SKILL.md` (agent skill for using portless)\n3. `packages/portless/src/cli.ts` (`--help` output)\n\n## Releasing\n\nReleases are manual, single-PR affairs. The maintainer controls the changelog voice and format.\n\nTo prepare a release:\n\n1. Create a branch (e.g. `prepare-v1.2.0`)\n2. Bump the version in `packages/portless/package.json`\n3. Write the changelog entry in `CHANGELOG.md`, wrapped in `<!-- release:start -->` and `<!-- release:end -->` markers\n4. Remove the `<!-- release:start -->` and `<!-- release:end -->` markers from the previous release entry (only the latest release should have markers)\n5. Add a matching entry to `apps/docs/src/app/changelog/page.mdx`\n6. Open a PR and merge to `main`\n\nCI compares the version in `packages/portless/package.json` to what's on npm. If it differs, it builds, publishes, and creates the GitHub release automatically. The release body is extracted from the content between the markers.\n\n## Windows Debugging\n\nA remote Windows Server 2022 EC2 instance is available for debugging Windows-specific issues. It uses AWS Systems Manager (SSM) with no SSH or open ports. Commands run via `aws ssm send-command` and return stdout/stderr.\n\nAll scripts require `AWS_PROFILE=portless-debug` (or the profile must be set as default). Prefix every command with it or export it for the session:\n\n```bash\nexport AWS_PROFILE=portless-debug\n```\n\n### Prerequisites\n\nThe instance must be provisioned first (one-time, by a human):\n\n```bash\n./scripts/windows-debug/provision.sh\n```\n\nRequires: AWS CLI v2 configured with `ec2:*`, `iam:CreateRole`, `iam:AttachRolePolicy`, `ssm:SendCommand`, `ssm:GetCommandInvocation` permissions and a default VPC.\n\n### Usage\n\nStart the instance (if stopped):\n\n```bash\n./scripts/windows-debug/start.sh\n```\n\nRun a command on Windows:\n\n```bash\n./scripts/windows-debug/run.sh \"<powershell-command>\"\n```\n\nSync the current git branch and rebuild:\n\n```bash\n./scripts/windows-debug/sync.sh\n```\n\nStop the instance when done (avoids cost):\n\n```bash\n./scripts/windows-debug/stop.sh\n```\n\n### Important notes\n\n**SSM agent takes a long time to come online.** After starting or restarting the instance, the SSM agent can take 5 to 10 minutes before it accepts commands. If `run.sh` returns `InvalidInstanceId`, wait and retry. Do not assume the instance is broken; poll with increasing intervals.\n\n**PowerShell uses `;` not `&&`.** The `run.sh` wrapper executes PowerShell, which does not support `&&` as a command separator. Use `;` instead:\n\n```bash\n./scripts/windows-debug/run.sh \"cd C:\\portless; pnpm test\"\n```\n\n**OpenSSL may not be at the expected path.** The bootstrap installs OpenSSL to `C:\\Program Files\\OpenSSL-Win64\\bin`, but this can fail silently. Git bundles its own OpenSSL at `C:\\Program Files\\Git\\mingw64\\bin`. If `openssl` is not found, add Git's path:\n\n```bash\n./scripts/windows-debug/run.sh '$env:PATH = \"C:\\Program Files\\Git\\mingw64\\bin;$env:PATH\"; openssl version'\n```\n\n**SSM runs as SYSTEM.** Commands execute as the SYSTEM account, not a normal user. This affects user-specific operations (e.g., `certutil -addstore -user Root` targets SYSTEM's trust store, not a real user's). Keep this in mind when testing user-facing features.\n\n### Common Workflows\n\nRun unit tests on Windows:\n\n```bash\n./scripts/windows-debug/run.sh \"cd C:\\portless; pnpm test\"\n```\n\nRun e2e tests on Windows:\n\n```bash\n./scripts/windows-debug/run.sh \"cd C:\\portless; pnpm test:e2e\"\n```\n\nCheck bootstrap progress (first boot only):\n\n```bash\n./scripts/windows-debug/run.sh \"Get-Content C:\\bootstrap.log\"\n```\n\nThe repo lives at `C:\\portless` on the instance. Node.js 24, pnpm 11, Git, and OpenSSL are pre-installed. The `run.sh` wrapper automatically adds these tools to PATH.\n\n<!-- opensrc:start -->\n\n## Source Code Reference\n\nSource code for dependencies is available in `opensrc/` for deeper understanding of implementation details.\n\nSee `opensrc/sources.json` for the list of available packages and their versions.\n\nUse this source code when you need to understand how a package works internally, not just its types/interface.\n\n### Fetching Additional Source Code\n\nTo fetch source code for a package or repository you need to understand, run:\n\n```bash\nnpx opensrc <package>           # npm package (e.g., npx opensrc zod)\nnpx opensrc pypi:<package>      # Python package (e.g., npx opensrc pypi:requests)\nnpx opensrc crates:<package>    # Rust crate (e.g., npx opensrc crates:serde)\nnpx opensrc <owner>/<repo>      # GitHub repo (e.g., npx opensrc vercel/ai)\n```\n\n<!-- opensrc:end -->\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# Agent Rules\n\n## Package Manager\n\nUse `pnpm` for all package management commands (not npm or yarn).\n\nException: End-user install instructions should use `npm install -g` (global) or `npm install -D` (project dev dependency) since npm is universal.\n\n## Dependencies\n\nAlways check for the latest npm version when adding dependencies. Use `pnpm add <package>` (without version) to get the latest, or verify with `npm view <package> version` first.\n\n## No Emojis\n\nDo not use emojis anywhere in this repository (code, comments, output, docs).\n\n## Dashes\n\nNever use `--` as a dash in prose, comments, or user-facing output. Use an em dash (\\u2014) when a dash is needed, but prefer rephrasing to avoid dashes entirely. The only exception is CLI flags (e.g. `--port`).\n\n## Boolean Environment Variables\n\nDocument boolean env vars using only `0` and `1` in CLI help, SKILL.md, docs pages, and README. Code accepts `true`/`false` as well (and `skip` for `PORTLESS`), but these alternatives are not documented.\n\n## Docs Updates\n\nWhen a change affects how humans or agents use portless (new/changed/removed commands, flags, behavior, or config), update all of these:\n\n1. `README.md` (user-facing documentation)\n2. `skills/portless/SKILL.md` (agent skill for using portless)\n3. `packages/portless/src/cli.ts` (`--help` output)\n\n## Releasing\n\nReleases are manual, single-PR affairs. The maintainer controls the changelog voice and format.\n\nTo prepare a release:\n\n1. Create a branch (e.g. `prepare-v1.2.0`)\n2. Bump the version in `packages/portless/package.json`\n3. Write the changelog entry in `CHANGELOG.md`, wrapped in `<!-- release:start -->` and `<!-- release:end -->` markers\n4. Remove the `<!-- release:start -->` and `<!-- release:end -->` markers from the previous release entry (only the latest release should have markers)\n5. Add a matching entry to `apps/docs/src/app/changelog/page.mdx`\n6. Open a PR and merge to `main`\n\nCI compares the version in `packages/portless/package.json` to what's on npm. If it differs, it builds, publishes, and creates the GitHub release automatically. The release body is extracted from the content between the markers.\n\n## Windows Debugging\n\nA remote Windows Server 2022 EC2 instance is available for debugging Windows-specific issues. It uses AWS Systems Manager (SSM) with no SSH or open ports. Commands run via `aws ssm send-command` and return stdout/stderr.\n\nAll scripts require `AWS_PROFILE=portless-debug` (or the profile must be set as default). Prefix every command with it or export it for the session:\n\n```bash\nexport AWS_PROFILE=portless-debug\n```\n\n### Prerequisites\n\nThe instance must be provisioned first (one-time, by a human):\n\n```bash\n./scripts/windows-debug/provision.sh\n```\n\nRequires: AWS CLI v2 configured with `ec2:*`, `iam:CreateRole`, `iam:AttachRolePolicy`, `ssm:SendCommand`, `ssm:GetCommandInvocation` permissions and a default VPC.\n\n### Usage\n\nStart the instance (if stopped):\n\n```bash\n./scripts/windows-debug/start.sh\n```\n\nRun a command on Windows:\n\n```bash\n./scripts/windows-debug/run.sh \"<powershell-command>\"\n```\n\nSync the current git branch and rebuild:\n\n```bash\n./scripts/windows-debug/sync.sh\n```\n\nStop the instance when done (avoids cost):\n\n```bash\n./scripts/windows-debug/stop.sh\n```\n\n### Important notes\n\n**SSM agent takes a long time to come online.** After starting or restarting the instance, the SSM agent can take 5 to 10 minutes before it accepts commands. If `run.sh` returns `InvalidInstanceId`, wait and retry. Do not assume the instance is broken; poll with increasing intervals.\n\n**PowerShell uses `;` not `&&`.** The `run.sh` wrapper executes PowerShell, which does not support `&&` as a command separator. Use `;` instead:\n\n```bash\n./scripts/windows-debug/run.sh \"cd C:\\portless; pnpm test\"\n```\n\n**OpenSSL may not be at the expected path.** The bootstrap installs OpenSSL to `C:\\Program Files\\OpenSSL-Win64\\bin`, but this can fail silently. Git bundles its own OpenSSL at `C:\\Program Files\\Git\\mingw64\\bin`. If `openssl` is not found, add Git's path:\n\n```bash\n./scripts/windows-debug/run.sh '$env:PATH = \"C:\\Program Files\\Git\\mingw64\\bin;$env:PATH\"; openssl version'\n```\n\n**SSM runs as SYSTEM.** Commands execute as the SYSTEM account, not a normal user. This affects user-specific operations (e.g., `certutil -addstore -user Root` targets SYSTEM's trust store, not a real user's). Keep this in mind when testing user-facing features.\n\n### Common Workflows\n\nRun unit tests on Windows:\n\n```bash\n./scripts/windows-debug/run.sh \"cd C:\\portless; pnpm test\"\n```\n\nRun e2e tests on Windows:\n\n```bash\n./scripts/windows-debug/run.sh \"cd C:\\portless; pnpm test:e2e\"\n```\n\nCheck bootstrap progress (first boot only):\n\n```bash\n./scripts/windows-debug/run.sh \"Get-Content C:\\bootstrap.log\"\n```\n\nThe repo lives at `C:\\portless` on the instance. Node.js 24, pnpm 11, Git, and OpenSSL are pre-installed. The `run.sh` wrapper automatically adds these tools to PATH.\n\n<!-- opensrc:start -->\n\n## Source Code Reference\n\nSource code for dependencies is available in `opensrc/` for deeper understanding of implementation details.\n\nSee `opensrc/sources.json` for the list of available packages and their versions.\n\nUse this source code when you need to understand how a package works internally, not just its types/interface.\n\n### Fetching Additional Source Code\n\nTo fetch source code for a package or repository you need to understand, run:\n\n```bash\nnpx opensrc <package>           # npm package (e.g., npx opensrc zod)\nnpx opensrc pypi:<package>      # Python package (e.g., npx opensrc pypi:requests)\nnpx opensrc crates:<package>    # Rust crate (e.g., npx opensrc crates:serde)\nnpx opensrc <owner>/<repo>      # GitHub repo (e.g., npx opensrc vercel/ai)\n```\n\n<!-- opensrc:end -->\n","category":"root","tokens":1436}]}