21 Commits

Author SHA1 Message Date
7b127d8e5c Merge pull request 'development' (#438) from development into main
Reviewed-on: #438
2026-02-04 23:07:11 +00:00
ba7350e130 Merge pull request 'chore: release v7.1.0' (#437) from chore/release-v7.1.0 into development
Reviewed-on: #437
2026-02-04 23:06:54 +00:00
4b7c40e1f5 chore: release v7.1.0
- Task-specific launcher script (claude-launch.sh) with profiles
- Lean/full profile switching for token optimization
- Token usage estimation via /sprint-status --tokens
- Conditional skill loading in /sprint-status
- Fixed stale command references in docs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 18:05:18 -05:00
9673c0c994 Merge pull request 'development' (#436) from development into main
Reviewed-on: #436
2026-02-04 22:54:47 +00:00
e1d1ffc555 Merge pull request 'fix: restore full profile as baseline for claude-launch.sh' (#435) from fix/restore-full-profile into development
Reviewed-on: #435
2026-02-04 22:54:30 +00:00
318d027bfa fix: restore full profile as baseline for claude-launch.sh
claude-launch.sh uses --plugin-dir for selective loading,
making lean/full profile switching obsolete.
Full marketplace.json is now the permanent baseline.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 17:52:13 -05:00
34a5e4a5a3 Merge pull request 'development' (#434) from development into main
Reviewed-on: #434
2026-02-04 21:52:56 +00:00
9710d296e4 Merge pull request 'feat: add task-specific launcher script with MCP Tool Search' (#433) from feat/task-specific-launcher into development
Reviewed-on: #433
2026-02-04 21:52:40 +00:00
59b5545a9b feat: add task-specific launcher script with MCP Tool Search
New script scripts/claude-launch.sh provides profile-based plugin loading
using --plugin-dir to reduce token overhead from ~22K to ~4-6K tokens.
Profiles: sprint, infra, data, review, full.
Enables MCP Tool Search for deferred tool loading.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 16:51:42 -05:00
b3c388b732 Merge pull request 'development' (#432) from development into main
Reviewed-on: #432
2026-02-04 20:40:28 +00:00
a4fb5b6feb Merge pull request 'fix: move mcp_servers to metadata.json to prevent silent plugin.json rejection' (#431) from fix/mcp-servers-metadata-json into development
Reviewed-on: #431
2026-02-04 20:40:06 +00:00
de4126bf68 fix: move mcp_servers to metadata.json to prevent silent plugin.json rejection
Claude Code's strict schema validation silently rejects plugins with unknown
root-level fields in plugin.json (anthropics/claude-code#20409).
Moved mcp_servers to separate metadata.json files.
Updated install/uninstall/list scripts to read from new location.
Added cache clearing to switch-profile.sh.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 13:46:43 -05:00
5a8c3b041f Merge pull request 'development' (#430) from development into main
Reviewed-on: #430
2026-02-04 17:23:24 +00:00
33a7c91f4f Merge pull request 'feat: Token consumption overhaul - lean/full profile switching' (#429) from feat/token-consumption-overhaul into development
Reviewed-on: #429
2026-02-04 17:23:07 +00:00
8781179fd0 feat(marketplace): add lean/full profile switching for token optimization
- Add marketplace-lean.json (6 plugins) and marketplace-full.json (12 plugins)
- Add .mcp-lean.json (gitea only) and .mcp-full.json (5 servers)
- Create scripts/switch-profile.sh for easy profile switching
- Update sprint-status.md with conditional skill loading
- Set lean profile as default (~14k token savings)

Lean profile includes: projman, git-flow, pr-review, clarity-assist,
code-sentinel, doc-guardian

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 12:22:36 -05:00
7d0b6050f9 Merge pull request 'development' (#428) from development into main
Reviewed-on: #428
2026-02-04 16:01:15 +00:00
6209ab9597 Merge pull request 'feat(projman): wire --tokens flag into /sprint-status' (#427) from feat/sprint-status-tokens-flag into development
Reviewed-on: #427
2026-02-04 16:00:58 +00:00
2c41ca338d feat(projman): wire --tokens flag into /sprint-status
Add token budget reporting option to sprint-status command:
- Update description to mention token budget report
- Add token-budget-report.md to skills list
- Add --tokens invocation option
- Add workflow section for generating token report

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 10:59:38 -05:00
34fc1d842c Merge pull request 'development' (#426) from development into main
Reviewed-on: #426
2026-02-04 15:25:55 +00:00
ab3847c656 Merge pull request 'development' (#424) from development into main
Reviewed-on: #424
2026-02-04 02:53:11 +00:00
49891c1e0c Merge pull request 'development' (#422) from development into main
Reviewed-on: #422
2026-02-04 01:09:37 +00:00
19 changed files with 295 additions and 42 deletions

View File

@@ -6,12 +6,12 @@
}, },
"metadata": { "metadata": {
"description": "Project management plugins with Gitea and NetBox integrations", "description": "Project management plugins with Gitea and NetBox integrations",
"version": "7.0.0" "version": "7.1.0"
}, },
"plugins": [ "plugins": [
{ {
"name": "projman", "name": "projman",
"version": "3.4.0", "version": "7.1.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": { "author": {
@@ -25,9 +25,105 @@
"tags": ["sprint", "agile", "gitea", "project-management"], "tags": ["sprint", "agile", "gitea", "project-management"],
"license": "MIT" "license": "MIT"
}, },
{
"name": "doc-guardian",
"version": "7.1.0",
"description": "Automatic documentation drift detection and synchronization",
"source": "./plugins/doc-guardian",
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/doc-guardian/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
"hooks": ["./hooks/hooks.json"],
"category": "productivity",
"tags": ["documentation", "drift-detection", "sync"],
"license": "MIT"
},
{
"name": "code-sentinel",
"version": "7.1.0",
"description": "Security scanning and code refactoring tools",
"source": "./plugins/code-sentinel",
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/code-sentinel/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
"hooks": ["./hooks/hooks.json"],
"category": "security",
"tags": ["security-scan", "refactoring", "vulnerabilities"],
"license": "MIT"
},
{
"name": "project-hygiene",
"version": "7.1.0",
"description": "Post-task cleanup hook that removes temp files and manages orphaned files",
"source": "./plugins/project-hygiene",
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/project-hygiene/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
"hooks": ["./hooks/hooks.json"],
"category": "productivity",
"tags": ["cleanup", "automation", "hygiene"],
"license": "MIT"
},
{
"name": "cmdb-assistant",
"version": "7.1.0",
"description": "NetBox CMDB integration with data quality validation and machine registration",
"source": "./plugins/cmdb-assistant",
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/cmdb-assistant/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
"hooks": ["./hooks/hooks.json"],
"category": "infrastructure",
"tags": ["cmdb", "netbox", "dcim", "ipam", "data-quality", "validation"],
"license": "MIT"
},
{
"name": "claude-config-maintainer",
"version": "7.1.0",
"description": "CLAUDE.md and settings.local.json optimization for Claude Code projects",
"source": "./plugins/claude-config-maintainer",
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/claude-config-maintainer/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
"hooks": ["./hooks/hooks.json"],
"category": "development",
"tags": ["claude-md", "configuration", "optimization"],
"license": "MIT"
},
{
"name": "clarity-assist",
"version": "7.1.0",
"description": "Prompt optimization and requirement clarification with ND-friendly accommodations",
"source": "./plugins/clarity-assist",
"author": {
"name": "Leo Miranda",
"email": "leobmiranda@gmail.com"
},
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/clarity-assist/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
"hooks": ["./hooks/hooks.json"],
"category": "productivity",
"tags": ["prompts", "requirements", "clarification", "nd-friendly"],
"license": "MIT"
},
{ {
"name": "git-flow", "name": "git-flow",
"version": "1.2.0", "version": "7.1.0",
"description": "Git workflow automation with intelligent commit messages and branch management", "description": "Git workflow automation with intelligent commit messages and branch management",
"source": "./plugins/git-flow", "source": "./plugins/git-flow",
"author": { "author": {
@@ -43,7 +139,7 @@
}, },
{ {
"name": "pr-review", "name": "pr-review",
"version": "1.1.0", "version": "7.1.0",
"description": "Multi-agent pull request review with confidence scoring and actionable feedback", "description": "Multi-agent pull request review with confidence scoring and actionable feedback",
"source": "./plugins/pr-review", "source": "./plugins/pr-review",
"author": { "author": {
@@ -58,51 +154,51 @@
"license": "MIT" "license": "MIT"
}, },
{ {
"name": "clarity-assist", "name": "data-platform",
"version": "1.2.0", "version": "7.1.0",
"description": "Prompt optimization and requirement clarification with ND-friendly accommodations", "description": "Data engineering tools with pandas, PostgreSQL/PostGIS, and dbt integration",
"source": "./plugins/clarity-assist", "source": "./plugins/data-platform",
"author": { "author": {
"name": "Leo Miranda", "name": "Leo Miranda",
"email": "leobmiranda@gmail.com" "email": "leobmiranda@gmail.com"
}, },
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/clarity-assist/README.md", "homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/data-platform/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git", "repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
"hooks": ["./hooks/hooks.json"], "hooks": ["./hooks/hooks.json"],
"category": "productivity", "category": "data",
"tags": ["prompts", "requirements", "clarification", "nd-friendly"], "tags": ["pandas", "postgresql", "postgis", "dbt", "data-engineering", "etl"],
"license": "MIT" "license": "MIT"
}, },
{ {
"name": "code-sentinel", "name": "viz-platform",
"version": "1.0.1", "version": "7.1.0",
"description": "Security scanning and code refactoring tools", "description": "Visualization tools with Dash Mantine Components validation, Plotly charts, and theming",
"source": "./plugins/code-sentinel", "source": "./plugins/viz-platform",
"author": { "author": {
"name": "Leo Miranda", "name": "Leo Miranda",
"email": "leobmiranda@gmail.com" "email": "leobmiranda@gmail.com"
}, },
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/code-sentinel/README.md", "homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/viz-platform/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git", "repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
"hooks": ["./hooks/hooks.json"], "hooks": ["./hooks/hooks.json"],
"category": "security", "category": "visualization",
"tags": ["security-scan", "refactoring", "vulnerabilities"], "tags": ["dash", "plotly", "mantine", "charts", "dashboards", "theming", "dmc"],
"license": "MIT" "license": "MIT"
}, },
{ {
"name": "doc-guardian", "name": "contract-validator",
"version": "1.1.0", "version": "7.1.0",
"description": "Automatic documentation drift detection and synchronization", "description": "Cross-plugin compatibility validation and Claude.md agent verification",
"source": "./plugins/doc-guardian", "source": "./plugins/contract-validator",
"author": { "author": {
"name": "Leo Miranda", "name": "Leo Miranda",
"email": "leobmiranda@gmail.com" "email": "leobmiranda@gmail.com"
}, },
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/doc-guardian/README.md", "homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/contract-validator/README.md",
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git", "repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
"hooks": ["./hooks/hooks.json"], "hooks": ["./hooks/hooks.json"],
"category": "productivity", "category": "development",
"tags": ["documentation", "drift-detection", "sync"], "tags": ["validation", "contracts", "compatibility", "agents", "interfaces", "cross-plugin"],
"license": "MIT" "license": "MIT"
} }
] ]

View File

@@ -3,6 +3,22 @@
"gitea": { "gitea": {
"command": "./mcp-servers/gitea/run.sh", "command": "./mcp-servers/gitea/run.sh",
"args": [] "args": []
},
"netbox": {
"command": "./mcp-servers/netbox/run.sh",
"args": []
},
"viz-platform": {
"command": "./mcp-servers/viz-platform/run.sh",
"args": []
},
"data-platform": {
"command": "./mcp-servers/data-platform/run.sh",
"args": []
},
"contract-validator": {
"command": "./mcp-servers/contract-validator/run.sh",
"args": []
} }
} }
} }

View File

@@ -6,8 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased] ## [Unreleased]
---
## [7.1.0] - 2026-02-04
### Added ### Added
- **marketplace:** Task-specific launcher script for token optimization
- New script: `scripts/claude-launch.sh` loads only needed plugins via `--plugin-dir`
- Profiles: sprint (default), review, data, infra, full
- Reduces token overhead from ~22K to ~4-6K tokens
- Enables `ENABLE_TOOL_SEARCH=true` for MCP lazy loading
- **marketplace:** Lean/full profile switching to reduce token overhead - **marketplace:** Lean/full profile switching to reduce token overhead
- New script: `scripts/switch-profile.sh` to toggle between profiles - New script: `scripts/switch-profile.sh` to toggle between profiles
- Lean profile: 6 plugins (projman, git-flow, pr-review, clarity-assist, code-sentinel, doc-guardian) - Lean profile: 6 plugins (projman, git-flow, pr-review, clarity-assist, code-sentinel, doc-guardian)

View File

@@ -1,7 +1,32 @@
# Leo Claude Marketplace - v7.0.0 # Leo Claude Marketplace - v7.1.0
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.
## Quick Start
Use the launcher script to load only the plugins you need, reducing token overhead from ~22K to ~4-6K tokens:
```bash
./scripts/claude-launch.sh [profile] [extra-args...]
```
| Profile | Plugins Loaded | Use Case |
|---------|----------------|----------|
| `sprint` | projman, git-flow, pr-review, code-sentinel, doc-guardian, clarity-assist | Default. Sprint planning and development |
| `review` | pr-review, code-sentinel | Lightweight code review |
| `data` | data-platform, viz-platform | Data engineering and visualization |
| `infra` | cmdb-assistant | Infrastructure/CMDB management |
| `full` | All 12 plugins via marketplace.json | When you need everything |
**Examples:**
```bash
./scripts/claude-launch.sh # Default sprint profile
./scripts/claude-launch.sh data --model opus # Data profile with Opus
./scripts/claude-launch.sh full # Load all plugins
```
The script enables `ENABLE_TOOL_SEARCH=true` for MCP lazy loading.
## Plugins ## Plugins
### Development & Project Management ### Development & Project Management

0
docs/prompts/INDEX.md Normal file
View File

View File

@@ -0,0 +1 @@
{"mcp_servers": ["netbox"]}

View File

@@ -0,0 +1 @@
{"mcp_servers": ["contract-validator"]}

View File

@@ -0,0 +1 @@
{"mcp_servers": ["data-platform"]}

View File

@@ -0,0 +1 @@
{"mcp_servers": ["gitea"]}

View File

@@ -0,0 +1 @@
{"mcp_servers": ["gitea"]}

View File

@@ -0,0 +1 @@
{"mcp_servers": ["gitea"]}

View File

@@ -0,0 +1 @@
{"mcp_servers": ["gitea"]}

View File

@@ -24,7 +24,7 @@ Check current sprint progress, identify blockers, and show execution status. Opt
``` ```
/sprint-status # Text-based status report /sprint-status # Text-based status report
/sprint-status --diagram # Include Mermaid dependency diagram /sprint-status --diagram # Include Mermaid dependency diagram
/sprint-status --tokens # Include token budget estimation report /sprint-status --tokens # Show token budget estimation report
``` ```
## Workflow ## Workflow
@@ -46,7 +46,11 @@ That's it. No dependency analysis, no token estimation, no progress comment pars
### If --tokens flag, THEN ALSO: ### If --tokens flag, THEN ALSO:
11. Load `skills/token-budget-report.md` 11. Load `skills/token-budget-report.md`
12. Generate token estimation report 12. **Generate Token Budget Report** - Execute `skills/token-budget-report.md` estimation model
- Phase: STATUS (read-only snapshot, not a workflow boundary)
- List MCP servers from `.mcp.json` with static overhead estimates
- Show current session cost estimate based on skills loaded so far
- Display formatted report per the skill's Display Format section
## Output Format ## Output Format

View File

@@ -0,0 +1 @@
{"mcp_servers": ["viz-platform"]}

91
scripts/claude-launch.sh Executable file
View File

@@ -0,0 +1,91 @@
#!/usr/bin/env bash
#
# claude-launch.sh - Launch Claude Code with task-specific plugin profiles
#
# Usage: ./scripts/claude-launch.sh [profile] [extra-args...]
#
# Profiles:
# sprint - Project management, git, PR review, security, docs (default)
# infra - Infrastructure/CMDB management
# data - Data engineering and visualization
# review - Code review only (lightweight)
# full - All plugins via marketplace.json (~22K tokens)
#
# Examples:
# ./scripts/claude-launch.sh # Default sprint profile
# ./scripts/claude-launch.sh sprint # Explicit sprint profile
# ./scripts/claude-launch.sh data --model opus # Data profile with Opus
# ./scripts/claude-launch.sh full # Load all plugins
#
set -euo pipefail
# Colors for output
CYAN='\033[0;36m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Script directory (for relative plugin paths)
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(dirname "$SCRIPT_DIR")"
PLUGINS_DIR="$REPO_ROOT/plugins"
# Default profile
PROFILE="${1:-sprint}"
# Shift profile arg if provided (to pass remaining args to claude)
if [[ $# -gt 0 ]]; then
shift
fi
# Define plugin lists for each profile
declare -A PROFILES
PROFILES[sprint]="projman git-flow pr-review code-sentinel doc-guardian clarity-assist"
PROFILES[infra]="cmdb-assistant"
PROFILES[data]="data-platform viz-platform"
PROFILES[review]="pr-review code-sentinel"
PROFILES[full]="" # Empty = use marketplace.json
# Validate profile
if [[ ! ${PROFILES[$PROFILE]+_} ]]; then
echo -e "${YELLOW}Unknown profile: $PROFILE${NC}"
echo "Available profiles: sprint, infra, data, review, full"
exit 1
fi
# Build --plugin-dir arguments
PLUGIN_ARGS=()
PLUGIN_LIST="${PROFILES[$PROFILE]}"
if [[ -n "$PLUGIN_LIST" ]]; then
echo -e "${CYAN}Profile: $PROFILE${NC}"
echo -e "${GREEN}Loading plugins:${NC}"
for plugin in $PLUGIN_LIST; do
plugin_path="$PLUGINS_DIR/$plugin"
if [[ -d "$plugin_path" ]]; then
echo "$plugin"
PLUGIN_ARGS+=("--plugin-dir" "$plugin_path")
else
echo -e "${YELLOW}$plugin (not found at $plugin_path)${NC}"
fi
done
echo ""
else
echo -e "${CYAN}Profile: full${NC}"
echo -e "${GREEN}Loading all plugins via marketplace.json${NC}"
echo ""
fi
# Enable MCP Tool Search for deferred tool loading
export ENABLE_TOOL_SEARCH=true
echo -e "${GREEN}MCP Tool Search: enabled${NC}"
echo ""
# Launch claude with plugin args and any extra arguments
if [[ ${#PLUGIN_ARGS[@]} -gt 0 ]]; then
exec claude "${PLUGIN_ARGS[@]}" "$@"
else
exec claude "$@"
fi

View File

@@ -116,19 +116,19 @@ validate_target() {
} }
# --- Get MCP Servers for Plugin --- # --- Get MCP Servers for Plugin ---
# Reads the mcp_servers array from plugin.json # Reads the mcp_servers array from metadata.json (separate from plugin.json to avoid schema validation issues)
# Returns newline-separated list of MCP server names, or empty if none # Returns newline-separated list of MCP server names, or empty if none
get_mcp_servers() { get_mcp_servers() {
local plugin_name="$1" local plugin_name="$1"
local plugin_json="$REPO_ROOT/plugins/$plugin_name/.claude-plugin/plugin.json" local metadata_json="$REPO_ROOT/plugins/$plugin_name/.claude-plugin/metadata.json"
if [[ ! -f "$plugin_json" ]]; then if [[ ! -f "$metadata_json" ]]; then
return return
fi fi
# Read mcp_servers array from plugin.json # Read mcp_servers array from metadata.json
# Returns empty if field doesn't exist or is empty # Returns empty if field doesn't exist or is empty
jq -r '.mcp_servers // [] | .[]' "$plugin_json" 2>/dev/null || true jq -r '.mcp_servers // [] | .[]' "$metadata_json" 2>/dev/null || true
} }
# --- Check if plugin has any MCP servers --- # --- Check if plugin has any MCP servers ---

View File

@@ -68,16 +68,16 @@ get_available_plugins() {
} }
# --- Get MCP Servers for Plugin --- # --- Get MCP Servers for Plugin ---
# Reads the mcp_servers array from plugin.json # Reads the mcp_servers array from metadata.json (separate from plugin.json to avoid schema validation issues)
get_mcp_servers() { get_mcp_servers() {
local plugin_name="$1" local plugin_name="$1"
local plugin_json="$REPO_ROOT/plugins/$plugin_name/.claude-plugin/plugin.json" local metadata_json="$REPO_ROOT/plugins/$plugin_name/.claude-plugin/metadata.json"
if [[ ! -f "$plugin_json" ]]; then if [[ ! -f "$metadata_json" ]]; then
return return
fi fi
jq -r '.mcp_servers // [] | .[]' "$plugin_json" 2>/dev/null || true jq -r '.mcp_servers // [] | .[]' "$metadata_json" 2>/dev/null || true
} }
# --- Check if plugin has any MCP servers defined --- # --- Check if plugin has any MCP servers defined ---

View File

@@ -12,7 +12,9 @@ case "${1:-lean}" in
lean) lean)
cp "$MARKETPLACE_DIR/marketplace-lean.json" "$MARKETPLACE_DIR/marketplace.json" cp "$MARKETPLACE_DIR/marketplace-lean.json" "$MARKETPLACE_DIR/marketplace.json"
cp "$ROOT_DIR/.mcp-lean.json" "$ROOT_DIR/.mcp.json" cp "$ROOT_DIR/.mcp-lean.json" "$ROOT_DIR/.mcp.json"
rm -rf ~/.claude/plugins/cache/
echo "Switched to LEAN profile (6 plugins, 1 MCP server)" echo "Switched to LEAN profile (6 plugins, 1 MCP server)"
echo "Plugin cache cleared."
echo "" echo ""
echo "Plugins: projman, git-flow, pr-review, clarity-assist, code-sentinel, doc-guardian" echo "Plugins: projman, git-flow, pr-review, clarity-assist, code-sentinel, doc-guardian"
echo "MCP: gitea only" echo "MCP: gitea only"
@@ -22,7 +24,9 @@ case "${1:-lean}" in
full) full)
cp "$MARKETPLACE_DIR/marketplace-full.json" "$MARKETPLACE_DIR/marketplace.json" cp "$MARKETPLACE_DIR/marketplace-full.json" "$MARKETPLACE_DIR/marketplace.json"
cp "$ROOT_DIR/.mcp-full.json" "$ROOT_DIR/.mcp.json" cp "$ROOT_DIR/.mcp-full.json" "$ROOT_DIR/.mcp.json"
rm -rf ~/.claude/plugins/cache/
echo "Switched to FULL profile (12 plugins, 5 MCP servers)" echo "Switched to FULL profile (12 plugins, 5 MCP servers)"
echo "Plugin cache cleared."
echo "" echo ""
echo "Plugins: all" echo "Plugins: all"
echo "MCP: gitea, netbox, data-platform, viz-platform, contract-validator" echo "MCP: gitea, netbox, data-platform, viz-platform, contract-validator"

View File

@@ -77,19 +77,19 @@ validate_target() {
} }
# --- Get MCP Servers for Plugin --- # --- Get MCP Servers for Plugin ---
# Reads the mcp_servers array from plugin.json # Reads the mcp_servers array from metadata.json (separate from plugin.json to avoid schema validation issues)
# Returns newline-separated list of MCP server names, or empty if none # Returns newline-separated list of MCP server names, or empty if none
get_mcp_servers() { get_mcp_servers() {
local plugin_name="$1" local plugin_name="$1"
local plugin_json="$REPO_ROOT/plugins/$plugin_name/.claude-plugin/plugin.json" local metadata_json="$REPO_ROOT/plugins/$plugin_name/.claude-plugin/metadata.json"
if [[ ! -f "$plugin_json" ]]; then if [[ ! -f "$metadata_json" ]]; then
return return
fi fi
# Read mcp_servers array from plugin.json # Read mcp_servers array from metadata.json
# Returns empty if field doesn't exist or is empty # Returns empty if field doesn't exist or is empty
jq -r '.mcp_servers // [] | .[]' "$plugin_json" 2>/dev/null || true jq -r '.mcp_servers // [] | .[]' "$metadata_json" 2>/dev/null || true
} }
# --- Remove from .mcp.json --- # --- Remove from .mcp.json ---