Agent Self-Customization
nanocoai/nanoclaw
A decision tree for an agent changing its own setup: edit memory directly, request approval for packages and MCP servers, and delegate code edits to a builder agent.
Shows a question as a modal in the interface to clarify a task, collect a preference or get approval, since the user cannot see terminal output.
$ npx skills add MemTensor/MemOS --skill ask-user-question -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install MemTensor/MemOS ask-user-question --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/MemTensor/MemOS.git skills-src && mkdir -p .claude/skills && cp -r skills-src/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question .claude/skills/ask-user-question && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ask-user-question" agent skill from https://github.com/MemTensor/MemOS/tree/main/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question into .claude/skills/ask-user-question/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ask-user-question", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/MemTensor/MemOS/tree/main/apps/openwork-memos-integration/apps/desktop/skills/ask-user-questionType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add MemTensor/MemOS --skill ask-user-question -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install MemTensor/MemOS ask-user-question --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MemTensor/MemOS.git skills-src && mkdir -p .agents/skills && cp -r skills-src/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question .agents/skills/ask-user-question && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ask-user-question" agent skill from https://github.com/MemTensor/MemOS/tree/main/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question into .agents/skills/ask-user-question/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ask-user-question", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add MemTensor/MemOS --skill ask-user-question -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install MemTensor/MemOS ask-user-question --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MemTensor/MemOS.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question .cursor/skills/ask-user-question && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ask-user-question" agent skill from https://github.com/MemTensor/MemOS/tree/main/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question into .cursor/skills/ask-user-question/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ask-user-question", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/MemTensor/MemOS.git --path apps/openwork-memos-integration/apps/desktop/skills/ask-user-question--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add MemTensor/MemOS --skill ask-user-question -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install MemTensor/MemOS ask-user-question --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MemTensor/MemOS.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question .gemini/skills/ask-user-question && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ask-user-question" agent skill from https://github.com/MemTensor/MemOS/tree/main/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question into .gemini/skills/ask-user-question/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ask-user-question", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install MemTensor/MemOS ask-user-questionInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add MemTensor/MemOS --skill ask-user-question -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/MemTensor/MemOS.git skills-src && mkdir -p .github/skills && cp -r skills-src/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question .github/skills/ask-user-question && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ask-user-question" agent skill from https://github.com/MemTensor/MemOS/tree/main/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question into .github/skills/ask-user-question/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ask-user-question", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add MemTensor/MemOS --skill ask-user-question -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install MemTensor/MemOS ask-user-question --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MemTensor/MemOS.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question .opencode/skills/ask-user-question && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ask-user-question" agent skill from https://github.com/MemTensor/MemOS/tree/main/apps/openwork-memos-integration/apps/desktop/skills/ask-user-question into .opencode/skills/ask-user-question/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ask-user-question", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ask-user-questionShows a question as a modal in the interface to clarify a task, collect a preference or get approval, since the user cannot see terminal output.
This MCP tool is how the agent asks you something when your interface does not show terminal text. Writing a question as plain output does nothing, so the agent has to call the tool, which opens a modal in the UI and returns your answer.
Each call takes a list of questions. A question has its text, an optional short header of up to 12 characters shown as the modal title, optional choices (two to four are recommended) and a multiSelect flag that defaults to false. Adding an option labeled Other shows a text field, and the reply then arrives as typed text that the agent must handle rather than treating it as a preset choice. The result states your selection, your custom text, or that you declined to answer. The folder is a small TypeScript package.
Read from SKILL.md and the folder at commit a7367d0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (TypeScript), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ask User Question loads about 1k tokens when it runs. Until then it costs about 55 tokens; SKILL.md has 289 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from MemTensor/MemOS at commit a7367d0, republished under its Apache-2.0 licence (© MemTensor). 289 words, ~1,019 tokens.
.claude/skills/ask-user-question/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Use this MCP tool to ask users questions and get their responses. This is the ONLY way to communicate with the user - they cannot see CLI/terminal output.
The user CANNOT see your text output or CLI prompts!
If you write "Let me ask you..." and then just output text - THE USER WILL NOT SEE IT. You MUST call this tool to display a modal in the UI.
{
"questions": [{
"question": "Your question to the user",
"header": "Short label (max 12 chars)",
"options": [
{ "label": "Option 1", "description": "What this does" },
{ "label": "Option 2", "description": "What this does" }
],
"multiSelect": false
}]
}question (required): The question text to displayheader (optional): Short category label, shown as modal title (max 12 chars)options (optional): Array of selectable choices (2-4 recommended)multiSelect (optional): Allow selecting multiple options (default: false)Custom text input: To allow users to type their own response, include an option with label "Other" (case-insensitive). When selected, the UI shows a text input field.
{ "label": "Other", "description": "Type your own response" }Important: When "Other" is selected, the response will be User responded: [their text] instead of User selected: Other. You must wait for and handle this text response - do NOT proceed as if they selected a predefined option.
AskUserQuestion({
"questions": [{
"question": "How would you like to organize your Downloads folder?",
"header": "Organize",
"options": [
{ "label": "By file type", "description": "Group into Documents, Images, Videos, etc." },
{ "label": "By date", "description": "Group by month/year" },
{ "label": "By project", "description": "You'll help me name project folders" }
]
}]
})AskUserQuestion({
"questions": [{
"question": "Delete these 15 duplicate files?",
"header": "Confirm",
"options": [
{ "label": "Delete all", "description": "Remove all 15 duplicates" },
{ "label": "Review first", "description": "Show me the list before deleting" },
{ "label": "Cancel", "description": "Don't delete anything" }
]
}]
})AskUserQuestion({
"questions": [{
"question": "Should I proceed with sending this email?",
"header": "Send email",
"options": [
{ "label": "Send", "description": "Send the email now" },
{ "label": "Cancel", "description": "Don't send" }
]
}]
})The tool returns the user's selection:
User selected: By file type - Single selectionUser selected: Option A, Option B - Multiple selections (if multiSelect: true)User responded: [custom text] - If user typed a custom responseUser declined to answer the question. - If user dismissed the modalWRONG (user won't see this):
I'll help organize your files. How would you like them organized?
- By type
- By date
- By projectCORRECT (user will see a modal):
AskUserQuestion({
"questions": [{
"question": "How would you like your files organized?",
"options": [
{ "label": "By type" },
{ "label": "By date" },
{ "label": "By project" }
]
}]
})© MemTensor, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files in apps/openwork-memos-integration/apps/desktop/skills/ask-user-question of MemTensor/MemOS.
Open the folder on GitHubat commit a7367d0
Ask User Question next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ask User Question this skillMemTensor/MemOS | 12k | — | ~1k | Automated safety check: Pass | Apache-2.0 | |
| Agent Self-Customizationnanocoai/nanoclaw | 31k | 1 repos | ~1.5k | Automated safety check: Notes | MIT | |
| Linggenlinggen/linggen-memory | 109 | — | ~8.6k | Automated safety check: Notes | MIT-0 | |
| Ouroboros Command ReferenceQ00/ouroboros | 6.2k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Fewer Permission Promptsasgeirtj/system_prompts_leaks | 69k | — | ~1.9k | Automated safety check: Pass | CC0-1.0 | |
| Dutis macOS Handler Managertsonglew/dutis | 251 | — | ~1.2k | Automated safety check: Pass | None |
nanocoai/nanoclaw
A decision tree for an agent changing its own setup: edit memory directly, request approval for packages and MCP servers, and delegate code edits to a builder agent.
linggen/linggen-memory
Linggen — durable cross-host memory plus browser control, over two local MCP servers: ling-mem for memory, the Linggen engine for browser, X and agents.
Q00/ouroboros
Reference guide to the Ouroboros commands and agents, covering interviews, seed specs, evaluation, lateral-thinking personas and the evolutionary loop.
asgeirtj/system_prompts_leaks
Scan your transcripts for common read-only Bash and MCP tool calls, then add a prioritized allowlist to project .claude/settings.json to reduce permission prompts.
tsonglew/dutis
Inspects, plans, changes and rolls back macOS default app handlers for file types, MIME types and URL schemes through Dutis, with approval before any write.
luochang212/dive-into-langgraph
A Chinese-language guide and reference for building agents with LangGraph 1.0, from a first ReAct agent through middleware, memory, MCP, RAG and web search.
MemTensor/MemOS
Automates a real browser through short TypeScript scripts that keep page state between runs, for navigating, filling forms, taking screenshots and extracting data.
MemTensor/MemOS
Controls a browser through BrowserWing's local HTTP API: navigation, clicks, typing, data extraction, accessibility snapshots, screenshots and batch operations.
MemTensor/MemOS
Installs, configures and operates BrowserWing, a browser automation platform, covering Chrome setup, LLM provider configuration, and creating or running automation scripts.
MemTensor/MemOS
Enforces explicit user permission before any file deletion. Activates when you're about to use rm, unlink, fs.rm, or any operation that removes files from…
MemTensor/MemOS
Explains when to call MemOS's own memory tools to search past conversations, after the automatic per-turn recall hook comes up empty.
Works with
Categories
Shows a question as a modal in the interface to clarify a task, collect a preference or get approval, since the user cannot see terminal output. This MCP tool is how the agent asks you something when your interface does not show terminal text. Writing a question as plain output does nothing, so the agent has to call the tool, which opens a modal in the UI and returns your answer.
Ask User Question fits situations like: clarifying an ambiguous task before the agent starts work; asking how you want a folder of files organized; confirming a destructive step, such as deleting duplicate files, before it runs; getting approval for sensitive actions like sending a message.
Run `npx skills add MemTensor/MemOS --skill ask-user-question -a claude-code`. Or copy the skill folder (apps/openwork-memos-integration/apps/desktop/skills/ask-user-question in MemTensor/MemOS) into .claude/skills/ask-user-question in your project. Claude Code loads it when a task matches its description.
Run `npx skills add MemTensor/MemOS --skill ask-user-question -a codex`. Or copy the skill folder (apps/openwork-memos-integration/apps/desktop/skills/ask-user-question in MemTensor/MemOS) into .agents/skills/ask-user-question in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add MemTensor/MemOS --skill ask-user-question -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ask-user-question, .gemini/skills/ask-user-question, .github/skills/ask-user-question and .opencode/skills/ask-user-question in your project.
Going by SKILL.md and its folder, Ask User Question needs TypeScript for the scripts in its folder. Our summary lists: An app that can display the question modal for the MCP tool.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Ask User Question is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1k tokens (SKILL.md is roughly 4.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Ask User Question: Agent Self-Customization (nanocoai/nanoclaw, 31k stars), Linggen (linggen/linggen-memory, 109 stars), Ouroboros Command Reference (Q00/ouroboros, 6.2k stars) and Fewer Permission Prompts (asgeirtj/system_prompts_leaks, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
MemTensor (a GitHub organization) maintains it in MemTensor/MemOS, which has 11,738 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on September 29, 2026.
Source: MemTensor/MemOS on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.