crystal-cave

star 0

View — list all crystals (active + dormant) with their open sidetracks and decision-log summaries. The geological-cave naming inverts the obvious 'list/show' command (Decision Log #14) — it's the read-side counterpart to grow/bud/cut. Use when surveying repo state or resuming after time away.

VoDmAl By VoDmAl schedule Updated 6/1/2026

name: crystal-cave description: "View — list all crystals (active + dormant) with their open sidetracks and decision-log summaries. The geological-cave naming inverts the obvious 'list/show' command (Decision Log #14) — it's the read-side counterpart to grow/bud/cut. Use when surveying repo state or resuming after time away." license: MIT

crystal-cave - Inspect Crystals

Purpose

Read-only view across all crystals in the repo. Three modes depending on argument:

Invocation Mode
/vdm:crystal-cave Overview — Active / Paused / Backlog tiers (Terminal hidden)
/vdm:crystal-cave --all Overview + Terminal tier (done / cancelled / superseded)
/vdm:crystal-cave <slug> Detail — full workitem state with sidetrack and DL summaries. In multi-root mode pass qualified slug (<root>/<slug>)
/vdm:crystal-cave --sidetracks Filter — all open sidetracks across all crystals

No file edits. Pure presentation, except for the alias permanently action in the Non-canonical triage section which patches .claude/vdm-plugins.json (same surface as /vdm:crystal-grow status-alias add).

Why "cave" not "list"

Decision Log #14: ювелирная огранка (cut) is paired with геологические кристальные пещеры (cave) — "let's go look inside." The slight inversion forces a half-second pause that helps recall versus the autopilot /list / /show commands. Same reason bud beats branch and cut beats close.

Overview mode

/vdm:crystal-cave (optionally with --all) is rendered by a dedicated script — ${CLAUDE_PLUGIN_ROOT}/scripts/crystal-cave.sh. The assistant invokes it once and prints its stdout verbatim. Do not improvise an ad-hoc for f in **/workitem.md; do ... loop — the script knows about the resolver, hidden-segment exclusion, alias resolution, tier ordering, and column alignment in a way the assistant should not re-derive on the fly.

Layout is by-root grouping with status icons, no per-row path lines:

Single-root example:

🔮 Crystals in docs/tasks · 1 active · 0 paused · 2 backlog · 5 done
   /vdm:crystal-cave --all   /vdm:crystal-cave <slug>

  ● auth-refactor       prd-work    2026-05-12
  ○ migrate-redis       task        2026-05-10
  ◦ legacy-cleanup                  2026-04-30

Done: 5 crystals (use /vdm:crystal-cave --all for details)

Legend: ● active · ⏸ paused · ○ ready · ◦ idea

Multi-root example (each root that has visible workitems gets a group header; alphabetical between groups, alphabetical between rows):

🔮 9 roots · 2 active · 6 paused · 18 backlog · 8 done
   /vdm:crystal-cave --all   /vdm:crystal-cave <slug>

amazon-orders (1 paused · 1 ready)
  ⏸ orders-pipeline   prd-work      2026-05-31
  ○ relink-pass-v2    maintenance   2026-05-25

receipt-pipeline (1 active · 2 ready)
  ● finansy-migration         prd-work      2026-05-31
  ○ relink-receipt-cards      maintenance   2026-05-30
  ○ rerun-existing-archives   maintenance   2026-05-30

statement-pipeline (1 active · 2 paused · 3 ready · 1 idea)
  ● phase-2-gap-fill               prd-work    2026-05-31
  ⏸ tax-form-migration-extension   prd-work    2026-06-01
  ⏸ multi-account-refactor         prd-work    2026-05-31
  ○ citi-structured-parsing        short-bug   2026-05-27
  ◦ peo-vs-employer-modeling                   2026-05-26

Done: 8 crystals (use /vdm:crystal-cave --all for details)

⚠ Non-canonical statuses: 14 workitems. The assistant will offer remap targets.

Legend: ● active · ⏸ paused · ○ ready · ◦ idea

Each row carries: icon (status-tier) · short slug · type · last-updated. The qualified slug (<root>/<short-slug>) is implicit — the group header supplies the prefix, the indented icon row supplies the suffix. Paths are not printed; users open files through their editor's go-to-file by slug.

Within-group ordering: active first, then paused (most-recent first), then ready/draft, then idea — date desc inside each tier so the line you care about is near the top of each group. Group-level ordering is alphabetical so the same root appears in the same place between runs.

Icons & tier mapping:

Icon Tier Statuses In Overview Singleton
Active in-progress Always Enforced (per derive_singleton_mode)
Paused blocked, dormant Always No
Pre-work ready, draft Always No
Pre-work idea Always No
Terminal done, cancelled, superseded Only with --all No
! Non-canonical anything else Separate section Audit required

Which date to show (rule, not judgment): overview rows uniformly show updated (the last-updated: frontmatter value) across all tiers — recency is the "what do I resume?" signal. created: is shown only in detail mode, which prints both (Created: … Updated: …).

Description rendering (optional field): when a workitem's frontmatter carries the optional description: one-liner (added in vdm v2.5.2), the script appends it after the row as — "<description>". When absent or empty, the row stays unchanged — no placeholder, no quotes.

Type column hidden for idea rows: idea rows skip the type column (the status implies the type) so the date stays aligned across the group. If every row in a group is idea, the script collapses the column away entirely.

All counts and tier classifications come from the same helpers the hooks use (${CLAUDE_PLUGIN_ROOT}/lib/crystal-path.shcount_unchecked, extract_frontmatter_field, derive_status_tier, _apply_status_alias).

Singleton violations

A multi-active state surfaces as a header line scoped by singleton mode (derive_singleton_mode):

  ⚠ Singleton (global) violation: 2 active crystals (should be 1)
    auth-refactor
    billing-rewrite

In per-root mode (multi-root setups), the violation is reported per affected root:

  ⚠ Singleton (per-root) violation: root `auth` has 2 active workitems
    auth/refactor-jwt
    auth/session-cleanup

Non-canonical section

Any workitem whose status: falls outside the canonical taxonomy (after status-alias resolution) gets a dedicated triage section with proposed remap targets:

⚠ Non-canonical (requires resolution):

  projects/x/tasks/foo.md: status="WIP"
    → [in-progress] [ready] [blocked] [skip] [alias permanently: WIP=in-progress]

  projects/y/tasks/bar.md: status="archived"
    → [done] [cancelled] [superseded] [skip] [alias permanently: archived=done]

The user chooses one path per file. alias permanently writes status-aliases.<from> = <to> to .claude/vdm-plugins.json and the workitem stays untouched (the alias resolves at read time across all crystal-* skills and hooks). skip defers — the file stays non-canonical until next audit. The skill itself never silently rewrites status.

Detail mode

/vdm:crystal-cave <slug> — full state for one workitem:

🔮 auth-refactor (active · brainstorm)
   Path: docs/tasks/auth-refactor/workitem.md
   Created: 2026-05-12   Updated: 2026-05-27

   Next actions (3 open / 7 total):
     [ ] Migration script for legacy tokens
     [ ] Update OAuth callback handlers
     [ ] Add integration tests for refresh flow

   Sidetracks (2 open / 4 total):
     #1. Token validation race  — open
     #2. Remove dead AuthProvider class — open
     #3. Migrate to PKCE — deferred (deadline: 2026-07-01)
     #4. Move to JWE — cancelled (out of scope for this workitem)

   Decision Log (6 entries):
     #1 / 2026-05-12 / Use refresh-token rotation
     #2 / 2026-05-13 / In-memory session store, not Redis
     #3 / 2026-05-14 / ...

When the workitem has no ## Decision Log section (typical for non- brainstorm types), omit that block entirely rather than show an empty section.

Sidetracks-only mode

/vdm:crystal-cave --sidetracks — flatten all open sidetracks across all crystals into one list, useful when scanning for things to address during a review session:

🌿 Open sidetracks (across all active + dormant crystals):

  auth-refactor:
    #1. Token validation race
    #2. Remove dead AuthProvider class

  billing-rewrite:
    #3. Rounding for multi-currency

Behavioral protocol

When /vdm:crystal-cave [args] is invoked:

Step 1: Determine mode

  • No args (or --all) → Overview (script-rendered)
  • --sidetracks flag → Sidetracks-only (assistant-rendered, see below)
  • Single positional arg matching an existing slug → Detail mode (assistant-rendered)
  • Single positional arg with no match → "no such crystal" + nearest-match hint

Step 2: Overview → invoke the script, print verbatim

For Overview mode (with or without --all), run ${CLAUDE_PLUGIN_ROOT}/scripts/crystal-cave.sh [--all] and print its stdout verbatim. The script handles resolver, tier classification, icons, alignment, group ordering, singleton warnings, and the non-canonical drift footer.

Do not re-implement this in the chat with for f in ...; do echo loops, find ... -name workitem.md, or per-file head of frontmatter. Those bypass the resolver's exclusion rules and produce non-deterministic output between sessions.

After printing, if the script's output included a non-canonical drift warning (line beginning with ⚠ Non-canonical statuses:), the assistant follows up with the Non-canonical triage section below — surfacing each non-canonical file with remap options, one decision per file. This is the only part of Overview mode that needs assistant interaction beyond verbatim print.

Step 3: Detail / Sidetracks → assistant-rendered

detail mode (slug argument) and --sidetracks mode stay assistant- rendered for now. Use the lib helpers (extract_frontmatter_field, count_unchecked) on the resolved workitem path. The templates above specify the layout. Future iteration may push these into the script too.

Step 4: No edits

This skill writes nothing. If the user wants to act on what they see, they invoke /vdm:crystal-bud, /vdm:crystal-cut, or edit the workitem directly.

Examples

Example 1: Resume after a week away

User: /vdm:crystal-cave

🔮 Crystals in docs/tasks · 1 active · 0 paused · 0 backlog · 3 done
   /vdm:crystal-cave --all   /vdm:crystal-cave <slug>

  ● auth-refactor   brainstorm   2026-05-19

Done: 3 crystals (use /vdm:crystal-cave --all for details)

Legend: ● active · ⏸ paused · ○ ready · ◦ idea

User reads the line, decides to keep working on auth-refactor, opens the workitem.

Example 2: Drill into a specific crystal

User: /vdm:crystal-cave billing-rewrite

🔮 billing-rewrite (dormant · prd-work)
   Path: docs/tasks/billing-rewrite/workitem.md
   ...

Example 3: Review-mode sweep

User is doing a 30-minute review. Wants the full open-sidetrack surface area:

User: /vdm:crystal-cave --sidetracks

Output above. User then picks 2–3 sidetracks to resolve via direct edits or migrations.

Quality gates

  • No file writes anywhere (read-only invariant)
  • Counts match what hooks would report (same helpers, same data)
  • Singleton violations surfaced explicitly when present
  • Path lines are real and openable from the user's editor

Configuration

Shares the crystal config section with the other three crystal-* skills. See /vdm:crystal-grow for sub-commands. Disabling (crystal off) silences the hooks but /vdm:crystal-cave keeps working — the cave is for visibility and visibility should not be disabled by a plugin toggle.

Install via CLI
npx skills add https://github.com/VoDmAl/ai-dev-plugins --skill crystal-cave
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator