- Add Status/In-Progress, Status/Blocked, Status/Failed, Status/Deferred labels
- Update orchestrator.md with Status Label Management section
- Update executor.md with honest Status Reporting requirements
- Update labels-reference.md with Status detection guidelines
Status labels enable accurate tracking:
- In-Progress: Work actively being done
- Blocked: Waiting for dependency/external factor
- Failed: Attempted but couldn't complete
- Deferred: Moved to future sprint
Agents must report honestly - never say "completed" when blocked/failed.
Closes#235
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The _get_current_branch() method was running git commands from the
installed plugin directory instead of the user's project directory.
This caused incorrect branch detection (always seeing 'main' from
the marketplace repo instead of the user's actual branch).
Fix: Use CLAUDE_PROJECT_DIR environment variable to get the correct
project directory and pass it as cwd to subprocess.run().
Fixes#231
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements PostToolUse hook to warn about breaking interface changes:
- Detects changes to plugin.json, hooks.json, .mcp.json, agents/*.md
- Compares with git HEAD to find removed/changed elements
- Warns on: removed hooks, changed matchers, removed MCP servers
- Warns on: plugin name changes, major version bumps
- Non-blocking, configurable via CONTRACT_VALIDATOR_BREAKING_WARN
Depends on #229 (SessionStart auto-validate infrastructure).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements smart SessionStart hook for plugin validation:
- Validates plugin contracts only when files change (smart mode)
- Caches file hashes to avoid redundant checks
- Non-blocking warnings for compatibility issues
- Configurable via CONTRACT_VALIDATOR_AUTO_CHECK
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements UserPromptSubmit hook to detect vague prompts:
- Checks for short prompts without context
- Detects ambiguous phrases ("fix it", "help me with")
- Suggests /clarity-assist when beneficial
- Non-blocking, configurable via CLARITY_ASSIST_AUTO_SUGGEST
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements PostToolUse hook to warn about potentially breaking schema changes:
- DROP COLUMN/TABLE/INDEX detection
- Column type changes (ALTER TYPE, MODIFY COLUMN)
- NOT NULL constraint additions
- RENAME operations
- ORM model field removals
Non-blocking - outputs warnings only.
Configurable via DATA_PLATFORM_SCHEMA_WARN env var.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Claude plugin cache at ~/.claude/plugins/cache/leo-claude-mktplace/
holds versioned copies of .mcp.json files. When we update .mcp.json
to use run.sh instead of direct python paths, the cache retains old
versions, causing MCP servers to fail.
Now post-update.sh clears this cache, forcing Claude to read fresh
configs from the installed marketplace on next session start.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The branch permission check was only allowing feat/, feature/, and dev/
prefixes for write operations. This blocked PR creation from fix/*
branches, forcing fallback to direct API calls.
Added patterns:
- fix/, bugfix/, hotfix/ - for bug fixes
- chore/, refactor/ - for maintenance
- docs/, test/ - for documentation and tests
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace direct python path in .mcp.json with run.sh wrapper scripts
that automatically locate the venv in cache or local directory.
Problem: .venv symlinks are gitignored, causing them to be wiped on
every git operation. The SessionStart hook should recreate them but
this was unreliable, leading to repeated MCP server failures.
Solution: run.sh scripts that:
- First check ~/.cache/claude-mcp-venvs/leo-claude-mktplace/{server}/.venv
- Fallback to local .venv if exists
- Exit with helpful error if neither found
This eliminates dependency on symlinks entirely - the scripts are
tracked in git and will always be present after clone/pull/update.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add missing create_pull_request tool to Gitea MCP server. This completes
the PR lifecycle - previously only had list/get/review/comment tools.
- Add create_pull_request to GiteaClient
- Add async wrapper to PullRequestTools with branch permissions
- Register tool in server.py with proper schema
- Parameters: title, body, head, base, labels (optional)
- Branch-aware security: only allowed on development/feature branches
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace the old approach (create venvs in marketplace directory) with
the new venv-repair.sh approach (symlinks to external cache).
This ensures post-update.sh:
- Instantly restores symlinks if cache exists
- Only does full pip install on first run
- Works correctly after marketplace updates
Flow after this fix:
Update marketplace → post-update.sh → venv-repair → Session works
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Problem:
- Venvs in marketplace directory got deleted on every update
- Users had to manually run setup.sh and wait for full pip install
- This caused MCP servers to fail until manually fixed
Solution:
- Store venvs in external cache (~/.cache/claude-mcp-venvs/)
- Auto-repair symlinks via SessionStart hook (instant operation)
- Only run pip install on first use or when requirements change
Architecture:
Cache (runtime) → Marketplaces → External venv cache
The chain of symlinks ensures all three locations work:
1. ~/.claude/plugins/cache/.../mcp-servers/* (runtime)
2. ~/.claude/plugins/marketplaces/.../mcp-servers/* (install)
3. ~/.cache/claude-mcp-venvs/* (persistent venvs)
Performance:
- First install: ~2-3 min (unchanged)
- After marketplace update: 0.03 sec (was 2-3 min)
Files:
- scripts/venv-repair.sh: Fast symlink restoration for hooks
- scripts/setup-venvs.sh: Full setup with external cache
- plugins/projman/hooks/startup-check.sh: Auto-repair on session start
- .gitignore: Ignore .venv symlinks
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Previously post-update.sh would only warn when venvs were missing,
requiring a separate setup.sh run. Now it automatically creates
missing venvs and installs dependencies including editable packages.
Also added viz-platform and contract-validator to the update list.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The filter tool was adding an __index_level_0__ column to results
because pandas query() preserves the original index, which gets
converted to a column when storing the DataFrame.
Added .reset_index(drop=True) after query() to drop the preserved
index and create a clean sequential index.
Fixes#203
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The setup script only installed requirements.txt dependencies but not the
local package itself, causing MCP servers to fail with ModuleNotFoundError.
Changes:
- Add `pip install -e .` for servers with pyproject.toml
- Add viz-platform and contract-validator to MCP server setup
- Add symlink verification for new plugins
- Update version banner to v5.0.0
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add /initial-setup command for contract-validator plugin
- Add contract-validator section to README.md (NEW in v5.0.0)
- Update data-platform version tag: *NEW* -> *NEW in v4.0.0*
- Update viz-platform version tag: *NEW* -> *NEW in v4.0.0*
- Add Contract Validator MCP Server section to README.md
- Add contract-validator to test commands table and repo structure
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update version to 5.0.0 in README.md, marketplace.json, CLAUDE.md
- Convert [Unreleased] to [5.0.0] in CHANGELOG.md
- Add contract-validator to CANONICAL-PATHS.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add 34 tests across 3 test modules:
- test_parse_tools.py: 11 tests for README/CLAUDE.md parsing
- test_validation_tools.py: 11 tests for compatibility and agent validation
- test_report_tools.py: 12 tests for report generation and filtering
Coverage: parse_tools 79%, validation_tools 96%, report_tools 89%
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add contract-validator to marketplace.json with proper metadata
- Update CLAUDE.md plugin table and commands list
- Validation passes with ./scripts/validate-marketplace.sh
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add 2 autonomous agents:
- full-validation: Complete cross-plugin compatibility validation
triggered by /validate-contracts command
- agent-check: Single agent definition validation triggered
by /check-agent command
Each agent documents capabilities, workflow, validation rules,
and example interactions.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>