Full earnings analysis with guidance tracking for a given company
npx skills add https://github.com/openai/plugins --skill earnings-review
Perform a comprehensive earnings analysis for the company named in the user's request. If no ticker or company is provided, ask for one before proceeding.
Before starting, read ../data-access.md for data access methods and ../design-system.md for formatting conventions. Follow the data access detection logic and design system throughout this skill.
Follow these steps:
Look up the company by ticker using discover_companies. Capture:
company_idlatest_calendar_quarter — anchor for all period calculations below (see ../data-access.md Section 1.5)latest_fiscal_quarter../data-access.md Section 4.5Calculate 8 quarters backward from latest_calendar_quarter. Search for these metrics, then pull:
Income Statement:
Cash Flow & Balance Sheet:
For any derived/computed metric, mark it with "(calc.)" so the reader knows it's not directly sourced.
Flag any one-time items that distort a quarter (e.g., tax charges, impairments, litigation settlements) with a footnote so YoY comparisons aren't misleading.
First, think about what the most important KPIs are for THIS specific company based on its business model and what drives its valuation. For example:
Then search for those specific KPIs by name, plus cast a wider net for anything else available. Also search for:
Pull for the same 8-quarter period. If some KPIs only have data for recent quarters, include what's available and note the gap.
Calculate and present:
If the company has strong seasonality (e.g., retail Q4 holiday, back-to-school, cyclical patterns), add a note so the reader interprets QoQ swings correctly.
Decompose what's driving margin trends. This turns the margin table from Section 4 into an analytical narrative.
COGS Analysis:
OpEx Breakdown:
Margin Driver Synthesis:
For each major margin (gross, operating, net), write 1-2 sentences identifying what's driving expansion or compression:
Include this as a commentary block after the margins table in the report. Cite specific Daloopa figures.
Search for guidance series (revenue guidance, EPS guidance, margin guidance, OpEx guidance, any KPI guidance). If available:
If no formal guidance series exist, note that the company does not provide quantitative guidance.
If consensus estimates are available (see ../data-access.md Section 3), add:
If consensus data is not available, skip this section and note "consensus data not available."
Search SEC filings/documents for management commentary. Try multiple searches to get broad coverage:
Extract:
Stock price reaction (from Daloopa):
Use get_stock_prices (see ../data-access.md Section 1.7) to get the actual post-earnings price move. Pull prices for a window around the earnings date: start_date = 1 trading day before the likely earnings date (estimate from the latest_calendar_quarter end + ~30-45 days), end_date = 3 trading days after. Compute the next-day percentage change from the pre-earnings close to the post-earnings close. This gives you the hard number for "how did the stock react."
Also pull the current stock price (3 most recent calendar days) so the report includes where the stock trades NOW relative to the post-earnings reaction.
Web search for context:
Run 2 WebSearch queries to add external context around the earnings:
"{TICKER} {company_name} earnings {latest_quarter} {year}" — coverage and analyst reactions"{TICKER} analyst price target {year}" — sell-side sentimentDistill into a brief Earnings Context block (3-5 bullet points):
get_stock_prices, not just search results)Keep this concise — it supplements the Daloopa data with market reaction context. Include it as a short section in the report before the Forward Outlook.
Synthesize the backward-looking data into a forward-looking view. This section turns the earnings analysis from "what happened" into "what it means for the future."
Forward Guidance Analysis:
Revenue Driver Decomposition:
KPI Trajectory Implications:
Trend Synthesis:
Risks to the Forward View:
This is one of the most valuable sections of the report. Every company's earnings contain signal about adjacent companies — suppliers, customers, competitors, and the broader industry. An analyst covering a sector doesn't just read one company's print; they read it for what it says about every other name in their portfolio.
Identify the Read-Through Universe:
Think about who is most affected by this company's results. Consider:
For each read-through (aim for 5-8), state:
Example read-throughs:
Sequencing context:
Web research for validation:
Run 1-2 targeted searches to validate read-throughs:
"{TICKER} earnings read through implications {year}" — analyst commentary on cross-company signals"{TICKER} {peer_ticker} competitive positioning {year}" — specific competitive dynamicsPresent as a structured list in the report, grouped by relationship type (Suppliers / Customers / Competitors / Industry). Each read-through should be a concise 2-3 sentence paragraph with the data citation, the affected name, and the implication.
Save to reports/{TICKER}_earnings_{PERIOD}.html (where PERIOD is the most recent quarter analyzed) using the HTML report template from ../design-system.md. Write the full analysis as styled HTML with the design system CSS inlined. This is the final deliverable — no intermediate markdown step needed.
The report should include:
All financial figures must use Daloopa citation format: <a href="https://daloopa.com/src/{fundamental_id}">$X.XX million</a>
Tell the user where the HTML report was saved.
Highlight the 2-3 most notable findings with a critical lens:
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Query the CELLxGENE Census (61M+ cells) programmatically. Use when you need expression data across tissues, diseases, or cell types from the largest curated single-cell atlas. Best for population-scale queries, reference atlas comparisons. For analyzing your own data use scanpy or scvi-tools.
Take openai/earnings-review from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.