agentleFS
samsational-codesamsational-code/business-skills/performance-attribution-narrator/SKILL.md

performance-attribution-narrator

Skill0 starsChanged 2 months agoMITView on GitHub

Turn raw performance or variance data into the period-end narrative a leader, board, or stakeholder actually needs — the result decomposed into what the team controlled versus what the environment did, the largest contributors and detractors assessed against the rationale that justified each bet, "right for the wrong reasons" winners flagged, and a drafted commentary section for the update in the organization's voice. Works on sales results by rep, region, or product; marketing results by channel or campaign; product metrics by feature or cohort; operations by site, line, or process; P&L variance by line item; portfolio returns by position. For sales, marketing, product, operations, finance, and investment leaders and the analysts who write their period-end updates. Trigger on phrases like "write up the attribution," "explain the month," "why were we up," "why did we miss," "what drove the result," "draft the performance commentary," "turn this variance into a narrative," "month-end write-up," "was that us or the market," or when a user uploads a variance report, budget-vs-actual, results by unit, or an attribution decomposition. Do NOT use for drafting a full periodic update letter — use the stakeholder-update-generator skill. Do NOT use for synthesizing other organizations' reports — use the periodic-report-synthesizer skill. Commentary drafted here requires review before it goes to external stakeholders.

1 other project uses a version of this, 1 of them edited.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 5 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Test the user's own explanation against the data: if they offered one. If the numbers do not support it, say so directly and show which …

    line 62
  2. Distinctive:

    Check consistency with the prior period's narrative: if prior commentary was provided.

    line 64
  3. Distinctive:

    Reconcile first: Never publish a decomposition that does not tie to the reported result.

    line 134
  4. Distinctive:

    Never soften a contradiction: If the data does not support the leader's explanation of the period, say it directly.

    line 136
  5. Distinctive:

    Use only provided numbers: Never estimate a unit's weight, a benchmark figure, or an environment contribution that was not supplied.

    line 138

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Performance Attribution Narrator

Variance reports tell you what happened. They do not tell you whether your process worked. This does the translation: which part of the result was execution and which was environment, which winners you should be suspicious of, which losers were actually fine — and then drafts the stakeholder commentary from the same numbers, so what you tell the board, investors, or leadership and what the data says never drift apart.

Why this skill exists

Two things eat a day at every period-end, and they are the same underlying work done twice. First, someone stares at a variance report — budget vs. actual, bookings by rep, spend by channel, output by site, return by position — and tries to convert a table of contributions into an explanation of the period. Second, someone writes the performance commentary for the update, usually from a slightly different set of numbers and a slightly different narrative, which is how the board deck and the finance pack come to disagree.

The analytically interesting part is the one that gets skipped under time pressure: separating outcome from process. A region that beat plan because the whole category grew 20% is not evidence your sales strategy was right, and treating it as such corrupts the feedback loop that is supposed to make you better. Same in reverse — a campaign that underperformed exactly as its risk case predicted is not a mistake. Variance data contains the answer to that question; almost nobody has time to extract it before the update is due.

Inputs

Required:

  • Performance or variance data for the period: result contribution by unit — position, rep, region, product, channel, campaign, feature, cohort, site, line item, initiative — and ideally by a second cut (segment, driver, category, factor). Whatever form your reporting system, finance team, or administrator produces.

Optional but high-value — the "optional" ones are what make this more than a summary:

  • The rationale for each major bet: a sentence or two per major unit on why you allocated to it and what you expected. This is the input that turns the output from a description into an assessment.
  • An environment baseline — market or category growth, seasonality index, industry benchmark, comparable-region trend, the finance team's driver model, or a portfolio's factor model — without it, separating execution from environment is inference rather than measurement, and will be labeled as such
  • Resource allocation: budget, headcount, spend, capacity, or weight by unit, and how these changed during the period
  • Plan, budget, target, forecast, prior period, or benchmark, if performance is measured against one
  • Prior period updates or commentary, for voice matching
  • One-offs, timing effects, FX, reclassifications, credits, returns, or fees, if they are material and not already in the data
  • What the user already believes drove the period — worth capturing, and worth testing against the data

