Skip to content
Productivity
Skill

/healthcheck

Read-only vault health diagnostic. Generates a report without modifying any files. Checks: graphify-out integrity, setup verification, orphan entities, dangling content, old content (>15 days). Safe to run at any frequency. Use when: "bedrock healthcheck", "bedrock-healthcheck",

From plugin
bedrock
11010 skills1 hook

Claude Code

$ npx -y skills add iurykrieger/claude-bedrock --skill healthcheck --agent claude-code

SKILL.md

healthcheck.SKILL.md
name: healthcheck
description: >
  Read-only vault health diagnostic. Generates a report without modifying any files.
  Checks: graphify-out integrity, setup verification, orphan entities, dangling content,
  old content (>15 days). Safe to run at any frequency.
  Use when: "bedrock healthcheck", "bedrock-healthcheck", "vault health", "check vault",
  "vault status", "/bedrock:healthcheck".
user_invocable: true
allowed-tools: Bash, Read, Glob, Grep

/bedrock:healthcheck — Vault Health Report

Plugin Paths

Entity definitions and templates are in the plugin directory, not the vault root. Use the "Base directory for this skill" provided at invocation to resolve paths:

  • Entity definitions: `<base_dir>/../../entities/`
  • Templates: `<base_dir>/../../templates/{type}/_template.md`
  • Plugin CLAUDE.md: `<base_dir>/../../CLAUDE.md` (already injected automatically into context)

Where `<base_dir>` is the path provided in "Base directory for this skill".

---

Vault Resolution

Resolve which vault to diagnose. This skill can be invoked from any directory.

**Step 1 — Parse `--vault` flag:** Check if the input arguments include `--vault <name>`. If found, extract the vault name.

**Step 2 — Resolve vault path:**

1. **If `--vault <name>` was provided:** Read the vault registry at `<base_dir>/../../vaults.json`. Find the entry matching the name. If not found: error — "Vault `<name>` is not registered. Run `/bedrock:vaults` to see available vaults." If found: set `VAULT_PATH` to the entry's `path` value.

