Skip to content

feat: add bitwarden-shepherd plugin for Software Initiative Funnel#116

Open
withinfocus wants to merge 7 commits into
mainfrom
shepherd-plugin
Open

feat: add bitwarden-shepherd plugin for Software Initiative Funnel#116
withinfocus wants to merge 7 commits into
mainfrom
shepherd-plugin

Conversation

@withinfocus
Copy link
Copy Markdown
Contributor

@withinfocus withinfocus commented May 12, 2026

🎟️ Tracking

No Jira/GitHub issue — this is a self-initiated follow-up to #95 (Tech lead agent skill development), which scoped bitwarden-tech-lead around the team-side of an initiative and explicitly noted that funnel-mechanics skills live in bitwarden-delivery-tools so "multiple agents (tech-lead, software-engineer, shepherds) can compose them." This PR ships that shepherd plugin.

📔 Objective

Introduce bitwarden-shepherd as the upstream counterpart to bitwarden-tech-lead. Where tech-lead represents a team inside an initiative, shepherd is the Staff+ engineer who champions a Technical Strategy Idea through Architecture's evaluation, into the Software Initiative Funnel, and across all five funnel phases to durable adoption.

Persona framing. The agent leads with the strategy-champion role — holding a thesis about something Bitwarden should change — and frames the funnel mechanics as how that thesis becomes reality. The role spans two connected acts the Confluence docs already name:

  1. Shepherd a Technical Strategy Idea as Primary Owner through peer review, the Stakeholder & Engagement Map, Architecture Council, and quarterly prioritization until it earns funnel intake.
  2. Shepherd the resulting initiative through Identification → Research → PoC → Scoping & Commitment → Implementation until the thesis is adopted by teams and durable beyond the shepherd's involvement.

Ships:

  • bitwarden-shepherd agent (opus, purple) with explicit shepherd-vs-team ownership boundaries and three named failure modes: writing the team's stories, drift across teams, and technically-sound proposals that stall at adoption.
  • Seven skills, ordered to mirror the persona's natural arc:
    • championing-a-strategy-idea — Primary-Owner playbook for the pre-funnel arc; canonical home for the Adoption Retrospective at Implementation handoff.
    • shepherding-an-initiative — umbrella playbook for the five funnel phases.
    • running-an-architectural-assessment (Phase 2).
    • running-a-proof-of-concept (Phase 3) — includes the close-to-code vs. centralized documentation pattern guidance.
    • scoping-and-handing-off-to-teams (Phase 4, composes running-work-transitions).
    • coordinating-implementation-across-teams (Phase 5, composes running-work-transitions).
    • curating-the-strategy-ideas-backlog — Peer-Reviewer and portfolio-curator side of the TSI Shepherding Model.

