Mycelium canvas-health
Lint canvas files for staleness, missing fields, inconsistent evidence types, and orphaned references. Run periodically or before major transitions.
install
source · Clone the upstream repo
git clone https://github.com/haabe/mycelium
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/haabe/mycelium "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/canvas-health" ~/.claude/skills/haabe-mycelium-canvas-health && rm -rf "$T"
manifest:
.claude/skills/canvas-health/SKILL.mdsource content
Canvas Health Check
Audit the canvas knowledge base for quality, consistency, and completeness. The canvas is Mycelium's source of truth -- its quality directly determines agent output quality (Raschka: "context quality = model quality").
When to Use
- Before any diamond phase transition (called automatically by
)/diamond-assess - After a period of inactivity (>7 days since last canvas update)
- When agent output quality seems to degrade
- After onboarding a new team member (ensures canvas is self-explanatory)
- Proactively: run periodically to catch silent drift
Workflow
-
Load project configuration:
- Read
fordiamonds/active.yml
andproduct_typeproject_type - Read
for required/recommended/optional files per project type.claude/engine/canvas-guidance.yml
- Read
-
Check file presence:
- For each required canvas file: does it exist? Is it non-empty (>50 bytes)?
- For each recommended canvas file: does it exist? Flag as gap if missing.
- Report:
N/M required files present, K recommended files missing
-
Check
blocks:_meta- For each existing canvas file, check for
block_meta: - Flag missing
blocks_meta - Flag
older than 30 days (staleness warning)last_validated - Flag
field missing or at 0version
- For each existing canvas file, check for
-
Check confidence consistency:
- Gather all
values across canvas filesconfidence: - Flag confidence > 0.5 with
orevidence_type: speculationevidence_type: assumption - Flag confidence > 0.7 with fewer than 2 evidence sources
- Flag confidence values that haven't changed across git history (anchored confidence anti-pattern)
- Cross-check against
confidencediamonds/active.yml
- Gather all
-
Check evidence type consistency:
- Every canvas file with
should have it set to one of:evidence_type:
,interview
,survey
,analytics
,experiment
,speculation
,assumptionmocked_persona - Flag unknown evidence types
- Flag
when only mocked personas were used (honesty check)evidence_type: interview - Every
value should be one of:source_class:
,external_human
,external_data
,internal_stakeholder
,internal_desk
— flag unknown valuesinternal_simulated - Flag
evidence with confidence > 0.5 that hasinternal_stakeholder
or novalidated: false
field — stakeholder beliefs should not carry high confidence without external validation (Brown: organizational mythology)validated - Flag L2 opportunity canvas entries where ALL evidence is
orinternal_stakeholder
— no external human voice heard (Spool: secondhand research insufficient)internal_desk
- Every canvas file with
-
Check for orphaned references:
- Canvas files that reference other canvas files (e.g., jobs-to-be-done.yml referencing opportunities.yml) -- verify the referenced file exists
- Diamond references to canvas files -- verify they exist
-
Check evidence freshness (evidence decay):
- Scan all
blocks across canvas files forprovenance
orvalidated_at
timestampscaptured_at - Compare against staleness thresholds from
:engine/evidence-decay.md- User needs/interviews: 90 days
- Competitive intelligence: 90 days
- Strategic assumptions: 180 days
- Technical feasibility: 120 days
- DORA/delivery metrics: 30 days
- Flag evidence past threshold as warning; past 3x threshold as critical
- Suggest refresh actions: "Evidence in [file] is [N] days old. Run
or/user-interview
to refresh."/log-evidence - Note: corrections and patterns do NOT decay — process learnings are timeless
- Scan all
7b. Check metric snapshot freshness (v0.14):
- If
exists, for each.claude/jit-tooling/active-metrics.yml
source:status: active- Find the newest snapshot in
..claude/evals/metrics/<source>/ - If >7 days old: warning ("[source] snapshot is [N] days old — run
to refresh")./metrics-pull - If >30 days old: critical (evidence this stale is worse than no metric reference — anchors old state).
- If missing entirely: info-level ("No snapshots yet for [source]. Run
.")./metrics-pull
- Find the newest snapshot in
- Also check per-adapter freshness: for each adapter file in
, if.claude/jit-tooling/metrics-adapters/
is >180 days old, flag as warning suggesting regeneration vialast_known_working
.metrics-adapters/GENERATING.md - Source: v0.14 metrics harvesting. Metric evidence has a faster staleness curve than interview evidence because the underlying data changes continuously.
- Check cross-reference integrity (leaf lifecycle):
- Every GIST idea with
→ verify that leaf exists insource_leaf_id
(and not inopportunities.yml
without the GIST being shelved)archived-solutions.yml - Every service entry with
→ verify that GIST idea existsgist_id - Every threat model entry with
→ verify that solution existssolution_id - Every go-to-market
entry withfeedback_loop
→ verify leaf existssource_leaf_id - Flag broken references as warnings ("Zombie Solution" anti-pattern)
- Every GIST idea with
8b. Check scenario health (Hoskins):
- If
exists:canvas/scenarios.yml- Every scenario must have all four Hoskins elements populated (persona, means, motive, simulation) — flag incomplete scenarios
- Every scenario must have
set — flag if missing (orphan scenario with no origin)lifecycle.born_at - Every scenario with
must have evidence sources — flag unsupported confidenceconfidence > 0.5 - Every scenario referenced in
→ verify the solution exists inlifecycle.designed_against[]
oropportunities.ymlgist.yml - Every scenario referenced in
→ verify test date is not in the futurelifecycle.tested_against[] - Flag scenarios with
older than 30 days (stale draft — either promote or discard)status: draft
- If
does NOT exist but project_type requires it (per canvas-guidance.yml): flag as warningcanvas/scenarios.yml
-
Check for boilerplate content:
- Flag canvas files where >50% of content matches the template defaults from canvas-guidance.yml
- Flag files with placeholder text ("TBD", "TODO", "fill in later", "placeholder")
-
Log findings to decision-log.md (MANDATORY):
- APPEND a
entry to### Canvas Health Reportharness/decision-log.md - Include: overall status (HEALTHY/WARNINGS/CRITICAL), stale evidence found, refresh recommendations
- Use these words explicitly when applicable: "stale", "evidence", "refresh", "interview", "validate"
- Example: "Evidence in opportunities.yml is stale (183 days old, threshold 90). Refresh needed: run fresh interviews to validate opportunity assumptions."
- This log entry is essential for auditability and for downstream skills (e.g.,
) to detect health issues/diamond-progress
- Generate health report:
- Summarize findings by severity: critical (required file missing), warning (stale, inconsistent), info (recommended file missing, meta block absent)
Output Format
## Canvas Health Report Overall: [HEALTHY | WARNINGS | CRITICAL] Files checked: N canvas files, M diamonds files ### Critical Issues - [required file missing or empty] ### Warnings - [stale confidence, inconsistent evidence, anchored values] ### Suggestions - [missing recommended files, absent _meta blocks] ### Coverage Summary | Category | Required | Present | Gap | |----------|----------|---------|-----| | Discovery (L0-L2) | N | M | ... | | Solution (L3) | N | M | ... | | Delivery (L4) | N | M | ... | | Market (L5) | N | M | ... | Recommended actions: - /canvas-update [file] -- [reason] - /interview -- [if evidence gaps found] - /log-evidence -- [if confidence unsupported]
Theory Citations
- Karpathy: Knowledge base health checks and auto-maintained indexes
- aiops3000: Anti-drift through externalized knowledge, versioned reference artifacts
- Raschka: "Context quality = model quality" -- canvas quality determines agent output quality
- Gilad: Confidence must be evidence-backed (confidence consistency checks)
- Torres: Evidence triangulation (evidence type consistency)