5.0 KiB
AGENT_HANDOFF.md
Completed
Phase 0 — Repository Setup
- Repository skeleton (TASK 0.1)
- package.json with dependencies (TASK 0.2)
Phase 1 — Core Utilities
- Configuration loader (
src/config/env.js) — TASK 1.1 - Secret redaction utility (
src/utils/redact.js) — TASK 1.2 - Context budget utility (
src/utils/context-budget.js) — TASK 1.3 - Safe logging helper (
src/utils/logging.js) — TASK 1.4
Phase 2 — OpenAI Integration
- OpenAI client wrapper (
src/openai/client.js) — TASK 2.1 - Response builder (
src/openai/responses.js) — TASK 2.2 - Error handling and edge cases (tests) — TASK 2.3
Phase 3 — Tool Inputs and Prompts
- Zod input validation schemas (
src/tools/schemas.js, tests) — TASK 3.1 - Base prompt template (
src/prompts/base.js, tests) — TASK 3.2 - ask_chatgpt prompt builder (
src/prompts/ask-chatgpt.js, tests) — TASK 3.3 - review_plan prompt builder (
src/prompts/review-plan.js, tests) — TASK 3.4 - review_code prompt builder (
src/prompts/review-code.js, tests) — TASK 3.5 - debug_issue prompt builder (
src/prompts/debug-issue.js, tests) — TASK 3.6 - architecture_review prompt builder (
src/prompts/architecture-review.js, tests) — TASK 3.7
Next Phase
Phase 4 - Tool Handlers
Build the MCP tool handlers that:
- Register each tool with the MCP server.
- Validate input using
schemas.js. - Call the appropriate prompt builder.
- Send the prompt to OpenAI via
responses.js. - Return structured advisory output to Claude Code.
Completed (Phase 4)
All five MCP tool handlers are complete:
| Handler | File | Tests |
|---|---|---|
| handleAskChatGpt | src/tools/ask-chatgpt.js |
✅ 27 |
| handleReviewPlan | src/tools/review-plan.js |
✅ 28 |
| handleReviewCode | src/tools/review-code.js |
✅ 28 |
| handleDebugIssue | src/tools/debug-issue.js |
✅ 28 |
| handleArchitectureReview | src/tools/architecture-review.js |
✅ 28 |
Total: 139 orchestration-only tests, all passing.
Completed (Phase 5)
All five MCP tools registered: ask_chatgpt, review_plan, review_code, debug_issue, architecture_review.
Task 5.1 - MCP server skeleton ✅
Minimal MCP stdio server in src/server.js. MCP initialize handshake succeeds. No tools registered yet.
Task 5.2 - Register ask_chatgpt MCP tool ✅
ask_chatgpt is now registered as an MCP tool on the server (src/server.js).
Registration details:
- Uses shared
baseInputSchema(question required + context, constraints, expectedOutput, projectSummary, taskSummary, relevantFiles, logs optional). - All 3 external deps injected:
loadConfig,createOpenAIClient,sendOpenAIResponse. - Returns structured MCP tool result:
{ content: [{ type: "text", text }], isError, warnings }.
Smoke test results (all passing):
- initialize → server returns
chatgpt-mcpv0.1.0 ✅ - tools/list → exposes
ask_chatgptwith correct schema ✅ - tools/call (happy path, mocked OpenAI) →
{ content: [...], isError: false }with answer ✅ - tools/call (minimal input
{ question: "hi" }) → works ✅ - tools/call (full input, all 10 schema fields) → handled correctly ✅
- tools/call (missing OPENAI_API_KEY) → structured MCP error
"Error: Configuration error: OPENAI_API_KEY is missing."✅ - tools/call (invalid API key) → structured MCP error
"OpenAI API error (OpenAIAuthError): 401"✅ - All 523 unit tests pass across 18 test files ✅
Production code (src/server.js): ~39 lines, single ask_chatgpt tool registered with MCP via Stdio transport.
Task 5.3 - Register remaining MCP tools ✅
Four additional MCP tools registered on the server (src/server.js):
| Tool | Handler |
|---|---|
review_plan |
handleReviewPlan |
review_code |
handleReviewCode |
debug_issue |
handleDebugIssue |
architecture_review |
handleArchitectureReview |
All five MCP tools now registered: ask_chatgpt, review_plan, review_code, debug_issue, architecture_review.
Smoke test results (all passing):
- initialize → server returns
chatgpt-mcpv0.1.0 ✅ - tools/list → 5 tools total ✅
- tools/call reaches handlers for all 5 tools ✅
- missing OPENAI_API_KEY → structured tool errors:
"Error: Configuration error: OPENAI_API_KEY is missing."✅ - npm test → 523 tests pass across 18 test files, no regressions ✅
Implementation notes:
- Each tool registered explicitly with its own
registerTool()call — no registry abstraction. - All handlers use existing modules only (no new imports or files).
- SDK quirk:
isError: truewraps results in JSON-RPC error envelope (code: -32603).
Next Pending
Task 5.4 - Normalize MCP tool error formatting
General Rules
- Read ARCHITECTURE.md before making changes.
- Work incrementally.
- Keep changes small.
- Do not implement multiple phases at once.
- Do not add features not described in ARCHITECTURE.md.
- Update documentation when appropriate.
- Claude Code is the implementation agent.
- ChatGPT MCP is advisory only.