agentleFS
eric-cieloeric-cielo/moflo/.claude/skills/eldar/SKILL.md

eldar

Skill19 starsChanged 3 months agoMITView on GitHub

Consult the Eldar — audit a project's moflo + Claude Code setup for portable, high-leverage gaps and guide remediation. Default mode is read-only audit with severity-ranked findings; --fix presents an interactive triage menu and walks the user through each chosen fix (healer, missing CLAUDE.md, sparse guidance, hook/MCP wiring, empty memory namespaces, stack→guidance gaps). Use when starting in a new project, when Claude feels lost or inefficient, when guidance/CLAUDE.md is sparse, or as a periodic health check.

The file

Show its rules and text

We split this skill into the rules it gives an agent

17 rules. About 0 are common, 8 are distinctive, and 9 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 9

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before any file reads, run:

    line 22
  2. Very specific:

    Check for .moflo/moflo.db (existence + mtime).

    line 44
  3. Very specific:

    If recent sonnet→opus escalation rate exceeds ~30%, flag as info: "router escalating frequently — see …

    line 68
  4. Very specific:

    Check CLAUDE.md (and .claude/CLAUDE.md) for:

    line 72
  5. Very specific:

    Use Grep over the file content for \.claude/[a-z-]+/[a-z-]+\.md patterns and verify each path resolves.

    line 80
  6. Very specific:

    If /guidance -a is genuinely too expensive (50+ files AND user explicitly asks for a fast read), skip it only after asking and surface the …

    line 99
  7. Very specific:

    When the user is in --fix mode and chooses guidance fixes from the triage menu (3b), the same /guidance skill is the handoff target — so …

    line 110
  8. Very specific:

    If any returned key starts with doc-, flag info: "legacy doc-* rows present — purge-doc-entries migration did not run.

    line 130
  9. Very specific:

    If settings.json is malformed JSON, surface as error.

    line 142
  10. Distinctive:

    After the report, present a numbered triage menu:

    line 227
  11. Distinctive:

    Ask the user 2–4 targeted questions based on detected stack:

    line 244
  12. Distinctive:

    Ask 2–4 targeted questions about *their* conventions (not generic Drizzle tips — Claude should follow how *they* use it).

    line 259
  13. Very specific:

    If the user declines, that's fine — empty learnings is a valid state for a young project.

    line 284
  14. Distinctive:

    After each chosen fix completes, ask: "Continue to next finding?

    line 288
  15. Distinctive:

    After audit (or audit + chosen fixes), end with:

    line 292
  16. Distinctive:

    Never leave the user without a clear next step.

    line 297
  17. Distinctive:

    No auto-write of opinionated content: Every guidance doc, every CLAUDE.md draft, every namespace seed gets shown to the user first.

    line 303

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

/eldar — Consult the Eldar

The Eldar audit a project's moflo + Claude Code setup for portable, high-leverage gaps. Audit is read-only by default; --fix walks through remediation. The Eldar consult the Healer (flo healer, the thematic alias for flo doctor), they do not replace them.

Arguments: $ARGUMENTS

Modes

ModeTriggerWhat it does
Auditno flag (default)Read-only scan; produces categorized findings + top-3 recommendation
Fix--fixAudit, then interactive triage menu; user picks findings to address one at a time

Step 0 — Memory First

Before any file reads, run:

mcp__moflo__memory_search { query: "guidance rules project conventions stack", namespace: "guidance" }

The memory-first gate blocks reads otherwise. The search also surfaces any project-specific conventions the Eldar should weigh in their findings.

Step 1 — Run the Audit

Walk the checklist below in order. Each check is a single category in the final report. Be explicit about what you find — both presence and absence. Severities: error (blocks productive work), warn (degrades quality), info (suggestion).

1a. Setup Health — call the Healer

npx moflo healer --json

Parse the JSON output. Surface every failed check as error, every warn as warn. Do not invoke flo doctor directly — use the healer alias for thematic consistency.

1b. Index Freshness

Check for .moflo/moflo.db (existence + mtime). Query memory namespaces to confirm guidance + code-map are populated:

mcp__moflo__memory_stats — { namespace: "guidance" }
mcp__moflo__memory_stats — { namespace: "code-map" }

Flag if entries === 0 (warn) or db missing (error).

1c. Version Skew

npm view moflo version    # latest published
node -e "console.log(require('./package.json').devDependencies?.moflo || require('./package.json').dependencies?.moflo || 'not-installed')"

Compute minor-version delta. Warn if behind by ≥3 minors; info if behind by 1–2.

1d. Model & Token Routing

mcp__moflo__hooks_model-stats — {}

If recent sonnet→opus escalation rate exceeds ~30%, flag as info: "router escalating frequently — see .claude/guidance/moflo-claude-swarm-cohesion.md for tuning". If stats unavailable (no history), skip silently.

1e. CLAUDE.md

Check CLAUDE.md (and .claude/CLAUDE.md) for:

CheckThresholdSeverity
Existsrequirederror if missing
Line count20–500warn if outside range
Referenced files existevery relative path it citeswarn per missing path

