Agent skill

Raven Lsp Debug

by marinasundstrom in marinasundstrom/raven

Troubleshooting workflow for Raven language service and editor failures.

MITAuto-check passedTesting & QA

Install Raven Lsp Debug

skills CLI
$ npx skills add marinasundstrom/raven --skill raven-lsp-debug -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install marinasundstrom/raven raven-lsp-debug --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/marinasundstrom/raven.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/raven-lsp-debug .claude/skills/raven-lsp-debug && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
raven-lsp-debug
GitHub stars
108
Token cost
~3.7k tokens
SKILL.md length
1,706 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Troubleshooting workflow for Raven language service and editor failures.

  • Works in 7 steps: Reduce the issue to a minimal source… → Record the exact editor action that fails. → Reproduce the request with the headless… → …
  • Investigating hover
  • SKILL.md covers Required Logs, Workflow, Compiler Boundary and Request Pile-Ups, plus 1 more section
  • Calls dotnet

What it does

Raven Lsp Debug is an agent skill from marinasundstrom/raven. Troubleshooting workflow for Raven language service and editor failures. Use when investigating hover, completion, definition, diagnostics, inlays, semantic tokens, document symbols, request stalls, or other LSP/editor integration problems. Covers required log capture, headless repros, compiler API cross-checks, lazy binding, request scheduling, and the compiler-owned semantic model direction.

Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA. The repository describes itself as: Raven is a pragmatic, typed, general-purpose programming language for .NET. The licence is MIT.

When your agent uses it

  • Investigating hover
  • Semantic tokens
  • Document symbols
  • Other LSP/editor integration problems

Example prompts

  • “/raven-lsp-debug”

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Reduce the issue to a minimal source example.
  2. Record the exact editor action that fails.
  3. Reproduce the request with the headless language-server harness when possible
  4. Check the client log to confirm the request lifecycle and parameters.
  5. Check the server log to see request handling, failures, or missing symbol results.
  6. Correlate the failing request with syntax, symbol lookup, binding, diagnostics behavior, compiler API caching, and language service code.
  7. Add focused regression coverage if the failure is fixed in code.

What it can do on your machine

Read from SKILL.md and the folder at commit 3ad067d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Raven Lsp Debug loads about 3.7k tokens when it runs. Until then it costs about 103 tokens; SKILL.md has 1,706 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~103
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from marinasundstrom/raven at commit 3ad067d, republished under its MIT licence (© marinasundstrom). 1,706 words, ~3,702 tokens.

