generating-subtasks

SteveBronder's avatarfrom SteveBronder

Converts approved design documents into agent-executable XML subtasks. Use after a design doc is approved and ready for implementation.

⭐0stars🔀0forks📁View on GitHub🕐Updated Dec 27, 2025

When & Why to Use This Skill

This Claude skill automates the transition from high-level software design to technical execution by transforming approved design documents into structured, agent-executable XML subtasks. It ensures that architectural plans are translated into actionable, machine-readable steps with defined scopes, implementation paths, and rigorous testing criteria, facilitating seamless collaboration between human architects and AI coding agents.

Use Cases

  • Automated Task Breakdown: Converting complex markdown design documents into granular, trackable XML tasks that AI agents can execute autonomously.
  • Standardizing Technical Handoffs: Ensuring every subtask follows a strict schema that includes reuse checks, interface definitions, and explicit acceptance criteria to maintain high code quality.
  • Agent Orchestration: Preparing structured input for agentic workflows, allowing AI agents to understand their specific boundaries, required test data, and implementation steps.
  • Project Progress Monitoring: Utilizing the generated XML structure to track the completion status of individual technical components and ensure all safety checks are met before deployment.
namegenerating-subtasks
descriptionConverts approved design documents into agent-executable XML subtasks. Use after a design doc is approved and ready for implementation.
Agent-executable subtasks go in `design-docs/agents/.xml`.

This file is generated ONLY after the user approves the human-readable subtasks in the main design doc. IMPORTANT: If you have the user do not have subtask written in the markdown design doc, do NOT generate this file. You must generate the subtasks in the markdown file first, then wait for user instructions before continuing with building the XML file. The XML file wraps all tasks in a root element and follows this schema:

<?xml version="1.0" encoding="UTF-8"?>
<design-doc-tasks>
  <metadata>
    <design-doc>YYYYMMDD-slug.md</design-doc>
    <created>YYYY-MM-DD</created>
    <approved-by>user</approved-by>
  </metadata>

  <task id="T1-slug" owner="unassigned" status="planned">
  <summary>One sentence objective.</summary>

  <scope>
    <in>Concrete inclusions.</in>
    <out>Concrete exclusions.</out>
  </scope>

  <reuse_check>
    <search_terms>
      <term>...</term>
    </search_terms>
    <existing_utilities>
      <candidate>path::symbol</candidate>
    </existing_utilities>
    <decision>reuse|extend|new</decision>
    <justification>Required if decision != reuse.</justification>
  </reuse_check>

  <interfaces>
    <exports>
      <function name="...">
        <signature>...</signature>
        <types>
          <param name="...">...</param>
          <returns>...</returns>
        </types>
        <invariants>
          <invariant>...</invariant>
        </invariants>
        <optionals>
          <allowed>false|true</allowed>
          <justification>Required if Optional/None exists.</justification>
        </optionals>
      </function>
    </exports>
  </interfaces>

  <implementation_plan>
    <step>...</step>
  </implementation_plan>

  <test_data>
    <required>true|false</required>
    <source>http|websocket|file|db|synthetic</source>
    <gap_analysis>What is missing vs required.</gap_analysis>
    <plan>Record/replay, generator, or harness.</plan>
    <fixture_paths>
      <path>tests/fixtures/...</path>
    </fixture_paths>
    <validation>
      <check>schema validation</check>
      <check>golden aggregates</check>
    </validation>
  </test_data>

  <tests>
    <add>
      <test_file>tests/.../test_*.py</test_file>
      <assertion>What this test proves.</assertion>
    </add>
    <update>
      <test_file>...</test_file>
      <change>...</change>
    </update>
  </tests>

  <commands>
    <cmd>...</cmd>
  </commands>

  <acceptance>
    <criterion>Binary "passes when ...".</criterion>
  </acceptance>
  <!-- IMPORTANT!!!: YOU MUST CHANGE task_completed_status TO TRUE WHEN THE TASK IS COMPLETE -->
  <task_completed_status>
  false
  </task_completed_status>
  <safety>
    <destructive_actions>false</destructive_actions>
    <notes>Any risk or confirmation requirements.</notes>
  </safety>
</task>

  <!-- Additional tasks follow the same structure -->
  <task id="T2-slug" owner="unassigned" status="planned">
    ...
  </task>

</design-doc-tasks>