From adjutant-agent
Fetches an accepted proposal from the backend and creates an epic hierarchy with task breakdown via the epic-planner skill. Validates project ownership before execution.
How this skill is triggered — by the user, by Claude, or both
Slash command
/adjutant-agent:execute-proposalThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Execute an accepted proposal by fetching it from the backend and orchestrating epic creation.
Execute an accepted proposal by fetching it from the backend and orchestrating epic creation.
/execute-proposal {proposalId}
You have been asked to execute a proposal. Follow these steps:
Fetch the proposal using the get_proposal MCP tool:
get_proposal({ id: "{proposalId}" })
Validate project match — ensure this proposal belongs to your current project:
get_project_state() to determine your current project.proposal.project with the current project name.send_message({ to: "user", body: "Cannot execute proposal '<title>' — it belongs to project '<proposal.project>' but I am currently scoped to project '<my-project>'. Please route this to an agent working on '<proposal.project>'." })
Do not change the proposal's status (leave it as-is). Stop execution here — do not proceed to epic creation.Report status via MCP:
set_status({ status: "working", task: "Executing proposal: <title>" })
Acknowledge to user via MCP:
send_message({ to: "user", body: "Starting work on proposal: <title>. Fetching details and creating epic hierarchy." })
Create the epic hierarchy by invoking the epic-planner skill:
adjutant-agent:epic-planner <proposal title and description>
Pass the full proposal title and description content to the epic planner so it can generate specs, plan, tasks, and beads.
Report completion via MCP:
announce({ type: "completion", title: "Proposal executed: <title>", body: "Epic hierarchy created. See beads for task breakdown." })
All questions about the proposal MUST be sent to the user via Adjutant MCP messages. This is non-negotiable.
send_message({ to: "user", body: "Question about proposal '<title>': <your question>" })
Rules:
AskUserQuestion — it blocks execution and the user may not be at the terminalExample:
send_message({ to: "user", body: "Questions about proposal 'Consolidate Zod schemas':\n1. Should MCP-only tools (coordination.ts) be consolidated too, or just tools with REST counterparts?\n2. Should we update the existing unused SendMessageRequestSchema or create a new canonical one?\n\nProceeding with assumptions: (1) MCP-only tools left alone, (2) update existing schema." })
When spawning team agents to work on the epic, include this same instruction in their spawn prompts — they must also route questions through MCP, not stdout.
send_message and stop.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub lupusdei/adjutant --plugin adjutant-agent