MAID LSP
Language Server Protocol implementation for MAID (Manifest-driven AI Development) methodology validation.
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:
- Architecture - System design and components
- Capabilities - LSP features and diagnostic codes
- Integration - maid-runner CLI integration
- Performance - Performance specifications
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
- maid-runner - MAID CLI validation tool
- vscode-maid - VS Code extension
License
MIT License - see LICENSE for details.
Acknowledgments
- pygls - Python LSP framework
- lsprotocol - LSP type definitions
Metadata
Release files for maid-lsp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| maid_lsp-0.2.0.tar.gz | 73.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| maid_lsp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 103.9 kB
Release files / maid_lsp-0.2.0.tar.gz
| Download URL | maid_lsp-0.2.0.tar.gz |
|---|---|
| Size | 73.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b213bbaf3e5399dea2e7903728051d707a730b80379bb826b35bfa7c107eeec6
|
|
BLAKE2b-256 checksum How to use checksums |
f18f97cc2a4fb7f5a277e62e4e9107cbddbac90e4acbab843e2f95a0e2a33655
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 26, 2026.
Transparency logRelease files / maid_lsp-0.2.0-py3-none-any.whl
| Download URL | maid_lsp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 30.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3b7c5a16968bdc58c379b2b9e557961888da97cff8777674ea4d7b95d19fb338
|
|
BLAKE2b-256 checksum How to use checksums |
285f2e43c4ba20026d8f15b6cbdb2e915b14af693440f5aea6930a86906278bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 26, 2026.
Transparency logSecurity for maid-lsp 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for maid_lsp-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 26, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.