Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 368f9a4c2e | |||
| cb0a5ddec5 | |||
| 8da7117b89 | |||
| c322cf4b2f | |||
| a6d3fe6c6c | |||
| c62e0dbd2c | |||
| 34c8f0bdb6 | |||
| 72941c1fe1 | |||
| 1adb434c58 | |||
| 76462d5d8c | |||
| 5b7c1f3fce | |||
| 87b30cbb85 | |||
| 67c057f9ee | |||
| c34fd22852 | |||
| 5fc18f28e9 | |||
| 113839b0d8 | |||
| a12665c22d | |||
| 15e0654950 | |||
| 3c3b9329c5 | |||
| 1e63de6679 | |||
| 6c77c264f6 | |||
| b3a41f722c | |||
| 97085021a9 | |||
| eb2c184641 | |||
| 5cfe858b12 |
@@ -1,35 +1,79 @@
|
|||||||
{
|
{
|
||||||
"name": "bandit-claude-marketplace",
|
"name": "claude-code-marketplace",
|
||||||
"version": "2.0.0",
|
|
||||||
"description": "Project management plugins with Gitea and NetBox integrations",
|
|
||||||
"owner": {
|
"owner": {
|
||||||
"name": "Bandit Labs",
|
"name": "Leo Miranda",
|
||||||
"email": "dev@banditlabs.io"
|
"email": "leobmiranda@gmail.com"
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"description": "Project management plugins with Gitea and NetBox integrations",
|
||||||
|
"version": "2.2.0"
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
"name": "projman",
|
"name": "projman",
|
||||||
"version": "2.0.0",
|
"version": "2.2.0",
|
||||||
"description": "Sprint planning and project management with Gitea integration",
|
"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",
|
"name": "project-hygiene",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"description": "Post-task cleanup hook that removes temp files and manages orphaned files",
|
"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",
|
"name": "cmdb-assistant",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "NetBox CMDB integration for infrastructure management",
|
"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",
|
"name": "claude-config-maintainer",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "CLAUDE.md optimization and maintenance for Claude Code projects",
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
28
.mcp.json
28
.mcp.json
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
"mcpServers": {
|
|
||||||
"gitea": {
|
|
||||||
"command": "/home/lmiranda/repos/bandit/support-claude-mktplace/mcp-servers/gitea/.venv/bin/python",
|
|
||||||
"args": ["-m", "mcp_server.server"],
|
|
||||||
"cwd": "/home/lmiranda/repos/bandit/support-claude-mktplace/mcp-servers/gitea",
|
|
||||||
"env": {
|
|
||||||
"PYTHONPATH": "/home/lmiranda/repos/bandit/support-claude-mktplace/mcp-servers/gitea"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"wikijs": {
|
|
||||||
"command": "/home/lmiranda/repos/bandit/support-claude-mktplace/mcp-servers/wikijs/.venv/bin/python",
|
|
||||||
"args": ["-m", "mcp_server.server"],
|
|
||||||
"cwd": "/home/lmiranda/repos/bandit/support-claude-mktplace/mcp-servers/wikijs",
|
|
||||||
"env": {
|
|
||||||
"PYTHONPATH": "/home/lmiranda/repos/bandit/support-claude-mktplace/mcp-servers/wikijs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"netbox": {
|
|
||||||
"command": "/home/lmiranda/repos/bandit/support-claude-mktplace/mcp-servers/netbox/.venv/bin/python",
|
|
||||||
"args": ["-m", "mcp_server.server"],
|
|
||||||
"cwd": "/home/lmiranda/repos/bandit/support-claude-mktplace/mcp-servers/netbox",
|
|
||||||
"env": {
|
|
||||||
"PYTHONPATH": "/home/lmiranda/repos/bandit/support-claude-mktplace/mcp-servers/netbox"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
24
CHANGELOG.md
24
CHANGELOG.md
@@ -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/).
|
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
|
### Added
|
||||||
- `docs/CANONICAL-PATHS.md` - Single source of truth for all file paths
|
- `docs/CANONICAL-PATHS.md` - Single source of truth for all file paths
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ See [docs/reference-material/projman-implementation-plan.md](docs/reference-mate
|
|||||||
⚠️ **See `docs/CANONICAL-PATHS.md` for the authoritative path reference - THIS IS THE SINGLE SOURCE OF TRUTH**
|
⚠️ **See `docs/CANONICAL-PATHS.md` for the authoritative path reference - THIS IS THE SINGLE SOURCE OF TRUTH**
|
||||||
|
|
||||||
```
|
```
|
||||||
bandit/support-claude-mktplace/
|
personal-projects/support-claude-mktplace/
|
||||||
├── .claude-plugin/
|
├── .claude-plugin/
|
||||||
│ └── marketplace.json
|
│ └── marketplace.json
|
||||||
├── plugins/ # ← ALL PLUGINS (with bundled MCP servers)
|
├── plugins/ # ← ALL PLUGINS (with bundled MCP servers)
|
||||||
|
|||||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 Leo Miranda
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
144
README.md
144
README.md
@@ -1,22 +1,23 @@
|
|||||||
# Claude Code Marketplace - Bandit Labs
|
# Claude Code Marketplace
|
||||||
|
|
||||||
A collection of Claude Code plugins for project management, infrastructure automation, and development workflows.
|
A collection of Claude Code plugins for project management, infrastructure automation, and development workflows.
|
||||||
|
|
||||||
## Plugins
|
## Plugins
|
||||||
|
|
||||||
### [projman](./plugins/projman/README.md) v2.0.0
|
### [projman](./plugins/projman/README.md) v2.2.0
|
||||||
**Sprint Planning and Project Management**
|
**Sprint Planning and Project Management**
|
||||||
|
|
||||||
AI-guided sprint planning with full Gitea integration. Transforms a proven 15-sprint workflow into a distributable plugin.
|
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
|
- Intelligent label suggestions from 43-label taxonomy
|
||||||
- Lessons learned capture via Gitea Wiki
|
- Lessons learned capture via Gitea Wiki
|
||||||
- Native issue dependencies with parallel execution
|
- Native issue dependencies with parallel execution
|
||||||
- Milestone management for sprint organization
|
- Milestone management for sprint organization
|
||||||
- Branch-aware security (development/staging/production)
|
- 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-config-maintainer](./plugins/claude-config-maintainer/README.md)
|
||||||
**CLAUDE.md Optimization and Maintenance**
|
**CLAUDE.md Optimization and Maintenance**
|
||||||
@@ -89,67 +90,92 @@ Comprehensive NetBox REST API integration for infrastructure management.
|
|||||||
- Python 3.10+
|
- Python 3.10+
|
||||||
- Access to target services (Gitea, NetBox as needed)
|
- Access to target services (Gitea, NetBox as needed)
|
||||||
|
|
||||||
### Quick Start
|
### Add Marketplace to Claude Code
|
||||||
|
|
||||||
1. **Clone the repository:**
|
**Option 1 - CLI command (recommended):**
|
||||||
```bash
|
```bash
|
||||||
git clone ssh://git@hotserv.tailc9b278.ts.net:2222/bandit/support-claude-mktplace.git
|
/plugin marketplace add https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git
|
||||||
cd support-claude-mktplace
|
```
|
||||||
```
|
|
||||||
|
|
||||||
2. **Install MCP server dependencies:**
|
**Option 2 - Settings file (for team distribution):**
|
||||||
```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
|
|
||||||
|
|
||||||
# NetBox MCP (for cmdb-assistant)
|
Add to `.claude/settings.json` in your target project:
|
||||||
cd ../../../cmdb-assistant/mcp-servers/netbox
|
```json
|
||||||
python3 -m venv .venv
|
{
|
||||||
source .venv/bin/activate
|
"extraKnownMarketplaces": {
|
||||||
pip install -r requirements.txt
|
"support-claude-mktplace": {
|
||||||
deactivate
|
"source": {
|
||||||
```
|
"source": "git",
|
||||||
|
"url": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
3. **Configure system-level credentials:**
|
**Option 3 - Local development:**
|
||||||
```bash
|
```bash
|
||||||
mkdir -p ~/.config/claude
|
# Clone the repository first
|
||||||
|
git clone https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git
|
||||||
|
|
||||||
# Gitea credentials
|
# Then add from local path
|
||||||
cat > ~/.config/claude/gitea.env << 'EOF'
|
/plugin marketplace add /path/to/support-claude-mktplace
|
||||||
GITEA_URL=https://gitea.example.com
|
```
|
||||||
GITEA_TOKEN=your_token
|
|
||||||
GITEA_ORG=your_org
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# NetBox credentials
|
**Alternative SSH URL (for authenticated access):**
|
||||||
cat > ~/.config/claude/netbox.env << 'EOF'
|
```
|
||||||
NETBOX_API_URL=https://netbox.example.com/api
|
ssh://git@hotserv.tailc9b278.ts.net:2222/personal-projects/support-claude-mktplace.git
|
||||||
NETBOX_API_TOKEN=your_token
|
```
|
||||||
EOF
|
|
||||||
|
|
||||||
chmod 600 ~/.config/claude/*.env
|
### Configure MCP Server Dependencies
|
||||||
```
|
|
||||||
|
|
||||||
4. **Configure project-level settings:**
|
If using plugins with MCP servers (projman, cmdb-assistant), install dependencies:
|
||||||
```bash
|
|
||||||
# In your target project root
|
|
||||||
cat > .env << 'EOF'
|
|
||||||
GITEA_REPO=your-repository-name
|
|
||||||
EOF
|
|
||||||
```
|
|
||||||
|
|
||||||
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`:
|
# NetBox MCP (for cmdb-assistant)
|
||||||
```json
|
cd ../../../cmdb-assistant/mcp-servers/netbox
|
||||||
{
|
python3 -m venv .venv
|
||||||
"pluginMarketplace": "/path/to/support-claude-mktplace"
|
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
|
## Repository Structure
|
||||||
|
|
||||||
@@ -183,9 +209,10 @@ support-claude-mktplace/
|
|||||||
│ ├── CANONICAL-PATHS.md # Single source of truth for paths
|
│ ├── CANONICAL-PATHS.md # Single source of truth for paths
|
||||||
│ └── references/
|
│ └── references/
|
||||||
└── scripts/ # Setup and maintenance scripts
|
└── scripts/ # Setup and maintenance scripts
|
||||||
|
└── validate-marketplace.sh # Marketplace compliance validation
|
||||||
```
|
```
|
||||||
|
|
||||||
## Key Features (v2.0.0)
|
## Key Features (v2.2.0)
|
||||||
|
|
||||||
### Parallel Execution
|
### Parallel Execution
|
||||||
Tasks are batched by dependency graph for optimal parallel execution:
|
Tasks are batched by dependency graph for optimal parallel execution:
|
||||||
@@ -212,9 +239,10 @@ All agents use MCP tools exclusively. CLI tools like `tea` or `gh` are forbidden
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
MIT License - Bandit Labs
|
MIT License
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
- **Issues**: Contact repository maintainer
|
- **Issues**: Contact repository maintainer
|
||||||
- **Repository**: `ssh://git@hotserv.tailc9b278.ts.net:2222/bandit/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`
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ Last Updated: 2025-12-15
|
|||||||
```
|
```
|
||||||
support-claude-mktplace/
|
support-claude-mktplace/
|
||||||
├── .claude/ # Claude Code local settings
|
├── .claude/ # Claude Code local settings
|
||||||
├── .claude-plugin/ # Marketplace manifest (bandit-claude-marketplace)
|
├── .claude-plugin/ # Marketplace manifest (claude-code-marketplace)
|
||||||
│ └── marketplace.json
|
│ └── marketplace.json
|
||||||
├── .scratch/ # Transient work (auto-cleaned)
|
├── .scratch/ # Transient work (auto-cleaned)
|
||||||
├── docs/ # All documentation
|
├── docs/ # All documentation
|
||||||
@@ -26,7 +26,8 @@ support-claude-mktplace/
|
|||||||
│ │ │ └── gitea/ # Gitea + Wiki tools
|
│ │ │ └── gitea/ # Gitea + Wiki tools
|
||||||
│ │ ├── commands/
|
│ │ ├── commands/
|
||||||
│ │ ├── agents/
|
│ │ ├── agents/
|
||||||
│ │ └── skills/
|
│ │ ├── skills/
|
||||||
|
│ │ └── claude-md-integration.md # CLAUDE.md integration snippet
|
||||||
│ ├── projman-pmo/
|
│ ├── projman-pmo/
|
||||||
│ ├── project-hygiene/
|
│ ├── project-hygiene/
|
||||||
│ ├── cmdb-assistant/
|
│ ├── cmdb-assistant/
|
||||||
@@ -34,11 +35,17 @@ support-claude-mktplace/
|
|||||||
│ │ ├── mcp-servers/ # MCP servers bundled IN plugin
|
│ │ ├── mcp-servers/ # MCP servers bundled IN plugin
|
||||||
│ │ │ └── netbox/
|
│ │ │ └── netbox/
|
||||||
│ │ ├── commands/
|
│ │ ├── commands/
|
||||||
│ │ └── agents/
|
│ │ ├── agents/
|
||||||
│ └── claude-config-maintainer/
|
│ │ └── 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/
|
│ ├── .claude-plugin/
|
||||||
│ ├── commands/
|
│ ├── hooks/
|
||||||
│ └── agents/
|
│ └── claude-md-integration.md # CLAUDE.md integration snippet
|
||||||
├── scripts/ # Setup and maintenance scripts
|
├── scripts/ # Setup and maintenance scripts
|
||||||
├── CLAUDE.md
|
├── CLAUDE.md
|
||||||
├── README.md
|
├── README.md
|
||||||
@@ -60,6 +67,7 @@ support-claude-mktplace/
|
|||||||
| Plugin commands | `plugins/{plugin-name}/commands/` | `plugins/projman/commands/` |
|
| Plugin commands | `plugins/{plugin-name}/commands/` | `plugins/projman/commands/` |
|
||||||
| Plugin agents | `plugins/{plugin-name}/agents/` | `plugins/projman/agents/` |
|
| Plugin agents | `plugins/{plugin-name}/agents/` | `plugins/projman/agents/` |
|
||||||
| Plugin .mcp.json | `plugins/{plugin-name}/.mcp.json` | `plugins/projman/.mcp.json` |
|
| 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)
|
### 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 |
|
| 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-15 | Restructured: MCP servers now bundled in plugins | Claude Code |
|
||||||
| 2025-12-12 | Initial creation | Claude Code |
|
| 2025-12-12 | Initial creation | Claude Code |
|
||||||
|
|||||||
@@ -48,11 +48,11 @@ projman-pmo/
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"displayName": "Projman PMO - Multi-Project Coordination",
|
"displayName": "Projman PMO - Multi-Project Coordination",
|
||||||
"description": "PMO coordination with cross-project visibility, dependency tracking, and resource management",
|
"description": "PMO coordination with cross-project visibility, dependency tracking, and resource management",
|
||||||
"author": "Bandit Labs",
|
"author": "Leo Miranda",
|
||||||
"homepage": "ssh://git@hotserv.tailc9b278.ts.net:2222/bandit/support-claude-mktplace",
|
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://git@hotserv.tailc9b278.ts.net:2222/bandit/support-claude-mktplace.git"
|
"url": "ssh://git@hotserv.tailc9b278.ts.net:2222/personal-projects/support-claude-mktplace.git"
|
||||||
},
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@@ -223,7 +223,7 @@ projman-pmo/
|
|||||||
### Agent Personality
|
### Agent Personality
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
You are the PMO Coordinator for Bandit Labs.
|
You are the PMO Coordinator for this organization.
|
||||||
|
|
||||||
Your role:
|
Your role:
|
||||||
- Maintain strategic view across all projects
|
- Maintain strategic view across all projects
|
||||||
|
|||||||
@@ -54,11 +54,11 @@ projman/
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"displayName": "Projman - Single-Repository Project Management",
|
"displayName": "Projman - Single-Repository Project Management",
|
||||||
"description": "Sprint planning and project management with Gitea and Wiki.js integration",
|
"description": "Sprint planning and project management with Gitea and Wiki.js integration",
|
||||||
"author": "Bandit Labs",
|
"author": "Leo Miranda",
|
||||||
"homepage": "https://gitea.example.com/bandit/support-claude-mktplace/projman",
|
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://gitea.example.com/bandit/support-claude-mktplace.git"
|
"url": "ssh://git@hotserv.tailc9b278.ts.net:2222/personal-projects/support-claude-mktplace.git"
|
||||||
},
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@@ -269,7 +269,7 @@ Agents are also **markdown files** with specialized prompts. They can be invoked
|
|||||||
```markdown
|
```markdown
|
||||||
# Sprint Planner Agent
|
# Sprint Planner Agent
|
||||||
|
|
||||||
You are the Sprint Planner for Bandit Labs.
|
You are the Sprint Planner for this project.
|
||||||
|
|
||||||
## Your Identity
|
## Your Identity
|
||||||
|
|
||||||
@@ -551,7 +551,7 @@ The projman plugin implements a three-agent architecture mirroring the proven wo
|
|||||||
**Example Prompt:**
|
**Example Prompt:**
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
You are the Sprint Planner for Bandit Labs.
|
You are the Sprint Planner for this project.
|
||||||
|
|
||||||
Your role:
|
Your role:
|
||||||
- Guide users through sprint planning
|
- Guide users through sprint planning
|
||||||
@@ -609,7 +609,7 @@ Sprint Planning Flow:
|
|||||||
**Example Prompt:**
|
**Example Prompt:**
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
You are the Sprint Orchestrator for Bandit Labs.
|
You are the Sprint Orchestrator for this project.
|
||||||
|
|
||||||
Your role:
|
Your role:
|
||||||
- Monitor sprint progress
|
- Monitor sprint progress
|
||||||
@@ -668,7 +668,7 @@ Status Monitoring:
|
|||||||
**Example Prompt:**
|
**Example Prompt:**
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
You are the Sprint Executor for Bandit Labs.
|
You are the Sprint Executor for this project.
|
||||||
|
|
||||||
Your role:
|
Your role:
|
||||||
- Provide implementation guidance
|
- Provide implementation guidance
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ The MCP servers detect their operating mode based on environment variables:
|
|||||||
## Repository Structure
|
## Repository Structure
|
||||||
|
|
||||||
```
|
```
|
||||||
bandit/support-claude-mktplace/
|
personal-projects/support-claude-mktplace/
|
||||||
├── mcp-servers/ # ← SHARED BY BOTH PLUGINS
|
├── mcp-servers/ # ← SHARED BY BOTH PLUGINS
|
||||||
│ ├── gitea/ # Gitea MCP Server
|
│ ├── gitea/ # Gitea MCP Server
|
||||||
│ │ ├── .venv/
|
│ │ ├── .venv/
|
||||||
|
|||||||
@@ -2,29 +2,21 @@
|
|||||||
"name": "claude-config-maintainer",
|
"name": "claude-config-maintainer",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "Maintains and optimizes CLAUDE.md configuration files for Claude Code projects",
|
"description": "Maintains and optimizes CLAUDE.md configuration files for Claude Code projects",
|
||||||
"entryPoint": "agents/maintainer.md",
|
"author": {
|
||||||
"commands": [
|
"name": "Leo Miranda",
|
||||||
{
|
"email": "leobmiranda@gmail.com"
|
||||||
"name": "config-analyze",
|
},
|
||||||
"description": "Analyze CLAUDE.md for optimization opportunities",
|
"homepage": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace/src/branch/main/plugins/claude-config-maintainer/README.md",
|
||||||
"entryPoint": "commands/analyze.md"
|
"repository": "https://gitea.hotserv.cloud/personal-projects/support-claude-mktplace.git",
|
||||||
},
|
"license": "MIT",
|
||||||
{
|
"keywords": [
|
||||||
"name": "config-optimize",
|
"claude-code",
|
||||||
"description": "Optimize CLAUDE.md structure and content",
|
"configuration",
|
||||||
"entryPoint": "commands/optimize.md"
|
"optimization",
|
||||||
},
|
"claude-md",
|
||||||
{
|
"developer-tools"
|
||||||
"name": "config-init",
|
|
||||||
"description": "Initialize a new CLAUDE.md file for a project",
|
|
||||||
"entryPoint": "commands/init.md"
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"agents": [
|
"entryPoint": "agents/maintainer.md",
|
||||||
{
|
"commands": ["./commands/"],
|
||||||
"name": "maintainer",
|
"agents": ["./agents/"]
|
||||||
"description": "CLAUDE.md optimization and maintenance agent",
|
|
||||||
"entryPoint": "agents/maintainer.md"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,4 +96,4 @@ Target score: **70+** for effective Claude Code usage.
|
|||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
This plugin is part of the bandit/support-claude-mktplace repository.
|
This plugin is part of the personal-projects/support-claude-mktplace repository.
|
||||||
|
|||||||
@@ -31,7 +31,11 @@ You are the **Maintainer Agent** - a specialist in creating and optimizing CLAUD
|
|||||||
|
|
||||||
### 1. Analyze CLAUDE.md Files
|
### 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:**
|
**Structure:**
|
||||||
- Is the file well-organized?
|
- Is the file well-organized?
|
||||||
@@ -57,6 +61,49 @@ When analyzing a CLAUDE.md file, evaluate:
|
|||||||
- Are there verbose explanations that could be shortened?
|
- Are there verbose explanations that could be shortened?
|
||||||
- Is the file too long for effective use?
|
- 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
|
### 2. Optimize CLAUDE.md Structure
|
||||||
|
|
||||||
**Recommended Structure:**
|
**Recommended Structure:**
|
||||||
@@ -145,7 +192,42 @@ Suggested Actions:
|
|||||||
Would you like me to implement these improvements?
|
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:
|
When creating a new CLAUDE.md:
|
||||||
|
|
||||||
|
|||||||
30
plugins/claude-config-maintainer/claude-md-integration.md
Normal file
30
plugins/claude-config-maintainer/claude-md-integration.md
Normal 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
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
description: Analyze CLAUDE.md for optimization opportunities
|
description: Analyze CLAUDE.md for optimization opportunities and plugin integration
|
||||||
---
|
---
|
||||||
|
|
||||||
# Analyze CLAUDE.md
|
# 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
|
## 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
|
2. **Analyze Structure** - Evaluates organization, headers, and flow
|
||||||
3. **Check Content** - Reviews clarity, completeness, and conciseness
|
3. **Check Content** - Reviews clarity, completeness, and conciseness
|
||||||
4. **Identify Issues** - Finds redundancy, verbosity, and missing sections
|
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
|
## Usage
|
||||||
|
|
||||||
@@ -52,6 +54,29 @@ Analyze the CLAUDE.md file in this project
|
|||||||
- Appropriate length for project size
|
- Appropriate length for project size
|
||||||
- No generic filler content
|
- 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
|
## Expected Output
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -101,10 +126,37 @@ Recommendations:
|
|||||||
|
|
||||||
Estimated improvement: 15-20 points after changes
|
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:
|
Would you like me to:
|
||||||
[1] Implement all recommended changes
|
[1] Implement all content recommendations
|
||||||
[2] Show before/after for specific section
|
[2] Add missing plugin integrations to CLAUDE.md
|
||||||
[3] Generate optimized version for review
|
[3] Do both (recommended)
|
||||||
|
[4] Show preview of changes first
|
||||||
```
|
```
|
||||||
|
|
||||||
## When to Use
|
## When to Use
|
||||||
@@ -115,6 +167,8 @@ Run `/config-analyze` when:
|
|||||||
- Claude seems to miss instructions
|
- Claude seems to miss instructions
|
||||||
- Before major project changes
|
- Before major project changes
|
||||||
- Periodic maintenance (quarterly)
|
- Periodic maintenance (quarterly)
|
||||||
|
- After installing new marketplace plugins
|
||||||
|
- When Claude doesn't seem to use available plugin tools
|
||||||
|
|
||||||
## Follow-Up Actions
|
## Follow-Up Actions
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,11 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "NetBox CMDB integration for infrastructure management - query, create, update, and manage network devices, IP addresses, sites, and more",
|
"description": "NetBox CMDB integration for infrastructure management - query, create, update, and manage network devices, IP addresses, sites, and more",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Bandit Labs",
|
"name": "Leo Miranda",
|
||||||
"email": "dev@banditlabs.io"
|
"email": "leobmiranda@gmail.com"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/bandit-labs/cmdb-assistant",
|
"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",
|
"license": "MIT",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"netbox",
|
"netbox",
|
||||||
@@ -15,5 +16,8 @@
|
|||||||
"network",
|
"network",
|
||||||
"ipam",
|
"ipam",
|
||||||
"dcim"
|
"dcim"
|
||||||
]
|
],
|
||||||
|
"commands": ["./commands/"],
|
||||||
|
"agents": ["./agents/"],
|
||||||
|
"mcpServers": "./.mcp.json"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -167,4 +167,4 @@ The plugin uses the shared NetBox MCP server at `../mcp-servers/netbox/`.
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
MIT License - Part of the Bandit Labs plugin collection.
|
MIT License - Part of the Claude Code Marketplace.
|
||||||
|
|||||||
58
plugins/cmdb-assistant/claude-md-integration.md
Normal file
58
plugins/cmdb-assistant/claude-md-integration.md
Normal 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
|
||||||
@@ -294,4 +294,4 @@ logging.basicConfig(level=logging.DEBUG)
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Part of the Bandit Labs Claude Code Plugins project (`support-claude-mktplace`).
|
MIT License - Part of the Claude Code Marketplace (`support-claude-mktplace`).
|
||||||
|
|||||||
@@ -3,12 +3,19 @@
|
|||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"description": "Post-task cleanup hook that removes temp files, warns about unexpected root files, and manages orphaned supporting files",
|
"description": "Post-task cleanup hook that removes temp files, warns about unexpected root files, and manages orphaned supporting files",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Bandit Labs",
|
"name": "Leo Miranda",
|
||||||
"email": "dev@banditlabs.io"
|
"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",
|
"license": "MIT",
|
||||||
"keywords": ["cleanup", "hygiene", "automation", "hooks", "maintenance"],
|
"keywords": [
|
||||||
"repository": "https://github.com/bandit-labs/project-hygiene",
|
"cleanup",
|
||||||
|
"hygiene",
|
||||||
|
"automation",
|
||||||
|
"hooks",
|
||||||
|
"maintenance"
|
||||||
|
],
|
||||||
"hooks": {
|
"hooks": {
|
||||||
"PostToolUse": [
|
"PostToolUse": [
|
||||||
{
|
{
|
||||||
|
|||||||
36
plugins/project-hygiene/claude-md-integration.md
Normal file
36
plugins/project-hygiene/claude-md-integration.md
Normal 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
|
||||||
@@ -1,18 +1,21 @@
|
|||||||
{
|
{
|
||||||
"name": "projman",
|
"name": "projman",
|
||||||
"version": "2.0.0",
|
"version": "2.2.0",
|
||||||
"description": "Sprint planning and project management with Gitea integration",
|
"description": "Sprint planning and project management with Gitea integration",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Bandit Labs",
|
"name": "Leo Miranda",
|
||||||
"email": "dev@banditlabs.io"
|
"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",
|
"license": "MIT",
|
||||||
"repository": "https://gitea.hotserv.cloud/bandit/support-claude-mktplace",
|
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"project-management",
|
"project-management",
|
||||||
"sprint-planning",
|
"sprint-planning",
|
||||||
"gitea",
|
"gitea",
|
||||||
"agile",
|
"agile",
|
||||||
"lessons-learned"
|
"lessons-learned"
|
||||||
]
|
],
|
||||||
|
"commands": ["./commands/"],
|
||||||
|
"agents": ["./agents/"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.
|
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
|
**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
|
## Agents
|
||||||
|
|
||||||
### Planner Agent
|
### Planner Agent
|
||||||
@@ -203,6 +240,17 @@ Run initial setup for a new project.
|
|||||||
|
|
||||||
**Invoked by:** `/sprint-start`, `/sprint-close`
|
**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
|
### Executor Agent
|
||||||
**Personality:** Implementation-focused, follows specs precisely
|
**Personality:** Implementation-focused, follows specs precisely
|
||||||
|
|
||||||
@@ -373,11 +421,14 @@ projman/
|
|||||||
│ ├── sprint-status.md
|
│ ├── sprint-status.md
|
||||||
│ ├── sprint-close.md
|
│ ├── sprint-close.md
|
||||||
│ ├── labels-sync.md
|
│ ├── labels-sync.md
|
||||||
│ └── initial-setup.md
|
│ ├── initial-setup.md
|
||||||
|
│ ├── review.md
|
||||||
|
│ └── test-check.md
|
||||||
├── agents/ # Agent prompts
|
├── agents/ # Agent prompts
|
||||||
│ ├── planner.md
|
│ ├── planner.md
|
||||||
│ ├── orchestrator.md
|
│ ├── orchestrator.md
|
||||||
│ └── executor.md
|
│ ├── executor.md
|
||||||
|
│ └── code-reviewer.md
|
||||||
├── skills/ # Supporting knowledge
|
├── skills/ # Supporting knowledge
|
||||||
│ └── label-taxonomy/
|
│ └── label-taxonomy/
|
||||||
│ └── labels-reference.md
|
│ └── labels-reference.md
|
||||||
@@ -430,13 +481,14 @@ MIT License - See repository root for details
|
|||||||
|
|
||||||
## Version
|
## Version
|
||||||
|
|
||||||
**Current:** 2.0.0
|
**Current:** 2.2.0
|
||||||
|
|
||||||
**Changelog:**
|
**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
|
- v2.0.0: Full Gitea integration with wiki, milestones, dependencies, parallel execution
|
||||||
- v1.0.0: Initial release with basic commands
|
- v1.0.0: Initial release with basic commands
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Built for:** Bandit Labs
|
|
||||||
**Status:** Production Ready
|
**Status:** Production Ready
|
||||||
|
|||||||
90
plugins/projman/agents/code-reviewer.md
Normal file
90
plugins/projman/agents/code-reviewer.md
Normal 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
|
||||||
|
```
|
||||||
56
plugins/projman/claude-md-integration.md
Normal file
56
plugins/projman/claude-md-integration.md
Normal 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
|
||||||
82
plugins/projman/commands/review.md
Normal file
82
plugins/projman/commands/review.md
Normal 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)
|
||||||
163
plugins/projman/commands/test-check.md
Normal file
163
plugins/projman/commands/test-check.md
Normal 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
|
||||||
@@ -389,7 +389,7 @@ def list_issues(self, state='open', labels=None, repo=None):
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Part of the Bandit Labs Claude Code Plugins project.
|
MIT License - Part of the Claude Code Marketplace project.
|
||||||
|
|
||||||
## Related Documentation
|
## Related Documentation
|
||||||
|
|
||||||
@@ -407,7 +407,7 @@ For issues or questions:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Built for**: Bandit Labs Project Management Plugins
|
**Built for**: Claude Code Marketplace - Project Management Plugins
|
||||||
**Phase**: 1 (Complete)
|
**Phase**: 1 (Complete)
|
||||||
**Status**: ✅ Production Ready
|
**Status**: ✅ Production Ready
|
||||||
**Last Updated**: 2025-01-06
|
**Last Updated**: 2025-01-06
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ class GiteaClient:
|
|||||||
"""Parse owner/repo from input. Always requires 'owner/repo' format."""
|
"""Parse owner/repo from input. Always requires 'owner/repo' format."""
|
||||||
target = repo or self.repo
|
target = repo or self.repo
|
||||||
if not target or '/' not in target:
|
if not target or '/' not in target:
|
||||||
raise ValueError("Use 'owner/repo' format (e.g. 'bandit/support-claude-mktplace')")
|
raise ValueError("Use 'owner/repo' format (e.g. 'org/repo-name')")
|
||||||
parts = target.split('/', 1)
|
parts = target.split('/', 1)
|
||||||
return parts[0], parts[1]
|
return parts[0], parts[1]
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class LabelTools:
|
|||||||
|
|
||||||
target_repo = repo or self.gitea.repo
|
target_repo = repo or self.gitea.repo
|
||||||
if not target_repo or '/' not in target_repo:
|
if not target_repo or '/' not in target_repo:
|
||||||
raise ValueError("Use 'owner/repo' format (e.g. 'bandit/support-claude-mktplace')")
|
raise ValueError("Use 'owner/repo' format (e.g. 'org/repo-name')")
|
||||||
|
|
||||||
org = target_repo.split('/')[0]
|
org = target_repo.split('/')[0]
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ description: Dynamic reference for Gitea label taxonomy (organization + reposito
|
|||||||
|
|
||||||
**Status:** ✅ Synced with Gitea
|
**Status:** ✅ Synced with Gitea
|
||||||
**Last synced:** 2025-11-21 (via automated testing)
|
**Last synced:** 2025-11-21 (via automated testing)
|
||||||
**Source:** Gitea (bandit/support-claude-mktplace)
|
**Source:** Gitea (personal-projects/support-claude-mktplace)
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ This skill provides the current label taxonomy used for issue classification in
|
|||||||
|
|
||||||
## Organization Labels (27)
|
## Organization Labels (27)
|
||||||
|
|
||||||
Organization-level labels are shared across all repositories in the `bandit` organization.
|
Organization-level labels are shared across all repositories in your configured organization.
|
||||||
|
|
||||||
### Agent (2)
|
### Agent (2)
|
||||||
- `Agent/Human` (#0052cc) - Work performed by human developers
|
- `Agent/Human` (#0052cc) - Work performed by human developers
|
||||||
|
|||||||
139
scripts/validate-marketplace.sh
Executable file
139
scripts/validate-marketplace.sh
Executable 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 ==="
|
||||||
Reference in New Issue
Block a user