Use Grep over the file content for \.claude/[a-z-]+/[a-z-]+\.md patterns and verify each path resolves.

1f. Guidance Content

Count .md files under .claude/guidance/ (recursive). Severity table:

File countSeverity
0warn — "no guidance docs; Claude has nothing project-specific to follow"
1–2warn — "very sparse guidance"
3–10info
11+info

1g. Guidance Structure — MANDATORY when guidance docs exist

This step is not optional. If 1f found ≥1 guidance file, you MUST invoke /guidance -a via the Skill tool inline, during this audit run, before rendering the report. Do not defer it ("rerun separately if you want"), do not skip it because the corpus is large, do not substitute a hand-rolled grep pass — that defeats the single-source-of-truth contract.

The /guidance skill enforces the universal rules from .claude/guidance/moflo-guidance-rules.md (Purpose lines, See Also, generic H2s, hedged language, 500-line cap, RAG chunking) and is the single source of truth for those checks — never re-implement them here.

If /guidance -a is genuinely too expensive (50+ files AND user explicitly asks for a fast read), skip it only after asking and surface the skip explicitly in the report (Guidance structure | skipped at user request | warn). Default behaviour is always to run it.

Fold the result into the Eldar report under the "Guidance structure" row:

Outcome of /guidance -aEldar row severity
0 files with issuesok
1–2 files with issuesinfo
3+ files with issueswarn
/guidance itself errorswarn — quote the error verbatim so the user can fix the offending file before re-running

When the user is in --fix mode and chooses guidance fixes from the triage menu (3b), the same /guidance skill is the handoff target — so the audit and the fix flow share one implementation.

1h. Memory Health

For each of the canonical namespaces, check entry count:

mcp__moflo__memory_stats — { namespace: "guidance" }
mcp__moflo__memory_stats — { namespace: "patterns" }
mcp__moflo__memory_stats — { namespace: "learnings" }

Flag empty learnings as info (project hasn't accumulated decisions yet — fine for new projects). Flag empty guidance as warn (no indexed guidance means semantic search is degraded).

Legacy doc-* residue — moflo retired whole-document indexing in favor of chunk-only RAG. The purge-doc-entries migration runs on session-start; if any doc-* rows linger, the migration didn't fire (ran with no DB, errored, or the install is below the migration's introduction).

mcp__moflo__memory_search — { query: "doc-", namespace: "guidance", threshold: 0, limit: 5 }

If any returned key starts with doc-, flag info: "legacy doc-* rows present — purge-doc-entries migration did not run; fixable via flo healer --fix or manual node node_modules/moflo/bin/run-migrations.mjs".

1i. Hooks & MCP Wiring

Read .claude/settings.json. Check:

CheckSeverity
Session-start hook references the moflo launchererror if missing
mcpServers.moflo is configurederror if missing
hooks section exists with at least pre-task/post-task entrieswarn if absent

If settings.json is malformed JSON, surface as error.

1j. Settings Sanity

Spot-check .claude/settings.json for:

  • permissions block exists (info if absent — every prompt becomes a confirmation)
  • env block has at least the moflo entries the launcher writes
  • statusLine is configured (info — quality-of-life, not blocking)

1k. Spell Inventory

npx moflo spell list

Flag info if count is 0 (no spells registered — user may not know they exist).

1l. Subagent Fleet

Glob — { pattern: ".claude/agents/**/*.md" }

Count the result. info if 0 (no project-specific subagents — user is relying entirely on built-ins).

1m. Stack → Guidance Cross-Reference (delegated to /guidance)

Gap analysis (which codebase concerns lack a guidance doc) is the /guidance skill's responsibility — step 3b of /guidance -a. Since 1g already runs /guidance -a inline, do not re-implement gap detection here. Instead, fold the gap findings from /guidance's output into the Eldar report under the same "Stack → guidance" category.

Each gap finding from /guidance becomes one row in the Eldar report. Severity carries through from /guidance (warn/info per its severity table).

Why delegated: keeping a single source of truth — /guidance owns both the structural rule audit and the gap analysis, /eldar surfaces the results in its broader project audit. If /eldar duplicated gap detection, the two would drift.

1n. Anti-Pattern from History (best-effort, optional)

If recent transcripts/commits are accessible, scan them for repeated manual work that an existing spell or agent already covers (e.g., 5+ separate git status/git diff/run-tests sequences in a session that /flo-simplify would have handled). Surface as info: "consider /flo-simplify for review loops". If unavailable, skip silently — never block the audit on this.

Step 2 — Render the Report

Output a single table grouped by category, sorted by severity (error → warn → info):

ELDAR AUDIT — <project name>
─────────────────────────────

Category               Finding                                    Severity
─────────────────────────────────────────────────────────────────────────
Setup health           Healer reports 0 errors, 1 warning         warn
Index freshness        Guidance index empty                       warn
CLAUDE.md              File missing                               error
Guidance content       0 docs in .claude/guidance/                warn
Memory health          guidance namespace empty                   warn
Stack → guidance       Drizzle ORM in deps; no DB guidance        info
Stack → guidance       React Native; no mobile guidance           info
Hooks & MCP wiring     all wired                                  ok
... (etc) ...

