Skip to main content

moody-s-issuer-brief

Produce a comprehensive Issuer Brief HTML report for a company using Moody's GenAI MCP tools. Use this skill whenever the user asks to create an Issuer Brief, company profile report, credit memo, investment book, or comprehensive company analysis. Also trigger when they ask for a report combining company overview, financials, peer comparison, industry overview, strategic developments, management, credit profile, risks, and ESG into a single document. Trigger even if they just name a company and say "Issuer Brief", "info book", "company book", "credit book", or "full company report".

Aller à l'installation

Informations de source

Dépôt
zhongjingyun/codex-plugins
Dernière activité de la source
6 juillet 2026 à 07:05
Langue détectée de SKILL.md
anglais
Étoiles
16
Forks
2

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
4 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
moody-s-issuer-brief
description
Produce a comprehensive Issuer Brief HTML report for a company using Moody's GenAI MCP tools. Use this skill whenever the user asks to create an Issuer Brief, company profile report, credit memo, investment book, or comprehensive company analysis. Also trigger when they ask for a report combining company overview, financials, peer comparison, industry overview, strategic developments, management, credit profile, risks, and ESG into a single document. Trigger even if they just name a company and say "Issuer Brief", "info book", "company book", "credit book", or "full company report".
# Issuer Brief Skill Generates a professional HTML report (styled like a Moody's Issuer Brief) for a target company. The report consolidates data from multiple Moody's MCP tools, annual/quarterly reports, earnings calls, and news into 11 structured sections plus a pre-rendered table of contents. Section 4 is titled "Company Metrics" (formerly "Share Price Performance and Valuation"). The workflow is **single-artifact streaming**: gather all data, then stream the entire filled HTML document back to the user as one ` ```html ` fenced code block in the final assistant message. No file copy, no `open` step, no progressive `StrReplace` edits, no JSON payload, and no client-side render logic. The fenced code block is the deliverable. > ## ⚠️ CRITICAL — NON-NEGOTIABLE OUTPUT CONTRACT > > **The LLM MUST stream the final report back as a single HTML artifact inside the assistant > response.** This is the only acceptable form of delivery for this skill. Specifically: > > - The final assistant message **MUST** contain exactly one ` ```html ` fenced code block > holding the **complete, standalone HTML document** (`<!doctype html>` → `</html>`), with > every section from the streaming protocol populated inline. > - The LLM **MUST NOT** write the report to a file on disk (no `Write`, no `cp` of the > template, no `StrReplace` into a working artifact, no `open` command). > - The LLM **MUST NOT** split the report across multiple code blocks, multiple messages, > partial snippets, or summaries. > - The LLM **MUST NOT** substitute prose, Markdown, JSON, attachments, or links for the > fenced HTML artifact. The artifact itself is the answer. > - If data gathering fails partially, still emit the single ` ```html ` artifact with > the best-available content and `"--"` placeholders for missing cells — never skip the > artifact. > > Treat any other output shape as a hard failure of the skill. > ## ⚠️ CRITICAL — NO ESTIMATED OR APPROXIMATED NUMBERS ALLOWED > > **Every numeric value in the report — in tables, charts, KPI cards, prose, and SVGs — MUST > come directly from a Moody's MCP tool response or a company filing retrieved via > `searchCompanyFilings`.** Estimation, approximation, interpolation, and inference from > indirect sources are strictly forbidden. Specifically: > > - **NEVER** write `~`, `approx.`, `estimated`, or any similar qualifier next to a number. > If the exact figure is unavailable from the data gathered, use `"--"` instead. > - **NEVER** derive a number by splitting, distributing, or back-calculating from an aggregate > (e.g. do not allocate total debt across maturity buckets by assumption). > - **NEVER** invent segment revenue, EPS, FCF, ROE, debt maturity amounts, or any other > metric that was not explicitly returned by a tool call. > - **Charts are not exempt**: every bar height, data point, and label in every SVG chart > (KPI scorecard, rating timeline, segment revenue bar, debt maturity bar) must map 1-to-1 > to a value returned by a tool. If tool data is insufficient to build a chart accurately, > omit the chart and leave the container empty rather than render fabricated values. > - **Peer data is not exempt**: only populate peer columns with values explicitly returned > by `getCreditOpinion`, `getEntityFinancials`, or `getEntityRatings` for that peer. > > Treat any estimated or approximated number in the emitted report as a hard failure of the skill. ## Required MCP server `Moodys MCP server` — tools used: `findEntity`, `getEntityPeers`, `getEntityRatings`, `getCreditOpinion`, `getEntitySectorOutlook`, `searchEntityDocuments`, `searchEntityEarningsCall`, `searchNews`, `getEntityFinancials`, `getEntityManagersDirectors`, `searchCompanyFilings`. If any of the tools required for a section do not exist, inform the user: One or more tools required for this section are not available under your current subscription. Unlock more of the expert insights, data, and analytics you trust. Get Link:https://www.moodys.com/web/en/us/capabilities/gen-ai/ai-ready-data.html with us to learn more. > ESG data (CIS, E, S, G) comes from `getCreditOpinion` via the `ESGConsiderations` section. ## Bundled files - `assets/template.html` — self-contained static report shell: CSS, layout, a hardcoded 11-entry table of contents, pre-shaped tables (financial / 5 valuation / key-indicators / ESG-score) with cell-level IDs, and empty targets (containers, `<tbody>`, `<ul>`, `<div>`) for variable content. Treat this file as the **read-only structural reference**: read it, fill it in mentally, and emit the complete filled document in the final response. ## Template (shared) Before emitting the HTML report, **read both**: 1. [`skills/shared/template/SKILL.md`](../shared/template/SKILL.md) — authoring rules (which classes / snippets are owned by the shared layer, allowed per-skill overrides, outlook-badge usage). 2. [`skills/shared/template/assets/template.html`](../shared/template/assets/template.html) — canonical CSS (inside `<style id="shared-template-css">`) and literal HTML markup snippets (inside `<template>` tags) for the document head, cover, TOC, section block, sources-section wrapper, footer, and outlook-badge. **Lookup order — always check the shared template before inventing.** If a class, design token, layout primitive, or scaffold element you need is not defined in this `SKILL.md` or already present in this skill's `assets/template.html`, the shared template skill is authoritative. Do not invent CSS, HTML scaffolds, or design tokens that the shared skill already provides; do not silently restyle anything the shared skill owns (cover, TOC, section, sources-section wrapper, footer, outlook-badge, design tokens, reset, body / page base). At emit time, copy the **contents** (not the `<style>` wrapper) of `<style id="shared-template-css">` from the shared asset into the parent template's reserved marker region between the CSS-comment markers `/* BEGIN shared-template-css ... */` and `/* END shared-template-css */`. For HTML scaffolds (head boilerplate, cover, TOC, sources-section wrapper, footer), use the literal markup from the matching `<template>` snippet in the shared asset. The parent template no longer carries duplicated chrome CSS — those rules ship only in the shared asset. This skill uses the **`cover-simple`** variant. Skill-specific overrides retained above the marker region: `**body { font-size: 12.5px }**` (PIB renders denser financial tables than the 13px canonical default) and `**.page { max-width: 920px }**` (slightly wider than the 900px canonical default). Skill-specific CSS that stays local: `table.data-table`, `table.fin-table`, and the PIB chart helper (`.chart-container` PIB variant — centered, no background). **Chart spacing rule:** Every `.chart-container` must have `margin-top: 28px` (increased from the template default of 16px) so that visualization titles do not visually merge with the preceding section or subsection headings. When emitting the final HTML, ensure the `.chart-container` CSS rule reads `.chart-container { margin: 28px 0 20px; text-align: center; }` — update the value in the `<style>` block if it differs from the template default. **Outlook-badge migration.** PIB previously shipped a solid-fill `.outlook-badge` styling (white text on solid `--green` / `--red` / `--amber` / `--accent` backgrounds) inside its own template. That carve-out has been **removed**. PIB now inherits the canonical pastel variant from the shared skill — pastel background + colored text, with the same five class variants (`stable` / `positive` / `negative` / `review` / `na`) used everywhere else. Do not re-define `.outlook-badge` rules locally and do not emit inline `style="..."` overrides on outlook badges. The `--green`, `--red`, `--amber` custom properties are no longer present and must not be referenced anywhere in the emitted HTML. ## Citations (shared) Before emitting any `[n]` reference inline, any per-section recap block, or the end-of-document Citations block, **read both**: 1. [`skills/shared/citations/SKILL.md`](../shared/citations/SKILL.md) — authoring rules (numbering, hyperlinking, source data shape, carve-outs). 2. [`skills/shared/citations/assets/template.html`](../shared/citations/assets/template.html) — canonical CSS (inside `<style id="shared-citations-css">`) and literal HTML markup snippets (inside `<template>` tags) for inline references, the end-of-document Citations block, and the optional `.section-citations` recap. At emit time, copy the **contents** (not the wrapper) of `<style id="shared-citations-css">` from the shared asset into the parent template's reserved marker region, located inside `assets/template.html` between the CSS-comment markers `/* BEGIN shared-citations-css … */` and `/* END shared-citations-css */`. The parent template no longer carries duplicated citation CSS — those rules ship only in the shared asset. Skill-specific carve-out: **never put citation markup inside data cells** (financial, valuation, key-indicators, rating, risk, or ESG tables). The prefix used for the end-of-document container in this skill is `pib`, so the container id is `#pib-sources`. Per-section recap blocks live in `#pib-cite-a` … `#pib-cite-k`, mapped one-to-one to the eleven report sections in document order: | Letter | Section | |--------|--------------------------------------------------| | `a` | 1. Company Overview | | `b` | 2. Business Segments and Operations | | `c` | 3. Historical Financials | | `d` | 4. Company Metrics | | `e` | 5. Peer Comparison and Competitive Landscape | | `f` | 6. Industry Overview and Trends | | `g` | 7. Strategic Developments | | `h` | 8. Management and Governance | | `i` | 9. Credit Profile | | `j` | 10. Risks and Challenges | | `k` | 11. ESG Profile | Each `#pib-cite-{x}` should be filled with a single `<div class="section-citations">…</div>` recap as defined in the shared skill (`.cite-label` "Citations" pill plus one `.cite-item` per source referenced in that section). The recap re-uses the same global `[n]` numbering as the inline references and `#pib-sources` — it never starts a new sequence. If a section has no inline citations, leave the corresponding `#pib-cite-{x}` empty. ## Parameters The user should provide: - **Company Name** (required) - **Currency** (optional, defaults to USD) --- ## Step 1 — Resolve the target company and peers Call `findEntity` with the company name. Store the canonical entity name and ID. Then call `getEntityPeers` for the target to get up to 3 peers. Call `findEntity` for each peer to resolve their entity IDs. --- ## Step 2 — Read the template Read `assets/template.html` (relative to this skill directory) once. Keep its exact structure — CSS, `<head>`, hardcoded TOC, section order, table skeletons, row labels, and element IDs — as the scaffold for the final artifact. Do **not** copy it to the workspace and do **not** open it. --- ## Step 3 — Gather all data in parallel Fire ALL of the following in a **single parallel batch**. This is the heaviest step — launch everything at once. ### For the target company | Tool Call | Purpose | |-----------|---------| | `getCreditOpinion` (sections: Profile, Summary, CreditStrengths, CreditChallenges, FactorsLeadingToUpgrade, FactorsLeadingToDowngrade, KeyIndicatorsTable, ScorecardTable, ESGConsiderations) | Credit profile, strengths/challenges, financials, ESG | | `getEntityFinancials` | Primary source for historical financials (3 full fiscal years + LTM) and valuation table data | | `getEntityRatings` | Current rating, outlook, historical ratings | | `getEntitySectorOutlook` | Sector outlook | | `searchEntityDocuments` with "Credit Opinion" | Credit opinion documents | | `searchEntityDocuments` with "Business units, Segment Revenue, Profile, Segments, Revenue Drivers" | Business segment data | | `searchCompanyFilings` with "segment revenue, business segments, revenue by segment" | Per-segment revenue from annual/quarterly filings to populate Business Segments and Operations section | | `searchEntityDocuments` with "Risk factors, competitive pressures, market volatility, regulatory compliance, litigation" | Risk analysis | | `searchEntityDocuments` with "Leverage, Debt, Liquidity, Credit Facilities, Coverage, Ratings, Outlook" | Credit profile data | | `searchEntityEarningsCall` with "Target Market, Services, Products, Mission, Vision, Markets, Geographies, Revenue" | Company overview from earnings call | | `searchEntityEarningsCall` with "Business units, Segment Revenue, Drivers, Revenue Drivers, Earnings" | Business segments from earnings call | | `searchEntityEarningsCall` with "Market Size, Growth Rate, Demand, Competition, Market Share, Regulation, Trends" | Industry analysis | | `searchEntityEarningsCall` with "Share, Stock, Price, Market capitalization, Earnings per share, Dividend, Valuation" | Share price data | | `searchEntityEarningsCall` with "Risk factors, competitive pressures, market volatility, economic uncertainty" | Risks from earnings call | | `searchEntityEarningsCall` with "merger, acquisitions, strategic developments, alliances, partnerships" | Strategic developments | | `searchNews` with "{Company} Market, Industry Overview and Trends" | Industry news | | `searchNews` with "{Company} merger, acquisitions, strategic developments" | M&A news | | `searchNews` with "{Company} Share, Stock, Price, Valuation" | Share price news | | `searchNews` with "{Company} Management, governance, leadership" | Management news | | `getEntityManagersDirectors` | Names and roles of current managers and directors for Management & Governance section | ### For each peer (up to 3 peers) | Tool Call | Purpose | |-----------|---------| | `getCreditOpinion` (Profile, KeyIndicatorsTable, CreditStrengths, CreditChallenges, FactorsLeadingToUpgrade, FactorsLeadingToDowngrade, ScorecardTable, ESGConsiderations) | Peer comparison data + ESG | | `getEntityFinancials` | Peer valuation and financial data for Share Price Performance and Valuation section | | `getEntityRatings` | Peer ratings | --- ## Step 4 — Synthesize + emit the complete artifact Use Moody's internal research as the **primary foundation**. Earnings call data and news supplement. Write in professional credit-research language with numbered citation references inline in narrative text. The exact inline markup, the URL-less fallback, and the rule that `n` matches the row position of the source inside `#pib-sources` are defined in [skills/shared/citations/SKILL.md](../shared/citations/SKILL.md) — read it before authoring any `[n]` reference. After data is gathered, produce **one** final assistant message. The message contains: 1. A one-line summary sentence (e.g. `Issuer Brief for {Target Company}:`). 2. A single fenced ` ```html ` code block containing the **entire filled `template.html` document** — with every element from the streaming protocol populated in place. No partial documents, no separate code blocks per section. The code block **must**: - Start at column 0 with ` ```html ` and end with a closing ` ``` ` on its own line. - Contain a complete, standalone HTML document (doctype → `</html>`) that renders without external dependencies. - Preserve the template's `<head>` (CSS, fonts), hardcoded TOC, section order, table skeletons, row labels, and element IDs exactly. Only the empty targets defined below are populated. Render order of content inside the code block follows the page top-to-bottom so the artifact is human-readable as well as browser-renderable. ### Cover + footer 1. `#pib-cover-company` — plain text, canonical target name. 2. `#pib-company` — plain text target name. 3. `#pib-date` — report date, e.g. `April 15, 2026`. 4. `#pib-footer-date` — same date string. ### Section 1 — Company Overview 5. `#pib-overview-kpi` — KPI scorecard strip: a row of exactly 4 metric cards rendered as an inline SVG (`width="780" height="90"`). Each card shows a metric name (top, small caps) and value (bottom, bold). Source the four metrics from `getEntityFinancials` and `getEntityRatings`: (1) Revenue (LTM, in billions, e.g. `$412.3B`), (2) EBITDA Margin (LTM, e.g. `31.2%`), (3) Net Debt / EBITDA (LTM, e.g. `1.8×`), (4) Moody's Rating (current long-term rating,
Voir sur GitHub
Ce SKILL.md est tres volumineux, SkillsMP affiche donc ici seulement la premiere section. Voir sur GitHub