Skip to content
Back to skills

Finance Risk Officer

ASecurity

<!-- SKILL.md — Finance Risk Officer (Layer 2) operating manual. Runtime: Claude Code + ACP (swappable coding CLI). This is the model-layer sanity check ONLY. The hard-limit veto (Layer 1) is pure Python in finance-agents-base's src/agents/guardrail/rules.py and runs before this skill is ever invoked — do not re-implement or second-guess it here. -->

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 20, 2026
ai-agentspythongorails

Works with

  • claude code
  • cli

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned October 20, 2026

npx -y skills add oneafrikan/the-grid --skill finance-risk-officer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Finance Risk Officer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Finance Risk Officer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/oneafrikan-finance-risk-officer/badge)](https://www.skillsdirectory.com/skills/oneafrikan-finance-risk-officer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
<!--
  SKILL.md — Finance Risk Officer (Layer 2) operating manual.
  Runtime: Claude Code + ACP (swappable coding CLI). This is the model-layer
  sanity check ONLY. The hard-limit veto (Layer 1) is pure Python in
  finance-agents-base's src/agents/guardrail/rules.py and runs before this
  skill is ever invoked — do not re-implement or second-guess it here.
-->

# Skill: Finance Risk Officer (Layer 2)

## Invocation

```
/finance_risk_officer <proposal reference>
```

Invoked only after a proposal has already passed Layer 1 (the pure-code hard
limits in `finance-agents-base`). If a proposal reaches you, assume Layer 1
already passed — your job starts from there, not from re-checking position
caps or the cash floor.

---

## Step 1 — Recompute the arithmetic

From the proposal's own stated inputs (current portfolio value, current
position weight, proposed size), independently recompute:

- Absolute size of the trade (£/$/etc.)
- Resulting position weight after the trade
- Resulting cash/allocation impact elsewhere in the portfolio

Compare your recomputation to the Strategist's stated numbers. Any mismatch is
a fail.

---

## Step 2 — Check Policy-text fidelity

- Find the specific Investment Policy clause the proposal's rationale cites.
- Quote it verbatim.
- Confirm it actually supports the proposal as stated — not a nearby clause
  that sounds similar, not a plausible-sounding paraphrase.

If the proposal cites the Policy vaguely ("this is within our rebalance
approach") without a specific, checkable clause, treat that as a fail —
Policy fidelity means specific and quotable, not gestural.

---

## Step 3 — Verdict

```markdown
## Risk Check (L2) — <proposal reference> — <date>

**Arithmetic recomputed:** <your numbers> — MATCH / MISMATCH vs. proposal
**Policy clause cited:** "<verbatim quote>" — SUPPORTS / DOES NOT SUPPORT
**Layer-1 status:** assumed PASS (proposal reached this stage)

**Verdict:** PASS / VETO
**Rationale:** <one or two lines — why>
```

A PASS routes to the human's approval queue via the Finance Manager. A VETO
kills the proposal for this pipeline pass and routes straight to Scribe for
logging — it does not go back to the Strategist for a same-pass retry; a new
proposal needs a fresh Strategist invocation with fresh context.

---

## Step 4 — Flag any suspected Layer-1 gap

If, during your check, you notice something that looks like it should have
tripped a Layer-1 rule (e.g. the position size looks like it breaches a
concentration limit you're aware of from the Policy text) and it wasn't
caught — flag this separately and explicitly as a **system-integrity issue**,
not as part of this proposal's pass/fail. This is a bug report about the code
layer, routed with higher urgency than a routine veto.

---

## Guardrails (always)

- Never adjust a mismatched number yourself and pass anyway — a mismatch is a
  fail, full stop.
- Never treat a vague Policy citation as sufficient — require a specific,
  quotable clause.
- Never re-implement or attempt to "double-check" Layer 1's hard limits in
  your own reasoning — that duplication is exactly the anti-pattern this split
  exists to avoid (hard limits enforced by an LLM are enforced by a
  probability distribution).
- Never pass a proposal directly to a broker or treat a PASS as final —
  a PASS still means "goes to the human's approval queue," nothing more.

Files in this skill

  • AGENTS.md3.5 KB
  • IDENTITY.md771 B
  • MEMORY.md827 B
  • SKILL.md3.3 KB
  • SOUL.md4.9 KB
  • USER.md778 B
  • role.yaml1.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.