Then list the top 3 ranked recommendations in plain English, with rationale and citation:

TOP 3 RECOMMENDATIONS
─────────────────────

1. Add CLAUDE.md (error)
   Without it, Claude has no project entry point. Use the Eldar's
   stack-aware scaffold via `/eldar --fix`.

2. Add Drizzle conventions guidance (info — high leverage)
   You use Drizzle ORM but have no DB-conventions doc. This is the
   single highest-leverage gap for getting Claude to write idiomatic
   queries and migrations in your codebase. /guidance -a (run inline
   in step 1g) flagged 3 existing docs with structural issues; pick
   one to fix alongside this new one.
   See: .claude/guidance/moflo-guidance-rules.md

3. Run `flo healer --fix` (warn)
   One auto-fixable warning. Run via `/eldar --fix` and select Healer.

End the audit with a one-line prompt: "Run /eldar --fix to address these interactively."

Step 3 — Fix Mode (--fix flag only)

After the report, present a numbered triage menu:

TRIAGE MENU
───────────
[1] Add CLAUDE.md
[2] Add Drizzle conventions guidance
[3] Run flo healer --fix (1 warning)
[4] Add empty .claude/guidance/ docs to memory namespaces

Choose: all, none, or comma-separated numbers (e.g., 1,3): _

Drive each chosen finding through its sub-flow. Confirm before any write.

3a. CLAUDE.md scaffold

Ask the user 2–4 targeted questions based on detected stack:

  1. "What does this project do? (1-2 sentences for Claude's context)"
  2. "Primary tech stack confirmed: <detected list>. Anything missing?"
  3. "Any conventions Claude should follow (testing approach, branch model, etc.)?"
  4. "Any high-blast-radius areas Claude should be careful with?"

Compose a CLAUDE.md draft incorporating their answers + standard moflo memory-first rule. Show the draft to the user before writing. Never auto-fill opinionated content.

3b. Stack → guidance authoring

For each chosen stack-gap finding:

  • Hand off to /guidance skill for the heavy lifting — it already enforces the universal rules.
  • Brief the user on what gap will be filled: "drafting Drizzle conventions doc covering query patterns, migrations, schema files".
  • Ask 2–4 targeted questions about their conventions (not generic Drizzle tips — Claude should follow how they use it).
  • The /guidance skill produces the draft and walks the user through the rules check.

3c. Healer fixes

npx moflo healer --fix

Pass through the output verbatim. If the Healer reports manual-only fixes, surface them as next steps.

3d. Hook/MCP wiring repair

Suggest:

npx moflo init --upgrade

This is the standard wiring repair path. If the user is wary of running init, surface the specific missing keys from .claude/settings.json and offer to write them directly.

3e. Empty namespaces

Suggest concrete first entries based on detected stack. Example: "Your project uses Drizzle. Want me to seed learnings with the most common Drizzle gotchas as a starting set? You'd review each before storage."

If the user declines, that's fine — empty learnings is a valid state for a young project.

3f. After each fix

After each chosen fix completes, ask: "Continue to next finding? (y/n)". Don't run them all in a batch — every change is high-leverage and deserves the user's attention.

Step 4 — Wrap-Up

After audit (or audit + chosen fixes), end with:

  • Audit-only: One sentence — what was found, what to do next.
  • Fix mode: One sentence per applied fix, plus a closing line on what remains.

Never leave the user without a clear next step.

Important

  • Memory-first is mandatory. Step 0 runs the search; the gate blocks reads otherwise.
  • Call the Healer, not the Doctor. npx moflo healer (alias) — never flo doctor — for thematic consistency.
  • No auto-write of opinionated content. Every guidance doc, every CLAUDE.md draft, every namespace seed gets shown to the user first.
  • Portable only. This skill ships to consumers via .claude/skills/**/*.md in the package files array. Never assume moflo source paths or moflo-internal state.
  • No kitchen sink. The audit checklist is locked at the categories above. New checks require a specific portable benefit and an issue to discuss them.
  • Read-only by default. /eldar (no flag) never writes. Only --fix writes, and only with per-finding confirmation.
  • Step 1g is mandatory, not optional. Whenever .claude/guidance/ has at least one file, /guidance -a runs inline as part of every audit. Saying "rerun /guidance -a separately if you want a structural pass" is a defect, not a feature — the user already asked for the structural pass by typing /eldar.
  • Hand off to specialists. /guidance for guidance authoring, flo healer --fix for setup repair, flo init --upgrade for wiring. The Eldar route, they don't reimplement.

See Also

  • .claude/guidance/moflo-guidance-rules.md — Universal guidance writing rules used by /guidance and surfaced in 1g
  • .claude/skills/guidance/SKILL.md — The skill /eldar --fix hands off to for guidance authoring
  • .claude/guidance/moflo-core-guidance.md — moflo CLI / hooks / memory reference; useful when explaining wiring findings
  • .claude/guidance/moflo-claude-swarm-cohesion.md — Subagent + task coordination reference cited in routing findings

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.