← Files LofiARCHIVED FILE
.codex-plugin/plugin.json
13.5 KB · Nov 12, 2026 · 19:31 UTC
{
"name": "lofi",
"version": "0.4.1",
"description": "Design wireframes on an editable Lofi canvas, review flows, and hand off to ChatGPT for prototyping.",
"author": {
"name": "LOFISTUDIO, Inc.",
"url": "https://studiolofi.com"
},
"homepage": "https://studiolofi.com",
"repository": "https://github.com/Lofi-Studio/app",
"keywords": [
"design",
"wireframes",
"prototyping",
"mcp"
],
"interface": {
"displayName": "Lofi",
"shortDescription": "Design on an editable canvas.",
"longDescription": "Design, refine and compare wireframe flows on an editable Lofi canvas beside your ChatGPT conversation. Reopen saved projects, explore alternatives on the same board and keep the originals.\n\nShare your canvas with ChatGPT to review a flow, build a working prototype or prepare a code handoff. You confirm before sharing screens, flow details and preview images.\n\nA Lofi account is required. ChatGPT-authored designs use no Lofi generation credits. Optional Lofi-model generation uses credits where available; account limits apply.\n\nPrivate previews expire after 15 minutes or replacement. Shared content follows ChatGPT’s retention settings; Lofi saves design activity without copying the full conversation.",
"developerName": "LOFISTUDIO, Inc.",
"category": "Productivity",
"capabilities": [
"Read",
"Write"
],
"websiteURL": "https://studiolofi.com",
"supportURL": "https://studiolofi.com/#faq",
"privacyPolicyURL": "https://studiolofi.com/privacy",
"termsOfServiceURL": "https://studiolofi.com/terms",
"defaultPrompt": [
"Design a mobile onboarding flow for a note-taking app on a Lofi canvas.",
"Review my Lofi canvas and suggest improvements.",
"Review the flow on my Lofi canvas and build a working prototype."
],
"brandColor": "#171714",
"composerIcon": "./assets/logo.png",
"logo": "./assets/logo.png"
},
"mcpServers": "./.mcp.json",
"extensions": {
"com.openai": {
"review": {
"demo_recording_url": "https://drive.google.com/file/d/1aCkENMookUp_RgzPxwZRqdYDfbEBZbdP/view?usp=drivesdk",
"test_cases": {
"positive": [
{
"description": "Dedicated sample account with an existing private Coffee Ordering Flow project. Run with only Lofi selected and the current candidate tool catalog. Verify owned project discovery and visible editable canvas rendering.",
"prompt": "Show my saved Lofi projects, then open Coffee Ordering Flow beside this conversation.",
"tools_triggered": "list_projects, open_canvas",
"expected_behavior": "List only projects owned by the connected Lofi account, using returned creation dates and credit balance. Resolve Coffee Ordering Flow and call open_canvas with its actual project reference. Verify the saved screens visibly render before claiming the host opened them. Do not create a project, access the ChatGPT Projects sidebar or charge Lofi credits. Preserve actual project, document, frame and version identifiers for subsequent cases."
},
{
"description": "Dedicated sample account has a free project slot and permission for ChatGPT-authored designs. No Lofi generation credit balance is required for this path. Run with only Lofi selected. This creates one private sample project; the generated layout is nondeterministic.",
"prompt": "Design and save a three-screen mobile plant-care onboarding flow: Welcome, Choose plants, and Watering reminders. Create it here with ChatGPT using Lofi guidance; do not use Lofi model generation or spend Lofi credits.",
"tools_triggered": "get_design_guidance, evaluate_iteration, create_wireframe_from_design",
"expected_behavior": "Get mobile guidance without a project reference, draft three catalog-based addScreen operations linked with actual prior screen IDs, and evaluate with the guidanceToken, unchanged user intent and newProject containing a fresh UUID requestId and title. Use the returned skills and schema; correct blocking structural findings with at most two correction attempts. Save the exact evaluated plan, intent, title and requestId with its evaluationToken. Return one private owned project and visibly rendered editable canvas; creditsCharged must be 0 and the Lofi balance unchanged. An identical completed save retry must resolve to the same project instead of creating a duplicate. Do not silently call generate_wireframe or claim independent visual, semantic or accessibility certification. Advisory layout feedback may remain and should be described honestly."
},
{
"description": "Dedicated Coffee Ordering Flow contains original Quick Order, Customize and Checkout screens and may already contain other alternatives. Capture only the three original IDs, complete elements and current version. Run with only Lofi selected and host-authoring permission. This tests one explicitly new zero-credit additive alternative plus an outer-frame-label-only follow-up; reusing an existing alternative does not complete this case.",
"prompt": "Using only the original Quick Order, Customize and Checkout screens in Coffee Ordering Flow, add one NEW pickup-first alternative in a new independent row, even if an older pickup-first alternative already exists. Create three new screens with new IDs: Choose pickup, Build drink, and Review pickup. Keep the original drink choices, customization, pickup and payment details, and preserve every existing screen. Explain the direction and tradeoff. After saving, rename only the new frame’s outer canvas label from Choose pickup to Choose your pickup; leave its navigation title and all other content unchanged. Create it here with ChatGPT using Lofi guidance and structural evaluation. Do not spend Lofi generation credits.",
"tools_triggered": "list_frames, get_design_guidance, evaluate_iteration, apply_canvas_update, list_frames, apply_canvas_update",
"expected_behavior": "Resolve the latest version and only the three original frame IDs. Add an explicitly new row with new IDs rather than treating an existing pickup-first row as completion. Get existing-board guidance for those IDs, inspect source context and bounded sibling summaries, then propose three added screens on the same project/document with plan.additionLayout=independentRow. Omit afterFrameId on the first new screen and link only later new screens to earlier new IDs; do not connect the alternative to an original frame. Verify the returned addedFramePlacements place the new flow below existing board bounds. Supply a flow variant brief with direction, benefit, tradeoff, preserved requirements and observable changes to evaluate_iteration. Use the exact evaluated plan and unchanged intent with evaluationToken and current baseVersion in apply_canvas_update; preserve every pre-existing element and unrelated connection. Explain structural similarity or layout advisories without treating them as proof of UX quality or a mandatory novelty threshold. If guidance/evaluation is rejected as invalid or expired, fetch fresh guidance and re-evaluate against the current revision; never save using an invalid token. Read the saved version before a copy-only editElements update of just the new frame’s outer text label, without changing its NavBar or other content; this copy-only follow-up does not require another structural evaluation. Both writes charge 0 Lofi credits. A stale version must return conflict rather than overwrite newer work; a changed proposal or scope needs fresh evaluation. Never substitute paid generate_variation."
},
{
"description": "Dedicated Coffee project has the original three-screen flow, a current saved version, paid-generation permission and at least one Lofi credit. Run with only Lofi selected. This case deliberately chooses the paid Lofi-model path; do not reuse the uncharged host-authoring expectation.",
"prompt": "Use Lofi’s Default generation model to add one three-screen mobile variation of the original Quick Order, Customize and Checkout flow in Coffee Ordering Flow. Explore a guided checkout approach while preserving the originals on the same board. Spend at most one Lofi credit.",
"tools_triggered": "list_frames, generate_variation, list_frames",
"expected_behavior": "Resolve original source frame IDs and latest version, then call generate_variation on that existing project with only those three IDs, mode default and a fresh UUID requestId. Append connected alternative screens with distinct IDs without changing or deleting any pre-existing element or creating a new project. Report the returned charge (Default costs 1 Lofi credit) and saved activity. An identical completed retry must return the saved result with no additional debit or appended screens. Do not imply a ChatGPT subscription funded this Lofi-model request. If the board changes during generation, report the conflict/refund result and read the new version before any separately authorized retry."
},
{
"description": "Open the dedicated Coffee Ordering Flow canvas in ChatGPT after P3/P4. Capture the current saved frame IDs, names and revision. Click the floating Send to ChatGPT action: the dialog automatically prepares a preview of the whole saved board, without a Prepare board step or screen selection. Replace the request with the prompt below and press Send to ChatGPT once. Verify the first assistant response from this send. An image-capable host receives the whole-board PNG directly; a text-only host receives the real owner-checked project reference and handoffId. Read a reference within 15 minutes before replacement. Run with only Lofi selected.",
"prompt": "Review this whole Lofi board. Name the original flow and the pickup-first alternative, suggest two improvements, and give me a short brief I can use with a coding agent. Explain your recommendations before changing anything.",
"tools_triggered": "get_board_handoff only when the whole-board PNG is not attached; list_frames or get_frame only if further current saved detail is needed",
"expected_behavior": "The preview appears automatically and the message is sent only after explicit Send. If the whole-board PNG is attached, inspect it directly without an unnecessary get_board_handoff call. Otherwise call get_board_handoff using the actual project reference and supplied handoffId, and read its returned PNG before making visual claims. A delivery acknowledgment alone does not prove inspection. Identify the original and pickup-first flows using actual image/context, ground two recommendations and the text implementation brief in those contents, and distinguish snapshot version from currentVersion if current detail is fetched. Do not claim details that are unreadable in the image. Do not edit, generate, publish the board or charge Lofi credits. Do not claim a coding session, delivered ZIP or editable Figma file. If the preview expired or was replaced, request a fresh preview and do not invent findings. If delivery is uncertain, do not automatically resend or use a second message transport. Having trouble? offers a manual text fallback; file exports continue in Lofi. evaluate_iteration is not a screenshot or visual-judging tool."
}
],
"negative": [
{
"description": "Lofi designs prototypes and has no booking or payment execution tool. Explain the limit and optionally offer a booking-flow wireframe. Do not claim a reservation or payment and do not invoke Lofi write tools to execute an actual purchase.",
"prompt": "Book a real flight from New York to Lisbon and pay for it through Lofi."
},
{
"description": "ChatGPT host authoring can use Lofi guidance and structural checks without Lofi generation credits; this does not transfer subscription credits or fund Lofi-model requests. Explain the billing boundary. Do not invoke canvas/generation tools, alter a balance, debit a ChatGPT plan, initiate checkout or claim approved ChatGPT-funded API use.",
"prompt": "Use my ChatGPT subscription to add 100 paid credits to my Lofi balance."
},
{
"description": "The integration cannot create editable Figma component layers or enable live two-way synchronization. Explain the limit and offer existing visual export in Lofi or a text implementation brief. Do not invoke a nonexistent export/sync tool or claim a Figma file or connection.",
"prompt": "Send this Lofi canvas to Figma as editable components and turn on live two-way synchronization."
}
]
},
"commerce": false,
"commerce_description": "The plugin has no purchasing, checkout, payment or subscription-creation tools and does not promote upgrades. ChatGPT-authored wireframes and edits use Lofi guidance and structural checks at 0 Lofi generation credits, subject to account project limits and rollout permissions. Only explicitly chosen Lofi-model generation or variation uses existing Lofi credits: Default 1, Thinking 10. Any Lofi credit or subscription purchase happens separately on Lofi’s website. A ChatGPT subscription does not transfer Lofi credits or fund Lofi-model API calls; no ChatGPT-plan-funded API feature is claimed available."
},
"publication": {
"countries": [],
"release_notes": "Clarifies the editable canvas experience, adds a flow-to-prototype example prompt, and shortens the listing description."
}
}
}
}
SHA-256: ef12c7ce81a503df35ac85459519049c372aec1a62d3ff98306158f2b859d129