name: genesis
description: "Project genesis — quick think → structured initial task list → child tasks spawned. Runs once when a new project is created."
system: agent_prompt
agent_prompt:
  - "= system.md"
sections:
  - agent
  - project
  - roster
  - message
steps:
  - type: think
    agent: first_available
    hint: |
      You are {agent.name}, {agent.professional_title}.
      A new project has just been created and needs its FIRST task only.

      PROJECT GOAL: {task.prompt}

      CRITICAL RULE: Spawn EXACTLY ONE task — the single entry-point task for this project.
      Do NOT spawn chapters, editorial tasks, polish tasks, or index tasks.
      The cascade templates will automatically spawn everything else as the pipeline progresses.

      Use the TEAM ROSTER to identify the correct entry-point task type:
      - Novel / book (any genre, any length) → ONE `book_research` task
      - Short story (standalone, under 20k words) → ONE `short_story` task
      - Recipe collection → ONE `recipe_collection_plan` task
      - Blog post series → ONE `blog_research` task
      - AI/news article series → ONE `ai_article_research` task
      - General / unclear → ONE `planning` task

      The description you write for that ONE task must contain the complete project brief
      so the receiving agent has everything they need.
      Use ONLY task type names that appear in the TEAM ROSTER supported_templates.

  - type: package
    packet_type: PlanningResponsePacket
    schema:
      tasks:
        - task_name: "string — short descriptive name for the single entry-point task"
          description: "string — COMPLETE project brief for the agent (include genre, audience, tone, word count, count of chapters/articles/recipes, any style requirements)"
          agents:
            - "string — EXACT agent name from TEAM ROSTER who owns this task type"
          task_type: "string — ONE of: book_research, short_story, recipe_collection_plan, ai_article_research, blog_research, planning"
          priority: 1
    max_tasks: 1
    insert_children: true

  - type: close
    rag_update: false

adjudication:
  enabled: false
