consulting-adrs
Check a design, change, pull request, plan, or threat model against Bitwarden's Architecture Decision Records (ADRs), or locate…
Reference for Bitwarden GitHub Actions naming conventions that the workflow linter (bwwl) does not enforce. Covers three standards — job IDs (kebab-case), step names (Sentence case imperative), and workflow file names (kebab-case.yml, `_` prefix for reusable) — plus an advisory
$ npx -y skills add bitwarden/ai-plugins --skill auditing-workflow-conventions --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/auditing-workflow-conventionsContext preview
The summary Claude sees to decide when to auto-load this skill.
Reference for Bitwarden GitHub Actions naming conventions that the workflow linter (bwwl) does not enforce. Covers three standards — job IDs (kebab-case), step names (Sentence case imperative), and workflow file names (kebab-case.yml, `_` prefix for reusable) — plus an advisory
name: auditing-workflow-conventions description: >- Reference for Bitwarden GitHub Actions naming conventions that the workflow linter (bwwl) does not enforce. Covers three standards — job IDs (kebab-case), step names (Sentence case imperative), and workflow file names (kebab-case.yml, `_` prefix for reusable) — plus an advisory canonical step-name glossary and reference-sweep procedures for job ID and filename renames. Use when auditing or authoring workflows and questions like "what casing should job IDs use", "should this reusable workflow be build.yml or _build.yml", or "review these workflows for naming consistency" come up. Read alongside bitwarden-workflow-linter-rules, which is the source of truth for linted rules; this skill covers only the gaps. allowed-tools: Read, Glob, Grep, Skill, Bash(gh search code:*)
This skill covers only what `bwwl` cannot check. For anything the linter enforces, invoke `Skill(bitwarden-devops-engineer:bitwarden-workflow-linter-rules)` — that skill is the source of truth for all `bwwl` rules, including their triggers and fix procedures. Do not report a finding here that duplicates a linter rule.
| Naming category | Owner | | -------------------------------------- | --------------------------------------------------------------------- | | Job IDs | **This skill** | | Step name casing | **This skill** | | Workflow file names | **This skill** | | Workflow and job display `name:` | `bitwarden-workflow-linter-rules` — `name_capitalized`, `name_exists` | | Outputs | `bitwarden-workflow-linter-rules` — `underscore_outputs` | | Job-level env vars | `bitwarden-workflow-linter-rules` — `job_environment_prefix` | | Inputs, bash variables, artifact names | **No standard.** Do not invent one — flag the gap instead. |
`name_capitalized` checks only that the first character is capitalized. `Get Package Version` passes the linter and still deviates from the Sentence case standard below. The two are complementary.
These three IDs are defined by this skill, not by `bwwl`. Label them as convention findings, never as linter findings.
A job ID is an identifier, not a label. Before proposing a rename, resolve every reference:
1. `needs:` in the same file, in both scalar and list form. 2. `${{ needs.<job-id>.* }}` expressions anywhere in the file. 3. `jobs.<job-id>.outputs` at the workflow level of a reusable workflow.
Check-run names derive from a job's `name:`, not its ID, so a job-ID rename does not affect required status checks — **unless** the job has no `name:`, in which case the ID becomes the check name and a rename can break a ruleset that requires it. `name_exists` already flags a job with no `name:`; if you encounter one, fix that first and rename second.
Step names are display-only — they are not addressable from expressions, since `steps.<id>` resolves the step's `id:`. Changing one is safe and needs no reference sweep. This is the only standard here an agent may apply directly during an edit.
**Exclusively reusable** means the `on:` block declares nothing outside `workflow_call` and `workflow_dispatch`. `workflow_dispatch` is a manual testing and operations escape hatch, not a standalone entry point, so it does not disqualify the prefix.
Any other trigger — `push`, `pull_request`, `pull_request_target`, `schedule`, `release`, `workflow_run`, `repository_dispatch` — makes the workflow **dual-purpose**: it both runs on its own and is callable by others. Dual-purpose workflows take no prefix. This is a deliberate and co
A curated collection of plugins for AI-assisted development at Bitwarden. Enables discovery and distribution of quality-controlled plugins for use with Claude Code.
Check a design, change, pull request, plan, or threat model against Bitwarden's Architecture Decision Records (ADRs), or locate…
Use when the user provides a single Jira issue key and asks whether it is still relevant, still applicable, still pending, still…
File Jira work items that stand on their own, with real ticket titles, acceptance criteria in whatever field the target project…
Use whenever the user mentions a Jira issue key and wants more than a surface-level lookup — "Read PROJ-123", "What's PROJ-123…
Use when the user is addressing pull request review comments locally and asks for help evaluating, implementing, or drafting…
Use this skill to validate findings during a code review. For each finding, run the rejection criteria and verification checks.…