24 Commits

Author SHA1 Message Date
368f9a4c2e Merge feat/marketplace-compliance-and-review into development
Release v2.2.0 - Marketplace Compliance Updates & Feature Additions

New Features:
- /review command for pre-sprint-close code quality checks
- /test-check command for test verification before sprint close
- code-reviewer agent for structured code review
- Validation script (scripts/validate-marketplace.sh)

Compliance Fixes:
- Updated marketplace.json with required fields (metadata, author, homepage, repository)
- Updated all plugin manifests with required fields
- Fixed installation documentation to use official Claude Code methods
- Prioritized public HTTPS URL over Tailscale SSH URL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 10:16:36 -05:00
cb0a5ddec5 chore: bump version to v2.2.0 and update documentation
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>
2026-01-20 10:09:01 -05:00
8da7117b89 docs: update projman readme with new commands
- Add /review command documentation
- Add /test-check command documentation
- Add Code Quality Commands section
- Add code-reviewer agent to Agents section
- Update architecture directory listing

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 10:00:37 -05:00
c322cf4b2f docs: update changelog with compliance and feature additions
- Document all compliance fixes (marketplace, plugins, README)
- Document new /review and /test-check commands
- Document code-reviewer agent addition
- Document validation script addition

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 09:59:43 -05:00
a6d3fe6c6c feat(projman): add /test-check command for test verification
- 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>
2026-01-20 09:59:16 -05:00
c62e0dbd2c feat(projman): add /review command for code quality checks
- Add review.md command for pre-sprint-close code quality review
- Add code-reviewer.md agent for structured review workflow
- Covers debug artifacts, code quality, security, error handling
- Integrates with projman sprint context when available
- Provides structured output with severity levels

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 09:58:35 -05:00
34c8f0bdb6 feat: add validation script for marketplace compliance
- Validates marketplace.json syntax and required fields
- Checks each plugin entry has required fields
- Validates individual plugin.json files
- Checks for recommended fields (author, homepage, repository)
- Returns non-zero exit code on errors

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 09:57:40 -05:00
72941c1fe1 docs: fix installation instructions for official methods
- Replace pluginMarketplace with extraKnownMarketplaces
- Add CLI command method (recommended)
- Add settings.json method for team distribution
- Add local development option
- Prioritize public HTTPS URL over Tailscale SSH URL
- Reorganize installation sections for clarity

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 09:56:41 -05:00
1adb434c58 fix: add required fields to plugin manifests
- 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>
2026-01-20 09:55:57 -05:00
76462d5d8c fix: update marketplace.json with required fields
- Add metadata wrapper for description and version
- Add author, homepage, and repository to all plugin entries
- Ensure owner.email field exists and is valid

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 09:55:13 -05:00
5b7c1f3fce Update plugins/projman/README.md 2026-01-20 13:55:26 +00:00
87b30cbb85 Update plugins/projman/README.md 2026-01-20 13:54:46 +00:00
67c057f9ee Merge pull request 'Update README.md' (#31) from development into main
Reviewed-on: personal-projects/support-claude-mktplace#31
2026-01-20 13:44:27 +00:00
c34fd22852 Update README.md 2026-01-20 13:42:39 +00:00
5fc18f28e9 Merge pull request 'feat: add plugin integration analysis to config-analyze command' (#30) from development into main
Reviewed-on: personal-projects/support-claude-mktplace#30
2026-01-19 23:27:15 +00:00
113839b0d8 feat: add plugin integration analysis to config-analyze command
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>
2026-01-19 18:24:29 -05:00
a12665c22d Merge pull request 'chore: rebrand for public release' (#28) from development into main
Reviewed-on: personal-projects/support-claude-mktplace#28
2026-01-19 22:54:29 +00:00
3c3b9329c5 Merge pull request 'development' (#27) from development into main
Reviewed-on: bandit/support-claude-mktplace#27
2026-01-19 22:23:28 +00:00
1e63de6679 Merge pull request 'refactor: bundle MCP servers inside plugins for cache compatibility' (#26) from development into main
Reviewed-on: bandit/support-claude-mktplace#26
2025-12-15 22:23:57 +00:00
6c77c264f6 Merge pull request 'fix: correct labels path in setup.sh' (#25) from development into main
Reviewed-on: bandit/support-claude-mktplace#25
2025-12-15 22:09:32 +00:00
b3a41f722c Merge pull request 'development' (#24) from development into main
Reviewed-on: bandit/support-claude-mktplace#24
2025-12-12 17:38:07 +00:00
97085021a9 Merge pull request 'fix: add missing plugin declarations and fix hardcoded paths' (#23) from development into main
Reviewed-on: bandit/support-claude-mktplace#23
2025-12-12 15:57:19 +00:00
eb2c184641 Merge pull request 'development' (#22) from development into main
Reviewed-on: bandit/support-claude-mktplace#22
2025-12-12 07:13:09 +00:00
5cfe858b12 Merge pull request 'Add path safeguards to prevent structural damage' (#21) from development into main
Reviewed-on: bandit/support-claude-mktplace#21
2025-12-12 05:15:04 +00:00
19 changed files with 1065 additions and 113 deletions

View File

@@ -1,35 +1,79 @@
{
"name": "claude-code-marketplace",
"version": "2.0.0",
"description": "Project management plugins with Gitea and NetBox integrations",
"owner": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"metadata": {
"description": "Project management plugins with Gitea and NetBox integrations",
"version": "2.2.0"
},
"plugins": [
{
"name": "projman",
"version": "2.0.0",
"version": "2.2.0",
"description": "Sprint planning and project management with Gitea integration",
"source": "./plugins/projman"
"source": "./plugins/projman",
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace/src/branch/main/plugins/projman/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git",
"mcpServers": ["gitea"],
"integrationFile": "claude-md-integration.md"
},
{
"name": "project-hygiene",
"version": "0.1.0",
"description": "Post-task cleanup hook that removes temp files and manages orphaned files",
"source": "./plugins/project-hygiene"
"source": "./plugins/project-hygiene",
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace/src/branch/main/plugins/project-hygiene/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git",
"mcpServers": [],
"integrationFile": "claude-md-integration.md",
"hooks": ["PostToolUse"]
},
{
"name": "cmdb-assistant",
"version": "1.0.0",
"description": "NetBox CMDB integration for infrastructure management",
"source": "./plugins/cmdb-assistant"
"source": "./plugins/cmdb-assistant",
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace/src/branch/main/plugins/cmdb-assistant/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git",
"mcpServers": ["netbox"],
"integrationFile": "claude-md-integration.md"
},
{
"name": "claude-config-maintainer",
"version": "1.0.0",
"description": "CLAUDE.md optimization and maintenance for Claude Code projects",
"source": "./plugins/claude-config-maintainer"
"source": "./plugins/claude-config-maintainer",
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace/src/branch/main/plugins/claude-config-maintainer/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git",
"mcpServers": [],
"integrationFile": "claude-md-integration.md"
}
]
],
"pluginDetection": {
"mcpServerMapping": {
"gitea": "projman",
"netbox": "cmdb-assistant"
},
"hookMapping": {
"PostToolUse:Write|Edit": "project-hygiene"
}
}
}

View File

@@ -4,7 +4,29 @@ All notable changes to support-claude-mktplace will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
## [2.2.0] - 2026-01-20
### Added
- `/review` command for pre-sprint-close code quality checks (projman)
- `/test-check` command for test verification before sprint close (projman)
- `code-reviewer` agent for structured code review workflow (projman)
- Validation script (`scripts/validate-marketplace.sh`) for marketplace compliance
- `homepage` and `repository` fields to all plugin entries in marketplace.json
- `metadata` wrapper for description/version in marketplace.json
- Keywords to all plugin manifests for better discoverability
- `commands` and `agents` directory references to plugin manifests
### Changed
- Updated marketplace.json with required fields per Claude Code spec
- Fixed installation documentation to use official Claude Code methods
- Prioritized public HTTPS URL over Tailscale SSH URL in documentation
- Updated all plugin manifests with author, homepage, repository, license fields
### Fixed
- Plugin manifests now include all required fields per Claude Code spec
- Installation section uses `extraKnownMarketplaces` instead of undocumented `pluginMarketplace`
## [2.1.0] - Previous Release
### Added
- `docs/CANONICAL-PATHS.md` - Single source of truth for all file paths

140
README.md
View File

@@ -4,19 +4,20 @@ A collection of Claude Code plugins for project management, infrastructure autom
## Plugins
### [projman](./plugins/projman/README.md) v2.0.0
### [projman](./plugins/projman/README.md) v2.2.0
**Sprint Planning and Project Management**
AI-guided sprint planning with full Gitea integration. Transforms a proven 15-sprint workflow into a distributable plugin.
- Three-agent model: Planner, Orchestrator, Executor
- Three-agent model: Planner, Orchestrator, Executor, Code Reviewer
- Intelligent label suggestions from 43-label taxonomy
- Lessons learned capture via Gitea Wiki
- Native issue dependencies with parallel execution
- Milestone management for sprint organization
- Branch-aware security (development/staging/production)
- Pre-sprint-close code quality review and test verification
**Commands:** `/sprint-plan`, `/sprint-start`, `/sprint-status`, `/sprint-close`, `/labels-sync`, `/initial-setup`
**Commands:** `/sprint-plan`, `/sprint-start`, `/sprint-status`, `/sprint-close`, `/labels-sync`, `/initial-setup`, `/review`, `/test-check`
### [claude-config-maintainer](./plugins/claude-config-maintainer/README.md)
**CLAUDE.md Optimization and Maintenance**
@@ -89,67 +90,92 @@ Comprehensive NetBox REST API integration for infrastructure management.
- Python 3.10+
- Access to target services (Gitea, NetBox as needed)
### Quick Start
### Add Marketplace to Claude Code
1. **Clone the repository:**
```bash
git clone ssh://git@hotserv.tailc9b278.ts.net:2222/personal-projects/support-claude-mktplace.git
cd support-claude-mktplace
```
**Option 1 - CLI command (recommended):**
```bash
/plugin marketplace add https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git
```
2. **Install MCP server dependencies:**
```bash
# Gitea MCP (for projman)
cd plugins/projman/mcp-servers/gitea
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
deactivate
**Option 2 - Settings file (for team distribution):**
# NetBox MCP (for cmdb-assistant)
cd ../../../cmdb-assistant/mcp-servers/netbox
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
deactivate
```
Add to `.claude/settings.json` in your target project:
```json
{
"extraKnownMarketplaces": {
"support-claude-mktplace": {
"source": {
"source": "git",
"url": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git"
}
}
}
}
```
3. **Configure system-level credentials:**
```bash
mkdir -p ~/.config/claude
**Option 3 - Local development:**
```bash
# Clone the repository first
git clone https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git
# Gitea credentials
cat > ~/.config/claude/gitea.env << 'EOF'
GITEA_URL=https://gitea.example.com
GITEA_TOKEN=your_token
GITEA_ORG=your_org
EOF
# Then add from local path
/plugin marketplace add /path/to/support-claude-mktplace
```
# NetBox credentials
cat > ~/.config/claude/netbox.env << 'EOF'
NETBOX_API_URL=https://netbox.example.com/api
NETBOX_API_TOKEN=your_token
EOF
**Alternative SSH URL (for authenticated access):**
```
ssh://git@hotserv.tailc9b278.ts.net:2222/personal-projects/support-claude-mktplace.git
```
chmod 600 ~/.config/claude/*.env
```
### Configure MCP Server Dependencies
4. **Configure project-level settings:**
```bash
# In your target project root
cat > .env << 'EOF'
GITEA_REPO=your-repository-name
EOF
```
If using plugins with MCP servers (projman, cmdb-assistant), install dependencies:
5. **Add marketplace to Claude Code:**
```bash
# Gitea MCP (for projman)
cd plugins/projman/mcp-servers/gitea
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
deactivate
Add to your project's `.claude/settings.json`:
```json
{
"pluginMarketplace": "/path/to/support-claude-mktplace"
}
```
# NetBox MCP (for cmdb-assistant)
cd ../../../cmdb-assistant/mcp-servers/netbox
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
deactivate
```
### Configure Credentials
**System-level credentials:**
```bash
mkdir -p ~/.config/claude
# Gitea credentials
cat > ~/.config/claude/gitea.env << 'EOF'
GITEA_URL=https://gitea.example.com
GITEA_TOKEN=your_token
GITEA_ORG=your_org
EOF
# NetBox credentials
cat > ~/.config/claude/netbox.env << 'EOF'
NETBOX_API_URL=https://netbox.example.com/api
NETBOX_API_TOKEN=your_token
EOF
chmod 600 ~/.config/claude/*.env
```
**Project-level settings:**
```bash
# In your target project root
cat > .env << 'EOF'
GITEA_REPO=your-repository-name
EOF
```
## Repository Structure
@@ -183,9 +209,10 @@ support-claude-mktplace/
│ ├── CANONICAL-PATHS.md # Single source of truth for paths
│ └── references/
└── scripts/ # Setup and maintenance scripts
└── validate-marketplace.sh # Marketplace compliance validation
```
## Key Features (v2.0.0)
## Key Features (v2.2.0)
### Parallel Execution
Tasks are batched by dependency graph for optimal parallel execution:
@@ -217,4 +244,5 @@ MIT License
## Support
- **Issues**: Contact repository maintainer
- **Repository**: `ssh://git@hotserv.tailc9b278.ts.net:2222/personal-projects/support-claude-mktplace.git`
- **Repository**: `https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git`
- **SSH URL**: `ssh://git@hotserv.tailc9b278.ts.net:2222/personal-projects/support-claude-mktplace.git`

View File

@@ -26,7 +26,8 @@ support-claude-mktplace/
│ │ │ └── gitea/ # Gitea + Wiki tools
│ │ ├── commands/
│ │ ├── agents/
│ │ ── skills/
│ │ ── skills/
│ │ └── claude-md-integration.md # CLAUDE.md integration snippet
│ ├── projman-pmo/
│ ├── project-hygiene/
│ ├── cmdb-assistant/
@@ -34,11 +35,17 @@ support-claude-mktplace/
│ │ ├── mcp-servers/ # MCP servers bundled IN plugin
│ │ │ └── netbox/
│ │ ├── commands/
│ │ ── agents/
│ └── claude-config-maintainer/
│ │ ── agents/
│ └── claude-md-integration.md # CLAUDE.md integration snippet
│ ├── claude-config-maintainer/
│ │ ├── .claude-plugin/
│ │ ├── commands/
│ │ ├── agents/
│ │ └── claude-md-integration.md # CLAUDE.md integration snippet
│ └── project-hygiene/
│ ├── .claude-plugin/
│ ├── commands/
│ └── agents/
│ ├── hooks/
│ └── claude-md-integration.md # CLAUDE.md integration snippet
├── scripts/ # Setup and maintenance scripts
├── CLAUDE.md
├── README.md
@@ -60,6 +67,7 @@ support-claude-mktplace/
| Plugin commands | `plugins/{plugin-name}/commands/` | `plugins/projman/commands/` |
| Plugin agents | `plugins/{plugin-name}/agents/` | `plugins/projman/agents/` |
| Plugin .mcp.json | `plugins/{plugin-name}/.mcp.json` | `plugins/projman/.mcp.json` |
| Plugin integration snippet | `plugins/{plugin-name}/claude-md-integration.md` | `plugins/projman/claude-md-integration.md` |
### MCP Server Paths (Bundled in Plugins)
@@ -149,5 +157,6 @@ MCP servers are bundled inside each plugin (not shared at root) because:
| Date | Change | By |
|------|--------|-----|
| 2026-01-19 | Added claude-md-integration.md path pattern for plugin integration snippets | Claude Code |
| 2025-12-15 | Restructured: MCP servers now bundled in plugins | Claude Code |
| 2025-12-12 | Initial creation | Claude Code |

View File

@@ -2,29 +2,21 @@
"name": "claude-config-maintainer",
"version": "1.0.0",
"description": "Maintains and optimizes CLAUDE.md configuration files for Claude Code projects",
"entryPoint": "agents/maintainer.md",
"commands": [
{
"name": "config-analyze",
"description": "Analyze CLAUDE.md for optimization opportunities",
"entryPoint": "commands/analyze.md"
},
{
"name": "config-optimize",
"description": "Optimize CLAUDE.md structure and content",
"entryPoint": "commands/optimize.md"
},
{
"name": "config-init",
"description": "Initialize a new CLAUDE.md file for a project",
"entryPoint": "commands/init.md"
}
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace/src/branch/main/plugins/claude-config-maintainer/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git",
"license": "MIT",
"keywords": [
"claude-code",
"configuration",
"optimization",
"claude-md",
"developer-tools"
],
"agents": [
{
"name": "maintainer",
"description": "CLAUDE.md optimization and maintenance agent",
"entryPoint": "agents/maintainer.md"
}
]
"entryPoint": "agents/maintainer.md",
"commands": ["./commands/"],
"agents": ["./agents/"]
}

View File

@@ -31,7 +31,11 @@ You are the **Maintainer Agent** - a specialist in creating and optimizing CLAUD
### 1. Analyze CLAUDE.md Files
When analyzing a CLAUDE.md file, evaluate:
When analyzing a CLAUDE.md file, perform two types of analysis:
#### A. Content Analysis
Evaluate:
**Structure:**
- Is the file well-organized?
@@ -57,6 +61,49 @@ When analyzing a CLAUDE.md file, evaluate:
- Are there verbose explanations that could be shortened?
- Is the file too long for effective use?
#### B. Plugin Integration Analysis
After content analysis, check for marketplace plugin integration:
**Step 1: Detect Active Plugins**
Read `.claude/settings.local.json` and identify enabled MCP servers:
```json
{
"mcpServers": {
"gitea": { ... }, // → projman plugin
"netbox": { ... } // → cmdb-assistant plugin
}
}
```
Use this mapping to identify active plugins:
| MCP Server | Plugin |
|------------|--------|
| `gitea` | projman |
| `netbox` | cmdb-assistant |
Also check for hook-based plugins (project-hygiene uses `PostToolUse` hooks).
**Step 2: Check CLAUDE.md for Plugin References**
For each detected plugin, search CLAUDE.md for:
- Plugin name mention (e.g., "projman", "cmdb-assistant")
- Command references (e.g., `/sprint-plan`, `/cmdb-search`)
- MCP tool mentions (e.g., `list_issues`, `dcim_list_devices`)
**Step 3: Load Integration Snippets**
For plugins not referenced in CLAUDE.md, load their integration snippet from:
`plugins/{plugin-name}/claude-md-integration.md`
**Step 4: Report and Offer Integration**
Report plugin coverage percentage and offer to add missing integrations:
- Show which plugins are detected but not referenced
- Display the integration content that would be added
- Ask user for confirmation before modifying CLAUDE.md
### 2. Optimize CLAUDE.md Structure
**Recommended Structure:**
@@ -145,7 +192,42 @@ Suggested Actions:
Would you like me to implement these improvements?
```
### 5. Create New CLAUDE.md Files
### 5. Insert Plugin Integrations
When adding plugin integration content to CLAUDE.md:
**Placement:**
- Add plugin sections after the main project documentation
- Group all plugin integrations together under a clear header
- Use consistent formatting across all plugin sections
**Process:**
1. Read the plugin's `claude-md-integration.md` file
2. Show the content to the user for review
3. Ask for confirmation: "Add this plugin integration? [Y/n]"
4. If confirmed, insert at appropriate location in CLAUDE.md
5. Repeat for each missing plugin
**User Confirmation Flow:**
```
Plugin Integration: projman
--------------------------
[Show content from plugins/projman/claude-md-integration.md]
Add this integration to CLAUDE.md?
[1] Yes, add this integration
[2] Skip this plugin
[3] Add all remaining plugins
[4] Cancel
```
**Best Practices:**
- Never modify CLAUDE.md without user confirmation
- Show exactly what will be added before making changes
- Allow users to skip specific plugins they don't want documented
- Preserve existing CLAUDE.md structure and content
### 6. Create New CLAUDE.md Files
When creating a new CLAUDE.md:

View File

@@ -0,0 +1,30 @@
## CLAUDE.md Maintenance (claude-config-maintainer)
This project uses the **claude-config-maintainer** plugin to analyze and optimize CLAUDE.md configuration files.
### Available Commands
| Command | Description |
|---------|-------------|
| `/config-analyze` | Analyze CLAUDE.md for optimization opportunities with 100-point scoring |
| `/config-optimize` | Automatically optimize CLAUDE.md structure and content |
| `/config-init` | Initialize a new CLAUDE.md file for a project |
### Scoring System
The analysis uses a 100-point scoring system across four categories:
| Category | Points | What It Measures |
|----------|--------|------------------|
| Structure | 25 | Organization, headers, navigation, grouping |
| Clarity | 25 | Instructions, examples, language, detail level |
| Completeness | 25 | Overview, quick start, critical rules, workflows |
| Conciseness | 25 | Efficiency, no repetition, appropriate length |
### Usage Guidelines
- Run `/config-analyze` periodically to assess CLAUDE.md quality
- Target a score of **70+/100** for effective Claude Code operation
- Address HIGH priority issues first when optimizing
- Use `/config-init` when setting up new projects to start with best practices
- Re-analyze after making changes to verify improvements

View File

@@ -1,10 +1,10 @@
---
description: Analyze CLAUDE.md for optimization opportunities
description: Analyze CLAUDE.md for optimization opportunities and plugin integration
---
# Analyze CLAUDE.md
This command analyzes your project's CLAUDE.md file and provides a detailed report on optimization opportunities.
This command analyzes your project's CLAUDE.md file and provides a detailed report on optimization opportunities and plugin integration status.
## What This Command Does
@@ -12,7 +12,9 @@ This command analyzes your project's CLAUDE.md file and provides a detailed repo
2. **Analyze Structure** - Evaluates organization, headers, and flow
3. **Check Content** - Reviews clarity, completeness, and conciseness
4. **Identify Issues** - Finds redundancy, verbosity, and missing sections
5. **Generate Report** - Provides scored assessment with recommendations
5. **Detect Active Plugins** - Identifies marketplace plugins enabled in the project
6. **Check Plugin Integration** - Verifies CLAUDE.md references active plugins
7. **Generate Report** - Provides scored assessment with recommendations
## Usage
@@ -52,6 +54,29 @@ Analyze the CLAUDE.md file in this project
- Appropriate length for project size
- No generic filler content
## Plugin Integration Analysis
After the content analysis, the command detects and analyzes marketplace plugin integration:
### Detection Method
1. **Read `.claude/settings.local.json`** - Check for enabled MCP servers
2. **Map MCP servers to plugins** - Use marketplace registry to identify active plugins:
- `gitea` → projman
- `netbox` → cmdb-assistant
3. **Check for hooks** - Identify hook-based plugins (project-hygiene)
4. **Scan CLAUDE.md** - Look for plugin integration content
### Plugin Coverage Scoring
For each detected plugin, verify CLAUDE.md contains:
- Plugin section header or mention
- Available commands documentation
- MCP tools reference (if applicable)
- Usage guidelines
Coverage is reported as percentage: `(plugins referenced / plugins detected) * 100`
## Expected Output
```
@@ -101,10 +126,37 @@ Recommendations:
Estimated improvement: 15-20 points after changes
---
Plugin Integration Analysis
===========================
Detected Active Plugins:
✓ projman (via gitea MCP server)
✓ cmdb-assistant (via netbox MCP server)
✓ project-hygiene (via PostToolUse hook)
Plugin Coverage: 33% (1/3 plugins referenced)
✓ projman - Referenced in CLAUDE.md
✗ cmdb-assistant - NOT referenced
✗ project-hygiene - NOT referenced
Missing Integration Content:
1. cmdb-assistant
Add infrastructure management commands and NetBox MCP tools reference.
2. project-hygiene
Add cleanup hook documentation and configuration options.
---
Would you like me to:
[1] Implement all recommended changes
[2] Show before/after for specific section
[3] Generate optimized version for review
[1] Implement all content recommendations
[2] Add missing plugin integrations to CLAUDE.md
[3] Do both (recommended)
[4] Show preview of changes first
```
## When to Use
@@ -115,6 +167,8 @@ Run `/config-analyze` when:
- Claude seems to miss instructions
- Before major project changes
- Periodic maintenance (quarterly)
- After installing new marketplace plugins
- When Claude doesn't seem to use available plugin tools
## Follow-Up Actions

View File

@@ -6,7 +6,8 @@
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace",
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace/src/branch/main/plugins/cmdb-assistant/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git",
"license": "MIT",
"keywords": [
"netbox",
@@ -15,5 +16,8 @@
"network",
"ipam",
"dcim"
]
],
"commands": ["./commands/"],
"agents": ["./agents/"],
"mcpServers": "./.mcp.json"
}

View File

@@ -0,0 +1,58 @@
## Infrastructure Management (cmdb-assistant)
This project uses the **cmdb-assistant** plugin for NetBox CMDB integration to manage network infrastructure.
### Available Commands
| Command | Description |
|---------|-------------|
| `/cmdb-search` | Search across all NetBox objects |
| `/cmdb-device` | Manage devices (create, update, list) |
| `/cmdb-ip` | Manage IP addresses and prefixes |
| `/cmdb-site` | Manage sites and locations |
### MCP Tools Available
The following NetBox MCP tools are available for infrastructure management:
**DCIM (Data Center Infrastructure Management):**
- `dcim_list_devices`, `dcim_get_device`, `dcim_create_device`, `dcim_update_device` - Device management
- `dcim_list_sites`, `dcim_get_site`, `dcim_create_site` - Site management
- `dcim_list_racks`, `dcim_get_rack`, `dcim_create_rack` - Rack management
- `dcim_list_interfaces`, `dcim_create_interface` - Interface management
- `dcim_list_cables`, `dcim_create_cable` - Cable management
- `dcim_list_device_types`, `dcim_list_device_roles`, `dcim_list_manufacturers` - Reference data
- `dcim_list_regions`, `dcim_list_locations` - Location hierarchy
**IPAM (IP Address Management):**
- `ipam_list_ip_addresses`, `ipam_create_ip_address`, `ipam_get_ip_address` - IP address management
- `ipam_list_prefixes`, `ipam_create_prefix`, `ipam_list_available_prefixes` - Prefix management
- `ipam_list_vlans`, `ipam_create_vlan` - VLAN management
- `ipam_list_vrfs`, `ipam_create_vrf` - VRF management
- `ipam_list_available_ips`, `ipam_create_available_ip` - IP allocation
**Virtualization:**
- `virtualization_list_virtual_machines`, `virtualization_create_virtual_machine` - VM management
- `virtualization_list_clusters`, `virtualization_create_cluster` - Cluster management
- `virtualization_list_vm_interfaces` - VM interface management
**Circuits:**
- `circuits_list_circuits`, `circuits_create_circuit` - Circuit management
- `circuits_list_providers`, `circuits_create_provider` - Provider management
**Tenancy:**
- `tenancy_list_tenants`, `tenancy_create_tenant` - Tenant management
- `tenancy_list_contacts`, `tenancy_create_contact` - Contact management
**Extras:**
- `extras_list_tags`, `extras_create_tag` - Tag management
- `extras_list_journal_entries`, `extras_create_journal_entry` - Audit journal
- `extras_list_object_changes` - Change tracking
### Usage Guidelines
- Use NetBox MCP tools for all infrastructure queries and modifications
- Always verify device/IP existence before creating duplicates
- Use tags for categorization and filtering
- Create journal entries for significant changes to maintain audit trail
- Check available IPs in a prefix before manual allocation

View File

@@ -6,9 +6,16 @@
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace/src/branch/main/plugins/project-hygiene/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git",
"license": "MIT",
"keywords": ["cleanup", "hygiene", "automation", "hooks", "maintenance"],
"repository": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace",
"keywords": [
"cleanup",
"hygiene",
"automation",
"hooks",
"maintenance"
],
"hooks": {
"PostToolUse": [
{

View File

@@ -0,0 +1,36 @@
## Project Cleanup (project-hygiene)
This project uses the **project-hygiene** plugin for automated post-task cleanup.
### How It Works
The plugin automatically runs after file Write or Edit operations to:
1. **Delete temporary files** - Removes `*.tmp`, `*.bak`, `__pycache__/`, `.pytest_cache/`, etc.
2. **Warn about unexpected root files** - Alerts when files are created outside expected locations
3. **Identify orphaned files** - Detects supporting files that may no longer be needed
### Configuration
The plugin can be configured via `.hygiene.json` in the project root:
```json
{
"temp_patterns": ["*.tmp", "*.bak", "*.swp"],
"ignore_dirs": ["node_modules", ".git", ".venv"],
"allowed_root_files": ["CLAUDE.md", "README.md", "LICENSE"],
"warn_on_root_files": true
}
```
### Hook Events
The plugin registers on the following events:
- `PostToolUse` (matcher: `Write|Edit`) - Runs cleanup after file modifications
### Usage Guidelines
- Let the hook run automatically - no manual intervention needed
- Review warnings about unexpected root files
- Configure `.hygiene.json` to customize cleanup behavior for your project
- Check cleanup output if files seem to disappear unexpectedly

View File

@@ -1,18 +1,21 @@
{
"name": "projman",
"version": "2.0.0",
"version": "2.2.0",
"description": "Sprint planning and project management with Gitea integration",
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace/src/branch/main/plugins/projman/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git",
"license": "MIT",
"repository": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace",
"keywords": [
"project-management",
"sprint-planning",
"gitea",
"agile",
"lessons-learned"
]
],
"commands": ["./commands/"],
"agents": ["./agents/"]
}

View File

@@ -1,4 +1,4 @@
# Projman v2.0.0 - Project Management for Claude Code
# Projman v2.2.0 - Project Management for Claude Code
Sprint planning and project management plugin with full Gitea integration.
@@ -174,6 +174,43 @@ Run initial setup for a new project.
**When to use:** First time setting up projman for a project
### `/review`
Pre-sprint-close code quality review.
**What it does:**
- Scans recent changes for debug artifacts (TODO, console.log, commented code)
- Checks for code complexity issues (long functions, deep nesting)
- Performs lightweight security scan (hardcoded secrets, SQL injection risks)
- Identifies error handling gaps (bare except, swallowed exceptions)
**Output format:**
- Critical Issues (Block Sprint Close)
- Warnings (Should Address)
- Recommendations (Nice to Have)
**When to use:** Before closing a sprint to ensure code quality
### `/test-check`
Test verification before sprint close.
**What it does:**
- Automatically detects test framework (pytest, Jest, Go test, Cargo, etc.)
- Runs the test suite
- Reports pass/fail summary with details on failures
- Includes coverage report when available
- Identifies sprint files lacking test coverage
**Flags:**
- "run tests with coverage" - Include coverage report
- "run tests verbose" - Show full output
- "just check, don't run" - Report framework detection only
**When to use:** Before closing a sprint to ensure tests pass
## Code Quality Commands
The `/review` and `/test-check` commands complement the Executor agent by catching issues before work is marked complete. Run both commands before `/sprint-close` for a complete quality check.
## Agents
### Planner Agent
@@ -203,6 +240,17 @@ Run initial setup for a new project.
**Invoked by:** `/sprint-start`, `/sprint-close`
### Code Reviewer Agent
**Personality:** Thorough, practical, severity-focused
**Responsibilities:**
- Identifying code quality issues before sprint close
- Prioritizing findings (Critical > Warning > Recommendation)
- Providing actionable feedback with file:line references
- Respecting sprint scope (only reviewing changed files)
**Invoked by:** `/review`
### Executor Agent
**Personality:** Implementation-focused, follows specs precisely
@@ -373,11 +421,14 @@ projman/
│ ├── sprint-status.md
│ ├── sprint-close.md
│ ├── labels-sync.md
── initial-setup.md
── initial-setup.md
│ ├── review.md
│ └── test-check.md
├── agents/ # Agent prompts
│ ├── planner.md
│ ├── orchestrator.md
── executor.md
── executor.md
│ └── code-reviewer.md
├── skills/ # Supporting knowledge
│ └── label-taxonomy/
│ └── labels-reference.md
@@ -430,9 +481,11 @@ MIT License - See repository root for details
## Version
**Current:** 2.0.0
**Current:** 2.2.0
**Changelog:**
- v2.2.0: Added `/review` and `/test-check` commands, code-reviewer agent, marketplace compliance updates
- v2.1.0: Documentation improvements, canonical paths, initial-setup command
- v2.0.0: Full Gitea integration with wiki, milestones, dependencies, parallel execution
- v1.0.0: Initial release with basic commands

View File

@@ -0,0 +1,90 @@
---
name: code-reviewer
description: Specialized agent for pre-sprint code quality review
---
# Code Reviewer Agent
You are a code quality reviewer focused on catching issues before sprint close.
## Your Role
- Identify issues that should be fixed before work is marked complete
- Prioritize findings by severity (Critical > Warning > Recommendation)
- Be concise—developers need actionable feedback, not lectures
- Respect sprint scope—don't expand review beyond changed files
## Review Philosophy
**Critical**: Security issues, broken functionality, data loss risks
- Hardcoded credentials or API keys
- SQL injection vulnerabilities
- Missing authentication/authorization checks
- Unhandled errors that could crash the application
**Warning**: Technical debt that will cause problems soon
- TODO/FIXME comments left unresolved
- Debug statements (console.log, print) in production code
- Functions over 50 lines (complexity smell)
- Deeply nested conditionals (>3 levels)
- Bare except/catch blocks
**Recommendation**: Improvements that can wait for a future sprint
- Missing docstrings on public functions
- Minor code duplication
- Commented-out code blocks
## What You Don't Do
- Bikeshed on style (assume formatters handle this)
- Suggest architectural rewrites mid-sprint
- Flag issues in unchanged code (unless directly impacted)
- Automatically fix code without explicit approval
## Integration with Projman
When sprint context is available, you can:
- Reference the sprint's issue list
- Create follow-up issues for non-critical findings via Gitea MCP
- Tag findings with appropriate labels from the 43-label taxonomy
## Review Patterns by Language
### Python
- Look for: bare `except:`, `print()` statements, `# TODO`, missing type hints on public APIs
- Security: `eval()`, `exec()`, SQL string formatting, `verify=False`
### JavaScript/TypeScript
- Look for: `console.log`, `// TODO`, `any` type abuse, missing error boundaries
- Security: `eval()`, `innerHTML`, unescaped user input
### Go
- Look for: `// TODO`, ignored errors (`_`), missing error returns
- Security: SQL concatenation, missing input validation
### Rust
- Look for: `// TODO`, `unwrap()` chains, `unsafe` blocks without justification
- Security: unchecked `unwrap()` on user input
## Output Template
```
## Code Review Summary
**Scope**: [X files from sprint/last N commits]
**Verdict**: [READY FOR CLOSE / NEEDS ATTENTION / BLOCKED]
### Critical (Must Fix)
- `src/auth.py:45` - Hardcoded API key in source code
### Warnings (Should Fix)
- `src/utils.js:123` - console.log left in production code
- `src/handler.py:67` - Bare except block swallows all errors
### Recommendations (Future Sprint)
- `src/api.ts:89` - Function exceeds 50 lines, consider splitting
### Clean Files
- src/models.py
- src/tests/test_auth.py
```

View File

@@ -0,0 +1,56 @@
## Sprint Management (projman)
This project uses the **projman** plugin for sprint planning and project management with Gitea integration.
### Available Commands
| Command | Description |
|---------|-------------|
| `/sprint-plan` | Start sprint planning with AI-guided architecture analysis |
| `/sprint-start` | Begin sprint execution with relevant lessons learned |
| `/sprint-status` | Check current sprint progress and identify blockers |
| `/sprint-close` | Complete sprint and capture lessons learned to Gitea Wiki |
| `/labels-sync` | Synchronize label taxonomy from Gitea |
| `/initial-setup` | Run initial setup for projman plugin |
### MCP Tools Available
The following Gitea MCP tools are available for issue and project management:
**Issue Management:**
- `list_issues` - Query issues with filters (state, labels)
- `get_issue` - Fetch single issue details
- `create_issue` - Create new issue with labels
- `update_issue` - Modify existing issue
- `add_comment` - Add comments to issues
**Labels:**
- `get_labels` - Fetch org + repo label taxonomy
- `suggest_labels` - Analyze context and suggest appropriate labels
- `create_label` - Create missing required labels
**Milestones:**
- `list_milestones` - List sprint milestones
- `get_milestone` - Get milestone details
- `create_milestone` - Create sprint milestone
- `update_milestone` - Update/close milestone
**Dependencies:**
- `list_issue_dependencies` - Get issue dependencies
- `create_issue_dependency` - Create dependency between issues
- `get_execution_order` - Get parallel execution batches
**Wiki (Lessons Learned):**
- `list_wiki_pages` - List wiki pages
- `get_wiki_page` - Fetch specific page content
- `create_wiki_page` - Create new wiki page
- `create_lesson` - Create lessons learned document
- `search_lessons` - Search past lessons by tags
### Usage Guidelines
- **Always use `/sprint-plan`** when starting new development work
- **Check `/sprint-status`** regularly during active sprints
- **Run `/sprint-close`** at the end of each sprint to capture lessons learned
- Use `suggest_labels` when creating issues to ensure proper categorization
- Search lessons learned with `search_lessons` before implementing features to avoid repeated mistakes

View File

@@ -0,0 +1,82 @@
---
name: review
description: Pre-sprint-close code quality review
---
# Code Review for Sprint Close
Review the recent code changes for quality issues before closing the sprint.
## Review Checklist
Analyze the changes and report on:
### 1. Debug Artifacts
- [ ] TODO/FIXME comments that should be resolved or converted to issues
- [ ] Console.log, print(), debug statements left in code
- [ ] Commented-out code blocks
### 2. Code Quality
- [ ] Functions exceeding 50 lines (complexity smell)
- [ ] Deeply nested conditionals (>3 levels)
- [ ] Duplicate code patterns
- [ ] Missing docstrings/comments on public functions
### 3. Security Scan (Lightweight)
- [ ] Hardcoded strings that look like secrets (API keys, passwords, tokens)
- [ ] SQL strings with concatenation (injection risk)
- [ ] Disabled SSL verification
- [ ] Overly permissive file permissions in code
### 4. Error Handling
- [ ] Bare except/catch blocks
- [ ] Swallowed exceptions (catch with pass/empty block)
- [ ] Missing null/undefined checks on external data
## Output Format
Provide a structured report:
```
## Sprint Review Summary
### Critical Issues (Block Sprint Close)
- [file:line] Description
### Warnings (Should Address)
- [file:line] Description
### Recommendations (Nice to Have)
- [file:line] Description
### Clean Files
- List of files with no issues found
```
## Scope
If sprint context is available from projman, limit review to files touched in current sprint.
Otherwise, review staged changes or changes in the last 5 commits.
## How to Determine Scope
1. **Check for sprint context**: Look for `.projman/current-sprint.json` or similar
2. **Fall back to git changes**: Use `git diff --name-only HEAD~5` or staged files
3. **Filter by file type**: Focus on code files (.py, .js, .ts, .go, .rs, etc.)
## Execution Steps
1. Determine scope (sprint files or recent commits)
2. For each file in scope:
- Read the file content
- Scan for patterns in each category
- Record findings with file:line references
3. Compile findings into the structured report
4. Provide recommendation: READY / NEEDS ATTENTION / BLOCK
## Do NOT
- Rewrite or refactor code automatically
- Make changes without explicit approval
- Review files outside the sprint/change scope
- Spend excessive time on style issues (assume formatters handle this)

View File

@@ -0,0 +1,163 @@
---
name: test-check
description: Run tests and verify coverage before sprint close
---
# Test Check for Sprint Close
Verify test status and coverage before closing the sprint.
## Framework Detection
Detect the test framework by checking for:
| Indicator | Framework | Command |
|-----------|-----------|---------|
| `pytest.ini`, `pyproject.toml` with pytest, `tests/` with `test_*.py` | pytest | `pytest` |
| `package.json` with jest | Jest | `npm test` or `npx jest` |
| `package.json` with mocha | Mocha | `npm test` or `npx mocha` |
| `package.json` with vitest | Vitest | `npm test` or `npx vitest` |
| `go.mod` with `*_test.go` files | Go test | `go test ./...` |
| `Cargo.toml` with `tests/` or `#[test]` | Cargo test | `cargo test` |
| `Makefile` with test target | Make | `make test` |
| `tox.ini` | tox | `tox` |
| `setup.py` with test command | setuptools | `python setup.py test` |
## Execution Steps
### 1. Detect Framework
1. Check for framework indicators in project root
2. If multiple found, list them and ask which to run
3. If none found, report "No test framework detected"
### 2. Run Tests
1. Execute the appropriate test command
2. Capture stdout/stderr
3. Parse results for pass/fail counts
4. Note: Some frameworks may require dependencies to be installed first
### 3. Coverage Check (if available)
Coverage tools by framework:
- **Python**: `pytest --cov` or `coverage run`
- **JavaScript**: Jest has built-in coverage (`--coverage`)
- **Go**: `go test -cover`
- **Rust**: `cargo tarpaulin` or `cargo llvm-cov`
If coverage is configured:
- Report overall coverage percentage
- List files with 0% coverage that were changed in sprint
### 4. Sprint File Analysis
If sprint context is available:
- Identify which sprint files have tests
- Flag sprint files with no corresponding test coverage
## Output Format
```
## Test Check Summary
### Test Results
- Framework: {detected framework}
- Status: {PASS/FAIL}
- Passed: {n} | Failed: {n} | Skipped: {n}
- Duration: {time}
### Failed Tests
- test_name: error message (file:line)
### Coverage (if available)
- Overall: {n}%
- Sprint files coverage:
- file.py: {n}%
- file.py: NO TESTS
### Recommendation
{READY FOR CLOSE / TESTS MUST PASS / COVERAGE GAPS TO ADDRESS}
```
## Behavior Flags
The command accepts optional flags via natural language:
| Request | Behavior |
|---------|----------|
| "run tests with coverage" | Include coverage report |
| "run tests verbose" | Show full output |
| "just check, don't run" | Report framework detection only |
| "run specific tests for X" | Run tests matching pattern |
## Framework-Specific Notes
### Python (pytest)
```bash
# Basic run
pytest
# With coverage
pytest --cov=src --cov-report=term-missing
# Verbose
pytest -v
# Specific tests
pytest tests/test_specific.py -k "test_function_name"
```
### JavaScript (Jest/Vitest)
```bash
# Basic run
npm test
# With coverage
npm test -- --coverage
# Specific tests
npm test -- --testPathPattern="specific"
```
### Go
```bash
# Basic run
go test ./...
# With coverage
go test -cover ./...
# Verbose
go test -v ./...
```
### Rust
```bash
# Basic run
cargo test
# Verbose
cargo test -- --nocapture
```
## Do NOT
- Modify test files
- Skip failing tests to make the run pass
- Run tests in production environments (check for .env indicators)
- Install dependencies without asking first
- Run tests that require external services without confirmation
## Error Handling
If tests fail:
1. Report the failure clearly
2. List failed test names and error summaries
3. Recommend: "TESTS MUST PASS before sprint close"
4. Offer to help debug specific failures
If framework not detected:
1. List what was checked
2. Ask user to specify the test command
3. Offer common suggestions based on file types found

139
scripts/validate-marketplace.sh Executable file
View File

@@ -0,0 +1,139 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
echo "=== Validating Marketplace ==="
# Check marketplace.json exists and is valid JSON
MARKETPLACE_JSON="$ROOT_DIR/.claude-plugin/marketplace.json"
if [[ ! -f "$MARKETPLACE_JSON" ]]; then
echo "ERROR: Missing $MARKETPLACE_JSON"
exit 1
fi
if ! jq empty "$MARKETPLACE_JSON" 2>/dev/null; then
echo "ERROR: Invalid JSON in marketplace.json"
exit 1
fi
echo "✓ marketplace.json is valid JSON"
# Check required fields
if ! jq -e '.name' "$MARKETPLACE_JSON" >/dev/null; then
echo "ERROR: Missing 'name' field in marketplace.json"
exit 1
fi
if ! jq -e '.owner.name' "$MARKETPLACE_JSON" >/dev/null; then
echo "ERROR: Missing 'owner.name' field in marketplace.json"
exit 1
fi
if ! jq -e '.owner.email' "$MARKETPLACE_JSON" >/dev/null; then
echo "ERROR: Missing 'owner.email' field in marketplace.json"
exit 1
fi
echo "✓ Required marketplace fields present"
# Check plugins array exists
if ! jq -e '.plugins | type == "array"' "$MARKETPLACE_JSON" >/dev/null; then
echo "ERROR: Missing or invalid 'plugins' array in marketplace.json"
exit 1
fi
# Check each plugin entry in marketplace.json
PLUGIN_COUNT=$(jq '.plugins | length' "$MARKETPLACE_JSON")
echo "Found $PLUGIN_COUNT plugins in marketplace.json"
for i in $(seq 0 $((PLUGIN_COUNT - 1))); do
PLUGIN_NAME=$(jq -r ".plugins[$i].name" "$MARKETPLACE_JSON")
echo "--- Checking marketplace entry: $PLUGIN_NAME ---"
# Check required fields in marketplace entry
for field in name source description version; do
if ! jq -e ".plugins[$i].$field" "$MARKETPLACE_JSON" >/dev/null; then
echo "ERROR: Missing '$field' in marketplace entry for $PLUGIN_NAME"
exit 1
fi
done
# Check author field
if ! jq -e ".plugins[$i].author.name" "$MARKETPLACE_JSON" >/dev/null; then
echo "ERROR: Missing 'author.name' in marketplace entry for $PLUGIN_NAME"
exit 1
fi
# Check homepage and repository
if ! jq -e ".plugins[$i].homepage" "$MARKETPLACE_JSON" >/dev/null; then
echo "WARNING: Missing 'homepage' in marketplace entry for $PLUGIN_NAME"
fi
if ! jq -e ".plugins[$i].repository" "$MARKETPLACE_JSON" >/dev/null; then
echo "WARNING: Missing 'repository' in marketplace entry for $PLUGIN_NAME"
fi
echo "✓ Marketplace entry $PLUGIN_NAME valid"
done
# Validate each plugin directory
PLUGINS_DIR="$ROOT_DIR/plugins"
echo ""
echo "=== Validating Plugin Directories ==="
for plugin_dir in "$PLUGINS_DIR"/*/; do
plugin_name=$(basename "$plugin_dir")
echo "--- Checking plugin directory: $plugin_name ---"
# Check plugin.json exists
plugin_json="$plugin_dir.claude-plugin/plugin.json"
if [[ ! -f "$plugin_json" ]]; then
echo "WARNING: Missing plugin.json in $plugin_name/.claude-plugin/"
continue
fi
# Validate JSON syntax
if ! jq empty "$plugin_json" 2>/dev/null; then
echo "ERROR: Invalid JSON in $plugin_name/plugin.json"
exit 1
fi
# Check required plugin fields
for field in name description version; do
if ! jq -e ".$field" "$plugin_json" >/dev/null; then
echo "ERROR: Missing '$field' in $plugin_name/plugin.json"
exit 1
fi
done
# Check recommended fields
if ! jq -e '.author.name' "$plugin_json" >/dev/null; then
echo "WARNING: Missing 'author.name' in $plugin_name/plugin.json"
fi
if ! jq -e '.homepage' "$plugin_json" >/dev/null; then
echo "WARNING: Missing 'homepage' in $plugin_name/plugin.json"
fi
if ! jq -e '.repository' "$plugin_json" >/dev/null; then
echo "WARNING: Missing 'repository' in $plugin_name/plugin.json"
fi
if ! jq -e '.license' "$plugin_json" >/dev/null; then
echo "WARNING: Missing 'license' in $plugin_name/plugin.json"
fi
if ! jq -e '.keywords | type == "array"' "$plugin_json" >/dev/null; then
echo "WARNING: Missing 'keywords' array in $plugin_name/plugin.json"
fi
# Check README exists
if [[ ! -f "$plugin_dir/README.md" ]]; then
echo "WARNING: Missing README.md in $plugin_name/"
fi
echo "$plugin_name valid"
done
echo ""
echo "=== All validations passed ==="