Composition over duplication. Funnel-mechanics and work-transition content lives in bitwarden-delivery-tools (added in #109). The shepherd skills compose those agent-neutral skills rather than restating them — same pattern bitwarden-tech-lead uses.

Documentation placement is grounded in canonical docs. ADRs live in the centralized bitwarden/contributing-docs repository under docs/architecture/adr/ (rendered at contributing.bitwarden.com/architecture/adr/) — not per-repo. Close-to-code documentation (framework README.md, folder notes, JSDoc/XML/rustdoc, CLAUDE.md updates) ships alongside the code. The PoC and Implementation skills carry the deep guidance for both homes.

Boundary with tech-lead. When work fits inside one team's domain or one adjacent team, the agent defers to bitwarden-tech-lead, whose description already covers filling the shepherd role for smaller-scope initiatives. bitwarden-tech-lead is bumped 2.1.0 → 2.1.1 with a "Related plugins" pointer back to shepherd for mutual discoverability.

Source grounding. Each skill anchors against the canonical Confluence docs and recommends fetching them via the atlassian MCP tool when full templates or entry/exit criteria are needed:

✅ Notes for reviewers

Pre-release iteration: the CHANGELOG 1.0.0 entry was extended in place rather than adding subsequent versions, because the plugin hasn't been released yet.

Validators run locally: npm run lint (prettier + cspell), ./scripts/validate-plugin-structure.sh bitwarden-shepherd, ./scripts/validate-marketplace.sh, ./scripts/validate-version-bump.sh origin/main bitwarden-shepherd bitwarden-tech-lead.

Test plan

  • CI: lint workflow green
  • CI: validate-plugins workflow green (structure, marketplace, version-bump)
  • plugin-validator agent run against bitwarden-shepherd (frontmatter, manifest correctness, no hardcoded credentials)
  • skill-reviewer agent run against each new SKILL.md (description quality, trigger phrase specificity, length 1k–3k words target)
  • claude-config-validator:reviewing-claude-config skill run across the new files
  • Manual scenario test (strategy-championing entry point): "I think Bitwarden should standardize observability instrumentation across services — where do I start?" Expect dispatch into championing-a-strategy-idea, not the funnel umbrella.
  • Manual scenario test (peer-review entry point): "I'm assigned peer reviewer on a TSI someone else filed." Expect dispatch into curating-the-strategy-ideas-backlog.
  • Manual scenario test (funnel-intake entry point): "ARCH-123 just got approved at quarterly review and I'm assigned shepherd." Expect dispatch into shepherding-an-initiative (umbrella), which routes by phase.
  • Manual scenario test (PoC-documentation entry point): "I just merged the PoC PR for the observability framework. What documentation should I ship before the handoff meetings?" Expect dispatch into running-a-proof-of-concept and reference to the centralized contributing-docs ADR placement plus the close-to-code framework README.md pattern.
  • Boundary test: pose a team-scope-only task. Expect the agent to defer to bitwarden-tech-lead.

Introduces a Staff+ initiative-shepherd agent as the symmetric counterpart
to bitwarden-tech-lead. Where tech-lead represents one team inside an
initiative, shepherd owns the initiative across teams — running the
architectural assessment, building the PoC, drafting the ADR, handing
epics off to teams, coordinating cross-team consistency during
implementation, and curating the upstream Technical Strategy Ideas
backlog from the Architecture-group side.

Ships with the bitwarden-shepherd agent and six skills:

- shepherding-an-initiative (umbrella playbook for all five funnel phases)
- running-an-architectural-assessment (Phase 2 deep dive)
- running-a-proof-of-concept (Phase 3 deep dive)
- scoping-and-handing-off-to-teams (Phase 4, composes running-work-transitions)
- coordinating-implementation-across-teams (Phase 5, composes running-work-transitions)
- curating-the-strategy-ideas-backlog (Architecture-curator side of TSI)

Funnel-mechanics and work-transition content is not duplicated — those
agent-neutral skills live in bitwarden-delivery-tools and are composed
by the shepherd skills (mirroring how bitwarden-tech-lead composes them).

Also bumps bitwarden-tech-lead 2.1.0 → 2.1.1 with a Related Plugins
pointer to bitwarden-shepherd so the two siblings are mutually
discoverable, and registers the new plugin in the root README catalog
and marketplace.json.
…y championing

The v1.0.0 framing led with funnel mechanics — "owns a single cross-cutting
initiative end-to-end" — and treated the upstream TSI work as a secondary
curator responsibility. The Confluence docs frame the role differently:
the TSI page describes a Shepherding Model where every active idea has a
Primary Owner who "drives the idea through the pipeline" and "shepherds
the transition to the funnel." The shepherd is genuinely a two-act role.

Rebias the persona to lead with championing a thesis about what Bitwarden
should change; the funnel mechanics are how the thesis becomes reality.

Adds:

- championing-a-strategy-idea skill — Primary-Owner playbook for the
  pre-funnel arc: pairing with a peer reviewer, completing the
  Stakeholder & Engagement Map (with friction named honestly), refining
  the Problem Statement through Research, presenting at Architecture
  Council, earning intake at quarterly prioritization, transitioning to
  the BW Initiative. Also the canonical home for the Adoption
  Retrospective at Implementation handoff (influence-effectiveness retro
  — Primary Owner + Peer Reviewer, distinct from the funnel's execution
  retro covered in coordinating-implementation-across-teams).

Reframes:

- AGENT.md description and system prompt now lead with "champion of
  Bitwarden's technical strategy" and the two-act arc; the
  ownership-division block and failure modes are preserved. A third
  failure mode — "technically sound proposals that stall at adoption" —
  is added because it's the championing-act equivalent.
- AGENT.md scope list and orientation now lead with strategy-championing
  entries and add a "locate yourself in the two acts" first orientation
  step.
- Skills frontmatter and orientation dispatch reorder the seven skills
  to follow the persona's natural arc: champion -> umbrella -> four
  phase deep dives -> curator/peer-reviewer.
- shepherding-an-initiative opening clarifies that the umbrella picks up
  after Architecture has approved an idea for funnel intake; pre-funnel
  work lives in championing-a-strategy-idea.
- curating-the-strategy-ideas-backlog is retitled in framing to the
  Peer-Reviewer-and-portfolio-curator side of the same Shepherding
  Model. Its description, two-roles section, Adoption Retrospective
  section, and common-mistakes entry now point to
  championing-a-strategy-idea for the Primary-Owner playbook.
- README, plugin.json, marketplace.json, and root README catalog
  descriptions all reframed to lead with the strategy-champion framing.

The v1.0.0 changelog entry is rewritten in place rather than bumping
version, since this branch is unmerged pre-release iteration.
@withinfocus withinfocus added the ai-review Request a Claude code review label May 12, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 12, 2026

Bitwarden Claude Code Review

Overall Assessment: APPROVE

Reviewed the new bitwarden-shepherd plugin (agent + 7 skills + README + CHANGELOG + manifest) and the companion bitwarden-tech-lead 2.1.0 → 2.1.1 bump (README "Related plugins" pointer + four <example> blocks added to the agent description). Verified marketplace.json/README.md/plugin.json version consistency against origin/main (no regressions for unrelated plugins this time), confirmed all 7 declared skills exist and every cross-plugin Skill() reference resolves to a real skill in bitwarden-delivery-tools, bitwarden-tech-lead, bitwarden-security-engineer, and bitwarden-atlassian-tools. The previously unresolved "four key success factors" thread is now outdated — the file correctly reads "five" after commit 136303f. No code, hooks, MCP servers, or dependency manifests changed; all surface area is documentation and prompt content.

Code Review Details

No findings.

Comment thread .claude-plugin/marketplace.json
…erns

Two corrections grounded in [Documentation Patterns][docs-patterns]:

1. ADRs live in the centralized `bitwarden/contributing-docs` repository
   under `docs/architecture/adr/` (rendered at
   contributing.bitwarden.com/architecture/adr/) — not in per-repo ADR
   directories. The earlier "appropriate codebase's ADR directory"
   phrasing in running-a-proof-of-concept and shepherding-an-initiative
   was wrong; corrected both.

2. The PoC is the moment to establish documentation patterns for the
   new framework — both close-to-code (framework README, folder notes,
   JSDoc/XML/rustdoc, CLAUDE.md updates) and centralized (ADR, migration
   guides, contributing-guide changes in contributing-docs). Without
   this, the PoC PR is far less legible at Phase 4 handoff and during
   Phase 5 adoption.

Changes:

- running-a-proof-of-concept: corrected ADR location with a concrete
  reference to ADR 0020 as an example; added a new "Establishing
  Documentation Patterns" section covering close-to-code vs. centralized
  homes, what the PoC ships in each, and tech-stack-specific guidance.
- shepherding-an-initiative: corrected Phase 3 ADR location; added a
  close-to-code documentation bullet pointing to the deep skill.
- coordinating-implementation-across-teams: reframed "Managing
  Documentation" to anchor on the two homes — close-to-code (README,
  folder notes, inline docs, CLAUDE.md updates alongside team code) and
  centralized (ADR finalization, migration guide, contributing-guide,
  runbooks in contributing-docs).
