Deleted (obsolete planning docs from pre-implementation phase): - docs/references/MCP-GITEA.md - wrong MCP server location - docs/references/MCP-WIKIJS.md - Wiki.js MCP never implemented - docs/references/PLUGIN-PMO.md - projman-pmo not yet built - docs/references/PLUGIN-PROJMAN.md - superseded by plugins/projman/README.md - docs/references/PROJECT-SUMMARY.md - outdated architecture Updated references in: - CLAUDE.md - removed docs/references/ from documentation index - docs/CANONICAL-PATHS.md - removed references directory from structure - docs/UPDATING.md - updated to reference current documentation - plugins/projman/mcp-servers/gitea/README.md - fixed related docs links - plugins/projman/mcp-servers/gitea/TESTING.md - fixed resource links Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.9 KiB
5.9 KiB
Canonical Paths - SINGLE SOURCE OF TRUTH
This file defines ALL valid paths in this repository. No exceptions. No inference. No assumptions.
Last Updated: 2026-01-20
Repository Root Structure
support-claude-mktplace/
├── .claude/ # Claude Code local settings
├── .claude-plugin/ # Marketplace manifest (claude-code-marketplace)
│ └── marketplace.json
├── .scratch/ # Transient work (auto-cleaned)
├── docs/ # All documentation
│ ├── architecture/ # Draw.io diagrams and specs
│ ├── CANONICAL-PATHS.md # This file - single source of truth
│ ├── UPDATING.md # Update guide
│ └── workflows/ # Workflow documentation
├── hooks/ # Shared hooks (if any)
├── plugins/ # ALL plugins with bundled MCP servers
│ ├── projman/
│ │ ├── .claude-plugin/
│ │ ├── mcp-servers/ # MCP servers bundled IN plugin
│ │ │ └── gitea/ # Gitea + Wiki tools
│ │ ├── commands/
│ │ ├── agents/
│ │ ├── skills/
│ │ └── claude-md-integration.md # CLAUDE.md integration snippet
│ ├── projman-pmo/
│ ├── project-hygiene/
│ ├── cmdb-assistant/
│ │ ├── .claude-plugin/
│ │ ├── mcp-servers/ # MCP servers bundled IN plugin
│ │ │ └── netbox/
│ │ ├── commands/
│ │ ├── agents/
│ │ └── claude-md-integration.md # CLAUDE.md integration snippet
│ ├── claude-config-maintainer/
│ │ ├── .claude-plugin/
│ │ ├── commands/
│ │ ├── agents/
│ │ └── claude-md-integration.md # CLAUDE.md integration snippet
│ └── project-hygiene/
│ ├── .claude-plugin/
│ ├── hooks/
│ └── claude-md-integration.md # CLAUDE.md integration snippet
├── scripts/ # Setup and maintenance scripts
├── CLAUDE.md
├── README.md
├── LICENSE
├── CHANGELOG.md
└── .gitignore
Path Patterns (MANDATORY)
Plugin Paths
| Context | Pattern | Example |
|---|---|---|
| Plugin location | plugins/{plugin-name}/ |
plugins/projman/ |
| Plugin manifest | plugins/{plugin-name}/.claude-plugin/plugin.json |
plugins/projman/.claude-plugin/plugin.json |
| Plugin commands | plugins/{plugin-name}/commands/ |
plugins/projman/commands/ |
| Plugin agents | plugins/{plugin-name}/agents/ |
plugins/projman/agents/ |
| Plugin .mcp.json | plugins/{plugin-name}/.mcp.json |
plugins/projman/.mcp.json |
| Plugin integration snippet | plugins/{plugin-name}/claude-md-integration.md |
plugins/projman/claude-md-integration.md |
MCP Server Paths (Bundled in Plugins)
MCP servers are now bundled inside each plugin to ensure they work when plugins are cached.
| Context | Pattern | Example |
|---|---|---|
| MCP server location | plugins/{plugin}/mcp-servers/{server}/ |
plugins/projman/mcp-servers/gitea/ |
| MCP server code | plugins/{plugin}/mcp-servers/{server}/mcp_server/ |
plugins/projman/mcp-servers/gitea/mcp_server/ |
| MCP venv | plugins/{plugin}/mcp-servers/{server}/.venv/ |
plugins/projman/mcp-servers/gitea/.venv/ |
Relative Path Patterns (CRITICAL)
| From | To | Pattern |
|---|---|---|
| Plugin .mcp.json | Bundled MCP server | ${CLAUDE_PLUGIN_ROOT}/mcp-servers/{server} |
| marketplace.json | Plugin | ./plugins/{plugin-name} |
Documentation Paths
| Type | Location |
|---|---|
| Architecture diagrams | docs/architecture/ |
| Workflow docs | docs/workflows/ |
| This file | docs/CANONICAL-PATHS.md |
| Update guide | docs/UPDATING.md |
Validation Rules
Before Creating Any File
- Check this file for the correct path pattern
- Verify the parent directory exists in the structure above
- If path not listed here, STOP AND ASK
Before Generating Any Prompt
- List all file paths the prompt will create/modify
- Verify each path against patterns in this file
- Show verification to user before proceeding
Relative Path Calculation
From plugins/projman/.mcp.json to bundled mcp-servers/gitea/:
plugins/projman/.mcp.json
→ MCP servers are IN the plugin at mcp-servers/
Result: mcp-servers/gitea/
With variable: ${CLAUDE_PLUGIN_ROOT}/mcp-servers/gitea/
From .claude-plugin/marketplace.json to plugins/projman/:
.claude-plugin/marketplace.json
↑ marketplace.json is at repo root level
→ go down to plugins/projman/ (./plugins/projman/)
Result: ./plugins/projman
Anti-Patterns (NEVER DO THIS)
| Wrong | Why | Correct |
|---|---|---|
projman/ at root |
Plugins go in plugins/ |
plugins/projman/ |
mcp-servers/ at root |
MCP servers are bundled in plugins | plugins/{plugin}/mcp-servers/ |
../../mcp-servers/ from plugin |
Old pattern, doesn't work with caching | ${CLAUDE_PLUGIN_ROOT}/mcp-servers/ |
./../../../plugins/projman in marketplace |
Wrong (old nested structure) | ./plugins/projman |
Architecture Note
MCP servers are bundled inside each plugin (not shared at root) because:
- Claude Code caches only the plugin directory when installed
- Relative paths to parent directories break in the cache
- Each plugin must be self-contained to work properly
Change Log
| Date | Change | By |
|---|---|---|
| 2026-01-20 | Removed docs/references/ (obsolete planning docs) | Claude Code |
| 2026-01-19 | Added claude-md-integration.md path pattern for plugin integration snippets | Claude Code |
| 2025-12-15 | Restructured: MCP servers now bundled in plugins | Claude Code |
| 2025-12-12 | Initial creation | Claude Code |