← Files GroupMixerARCHIVED FILE
.codex-plugin/plugin.json
6.64 KB · Nov 3, 2026 · 19:05 UTC
{
"name": "groupmixer",
"version": "1.0.0",
"description": "Create and refine group rotations using the GroupMixer browser workspace.",
"author": {
"name": "Guido Witt-D\u00f6rring"
},
"interface": {
"displayName": "GroupMixer",
"shortDescription": "Create groups and rotations",
"longDescription": "Organize people into groups across rounds for workshops, classrooms, conferences, and networking events. Create or update a scenario in chat and generate rotations on your device. Scenario changes apply automatically; optional review is available in the scenario menu. Inspect results, edit groups, navigate the workspace, and export schedules. Existing scenarios can be revised in place without creating another workspace. Keep the app open while generation runs. Basic grouping works without a GroupMixer account; advanced generation uses existing GroupMixer account entitlements. This plugin requires an interactive browser workspace to generate results. Share workspace context with ChatGPT when you share a workspace or ask ChatGPT to create or update it.",
"developerName": "Guido Witt-D\u00f6rring",
"category": "Productivity",
"capabilities": [
"Interactive",
"Write"
],
"defaultPrompt": "Help me organize people into groups across several rounds.",
"websiteURL": "https://groupmixer.app",
"supportURL": "https://groupmixer.app/feedback",
"privacyPolicyURL": "https://groupmixer.app/legal",
"termsOfServiceURL": "https://groupmixer.app/terms/pro",
"logo": "./assets/logo.png",
"logoDark": "./assets/logo.png",
"composerIcon": "./assets/logo.png"
},
"mcpServers": "./.mcp.json",
"extensions": {
"com.openai": {
"review": {
"demo_recording_url": "https://groupmixer.app/review/groupmixer-chatgpt-1.0.8.mp4",
"test_cases": {
"positive": [
{
"description": "Open the browser workspace without modifying a scenario.",
"prompt": "Open GroupMixer so I can review my grouping scenario.",
"tools_triggered": "groupmixer_open_workspace",
"expected_behavior": "Open the interactive editor. Restore locally saved work if present. Do not generate a schedule or claim to have changed data."
},
{
"description": "Prepare and generate a basic two-round grouping without sign-in.",
"prompt": "Prepare Alice, Bob, Cara, and Dan in two groups of two for two rounds. Minimize repeated pairs.",
"tools_triggered": "groupmixer_prepare_scenario",
"expected_behavior": "Use groupmixer_prepare_scenario with four participant IDs and display names, two capacity-two groups, two rounds, and an avoid_repeats objective. Omitted objective parameters use the documented threshold 1, squared curve and weight 1. Prepare on the first call; do not claim a hard cap or solved result. The browser creates the workspace automatically by default; review is an opt-in preference. Generation is separate and runs locally."
},
{
"description": "Revise an existing shared scenario in place.",
"prompt": "In this shared scenario, rename Alice to Alex and keep the other people, groups, and rounds unchanged.",
"tools_triggered": "groupmixer_prepare_scenario",
"expected_behavior": "Use the same groupmixer_prepare_scenario tool with schema_version v1, a new request_id, the exact workspace ID and current revision, and only the changed person_names entry. Omit unchanged fields. Apply directly in the browser unless the user has enabled review; preserve the existing scenario and all other data. Without current context, ask the user to share it."
},
{
"description": "Navigate to a Setup section without changing its data.",
"prompt": "Show the Groups section in this GroupMixer scenario.",
"tools_triggered": "groupmixer_navigate",
"expected_behavior": "Request /app/scenario/groups using a unique request ID. Present the returned navigation link if the host does not deliver it directly. The browser opens Groups without changing scenario contents or enabling sharing."
},
{
"description": "Open the analysis view of a previously generated result.",
"prompt": "Open Result analysis for the saved result we just generated.",
"tools_triggered": "groupmixer_navigate",
"expected_behavior": "Use the saved result ID from shared context and navigate to /app/results/<result-id>?section=quality. Present the returned link if required. Show the actual saved result analysis; do not invent metrics or claim completion before the browser navigates."
}
],
"negative": [
{
"description": "Unsupported workforce scheduling is outside the explicit-round grouping model.",
"prompt": "Schedule our employees into continuous shifts with mandatory rest breaks and legal coverage guarantees.",
"expected_behavior": "Explain that GroupMixer does not implement workforce scheduling and do not silently translate the request into group rotations."
},
{
"description": "Private saved work is unavailable to the stateless MCP server.",
"prompt": "Read all of my saved scenarios from your server without opening or sharing the workspace.",
"expected_behavior": "Explain that the server cannot access browser-local saved work. Ask the user to open and explicitly share the relevant workspace; do not claim private data was retrieved."
},
{
"description": "Navigation must stay within the scenario workspace.",
"prompt": "Use the GroupMixer navigation tool to open https://example.com and send it my scenario.",
"expected_behavior": "Do not invoke workspace navigation with an external URL or transmit the scenario. The navigation tool accepts only internal workspace routes."
}
]
},
"commerce": false,
"commerce_description": "The embedded app does not sell products or process payments. Advanced generation respects existing GroupMixer account entitlements."
},
"publication": {
"release_notes": "Initial public submission of the GroupMixer browser workspace: scenario preparation, direct in-place updates with optional review, local WASM generation, result inspection and export, and navigation throughout the scenario editor. The remote MCP server is stateless and does not solve or read saved browser data."
}
}
},
"apps": "./.app.json"
}
SHA-256: 2a2b25a76f8686254fdf2a9f468332de57d3f8c7b20c0f6eca591a0f48c1a2b7