# ProjMan Plugin Suite - Implementation Plan **Plugins:** `projman` (single-repo) + `projman-pmo` (multi-project) **Build Order:** projman first, then projman-pmo **Label System:** Type/Refactor now implemented at organization level **Configuration:** Hybrid approach (system + project level) **Technology Stack:** Python (MCP server), Markdown (commands/agents) > **⚠️ IMPORTANT:** For the definitive, authoritative repository structure, always refer to [CORRECT-ARCHITECTURE.md](./CORRECT-ARCHITECTURE.md). If this document conflicts with CORRECT-ARCHITECTURE.md, CORRECT-ARCHITECTURE.md is correct. --- ## Configuration Architecture ### Two MCP Server Design (Shared Codebase) **Architecture Decision:** Both plugins (projman and projman-pmo) **share the same MCP server codebase**. The MCP servers detect their mode (project-scoped vs company-wide) based on environment variables. **Separation of Concerns:** - **Gitea MCP Server**: Issues, labels, repository data - **Wiki.js MCP Server**: Documentation, lessons learned, knowledge base **Repository Structure:** ``` hyperhivelabs/claude-plugins/ ├── mcp-servers/ # Shared by both plugins │ ├── gitea/ │ └── wikijs/ ├── projman/ # Project plugin └── projman-pmo/ # PMO plugin ``` **Benefits:** ✅ Single source of truth - fix bugs once, both plugins benefit ✅ Less code duplication and maintenance ✅ MCP servers already handle both modes ✅ Independent service configuration (Gitea vs Wiki.js) ✅ Can enable/disable each service independently ✅ Wiki.js shared across entire company (not just projects) ✅ Easier to maintain and debug ✅ Professional architecture ### System-Level Configuration (Shared) **Gitea Configuration:** **Location:** `~/.config/claude/gitea.env` ```bash GITEA_API_URL=https://gitea.hyperhivelabs.com/api/v1 GITEA_API_TOKEN=your_gitea_token GITEA_OWNER=hyperhivelabs ``` **Wiki.js Configuration:** **Location:** `~/.config/claude/wikijs.env` ```bash WIKIJS_API_URL=https://wiki.hyperhivelabs.com/graphql WIKIJS_API_TOKEN=your_wikijs_token WIKIJS_BASE_PATH=/hyper-hive-labs ``` **Used by:** Both projman and pmo plugins ### Project-Level Configuration **Location:** `project-root/.env` **Contains:** ```bash # Gitea repository name GITEA_REPO=cuisineflow # Wiki.js project path (relative to /hyper-hive-labs) WIKIJS_PROJECT=projects/cuisineflow ``` **Used by:** projman plugin only (pmo operates across all repos/projects) ### Wiki.js Structure ``` Wiki.js └── hyper-hive-labs/ ├── projects/ # Project-specific documentation │ ├── cuisineflow/ │ │ ├── lessons-learned/ │ │ │ ├── sprints/ │ │ │ └── INDEX.md │ │ └── documentation/ │ │ ├── architecture/ │ │ └── api/ │ ├── cuisineflow-site/ │ │ ├── lessons-learned/ │ │ └── documentation/ │ ├── intuit-engine/ │ │ ├── lessons-learned/ │ │ └── documentation/ │ └── hhl-site/ │ ├── lessons-learned/ │ └── documentation/ ├── company/ # Company-wide documentation │ ├── processes/ │ ├── onboarding/ │ ├── standards/ │ └── tools/ └── shared/ # Cross-project resources ├── architecture-patterns/ ├── best-practices/ └── tech-stack/ ``` **Path Resolution:** - **projman**: `{WIKIJS_BASE_PATH}/{WIKIJS_PROJECT}` → `/hyper-hive-labs/projects/cuisineflow` - **projman-pmo**: `{WIKIJS_BASE_PATH}` → `/hyper-hive-labs` (entire company namespace) ### Benefits ✅ Single token per service - update once ✅ Project isolation - each repo declares its paths ✅ Company-wide documentation accessible ✅ PMO can see all projects ✅ Shared resources available to all ✅ Security - tokens never committed ✅ Portability - same system config for all projects ✅ Scalable - easy to add new projects --- ## Phase 1: Core Infrastructure (projman) ### 1.1 MCP Server Foundation (Shared Infrastructure) **Deliverable:** Two working MCP servers (Gitea and Wiki.js) with hybrid configuration, shared by both projman and projman-pmo plugins **Important:** These MCP servers are built ONCE and shared by both plugins. They detect their operating mode (project-scoped vs company-wide) based on environment variables. --- #### 1.1a Gitea MCP Server **Tasks:** **Configuration Setup:** - Design environment variable loading strategy: - System-level: `~/.config/claude/gitea.env` - Project-level: `project-root/.env` - Merge strategy: project overrides system - Create `.env.example` template - Document configuration precedence rules - Add validation for required variables **MCP Server Implementation:** - Set up Python project structure - Create virtual environment (.venv) - Install dependencies: ``` # requirements.txt anthropic-sdk>=0.18.0 python-dotenv>=1.0.0 requests>=2.31.0 pydantic>=2.5.0 pytest>=7.4.3 ``` - Implement Gitea API authentication - Create environment variable loader: ```python # config.py from pathlib import Path from dotenv import load_dotenv import os def load_config(): """Load configuration from system and project levels""" # Load system config system_config = Path.home() / '.config' / 'claude' / 'gitea.env' if system_config.exists(): load_dotenv(system_config) # Load project config (overrides system) project_config = Path.cwd() / '.env' if project_config.exists(): load_dotenv(project_config, override=True) # Validate required variables required = ['GITEA_API_URL', 'GITEA_API_TOKEN', 'GITEA_OWNER'] missing = [var for var in required if not os.getenv(var)] if missing: raise ValueError(f"Missing config: {', '.join(missing)}") return { 'api_url': os.getenv('GITEA_API_URL'), 'api_token': os.getenv('GITEA_API_TOKEN'), 'owner': os.getenv('GITEA_OWNER'), 'repo': os.getenv('GITEA_REPO') # Optional for PMO } ``` - Validate all required variables present - Create 7 core tools: - `list_issues` - Query issues with filters - `get_issue` - Fetch single issue details - `create_issue` - Create new issue with labels - `update_issue` - Modify existing issue - `add_comment` - Add comments to issues - `get_labels` - Fetch org + repo label taxonomy - `suggest_labels` - Analyze context and suggest appropriate labels **Testing:** - Write integration tests against actual Gitea instance - Test configuration loading from both levels - Test missing configuration error handling - Test API authentication with loaded credentials **Success Criteria:** - Configuration loads from both system and project levels - Missing variables produce clear error messages - All tools pass integration tests - Label suggestion correctly identifies Type/Refactor - Error handling for network failures and API rate limits --- #### 1.1b Wiki.js MCP Server **Tasks:** **Configuration Setup:** - Design environment variable loading strategy: - System-level: `~/.config/claude/wikijs.env` - Project-level: `project-root/.env` - Path composition: `{BASE_PATH}/{PROJECT_PATH}` - Create `.env.example` template - Document path resolution rules - Add validation for required variables **MCP Server Implementation:** - Set up Python project structure (separate from Gitea MCP) - Create virtual environment (.venv) - Install dependencies: ``` # requirements.txt anthropic-sdk>=0.18.0 python-dotenv>=1.0.0 gql>=3.4.0 # GraphQL client for Wiki.js aiohttp>=3.9.0 # Async HTTP pydantic>=2.5.0 pytest>=7.4.3 pytest-asyncio>=0.23.0 ``` - Implement Wiki.js GraphQL authentication - Create environment variable loader: ```python # config.py from pathlib import Path from dotenv import load_dotenv import os def load_config(): """Load Wiki.js configuration from system and project levels""" # Load system config system_config = Path.home() / '.config' / 'claude' / 'wikijs.env' if system_config.exists(): load_dotenv(system_config) # Load project config (overrides system) project_config = Path.cwd() / '.env' if project_config.exists(): load_dotenv(project_config, override=True) # Validate required variables required = ['WIKIJS_API_URL', 'WIKIJS_API_TOKEN', 'WIKIJS_BASE_PATH'] missing = [var for var in required if not os.getenv(var)] if missing: raise ValueError(f"Missing config: {', '.join(missing)}") # Compose full path base_path = os.getenv('WIKIJS_BASE_PATH') # /hyper-hive-labs project_path = os.getenv('WIKIJS_PROJECT') # projects/cuisineflow full_path = f"{base_path}/{project_path}" if project_path else base_path return { 'api_url': os.getenv('WIKIJS_API_URL'), 'api_token': os.getenv('WIKIJS_API_TOKEN'), 'base_path': base_path, 'project_path': project_path, 'full_path': full_path } ``` - Validate all required variables present - Create 8 core tools: - `search_pages` - Search Wiki.js pages by keywords/tags - `get_page` - Fetch specific page content - `create_page` - Create new Wiki page - `update_page` - Modify existing page - `list_pages` - List pages in a path - `create_lesson` - Create lessons learned document - `search_lessons` - Search past lessons by tags - `tag_lesson` - Add tags to lessons learned **GraphQL Client Example:** ```python # wikijs_client.py from gql import gql, Client from gql.transport.aiohttp import AIOHTTPTransport class WikiJSClient: def __init__(self, api_url: str, api_token: str): transport = AIOHTTPTransport( url=api_url, headers={'Authorization': f'Bearer {api_token}'} ) self.client = Client(transport=transport, fetch_schema_from_transport=True) async def search_pages(self, query: str, path: str = None): """Search pages in Wiki.js""" gql_query = gql(""" query SearchPages($query: String!, $path: String) { pages { search(query: $query, path: $path) { results { id path title description tags } } } } """) result = await self.client.execute( gql_query, variable_values={'query': query, 'path': path} ) return result['pages']['search']['results'] async def create_page(self, path: str, title: str, content: str, tags: list): """Create a new page in Wiki.js""" gql_mutation = gql(""" mutation CreatePage($path: String!, $title: String!, $content: String!, $tags: [String]!) { pages { create( path: $path title: $title content: $content tags: $tags ) { responseResult { succeeded errorCode message } page { id path } } } } """) result = await self.client.execute( gql_mutation, variable_values={ 'path': path, 'title': title, 'content': content, 'tags': tags } ) return result['pages']['create'] ``` **Testing:** - Write integration tests against actual Wiki.js instance - Test configuration loading from both levels - Test path composition and resolution - Test GraphQL queries and mutations - Test authentication with Wiki.js **Success Criteria:** - Configuration loads from both system and project levels - Path composition works correctly - Missing variables produce clear error messages - All tools pass integration tests - GraphQL queries execute successfully - Error handling for network failures and API rate limits - Lessons learned can be created and searched ### 1.2 Label Taxonomy System **Deliverable:** Label reference with sync capability **Tasks:** - Create `skills/label-taxonomy/` directory structure - Port `gitea-labels-reference.md` to plugin - Document exclusive vs non-exclusive label rules - Build label suggestion logic: - Type detection (Bug, Feature, Refactor, etc.) - Component identification from context - Priority inference from keywords - Source detection based on branch - Create `/labels-sync` command - Implement diff viewer for label changes - Build interactive review workflow **Label Sync Workflow:** ``` User: /labels-sync Agent: Fetching labels from Gitea... Found 1 new label: Type/Documentation Found 2 modified descriptions New: Type/Documentation - For documentation-only changes - Should update suggestion logic to detect "docs", "readme" Modified: Priority/High - Description clarified: "Blocks sprint completion" Shall I update the local reference and suggestion rules? User: Yes Agent: Updated ✅ - labels-reference.md updated - Suggestion logic updated - 43 labels now in taxonomy ``` **Success Criteria:** - Complete 43-label taxonomy documented - Sync command fetches live data from Gitea - Diff detection works correctly - Agent provides meaningful impact analysis - Local reference stays synchronized ### 1.3 Plugin Manifest & Structure **Deliverable:** Complete projman plugin structure **Tasks:** - Create `.claude-plugin/plugin.json` - Set up repository structure: ``` hyperhivelabs/claude-plugins/ ├── mcp-servers/ # Shared by both plugins │ ├── gitea/ │ │ ├── .venv/ │ │ ├── requirements.txt │ │ ├── .env.example │ │ ├── mcp_server/ │ │ │ ├── __init__.py │ │ │ ├── server.py │ │ │ ├── config.py # Detects project/company mode │ │ │ └── gitea_client.py │ │ └── tests/ │ └── wikijs/ │ ├── .venv/ │ ├── requirements.txt │ ├── .env.example │ ├── mcp_server/ │ │ ├── __init__.py │ │ ├── server.py │ │ ├── config.py # Detects project/company mode │ │ └── wikijs_client.py │ └── tests/ ├── projman/ # Project plugin │ ├── .claude-plugin/ │ │ └── plugin.json │ ├── .mcp.json # References ../mcp-servers/ │ ├── commands/ │ │ └── (will add in Phase 2) │ ├── agents/ │ │ └── (will add in Phase 3) │ ├── skills/ │ │ └── label-taxonomy/ │ │ └── labels-reference.md │ ├── README.md │ └── CONFIGURATION.md └── projman-pmo/ # PMO plugin ├── .claude-plugin/ │ └── plugin.json ├── .mcp.json # References ../mcp-servers/ ├── commands/ │ └── (will add in Phase 10) ├── agents/ │ └── (will add in Phase 9) └── README.md ``` - Write README with installation instructions - Create CONFIGURATION.md with hybrid config setup for both services - Document setup steps: 1. Create system configs (Gitea + Wiki.js) 2. Create project .env 3. Create virtual environments for both MCP servers (once, in mcp-servers/) 4. Install dependencies with pip 5. Test connections **Mode Detection in MCP Servers:** ```python # mcp-servers/gitea/mcp_server/config.py class GiteaConfig: def load(self): # ... load configs ... self.repo = os.getenv('GITEA_REPO') # Optional if self.repo: self.mode = 'project' logger.info(f"Running in project mode: {self.repo}") else: self.mode = 'company' logger.info("Running in company-wide mode (PMO)") return { 'api_url': self.api_url, 'api_token': self.api_token, 'owner': self.owner, 'repo': self.repo, 'mode': self.mode } ``` **Configuration Files:** **projman/.mcp.json:** ```json { "mcpServers": { "gitea-projman": { "command": "python", "args": ["-m", "mcp_server.server"], "cwd": "${CLAUDE_PLUGIN_ROOT}/../mcp-servers/gitea", "env": { "PYTHONPATH": "${CLAUDE_PLUGIN_ROOT}/../mcp-servers/gitea", "GITEA_API_URL": "${GITEA_API_URL}", "GITEA_API_TOKEN": "${GITEA_API_TOKEN}", "GITEA_OWNER": "${GITEA_OWNER}", "GITEA_REPO": "${GITEA_REPO}" } }, "wikijs-projman": { "command": "python", "args": ["-m", "mcp_server.server"], "cwd": "${CLAUDE_PLUGIN_ROOT}/../mcp-servers/wikijs", "env": { "PYTHONPATH": "${CLAUDE_PLUGIN_ROOT}/../mcp-servers/wikijs", "WIKIJS_API_URL": "${WIKIJS_API_URL}", "WIKIJS_API_TOKEN": "${WIKIJS_API_TOKEN}", "WIKIJS_BASE_PATH": "${WIKIJS_BASE_PATH}", "WIKIJS_PROJECT": "${WIKIJS_PROJECT}" } } } } ``` **projman-pmo/.mcp.json:** ```json { "mcpServers": { "gitea-pmo": { "command": "python", "args": ["-m", "mcp_server.server"], "cwd": "${CLAUDE_PLUGIN_ROOT}/../mcp-servers/gitea", "env": { "PYTHONPATH": "${CLAUDE_PLUGIN_ROOT}/../mcp-servers/gitea", "GITEA_API_URL": "${GITEA_API_URL}", "GITEA_API_TOKEN": "${GITEA_API_TOKEN}", "GITEA_OWNER": "${GITEA_OWNER}" } }, "wikijs-pmo": { "command": "python", "args": ["-m", "mcp_server.server"], "cwd": "${CLAUDE_PLUGIN_ROOT}/../mcp-servers/wikijs", "env": { "PYTHONPATH": "${CLAUDE_PLUGIN_ROOT}/../mcp-servers/wikijs", "WIKIJS_API_URL": "${WIKIJS_API_URL}", "WIKIJS_API_TOKEN": "${WIKIJS_API_TOKEN}", "WIKIJS_BASE_PATH": "${WIKIJS_BASE_PATH}" } } } } ``` **Note:** Both plugins reference `../mcp-servers/` (shared location). The MCP servers detect their mode based on which environment variables are present. **Configuration Documentation:** **CONFIGURATION.md structure:** ```markdown # Configuration Setup ## System-Level (Required for all projects) ### Gitea Configuration 1. Create config directory: mkdir -p ~/.config/claude 2. Create gitea.env: cat > ~/.config/claude/gitea.env << EOF GITEA_API_URL=https://gitea.hyperhivelabs.com/api/v1 GITEA_API_TOKEN=your_gitea_token GITEA_OWNER=hyperhivelabs EOF 3. Secure the file: chmod 600 ~/.config/claude/gitea.env ### Wiki.js Configuration 1. Create wikijs.env: cat > ~/.config/claude/wikijs.env << EOF WIKIJS_API_URL=https://wiki.hyperhivelabs.com/graphql WIKIJS_API_TOKEN=your_wikijs_token WIKIJS_BASE_PATH=/hyper-hive-labs EOF 2. Secure the file: chmod 600 ~/.config/claude/wikijs.env ## Project-Level (Per repository) 1. Create .env in project root: cat > .env << EOF GITEA_REPO=cuisineflow WIKIJS_PROJECT=projects/cuisineflow EOF 2. Add to .gitignore: echo ".env" >> .gitignore ## MCP Server Setup (One-Time, Shared by Both Plugins) ### Gitea MCP Server 1. Navigate to shared MCP directory: cd /path/to/claude-plugins/mcp-servers/gitea 2. Create virtual environment: python -m venv .venv 3. Activate virtual environment: source .venv/bin/activate # Linux/Mac .venv\Scripts\activate # Windows 4. Install dependencies: pip install -r requirements.txt ### Wiki.js MCP Server 1. Navigate to Wiki.js MCP directory: cd /path/to/claude-plugins/mcp-servers/wikijs 2. Create virtual environment: python -m venv .venv 3. Activate virtual environment: source .venv/bin/activate # Linux/Mac .venv\Scripts\activate # Windows 4. Install dependencies: pip install -r requirements.txt ## Wiki.js Structure Your Wiki.js should have this structure: /hyper-hive-labs/ ├── projects/ │ ├── cuisineflow/ │ │ ├── lessons-learned/ │ │ │ ├── sprints/ │ │ │ └── INDEX.md │ │ └── documentation/ │ ├── intuit-engine/ │ └── hhl-site/ ├── company/ │ ├── processes/ │ └── standards/ └── shared/ └── architecture-patterns/ Create the base structure in Wiki.js before using the plugin. ## Architecture Note Both plugins (projman and projman-pmo) share the same MCP servers. The MCP servers detect their operating mode based on environment variables: - Project mode: When GITEA_REPO and WIKIJS_PROJECT are present - Company mode: When these variables are absent (PMO plugin) ## Validation Test Gitea MCP: python -m mcp_gitea.server --test Test Wiki.js MCP: python -m mcp_wikijs.server --test Test projman plugin: claude plugin test projman Test projman-pmo plugin: claude plugin test projman-pmo ``` **Success Criteria:** - Plugin loads successfully - MCP server starts without errors - Documentation is clear and complete - Configuration templates provided - Setup can be completed in < 5 minutes --- ## Phase 2: Sprint Planning Commands (projman) ### 2.1 Sprint Plan Command **Deliverable:** `/sprint-plan` command with planner agent integration **Tasks:** - Create `commands/sprint-plan.md` - Design command parameters: - Sprint name/number - Feature description - Architecture considerations - Invoke planner agent - Handle branch detection (only create issues in development) - Generate sprint planning document **Command Flow:** ``` User: /sprint-plan Agent: Let me help you plan this sprint. What are you building? User: Extract Intuit engine into separate service Agent: I detected architectural changes - this is Type/Refactor. Which components are affected? - Component/Backend - Component/API - Component/Database Should we create a Gitea issue for tracking? User: Yes Agent: Created issue #47 with labels: - Type/Refactor - Component/Backend - Component/API - Priority/High - Source/Development Generating sprint plan... [Sprint document generated] ``` **Success Criteria:** - Command invokes planner agent - Agent asks relevant clarifying questions - Issue created with correct labels - Sprint document generated - Only creates issues in development branch ### 2.2 Sprint Start Command **Deliverable:** `/sprint-start` command **Tasks:** - Create `commands/sprint-start.md` - Search lessons learned Wiki - Surface relevant past issues - Set up sprint tracking - Initialize issue tracking **Command Flow:** ``` User: /sprint-start Agent: Starting sprint... Searching lessons learned for "service extraction"... 📚 Found 2 relevant lessons: - Sprint 08: Service boundary issues with shared DB - Sprint 12: API versioning during extraction These might be helpful for Intuit engine extraction. Ready to begin. Sprint issue: #47 ``` **Success Criteria:** - Searches lessons learned Wiki - Surfaces relevant past experiences - Links to sprint issue - Provides helpful context ### 2.3 Sprint Status Command **Deliverable:** `/sprint-status` command **Tasks:** - Create `commands/sprint-status.md` - Query current sprint issue - Show progress indicators - List blockers - Surface next actions **Success Criteria:** - Clear status overview - Identifies blockers - Actionable next steps - Links to relevant issues ### 2.4 Sprint Close Command **Deliverable:** `/sprint-close` command with lessons learned capture **Tasks:** - Create `commands/sprint-close.md` - Guide retrospective questions: - What went wrong? - What worked well? - Any Claude Code issues? - Architecture insights? - Create lessons learned document - Update Wiki INDEX.md - Add searchable tags - Close sprint issue **Retrospective Template:** ```markdown # Sprint [Number]: [Name] - Lessons Learned **Date:** [Date] **Issue:** #[number] ## What Went Wrong - [Item 1] - [Item 2] ## What Worked Well - [Item 1] - [Item 2] ## Claude Code Issues - [Item 1] - [Item 2] ## Architecture Insights - [Item 1] - [Item 2] ## Tags #service-extraction #api #refactoring #claude-code-loops ``` **Success Criteria:** - Interactive retrospective guide - Document created in Wiki - INDEX.md updated with tags - Sprint issue closed - Lessons searchable for future sprints --- ## Phase 3: Agent System (projman) ### 3.1 Planner Agent **Deliverable:** Sprint planning agent **Tasks:** - Create `agents/planner.md` - Define agent personality: - Asks clarifying questions - Analyzes architecture impact - Suggests appropriate labels - Generates structured plans - Design interaction patterns - Integrate with MCP tools - Test with various scenarios **Agent Personality:** ```markdown You are the Sprint Planner for Hyper Hive Labs. Your role: - Guide users through sprint planning - Ask targeted questions about scope and architecture - Detect issue types (Bug, Feature, Refactor) - Suggest appropriate labels based on context - Generate comprehensive sprint documents - Consider lessons learned from past sprints You are: - Thorough but not overwhelming - Architecture-aware - Label-conscious (use Type/Refactor for architectural changes) - Process-oriented You always: - Reference relevant past lessons - Consider technical debt - Identify cross-project impacts - Suggest realistic scope ``` **Success Criteria:** - Agent provides valuable planning guidance - Questions are relevant and targeted - Label suggestions accurate - Sprint documents well-structured - Integrates lessons learned effectively ### 3.2 Orchestrator Agent **Deliverable:** Sprint coordination agent **Tasks:** - Create `agents/orchestrator.md` - Define orchestration responsibilities: - Track sprint progress - Identify blockers - Coordinate sub-tasks - Surface relevant context - Design status monitoring - Build blocker detection logic **Agent Personality:** ```markdown You are the Sprint Orchestrator for Hyper Hive Labs. Your role: - Monitor sprint progress - Track issue status - Identify and surface blockers - Coordinate between tasks - Keep sprint on track You are: - Progress-focused - Blocker-aware - Context-provider - Coordination-minded You always: - Check issue status - Identify dependencies - Surface relevant documentation - Keep things moving ``` **Success Criteria:** - Tracks progress accurately - Identifies blockers early - Provides useful coordination - Reduces manual overhead ### 3.3 Executor Agent **Deliverable:** Implementation guidance agent **Tasks:** - Create `agents/executor.md` - Define implementation support: - Technical guidance - Code review - Testing strategy - Documentation - Integrate with label taxonomy - Reference architecture patterns **Agent Personality:** ```markdown You are the Sprint Executor for Hyper Hive Labs. Your role: - Provide implementation guidance - Suggest code patterns - Review technical decisions - Ensure quality standards - Reference best practices You are: - Technically detailed - Quality-focused - Pattern-aware - Standards-conscious You always: - Follow modular architecture principles - Suggest discrete methods/functions - Consider testability - Document decisions ``` **Success Criteria:** - Provides valuable technical guidance - Maintains quality standards - References appropriate patterns - Supports implementation effectively --- ## Phase 4: Lessons Learned System (projman) ### 4.1 Wiki.js Integration **Deliverable:** Lessons learned structure in Wiki.js **Tasks:** - Design Wiki.js page structure within project path: ``` /hyper-hive-labs/projects/cuisineflow/ ├── lessons-learned/ │ ├── INDEX.md # Searchable index │ ├── sprints/ │ │ ├── sprint-01-auth.md │ │ ├── sprint-02-api.md │ │ └── ... │ └── patterns/ │ ├── service-extraction.md │ └── database-migration.md └── documentation/ ├── architecture/ └── api/ ``` - Create INDEX.md template - Define tagging system using Wiki.js tags - Build search integration using Wiki.js MCP tools **INDEX.md Structure:** ```markdown # CuisineFlow - Lessons Learned Index ## By Sprint - [Sprint 01: Auth System](sprints/sprint-01-auth) #authentication #oauth #security - [Sprint 02: API Gateway](sprints/sprint-02-api) #api #gateway #routing ## By Pattern - [Service Extraction](patterns/service-extraction) #microservices #refactoring ## By Technology - Authentication: Sprint 01, Sprint 08 - API Design: Sprint 02, Sprint 12 - Database: Sprint 03, Sprint 15 ## By Problem - Claude Code Loops: Sprint 04, Sprint 12, Sprint 14 - Deployment Issues: Sprint 08, Sprint 13 ## Tags #authentication #api #database #deployment #refactoring #claude-code-loops ``` **Wiki.js Advantages:** - Rich markdown editor - Built-in search - Tag system - Version history - Access control - Web UI for review **Success Criteria:** - Clear Wiki.js page structure - Searchable index page - Tagging system works with Wiki.js tags - Easy to navigate via web interface - Integrates with Git (Wiki.js can sync to Git) ### 4.2 Search Integration **Deliverable:** Lessons learned search using Wiki.js MCP **Tasks:** - Use Wiki.js MCP server tools for search: - `search_pages` - Search by keywords/tags in project path - `get_page` - Fetch specific lesson document - `create_page` - Create new lesson - `update_page` - Update INDEX.md - `list_pages` - List all lessons in path - Implement tag-based search using Wiki.js tags - Build keyword matching using Wiki.js search API - Integrate with agents **Search Example:** ```python # Using Wiki.js MCP tools from mcp_wikijs import WikiJSClient client = WikiJSClient() # Search for service extraction lessons results = await client.search_pages( query="service extraction", path="/hyper-hive-labs/projects/cuisineflow/lessons-learned" ) # Filter by tags lessons_with_tag = await client.search_pages( query="#refactoring", path="/hyper-hive-labs/projects/cuisineflow/lessons-learned" ) ``` **Success Criteria:** - Fast search using Wiki.js search API - Tag-based filtering works - Relevant results surfaced - Integrates with planning process - Can search across all projects (for PMO) ### 4.3 Capture Workflow **Deliverable:** Lessons learned capture during sprint close **Tasks:** - Integrate into `/sprint-close` command - Guide retrospective discussion - Generate structured markdown document - Auto-tag based on content using Wiki.js tags - Create page in Wiki.js via MCP - Update INDEX.md automatically - Use Wiki.js version control for history **Capture Flow:** ``` User: /sprint-close Agent: Let's capture lessons learned... What went wrong that we should avoid next time? User: [Response] Agent: What decisions worked really well? User: [Response] Agent: Were there any Claude Code issues that caused loops/blocks? User: [Response] Agent: Any architectural insights for similar future work? User: [Response] Agent: I'll create a lesson in Wiki.js: Path: /hyper-hive-labs/projects/cuisineflow/lessons-learned/sprints/sprint-16-intuit-engine Tags detected: #service-extraction #api #refactoring #claude-code-loops Creating page in Wiki.js... ✅ Updating INDEX.md... ✅ View at: https://wiki.hyperhivelabs.com/hyper-hive-labs/projects/cuisineflow/lessons-learned/sprints/sprint-16-intuit-engine ``` **Wiki.js Page Creation:** ```python # Using Wiki.js MCP create_page tool await wikijs_client.create_page( path="/hyper-hive-labs/projects/cuisineflow/lessons-learned/sprints/sprint-16-intuit-engine", title="Sprint 16: Intuit Engine Extraction", content=lesson_markdown, tags=["service-extraction", "api", "refactoring", "claude-code-loops"] ) ``` **Success Criteria:** - Guided retrospective questions - Document created in Wiki.js - Tags added via Wiki.js tag system - INDEX.md updated automatically - Viewable in Wiki.js web interface - Version history tracked - Searchable immediately --- ## Phase 5: Testing & Validation (projman) ### 5.1 Integration Testing **Deliverable:** Comprehensive test suite **Tasks:** - Test MCP server tools: - Issue CRUD operations - Label operations - Wiki operations - Configuration loading - Test command workflows: - Complete sprint lifecycle - Label sync - Lessons learned capture - Test agent interactions: - Planner workflow - Orchestrator monitoring - Executor guidance - Test configuration: - System-level loading - Project-level loading - Hybrid merge behavior - Missing config handling **Test Matrix:** ``` | Component | Test Coverage | Status | |------------------|---------------|--------| | MCP Tools | All 10 tools | ✅ | | Commands | All 5 cmds | ✅ | | Agents | All 3 agents | ✅ | | Configuration | All scenarios | ✅ | | Wiki Integration | Full flow | ✅ | | Label System | All labels | ✅ | ``` **Success Criteria:** - All tests pass - Edge cases handled - Error messages clear - Configuration validation works - Performance acceptable ### 5.2 Real Sprint Testing **Deliverable:** Plugin validated with actual sprint **Tasks:** - Use plugin for Intuit engine extraction sprint - Monitor for issues - Collect user feedback - Identify pain points - Document improvements needed **Test Sprint Checklist:** - [ ] Sprint planning with planner agent - [ ] Issue created with correct labels - [ ] Lessons learned searched at start - [ ] Status monitoring during sprint - [ ] Blocker identification - [ ] Sprint close with retrospective - [ ] Wiki updated with lessons **Success Criteria:** - Plugin handles real sprint - No critical bugs - Workflow feels natural - Saves time vs manual process - Lessons learned captured ### 5.3 Configuration Testing **Deliverable:** Validated hybrid configuration **Tasks:** - Test system config creation - Test project config creation - Test configuration loading order - Test missing config scenarios: - No system config - No project config - Invalid credentials - Network issues - Test multi-project scenarios: - Different repos with same system config - Switching between projects - Config changes propagation **Test Scenarios:** ``` Scenario 1: Fresh install - No configs exist - Plugin guides user through setup - All configs created correctly Scenario 2: System config exists - User adds new project - Only needs project .env - System config reused Scenario 3: Invalid credentials - Clear error message - Suggests checking config - Points to CONFIGURATION.md Scenario 4: Multi-project - cuisineflow project - Switch to intuit-engine project - Each uses correct GITEA_REPO - Same system credentials ``` **Success Criteria:** - Configuration works in all scenarios - Error messages are helpful - Setup is intuitive - Multi-project switching seamless - Documentation matches reality --- ## Phase 6: Documentation & Refinement (projman) ### 6.1 User Documentation **Deliverable:** Complete user guide **Tasks:** - Write README.md: - Installation instructions - Configuration setup (hybrid approach) - Command reference - Agent descriptions - Troubleshooting - Write CONFIGURATION.md: - System-level setup - Project-level setup - Validation steps - Common issues - Create ARCHITECTURE.md: - Plugin structure - MCP server design - Configuration flow - Agent system - Write CONTRIBUTING.md: - Development setup - Testing guidelines - Label taxonomy updates - Wiki maintenance **Success Criteria:** - Complete documentation - Clear setup instructions - Configuration well-explained - Examples provided - Troubleshooting guide ### 6.2 Iteration Based on Feedback **Deliverable:** Refined plugin based on real use **Tasks:** - Address issues from test sprint - Improve agent prompts - Refine command flows - Enhance error messages - Optimize performance - Update configuration docs if needed **Feedback Categories:** - Usability issues - Missing features - Confusing workflows - Error handling gaps - Documentation unclear - Configuration complexity **Success Criteria:** - Major issues resolved - Workflows improved - Documentation updated - Performance acceptable - Ready for team use --- ## Phase 7: Marketplace Preparation (projman) ### 7.1 Gitea Marketplace Setup **Deliverable:** projman available in Gitea marketplace **Tasks:** - Create marketplace repository in Gitea: - `hyperhivelabs/claude-plugins` - Add projman plugin to repository - Create `.claude-plugin/marketplace.json`: ```json { "plugins": [ { "name": "projman", "displayName": "Project Manager", "description": "Single-repo project management with Gitea", "version": "1.0.0", "author": "Hyper Hive Labs", "repository": "hyperhivelabs/claude-plugins", "path": "projman" } ] } ``` - Test marketplace loading - Document installation for team **Installation Command:** ```bash # Add marketplace /plugin marketplace add https://your-gitea.com/hyperhivelabs/claude-plugins # Install plugin /plugin install projman ``` **Success Criteria:** - Marketplace repository created - Plugin available for installation - Installation works smoothly - Team can access plugin - Documentation clear ### 7.2 Team Onboarding **Deliverable:** Team trained on projman usage **Tasks:** - Create onboarding guide - Walk through configuration setup: - System config creation - Project config per repo - Demonstrate sprint workflow - Show lessons learned capture - Explain label system - Share best practices **Onboarding Checklist:** - [ ] Configuration setup completed - [ ] Test sprint planned - [ ] Issue created successfully - [ ] Labels used correctly - [ ] Lessons learned captured - [ ] Wiki searched successfully **Success Criteria:** - Team understands configuration - Can run full sprint workflow - Uses labels correctly - Captures lessons learned - Comfortable with plugin --- ## Phase 8: Production Hardening (projman) ### 8.1 Error Handling & Resilience **Deliverable:** Production-ready error handling **Tasks:** - Implement comprehensive error handling: - Network failures - API rate limits - Authentication errors - Invalid configurations - Missing Wiki - Git conflicts - Add retry logic for transient failures - Improve error messages - Add logging for debugging - Create health check command **Success Criteria:** - Graceful failure handling - Clear error messages - Automatic retries where appropriate - Logging helps debugging - Users not blocked by errors ### 8.2 Performance Optimization **Deliverable:** Optimized plugin performance **Tasks:** - Profile MCP server operations using cProfile - Optimize API calls: - Batch requests where possible - Cache label data using lru_cache - Minimize Wiki searches - Reduce startup time - Optimize configuration loading - Test with large repositories - Use async/await for concurrent operations where beneficial **Success Criteria:** - Fast command execution - Low latency for API calls - Efficient caching - Handles large repos - Startup time < 2 seconds ### 8.3 Security Audit **Deliverable:** Security-hardened plugin **Tasks:** - Review credential handling: - System config permissions - Token storage security - Environment variable safety - Validate input sanitization - Check for injection vulnerabilities - Review error message information leakage - Audit logging for sensitive data - Test access controls **Security Checklist:** - [ ] Credentials never logged - [ ] Config files have correct permissions - [ ] Input validation on all user input - [ ] No SQL/command injection vectors - [ ] Error messages don't leak tokens - [ ] API calls use TLS - [ ] Token rotation supported **Success Criteria:** - No security vulnerabilities - Credentials protected - Safe input handling - Audit clean - Best practices followed --- ## Phase 9: PMO Plugin Foundation (projman-pmo) ### 9.1 Requirements Analysis **Deliverable:** PMO plugin requirements document **Tasks:** - Analyze multi-project workflows: - CuisineFlow → CuisineFlow-Site sync - Intuit Engine → CuisineFlow integration - HHL-Site updates - Customer VPS deployments - Identify cross-project dependencies - Define coordination pain points - Design PMO plugin scope - Determine what belongs in PMO vs projman **Key Questions:** - What triggers demo site updates? - What triggers Intuit engine updates? - How do you coordinate customer VPS deployments? - Where do multi-project conflicts happen? - What decisions require cross-project visibility? **Success Criteria:** - Clear understanding of multi-project workflows - Pain points documented - PMO plugin scope defined - Not duplicating single-repo functionality ### 9.2 MCP Server Extension **Deliverable:** Multi-repo query capabilities **Tasks:** - Extend Gitea MCP server for multi-repo operations - Add tools: - `list_repos` - Get all organization repos - `aggregate_issues` - Fetch issues across repos - `check_dependencies` - Analyze cross-repo dependencies - `get_deployment_status` - Check deployment states - Build dependency graph visualization data - Implement cross-repo search **Configuration for PMO:** **pmo/.mcp.json:** ```json { "mcpServers": { "gitea-pmo": { "command": "python", "args": ["-m", "mcp_server.server"], "cwd": "${CLAUDE_PLUGIN_ROOT}/mcp-server", "env": { "PYTHONPATH": "${CLAUDE_PLUGIN_ROOT}/mcp-server", "GITEA_API_URL": "${GITEA_API_URL}", "GITEA_API_TOKEN": "${GITEA_API_TOKEN}", "GITEA_OWNER": "${GITEA_OWNER}" } } } } ``` **Note:** PMO only uses system-level config (no GITEA_REPO). **Success Criteria:** - Can query multiple repos efficiently - Dependency analysis works - Aggregated views make sense - Performance acceptable for 3-5 repos - System-level config sufficient ### 9.3 PMO Agent Design **Deliverable:** Multi-project coordinator agent **Tasks:** - Define PMO agent personality - Design cross-project prioritization logic - Create resource allocation algorithms - Build conflict detection rules - Design dependency tracking system **PMO Agent Personality:** ```markdown You are the PMO Coordinator for Hyper Hive Labs. Your role: - Maintain strategic view across all projects - Identify cross-project dependencies - Detect resource conflicts - Balance competing priorities - Coordinate release timing - Track customer deployment schedules You are: - Strategic thinker - Dependency-aware - Conflict detector - Priority balancer - Team coordinator You delegate to project-level agents: - Don't micromanage single projects - Focus on cross-project issues - Surface conflicts early - Facilitate coordination ``` **Success Criteria:** - Clear separation from projman agents - Valuable for multi-project scenarios - Doesn't micromanage single projects - Integrates with projman seamlessly --- ## Phase 10: PMO Plugin Development (projman-pmo) ### 10.1 Cross-Project Commands **Deliverable:** PMO-specific commands **Tasks:** - `/pmo-status` - View all projects status - `/pmo-priorities` - Review and adjust priorities across projects - `/pmo-dependencies` - Visualize project dependencies - `/pmo-conflicts` - Identify resource conflicts - `/pmo-schedule` - View deployment schedule **Command Examples:** **`/pmo-status`:** ``` Projects Overview: CuisineFlow (main) ├── Sprint: Intuit Engine Extraction ├── Status: In Progress (60%) ├── Blockers: None └── Next: API testing CuisineFlow-Site (demo) ├── Sprint: Dashboard Updates ├── Status: Waiting on CuisineFlow API ├── Blockers: Depends on #cuisineflow-47 └── Next: Deploy when API ready Intuit-Engine (service) ├── Sprint: Initial Setup ├── Status: Planning ├── Blockers: Architecture decisions needed └── Next: Service boundary definition HHL-Site (marketing) ├── Sprint: Content Updates ├── Status: Complete ├── Blockers: None └── Next: Deploy to production ``` **`/pmo-dependencies`:** ``` Project Dependencies: CuisineFlow → Intuit-Engine ├── Must complete before v2.0 launch └── API contracts defined CuisineFlow → CuisineFlow-Site ├── Demo must sync with main features └── Deploy together for consistency Deployment Order: 1. Intuit-Engine (backend service) 2. CuisineFlow (main app) 3. CuisineFlow-Site (demo sync) 4. Customer VPS deployments ``` **Success Criteria:** - Commands provide valuable cross-project insights - Dependencies clearly visualized - Conflicts easily identified - Priorities make sense - Schedule coordination works ### 10.2 Coordination Workflows **Deliverable:** Multi-project coordination automation **Tasks:** - Implement dependency tracking - Build conflict detection: - Resource conflicts - Timeline conflicts - Priority conflicts - Create notification system for cross-project impacts - Design release coordination workflow **Conflict Detection Examples:** **Resource Conflict:** ``` ⚠️ Resource Conflict Detected Leo is assigned to: - CuisineFlow: Intuit Engine extraction (Priority: Critical) - CuisineFlow-Site: Dashboard redesign (Priority: High) - HHL-Site: Content update (Priority: Medium) Recommendation: - Focus on Intuit Engine (blocks launch) - Defer dashboard redesign to next sprint - Delegate content update to marketing ``` **Timeline Conflict:** ``` ⚠️ Timeline Conflict Detected CuisineFlow v2.0 launch: Nov 15 ├── Depends on: Intuit Engine completion └── Current status: Behind schedule Impact: - Demo site deployment delayed - Customer VPS updates postponed - Marketing announcements on hold Action needed: Re-evaluate scope or push date ``` **Success Criteria:** - Conflicts detected automatically - Clear recommendations provided - Dependencies tracked accurately - Timeline visibility maintained ### 10.3 Dashboard & Reporting **Deliverable:** Multi-project dashboard **Tasks:** - Create consolidated view: - All active sprints - Cross-project dependencies - Resource allocation - Timeline status - Blockers across projects - Build reporting commands: - `/pmo-report daily` - Daily standup report - `/pmo-report weekly` - Weekly progress - `/pmo-report release` - Release readiness - Generate stakeholder updates **Success Criteria:** - Dashboard provides clear overview - Reports are actionable - Stakeholder communication improved - Decision-making supported --- ## Phase 11: PMO Testing & Integration (projman-pmo) ### 11.1 Multi-Project Testing **Deliverable:** Validated PMO plugin **Tasks:** - Test with CuisineFlow + CuisineFlow-Site + Intuit Engine - Simulate deployment coordination scenarios - Test priority conflict resolution - Validate dependency tracking - Test customer deployment scheduling **Test Scenarios:** **Scenario 1: Dependent Deploy** ``` Given: CuisineFlow has API changes And: CuisineFlow-Site depends on those changes When: CuisineFlow sprint completes Then: PMO should alert about Site sync needed And: Suggest coordinated deployment ``` **Scenario 2: Resource Conflict** ``` Given: Multiple critical priorities And: Single developer (Leo) When: PMO analyzes priorities Then: Should detect conflict And: Recommend prioritization ``` **Scenario 3: Release Coordination** ``` Given: Intuit Engine must deploy first And: CuisineFlow depends on it And: Demo site must sync When: Release planned Then: PMO generates deployment order And: Validates dependencies satisfied ``` **Success Criteria:** - All scenarios handled correctly - Dependencies respected - Conflicts detected and surfaced - Coordination reduces manual overhead ### 11.2 Integration with projman **Deliverable:** Seamless plugin interoperability **Tasks:** - Ensure PMO agent delegates to projman agents - Test command interoperability - Validate shared MCP server usage (if applicable) - Check lessons learned sharing across projects - Test configuration isolation (PMO system-only vs projman hybrid) **Integration Points:** ``` PMO Plugin projman Plugin ├─────────────────────┤ │ Delegates │ │ single-project │ │ details │ │ │ ├─ Aggregates ────────┤ │ cross-project │ │ status │ │ │ └─ Coordinates ───────┘ dependencies ``` **Success Criteria:** - PMO doesn't interfere with single-project work - Delegation works smoothly - Shared infrastructure stable (if any) - Cross-project lessons accessible - Configuration doesn't conflict --- ## Phase 12: Production Deployment ### 12.1 Multi-Environment Rollout **Deliverable:** Plugins deployed across all environments **Tasks:** - Deploy to laptop (development) - Deploy to staging VPS - Deploy to production VPS - Configure branch-aware permissions per environment - Test network connectivity and API access - Validate configuration in each environment **Environment Configuration:** **Laptop (Development):** ```bash # System config (~/.config/claude/gitea.env) GITEA_API_URL=https://gitea.hyperhivelabs.com/api/v1 GITEA_API_TOKEN=dev_token GITEA_OWNER=hyperhivelabs # Project configs (per repo .env) # cuisineflow/.env GITEA_REPO=cuisineflow # intuit-engine/.env GITEA_REPO=intuit-engine ``` **VPS Environments:** - Same system config copied to VPS - Each project repo has its own .env - MCP server runs in production mode - Network access validated **Success Criteria:** - Plugins work in all environments - Configuration portable across systems - Network connectivity stable - Production ready ### 12.2 Backup & Recovery **Deliverable:** Backup and recovery procedures **Tasks:** - Document configuration backup: - System config backup - Project configs tracked in git - Create Wiki backup strategy - Document recovery procedures - Test configuration restoration - Automate backups where possible **Backup Strategy:** ```bash # System config backup cp ~/.config/claude/gitea.env ~/.config/claude/gitea.env.backup # Wiki is already in git cd wiki git push origin main # Project configs are in .gitignore (not backed up, easily recreated) ``` **Success Criteria:** - Configuration backup documented - Wiki backed up regularly - Recovery procedures tested - Data loss risk minimized ### 12.3 Monitoring & Maintenance **Deliverable:** Ongoing monitoring and maintenance plan **Tasks:** - Set up error monitoring - Create maintenance schedule: - Label taxonomy updates - Wiki cleanup - Configuration audits - Security updates - Document troubleshooting procedures - Establish update process for MCP server **Maintenance Checklist:** - [ ] Weekly: Review error logs - [ ] Monthly: Update Python dependencies (pip list --outdated) - [ ] Quarterly: Security audit (pip-audit) - [ ] As-needed: Label taxonomy sync - [ ] As-needed: Wiki organization - [ ] As-needed: Recreate virtual environment for major updates **Success Criteria:** - Monitoring in place - Maintenance plan documented - Update process defined - Team knows how to maintain --- ## Rollback Plan If plugins cause more problems than they solve: **Immediate Fallback:** - Keep existing skills and scripts functional - Plugins are opt-in, not replacement - Document issues and iterate - Can disable plugins without losing work **Criteria for Rollback:** - Plugin slower than current workflow - Frequent errors or data loss - User frustration increases - Blocks urgent work (like sprint deadlines) **Progressive Enhancement:** - Build plugins alongside current system - Migrate piece by piece - Keep escape hatches - Only deprecate scripts when plugin proven --- ## Configuration Quick Reference ### System-Level Setup (Once per machine) ```bash # Create config directory mkdir -p ~/.config/claude # Create gitea.env cat > ~/.config/claude/gitea.env << EOF GITEA_API_URL=https://gitea.hyperhivelabs.com/api/v1 GITEA_API_TOKEN=your_token_here GITEA_OWNER=hyperhivelabs EOF # Set permissions chmod 600 ~/.config/claude/gitea.env ``` ### Project-Level Setup (Per repository) ```bash # In project root echo "GITEA_REPO=cuisineflow" > .env # Add to .gitignore echo ".env" >> .gitignore ``` ### Validation ```bash # Test projman configuration cd your-project claude plugin test projman # Test pmo configuration (no project needed) claude plugin test projman-pmo ``` --- ## Notes on Type/Refactor Label **Label Details:** - **Name:** `Type/Refactor` - **Level:** Organization (available to all repos) - **Category:** Type/ (Exclusive - only one Type per issue) - **Color:** #0052cc (matches other Type labels) - **Description:** Architectural changes and code restructuring **Usage in Plugins:** - Planner agent suggests Type/Refactor for: - Service extraction (like Intuit engine) - Architecture modifications - Code restructuring without feature changes - Performance optimizations requiring significant changes - Label suggestion engine detects refactor keywords: - "extract", "refactor", "restructure", "optimize architecture" - "service boundary", "microservice", "decouple" - "technical debt", "code quality" - Shows in label sync diffs when fetching from Gitea - Documented in label taxonomy skill **Integration Points:** - MCP server includes Type/Refactor in label enumeration - Suggestion engine trained on architectural patterns - Sprint planning templates include refactor considerations - Lessons learned can tag architectural mistakes for future refactors --- ## End of Implementation Plan This plan builds two plugins systematically, starting with single-repo project management (projman) and expanding to multi-project coordination (projman-pmo). Each phase builds on previous phases, with testing and validation throughout. The hybrid configuration approach provides the right balance of simplicity (single token location) and flexibility (per-project repository specification). The plan is execution-ready but flexible - adjust based on real-world feedback and discovered requirements.