Fixes multiple issues from diagnostic #123:
1. create_label_smart type safety (labels.py)
- Add isinstance(result, dict) checks after API calls
- Return structured error dict if API returns unexpected type
- Prevents "list indices must be integers" crash
2. debug-report always uses curl with labels
- Remove MCP option - always use curl for marketplace issues
- Add label ID fetching step (Source/Diagnostic, Type/Bug)
- Include labels in curl POST payload
- Avoids branch protection restrictions on main branch
Fixes#123
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ALL hooks now use command type (bash scripts) instead of prompt type.
Prompt hooks are unreliable - model ignores instructions.
Changes:
- projman: SessionStart → startup-check.sh with [projman] prefix
- pr-review: SessionStart → startup-check.sh with [pr-review] prefix
- project-hygiene: cleanup.sh now has [project-hygiene] prefix
- doc-guardian: already fixed (notify.sh with [doc-guardian] prefix)
- code-sentinel: already fixed (security-check.sh with [code-sentinel] prefix)
All hook output now guaranteed to have plugin name prefix.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add protected branch detection to /commit command (Step 1)
- Warn users before committing to protected branches
- Offer to create feature branch automatically
- Rewrite doc-guardian hook to be truly non-blocking
- Enforce strict [plugin-name] prefix in all hook outputs
- Add forbidden words list to prevent accidental blocking
Fixes#109, #110
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add [plugin-name] prefix to all hook messages for better identification
- Make doc-guardian hook notification-only (non-blocking)
- Add stale branch detection to /commit-sync with git fetch --prune
- Enhance /branch-cleanup to handle stale branches separately
Closes improvements for hook UX and git workflow
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The MCP server's branch-aware security blocks write operations on
protected branches (main, fix/*, etc). After pushing a feature branch
and creating a PR, we must switch back to development before adding
comments to issues via MCP tools.
When MCP tools are not available in a session (the very scenario
/debug-report is designed to diagnose), the command now falls back to:
1. Check for Gitea credentials at ~/.config/claude/gitea.env
2. Use curl + jq to create the issue via Gitea REST API
3. If no credentials, save report to local file for manual submission
Security measures:
- Uses mktemp -m 600 for restrictive file permissions
- Uses jq --rawfile for safe JSON construction (no command substitution)
- Proper cleanup of temporary files
Fixes#100
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove incorrect nested matcher/hooks structure from SessionStart hooks.
SessionStart events don't use matchers - that format is only for tool-based
hooks like PreToolUse/PostToolUse.
Fixes recurring "SessionStart:startup hook error" on Claude Code startup.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New commands for structured debugging workflow:
/debug-report (for test projects):
- Runs 5 diagnostic MCP tool tests
- Captures full project context (git remote, cwd, branch)
- Generates structured issue with hypothesis
- Creates issue in marketplace repo automatically
/debug-review (for marketplace repo):
- Lists open diagnostic issues for triage
- Maps errors to relevant code files
- MANDATORY: Reads files before proposing fixes
- Three human approval gates
- Creates feature branch, commits, PR with linking
Also includes:
- Dynamic label format detection in suggest_labels
- Rewritten labels-sync.md with explicit execution steps
- Version bump to 3.1.0
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
ROOT CAUSE: The MCP server runs with cwd set to the plugin directory,
not the user's project. It cannot auto-detect the repository.
SOLUTION: The command documentation now explicitly instructs Claude to:
1. Run `git remote get-url origin` via Bash first
2. Parse the URL to extract owner/repo
3. Pass repo parameter to ALL MCP tool calls
Also removed the "Label Reference" section that was causing Claude
to ask about creating a local reference file.
Key changes:
- Added "CRITICAL: Execution Steps" section with numbered steps
- Added "DO NOT" section to prevent common mistakes
- Removed confusing reference file documentation
- Made all MCP tool calls show required repo parameter
Fixes#77
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The command description still said "updates the local reference file"
which caused the agent to prompt about creating a reference file.
Updated to clarify: no local files are created or modified.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Updates labels-sync.md to:
- Remove [Y/n] prompts that suggested manual confirmation
- Clarify that execution is autonomous
- Document that labels are fetched dynamically (not from reference file)
- Update examples to show actual behavior
- Improve troubleshooting for common issues
- Add user-owned repo handling documentation
Related to #67
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add /project-init and /project-sync commands to projman
- Add setup commands (/initial-setup, /project-init, /project-sync) to pr-review
- Add /initial-setup to cmdb-assistant
- Replace manual MCP setup instructions with /initial-setup wizard
- Move GITEA_ORG from system-level to project-level in examples
- Add COMMANDS-CHEATSHEET.md and UPDATING.md to documentation table
- Fix GITEA_ORG validation in projman initial-setup (was checking system config)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Major improvements to plugin setup experience:
Setup Commands:
- Redesign /initial-setup as interactive wizard (MCP + system + project config)
- Add /project-init for quick project-only setup
- Add /project-sync for handling repository moves/renames
- Add Gitea API validation to auto-fill org/repo when verified
Configuration Changes:
- Move GITEA_ORG from system to project level (supports multi-org users)
- System config now only contains GITEA_URL and GITEA_TOKEN
- Project .env now contains GITEA_ORG and GITEA_REPO
Automation:
- Add SessionStart hook for projman and pr-review
- Automatically detects git remote vs .env mismatch
- Warns user to run /project-sync when mismatch found
Documentation:
- Unify configuration docs (remove duplicate in plugins/projman)
- Add flow diagrams to CONFIGURATION.md
- Add setup script review guidance to UPDATING.md
- Update COMMANDS-CHEATSHEET.md with new commands and hooks
Files added:
- plugins/projman/commands/project-init.md
- plugins/projman/commands/project-sync.md
- plugins/projman/hooks/hooks.json
- plugins/pr-review/commands/initial-setup.md
- plugins/pr-review/commands/project-init.md
- plugins/pr-review/commands/project-sync.md
- plugins/pr-review/hooks/hooks.json
- plugins/cmdb-assistant/commands/initial-setup.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Claude Code v2.0.44 doesn't support the agents field in plugin manifests.
Removed from: clarity-assist, pr-review, projman, claude-config-maintainer, cmdb-assistant
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update all references from old names to new marketplace identity:
- support-claude-mktplace → leo-claude-mktplace (URLs)
- lm-claude-plugins → leo-claude-mktplace (repo name)
- Claude Code Marketplace → Leo Claude Marketplace (display name)
Files updated:
- Core docs (CLAUDE.md, README.md, CHANGELOG.md)
- Documentation (CANONICAL-PATHS, CONFIGURATION, UPDATING, COMMANDS-CHEATSHEET)
- Marketplace manifest and all 9 plugin.json files
- Plugin READMEs and MCP server READMEs
- Setup script and label taxonomy reference
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds test generation command that complements existing /test-check:
- Auto-detects test framework (pytest, jest, vitest, go test, etc.)
- Generates unit, integration, e2e, or snapshot tests
- Creates happy path, edge case, and error tests
- Supports multiple languages (Python, JavaScript, Go, etc.)
- Integrates with /test-check for generate-then-verify workflow
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Version standardization:
- Move version to main README.md title: "Claude Code Marketplace - v2.2.0"
- Remove version from plugins/projman/README.md title
- Remove version from plugins/projman/CONFIGURATION.md title
- Remove version from plugin listings in README.md
- Remove "Key Features (v2.2.0)" -> "Key Features"
- Remove Version section from plugins/projman/README.md
- Remove version references from CLAUDE.md structure comments
Added versioning rule to CLAUDE.md:
- Version displayed ONLY in main README.md title
- Do NOT add versions to plugin docs or config guides
- Version history maintained in CHANGELOG.md only
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Version updates:
- marketplace.json metadata.version: 2.0.0 → 2.2.0
- marketplace.json projman version: 2.0.0 → 2.2.0
- plugins/projman/plugin.json version: 2.0.0 → 2.2.0
Documentation updates:
- CHANGELOG.md: Changed [Unreleased] to [2.2.0] - 2026-01-20
- README.md: Updated projman version to v2.2.0
- README.md: Added /review and /test-check to commands list
- README.md: Added code-reviewer to agent list
- README.md: Updated Key Features section to v2.2.0
- README.md: Added validate-marketplace.sh to structure
- plugins/projman/README.md: Updated title to v2.2.0
- plugins/projman/README.md: Updated version changelog
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add test-check.md command for pre-sprint-close test verification
- Automatic framework detection (pytest, jest, go test, cargo, etc.)
- Coverage reporting when available
- Sprint file analysis for untested changes
- Clear pass/fail summary with recommendations
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add author, homepage, repository to all plugin manifests
- Add license field where missing
- Add commands and agents directory references
- Update keywords for better discoverability
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add automatic detection of active marketplace plugins and verification
that CLAUDE.md properly references them. This ensures projects using
marketplace plugins will have proper documentation to guide Claude Code
in using available tools.
Changes:
- Add claude-md-integration.md snippets to all 4 plugins (projman,
cmdb-assistant, claude-config-maintainer, project-hygiene)
- Update marketplace.json with MCP server mappings for plugin detection
- Enhance /config-analyze to detect active plugins via MCP server names
- Update maintainer agent with plugin integration workflow
- Add plugin coverage percentage to analysis report
- User confirmation required before adding plugin references
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move repository from bandit to personal-projects organization
- Remove all "Bandit Labs" references
- Update author to Leo Miranda
- Rename marketplace from bandit-claude-marketplace to claude-code-marketplace
- Add MIT LICENSE file
- Remove outdated root .mcp.json (MCP servers now bundled in plugins)
- Update all repository URLs to new location
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove Roadmap section from README (no longer representative)
- Update all version references to 2.0.0
- marketplace.json: 2.0.0
- projman plugin: 2.0.0
- Update documentation version references
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove Wiki.js configuration (replaced by Gitea Wiki)
- Update MCP server paths (bundled in plugin)
- Update token permissions for wiki access
- Simplify setup steps
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update main README with new structure (MCP servers bundled in plugins)
- Remove Wiki.js references (replaced by Gitea Wiki)
- Add claude-config-maintainer plugin documentation
- Update projman README with new tools and features
- Update installation instructions for bundled MCP servers
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Claude Code only caches the plugin directory when installed from a
marketplace, not parent directories. This broke the shared mcp-servers/
architecture because relative paths like ../../mcp-servers/ resolved
to non-existent locations in the cache.
Changes:
- Move gitea and wikijs MCP servers into plugins/projman/mcp-servers/
- Move netbox MCP server into plugins/cmdb-assistant/mcp-servers/
- Update .mcp.json files to use ${CLAUDE_PLUGIN_ROOT}/mcp-servers/
- Update setup.sh to handle new bundled structure
- Add netbox.env config template to setup.sh
- Update CLAUDE.md and CANONICAL-PATHS.md documentation
This ensures plugins work correctly when installed and cached.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Major fixes for Claude Code plugin installation:
1. Moved marketplace.json to repo root (.claude-plugin/)
- Fixes known bug #11243, #11278 with local marketplace path resolution
- Claude Code uses marketplace.json file path as base, not directory
2. Simplified plugin.json manifests
- Removed commands/agents/skills directory declarations
- Claude Code auto-discovers these from standard directories
- Specifying directories caused "must end with .md" validation errors
3. Cleaned command frontmatter
- Removed non-standard fields (name, agent, arguments)
- Only description field is valid in command frontmatter
4. Removed deprecated claude-plugin-developer skill
- Skill was never properly integrated
- Removed from repo and all documentation references
All three plugins now validate successfully:
- projman: Sprint planning with Gitea/Wiki.js
- cmdb-assistant: NetBox CMDB integration
- project-hygiene: Post-task cleanup hooks
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Claude Code requires simple directory paths like "./commands/"
not object declarations with individual entries.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- projman/plugin.json: Added commands, agents, and skills declarations
- project-hygiene/plugin.json: Added hooks declaration for PostToolUse
- projman/.mcp.json: Changed hardcoded paths to ${CLAUDE_PLUGIN_ROOT}
- cmdb-assistant/.mcp.json: Changed hardcoded paths to ${CLAUDE_PLUGIN_ROOT}
Plugins were not being recognized because plugin.json files only had
metadata but no component declarations.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Created plugins/ directory to centralize all plugins
- Moved projman and project-hygiene into plugins/
- Updated .mcp.json paths from ../mcp-servers/ to ../../mcp-servers/
- Updated CLAUDE.md governance section with new directory structure
- Updated README.md with new repository structure diagram
- Fixed all path references in documentation
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>