Download SKILL.mdSave it as .claude/skills/raven-lsp-debug/SKILL.md (or your agent's skills folder).
name
raven-lsp-debug
description
Troubleshooting workflow for Raven language service and editor failures. Use when investigating hover, completion, definition, diagnostics, inlays, semantic tokens, document symbols, request stalls, or other LSP/editor integration problems. Covers required log capture, headless repros, compiler API cross-checks, lazy binding, request scheduling, and the compiler-owned semantic model direction.

Raven LSP Debugging

Use this skill for language service and editor failures.

Required Logs

Capture both sides:

  • server logs from logs/raven-lsp.log
  • client lifecycle and request logs from the VS Code Raven output channel

Include relevant excerpts when reporting or fixing hover, completion, or definition failures.

Workflow

For large or multi-surface investigations, work as a planned task sequence: define the current slice, keep one step active, verify it before moving on, and re-evaluate the next slice after each result. Tell the user what the next step is after each verified slice. Prefer reduced compiler-level repros before broad LSP or sample-project coverage, then add editor-level tests only when request scheduling, workspace loading, or presentation behavior is part of the bug.

  1. Reduce the issue to a minimal source example.

  2. Record the exact editor action that fails.

  3. Reproduce the request with the headless language-server harness when possible:

    bash
    dotnet run --project tools/Raven.LanguageServer.Headless/Raven.LanguageServer.Headless.csproj /property:WarningLevel=0

    The default run opens samples/projects/efcore-vehicle-costs/src/Api/Main.rvn and simulates hovers for the current EF Core sample. Pass a project directory, source file, and optional target names to narrow the run:

    bash
    dotnet run --project tools/Raven.LanguageServer.Headless/Raven.LanguageServer.Headless.csproj /property:WarningLevel=0 -- samples/projects/efcore-vehicle-costs samples/projects/efcore-vehicle-costs/src/Api/Main.rvn UseNpgsql

    There are three useful replay modes:

    bash
    # Replay hover positions from logs/raven-lsp-performance.txt.
    dotnet run --project tools/Raven.LanguageServer.Headless/Raven.LanguageServer.Headless.csproj /property:WarningLevel=0 -- samples/projects/efcore-vehicle-costs samples/projects/efcore-vehicle-costs/src/Api/Main.rvn --replay-performance-report --replay-count 10
    
    # Hover random syntax targets in a file.
    dotnet run --project tools/Raven.LanguageServer.Headless/Raven.LanguageServer.Headless.csproj /property:WarningLevel=0 -- samples/projects/efcore-vehicle-costs samples/projects/efcore-vehicle-costs/src/Api/Main.rvn --random-hover --random-count 50 --random-seed 1729
    
    # Replay exact LSP positions, using zero-based line:character coordinates.
    dotnet run --project tools/Raven.LanguageServer.Headless/Raven.LanguageServer.Headless.csproj /property:WarningLevel=0 -- samples/projects/efcore-vehicle-costs samples/projects/efcore-vehicle-costs/src/Api/Main.rvn --position 15:29

    Use this harness to simulate hover behavior without VS Code, gather timings, and inspect semantic performance counters such as symbol-info fallback, type-info fallback, and bound-node bind fallback. For edit recovery regressions, use headless edit probes to model the way developers actually reshape code: type an opening wrapper such as func Main() {, later add the closing }, or create func Main() { } and paste existing top-level statements into the body. Compare the first semantic query after the edit with a cold one-shot compilation and with a follow-up edit inside the stabilized owner. For deterministic regression coverage, use the language-server unit-test hover replay helpers to load inline Raven source, open it through the mock workspace/document store, and orchestrate hovers at exact positions or marker-derived positions.

  4. Check the client log to confirm the request lifecycle and parameters.

  5. Check the server log to see request handling, failures, or missing symbol results.

  6. Correlate the failing request with syntax, symbol lookup, binding, diagnostics behavior, compiler API caching, and language service code.

  7. Add focused regression coverage if the failure is fixed in code.

When comparing editor behavior with command-line behavior, use the current tool split: rvnc / Raven.Compiler is the compiler driver for one-shot compile and project build repros, while rvn / Raven is for developer commands such as syntax, pretty dump, and bound-tree views.

Compiler Boundary

  • Use docs/compiler/architecture/live-semantic-model.md as the shared reference for how compiler-owned semantic state, analyzer scheduling, diagnostic lanes, and LSP request prioritization should fit together.
  • The language server should present compiler answers. It should not own semantic invalidation, symbol inference, overload selection, binder selection, or cache policy.
  • First verify the Roslyn-shaped compiler APIs: GetSymbolInfo, GetTypeInfo, GetDeclaredSymbol, diagnostics, operations, and available public semantic entry points.
  • If those APIs are wrong, slow, or cache-dependent, fix Raven.CodeAnalysis. Keep LSP-side semantic inference temporary and remove it once the compiler can answer.
  • Binders are the compiler execution units. Method binders own parameters; block binders own immediate locals, statement/expression binding state, and binder-produced diagnostics.
  • Compilation and SemanticModel are the semantic service boundary for the language server. LSP handlers should obtain the compiler-owned semantic model for the requested document snapshot and then call public semantic APIs rather than reading or composing internal cache state.
  • Lazy binding is expected. A hover, inlay, completion, or diagnostics request may be the first path to trigger binding; once it does, later paths should observe the same compiler-owned cached symbols, types, and diagnostics.
  • Prefer correctness and deterministic compiler-owned answers over cold-start speed. Cold first queries may bind; optimize later without changing semantic meaning.
  • Treat available-state APIs as opportunistic fast paths. If available state is incomplete or context-sensitive, use the authoritative semantic API that can bind instead of presenting a guessed answer.
  • Do not make editor features intentionally incomplete just to avoid binding. If a result is semantically required, ask the compiler for it; optimize the compiler path or request scheduling if the cold path is too slow.
  • Inlays should use the same semantic model answers as hover and diagnostics. They may skip tooltips or stale background work for UX reasons, but type/parameter annotations should not disappear because a separate LSP policy refused to bind. Type annotation text should stay source-friendly; do not show fully qualified names merely as a performance shortcut.
  • The LSP may coordinate request cancellation, prioritize interactive requests, skip stale background work, and avoid monopolizing semantic access, but it should not change semantic meaning.
  • Foreground semantic requests such as hover, completion, signature help, definition, and rename should not wait behind broad background work unless they need the exact same semantic model state. Background diagnostics, analyzers, semantic tokens, and full-document inlays should be cancellable and may be skipped/requeued for a newer document version.
  • LSP-side caches should be presentation-only and versioned, such as rendered hover markdown or inlay labels. Symbol/type/diagnostic truth belongs to Raven.CodeAnalysis.
  • Cross-file edits are normal. After adding or changing another source file, a hover in the original file should resolve symbols through the current project compilation snapshot rather than stale per-document state.
Show full SKILL.md (894 more words)Show less

Request Pile-Ups

  • When hovers, inlays, semantic tokens, and document symbols appear stuck, check whether a full-document/background request started first and failed to complete.

  • Compare client request start/complete events with logs/raven-lsp.log and logs/raven-lsp-performance.txt.

  • Use the headless harness for hover and inlay ranges to separate compiler cold-path cost from VS Code scheduling.

  • For CPU traces, profile the built headless apphost directly rather than dotnet run; profiling dotnet run mostly captures CLI/MSBuild startup and wait frames. Use a bounded trace with rundown enabled so method symbols are preserved and the profiler stops cleanly:

    bash
    dotnet build tools/Raven.LanguageServer.Headless/Raven.LanguageServer.Headless.csproj --property WarningLevel=0 --no-restore
    dotnet trace collect --duration 00:00:12 --format speedscope \
      -o /tmp/raven-traces/<scenario>.nettrace \
      -- tools/Raven.LanguageServer.Headless/bin/Debug/net10.0/Raven.LanguageServer.Headless \
         <project-dir> <source-file> <target-symbol> <headless-options>
    dotnet trace report /tmp/raven-traces/<scenario>.nettrace topN --number 80

    Avoid open-ended dotnet trace collect -- <headless-app> for these short LSP probes; EventPipe shutdown can leave the target waiting even after the app prints its results. If Asynkron Profiler is used, run it against the built apphost as well, and guard direct collection with a watchdog if the scenario previously showed EventPipe shutdown issues. Keep the raw headless timing output alongside the trace, because short scenarios can be dominated by startup, sleeps, and idle waits in aggregate profiler views.

  • When investigating hangs, compare the same project with editor inlays enabled and disabled. A project that loads without inlays but stalls with inlays points to request pressure or inlay-triggered cold semantic binding, not necessarily a broken compiler answer.

  • When investigating stale or surprising diagnostics, compare compiler diagnostics without source-code analyzers against diagnostics with analyzers enabled. This keeps binder/compiler diagnostics distinct from analyzer diagnostics and avoids chasing analyzer behavior as a binder regression.

  • When isolating analyzer performance, disable expensive built-in analyzers per project with RavenDisabledAnalyzers before changing compiler or LSP scheduling. Analyzer names may use the short analyzer type name, for example UnusedVariableAnalyzer.

  • For analyzer diagnostic delays, inspect workspace analyzer events as well as LSP request timings. Raven's analyzer driver should behave like a Roslyn-style scheduler: one cold full document walk is acceptable, but analyzers should be registered as narrow stateless actions so later edits can invalidate and rerun only affected syntax or symbol scopes.

  • If analyzer diagnostics disappear while analyzer work is skipped, canceled, or failed, treat that as a diagnostic-lane bug. Background analyzer failures should preserve the previous valid analyzer diagnostics and requeue work instead of publishing an empty diagnostic set.

  • When a code-action request stalls, check whether a code-fix provider recomputed diagnostics or diagnostics-with-analyzers. Code fixes should use the diagnostics supplied by CodeFixContext; asking workspace or semantic-model diagnostic APIs from a code action can force broad binding and analyzer execution.

  • If a request is slow because public semantic APIs force broad binding, fix the compiler path. If a request blocks newer interactive work, fix LSP scheduling/cancellation without duplicating compiler semantics.

  • Treat structural edits that change executable ownership, such as wrapping top-level statements in func Main, as first-class recovery cases. Verify that changed-owner detection identifies the source-level owner and that later body-only edits can reuse unaffected semantic state.

  • For inlay flicker or disappearing hints, check whether the server returned an empty result while semantic access was busy. Prefer returning cached results for the same document version and range-filtering them over clearing the editor UI.

  • Treat large full-document inlay requests as background presentation work: they should prefer cached or available compiler state and avoid cold expensive binding fallbacks. Small full-document, precise, or visible-range inlay requests may trigger the authoritative compiler bind when needed.

  • Do not eagerly build tooltip markdown for full-document inlay responses. Full-document responses should prioritize correct labels and source-applicable edits; focused range requests can include richer tooltip content.

  • For slow inlays, separate three costs: semantic model materialization, binding needed for missing symbols/types, and presentation formatting such as type-name qualification. Fix broad metadata lookup or formatting costs before suppressing annotations.

  • For cross-file responsiveness issues, test adding a new .rvn file that declares a symbol and immediately hovering a reference to that symbol in another document. This exposes whether project snapshot updates and background diagnostics are blocking interactive semantic queries.

  • When request timings show high gateWait but low semantic work, fix request scheduling or gate ownership before optimizing binders.

  • When timings show low gate wait but high semantic/binding work, reduce the compiler path: prefer sound binder-owned caches, narrower binding, metadata lookup shortcuts, or incremental reuse.

Notes

  • Do not report only one side of the logs.
  • If the compiler model is clearly wrong, fix the underlying compiler or language-service behavior rather than encoding client-side workarounds.
  • Keep language-service and compiler documentation up to date when fixing or clarifying editor-facing behavior; if the behavior should be documented but is missing from docs/, consider adding it.
  • Consider that hover, completion, definition, or diagnostics failures may be compiler-side issues exposed by the LSP, especially when incremental semantic caches or available-symbol APIs disagree with one-shot compilation.
  • The language server should mostly present data provided by public compiler APIs. Keep LSP-side inference minimal unless the compiler API cannot reasonably provide the data yet.
  • Keep the public compiler API Roslyn-like unless there is an intentional Raven-specific divergence. LSP, analyzers, refactorings, and completion should normally call APIs such as GetTypeInfo, GetSymbolInfo, and GetDeclaredSymbol, not cache-specific helper methods.
  • Semantic caching is a compiler API responsibility. Public semantic APIs should decide internally whether to answer from cached or incremental state, or re-bind when necessary. Prefer fixing cache correctness, concurrency, and expensive lookup paths in Raven.CodeAnalysis over adding LSP workarounds.

© marinasundstrom, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/raven-lsp-debug of marinasundstrom/raven.

Open the folder on GitHubat commit 3ad067d

Compare with similar skills

Raven Lsp Debug next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Raven Lsp Debug compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Raven Lsp Debug this skillmarinasundstrom/raven108—~3.7kAutomated safety check: PassMIT
Web Application Testinganthropics/skills180k51 repos~966Automated safety check: PassApache-2.0
Diagnosing Bugsfossasia/eventyay-interpretation1.6k32 repos~2.1kAutomated safety check: PassApache-2.0
TDDpietheinstrengholt/rssmonster56430 repos~906Automated safety check: PassMIT
TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph11211 repos~2.4kAutomated safety check: PassNone
TDDsanity-io/sanity6.4k20 repos~1kAutomated safety check: PassMIT

Similar skills

  • Web Application Testing

    anthropics/skills

    Official

    Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.

    180k GitHub starsUsed in 51 repos~966 tokens
    Testing & QAAuto-check passed
  • Diagnosing Bugs

    fossasia/eventyay-interpretation

    Diagnosis loop for hard bugs and performance regressions. An agent skill from fossasia/eventyay-interpretation.

    1.6k GitHub starsUsed in 32 repos~2.1k tokens
    Testing & QAAuto-check passed
  • TDD

    pietheinstrengholt/rssmonster

    Test-driven development. An agent skill from pietheinstrengholt/rssmonster.

    564 GitHub starsUsed in 30 repos~906 tokens
    Testing & QAAuto-check passed
  • TDD Workflow

    hellangleZ/burn-in-cceverywhere-ralph

    A skill your agent uses when writing new features, fixing bugs, or refactoring code.

    112 GitHub starsUsed in 11 repos~2.4k tokens
    Testing & QAAuto-check passed
  • TDD

    sanity-io/sanity

    Official

    Test-driven development with red-green-refactor loop. An agent skill from sanity-io/sanity.

    6.4k GitHub starsUsed in 20 repos~1k tokens
    Testing & QAAuto-check passed
  • Context Driven Development

    Ibrahim-3d/orchestrator-supaconductor

    A skill your agent uses when working with Conductor's context-driven development methodology, managing project context artifacts, or understanding the relationship between product.md, tech-stack.md…

    381 GitHub starsUsed in 9 repos~2.9k tokens
    Testing & QAAuto-check passed

More from marinasundstrom/raven

  • Raven Debug Compiler

    marinasundstrom/raven

    Debug workflow for Raven compiler analysis and emission issues using rvn frontend tooling and the rvnc compiler driver.

    108 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Raven Test Triage

    marinasundstrom/raven

    Testing and stabilization workflow for the Raven compiler test suite.

    108 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Raven Feature Workflow

    marinasundstrom/raven

    End-to-end workflow for Raven language and compiler feature work.

    108 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Raven Test Cleanup

    marinasundstrom/raven

    Coverage-improvement workflow for Raven tests through cleanup.

    108 GitHub stars~2.2k tokensUpdated today
    Auto-check passed

Categories

Questions about Raven Lsp Debug

What does Raven Lsp Debug do?

Troubleshooting workflow for Raven language service and editor failures. Raven Lsp Debug is an agent skill from marinasundstrom/raven. Troubleshooting workflow for Raven language service and editor failures.

When should I use Raven Lsp Debug?

Raven Lsp Debug fits situations like: investigating hover; semantic tokens; document symbols; other LSP/editor integration problems.

How do I install Raven Lsp Debug in Claude Code?

Run `npx skills add marinasundstrom/raven --skill raven-lsp-debug -a claude-code`. Or copy the skill folder (.agents/skills/raven-lsp-debug in marinasundstrom/raven) into .claude/skills/raven-lsp-debug in your project. Claude Code loads it when a task matches its description.

How do I install Raven Lsp Debug in Codex?

Run `npx skills add marinasundstrom/raven --skill raven-lsp-debug -a codex`. Or copy the skill folder (.agents/skills/raven-lsp-debug in marinasundstrom/raven) into .agents/skills/raven-lsp-debug in your project. Codex loads it when a task matches its description.

Can I use Raven Lsp Debug in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add marinasundstrom/raven --skill raven-lsp-debug -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/raven-lsp-debug, .gemini/skills/raven-lsp-debug, .github/skills/raven-lsp-debug and .opencode/skills/raven-lsp-debug in your project.

What does Raven Lsp Debug need to run?

Going by SKILL.md and its folder, Raven Lsp Debug needs the command-line tools its instructions call (dotnet).

Does Raven Lsp Debug access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Raven Lsp Debug safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Raven Lsp Debug use?

Raven Lsp Debug is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Raven Lsp Debug use?

About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Raven Lsp Debug?

Skills that share tags, products or a category with Raven Lsp Debug: Web Application Testing (anthropics/skills, 180k stars), Diagnosing Bugs (fossasia/eventyay-interpretation, 1.6k stars), TDD (pietheinstrengholt/rssmonster, 564 stars) and TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Raven Lsp Debug?

marinasundstrom (a GitHub user) maintains it in marinasundstrom/raven, which has 108 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 9, 2026.

Source: marinasundstrom/raven on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.