development #341
@@ -6,7 +6,7 @@
|
|||||||
},
|
},
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"description": "Project management plugins with Gitea and NetBox integrations",
|
"description": "Project management plugins with Gitea and NetBox integrations",
|
||||||
"version": "5.4.0"
|
"version": "5.4.1"
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/projman/README.md",
|
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/projman/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"],
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"tags": ["sprint", "agile", "gitea", "project-management"],
|
"tags": ["sprint", "agile", "gitea", "project-management"],
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
@@ -42,7 +43,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "code-sentinel",
|
"name": "code-sentinel",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"description": "Security scanning and code refactoring tools",
|
"description": "Security scanning and code refactoring tools",
|
||||||
"source": "./plugins/code-sentinel",
|
"source": "./plugins/code-sentinel",
|
||||||
"author": {
|
"author": {
|
||||||
@@ -83,6 +84,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/cmdb-assistant/README.md",
|
"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",
|
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
|
||||||
|
"hooks": ["./hooks/hooks.json"],
|
||||||
"category": "infrastructure",
|
"category": "infrastructure",
|
||||||
"tags": ["cmdb", "netbox", "dcim", "ipam", "data-quality", "validation"],
|
"tags": ["cmdb", "netbox", "dcim", "ipam", "data-quality", "validation"],
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
@@ -98,6 +100,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/claude-config-maintainer/README.md",
|
"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",
|
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
|
||||||
|
"hooks": ["./hooks/hooks.json"],
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"tags": ["claude-md", "configuration", "optimization"],
|
"tags": ["claude-md", "configuration", "optimization"],
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
@@ -113,6 +116,7 @@
|
|||||||
},
|
},
|
||||||
"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/clarity-assist/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"],
|
||||||
"category": "productivity",
|
"category": "productivity",
|
||||||
"tags": ["prompts", "requirements", "clarification", "nd-friendly"],
|
"tags": ["prompts", "requirements", "clarification", "nd-friendly"],
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
@@ -128,6 +132,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/git-flow/README.md",
|
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/git-flow/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"],
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"tags": ["git", "workflow", "commits", "branching"],
|
"tags": ["git", "workflow", "commits", "branching"],
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
@@ -143,6 +148,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/pr-review/README.md",
|
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/pr-review/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"],
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"tags": ["code-review", "pull-requests", "security", "quality"],
|
"tags": ["code-review", "pull-requests", "security", "quality"],
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
@@ -158,6 +164,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/data-platform/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"],
|
||||||
"category": "data",
|
"category": "data",
|
||||||
"tags": ["pandas", "postgresql", "postgis", "dbt", "data-engineering", "etl"],
|
"tags": ["pandas", "postgresql", "postgis", "dbt", "data-engineering", "etl"],
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
@@ -173,6 +180,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/viz-platform/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"],
|
||||||
"category": "visualization",
|
"category": "visualization",
|
||||||
"tags": ["dash", "plotly", "mantine", "charts", "dashboards", "theming", "dmc"],
|
"tags": ["dash", "plotly", "mantine", "charts", "dashboards", "theming", "dmc"],
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
@@ -188,6 +196,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/contract-validator/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"],
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"tags": ["validation", "contracts", "compatibility", "agents", "interfaces", "cross-plugin"],
|
"tags": ["validation", "contracts", "compatibility", "agents", "interfaces", "cross-plugin"],
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
|
|||||||
10
.mcp.json
10
.mcp.json
@@ -1,23 +1,23 @@
|
|||||||
{
|
{
|
||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"gitea": {
|
"gitea": {
|
||||||
"command": "/home/lmiranda/.claude/plugins/marketplaces/leo-claude-mktplace/mcp-servers/gitea/run.sh",
|
"command": "./mcp-servers/gitea/run.sh",
|
||||||
"args": []
|
"args": []
|
||||||
},
|
},
|
||||||
"netbox": {
|
"netbox": {
|
||||||
"command": "/home/lmiranda/.claude/plugins/marketplaces/leo-claude-mktplace/mcp-servers/netbox/run.sh",
|
"command": "./mcp-servers/netbox/run.sh",
|
||||||
"args": []
|
"args": []
|
||||||
},
|
},
|
||||||
"viz-platform": {
|
"viz-platform": {
|
||||||
"command": "/home/lmiranda/.claude/plugins/marketplaces/leo-claude-mktplace/mcp-servers/viz-platform/run.sh",
|
"command": "./mcp-servers/viz-platform/run.sh",
|
||||||
"args": []
|
"args": []
|
||||||
},
|
},
|
||||||
"data-platform": {
|
"data-platform": {
|
||||||
"command": "/home/lmiranda/.claude/plugins/marketplaces/leo-claude-mktplace/mcp-servers/data-platform/run.sh",
|
"command": "./mcp-servers/data-platform/run.sh",
|
||||||
"args": []
|
"args": []
|
||||||
},
|
},
|
||||||
"contract-validator": {
|
"contract-validator": {
|
||||||
"command": "/home/lmiranda/.claude/plugins/marketplaces/leo-claude-mktplace/mcp-servers/contract-validator/run.sh",
|
"command": "./mcp-servers/contract-validator/run.sh",
|
||||||
"args": []
|
"args": []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Leo Claude Marketplace - v5.4.0
|
# Leo Claude Marketplace - v5.4.1
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
**This file defines ALL valid paths in this repository. No exceptions. No inference. No assumptions.**
|
**This file defines ALL valid paths in this repository. No exceptions. No inference. No assumptions.**
|
||||||
|
|
||||||
Last Updated: 2026-01-30 (v5.5.0)
|
Last Updated: 2026-01-30 (v5.4.1)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -25,11 +25,24 @@ if [[ -z "${NETBOX_API_URL:-}" ]] || [[ -z "${NETBOX_API_TOKEN:-}" ]]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Helper function to make authenticated API calls
|
||||||
|
# Token passed via curl config to avoid exposure in process listings
|
||||||
|
netbox_curl() {
|
||||||
|
local url="$1"
|
||||||
|
curl -s -K - <<EOF 2>/dev/null
|
||||||
|
-H "Authorization: Token ${NETBOX_API_TOKEN}"
|
||||||
|
-H "Accept: application/json"
|
||||||
|
url = "${url}"
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
# Quick API connectivity test (5s timeout)
|
# Quick API connectivity test (5s timeout)
|
||||||
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -m 5 \
|
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -m 5 -K - <<EOF 2>/dev/null || echo "000"
|
||||||
-H "Authorization: Token $NETBOX_API_TOKEN" \
|
-H "Authorization: Token ${NETBOX_API_TOKEN}"
|
||||||
-H "Accept: application/json" \
|
-H "Accept: application/json"
|
||||||
"${NETBOX_API_URL}/" 2>/dev/null || echo "000")
|
url = "${NETBOX_API_URL}/"
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
|
||||||
if [[ "$HTTP_CODE" == "000" ]]; then
|
if [[ "$HTTP_CODE" == "000" ]]; then
|
||||||
echo "$PREFIX NetBox API unreachable (timeout/connection error)"
|
echo "$PREFIX NetBox API unreachable (timeout/connection error)"
|
||||||
@@ -40,10 +53,12 @@ elif [[ "$HTTP_CODE" != "200" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for VMs without site assignment (data quality)
|
# Check for VMs without site assignment (data quality)
|
||||||
VMS_RESPONSE=$(curl -s -m 5 \
|
VMS_RESPONSE=$(curl -s -m 5 -K - <<EOF 2>/dev/null || echo '{"count":0}'
|
||||||
-H "Authorization: Token $NETBOX_API_TOKEN" \
|
-H "Authorization: Token ${NETBOX_API_TOKEN}"
|
||||||
-H "Accept: application/json" \
|
-H "Accept: application/json"
|
||||||
"${NETBOX_API_URL}/virtualization/virtual-machines/?site__isnull=true&limit=1" 2>/dev/null || echo '{"count":0}')
|
url = "${NETBOX_API_URL}/virtualization/virtual-machines/?site__isnull=true&limit=1"
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
|
||||||
VMS_NO_SITE=$(echo "$VMS_RESPONSE" | grep -o '"count":[0-9]*' | cut -d: -f2 || echo "0")
|
VMS_NO_SITE=$(echo "$VMS_RESPONSE" | grep -o '"count":[0-9]*' | cut -d: -f2 || echo "0")
|
||||||
|
|
||||||
@@ -52,10 +67,12 @@ if [[ "$VMS_NO_SITE" -gt 0 ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for devices without platform
|
# Check for devices without platform
|
||||||
DEVICES_RESPONSE=$(curl -s -m 5 \
|
DEVICES_RESPONSE=$(curl -s -m 5 -K - <<EOF 2>/dev/null || echo '{"count":0}'
|
||||||
-H "Authorization: Token $NETBOX_API_TOKEN" \
|
-H "Authorization: Token ${NETBOX_API_TOKEN}"
|
||||||
-H "Accept: application/json" \
|
-H "Accept: application/json"
|
||||||
"${NETBOX_API_URL}/dcim/devices/?platform__isnull=true&limit=1" 2>/dev/null || echo '{"count":0}')
|
url = "${NETBOX_API_URL}/dcim/devices/?platform__isnull=true&limit=1"
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
|
||||||
DEVICES_NO_PLATFORM=$(echo "$DEVICES_RESPONSE" | grep -o '"count":[0-9]*' | cut -d: -f2 || echo "0")
|
DEVICES_NO_PLATFORM=$(echo "$DEVICES_RESPONSE" | grep -o '"count":[0-9]*' | cut -d: -f2 || echo "0")
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,12 @@
|
|||||||
"hooks": {
|
"hooks": {
|
||||||
"SessionStart": [
|
"SessionStart": [
|
||||||
{
|
{
|
||||||
"type": "command",
|
"hooks": [
|
||||||
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/startup-check.sh"
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/startup-check.sh"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user