Web Application Testing
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
Troubleshooting workflow for Raven language service and editor failures.
$ npx skills add marinasundstrom/raven --skill raven-lsp-debug -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install marinasundstrom/raven raven-lsp-debug --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "raven-lsp-debug" agent skill from https://github.com/marinasundstrom/raven/tree/main/.agents/skills/raven-lsp-debug into .claude/skills/raven-lsp-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "raven-lsp-debug", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/marinasundstrom/raven/tree/main/.agents/skills/raven-lsp-debugType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add marinasundstrom/raven --skill raven-lsp-debug -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install marinasundstrom/raven raven-lsp-debug --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marinasundstrom/raven.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/raven-lsp-debug .agents/skills/raven-lsp-debug && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "raven-lsp-debug" agent skill from https://github.com/marinasundstrom/raven/tree/main/.agents/skills/raven-lsp-debug into .agents/skills/raven-lsp-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "raven-lsp-debug", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add marinasundstrom/raven --skill raven-lsp-debug -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install marinasundstrom/raven raven-lsp-debug --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marinasundstrom/raven.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/raven-lsp-debug .cursor/skills/raven-lsp-debug && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "raven-lsp-debug" agent skill from https://github.com/marinasundstrom/raven/tree/main/.agents/skills/raven-lsp-debug into .cursor/skills/raven-lsp-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "raven-lsp-debug", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/marinasundstrom/raven.git --path .agents/skills/raven-lsp-debug--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add marinasundstrom/raven --skill raven-lsp-debug -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install marinasundstrom/raven raven-lsp-debug --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marinasundstrom/raven.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/raven-lsp-debug .gemini/skills/raven-lsp-debug && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "raven-lsp-debug" agent skill from https://github.com/marinasundstrom/raven/tree/main/.agents/skills/raven-lsp-debug into .gemini/skills/raven-lsp-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "raven-lsp-debug", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install marinasundstrom/raven raven-lsp-debugInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add marinasundstrom/raven --skill raven-lsp-debug -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/marinasundstrom/raven.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/raven-lsp-debug .github/skills/raven-lsp-debug && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "raven-lsp-debug" agent skill from https://github.com/marinasundstrom/raven/tree/main/.agents/skills/raven-lsp-debug into .github/skills/raven-lsp-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "raven-lsp-debug", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add marinasundstrom/raven --skill raven-lsp-debug -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install marinasundstrom/raven raven-lsp-debug --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marinasundstrom/raven.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/raven-lsp-debug .opencode/skills/raven-lsp-debug && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "raven-lsp-debug" agent skill from https://github.com/marinasundstrom/raven/tree/main/.agents/skills/raven-lsp-debug into .opencode/skills/raven-lsp-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "raven-lsp-debug", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
raven-lsp-debugTroubleshooting 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. 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.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 3ad067d. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
dotnetFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from marinasundstrom/raven at commit 3ad067d, republished under its MIT licence (© marinasundstrom). 1,706 words, ~3,702 tokens.
.claude/skills/raven-lsp-debug/SKILL.md (or your agent's skills folder).Use this skill for language service and editor failures.
Capture both sides:
logs/raven-lsp.logRaven output channelInclude relevant excerpts when reporting or fixing hover, completion, or definition failures.
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.
Reduce the issue to a minimal source example.
Record the exact editor action that fails.
Reproduce the request with the headless language-server harness when possible:
dotnet run --project tools/Raven.LanguageServer.Headless/Raven.LanguageServer.Headless.csproj /property:WarningLevel=0The 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:
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 UseNpgsqlThere are three useful replay modes:
# 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:29Use 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.
Check the client log to confirm the request lifecycle and parameters.
Check the server log to see request handling, failures, or missing symbol results.
Correlate the failing request with syntax, symbol lookup, binding, diagnostics behavior, compiler API caching, and language service code.
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.
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.GetSymbolInfo, GetTypeInfo, GetDeclaredSymbol, diagnostics, operations, and available public semantic entry points.Raven.CodeAnalysis. Keep LSP-side semantic inference temporary and remove it once the compiler can answer.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.Raven.CodeAnalysis.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:
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 80Avoid 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.
docs/, consider adding it.GetTypeInfo, GetSymbolInfo, and GetDeclaredSymbol, not cache-specific helper methods.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
Just SKILL.md in .agents/skills/raven-lsp-debug of marinasundstrom/raven.
Open the folder on GitHubat commit 3ad067d
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Raven Lsp Debug this skillmarinasundstrom/raven | 108 | — | ~3.7k | Automated safety check: Pass | MIT | |
| Web Application Testinganthropics/skills | 180k | 51 repos | ~966 | Automated safety check: Pass | Apache-2.0 | |
| Diagnosing Bugsfossasia/eventyay-interpretation | 1.6k | 32 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| TDDpietheinstrengholt/rssmonster | 564 | 30 repos | ~906 | Automated safety check: Pass | MIT | |
| TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph | 112 | 11 repos | ~2.4k | Automated safety check: Pass | None | |
| TDDsanity-io/sanity | 6.4k | 20 repos | ~1k | Automated safety check: Pass | MIT |
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
fossasia/eventyay-interpretation
Diagnosis loop for hard bugs and performance regressions. An agent skill from fossasia/eventyay-interpretation.
pietheinstrengholt/rssmonster
Test-driven development. An agent skill from pietheinstrengholt/rssmonster.
hellangleZ/burn-in-cceverywhere-ralph
A skill your agent uses when writing new features, fixing bugs, or refactoring code.
sanity-io/sanity
Test-driven development with red-green-refactor loop. An agent skill from sanity-io/sanity.
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…
marinasundstrom/raven
Debug workflow for Raven compiler analysis and emission issues using rvn frontend tooling and the rvnc compiler driver.
marinasundstrom/raven
Testing and stabilization workflow for the Raven compiler test suite.
marinasundstrom/raven
End-to-end workflow for Raven language and compiler feature work.
marinasundstrom/raven
Coverage-improvement workflow for Raven tests through cleanup.
Categories
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.
Raven Lsp Debug fits situations like: investigating hover; semantic tokens; document symbols; other LSP/editor integration problems.
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.
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.
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.
Going by SKILL.md and its folder, Raven Lsp Debug needs the command-line tools its instructions call (dotnet).
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.
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.
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.
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.
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.
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.