--- name: subagent-manager description: Create, inspect, update, and remove persistent local A2A sub-agents. Use when the user wants Boardware Genius to manage sub-agents with their own workspace under ~/.nanobot/workspace/agents/_agent, their own AGENTS.json and AGENTS.md, and local A2A visibility in the agent list. --- # Subagent Manager Use this skill when the user wants to create or manage a persistent local sub-agent. ## Required Rules - Persistent sub-agents must be created and updated only through `subagentctl.py` or `/api/subagents`. - Treat `~/.nanobot/workspace/agents/_agent/AGENTS.json` as the source of truth. - Do not create a sub-agent by manually editing `workspace/agents/registry.json`. - Do not create ad-hoc layouts such as `workspace/agents//agent.json`, `main.py`, or `README.md` as a substitute for a persistent sub-agent. - Do not write `protocol: "local"` registry records for persistent sub-agents. A valid persistent sub-agent is registered automatically as local A2A with `protocol: "a2a"`. - Prefer the bundled script over hand-editing JSON files, because the script keeps `AGENTS.json`, `AGENTS.md`, and the registry entry consistent. ## Workflow 1. Inspect the current sub-agents first: `uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py list` 2. Create or update the sub-agent with: `uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py create ...` 3. Verify the generated workspace: `~/.nanobot/workspace/agents/_agent/` 4. Verify the agent registry entry exists by checking `/api/agents` or `workspace/agents/registry.json`. 5. If the user wants custom skills, edit files under: `~/.nanobot/workspace/agents/_agent/skills/` ## Creation Standard When the user asks for a new specialized sub-agent, always: 1. Choose a stable kebab-case id. 2. Create it with `subagentctl.py create` or `POST /api/subagents`. 3. Confirm the generated workspace is `~/.nanobot/workspace/agents/_agent/`. 4. Confirm `AGENTS.json` exists in that directory. 5. Confirm the unified agent list shows the same id as a managed sub-agent entry. If the user asks for "an agent for X", interpret that as a persistent sub-agent when they want a reusable local worker with its own prompt, memory, skills, or MCP setup. ## Repair Standard If you find a malformed "sub-agent" created through the wrong path, repair it instead of reusing the broken layout: 1. Read any existing metadata that is useful, such as id, name, description, prompt, tags, aliases, or MCP config. 2. Recreate the agent through `subagentctl.py create` or `/api/subagents`. 3. Verify the new canonical directory `~/.nanobot/workspace/agents/_agent/AGENTS.json`. 4. Remove the malformed directory or stale registry entry only after the canonical sub-agent exists. Malformed examples include: - `workspace/agents//agent.json` - registry entries with `protocol: "local"` - agent folders that do not contain `AGENTS.json` ## Commands - Create: `uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py create --id research-agent --name "Research Agent" --description "Research-focused local A2A sub-agent" --system-prompt "Focus on research tasks and be concise."` - Show: `uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py show research-agent` - Delete: `uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py delete research-agent` - Set system prompt: `uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py set-system-prompt research-agent --text "New prompt"` - Add HTTP MCP: `uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py add-mcp-http research-agent --server-id docs --url http://127.0.0.1:9000/mcp` - Add stdio MCP: `uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py add-mcp-stdio research-agent --server-id localtools --command npx --arg -y --arg @modelcontextprotocol/server-filesystem` - Remove MCP: `uv run python nanobot/skills/subagent-manager/scripts/subagentctl.py remove-mcp research-agent --server-id docs` ## Notes - `AGENTS.json` is the machine-readable source of truth for the sub-agent. - `AGENTS.md` is regenerated from `AGENTS.json` when the script updates the sub-agent. - Builtin skills remain available automatically. Workspace-specific skills live under the sub-agent workspace `skills/` directory. - This MVP exposes the sub-agent through local A2A `message/send` only. - New sub-agents default to `delegation_mode="remote_a2a_only"`: they can delegate outward only to remote A2A agents, not to local fallback or plugin agents. - A valid persistent sub-agent should appear in both `/api/subagents` and `/api/agents`.