Files
luzia/AUTONOMOUS-AGENT-TEMPLATES.md
admin ec33ac1936 Refactor cockpit to use DockerTmuxController pattern
Based on claude-code-tools TmuxCLIController, this refactor:

- Added DockerTmuxController class for robust tmux session management
- Implements send_keys() with configurable delay_enter
- Implements capture_pane() for output retrieval
- Implements wait_for_prompt() for pattern-based completion detection
- Implements wait_for_idle() for content-hash-based idle detection
- Implements wait_for_shell_prompt() for shell prompt detection

Also includes workflow improvements:
- Pre-task git snapshot before agent execution
- Post-task commit protocol in agent guidelines

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 10:42:16 -03:00

14 KiB

Autonomous Agent Implementation Templates

Copy-Paste Ready Code Examples

Date: 2026-01-09 Version: 1.0 Status: Ready for production use


Template 1: Simple Task Agent (Read-Only Analysis)

Use Case

Analyze code and report metrics without modifying anything.

Prompt Template

project = "musica"
task = """
Analyze the codebase structure in /workspace:

1. Count TypeScript files: find /workspace -name "*.ts" | wc -l
2. Count lines of code: find /workspace -name "*.ts" -exec wc -l {} + | tail -1
3. Find largest files: find /workspace -name "*.ts" -exec wc -l {} + | sort -rn | head -5
4. Check dependencies: npm list 2>/dev/null | head -20

Save results to /workspace/code-metrics.json with format:
{
  "ts_files": number,
  "total_loc": number,
  "largest_files": [
    {"file": string, "loc": number},
    ...
  ],
  "dependencies_count": number,
  "analysis_timestamp": ISO8601_string
}

Success: File exists with all required fields.
Failure: File missing or incomplete.
Exit 0 on success, exit 1 on failure.
Do NOT attempt to install or modify anything.
"""

# Spawn agent
job_id = spawn_claude_agent(project, task, context="", config=config)

Expected Output

{
  "ts_files": 42,
  "total_loc": 12847,
  "largest_files": [
    {"file": "src/core/processor.ts", "loc": 843},
    {"file": "src/index.ts", "loc": 521},
    {"file": "src/api/routes.ts", "loc": 472}
  ],
  "dependencies_count": 18,
  "analysis_timestamp": "2026-01-09T15:30:45Z"
}

Template 2: Test Execution Agent (Run & Report)

Use Case

Run test suite and report results with metrics.

Prompt Template

project = "musica"
task = """
Run the test suite and generate a comprehensive report.

Steps:
1. npm install (if node_modules missing)
2. npm test -- --json=test-results.json
3. Parse test-results.json
4. Create test-report.json with:
{
  "total_tests": number,
  "passed": number,
  "failed": number,
  "skipped": number,
  "duration_ms": number,
  "success_rate": number (0-100),
  "failed_tests": [
    {
      "name": string,
      "error": string,
      "file": string
    }
  ],
  "timestamp": ISO8601_string
}

Success criteria:
- test-report.json exists
- All required fields present
- success_rate = (passed / (passed + failed)) * 100

Exit codes:
- Exit 0 if success_rate == 100 (all tests passed)
- Exit 1 if success_rate < 100 (some tests failed)
- Exit 2 if tests won't run (no npm, no tests, etc)

Do NOT:
- Attempt to fix failing tests
- Skip any tests
- Modify test files
"""

job_id = spawn_claude_agent(project, task, context="", config=config)

Expected Output

{
  "total_tests": 48,
  "passed": 46,
  "failed": 2,
  "skipped": 0,
  "duration_ms": 3241,
  "success_rate": 95.83,
  "failed_tests": [
    {
      "name": "should handle edge case for empty array",
      "error": "Expected undefined to equal null",
      "file": "tests/processor.test.ts"
    },
    {
      "name": "should validate user input",
      "error": "Timeout: test exceeded 5000ms",
      "file": "tests/validation.test.ts"
    }
  ],
  "timestamp": "2026-01-09T15:32:18Z"
}

Template 3: Code Modification Agent (Implement & Verify)

Use Case

Modify code to meet specifications and verify changes work.

Prompt Template

project = "musica"
task = """
Add TypeScript strict mode to the codebase.

Requirements:
1. Set "strict": true in /workspace/tsconfig.json
2. Fix all TypeScript errors that result
3. Ensure npm run build succeeds with no errors
4. Verify tests still pass: npm test -> exit 0

For TypeScript errors:
- Add explicit type annotations
- Fix any typing issues
- Do NOT use 'any' type
- Do NOT use 'ignore comments

Changes allowed:
- tsconfig.json: enable strict mode
- .ts files: add type annotations, fix typing

Changes NOT allowed:
- package.json (don't add packages)
- .test.ts files (don't modify tests)
- database schema
- API contracts

Success criteria:
1. tsconfig.json has "strict": true
2. npm run build exits with 0 (no TypeScript errors)
3. npm test exits with 0 (no test failures)
4. No 'any' types in code

Document changes in /workspace/STRICT_MODE_CHANGES.md:
- Files modified: list them
- Breaking changes: none expected
- Type annotations added: count

Exit 0 on complete success.
Exit 1 if any requirement not met.
Exit 2 if unrecoverable (existing errors, etc).
"""

