Submatter/.convoys/second-brain-os-v01/brief-1-mcp-create-backlog-item.md
Randall Stillwell 6ccb060bea feat(second-brain): open self-hosted Obsidian for crews — harness-agnostic v0.1
- MCP create-backlog-item for natural language Plan/Epic/Task authoring
- Worker non-code: optional worktree + per-harness allowlist + doc_review→published
- Harness registry: harness_providers/role_harness_routes, WorkerAdapter (minimal|crewai|langgraph|remote-ag-ui), AG-UI POST /api/ag-ui, Settings → Harnesses with Test
- Plans tree: backlog.listTree + createPlan/Epic/Task + Start→Convoy, web CRUD without CLI
- Fleet: /fleet rollup across workspaces + SSE /api/fleet/events

Decision: docs/decisions/2026-08-25-second-brain-os-pivot.md
Convoy: .convoys/second-brain-os-v01

Co-authored-by: orchestrator
2026-08-25 16:20:53 -05:00

2.1 KiB

brief convoy role title status priority slice_dependencies recommended_model model_tier workspace_id
1 second-brain-os-v01 role-implementer MCP create-backlog-item tool for natural language Plan/Epic/Task authoring ready P0
qwen-coder local global

Brief 1 — MCP create-backlog-item (0.5d)

Goal

Any agent (OpenCode/Cursor/Codex) via MCP can say "create an Epic for offline mode with 3 tasks" and it writes plans/Plan-*/Epic-*/Task-*.md + re-imports to markdown_backlog_items packages/database/src/markdown-backlog/sync.ts:38.

Files

  • apps/mcp-server/src/tools/create-backlog-item.ts NEW — zod schema kind: plan|epic|task, slug, title, planSlug, epicSlug, status, priority, bodyMarkdown, agent_prompt; validates frontmatter per docs/templates/, writes file via exportBacklogItemToMarkdown inverse, calls syncMarkdownBacklogScan or direct DB insert + contentHash packages/database/src/markdown-backlog/parse.ts:1.
  • apps/mcp-server/src/tools/index.ts register
  • packages/database/src/markdown-backlog/parse.test.ts add case

Acceptance

  • mcp call create-backlog-item {workspace:"maya-workspace", kind:"task", slug:"research-prompt", planSlug:"clarity", epicSlug:"ai-tags", title:"Research prompt", bodyMarkdown:"..."} creates plans/Plan-clarity/Epic-ai-tags/Task-research-prompt.md with YAML frontmatter + body, row appears in markdown_backlog_items without manual pnpm import.
  • Duplicate slug under same epic → error CONFLICT.
  • pnpm lint && pnpm type-check && pnpm --filter @tasks/mcp-server test (if exists) pass; apps/mcp-server still builds Docker.

Prompt for implementer

You are role-implementer for second-brain-os-v01 brief 1. Read docs/decisions/2026-08-25-second-brain-os-pivot.md, packages/database/src/markdown-backlog/parse.ts, apps/mcp-server/src/tools/claim-task.ts:1 as reference. Implement exactly this brief, keep changes small, run pnpm lint && pnpm type-check.

Dogfood

claim_task on the matching plans/Plan-automation-foundation/.../Task-*.md if exists (or ad-hoc) → complete_task outcome:succeeded tokensTotal:... modelAlias:qwen-coder.