---
name: generate-format
description: "Menghasilkan list arsip dalam format Excel (.xlsx) dan PNG image (.png) dengan template seragam Holomoc Indonesia. Dipanggil oleh skill arsip-document dan finance saat user meminta 'buatkan excel', 'buatkan gambar', 'buat png', atau 'buatkan list arsip'."
metadata:
  version: 2.0.0
  category: holomoc
---

# Generate Format — Template List Arsip Holomoc Indonesia

Skill ini menghasilkan dua format output untuk list arsip:
1. **Excel (.xlsx)** — 3 sheet: Arsip Dokumen, Keuangan (Cashbon & Reimburse), Ringkasan
2. **PNG Image (.png)** — 2 gambar terpisah: Arsip Dokumen (tabel) & Keuangan (tabel)

## Prerequisites

Pastikan dependencies terinstall:
```bash
pip install openpyxl matplotlib pillow
```

## Cara Penggunaan

### Step 1: Baca Data Arsip

Ambil data dari kedua index:

**Arsip Dokumen:**
```bash
cat /home/ubuntu/holomoc-file/arsip-index.json
```

**Arsip Keuangan:**
```bash
cat /home/ubuntu/holomoc-file-finance/finance-index.json
```

### Step 2: Siapkan JSON Data

Buat dua file JSON data sementara:
- `/tmp/arsip_data.json` — data arsip dokumen
- `/tmp/finance_data.json` — data arsip keuangan

> ⚠️ Jika salah satu data kosong (misal: tidak ada arsip dokumen, atau hanya finance saja), tetap buat file JSON dengan `{"items": []}`. Script tetap berjalan dan menghasilkan output sesuai data yang ada.

### Step 3: Generate

**Untuk Excel:**
```bash
python3 /home/ubuntu/.hermes/profiles/holomoc-admin/skills/holomoc/generate-format/scripts/generate_excel.py /tmp/arsip_data.json /tmp/finance_data.json
```

**Untuk PNG:**
```bash
python3 /home/ubuntu/.hermes/profiles/holomoc-admin/skills/holomoc/generate-format/scripts/generate_png.py /tmp/arsip_data.json /tmp/finance_data.json
```

### Step 4: Kirim ke User

Gunakan MEDIA: path untuk mengirim file:
```
MEDIA:/home/ubuntu/holomoc-file/List_Arsip_Holomoc.xlsx
MEDIA:/home/ubuntu/holomoc-file/List_Arsip_Dokumen.png
MEDIA:/home/ubuntu/holomoc-file/List_Arsip_Keuangan.png
```

## Format JSON Input

### arsip_data.json
```json
{
  "title": "LIST ARSIP DOKUMEN",
  "subtitle": "Holomoc Indonesia",
  "items": [
    {
      "no": "1",
      "nama": "nama_file.pdf",
      "kategori": "Technical|Finance|Operational|Legal|HR|General",
      "tanggal": "06 Jun 2026, 17:03",
      "ukuran": "247 KB",
      "ringkasan": "Deskripsi singkat"
    }
  ],
  "footer": "Total: 4 file  —  Technical (2)  ·  Finance (1)  ·  Operational (1)"
}
```

### finance_data.json
```json
{
  "title": "LIST ARSIP KEUANGAN",
  "subtitle": "Cashbon & Reimburse  —  Holomoc Indonesia",
  "items": [
    {
      "no": "1",
      "id": "cashbon_001",
      "jenis": "Cashbon|Reimburse",
      "nama": "Hajid",
      "jumlah": "Rp 10.000.000",
      "deskripsi": "Keterangan",
      "tanggal": "06 Jun 22:14",
      "status": "-|Pending|Completed"
    }
  ],
  "total_jumlah": "Rp 20.138.000",
  "total_detail": "Cashbon: Rp 20.000.000  |  Reimburse: Rp 138.000",
  "footer": "Total Entry: 4  |  Cashbon: 2  |  Reimburse: 2"
}
```

## Output Files

| Format | Path |
|--------|------|
| Excel | `/home/ubuntu/holomoc-file/List_Arsip_Holomoc.xlsx` |
| PNG Dokumen | `/home/ubuntu/holomoc-file/List_Arsip_Dokumen.png` |
| PNG Keuangan | `/home/ubuntu/holomoc-file/List_Arsip_Keuangan.png` |

## MCP Integration Patterns

### Sequential Orchestration
Generate Format memiliki 4 langkah berurutan:
**Step 1 (Baca Data dari Index)** → **Step 2 (Siapkan JSON Sementara)** → **Step 3 (Generate via Script)** → **Step 4 (Kirim ke User via MEDIA:)**.
Jangan lewati Step 2 — file JSON sementara WAJIB dibuat sebelum menjalankan script.

### Multi-MCP (Cross-Skill Coordination)
Skill ini adalah **skill pembantu** yang dipanggil oleh skill lain:
- **arsip-document → generate-format**: Dipanggil saat user minta export arsip dokumen.
- **finance → generate-format**: Dipanggil saat user minta export data keuangan.
- Skill ini TIDAK boleh dipanggil langsung oleh user. Selalu gunakan perantara `arsip-document` atau `finance`.

### Iterative Refinement
- Jika script gagal (misal: matplotlib error), periksa dependencies sebelum menjalankan ulang.
- Jika data JSON input tidak sesuai format, validasi struktur JSON dan perbaiki field yang kurang.
- Jika font warning muncul saat generate PNG, install font DejaVu/Noto.

## Agent Iteration & Evaluation Guidance

### Trigger Phrase Testing
Skill ini dipicu secara tidak langsung — dipanggil oleh `arsip-document` atau `finance`. User TIDAK boleh memanggil skill ini langsung.
Trigger phrases yang memicu panggilan ke skill ini (dari skill lain):
- ✅ "buatkan excel", "buatkan xlsx", "buatkan gambar", "buat png", "buatkan list arsip"

Jika skill ini terpanggil tanpa data yang valid, return error dan minta skill pemanggil untuk menyiapkan data dengan benar.

### Failure Recovery
- **Script Python error (ImportError)**: Pastikan `openpyxl`, `matplotlib`, `pillow` terinstall: `pip install openpyxl matplotlib pillow`
- **File JSON input tidak ditemukan**: Step 2 belum dijalankan — buat file JSON sementara dulu.
- **matplotlib font warning**: Install `fonts-dejavu-core fonts-noto-core` via apt.
- **Excel/PNG tidak muncul di folder output**: Cek permission `/home/ubuntu/holomoc-file/`.

### Precondition Verification
Sebelum menjalankan script, WAJIB verifikasi:
1. ✅ File JSON input (`/tmp/arsip_data.json` dan `/tmp/finance_data.json`) sudah dibuat.
2. ✅ Dependencies Python terinstall (`openpyxl`, `matplotlib`, `pillow`).
3. ✅ Folder output (`/home/ubuntu/holomoc-file/`) bisa ditulisi.

---

## Troubleshooting

- **Font warning**: Install font Noto/DejaVu via `apt install fonts-dejavu-core fonts-noto-core`
- **matplotlib error**: Pastikan `matplotlib` dan `pillow` terinstall
- **Overflow teks**: Script PNG sudah handle auto-wrap berdasarkan column width
