AI Berkshire skill: Income Investment: Durable and Opportunistic Distribution Analysis. Source: skills/income-investment.md.
61
71%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./codex-skills/income-investment/SKILL.mdThis skill is generated from skills/income-investment.md so Claude Code and Codex users share one canonical workflow.
$ARGUMENTS as the user's request in the current Codex thread.tools/ in this repository. Prefer running commands from the repository root with paths like python3 tools/financial_rigor.py ...; if the current thread starts outside the repo, locate the actual checkout path first instead of assuming a fixed home-directory path.date command to confirm today's date; treat it as the baseline for "latest" data and state the data cutoff date in the report header. Never assume the current date from training data.AGENTS.md: cross-check financial data, use exact arithmetic tools for valuation/math, and clearly label uncertainty and source gaps.Analyze $ARGUMENTS to answer:
Can this company produce sufficiently durable and attractive distributable income to justify a portfolio role, either as a long-term income conviction or as an opportunistic yield position?
Never treat a high displayed yield as evidence of a good opportunity. This workflow is for learning and research, not personalized investment advice.
Use this command form:
/income-investment "<company or ticker>" [mode=new|existing] [role=core-income|opportunistic-income|unspecified] [quantity=...] [cost_basis=...] [portfolio_weight=...] [target_yield=...] [tax_residence=...] [portfolio_file=...] [horizon=...]The company or ticker is required. All other fields are optional. Accept equivalent natural-language input. Do not invent missing values: mark them Unknown or Not calculable and state the consequence. In particular, do not estimate net income without the tax residence, account type, applicable treaty, and confirmed withholding treatment.
Use or refer to existing workflows instead of reproducing them:
| Need | Workflow |
|---|---|
| Verified financial data and cross-source reconciliation | financial-data |
| Full general fundamental research | investment-research |
| Final pre-purchase decision | investment-checklist |
| Portfolio fit, concentration, and sizing | portfolio-review |
| Post-decision monitoring | thesis-tracker |
| Update after reported results | earnings-review |
| Rapid analysis of a discrete event | news-pulse |
income-investment owns the income-specific decision. It must not silently override a current portfolio-review conclusion.
date before research. Put the data cutoff date in the report header.skills/financial-data.md: verify decision-critical financial data with at least two independent sources when available and flag discrepancies above 1%.python3 tools/financial_rigor.py for exact payout, yield, valuation, market-cap, portfolio-income, and scenario arithmetic. Never rely on mental arithmetic for a decision-sensitive result.tools/report_audit.py extract and verdict workflow. A report that fails audit is a draft, not publishable research.A (complete primary material), B (partial primary material), or C (mostly secondary/incomplete). Materially insufficient fundamentals trigger the INSUFFICIENT DATA gate.Cover at least five years when available:
Explain that waiting for the ex-dividend date is not a free gain: the share price theoretically adjusts by the distribution. The calendar may inform execution timing, but must never justify buying a weak company or delaying a necessary sale.
Analyze net-income payout, free-cash-flow payout, cash flow after necessary investment, cash-flow stability and quality, interest coverage, net debt, debt maturities, refinancing needs, maintenance and growth capex, relevant off-balance-sheet commitments, and buybacks competing with dividends.
Do not mechanically apply an EPS payout ratio across sectors:
| Sector | Required sector measures |
|---|---|
| REIT / SIIC | FFO, AFFO, occupancy, LTV |
| Bank | CET1, distributable earnings, regulatory constraints |
| Insurer | Solvency and capital generation |
| BDC | NII, NAV, non-accruals |
| Resources | Mid-cycle cash flow and variable-distribution policy |
| Telecom / utility | Capex, debt, and FCF coverage |
Assess the business model, moat, pricing power, cyclicality, rate/currency/commodity sensitivity, income predictability, capital allocation, management quality, and the ability to maintain the distribution in a downside case. Distinguish accounting profit from repeatable distributable cash.
Analyze current yield, historical average yield, appropriate sector multiples, FCF yield, a reasonable intrinsic-value range, margin of safety, and combined price-decline/dividend-cut scenarios. Yield on cost is retrospective information only and never a reason to keep a position.
Only when inputs support it, calculate annual gross dividend, gross dividend per payment frequency, known source withholding, estimated net income, contribution to portfolio income, and annual income after the proposed trade. If tax or account information is incomplete, show gross income and explain exactly why net income is not calculable. Label treaty rates and tax treatments with jurisdiction, account assumptions, and effective date.
If a portfolio is provided:
portfolio-review report when available.If conclusions diverge, show both conclusions, explain why, and separate company quality from allocation fit. A sound income security may still merit HOLD – DO NOT ADD, REDUCE, or WATCHLIST because of portfolio concentration.
When data permit, show expected gross income by month. Never recommend an inferior company to fill an empty month; quarterly payers can be combined to create monthly cash flow without requiring monthly payers.
Provide base, adverse, and severe cases. Each must state operating assumptions, distributable cash flow, payout coverage, balance-sheet/refinancing effect, dividend outcome, and valuation implication. The adverse and severe cases must explicitly test a dividend cut rather than assuming the dividend is fixed.
First classify the income profile:
Use this qualitative scorecard; do not calculate a numeric average:
| Dimension | Rating (Strong, Adequate, Weak, Critical, Unknown) | Evidence |
|---|---|---|
| Business quality | ||
| Cash-flow visibility | ||
| Dividend coverage | ||
| Balance-sheet strength | ||
| Distribution history | ||
| Dividend growth potential | ||
| Valuation | ||
| Cyclicality | ||
| Cut risk | ||
| Portfolio fit |
Check these blocking gates before the verdict:
A failed safety, debt, deterioration, or integrity gate overrides the scorecard and normally requires REJECT / YIELD TRAP (or REDUCE for an existing position when immediate disposal cannot be concluded from available portfolio facts). The insufficient-data gate requires INSUFFICIENT DATA. Do not use a score to offset a failed gate.
Return exactly one verdict:
CORE INCOMEOPPORTUNISTIC INCOMEWATCHLISTHOLD – DO NOT ADDREDUCEREJECT / YIELD TRAPINSUFFICIENT DATAFor the verdict provide: possible portfolio role, primary reason, primary risk, entry conditions, a position-size range to study (never universally suitable), reinforcement conditions, reduction/exit criteria, monitoring indicators, and confidence. Do not give a firm personalized recommendation when portfolio, tax, or risk-tolerance information is insufficient.
Use these headings exactly once and avoid repeating the same analysis:
Save the result to reports/{company}-income-investment-{YYYYMMDD}.md, using a filesystem-safe company identifier. Include the scorecard and blocking-gate result in section 2, the monthly income calendar in section 11 when calculable, and source title, issuer/publisher, publication date, accessed date, reporting period, URL, and primary/secondary label in section 18.
python3 tools/report_audit.py extract --report reports/{company}-income-investment-{YYYYMMDD}.md
# Verify every extracted item against reliable sources, then:
python3 tools/report_audit.py verdict --results '<verified JSON>' --report {company}-income-investment-{YYYYMMDD}.mdFix failed items and repeat the audit. Clearly retain unresolved gaps and lower confidence rather than filling them with assumptions.
634a399
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.