Skip to content
Development
Skill

/diamond-render

Render `.claude/diamonds/active.yml` as the decisions each diamond has recorded, in order, grouped by mode (discovery, delivery). Read-only. Default format Mermaid stateDiagram-v2, drawn by a script. Recommended at the end of `/mycelium:diamond-assess` so every assessment closes

From plugin
mycelium
5263 skills

Claude Code

$ npx -y skills add haabe/mycelium --skill diamond-render --agent claude-code

SKILL.md

diamond-render.SKILL.md
name: diamond-render
description: Render `.claude/diamonds/active.yml` as the decisions each diamond has recorded, in order, grouped by mode (discovery, delivery). Read-only. Default format Mermaid stateDiagram-v2, drawn by a script. Recommended at the end of `/mycelium:diamond-assess` so every assessment closes with a visual state-of-play. See `${CLAUDE_PLUGIN_ROOT}/engine/render-conventions.md` for shared render fleet conventions.
metadata:
  instruction_budget: "40"
  framework_dependency: "mycelium"
  framework_dependency_note: "Reads .claude/diamonds/active.yml through ${CLAUDE_PLUGIN_ROOT}/scripts/render_diamonds.py. Standalone use will fail without active.yml present."
  identifier_exposure: "NONE"

Diamond Render

Read-only render of `.claude/diamonds/active.yml`. First specialist of the render fleet (with `/mycelium:ost-render`, `/mycelium:cycle-render` and the dispatcher `/mycelium:render`).

**What it draws (v0.309.0, stage 5d-3, founder ruling DL-1372 V4).** Each diamond as the decisions it has recorded, in the order recorded, with their dates, under the mode the diamond was in when it took them: discovery until `commit_to_build`, delivery after (DL-1368 S1). Then the decisions still to come, marked `(next)`. A loop iterates by appending (DL-1373), so a second `start_experiment` is drawn as its own step where it happened, and the position does not move back. An L0 is not a loop: it states its purpose (`state_purpose`) and reviews it (`review`). Until v0.309.0 this skill asked the agent to draw four phases with transition labels of its own; the record has been decisions since v0.306.0, and the picture is now drawn from them by code.

When NOT to use

  • To record a decision (move a diamond on) → `/mycelium:diamond-progress`.
  • To score gates against current evidence → `/mycelium:diamond-assess`.
  • To start a new diamond → `/mycelium:start`.

Identifier exposure

**Declared**: NONE

Scope (canvas surfaces touched)

| Canvas file | Identifier-bearing fields | Frequency | |---|---|---| | `.claude/diamonds/active.yml` | none in current schema (v1) | n/a |

Rationale

`diamonds/active.yml` holds decisions, dates, gate statuses, scale and confidence. No contributor names, no participant fields, no identifier-bearing prose. Zero identifier exposure as of v0.40.0.

**Future-schema-change caveat**: if a future schema adds an identifier field (e.g., per-team diamond ownership for multi-team Mycelium per the deferred Team Topologies adoption), this declaration becomes false. The skill must then be re-declared `YES` or `MIXED`, consult the registry per `engine/render-conventions.md#hard-rule-consent--privacy-gate`, and ship redaction fixtures. The schema-versioning rule surfaces the schema_version mismatch at runtime as a forcing function for the re-audit.

Anon-label convention

Not applicable (NONE).

Worked example

L3 Test: committed to build (delivery)  conf=0.4
================================================
  [discovery]
    * set_target 2026-09-03
    * start_experiment 2026-09-04
  [delivery]
    * commit_to_build 2026-09-04
    * start_experiment 2026-09-10
    . release (next)
    . close (next)

No identifiers anywhere in the output, regardless of audience.

Fixture pointer

Not applicable. Check 43 forbids redaction fixtures on NONE-declared specialists (avoids the "declares NONE but acts YES" drift). The behaviour is tested in `tests/python/test_render_diamonds.py`.

