{"id":9598,"plugin_id":"plugin_asdk_app_6a215179debc8191a28dd0f3723c0646","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T22:55:15.087Z","digest":"8727ed7c0bebb79798da28810165887d1a2244182775ec9446d7c04aad6185ec","against":null,"payload":{"name":"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\".","included_files":[{"relative_path":"__MACOSX/._SKILL.md","size_in_bytes":163},{"relative_path":"__MACOSX/._assets","size_in_bytes":163},{"relative_path":"__MACOSX/._evals","size_in_bytes":163},{"relative_path":"__MACOSX/._references","size_in_bytes":163},{"relative_path":"__MACOSX/assets/._template.html","size_in_bytes":163},{"relative_path":"__MACOSX/evals/._evals.json","size_in_bytes":163},{"relative_path":"__MACOSX/references/._report-spec.md","size_in_bytes":163},{"relative_path":"__MACOSX/references/._shared-citations.md","size_in_bytes":163},{"relative_path":"__MACOSX/references/._shared-template.md","size_in_bytes":163},{"relative_path":"assets/template.html","size_in_bytes":28606},{"relative_path":"evals/evals.json","size_in_bytes":4423},{"relative_path":"references/report-spec.md","size_in_bytes":27721},{"relative_path":"references/shared-citations.md","size_in_bytes":5814},{"relative_path":"references/shared-template.md","size_in_bytes":8111}],"skill_md_contents":"---\nname: issuer-brief\ndescription: >\n  Produce a comprehensive Issuer Brief HTML report for a company using Moody's\n  GenAI MCP tools. Use this skill whenever the user asks to create an Issuer Brief,\n  company profile report, credit memo, investment book, or comprehensive company analysis. Also\n  trigger when they ask for a report combining company overview, financials, peer comparison,\n  industry overview, strategic developments, management, credit profile, risks, and ESG into a\n  single document. Trigger even if they just name a company and say \"Issuer Brief\", \"info book\", \"company\n  book\", \"credit book\", or \"full company report\".\n---\n\n# Issuer Brief Skill\n\nGenerates a professional HTML report (styled like a Moody's Issuer Brief) for a\ntarget company. The report consolidates data from multiple Moody's MCP tools, annual/quarterly\nreports, earnings calls, and news into 11 structured sections plus a pre-rendered table of\ncontents. Section 4 is titled \"Company Metrics\" (formerly \"Share Price Performance and Valuation\").\n\nThe workflow is **single-artifact delivery**: gather all data, then write the entire filled\nHTML document to a single `.html` file in `/mnt/user-data/outputs/` and actively render it to\nthe user with **both** `present_files` and `visualize:show_widget`. The rendered HTML artifact\nis the deliverable — writing the file without rendering it is a failed run.\n\n> ## ⚠️ CRITICAL — NON-NEGOTIABLE OUTPUT CONTRACT\n>\n> **The LLM MUST deliver the final report as a single standalone HTML artifact file that it\n> then actively renders on screen.** Creating the file is only half the job — a file that is\n> written but never surfaced is a failed run, and is the single most common failure mode for\n> this skill. Specifically:\n>\n> - The LLM **MUST** write the **complete, standalone HTML document** (`<!doctype html>` →\n>   `</html>`), with every section from the streaming protocol populated inline, to a single\n>   `.html` file in `/mnt/user-data/outputs/` using the `create_file` tool.\n> - The LLM **MUST** then render that file with **both** display tools — `present_files`\n>   **and** `visualize:show_widget` — before ending its turn. Firing both renderers is what\n>   guarantees the report always appears even if one tool is unavailable.\n> - The LLM **MUST NOT** end its turn after `create_file` without having called the display tools.\n> - The LLM **MUST NOT** emit the report inline as a fenced ` ```html ` code block, as prose,\n>   Markdown, JSON, attachments, or links. The rendered HTML artifact itself is the answer.\n> - The LLM **MUST NOT** split the report across multiple files, multiple messages, partial\n>   snippets, or summaries.\n> - If data gathering fails partially, still produce the single HTML artifact file with the\n>   best-available content and `\"--\"` placeholders for missing cells — never skip the artifact\n>   or the render step.\n>\n> Treat any other output shape as a hard failure of the skill.\n\n> ## ⚠️ CRITICAL — NO ESTIMATED OR APPROXIMATED NUMBERS ALLOWED\n>\n> **Every numeric value in the report — in tables, charts, KPI cards, prose, and SVGs — MUST\n> come directly from a Moody's MCP tool response or a company filing retrieved via\n> `searchCompanyFilings`.** Estimation, approximation, interpolation, and inference from\n> indirect sources are strictly forbidden. Specifically:\n>\n> - **NEVER** write `~`, `approx.`, `estimated`, or any similar qualifier next to a number.\n>   If the exact figure is unavailable from the data gathered, use `\"--\"` instead.\n> - **NEVER** derive a number by splitting, distributing, or back-calculating from an aggregate\n>   (e.g. do not allocate total debt across maturity buckets by assumption).\n> - **NEVER** invent segment revenue, EPS, FCF, ROE, debt maturity amounts, or any other\n>   metric that was not explicitly returned by a tool call.\n> - **Charts are not exempt**: every bar height, data point, and label in every SVG chart\n>   (KPI scorecard, rating timeline, segment revenue bar, debt maturity bar) must map 1-to-1\n>   to a value returned by a tool. If tool data is insufficient to build a chart accurately,\n>   omit the chart and leave the container empty rather than render fabricated values.\n> - **Peer data is not exempt**: only populate peer columns with values explicitly returned\n>   by `getCreditOpinion`, `getEntityFinancials_v2`, or `getEntityRatings` for that peer.\n>\n> Treat any estimated or approximated number in the emitted report as a hard failure of the skill.\n\n## Required MCP server\n\n`Moodys MCP server` — tools used: `findEntity`, `getEntityPeers`, `getEntityRatings`,\n`getCreditOpinion`, `getEntitySectorOutlook`, `searchAllDocuments`,\n`searchEntityEarningsCall`, `searchNews`, `getEntityFinancials_v2`, `getEntityManagersDirectors`,\n`searchCompanyFilings`.\n\nIf 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. \n\n> ESG data (CIS, E, S, G) comes from `getCreditOpinion` via the `ESGConsiderations` section.\n\n## Bundled files\n\n- `assets/template.html` — self-contained static report shell: CSS, layout, a hardcoded 11-entry\n  table of contents, pre-shaped tables (financial / 5 valuation / key-indicators / ESG-score)\n  with cell-level IDs, and empty targets (containers, `<tbody>`, `<ul>`, `<div>`) for variable\n  content. Treat this file as the **read-only structural reference**: read it, fill it in\n  mentally, and emit the complete filled document in the final response.\n\n## Shared chrome & citations\n\nBefore emitting, read [`references/shared-template.md`](references/shared-template.md) (page\nchrome: cover, TOC, section block, sources-section wrapper, footer, outlook-badge, design\ntokens) and [`references/shared-citations.md`](references/shared-citations.md) (citation\nnumbering, hyperlinking, source data shape, markup snippets). Both are **authoritative** — do\nnot invent, duplicate, or restyle anything they already define. The canonical CSS is already\ninlined in `assets/template.html` between the `/* BEGIN/END shared-template-css */` and\n`/* BEGIN/END shared-citations-css */` markers; never re-copy it at emit time.\n\nThe rest of this section is the skill-specific binding.\n\nThis skill uses the **`cover-simple`** variant. Skill-specific overrides retained above the\nmarker region: `**body { font-size: 12.5px }**` (PIB renders denser financial tables than the\n13px canonical default) and `**.page { max-width: 920px }**` (slightly wider than the 900px\ncanonical default). Skill-specific CSS that stays local: `table.data-table`, `table.fin-table`,\nand the PIB chart helper (`.chart-container` PIB variant — centered, no background).\n\n**Chart spacing rule:** Every `.chart-container` must have `margin-top: 28px` (increased from the\ntemplate default of 16px) so that visualization titles do not visually merge with the preceding\nsection or subsection headings. When emitting the final HTML, ensure the `.chart-container` CSS\nrule reads `.chart-container { margin: 28px 0 20px; text-align: center; }` — update the value\nin the `<style>` block if it differs from the template default.\n\n**Outlook-badge migration.** PIB previously shipped a solid-fill `.outlook-badge` styling\n(white text on solid `--green` / `--red` / `--amber` / `--accent` backgrounds) inside its own\ntemplate. That carve-out has been **removed**. PIB now inherits the canonical pastel variant\nfrom the shared skill — pastel background + colored text, with the same five class variants\n(`stable` / `positive` / `negative` / `review` / `na`) used everywhere else. Do not re-define\n`.outlook-badge` rules locally and do not emit inline `style=\"...\"` overrides on outlook\nbadges. The `--green`, `--red`, `--amber` custom properties are no longer present and must not\nbe referenced anywhere in the emitted HTML.\n\nSkill-specific carve-out: **never put citation markup inside data cells** (financial,\nvaluation, key-indicators, rating, risk, or ESG tables). The prefix used for the\nend-of-document container in this skill is `pib`, so the container id is `#pib-sources`.\nPer-section recap blocks live in `#pib-cite-a` … `#pib-cite-k`, mapped one-to-one to the\neleven report sections in document order; the full letter→section mapping and recap rules\nare in [`references/report-spec.md`](references/report-spec.md). Each recap reuses the global\n`[n]` numbering and is left empty when its section carries no inline citations.\n\n## Parameters\n\nThe user should provide:\n- **Company Name** (required)\n- **Currency** (optional, defaults to USD)\n\n---\n\n## Step 1 — Resolve the target company and peers\n\nCall `findEntity` with the company name. Store the canonical entity name and ID.\nThen call `getEntityPeers` for the target to get up to 3 peers. Call `findEntity`\nfor each peer to resolve their entity IDs.\n\n---\n\n## Step 2 — Read the template\n\nRead `assets/template.html` (relative to this skill directory) once. Keep its exact structure —\nCSS, `<head>`, hardcoded TOC, section order, table skeletons, row labels, and element IDs — as\nthe scaffold for the final artifact. Do **not** copy it to the workspace and do **not** open it.\n\n---\n\n## Step 3 — Gather all data in parallel\n\nFire ALL of the following in a **single parallel batch**. This is the heaviest step — launch\neverything at once.\n\n### For the target company\n\n| Tool Call | Purpose |\n|-----------|---------|\n| `getCreditOpinion` (sections: Profile, Summary, CreditStrengths, CreditChallenges, FactorsLeadingToUpgrade, FactorsLeadingToDowngrade, KeyIndicatorsTable, ScorecardTable, ESGConsiderations) | Credit profile, strengths/challenges, financials, ESG |\n| `getEntityFinancials_v2` | Primary source for historical financials (3 full fiscal years + LTM) and valuation table data |\n| `getEntityRatings` | Current rating, outlook, historical ratings |\n| `getEntitySectorOutlook` | Sector outlook |\n| `searchAllDocuments` with \"Credit Opinion\" | Credit opinion documents |\n| `searchAllDocuments` with \"Business units, Segment Revenue, Profile, Segments, Revenue Drivers\" | Business segment data |\n| `searchCompanyFilings` with \"segment revenue, business segments, revenue by segment\" | Per-segment revenue from annual/quarterly filings to populate Business Segments and Operations section |\n| `searchAllDocuments` with \"Risk factors, competitive pressures, market volatility, regulatory compliance, litigation\" | Risk analysis |\n| `searchAllDocuments` with \"Leverage, Debt, Liquidity, Credit Facilities, Coverage, Ratings, Outlook\" | Credit profile data |\n| `searchEntityEarningsCall` with \"Target Market, Services, Products, Mission, Vision, Markets, Geographies, Revenue\" | Company overview from earnings call |\n| `searchEntityEarningsCall` with \"Business units, Segment Revenue, Drivers, Revenue Drivers, Earnings\" | Business segments from earnings call |\n| `searchEntityEarningsCall` with \"Market Size, Growth Rate, Demand, Competition, Market Share, Regulation, Trends\" | Industry analysis |\n| `searchEntityEarningsCall` with \"Share, Stock, Price, Market capitalization, Earnings per share, Dividend, Valuation\" | Share price data |\n| `searchEntityEarningsCall` with \"Risk factors, competitive pressures, market volatility, economic uncertainty\" | Risks from earnings call |\n| `searchEntityEarningsCall` with \"merger, acquisitions, strategic developments, alliances, partnerships\" | Strategic developments |\n| `searchNews` with \"{Company} Market, Industry Overview and Trends\" | Industry news |\n| `searchNews` with \"{Company} merger, acquisitions, strategic developments\" | M&A news |\n| `searchNews` with \"{Company} Share, Stock, Price, Valuation\" | Share price news |\n| `searchNews` with \"{Company} Management, governance, leadership\" | Management news |\n| `getEntityManagersDirectors` | Names and roles of current managers and directors for Management & Governance section |\n\n### For each peer (up to 3 peers)\n\n| Tool Call | Purpose |\n|-----------|---------|\n| `getCreditOpinion` (Profile, KeyIndicatorsTable, CreditStrengths, CreditChallenges, FactorsLeadingToUpgrade, FactorsLeadingToDowngrade, ScorecardTable, ESGConsiderations) | Peer comparison data + ESG |\n| `getEntityFinancials_v2` | Peer valuation and financial data for Share Price Performance and Valuation section |\n| `getEntityRatings` | Peer ratings |\n\n---\n\n## Step 4 — Synthesize + emit the complete artifact\n\nUse Moody's internal research as the **primary foundation**. Earnings call data and news\nsupplement. Write in professional credit-research language with numbered citation references\ninline in narrative text. The exact inline markup, the URL-less fallback, and the rule that\n`n` matches the row position of the source inside `#pib-sources` are defined in\n[references/shared-citations.md](references/shared-citations.md) — read it before authoring\nany `[n]` reference.\n\nAfter data is gathered, write the **entire filled `template.html` document** — with every\nelement from the streaming protocol populated in place — to a single `.html` file in\n`/mnt/user-data/outputs/`, then render it. The full required delivery sequence (`create_file`\n→ `present_files` → `visualize:show_widget` → one short sentence) is specified in the\n**Step 5 — Output and presentation** section below; follow it exactly.\n\nThe HTML file **must**:\n\n- Be written in a single `create_file` call (no progressive `StrReplace` edits, no multi-file\n  split).\n- Contain a complete, standalone HTML document (doctype → `</html>`) that renders without\n  external dependencies.\n- Preserve the template's `<head>` (CSS, fonts), hardcoded TOC, section order, table\n  skeletons, row labels, and element IDs exactly. Only the empty targets defined below are\n  populated.\n\nRender order of content inside the file follows the page top-to-bottom so the artifact is\nhuman-readable as well as browser-renderable.\n\n### Cover + footer\n\n1. `#pib-cover-company` — plain text, canonical target name.\n2. `#pib-company` — plain text target name.\n3. `#pib-date` — report date, e.g. `April 15, 2026`.\n4. `#pib-footer-date` — same date string.\n\n### Section-by-section authoring (Sections 1–11)\n\nBefore emitting, read [`references/report-spec.md`](references/report-spec.md) for the full\nper-section element specs — every `#pib-*` target for Sections 1 through 11 (Company\nOverview, Business Segments and Operations, Historical Financials, Company Metrics, Peer\nComparison and Competitive Landscape, Industry Overview and Trends, Strategic Developments,\nManagement and Governance, Credit Profile, Risks and Challenges, ESG Profile), the exact SVG\nlayout constants for each chart, the financial-table row/column mapping, and the\n`#pib-sources` Citations rows. Populate every target exactly as specified there, honoring the\nno-estimation contract above.\n\n---\n\n## Step 5 — Output and presentation (required final steps)\n\n> ## ⚠️ CRITICAL — THE SKILL IS NOT COMPLETE UNTIL THE REPORT IS VISIBLY RENDERED\n>\n> Writing the file is **not** delivery. After you write the HTML you **must** actively render\n> it with every display tool available, in order, before you say anything else. Do not end\n> your turn until the rendered report is on screen.\n\nFollow this exact sequence. Do not skip a step, reorder, or substitute alternatives:\n\n1. **Write the HTML file in a single call.** Call `create_file` to write the entire standalone\n   HTML document (`<!doctype html>` → `</html>`) to\n   `/mnt/user-data/outputs/{company_slug}_issuer_brief.html` in **one** call. No progressive\n   edits, no multi-file split.\n2. **Present the file.** Immediately call `present_files` on that exact path to surface the\n   artifact to the user.\n3. **Show the widget.** Immediately call `visualize:show_widget` on the same file to render the\n   report visually. Call this even if `present_files` already succeeded — firing both renderers\n   is what guarantees the report always appears.\n4. **Confirm in one short sentence.** Only after the renderers return, add a single brief\n   sentence in chat (e.g. `Issuer Brief for {Target Company} — the report is available above as\n   a self-contained HTML artifact.`). Nothing more.\n\nIf a display tool call fails or is unavailable, immediately try the other one rather than\nstopping. Never end your turn at step 1, and never paste the HTML into chat or suggest shell\ncommands.\n\n---\n\n## Streaming protocol, markup snippets & chart templates\n\nThe element → content mapping table, the reference markup snippets (financial row, peers\ntable / rating rows, rating-table row, risk-table row, segment bullet, strategy bullet), the\nSVG chart templates (KPI scorecard, rating step-line, segment revenue bar, debt-maturity bar,\nPorter's Five Forces diagram, management cards) with their layout constants and palette, and\nthe class-selection rules all live in\n[`references/report-spec.md`](references/report-spec.md). Read it before emitting any `#pib-*`\ncontent or chart. The debt-maturity and segment charts require `searchCompanyFilings` data —\nleave the container empty rather than fabricate values.\n\n## Tips\n\n- Run ALL research searches in a single parallel batch to minimize latency.\n- **No estimated or approximated numbers anywhere in the report.** Every figure in tables,\n  charts, KPI cards, and prose must come directly from a tool response; use `\"--\"` when a\n  value is unavailable. See the CRITICAL no-estimation block above.\n- **`searchCompanyFilings` is a required call** for the debt-maturity and segment-revenue\n  charts. If it does not return the per-year schedule or segment breakdown, leave the chart\n  container empty rather than fabricate values.\n- Target company appears first in every table and comparison; reuse the same column labels\n  across the valuation / key-indicators tables. Financial values are in millions; never hide\n  a row. If fewer than 3 peers are returned, leave unused columns/cells blank — do not\n  collapse the tables.\n- Emit each chart SVG directly into its container — the template does not render charts at\n  load time. Exact placement, layout constants, and the Section 4 / `#pib-val-1-*` omissions\n  are in [`references/report-spec.md`](references/report-spec.md).\n- Citation references `[n]` go inline in narrative text per\n  [references/shared-citations.md](references/shared-citations.md); never inside table cells.\n  Each section's optional `#pib-cite-{a..k}` recap reuses the global numbering.\n- Deliver the report as **one** `.html` file in `/mnt/user-data/outputs/`, then render it with\n  **both** `present_files` and `visualize:show_widget` (see Step 5). Never paste it as a fenced\n  ` ```html ` code block, never split across files or messages, and never stop at file creation.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}