exploring-bitwarden-data

作成者: bitwarden

ローカルBitwarden開発データベースの読み取り専用探索 — ライブデータからビジネス上の質問に答え、シード済みフィクスチャを検証し、スキーマを調査する。使用…

npx skills add https://github.com/bitwarden/server --skill exploring-bitwarden-data

Explore Bitwarden Database

Read-only access to a local Bitwarden database, across all three dev providers.

Read-only, defense in depth

  1. Database login is read-only at the server — mutations will fail regardless of what you send.
  2. Allowed: SELECT, WITH (CTEs), and INFORMATION_SCHEMA / sys.* introspection.

Cross-provider rules

  • Secrets. Never echo, log, cat, printenv, or hexdump any password env var. Set passwords inline on the command (e.g., SQLCMDPASSWORD="$BW_MSSQL_PASSWORD" sqlcmd ...); never export them.
  • Result presentation. Format <20 rows as a markdown table; summarize larger sets as top-N + count. Always echo the SQL ran. Trim CLI footers ((N rows affected), Query OK) before presenting.
  • Heredoc footgun. Use single-quoted heredoc tags (<<'SQL') — without quotes, bash expands $ inside the SQL before the database CLI sees it, breaking column references.

Provider selection

First arg picks the provider — mssql (default), mysql, or postgresql. Read the matching provider reference before composing SQL.

ProviderEnv prefixCLIReferenceStatus
MSSQLBW_MSSQL_*sqlcmdreferences/providers/mssql.mdReady
MySQLBW_MYSQL_*mysqlreferences/providers/mysql.mdReady
PostgreSQLBW_POSTGRES_*psqlreferences/providers/postgresql.mdReady

The repo is the schema's source of truth

Don't compose SQL from a generic mental model of how a vault schema "probably" looks — and don't expect this skill to inventory the schema for you. The repo already does, and it stays current when this file wouldn't:

  • Tables and columns: SSDT schema under src/Sql/dbo/, or live introspection via references/schema-discovery-queries.md.
  • Enum integer values and lifecycle semantics: the C# enum sources — their XML docs carry meaning no value table can (seat consumption, restore behavior, deprecations).
  • Access-control logic: prefer the canonical functions over hand-rolled joins — [dbo].[UserCipherDetails](@UserId) for "what can user X see", [dbo].[UserCollectionDetails](@UserId) for collection permissions. They encode member status, org enablement, and direct-over-group grant precedence that is easy to rebuild subtly wrong.
  • Where to look: references/sources.md maps every concept named in this skill to its source file.

Grounding rules

Semantics the schema itself cannot tell you — each of these flipped a real eval case that unaided Claude got wrong (evidence in evals/baseline-results.md; that is also the bar for adding a rule here).

  1. Active member = OrganizationUser.Status = 2 (Confirmed). "Active" is genuinely ambiguous — the occupied-seat definition (Status IN (0,1,2), used by the seat-count procs) is a defensible rival reading, so state which one the question needs. Full lifecycle (including Staged and Revoked-with-restore) is documented in OrganizationUserStatusType.cs.
  2. Archive state lives in Cipher.Archives — per-user JSON keyed by UPPERCASE user GUID — not in the ArchivedDate column. ArchivedDate exists on the table but the archive flow never writes it (Cipher_Archive does JSON_MODIFY on Archives); querying it returns zero forever while looking perfectly reasonable. Favorites and Folders use the same per-user JSON shape, so interpolate keys from a UNIQUEIDENTIFIER (SQL Server renders them uppercase; JSON keys are case-sensitive).
  3. Organization.Enabled = 1 is the active flag. Organization.Status is the provider-management lifecycle (Pending/Created/Managed), and Plan is a display string — aggregate and filter on PlanType.

Reference library

ReferenceWhen to read
references/sources.mdFinding the source file for any table, enum, or canonical function
references/schema-discovery-queries.mdLive introspection — list tables, describe columns, find FKs, view bodies
references/providers/mssql.mdMSSQL connection, sqlcmd invocation patterns, dialect notes

bitwardenのその他のスキル

figma-to-angular
bitwarden
このスキルは、Figmaのデザイン仕様を、Bitwarden Clientsモノレポ内でStorybookストーリーを持つ完全に実装されたAngularコンポーネントに変換します。出力は、すべてのコードベースの規約に従いながら、視覚的にデザインと一致する必要があります。
force-multiplier
bitwarden
1つの意図を多数のターゲットに同時に適用する——Bitwardenエコシステム全体のリポジトリ群や、モノレポ内の多くのプロジェクト——をN個の一貫した……として。
analyzing-git-sessions
bitwarden
指定された時間枠またはコミット範囲内のgitコミットと変更を分析し、コードレビュー、振り返り、作業ログ、セッション…のための構造化されたサマリーを提供します。
coordinating-cross-team-breakdown
bitwarden
クロスチームのレビューと承認を調整し、Bitwarden Tech Breakdownを実施します。影響を受けるチームの特定、パート3の承認テーブルの作成、フォローアップの際に使用します。
assessing-jira-issue-relevance
bitwarden
ユーザーが単一のJira課題キーを提示し、それがまだ関連性があるか、まだ適用可能か、まだ保留中か、まだバグか、修正済みか、またはその可能性があるかを尋ねる場合に使用します。
assessing-test-coverage
bitwarden
特定の変更(PR、Jiraキー、Tech Breakdownドキュメント、Testmo CSV、変更されたパス、または指定された…)に対して、どのテストカバレッジが既に存在するかを判断する際に使用します。
retrospecting
bitwarden
Claude Codeセッションの包括的な分析を実行し、git履歴、会話ログ、コード変更を調査し、ユーザーフィードバックを収集して生成する…
reviewing-incremental-changes
bitwarden
このスキルは、既にコメントがあるPRを再レビューする際や、初回レビュー後の開発者の変更に対応する際に使用します。PRスレッドが存在する場合や…に適用します。