Table of Contents
Sprint 2 - contract-validator Plugin Implementation
Metadata
- Sprint: Sprint 2 - contract-validator Plugin
- Date: 2026-01-26
- Issues: #185-#193 (9 issues)
- Status: Completed
Context
Implemented the contract-validator plugin for cross-plugin compatibility validation and CLAUDE.md agent verification. This plugin addresses growing compatibility concerns as the marketplace expands to 12+ plugins.
What Went Well
1. Real Issue Discovery
The validation tools immediately found a real compatibility issue: /initial-setup command is defined by three plugins (projman, data-platform, pr-review). This validates the plugin's usefulness.
2. Comprehensive Test Coverage
Achieved 88% average coverage across core modules:
- parse_tools.py: 79%
- validation_tools.py: 96%
- report_tools.py: 89%
3. Regex Pattern Refinement
Iteratively improved parsing patterns through real-world testing against existing plugins. Key refinements:
- Agent table parsing required strict
**AgentName**format to avoid noise - Command parsing needed to exclude table separators (
|---|) - Section extraction needed to capture full content until next same-level header
Challenges & Solutions
Challenge 1: Plugin Name Matching in Reports
Problem: Report tools couldn't match parsed plugin names (e.g., "Plugin One") to directory names (e.g., "plugin-one") for pairwise validation.
Solution: Added _find_plugin_dir() method that checks:
- Exact lowercase match of directory name
- Plugin.json
namefield match
Prevention: When designing lookup functions, consider all naming variations upfront.
Challenge 2: CLAUDE.md Agent Parsing Noise
Problem: Initial regex picked up 62 "agents" including unrelated table rows.
Solution: Made pattern more strict:
- Require
**BoldName**format in first column - Check personality column doesn't contain backticks (tool names)
- Skip rows where personality contains "---" or looks like header
Prevention: Test parsers against real-world documents early, not just synthetic test data.
Challenge 3: Branch Protection Workflow
Problem: Development branch has push protection, breaking the merge workflow used in Sprint 1.
Solution: Each issue gets its own feature branch pushed to remote. PRs created via Gitea web interface.
Prevention: Check branch protection settings before starting sprint execution.
Key Decisions
- 7 MCP Tools - Split into parse (2), validate (3), report (2) for clear separation
- Pydantic Models - Used for all structured data (PluginInterface, ValidationIssue, etc.)
- Dual Report Format - Markdown for human review, JSON for programmatic use
- Known Data Flow Patterns - Hardcoded producer/consumer tool lists for data flow validation
Metrics
| Metric | Value |
|---|---|
| Issues Completed | 9/9 |
| MCP Tools | 7 |
| Commands | 3 |
| Agents | 2 |
| Tests | 34 |
| Coverage | 88% avg |
| Real Issues Found | 1 (command conflict) |
Recommendations for Future Sprints
- Address Command Conflict - Create issue to rename
/initial-setupin data-platform and pr-review to avoid conflict with projman - Add CI Integration - Run
/validate-contractsin CI pipeline before merging plugin changes - Expand Data Flow Patterns - Add more producer/consumer tool mappings as plugins grow
Tags
- contract-validator
- mcp-server
- validation
- parsing
- compatibility
Tags: contract-validator, mcp-server, validation, parsing, sprint-2, v5.0.0