
running-a-proof-of-concept
Phase 3 (Proof of Concept) deep-dive playbook — validates the Research recommendation in real Bitwarden code and drafts the ADR.
- Installs
- 52
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/bitwarden/ai-plugins --skill running-a-proof-of-concept- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads running-a-proof-of-concept automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Phase 3 (Proof of Concept) deep-dive playbook for an initiative shepherd. Deliverables: one or more PRs that demonstrate the recommended pattern in real Bitwarden code, Architecture Council review, and a draft ADR in the centralized contributing-docs repository (not per-repo). Time budget: 2–4 weeks, 40–80 hours of shepherd time. PoCs that stretch past 4 weeks usually signal either the wrong scope (too ambitious) or the wrong approach (the recommendation isn't working).
What the PoC Is For
Three things, in order:
- Prove the approach works in Bitwarden's real codebase — not in a sandbox, not on a clean repo, not in a hypothetical. Production-quality code on a representative slice.
- Surface the friction the assessment couldn't predict. Every approach looks good on paper. The PoC is where you discover that the chosen pattern needs a TypeScript interface refinement, or that the test infrastructure can't represent the new boundary, or that the receiving team's existing telemetry breaks under the new structure.
- Give the receiving teams something concrete to react to. A PoC PR is a far better basis for handoff than an architecture doc alone. Teams orient on code faster than on prose.
If the PoC doesn't accomplish all three, the next phase will pay for it.
Selecting the PoC Area
This is the highest-leverage decision in the phase. The funnel doc's guidance: representative but contained, ideally ~1–5 files or one module that demonstrates the key patterns.
How to choose:
- Pick an area that exercises the parts of the approach most likely to fail. If the approach is async error handling, pick a service with non-trivial async paths. If it's a new state-management library, pick a feature with real state transitions.
- Avoid the simplest possible case. A PoC on a trivial slice proves nothing the assessment didn't already claim.
- Avoid the worst possible case. A PoC on the most pathological module of the codebase will fail for reasons that have nothing to do with the approach. You'll learn something, but not what you needed to learn.
- Coordinate with the owning team's tech lead. Their input on the right slice is usually decisive. They know which area is illustrative and which is a tarpit. They also know which area their team has spare capacity to host the PoC PR review on.
Once selected, identify a point-of-contact on the owning team (usually a senior engineer, sometimes the tech lead) who will pair with you or review your work. They are not adopting the work — they are your partner in surfacing where it doesn't fit.
This is also a good moment to consult Skill(architecting-solutions) in bitwarden-delivery-tools for the team-scope architectural constraints that will shape your PoC (security mindset, multi-client reality, V+/-2 compatibility, etc.). The PoC ships against those constraints from the start, not retrofitted.
Building the PoC
Framework / Foundation
If the approach requires shared scaffolding — middleware, base classes, type definitions, shared libraries — build it first. This is the reusable piece that broader rollout depends on. The framework itself is part of what the PoC is validating.
Two principles:
- Production-quality. Cut corners on scope, not on quality. The funnel doc is explicit: "don't cut corners — this tests whether the approach actually works." Corner-cut PoCs answer the question "could this work if everything were perfect?" — not the question you actually need to answer.
- Match existing patterns where they exist. New code that ignores established Bitwarden conventions will fail review for reasons that obscure whether the approach itself worked. Read first. Build alongside, not in opposition to, what's already there.
Example Implementation(s)
Implement 1–3 examples demonstrating the new pattern in the chosen area. Each example should be self-contained enough that a reviewer can see the pattern in action, but realistic enough that it tests real-world complexity. Examples from the funnel doc: migrate one API endpoint, one UI component, or one service module.
For each example, capture:
- What worked. The cases where the pattern fits cleanly.
- What challenges emerged. Edge cases, integration friction, places where the framework had to be adjusted, things that surprised you.
- What would need to change for full rollout. Sometimes the PoC reveals that the framework needs refactoring before scale-out; sometimes it reveals that the rollout itself needs phasing.
The PR(s)
- Mark "PoC" in the title if not intended for merge — the funnel doc allows either, but be explicit about intent.
- In the PR description, write the three points above (what worked, what challenges, what would change). The PR description is the most-read artifact of the PoC; teams will read it months after the PoC PR was opened.
- Link to the Architectural Assessment so reviewers have context for why the pattern looks the way it does.
Architecture Council Walkthrough
The funnel doc strongly recommends presenting the PoC to Architecture Council at this phase. Format:
- 15–30 minute walkthrough of the PoC findings.
- Add to an upcoming Council agenda — work with the Council facilitator on timing.
- Bring: the PoC PR(s), the assessment summary, your honest read on what worked and what didn't, your proposed direction (proceed / revise / return to Research / decline).
- Optional: have the owning team's point-of-contact attend. Their on-the-ground perspective often carries weight the shepherd's framing can't.
What the Council provides: pattern-level guidance, cross-initiative awareness (is this approach in conflict with something else underway?), validation of the proposed direction, and surface concerns about rollout.
What the Council does not provide: a green light independent of engineering leadership's go/no-go at the end of the phase. The Council recommends; leadership decides.
Drafting the ADR
If the PoC validates the approach, draft an Architecture Decision Record following the Bitwarden ADR template. ADRs live in the centralized bitwarden/contributing-docs repository under docs/architecture/adr/ (rendered at contributing.bitwarden.com/architecture/adr/). There is no per-repo ADR directory — Bitwarden's architectural decisions are intentionally centralized so they're discoverable across all codebases the decision touches.
Open a PR against contributing-docs with the new ADR file, numbered sequentially after the latest accepted ADR. Example for reference: 0020-observability-with-opentelemetry.md.
The ADR is not the architecture plan — that comes in Scoping. The ADR is the decision artifact. Sections per the template:
- Context and problem statement. A self-contained summary; don't assume the reader has the assessment open.
- Decision (chosen solution). Specific. Name the pattern, library, or approach.
- Alternatives considered. From the assessment's 2–4 options. Brief — full trade-offs are in the assessment.
- Rationale for decision. Tie to the PoC findings, not just the assessment.
- Consequences (positive and negative). What changes for the codebase, the teams, operations, security posture. Negative consequences belong here — the ADR is honest, not promotional.
- Status: Proposed. It moves to "Accepted" during Phase 4 once leadership has committed.
The ADR is the durable artifact that survives the shepherd's departure. Six months from now, someone will hit a related decision and read this ADR to understand why the codebase is shaped the way it is. Write for that reader.
Establishing Documentation Patterns
The ADR captures the decision. The PoC is also the moment to establish the functional documentation that the new pattern needs to be discoverable and usable by the teams who will adopt it during Phase 5. Per Documentation Patterns, Bitwarden splits documentation into two homes that you should land in deliberately:
- Close-to-code (functional, what). Lives alongside the code in the repository. GitHub renders these
README.mdfiles automatically when engineers navigate, which is the discovery path that actually works. Use Mermaid for diagrams so they render in-place. - Centralized (logistical and architectural, how and why). Lives in the
bitwarden/contributing-docsrepository, rendered at contributing.bitwarden.com. ADRs, setup guides, feature-flag operating procedures, and cross-cutting architectural references go here.
What the PoC should ship in each home:
- Alongside the framework code, a
README.mdexplaining what the framework is, its interface, how to extend or apply it, and what trade-offs were deliberately made. Reference the ADR for the decision rationale. Examples to model on: EventIntegrations, DbSeederUtility, EmergencyAccess. - Near the example implementation(s), short folder-level notes that link out to the framework README and the ADR. Even thin folder docs help future engineers find their way to the canonical context.
- The ADR itself in
contributing-docsas covered above. - Tech-stack-appropriate inline docs. XML comments or JSDoc for TypeScript/Angular/.NET;
rustdocand crate/module-levelREADMEfor Rust. The Documentation Patterns page has the per-stack rubric. - CLAUDE.md updates where the PoC introduces a new pattern. If the new pattern is one engineers (and Claude tooling) need to follow going forward, add it to the root or folder-area
CLAUDE.md— link theREADME.mdvia@syntax and the ADR by URL. Thebitwarden-initandclaude-config-validatorplugins help bootstrap and review these.
The shape of the documentation matters because the PoC is what the receiving teams in Phase 4 will react to. A PoC PR + a framework README + an ADR is far more legible than a PoC PR alone — and the difference shows up as faster handoff meetings and less "wait, what was the intended pattern here?" during Implementation.
Updates to the BW Initiative
During PoC (see Idea-Based Initiatives):
- Links / description: Add "Relates to" links to the PoC PR(s) (or reference them in the description if they don't have separate Jira tickets).
- Comments: Record Architecture Council feedback, PoC findings (what worked, what didn't, what changed from the assessment), and the ADR decision. The Council session itself usually generates several comment-worthy moments.
- Description: If the PoC revealed a significant shift from the assessment, update the description to reflect current direction. The description always represents the initiative's current state, not its history.
- ARCH idea status: Update to "3️⃣ Proof of Concept".
Exit Criteria
Per the funnel doc:
- Deliverables: One or more PRs demonstrating the solution (even if not merged); Architecture Council review completed; ADR drafted (if proceeding); the team point-of-contact supportive of the approach.
- Decision maker: Engineering leadership with Architecture Council recommendation.
- Possible decisions: Proceed to Scoping / Revise PoC (pivot to an alternative from the assessment) / Return to Research / Decline.
For the leadership review, bring:
- A 5–10 minute summary of the PoC outcome.
- The clear ask — usually "approval to move to Scoping with X teams over Y timeframe."
- Honest acknowledgment of any concerns surfaced by the Council or the point-of-contact.
Common Mistakes
- Cutting corners on PoC quality. Then later wondering why the framework breaks at scale. The funnel doc is unambiguous: production-quality.
- Picking a PoC area too small to be representative. "Look, it works on this one trivial case" doesn't survive contact with the next team's reality.
- Picking a PoC area inside a team whose tech lead wasn't consulted. The PoC is also a relationship — make sure the team is willing to host it.
- Treating the ADR as paperwork. It's the durable decision artifact. Worth the hour.
- Skipping Architecture Council to save time. The Council's cross-initiative awareness is the cheapest way to catch conflicts that would be expensive to resolve later.
- Quietly walking away from the assessment recommendation during PoC. If the PoC suggests a different direction, surface it explicitly — don't ship a PoC that mismatches the assessment without naming why.
Reference
- Software Initiative Funnel §3 — canonical phase description, examples of effective vs. ineffective PoCs.
- Bitwarden ADR template — canonical ADR structure, served from the centralized
bitwarden/contributing-docsrepository. - Documentation Patterns — canonical guidance on close-to-code vs. centralized documentation, tech-stack-specific best practices, and CLAUDE.md conventions.
- Idea-Based Initiatives — how to update the BW Initiative during PoC.
- Related:
Skill(shepherding-an-initiative)for the umbrella playbook,Skill(running-an-architectural-assessment)for the upstream Research-phase work the PoC validates,Skill(scoping-and-handing-off-to-teams)for what the PoC feeds into,Skill(architecting-solutions)(inbitwarden-delivery-tools) for team-scope architectural constraints that shape PoC design.
FAQ
What does the running-a-proof-of-concept skill do?
Phase 3 (Proof of Concept) deep-dive playbook — validates the Research recommendation in real Bitwarden code and drafts the ADR.
How do I install running-a-proof-of-concept?
Run npx skills add https://github.com/bitwarden/ai-plugins --skill running-a-proof-of-concept in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/running-a-proof-of-concept/ (personal) or .claude/skills/running-a-proof-of-concept/ (project).
Which AI agents can use running-a-proof-of-concept?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is running-a-proof-of-concept safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains running-a-proof-of-concept?
It is published by bitwarden in bitwarden/ai-plugins, and it is an official skill from the maker of the technology it covers. It has 52 recorded installs.
More from bitwarden/ai-plugins
reviewing-security-architecture
bitwarden/ai-plugins
This skill should be used when the user asks to "review the security architecture", "check authentication patterns", "evaluate trust boundaries", "review encryption implementation", "assess authorization design", or needs to evaluate system designs for authentication, authorization, data protection, or cryptographic correctness.
threat-modeling
bitwarden/ai-plugins
This skill should be used when the user asks to "create a threat model", "define security goals", "generate a data flow diagram", "write security definitions", "perform an initial security assessment", or needs to produce threat model artifacts for new features or architecture changes.
retrospecting
bitwarden/ai-plugins
Performs comprehensive analysis of Claude Code sessions, examining git history, conversation logs, code changes, and gathering user feedback to generate actionable retrospective reports with insights for continuous improvement.
reviewing-claude-config
bitwarden/ai-plugins
Reviews Claude configuration files for security, structure, and prompt engineering quality. Use when reviewing changes to CLAUDE.md, agents, prompts, commands, hooks, or settings. Routes each file type to a targeted review skill and returns classified findings. Flags settings.local.json appearing in a changeset, hardcoded secrets, malformed YAML, insecure agent tool access, and unsafe hook commands. Does not review SKILL.md files — plugin-dev:skill-reviewer owns those.
avoiding-false-positives
bitwarden/ai-plugins
Use this skill to validate findings during a code review. For each finding, run the rejection criteria and verification checks. If a finding fails any check, drop it. In PR mode it also holds the once-per-review stacked-PR gate that decides whether completeness findings apply to the pull request at all.
posting-review-summary
bitwarden/ai-plugins
Use this skill when posting the final summary comment, including its No Verdict form when nothing could be reviewed and no inline comments exist. Otherwise apply as the LAST step of code review, after all findings are classified and inline comments are complete. Detects context (caller-declared local-file output, agent mode sticky comment, GitHub Actions MCP tool, or local file) and routes output accordingly.
Popular productivity & automation skills
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
lark-doc
open.feishu.cn
飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由;/page/ 是妙搭应用,非飞书云文档。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。
lark-base
open.feishu.cn
飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。
lark-drive
open.feishu.cn
飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。
lark-shared
open.feishu.cn
Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling notice JSON.
lark-im
open.feishu.cn
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。