Arguments

| Arg | Default | Values | Effect | |---|---|---|---| | `--format` | `mermaid` | `mermaid` \| `ascii` \| `json` | Output format. `markdown-table` and `markdown-list` are not supported (a state diagram does not map to them); the script fails loud per `engine/render-conventions.md#format-support-negotiation-global-rule`. | | `--scale` | `active` | `L0`-`L5` \| `active` \| `all` | Which diamonds. `active` = the open ones (in `active_diamonds`, not closed, parked, killed, archived or retargeted, and no `close` recorded); `all` adds completed and archived. | | `--theme` | `base` | `base` \| `dark` | `dark` is the WCAG-by-construction opt-in per `engine/render-conventions.md#wcag-aa-theme-convention`. | | `--no-gates` | off | flag | Leave out each decision's gates and their status (ascii and json). Mermaid never draws them: it places a note on a nested state across the page. | | `--no-confidence` | off | flag | Leave out the diamond's `confidence`. |

Workflow

Step 1: Draw it

python3 "${CLAUDE_PLUGIN_ROOT}/scripts/render_diamonds.py" --project-dir . [--format ...] [--scale ...]

Show its output as it is. Do not redraw it by hand, rename decisions, or add states, gates or values the record does not hold: two renders of one record must be the same picture. Exit 2 means a format it does not draw, a scale with no diamond, or a diamonds file it cannot read; say which.

Step 2: Staleness check

Per `engine/render-conventions.md#staleness-check-distinction`: compare the diamonds file's canvas-state timestamp (`_meta.last_validated`, else top-level `last_updated:`) with the most recent decision-log entry mentioning a drawn diamond. If the decision log is newer, put the staleness warning above the render.

Step 3: Validate the Mermaid (mermaid format)

python3 "${CLAUDE_PLUGIN_ROOT}/scripts/render_diamonds.py" --project-dir . \
  | python3 "${CLAUDE_PLUGIN_ROOT}/scripts/validate_mermaid.py" -

It checks state-id consistency (F11) and WCAG AA contrast (F13); add `--cli` for a full parse when `mmdc` is present. Exit 1: do not show the diagram; report the failure, which is a defect in the script. Visual layout still needs a human eye, which is why the disclaimer stays.

Step 4: Disclaimers

Per `engine/render-conventions.md`:

  • **Lossy-on-export** (mermaid + ascii): dropped fields: each decision's `ruling` and `note`, the

diamond's `progression_blockers`, `closes_on`, and the decision log's prose; mermaid also drops the gat

Read more
@haabe
Ships withmycelium

Mycelium won't make your idea good. It keeps you and your agent honest about whether it is, from first idea to market. Built on Claude Code, where the gates are structural. The files and skills port to opencode, Codex and Cursor. Outcome over output.

Stars on GitHub

Momentum

stars in total
52
Star history of haabe/mycelium on GitHub, a chart by star-history.com

Other skills on mycelium.

a11y-check

a11y-check

Accessibility audit, scoped to the surfaces a product actually has. Detects web / rendered_markdown / terminal / native_app /…

@haabe@haabeInstall Skill
adopt

adopt

Bring Mycelium into a project that already has code. Detects that the repo predates the framework, asks before touching anything,…

@haabe@haabeInstall Skill
assumption-test

assumption-test

Design the smallest viable test to validate or invalidate a critical assumption. Based on Torres's assumption testing framework,…

@haabe@haabeInstall Skill
bias-check

bias-check

Use before any research activity or significant decision. Reviews cognitive biases relevant to the current stage.

@haabe@haabeInstall Skill
bvssh-check

bvssh-check

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

@haabe@haabeInstall Skill
canvas-health

canvas-health

Lint canvas files for staleness, missing fields, inconsistent evidence types, and orphaned references. Run periodically or before…

@haabe@haabeInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about diamond-render.

Which coding agents can use diamond-render?
diamond-render installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.