plugins/daloopa/skills/research-note/SKILL.md
Generate a professional Word document research note
npx skillsauth add openai/plugins research-noteInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate a professional research note (HTML report) for the company specified by the user 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.
This is an orchestrator skill that gathers comprehensive data, then renders a styled HTML report using the HTML Report Template from ../design-system.md (full CSS inlined, zero dependencies).
Look up the company by ticker using discover_companies. Capture:
company_idlatest_calendar_quarter — anchor for all period calculations (see ../data-access.md Section 1.5)latest_fiscal_quarter../data-access.md Section 4.5Get current stock price, market cap, shares outstanding, beta, and trading multiples for {TICKER} using the 3-step resolution: (1) MCP market data tools if available, (2) web search, (3) sensible defaults (see ../data-access.md Section 2 for how to source market data).
Initialize context: context = {company_name, ticker, date, price, market_cap, firm_name, ...}
Calculate 8 quarters backward from latest_calendar_quarter. Pull Income Statement metrics:
Pull Cash Flow & Balance Sheet:
For every value returned by get_company_fundamentals, record its fundamental_id (the id field). Store each data point as {value, fundamental_id} so citations can be rendered in the final document.
Compute margins and YoY growth rates for each quarter. Build context.financials with tables. Every Daloopa-sourced number must include its citation link: [$X.XX million](https://daloopa.com/src/{fundamental_id}).
After the core financial pull, add:
New context keys:
cost_margin_analysis (string) — narrative explaining what's driving margins, with Daloopa citationsopex_breakdown_table (dynamic table) — [{metric, Q1, Q2, ...}] rows for R&D, SG&A, Other OpEx, each with absolute values and % of revenue sub-rowsThink about what KPIs matter most for THIS company's business model. Search for:
Pull the same 8 quarters (from latest_calendar_quarter). Build context.kpis and context.segments.
After the KPI/segment pull, determine the company's sector and apply the relevant analysis template:
Search for relevant series using discover_company_series with sector-appropriate keywords. Pull available data and build the narrative.
New context key:
industry_deep_dive (string) — sector-specific analysis narrative with Daloopa citations, organized by the relevant template aboveSearch for guidance series ("guidance", "outlook", "forecast", "estimate", "target").
Pull guidance and corresponding actuals. Apply +1 quarter offset rule.
Compute beat/miss rates and patterns.
Build context.guidance (set context.has_guidance = true/false).
Using the financial baseline from Phase B:
Build falsifiable bull/bear beliefs instead of probability-weighted scenarios:
Write 4-6 numbered beliefs, each with:
Example format: "1. Revenue growth re-accelerates to 15%+ as AI monetization scales. Cloud segment grew $X.Xbn last quarter, up X% YoY, with management noting..."
Same format — 4-6 numbered falsifiable beliefs with evidence for the downside case.
For each side:
New context keys:
bull_beliefs (string) — numbered falsifiable beliefs with evidencebear_beliefs (string) — numbered falsifiable beliefs with evidencebull_target (string) — price target + valuation mathbear_target (string) — price target + valuation mathrisk_reward_assessment (string) — asymmetry analysisPull buyback, dividend, share count, FCF data.
Compute shareholder yield, FCF payout ratio, net leverage.
Build context.capital_allocation.
DCF:
../data-access.md Section 2)context.dcf (set context.has_dcf = true)Comps:
../data-access.md Section 2)../data-access.md Section 3), include forward multiplescontext.comps (set context.has_comps = true)Search SEC filings across multiple queries:
Extract and organize into:
context.risks — ranked list of risks with impact/probabilitycontext.investment_thesis — variant perception, thesis pillars, catalystscontext.company_description — 2-3 sentence business descriptionRun 4 WebSearch queries to gather recent external context:
"{TICKER} {company_name} news {year}" — recent headlines and developments"{TICKER} analyst upgrade downgrade price target" — sell-side sentiment shifts"{TICKER} catalysts risks" — forward-looking events and risk factors"{company_name} industry outlook {sector}" — macro and industry trendsOrganize results into three new context keys:
news_timeline (string) — 6-10 key events from the last 6-12 months in reverse chronological order. Each event: date, headline, 1-sentence impact, sentiment tag (Positive / Negative / Mixed / Upcoming). Format as a numbered list.
forward_catalysts (string) — Organized by timeframe:
policy_backdrop (string) — Macro/regulatory context affecting the company. Tariffs, regulation, interest rates, sector-specific policy. Leave empty string if not material.
Present all chart data in well-formatted tables. No chart generation needed.
This is the most judgment-intensive step. Be honest and critical — the reader is a professional investor who needs your real assessment, not a balanced summary.
Write:
context.executive_summary, context.variant_perceptionIdentify the 5 most critical bull/bear debates for this stock. Each tension is a single line that frames both sides. Alternate between bullish-leaning and bearish-leaning tensions. Every tension must reference a specific data point from the analysis.
Format as a numbered list:
Build context.five_key_tensions (string).
Build two monitoring lists for ongoing tracking:
Quantitative Monitors — 5-7 specific metrics with explicit thresholds:
Qualitative Monitors — 5-7 factors to watch:
Build context.monitoring_quantitative and context.monitoring_qualitative (strings, numbered lists).
Also build structured tables for the template:
context.key_metrics_table — [{metric, value, vs_prior}] for the exec summary tablecontext.financials_table — [{metric, q1, q2, ...}] for the financial analysis sectioncontext.segments_table, context.geo_table, context.shares_outstanding_tablecontext.opex_breakdown_table — [{metric, q1, q2, ...}] for R&D, SG&A, % of revenue rowscontext.guidance_table, context.comps_table, etc.Using the HTML Report Template from ../design-system.md, generate a styled HTML report with full CSS inlined. The report should include:
Header Section:
Section 1: Executive Summary
Section 2: Company Overview
Section 3: Recent News & Catalysts
Section 4: Financial Analysis
Section 5: Industry-Specific Analysis
Section 6: Guidance Track Record
Section 7: What You Need to Believe
Section 8: Catalysts
Section 9: Capital Allocation
Section 10: Valuation
Section 11: Risks
Section 12: Monitoring Framework
Appendix:
Verify these keys exist before rendering (set empty string if data unavailable):
Cover & Summary:
company_name, ticker, date, price, market_cap, five_key_tensions, executive_summary, key_metrics_table
Thesis & Overview:
investment_thesis, variant_perception, company_description
News:
news_timeline
Financials:
financials_table, cost_margin_analysis, opex_breakdown_table, segments_table, geo_table, shares_outstanding_table
Industry:
industry_deep_dive
Guidance:
has_guidance, guidance_track_record
What You Need to Believe:
bull_beliefs, bull_target, bear_beliefs, bear_target, risk_reward_assessment
Catalysts:
forward_catalysts, policy_backdrop
Capital Allocation:
capital_allocation_commentary
Valuation:
has_dcf, dcf_summary, has_comps, comps_commentary
Risks:
risks_summary
Monitoring:
monitoring_quantitative, monitoring_qualitative
Appendix:
appendix_content
Save the styled HTML report as a local file and summarize the output. Tell the user:
Citation enforcement: Every financial figure from Daloopa in the HTML report must use citation format: [$X.XX million](https://daloopa.com/src/{fundamental_id}). If a number came from get_company_fundamentals, it must have a citation link. No exceptions.
tools
Top-level workflow skill for USD performance diagnosis and optimization. Use for slow loading, high memory, low FPS, or 'optimize my scene' requests; delegates auth/runtime setup to Phase 0 owners.
data-ai
Use when the user mentions MagicPath, designs, UI components, themes, canvas selections, or repo-to-canvas UI work; run magicpath-ai to search, inspect, install, or author components.
documentation
Use as the top-level router for Omniverse Realtime Viewer USD app requests and focused viewer reference documents.
tools
Turn Notion specs into implementation plans, tasks, and progress tracking; use when implementing PRDs/feature specs and creating Notion plans + tasks from them.