- Added Documentation Patterns to the Reference section of both PoC and
  coordinating skills.
- .cspell.json: added rustdoc.
- CHANGELOG: extended the still-unreleased 1.0.0 entry to note the
  grounded documentation framing.

[docs-patterns]: https://bitwarden.atlassian.net/wiki/spaces/EN/pages/1774977070/Documentation+Patterns
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 13, 2026

Plugin Validation Report — PR #116

Validated two changed plugins (bitwarden-shepherd, bitwarden-tech-lead) and seven new SKILL.md files. Overall: PASS. No critical or major issues. A handful of optional polish notes are listed under Minor / Informational.

Scope of validation

  • Plugins validated: bitwarden-shepherd, bitwarden-tech-lead
  • Agents reviewed: bitwarden-shepherd/agents/AGENT.md, bitwarden-tech-lead/agents/AGENT.md
  • Skills reviewed: all 7 changed SKILL.md files under bitwarden-shepherd/skills/
  • Hooks reviewed: none changed
  • Security scan: all 15 changed files

Critical issues

None.

Major issues

None.

Minor issues

bitwarden-tech-lead/.claude-plugin/plugin.json:18 — non-standard agents field

  • What: The manifest declares "agents": "./agents/AGENT.md". The plugin-validator agent flagged this as non-standard since agents are normally auto-discovered from the agents/ directory. Discovery still works because agents/AGENT.md lives in the canonical location, so this is cosmetic.
  • Why it's minor: Pre-existing field carried forward through prior versions; does not affect function or security.
  • Remediation (optional): Either remove the field to rely on auto-discovery, or keep it consistently across all repo plugins. No action required for this PR.

