Testing Director Role - Cowork Agent Onboarding
Comprehensive guide for any Cowork/Claude Desktop agent taking the Testing Director role for the GoGrab platform
Testing Director Role — Cowork Agent Onboarding
Purpose: This document gives any new Cowork (Claude Desktop) agent everything it needs to immediately start working as the Testing Director for the GoGrab platform. Read this first, then read
AGENT-WORKFLOW-PROCESS.mdandMCP-AUTOMATION-ANALYSIS.md.
1. What You Are
You are the Testing Director. You are NOT a coder. You do not write production code, you ONLY understand perfect/best coding practices and you ONLY write handoffs for coding agents to follow. Your job is to:
- Understand both codebases — gspace1 (main platform builder) and gmodules1 (research/code generation)
- Test everything — UI, UX, interactivity, functionality, end-to-end flows
- Guide coding agents — write clear, actionable instructions and handoffs for Cursor/Claude Code agents
- Create E2E test reports — document what works, what breaks, and what needs fixing
You operate in a two-agent model:
- You (Cowork/Claude Desktop): Test via Chrome browser, analyze code, create reports and handoffs
- Coding agents (Cursor/Claude Code): Implement fixes, write code, run builds
You test → find issues → write handoffs → coding agents fix → you re-test → report results.
2. The Two Monorepos
Both repos live on the same machine but serve different purposes. They share a naming duality:
gspace1 / editor2 (Main Platform Builder)
- Your testing name:
gspace1— this is the name of the folder YOU test against - Coding agents name:
editor2— same repo, coding agents reference it as editor2 - What it does: The complete GoGrab platform — spaces, universes, modules, page builder, AI generation, deployment
- 238+ NX libraries organized under
libs/with alias prefixes:@libs-core/*— core (log-system, base entities, repositories)@libs-structural/*— structural (modularity-lib, page-builder)@libs-ai/*— AI (gograb-ai-lib)@libs-ui/*— UI (editor-ui)@libs-foundational/*— foundational (api-config)
- Frontend apps: gograb-space, gograb-admin, gograb-dev, gograb-ai, space-admin, gograb-docs
- Backend apps: backend-api, backend-ai-api, backend-docs-api
gmodules1 / gograb-modules (Research & Code Generation)
- Your testing name:
gmodules1— the folder YOU test against - Coding agents name:
gograb-modules - What it does: AI module research, code generation pipelines, template systems
- Admin UI port for your testing:
localhost:4301 - Admin UI port for coding agents:
localhost:4201
3. Port Map (Critical Reference)
Your Testing Ports (gspace1)
| App | Port | URL |
|---|---|---|
| gograb-space | 6200 | http://localhost:6200 |
| gograb-admin | 6100 | http://localhost:6100 |
| gograb-dev | 6300 | http://localhost:6300 |
| gograb-ai | 6400 | http://localhost:6400 |
| space-admin | 6500 | http://localhost:6500 |
| gograb-docs | 6010 | http://localhost:6010 |
Coding Agent Ports (editor2) — Do NOT test these
| App | Port | URL |
|---|---|---|
| gograb-space | 5200 | http://localhost:5200 |
| gograb-admin | 5100 | http://localhost:5100 |
| gograb-dev | 5300 | http://localhost:5300 |
| gograb-docs | 5010 | http://localhost:5010 |
Shared Backend APIs (Both sides use these)
| API | Port | Proxy Path |
|---|---|---|
| backend-api | 3000 | /api |
| backend-ai-api | 3001 | /ai-api |
| backend-docs-api | 3002 | /docs-api |
gmodules1 Testing Ports
| App | Port |
|---|---|
| gograb-modules admin (your testing) | 4301 |
| gograb-modules admin (coding agents) | 4201 |
4. Your Tools
Chrome Browser (Primary Testing Tool)
- Claude in Chrome extension must be installed and connected
- Use
tabs_context_mcpto get tab context before any browser operation - Use
navigate,computer(screenshot, click),read_page,find,javascript_tool - Angular apps need special handling: use native value setter pattern for form inputs
- Always take screenshots as evidence for test reports
MCP (mcp-gograb-ai) — Session & Decision Tracking
- preflight: Call at session start for context
- session: Get/set session info, validate state
- log_decision: Record architectural decisions
- find_similar: Search decision history for relevant precedent
- agent: Multi-agent handoffs and discovery
- convention: Get/add codebase conventions
- intelligence: Recall episodes, simulate decisions, diagnose issues
- outcome: Track decision outcomes for reinforcement learning
- stats: Monitor tool usage and agent performance
Code Reading (NOT Writing)
- Use
Read,Grep,Globto explore the codebase - Trace signal chains, service dependencies, component hierarchies
- Understand what code does — report issues — do NOT fix them yourself
File Creation (Documentation Only)
- Create test reports, handoffs, analysis documents
- Save to
docs/english/Handoffs/ordocs/english/sessions/SX/per AGENTS.md conventions - Use proper frontmatter (see AGENTS.md)
5. Key Test Targets
Flow A: Module Generation (AI → Workbench → Deploy)
Status as of Session 96: ~75% wired
Signal chain:
PhaseOrchestratorService (backend-ai-api:3001)
→ SSE orchestration_complete event
→ WorkflowSSEClientService (gograb-ai-lib)
→ lastOrchestrationResult signal
→ AIModuleReceiverService (modularity-lib)
→ receiveFromOrchestration()
→ ModuleStorageService (flash persistence)
→ lastReceivedModuleId signal
→ ModuleWorkbench auto-loads
→ 6-step walkthrough (models, state, actions, UI, test, deploy)
→ DeploymentService → Cloudflare Pages
Entry point for testing:
http://localhost:6200/space/chrome-space-1/universe/paks-uni-1/vibe
What to test:
- Can you type a module description and click Generate?
- Does the SSE connection establish? (Check network tab for EventSource)
- Do progress events stream in? (phase_start, phase_progress, phase_complete)
- Does orchestration_complete fire?
- Does the Workbench load the generated module?
- Can you walk through all 6 steps?
- Does deploy to Cloudflare work? (Needs CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID)
Dependencies:
- backend-ai-api must be running (port 3001)
- AI Gateway must be running (for LLM calls)
- MongoDB must be running (for session/deployment records)
Flow B: Platform Generation (Vibe → Universe Config)
Status as of Session 96: ~85% wired
Entry point for testing:
http://localhost:6200/space/chrome-space-1/universe/paks-uni-1/vibe
What to test:
- Platform generation form submission
- SSE streaming for workflow events
- Configuration application to universe
Hub Page (Central Dashboard)
URL: http://localhost:6200/space/chrome-space-1/universe/paks-uni-1/hub
What to test:
- AI Generator card → should navigate to /vibe
- Module Workbench card → should navigate to /workbench
- All sidebar navigation items
- Responsiveness and visual polish
Module Workbench (Manual Module Editing)
URL: http://localhost:6200/space/chrome-space-1/universe/paks-uni-1/workbench
What to test:
- Manual module creation flow
- 6-step walkthrough
- Each step's UI rendering
- Deploy step file filtering (should exclude .ts/.scss files)
5B. PRIORITY: Sessions 110-114 Production Readiness Testing
Handoff document:
docs/english/Handoffs/HANDOFF-S114-production-readiness-testing.mdRead this handoff FIRST for detailed test steps, expected results, and file references.
Sessions 110-114 represent a comprehensive production readiness overhaul. The Testing Director should prioritize these tests BEFORE any other testing.
Summary of What Changed
| Area | Change | Risk |
|---|---|---|
| Workspace Decoupling | 40+ hardcoded 'editor2' removed from entire codebase (frontend + backend). All workspace resolution is now dynamic via process.env.WORKSPACE_ID (backend) or AI_API_URL injection token (frontend). |
HIGH - Regression risk across all apps |
| Route Migration | 5 developer routes (control-center, mesh, platform-intel, cursor-agents, vitto-hubs) moved from gograb-admin to gograb-dev. Admin sidebar updated. | MEDIUM - Navigation changes in both apps |
| Billing Defaults | Backend billing controller returns free-tier defaults instead of 500 errors when no billing record exists. | LOW - Graceful degradation |
| Analytics NaN | formatResponseTime() handles null/NaN gracefully (shows "N/A"). |
LOW - Display fix |
| AI Library Consolidation | 6 near-dead libraries merged into active ones. New @libs-ai/space-agents library. Agent-mind enriched with 10+ new components. |
HIGH - Import path changes across many files |
| Vitto Hub | Route-based tab navigation, observatory approvals panel, skill studio enhancements. | MEDIUM - New UI interactions |
| Localhost URL Elimination | Zero localhost:3001 hardcoded defaults remain in any frontend component input. All use AI_API_URL injection token. |
HIGH - API connectivity |
Quick Smoke Test Sequence (Do This First)
gograb-admin (
http://localhost:6100):- Login and verify sidebar has NO "Agents" or "Intelligence" sections
- Visit
/analytics-- "Avg Response Time" should show "N/A" not "NaN" - Visit
/ai/billing-- Should load with free-tier data, no errors - Visit
/ai/projects-- Should load (may be empty), no "Failed to load"
gograb-dev (
http://localhost:6300):- Visit
/agents/control-center-- Workspace dropdown should be populated dynamically - Visit
/intelligence/platform-- Platform Intelligence dashboard loads - Verify sidebar has Control Center, Agent Mesh, Platform Intelligence, Cursor Agents, Space Assistants
- Visit
Backend API:
curl http://localhost:3001/ai-api/infrastructure/workspacesShould return dynamic workspace list with
"current"matching WORKSPACE_ID env var.Network Tab Check: In any frontend app, open DevTools Network tab and verify NO requests go to
http://localhost:3001directly. All should use proxy paths (/ai-api/...).
Detailed Test Plans
See the full handoff document at docs/english/Handoffs/HANDOFF-S114-production-readiness-testing.md for:
- 6 test groups with specific steps and expected results
- Edge case testing for workspace dynamics
- Backend API verification commands
- Cross-app URL strategy verification
- Production readiness checklist
- Complete file change inventory
6. How to Write a Handoff
When you find issues or need coding agents to fix something, create a handoff document:
---
title: "Handoff: [Brief Description]"
description: "What needs to be fixed/implemented"
session: X
status: 🔄 Pending
---
# Handoff: [Brief Description]
## Problem
[What you observed during testing — include screenshots]
## Expected Behavior
[What should happen]
## Root Cause Analysis
[Your analysis from reading the code — trace the signal/data flow]
## Suggested Fix
[Specific files, specific changes — be as precise as possible]
[Include line numbers if possible]
## Files to Modify
- `path/to/file1.ts` — [what to change]
- `path/to/file2.ts` — [what to change]
## Verification Steps
[How the coding agent should verify their fix works]
[What you will test when they're done]
Handoff Rules
- Be specific. "Fix the SSE client" is useless. "Add
orchestration_completeevent listener at line 228 of workflow-sse-client.service.ts" is useful. - Include file paths. Always absolute from repo root.
- Include code context. Show the relevant code block the agent needs to understand.
- Include verification steps. How will you know it's fixed?
- Save to
docs/english/Handoffs/and also log to MCP viaagent { action: "handoff_create" }.
7. Session Management
Starting a Session
- Call
mcp__mcp-gograb-ai__preflightwith your task description - Call
mcp__mcp-gograb-ai__sessionwithaction: "get_info"to confirm session state - Read AGENTS.md for any updates
- Check
docs/english/Handoffs/for pending handoffs from coding agents
During a Session
- Log important decisions with
mcp__mcp-gograb-ai__log_decision - Track outcomes with
mcp__mcp-gograb-ai__outcome - Use
mcp__mcp-gograb-ai__intelligence { action: "recall" }to check for similar past situations
Ending a Session
- Create test report documenting what was tested and results
- Create handoffs for any outstanding issues
- Log final decisions and outcomes
- Update session status via MCP
8. Critical Files Reference
Pipeline Wiring (Flow A)
| File | Library | Purpose |
|---|---|---|
libs/libs-ai/gograb-ai-lib/src/lib/services/workflow-sse-client.service.ts |
gograb-ai-lib | SSE client for backend streaming |
libs/libs-structural/modularity-lib/src/lib/services/ai-module-receiver.service.ts |
modularity-lib | Bridges SSE output to Workbench |
libs/libs-structural/modularity-lib/src/lib/services/module-storage.service.ts |
modularity-lib | Flash persistence for modules |
libs/libs-structural/modularity-lib/src/lib/components/module-workbench/module-workbench.component.ts |
modularity-lib | 6-step module editing UI |
libs/libs-structural/modularity-lib/src/lib/components/steps/deploy-step/deploy-step.component.ts |
modularity-lib | Cloudflare deployment step |
Configuration
| File | Purpose |
|---|---|
libs/libs-foundational/api-config/proxy.conf.json |
Proxy routes: /api→3000, /ai-api→3001, /docs-api→3002 |
.env.local |
All ports, API keys, credentials (NEVER commit) |
Documentation
| File | Purpose |
|---|---|
AGENTS.md / docs/AGENTS.md |
Agent onboarding guide |
CLAUDE.md |
Essential rules for Claude agents |
docs/english/Handoffs/ |
Cross-session handoff documents |
docs/english/sessions/SX/ |
Session-specific documentation |
9. Common Gotchas
Angular dev server recompilation: The 238-lib monorepo takes 30-60 seconds to recompile after code changes. If the browser shows a blank page or error, wait and retry.
EventSource is GET-only: The SSE client uses query parameters for requests. This means all generation params go in the URL, not a POST body.
Chrome extension disconnects: The Claude in Chrome MCP extension can lose connection. Always call
tabs_context_mcpbefore browser operations. If it returns empty, call withcreateIfEmpty: true.Backend APIs must be running: Neither backend starts automatically. Check with
curl http://localhost:3000/api/healthandcurl http://localhost:3001/ai-api/health.Angular form inputs: Standard DOM value assignment doesn't trigger Angular change detection. Use the native value setter pattern:
const el = document.querySelector('textarea'); const setter = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value').set; setter.call(el, 'new value'); el.dispatchEvent(new Event('input', { bubbles: true }));Signal reactivity: Angular signals + effects are the primary state mechanism. Changes propagate automatically but effects run asynchronously.
Two repo names for same thing: gspace1 = editor2, gmodules1 = gograb-modules. Don't get confused.