agentsclimarketplace

Bvssh check

Skill haabe/mycelium/plugins/mycelium/skills/bvssh-check

AI made building cheap. It didn't make deciding cheap. Mycelium is a Claude Code harness that makes your agent run discovery and weigh evidence before it writes code. It earns the right to start. Built for software, courses, AI tools, and services.

Install
npx -y skills add haabe/mycelium --skill bvssh-check

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Use to evaluate whether current work aligns with Better Value Sooner Safer Happier. Run at diamond completion and periodically.

SKILL.md

10.1 KB, as published. Nobody here has run it

BVSSH Check Skill

Evaluate alignment with Better Value Sooner Safer Happier.

Workflow

For each dimension, assess current state:

Better

  • Quality improving or stable (not degrading)?
  • Technical debt under control (not growing unchecked)?
  • User satisfaction metrics stable or improving?
  • Defect rate stable or declining?
  • Evidence: [cite specific metrics or observations]

Value

  • Delivering measurable user or business outcomes?
  • Outcome metrics moving (not just output metrics)?
  • Work aligned with strategic priorities?
  • Not shipping features nobody uses?
  • Evidence: [cite specific metrics or observations]

Sooner

  • Lead time stable or decreasing?
  • Batch sizes small?
  • WIP limits respected?
  • Handoffs minimized?
  • No unnecessary waiting or queuing?
  • Evidence: [cite specific metrics or observations]

Safer

  • Security posture maintained or improved?
  • Compliance requirements met?
  • Risk being actively managed (not ignored)?
  • Rollback capability tested?
  • No new single points of failure?
  • Error budget healthy? (SRE -- check dora-metrics.yml sre section)
  • Evidence: [cite specific metrics or observations]

Happier

Smart's Happier covers four stakeholders: customers, colleagues, citizens, and climate. "Not 'more for less' at any human or climatic cost."

Colleagues:

  • Team working at sustainable pace? No chronic overtime? (XP -- Beck)
  • AI tools helping or adding cognitive load? (APEX DevX)
  • No signs of burnout?
  • Team has autonomy and purpose?
  • Learning happening continuously?

Customers:

  • Users expressing satisfaction?
  • Customer advocacy high? (Not just retained — actively recommending?)

Citizens:

  • Positive societal impact? (Open knowledge sharing, accessibility, inclusivity)
  • No harm to communities or vulnerable groups?

Climate:

  • Compute/token usage proportionate to value delivered? (Not brute-forcing with retries)

  • Waste prevented? (Projects killed before unnecessary code, discovery before delivery)

  • Sustainable resource usage patterns?

  • Evidence: [cite specific metrics or observations]

CALMS Culture Assessment (Willis & Humble)

CALMS originated as CAMS (Culture, Automation, Measurement, Sharing) coined by Damon Edwards and John Willis at DevOpsDays Mountainview 2010. Jez Humble added the L (Lean) to create CALMS.

Assess the five cultural dimensions that explain WHY DORA outcomes are what they are:

  • Culture: Is there a learning culture? Blameless post-mortems? Psychological safety? Or blame-and-fear?
  • Automation: Are repetitive tasks automated (testing, deployment, provisioning)? Or manual and error-prone?
  • Lean: Are batch sizes small? WIP limited? Waste actively identified and removed? Or big-batch waterfall?
  • Measurement: Are you measuring outcomes (DORA, BVSSH) or outputs (velocity, story points)? Watch for MORF anti-pattern.
  • Sharing: Is knowledge shared across teams? Cross-functional collaboration? Or siloed expertise?
  • Evidence: [cite specific observations or team feedback]

Automation — cite a measurement, not an impression. The four fitness functions emit machine-readable counts, so the Automation rating can rest on evidence rather than narrative:

python3 "${CLAUDE_PLUGIN_ROOT}/scripts/check_wiring.py" --root .
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/check_wiring_contract.py" --root .
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/check_negative_control.py" --root .
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/check_test_authenticity.py" --root .

Record under calms_assessment.automation:

wiring_integrity:
  unwired_mechanisms: 0       # check_wiring / check_wiring_contract
  guards_that_cannot_fail: 0  # check_negative_control
  inauthentic_tests: 0        # check_test_authenticity
  ungoverned_files: 12        # files matching NO contract rule
  measured_at: "YYYY-MM-DD"

ungoverned_files is the load-bearing field and the one most likely to be dropped: it counts what no rule covers. A 0/0/0 beside 400 ungoverned files reports the health of a subset while implying the whole — which is the same false green the other three exist to catch, one level up.

