Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 442ed63b4c |
@@ -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": "7.1.0"
|
"version": "8.0.0"
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
@@ -20,10 +20,18 @@
|
|||||||
},
|
},
|
||||||
"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"],
|
"hooks": [
|
||||||
|
"./hooks/hooks.json"
|
||||||
|
],
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"tags": ["sprint", "agile", "gitea", "project-management"],
|
"tags": [
|
||||||
"license": "MIT"
|
"sprint",
|
||||||
|
"agile",
|
||||||
|
"gitea",
|
||||||
|
"project-management"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "core"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "doc-guardian",
|
"name": "doc-guardian",
|
||||||
@@ -36,10 +44,17 @@
|
|||||||
},
|
},
|
||||||
"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/doc-guardian/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": "productivity",
|
||||||
"tags": ["documentation", "drift-detection", "sync"],
|
"tags": [
|
||||||
"license": "MIT"
|
"documentation",
|
||||||
|
"drift-detection",
|
||||||
|
"sync"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "core"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "code-sentinel",
|
"name": "code-sentinel",
|
||||||
@@ -52,10 +67,17 @@
|
|||||||
},
|
},
|
||||||
"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/code-sentinel/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": "security",
|
||||||
"tags": ["security-scan", "refactoring", "vulnerabilities"],
|
"tags": [
|
||||||
"license": "MIT"
|
"security-scan",
|
||||||
|
"refactoring",
|
||||||
|
"vulnerabilities"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "core"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "project-hygiene",
|
"name": "project-hygiene",
|
||||||
@@ -68,10 +90,17 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/src/branch/main/plugins/project-hygiene/README.md",
|
"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",
|
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
|
||||||
"hooks": ["./hooks/hooks.json"],
|
"hooks": [
|
||||||
|
"./hooks/hooks.json"
|
||||||
|
],
|
||||||
"category": "productivity",
|
"category": "productivity",
|
||||||
"tags": ["cleanup", "automation", "hygiene"],
|
"tags": [
|
||||||
"license": "MIT"
|
"cleanup",
|
||||||
|
"automation",
|
||||||
|
"hygiene"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "core"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cmdb-assistant",
|
"name": "cmdb-assistant",
|
||||||
@@ -84,10 +113,20 @@
|
|||||||
},
|
},
|
||||||
"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"],
|
"hooks": [
|
||||||
|
"./hooks/hooks.json"
|
||||||
|
],
|
||||||
"category": "infrastructure",
|
"category": "infrastructure",
|
||||||
"tags": ["cmdb", "netbox", "dcim", "ipam", "data-quality", "validation"],
|
"tags": [
|
||||||
"license": "MIT"
|
"cmdb",
|
||||||
|
"netbox",
|
||||||
|
"dcim",
|
||||||
|
"ipam",
|
||||||
|
"data-quality",
|
||||||
|
"validation"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "ops"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "claude-config-maintainer",
|
"name": "claude-config-maintainer",
|
||||||
@@ -100,10 +139,17 @@
|
|||||||
},
|
},
|
||||||
"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"],
|
"hooks": [
|
||||||
|
"./hooks/hooks.json"
|
||||||
|
],
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"tags": ["claude-md", "configuration", "optimization"],
|
"tags": [
|
||||||
"license": "MIT"
|
"claude-md",
|
||||||
|
"configuration",
|
||||||
|
"optimization"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "core"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clarity-assist",
|
"name": "clarity-assist",
|
||||||
@@ -116,10 +162,18 @@
|
|||||||
},
|
},
|
||||||
"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"],
|
"hooks": [
|
||||||
|
"./hooks/hooks.json"
|
||||||
|
],
|
||||||
"category": "productivity",
|
"category": "productivity",
|
||||||
"tags": ["prompts", "requirements", "clarification", "nd-friendly"],
|
"tags": [
|
||||||
"license": "MIT"
|
"prompts",
|
||||||
|
"requirements",
|
||||||
|
"clarification",
|
||||||
|
"nd-friendly"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "core"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "git-flow",
|
"name": "git-flow",
|
||||||
@@ -132,10 +186,18 @@
|
|||||||
},
|
},
|
||||||
"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"],
|
"hooks": [
|
||||||
|
"./hooks/hooks.json"
|
||||||
|
],
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"tags": ["git", "workflow", "commits", "branching"],
|
"tags": [
|
||||||
"license": "MIT"
|
"git",
|
||||||
|
"workflow",
|
||||||
|
"commits",
|
||||||
|
"branching"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "core"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pr-review",
|
"name": "pr-review",
|
||||||
@@ -148,10 +210,18 @@
|
|||||||
},
|
},
|
||||||
"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"],
|
"hooks": [
|
||||||
|
"./hooks/hooks.json"
|
||||||
|
],
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"tags": ["code-review", "pull-requests", "security", "quality"],
|
"tags": [
|
||||||
"license": "MIT"
|
"code-review",
|
||||||
|
"pull-requests",
|
||||||
|
"security",
|
||||||
|
"quality"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "core"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "data-platform",
|
"name": "data-platform",
|
||||||
@@ -164,10 +234,20 @@
|
|||||||
},
|
},
|
||||||
"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"],
|
"hooks": [
|
||||||
|
"./hooks/hooks.json"
|
||||||
|
],
|
||||||
"category": "data",
|
"category": "data",
|
||||||
"tags": ["pandas", "postgresql", "postgis", "dbt", "data-engineering", "etl"],
|
"tags": [
|
||||||
"license": "MIT"
|
"pandas",
|
||||||
|
"postgresql",
|
||||||
|
"postgis",
|
||||||
|
"dbt",
|
||||||
|
"data-engineering",
|
||||||
|
"etl"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "data"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "viz-platform",
|
"name": "viz-platform",
|
||||||
@@ -180,10 +260,21 @@
|
|||||||
},
|
},
|
||||||
"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"],
|
"hooks": [
|
||||||
|
"./hooks/hooks.json"
|
||||||
|
],
|
||||||
"category": "visualization",
|
"category": "visualization",
|
||||||
"tags": ["dash", "plotly", "mantine", "charts", "dashboards", "theming", "dmc"],
|
"tags": [
|
||||||
"license": "MIT"
|
"dash",
|
||||||
|
"plotly",
|
||||||
|
"mantine",
|
||||||
|
"charts",
|
||||||
|
"dashboards",
|
||||||
|
"theming",
|
||||||
|
"dmc"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "data"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "contract-validator",
|
"name": "contract-validator",
|
||||||
@@ -196,10 +287,20 @@
|
|||||||
},
|
},
|
||||||
"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"],
|
"hooks": [
|
||||||
|
"./hooks/hooks.json"
|
||||||
|
],
|
||||||
"category": "development",
|
"category": "development",
|
||||||
"tags": ["validation", "contracts", "compatibility", "agents", "interfaces", "cross-plugin"],
|
"tags": [
|
||||||
"license": "MIT"
|
"validation",
|
||||||
|
"contracts",
|
||||||
|
"compatibility",
|
||||||
|
"agents",
|
||||||
|
"interfaces",
|
||||||
|
"cross-plugin"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"domain": "core"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,3 +63,4 @@
|
|||||||
2026-02-03T21:09:40 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/viz-breakpoints.md | docs/COMMANDS-CHEATSHEET.md README.md
|
2026-02-03T21:09:40 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/viz-breakpoints.md | docs/COMMANDS-CHEATSHEET.md README.md
|
||||||
2026-02-03T21:09:46 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/design-review.md | docs/COMMANDS-CHEATSHEET.md README.md
|
2026-02-03T21:09:46 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/design-review.md | docs/COMMANDS-CHEATSHEET.md README.md
|
||||||
2026-02-03T21:10:22 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/accessibility-check.md | docs/COMMANDS-CHEATSHEET.md README.md
|
2026-02-03T21:10:22 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/accessibility-check.md | docs/COMMANDS-CHEATSHEET.md README.md
|
||||||
|
2026-02-04T21:32:01 | .claude-plugin | /home/lmiranda/claude-plugins-work/.claude-plugin/marketplace-lean.json | CLAUDE.md .claude-plugin/marketplace.json
|
||||||
|
|||||||
31
CHANGELOG.md
31
CHANGELOG.md
@@ -6,15 +6,40 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## [8.0.0] - 2026-02-06
|
||||||
|
|
||||||
|
### BREAKING CHANGES
|
||||||
|
|
||||||
|
#### Domain Metadata Required (v8.0.0)
|
||||||
|
|
||||||
|
All plugin manifests now require a `domain` field. `validate-marketplace.sh` rejects plugins without it.
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- **marketplace:** `domain` field added to all 12 `plugin.json` files and all `marketplace.json` entries
|
||||||
|
- **marketplace:** Domain validation in `validate-marketplace.sh` — validates presence, allowed values, and cross-file consistency
|
||||||
|
- **marketplace:** New launch profiles: `saas`, `ops`, `debug` in `claude-launch.sh`
|
||||||
|
- **marketplace:** `data-seed` added to `data` launch profile (forward-looking)
|
||||||
|
- **docs:** Domain metadata conventions in `CANONICAL-PATHS.md`
|
||||||
|
- **docs:** Domain field requirements in `CLAUDE.md` "Adding a New Plugin" section
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- `validate-marketplace.sh` now requires `domain` in both `plugin.json` and `marketplace.json` (breaking change for validation pipeline)
|
||||||
|
- `claude-launch.sh` profiles expanded: sprint, data, saas, ops, review, debug, full
|
||||||
|
|
||||||
|
### Deprecated
|
||||||
|
|
||||||
|
- `infra` launch profile — use `ops` instead (auto-redirects with warning)
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Confirmed projman `metadata.json` exists with gitea MCP mapping
|
- Confirmed projman `metadata.json` exists with gitea MCP mapping
|
||||||
- Synced `marketplace-full.json` and `marketplace-lean.json` to current version (were stale)
|
- Synced `marketplace-full.json` and `marketplace-lean.json` to current version (were stale)
|
||||||
- Added `metadata.json` validation to `validate-marketplace.sh` — rejects `mcp_servers` in `plugin.json`, verifies MCP server references
|
- Added `metadata.json` validation to `validate-marketplace.sh` — rejects `mcp_servers` in `plugin.json`, verifies MCP server references
|
||||||
- Updated `CANONICAL-PATHS.md` to current version
|
- Updated `CANONICAL-PATHS.md` to current version
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- Deprecated `switch-profile.sh` in favor of `claude-launch.sh`
|
- Deprecated `switch-profile.sh` in favor of `claude-launch.sh`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
25
CLAUDE.md
25
CLAUDE.md
@@ -391,13 +391,32 @@ Stored in Gitea Wiki under `lessons-learned/sprints/`.
|
|||||||
|
|
||||||
### Adding a New Plugin
|
### Adding a New Plugin
|
||||||
|
|
||||||
1. Create `plugins/{name}/.claude-plugin/plugin.json`
|
1. Create `plugins/{name}/.claude-plugin/plugin.json` — must include `"domain"` field (`core`, `data`, `saas`, `ops`, or `debug`)
|
||||||
2. Add entry to `.claude-plugin/marketplace.json` with category, tags, license
|
2. Add entry to `.claude-plugin/marketplace.json` with category, tags, license, and `"domain"` field (must match plugin.json)
|
||||||
3. Create `claude-md-integration.md`
|
3. Create `claude-md-integration.md`
|
||||||
4. If using new MCP server, add to root `mcp-servers/` and update `.mcp.json`
|
4. If using new MCP server, add to root `mcp-servers/` and update `.mcp.json`
|
||||||
5. Run `./scripts/validate-marketplace.sh`
|
5. Run `./scripts/validate-marketplace.sh` — rejects plugins without valid `domain` field
|
||||||
6. Update `CHANGELOG.md`
|
6. Update `CHANGELOG.md`
|
||||||
|
|
||||||
|
**Domain field is required (v8.0.0+):**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "plugin-name",
|
||||||
|
"domain": "core",
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Naming convention:** New plugins use domain prefix (`saas-*`, `ops-*`, `data-*`, `debug-*`). Core plugins have no prefix.
|
||||||
|
|
||||||
|
### Domain Assignments
|
||||||
|
|
||||||
|
| Domain | Plugins |
|
||||||
|
|--------|---------|
|
||||||
|
| `core` | projman, git-flow, pr-review, code-sentinel, doc-guardian, clarity-assist, contract-validator, claude-config-maintainer, project-hygiene |
|
||||||
|
| `data` | data-platform, viz-platform |
|
||||||
|
| `ops` | cmdb-assistant |
|
||||||
|
|
||||||
### Adding a Command to projman
|
### Adding a Command to projman
|
||||||
|
|
||||||
1. Create `plugins/projman/commands/{name}.md`
|
1. Create `plugins/projman/commands/{name}.md`
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Leo Claude Marketplace - v7.1.0
|
# Leo Claude Marketplace - v8.0.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.
|
||||||
|
|
||||||
|
|||||||
@@ -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-02-04 (v7.1.0)
|
Last Updated: 2026-02-06 (v8.0.0)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -172,6 +172,33 @@ leo-claude-mktplace/
|
|||||||
|
|
||||||
## Path Patterns (MANDATORY)
|
## Path Patterns (MANDATORY)
|
||||||
|
|
||||||
|
### Phase 1a Paths (v8.1.0)
|
||||||
|
|
||||||
|
New files added in v8.1.0:
|
||||||
|
|
||||||
|
```
|
||||||
|
plugins/projman/commands/project.md
|
||||||
|
plugins/projman/commands/project-initiation.md
|
||||||
|
plugins/projman/commands/project-plan.md
|
||||||
|
plugins/projman/commands/project-status.md
|
||||||
|
plugins/projman/commands/project-close.md
|
||||||
|
plugins/projman/commands/adr.md
|
||||||
|
plugins/projman/commands/adr-create.md
|
||||||
|
plugins/projman/commands/adr-list.md
|
||||||
|
plugins/projman/commands/adr-update.md
|
||||||
|
plugins/projman/commands/adr-supersede.md
|
||||||
|
plugins/projman/skills/source-analysis.md
|
||||||
|
plugins/projman/skills/project-charter.md
|
||||||
|
plugins/projman/skills/adr-conventions.md
|
||||||
|
plugins/projman/skills/epic-conventions.md
|
||||||
|
plugins/projman/skills/wbs.md
|
||||||
|
plugins/projman/skills/risk-register.md
|
||||||
|
plugins/projman/skills/sprint-roadmap.md
|
||||||
|
plugins/projman/skills/wiki-conventions.md
|
||||||
|
plugins/project-hygiene/commands/hygiene-check.md
|
||||||
|
plugins/contract-validator/commands/cv-status.md
|
||||||
|
```
|
||||||
|
|
||||||
### Plugin Paths
|
### Plugin Paths
|
||||||
|
|
||||||
| Context | Pattern | Example |
|
| Context | Pattern | Example |
|
||||||
@@ -312,10 +339,63 @@ All MCP servers are defined in `.mcp.json` at repository root:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Domain Metadata
|
||||||
|
|
||||||
|
### Domain Field Locations
|
||||||
|
|
||||||
|
Both manifest files require a `domain` field (v8.0.0+):
|
||||||
|
|
||||||
|
| Location | Field | Example |
|
||||||
|
|----------|-------|---------|
|
||||||
|
| `plugins/{name}/.claude-plugin/plugin.json` | `"domain": "core"` | `plugins/projman/.claude-plugin/plugin.json` |
|
||||||
|
| `.claude-plugin/marketplace.json` | `"domain": "core"` per plugin entry | `.claude-plugin/marketplace.json` |
|
||||||
|
|
||||||
|
### Allowed Domain Values
|
||||||
|
|
||||||
|
| Domain | Purpose | Existing Plugins |
|
||||||
|
|--------|---------|-----------------|
|
||||||
|
| `core` | Development workflow plugins | projman, git-flow, pr-review, code-sentinel, doc-guardian, clarity-assist, contract-validator, claude-config-maintainer, project-hygiene |
|
||||||
|
| `data` | Data engineering and visualization | data-platform, viz-platform |
|
||||||
|
| `ops` | Operations and infrastructure | cmdb-assistant |
|
||||||
|
| `saas` | SaaS application development | (Phase 2) |
|
||||||
|
| `debug` | Debugging and diagnostics | (Phase 2) |
|
||||||
|
|
||||||
|
### Plugin Naming Convention
|
||||||
|
|
||||||
|
- **Core plugins:** No prefix (existing names never change)
|
||||||
|
- **New plugins:** Domain prefix: `saas-*`, `ops-*`, `data-*`, `debug-*`
|
||||||
|
- Domain is always in metadata — prefix is a naming convention, not a requirement
|
||||||
|
|
||||||
|
### Domain Query Examples
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# List all plugins in a domain
|
||||||
|
jq '.plugins[] | select(.domain=="saas") | .name' .claude-plugin/marketplace.json
|
||||||
|
|
||||||
|
# Count plugins per domain
|
||||||
|
jq '[.plugins[] | .domain] | group_by(.) | map({domain: .[0], count: length})' .claude-plugin/marketplace.json
|
||||||
|
```
|
||||||
|
|
||||||
|
### Future Plugin Path Patterns
|
||||||
|
|
||||||
|
```
|
||||||
|
plugins/saas-api-platform/
|
||||||
|
plugins/saas-db-migrate/
|
||||||
|
plugins/saas-react-platform/
|
||||||
|
plugins/saas-test-pilot/
|
||||||
|
plugins/data-seed/
|
||||||
|
plugins/ops-release-manager/
|
||||||
|
plugins/ops-deploy-pipeline/
|
||||||
|
plugins/debug-mcp/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Change Log
|
## Change Log
|
||||||
|
|
||||||
| Date | Change | By |
|
| Date | Change | By |
|
||||||
|------|--------|-----|
|
|------|--------|-----|
|
||||||
|
| 2026-02-06 | v8.0.0: Added domain metadata section, Phase 1a paths, future plugin paths | Claude Code |
|
||||||
| 2026-02-04 | v7.1.0: Added profile configs, prompts/, project-lessons-learned/, metadata.json, deprecated switch-profile.sh | Claude Code |
|
| 2026-02-04 | v7.1.0: Added profile configs, prompts/, project-lessons-learned/, metadata.json, deprecated switch-profile.sh | Claude Code |
|
||||||
| 2026-01-30 | v5.5.0: Removed plugin-level mcp-servers symlinks - all MCP config now in root .mcp.json | Claude Code |
|
| 2026-01-30 | v5.5.0: Removed plugin-level mcp-servers symlinks - all MCP config now in root .mcp.json | Claude Code |
|
||||||
| 2026-01-26 | v5.0.0: Added contract-validator plugin and MCP server | Claude Code |
|
| 2026-01-26 | v5.0.0: Added contract-validator plugin and MCP server | Claude Code |
|
||||||
|
|||||||
@@ -16,5 +16,8 @@
|
|||||||
"requirements",
|
"requirements",
|
||||||
"methodology"
|
"methodology"
|
||||||
],
|
],
|
||||||
"commands": ["./commands/"]
|
"commands": [
|
||||||
|
"./commands/"
|
||||||
|
],
|
||||||
|
"domain": "core"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,5 +18,8 @@
|
|||||||
"settings",
|
"settings",
|
||||||
"permissions"
|
"permissions"
|
||||||
],
|
],
|
||||||
"commands": ["./commands/"]
|
"commands": [
|
||||||
|
"./commands/"
|
||||||
|
],
|
||||||
|
"domain": "core"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,5 +19,8 @@
|
|||||||
"data-quality",
|
"data-quality",
|
||||||
"validation"
|
"validation"
|
||||||
],
|
],
|
||||||
"commands": ["./commands/"]
|
"commands": [
|
||||||
|
"./commands/"
|
||||||
|
],
|
||||||
|
"domain": "ops"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,15 @@
|
|||||||
"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/code-sentinel/README.md",
|
||||||
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
|
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": ["security", "refactoring", "code-quality", "static-analysis", "hooks"],
|
"keywords": [
|
||||||
"commands": ["./commands/"]
|
"security",
|
||||||
|
"refactoring",
|
||||||
|
"code-quality",
|
||||||
|
"static-analysis",
|
||||||
|
"hooks"
|
||||||
|
],
|
||||||
|
"commands": [
|
||||||
|
"./commands/"
|
||||||
|
],
|
||||||
|
"domain": "core"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,5 +17,8 @@
|
|||||||
"interfaces",
|
"interfaces",
|
||||||
"cross-plugin"
|
"cross-plugin"
|
||||||
],
|
],
|
||||||
"commands": ["./commands/"]
|
"commands": [
|
||||||
|
"./commands/"
|
||||||
|
],
|
||||||
|
"domain": "core"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,5 +18,8 @@
|
|||||||
"etl",
|
"etl",
|
||||||
"dataframe"
|
"dataframe"
|
||||||
],
|
],
|
||||||
"commands": ["./commands/"]
|
"commands": [
|
||||||
|
"./commands/"
|
||||||
|
],
|
||||||
|
"domain": "data"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,15 @@
|
|||||||
"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/doc-guardian/README.md",
|
||||||
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
|
"repository": "https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace.git",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"keywords": ["documentation", "sync", "drift-detection", "automation", "hooks"],
|
"keywords": [
|
||||||
"commands": ["./commands/"]
|
"documentation",
|
||||||
|
"sync",
|
||||||
|
"drift-detection",
|
||||||
|
"automation",
|
||||||
|
"hooks"
|
||||||
|
],
|
||||||
|
"commands": [
|
||||||
|
"./commands/"
|
||||||
|
],
|
||||||
|
"domain": "core"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,5 +16,8 @@
|
|||||||
"branch",
|
"branch",
|
||||||
"automation"
|
"automation"
|
||||||
],
|
],
|
||||||
"commands": ["./commands/"]
|
"commands": [
|
||||||
|
"./commands/"
|
||||||
|
],
|
||||||
|
"domain": "core"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,5 +16,8 @@
|
|||||||
"performance",
|
"performance",
|
||||||
"multi-agent"
|
"multi-agent"
|
||||||
],
|
],
|
||||||
"commands": ["./commands/"]
|
"commands": [
|
||||||
|
"./commands/"
|
||||||
|
],
|
||||||
|
"domain": "core"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,5 +28,6 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
|
"domain": "core"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,5 +16,8 @@
|
|||||||
"agile",
|
"agile",
|
||||||
"lessons-learned"
|
"lessons-learned"
|
||||||
],
|
],
|
||||||
"commands": ["./commands/"]
|
"commands": [
|
||||||
|
"./commands/"
|
||||||
|
],
|
||||||
|
"domain": "core"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,5 +19,8 @@
|
|||||||
"visualization",
|
"visualization",
|
||||||
"dmc"
|
"dmc"
|
||||||
],
|
],
|
||||||
"commands": ["./commands/"]
|
"commands": [
|
||||||
|
"./commands/"
|
||||||
|
],
|
||||||
|
"domain": "data"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,9 +6,11 @@
|
|||||||
#
|
#
|
||||||
# Profiles:
|
# Profiles:
|
||||||
# sprint - Project management, git, PR review, security, docs (default)
|
# sprint - Project management, git, PR review, security, docs (default)
|
||||||
# infra - Infrastructure/CMDB management
|
|
||||||
# data - Data engineering and visualization
|
# data - Data engineering and visualization
|
||||||
|
# saas - SaaS development (API, frontend, DB, testing)
|
||||||
|
# ops - Operations and infrastructure (CMDB, releases, deploy)
|
||||||
# review - Code review only (lightweight)
|
# review - Code review only (lightweight)
|
||||||
|
# debug - MCP debugging tools
|
||||||
# full - All plugins via marketplace.json (~22K tokens)
|
# full - All plugins via marketplace.json (~22K tokens)
|
||||||
#
|
#
|
||||||
# Examples:
|
# Examples:
|
||||||
@@ -42,18 +44,28 @@ fi
|
|||||||
# Define plugin lists for each profile
|
# Define plugin lists for each profile
|
||||||
declare -A PROFILES
|
declare -A PROFILES
|
||||||
PROFILES[sprint]="projman git-flow pr-review code-sentinel doc-guardian clarity-assist"
|
PROFILES[sprint]="projman git-flow pr-review code-sentinel doc-guardian clarity-assist"
|
||||||
PROFILES[infra]="cmdb-assistant"
|
PROFILES[infra]="DEPRECATED"
|
||||||
PROFILES[data]="data-platform viz-platform"
|
PROFILES[data]="data-platform viz-platform data-seed"
|
||||||
|
PROFILES[saas]="saas-api-platform saas-react-platform saas-db-migrate saas-test-pilot"
|
||||||
|
PROFILES[ops]="cmdb-assistant ops-release-manager ops-deploy-pipeline"
|
||||||
PROFILES[review]="pr-review code-sentinel"
|
PROFILES[review]="pr-review code-sentinel"
|
||||||
|
PROFILES[debug]="debug-mcp"
|
||||||
PROFILES[full]="" # Empty = use marketplace.json
|
PROFILES[full]="" # Empty = use marketplace.json
|
||||||
|
|
||||||
# Validate profile
|
# Validate profile
|
||||||
if [[ ! ${PROFILES[$PROFILE]+_} ]]; then
|
if [[ ! ${PROFILES[$PROFILE]+_} ]]; then
|
||||||
echo -e "${YELLOW}Unknown profile: $PROFILE${NC}"
|
echo -e "${YELLOW}Unknown profile: $PROFILE${NC}"
|
||||||
echo "Available profiles: sprint, infra, data, review, full"
|
echo "Available profiles: sprint, data, saas, ops, review, debug, full"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Handle deprecated profiles
|
||||||
|
if [[ "$PROFILE" == "infra" ]]; then
|
||||||
|
echo -e "${YELLOW}Warning: 'infra' profile is deprecated. Use 'ops' instead.${NC}"
|
||||||
|
echo -e "${YELLOW} The 'ops' profile includes cmdb-assistant plus future ops plugins.${NC}"
|
||||||
|
PROFILE="ops"
|
||||||
|
fi
|
||||||
|
|
||||||
# Build --plugin-dir arguments
|
# Build --plugin-dir arguments
|
||||||
PLUGIN_ARGS=()
|
PLUGIN_ARGS=()
|
||||||
PLUGIN_LIST="${PROFILES[$PROFILE]}"
|
PLUGIN_LIST="${PROFILES[$PROFILE]}"
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ set -euo pipefail
|
|||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||||
|
|
||||||
|
# v8.0.0: Valid domain values
|
||||||
|
VALID_DOMAINS="core data saas ops debug"
|
||||||
|
|
||||||
echo "=== Validating Marketplace ==="
|
echo "=== Validating Marketplace ==="
|
||||||
|
|
||||||
# Check marketplace.json exists and is valid JSON
|
# Check marketplace.json exists and is valid JSON
|
||||||
@@ -89,6 +92,18 @@ for i in $(seq 0 $((PLUGIN_COUNT - 1))); do
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# v8.0.0: Check domain field
|
||||||
|
PLUGIN_DOMAIN=$(jq -r ".plugins[$i].domain // empty" "$MARKETPLACE_JSON")
|
||||||
|
if [[ -z "$PLUGIN_DOMAIN" ]]; then
|
||||||
|
echo "ERROR: Missing 'domain' in marketplace entry for $PLUGIN_NAME (required v8.0.0+)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! echo "$VALID_DOMAINS" | grep -qw "$PLUGIN_DOMAIN"; then
|
||||||
|
echo "ERROR: Invalid domain '$PLUGIN_DOMAIN' in marketplace entry for $PLUGIN_NAME (allowed: $VALID_DOMAINS)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo " ✓ domain: $PLUGIN_DOMAIN"
|
||||||
|
|
||||||
echo "✓ Marketplace entry $PLUGIN_NAME valid"
|
echo "✓ Marketplace entry $PLUGIN_NAME valid"
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -143,6 +158,18 @@ for plugin_dir in "$PLUGINS_DIR"/*/; do
|
|||||||
echo "WARNING: Missing 'keywords' array in $plugin_name/plugin.json"
|
echo "WARNING: Missing 'keywords' array in $plugin_name/plugin.json"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# v8.0.0: Check domain field in plugin.json
|
||||||
|
PLUGIN_DOMAIN_PJ=$(jq -r '.domain // empty' "$plugin_json")
|
||||||
|
if [[ -z "$PLUGIN_DOMAIN_PJ" ]]; then
|
||||||
|
echo "ERROR: Missing 'domain' in $plugin_name/plugin.json (required v8.0.0+)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! echo "$VALID_DOMAINS" | grep -qw "$PLUGIN_DOMAIN_PJ"; then
|
||||||
|
echo "ERROR: Invalid domain '$PLUGIN_DOMAIN_PJ' in $plugin_name/plugin.json (allowed: $VALID_DOMAINS)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo " ✓ domain: $PLUGIN_DOMAIN_PJ"
|
||||||
|
|
||||||
# Check README exists
|
# Check README exists
|
||||||
if [[ ! -f "$plugin_dir/README.md" ]]; then
|
if [[ ! -f "$plugin_dir/README.md" ]]; then
|
||||||
echo "WARNING: Missing README.md in $plugin_name/"
|
echo "WARNING: Missing README.md in $plugin_name/"
|
||||||
@@ -297,5 +324,22 @@ if [[ ! -f "$ROOT_DIR/.mcp.json" ]]; then
|
|||||||
fi
|
fi
|
||||||
echo "✓ .mcp.json configuration exists"
|
echo "✓ .mcp.json configuration exists"
|
||||||
|
|
||||||
|
# v8.0.0: Cross-validate domains match between marketplace.json and plugin.json
|
||||||
|
echo ""
|
||||||
|
echo "=== Cross-Validating Domain Fields ==="
|
||||||
|
for i in $(seq 0 $((PLUGIN_COUNT - 1))); do
|
||||||
|
PLUGIN_NAME=$(jq -r ".plugins[$i].name" "$MARKETPLACE_JSON")
|
||||||
|
MARKETPLACE_DOMAIN=$(jq -r ".plugins[$i].domain" "$MARKETPLACE_JSON")
|
||||||
|
PLUGIN_JSON_PATH="$PLUGINS_DIR/$PLUGIN_NAME/.claude-plugin/plugin.json"
|
||||||
|
if [[ -f "$PLUGIN_JSON_PATH" ]]; then
|
||||||
|
PLUGIN_DOMAIN=$(jq -r '.domain' "$PLUGIN_JSON_PATH")
|
||||||
|
if [[ "$MARKETPLACE_DOMAIN" != "$PLUGIN_DOMAIN" ]]; then
|
||||||
|
echo "ERROR: Domain mismatch for $PLUGIN_NAME: marketplace.json='$MARKETPLACE_DOMAIN' vs plugin.json='$PLUGIN_DOMAIN'"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✓ $PLUGIN_NAME domain consistent: $MARKETPLACE_DOMAIN"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== All validations passed ==="
|
echo "=== All validations passed ==="
|
||||||
|
|||||||
Reference in New Issue
Block a user