the signals and their derived score are provisional and subject to change.
validate manually before sharing.
e40ce6f08ebf963db3561464e77b4defe05247e87390d6c62928a7af3c55f7aa4fb596e561ceec44Authored: 2 weeks ago (Mon, 31 Aug 2026 23:21:46 +0000)Match: Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>b92de117daf8b6590ae51f00375f17ad93a410dbAuthored: 1 month ago (Tue, 11 Aug 2026 11:50:25 +0000)Match: Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>50de8eccfe69b466de26e3a0ed12dd55b7edea61Authored: 1 month ago (Tue, 4 Aug 2026 21:41:32 +0000)Match: Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>5949ae5afb29550d05df92d46eabef8e1fc42397Authored: 1 month ago (Mon, 3 Aug 2026 14:45:17 +0000)Match: Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>a2c9e34784e092ec3d9a948a5c1c6942264dfdaeAuthored: 3 months ago (Mon, 15 Jun 2026 15:27:07 +0000)Match: Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>0dca62716cf637544f3e3fda4811236a705552b9Authored: 3 months ago (Thu, 4 Jun 2026 19:59:47 +0000)Match: Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>f124785baa8da5e563922ce4ef454ce80057e382Authored: 4 months ago (Thu, 7 May 2026 20:16:52 +0000)Match: Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>2cb7853df6935d57c6f58303322fc8cc33d86d57Authored: 4 months ago (Thu, 7 May 2026 19:33:09 +0000)Match: Co-authored-by: Cursor <cursoragent@cursor.com>a5ef32620ceff7b80d9595d0d262091b0a1f5a4dAuthored: 5 months ago (Thu, 16 Apr 2026 16:07:49 +0000)Match: Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>477b85651959d1fabb03a258b4cf7901a40d6d4fAuthored: 5 months ago (Thu, 19 Mar 2026 12:56:48 +0000)Match: Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>35d25b7f8e08025e9f5d58c6a513d04c92223e93Authored: 6 months ago (Wed, 11 Mar 2026 13:10:32 +0000)Match: Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>a5df3540afcaa37eff0067dfc23728526533ec98Authored: 6 months ago (Wed, 25 Feb 2026 10:15:19 +0000)Match: Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>c5e73b4b8c185de5bd293652b069441ff76fc927Authored: 6 months ago (Mon, 23 Feb 2026 16:56:01 +0000)Match: Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>fe15b44ccc026092d1f111b54869fbd8a9674cb3Authored: 7 months ago (Thu, 12 Feb 2026 17:26:25 +0000)Match: Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>ad8bde057f797195bbb9fe4b9b3b5cd870a9b54bAuthored: 7 months ago (Thu, 12 Feb 2026 14:50:31 +0000)Match: Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>d06a895c78ab49fe2fdbe36cbc9f20cf645074baAuthored: 7 months ago (Thu, 12 Feb 2026 08:13:45 +0000)Match: Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>20bc6036c622949d1c687dcc296b89055a550b16Authored: 7 months ago (Thu, 5 Feb 2026 17:07:40 +0000)Match: Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>7c4ea23f8863f9f346d0d0341609353a311496bfAuthored: 7 months ago (Fri, 30 Jan 2026 19:51:54 +0000)Match: Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>5dc49f21d2e5aa145fe9611222b4c0c5659db1c5Authored: 7 months ago (Wed, 28 Jan 2026 16:36:27 +0000)Match: Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>d64db8fbf58a90769683c2b00c7cc0e4ac0d6180Authored: 7 months ago (Mon, 26 Jan 2026 16:44:16 +0000)Match: Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>5d79d4401534ab460b1f0c583cfe43d91f2e0951Authored: 8 months ago (Mon, 22 Dec 2025 17:13:39 +0000)Match: 🤖 Generated with [Claude Code](https://claude.com/claude-code)libs/auth/CLAUDE.mdTool: claude-code# libs/auth
**Do not add new code to `libs/auth`.** This library was carved out prematurely and now causes recurring circular-dependency issues across the monorepo. It should not grow further.
## Where new auth code belongs
- **Framework-agnostic logic** (services, models, abstractions, utilities without Angular) → `libs/common/src/auth/`
- **Angular-specific shared code** (components, directives, pipes, guards, Angular services) → `libs/angular/src/auth/`
- **Used by only one client** → that clienapps/desktop/CLAUDE.mdTool: claude-code# Desktop (Electron) - Critical Rules
- **CRITICAL**: Separate main process vs renderer process contexts
- Main process: Node.js + Electron APIs (files in `/apps/desktop/src/main/`)
- Renderer process: Browser-like environment (Angular app files)
- Use IPC (Inter-Process Communication) for cross-process communication
- **NEVER** import Node.js modules directly in renderer process
- **NEVER** import Angular modules in the main process
- Use preload scripts or IPC to access Node.js functionality
-apps/cli/CLAUDE.mdTool: claude-code# CLI - Critical Rules
- **ALWAYS** output structured JSON when `process.env.BW_RESPONSE === "true"`
- Use Response objects (MessageResponse, ListResponse, etc.) from `/apps/cli/src/models/response/`
- DON'T write free-form text that breaks JSON parsing
- **NEVER** use `console.log()` for output
- Use `CliUtils.writeLn()` to respect `BW_QUIET` and `BW_RESPONSE` environment variables
- Use the `ConsoleLogService` from the `ServiceContainer`
- **ALWAYS** respect `BW_CLEANEXIT` environment variable
apps/browser/CLAUDE.mdTool: claude-code# Browser Extension - Critical Rules
- **NEVER** use `chrome.*` or `browser.*` APIs directly in business logic
- Always use `BrowserApi` abstraction: `/apps/browser/src/platform/browser/browser-api.ts`
- Required for cross-browser compatibility (Chrome/Firefox/Safari/Opera)
- Exception: injected content scripts (see `.claude/rules/autofill-content-scripts.md`)
- **ALWAYS** use `BrowserApi.addListener()` for event listeners in popup context
- Safari requires manual cleanup to prevent memory leaks
apps/web/CLAUDE.mdTool: claude-code# Web Vault - Critical Rules
- **NEVER** access browser extension APIs
- Web vault runs in standard browser context (no chrome._/browser._ APIs)
- DON'T import or use BrowserApi or extension-specific code
- **ALWAYS** assume multi-tenant organization features
- Web vault supports enterprise organizations with complex permissions
- Use organization permission guards: `/apps/web/src/app/admin-console/organizations/guards/`
- **CRITICAL**: All sensitive operations must work without local storage
-.claude/CLAUDE.mdTool: claude-code# Bitwarden Clients - Claude Code Configuration
## Project Context Files
**Read these files before reviewing to ensure that you fully understand the project and contributing guidelines**
1. `README.md` (read on demand for project overview)
2. `CONTRIBUTING.md` (read on demand for contributing guidelines)
3. @../.github/PULL_REQUEST_TEMPLATE.md
## Critical Rules
- **NEVER** use code regions: If complexity suggests regions, refactor for better readability
- **CRITICAL**: new encryption logic should not bapps/web/src/app/pam/CLAUDE.mdTool: claude-code# PAM (OSS seams)
This directory holds the OSS-side integration seams for the commercial Privileged Access
Management (PAM) feature — currently just the organization admin-console nav slot
(`org-nav-slot/`). The feature itself, including its domain contracts, lives in
`bitwarden_license/bit-web/src/app/pam/`.
libs/common/src/auth/CLAUDE.mdTool: claude-code# libs/common/src/auth
New auth code lands here, not in `libs/auth/` (see [libs/auth/CLAUDE.md](../../../auth/CLAUDE.md)).
- **Feature folders only.** Add `libs/common/src/auth/<my-feature>/` — don't add files to convention folders (`abstractions/`, `services/`, `models/`, `enums/`, `types/`, `utils/`). Mirror `password-prelogin/`, `send-access/`, `two-factor/`.
- **Barrel each feature.** Give every new feature folder an `index.ts`. Consumers import `@bitwarden/common/auth/<my-feature>`, not internal palibs/angular/src/auth/CLAUDE.mdTool: claude-code# libs/angular/src/auth
New Angular auth code lands here, not in `libs/auth/` (see [libs/auth/CLAUDE.md](../../../auth/CLAUDE.md)).
- **Feature folders only.** Add `libs/angular/src/auth/<my-feature>/` — don't add files to convention folders (`components/`, `services/`, `guards/`, `constants/`). Mirror `account-deletion/`, `device-management/`, `login-approval/`, `password-management/`.
- **Barrel each feature.** Give every new feature folder an `index.ts`. Consumers import `@bitwarden/angular/auth/<my-bitwarden_license/bit-web/src/app/pam/CLAUDE.mdTool: claude-code# PAM web UI (`bitwarden_license/bit-web/src/app/pam`)
Commercial home for the PAM access-rules admin UI: the list, the routed
create/edit page, and the IP-allowlist editor. Gated behind `FeatureFlag.Pam`
(`pm-37044-pam-v-0`).
## Surfaces
- `abstractions/` / `helpers/` — framework-agnostic contract layer: domain
types and error helpers (`abstractions/access-rule.ts`), the abstract
`AccessRuleSdkService` contract (`abstractions/access-rule-sdk.service.ts`),
and pure helpers (`helpers/`). Re-export.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.claudeTool: claude-code.mcp.jsonTool: unspecified{
"mcpServers": {
"electron-devtools-attach": {
"type": "stdio",
"command": "npx",
"args": [
"chrome-devtools-mcp@1.2.0",
"--browserUrl=http://localhost:9222",
"--experimental-screencast"
],
"env": {},
"__comment": "This server is used to attach to a running electron app"
},
"chrome-devtools-attach": {
"type": "stdio",
"command": "npx",
"args": [
"chrome-devtools-mcp@1.2.0",
"--browserUrl=http://local.claude/skills/angular-modernization/SKILL.mdTool: unspecified---
name: angular-modernization
description: Modernizes Angular code such as components and directives to follow best practices using both automatic CLI migrations and Bitwarden-specific patterns. YOU must use this skill when someone requests modernizing Angular code. DO NOT invoke for general Angular discussions unrelated to modernization.
allowed-tools: Read, Write, Glob, Bash(npx ng generate:*)
---
# Angular Modernization
Transforms legacy Angular components to modern architecture using a two-step appr.claude/skills/cipher-type-planner/SKILL.mdTool: unspecified---
name: cipher-type-planner
description: Plans the creation or modification of a cipher type (vault item type) across the Bitwarden clients monorepo. Use this skill when a user wants to add a new cipher type, modify an existing cipher type, or asks about what is needed to implement a cipher type. DO NOT invoke for general vault or cipher questions unrelated to adding or changing a cipher type.
user-invocable: true
argument-hint: "target-client"
---
# Cipher Type Planner
## Workflow
### Step 1: Gather R.claude/skills/fix-angular-fixmes/SKILL.mdTool: unspecified---
name: fix-angular-fixmes
description: Resolves eslint-disable suppression comments throughout the Bitwarden clients codebase by fixing the underlying issue. Use when the user asks to "fix FIXMEs", "fix eslint suppressions", "clean up eslint-disable-next-line", "resolve CL-764", "resolve CL-903", "fix OnPush eslint suppressions", "fix Signals eslint suppressions", or reduce linting suppressions.
allowed-tools: Read, Write, Edit, Glob, Grep, Bash(npx ng generate:*), Bash(npm run lint:fix), Bash(npm run te.claude/skills/create-pull-request/SKILL.mdTool: unspecified---
name: create-pull-request
version: 0.1.0
description: Pull request creation workflow for Bitwarden Clients. Use when creating PRs, writing PR descriptions, or preparing branches for review. Triggered by "create PR", "pull request", "open PR", "gh pr create", "PR description".
---
# Create Pull Request
## PR Title Format
```
[PROJ-XXXXX] Short imperative summary
```
**Examples:**
- `[PM-12345] Add passkey support to vault item creation`
- `[CL-1124] Increase badge max-width`
- `[PM-33446] Ensure att.claude/skills/evaluating-sdk-internal-updates/SKILL.mdTool: unspecified---
name: evaluating-sdk-internal-updates
description: Evaluates a bitwarden/clients "Update sdk-internal to" PR against the sdk-internal commit range for compile-time and runtime breaking changes, maps affected symbols to TypeScript call sites, and applies clear in-scope fixes. Use when reviewing an SDK bump PR, an @bitwarden/sdk-internal version change in package.json, or triaging sdk-internal breaking changes. Requires a sibling `bitwarden/sdk-internal` clone.
allowed-tools:
- Bash(node .claude/skills/.claude/skills/writing-client-code/SKILL.mdTool: unspecified---
name: writing-client-code
description: Bitwarden client code conventions for Angular and TypeScript. Use when creating components, services, or modifying web/browser/desktop apps.
---
### Why `libs/common` cannot import Angular
CLI is a first-class client. Any code in `libs/common` must work without Angular's dependency injection, decorators, or lifecycle hooks. This is why cross-client services use abstract classes as interfaces — the concrete implementations (`Default*`, `Web*`, `Browser*`, `Deskt.claude/skills/create-hec-event-integration/SKILL.mdTool: unspecified---
name: create-hec-event-integration
description: Use when adding a new HEC (HTTP Event Collector) event integration to the Bitwarden web client. Implements the Splunk token authentication model (Bearer token + URI). Covers feature flag setup and card registration behind the flag. Does not apply to API key integrations or integrations requiring a custom connect dialog.
---
# Create HEC Event Integration (Token Auth)
## Step 1 - Prompts
Ask these questions one at a time — wait for each answer before p.claude/skills/figma-to-angular/SKILL.mdTool: unspecified---
name: figma-to-angular
description: >
Converts Figma designs into production Angular components with Storybook stories for the Bitwarden
Clients monorepo. Use this skill whenever the user provides a Figma URL and wants to create an
Angular component, or mentions "implement this design", "create a component from Figma",
"build this from the design spec", or similar. Also trigger when the user pastes a Figma link
and asks for a component, even if they don't say "Figma" explicitly.
---
# Figma tnone