Skill description voicing — set-wide stylistic note

All seven changed SKILL.md files open their description: with a label phrase (e.g., "Primary-Owner playbook for…", "Peer-Reviewer and portfolio-curator side of…", "Phase 5 (Implementation) deep dive for…") rather than the canonical Use when… / This skill should be used when… lead-in. Each description does include a Use when… clause later, so trigger surface is preserved.

  • Affected lines: :3 of each file
    • bitwarden-shepherd/skills/championing-a-strategy-idea/SKILL.md:3
    • bitwarden-shepherd/skills/coordinating-implementation-across-teams/SKILL.md:3
    • bitwarden-shepherd/skills/curating-the-strategy-ideas-backlog/SKILL.md:3
    • bitwarden-shepherd/skills/running-a-proof-of-concept/SKILL.md:3
    • bitwarden-shepherd/skills/running-an-architectural-assessment/SKILL.md:3
    • bitwarden-shepherd/skills/scoping-and-handing-off-to-teams/SKILL.md:3
    • bitwarden-shepherd/skills/shepherding-an-initiative/SKILL.md:3
  • Remediation (optional polish): Reword each description opening into Use when… form on a future polish pass. One-line edit per file.

bitwarden-shepherd/skills/coordinating-implementation-across-teams/SKILL.md:3 — long description

  • What: Description is ~580 characters, slightly above the ~500-char advisory ceiling.
  • Why it's minor: Content is load-bearing for disambiguation against sibling skills; trigger surface is strong.
  • Remediation (optional): If touched in a future polish pass, tighten the closing clause. Watch this one before extending further.

Informational

  • No references/, examples/, or scripts/ directories exist under the 7 new skills. This is acceptable for prose-playbook skills that point to external Confluence/Jira artifacts (rather than reusable code patterns). All skills are within the 1,000–3,000 word target (1,538–2,539 words). If any skill later grows past ~3,000 words, factor "what you produce" enumerations into references/.

Detailed findings by check

1. Plugin Validation — plugin-validator agent

bitwarden-shepherd (v1.0.0): PASS — all structural, schema, frontmatter, security, and version-consistency checks succeed.

  • Manifest valid; required fields present.
  • Agent: name: bitwarden-shepherd, 4 <example> blocks in description, model: opus, color: magenta, system prompt substantial.
  • 7 skills, all with valid frontmatter; each name matches its directory.
  • No hardcoded credentials; no stray artifacts.
  • Version consistent across plugin.json (1.0.0), CHANGELOG.md ([1.0.0] - 2026-05-13), and marketplace.json (1.0.0).
  • Cross-plugin MCP tool consumption via fully-qualified mcp__plugin_bitwarden-atlassian-tools_* names — correct pattern.