job_id = spawn_claude_agent(project, task, context="", config=config)

Expected Output Files

tsconfig.json:

{
  "compilerOptions": {
    "strict": true,
    "target": "es2020",
    "module": "commonjs"
  }
}

STRICT_MODE_CHANGES.md:

# TypeScript Strict Mode Migration

## Files Modified
1. src/index.ts
2. src/processor.ts
3. src/api/routes.ts

## Type Annotations Added
- 28 function return types
- 15 parameter types
- 12 interface refinements

## Build Status
✓ TypeScript: No errors
✓ Tests: 48 passed, 0 failed

## Verification
- npm run build: PASS
- npm test: PASS

Template 4: Multi-Step Workflow Agent (Orchestrate Complex Process)

Use Case

Execute multiple dependent steps in sequence with decision logic.

Prompt Template

project = "musica"
task = """
Complete the release preparation workflow.

Phase 1: Build Verification
  Command: npm run build
  Check: Exit code must be 0
  If fails: STOP, exit 1

Phase 2: Test Verification
  Command: npm test
  Check: Exit code must be 0, > 95% success rate
  If fails: STOP, exit 1

Phase 3: Security Check
  Command: npm audit
  Check: No high/critical vulnerabilities
  If fails: Create security-issues.json with details, exit 1

Phase 4: Version Bump
  Check current version: grep version package.json
  Increment patch: 1.2.3 -> 1.2.4
  Update: package.json
  Update: src/version.ts to export new version

Phase 5: Generate Changelog
  Create RELEASE_NOTES.md
  Include:
    - Version number
    - Changes made (list modified files)
    - Test results summary
    - Timestamp

Phase 6: Create Release Package
  Create release.json:
{
  "version": string,
  "build_status": "passed",
  "tests": {
    "total": number,
    "passed": number,
    "failed": number
  },
  "security": "passed",
  "ready_to_release": true,
  "timestamp": string,
  "artifacts": [
    "package.json",
    "src/version.ts",
    "RELEASE_NOTES.md"
  ]
}

Decision Logic:
  IF all phases successful:
    ready_to_release = true
    Exit 0
  ELSE:
    ready_to_release = false
    Exit 1

Do NOT:
- Actually publish or deploy
- Push to git
- Upload to npm
- Modify files outside /workspace
"""

job_id = spawn_claude_agent(project, task, context="", config=config)

Expected Output

release.json:

{
  "version": "1.2.4",
  "build_status": "passed",
  "tests": {
    "total": 48,
    "passed": 48,
    "failed": 0
  },
  "security": "passed",
  "ready_to_release": true,
  "timestamp": "2026-01-09T15:45:30Z",
  "artifacts": [
    "package.json (version bumped)",
    "src/version.ts (updated)",
    "RELEASE_NOTES.md (generated)"
  ]
}

Template 5: Diagnostic Agent (Troubleshooting & Reporting)

Use Case

Diagnose system/application issues without making changes.

Prompt Template

project = "musica"
task = """
Diagnose issues with the application startup.

Investigation Steps:

1. Check Prerequisites
   - Node version: node --version
   - npm version: npm --version
   - .env file exists: ls -la .env
   - node_modules exists: ls node_modules | wc -l

2. Dependency Check
   - npm list (capture top-level deps)
   - npm ls --depth=0
   - Look for ERR! messages

3. Configuration Check
   - tsconfig.json valid: npx tsc --noEmit
   - package.json valid: npm ls (no errors)
   - .env configured: grep -c = .env

4. Build Check
   - npm run build
   - Capture any warnings/errors

5. Runtime Check
   - npm start --timeout 5s (let it try for 5 seconds)
   - Capture any startup errors
   - Capture any warnings

6. Port Check
   - netstat -tlnp | grep 3000 (or configured port)
   - Check if something already listening

Diagnostics Report: Create diagnostics.json
{
  "timestamp": ISO8601_string,
  "environment": {
    "node_version": string,
    "npm_version": string,
    "cwd": string
  },
  "checks": {
    "prerequisites": {
      "passed": boolean,
      "details": string
    },
    "dependencies": {
      "passed": boolean,
      "issues": [string],
      "total_packages": number
    },
    "configuration": {
      "passed": boolean,
      "issues": [string]
    },
    "build": {
      "passed": boolean,
      "errors": [string],
      "warnings": [string]
    },
    "startup": {
      "passed": boolean,
      "errors": [string],
      "port": number
    }
  },
  "summary": {
    "all_passed": boolean,
    "blockers": [string],
    "warnings": [string]
  },
  "recommendations": [
    string
  ]
}

Do NOT:
- Attempt to fix issues
- Install missing packages
- Modify configuration
- Change environment variables
"""

job_id = spawn_claude_agent(project, task, context="", config=config)

Expected Output

diagnostics.json:

