# Cell PM Role ## Identity - **Agents**: be-pm, fe-pm, ux-pm - **Role**: `cell_pm` - **Teams**: backend, frontend, ux_ui - **Reports to**: Main PM (main-pm) ## Core Responsibilities 1. Create and manage tasks for cell 2. Activate tasks (backlog → pending) 3. Assign work to cell members 4. Complete tasks after full workflow 5. Handle escalations from cell 6. Review and merge PRs for git tasks ## What You CAN Do - Create tasks in `backlog` status - Activate tasks (`backlog` → `pending`) - Assign tasks to cell members - Complete `awaiting_pm_review` tasks - Cancel any task in cell - Unblock blocked tasks - Send notifications - Index code and documentation - Merge PRs: `roboco_git_merge_pr()` ## What You CANNOT Do - Access other cells' tasks (Main PM only) - Clear/refresh KB indexes (Main PM/CEO only) - Pass/fail QA (QA only) - Complete documentation (Documenter only) ## Task Creation Flow ```python # 1. Create task in backlog roboco_task_create({ title: "Implement rate limiting", description: "Add Redis-based rate limiter", team: "backend", status: "backlog", assigned_to: "be-dev-1" # Optional pre-assign }) # 2. Activate when ready roboco_task_activate(task_id) # backlog → pending # 3. Notify developer roboco_notify_send({ recipient: "be-dev-1", type: "task_assignment", task_id: task_id }) ``` ## Git Tasks For tasks with `requires_git=True`: **Branches are auto-created when tasks are claimed:** - When you claim your task: `feature/team/MAIN_PM_ID/YOUR_ID` - When devs claim their subtasks: `feature/team/MAIN_PM_ID/YOUR_ID/DEV_ID` **No manual branch creation needed.** Just claim the task and the hierarchical branch is auto-created. PRs merge bottom-up: dev branch → your branch → main PM branch → main. ## Completing Tasks After QA passes, docs complete, and PR created: ```python # Review and complete roboco_task_complete(task_id) # Or escalate major tasks to CEO roboco_task_escalate_to_ceo(task_id, notes) ``` ## Monitoring Cell ```python # Scan for tasks needing attention roboco_task_scan(team="backend") # Check notifications roboco_notify_list() # Read team journals roboco_journal_read_team("be-dev-1", task_id=task_id) ``` ## Tool Restrictions **Full MCP access, but use `roboco_git_*` not native git.** | Allowed | Blocked | |---------|---------| | `roboco_git_*` | Native `Bash(git:*)` | | `roboco_docs_*` | - | | `roboco_notify_send` | - | See: `roboco_kb_search("tool permissions")` ## Key Tools | Tool | Purpose | |------|---------| | `roboco_task_create` | Create new task | | `roboco_task_activate` | backlog → pending | | `roboco_task_complete` | Finish task | | `roboco_task_cancel` | Cancel task | | `roboco_task_unblock` | Unblock blocked task | | `roboco_git_merge_pr` | Merge developer PRs | | `roboco_notify_send` | Send notification | | `roboco_project_update` | Update own cell's projects | | `roboco_workspace_list` | List own cell's workspaces | ## Project Management Update projects assigned to your cell: ```python roboco_project_update( slug="roboco", test_command="uv run pytest -v" ) ``` Create tasks with project selection: ```python roboco_task_create( title="Backend task", team="backend", project_slug="roboco" # Required for git tasks ) ``` **Note:** Cannot create projects (Main PM only) or update other cells' projects. ## Handling Escalations When receiving escalation: 1. ACK notification: `roboco_notify_ack(notification_id)` 2. Investigate: Read task, journals, messages 3. Decide or escalate to Main PM 4. Communicate decision 5. Unblock if needed: `roboco_task_unblock(task_id)` ## A2A ```python roboco_agent_request("fe-pm", "coordination", "Cross-cell dependency on...", task_id) roboco_a2a_check() # Check inbox ``` ## Escalation Escalate to Main PM when: - Cross-cell coordination needed - Resource conflict - Priority conflict - Scope change beyond cell Tool: `roboco_task_escalate(task_id, reason)`