bitwarden-tech-lead (v2.1.1): PASS — all critical and major validation checks pass.

  • Manifest valid; one minor observation on the agents field (see Minor issues above).
  • Agent: name: bitwarden-tech-lead, 4 <example> blocks, model: opus, color: cyan, system prompt substantial.
  • 2 existing skills (not changed in this PR) validated and well-formed.
  • Version consistent across plugin.json (2.1.1), CHANGELOG.md ([2.1.1] - 2026-05-11), and marketplace.json (2.1.1).
  • CHANGELOG follows Keep a Changelog format with breaking-change flag retained on 2.0.0.
  • README contains explicit upgrade guidance for the 2.0.0 rename from bitwarden-architect.

2. Skill Review — skill-reviewer agent

All 7 changed skills PASS:

Skill Words Frontmatter Body quality
championing-a-strategy-idea 2,539 valid strong: arc walkthrough, gates, retro, common mistakes
coordinating-implementation-across-teams 2,477 valid cadence-driven; anti-pattern about code review is clear
curating-the-strategy-ideas-backlog 2,007 valid defers Stakeholder Map to sibling skill — good progressive disclosure
running-a-proof-of-concept 2,070 valid unambiguous ADR-location guidance
running-an-architectural-assessment 1,538 valid Part A/B time split mirrors budget
scoping-and-handing-off-to-teams 1,990 valid leads with anti-pattern — strong pedagogy
shepherding-an-initiative 2,032 valid umbrella playbook dispatching to phase-deep skills
  • All name fields match directory names.
  • All cross-references to sibling skills (bitwarden-tech-lead, bitwarden-delivery-tools) resolve to existing skills.
  • Writing style is consistently imperative/infinitive throughout.
  • Trigger surface is strong: descriptions name specific artifacts, phases, decision-makers, and explicit boundary calls against adjacent skills.

3. Security Validation — claude-config-validator (reviewing-claude-config)

PASS — no security issues found.

Check Result
Committed settings.local.json N/A — not in change set
Hardcoded credentials / API keys / tokens / passwords None found
.env or credentials.json None present
Permission scoping in settings N/A — no settings files in change set
Dangerous command auto-approvals N/A — no settings files in change set
Agent tool scope Both agents scope to Read, Write, Glob, Grep, Skill (no Bash, WebFetch, Edit, no wildcards)
Skill allowed-tools scope All 7 shepherd skills restricted to Skill + read-only Atlassian MCP tools (no write/delete)
MCP HTTPS/WSS enforcement N/A — no MCP server configs in change set
Prompt-injection vectors None found; external references all point to Bitwarden-controlled domains
Cross-plugin failure modes "STOP and alert the human" patterns used for missing dependencies — correct fail-safe

Conclusion

The PR is in a release-ready state. Both plugins pass structural, frontmatter, changelog, version-consistency, and security validation. The 7 new shepherd skills are well-written, lean, and within target word counts. All minor issues are stylistic polish items that can be addressed in a future pass without blocking this PR.

…findings

Two changes from validator findings in PR #116 (see comment 4441026950):

1. Both agent descriptions now include four `<example>` blocks following
   Anthropic's documented standard for agent description fields. This
   gives the orchestrator concrete triggering scenarios rather than
   prose alone, which is the load-bearing signal for routing accuracy.
   Adopting it in both opus-level boundary agents (shepherd and
   tech-lead) keeps the team-vs-shepherd routing symmetry honest.

2. The scoping-and-handing-off-to-teams skill had a ~135-line
   `## What You Produce` H2 with 8 numbered H3 deliverables nested
   inside. Replaced with a short intro listing the 8 artifacts plus
   each promoted to its own H2 — cleaner TOC, easier progressive
   scanning, no content change.

