Skip to content
Development
Skill

/diamond-render

Render `.claude/diamonds/active.yml` as a state diagram. Read-only. Default format Mermaid stateDiagram-v2. 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

From plugin
mycelium
4662 skills
Install
$ npx -y skills add haabe/mycelium --skill diamond-render --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/diamond-render

Context preview

The summary Claude sees to decide when to auto-load this skill.

Render `.claude/diamonds/active.yml` as a state diagram. Read-only. Default format Mermaid stateDiagram-v2. 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

SKILL.md

diamond-render.SKILL.md
name: diamond-render
description: Render `.claude/diamonds/active.yml` as a state diagram. Read-only. Default format Mermaid stateDiagram-v2. 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: "45"
  framework_dependency: "mycelium"
  framework_dependency_note: "Reads .claude/diamonds/active.yml and ${CLAUDE_PLUGIN_ROOT}/engine/diamond-rules.md. Standalone use will fail without active.yml present."
  identifier_exposure: "NONE"

Diamond Render

Read-only render of `.claude/diamonds/active.yml` as a state diagram. First specialist of the render fleet. Other specialists (`/mycelium:ost-render`, `/mycelium:cycle-render`) and the dispatcher (`/mycelium:render`) ship in subsequent patches.

When NOT to use

  • To advance a diamond (Discover → Define etc.) → `/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 | | `${CLAUDE_PLUGIN_ROOT}/engine/diamond-rules.md` | none (canonical phase list) | n/a |

Rationale

`diamonds/active.yml` is phase-state shape: scale (L0–L5), phase (Discover/Define/Develop/Deliver), confidence value, gate-history timestamps. 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

Render of `diamonds/active.yml` with no identifier content present:

L0 Purpose: [Discover]→[Define]→[Develop*]→[Deliver]
                                  conf=0.612

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). Other fixtures (see § Test fixtures below) exercise actual behavior.

Preflight: Read source

1. Read `.claude/diamonds/active.yml` with the Read tool. **Full read** (state diagram needs the full structure; `limit:1` not appropriate here). 2. Read `${CLAUDE_PLUGIN_ROOT}/engine/diamond-rules.md` to get the canonical phase list per scale + the four canonical phase-transition gate names. 3. If `--as-of <date>` was specified, also read `.claude/harness/decision-log.md` to walk backward to that date. 4. Note the source's canvas-state timestamp per `engine/render-conventions.md#canvas-state-timestamp-resolution`: `_meta.last_validated` if present, else top-level `last_updated:`.

Arguments

| Arg | Default | Values | Effect | |---|---|---|---| | `--format` | `mermaid` | `mermaid` \| `ascii` \| `json` | Output format. `markdown-table` and `markdown-list` are NOT supported (state diagrams don't map cleanly); fail loud per `engine/render-conventions.md#format-support-negotiation-global-rule`. | | `--scale` | `active` | `L0` \| `L1` \| `L2` \| `L3` \| `L4` \| `L5` \| `active` \| `all` | Which diamond(s) to render. `active` = all diamonds with non-null `phase`. | | `--theme` | `base` | `base` \| `dark` | Theme. `dark` is the WCAG-by-construction opt-in per `engine/render-conventions.md#wcag-aa-theme-convention`. | | `--show-gates` | `true` | bool | Annotate transitions with phase-transition gate names + theory-gate status block. | | `--show-confidence` | `true` | bool | Annotate phases with confidence values. | | `--show-history` | `false` | bool | Include `gate_history` entries as transition timestamps. | | `--as-of` | `null` | ISO date | Render diamond state as-of this date (walk decision-log backward). Fail loud if date precedes the first decision-log entry mentioning the diamond. |

Workflow

Step 1: Resolve scale

  • `--scale active` → enumerate diamonds with non-null `phase`. If empty, emit `No active diamond — run /mycelium:start` placeholder + canonical disclaimer + early return.
  • `--scale L<N>` → render only that scale; fail loud if scale not present.
  • `--scale all` → render every diamond regardless of phase.

Step 2: Build per-diamond state

For each diamond to render:

  • States = the four canonical phases (Discover, Define, Develop, Deliver). Canonicalize on emit: if canvas uses lowercase, render as canonical case. Surface lowercase-canvas as a `canvas-health` follow-up note.
  • Current state = `phase` from active.yml (case-insensitive match).
  • Completed states = phases before current per linear order.
  • Future states = phases after current.
  • **Transition labels (phase-transition gates)** if `--show-gates=true`:
  • Discover → Define : `evidence`
  • Define → Develop : `trio-coverage`
  • Develop → Deliver : `DoD`
  • Deliver → [*] : `launch`
  • **Theory gate status annotation** if `--show-gates=true` AND `theory_gates_status` field present: emit `note right of <ID>` block summarizing pass/fail/pass-with-risk per gate (evidence/cynefin/bias/bvssh/corrections/four_risks/jtbd).
  • Phase annotation = `confidence` field from active.yml (NOT `confidence_threshold`) if `--show-confidence=true`. Display as `conf=<value>`.

Step 2a: Spawn-relationship arrows (multi-diamond renders)

When rendering multiple diamonds and a child's `parent_id` is set:

  • Emit between-state arrow a
Read more
Ships withmycelium

A harness that asks who this is for before the agent writes code. Built on Claude Code, where the gates are structural. The files and skills port to opencode, Codex and Cursor. Outcome over output. You know how this goes.

Get the whole plugin
Stats
46
Stars
3
Forks
Active
Maintenance
Python
Language
MIT
License
2d ago
Last commit
5mo ago
Created

Repo: haabe/mycelium

Other skills on mycelium.

adopt
Skill

adopt

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

@haabe@haabeView Skill