73 Commits
v5.9.0 ... main

Author SHA1 Message Date
ab3847c656 Merge pull request 'development' (#424) from development into main
Reviewed-on: #424
2026-02-04 02:53:11 +00:00
76105e98e0 Merge pull request 'refactor!: Command namespace rename (v7.0.0 breaking change)' (#423) from refactor/command-namespace-rename into development
Reviewed-on: #423
2026-02-04 02:52:53 +00:00
da628a3774 docs: fix remaining stale command references in UPDATING.md and CONFIGURATION.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 21:31:29 -05:00
2d6fce9285 chore: bump version to 7.0.0, add CHANGELOG entry
BREAKING CHANGE: command namespace rename - see CHANGELOG.md

Merged unreleased 6.0.0 content (plan-then-batch optimization) into 7.0.0.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 21:21:53 -05:00
a04a3c7a60 docs: update all cross-cutting documentation for v7.0.0 namespace rename
Updated:
- docs/COMMANDS-CHEATSHEET.md - command reference table + all workflow examples
- docs/CONFIGURATION.md - setup commands + plugin config table
- README.md - all plugin command lists
- CLAUDE.md - command reference tables

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 21:19:59 -05:00
4ba38eb620 refactor: update internal command references in all plugin files
Updated:
- projman: 4 commands + 4 skills + integration snippet
- git-flow: 4 commands + 3 skills + integration snippet
- pr-review: 1 command cross-reference
- cmdb-assistant: 1 command + 1 skill
- data-platform: 8 commands + integration snippet
- viz-platform: 11 commands + integration snippet
- contract-validator: 1 command + 1 skill + 1 agent

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 21:16:00 -05:00
71f1f3239a refactor: rename command files for namespace consistency
BREAKING CHANGE: All generic command names now prefixed with plugin namespace.
See CHANGELOG.md v7.0.0 for complete rename map.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 21:07:18 -05:00
49891c1e0c Merge pull request 'development' (#422) from development into main
Reviewed-on: #422
2026-02-04 01:09:37 +00:00
c6182a3fda Merge pull request 'feat(projman): add plan-then-batch skill optimization' (#421) from feat/plan-then-batch-optimization into development
Reviewed-on: #421
2026-02-04 00:59:03 +00:00
0e70156e26 feat(projman): add plan-then-batch skill optimization
Separate cognitive work from mechanical API execution to reduce
skill-related token consumption by ~76-83% during sprint workflows.

Changes:
- Add batch-execution.md skill with 4-phase protocol
- Promote mcp-tools-reference and batch-execution to frontmatter
  for planner and orchestrator agents (auto-injected, zero re-read)
- Replace "Skills to Load" with phase-based "Skill Loading Protocol"
- Restructure planning-workflow.md Steps 8-10 for batch execution
- Update agent matrix in CLAUDE.md and docs/CONFIGURATION.md
- Add Phase-Based Skill Loading documentation section
- Clean up .gitignore (transient files, dev symlinks)

Token impact:
- 6-issue sprint planning: ~76% reduction
- 10-issue sprint planning: ~80% reduction
- 8-issue status updates: ~83% reduction

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 19:57:10 -05:00
01c225540b Merge pull request 'development' (#420) from development into main
Reviewed-on: #420
2026-02-03 20:48:48 +00:00
52c5be32c4 Merge pull request 'chore: release v5.10.0' (#419) from chore/release-5.10.0 into development
Reviewed-on: #419
2026-02-03 20:48:33 +00:00
46e83bc711 chore: release v5.10.0
- NetBox MCP: Module-based tool filtering for token optimization
- Gitea MCP: Standardized build backend to setuptools
- cmdb-assistant: Fixed documentation tool name references

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 15:11:15 -05:00
c0443a7f36 Merge pull request 'development' (#418) from development into main
Reviewed-on: #418
2026-02-03 20:07:40 +00:00
c4dd4ee25d Merge pull request 'fix(gitea): standardize build backend to setuptools' (#417) from fix/gitea-mcp-setuptools into development
Reviewed-on: #417
2026-02-03 20:07:24 +00:00
184ab48933 fix(gitea): standardize build backend to setuptools
Replace hatchling with setuptools to match all other MCP servers
(contract-validator, viz-platform, data-platform).

Changes:
- build-system: hatchling → setuptools>=61.0
- license: string → PEP 639 format {text = "MIT"}
- Remove redundant License classifier
- Add [tool.setuptools.packages.find] config
- Add [tool.pytest.ini_options] for consistency

Verified: pip install -e . succeeds, 36 tools registered, 64 tests pass.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 15:05:56 -05:00
a741ec3f88 Merge pull request 'development' (#416) from development into main
Reviewed-on: #416
2026-02-03 19:47:50 +00:00
f1732f07c1 Merge pull request 'feat(gitea): add pip-installable packaging for external consumption' (#415) from feat/gitea-mcp-packaging into development
Reviewed-on: #415
2026-02-03 19:47:33 +00:00
f9df3b57ea Merge pull request 'development' (#414) from development into main
Reviewed-on: #414
2026-02-03 19:23:55 +00:00
b0e6d738fa Merge pull request 'fix(gitea): fix 15 failing tests and update documentation' (#413) from fix/gitea-mcp-tests-docs into development
Reviewed-on: #413
2026-02-03 19:23:41 +00:00
9044fe28ec fix(gitea): fix 15 failing tests and update documentation
Test Fixes:
- Fix mock_config fixture to use 'owner/repo' format (was separate fields)
- Update test_client_initialization to match current client API
- Add required 'org' argument to get_org_labels, list_repos, aggregate_issues tests
- Update error message assertion in test_no_repo_specified_error
- Fix test_create_issue to mock is_org_repo and label resolution
- Update aggregate_issues tests in test_issues.py with org argument

Documentation Updates:
- Expand tools table from 8 to 36 tools (organized by category)
- Update directory structure to show all 6 tool files
- Remove unused GITEA_OWNER from configuration docs
- Add automatic repository detection documentation
- Add project directory detection strategies
- Update test count from 42 to 64
- Create CHANGELOG.md with full version history

All 64 tests now pass. No production code changes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 14:22:02 -05:00
c37107fc42 feat(gitea): add pip-installable packaging for external consumption
Extract tool definitions and dispatcher from server.py into tool_registry.py
to enable transport-agnostic reuse. External consumers (e.g., HTTP transport
in gitea-mcp-remote) can now import and use the Gitea MCP tools without
duplicating code.

Changes:
- Create pyproject.toml with PEP 621 compliant package manifest (hatchling)
- Create tool_registry.py with get_tool_definitions() and create_tool_dispatcher()
- Refactor server.py to use registry (1100 -> 93 lines)
- Update __init__.py with package exports and __version__

The tool_filter parameter enables selective tool exposure for remote servers.
Stdio transport behavior is unchanged - all 36 tools still work identically.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 13:57:59 -05:00
841ce67dae Merge pull request 'development' (#412) from development into main
Reviewed-on: #412
2026-02-03 17:12:09 +00:00
da0be51946 Merge pull request 'feat(netbox): add module-based tool filtering for token optimization' (#411) from feat/netbox-module-filtering into development
Reviewed-on: #411
2026-02-03 17:11:44 +00:00
d9d80d77cb feat(netbox): add module-based tool filtering for token optimization
Reduces NetBox MCP context token consumption from ~19,810 tokens (182 tools)
to ~4,500 tokens (~43 tools) by enabling environment-variable-driven module
filtering.

Key changes:
- Add NETBOX_ENABLED_MODULES env var to config.py
- Filter tool registration based on enabled modules in server.py
- Conditional tool class instantiation for memory efficiency
- Routing guard with clear error messages for disabled modules
- Startup logging shows enabled modules and tool count

Also fixes documentation referencing incorrect tool names:
- virtualization_* → virt_* in cmdb-assistant docs
- wireless_* → wlan_* in README
- circuits_list_circuit_terminations → circ_list_terminations

Recommended config for cmdb-assistant users:
NETBOX_ENABLED_MODULES=dcim,ipam,virtualization,extras

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 12:08:46 -05:00
3557f17177 Merge pull request 'development' (#410) from development into main
Reviewed-on: #410
2026-02-03 16:11:00 +00:00
a005610a37 Merge pull request 'feat(agents): add permissionMode, disallowedTools, skills frontmatter to all 25 agents' (#409) from feat/agent-frontmatter-hardening-v3 into development
Reviewed-on: #409
2026-02-03 16:10:25 +00:00
19ba80191f feat(agents): add permissionMode, disallowedTools, skills frontmatter to all 25 agents
- permissionMode: 1 bypassPermissions, 7 acceptEdits, 7 default, 10 plan
- disallowedTools: 12 agents blocked from Write/Edit/MultiEdit
- model: promote Planner + Code Reviewer to opus
- skills: auto-inject on Executor (7), Code Reviewer (4), Maintainer (2)
- docs: CLAUDE.md + CONFIGURATION.md updated with full agent matrix

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 11:08:49 -05:00
8f9ba64688 Merge pull request 'development' (#408) from development into main
Reviewed-on: #408
2026-02-03 07:42:17 +00:00
e35e22cffb Merge pull request 'chore: release v5.9.0' (#407) from release/v5.9.0 into development
Reviewed-on: #407
2026-02-03 07:41:20 +00:00
0ea30e0d75 Merge pull request 'development' (#406) from development into main
Reviewed-on: #406
2026-02-03 07:15:10 +00:00
c530f568ed Merge pull request 'development' (#404) from development into main
Reviewed-on: #404
2026-02-03 03:40:17 +00:00
027ae660c4 Merge pull request 'development' (#402) from development into main
Reviewed-on: #402
2026-02-03 03:15:17 +00:00
5e20c6b6ef Merge pull request 'development' (#400) from development into main
Reviewed-on: #400
2026-02-03 02:58:24 +00:00
5e20a4a229 Merge pull request 'development' (#398) from development into main
Reviewed-on: #398
2026-02-03 01:40:43 +00:00
56c9a38813 Merge pull request 'development' (#396) from development into main
Reviewed-on: #396
2026-02-03 00:38:17 +00:00
67d769e9e5 Merge pull request 'development' (#394) from development into main
Reviewed-on: #394
2026-02-02 22:03:39 +00:00
3d2f14b0ab Merge pull request 'development' (#392) from development into main
Reviewed-on: #392
2026-02-02 21:03:07 +00:00
b76e53c215 Merge pull request 'development' (#390) from development into main
Reviewed-on: #390
2026-02-02 19:30:43 +00:00
3d96f6b505 Merge pull request 'development' (#388) from development into main
Reviewed-on: #388
2026-02-02 19:10:30 +00:00
edee44088c Merge pull request 'development' (#385) from development into main
Reviewed-on: #385
2026-02-02 16:49:08 +00:00
938ddd7b69 Merge pull request 'development' (#383) from development into main
Reviewed-on: #383
2026-02-02 16:27:41 +00:00
aa68883f87 Merge pull request 'development' (#381) from development into main
Reviewed-on: #381
2026-02-02 14:57:54 +00:00
dd36a79bcb Merge pull request 'development' (#379) from development into main
Reviewed-on: #379
2026-02-02 14:50:21 +00:00
091e3d25f3 Merge pull request 'development' (#372) from development into main
Reviewed-on: #372
2026-02-02 00:11:11 +00:00
b605a2de5e Merge pull request 'development' (#354) from development into main
Reviewed-on: #354
2026-02-01 19:33:57 +00:00
4aa0baa2a6 Merge pull request 'development' (#352) from development into main
Reviewed-on: #352
2026-02-01 19:10:34 +00:00
e3db084195 Merge pull request 'development' (#349) from development into main
Reviewed-on: #349
2026-02-01 18:49:22 +00:00
2a92211b28 Merge pull request 'development' (#347) from development into main
Reviewed-on: #347
2026-01-31 21:15:06 +00:00
de6cba5f31 Merge pull request 'development' (#345) from development into main
Reviewed-on: #345
2026-01-31 19:28:42 +00:00
31dcf0338c Merge pull request 'development' (#343) from development into main
Reviewed-on: #343
2026-01-30 23:15:45 +00:00
569dc9a8f2 Merge pull request 'development' (#341) from development into main
Reviewed-on: #341
2026-01-30 23:07:33 +00:00
7217790143 Merge pull request 'development' (#339) from development into main
Reviewed-on: #339
2026-01-30 22:35:42 +00:00
97159274c7 Merge pull request 'development' (#337) from development into main
Reviewed-on: #337
2026-01-30 20:04:20 +00:00
5cf4b4a78c Merge pull request 'development' (#335) from development into main
Reviewed-on: #335
2026-01-30 18:24:55 +00:00
96a612a1f4 Merge pull request 'development' (#333) from development into main
Reviewed-on: #333
2026-01-30 17:15:50 +00:00
47a3a8b48a Merge pull request 'development' (#330) from development into main
Reviewed-on: #330
2026-01-30 16:50:26 +00:00
1b75b10fec Merge pull request 'development' (#328) from development into main
Reviewed-on: #328
2026-01-30 16:36:27 +00:00
e925f80252 Merge pull request 'development' (#326) from development into main
Reviewed-on: #326
2026-01-29 23:10:38 +00:00
b1070aac52 Merge pull request 'development' (#320) from development into main
Reviewed-on: #320
2026-01-29 17:13:12 +00:00
d2b6560fba Merge pull request 'development' (#318) from development into main
Reviewed-on: #318
2026-01-29 17:00:15 +00:00
4b1c561bb6 Merge pull request 'development' (#316) from development into main
Reviewed-on: #316
2026-01-29 03:20:50 +00:00
786d3c0013 Merge pull request 'development' (#314) from development into main
Reviewed-on: #314
2026-01-29 03:13:15 +00:00
59cc67f857 Merge pull request 'development' (#311) from development into main
Reviewed-on: #311
2026-01-29 03:03:54 +00:00
6613ef1d67 Merge pull request 'development' (#301) from development into main
Reviewed-on: #301
2026-01-29 02:26:42 +00:00
6619d0a2fb Merge pull request 'development' (#299) from development into main
Reviewed-on: #299
2026-01-29 02:19:11 +00:00
dc08ce1439 Merge pull request 'development' (#293) from development into main
Reviewed-on: #293
2026-01-29 01:42:49 +00:00
2173f3389a Merge pull request 'development' (#289) from development into main
Reviewed-on: #289
2026-01-28 22:49:18 +00:00
fab1345bcb Merge pull request 'development' (#286) from development into main
Reviewed-on: #286
2026-01-28 22:41:07 +00:00
36e6ac2dd0 Merge pull request 'development' (#283) from development into main
Reviewed-on: #283
2026-01-28 21:48:57 +00:00
3e0e779803 Merge pull request 'development' (#280) from development into main
Reviewed-on: #280
2026-01-28 20:37:52 +00:00
74198743ab Merge pull request 'development' (#271) from development into main
Reviewed-on: #271
2026-01-28 19:27:45 +00:00
d57bff184e Merge pull request 'development' (#265) from development into main
Reviewed-on: #265
2026-01-28 18:45:38 +00:00
98 changed files with 2496 additions and 1476 deletions

View File

@@ -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.9.0" "version": "7.0.0"
}, },
"plugins": [ "plugins": [
{ {

View File

@@ -25,3 +25,41 @@
2026-02-02T13:52:07 | skills | /home/lmiranda/claude-plugins-work/plugins/contract-validator/skills/mcp-tools-reference.md | README.md 2026-02-02T13:52:07 | skills | /home/lmiranda/claude-plugins-work/plugins/contract-validator/skills/mcp-tools-reference.md | README.md
2026-02-02T13:59:09 | skills | /home/lmiranda/claude-plugins-work/plugins/projman/skills/progress-tracking.md | README.md 2026-02-02T13:59:09 | skills | /home/lmiranda/claude-plugins-work/plugins/projman/skills/progress-tracking.md | README.md
2026-02-02T14:01:34 | commands | /home/lmiranda/claude-plugins-work/plugins/projman/commands/test.md | docs/COMMANDS-CHEATSHEET.md README.md 2026-02-02T14:01:34 | commands | /home/lmiranda/claude-plugins-work/plugins/projman/commands/test.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:08:38 | commands | /home/lmiranda/claude-plugins-work/plugins/git-flow/commands/git-commit.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:08:39 | commands | /home/lmiranda/claude-plugins-work/plugins/git-flow/commands/git-commit-push.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:08:40 | commands | /home/lmiranda/claude-plugins-work/plugins/git-flow/commands/git-commit-merge.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:08:41 | commands | /home/lmiranda/claude-plugins-work/plugins/git-flow/commands/git-commit-sync.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:08:49 | commands | /home/lmiranda/claude-plugins-work/plugins/cmdb-assistant/commands/cmdb-setup.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:08:50 | commands | /home/lmiranda/claude-plugins-work/plugins/pr-review/commands/project-init.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:08:51 | skills | /home/lmiranda/claude-plugins-work/plugins/cmdb-assistant/skills/visual-header.md | README.md
2026-02-03T21:08:51 | commands | /home/lmiranda/claude-plugins-work/plugins/projman/commands/pm-review.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:08:53 | commands | /home/lmiranda/claude-plugins-work/plugins/projman/commands/pm-test.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:08:54 | skills | /home/lmiranda/claude-plugins-work/plugins/projman/skills/review-checklist.md | README.md
2026-02-03T21:08:55 | skills | /home/lmiranda/claude-plugins-work/plugins/projman/skills/visual-output.md | README.md
2026-02-03T21:08:58 | skills | /home/lmiranda/claude-plugins-work/plugins/projman/skills/setup-workflows.md | README.md
2026-02-03T21:08:59 | skills | /home/lmiranda/claude-plugins-work/plugins/git-flow/skills/sync-workflow.md | README.md
2026-02-03T21:09:00 | skills | /home/lmiranda/claude-plugins-work/plugins/git-flow/skills/commit-conventions.md | README.md
2026-02-03T21:09:00 | skills | /home/lmiranda/claude-plugins-work/plugins/git-flow/skills/merge-workflow.md | README.md
2026-02-03T21:09:08 | commands | /home/lmiranda/claude-plugins-work/plugins/projman/commands/pm-setup.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:08 | commands | /home/lmiranda/claude-plugins-work/plugins/data-platform/commands/data-setup.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:10 | commands | /home/lmiranda/claude-plugins-work/plugins/data-platform/commands/data-run.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:10 | commands | /home/lmiranda/claude-plugins-work/plugins/contract-validator/commands/cv-setup.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:11 | commands | /home/lmiranda/claude-plugins-work/plugins/projman/commands/pm-debug.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:13 | agents | /home/lmiranda/claude-plugins-work/plugins/contract-validator/agents/full-validation.md | README.md CLAUDE.md
2026-02-03T21:09:14 | commands | /home/lmiranda/claude-plugins-work/plugins/data-platform/commands/data-ingest.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:18 | commands | /home/lmiranda/claude-plugins-work/plugins/data-platform/commands/data-profile.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:18 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/viz-setup.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:20 | commands | /home/lmiranda/claude-plugins-work/plugins/data-platform/commands/data-schema.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:20 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/viz-theme.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:23 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/viz-theme-new.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:24 | commands | /home/lmiranda/claude-plugins-work/plugins/data-platform/commands/data-explain.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:26 | commands | /home/lmiranda/claude-plugins-work/plugins/data-platform/commands/data-lineage.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:26 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/viz-theme-css.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:29 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/viz-chart.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:32 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/viz-chart-export.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:33 | commands | /home/lmiranda/claude-plugins-work/plugins/data-platform/commands/data-review.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:35 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/viz-dashboard.md | docs/COMMANDS-CHEATSHEET.md README.md
2026-02-03T21:09:38 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/viz-component.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:10:22 | commands | /home/lmiranda/claude-plugins-work/plugins/viz-platform/commands/accessibility-check.md | docs/COMMANDS-CHEATSHEET.md README.md

7
.gitignore vendored
View File

@@ -84,6 +84,13 @@ Thumbs.db
# Claude Code # Claude Code
.claude/settings.local.json .claude/settings.local.json
.claude/history/ .claude/history/
.claude/backups/
# Doc Guardian transient files
.doc-guardian-queue
# Development convenience links
.marketplaces-link
# Logs # Logs
logs/ logs/

View File

@@ -8,6 +8,141 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
--- ---
## [7.0.0] - 2026-02-03
### BREAKING CHANGES
#### Command Namespace Rename
All generic command names are now prefixed with their plugin's namespace to eliminate collisions across the marketplace. This is a **breaking change** for consuming projects — update your CLAUDE.md integration snippets.
**Full Rename Map:**
| Plugin | Old | New |
|--------|-----|-----|
| projman | `/setup` | `/pm-setup` |
| projman | `/review` | `/pm-review` |
| projman | `/test` | `/pm-test` |
| projman | `/debug` | `/pm-debug` |
| git-flow | `/commit` | `/git-commit` |
| git-flow | `/commit-push` | `/git-commit-push` |
| git-flow | `/commit-merge` | `/git-commit-merge` |
| git-flow | `/commit-sync` | `/git-commit-sync` |
| pr-review | `/initial-setup` | `/pr-setup` |
| cmdb-assistant | `/initial-setup` | `/cmdb-setup` |
| data-platform | `/initial-setup` | `/data-setup` |
| data-platform | `/run` | `/data-run` |
| data-platform | `/ingest` | `/data-ingest` |
| data-platform | `/profile` | `/data-profile` |
| data-platform | `/schema` | `/data-schema` |
| data-platform | `/explain` | `/data-explain` |
| data-platform | `/lineage` | `/data-lineage` |
| viz-platform | `/initial-setup` | `/viz-setup` |
| viz-platform | `/theme` | `/viz-theme` |
| viz-platform | `/theme-new` | `/viz-theme-new` |
| viz-platform | `/theme-css` | `/viz-theme-css` |
| viz-platform | `/chart` | `/viz-chart` |
| viz-platform | `/chart-export` | `/viz-chart-export` |
| viz-platform | `/dashboard` | `/viz-dashboard` |
| viz-platform | `/component` | `/viz-component` |
| viz-platform | `/breakpoints` | `/viz-breakpoints` |
| contract-validator | `/initial-setup` | `/cv-setup` |
**Migration:** Update your project's CLAUDE.md integration snippets to use the new command names. Run `/plugin list` to verify installed plugins are using v7.0.0+.
**Unchanged:** Commands already using plugin-namespaced prefixes (`/sprint-*`, `/cmdb-*`, `/labels-sync`, `/branch-*`, `/git-status`, `/git-config`, `/pr-review`, `/pr-summary`, `/pr-findings`, `/pr-diff`, `/project-init`, `/project-sync`, `/config-*`, `/design-*`, `/data-quality`, `/data-review`, `/data-gate`, `/lineage-viz`, `/dbt-test`, `/accessibility-check`, `/validate-contracts`, `/check-agent`, `/list-interfaces`, `/dependency-graph`, `/doc-audit`, `/doc-sync`, `/security-scan`, `/refactor`, `/refactor-dry`, `/clarify`, `/suggest-version`, `/proposal-status`, `/rfc`, `/change-audit`, `/ip-conflicts`) are **not affected**.
### Added
#### Plan-Then-Batch Skill Optimization (projman)
New execution pattern that separates cognitive work from mechanical API operations, reducing skill-related token consumption by ~76-83% during sprint workflows.
- **`skills/batch-execution.md`** — New skill defining the plan-then-batch protocol:
- Phase 1: Cognitive work with all skills loaded
- Phase 2: Execution manifest (structured plan of all API operations)
- Phase 3: Batch execute API calls using only frontmatter skills
- Phase 4: Batch report with success/failure summary
- Error handling: continue on individual failures, report at end
- **Frontmatter skill promotion:**
- Planner agent: `mcp-tools-reference` and `batch-execution` promoted to frontmatter (auto-injected, zero re-read cost)
- Orchestrator agent: same promotion
- Eliminates per-operation skill file re-reads during API execution loops
- **Phase-based skill loading:**
- Planner: 3 phases (validation → analysis → approval) with explicit "read once" instructions
- Orchestrator: 2 phases (startup → dispatch) with same pattern
- New `## Skill Loading Protocol` section replaces flat `## Skills to Load` in agent files
### Changed
- **`planning-workflow.md`** — Steps 8-10 restructured:
- Step 8: "Draft Issue Specifications" (no API calls — resolve all parameters first)
- Step 8a: "Batch Execute Issue Creation" (tight API loop, frontmatter skills only)
- Step 9: Merged into Step 8a (dependencies created in batch)
- Step 10: Milestone creation moved before batch (must exist for assignment)
- **Agent matrix updated:**
- Planner: `body text (14)``frontmatter (2) + body text (12)`
- Orchestrator: `body text (12)``frontmatter (2) + body text (10)`
- **`docs/CONFIGURATION.md`** — New "Phase-Based Skill Loading" subsection documenting the pattern
### Token Impact
| Scenario | Before | After | Savings |
|----------|--------|-------|---------|
| 6-issue sprint (planning) | ~23,800 lines | ~5,600 lines | ~76% |
| 10-issue sprint (planning) | ~35,000 lines | ~7,000 lines | ~80% |
| 8-issue status updates (orchestrator) | ~9,600 lines | ~1,600 lines | ~83% |
---
## [5.10.0] - 2026-02-03
### Added
#### NetBox MCP Server: Module-Based Tool Filtering
Environment-variable-driven module filtering to reduce token consumption:
- **New config option**: `NETBOX_ENABLED_MODULES` in `~/.config/claude/netbox.env`
- **Token savings**: ~15,000 tokens (from ~19,810 to ~4,500) with recommended config
- **Default behavior**: All modules enabled if env var unset (backward compatible)
- **Startup logging**: Shows enabled modules and tool count on initialization
- **Routing guard**: Clear error message when calling disabled module's tools
**Recommended configuration for cmdb-assistant users:**
```bash
NETBOX_ENABLED_MODULES=dcim,ipam,virtualization,extras
```
This enables ~43 tools covering all cmdb-assistant commands while staying well below the 25K token warning threshold.
### Fixed
#### cmdb-assistant Documentation: Incorrect Tool Names
Fixed documentation referencing non-existent `virtualization_*` tool names:
| File | Wrong | Correct |
|------|-------|---------|
| `claude-md-integration.md` | `virtualization_list_virtual_machines` | `virt_list_vms` |
| `claude-md-integration.md` | `virtualization_create_virtual_machine` | `virt_create_vm` |
| `cmdb-search.md` | `virtualization_list_virtual_machines` | `virt_list_vms` |
Also fixed NetBox README.md tool name references for virtualization, wireless, and circuits modules.
#### Gitea MCP Server: Standardized Build Backend
Changed `mcp-servers/gitea/pyproject.toml` from hatchling to setuptools:
- Matches all other MCP servers (contract-validator, viz-platform, data-platform)
- Updated license format to PEP 639 compliance
- Added pytest configuration for consistency
---
## [5.9.0] - 2026-02-03 ## [5.9.0] - 2026-02-03
### Added ### Added
@@ -87,6 +222,36 @@ Per-agent model selection using Claude Code's now-supported `model` frontmatter
- Added missing frontmatter to 13 agents across pr-review, viz-platform, contract-validator, clarity-assist, git-flow, doc-guardian, code-sentinel, cmdb-assistant, and data-platform - Added missing frontmatter to 13 agents across pr-review, viz-platform, contract-validator, clarity-assist, git-flow, doc-guardian, code-sentinel, cmdb-assistant, and data-platform
- All 25 agents now have consistent `name`, `description`, and `model` fields - All 25 agents now have consistent `name`, `description`, and `model` fields
### Changed
#### Agent Frontmatter Hardening v3
Comprehensive agent-level configuration using Claude Code's supported frontmatter fields.
**permissionMode added to all 25 agents:**
- `bypassPermissions` (1): Executor — full autonomy with code-sentinel + Code Reviewer safety nets
- `acceptEdits` (7): Orchestrator, Data Ingestion, Theme Setup, Refactor Advisor, Doc Analyzer, Git Assistant, Maintainer
- `default` (7): Planner, Code Reviewer, Data Advisor, Layout Builder, Full Validation, Clarity Coach, CMDB Assistant
- `plan` (10): All pr-review agents (5), Data Analysis, Design Reviewer, Component Check, Agent Check, Security Reviewer (code-sentinel)
**disallowedTools added to 12 agents:**
- All `plan`-mode agents (10) + Code Reviewer + Clarity Coach receive `disallowedTools: Write, Edit, MultiEdit`
- Enforces read-only contracts at platform level (defense-in-depth with `permissionMode`)
**Model promotions:**
- Planner: `sonnet``opus` (architectural reasoning benefits from deeper analysis)
- Code Reviewer: `sonnet``opus` (quality gate benefits from thorough review)
**skills frontmatter on 3 agents:**
- Executor: 7 safety-critical skills auto-injected (branch-security, runaway-detection, etc.)
- Code Reviewer: 4 review skills auto-injected
- Maintainer: 2 config skills auto-injected
- Body text `## Skills to Load` removed for these agents to avoid duplication
**Documentation:**
- `CLAUDE.md` and `docs/CONFIGURATION.md` updated with complete agent configuration matrix
- New subsections: permissionMode Guide, disallowedTools Guide, skills Frontmatter Guide
--- ---
## [5.8.0] - 2026-02-02 ## [5.8.0] - 2026-02-02

103
CLAUDE.md
View File

@@ -129,7 +129,7 @@ These plugins exist in source but are **NOT relevant** to this project's workflo
| **viz-platform** | For dashboard projects (Dash, Plotly) | | **viz-platform** | For dashboard projects (Dash, Plotly) |
| **cmdb-assistant** | For infrastructure projects (NetBox) | | **cmdb-assistant** | For infrastructure projects (NetBox) |
**Do NOT suggest** `/ingest`, `/profile`, `/chart`, `/cmdb-*` commands - they don't apply here. **Do NOT suggest** `/data-ingest`, `/data-profile`, `/viz-chart`, `/cmdb-*` commands - they don't apply here.
### Key Distinction ### Key Distinction
@@ -146,7 +146,7 @@ When user says "fix the sprint-plan command", edit the SOURCE code.
## Project Overview ## Project Overview
**Repository:** leo-claude-mktplace **Repository:** leo-claude-mktplace
**Version:** 5.9.0 **Version:** 7.0.0
**Status:** Production Ready **Status:** Production Ready
A plugin marketplace for Claude Code containing: A plugin marketplace for Claude Code containing:
@@ -180,16 +180,16 @@ A plugin marketplace for Claude Code containing:
| Category | Commands | | Category | Commands |
|----------|----------| |----------|----------|
| **Setup** | `/setup` (modes: `--full`, `--quick`, `--sync`) | | **Setup** | `/pm-setup` (modes: `--full`, `--quick`, `--sync`) |
| **Sprint** | `/sprint-plan`, `/sprint-start`, `/sprint-status` (with `--diagram`), `/sprint-close` | | **Sprint** | `/sprint-plan`, `/sprint-start`, `/sprint-status` (with `--diagram`), `/sprint-close` |
| **Quality** | `/review`, `/test` (modes: `run`, `gen`) | | **Quality** | `/pm-review`, `/pm-test` (modes: `run`, `gen`) |
| **Versioning** | `/suggest-version` | | **Versioning** | `/suggest-version` |
| **PR Review** | `/pr-review`, `/pr-summary`, `/pr-findings`, `/pr-diff` | | **PR Review** | `/pr-review`, `/pr-summary`, `/pr-findings`, `/pr-diff` |
| **Docs** | `/doc-audit`, `/doc-sync`, `/changelog-gen`, `/doc-coverage`, `/stale-docs` | | **Docs** | `/doc-audit`, `/doc-sync`, `/changelog-gen`, `/doc-coverage`, `/stale-docs` |
| **Security** | `/security-scan`, `/refactor`, `/refactor-dry` | | **Security** | `/security-scan`, `/refactor`, `/refactor-dry` |
| **Config** | `/config-analyze`, `/config-optimize`, `/config-diff`, `/config-lint` | | **Config** | `/config-analyze`, `/config-optimize`, `/config-diff`, `/config-lint` |
| **Validation** | `/validate-contracts`, `/check-agent`, `/list-interfaces`, `/dependency-graph` | | **Validation** | `/validate-contracts`, `/check-agent`, `/list-interfaces`, `/dependency-graph` |
| **Debug** | `/debug` (modes: `report`, `review`) | | **Debug** | `/pm-debug` (modes: `report`, `review`) |
### Plugin Commands - NOT RELEVANT to This Project ### Plugin Commands - NOT RELEVANT to This Project
@@ -197,8 +197,8 @@ These commands are being developed but don't apply to this project's workflow:
| Category | Commands | For Projects Using | | Category | Commands | For Projects Using |
|----------|----------|-------------------| |----------|----------|-------------------|
| **Data** | `/ingest`, `/profile`, `/schema`, `/lineage`, `/dbt-test` | pandas, PostgreSQL, dbt | | **Data** | `/data-ingest`, `/data-profile`, `/data-schema`, `/data-lineage`, `/dbt-test` | pandas, PostgreSQL, dbt |
| **Visualization** | `/component`, `/chart`, `/dashboard`, `/theme` | Dash, Plotly dashboards | | **Visualization** | `/viz-component`, `/viz-chart`, `/viz-dashboard`, `/viz-theme` | Dash, Plotly dashboards |
| **CMDB** | `/cmdb-search`, `/cmdb-device`, `/cmdb-sync` | NetBox infrastructure | | **CMDB** | `/cmdb-search`, `/cmdb-device`, `/cmdb-sync` | NetBox infrastructure |
## Repository Structure ## Repository Structure
@@ -271,39 +271,60 @@ leo-claude-mktplace/
| **Executor** | Implementation-focused | Code implementation, branch management, MR creation | | **Executor** | Implementation-focused | Code implementation, branch management, MR creation |
| **Code Reviewer** | Thorough, practical | Pre-close quality review, security scan, test verification | | **Code Reviewer** | Thorough, practical | Pre-close quality review, security scan, test verification |
### Agent Model Selection ### Agent Frontmatter Configuration
Agents specify their model in frontmatter using Claude Code's `model` field. Supported values: `sonnet` (default), `opus`, `haiku`, `inherit`. Agents specify their configuration in frontmatter using Claude Code's supported fields. Reference: https://code.claude.com/docs/en/sub-agents
| Plugin | Agent | Model | Rationale | **Supported frontmatter fields:**
|--------|-------|-------|-----------|
| projman | Planner | sonnet | Architectural analysis, sprint planning |
| projman | Orchestrator | sonnet | Coordination and tool dispatch |
| projman | Executor | sonnet | Code generation and implementation |
| projman | Code Reviewer | sonnet | Quality gate, pattern detection |
| pr-review | Coordinator | sonnet | Orchestrates sub-agents, aggregates findings |
| pr-review | Security Reviewer | sonnet | Security analysis |
| pr-review | Performance Analyst | sonnet | Performance pattern detection |
| pr-review | Maintainability Auditor | haiku | Pattern matching (complexity, duplication) |
| pr-review | Test Validator | haiku | Coverage gap detection |
| data-platform | Data Advisor | sonnet | Schema validation, dbt orchestration |
| data-platform | Data Analysis | sonnet | Data exploration and profiling |
| data-platform | Data Ingestion | haiku | Data loading operations |
| viz-platform | Design Reviewer | sonnet | DMC validation + accessibility |
| viz-platform | Layout Builder | sonnet | Dashboard design guidance |
| viz-platform | Component Check | haiku | Quick component validation |
| viz-platform | Theme Setup | haiku | Theme configuration |
| contract-validator | Agent Check | haiku | Reference checking |
| contract-validator | Full Validation | sonnet | Marketplace sweep |
| code-sentinel | Security Reviewer | sonnet | Security analysis |
| code-sentinel | Refactor Advisor | sonnet | Code refactoring advice |
| doc-guardian | Doc Analyzer | sonnet | Documentation drift detection |
| clarity-assist | Clarity Coach | sonnet | Conversational coaching |
| git-flow | Git Assistant | haiku | Git operations |
| claude-config-maintainer | Maintainer | sonnet | CLAUDE.md optimization |
| cmdb-assistant | CMDB Assistant | sonnet | NetBox operations |
Override by editing the `model:` field in `plugins/{plugin}/agents/{agent}.md`. | Field | Required | Default | Description |
|-------|----------|---------|-------------|
| `name` | Yes | — | Unique identifier, lowercase + hyphens |
| `description` | Yes | — | When Claude should delegate to this subagent |
| `model` | No | `inherit` | `sonnet`, `opus`, `haiku`, or `inherit` |
| `permissionMode` | No | `default` | Controls permission prompts: `default`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan` |
| `disallowedTools` | No | none | Comma-separated tools to remove from agent's toolset |
| `skills` | No | none | Comma-separated skills auto-injected into context at startup |
| `hooks` | No | none | Lifecycle hooks scoped to this subagent |
**Complete agent matrix:**
| Plugin | Agent | `model` | `permissionMode` | `disallowedTools` | `skills` |
|--------|-------|---------|-------------------|--------------------|----------|
| projman | planner | opus | default | — | frontmatter (2) + body text (12) |
| projman | orchestrator | sonnet | acceptEdits | — | frontmatter (2) + body text (10) |
| projman | executor | sonnet | bypassPermissions | — | frontmatter (7) |
| projman | code-reviewer | opus | default | Write, Edit, MultiEdit | frontmatter (4) |
| pr-review | coordinator | sonnet | plan | Write, Edit, MultiEdit | — |
| pr-review | security-reviewer | sonnet | plan | Write, Edit, MultiEdit | — |
| pr-review | performance-analyst | sonnet | plan | Write, Edit, MultiEdit | — |
| pr-review | maintainability-auditor | haiku | plan | Write, Edit, MultiEdit | — |
| pr-review | test-validator | haiku | plan | Write, Edit, MultiEdit | — |
| data-platform | data-advisor | sonnet | default | — | — |
| data-platform | data-analysis | sonnet | plan | Write, Edit, MultiEdit | — |
| data-platform | data-ingestion | haiku | acceptEdits | — | — |
| viz-platform | design-reviewer | sonnet | plan | Write, Edit, MultiEdit | — |
| viz-platform | layout-builder | sonnet | default | — | — |
| viz-platform | component-check | haiku | plan | Write, Edit, MultiEdit | — |
| viz-platform | theme-setup | haiku | acceptEdits | — | — |
| contract-validator | full-validation | sonnet | default | — | — |
| contract-validator | agent-check | haiku | plan | Write, Edit, MultiEdit | — |
| code-sentinel | security-reviewer | sonnet | plan | Write, Edit, MultiEdit | — |
| code-sentinel | refactor-advisor | sonnet | acceptEdits | — | — |
| doc-guardian | doc-analyzer | sonnet | acceptEdits | — | — |
| clarity-assist | clarity-coach | sonnet | default | Write, Edit, MultiEdit | — |
| git-flow | git-assistant | haiku | acceptEdits | — | — |
| claude-config-maintainer | maintainer | sonnet | acceptEdits | — | frontmatter (2) |
| cmdb-assistant | cmdb-assistant | sonnet | default | — | — |
**Design principles:**
- `bypassPermissions` is granted to exactly ONE agent (Executor) which has code-sentinel PreToolUse hook + Code Reviewer downstream as safety nets.
- `plan` mode is assigned to all pure analysis agents (pr-review, read-only validators).
- `disallowedTools: Write, Edit, MultiEdit` provides defense-in-depth on agents that should never write files.
- `skills` frontmatter is used for agents with ≤7 skills where guaranteed loading is safety-critical. Agents with 8+ skills use body text `## Skills to Load` for selective loading.
- `hooks` (agent-scoped) is reserved for future use (v6.0+).
Override any field by editing the agent's `.md` file in `plugins/{plugin}/agents/`.
### MCP Server Tools (Gitea) ### MCP Server Tools (Gitea)
@@ -428,12 +449,12 @@ See `docs/DEBUGGING-CHECKLIST.md` for systematic troubleshooting.
| Symptom | Likely Cause | Fix | | Symptom | Likely Cause | Fix |
|---------|--------------|-----| |---------|--------------|-----|
| "X MCP servers failed" | Missing venv in installed path | `cd ~/.claude/plugins/marketplaces/leo-claude-mktplace && ./scripts/setup.sh` | | "X MCP servers failed" | Missing venv in installed path | `cd ~/.claude/plugins/marketplaces/leo-claude-mktplace && ./scripts/setup.sh` |
| MCP tools not available | Venv missing or .mcp.json misconfigured | Run `/debug report` to diagnose | | MCP tools not available | Venv missing or .mcp.json misconfigured | Run `/pm-debug report` to diagnose |
| Changes not taking effect | Editing source, not installed | Reinstall plugin or edit installed path | | Changes not taking effect | Editing source, not installed | Reinstall plugin or edit installed path |
**Debug Commands:** **Debug Commands:**
- `/debug report` - Run full diagnostics, create issue if needed - `/pm-debug report` - Run full diagnostics, create issue if needed
- `/debug review` - Investigate and propose fixes - `/pm-debug review` - Investigate and propose fixes
## Versioning Workflow ## Versioning Workflow
@@ -487,4 +508,4 @@ The script will:
--- ---
**Last Updated:** 2026-02-02 **Last Updated:** 2026-02-03

View File

@@ -1,4 +1,4 @@
# Leo Claude Marketplace - v5.9.0 # Leo Claude Marketplace - v7.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.
@@ -12,6 +12,7 @@ A collection of Claude Code plugins for project management, infrastructure autom
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.
- Four-agent model: Planner, Orchestrator, Executor, Code Reviewer - Four-agent model: Planner, Orchestrator, Executor, Code Reviewer
- Plan-then-batch execution: skills loaded once per phase, API calls batched for ~80% token savings
- 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
@@ -19,7 +20,7 @@ AI-guided sprint planning with full Gitea integration. Transforms a proven 15-sp
- Branch-aware security (development/staging/production) - Branch-aware security (development/staging/production)
- Pre-sprint-close code quality review and test verification - Pre-sprint-close code quality review and test verification
**Commands:** `/sprint-plan`, `/sprint-start`, `/sprint-status`, `/sprint-close`, `/labels-sync`, `/setup`, `/review`, `/test`, `/debug`, `/suggest-version`, `/proposal-status`, `/rfc` **Commands:** `/sprint-plan`, `/sprint-start`, `/sprint-status`, `/sprint-close`, `/labels-sync`, `/pm-setup`, `/pm-review`, `/pm-test`, `/pm-debug`, `/suggest-version`, `/proposal-status`, `/rfc`
#### [git-flow](./plugins/git-flow) *NEW in v3.0.0* #### [git-flow](./plugins/git-flow) *NEW in v3.0.0*
**Git Workflow Automation** **Git Workflow Automation**
@@ -32,7 +33,7 @@ Smart git operations with intelligent commit messages and branch management.
- Merge and cleanup automation - Merge and cleanup automation
- Protected branch awareness - Protected branch awareness
**Commands:** `/commit`, `/commit-push`, `/commit-merge`, `/commit-sync`, `/branch-start`, `/branch-cleanup`, `/git-status`, `/git-config` **Commands:** `/git-commit`, `/git-commit-push`, `/git-commit-merge`, `/git-commit-sync`, `/branch-start`, `/branch-cleanup`, `/git-status`, `/git-config`
#### [pr-review](./plugins/pr-review) *NEW in v3.0.0* #### [pr-review](./plugins/pr-review) *NEW in v3.0.0*
**Multi-Agent PR Review** **Multi-Agent PR Review**
@@ -44,7 +45,7 @@ Comprehensive pull request review using specialized agents.
- Actionable feedback with suggested fixes - Actionable feedback with suggested fixes
- Gitea integration for automated review submission - Gitea integration for automated review submission
**Commands:** `/pr-review`, `/pr-summary`, `/pr-findings`, `/pr-diff`, `/initial-setup`, `/project-init`, `/project-sync` **Commands:** `/pr-review`, `/pr-summary`, `/pr-findings`, `/pr-diff`, `/pr-setup`, `/project-init`, `/project-sync`
#### [claude-config-maintainer](./plugins/claude-config-maintainer) #### [claude-config-maintainer](./plugins/claude-config-maintainer)
**CLAUDE.md and Settings Optimization** **CLAUDE.md and Settings Optimization**
@@ -64,7 +65,7 @@ Validate plugin marketplaces for command conflicts, tool overlaps, and broken ag
- Data flow validation for agent sequences - Data flow validation for agent sequences
- Markdown or JSON reports with actionable suggestions - Markdown or JSON reports with actionable suggestions
**Commands:** `/validate-contracts`, `/check-agent`, `/list-interfaces`, `/dependency-graph`, `/initial-setup` **Commands:** `/validate-contracts`, `/check-agent`, `/list-interfaces`, `/dependency-graph`, `/cv-setup`
### Productivity ### Productivity
@@ -107,7 +108,7 @@ Security vulnerability detection and code refactoring tools.
Full CRUD operations for network infrastructure management directly from Claude Code. Full CRUD operations for network infrastructure management directly from Claude Code.
**Commands:** `/initial-setup`, `/cmdb-search`, `/cmdb-device`, `/cmdb-ip`, `/cmdb-site`, `/cmdb-audit`, `/cmdb-register`, `/cmdb-sync`, `/cmdb-topology`, `/change-audit`, `/ip-conflicts` **Commands:** `/cmdb-setup`, `/cmdb-search`, `/cmdb-device`, `/cmdb-ip`, `/cmdb-site`, `/cmdb-audit`, `/cmdb-register`, `/cmdb-sync`, `/cmdb-topology`, `/change-audit`, `/ip-conflicts`
### Data Engineering ### Data Engineering
@@ -122,7 +123,7 @@ Comprehensive data engineering toolkit with persistent DataFrame storage.
- 100k row limit with chunking support - 100k row limit with chunking support
- Auto-detection of dbt projects - Auto-detection of dbt projects
**Commands:** `/ingest`, `/profile`, `/schema`, `/explain`, `/lineage`, `/lineage-viz`, `/run`, `/dbt-test`, `/data-quality`, `/data-review`, `/data-gate`, `/initial-setup` **Commands:** `/data-ingest`, `/data-profile`, `/data-schema`, `/data-explain`, `/data-lineage`, `/lineage-viz`, `/data-run`, `/dbt-test`, `/data-quality`, `/data-review`, `/data-gate`, `/data-setup`
### Visualization ### Visualization
@@ -138,7 +139,7 @@ Visualization toolkit with version-locked component validation and design token
- 5 Page tools for multi-page app structure - 5 Page tools for multi-page app structure
- Dual theme storage: user-level and project-level - Dual theme storage: user-level and project-level
**Commands:** `/chart`, `/chart-export`, `/dashboard`, `/theme`, `/theme-new`, `/theme-css`, `/component`, `/accessibility-check`, `/breakpoints`, `/design-review`, `/design-gate`, `/initial-setup` **Commands:** `/viz-chart`, `/viz-chart-export`, `/viz-dashboard`, `/viz-theme`, `/viz-theme-new`, `/viz-theme-css`, `/viz-component`, `/accessibility-check`, `/viz-breakpoints`, `/design-review`, `/design-gate`, `/viz-setup`
## Domain Advisory Pattern ## Domain Advisory Pattern
@@ -254,7 +255,7 @@ Add to `.claude/settings.json` in your target project:
After installing plugins, run the setup wizard: After installing plugins, run the setup wizard:
``` ```
/initial-setup /pm-setup
``` ```
The wizard handles everything: The wizard handles everything:
@@ -314,8 +315,8 @@ After installing plugins, the `/plugin` command may show `(no content)` - this i
| code-sentinel | `/code-sentinel:security-scan` | | code-sentinel | `/code-sentinel:security-scan` |
| claude-config-maintainer | `/claude-config-maintainer:analyze` | | claude-config-maintainer | `/claude-config-maintainer:analyze` |
| cmdb-assistant | `/cmdb-assistant:cmdb-search` | | cmdb-assistant | `/cmdb-assistant:cmdb-search` |
| data-platform | `/data-platform:ingest` | | data-platform | `/data-platform:data-ingest` |
| viz-platform | `/viz-platform:chart` | | viz-platform | `/viz-platform:viz-chart` |
| contract-validator | `/contract-validator:validate-contracts` | | contract-validator | `/contract-validator:validate-contracts` |
## Repository Structure ## Repository Structure

View File

@@ -11,25 +11,25 @@ Quick reference for all commands in the Leo Claude Marketplace.
| **projman** | `/sprint-plan` | | X | Start sprint planning with AI-guided architecture analysis and issue creation | | **projman** | `/sprint-plan` | | X | Start sprint planning with AI-guided architecture analysis and issue creation |
| **projman** | `/sprint-start` | | X | Begin sprint execution with dependency analysis and parallel task coordination (requires approval or `--force`) | | **projman** | `/sprint-start` | | X | Begin sprint execution with dependency analysis and parallel task coordination (requires approval or `--force`) |
| **projman** | `/sprint-status` | | X | Check current sprint progress (add `--diagram` for Mermaid visualization) | | **projman** | `/sprint-status` | | X | Check current sprint progress (add `--diagram` for Mermaid visualization) |
| **projman** | `/review` | | X | Pre-sprint-close code quality review (debug artifacts, security, error handling) | | **projman** | `/pm-review` | | X | Pre-sprint-close code quality review (debug artifacts, security, error handling) |
| **projman** | `/test` | | X | Run tests (`/test run`) or generate tests (`/test gen <target>`) | | **projman** | `/pm-test` | | X | Run tests (`/pm-test run`) or generate tests (`/pm-test gen <target>`) |
| **projman** | `/sprint-close` | | X | Complete sprint and capture lessons learned to Gitea Wiki | | **projman** | `/sprint-close` | | X | Complete sprint and capture lessons learned to Gitea Wiki |
| **projman** | `/labels-sync` | | X | Synchronize label taxonomy from Gitea | | **projman** | `/labels-sync` | | X | Synchronize label taxonomy from Gitea |
| **projman** | `/setup` | | X | Auto-detect mode or use `--full`, `--quick`, `--sync`, `--clear-cache` | | **projman** | `/pm-setup` | | X | Auto-detect mode or use `--full`, `--quick`, `--sync`, `--clear-cache` |
| **projman** | *SessionStart hook* | X | | Detects git remote vs .env mismatch, warns to run `/setup --sync` | | **projman** | *SessionStart hook* | X | | Detects git remote vs .env mismatch, warns to run `/pm-setup --sync` |
| **projman** | `/debug` | | X | Diagnostics (`/debug report`) or investigate (`/debug review`) | | **projman** | `/pm-debug` | | X | Diagnostics (`/pm-debug report`) or investigate (`/pm-debug review`) |
| **projman** | `/suggest-version` | | X | Analyze CHANGELOG and recommend semantic version bump | | **projman** | `/suggest-version` | | X | Analyze CHANGELOG and recommend semantic version bump |
| **projman** | `/proposal-status` | | X | View proposal and implementation hierarchy with status | | **projman** | `/proposal-status` | | X | View proposal and implementation hierarchy with status |
| **projman** | `/rfc` | | X | RFC lifecycle management (`/rfc create\|list\|review\|approve\|reject`) | | **projman** | `/rfc` | | X | RFC lifecycle management (`/rfc create\|list\|review\|approve\|reject`) |
| **git-flow** | `/commit` | | X | Create commit with auto-generated conventional message | | **git-flow** | `/git-commit` | | X | Create commit with auto-generated conventional message |
| **git-flow** | `/commit-push` | | X | Commit and push to remote in one operation | | **git-flow** | `/git-commit-push` | | X | Commit and push to remote in one operation |
| **git-flow** | `/commit-merge` | | X | Commit current changes, then merge into target branch | | **git-flow** | `/git-commit-merge` | | X | Commit current changes, then merge into target branch |
| **git-flow** | `/commit-sync` | | X | Full sync: commit, push, and sync with upstream/base branch | | **git-flow** | `/git-commit-sync` | | X | Full sync: commit, push, and sync with upstream/base branch |
| **git-flow** | `/branch-start` | | X | Create new feature/fix/chore branch with naming conventions | | **git-flow** | `/branch-start` | | X | Create new feature/fix/chore branch with naming conventions |
| **git-flow** | `/branch-cleanup` | | X | Remove merged branches locally and optionally on remote | | **git-flow** | `/branch-cleanup` | | X | Remove merged branches locally and optionally on remote |
| **git-flow** | `/git-status` | | X | Enhanced git status with recommendations | | **git-flow** | `/git-status` | | X | Enhanced git status with recommendations |
| **git-flow** | `/git-config` | | X | Configure git-flow settings for the project | | **git-flow** | `/git-config` | | X | Configure git-flow settings for the project |
| **pr-review** | `/initial-setup` | | X | Setup wizard for pr-review (shares Gitea MCP with projman) | | **pr-review** | `/pr-setup` | | X | Setup wizard for pr-review (shares Gitea MCP with projman) |
| **pr-review** | `/project-init` | | X | Quick project setup for PR reviews | | **pr-review** | `/project-init` | | X | Quick project setup for PR reviews |
| **pr-review** | `/project-sync` | | X | Sync config with git remote after repo move/rename | | **pr-review** | `/project-sync` | | X | Sync config with git remote after repo move/rename |
| **pr-review** | *SessionStart hook* | X | | Detects git remote vs .env mismatch | | **pr-review** | *SessionStart hook* | X | | Detects git remote vs .env mismatch |
@@ -57,7 +57,7 @@ Quick reference for all commands in the Leo Claude Marketplace.
| **claude-config-maintainer** | `/config-audit-settings` | | X | Audit settings.local.json permissions (100-point score) | | **claude-config-maintainer** | `/config-audit-settings` | | X | Audit settings.local.json permissions (100-point score) |
| **claude-config-maintainer** | `/config-optimize-settings` | | X | Optimize permissions (profiles, consolidation, dry-run) | | **claude-config-maintainer** | `/config-optimize-settings` | | X | Optimize permissions (profiles, consolidation, dry-run) |
| **claude-config-maintainer** | `/config-permissions-map` | | X | Visual review layer + permission coverage map | | **claude-config-maintainer** | `/config-permissions-map` | | X | Visual review layer + permission coverage map |
| **cmdb-assistant** | `/initial-setup` | | X | Setup wizard for NetBox MCP server | | **cmdb-assistant** | `/cmdb-setup` | | X | Setup wizard for NetBox MCP server |
| **cmdb-assistant** | `/cmdb-search` | | X | Search NetBox for devices, IPs, sites | | **cmdb-assistant** | `/cmdb-search` | | X | Search NetBox for devices, IPs, sites |
| **cmdb-assistant** | `/cmdb-device` | | X | Manage network devices (create, view, update, delete) | | **cmdb-assistant** | `/cmdb-device` | | X | Manage network devices (create, view, update, delete) |
| **cmdb-assistant** | `/cmdb-ip` | | X | Manage IP addresses and prefixes | | **cmdb-assistant** | `/cmdb-ip` | | X | Manage IP addresses and prefixes |
@@ -69,27 +69,27 @@ Quick reference for all commands in the Leo Claude Marketplace.
| **cmdb-assistant** | `/change-audit` | | X | NetBox audit trail queries with filtering | | **cmdb-assistant** | `/change-audit` | | X | NetBox audit trail queries with filtering |
| **cmdb-assistant** | `/ip-conflicts` | | X | Detect IP conflicts and overlapping prefixes | | **cmdb-assistant** | `/ip-conflicts` | | X | Detect IP conflicts and overlapping prefixes |
| **project-hygiene** | *PostToolUse hook* | X | | Removes temp files, warns about unexpected root files | | **project-hygiene** | *PostToolUse hook* | X | | Removes temp files, warns about unexpected root files |
| **data-platform** | `/ingest` | | X | Load data from CSV, Parquet, JSON into DataFrame | | **data-platform** | `/data-ingest` | | X | Load data from CSV, Parquet, JSON into DataFrame |
| **data-platform** | `/profile` | | X | Generate data profiling report with statistics | | **data-platform** | `/data-profile` | | X | Generate data profiling report with statistics |
| **data-platform** | `/schema` | | X | Explore database schemas, tables, columns | | **data-platform** | `/data-schema` | | X | Explore database schemas, tables, columns |
| **data-platform** | `/explain` | | X | Explain query execution plan | | **data-platform** | `/data-explain` | | X | Explain query execution plan |
| **data-platform** | `/lineage` | | X | Show dbt model lineage and dependencies | | **data-platform** | `/data-lineage` | | X | Show dbt model lineage and dependencies |
| **data-platform** | `/run` | | X | Run dbt models with validation | | **data-platform** | `/data-run` | | X | Run dbt models with validation |
| **data-platform** | `/lineage-viz` | | X | dbt lineage visualization as Mermaid diagrams | | **data-platform** | `/lineage-viz` | | X | dbt lineage visualization as Mermaid diagrams |
| **data-platform** | `/dbt-test` | | X | Formatted dbt test runner with summary and failure details | | **data-platform** | `/dbt-test` | | X | Formatted dbt test runner with summary and failure details |
| **data-platform** | `/data-quality` | | X | DataFrame quality checks (nulls, duplicates, types, outliers) | | **data-platform** | `/data-quality` | | X | DataFrame quality checks (nulls, duplicates, types, outliers) |
| **data-platform** | `/initial-setup` | | X | Setup wizard for data-platform MCP servers | | **data-platform** | `/data-setup` | | X | Setup wizard for data-platform MCP servers |
| **data-platform** | *SessionStart hook* | X | | Checks PostgreSQL connection (non-blocking warning) | | **data-platform** | *SessionStart hook* | X | | Checks PostgreSQL connection (non-blocking warning) |
| **viz-platform** | `/initial-setup` | | X | Setup wizard for viz-platform MCP server | | **viz-platform** | `/viz-setup` | | X | Setup wizard for viz-platform MCP server |
| **viz-platform** | `/chart` | | X | Create Plotly charts with theme integration | | **viz-platform** | `/viz-chart` | | X | Create Plotly charts with theme integration |
| **viz-platform** | `/dashboard` | | X | Create dashboard layouts with filters and grids | | **viz-platform** | `/viz-dashboard` | | X | Create dashboard layouts with filters and grids |
| **viz-platform** | `/theme` | | X | Apply existing theme to visualizations | | **viz-platform** | `/viz-theme` | | X | Apply existing theme to visualizations |
| **viz-platform** | `/theme-new` | | X | Create new custom theme with design tokens | | **viz-platform** | `/viz-theme-new` | | X | Create new custom theme with design tokens |
| **viz-platform** | `/theme-css` | | X | Export theme as CSS custom properties | | **viz-platform** | `/viz-theme-css` | | X | Export theme as CSS custom properties |
| **viz-platform** | `/component` | | X | Inspect DMC component props and validation | | **viz-platform** | `/viz-component` | | X | Inspect DMC component props and validation |
| **viz-platform** | `/chart-export` | | X | Export charts to PNG, SVG, PDF via kaleido | | **viz-platform** | `/viz-chart-export` | | X | Export charts to PNG, SVG, PDF via kaleido |
| **viz-platform** | `/accessibility-check` | | X | Color blind validation (WCAG contrast ratios) | | **viz-platform** | `/accessibility-check` | | X | Color blind validation (WCAG contrast ratios) |
| **viz-platform** | `/breakpoints` | | X | Configure responsive layout breakpoints | | **viz-platform** | `/viz-breakpoints` | | X | Configure responsive layout breakpoints |
| **viz-platform** | `/design-review` | | X | Detailed design system audits | | **viz-platform** | `/design-review` | | X | Detailed design system audits |
| **viz-platform** | `/design-gate` | | X | Binary pass/fail design system validation gates | | **viz-platform** | `/design-gate` | | X | Binary pass/fail design system validation gates |
| **viz-platform** | *SessionStart hook* | X | | Checks DMC version (non-blocking warning) | | **viz-platform** | *SessionStart hook* | X | | Checks DMC version (non-blocking warning) |
@@ -99,7 +99,7 @@ Quick reference for all commands in the Leo Claude Marketplace.
| **contract-validator** | `/check-agent` | | X | Validate single agent definition | | **contract-validator** | `/check-agent` | | X | Validate single agent definition |
| **contract-validator** | `/list-interfaces` | | X | Show all plugin interfaces | | **contract-validator** | `/list-interfaces` | | X | Show all plugin interfaces |
| **contract-validator** | `/dependency-graph` | | X | Mermaid visualization of plugin dependencies | | **contract-validator** | `/dependency-graph` | | X | Mermaid visualization of plugin dependencies |
| **contract-validator** | `/initial-setup` | | X | Setup wizard for contract-validator MCP | | **contract-validator** | `/cv-setup` | | X | Setup wizard for contract-validator MCP |
--- ---
@@ -107,7 +107,7 @@ Quick reference for all commands in the Leo Claude Marketplace.
| Category | Plugins | Primary Use | | Category | Plugins | Primary Use |
|----------|---------|-------------| |----------|---------|-------------|
| **Setup** | projman, pr-review, cmdb-assistant, data-platform | `/setup`, `/initial-setup` | | **Setup** | projman, pr-review, cmdb-assistant, data-platform, viz-platform, contract-validator | `/pm-setup`, `/pr-setup`, `/cmdb-setup`, `/data-setup`, `/viz-setup`, `/cv-setup` |
| **Task Planning** | projman, clarity-assist | Sprint management, requirement clarification | | **Task Planning** | projman, clarity-assist | Sprint management, requirement clarification |
| **Code Quality** | code-sentinel, pr-review | Security scanning, PR reviews | | **Code Quality** | code-sentinel, pr-review | Security scanning, PR reviews |
| **Documentation** | doc-guardian, claude-config-maintainer | Doc sync, CLAUDE.md maintenance | | **Documentation** | doc-guardian, claude-config-maintainer | Doc sync, CLAUDE.md maintenance |
@@ -163,10 +163,10 @@ A typical workflow for planning and executing a feature sprint:
4. /sprint-start # Begin execution with dependency ordering 4. /sprint-start # Begin execution with dependency ordering
5. /branch-start feat/... # Create feature branch 5. /branch-start feat/... # Create feature branch
... implement features ... ... implement features ...
6. /commit # Commit with conventional message 6. /git-commit # Commit with conventional message
7. /sprint-status --diagram # Check progress with visualization 7. /sprint-status --diagram # Check progress with visualization
8. /review # Pre-close quality review 8. /pm-review # Pre-close quality review
9. /test run # Verify test coverage 9. /pm-test run # Verify test coverage
10. /sprint-close # Capture lessons learned 10. /sprint-close # Capture lessons learned
``` ```
@@ -178,8 +178,8 @@ Quick daily workflow with git-flow:
1. /git-status # Check current state 1. /git-status # Check current state
2. /branch-start fix/... # Start bugfix branch 2. /branch-start fix/... # Start bugfix branch
... make changes ... ... make changes ...
3. /commit # Auto-generate commit message 3. /git-commit # Auto-generate commit message
4. /commit-push # Push to remote 4. /git-commit-push # Push to remote
5. /branch-cleanup # Clean merged branches 5. /branch-cleanup # Clean merged branches
``` ```
@@ -213,8 +213,8 @@ Safe refactoring with preview:
1. /refactor-dry # Preview opportunities 1. /refactor-dry # Preview opportunities
2. /security-scan # Baseline security check 2. /security-scan # Baseline security check
3. /refactor # Apply improvements 3. /refactor # Apply improvements
4. /test run # Verify nothing broke 4. /pm-test run # Verify nothing broke
5. /commit # Commit with descriptive message 5. /git-commit # Commit with descriptive message
``` ```
### Example 6: Infrastructure Documentation ### Example 6: Infrastructure Documentation
@@ -233,12 +233,12 @@ Managing infrastructure with CMDB:
Working with data pipelines: Working with data pipelines:
``` ```
1. /ingest file.csv # Load data into DataFrame 1. /data-ingest file.csv # Load data into DataFrame
2. /profile # Generate data profiling report 2. /data-profile # Generate data profiling report
3. /schema # Explore database schemas 3. /data-schema # Explore database schemas
4. /lineage model_name # View dbt model dependencies 4. /data-lineage model_name # View dbt model dependencies
5. /run model_name # Execute dbt models 5. /data-run model_name # Execute dbt models
6. /explain "SELECT ..." # Analyze query execution plan 6. /data-explain "SELECT ..." # Analyze query execution plan
``` ```
### Example 7: First-Time Setup (New Machine) ### Example 7: First-Time Setup (New Machine)
@@ -246,7 +246,7 @@ Working with data pipelines:
Setting up the marketplace for the first time: Setting up the marketplace for the first time:
``` ```
1. /setup --full # Full setup: MCP + system config + project 1. /pm-setup --full # Full setup: MCP + system config + project
# → Follow prompts for Gitea URL, org # → Follow prompts for Gitea URL, org
# → Add token manually when prompted # → Add token manually when prompted
# → Confirm repository name # → Confirm repository name
@@ -260,7 +260,7 @@ Setting up the marketplace for the first time:
Adding a new project when system config exists: Adding a new project when system config exists:
``` ```
1. /setup --quick # Quick project setup (auto-detected) 1. /pm-setup --quick # Quick project setup (auto-detected)
# → Confirms detected repo name # → Confirms detected repo name
# → Creates .env # → Creates .env
2. /labels-sync # Sync Gitea labels 2. /labels-sync # Sync Gitea labels
@@ -272,8 +272,8 @@ Adding a new project when system config exists:
## Quick Tips ## Quick Tips
- **Hooks run automatically** - doc-guardian and code-sentinel protect you without manual invocation - **Hooks run automatically** - doc-guardian and code-sentinel protect you without manual invocation
- **Use `/commit` over `git commit`** - generates better commit messages following conventions - **Use `/git-commit` over `git commit`** - generates better commit messages following conventions
- **Run `/review` before `/sprint-close`** - catches issues before closing the sprint - **Run `/pm-review` before `/sprint-close`** - catches issues before closing the sprint
- **Use `/clarify` for vague requests** - especially helpful for complex requirements - **Use `/clarify` for vague requests** - especially helpful for complex requirements
- **`/refactor-dry` is safe** - always preview before applying refactoring changes - **`/refactor-dry` is safe** - always preview before applying refactoring changes

View File

@@ -9,7 +9,7 @@ Centralized configuration documentation for all plugins and MCP servers in the L
**After installing the marketplace and plugins via Claude Code:** **After installing the marketplace and plugins via Claude Code:**
``` ```
/setup /pm-setup
``` ```
The interactive wizard auto-detects what's needed and handles everything except manually adding your API tokens. The interactive wizard auto-detects what's needed and handles everything except manually adding your API tokens.
@@ -25,8 +25,8 @@ The interactive wizard auto-detects what's needed and handles everything except
└─────────────────────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────────────────────┘
/setup --full /pm-setup --full
(or /setup auto-detects) (or /pm-setup auto-detects)
┌──────────────────────────────┼──────────────────────────────┐ ┌──────────────────────────────┼──────────────────────────────┐
▼ ▼ ▼ ▼ ▼ ▼
@@ -79,7 +79,7 @@ The interactive wizard auto-detects what's needed and handles everything except
┌───────────────┴───────────────┐ ┌───────────────┴───────────────┐
▼ ▼ ▼ ▼
/setup --quick /setup /pm-setup --quick /pm-setup
(explicit mode) (auto-detects mode) (explicit mode) (auto-detects mode)
│ │ │ │
│ ┌──────────┴──────────┐ │ ┌──────────┴──────────┐
@@ -109,7 +109,7 @@ The interactive wizard auto-detects what's needed and handles everything except
## What Runs Automatically vs User Interaction ## What Runs Automatically vs User Interaction
### `/setup --full` - Full Setup ### `/pm-setup --full` - Full Setup
| Phase | Type | What Happens | | Phase | Type | What Happens |
|-------|------|--------------| |-------|------|--------------|
@@ -121,7 +121,7 @@ The interactive wizard auto-detects what's needed and handles everything except
| **6. Project Config** | Automated | Creates `.env` file, checks `.gitignore` | | **6. Project Config** | Automated | Creates `.env` file, checks `.gitignore` |
| **7. Validation** | Automated | Tests API connectivity, shows summary | | **7. Validation** | Automated | Tests API connectivity, shows summary |
### `/setup --quick` - Quick Project Setup ### `/pm-setup --quick` - Quick Project Setup
| Phase | Type | What Happens | | Phase | Type | What Happens |
|-------|------|--------------| |-------|------|--------------|
@@ -136,10 +136,10 @@ The interactive wizard auto-detects what's needed and handles everything except
| Mode | When to Use | What It Does | | Mode | When to Use | What It Does |
|------|-------------|--------------| |------|-------------|--------------|
| `/setup` | Any time | Auto-detects: runs full, quick, or sync as needed | | `/pm-setup` | Any time | Auto-detects: runs full, quick, or sync as needed |
| `/setup --full` | First time on a machine | Full setup: MCP server + system config + project config | | `/pm-setup --full` | First time on a machine | Full setup: MCP server + system config + project config |
| `/setup --quick` | Starting a new project | Quick setup: project config only (assumes system is ready) | | `/pm-setup --quick` | Starting a new project | Quick setup: project config only (assumes system is ready) |
| `/setup --sync` | After repo move/rename | Updates .env to match current git remote | | `/pm-setup --sync` | After repo move/rename | Updates .env to match current git remote |
**Auto-detection logic:** **Auto-detection logic:**
1. No system config → **full** mode 1. No system config → **full** mode
@@ -148,9 +148,9 @@ The interactive wizard auto-detects what's needed and handles everything except
4. Both exist, match → already configured, offer to reconfigure 4. Both exist, match → already configured, offer to reconfigure
**Typical workflow:** **Typical workflow:**
1. Install plugin → run `/setup` (auto-runs full mode) 1. Install plugin → run `/pm-setup` (auto-runs full mode)
2. Start new project → run `/setup` (auto-runs quick mode) 2. Start new project → run `/pm-setup` (auto-runs quick mode)
3. Repository moved? → run `/setup` (auto-runs sync mode) 3. Repository moved? → run `/pm-setup` (auto-runs sync mode)
--- ---
@@ -182,7 +182,7 @@ This marketplace uses a **hybrid configuration** approach:
**Benefits:** **Benefits:**
- Single token per service (update once, use everywhere) - Single token per service (update once, use everywhere)
- Easy multi-project setup (just run `/setup` in each project) - Easy multi-project setup (just run `/pm-setup` in each project)
- Security (tokens never committed to git, never typed into AI chat) - Security (tokens never committed to git, never typed into AI chat)
- Project isolation (each project can override defaults) - Project isolation (each project can override defaults)
@@ -190,7 +190,7 @@ This marketplace uses a **hybrid configuration** approach:
## Prerequisites ## Prerequisites
Before running `/setup`: Before running `/pm-setup`:
1. **Python 3.10+** installed 1. **Python 3.10+** installed
```bash ```bash
@@ -213,7 +213,7 @@ Before running `/setup`:
Run the setup wizard in Claude Code: Run the setup wizard in Claude Code:
``` ```
/setup /pm-setup
``` ```
The wizard will guide you through each step interactively and auto-detect the appropriate mode. The wizard will guide you through each step interactively and auto-detect the appropriate mode.
@@ -387,18 +387,18 @@ PR_REVIEW_AUTO_SUBMIT=false
| Plugin | System Config | Project Config | Setup Command | | Plugin | System Config | Project Config | Setup Command |
|--------|---------------|----------------|---------------| |--------|---------------|----------------|---------------|
| **projman** | gitea.env | .env (GITEA_REPO=owner/repo) | `/setup` | | **projman** | gitea.env | .env (GITEA_REPO=owner/repo) | `/pm-setup` |
| **pr-review** | gitea.env | .env (GITEA_REPO=owner/repo) | `/initial-setup` | | **pr-review** | gitea.env | .env (GITEA_REPO=owner/repo) | `/pr-setup` |
| **git-flow** | git-flow.env (optional) | .env (optional) | None needed | | **git-flow** | git-flow.env (optional) | .env (optional) | None needed |
| **clarity-assist** | None | None | None needed | | **clarity-assist** | None | None | None needed |
| **cmdb-assistant** | netbox.env | None | `/initial-setup` | | **cmdb-assistant** | netbox.env | None | `/cmdb-setup` |
| **data-platform** | postgres.env | .env (optional) | `/initial-setup` | | **data-platform** | postgres.env | .env (optional) | `/data-setup` |
| **viz-platform** | None | .env (optional DMC_VERSION) | `/initial-setup` | | **viz-platform** | None | .env (optional DMC_VERSION) | `/viz-setup` |
| **doc-guardian** | None | None | None needed | | **doc-guardian** | None | None | None needed |
| **code-sentinel** | None | None | None needed | | **code-sentinel** | None | None | None needed |
| **project-hygiene** | None | None | None needed | | **project-hygiene** | None | None | None needed |
| **claude-config-maintainer** | None | None | None needed | | **claude-config-maintainer** | None | None | None needed |
| **contract-validator** | None | None | `/initial-setup` | | **contract-validator** | None | None | `/cv-setup` |
--- ---
@@ -408,7 +408,7 @@ Once system-level config is set up, adding new projects is simple:
``` ```
cd ~/projects/new-project cd ~/projects/new-project
/setup /pm-setup
``` ```
The command auto-detects that system config exists and runs quick project setup. The command auto-detects that system config exists and runs quick project setup.
@@ -496,60 +496,134 @@ Not all plugins have MCP servers. The install script handles this automatically:
--- ---
## Agent Model Selection ## Agent Frontmatter Configuration
Marketplace agents specify their preferred model using Claude Code's `model` frontmatter field. This allows cost/performance optimization per agent. Agents specify their configuration in frontmatter using Claude Code's supported fields. Reference: https://code.claude.com/docs/en/sub-agents
### Supported Values ### Supported Frontmatter Fields
| Value | Description | | Field | Required | Default | Description |
|-------|-------------| |-------|----------|---------|-------------|
| `sonnet` | Default. Balanced performance and cost. | | `name` | Yes | — | Unique identifier, lowercase + hyphens |
| `opus` | Higher reasoning depth. Use for complex analysis. | | `description` | Yes | — | When Claude should delegate to this subagent |
| `haiku` | Faster, lower cost. Use for mechanical tasks. | | `model` | No | `inherit` | `sonnet`, `opus`, `haiku`, or `inherit` |
| `inherit` | Use session's current model setting. | | `permissionMode` | No | `default` | Controls permission prompts: `default`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan` |
| `disallowedTools` | No | none | Comma-separated tools to remove from agent's toolset |
| `skills` | No | none | Comma-separated skills auto-injected into context at startup |
| `hooks` | No | none | Lifecycle hooks scoped to this subagent |
### How It Works ### Complete Agent Matrix
Each agent in `plugins/{plugin}/agents/{agent}.md` has frontmatter like: | Plugin | Agent | `model` | `permissionMode` | `disallowedTools` | `skills` |
|--------|-------|---------|-------------------|--------------------|----------|
| projman | planner | opus | default | — | frontmatter (2) + body text (12) |
| projman | orchestrator | sonnet | acceptEdits | — | frontmatter (2) + body text (10) |
| projman | executor | sonnet | bypassPermissions | — | frontmatter (7) |
| projman | code-reviewer | opus | default | Write, Edit, MultiEdit | frontmatter (4) |
| pr-review | coordinator | sonnet | plan | Write, Edit, MultiEdit | — |
| pr-review | security-reviewer | sonnet | plan | Write, Edit, MultiEdit | — |
| pr-review | performance-analyst | sonnet | plan | Write, Edit, MultiEdit | — |
| pr-review | maintainability-auditor | haiku | plan | Write, Edit, MultiEdit | — |
| pr-review | test-validator | haiku | plan | Write, Edit, MultiEdit | — |
| data-platform | data-advisor | sonnet | default | — | — |
| data-platform | data-analysis | sonnet | plan | Write, Edit, MultiEdit | — |
| data-platform | data-ingestion | haiku | acceptEdits | — | — |
| viz-platform | design-reviewer | sonnet | plan | Write, Edit, MultiEdit | — |
| viz-platform | layout-builder | sonnet | default | — | — |
| viz-platform | component-check | haiku | plan | Write, Edit, MultiEdit | — |
| viz-platform | theme-setup | haiku | acceptEdits | — | — |
| contract-validator | full-validation | sonnet | default | — | — |
| contract-validator | agent-check | haiku | plan | Write, Edit, MultiEdit | — |
| code-sentinel | security-reviewer | sonnet | plan | Write, Edit, MultiEdit | — |
| code-sentinel | refactor-advisor | sonnet | acceptEdits | — | — |
| doc-guardian | doc-analyzer | sonnet | acceptEdits | — | — |
| clarity-assist | clarity-coach | sonnet | default | Write, Edit, MultiEdit | — |
| git-flow | git-assistant | haiku | acceptEdits | — | — |
| claude-config-maintainer | maintainer | sonnet | acceptEdits | — | frontmatter (2) |
| cmdb-assistant | cmdb-assistant | sonnet | default | — | — |
```yaml ### Design Principles
---
name: planner - `bypassPermissions` is granted to exactly ONE agent (Executor) which has code-sentinel PreToolUse hook + Code Reviewer downstream as safety nets.
description: Sprint planning agent - thoughtful architecture analysis - `plan` mode is assigned to all pure analysis agents (pr-review, read-only validators).
model: sonnet - `disallowedTools: Write, Edit, MultiEdit` provides defense-in-depth on agents that should never write files.
--- - `skills` frontmatter is used for agents with ≤7 skills where guaranteed loading is safety-critical. Agents with 8+ skills use body text `## Skills to Load` for selective loading.
- `hooks` (agent-scoped) is reserved for future use (v6.0+).
Override any field by editing the agent's `.md` file in `plugins/{plugin}/agents/`.
### permissionMode Guide
| Value | Prompts for file ops? | Prompts for Bash? | Prompts for MCP? | Use when |
|-------|-----------------------|-------------------|-------------------|----------|
| `default` | Yes | Yes | No (MCP bypasses permissions) | You want full visibility |
| `acceptEdits` | No | Yes | No | Core job is file read/write, Bash visibility useful |
| `dontAsk` | No | No (most) | No | Even Bash prompts are friction |
| `bypassPermissions` | No | No | No | Agent has downstream safety layers |
| `plan` | N/A (read-only) | N/A (read-only) | No | Pure analysis, no modifications |
### disallowedTools Guide
Use `disallowedTools` to remove specific tools from an agent's toolset. This is a blacklist — the agent inherits all tools from the main thread, then the listed tools are removed.
Prefer `disallowedTools` over `tools` (whitelist) because:
- New MCP servers are automatically available without updating every agent.
- Less configuration to maintain.
- Easier to audit — you only list what's blocked.
Common patterns:
- `disallowedTools: Write, Edit, MultiEdit` — read-only agent, cannot modify files.
- `disallowedTools: Bash` — no shell access (rare, most agents need at least read-only Bash).
### skills Frontmatter Guide
The `skills` field auto-injects skill file contents into the agent's context window at startup. The agent does NOT need to read the files — they are already present.
**When to use frontmatter `skills`:**
- Agent has ≤7 skills.
- Skills are safety-critical (e.g., `branch-security`, `runaway-detection`).
- You need guaranteed loading — no risk of the agent skipping a skill.
**When to keep body text `## Skills to Load`:**
- Agent has 8+ skills (context window cost too high for full injection).
- Skills are situational — not all needed for every invocation.
- Agent benefits from selective loading based on the specific task.
Skill names in frontmatter are resolved relative to the plugin's `skills/` directory. Use the filename without the `.md` extension.
### Phase-Based Skill Loading (Body Text)
For agents with 8+ skills, use **phase-based loading** in the agent body text. This structures skill reads into logical phases, with explicit instructions to read each skill exactly once.
**Pattern:**
```markdown
## Skill Loading Protocol
**Frontmatter skills (auto-injected, always available — DO NOT re-read these):**
- `skill-a` — description
- `skill-b` — description
**Phase 1 skills — read ONCE at session start:**
- skills/validation-skill.md
- skills/safety-skill.md
**Phase 2 skills — read ONCE when entering main work:**
- skills/workflow-skill.md
- skills/domain-skill.md
**CRITICAL: Read each skill file exactly ONCE. Do NOT re-read skill files between MCP API calls.**
``` ```
Claude Code reads this field when invoking the agent as a subagent. **Benefits:**
- Frontmatter skills (always needed) are auto-injected — zero file read cost
- Phase skills are read once at the appropriate time — not re-read per API call
- `batch-execution` skill provides protocol for API-heavy phases
- ~76-83% reduction in skill-related token consumption for typical sprints
### Model Assignments **Currently applied to:**
- Planner agent: 2 frontmatter + 12 body text (3 phases)
Agents are assigned models based on their task complexity: - Orchestrator agent: 2 frontmatter + 10 body text (2 phases)
| Model | Agents | Rationale |
|-------|--------|-----------|
| **sonnet** | Planner, Orchestrator, Executor, Code Reviewer, Coordinator, Security Reviewers, Performance Analyst, Data Advisor, Data Analysis, Design Reviewer, Layout Builder, Full Validation, Doc Analyzer, Clarity Coach, Maintainer, CMDB Assistant, Refactor Advisor | Standard reasoning, tool orchestration, code generation |
| **haiku** | Maintainability Auditor, Test Validator, Component Check, Theme Setup, Agent Check, Data Ingestion, Git Assistant | Pattern matching, quick validation, mechanical tasks |
### Overriding Model Selection
**Per-agent override:** Edit the `model:` field in the agent file:
```bash
# Change executor to use opus for heavy implementation work
nano plugins/projman/agents/executor.md
# Change model: sonnet to model: opus
```
**Session-level:** Users on Opus subscription can change the agent's model to `inherit` to use whatever model the session is using.
### Best Practices
1. **Default to sonnet** - Good balance for most tasks
2. **Use haiku for speed-sensitive agents** - Sub-agents dispatched in parallel, read-only tasks
3. **Reserve opus for heavy analysis** - Only when sonnet's reasoning isn't sufficient
4. **Use inherit sparingly** - Only when you want session-level control
--- ---
@@ -557,7 +631,7 @@ nano plugins/projman/agents/executor.md
### API Validation ### API Validation
When running `/setup`, the command: When running `/pm-setup`, the command:
1. **Detects** organization and repository from git remote URL 1. **Detects** organization and repository from git remote URL
2. **Validates** via Gitea API: `GET /api/v1/repos/{org}/{repo}` 2. **Validates** via Gitea API: `GET /api/v1/repos/{org}/{repo}`
@@ -572,7 +646,7 @@ When you start a Claude Code session, a hook automatically:
1. Reads `GITEA_REPO` (in `owner/repo` format) from `.env` 1. Reads `GITEA_REPO` (in `owner/repo` format) from `.env`
2. Compares with current `git remote get-url origin` 2. Compares with current `git remote get-url origin`
3. **Warns** if mismatch detected: "Repository location mismatch. Run `/setup --sync` to update." 3. **Warns** if mismatch detected: "Repository location mismatch. Run `/pm-setup --sync` to update."
This helps when you: This helps when you:
- Move a repository to a different organization - Move a repository to a different organization
@@ -667,7 +741,7 @@ cat .env
3. **Never type tokens into AI chat** 3. **Never type tokens into AI chat**
- Always edit config files directly in your editor - Always edit config files directly in your editor
- The `/setup` wizard respects this - The `/pm-setup` wizard respects this
4. **Rotate tokens periodically** 4. **Rotate tokens periodically**
- Every 6-12 months - Every 6-12 months

View File

@@ -46,9 +46,9 @@ cd ~/.claude/plugins/marketplaces/leo-claude-mktplace && ./scripts/setup.sh
## After Updating: Re-run Setup if Needed ## After Updating: Re-run Setup if Needed
### When to Re-run `/initial-setup` ### When to Re-run Setup
You typically **don't need** to re-run setup after updates. However, re-run if: You typically **don't need** to re-run setup after updates. However, re-run your plugin's setup command (e.g., `/pm-setup`, `/pr-setup`, `/cmdb-setup`) if:
- Changelog mentions **new required environment variables** - Changelog mentions **new required environment variables**
- Changelog mentions **breaking changes** to configuration - Changelog mentions **breaking changes** to configuration
@@ -97,7 +97,7 @@ When updating, review if changes affect the setup workflow:
1. **Check for setup command changes:** 1. **Check for setup command changes:**
```bash ```bash
git diff HEAD~1 plugins/*/commands/initial-setup.md git diff HEAD~1 plugins/*/commands/*-setup.md
git diff HEAD~1 plugins/*/commands/project-init.md git diff HEAD~1 plugins/*/commands/project-init.md
git diff HEAD~1 plugins/*/commands/project-sync.md git diff HEAD~1 plugins/*/commands/project-sync.md
``` ```
@@ -114,7 +114,7 @@ When updating, review if changes affect the setup workflow:
**If setup commands changed:** **If setup commands changed:**
- Review what's new (new validation steps, new prompts, etc.) - Review what's new (new validation steps, new prompts, etc.)
- Consider re-running `/initial-setup` or `/project-init` to benefit from improvements - Consider re-running your plugin's setup command or `/project-init` to benefit from improvements
- Existing configurations remain valid unless changelog notes breaking changes - Existing configurations remain valid unless changelog notes breaking changes
**If hooks changed:** **If hooks changed:**
@@ -142,7 +142,7 @@ deactivate
### Configuration no longer works ### Configuration no longer works
1. Check CHANGELOG.md for breaking changes 1. Check CHANGELOG.md for breaking changes
2. Run `/initial-setup` to re-validate and fix configuration 2. Run your plugin's setup command (e.g., `/pm-setup`) to re-validate and fix configuration
3. Compare your config files with documentation in `docs/CONFIGURATION.md` 3. Compare your config files with documentation in `docs/CONFIGURATION.md`
### MCP server won't start after update ### MCP server won't start after update

View File

@@ -0,0 +1,6 @@
2026-02-03T14:09:25 | mcp-servers | /home/lmiranda/claude-plugins-work/mcp-servers/gitea/tests/test_config.py | docs/COMMANDS-CHEATSHEET.md CLAUDE.md
2026-02-03T14:09:33 | mcp-servers | /home/lmiranda/claude-plugins-work/mcp-servers/gitea/tests/test_gitea_client.py | docs/COMMANDS-CHEATSHEET.md CLAUDE.md
2026-02-03T14:10:22 | mcp-servers | /home/lmiranda/claude-plugins-work/mcp-servers/gitea/tests/test_issues.py | docs/COMMANDS-CHEATSHEET.md CLAUDE.md
2026-02-03T14:17:12 | mcp-servers | /home/lmiranda/claude-plugins-work/mcp-servers/gitea/README.md | docs/COMMANDS-CHEATSHEET.md CLAUDE.md
2026-02-03T14:18:27 | mcp-servers | /home/lmiranda/claude-plugins-work/mcp-servers/gitea/CHANGELOG.md | docs/COMMANDS-CHEATSHEET.md CLAUDE.md
2026-02-03T14:18:41 | mcp-servers | /home/lmiranda/claude-plugins-work/mcp-servers/gitea/TESTING.md | docs/COMMANDS-CHEATSHEET.md CLAUDE.md

View File

@@ -0,0 +1,92 @@
# Changelog
All notable changes to the Gitea MCP Server will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [1.3.0] - 2026-02-03
### Added
- Pull request tools (7 tools):
- `list_pull_requests` - List PRs from repository
- `get_pull_request` - Get specific PR details
- `get_pr_diff` - Get PR diff content
- `get_pr_comments` - Get comments on a PR
- `create_pr_review` - Create PR review (approve/request changes/comment)
- `add_pr_comment` - Add comment to PR
- `create_pull_request` - Create new pull request
- Label creation tools (3 tools):
- `create_label` - Create repo-level label
- `create_org_label` - Create organization-level label
- `create_label_smart` - Auto-detect org vs repo for label creation
- Validation tools (2 tools):
- `validate_repo_org` - Check if repo belongs to organization
- `get_branch_protection` - Get branch protection rules
### Changed
- Total tools increased from 20 to 36
- Updated test suite to 64 tests (was 42)
### Fixed
- Test fixtures updated to use `owner/repo` format
- Fixed aggregate_issues tests to pass required `org` argument
## [1.2.0] - 2026-01-28
### Added
- Milestone management tools (5 tools):
- `list_milestones` - List all milestones
- `get_milestone` - Get specific milestone
- `create_milestone` - Create new milestone
- `update_milestone` - Update existing milestone
- `delete_milestone` - Delete a milestone
- Issue dependency tools (4 tools):
- `list_issue_dependencies` - List blocking issues
- `create_issue_dependency` - Create dependency between issues
- `remove_issue_dependency` - Remove dependency
- `get_execution_order` - Calculate parallelizable execution order
## [1.1.0] - 2026-01-21
### Added
- Wiki and lessons learned tools (7 tools):
- `list_wiki_pages` - List all wiki pages
- `get_wiki_page` - Get specific wiki page content
- `create_wiki_page` - Create new wiki page
- `update_wiki_page` - Update existing wiki page
- `create_lesson` - Create lessons learned entry
- `search_lessons` - Search lessons by query/tags
- `allocate_rfc_number` - Get next available RFC number
- Automatic git remote URL detection for repository configuration
- Support for SSH, HTTPS, and HTTP git URL formats
### Changed
- Configuration now uses `owner/repo` format exclusively
- Removed separate `GITEA_OWNER` configuration (now derived from repo path)
## [1.0.0] - 2025-01-06
### Added
- Initial release with 8 core tools:
- `list_issues` - List issues from repository
- `get_issue` - Get specific issue details
- `create_issue` - Create new issue with labels
- `update_issue` - Update existing issue
- `add_comment` - Add comment to issue
- `get_labels` - Get all labels (org + repo)
- `suggest_labels` - Intelligent label suggestion
- `aggregate_issues` - Cross-repository issue aggregation (PMO mode)
- Hybrid configuration system (system + project level)
- Branch-aware security model
- Mode detection (project vs company/PMO)
- 42 unit tests with mocks
- Comprehensive documentation
[Unreleased]: https://github.com/owner/repo/compare/v1.3.0...HEAD
[1.3.0]: https://github.com/owner/repo/compare/v1.2.0...v1.3.0
[1.2.0]: https://github.com/owner/repo/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/owner/repo/compare/v1.0.0...v1.1.0
[1.0.0]: https://github.com/owner/repo/releases/tag/v1.0.0

View File

@@ -19,8 +19,9 @@ The Gitea MCP Server provides Claude Code with direct access to Gitea for issue
- **Hybrid Configuration**: System-level credentials + project-level paths - **Hybrid Configuration**: System-level credentials + project-level paths
- **PMO Support**: Multi-repository aggregation for organization-wide views - **PMO Support**: Multi-repository aggregation for organization-wide views
### Tools Provided ### Tools Provided (36 total)
#### Issue Management (6 tools)
| Tool | Description | Mode | | Tool | Description | Mode |
|------|-------------|------| |------|-------------|------|
| `list_issues` | List issues from repository | Both | | `list_issues` | List issues from repository | Both |
@@ -28,9 +29,61 @@ The Gitea MCP Server provides Claude Code with direct access to Gitea for issue
| `create_issue` | Create new issue with labels | Both | | `create_issue` | Create new issue with labels | Both |
| `update_issue` | Update existing issue | Both | | `update_issue` | Update existing issue | Both |
| `add_comment` | Add comment to issue | Both | | `add_comment` | Add comment to issue | Both |
| `aggregate_issues` | Cross-repository issue aggregation | PMO Only |
#### Label Management (5 tools)
| Tool | Description | Mode |
|------|-------------|------|
| `get_labels` | Get all labels (org + repo) | Both | | `get_labels` | Get all labels (org + repo) | Both |
| `suggest_labels` | Intelligent label suggestion | Both | | `suggest_labels` | Intelligent label suggestion | Both |
| `aggregate_issues` | Cross-repository issue aggregation | PMO Only | | `create_label` | Create repo-level label | Both |
| `create_org_label` | Create organization-level label | Both |
| `create_label_smart` | Auto-detect org vs repo for label creation | Both |
#### Wiki & Lessons Learned (7 tools)
| Tool | Description | Mode |
|------|-------------|------|
| `list_wiki_pages` | List all wiki pages | Both |
| `get_wiki_page` | Get specific wiki page content | Both |
| `create_wiki_page` | Create new wiki page | Both |
| `update_wiki_page` | Update existing wiki page | Both |
| `create_lesson` | Create lessons learned entry | Both |
| `search_lessons` | Search lessons by query/tags | Both |
| `allocate_rfc_number` | Get next available RFC number | Both |
#### Milestone Management (5 tools)
| Tool | Description | Mode |
|------|-------------|------|
| `list_milestones` | List all milestones | Both |
| `get_milestone` | Get specific milestone | Both |
| `create_milestone` | Create new milestone | Both |
| `update_milestone` | Update existing milestone | Both |
| `delete_milestone` | Delete a milestone | Both |
#### Issue Dependencies (4 tools)
| Tool | Description | Mode |
|------|-------------|------|
| `list_issue_dependencies` | List blocking issues | Both |
| `create_issue_dependency` | Create dependency between issues | Both |
| `remove_issue_dependency` | Remove dependency | Both |
| `get_execution_order` | Calculate parallelizable execution order | Both |
#### Pull Request Tools (7 tools)
| Tool | Description | Mode |
|------|-------------|------|
| `list_pull_requests` | List PRs from repository | Both |
| `get_pull_request` | Get specific PR details | Both |
| `get_pr_diff` | Get PR diff content | Both |
| `get_pr_comments` | Get comments on a PR | Both |
| `create_pr_review` | Create PR review (approve/request changes) | Both |
| `add_pr_comment` | Add comment to PR | Both |
| `create_pull_request` | Create new pull request | Both |
#### Validation Tools (2 tools)
| Tool | Description | Mode |
|------|-------------|------|
| `validate_repo_org` | Check if repo belongs to organization | Both |
| `get_branch_protection` | Get branch protection rules | Both |
## Architecture ## Architecture
@@ -40,15 +93,20 @@ The Gitea MCP Server provides Claude Code with direct access to Gitea for issue
mcp-servers/gitea/ mcp-servers/gitea/
├── .venv/ # Python virtual environment ├── .venv/ # Python virtual environment
├── requirements.txt # Python dependencies ├── requirements.txt # Python dependencies
├── run.sh # Entry point script
├── mcp_server/ ├── mcp_server/
│ ├── __init__.py │ ├── __init__.py
│ ├── server.py # MCP server entry point │ ├── server.py # MCP server entry point (36 tools)
│ ├── config.py # Configuration loader │ ├── config.py # Configuration loader with auto-detection
│ ├── gitea_client.py # Gitea API client │ ├── gitea_client.py # Gitea API client
│ └── tools/ │ └── tools/
│ ├── __init__.py │ ├── __init__.py
│ ├── issues.py # Issue tools │ ├── issues.py # Issue management tools
── labels.py # Label tools ── labels.py # Label management tools
│ ├── wiki.py # Wiki & lessons learned tools
│ ├── milestones.py # Milestone management tools
│ ├── dependencies.py # Issue dependency tools
│ └── pull_requests.py # Pull request tools
├── tests/ ├── tests/
│ ├── __init__.py │ ├── __init__.py
│ ├── test_config.py │ ├── test_config.py
@@ -56,7 +114,8 @@ mcp-servers/gitea/
│ ├── test_issues.py │ ├── test_issues.py
│ └── test_labels.py │ └── test_labels.py
├── README.md # This file ├── README.md # This file
── TESTING.md # Testing instructions ── TESTING.md # Testing instructions
└── CHANGELOG.md # Version history
``` ```
### Mode Detection ### Mode Detection
@@ -111,7 +170,6 @@ mkdir -p ~/.config/claude
cat > ~/.config/claude/gitea.env << EOF cat > ~/.config/claude/gitea.env << EOF
GITEA_API_URL=https://gitea.example.com/api/v1 GITEA_API_URL=https://gitea.example.com/api/v1
GITEA_API_TOKEN=your_gitea_token_here GITEA_API_TOKEN=your_gitea_token_here
GITEA_OWNER=bandit
EOF EOF
chmod 600 ~/.config/claude/gitea.env chmod 600 ~/.config/claude/gitea.env
@@ -137,14 +195,34 @@ For company/PMO mode, omit the `.env` file or don't set `GITEA_REPO`.
**Required Variables**: **Required Variables**:
- `GITEA_API_URL` - Gitea API endpoint (e.g., `https://gitea.example.com/api/v1`) - `GITEA_API_URL` - Gitea API endpoint (e.g., `https://gitea.example.com/api/v1`)
- `GITEA_API_TOKEN` - Personal access token with repo permissions - `GITEA_API_TOKEN` - Personal access token with repo permissions
- `GITEA_OWNER` - Organization or user name (e.g., `bandit`)
### Project-Level Configuration ### Project-Level Configuration
**File**: `<project-root>/.env` **File**: `<project-root>/.env`
**Optional Variables**: **Optional Variables**:
- `GITEA_REPO` - Repository name (enables project mode) - `GITEA_REPO` - Repository in `owner/repo` format (enables project mode)
### Automatic Repository Detection
If `GITEA_REPO` is not set, the server auto-detects the repository from your git remote:
**Supported URL Formats**:
- SSH: `ssh://git@gitea.example.com:22/owner/repo.git`
- SSH short: `git@gitea.example.com:owner/repo.git`
- HTTPS: `https://gitea.example.com/owner/repo.git`
- HTTP: `http://gitea.example.com/owner/repo.git`
The repository is extracted as `owner/repo` format automatically.
### Project Directory Detection
The server finds your project directory using these strategies (in order):
1. `CLAUDE_PROJECT_DIR` environment variable (highest priority)
2. `PWD` environment variable (if `.git` or `.env` present)
3. Current working directory (if `.git` or `.env` present)
4. Falls back to company/PMO mode if no project found
### Generating Gitea API Token ### Generating Gitea API Token
@@ -220,13 +298,13 @@ suggestions = await label_tools.suggest_labels(context)
### Unit Tests ### Unit Tests
Run all 42 unit tests with mocks: Run all 64 unit tests with mocks:
```bash ```bash
pytest tests/ -v pytest tests/ -v
``` ```
Expected: `42 passed in 0.57s` Expected: `64 passed`
### Integration Tests ### Integration Tests
@@ -327,11 +405,15 @@ See [TESTING.md](./TESTING.md#troubleshooting) for more details.
### Project Structure ### Project Structure
- `config.py` - Hybrid configuration loader with mode detection - `config.py` - Hybrid configuration loader with auto-detection
- `gitea_client.py` - Synchronous Gitea API client using requests - `gitea_client.py` - Synchronous Gitea API client using requests
- `tools/issues.py` - Async wrappers with branch detection - `tools/issues.py` - Issue management with branch detection
- `tools/labels.py` - Label management and suggestion - `tools/labels.py` - Label management and intelligent suggestions
- `server.py` - MCP server with JSON-RPC 2.0 over stdio - `tools/wiki.py` - Wiki pages and lessons learned
- `tools/milestones.py` - Milestone CRUD operations
- `tools/dependencies.py` - Issue dependency tracking
- `tools/pull_requests.py` - PR review and management
- `server.py` - MCP server with 36 tools over JSON-RPC 2.0 stdio
### Adding New Tools ### Adding New Tools
@@ -374,18 +456,14 @@ def list_issues(self, state='open', labels=None, repo=None):
## Changelog ## Changelog
### v1.0.0 (2025-01-06) - Phase 1 Complete See [CHANGELOG.md](./CHANGELOG.md) for full version history.
✅ Initial implementation: ### Recent Updates
- Configuration management (hybrid system + project)
- Gitea API client with all CRUD operations - **v1.3.0** - Pull request tools (7 tools), label creation tools (3)
- MCP server with 8 tools - **v1.2.0** - Milestone management (5 tools), issue dependencies (4 tools)
- Issue tools with branch detection - **v1.1.0** - Wiki & lessons learned system (7 tools)
- Label tools with intelligent suggestions - **v1.0.0** - Initial release with core issue/label tools (8 tools)
- Mode detection (project vs company)
- Branch-aware security model
- 42 unit tests (100% passing)
- Comprehensive documentation
## License ## License
@@ -407,6 +485,6 @@ For issues or questions:
--- ---
**Built for**: Leo Claude Marketplace - Project Management Plugins **Built for**: Leo Claude Marketplace - Project Management Plugins
**Phase**: 1 (Complete) **Tools**: 36
**Status**: ✅ Production Ready **Status**: ✅ Production Ready
**Last Updated**: 2025-01-06 **Last Updated**: 2026-02-03

View File

@@ -28,7 +28,7 @@ source .venv/bin/activate # Linux/Mac
### Running All Tests ### Running All Tests
Run all 42 unit tests: Run all 64 unit tests:
```bash ```bash
pytest tests/ -v pytest tests/ -v
@@ -36,7 +36,7 @@ pytest tests/ -v
Expected output: Expected output:
``` ```
============================== 42 passed in 0.57s ============================== ============================== 64 passed ==============================
``` ```
### Running Specific Test Files ### Running Specific Test Files
@@ -532,7 +532,7 @@ python -m mcp_server.server
After completing all tests, verify: After completing all tests, verify:
- ✅ All 42 unit tests pass - ✅ All 64 unit tests pass
- ✅ MCP server starts without errors - ✅ MCP server starts without errors
- ✅ Configuration loads correctly - ✅ Configuration loads correctly
- ✅ Gitea API client connects successfully - ✅ Gitea API client connects successfully
@@ -548,7 +548,7 @@ After completing all tests, verify:
Phase 1 is complete when: Phase 1 is complete when:
1. **All unit tests pass** (42/42) 1. **All unit tests pass** (64/64)
2. **MCP server starts without errors** 2. **MCP server starts without errors**
3. **Can list issues from Gitea** 3. **Can list issues from Gitea**
4. **Can create issues with labels** (in development mode) 4. **Can create issues with labels** (in development mode)

View File

@@ -0,0 +1,30 @@
"""
Gitea MCP Server package.
Provides MCP tools for Gitea integration via JSON-RPC 2.0.
For external consumers (e.g., HTTP transport), use:
from mcp_server import get_tool_definitions, create_tool_dispatcher, GiteaClient
# Get tool schemas
tools = get_tool_definitions()
# Create dispatcher bound to a client
client = GiteaClient()
dispatch = create_tool_dispatcher(client)
result = await dispatch("list_issues", {"state": "open"})
"""
__version__ = "1.0.0"
from .tool_registry import get_tool_definitions, create_tool_dispatcher
from .gitea_client import GiteaClient
from .config import GiteaConfig
__all__ = [
"__version__",
"get_tool_definitions",
"create_tool_dispatcher",
"GiteaClient",
"GiteaConfig",
]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,43 @@
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "gitea-mcp-server"
version = "1.0.0"
description = "MCP Server for Gitea integration - provides issue, label, wiki, milestone, dependency, and PR tools"
readme = "README.md"
requires-python = ">=3.10"
license = {text = "MIT"}
authors = [
{ name = "Leo Miranda" }
]
keywords = ["mcp", "gitea", "claude", "tools"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
]
dependencies = [
"mcp>=0.9.0",
"python-dotenv>=1.0.0",
"requests>=2.31.0",
"pydantic>=2.5.0",
]
[project.optional-dependencies]
test = [
"pytest>=7.4.3",
"pytest-asyncio>=0.23.0",
]
[tool.setuptools.packages.find]
where = ["."]
include = ["mcp_server*"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]

View File

@@ -28,7 +28,6 @@ def test_load_system_config(tmp_path, monkeypatch):
assert result['api_url'] == 'https://test.com/api/v1' assert result['api_url'] == 'https://test.com/api/v1'
assert result['api_token'] == 'test_token' assert result['api_token'] == 'test_token'
assert result['owner'] == 'test_owner'
assert result['mode'] == 'company' # No repo specified assert result['mode'] == 'company' # No repo specified
assert result['repo'] is None assert result['repo'] is None

View File

@@ -14,8 +14,7 @@ def mock_config():
mock_instance.load.return_value = { mock_instance.load.return_value = {
'api_url': 'https://test.com/api/v1', 'api_url': 'https://test.com/api/v1',
'api_token': 'test_token', 'api_token': 'test_token',
'owner': 'test_owner', 'repo': 'test_owner/test_repo', # Combined owner/repo format
'repo': 'test_repo',
'mode': 'project' 'mode': 'project'
} }
yield mock_cfg yield mock_cfg
@@ -31,8 +30,7 @@ def test_client_initialization(gitea_client):
"""Test client initializes with correct configuration""" """Test client initializes with correct configuration"""
assert gitea_client.base_url == 'https://test.com/api/v1' assert gitea_client.base_url == 'https://test.com/api/v1'
assert gitea_client.token == 'test_token' assert gitea_client.token == 'test_token'
assert gitea_client.owner == 'test_owner' assert gitea_client.repo == 'test_owner/test_repo' # Combined format
assert gitea_client.repo == 'test_repo'
assert gitea_client.mode == 'project' assert gitea_client.mode == 'project'
assert 'Authorization' in gitea_client.session.headers assert 'Authorization' in gitea_client.session.headers
assert gitea_client.session.headers['Authorization'] == 'token test_token' assert gitea_client.session.headers['Authorization'] == 'token test_token'
@@ -92,6 +90,11 @@ def test_create_issue(gitea_client):
} }
mock_response.raise_for_status = Mock() mock_response.raise_for_status = Mock()
# Mock is_org_repo to avoid network call during label resolution
with patch.object(gitea_client, 'is_org_repo', return_value=True):
# Mock get_org_labels and get_labels for label resolution
with patch.object(gitea_client, 'get_org_labels', return_value=[{'name': 'Type/Bug', 'id': 1}]):
with patch.object(gitea_client, 'get_labels', return_value=[]):
with patch.object(gitea_client.session, 'post', return_value=mock_response): with patch.object(gitea_client.session, 'post', return_value=mock_response):
issue = gitea_client.create_issue( issue = gitea_client.create_issue(
title='New Issue', title='New Issue',
@@ -161,7 +164,7 @@ def test_get_org_labels(gitea_client):
mock_response.raise_for_status = Mock() mock_response.raise_for_status = Mock()
with patch.object(gitea_client.session, 'get', return_value=mock_response): with patch.object(gitea_client.session, 'get', return_value=mock_response):
labels = gitea_client.get_org_labels() labels = gitea_client.get_org_labels(org='test_owner')
assert len(labels) == 2 assert len(labels) == 2
@@ -176,7 +179,7 @@ def test_list_repos(gitea_client):
mock_response.raise_for_status = Mock() mock_response.raise_for_status = Mock()
with patch.object(gitea_client.session, 'get', return_value=mock_response): with patch.object(gitea_client.session, 'get', return_value=mock_response):
repos = gitea_client.list_repos() repos = gitea_client.list_repos(org='test_owner')
assert len(repos) == 2 assert len(repos) == 2
assert repos[0]['name'] == 'repo1' assert repos[0]['name'] == 'repo1'
@@ -196,7 +199,7 @@ def test_aggregate_issues(gitea_client):
[{'number': 2, 'title': 'Issue 2'}] # repo2 [{'number': 2, 'title': 'Issue 2'}] # repo2
]) ])
aggregated = gitea_client.aggregate_issues(state='open') aggregated = gitea_client.aggregate_issues(org='test_owner', state='open')
assert 'repo1' in aggregated assert 'repo1' in aggregated
assert 'repo2' in aggregated assert 'repo2' in aggregated
@@ -205,14 +208,13 @@ def test_aggregate_issues(gitea_client):
def test_no_repo_specified_error(gitea_client): def test_no_repo_specified_error(gitea_client):
"""Test error when repository not specified""" """Test error when repository not specified or invalid format"""
# Create client without repo # Create client without repo
with patch('mcp_server.gitea_client.GiteaConfig') as mock_cfg: with patch('mcp_server.gitea_client.GiteaConfig') as mock_cfg:
mock_instance = mock_cfg.return_value mock_instance = mock_cfg.return_value
mock_instance.load.return_value = { mock_instance.load.return_value = {
'api_url': 'https://test.com/api/v1', 'api_url': 'https://test.com/api/v1',
'api_token': 'test_token', 'api_token': 'test_token',
'owner': 'test_owner',
'repo': None, # No repo 'repo': None, # No repo
'mode': 'company' 'mode': 'company'
} }
@@ -221,7 +223,7 @@ def test_no_repo_specified_error(gitea_client):
with pytest.raises(ValueError) as exc_info: with pytest.raises(ValueError) as exc_info:
client.list_issues() client.list_issues()
assert "Repository not specified" in str(exc_info.value) assert "Use 'owner/repo' format" in str(exc_info.value)
# ======================================== # ========================================

View File

@@ -119,22 +119,26 @@ async def test_aggregate_issues_company_mode(issue_tools):
'repo2': [{'number': 2}] 'repo2': [{'number': 2}]
}) })
aggregated = await issue_tools.aggregate_issues() aggregated = await issue_tools.aggregate_issues(org='test_owner')
assert 'repo1' in aggregated assert 'repo1' in aggregated
assert 'repo2' in aggregated assert 'repo2' in aggregated
@pytest.mark.asyncio @pytest.mark.asyncio
async def test_aggregate_issues_project_mode_error(issue_tools): async def test_aggregate_issues_project_mode(issue_tools):
"""Test that aggregate_issues fails in project mode""" """Test that aggregate_issues works in project mode with org argument"""
issue_tools.gitea.mode = 'project' issue_tools.gitea.mode = 'project'
with patch.object(issue_tools, '_get_current_branch', return_value='development'): with patch.object(issue_tools, '_get_current_branch', return_value='development'):
with pytest.raises(ValueError) as exc_info: issue_tools.gitea.aggregate_issues = Mock(return_value={
await issue_tools.aggregate_issues() 'repo1': [{'number': 1}]
})
assert "only available in company mode" in str(exc_info.value) # aggregate_issues now works in any mode when org is provided
aggregated = await issue_tools.aggregate_issues(org='test_owner')
assert 'repo1' in aggregated
def test_branch_detection(): def test_branch_detection():

View File

@@ -79,6 +79,69 @@ Add to your Claude Code MCP configuration (`~/.config/claude/mcp.json` or projec
1. **System-level** (`~/.config/claude/netbox.env`): Credentials and defaults 1. **System-level** (`~/.config/claude/netbox.env`): Credentials and defaults
2. **Project-level** (`.env` in current directory): Optional overrides 2. **Project-level** (`.env` in current directory): Optional overrides
## Module Filtering (Token Optimization)
By default, the NetBox MCP server registers all 182 tools across 8 modules, consuming ~19,810 tokens of context. For most workflows, you only need a subset of modules.
### Configuration
Add `NETBOX_ENABLED_MODULES` to your `~/.config/claude/netbox.env`:
```bash
# Enable only specific modules (comma-separated)
NETBOX_ENABLED_MODULES=dcim,ipam,virtualization,extras
```
If unset, all modules are enabled (backward compatible).
### Available Modules
| Module | Tool Count | Description | cmdb-assistant Commands |
|--------|------------|-------------|------------------------|
| `dcim` | ~60 | Sites, devices, racks, interfaces, cables | `/cmdb-device`, `/cmdb-site`, `/cmdb-search`, `/cmdb-topology` |
| `ipam` | ~40 | IP addresses, prefixes, VLANs, VRFs | `/cmdb-ip`, `/ip-conflicts`, `/cmdb-search` |
| `virtualization` | ~20 | Clusters, VMs, VM interfaces | `/cmdb-search`, `/cmdb-audit`, `/cmdb-register` |
| `extras` | ~12 | Tags, journal entries, audit log | `/change-audit`, `/cmdb-register` |
| `circuits` | ~15 | Providers, circuits, terminations | — |
| `tenancy` | ~12 | Tenants, contacts | — |
| `vpn` | ~15 | Tunnels, IKE/IPSec policies, L2VPN | — |
| `wireless` | ~8 | Wireless LANs, links, groups | — |
### Recommended Configurations
**For cmdb-assistant users** (~43 tools, ~4,500 tokens):
```bash
NETBOX_ENABLED_MODULES=dcim,ipam,virtualization,extras
```
**Basic infrastructure** (~100 tools):
```bash
NETBOX_ENABLED_MODULES=dcim,ipam
```
**Full CMDB** (all modules, ~182 tools):
```bash
# Omit NETBOX_ENABLED_MODULES or set to all modules
NETBOX_ENABLED_MODULES=dcim,ipam,circuits,virtualization,tenancy,vpn,wireless,extras
```
### Startup Logging
On startup, the server logs enabled modules and tool count:
```
NetBox MCP Server initialized: 43 tools registered (modules: dcim, extras, ipam, virtualization)
```
### Disabled Tool Behavior
Calling a tool from a disabled module returns a clear error:
```
Tool 'circuits_list_circuits' is not available (module 'circuits' not enabled).
Enabled modules: dcim, extras, ipam, virtualization
```
## Available Tools ## Available Tools
### DCIM (Data Center Infrastructure Management) ### DCIM (Data Center Infrastructure Management)
@@ -128,18 +191,18 @@ Add to your Claude Code MCP configuration (`~/.config/claude/mcp.json` or projec
| `circuits_create_provider` | Create a provider | | `circuits_create_provider` | Create a provider |
| `circuits_list_circuits` | List circuits | | `circuits_list_circuits` | List circuits |
| `circuits_create_circuit` | Create a circuit | | `circuits_create_circuit` | Create a circuit |
| `circuits_list_circuit_terminations` | List terminations | | `circ_list_terminations` | List terminations |
| ... and more | | ... and more |
### Virtualization ### Virtualization
| Tool | Description | | Tool | Description |
|------|-------------| |------|-------------|
| `virtualization_list_clusters` | List clusters | | `virt_list_clusters` | List clusters |
| `virtualization_create_cluster` | Create a cluster | | `virt_create_cluster` | Create a cluster |
| `virtualization_list_virtual_machines` | List VMs | | `virt_list_vms` | List VMs |
| `virtualization_create_virtual_machine` | Create a VM | | `virt_create_vm` | Create a VM |
| `virtualization_list_vm_interfaces` | List VM interfaces | | `virt_list_vm_ifaces` | List VM interfaces |
| ... and more | | ... and more |
### Tenancy ### Tenancy
@@ -167,9 +230,9 @@ Add to your Claude Code MCP configuration (`~/.config/claude/mcp.json` or projec
| Tool | Description | | Tool | Description |
|------|-------------| |------|-------------|
| `wireless_list_wireless_lans` | List wireless LANs | | `wlan_list_lans` | List wireless LANs |
| `wireless_create_wireless_lan` | Create a WLAN | | `wlan_create_lan` | Create a WLAN |
| `wireless_list_wireless_links` | List wireless links | | `wlan_list_links` | List wireless links |
| ... and more | | ... and more |
### Extras ### Extras

View File

@@ -9,11 +9,17 @@ from pathlib import Path
from dotenv import load_dotenv from dotenv import load_dotenv
import os import os
import logging import logging
from typing import Dict, Optional from typing import Dict, List, Optional, Set
logging.basicConfig(level=logging.INFO) logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# All available NetBox modules
ALL_MODULES = frozenset([
'dcim', 'ipam', 'circuits', 'virtualization',
'tenancy', 'vpn', 'wireless', 'extras'
])
class NetBoxConfig: class NetBoxConfig:
"""Configuration loader for NetBox MCP Server""" """Configuration loader for NetBox MCP Server"""
@@ -23,6 +29,7 @@ class NetBoxConfig:
self.api_token: Optional[str] = None self.api_token: Optional[str] = None
self.verify_ssl: bool = True self.verify_ssl: bool = True
self.timeout: int = 30 self.timeout: int = 30
self.enabled_modules: Set[str] = set(ALL_MODULES)
def load(self) -> Dict[str, any]: def load(self) -> Dict[str, any]:
""" """
@@ -73,6 +80,9 @@ class NetBoxConfig:
self.timeout = 30 self.timeout = 30
logger.warning(f"Invalid NETBOX_TIMEOUT value '{timeout_str}', using default 30") logger.warning(f"Invalid NETBOX_TIMEOUT value '{timeout_str}', using default 30")
# Module filtering
self.enabled_modules = self._load_enabled_modules()
# Validate required variables # Validate required variables
self._validate() self._validate()
@@ -84,7 +94,8 @@ class NetBoxConfig:
'api_url': self.api_url, 'api_url': self.api_url,
'api_token': self.api_token, 'api_token': self.api_token,
'verify_ssl': self.verify_ssl, 'verify_ssl': self.verify_ssl,
'timeout': self.timeout 'timeout': self.timeout,
'enabled_modules': self.enabled_modules
} }
def _validate(self) -> None: def _validate(self) -> None:
@@ -106,3 +117,40 @@ class NetBoxConfig:
f"Missing required configuration: {', '.join(missing)}\n" f"Missing required configuration: {', '.join(missing)}\n"
"Check your ~/.config/claude/netbox.env file" "Check your ~/.config/claude/netbox.env file"
) )
def _load_enabled_modules(self) -> Set[str]:
"""
Load enabled modules from NETBOX_ENABLED_MODULES environment variable.
Format: Comma-separated list of module names.
Example: NETBOX_ENABLED_MODULES=dcim,ipam,virtualization,extras
Returns:
Set of enabled module names. If env var is unset/empty, returns all modules.
"""
modules_str = os.getenv('NETBOX_ENABLED_MODULES', '').strip()
if not modules_str:
logger.info("NETBOX_ENABLED_MODULES not set, all modules enabled (default)")
return set(ALL_MODULES)
# Parse comma-separated list, strip whitespace
requested = {m.strip().lower() for m in modules_str.split(',') if m.strip()}
# Validate module names
invalid = requested - ALL_MODULES
if invalid:
logger.warning(
f"Unknown modules in NETBOX_ENABLED_MODULES: {', '.join(sorted(invalid))}. "
f"Valid modules: {', '.join(sorted(ALL_MODULES))}"
)
# Return only valid modules
enabled = requested & ALL_MODULES
if not enabled:
logger.warning("No valid modules enabled, falling back to all modules")
return set(ALL_MODULES)
logger.info(f"Enabled modules: {', '.join(sorted(enabled))}")
return enabled

View File

@@ -8,11 +8,12 @@ Tenancy, VPN, Wireless, and Extras.
import asyncio import asyncio
import logging import logging
import json import json
from typing import Optional, Set
from mcp.server import Server from mcp.server import Server
from mcp.server.stdio import stdio_server from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent from mcp.types import Tool, TextContent
from .config import NetBoxConfig from .config import NetBoxConfig, ALL_MODULES
from .netbox_client import NetBoxClient from .netbox_client import NetBoxClient
from .tools.dcim import DCIMTools from .tools.dcim import DCIMTools
from .tools.ipam import IPAMTools from .tools.ipam import IPAMTools
@@ -1453,6 +1454,49 @@ TOOL_NAME_MAP = {
} }
# Map tool name prefixes to module names.
# This handles both full prefixes and shortened prefixes used in TOOL_NAME_MAP.
PREFIX_TO_MODULE = {
'dcim': 'dcim',
'ipam': 'ipam',
'circuits': 'circuits',
'circ': 'circuits', # Shortened prefix
'virtualization': 'virtualization',
'virt': 'virtualization', # Shortened prefix
'tenancy': 'tenancy',
'vpn': 'vpn',
'wireless': 'wireless',
'wlan': 'wireless', # Shortened prefix
'extras': 'extras',
}
def _get_tool_module(tool_name: str) -> Optional[str]:
"""
Determine which module a tool belongs to.
Checks TOOL_NAME_MAP first for shortened names, then falls back to prefix extraction.
Args:
tool_name: The tool name (e.g., 'dcim_list_devices', 'virt_list_vms')
Returns:
Module name (e.g., 'dcim', 'virtualization') or None if unknown
"""
# Check mapped short names first
if tool_name in TOOL_NAME_MAP:
category, _ = TOOL_NAME_MAP[tool_name]
return category
# Fall back to prefix extraction
parts = tool_name.split('_', 1)
if len(parts) < 2:
return None
prefix = parts[0]
return PREFIX_TO_MODULE.get(prefix)
class NetBoxMCPServer: class NetBoxMCPServer:
"""MCP Server for NetBox integration""" """MCP Server for NetBox integration"""
@@ -1460,6 +1504,8 @@ class NetBoxMCPServer:
self.server = Server("netbox-mcp") self.server = Server("netbox-mcp")
self.config = None self.config = None
self.client = None self.client = None
self.enabled_modules: Set[str] = set(ALL_MODULES)
# Tool instances - only instantiated for enabled modules
self.dcim_tools = None self.dcim_tools = None
self.ipam_tools = None self.ipam_tools = None
self.circuits_tools = None self.circuits_tools = None
@@ -1474,18 +1520,39 @@ class NetBoxMCPServer:
try: try:
config_loader = NetBoxConfig() config_loader = NetBoxConfig()
self.config = config_loader.load() self.config = config_loader.load()
self.enabled_modules = self.config['enabled_modules']
self.client = NetBoxClient() self.client = NetBoxClient()
# Conditionally instantiate tool classes for enabled modules only
if 'dcim' in self.enabled_modules:
self.dcim_tools = DCIMTools(self.client) self.dcim_tools = DCIMTools(self.client)
if 'ipam' in self.enabled_modules:
self.ipam_tools = IPAMTools(self.client) self.ipam_tools = IPAMTools(self.client)
if 'circuits' in self.enabled_modules:
self.circuits_tools = CircuitsTools(self.client) self.circuits_tools = CircuitsTools(self.client)
if 'virtualization' in self.enabled_modules:
self.virtualization_tools = VirtualizationTools(self.client) self.virtualization_tools = VirtualizationTools(self.client)
if 'tenancy' in self.enabled_modules:
self.tenancy_tools = TenancyTools(self.client) self.tenancy_tools = TenancyTools(self.client)
if 'vpn' in self.enabled_modules:
self.vpn_tools = VPNTools(self.client) self.vpn_tools = VPNTools(self.client)
if 'wireless' in self.enabled_modules:
self.wireless_tools = WirelessTools(self.client) self.wireless_tools = WirelessTools(self.client)
if 'extras' in self.enabled_modules:
self.extras_tools = ExtrasTools(self.client) self.extras_tools = ExtrasTools(self.client)
logger.info(f"NetBox MCP Server initialized for {self.config['api_url']}") # Count tools that will be registered
tool_count = sum(
1 for name in TOOL_DEFINITIONS
if _get_tool_module(name) in self.enabled_modules
)
modules_str = ', '.join(sorted(self.enabled_modules))
logger.info(
f"NetBox MCP Server initialized: {tool_count} tools registered "
f"(modules: {modules_str})"
)
except Exception as e: except Exception as e:
logger.error(f"Failed to initialize: {e}") logger.error(f"Failed to initialize: {e}")
raise raise
@@ -1495,9 +1562,14 @@ class NetBoxMCPServer:
@self.server.list_tools() @self.server.list_tools()
async def list_tools() -> list[Tool]: async def list_tools() -> list[Tool]:
"""Return list of available tools""" """Return list of available tools, filtered by enabled modules"""
tools = [] tools = []
for name, definition in TOOL_DEFINITIONS.items(): for name, definition in TOOL_DEFINITIONS.items():
# Filter tools by enabled modules
module = _get_tool_module(name)
if module not in self.enabled_modules:
continue
tools.append(Tool( tools.append(Tool(
name=name, name=name,
description=definition['description'], description=definition['description'],
@@ -1532,6 +1604,14 @@ class NetBoxMCPServer:
'virtualization_list_virtual_machines') to meet the 28-character 'virtualization_list_virtual_machines') to meet the 28-character
limit. TOOL_NAME_MAP handles the translation to actual method names. limit. TOOL_NAME_MAP handles the translation to actual method names.
""" """
# Check module is enabled (routing guard)
module = _get_tool_module(name)
if module and module not in self.enabled_modules:
raise ValueError(
f"Tool '{name}' is not available (module '{module}' not enabled). "
f"Enabled modules: {', '.join(sorted(self.enabled_modules))}"
)
# Check if this is a mapped short name # Check if this is a mapped short name
if name in TOOL_NAME_MAP: if name in TOOL_NAME_MAP:
category, method_name = TOOL_NAME_MAP[name] category, method_name = TOOL_NAME_MAP[name]

View File

@@ -2,6 +2,8 @@
name: clarity-coach name: clarity-coach
description: Patient, structured coach helping users articulate requirements clearly. Uses neurodivergent-friendly communication patterns. description: Patient, structured coach helping users articulate requirements clearly. Uses neurodivergent-friendly communication patterns.
model: sonnet model: sonnet
permissionMode: default
disallowedTools: Write, Edit, MultiEdit
--- ---
# Clarity Coach Agent # Clarity Coach Agent

View File

@@ -2,6 +2,8 @@
name: maintainer name: maintainer
description: CLAUDE.md optimization and maintenance agent description: CLAUDE.md optimization and maintenance agent
model: sonnet model: sonnet
permissionMode: acceptEdits
skills: visual-header, settings-optimization
--- ---
# CLAUDE.md Maintainer Agent # CLAUDE.md Maintainer Agent

View File

@@ -2,6 +2,7 @@
name: cmdb-assistant name: cmdb-assistant
description: Infrastructure management assistant specialized in NetBox CMDB operations. Use for device management, IP addressing, and infrastructure queries. description: Infrastructure management assistant specialized in NetBox CMDB operations. Use for device management, IP addressing, and infrastructure queries.
model: sonnet model: sonnet
permissionMode: default
--- ---
# CMDB Assistant Agent # CMDB Assistant Agent

View File

@@ -32,9 +32,9 @@ The following NetBox MCP tools are available for infrastructure management:
- `ipam_list_available_ips`, `ipam_create_available_ip` - IP allocation - `ipam_list_available_ips`, `ipam_create_available_ip` - IP allocation
**Virtualization:** **Virtualization:**
- `virtualization_list_virtual_machines`, `virtualization_create_virtual_machine` - VM management - `virt_list_vms`, `virt_create_vm`, `virt_update_vm`, `virt_delete_vm` - VM management
- `virtualization_list_clusters`, `virtualization_create_cluster` - Cluster management - `virt_list_clusters`, `virt_create_cluster`, `virt_update_cluster`, `virt_delete_cluster` - Cluster management
- `virtualization_list_vm_interfaces` - VM interface management - `virt_list_vm_ifaces`, `virt_create_vm_iface` - VM interface management
**Circuits:** **Circuits:**
- `circuits_list_circuits`, `circuits_create_circuit` - Circuit management - `circuits_list_circuits`, `circuits_create_circuit` - Circuit management

View File

@@ -31,7 +31,7 @@ When the user provides a search query, determine the best approach:
3. **Site search**: Use `dcim_list_sites` with name filter 3. **Site search**: Use `dcim_list_sites` with name filter
4. **Prefix search**: Use `ipam_list_prefixes` with prefix or within filter 4. **Prefix search**: Use `ipam_list_prefixes` with prefix or within filter
5. **VLAN search**: Use `ipam_list_vlans` with vid or name filter 5. **VLAN search**: Use `ipam_list_vlans` with vid or name filter
6. **VM search**: Use `virtualization_list_virtual_machines` with name filter 6. **VM search**: Use `virt_list_vms` with name filter
For broad searches, query multiple endpoints and consolidate results. For broad searches, query multiple endpoints and consolidate results.

View File

@@ -18,7 +18,7 @@ Configure the cmdb-assistant plugin with NetBox integration.
## Usage ## Usage
``` ```
/initial-setup /cmdb-setup
``` ```
## Instructions ## Instructions

View File

@@ -24,7 +24,7 @@ Standard visual header for cmdb-assistant commands.
| `/cmdb-topology` | Topology | | `/cmdb-topology` | Topology |
| `/change-audit` | Change Audit | | `/change-audit` | Change Audit |
| `/ip-conflicts` | IP Conflict Detection | | `/ip-conflicts` | IP Conflict Detection |
| `/initial-setup` | Setup Wizard | | `/cmdb-setup` | Setup Wizard |
| Agent mode | Infrastructure Management | | Agent mode | Infrastructure Management |
## Usage ## Usage

View File

@@ -2,6 +2,7 @@
name: refactor-advisor name: refactor-advisor
description: Code structure and refactoring specialist. Use when analyzing code quality, design patterns, or planning refactoring work. description: Code structure and refactoring specialist. Use when analyzing code quality, design patterns, or planning refactoring work.
model: sonnet model: sonnet
permissionMode: acceptEdits
--- ---
# Refactor Advisor Agent # Refactor Advisor Agent

View File

@@ -2,6 +2,8 @@
name: security-reviewer name: security-reviewer
description: Security-focused code review agent description: Security-focused code review agent
model: sonnet model: sonnet
permissionMode: plan
disallowedTools: Write, Edit, MultiEdit
--- ---
# Security Reviewer Agent # Security Reviewer Agent

View File

@@ -2,6 +2,8 @@
name: agent-check name: agent-check
description: Agent definition validator for quick verification description: Agent definition validator for quick verification
model: haiku model: haiku
permissionMode: plan
disallowedTools: Write, Edit, MultiEdit
--- ---
# Agent Check Agent # Agent Check Agent

View File

@@ -2,6 +2,7 @@
name: full-validation name: full-validation
description: Contract validation specialist for comprehensive cross-plugin compatibility validation of the entire marketplace. description: Contract validation specialist for comprehensive cross-plugin compatibility validation of the entire marketplace.
model: sonnet model: sonnet
permissionMode: default
--- ---
# Full Validation Agent # Full Validation Agent
@@ -99,5 +100,5 @@ You are a contract validation specialist. Your role is to perform comprehensive
2. Parses all README.md files 2. Parses all README.md files
3. Runs 66 pairwise compatibility checks 3. Runs 66 pairwise compatibility checks
4. Finds 3 errors, 4 warnings 4. Finds 3 errors, 4 warnings
5. Reports: "Command conflict: projman and data-platform both define /initial-setup" 5. Reports: "Command conflict: pluginA and pluginB both define /setup"
6. Suggests: "Rename one command to avoid ambiguity" 6. Suggests: "Rename one command to avoid ambiguity"

View File

@@ -2,7 +2,7 @@
description: Interactive setup wizard for contract-validator plugin description: Interactive setup wizard for contract-validator plugin
--- ---
# /initial-setup - Contract-Validator Setup Wizard # /cv-setup - Contract Validator Setup Wizard
## Skills to Load ## Skills to Load
- skills/visual-output.md - skills/visual-output.md

View File

@@ -65,6 +65,6 @@ Available MCP tools for contract-validator operations.
## Error Handling ## Error Handling
If MCP tools fail: If MCP tools fail:
1. Check if `/initial-setup` has been run 1. Check if `/cv-setup` has been run
2. Verify session was restarted after setup 2. Verify session was restarted after setup
3. Check MCP server venv exists and is valid 3. Check MCP server venv exists and is valid

View File

@@ -2,6 +2,7 @@
name: data-advisor name: data-advisor
description: Reviews code for data integrity, schema validity, and dbt compliance using data-platform MCP tools. Use when validating database operations or data pipelines. description: Reviews code for data integrity, schema validity, and dbt compliance using data-platform MCP tools. Use when validating database operations or data pipelines.
model: sonnet model: sonnet
permissionMode: default
--- ---
# Data Advisor Agent # Data Advisor Agent

View File

@@ -2,6 +2,8 @@
name: data-analysis name: data-analysis
description: Data analysis specialist for exploration and profiling description: Data analysis specialist for exploration and profiling
model: sonnet model: sonnet
permissionMode: plan
disallowedTools: Write, Edit, MultiEdit
--- ---
# Data Analysis Agent # Data Analysis Agent

View File

@@ -2,6 +2,7 @@
name: data-ingestion name: data-ingestion
description: Data ingestion specialist for loading, transforming, and preparing data for analysis. description: Data ingestion specialist for loading, transforming, and preparing data for analysis.
model: haiku model: haiku
permissionMode: acceptEdits
--- ---
# Data Ingestion Agent # Data Ingestion Agent

View File

@@ -18,12 +18,12 @@ This project uses the data-platform plugin for data engineering workflows.
| Command | Purpose | | Command | Purpose |
|---------|---------| |---------|---------|
| `/ingest` | Load data from files or database | | `/data-ingest` | Load data from files or database |
| `/profile` | Generate statistical profile | | `/data-profile` | Generate statistical profile |
| `/schema` | Show schema information | | `/data-schema` | Show schema information |
| `/explain` | Explain dbt model | | `/data-explain` | Explain dbt model |
| `/lineage` | Show data lineage | | `/data-lineage` | Show data lineage |
| `/run` | Execute dbt models | | `/data-run` | Execute dbt models |
### data_ref Convention ### data_ref Convention
@@ -36,9 +36,9 @@ DataFrames are stored with references. Use meaningful names:
### dbt Workflow ### dbt Workflow
1. Always validate before running: `/run` includes automatic `dbt_parse` 1. Always validate before running: `/data-run` includes automatic `dbt_parse`
2. For dbt 1.9+, check for deprecated syntax before commits 2. For dbt 1.9+, check for deprecated syntax before commits
3. Use `/lineage` to understand impact of changes 3. Use `/data-lineage` to understand impact of changes
### Database Access ### Database Access
@@ -69,22 +69,22 @@ DATA_PLATFORM_MAX_ROWS=100000
### Data Exploration ### Data Exploration
``` ```
/ingest data/raw_customers.csv /data-ingest data/raw_customers.csv
/profile raw_customers /data-profile raw_customers
/schema /data-schema
``` ```
### ETL Development ### ETL Development
``` ```
/schema orders # Understand source /data-schema orders # Understand source
/explain stg_orders # Understand transformation /data-explain stg_orders # Understand transformation
/run stg_orders # Test the model /data-run stg_orders # Test the model
/lineage fct_orders # Check downstream impact /data-lineage fct_orders # Check downstream impact
``` ```
### Database Analysis ### Database Analysis
``` ```
/schema # List all tables /data-schema # List all tables
pg_columns orders # Detailed schema pg_columns orders # Detailed schema
st_tables # Find spatial data st_tables # Find spatial data
``` ```

View File

@@ -1,4 +1,4 @@
# /explain - dbt Model Explanation # /data-explain - dbt Model Explanation
## Skills to Load ## Skills to Load
- skills/dbt-workflow.md - skills/dbt-workflow.md
@@ -13,7 +13,7 @@ Display header: `DATA-PLATFORM - Model Explanation`
## Usage ## Usage
``` ```
/explain <model_name> /data-explain <model_name>
``` ```
## Workflow ## Workflow
@@ -26,8 +26,8 @@ Display header: `DATA-PLATFORM - Model Explanation`
## Examples ## Examples
``` ```
/explain dim_customers /data-explain dim_customers
/explain fct_orders /data-explain fct_orders
``` ```
## Required MCP Tools ## Required MCP Tools

View File

@@ -1,4 +1,4 @@
# /ingest - Data Ingestion # /data-ingest - Data Ingestion
## Skills to Load ## Skills to Load
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md
@@ -11,7 +11,7 @@ Display header: `DATA-PLATFORM - Ingest`
## Usage ## Usage
``` ```
/ingest [source] /data-ingest [source]
``` ```
## Workflow ## Workflow
@@ -31,9 +31,9 @@ Display header: `DATA-PLATFORM - Ingest`
## Examples ## Examples
``` ```
/ingest data/sales.csv /data-ingest data/sales.csv
/ingest data/customers.parquet /data-ingest data/customers.parquet
/ingest "SELECT * FROM orders WHERE created_at > '2024-01-01'" /data-ingest "SELECT * FROM orders WHERE created_at > '2024-01-01'"
``` ```
## Required MCP Tools ## Required MCP Tools

View File

@@ -1,4 +1,4 @@
# /lineage - Data Lineage Visualization # /data-lineage - Data Lineage Visualization
## Skills to Load ## Skills to Load
- skills/lineage-analysis.md - skills/lineage-analysis.md
@@ -12,7 +12,7 @@ Display header: `DATA-PLATFORM - Lineage`
## Usage ## Usage
``` ```
/lineage <model_name> [--depth N] /data-lineage <model_name> [--depth N]
``` ```
## Workflow ## Workflow
@@ -25,8 +25,8 @@ Display header: `DATA-PLATFORM - Lineage`
## Examples ## Examples
``` ```
/lineage dim_customers /data-lineage dim_customers
/lineage fct_orders --depth 3 /data-lineage fct_orders --depth 3
``` ```
## Required MCP Tools ## Required MCP Tools

View File

@@ -1,4 +1,4 @@
# /profile - Data Profiling # /data-profile - Data Profiling
## Skills to Load ## Skills to Load
- skills/data-profiling.md - skills/data-profiling.md
@@ -12,7 +12,7 @@ Display header: `DATA-PLATFORM - Data Profile`
## Usage ## Usage
``` ```
/profile <data_ref> /data-profile <data_ref>
``` ```
## Workflow ## Workflow
@@ -27,8 +27,8 @@ Execute `skills/data-profiling.md` profiling workflow:
## Examples ## Examples
``` ```
/profile sales_data /data-profile sales_data
/profile df_a1b2c3d4 /data-profile df_a1b2c3d4
``` ```
## Required MCP Tools ## Required MCP Tools

View File

@@ -145,5 +145,5 @@ Use `/data-gate` when you want to automate.
## Related Commands ## Related Commands
- `/data-gate` - Binary pass/fail for automation - `/data-gate` - Binary pass/fail for automation
- `/lineage` - Visualize dbt model dependencies - `/data-lineage` - Visualize dbt model dependencies
- `/schema` - Explore database schema - `/data-schema` - Explore database schema

View File

@@ -1,4 +1,4 @@
# /run - Execute dbt Models # /data-run - Execute dbt Models
## Skills to Load ## Skills to Load
- skills/dbt-workflow.md - skills/dbt-workflow.md
@@ -12,7 +12,7 @@ Display header: `DATA-PLATFORM - dbt Run`
## Usage ## Usage
``` ```
/run [model_selection] [--full-refresh] /data-run [model_selection] [--full-refresh]
``` ```
## Workflow ## Workflow
@@ -30,11 +30,11 @@ See `skills/dbt-workflow.md` for full selection patterns.
## Examples ## Examples
``` ```
/run # Run all models /data-run # Run all models
/run dim_customers # Run specific model /data-run dim_customers # Run specific model
/run +fct_orders # Run model and upstream /data-run +fct_orders # Run model and upstream
/run tag:daily # Run models with tag /data-run tag:daily # Run models with tag
/run --full-refresh # Rebuild incremental models /data-run --full-refresh # Rebuild incremental models
``` ```
## Required MCP Tools ## Required MCP Tools

View File

@@ -1,4 +1,4 @@
# /schema - Schema Exploration # /data-schema - Schema Exploration
## Skills to Load ## Skills to Load
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md
@@ -11,7 +11,7 @@ Display header: `DATA-PLATFORM - Schema Explorer`
## Usage ## Usage
``` ```
/schema [table_name | data_ref] /data-schema [table_name | data_ref]
``` ```
## Workflow ## Workflow
@@ -30,9 +30,9 @@ Display header: `DATA-PLATFORM - Schema Explorer`
## Examples ## Examples
``` ```
/schema # List all tables and DataFrames /data-schema # List all tables and DataFrames
/schema customers # Show table schema /data-schema customers # Show table schema
/schema sales_data # Show DataFrame schema /data-schema sales_data # Show DataFrame schema
``` ```
## Required MCP Tools ## Required MCP Tools

View File

@@ -1,4 +1,4 @@
# /initial-setup - Data Platform Setup Wizard # /data-setup - Data Platform Setup Wizard
## Skills to Load ## Skills to Load
- skills/setup-workflow.md - skills/setup-workflow.md
@@ -11,7 +11,7 @@ Display header: `DATA-PLATFORM - Setup Wizard`
## Usage ## Usage
``` ```
/initial-setup /data-setup
``` ```
## Workflow ## Workflow

View File

@@ -2,6 +2,7 @@
name: doc-analyzer name: doc-analyzer
description: Specialized agent for documentation analysis and drift detection. Use when detecting or fixing discrepancies between code and documentation. description: Specialized agent for documentation analysis and drift detection. Use when detecting or fixing discrepancies between code and documentation.
model: sonnet model: sonnet
permissionMode: acceptEdits
--- ---
# Documentation Analyzer Agent # Documentation Analyzer Agent

View File

@@ -2,6 +2,7 @@
name: git-assistant name: git-assistant
description: Git workflow assistant for complex git operations, conflict resolution, and repository history management. description: Git workflow assistant for complex git operations, conflict resolution, and repository history management.
model: haiku model: haiku
permissionMode: acceptEdits
--- ---
# Git Assistant Agent # Git Assistant Agent

View File

@@ -40,9 +40,9 @@ Use conventional commits:
| Command | Use Case | | Command | Use Case |
|---------|----------| |---------|----------|
| `/commit` | Create commit with smart message | | `/git-commit` | Create commit with smart message |
| `/commit-push` | Commit and push | | `/git-commit-push` | Commit and push |
| `/commit-merge` | Commit and merge to base | | `/git-commit-merge` | Commit and merge to base |
| `/branch-start` | Start new branch | | `/branch-start` | Start new branch |
| `/git-status` | Enhanced status | | `/git-status` | Enhanced status |

View File

@@ -1,10 +1,10 @@
--- ---
name: commit-merge name: git-commit-merge
description: Commit current changes and merge branch into target description: Commit current changes and merge branch into target
agent: git-assistant agent: git-assistant
--- ---
# /commit-merge - Commit and Merge # /git-commit-merge - Commit and Merge
## Skills ## Skills
@@ -29,7 +29,7 @@ Commit current changes, then merge the current branch into a target branch.
## Workflow ## Workflow
1. **Display header** - Show GIT-FLOW Commit & Merge header 1. **Display header** - Show GIT-FLOW Commit & Merge header
2. **Run /commit** - Execute standard commit workflow 2. **Run /git-commit** - Execute standard commit workflow
3. **Identify target** - Prompt for target branch if not specified 3. **Identify target** - Prompt for target branch if not specified
4. **Select strategy** - Merge commit, squash, or rebase (per merge-workflow.md) 4. **Select strategy** - Merge commit, squash, or rebase (per merge-workflow.md)
5. **Execute merge** - Switch to target, pull, merge, push 5. **Execute merge** - Switch to target, pull, merge, push

View File

@@ -1,10 +1,10 @@
--- ---
name: commit-push name: git-commit-push
description: Create a commit and push to remote in one operation description: Create a commit and push to remote in one operation
agent: git-assistant agent: git-assistant
--- ---
# /commit-push - Commit and Push # /git-commit-push - Commit and Push
## Skills ## Skills
@@ -28,7 +28,7 @@ Create a commit and push to the remote repository in one operation.
## Workflow ## Workflow
1. **Display header** - Show GIT-FLOW Commit & Push header 1. **Display header** - Show GIT-FLOW Commit & Push header
2. **Run /commit** - Execute standard commit workflow 2. **Run /git-commit** - Execute standard commit workflow
3. **Check upstream** - Set up tracking if needed (`git push -u`) 3. **Check upstream** - Set up tracking if needed (`git push -u`)
4. **Push** - Push to remote 4. **Push** - Push to remote
5. **Handle conflicts** - Offer rebase/merge/force if push fails (per sync-workflow.md) 5. **Handle conflicts** - Offer rebase/merge/force if push fails (per sync-workflow.md)

View File

@@ -1,10 +1,10 @@
--- ---
name: commit-sync name: git-commit-sync
description: Commit, push, and sync with base branch description: Commit, push, and sync with base branch
agent: git-assistant agent: git-assistant
--- ---
# /commit-sync - Commit, Push, and Sync # /git-commit-sync - Commit, Push, and Sync
## Skills ## Skills
@@ -28,7 +28,7 @@ Full sync operation: commit local changes, push to remote, sync with upstream/ba
## Workflow ## Workflow
1. **Display header** - Show GIT-FLOW Commit Sync header 1. **Display header** - Show GIT-FLOW Commit Sync header
2. **Run /commit** - Execute standard commit workflow 2. **Run /git-commit** - Execute standard commit workflow
3. **Push to remote** - Push committed changes 3. **Push to remote** - Push committed changes
4. **Fetch with prune** - `git fetch --all --prune` 4. **Fetch with prune** - `git fetch --all --prune`
5. **Sync with base** - Rebase on base branch (per sync-workflow.md) 5. **Sync with base** - Rebase on base branch (per sync-workflow.md)

View File

@@ -1,10 +1,10 @@
--- ---
name: commit name: git-commit
description: Create a git commit with auto-generated conventional commit message description: Create a git commit with auto-generated conventional commit message
agent: git-assistant agent: git-assistant
--- ---
# /commit - Smart Commit # /git-commit - Smart Commit
## Skills ## Skills

View File

@@ -6,7 +6,7 @@ Defines conventional commit message format for consistent, parseable commit hist
## When to Use ## When to Use
- Generating commit messages in `/commit` - Generating commit messages in `/git-commit`
- Validating user-provided commit messages - Validating user-provided commit messages
- Explaining commit format to users - Explaining commit format to users

View File

@@ -6,7 +6,7 @@ Defines merge strategies, conflict resolution approaches, and post-merge cleanup
## When to Use ## When to Use
- Merging feature branches in `/commit-merge` - Merging feature branches in `/git-commit-merge`
- Resolving conflicts during sync operations - Resolving conflicts during sync operations
- Cleaning up after successful merges - Cleaning up after successful merges

View File

@@ -6,8 +6,8 @@ Defines push/pull patterns, rebase strategies, upstream tracking, and stale bran
## When to Use ## When to Use
- Pushing commits in `/commit-push` - Pushing commits in `/git-commit-push`
- Full sync operations in `/commit-sync` - Full sync operations in `/git-commit-sync`
- Detecting and reporting stale branches - Detecting and reporting stale branches
## Push Workflow ## Push Workflow

View File

@@ -2,6 +2,8 @@
name: coordinator name: coordinator
description: Review coordinator that orchestrates the multi-agent PR review process. Dispatches to specialized reviewers, aggregates findings, and produces the final review report. Use proactively after code changes. description: Review coordinator that orchestrates the multi-agent PR review process. Dispatches to specialized reviewers, aggregates findings, and produces the final review report. Use proactively after code changes.
model: sonnet model: sonnet
permissionMode: plan
disallowedTools: Write, Edit, MultiEdit
--- ---
# Coordinator Agent # Coordinator Agent

View File

@@ -2,6 +2,8 @@
name: maintainability-auditor name: maintainability-auditor
description: Identifies code complexity, duplication, naming issues, and architecture concerns in PR changes. description: Identifies code complexity, duplication, naming issues, and architecture concerns in PR changes.
model: haiku model: haiku
permissionMode: plan
disallowedTools: Write, Edit, MultiEdit
--- ---
# Maintainability Auditor Agent # Maintainability Auditor Agent

View File

@@ -2,6 +2,8 @@
name: performance-analyst name: performance-analyst
description: Performance-focused code reviewer that identifies performance issues, inefficiencies, and optimization opportunities. description: Performance-focused code reviewer that identifies performance issues, inefficiencies, and optimization opportunities.
model: sonnet model: sonnet
permissionMode: plan
disallowedTools: Write, Edit, MultiEdit
--- ---
# Performance Analyst Agent # Performance Analyst Agent

View File

@@ -2,6 +2,8 @@
name: security-reviewer name: security-reviewer
description: Security-focused code reviewer for PR analysis description: Security-focused code reviewer for PR analysis
model: sonnet model: sonnet
permissionMode: plan
disallowedTools: Write, Edit, MultiEdit
--- ---
# Security Reviewer Agent # Security Reviewer Agent

View File

@@ -2,6 +2,8 @@
name: test-validator name: test-validator
description: Test quality reviewer that validates test coverage, test quality, and testing practices in PR changes. description: Test quality reviewer that validates test coverage, test quality, and testing practices in PR changes.
model: haiku model: haiku
permissionMode: plan
disallowedTools: Write, Edit, MultiEdit
--- ---
# Test Validator Agent # Test Validator Agent

View File

@@ -17,13 +17,13 @@ Display header: `PR-REVIEW - Project Setup`
Fast setup when system-level config already exists. Fast setup when system-level config already exists.
**Use when:** Already ran `/initial-setup`, starting new project **Use when:** Already ran `/pr-setup`, starting new project
## Workflow ## Workflow
### Pre-Flight Check ### Pre-Flight Check
Verify `~/.config/claude/gitea.env` exists. If missing: redirect to `/initial-setup` Verify `~/.config/claude/gitea.env` exists. If missing: redirect to `/pr-setup`
### Project Setup ### Project Setup

View File

@@ -1,20 +1,16 @@
--- ---
name: code-reviewer name: code-reviewer
description: Pre-sprint code quality review agent description: Pre-sprint code quality review agent
model: sonnet model: opus
permissionMode: default
disallowedTools: Write, Edit, MultiEdit
skills: review-checklist, test-standards, sprint-lifecycle, visual-output
--- ---
# Code Reviewer Agent # Code Reviewer Agent
You are the **Code Reviewer Agent** - a thorough, practical reviewer who ensures code quality before sprint close. You are the **Code Reviewer Agent** - a thorough, practical reviewer who ensures code quality before sprint close.
## Skills to Load
- skills/review-checklist.md
- skills/test-standards.md
- skills/sprint-lifecycle.md
- skills/visual-output.md
## Your Personality ## Your Personality
**Thorough but Practical:** **Thorough but Practical:**

View File

@@ -2,22 +2,14 @@
name: executor name: executor
description: Implementation executor agent - precise implementation guidance and code quality description: Implementation executor agent - precise implementation guidance and code quality
model: sonnet model: sonnet
permissionMode: bypassPermissions
skills: mcp-tools-reference, branch-security, git-workflow, progress-tracking, runaway-detection, lessons-learned, visual-output
--- ---
# Implementation Executor Agent # Implementation Executor Agent
You are the **Executor Agent** - an implementation-focused specialist who writes clean code and ensures quality. You are the **Executor Agent** - an implementation-focused specialist who writes clean code and ensures quality.
## Skills to Load
- skills/mcp-tools-reference.md
- skills/branch-security.md
- skills/git-workflow.md
- skills/progress-tracking.md
- skills/runaway-detection.md
- skills/lessons-learned.md
- skills/visual-output.md
## Your Personality ## Your Personality
**Implementation-Focused:** **Implementation-Focused:**

View File

@@ -2,26 +2,36 @@
name: orchestrator name: orchestrator
description: Sprint orchestration agent - coordinates execution and tracks progress description: Sprint orchestration agent - coordinates execution and tracks progress
model: sonnet model: sonnet
permissionMode: acceptEdits
skills: mcp-tools-reference, batch-execution
--- ---
# Sprint Orchestration Agent # Sprint Orchestration Agent
You are the **Orchestrator Agent** - a concise, action-oriented coordinator who keeps sprints on track. You are the **Orchestrator Agent** - a concise, action-oriented coordinator who keeps sprints on track.
## Skills to Load ## Skill Loading Protocol
- skills/mcp-tools-reference.md **Frontmatter skills (auto-injected, always available — DO NOT re-read these):**
- `mcp-tools-reference` — MCP tool signatures for all Gitea operations
- `batch-execution` — Plan-then-batch protocol for API execution
**Phase 1 skills — read ONCE at session start, before any work begins:**
- skills/branch-security.md - skills/branch-security.md
- skills/sprint-approval.md - skills/sprint-approval.md
- skills/sprint-lifecycle.md
- skills/visual-output.md
- skills/runaway-detection.md
**Phase 2 skills — read ONCE when sequencing and dispatching work:**
- skills/dependency-management.md - skills/dependency-management.md
- skills/lessons-learned.md - skills/lessons-learned.md
- skills/git-workflow.md - skills/git-workflow.md
- skills/progress-tracking.md - skills/progress-tracking.md
- skills/runaway-detection.md
- skills/wiki-conventions.md - skills/wiki-conventions.md
- skills/domain-consultation.md - skills/domain-consultation.md
- skills/sprint-lifecycle.md
- skills/visual-output.md **CRITICAL: Read each skill file exactly ONCE. Do NOT re-read skill files between MCP API calls. When posting status updates, label changes, or comments across multiple issues, use the batch-execution protocol — queue all operations, execute in a loop using only frontmatter skills.**
## Your Personality ## Your Personality

View File

@@ -1,29 +1,41 @@
--- ---
name: planner name: planner
description: Sprint planning agent - thoughtful architecture analysis and issue creation description: Sprint planning agent - thoughtful architecture analysis and issue creation
model: sonnet model: opus
permissionMode: default
skills: mcp-tools-reference, batch-execution
--- ---
# Sprint Planning Agent # Sprint Planning Agent
You are the **Planner Agent** - a methodical architect who thoroughly analyzes requirements before creating well-structured plans. You are the **Planner Agent** - a methodical architect who thoroughly analyzes requirements before creating well-structured plans.
## Skills to Load ## Skill Loading Protocol
- skills/mcp-tools-reference.md **Frontmatter skills (auto-injected, always available — DO NOT re-read these):**
- `mcp-tools-reference` — MCP tool signatures for all Gitea operations
- `batch-execution` — Plan-then-batch protocol for API execution
**Phase 1 skills — read ONCE at session start, before any work begins:**
- skills/branch-security.md - skills/branch-security.md
- skills/repo-validation.md - skills/repo-validation.md
- skills/sprint-lifecycle.md
- skills/visual-output.md
**Phase 2 skills — read ONCE when entering analysis/planning work:**
- skills/input-detection.md - skills/input-detection.md
- skills/lessons-learned.md - skills/lessons-learned.md
- skills/wiki-conventions.md - skills/wiki-conventions.md
- skills/task-sizing.md - skills/task-sizing.md
- skills/issue-conventions.md - skills/issue-conventions.md
- skills/sprint-approval.md
- skills/planning-workflow.md - skills/planning-workflow.md
- skills/label-taxonomy/labels-reference.md - skills/label-taxonomy/labels-reference.md
- skills/domain-consultation.md - skills/domain-consultation.md
- skills/sprint-lifecycle.md
- skills/visual-output.md **Phase 3 skills — read ONCE before requesting approval:**
- skills/sprint-approval.md
**CRITICAL: Read each skill file exactly ONCE. Do NOT re-read skill files between MCP API calls. During batch execution (Step 8a of planning-workflow.md), use ONLY the frontmatter skills — no file reads.**
## Your Personality ## Your Personality

View File

@@ -11,7 +11,7 @@ This project uses the **projman** plugin for sprint planning and project managem
| `/sprint-status` | Check current sprint progress and identify blockers | | `/sprint-status` | Check current sprint progress and identify blockers |
| `/sprint-close` | Complete sprint and capture lessons learned to Gitea Wiki | | `/sprint-close` | Complete sprint and capture lessons learned to Gitea Wiki |
| `/labels-sync` | Synchronize label taxonomy from Gitea | | `/labels-sync` | Synchronize label taxonomy from Gitea |
| `/initial-setup` | Run initial setup for projman plugin | | `/pm-setup` | Run initial setup for projman plugin |
| `/rfc create` | Create new RFC from conversation or clarified spec | | `/rfc create` | Create new RFC from conversation or clarified spec |
| `/rfc list` | List all RFCs grouped by status | | `/rfc list` | List all RFCs grouped by status |
| `/rfc review` | Submit Draft RFC for review | | `/rfc review` | Submit Draft RFC for review |

View File

@@ -2,7 +2,7 @@
description: Diagnose issues and create reports, or investigate existing diagnostic issues description: Diagnose issues and create reports, or investigate existing diagnostic issues
--- ---
# Debug # PM Debug
## Skills Required ## Skills Required
@@ -17,9 +17,9 @@ Unified debugging command for diagnostics and issue investigation.
## Invocation ## Invocation
``` ```
/debug # Ask which mode /pm-debug # Ask which mode
/debug report # Run diagnostics, create issue /pm-debug report # Run diagnostics, create issue
/debug review # Investigate existing issues /pm-debug review # Investigate existing issues
``` ```
## Mode Selection ## Mode Selection

View File

@@ -3,7 +3,7 @@ description: Pre-sprint-close code quality review
agent: code-reviewer agent: code-reviewer
--- ---
# Code Review for Sprint Close # PM Review - Code Review for Sprint Close
## Skills Required ## Skills Required
@@ -16,7 +16,7 @@ Review recent code changes for quality issues before closing the sprint.
## Invocation ## Invocation
Run `/review` before `/sprint-close` to catch issues. Run `/pm-review` before `/sprint-close` to catch issues.
## Workflow ## Workflow

View File

@@ -2,7 +2,7 @@
description: Configure projman - full setup, quick project init, or sync after repo move description: Configure projman - full setup, quick project init, or sync after repo move
--- ---
# Setup # PM Setup
## Skills Required ## Skills Required
@@ -22,11 +22,11 @@ Unified setup command for all configuration needs.
## Invocation ## Invocation
``` ```
/setup # Auto-detect appropriate mode /pm-setup # Auto-detect appropriate mode
/setup --full # Full wizard (MCP + system + project) /pm-setup --full # Full wizard (MCP + system + project)
/setup --quick # Project-only setup /pm-setup --quick # Project-only setup
/setup --sync # Update after repo move /pm-setup --sync # Update after repo move
/setup --clear-cache # Clear plugin cache (between sessions only) /pm-setup --clear-cache # Clear plugin cache (between sessions only)
``` ```
## Mode Detection ## Mode Detection

View File

@@ -2,7 +2,7 @@
description: Run tests with coverage or generate tests for specified code description: Run tests with coverage or generate tests for specified code
--- ---
# Test # PM Test
## Skills Required ## Skills Required
@@ -15,13 +15,13 @@ Unified testing command for running tests and generating new tests.
## Invocation ## Invocation
``` ```
/test # Default: run tests /pm-test # Default: run tests
/test run # Run tests, check coverage /pm-test run # Run tests, check coverage
/test run --coverage # Run with coverage report /pm-test run --coverage # Run with coverage report
/test run --verbose # Verbose output /pm-test run --verbose # Verbose output
/test gen <target> # Generate tests for target /pm-test gen <target> # Generate tests for target
/test gen <target> --type=unit # Specific test type /pm-test gen <target> --type=unit # Specific test type
/test gen <target> --framework=jest # Specific framework /pm-test gen <target> --framework=jest # Specific framework
``` ```
## Mode Selection ## Mode Selection
@@ -104,15 +104,15 @@ See `skills/test-standards.md` for test patterns and structure.
## Sprint Integration ## Sprint Integration
The `/test` command plays a critical role in the sprint close workflow: The `/pm-test` command plays a critical role in the sprint close workflow:
1. After `/review` identifies code quality issues 1. After `/pm-review` identifies code quality issues
2. Before `/sprint-close` finalizes the sprint 2. Before `/sprint-close` finalizes the sprint
3. The code reviewer and orchestrator reference test results when deciding if a sprint is ready to close 3. The code reviewer and orchestrator reference test results when deciding if a sprint is ready to close
### Pre-Close Verification ### Pre-Close Verification
When running `/test run` before sprint close: When running `/pm-test run` before sprint close:
1. **Identify sprint files** - Files changed in the current sprint (via git diff against development) 1. **Identify sprint files** - Files changed in the current sprint (via git diff against development)
2. **Check test coverage** - Report which sprint files have tests and which don't 2. **Check test coverage** - Report which sprint files have tests and which don't
@@ -125,31 +125,31 @@ When running `/test run` before sprint close:
### Run all tests ### Run all tests
``` ```
/test run /pm-test run
``` ```
Detects framework, runs full test suite, reports results. Detects framework, runs full test suite, reports results.
### Run with coverage ### Run with coverage
``` ```
/test run --coverage /pm-test run --coverage
``` ```
Same as above plus coverage percentage per file. Same as above plus coverage percentage per file.
### Generate tests for a specific file ### Generate tests for a specific file
``` ```
/test gen src/auth/jwt_service.py /pm-test gen src/auth/jwt_service.py
``` ```
Analyzes the file, generates a test file at `tests/test_jwt_service.py`. Analyzes the file, generates a test file at `tests/test_jwt_service.py`.
### Generate specific test type ### Generate specific test type
``` ```
/test gen src/api/routes/auth.py --type=integration /pm-test gen src/api/routes/auth.py --type=integration
``` ```
Generates integration tests (request/response patterns) instead of unit tests. Generates integration tests (request/response patterns) instead of unit tests.
### Generate with specific framework ### Generate with specific framework
``` ```
/test gen src/components/Card.jsx --framework=vitest /pm-test gen src/components/Card.jsx --framework=vitest
``` ```
Uses Vitest instead of auto-detected framework. Uses Vitest instead of auto-detected framework.
@@ -161,7 +161,7 @@ Uses Vitest instead of auto-detected framework.
|----------|----------| |----------|----------|
| No test framework detected | List what was checked, ask user to specify test command | | No test framework detected | List what was checked, ask user to specify test command |
| Tests fail | Report failures clearly, recommend "TESTS MUST PASS before sprint close" | | Tests fail | Report failures clearly, recommend "TESTS MUST PASS before sprint close" |
| No tests exist for sprint files | Warn with file list, offer to generate with `/test gen` | | No tests exist for sprint files | Warn with file list, offer to generate with `/pm-test gen` |
| External services required | Ask for confirmation before running tests that need database/API | | External services required | Ask for confirmation before running tests that need database/API |
| Mixed framework project | Detect all frameworks, ask which to run or run all | | Mixed framework project | Detect all frameworks, ask which to run or run all |

View File

@@ -7,7 +7,8 @@ agent: planner
## Skills Required ## Skills Required
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md (frontmatter — auto-injected)
- skills/batch-execution.md (frontmatter — auto-injected)
- skills/branch-security.md - skills/branch-security.md
- skills/repo-validation.md - skills/repo-validation.md
- skills/input-detection.md - skills/input-detection.md

View File

@@ -7,7 +7,8 @@ agent: orchestrator
## Skills Required ## Skills Required
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md (frontmatter — auto-injected)
- skills/batch-execution.md (frontmatter — auto-injected)
- skills/branch-security.md - skills/branch-security.md
- skills/sprint-approval.md - skills/sprint-approval.md
- skills/dependency-management.md - skills/dependency-management.md

View File

@@ -0,0 +1,116 @@
---
name: batch-execution
description: Batch MCP API execution to eliminate redundant skill reloading between repetitive operations
---
# Batch Execution Pattern
## Purpose
Separate cognitive work (analysis, planning, decision-making) from mechanical API execution (issue creation, dependency setup, status updates). Think once with all skills loaded, then execute repetitive API calls in a tight loop with only `mcp-tools-reference.md` needed.
## When to Use
- **Planner agent**: After drafting all issues, before calling `create_issue`
- **Orchestrator agent**: When posting status updates, label changes, or comments across multiple issues
- **Any agent**: When making 3+ similar MCP API calls in sequence
## Protocol
### Phase 1: Cognitive Work (all skills loaded)
During analysis, architecture, and planning — use every skill you need. Read files, think deeply, ask questions, resolve ambiguity. This is where the full skill set pays for itself.
**Output of this phase:** A complete, structured execution plan listing every API operation with all parameters fully resolved. No ambiguity, no placeholders that require re-analysis.
### Phase 2: Execution Manifest
Before entering batch mode, produce a structured manifest. This serves as both the execution plan AND a checkpoint for user visibility. Format:
```
## Execution Manifest
### Issue Creation (N items)
1. `create_issue` — title: "[Sprint XX] feat: ..." | labels: [...] | milestone: N
2. `create_issue` — title: "[Sprint XX] fix: ..." | labels: [...] | milestone: N
...
### Dependency Setup (N items)
1. `create_issue_dependency` — issue: $1 depends_on: $2
...
### Milestone Assignment (N items)
1. `update_issue` — issue: $1 milestone: N
...
### Status/Label Updates (N items)
1. `update_issue` — issue: #N labels: [add "Status/In-Progress"]
...
```
Variable references (`$1`, `$2`) resolve to outputs from prior batch operations (e.g., `$1` = issue number returned by first `create_issue`).
### Phase 3: Batch Execute
Execute the manifest items in order, grouped by operation type:
1. **All `create_issue` calls** — collect returned issue numbers
2. **Resolve variable references** — map `$1` → actual issue #45, `$2`#46, etc.
3. **All `create_issue_dependency` calls** — using resolved numbers
4. **All milestone assignments** — if not done during creation
5. **All status/label updates** — using resolved numbers
**Rules during batch execution:**
- Do NOT re-read any skill files between calls
- Do NOT re-analyze or second-guess the plan — it was finalized in Phase 1
- Do NOT add commentary between individual API calls — batch them silently
- DO track success/failure per operation
- DO continue on individual failures (log and report at end)
- DO post a progress summary after each batch group completes
### Phase 4: Batch Report
After all operations complete, report results:
```
## Batch Execution Complete
### Issue Creation: 6/6 ✓
- #45: [Sprint 19] feat: JWT generation
- #46: [Sprint 19] feat: Login endpoint
- #47: [Sprint 19] feat: Token refresh
- #48: [Sprint 19] test: Auth unit tests
- #49: [Sprint 19] docs: API documentation
- #50: [Sprint 19] chore: CI pipeline
### Dependencies: 4/4 ✓
- #46 depends on #45
- #47 depends on #45
- #48 depends on #46, #47
- #49 depends on #46
### Milestone Assignment: 6/6 ✓
- All issues assigned to Sprint 19
### Failures: 0
```
## Error Handling
| Error | Action |
|-------|--------|
| Single API call fails | Log error, continue with next item |
| Dependency target missing (prior create failed) | Skip dependency, log as blocked |
| All creates fail | STOP batch, report connection/auth issue |
| Partial milestone assignment | Report which issues weren't assigned |
After batch completes, if any failures: present failure summary and ask user whether to retry failed operations or continue.
## Anti-Patterns
| Wrong | Why | Right |
|-------|-----|-------|
| Re-reading `mcp-tools-reference.md` before each API call | Wastes tokens; you already know the tool signatures | Read once, execute many |
| Interleaving analysis with API calls | Forces full context per call | Finish ALL analysis first, THEN batch execute |
| Calling create_issue one at a time with commentary between | Token overhead per turn | Queue all creates, execute in tight loop |
| Stopping the batch to ask user about individual items | Defeats batching purpose | Complete batch, report results, ask about failures |

View File

@@ -84,21 +84,38 @@ Think through:
- What dependencies exist? - What dependencies exist?
- What are potential risks? - What are potential risks?
### 8. Create Gitea Issues ### 8. Draft Issue Specifications (DO NOT create yet)
Follow `skills/issue-conventions.md` and `skills/task-sizing.md`: Follow `skills/issue-conventions.md` and `skills/task-sizing.md` to prepare the complete specification for ALL issues. **Do NOT call `create_issue` yet.**
- Use proper title format: `[Sprint XX] <type>: <description>`
- Include wiki implementation reference
- Apply appropriate labels using `suggest_labels`
- **Refuse to create L/XL tasks without breakdown**
### 9. Set Up Dependencies For each issue, resolve completely:
- Title: `[Sprint XX] <type>: <description>`
- Body: Full description with wiki reference, acceptance criteria, technical notes
- Labels: Use `suggest_labels` to determine, then finalize the list
- Milestone: The sprint milestone (create first if needed)
- Dependencies: Which issues depend on which (by draft order index)
```python **Refuse to create L/XL tasks without breakdown.**
create_issue_dependency(repo="org/repo", issue_number=46, depends_on=45)
```
### 10. Create or Select Milestone Output: A complete execution manifest per `skills/batch-execution.md` Phase 2 format.
### 8a. Batch Execute Issue Creation
Follow `skills/batch-execution.md` Phase 3:
1. Execute all `create_issue` calls — collect returned issue numbers
2. Execute all `create_issue_dependency` calls — using collected numbers
3. Assign all issues to milestone
4. Report batch results per Phase 4 format
**Only `skills/mcp-tools-reference.md` is needed for this step.** Do NOT re-read other skill files.
### 9. (Merged into Step 8a)
Dependencies are now created as part of the batch execution in Step 8a. No separate step needed.
### 10. Create or Select Milestone (before batch)
**This step runs BEFORE Step 8a** — the milestone must exist before batch issue creation can assign to it.
```python ```python
create_milestone( create_milestone(
@@ -109,7 +126,7 @@ create_milestone(
) )
``` ```
Assign issues to the milestone. If milestone already exists, select it. Record the milestone ID for use in the batch manifest.
### 11. Request Sprint Approval ### 11. Request Sprint Approval

View File

@@ -12,7 +12,7 @@ Defines code review criteria, severity classification, and output format.
## When to Use ## When to Use
- **Code Reviewer agent**: During pre-sprint-close review - **Code Reviewer agent**: During pre-sprint-close review
- **Commands**: `/review` - **Commands**: `/pm-review`
--- ---

View File

@@ -1,6 +1,6 @@
# Setup Workflows # Setup Workflows
Shared workflows for the `/setup` command modes. Shared workflows for the `/pm-setup` command modes.
## Mode Detection Logic ## Mode Detection Logic

View File

@@ -20,7 +20,7 @@ Defines the valid sprint lifecycle states and transitions, enforced via labels o
``` ```
idle -> Sprint/Planning -> Sprint/Executing -> Sprint/Reviewing -> idle idle -> Sprint/Planning -> Sprint/Executing -> Sprint/Reviewing -> idle
(sprint-plan) (sprint-start) (review) (sprint-close) (sprint-plan) (sprint-start) (pm-review) (sprint-close)
``` ```
## State Labels ## State Labels
@@ -30,7 +30,7 @@ idle -> Sprint/Planning -> Sprint/Executing -> Sprint/Reviewing -> idle
| *(no Sprint/* label)* | `/sprint-close` or initial state | Idle - no active sprint phase | | *(no Sprint/* label)* | `/sprint-close` or initial state | Idle - no active sprint phase |
| `Sprint/Planning` | `/sprint-plan` | Planning in progress | | `Sprint/Planning` | `/sprint-plan` | Planning in progress |
| `Sprint/Executing` | `/sprint-start` | Execution in progress | | `Sprint/Executing` | `/sprint-start` | Execution in progress |
| `Sprint/Reviewing` | `/review` | Code review in progress | | `Sprint/Reviewing` | `/pm-review` | Code review in progress |
**Rule:** Only ONE `Sprint/*` label may exist on a milestone at a time. Setting a new one removes the previous one. **Rule:** Only ONE `Sprint/*` label may exist on a milestone at a time. Setting a new one removes the previous one.
@@ -42,8 +42,8 @@ idle -> Sprint/Planning -> Sprint/Executing -> Sprint/Reviewing -> idle
|---------|---------------|------------|----------------| |---------|---------------|------------|----------------|
| `/sprint-plan` | idle (no Sprint/* label) | `Sprint/Planning` | Warn: "Sprint is in [state]. Run `/sprint-close` first or use `--force` to re-plan." Allow with `--force`. | | `/sprint-plan` | idle (no Sprint/* label) | `Sprint/Planning` | Warn: "Sprint is in [state]. Run `/sprint-close` first or use `--force` to re-plan." Allow with `--force`. |
| `/sprint-start` | `Sprint/Planning` | `Sprint/Executing` | Warn: "Expected Sprint/Planning state but found [state]. Run `/sprint-plan` first or use `--force`." Allow with `--force`. | | `/sprint-start` | `Sprint/Planning` | `Sprint/Executing` | Warn: "Expected Sprint/Planning state but found [state]. Run `/sprint-plan` first or use `--force`." Allow with `--force`. |
| `/review` | `Sprint/Executing` | `Sprint/Reviewing` | Warn: "Expected Sprint/Executing state but found [state]." Allow with `--force`. | | `/pm-review` | `Sprint/Executing` | `Sprint/Reviewing` | Warn: "Expected Sprint/Executing state but found [state]." Allow with `--force`. |
| `/sprint-close` | `Sprint/Reviewing` | Remove all Sprint/* labels (idle) | Warn: "Expected Sprint/Reviewing state but found [state]. Run `/review` first or use `--force`." Allow with `--force`. | | `/sprint-close` | `Sprint/Reviewing` | Remove all Sprint/* labels (idle) | Warn: "Expected Sprint/Reviewing state but found [state]. Run `/pm-review` first or use `--force`." Allow with `--force`. |
| `/sprint-status` | Any | No change (read-only) | Display current state in output. | | `/sprint-status` | Any | No change (read-only) | Display current state in output. |
--- ---

View File

@@ -41,12 +41,12 @@ For commands that don't invoke a specific agent phase:
| Command | Phase Emoji | Phase Name | | Command | Phase Emoji | Phase Name |
|---------|-------------|------------| |---------|-------------|------------|
| `/sprint-status` | 📊 Chart | STATUS | | `/sprint-status` | 📊 Chart | STATUS |
| `/setup` | ⚙️ Gear | SETUP | | `/pm-setup` | ⚙️ Gear | SETUP |
| `/debug` | 🐛 Bug | DEBUG | | `/pm-debug` | 🐛 Bug | DEBUG |
| `/labels-sync` | 🏷️ Label | LABELS | | `/labels-sync` | 🏷️ Label | LABELS |
| `/suggest-version` | 📦 Package | VERSION | | `/suggest-version` | 📦 Package | VERSION |
| `/proposal-status` | 📋 Clipboard | PROPOSALS | | `/proposal-status` | 📋 Clipboard | PROPOSALS |
| `/test` | 🧪 Flask | TEST | | `/pm-test` | 🧪 Flask | TEST |
| `/rfc` | 📄 Document | RFC [Sub-Command] | | `/rfc` | 📄 Document | RFC [Sub-Command] |
--- ---

View File

@@ -2,6 +2,8 @@
name: component-check name: component-check
description: DMC component validation specialist description: DMC component validation specialist
model: haiku model: haiku
permissionMode: plan
disallowedTools: Write, Edit, MultiEdit
--- ---
# Component Check Agent # Component Check Agent

View File

@@ -2,6 +2,8 @@
name: design-reviewer name: design-reviewer
description: Reviews code for design system compliance using viz-platform MCP tools. Use when validating DMC components, theme tokens, or accessibility standards. description: Reviews code for design system compliance using viz-platform MCP tools. Use when validating DMC components, theme tokens, or accessibility standards.
model: sonnet model: sonnet
permissionMode: plan
disallowedTools: Write, Edit, MultiEdit
--- ---
# Design Reviewer Agent # Design Reviewer Agent

View File

@@ -2,6 +2,7 @@
name: layout-builder name: layout-builder
description: Practical dashboard layout specialist for creating well-structured layouts with filtering, grid systems, and responsive design. description: Practical dashboard layout specialist for creating well-structured layouts with filtering, grid systems, and responsive design.
model: sonnet model: sonnet
permissionMode: default
--- ---
# Layout Builder Agent # Layout Builder Agent

View File

@@ -2,6 +2,7 @@
name: theme-setup name: theme-setup
description: Design-focused theme setup specialist for creating consistent, brand-aligned themes for Dash Mantine Components applications. description: Design-focused theme setup specialist for creating consistent, brand-aligned themes for Dash Mantine Components applications.
model: haiku model: haiku
permissionMode: acceptEdits
--- ---
# Theme Setup Agent # Theme Setup Agent

View File

@@ -10,12 +10,12 @@ Add this snippet to your project's CLAUDE.md to enable viz-platform capabilities
This project uses viz-platform for Dash Mantine Components dashboards. This project uses viz-platform for Dash Mantine Components dashboards.
### Available Commands ### Available Commands
- `/component {name}` - Inspect DMC component props - `/viz-component {name}` - Inspect DMC component props
- `/chart {type}` - Create Plotly charts (line, bar, scatter, pie, area, histogram, box, heatmap, sunburst, treemap) - `/viz-chart {type}` - Create Plotly charts (line, bar, scatter, pie, area, histogram, box, heatmap, sunburst, treemap)
- `/dashboard {template}` - Create layouts (basic, sidebar, tabs, split) - `/viz-dashboard {template}` - Create layouts (basic, sidebar, tabs, split)
- `/theme {name}` - Apply a theme - `/viz-theme {name}` - Apply a theme
- `/theme-new {name}` - Create custom theme - `/viz-theme-new {name}` - Create custom theme
- `/theme-css {name}` - Export theme as CSS - `/viz-theme-css {name}` - Export theme as CSS
### MCP Tools Available ### MCP Tools Available
- **DMC**: list_components, get_component_props, validate_component - **DMC**: list_components, get_component_props, validate_component
@@ -49,8 +49,8 @@ If using with data-platform, add this section:
- `/profile {data_ref}` - Statistical summary - `/profile {data_ref}` - Statistical summary
### Visualization (viz-platform) ### Visualization (viz-platform)
- `/chart {type}` - Create charts from loaded data - `/viz-chart {type}` - Create charts from loaded data
- `/dashboard {template}` - Build dashboard layouts - `/viz-dashboard {template}` - Build dashboard layouts
### Workflow Pattern ### Workflow Pattern
1. Load data: `read_csv("data.csv")` → returns `data_ref` 1. Load data: `read_csv("data.csv")` → returns `data_ref`

View File

@@ -41,5 +41,5 @@ accessibility_validate_theme(theme_name="corporate")
## Related Commands ## Related Commands
- `/theme-new {name}` - Create accessible theme - `/viz-theme-new {name}` - Create accessible theme
- `/chart {type}` - Create chart (check colors after) - `/viz-chart {type}` - Create chart (check colors after)

View File

@@ -61,8 +61,8 @@ Each finding includes:
## Related Commands ## Related Commands
- `/design-gate` - Binary pass/fail for sprint execution (no detailed report) - `/design-gate` - Binary pass/fail for sprint execution (no detailed report)
- `/component` - Inspect individual DMC component props - `/viz-component` - Inspect individual DMC component props
- `/theme` - Check active theme configuration - `/viz-theme` - Check active theme configuration
## Requirements ## Requirements

View File

@@ -2,7 +2,7 @@
description: Configure responsive breakpoints for dashboard layouts description: Configure responsive breakpoints for dashboard layouts
--- ---
# Configure Breakpoints # Viz Breakpoints
## Skills to Load ## Skills to Load
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md
@@ -21,7 +21,7 @@ Configure responsive breakpoints for mobile-first design across screen sizes.
## Usage ## Usage
``` ```
/breakpoints {layout_ref} /viz-breakpoints {layout_ref}
``` ```
## Arguments ## Arguments
@@ -30,7 +30,7 @@ Configure responsive breakpoints for mobile-first design across screen sizes.
## Workflow ## Workflow
1. **User invokes**: `/breakpoints my-dashboard` 1. **User invokes**: `/viz-breakpoints my-dashboard`
2. **Agent asks**: Which breakpoints to customize? (shows current settings) 2. **Agent asks**: Which breakpoints to customize? (shows current settings)
3. **Agent asks**: Mobile column count? (xs, typically 1-2) 3. **Agent asks**: Mobile column count? (xs, typically 1-2)
4. **Agent asks**: Tablet column count? (md, typically 4-6) 4. **Agent asks**: Tablet column count? (md, typically 4-6)
@@ -39,5 +39,5 @@ Configure responsive breakpoints for mobile-first design across screen sizes.
## Related Commands ## Related Commands
- `/dashboard {template}` - Create layout with default breakpoints - `/viz-dashboard {template}` - Create layout with default breakpoints
- `/theme {name}` - Theme includes default spacing values - `/viz-theme {name}` - Theme includes default spacing values

View File

@@ -2,7 +2,7 @@
description: Export a Plotly chart to PNG, SVG, or PDF format description: Export a Plotly chart to PNG, SVG, or PDF format
--- ---
# Export Chart # Viz Chart Export
## Skills to Load ## Skills to Load
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md
@@ -21,7 +21,7 @@ Export a Plotly chart to static image formats.
## Usage ## Usage
``` ```
/chart-export {format} /viz-chart-export {format}
``` ```
## Arguments ## Arguments
@@ -38,5 +38,5 @@ Requires `kaleido` package: `pip install kaleido`
## Related Commands ## Related Commands
- `/chart {type}` - Create a chart - `/viz-chart {type}` - Create a chart
- `/theme {name}` - Apply theme before export - `/viz-theme {name}` - Apply theme before export

View File

@@ -2,7 +2,7 @@
description: Create a Plotly chart with theme integration description: Create a Plotly chart with theme integration
--- ---
# Create Chart # Viz Chart
## Skills to Load ## Skills to Load
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md
@@ -21,7 +21,7 @@ Create a Plotly chart with automatic theme token application.
## Usage ## Usage
``` ```
/chart {type} /viz-chart {type}
``` ```
## Arguments ## Arguments
@@ -36,6 +36,6 @@ chart_create(chart_type="line", data_ref="df", x="date", y="value", theme=None)
## Related Commands ## Related Commands
- `/chart-export {format}` - Export chart to image - `/viz-chart-export {format}` - Export chart to image
- `/theme {name}` - Apply theme to charts - `/viz-theme {name}` - Apply theme to charts
- `/dashboard` - Create layout with charts - `/viz-dashboard` - Create layout with charts

View File

@@ -2,7 +2,7 @@
description: Inspect Dash Mantine Component props and validation description: Inspect Dash Mantine Component props and validation
--- ---
# Inspect Component # Viz Component
## Skills to Load ## Skills to Load
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md
@@ -21,7 +21,7 @@ Inspect a DMC component's props, types, and defaults.
## Usage ## Usage
``` ```
/component {name} /viz-component {name}
``` ```
## Arguments ## Arguments
@@ -38,5 +38,5 @@ validate_component(component="Button", props={"variant": "filled"})
## Related Commands ## Related Commands
- `/chart {type}` - Create charts - `/viz-chart {type}` - Create charts
- `/dashboard {template}` - Create layouts - `/viz-dashboard {template}` - Create layouts

View File

@@ -2,7 +2,7 @@
description: Create a dashboard layout with the layout-builder agent description: Create a dashboard layout with the layout-builder agent
--- ---
# Create Dashboard # Viz Dashboard
## Skills to Load ## Skills to Load
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md
@@ -21,7 +21,7 @@ Create a dashboard layout with filters, grids, and sections.
## Usage ## Usage
``` ```
/dashboard {template} /viz-dashboard {template}
``` ```
## Arguments ## Arguments
@@ -37,5 +37,5 @@ Activates **layout-builder** agent which orchestrates:
## Related Commands ## Related Commands
- `/breakpoints {layout}` - Configure responsive breakpoints - `/viz-breakpoints {layout}` - Configure responsive breakpoints
- `/chart {type}` - Add charts to layout - `/viz-chart {type}` - Add charts to layout

View File

@@ -2,7 +2,7 @@
description: Interactive setup wizard for viz-platform plugin description: Interactive setup wizard for viz-platform plugin
--- ---
# Viz-Platform Setup Wizard # Viz Setup
## Visual Output ## Visual Output
@@ -41,5 +41,5 @@ Verify MCP server loads, display summary, prompt session restart.
## Related Commands ## Related Commands
- `/component {name}` - Inspect component props - `/viz-component {name}` - Inspect component props
- `/chart {type}` - Create a chart - `/viz-chart {type}` - Create a chart

View File

@@ -2,7 +2,7 @@
description: Export a theme as CSS custom properties description: Export a theme as CSS custom properties
--- ---
# Export Theme as CSS # Viz Theme CSS
## Skills to Load ## Skills to Load
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md
@@ -21,7 +21,7 @@ Export a theme's design tokens as CSS custom properties.
## Usage ## Usage
``` ```
/theme-css {name} /viz-theme-css {name}
``` ```
## Arguments ## Arguments
@@ -38,5 +38,5 @@ Use cases: external CSS, design handoff, documentation, other frameworks.
## Related Commands ## Related Commands
- `/theme {name}` - Apply a theme - `/viz-theme {name}` - Apply a theme
- `/theme-new {name}` - Create a new theme - `/viz-theme-new {name}` - Create a new theme

View File

@@ -2,7 +2,7 @@
description: Create a new custom theme with design tokens description: Create a new custom theme with design tokens
--- ---
# Create New Theme # Viz Theme New
## Skills to Load ## Skills to Load
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md
@@ -21,7 +21,7 @@ Create a new custom theme with specified design tokens.
## Usage ## Usage
``` ```
/theme-new {name} /viz-theme-new {name}
``` ```
## Arguments ## Arguments
@@ -37,5 +37,5 @@ theme_validate(theme_name="corporate")
## Related Commands ## Related Commands
- `/theme {name}` - Apply a theme - `/viz-theme {name}` - Apply a theme
- `/theme-css {name}` - Export theme as CSS - `/viz-theme-css {name}` - Export theme as CSS

View File

@@ -2,7 +2,7 @@
description: Apply an existing theme to the current context description: Apply an existing theme to the current context
--- ---
# Apply Theme # Viz Theme
## Skills to Load ## Skills to Load
- skills/mcp-tools-reference.md - skills/mcp-tools-reference.md
@@ -21,7 +21,7 @@ Apply an existing theme to activate its design tokens.
## Usage ## Usage
``` ```
/theme {name} /viz-theme {name}
``` ```
## Arguments ## Arguments
@@ -41,5 +41,5 @@ When activated, new charts/layouts automatically use theme tokens.
## Related Commands ## Related Commands
- `/theme-new {name}` - Create a new theme - `/viz-theme-new {name}` - Create a new theme
- `/theme-css {name}` - Export theme as CSS - `/viz-theme-css {name}` - Export theme as CSS