[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PERZSYQJDEEQ4XM8GPDTVX":3,"skill-same:01M6PERZSYQJDEEQ4XM8GPDTVX":55},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":6,"ownerHtmlUrl":39,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M6PERZSYQJDEEQ4XM8GPDTVX","interactive-menu",null,"Pattern for presenting numbered choices to the user in OMP's conversational TUI","r3dlex\u002Foh-my-githubcopilot","r3dlex","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F291373160?v=4","01M6PEFNGGBVB7SHAPWXFFX933","01M6PEFNMNKPP8K3C881MDS722",1,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fr3dlex\u002Foh-my-githubcopilot\u002Fblob\u002Fmain\u002Fskills\u002Finteractive-menu\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27],"interactive","interactive menu","tui","user","selection","pattern","commands","omp","false","for","2026-11-10 10:12:30",false,"---\nname: interactive-menu\ndescription: Pattern for presenting numbered choices to the user in OMP's conversational TUI\ninvocation: none (referenced by commands that need selection)\nautoinvoke: false\n---\n# Skill: Interactive Menu\n\n## Metadata\n\n| Field | Value |\n|-------|-------|\n| **ID** | `interactive-menu` |\n| **Keywords** | `interactive-menu:`, `\u002Finteractive-menu` |\n| **Tier** | UI Pattern |\n| **Source** | `src\u002Fskills\u002Finteractive-menu.mts` |\n\n## Description\n\nOMP does not have a native menu widget. Use this conversational pattern when a command needs user selection.\n\n## Interface\n\n```typescript\ninterface SkillInput {\n  trigger: string;\n  args: string[];\n}\n\ninterface SkillOutput {\n  status: \"ok\" | \"error\";\n  message: string;\n}\n\nexport async function activate(input: SkillInput): Promise\u003CSkillOutput>\nexport function deactivate(): void\n```\n\n## Implementation\n\nSpawns `bin\u002Fomp.mjs interactive-menu [args]`. No persistent resources are maintained.\n\n## Format\n\n```\n{Title}\n\n{Optional context line}\n\n  1. {Option A}  -- {description}\n  2. {Option B}  -- {description}\n  3. {Option C}  -- {description}\n  4. Type something else\n\nYour choice:\n```\n\n## Rules\n\n1. Present options as a numbered list. Keep descriptions to one line each.\n2. Always include a \"Type something else\" option as the last item.\n3. Wait for user input. Do not assume a choice.\n4. Accept the number (\"1\") or the option name (\"graphwiki\") as valid input.\n5. If the user types something not in the list (via the last option), validate it against allowed values. If invalid, re-present the menu with an error message.\n6. After selection, confirm what was set: \"Set graph.provider to graphwiki (local).\"\n7. Maximum 6 options. If more choices exist, group them or paginate.\n8. Do not use emoji, decorative borders, or ASCII art. Clean text only.\n\n## Example: Graph Provider\n\n```\nGraph Provider\n\nCurrent: graphwiki (from local config)\n\n  1. graphwiki   -- TypeScript knowledge graph with wiki compilation\n  2. graphify    -- Python knowledge graph with community detection\n  3. none        -- Disable graph context\n  4. Type something else\n\nYour choice:\n```\n\nUser types: 2\n\nAgent responds: \"Set graph.provider to graphify (local). Install graphify if not already: pip install graphify\"\n\n## Example: Orchestration Mode\n\n```\nOrchestration Mode\n\nCurrent: ralph\n\n  1. ralph       -- Persistence loop with architect verification\n  2. autopilot   -- Full autonomous pipeline\n  3. ultrawork   -- Parallel execution\n  4. ultraqa     -- QA cycling\n  5. Type something else\n\nYour choice:\n```\n","# Skill: Interactive Menu\n\n## Metadata\n\n| Field | Value |\n|-------|-------|\n| **ID** | `interactive-menu` |\n| **Keywords** | `interactive-menu:`, `\u002Finteractive-menu` |\n| **Tier** | UI Pattern |\n| **Source** | `src\u002Fskills\u002Finteractive-menu.mts` |\n\n## Description\n\nOMP does not have a native menu widget. Use this conversational pattern when a command needs user selection.\n\n## Interface\n\n```typescript\ninterface SkillInput {\n  trigger: string;\n  args: string[];\n}\n\ninterface SkillOutput {\n  status: \"ok\" | \"error\";\n  message: string;\n}\n\nexport async function activate(input: SkillInput): Promise\u003CSkillOutput>\nexport function deactivate(): void\n```\n\n## Implementation\n\nSpawns `bin\u002Fomp.mjs interactive-menu [args]`. No persistent resources are maintained.\n\n## Format\n\n```\n{Title}\n\n{Optional context line}\n\n  1. {Option A}  -- {description}\n  2. {Option B}  -- {description}\n  3. {Option C}  -- {description}\n  4. Type something else\n\nYour choice:\n```\n\n## Rules\n\n1. Present options as a numbered list. Keep descriptions to one line each.\n2. Always include a \"Type something else\" option as the last item.\n3. Wait for user input. Do not assume a choice.\n4. Accept the number (\"1\") or the option name (\"graphwiki\") as valid input.\n5. If the user types something not in the list (via the last option), validate it against allowed values. If invalid, re-present the menu with an error message.\n6. After selection, confirm what was set: \"Set graph.provider to graphwiki (local).\"\n7. Maximum 6 options. If more choices exist, group them or paginate.\n8. Do not use emoji, decorative borders, or ASCII art. Clean text only.\n\n## Example: Graph Provider\n\n```\nGraph Provider\n\nCurrent: graphwiki (from local config)\n\n  1. graphwiki   -- TypeScript knowledge graph with wiki compilation\n  2. graphify    -- Python knowledge graph with community detection\n  3. none        -- Disable graph context\n  4. Type something else\n\nYour choice:\n```\n\nUser types: 2\n\nAgent responds: \"Set graph.provider to graphify (local). Install graphify if not already: pip install graphify\"\n\n## Example: Orchestration Mode\n\n```\nOrchestration Mode\n\nCurrent: ralph\n\n  1. ralph       -- Persistence loop with architect verification\n  2. autopilot   -- Full autonomous pipeline\n  3. ultrawork   -- Parallel execution\n  4. ultraqa     -- QA cycling\n  5. Type something else\n\nYour choice:\n```\n",{"name":5,"autoinvoke":29,"invocation":33,"description":7},"none (referenced by commands that need selection)","main","55294682936bc69473eba70e93ffa88ede018e81","skills\u002Finteractive-menu",0,"https:\u002F\u002Fgithub.com\u002Fr3dlex\u002Foh-my-githubcopilot","https:\u002F\u002Fgithub.com\u002Fr3dlex","2026-10-31 18:57:35",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add r3dlex\u002Foh-my-githubcopilot --skill interactive-menu",{"tool":47,"command":48},"bunx","bunx skills add r3dlex\u002Foh-my-githubcopilot --skill interactive-menu",{"tool":50,"command":51},"pnpm","pnpm dlx skills add r3dlex\u002Foh-my-githubcopilot --skill interactive-menu","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fr3dlex\u002Foh-my-githubcopilot\u002Fblob\u002Fmain\u002Fskills\u002Finteractive-menu\u002FSKILL.md",true,[],[56,62,68,74,80,88],{"skillNo":57,"name":58,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":61,"publishedAt":28},"01M6PF2CTFS0AEXQXF2NFYT8J2","wiki","https:\u002F\u002Fgithub.com\u002Fr3dlex\u002Foh-my-githubcopilot\u002Fblob\u002Fmain\u002Fvscode-omp\u002Fresources\u002Ftemplates\u002F.copilot\u002Fskills\u002Fwiki\u002FSKILL.md",[],[58],{"skillNo":63,"name":64,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":28},"01M6PF2BFXJ97M6NKH7N42XZVZ","ultrawork","https:\u002F\u002Fgithub.com\u002Fr3dlex\u002Foh-my-githubcopilot\u002Fblob\u002Fmain\u002Fvscode-omp\u002Fresources\u002Ftemplates\u002F.copilot\u002Fskills\u002Fultrawork\u002FSKILL.md",[],[64],{"skillNo":69,"name":70,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":28},"01M6PF2A38Y1CE5BVJ5HMTMBP6","trace","https:\u002F\u002Fgithub.com\u002Fr3dlex\u002Foh-my-githubcopilot\u002Fblob\u002Fmain\u002Fvscode-omp\u002Fresources\u002Ftemplates\u002F.copilot\u002Fskills\u002Ftrace\u002FSKILL.md",[],[70],{"skillNo":75,"name":76,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":28},"01M6PF28P7S19AK5XJA41WS9V8","team","https:\u002F\u002Fgithub.com\u002Fr3dlex\u002Foh-my-githubcopilot\u002Fblob\u002Fmain\u002Fvscode-omp\u002Fresources\u002Ftemplates\u002F.copilot\u002Fskills\u002Fteam\u002FSKILL.md",[],[76],{"skillNo":81,"name":82,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":28},"01M6PF278EADT8W3EWDYA3C2H0","swe-bench","https:\u002F\u002Fgithub.com\u002Fr3dlex\u002Foh-my-githubcopilot\u002Fblob\u002Fmain\u002Fvscode-omp\u002Fresources\u002Ftemplates\u002F.copilot\u002Fskills\u002Fswe-bench\u002FSKILL.md",[],[86,87],"SWE","swe bench",{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":28},"01M6PF25XW1TMP5Z1N89ZVJQDY","swarm","https:\u002F\u002Fgithub.com\u002Fr3dlex\u002Foh-my-githubcopilot\u002Fblob\u002Fmain\u002Fvscode-omp\u002Fresources\u002Ftemplates\u002F.copilot\u002Fskills\u002Fswarm\u002FSKILL.md",[],[90]]