{
  "timestamp": "2026-01-09T15:50:12Z",
  "environment": {
    "node_version": "v18.16.0",
    "npm_version": "9.6.7",
    "cwd": "/workspace"
  },
  "checks": {
    "prerequisites": {
      "passed": true,
      "details": "All required tools present"
    },
    "dependencies": {
      "passed": false,
      "issues": [
        "express: vulnerable version (9.1.0)",
        "lodash: could be updated to 4.17.21"
      ],
      "total_packages": 42
    },
    "configuration": {
      "passed": true,
      "issues": []
    },
    "build": {
      "passed": false,
      "errors": [
        "src/processor.ts:42: Type error: Property 'config' does not exist"
      ],
      "warnings": []
    },
    "startup": {
      "passed": false,
      "errors": [
        "Build failed, cannot start"
      ],
      "port": 3000
    }
  },
  "summary": {
    "all_passed": false,
    "blockers": [
      "TypeScript compilation error in src/processor.ts",
      "Security vulnerability in express package"
    ],
    "warnings": [
      "lodash could be updated"
    ]
  },
  "recommendations": [
    "Fix TypeScript error in src/processor.ts:42",
    "Update express to 4.18.2 (security patch)",
    "Consider updating lodash to 4.17.21"
  ]
}

Template 6: Integration Test Agent (Complex Validation)

Use Case

Validate multiple components work together correctly.

Prompt Template

project = "musica"
task = """
Validate the API integration between frontend and backend.

Test Scenarios:

1. Database Connectivity
   - psql -U postgres -d mydb -c "SELECT 1"
   - Must succeed with result "1"

2. Backend Startup
   - npm run start &
   - Wait for: "Server running on port 3000"
   - Timeout: 10 seconds
   - If fails: STOP, exit 1

3. Health Check Endpoint
   - curl http://localhost:3000/health
   - Expected response: {"status": "ok"}
   - If fails: STOP, exit 1

4. API Endpoint Tests
   - GET /api/users -> status 200, array response
   - POST /api/users -> status 201, returns created user
   - PUT /api/users/1 -> status 200
   - DELETE /api/users/1 -> status 204

5. Database Transactions
   - Create test record: INSERT INTO test_table...
   - Verify created: SELECT...
   - Delete test record: DELETE...
   - Verify deleted: SELECT...

6. Error Handling
   - GET /api/users/999 -> status 404
   - POST /api/users with invalid data -> status 400
   - Both should return proper error messages

Test Report: Create integration-test-report.json
{
  "timestamp": ISO8601_string,
  "test_suites": {
    "database": {
      "passed": boolean,
      "tests": number,
      "failures": [string]
    },
    "backend": {
      "passed": boolean,
      "startup_time_ms": number,
      "failures": [string]
    },
    "health_check": {
      "passed": boolean,
      "response_time_ms": number,
      "failures": [string]
    },
    "api_endpoints": {
      "passed": boolean,
      "endpoints_tested": number,
      "failures": [string]
    },
    "transactions": {
      "passed": boolean,
      "failures": [string]
    },
    "error_handling": {
      "passed": boolean,
      "failures": [string]
    }
  },
  "summary": {
    "total_tests": number,
    "passed": number,
    "failed": number,
    "success_rate": number,
    "all_passed": boolean
  },
  "performance": {
    "database_latency_ms": number,
    "api_average_latency_ms": number,
    "slowest_endpoint": string
  },
  "recommendations": [string]
}

Exit codes:
- Exit 0 if all_passed = true
- Exit 1 if any test fails
- Exit 2 if unrecoverable (DB unreachable, etc)

Do NOT:
- Modify database schema
- Change application code
- Deploy changes
"""

job_id = spawn_claude_agent(project, task, context="", config=config)

Usage Pattern: Spawn and Monitor

# Spawn agent
job_id = spawn_claude_agent(project, task, context="", config=config)
print(f"Job spawned: {job_id}")

# Optionally: Monitor completion
import time
job_dir = Path(f"/var/log/luz-orchestrator/jobs/{job_id}")

while True:
    output_file = job_dir / "output.log"
    if output_file.exists():
        content = output_file.read_text()
        if "exit:" in content:
            # Job completed, extract exit code
            exit_code = int(content.strip().split("exit:")[-1])
            print(f"Job completed with exit code: {exit_code}")

            # Read results
            if (job_dir / "results.json").exists():
                results = json.loads((job_dir / "results.json").read_text())
                print(f"Results: {json.dumps(results, indent=2)}")
            break

    time.sleep(1)

Summary

These templates cover the most common autonomous agent scenarios:

  1. Analysis Agents - Gather information, don't modify
  2. Execution Agents - Run commands, report results
  3. Implementation Agents - Modify code, verify changes
  4. Workflow Agents - Multi-step orchestration
  5. Diagnostic Agents - Troubleshoot issues
  6. Integration Test Agents - Validate multiple components

Key Success Factors:

  • Clear, specific requirements
  • Defined success criteria
  • Complete context provided
  • No ambiguity or assumptions
  • Exit codes for status signaling
  • Results in JSON/structured format

All templates are:

  • ✓ Production-ready
  • ✓ Non-blocking (use detached spawning)
  • ✓ Autonomy-focused (no user prompts)
  • ✓ Failure-resistant (error handling built in)
  • ✓ Result-oriented (clear output)