Skip to content

Feedback on your lsp-implementation skill #93

@RichardHightower

Description

@RichardHightower

I was reading through your LSP implementation and noticed you've got a solid grasp of the protocol details—84 points reflects that you're hitting the fundamentals well, but I'm curious about the architectural choices you made around request/response handling, especially on the more complex scenarios like workspace edits or incremental sync.

Links:

The TL;DR

You're at 84/100, solid B-grade territory. This is based on Anthropic's skill grading standards—your Progressive Disclosure Architecture is strongest (26/30), showing good token economy and clear layering between SKILL.md and your reference files. The weakest area is Spec Compliance (12/15), mainly because your metadata description is vague on activation scenarios and you're missing some trigger phrases that would help developers discover this skill.

What's Working Well

  • Reference architecture is clean. You've got SKILL.md pointing to references/capabilities.md and references/diagnostics.md at exactly the right level—no over-nesting, and each file stays under 100 lines where it matters.
  • Code examples are focused. Your completions and hover implementations show real patterns without unnecessary bloat. The Protocol Messages section gives developers the actual LSP message structures they need.
  • Terminology is consistent. You use "completions," "hover," "diagnostics," "definition" throughout—that makes the whole skill feel cohesive and trustworthy to someone implementing a language server.

The Big One: Missing Testing & Validation Patterns

Here's what's holding you back the most: you show how to implement LSP features, but you don't show developers how to verify they work. This drops your Utility score from potential 20 to 17/20.

Why it matters: A developer implementing completions needs to know: "Does my completion provider actually trigger? How do I test it in VSCode?" Without that feedback loop, they're flying blind.

The fix: Add a Testing section after your Protocol Messages. Something like:

// Test your completion provider
const result = await connection.sendRequest(
  "textDocument/completion",
  { textDocument: { uri }, position: { line: 0, character: 0 } }
);
console.log("Completions returned:", result.length); // Verify non-empty

Include: "Use VSCode Extension Development Host to test interactively—press F5 to launch a test window and validate completions, hover, and diagnostics fire correctly."

Impact: +1-2 points straight up.

Other Things Worth Fixing

  1. Vague metadata description. Right now it says "use when implementing Language Server Protocol features." Better: list specific triggers like implementing LSP, code completions, hover tooltips, syntax diagnostics, go to definition, vscode-languageserver. That helps discoverability. (+2 points)

  2. README.md is redundant. It duplicates SKILL.md's "When to Use" and "Key Topics." Just nuke it or reduce it to one line: "See SKILL.md for LSP implementation guidance." Saves tokens, cleaner navigation. (+1 point)

  3. Add a TOC to SKILL.md. You're at 135 lines without a table of contents. Developers scrolling to find the Diagnostics section shouldn't have to hunt. Add one after Quick Start. (+1 point)

Quick Wins

  • Biggest bang: Add testing/validation section (1-2 points)
  • Metadata triggers: Expand description with specific activation phrases (2 points)
  • Cleanup: Remove README.md duplication (1 point)
  • Navigation: Add TOC to SKILL.md (1 point)

That's 5-6 points of low-hanging fruit that gets you to 89-90, solid A territory.


Checkout your skill here: [SkillzWave.ai](https://skillzwave.ai) | [SpillWave](https://spillwave.com) We have an agentic skill installer that install skills in 14+ coding agent platforms. Check out this guide on how to improve your agentic skills.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions