# Idfa Ops

> Named Range operations for IDFA-compliant Excel models. Provides scripts to write assumptions, read results, inspect model structure, audit compliance, and trigger deterministic recalculation. Use alongside the idfa-financial-architect methodology skill. Activate when the agent needs to programmatically interact with an Excel financial model — reading, writing, auditing, or recalculating.

- Skill: `panaversity/idfa-ops` (Agent Skill, multi-file: 9 files)
- Install (CLI): `npx skillmds@latest add panaversity/idfa-ops`
- Raw SKILL.md: https://api.skillmd.com/api/skills/panaversity/idfa-ops/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- License: Proprietary
- Author: panaversity (https://skillmd.com/u/panaversity)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/panaversity/idfa-ops

---


# IDFA Operations

Scripts for programmatic interaction with IDFA-compliant Excel financial models.

---

## When to Use This Skill

Activate when the `idfa-financial-architect` methodology skill calls for model
interaction:

- **Writing assumptions** — setting Named Range input values
- **Reading results** — retrieving calculated outputs after recalculation
- **Inspecting structure** — listing all Named Ranges, formulas, and dependencies
- **Auditing compliance** — checking all four IDFA guardrails
- **Recalculating** — triggering deterministic formula evaluation via LibreOffice

This skill provides the HOW. The methodology skill provides the WHAT.

---

## Prerequisites

| Dependency           | Required         | Purpose                              |
| -------------------- | ---------------- | ------------------------------------ |
| Python 3.10+         | Yes              | Script runtime                       |
| uv                   | Yes              | PEP 723 inline dependency resolution |
| LibreOffice          | Yes (for recalc) | Deterministic formula evaluation     |
| Anthropic xlsx skill | Recommended      | Provides battle-tested recalc.py     |

Scripts use PEP 723 inline metadata — `uv run` handles dependency installation
automatically. Zero manual `pip install` needed.

---

## Operations Reference

| Operation          | Command                                                                | What It Does                                       |
| ------------------ | ---------------------------------------------------------------------- | -------------------------------------------------- |
| Write assumption   | `uv run scripts/idfa_ops.py write <file> <name> <value>`               | Set a Named Range input value                      |
| Read result        | `uv run scripts/idfa_ops.py read <file> <name> [name2...]`             | Read Named Range value(s)                          |
| Inspect model      | `uv run scripts/idfa_ops.py inspect <file>`                            | List all Named Ranges, values, formulas            |
| Read formula       | `uv run scripts/idfa_ops.py formula <file> <name>`                     | Return the formula text for a Named Range          |
| Create Named Range | `uv run scripts/idfa_ops.py create-range <file> <name> <sheet> <cell>` | Create a new Named Range definition                |
| Recalculate        | `uv run scripts/recalc_bridge.py <file>`                               | Trigger LibreOffice deterministic recalculation    |
| Audit compliance   | `uv run scripts/idfa_audit.py <file>`                                  | Check all four IDFA guardrails, return JSON report |

All script paths are relative to this skill's directory (`skills/idfa-ops/`).

---

## The Write-Recalculate-Read Pattern

The fundamental interaction pattern for IDFA model operations. The agent
reasons about what values to set, but the spreadsheet engine performs all
arithmetic.

```bash
# Step 1: Write assumption
uv run scripts/idfa_ops.py write model.xlsx Inp_Rev_Y1 12000000

# Step 2: Recalculate (LibreOffice evaluates all formulas)
uv run scripts/recalc_bridge.py model.xlsx

# Step 3: Read results
uv run scripts/idfa_ops.py read model.xlsx Gross_Profit_Y1 Gross_Profit_Y2 Gross_Profit_Y3
```

**Step 1** writes the assumption to the Named Range. The value is stored but
dependent formulas are not yet recalculated.

**Step 2** triggers LibreOffice to evaluate every formula in the workbook
deterministically. This is essential — openpyxl cannot evaluate formulas.

**Step 3** reads the recalculated results. The values returned are the
model's deterministic output, not the agent's estimate.

---

## Composing with the xlsx Skill

When Anthropic's `xlsx` skill is also installed, `recalc_bridge.py` automatically
delegates to the xlsx skill's `recalc.py` for LibreOffice-based formula evaluation.
When only `idfa-ops` is installed, `recalc_bridge.py` runs its own LibreOffice macro.

The interface is identical either way — the agent calls the same command regardless
of which recalculation backend is available.

---

## Output Formats

All scripts output JSON to stdout for agent consumption.

**Success example (read):**

```json
{
  "status": "ok",
  "values": { "Gross_Profit_Y1": 4000000, "Gross_Profit_Y2": 4510000 }
}
```

**Success example (inspect):**

```json
{"status": "ok", "named_ranges": [...], "count": 16}
```

**Error example:**

```json
{ "error": "Named Range not found: Bad_Name" }
```

Exit codes: `0` = success, `1` = Named Range not found, `2` = file/usage error.

---

## Output Best Practices

Every task that modifies or analyses a model MUST produce a **Markdown results
file** saved to the output directory. The xlsx file alone is insufficient — a
text artifact is needed for review, grading, and audit trail.

For multi-step operations (what-if, goal-seeking, multi-write scenarios):

1. Document each step: what command was run, what was returned
2. Include a summary table with before/after values
3. State the methodology: "All values obtained via write-recalculate-read pattern"
   or "Computed via formula tracing (LibreOffice unavailable)"
4. Save as `<task>_results.md` alongside the modified xlsx

This is not optional — the results file IS the deliverable. The xlsx is the
artifact that proves it.

---

## Error Handling

| Error                     | Exit Code | Agent Action                                            |
| ------------------------- | --------- | ------------------------------------------------------- |
| Named Range not found     | 1         | Inspect model to find correct name                      |
| File not found            | 2         | Verify path and retry                                   |
| LibreOffice not installed | 1         | Warn user; read/write still work but recalc unavailable |
| Permission denied         | 2         | Check if file is open in Excel                          |

When LibreOffice is unavailable, the agent can still write assumptions and read
cached values — but the Write-Recalculate-Read pattern cannot complete. The agent
should inform the user that results may not reflect the latest assumptions.

---

## Attribution

IDFA Operations is part of the IDFA Financial Architect plugin, developed by
the **Panaversity team** (https://panaversity.org). Proprietary — see LICENSE.