2. **If no `--vault` flag — CWD detection:** Read `<base_dir>/../../vaults.json`. Check if the current working directory is inside any registered vault path (CWD starts with a registered vault's absolute path). If multiple match, use the longest path (most specific). If found: set `VAULT_PATH` to the matching vault's `path`.

3. **If CWD detection fails — default vault:** From the registry, find the vault with `"default": true`. If found: set `VAULT_PATH` to the default vault's `path`.

4. **If no resolution:** Error — "No vault resolved. Available vaults:" followed by the registry listing. "Use `--vault <name>` to specify, or run `/bedrock:setup` to register a vault."

**Step 3 — Validate vault path:**

test -d "<VAULT_PATH>" && echo "exists" || echo "missing"

If missing: error — "Vault path `<VAULT_PATH>` does not exist on disk. Run `/bedrock:setup` to re-register."

**Step 4 — Read vault config:**

cat <VAULT_PATH>/.bedrock/config.json 2>/dev/null

Extract `language` and other relevant fields for use in later phases.

**From this point forward, ALL vault file operations use `<VAULT_PATH>` as the root.**

  • Entity directories: `<VAULT_PATH>/actors/`, `<VAULT_PATH>/people/`, etc.
  • Graphify output: `<VAULT_PATH>/graphify-out/`

---

Overview

This skill produces a diagnostic report of vault health without modifying any files. It scans the vault once, runs 5 checks against the scan data, and prints the results.

**You are a read-only agent.** You do NOT write files, commit, push, invoke other skills, or spawn subagents. Your only output is the diagnostic report printed to the terminal.

Five health checks

| # | Check | What it verifies | |---|---|---| | 1 | graphify-out | Graph.json exists, is valid, is fresh | | 2 | Setup | Directories, templates, entity definitions, plugin manifest | | 3 | Orphan entities | Entities with zero inbound wikilinks | | 4 | Dangling content | Entities fully disconnected (no inbound, no outbound, no relations) | | 5 | Old content | Entities with `updated_at` older than 15 days |

Status values

Each check reports one of:

  • **OK** — no issues found
  • **WARN** — issues found (with details)
  • **MISSING** — prerequisite not met (e.g., graphify-out absent)

---

Phase 1 — Scan the Vault

Read all entity files once and store the data for use across all 5 checks.

1.1 Enumerate entity files

For each entity directory (`<VAULT_PATH>/actors/`, `<VAULT_PATH>/people/`, `<VAULT_PATH>/teams/`, `<VAULT_PATH>/concepts/`, `<VAULT_PATH>/topics/`, `<VAULT_PATH>/discussions/`, `<VAULT_PATH>/projects/`, `<VAULT_PATH>/fleeting/`):

1. List all `.md` files using Glob, **excluding `_template.md` and `_template_node.md`**

  • For actors: include both `<VAULT_PATH>/actors/*.md` (flat) and `<VAULT_PATH>/actors/*/*.md` (folder)
  • Include code entities: `<VAULT_PATH>/actors/*/nodes/*.md`

2. Record the directory and filename for each entity

1.2 Read entity data

For each entity file found in 1.1:

1. Read the file 2. Extract from frontmatter:

  • `type`
  • `name` (or derive from filename)
  • `aliases` (array)
  • `updated_at` (date string)
  • All frontmatter array fields that contain wikilinks (e.g., `actors`, `people`, `teams`, `related_to`, etc.)

3. Extract from body:

  • All wikilinks `[[target]]` (regex: `\[\[([^\]]+)\]\]`)

4. Compute:

  • `outbound_wikilinks`: union of all wikilinks from body + frontmatter arrays
  • `has_frontmatter_relations`: true if any frontmatter array field contains at least one wikilink value
  • `entity_slug`: the filename without extension (used as the canonical identifier)

**Output:** `vault_entities` map: `entity_slug → {type, name, aliases[], updated_at, outbound_wikilinks[], has_frontmatter_relations, file_path}`

Also collect: `all_entity_slugs` — set of all entity slugs in the vault (for resolving wikilinks).

---

Phase 2 — Run Checks

2.1 Check 1 — graphify-out

1. Check if directory `<VAULT_PATH>/graphify-out/` exists:

   ls -d <VAULT_PATH>/graphify-out/ 2>/dev/null && echo "EXISTS" || echo "MISSING"

2. If MISSING:

  • Status: **MISSING**
  • Details: "graphify-out/ directory not found. Run `/bedrock:learn` on an actor repository to generate."
  • Skip remaining sub-checks.

3. If EXISTS, check `<VAULT_PATH>/graphify-out/graph.json`:

   test -f <VAULT_PATH>/graphify-out/graph.json && echo "EXISTS" || echo "MISSIN
Read more
@iurykrieger
Ships withbedrock

Second Brain automation for Obsidian vaults — entity management, ingestion, compression, and sync via Claude Code skills

Stars on GitHub

Momentum

stars in total
110
Star history of iurykrieger/claude-bedrock on GitHub, a chart by star-history.com

Other skills on bedrock.

ask

ask

Adaptive vault reader skill. Receives a natural language question, uses graph.json as the primary index (Phase 2.0) before any…

@iurykrieger@iurykriegerInstall Skill
compress

compress

Vault alignment engine. Detects and fixes 5 types of structural misalignments: broken backlinks, concept fragmentation, entity…

@iurykrieger@iurykriegerInstall Skill
confluence-to-markdown

confluence-to-markdown

Internal fetcher module for Confluence pages. Fetches content via Atlassian MCP (preferred), REST API with Basic Auth (fallback),…

@iurykrieger@iurykriegerInstall Skill
gdoc-to-markdown

gdoc-to-markdown

Internal fetcher module for Google Docs and Sheets. Fetches content via MCP (preferred, when available), Google API with bearer…

@iurykrieger@iurykriegerInstall Skill
learn

learn

Ingests an external data source into the Second Brain. Fetches content from Confluence, Google Docs, GitHub repositories, remote…

@iurykrieger@iurykriegerInstall Skill
preserve

preserve

Single write point for the vault. Centralizes entity detection, textual matching, entity creation/update, and bidirectional…

@iurykrieger@iurykriegerInstall Skill

More skills from other plugins.

i-have-adhd

i-have-adhd

Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…

@ayghri@ayghriInstall Skill
ab-test-analysis

ab-test-analysis

Analyze A/B test results with statistical significance, sample size validation, confidence intervals, and ship/extend/stop…

@phuryn@phurynInstall Skill
distilly

distilly

Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…

Questions about healthcheck.

Which coding agents can use healthcheck?
healthcheck 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.