# Persisting Agent Outputs

> Protocol for agents to write structured outputs that survive session resets and are findable by the orchestrator.

- Skill: `mayarid/persisting-agent-outputs` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mayarid/persisting-agent-outputs`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mayarid/persisting-agent-outputs/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: mayarid (https://skillmd.com/u/mayarid)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mayarid/persisting-agent-outputs

---


## Purpose

Agent outputs must be findable after session reset. The orchestrator reads these to resume work and make decisions. This skill defines the exact write protocol.

## Output Location Protocol

All agent outputs go to:
```
.jonggrang/.output/features/{feature_id}/{phase}-{role}-output.json
```

Examples:
```
.jonggrang/.output/features/auth-feature-abc123/
  07-lead-architecture-plan.json
  08-developer-task-001.json
  09-reviewer-design-check.json
  11-reviewer-code-quality.json
  12-test-lead-test-plan.json
  13-tester-results.json
```

## Output File Format

Every output file must include this header:

```json
{
  "jonggrang-output": true,
  "feature_id": "auth-feature-abc123",
  "phase": 8,
  "role": "developer",
  "task_id": "task-001",
  "agent_id": "developer-auth-001",
  "timestamp": "2024-01-01T00:00:00Z",
  "status": "completed",
  "output": {
    // role-specific payload here
  }
}
```

## Role-Specific Output Schemas

**Lead (architecture plan):**
```json
{
  "output": {
    "work_type": "MEDIUM",
    "tasks": [
      { "id": "task-001", "title": "...", "description": "...", "files": [...], "blocked_by": [] },
      { "id": "task-002", "title": "...", "description": "...", "files": [...], "blocked_by": ["task-001"] }
    ],
    "tech_decisions": [...],
    "risk_factors": [...]
  }
}
```

**Developer (implementation):**
```json
{
  "output": {
    "task_id": "task-001",
    "files_modified": ["src/auth.ts"],
    "files_created": ["src/auth.test.ts"],
    "summary": "Implemented JWT auth with refresh tokens",
    "notes": "Used bcrypt for password hashing"
  }
}
```

**Reviewer (review report):**
```json
{
  "output": {
    "approved": true,
    "score": 8,
    "violations": [],
    "warnings": ["Consider adding rate limiting"],
    "required_fixes": []
  }
}
```

**Tester (test results):**
```json
{
  "output": {
    "tests_passed": true,
    "total": 24,
    "passed": 24,
    "failed": 0,
    "coverage": 87.3,
    "failed_tests": []
  }
}
```

## Discovery Protocol

When an agent needs to find a previous phase's output:
1. Look in `.jonggrang/.output/features/{feature_id}/`
2. Find files matching `{phase}-{role}-*.json`
3. Parse and use

The orchestrator knows the feature_id from MANIFEST.yaml:
```yaml
feature_id: auth-feature-abc123
```

