update

Refresh existing research note and Excel model with latest data

425 stars

Best use case

update is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Refresh existing research note and Excel model with latest data

Teams using update should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/update/SKILL.md --create-dirs "https://raw.githubusercontent.com/daloopa/investing/main/.claude/skills/update/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/update/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How update Compares

Feature / AgentupdateStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Refresh existing research note and Excel model with latest data

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

Update existing coverage for the company specified by the user: $ARGUMENTS

**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.

This skill refreshes existing deliverables with the latest quarterly data, highlights what changed, and re-renders both outputs.

## Phase 1 — Load Existing Context
Check for existing context files in `reports/.tmp/`:
- `reports/.tmp/{TICKER}_context.json` (research note context)
- `reports/.tmp/{TICKER}_model_context.json` (model context)

If neither exists, tell the user: "No existing coverage found for {TICKER}. Run `/initiate {TICKER}` first to create initial coverage." and stop.

Read the existing context(s) to understand what periods and data were previously gathered.

## Phase 2 — Identify New Data
Look up the company using `discover_companies`. Capture `company_id`, `latest_calendar_quarter` (anchor for all period calculations — see `../data-access.md` Section 1.5), and `latest_fiscal_quarter`. Note the firm name for report attribution (default: "Daloopa") — see `../data-access.md` Section 4.5.
Compare to the periods in existing context. Determine which new quarters need to be pulled.

If no new quarters are available, tell the user: "Coverage is already current through {latest_period}. No new data to update." and stop.

## Phase 3 — Pull Fresh Data
Pull data for ALL periods (not just new ones) to ensure consistency:
- Full Income Statement, Balance Sheet, Cash Flow
- Segments, KPIs, Guidance
- Share count, buyback activity

This refreshes the entire dataset, catching any Daloopa revisions to prior quarters.

## Phase 4 — Market Data Refresh
Get current prices, trading multiples, and risk-free rate (see ../data-access.md Section 2).

Also refresh peer multiples if comps data exists in context.

## Phase 5 — Re-run Projections
With updated historical data, re-run projections. If a projection engine is available (see ../data-access.md Section 5), use it. Otherwise project manually.

## Phase 6 — Diff Analysis
Save the new context alongside the old:
- Write new context to `reports/.tmp/{TICKER}_context_new.json`
- Run: `python infra/report_differ.py --old reports/.tmp/{TICKER}_context.json --new reports/.tmp/{TICKER}_context_new.json --output reports/.tmp/{TICKER}_diff.json`
- Read the diff to understand what changed

Key changes to highlight:
- Revenue/EPS beats or misses vs prior estimates
- Margin changes (expansion or compression)
- Guidance changes (raised, lowered, maintained)
- New KPI data points
- Share count changes (buyback acceleration/deceleration)
- Valuation changes (price moved, multiples shifted)

## Phase 7 — Update Qualitative Sections
Search filings for the new quarter(s):
- Earnings highlights and management commentary
- Updated guidance language
- New risk factors or strategic shifts
- Update investment thesis if data warrants it

Revise the executive summary and key findings to reflect the latest quarter.

## Phase 8 — Re-render Outputs
Update charts with new data points, then re-render:

**Research Note:**
1. Overwrite context: `reports/.tmp/{TICKER}_context.json`
2. Re-generate charts with updated data
3. Run: `python infra/docx_renderer.py --template templates/research_note.docx --context reports/.tmp/{TICKER}_context.json --output reports/{TICKER}_research_note.docx`

**Excel Model:**
1. Overwrite context: `reports/.tmp/{TICKER}_model_context.json`
2. Run: `python infra/excel_builder.py --context reports/.tmp/{TICKER}_model_context.json --output reports/{TICKER}_model.xlsx`

## Phase 9 — Change Summary
Present a clear summary of changes to the user:

```
## {TICKER} Coverage Update — {new_quarter} Added

### Key Changes
- Revenue: $XX.XB vs $XX.XB prior quarter (+X.X% QoQ, +X.X% YoY)
- EPS: $X.XX vs $X.XX guidance (beat/miss by X.X%)
- Gross Margin: XX.X% vs XX.X% prior quarter (+/- XXbps)
- {other notable changes}

### Projection Updates
- {what changed in forward estimates and why}

### Valuation Impact
- DCF implied price: $XXX (was $XXX, change of +/-X%)
- Comps implied range: $XXX - $XXX

### Files Updated
- Research note: reports/{TICKER}_research_note.docx
- Excel model: reports/{TICKER}_model.xlsx
- Diff report: reports/.tmp/{TICKER}_diff.json
```

All financial figures must use Daloopa citation format: [$X.XX million](https://daloopa.com/src/{fundamental_id})