Missing-input behavior: The variance data alone is enough to run, but say plainly what the absence of rationale costs: without it, the skill can describe contribution but cannot judge whether the result validated the reasoning, which is the section with the most value. Ask once for even rough rationale notes on the top five units. Without an environment baseline, do not silently estimate the split — state that the execution-vs-environment split is directional inference from category and market behavior, not a measured decomposition.

How it works

  1. Reconcile the total before decomposing it. Confirm the contributions sum to the reported period result, and flag any residual. An unexplained residual is a data problem that invalidates everything downstream — surface it rather than distributing it.
  2. Decompose the result into environment (market, category, seasonality, pricing environment, macro), structural drivers (mix, capacity, headcount, one-offs), and execution (what the team actually did differently). Where a baseline or model was provided, use its numbers and name the source. Where one was not, separate what can be attributed to obvious market and category moves from what cannot, and label the whole section as inference.
  3. Rank contributors and detractors — typically the top five each — with contribution in the period's unit (dollars, units, points, basis points), share of resource, and rate of change.
  4. Assess each against its rationale. For each major contributor and detractor, ask: did this work for the reason we expected? Sort into four buckets — right for the right reasons, right for the wrong reasons, wrong for the right reasons, wrong for the wrong reasons. The two middle buckets are where the learning is, and they are the ones a normal write-up erases.
  5. Test the user's own explanation against the data if they offered one. If the numbers do not support it, say so directly and show which figures contradict it. This is the highest-value thing the skill does and it should not be softened.
  6. Note what did not happen. Units that contributed nothing despite a rationale that predicted movement, defensive measures that failed to defend, and allocations too small to matter given stated conviction — absence of contribution is information.
  7. Check consistency with the prior period's narrative if prior commentary was provided. A story that changes every period to fit the outcome is itself a finding.
  8. Draft the stakeholder commentary — three to four paragraphs, factual, in the organization's voice, derived strictly from the same numbers, with no forward-looking claims and no spin.

Output format

# [Team / Business / Fund] — Performance Narrative, [period]
Result: [actual] vs. [plan / benchmark / prior] | Data source: [system, date]
Environment baseline: [named model or benchmark / none provided — split is inferred]

## Reconciliation
Sum of contributions: [ ] vs. reported result: [ ] | Residual: [ ]
[If the residual is material, stop and flag it before anything else.]

## The period in three sentences
[What drove the result, in plain language, no jargon.]

## Result decomposition
| Source | Contribution | % of total |
|---|---|---|
| Environment: [market / category / seasonality] | | |
| Structural: [mix / capacity / one-offs] | | |
| Execution: [ ] | | |
| Adjustments: [FX, fees, timing, reclassifications] | | |
[Method note: measured from [baseline] / inferred, and what that means.]

## Top contributors
| Unit | Contribution | Share of resource | Rate of change | Rationale-consistent? |
|---|---|---|---|---|

## Top detractors
| Unit | Contribution | Share of resource | Rate of change | Rationale-consistent? |
|---|---|---|---|---|

## Process assessment
**Right for the right reasons:** [units, one line each]
**Right for the wrong reasons:** [units — what actually drove the result, and
why counting this as a win would be a mistake]
**Wrong for the right reasons:** [units — reasoning intact, timing or noise]
**Wrong for the wrong reasons:** [units — the reasoning was incorrect; say so]

## What didn't happen
[Non-contributors with live rationale, defensive measures that didn't work,
under-resourced conviction bets.]

## Where the data disagrees with the stated view
[Only if the user offered an explanation. Be direct and show the figures.]

## Draft stakeholder commentary — REQUIRES REVIEW BEFORE EXTERNAL USE
[3–4 paragraphs. Factual, matches the provided voice, gross/net and
actual/plan labeled explicitly, no forward-looking statements, no
cherry-picked units.]

## Open questions for the team
Numbered — what this period's data suggests should be examined.

Reading performance data honestly

  • Contribution is not skill. A region that delivered 30% of the beat while its category grew 25% is a tailwind you were positioned for, not execution you generated. In a portfolio, a position that rose with its sector is beta, not alpha. The test is relative behavior, not absolute contribution.
  • Allocation vs. execution. Deciding to put budget, headcount, or capital into a channel, region, or sector is a different decision from running that channel, region, or position well, made by different people and processes, and worth crediting separately (the allocation/selection split used in investment attribution applies to any resource decision).
  • Environment exposure is usually unintentional. Most teams are more exposed to seasonality, a single large customer, a category trend, or a market factor than they believe. When the environment contribution is large, the useful question is whether that exposure was a decision.
  • Offsetting items need their own treatment. A discount program that lifted volume while eroding margin, a retention campaign that saved accounts at a cost above their value, a short position whose borrow cost ate the gain — net these properly and show both sides. Something that "worked" on one line while losing on another did not work.
  • Insurance-type spend is supposed to look wasted in good periods. Safety stock, redundancy, hedges, churn-prevention, compliance headcount — judge them against what they were meant to protect, not against zero.
  • Concentration in the result — if two customers, two reps, or two positions drove the whole period, say so plainly. A diversified narrative over a concentrated outcome is misleading.
  • Gross vs. net matters everywhere, but especially in anything stakeholder-facing: gross bookings vs. net revenue, gross adds vs. net adds, gross margin vs. contribution, gross vs. net return. Label every figure.
  • A single period is a small sample. Resist narrating one month or quarter as if it validates or invalidates a process; note where the same pattern has or has not appeared before.

Guardrails

  • Reconcile first. Never publish a decomposition that does not tie to the reported result. Residuals are surfaced, never allocated away.
  • Do not compute an execution effect you cannot measure. Without an environment baseline, the split is inference — label it as such everywhere it appears, including in the drafted commentary.
  • Never soften a contradiction. If the data does not support the leader's explanation of the period, say it directly. That is the reason to run this.
  • The stakeholder commentary is a draft requiring review, and it must say so. Performance communications to investors, boards, customers, and the public carry legal, regulatory, and reputational weight — and in some settings (fund investors, public companies) are regulated. The draft must: label gross and net and actual vs. plan explicitly, avoid cherry-picking units, avoid forward-looking or promissory language, avoid unsubstantiated superlatives, and never present projected or modeled figures alongside actuals without clear labeling.
  • Use only provided numbers. Never estimate a unit's weight, a benchmark figure, or an environment contribution that was not supplied. A missing input is stated as missing.
  • Methodology varies. Note the source system and, where it matters, that different methodologies (arithmetic vs. geometric linking, cash vs. accrual, bookings vs. recognized revenue, transaction-based vs. holdings-based) produce different numbers.
  • Not advice, and not a recommendation to change allocation. The open questions section raises questions; it does not answer them.
  • Confidentiality: unit-level performance data — by rep, customer, site, or position — is among the most sensitive data an organization holds. Assume an organization-approved AI environment.

Quality checks

  • Contributions reconciled to the reported result; residual disclosed
  • Gross and net, and actual vs. plan, labeled on every performance figure
  • Execution-vs-environment split labeled as measured or inferred, with the baseline named
  • Every top contributor and detractor assessed against a rationale, or marked "no rationale provided"
  • All four process buckets populated — including the uncomfortable ones
  • Offsetting items and insurance-type spend treated on their own terms, not as ordinary units
  • "What didn't happen" section has real content
  • Any disagreement with the user's stated view is direct and evidenced
  • Draft commentary carries the review flag and contains no forward-looking language
  • No figure appears that was not provided or derived from provided figures with the arithmetic shown

Example prompts

"Q3 sales results by region and rep attached, plus the category growth numbers from the industry report. Our rationale for the territory realignment is in the second file. We beat plan by 8%. Write the narrative and draft the commentary paragraph for the board deck; here's last quarter's deck for voice."

"We missed the marketing pipeline target by 15% and I think it was entirely the paid-search budget cut. Channel attribution attached — is that actually what happened?"

"Plant output vs. plan for the month across four sites, no benchmark. Decompose what you can, tell me which of the sites that beat plan just got lucky on input prices, and be blunt about it."

"October attribution for the fund attached — P&L by position and the factor decomposition. Theses for the top ten positions are in the second file. We were up 2.1% gross. Write the narrative, tell me which winners were just sector beta, and draft the monthly letter paragraph."

Works well with

Feed the drafted commentary into marketing-claims-prescreen before it reaches external stakeholders. Use stakeholder-update-generator when the commentary needs to become a full periodic update, and red-team-premortem on any unit that lands in "right for the wrong reasons."

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.