Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
{
"name": "bitwarden-software-engineer",
"source": "./plugins/bitwarden-software-engineer",
"version": "1.0.0",
"version": "1.1.0",
"description": "Software engineer agent for a Bitwarden product team. Implements stories, tasks, and bugs in the team's domain with code quality, performance, and security in mind. Participates in refinement, reviews PRs, collaborates with QA, and follows Git conventions."
},
{
Expand All @@ -66,7 +66,7 @@
{
"name": "bitwarden-tech-lead",
"source": "./plugins/bitwarden-tech-lead",
"version": "2.3.2",
"version": "2.4.0",
"description": "Tech lead agent for a Bitwarden product team. The team's primary technical resource β€” architects solutions in the team's domain, partners with the EM on scoping and backlog, partners with peer tech leads on cross-team architecture, and serves as the team's conduit for cross-team technical decisions."
},
{
Expand Down
2 changes: 2 additions & 0 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@
"remotelink",
"Rescope",
"resolutiondate",
"rollout",
"rollouts",
"rustdoc",
"sarif",
"SDLC",
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ A curated collection of plugins for AI-assisted development at Bitwarden. Enable

| Plugin | Version | Description |
| ------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [bitwarden-tech-lead](plugins/bitwarden-tech-lead/) | 2.3.2 | Tech lead for technical planning, architecture coherence, and surfacing patterns to Technical Strategy Ideas |
| [bitwarden-tech-lead](plugins/bitwarden-tech-lead/) | 2.4.0 | Tech lead for technical planning, architecture coherence, and surfacing patterns to Technical Strategy Ideas |
| [bitwarden-shepherd](plugins/bitwarden-shepherd/) | 1.0.0 | Champion of a technical strategy β€” shepherds a TSI through evaluation into the funnel, then through to adoption |
| [bitwarden-atlassian-tools](plugins/bitwarden-atlassian-tools/) | 2.2.7 | Read-only Atlassian access via MCP server with deep Jira issue research skill |
| [bitwarden-code-review](plugins/bitwarden-code-review/) | 1.13.1 | Autonomous code review agent following Bitwarden engineering standards with GitHub integration |
Expand All @@ -17,7 +17,7 @@ A curated collection of plugins for AI-assisted development at Bitwarden. Enable
| [bitwarden-init](plugins/bitwarden-init/) | 1.2.0 | Initialize and enhance CLAUDE.md files with Bitwarden's standardized template format |
| [bitwarden-product-analyst](plugins/bitwarden-product-analyst/) | 0.1.5 | Product analyst agent for creating comprehensive Bitwarden requirements documents from multiple sources |
| [bitwarden-security-engineer](plugins/bitwarden-security-engineer/) | 1.2.0 | Application security engineering: vulnerability triage, threat modeling, and secure code analysis |
| [bitwarden-software-engineer](plugins/bitwarden-software-engineer/) | 1.0.0 | Software engineer agent for a Bitwarden product team. Implements stories, tasks, and bugs with code quality, performance, security, and team comms in mind. |
| [bitwarden-software-engineer](plugins/bitwarden-software-engineer/) | 1.1.0 | Software engineer agent for a Bitwarden product team. Implements stories, tasks, and bugs with code quality, performance, security, and team comms in mind. |
| [claude-config-validator](plugins/claude-config-validator/) | 1.1.1 | Validates Claude Code configuration files for security, structure, and quality |
| [claude-retrospective](plugins/claude-retrospective/) | 1.1.1 | Analyze Claude Code sessions to identify successful patterns and improvement opportunities |

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bitwarden-software-engineer",
"version": "1.0.0",
"version": "1.1.0",
"description": "Software engineer agent for a Bitwarden product team. Implements stories, tasks, and bugs in the team's domain with code quality, performance, and security in mind. Participates in refinement, reviews PRs, collaborates with QA, and follows Git conventions.",
"author": {
"name": "Bitwarden",
Expand Down
7 changes: 7 additions & 0 deletions plugins/bitwarden-software-engineer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ All notable changes to the `bitwarden-software-engineer` plugin will be document
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.1.0] - 2026-07-06

### Added

- Feature-flag guidance in `AGENT.md`, per the [Bitwarden feature flags guidance](https://contributing.bitwarden.com/contributing/feature-flags): server-side .NET evaluates through `Bitwarden.Server.Sdk.Features` (`IFeatureService`, `FeatureFlagKeys`, `[RequireFeature]`), not a hand-rolled abstraction or the raw LaunchDarkly SDK; clients read flag state from the server's `/config` endpoint. Includes two discipline rules: one flag per independently-releasable feature, and release-vs-operational (kill switches may be permanent, not cleanup candidates).
- Cross-Plugin Integration guidance for the optional `launchdarkly` plugin (requires the plugin and its hosted MCP server): `launchdarkly-flag-discovery` / `launchdarkly-flag-command` to find flags, `launchdarkly-flag-create` to gate code, `launchdarkly-flag-targeting` to toggle locally, `launchdarkly-flag-cleanup` to remove launched flags. Production rollout decisions defer to the tech lead.

## [1.0.0] - 2026-05-19

### Changed
Expand Down
11 changes: 6 additions & 5 deletions plugins/bitwarden-software-engineer/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@ Software engineer agent for a Bitwarden product team. Generic AI coding assistan

## Cross-Plugin Integration

| Plugin | How It's Used |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `bitwarden-delivery-tools` | `committing-changes`, `creating-pull-request`, `perform-preflight`, `labeling-changes` for the day-to-day PR loop |
| `bitwarden-atlassian-tools` | `researching-jira-issues` when picking up a story |
| `bitwarden-security-engineer` | `reviewing-security-architecture`, `analyzing-code-security`, `reviewing-dependencies`, `detecting-secrets` when relevant to the change |
| Plugin | How It's Used |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `bitwarden-delivery-tools` | `committing-changes`, `creating-pull-request`, `perform-preflight`, `labeling-changes` for the day-to-day PR loop |
| `bitwarden-atlassian-tools` | `researching-jira-issues` when picking up a story |
| `bitwarden-security-engineer` | `reviewing-security-architecture`, `analyzing-code-security`, `reviewing-dependencies`, `detecting-secrets` when relevant to the change |
| `launchdarkly` (optional) | `launchdarkly-flag-discovery` / `launchdarkly-flag-command`, `launchdarkly-flag-create`, `launchdarkly-flag-targeting`, `launchdarkly-flag-cleanup` for the feature-flag lifecycle β€” requires the LaunchDarkly plugin and its hosted MCP server ([install](https://mcp.launchdarkly.com/mcp/launchdarkly/install)) |

Per-repo skills (`implementing-dapper-queries`, `implementing-ef-core`, `writing-database-queries`, and similar) live in the relevant Bitwarden repos and are picked up by Claude Code's progressive disclosure.

Expand Down
8 changes: 8 additions & 0 deletions plugins/bitwarden-software-engineer/agents/AGENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,11 @@ These skills are available across plugins and agent-neutral by design β€” invoke
- `Skill(analyzing-code-security)` when handling user input that reaches SQL, HTML, the file system, or URLs.
- `Skill(reviewing-dependencies)` when adding or updating dependencies.
- `Skill(detecting-secrets)` when working with secrets or configuration.
- **Feature flags.** Per the [feature flags guidance](https://contributing.bitwarden.com/contributing/feature-flags), flags should in general **always** be used for new work β€” give each independently-releasable feature its own flag (don't couple separable features onto one), default the flag off, and name it kebab-case (`new-feature`, not `enable-new-feature`). A **release** flag is temporary and needs a retirement plan; **operational** flags (kill switches, infrastructure toggles) may be permanent β€” don't treat those as cleanup candidates.
- **Server-side (.NET): evaluate flags through the `Bitwarden.Server.Sdk.Features` package β€” do not hand-roll a flag abstraction or call the LaunchDarkly SDK directly.** It wraps LaunchDarkly, is part of our core server SDK, and already ships in our larger solutions. Inject `IFeatureService` (and `ICurrentContext`), reference the key from the `FeatureFlagKeys` constants, and read with `IsEnabled` / `GetIntVariation` / `GetStringVariation`; or gate an endpoint/controller declaratively with `[RequireFeature("flag-key")]` / `.RequireFeature("flag-key")`. Source: https://github.com/bitwarden/dotnet-extensions/tree/main/extensions/Bitwarden.Server.Sdk.Features/src
- **Clients (web/browser/desktop/mobile) are simple consumers** β€” they read flag state from the server's `/config` endpoint, never from LaunchDarkly directly. Web: add the key to the `FeatureFlags` enum and read via `ConfigService` (`getFeatureFlagBool` / `getFeatureFlagString` / `getFeatureFlagNumber`). Mobile: add the constant and read via `IConfigService` (`GetFeatureFlagBoolAsync` / `GetFeatureFlagStringAsync` / `GetFeatureFlagNumberAsync`).
- The `launchdarkly` plugin (optional) adds skills for the flag lifecycle. They require the plugin installed **and** its hosted MCP server configured (install: https://mcp.launchdarkly.com/mcp/launchdarkly/install) β€” degrade gracefully if either is absent:
- `Skill(launchdarkly-flag-discovery)` or `Skill(launchdarkly-flag-command)` to find an existing flag before touching code.
- `Skill(launchdarkly-flag-create)` when a story asks you to gate a new or risky code path behind a flag. It explores the repo's existing flag patterns first β€” in .NET server code, that pattern is `Bitwarden.Server.Sdk.Features`, so steer the generated evaluation code onto `IFeatureService` / `[RequireFeature]` rather than a raw SDK call. Today the LaunchDarkly flag itself is created by hand by a tech lead or manager (EM approval on merge to mainline); this skill can automate that creation via MCP, but confirm with the flag's owner before creating one rather than assuming it.
- `Skill(launchdarkly-flag-targeting)` to toggle a flag on or off while verifying locally. Production percentage rollouts are a release decision β€” surface those to the tech lead rather than deciding them here.
- `Skill(launchdarkly-flag-cleanup)` to remove a launched or stale flag and hardcode the winning variation once a rollout is complete.
2 changes: 1 addition & 1 deletion plugins/bitwarden-tech-lead/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bitwarden-tech-lead",
"version": "2.3.2",
"version": "2.4.0",
"description": "Tech lead agent for a Bitwarden product team. The team's primary technical resource β€” architects solutions in the team's domain, partners with the EM on scoping and backlog, partners with peer tech leads on cross-team architecture, and serves as the team's conduit for cross-team technical decisions.",
"author": {
"name": "Bitwarden",
Expand Down
7 changes: 7 additions & 0 deletions plugins/bitwarden-tech-lead/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ All notable changes to the `bitwarden-tech-lead` plugin will be documented in th
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.4.0] - 2026-07-06

### Added

- `architecting-solutions`: "Feature-flag new work by default" principle (per the Bitwarden feature flags guidance) β€” flag new work, decide server-side vs client-side placement up front, one flag per independently-releasable feature, default off, gradual rollout over a binary flip, and release-vs-operational flags (kill switches may be permanent). Added a matching Red Flag for feature work landing without a warranted flag.
- Cross-Plugin Integration guidance for the optional `launchdarkly` plugin β€” the tech-lead's release-strategy side: `launchdarkly-guarded-rollout` and `launchdarkly-experiment-setup` / `launchdarkly-metric-choose` / `launchdarkly-metric-create`, with an MCP install link. Carved out as an explicit optional exception to the "all cross-plugin skills required" contract, so the agent degrades gracefully when it is absent.

## [2.3.2] - 2026-06-15

### Changed
Expand Down
19 changes: 10 additions & 9 deletions plugins/bitwarden-tech-lead/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,16 @@ The tech lead represents a team inside Bitwarden's architecture process β€” arch

## Cross-Plugin Integration

| Plugin | How It's Used |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bitwarden-delivery-tools` | Delivery lifecycle skills β€” `navigating-the-initiative-funnel` for funnel phase mechanics, `running-work-transitions` for ownership transitions either side |
| `bitwarden-security-engineer` | Security context (P01-P06), architecture pattern review, threat modeling |
| `bitwarden-product-analyst` | Consumes requirements documents as upstream input |
| `bitwarden-software-engineer` | Implementation conventions for server, client, and database decisions |
| `bitwarden-atlassian-tools` | Jira issue research and Confluence page access for the funnel, operating model, and TSI documents this plugin's skills reference |

All cross-plugin skills are required because we rely upon each of them for a rich, complete workflow.
| Plugin | How It's Used |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bitwarden-delivery-tools` | Delivery lifecycle skills β€” `navigating-the-initiative-funnel` for funnel phase mechanics, `running-work-transitions` for ownership transitions either side |
| `bitwarden-security-engineer` | Security context (P01-P06), architecture pattern review, threat modeling |
| `bitwarden-product-analyst` | Consumes requirements documents as upstream input |
| `bitwarden-software-engineer` | Implementation conventions for server, client, and database decisions |
| `bitwarden-atlassian-tools` | Jira issue research and Confluence page access for the funnel, operating model, and TSI documents this plugin's skills reference |
| `launchdarkly` (optional) | Release-strategy side of feature flags β€” `launchdarkly-guarded-rollout`, `launchdarkly-experiment-setup`, `launchdarkly-metric-choose`, `launchdarkly-metric-create`; requires the LaunchDarkly plugin and its hosted MCP server ([install](https://mcp.launchdarkly.com/mcp/launchdarkly/install)) |

All cross-plugin skills except `launchdarkly` are required because we rely upon each of them for a rich, complete workflow. LaunchDarkly is optional β€” the agent degrades gracefully when it is not installed.

## Related Plugins

Expand Down
Loading
Loading