Skip to main content

Language Server Protocol implementation for MAID methodology validation

Project description

MAID LSP

Language Server Protocol implementation for MAID (Manifest-driven AI Development) methodology validation.

Status: v0.1.2 - Core implementation complete. All LSP capabilities functional.

Overview

MAID LSP provides real-time validation of MAID manifests in code editors and IDEs, including:

  • VS Code (via extension)
  • JetBrains IDEs (via plugin)
  • Claude Code (native LSP support)
  • Any LSP-compatible editor

Features

  • Real-time Diagnostics: Instant validation feedback as you edit manifests
  • Code Actions: Quick fixes for common validation errors (add missing fields, create referenced files)
  • Hover Information: Detailed artifact information on hover (functions, classes, attributes)
  • Push Diagnostics: Server pushes validation results on document changes with 100ms debouncing

Installation

Prerequisites

  • Python 3.10+
  • maid-runner >= 0.8.0
  • uv (package manager)

From Source

# Clone the repository
git clone https://github.com/mamertofabian/maid-lsp.git
cd maid-lsp

# Install dependencies
uv sync --all-extras

# Run the server
uv run maid-lsp --stdio

Usage

Running the Server

# Start in stdio mode (default)
maid-lsp --stdio

# Or via make
make run

# Check version
maid-lsp --version

Editor Integration

The server communicates via stdio and validates files matching *.manifest.json.

VS Code / Cursor: Install the vscode-maid extension from the marketplace.

Architecture

See the docs/ directory for detailed architecture documentation:

Three-Layer Design

┌─────────────────────────────────────────────────────────┐
│                    Protocol Layer                        │
│                   (maid_lsp/server.py)                  │
│                    pygls + LSP handlers                  │
└─────────────────────────────────────────────────────────┘
                           │
┌─────────────────────────────────────────────────────────┐
│                  Capabilities Layer                      │
│              (maid_lsp/capabilities/)                   │
│         diagnostics.py │ code_actions.py │ hover.py     │
└─────────────────────────────────────────────────────────┘
                           │
┌─────────────────────────────────────────────────────────┐
│                  Validation Layer                        │
│               (maid_lsp/validation/)                    │
│           runner.py │ parser.py │ models.py             │
└─────────────────────────────────────────────────────────┘

Key design decision: The server wraps maid-runner CLI via subprocess rather than importing modules directly. This keeps validation logic separate and uses CLI output as a stable API contract.

Project Structure

maid-lsp/
├── maid_lsp/
│   ├── __init__.py           # Package init with version
│   ├── __main__.py           # CLI entry point
│   ├── server.py             # Main LSP server
│   ├── capabilities/         # LSP capability handlers
│   │   ├── diagnostics.py    # Diagnostic publishing
│   │   ├── code_actions.py   # Quick fix actions
│   │   └── hover.py          # Hover information
│   ├── validation/           # maid-runner integration
│   │   ├── models.py         # Data models
│   │   ├── runner.py         # CLI wrapper
│   │   └── parser.py         # Result to diagnostic conversion
│   └── utils/
│       └── debounce.py       # Async debouncer
├── tests/                    # Behavioral tests
├── docs/                     # Architecture documentation
└── manifests/                # MAID manifests (dogfooding)

Diagnostic Codes

Code Severity Description
MAID-001 Error Schema validation errors
MAID-002 Error Missing required fields
MAID-003 Error File reference errors
MAID-004 Error Artifact validation errors
MAID-005 Error Behavioral validation errors
MAID-006 Error Implementation validation errors
MAID-007 Error Manifest chain errors
MAID-008 Warning Coherence validation warnings

Development

Commands

# Install dependencies
uv sync --all-extras

# Run all quality checks (lint + type-check + test)
make all

# Individual commands
make lint           # Run ruff linter
make lint-fix       # Auto-fix linting issues
make type-check     # Run mypy type checker
make test           # Run pytest
make test-cov       # Run tests with coverage report
make format         # Format code with black
make format-check   # Check formatting without changes

# Run a single test
uv run pytest tests/test_task_002_debounce.py -v

MAID Methodology

This project uses the MAID methodology for all implementation. Each feature was developed following the MAID workflow with manifests in the manifests/ directory.

Task Component Status
task-001 Package initialization Complete
task-002 Async debouncer Complete
task-003 Validation models Complete
task-004 MaidRunner CLI wrapper Complete
task-005 Validation parser Complete
task-006 Diagnostics handler Complete
task-007 Code actions handler Complete
task-008 Hover handler Complete
task-009 Main server Complete
task-010 CLI entry point Complete

Related Projects

License

MIT License - see LICENSE for details.

Acknowledgments

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

maid_lsp-0.1.7.tar.gz (52.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

maid_lsp-0.1.7-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file maid_lsp-0.1.7.tar.gz.

File metadata

  • Download URL: maid_lsp-0.1.7.tar.gz
  • Upload date:
  • Size: 52.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for maid_lsp-0.1.7.tar.gz
Algorithm Hash digest
SHA256 3cde60f80070e14690cfaadf79fa5daa7b0c6899c5e4547e96661bb4ad686548
MD5 da89a59d019cf4838a509cdda1078485
BLAKE2b-256 e9345787bf710207a099ce5d1b92bb7c20addbfe46c477db17a474d82830eb53

See more details on using hashes here.

Provenance

The following attestation bundles were made for maid_lsp-0.1.7.tar.gz:

Publisher: publish.yml on mamertofabian/maid-lsp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file maid_lsp-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: maid_lsp-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for maid_lsp-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 1e5ab2666eb11c082e555324aef01c0f670d6730ac66d6eb878c5a786d89783c
MD5 56b2867b09239e73b000cdf56eb576db
BLAKE2b-256 106ce5998dc296e52ef6f4ac404a44af4f23d82e7c3905b739d9a806a2a8ba89

See more details on using hashes here.

Provenance

The following attestation bundles were made for maid_lsp-0.1.7-py3-none-any.whl:

Publisher: publish.yml on mamertofabian/maid-lsp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page