Use before starting any significant build or before shipping: problem-framing pre-flight, one-way/two-way door classification, ADR-lite decision logging, and post-ship outcome loop. Complements godmode-shipping (technical gate) and bdbresilience (error recovery).
Installs into .claude/skills of the current project.
Are you the author of Bdb Shipping Skill?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/hybridlabor-api-bdb-shipping-skill)
---
name: bdb-shipping-skill
description: "Use before starting any significant build or before shipping: problem-framing pre-flight, one-way/two-way door classification, ADR-lite decision logging, and post-ship outcome loop. Complements godmode-shipping (technical gate) and bdbresilience (error recovery)."
category: engineering-method
---
# BDB Shipping Skill — Pre-Flight, Door Classification, ADR-lite, Post-Ship Loop
This skill fills the four decision-quality gaps that neither `godmode-shipping` nor `bdbresilience` covers:
- `godmode-shipping` → technical release gate (tests, checklist, feature flags, rollback, CI). Load it for that.
- `bdbresilience` → error recovery, 429-backoff, distributed locking, fault taxonomy. Load it for that.
- This skill → problem framing, reversibility classification, decision logging, outcome verification. Load it for this.
---
## Routing Table
| Situation | Skill to load |
|---|---|
| Running pre-launch checks, CI gate, WCAG, feature flags | `godmode-shipping` |
| Handling transient errors, rate limits, concurrent locks | `bdbresilience` |
| Starting a significant build — framing the problem | **this skill** |
| Making a one-way or two-way door decision | **this skill** |
| Recording a significant architectural choice | **this skill** |
| Confirming a ship actually delivered value | **this skill** |
Significant build means any work that takes more than one commit, touches a public contract, or requires a decision that is not immediately reversible. For a one-liner fix or a pure chore, skip this skill.
---
## 1. Pre-Build Problem-Framing (Pre-Flight)
Run these five questions before the first file is written. The answers go into the ADR-lite entry (section 3) or, for smaller work, into the commit message or PR description. A question with no answer is a blocker — do not proceed until it is answered.
**Q1 — What problem does this solve?**
State the user-visible or system-visible problem in one sentence. If you cannot write that sentence, the problem is not understood yet.
**Q2 — Why now, not next sprint?**
Name the forcing function: a deadline, a blocking dependency, a cost that compounds if delayed. "It would be nice" is not a forcing function.
**Q3 — What is explicitly out of scope?**
List at least one thing that is tempting but excluded. Scope creep almost always enters through an unguarded boundary. Write the boundary down.
**Q4 — What does success look like, measurably?**
Name a metric, a threshold, or an observable outcome that confirms the work delivered its value. "It works" is not measurable. "Error rate on /api/export drops below 0.1%" or "user can complete onboarding in under 3 steps" is.
**Q5 — Is this reversible?**
Classify the change (see section 2). If it is a one-way door, written justification is required before proceeding.
---
## 2. One-Way / Two-Way Door Classification
Before any irreversible change, name the door type. Gate accordingly.
### Two-Way Doors — can proceed normally
Changes that can be undone with low cost and no external impact:
- UI layout, copy, styling changes
- Internal refactors with no API surface changes
- Configuration behind a feature flag
- Adding a new optional endpoint (additive-only)
- Internal test infrastructure changes
Two-way door work proceeds when pre-flight (section 1) passes. No extra gate.
### One-Way Doors — require written justification and explicit GO
Changes that cannot be undone without significant cost, coordination, or external impact:
- Public API contract changes (breaking or removing a field, endpoint, or behavior)
- Database schema changes (especially dropping columns, changing types, removing tables)
- Published npm package versions (`npm publish` / `npm version`)
- Pricing or billing model changes
- Security model changes (auth scheme, permission structure, encryption at rest)
- Removing or renaming a public CLI command or config key
- Any change that alters an external integration contract other parties depend on
**Gate for one-way doors:**
1. Write one sentence stating: what is changing, why it cannot be reversed, and what the migration/recovery path is for any party depending on it.
2. Paste that sentence into the ADR-lite entry (section 3) under `Reversibility`.
3. Wait for explicit GO before executing. The GO rule from AGENTS.md applies: a plan is read-only until the user replies with the literal word GO.
### When the classification is unclear
Default to one-way. The cost of an unnecessary GO gate is one conversation turn. The cost of treating a one-way door as reversible is potentially irreversible.
---
## 3. ADR-lite Decision Log
Record any significant architectural or product decision — including every one-way door — using this format. Lightweight by design: one file per significant choice, stored in `docs/decisions/` or `production_artifacts/decisions/`. File name: `YYYY-MM-DD-<slug>.md`.
```markdown
# ADR: <title, max 60 characters>
**Date:** YYYY-MM-DD
**Status:** proposed | accepted | superseded-by ADR-YYYY-MM-DD-<slug>
## Context
One sentence: the situation that made this decision necessary.
## Options Considered
- Option A: <what it is and why it was considered>
- Option B: <what it is and why it was considered>
- (add more; delete this line if only one option was viable)
## Decision
<Which option was chosen, in one or two sentences.>
## Reversibility
- Type: one-way | two-way
- Migration path (one-way only): <what a party depending on the old behavior must do>
## Revisit Trigger
<The specific event or metric that would make this decision worth re-examining.
Examples: "If p95 latency on this path exceeds 200ms after the migration",
"If a second consumer needs to read this field", "After Q1 usage data is available.">
```
Store the file. Reference it from the PR description. You do not need a framework, a tool, or a meeting — just the file.
---
## 4. Post-Ship Outcome Loop
Define the check-back before the ship, not after. At the time of shipping, record this alongside the ADR-lite entry or in the PR description:
**Check-back trigger:** When will you look? Choose one:
- Time-based: "Check in N days." (N = 7 for most features; 1 for anything touching the critical path.)
- Metric-based: "Check when [metric] reaches [threshold]."
**Success signal:** What observable outcome confirms the work delivered its stated value (from Q4 above)?
**Rollback signal:** What observable outcome triggers rollback consideration? Be specific: name the metric and threshold. "Something seems wrong" is not a signal. "Error rate on the affected endpoint exceeds 1% over a 15-minute window" is.
**Who checks?** Default: the person who shipped it. If that person is unavailable, name a fallback now.
Post-ship check is not optional for one-way door changes. For two-way door changes it is recommended but can be skipped if the change is trivially observable (e.g., a style change that is visible on first load).
---
## 5. Common Rationalizations
| Rationalization | Reality |
|---|---|
| "I'll define success after I ship." | Success defined post-hoc matches whatever shipped, not what the user needed. Write it before. |
| "This is just a small refactor, the door classification doesn't apply." | Classification is fastest on small changes. The blast radius of a wrong call on a large change makes the small effort worthwhile. |
| "I'll write the ADR after the decision is stable." | A decision that has already shipped is not a decision — it is a fact. Write it when options are still open. |
| "The rollback trigger is obvious, I don't need to write it down." | Obvious rollback signals are still missed under incident pressure. Write the number before the incident. |
| "The post-ship check-back is someone else's job." | If no one is named, no one owns it. Name someone before shipping. |
---
## 6. Verification Checklist
Before calling this skill's work done:
- [ ] All five pre-flight questions answered (section 1)
- [ ] Door type classified — one-way or two-way (section 2)
- [ ] If one-way: written justification present and GO received before execution
- [ ] ADR-lite entry created for any significant decision or one-way door change, stored in `docs/decisions/` or `production_artifacts/decisions/`
- [ ] Post-ship check-back defined: trigger, success signal, rollback signal, owner (section 4)
- [ ] ADR-lite entry referenced from the PR description or commit message