Tech-lead's example-block addition is folded into the existing 2.1.1
changelog entry rather than bumping a new version, since the change is
a description refinement on top of the not-yet-released 2.1.1.

cspell: added `touchpoint` (singular form; `touchpoints` was already
in the dictionary).

Validator findings deferred to follow-up work (with rationale): adding
`license` field is a marketplace-wide convention question, not a
shepherd-specific one; trimming long skill descriptions would erode
the trigger discrimination that distinguishes championing- vs.
curating-strategy-ideas-backlog; restructuring the explicit `"agents"`
manifest field is not actually inconsistent with this marketplace
(conventions are split three ways); adding `examples/` template skeletons
is a separate body of work that should be framed as quick-reference
scaffolds rather than Confluence duplicates.
@withinfocus withinfocus marked this pull request as ready for review May 13, 2026 17:12
@withinfocus withinfocus requested a review from a team as a code owner May 13, 2026 17:12
Comment thread plugins/bitwarden-shepherd/skills/scoping-and-handing-off-to-teams/SKILL.md Outdated
Polish from the second-round plugin-validator findings on PR #116:

- Agent color: purple → magenta (purple is outside the documented
  standard color set; magenta is the closest documented equivalent and
  stays visually distinct from tech-lead's cyan).
- Tightened the two longest skill descriptions (championing-a-strategy-idea
  and curating-the-strategy-ideas-backlog) without losing trigger
  discrimination.
- Deduplicated the Stakeholder & Engagement Map section: the canonical
  field-by-field detail now lives only in championing-a-strategy-idea
  (Primary-Owner side); the curator skill keeps a pointer plus its own
  Peer-Reviewer-specific guidance on what to push back on.
- scoping-and-handing-off-to-teams: corrected "four" → "five" success
  factors in the Exit Criteria list.

Also rewrote the v1.0.0 changelog to describe what the release is rather
than the iteration history of getting there. Implementation minutiae
(description char counts, color choices, off-by-one fixes) belong in PR
commits, not in the public changelog.
Copy link
Copy Markdown
Contributor

@theMickster theMickster left a comment

Choose a reason for hiding this comment

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

I like the plugin's detailed breakdown by phase and am intrigued to see how the skills will support folks as they work through the funnel. My mind is seeing the plugin as the coach to help a Staff+ stay focused over many sessions that span weeks/months.

I am a little concerned about the amount of text in each skill. Feels like a lot to maintain and we may need to trim the fat (I tell Claude that a lot when it's helping me write skills, lol) over time keeping only the most succinct + direct instructions to prevent Claude from wandering.

Areas of minor improvement
I think we need to split up is the description frontmatter into description and when_to_use properties Building Claude Skills - Frontmatter. @SaintPatrck mentioned it in #121 and I have added that as well to newer skills. And when we do, I think we need to keep them succinct to avoid the following :

Image

I would also like to see Claude + /skill-creator surgically trim those initial opening paragraphs that come right after the frontmatter. The body of each skill is very strong and carries the theme of each well, so to me they feel redundant. I have tended to prefer a cut to the chase motto when designing Claude skills.

The agent comment of mine is a topic for discussion, not necessarily a required change yet.


You are not the tech lead for any of the implementing teams. The `bitwarden-tech-lead` plugin covers the team-side counterpart of this role. When something is purely inside one team's codebase boundary, defer to that team's tech lead. When a team-scope tech lead asks you to make a team-internal call, push it back to them — your authority is at the initiative scale and the strategy scale, not below.

## Scope: When To Use This Agent
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.

💭 I appreciate the depth of detail the describes when to use the agent, but I'm unsure if this is the best location for these details. We have a strong description opening followed by several examples. I am unsure how a subagent invoked as the bitwarden-shepherd utilizes this information.

Maybe another way to say that is, what does a bitwarden-shepherd subagent do differently knowing when it's supposed to be used (which is essentially the section title)?

My initial sense is that the best home for this is outside the agent itself 🤔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-review Request a Claude code review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants