Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
78b4e8c
Skill updates for new breakdown repo
trmartin4 Jun 4, 2026
1a2ac60
Clarifications on acceptance requirements.
trmartin4 Jun 4, 2026
1c58837
References to open work.
trmartin4 Jun 4, 2026
d5a8136
Skill structure feedback.
trmartin4 Jun 4, 2026
e64fa90
Ran through skill builder.
trmartin4 Jun 5, 2026
8fab4ea
Addressed PR feedback.
trmartin4 Jun 6, 2026
2667833
Updates to break out skills for cross-team collaboration models.
trmartin4 Jun 6, 2026
13253fb
Updates.
trmartin4 Jun 7, 2026
f761aec
Merge branch 'main' into tech-breakdown-skill-updates
trmartin4 Jun 7, 2026
e030aa1
Updates to tech-lead skill.
trmartin4 Jun 7, 2026
a642f6d
Fixed task number guidance for consistency.
trmartin4 Jun 7, 2026
6efecd2
Updated to reference the right transition.
trmartin4 Jun 7, 2026
2ef2500
Addressed PR feedback.
trmartin4 Jun 7, 2026
7f13cb3
Fix evaluations.
trmartin4 Jun 7, 2026
11bee0b
delivery-tools: extract heavy sections to references/ for progressive…
trmartin4 Jun 8, 2026
4ab792c
writing-tech-breakdowns: fix stale plugin reference in section-drafti…
trmartin4 Jun 8, 2026
1b1c386
Updates to remove blocking concept.
trmartin4 Jun 8, 2026
66719ac
Removed blocking.
trmartin4 Jun 8, 2026
31dc066
Updates from PR feedback.
trmartin4 Jun 8, 2026
5c66d55
Updates to break apart skills.
trmartin4 Jun 8, 2026
23ecea3
Consolidated tech-lead version.
trmartin4 Jun 8, 2026
3350b43
Updates to split skills.
trmartin4 Jun 9, 2026
b967d38
Cleanup.
trmartin4 Jun 9, 2026
1d805f0
Skill consolidation and cleanup.
trmartin4 Jun 9, 2026
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 @@ -66,7 +66,7 @@
{
"name": "bitwarden-tech-lead",
"source": "./plugins/bitwarden-tech-lead",
"version": "2.3.0",
"version": "2.3.1",
"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 All @@ -78,7 +78,7 @@
{
"name": "bitwarden-delivery-tools",
"source": "./plugins/bitwarden-delivery-tools",
"version": "1.3.0",
"version": "2.0.0",
"description": "Delivery lifecycle skills for Bitwarden initiatives β€” initiative funnel navigation, work transitions, tech breakdowns and cross-team signoffs, commits, pull requests, preflight checks, and change labeling."
},
{
Expand Down
6 changes: 6 additions & 0 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"askable",
"ASVS",
"atlassian",
"bikeshedding",
"operationalizes",
"Bitwarden",
"blocklist",
"blogposts",
Expand Down Expand Up @@ -56,6 +58,7 @@
"hackerone",
"hardBreak",
"HMAC",
"Hodgson",
"hotspot",
"hotspots",
"IDOR",
Expand Down Expand Up @@ -91,6 +94,7 @@
"pushback",
"pyproject",
"pytest",
"refinable",
"remotelink",
"Rescope",
"resolutiondate",
Expand All @@ -108,6 +112,7 @@
"Smartlinks",
"sonarcloud",
"sonarqube",
"speckit",
"spreadsheetml",
"sprintId",
"SSDT",
Expand All @@ -123,6 +128,7 @@
"touchpoint",
"touchpoints",
"triaging",
"UNIFFI",
"unassigning",
"unassigns",
"ungroup",
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ A curated collection of plugins for AI-assisted development at Bitwarden. Enable

| Plugin | Version | Description |
| ------------------------------------------------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [bitwarden-tech-lead](plugins/bitwarden-tech-lead/) | 2.3.0 | Tech lead for technical planning, architecture coherence, and surfacing patterns to Technical Strategy Ideas |
| [bitwarden-tech-lead](plugins/bitwarden-tech-lead/) | 2.3.1 | 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.6 | Read-only Atlassian access via MCP server with deep Jira issue research skill |
| [bitwarden-code-review](plugins/bitwarden-code-review/) | 1.11.0 | Autonomous code review agent following Bitwarden engineering standards with GitHub integration |
| [bitwarden-delivery-tools](plugins/bitwarden-delivery-tools/) | 1.3.0 | Delivery lifecycle skills: initiative funnel navigation, work transitions, tech breakdowns and cross-team signoffs, commits, PRs, preflight, labeling |
| [bitwarden-delivery-tools](plugins/bitwarden-delivery-tools/) | 2.0.0 | Delivery lifecycle skills: initiative funnel navigation, work transitions, tech breakdowns and cross-team signoffs, commits, PRs, preflight, labeling |
| [bitwarden-designer](plugins/bitwarden-designer/) | 0.1.0 | Product designer persona: Code of Conduct and 30/60/90 critique, critique facilitation; dispatches into bitwarden-design-tools |
| [bitwarden-design-tools](plugins/bitwarden-design-tools/) | 0.1.0 | Design toolkit: content style guide, Figma Dev Mode MCP, Bitwarden brand application, handoff prep, Design System governance, Product and Design Jira |
| [bitwarden-devops-engineer](plugins/bitwarden-devops-engineer/) | 0.1.3 | DevOps engineering assistant: workflow compliance linting, action security auditing, and org-wide CI/CD remediation |
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bitwarden-delivery-tools",
"version": "1.3.0",
"version": "2.0.0",
"description": "Delivery lifecycle skills for Bitwarden initiatives β€” initiative funnel navigation, work transitions, tech breakdowns and cross-team signoffs, commits, pull requests, preflight checks, and change labeling.",
"author": {
"name": "Bitwarden",
Expand Down
31 changes: 30 additions & 1 deletion plugins/bitwarden-delivery-tools/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,38 @@

All notable changes to the `bitwarden-delivery-tools` plugin will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
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.0.0] - 2026-06-08

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@trmartin4 We need to take a machete to these changelog entries. They are "overly Claude'd" and defeat the purpose of the log (which is to briefly explain to humans what has changed).

Let's keep the changes to between 5-7 brief bullets focusing a little more on the why something changed instead of walls-of-text describing what changed. If you want to have Claude write it then that's fine too, then perhaps prompt Claude with something like ->

Refactor the CHANGELOG.md to between 5-7 brief bullets keeping at the forefront that they are for humans and need to exceed 150 characters per line. Keep it narrow and more on the why versus the what because we are able to determine the what changed via the PR and commit.


### Removed (BREAKING)

- **`choosing-collaboration-model` skill β€” removed; model picking reframed as an owner task.** The picker is no longer skill-driven. `Skill(developing-the-plan)` activity 5 identifies each cross-team impact and characterizes it (domain-overlap depth, owning-team domain churn from the scan procedure), then leaves the `Model` column empty for the breakdown owner to assign β€” informed by the depth and churn data the skill captured, and confirmed by the owning team at signoff. The previous `references/three-models.md`, `references/scanning-for-owning-team-work.md`, and `references/confirmation-workflow.md` files were retired with the skill; the operational scan procedure is preserved inline in `developing-the-plan` activity 5.
- \*\*`writing-tech-breakdowns` skill was replaced with phased skills, with the first one being introduced in this version.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ DEBT: Broken markdown plus factual contradiction with the Added section below.

Details and fix

Two problems on this bullet:

  1. Broken bold syntax β€” the bullet starts with \*\* (backslash-escaped asterisks), which renders as literal ** instead of opening a bold span. The other Removed bullets use **...** correctly.
  2. Factually wrong count β€” "with the first one being introduced in this version" contradicts the Added section directly below, which introduces four new phase-scoped skills (starting-a-tech-breakdown, syncing-tasks-with-jira, developing-the-spec, developing-the-plan) in this same version, not "the first one."

Worth fixing as part of (or before) the CHANGELOG cleanup @theMickster requested β€” even if the line gets condensed, the broken bold and the incorrect count shouldn't carry into the rewrite.

Suggested change
- \*\*`writing-tech-breakdowns` skill was replaced with phased skills, with the first one being introduced in this version.
- **`writing-tech-breakdowns` skill β€” removed.** Replaced by the four phase-scoped skills introduced in this version (`starting-a-tech-breakdown`, `developing-the-spec`, `developing-the-plan`, `syncing-tasks-with-jira`). The monolithic skill was too large to reliably route mid-stream prompts and tangled policy with operational mechanics.

- **`coordinating-cross-team-breakdown` skill β€” removed.** Cross-team engagement (signoff table identification, model selection per impact, recording in the breakdown) now happens inline inside `developing-the-plan` activity 5. No separate signoff-chasing skill exists; reviewers fill the Signoff column during cross-team review between `Proposed` and `Accepted`. The earlier-included `examples/signoff-table.md` was retired.

### Added

- **`starting-a-tech-breakdown` skill** β€” first of the phase-scoped skills splitting `writing-tech-breakdowns` into smaller composable units. Owns the setup-only slice of the lifecycle: prompts the user openly for the Jira key, where existing context lives, and the named owner; reads what's referenced; then copies the template and fills the Status block. Does **not** assume the work rolls up to a larger initiative β€” team-scoped work is a peer path, not a fallback. Two explicit phases (Gather context, Create the file), each backed by `TaskCreate` so a mid-stream prompt lands on the right operational step. `HARD-GATE` blocks file creation until the Jira key and context are confirmed. Does **not** run a collision scan: affected files cannot be enumerated until drafting produces a concrete file/module list, so the scan moves to `developing-the-plan`. Does **not** open the PR β€” the breakdown owner does that themselves once content is being committed. Stops at status `In Planning`.
- **`syncing-tasks-with-jira` skill** β€” third of the phase-scoped skills splitting `writing-tech-breakdowns` into smaller composable units. Keeps the breakdown's Tasks section and its Jira stories in sync across the whole pair lifecycle, covering both initial creation (Tasks rows β†’ new stories) and ongoing bidirectional reconciliation (drift either way once stories exist). Mode is detected per row from whether the row already carries a story key. Triage classifies each row as CREATE, MATCH-AND-SYNC, UPDATE-from-breakdown, UPDATE-from-jira, NO-CHANGE, CONFLICT, or ORPHANED, with a direction-of-truth heuristic (breakdown canonical for architectural fields; Jira canonical for AC, sprint-level scope tightening, owner reassignment) that the user can override per row. Five phases: Fetch & Parse, Triage (with the new drift detection), Confirm (one-at-a-time discipline for flagged rows; CONFLICT rows must resolve before Execute), Execute (delegated to whichever Jira authoring tool the engineer has β€” `jira-cli`, `jira-manager`, direct Atlassian MCP, or the Jira UI β€” in dependency order), Sync back (writes new keys into the Tasks section, applies pulled-from-Jira changes back into the breakdown, bumps Status block, commits), Summary (with a lifecycle-reset surface when a pulled change touches a signed-off cross-team interface). `HARD-GATE` blocks any writes until the full triage plan is user-confirmed. Bakes in Bitwarden field mapping: `Technical breakdown` (`customfield_10313`), `Acceptance Criteria` (`customfield_10192`), `Team` (`customfield_10001`); Description carries only the inline breakdown link. Stack-area prefix (`[Clients]`, `[Web]`, `[Server]`, `[SDK]`, `[iOS]`, `[Android]`) applied when single-stack. Dependencies wired as Jira issue links (`is blocked by`, `depends on`, `relates to`), never as Description prose. Replaces the earlier `creating-stories-from-a-tech-breakdown` name; the more generic name reflects the skill's ongoing-sync responsibility, not just one-time creation.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ DEBT: syncing-tasks-with-jira phase count contradicts the skill body

Details and fix

The CHANGELOG entry says "Five phases:" but then enumerates six items: Fetch & Parse, Triage, Confirm, Execute, Sync back, Summary. The skill's ## Phases section actually defines five phases (Phase 1 Fetch & Parse, Phase 2 Triage, Phase 3 Execute, Phase 4 Sync results back, Phase 5 Summary), with Confirm implemented as a sub-step inside Phase 2 Triage (Step 3: Final confirmation), not as a standalone phase.

Two fixes are equally valid; pick whichever the structure should really be:

  • Drop Confirm from the enumeration to match the SKILL.md's five-phase shape: "Five phases: Fetch & Parse, Triage (with the new drift detection and final-confirmation step), Execute (...), Sync back (...), Summary (...)", or
  • Promote Confirm to its own phase in the SKILL.md and change the CHANGELOG to "Six phases".

Same class of reviewer-facing drift the earlier review rounds flagged on the signoff-table column count and the task-count thresholds β€” worth keeping the CHANGELOG enumeration aligned with the shipped skill structure since downstream readers cite the CHANGELOG as the change summary.

- **`developing-the-spec` skill** β€” Spec-Kit `/specify` analog covering both halves of the spec activity in one tight skill. The understand half resolves open design questions one at a time with concrete options into the Clarifications Log (dual-use working state and reviewer artifact, per Anthropic's structured-note-taking pattern); the specify half captures the resolved change into the Specification section: articulate scope, then consider Spec Alternatives ("is there a smaller change that delivers most of the value?"). Four phases: Gather context (Decided / Open / Gaps triage), Resolve open questions (one at a time), Articulate the Spec, Spec Alternatives. `HARD-GATE` blocks Spec content while Open clarifications remain β€” internal phase ordering replaces the earlier cross-skill redirect. `TaskCreate` discipline at each phase; resume supported via `AskUserQuestion`. Capture is liberal during Resolve; `developing-the-plan` curates drafting trivia before cross-team review.
- **`developing-the-plan` skill** β€” Spec-Kit `/plan` + `/tasks` analog. Develop Plan and Tasks once Specification is set. Eight activities: Plan Alternatives, per-layer architectural mapping via `Skill(architecting-solutions)`, Tasks decomposition with the 10-task soft prompt, **in-flight scan** against the concrete file and module list (three sources: other teams' breakdowns, open PRs in affected repos, recent `git log` activity), **cross-team impact identification with depth + churn characterization**, surface what would surprise a reader, curate the Clarifications Log to prune drafting trivia, AI clarify pass. The signoff table is built here, but **assigning a collaboration model per impact is an owner task, not a skill task** β€” the breakdown owner picks a model (File a Ticket / Internal Open-Source / Embedded Expert) per row based on the depth and churn the skill captured, and the owning team confirms or counter-proposes at signoff. The Signoff column fills itself in between `Proposed` and `Accepted` as named reviewers respond; there is no chasing skill. Routes cryptographic work through `Skill(bitwarden-security-context)`. `HARD-GATE` blocks Plan content while Specification is empty or while Open clarifications remain.

### Changed

- **Tech Breakdown workflow re-anchored to the markdown-based [`bitwarden/tech-breakdowns`](https://github.com/bitwarden/tech-breakdowns) repo template** (single self-contained file in `<team>/`, no child pages) β€” replaces the previous Confluence template page. Named sections (Specification, Clarifications Log, Plan with per-layer subsections, Tasks, Agent Context) replace "Part 1–6" numbering. Lifecycle states are Title Case (`In Planning / In Progress / Proposed / Accepted / Rejected / Complete`). Workflow mechanics anchored on git PRs and CODEOWNERS rather than Confluence edits. AI-clarify-pass discipline applied in `developing-the-plan` activity 8. Engineer-vs-tech-lead role split removed β€” anyone on the team drafts a breakdown. Files under `**/complete/**` are point-in-time historical records, not source of truth.
- **Signoff table** β€” columns are `Owning team`, `Interface or change`, `Associated breakdown`, `Model`, `Signoff`. (`Team` β†’ `Owning team`, `Describe interface` β†’ `Interface or change`, `Associated Other Team Breakdown` β†’ `Associated breakdown`; the `Blocking?` column is dropped; the `Model` column is added.) Built inside `developing-the-plan` activity 5. The skill characterizes each impact's domain-overlap depth and owning-team domain churn into the `Interface or change` cell; the breakdown owner uses that characterization to assign a collaboration model in the `Model` column (owner task, not skill task). Reviewers from named owning teams fill the `Signoff` column during cross-team review between `Proposed` and `Accepted`. Teams that only need to be informed belong in Coordination notes or an FYI Slack post.
- **Jira story creation** β€” two valid timings, tied to how the team refines: **create stories at Proposed entry** (default, for ticket-refinement teams) or **defer to the Accepted gate** (for teams who refine on the breakdown). Either way, by `Accepted` stories must exist with bidirectional linkage. Owned by `syncing-tasks-with-jira`. Story-specific tech-breakdown content goes in the dedicated **`Technical breakdown` custom field** (`customfield_10313`), not Description. `customfield_*` IDs surfaced inline (Technical breakdown `customfield_10313`, Acceptance Criteria `customfield_10192`, Team `customfield_10001`) so authoring tooling can target them programmatically. Mechanics-level Jira writes are delegated to whichever Jira authoring tooling the engineer has available (a `jira-manager` / `jira-cli` skill, direct Atlassian MCP write calls, or the Jira UI) rather than performed by this skill.
- **Tasks-section sizing nudge** β€” **10 or fewer tasks** is healthy (refinable in one or two sessions, predictable release date); **more than 10** review for natural seams (sequential phases, independently-shippable subsets, interface boundaries) and split.
- **Engineering-owned vs. Product-owned BW Initiatives** distinguished across the tech-breakdown skills. `Skill(navigating-the-initiative-funnel)` references are qualified as applying only to Engineering-owned initiatives; for Product-owned initiatives, point at the linked PRD and the named Product owner for the equivalent context and escalation paths.
- Plugin `allowed-tools` set across the lifecycle skills updated for the new working surface: local filesystem tools (`Read`, `Edit`, `Write`, `Bash`, `Glob`, `Grep`) for working with the `bitwarden/tech-breakdowns` repo; Atlassian read tools retained for pulling Jira/Confluence context referenced from a breakdown.
- README skill catalog and the `bitwarden-tech-lead` agent's Cross-Plugin Integration block updated to the new phase-scoped skills, with the current template section naming and Title Case lifecycle states.

### Security

- Tech-breakdown skills (`starting-a-tech-breakdown`, `developing-the-spec`, `developing-the-plan`, `syncing-tasks-with-jira`) β€” added untrusted-input boundary callouts. Engineer-authored markdown in `bitwarden/tech-breakdowns`, sibling-team breakdowns, PR titles, branch names, and commit messages are explicitly framed as data under analysis, never as instructions to execute. Addresses CWE-1427 exposure from the `Bash`/`Write`/`Edit` access the lifecycle skills hold while reading engineer-authored content.

## [1.3.0] - 2026-05-20

### Changed
Expand Down
Loading
Loading