Why this belongs in BVSSH at all. Smart's framework separates output from outcome, and built-but-not-wired is the purest case of output without outcome: a mechanism that ships, passes review, raises coverage, appears in the changelog, and does nothing. It bears hardest on three dimensions — Value (if delivered-and-inert cannot be distinguished from delivered-and-connected, value claims are not merely hard to measure but unfalsifiable), Safer (an unwired safety mechanism gives negative safety: false assurance displaces the attention that absence would attract), and Better (a defect no quality gate catches). It does not obviously help Sooner — these checks add first-pass friction, and the counter-argument is about avoided rework, not speed. Say that plainly rather than claiming all five.

Interpreting CALMS with DORA: DORA tells you WHAT your delivery performance is. CALMS explains WHY. If DORA metrics are poor, CALMS identifies the cultural root cause. If DORA is good but CALMS is weak, the performance is fragile.

Output

Lead with the verdict; make Red pop (Von Restorff, per harness/design-principles.md — a declining dimension buried in a uniform table is the one thing the reader must not scroll past; graduated from two consecutive /framework-health 4e flags, 2026-06-05 + 2026-06-12):

## BVSSH Assessment

> **Verdict: [HEALTHY | N dimension(s) RED/declining — [name them]]** — [one line on the single most important move]

Date: [date]
Diamond: [ID if applicable]

| Dimension | Status | Trend | Key Evidence |
|-----------|--------|-------|-------------|
| Better | Green/Amber/Red | Improving/Stable/Declining | ... |
| Value | Green/Amber/Red | Improving/Stable/Declining | ... |
| Sooner | Green/Amber/Red | Improving/Stable/Declining | ... |
| Safer | Green/Amber/Red | Improving/Stable/Declining | ... |
| Happier | Green/Amber/Red | Improving/Stable/Declining | ... |

### CALMS Culture Health
| Dimension | Status | Key Signal |
|-----------|--------|-----------|
| Culture | Green/Amber/Red | ... |
| Automation | Green/Amber/Red | ... |
| Lean | Green/Amber/Red | ... |
| Measurement | Green/Amber/Red | ... |
| Sharing | Green/Amber/Red | ... |

Overall: [summary and recommended actions]

Any Red cell (either table) gets a bolded **Red** + a one-line Blocking:-style callout under its table — never left as an undifferentiated table value.

Canvas (MANDATORY — the source of truth, do this FIRST)

.claude/canvas/bvssh-health.yml is the canonical record. The decision log is provenance; the canvas is what the framework READS. Write the canvas before the decision log — if only one of the two lands, it must be this one.

APPEND to assessment_history:

  - date: "YYYY-MM-DDT00:00:00Z"
    better: "improving|stable|declining"
    value: "improving|stable|declining"
    sooner: "improving|stable|declining"
    safer: "improving|stable|declining"
    happier: "improving|stable|declining"
    notes: |
      Trigger for this assessment; per-dimension evidence; CALMS line;
      Overall verdict + recommended actions.

UPDATE in the same pass:

  1. last_assessed (top-level) and calms_assessment.last_assessed — both, to today. hooks/session-start.sh reads the top-level one to compute the "BVSSH overdue" reminder; leaving it stale makes the hook nag overdue forever, immediately after a completed assessment.
  2. calms_assessment.<dimension>.status + evidence for any CALMS dimension whose rating changed. State the downgrade/upgrade reason and, for a downgrade, the recovery bar.
  3. _meta.last_validated + a one-line _meta.notes addition naming what changed.
  4. The per-dimension snapshot blocks at the top of the file (better:, value:, … current_state / trend / metrics) when they no longer match the assessment you just wrote. These are a snapshot of the newest assessment, not history — stale blocks here are the file's most common rot.

THEN VERIFY (per the operating contract's verify-after-write rule): re-read the fields you just wrote and confirm the value fields changed, not only the timestamps. Do not report the assessment complete until last_assessed reads today's date in the file itself.

Why this section exists (added v0.59.0): it was missing. The skill mandated the decision-log append and never mentioned the canvas, while session-start.sh computed overdue-ness from the canvas — so assessments landed in provenance and never in the file the framework reads. Three orphaned assessments across two repos before the cause was found (2026-05-20 framework; 2026-06-20 + 2026-07-11 dogfood). A prose rule written into a canvas notes field failed to prevent the recurrence, because the skill never had the step. scripts/check_bvssh_reconcile.py is the mechanical backstop.

Decision Log (MANDATORY per G-P4)

APPEND a ### BVSSH Assessment — <YYYY-MM-DD> entry to .claude/harness/decision-log.md with: all 5 dimension ratings, CALMS ratings, key evidence, recommended actions.

Keep the date in the heading — check_bvssh_reconcile.py matches heading dates against assessment_history dates to detect orphans.

Theory Citations

  • Smart: Sooner Safer Happier (BVSSH framework)
  • Willis & Humble: CALMS (Willis coined CAMS at DevOpsDays 2010, Humble added Lean -- explains WHY DORA outcomes are what they are)
  • Forsgren: Accelerate (metrics alignment)

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.