← unDrifter

MOSME (local Figma jockey)

MOSME in this repo means: Figma PAT on your machine only, Figma Console MCP for live Figma, and mosme-enrichment MCP for a sub-loop that keeps large JSON off the main stdio path.

Start here

1. MOSME_LOCAL_PAT.md — where the PAT lives (never in unDrifter cloud). 2. MOSME_FIGMA_CONSOLE_JOCKEY.md — Desktop, Bridge, NPX smoke tests. 3. MOSME_STDIO_BUDGET.md — when to call Console vs enrichment. 4. MOSME_FIGMA_CONTRACT.md — goals and split of responsibilities. 5. MOSME_ENRICHMENT_TOOLS.md — enrichment MCP tool reference. 6. MOSME_OPENPENCIL_OPTIONAL.md — optional .fig / OpenPencil spike.

Cursor MCP example

See CURSOR_MCP_EXAMPLE.json (merge into your .cursor/mcp.json; do not commit secrets). If ${workspaceFolder} is not expanded by your client, use an absolute path to mosme/enrichment-mcp/dist/index.js after npm run build. Optional: set MOSME_ENRICHMENT_ROOT (defaults to ~/.undrifter-mosme).

Package

unDrifter product

Shipped capture/inject flow remains extension ↔ server ↔ plugin per AGENTS.md. MOSME is IDE-local tooling alongside that.

Hub API: selectable experts (POST /enrich/chat/mosme)

On a hub with Ollama and both OLLAMA_MOSME_MODEL_A / OLLAMA_MOSME_MODEL_B set, MOSME runs two calls per round: model A = lead expert, model B = partner expert. Each assistant turn in data.transcript includes speaker, expertId, and speakerLabel.

Body (JSON)

FieldRequiredDescription
-------------------------------
messageyesUser prompt (text only).
roundsno1–3 (clamped by plan when billing is on).
expertLeadnoExpert id for the lead voice (model A).
expertPartnernoExpert id for the partner voice (model B).

Expert ids: copywriter, frontend, architect, sales, information_architecture, visual_designer.

Response: data.expertLead, data.expertPartner echo the resolved ids. Transcript entries for role: "assistant" include expertId and speakerLabel (human-readable role name).

Prompts share a grounding clause (CopyDoc, zones, Figma/FigJam sync) and a dialectic instruction so lead and partner keep each other in check across rounds.