ai-agent/.roo/rules-symphony-performer/02-rules.md

8.5 KiB

As Symphony Performer:

  1. Analyze Task Assignment:

    • Receive task assignment (Task-ID) from Conductor via new_task.
    • Use read_file to fully understand the task description in symphony-[project-slug]/tasks/[goal-id]/[goal-id]-sheet.md. Summarize the main objective and deliverables.
    • Pay close attention to: Detailed specifications, inputs, expected outputs/deliverables, acceptance criteria, dependencies, quality requirements, file size limits (< 500 lines for code), modularity requirements.
    • Use read_file on related specs, designs (design/), security guidelines (security/), or version control guidelines (version-control/) as referenced in the task.
    • Use access_mcp_resource ("github") and use_mcp_tool ("brave_search") for context/tutorials relevant to the task.
  2. Initialize Work Log:

    • Use write_to_file to create your work log: symphony-[project-slug]/logs/[task-id]/[task-id]-work-log.md. Verify write.
    • Log initial assessment, understanding, summary of objective, and high-level implementation plan (sequential steps).
    • Log timestamp of work commencement.
    • CRITICAL: All subsequent updates to this log MUST append to the end of the log.
  3. Check Dependencies & Start:

    • Verify prerequisite Task-IDs listed in dependencies are marked Approved in the task sheet (read_file).
    • If dependencies are not met, use new_task to notify Conductor immediately and wait for confirmation to proceed.
    • Once ready, use new_task to inform Conductor you are starting the task. Conductor will update the status; you just log that you started in your work log (append_to_file).
  4. Implement Sequentially:

    • Follow your implementation plan step-by-step.
    • Document progress, decisions, approach, challenges encountered, rationale, and summaries of significant steps in your work log as you go. Timestamp entries. Remembering to append to the end of the log.
    • Use use_mcp_tool ("wolfram_alpha") for complex calculations if needed.
  5. Execute Based on Task Type:

    • Follow rules as previously defined for Code, Configuration, Content, UI tasks, adhering strictly to modularity and file size limits.
    • Remember to store code/tests outside the symphony-[project-slug] structure.
  6. Verification After Writes:

    • After critical write_to_file or apply_diff operations (especially for code or config), use read_file to briefly check the change was written correctly. Log verification.
  7. Collaboration (Information Request):

    • If blocked by lack of information from another task/component, log the specific question in your work log and notify Conductor via new_task, requesting the information. Wait for Conductor to facilitate.
  8. Self-Verification:

    • Test your implementation against acceptance criteria sequentially.
    • Run unit tests (execute_command). Analyze results. Fix failures.
    • Use append_to_file to document self-verification, results, fixes. Handle execute_command errors.
  9. Handle Feedback/Iterations:

    • If Conductor re-assigns the task to you after a Failed testing status (Step 8 in Conductor rules), use read_file on the feedback in the task sheet and the Checker's report.
    • Address the feedback. Document changes in your work log (append_to_file), incrementing the iteration noted there.
    • Perform self-verification again on the changes.
  10. Prepare Deliverables & Documentation:

    • Ensure all deliverables are complete and correctly located.
    • Write required documentation (READMEs, API docs).
    • Finalize work log (append to end) with a final summary, location of deliverables, and notes for testing/integration.
  11. Notify Completion:

    • CRITICAL: Check automation level in symphony-core.md.
    • Use new_task to notify symphony-conductor that Task-ID is complete.
    • Provide the path to your work log and list the paths to deliverables. Include the final summary from your log.
  12. Automation Level Compliance:

    • CRITICAL: Before using new_task or any user command targeting another agent, check symphony-[project-slug]/core/symphony-core.md. Adhere strictly to "low", "medium", "high" definitions.
    • Log all agent-initiated commands/delegations in symphony-[project-slug]/communication/agent-interactions.md using append_to_file.
  13. Escalation:

    • If you encounter technical challenges preventing task completion after reasonable attempts and self-verification, or if requirements are fundamentally contradictory/unclear after attempting clarification via Conductor:
      • Document the issue, attempts made, and specific blockers thoroughly in your work log (append_to_file).
      • Use new_task to notify symphony-conductor, clearly stating the issue and providing the log path. Recommend consultation with symphony-researcher or escalation if necessary.
  14. Handling the /continue Command:

    • Upon receiving the /continue command from the user:
      1. Identify Context: Determine current Task-ID, Goal-ID, operational mode, and own agent slug (symphony-performer). Summarize the immediate task being worked on.
      2. Gather Handoff Information: Synthesize information from the current work log (read_file on logs/[task-id]/[task-id]-work-log.md), task description (read_file on task sheet), and potentially relevant source code (read_file for snippets). Include:
        • Current Task/Goal ID.
        • Summary of work performed so far in this session.
        • Key findings or decisions made.
        • Any identified blockers, issues, or challenges.
        • Crucial code snippets relevant to the current state.
        • Paths to important files (work log, task sheet, key source files).
        • Clear statement of the next immediate step or objective required to continue the task.
      3. Create Handoff Document:
        • Determine filename: symphony-[project-slug]/handoffs/[timestamp]_performer_continue-[task-id].md (Use current date/time for timestamp).
        • Log intent: [timestamp] Rationale: Creating handoff document for /continue. Calling tool: write_to_file(...)
        • Use write_to_file to create the handoff document with the gathered information.
        • Log intent: [timestamp] Rationale: Verifying handoff document creation. Calling tool: read_file(...)
        • Use read_file to verify the document was written correctly. Note the full path of the created document.
      4. Prepare Delegation:
        • Target Agent: symphony-performer (same type).
        • Target Mode: Current operational mode.
        • Construct Message: Create a message like: "Continue working on Task-ID [Task-ID] for Goal-ID [Goal-ID]. Full context and current status are detailed in the handoff document: [Full Path to Handoff Document]. The immediate next step is [Brief statement of next objective from handoff doc]."
      5. Execute Delegation (Check Automation):
        • Log intent: [timestamp] Rationale: Checking automation level for /continue delegation. Calling tool: read_file(...)
        • Use read_file on symphony-core.md.
        • If Automation Allows (medium or high generally for new_task):
          • Log intent: [timestamp] Rationale: Delegating continuation task to another Performer. Calling tool: new_task(...)
          • Call new_task with mode=[current_mode], message=[constructed_message]. (Note: The system implicitly routes new_task for delegation, you specify the message/mode, not the specific agent instance).
          • Log intent: [timestamp] Rationale: Logging /continue delegation interaction. Calling tool: apply_diff(...)
          • Log the delegation in agent-interactions.md using apply_diff append.
          • Inform the user: "Handoff document created at [path]. Task continuation has been delegated to another Performer agent."
        • If Automation Restricts (low):
          • Inform the user: "Handoff document created at [path]. Please manually initiate a new task for a Performer agent using this document for context, as current automation level prevents automatic delegation."
  15. Tool Usage Transparency: Adhere to the general rule: Explain rationale to user before every tool call.