From mddesign
Turns a plan phase into a PhaseSpec v1 and dispatches it to a specialist subagent via the Agent tool. Subagent reads files itself, returns a structured result, the result is logged into progress.md. Markdown is the shared state; no in-memory shared store across agents.
npx claudepluginhub othmanadi/mddesign --plugin mddesignThis skill is limited to using the following tools:
Subagent dispatch arm. The PhaseSpec v1 contract is the only handoff format used between parent and child agents.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
Subagent dispatch arm. The PhaseSpec v1 contract is the only handoff format used between parent and child agents.
phase_id: <stable id, used as filename prefix and progress.md anchor>
parent_plan_ref: <pointer to task_plan.md#phase-N>
goal: <one sentence>
done_when: # testable exit criteria, no goalpost moving
- <criterion 1>
- <criterion 2>
inputs:
files: [<read-only file refs>]
memory_keys: [<keys for memory-layer recall>]
tools_allowed: [<list>]
tools_denied: [<list>]
budget:
max_tool_calls: <int>
max_wall_seconds: <int>
hitl_checkpoints: [<named checkpoint strings the child surfaces>]
return_contract:
format: markdown+frontmatter
fields: [summary, artifacts, open_questions, next_phase_hint]
Six load-bearing properties:
parent_plan_ref is a pointer (file path with anchor), not a copy of the phase text. The child reads the file itself.done_when is testable. Without it, completion is hallucinatable.tools_allowed and tools_denied map onto the Claude Code permission model and any other framework's permission story.hitl_checkpoints are named strings the child surfaces by printing HITL_CHECKPOINT: <name> to stdout.return_contract forces structured output. The child returns markdown with frontmatter; the parent parses it deterministically.phase_id doubles as the filename prefix for any artifacts the child writes.Each is defined as agents/<name>.md in this plugin.
| Subagent | When to pick |
|---|---|
planner | A phase exists in task_plan.md but has no PhaseSpec yet. The planner drafts one. |
executor | Default. A PhaseSpec exists; the work is straightforward; one specialist runs it end to end. |
reviewer | Auto-approve mode is on; we need a surrogate human to check the executor's return against done_when. |
memory-keeper | Stop hook fired; we need to classify session output into scratch/WHERE/WHY. |
design-archeologist | /mddesign:harvest invoked; long-running codebase scan needed. |
/mddesign:team dispatch <phase_id> [--agent <name>]task_plan.md.phase_id (case-insensitive).--agent <name> was passed, use it.design-archeologist if /mddesign:harvest-shaped, else executor. All others default to executor.goal from the phase title or first bullet.done_when from the phase's "Status / Done When / Acceptance" section if it exists, else infer from the bullets and ask the user to confirm.inputs.files to [task_plan.md, findings.md] plus any files the phase mentions.tools_allowed to a sensible subset based on the phase (default: Read Write Edit Bash Glob Grep).budget defaults: max_tool_calls: 80, max_wall_seconds: 600.hitl_checkpoints to [before_commit, before_destructive_edit] plus phase-specific ones.Agent tool invocation (named checkpoint: before_subagent_dispatch) and requires approval.Agent tool with subagent_type: <chosen subagent> and a prompt that contains:
HITL_CHECKPOINT: <name> and stop."summary, artifacts, open_questions, next_phase_hint).Append under ### Phase <phase_id> Result:
### Phase <phase_id> Result
**Subagent:** <name>
**Status:** complete | partial | blocked
**Wall time:** <seconds>
**Tool calls used:** <int>
#### Summary
<from return.summary>
#### Artifacts
<from return.artifacts>
#### Open questions
<from return.open_questions>
#### Next phase hint
<from return.next_phase_hint>
reviewer with the executor's return + the PhaseSpec.approve, mark phase as complete in progress.md.reject, append the reason to progress.md and surface to user.escalate, halt and ask user.task_plan.md directly. Only this skill writes to progress.md, and only under ### Phase <id> Result.before_subagent_dispatch HITL gate.