Create Rich Text Editor Custom Node
getlago/lago-front
Create a new custom TipTap node for the Rich Text Editor that works in edit mode, on-screen preview, and PDF download.
Self-contained styled HTML reports written to the task directory: PDF-exportable research documents with inline data, charts, and theme-aware CSS
$ npx skills add ginlix-ai/LangAlpha --skill html-report -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ginlix-ai/LangAlpha html-report --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ginlix-ai/LangAlpha.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/langalpha_deliverables/skills/html-report .claude/skills/html-report && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "html-report" agent skill from https://github.com/ginlix-ai/LangAlpha/tree/main/plugins/langalpha_deliverables/skills/html-report into .claude/skills/html-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-report", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ginlix-ai/LangAlpha/tree/main/plugins/langalpha_deliverables/skills/html-reportType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ginlix-ai/LangAlpha --skill html-report -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ginlix-ai/LangAlpha html-report --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ginlix-ai/LangAlpha.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/langalpha_deliverables/skills/html-report .agents/skills/html-report && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "html-report" agent skill from https://github.com/ginlix-ai/LangAlpha/tree/main/plugins/langalpha_deliverables/skills/html-report into .agents/skills/html-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-report", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ginlix-ai/LangAlpha --skill html-report -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ginlix-ai/LangAlpha html-report --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ginlix-ai/LangAlpha.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/langalpha_deliverables/skills/html-report .cursor/skills/html-report && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "html-report" agent skill from https://github.com/ginlix-ai/LangAlpha/tree/main/plugins/langalpha_deliverables/skills/html-report into .cursor/skills/html-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-report", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ginlix-ai/LangAlpha.git --path plugins/langalpha_deliverables/skills/html-report--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ginlix-ai/LangAlpha --skill html-report -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ginlix-ai/LangAlpha html-report --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ginlix-ai/LangAlpha.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/langalpha_deliverables/skills/html-report .gemini/skills/html-report && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "html-report" agent skill from https://github.com/ginlix-ai/LangAlpha/tree/main/plugins/langalpha_deliverables/skills/html-report into .gemini/skills/html-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-report", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ginlix-ai/LangAlpha html-reportInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ginlix-ai/LangAlpha --skill html-report -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ginlix-ai/LangAlpha.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/langalpha_deliverables/skills/html-report .github/skills/html-report && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "html-report" agent skill from https://github.com/ginlix-ai/LangAlpha/tree/main/plugins/langalpha_deliverables/skills/html-report into .github/skills/html-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-report", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ginlix-ai/LangAlpha --skill html-report -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ginlix-ai/LangAlpha html-report --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ginlix-ai/LangAlpha.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/langalpha_deliverables/skills/html-report .opencode/skills/html-report && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "html-report" agent skill from https://github.com/ginlix-ai/LangAlpha/tree/main/plugins/langalpha_deliverables/skills/html-report into .opencode/skills/html-report/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "html-report", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
html-reportSelf-contained styled HTML reports written to the task directory: PDF-exportable research documents with inline data, charts, and theme-aware CSS
HTML Report is an agent skill from ginlix-ai/LangAlpha. Self-contained styled HTML reports written to the task directory: PDF-exportable research documents with inline data, charts, and theme-aware CSS
Its SKILL.md is about 4.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Documents & Office, covering PDF. The repository describes itself as: Claude Code for Financial Market. The licence is Apache-2.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e05bd91. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are css, html and python).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
cdn.jsdelivr.netFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
HTML Report loads about 4.3k tokens when it runs. Until then it costs about 39 tokens; SKILL.md has 1,752 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ginlix-ai/LangAlpha at commit e05bd91, republished under its Apache-2.0 licence (© ginlix-ai). 1,752 words, ~4,314 tokens.
.claude/skills/html-report/SKILL.md (or your agent's skills folder).Author a styled, self-contained HTML document and write it into the task directory (e.g. amd_analysis/report.html). The file panel renders it with full browser semantics — JavaScript runs, CDN libraries load, relative assets resolve, and the user can view it fullscreen, open it in a new tab, download it, or export it to PDF.
This is the right output when the user wants a deliverable they can keep, share, or print — an equity research note, an earnings recap, a screen writeup — not a throwaway answer.
Read
.agents/skills/ui-design/SKILL.mdbefore authoring. It defines the typography, color, and composition standards that keep the report looking like a research desk artifact rather than a generic AI page. This skill covers the mechanics; that one covers the taste.
User preferences override these defaults. Anything the user has told you — in this conversation, in your long-term memory, or in their saved preferences/memos — outranks every rule in this skill. If they want a different structure, no charts, a specific set of sections, or a particular file layout, do that. (Visual taste — fonts, color, accent, light/dark — is
.agents/skills/ui-design/SKILL.md's domain; that skill defers to the user's stated style.) Treat the rules here as sensible defaults for when the user hasn't specified.
A report from this skill can be interactive (sortable tables, tab/filter controls, hover- and zoomable charts — see Interactivity, below). So interactivity is not what separates it from a dashboard. The real divide is self-contained snapshot file vs. live served app:
| Want | Use | Why |
|---|---|---|
| A document the user keeps, shares, or exports to PDF — even one that's interactive within itself | html-report (this skill) — .html in <task_name>/ | One file on disk, served with real semantics, PDF-exportable. Interactivity runs client-side over an embedded data snapshot. |
| A quick visualization inside the chat (one chart, a metric row, a table) | inline-widget (ShowWidget) | Appears inline between text; no file, no panel |
| A live served app — refreshing data, server-side compute, multi-page routing, or a dataset too large to embed | interactive-dashboard (GetPreviewUrl) | A running app with a backend, not a static file. Needed when the data must be fetched live, not embedded. |
| A simple, short answer | plain markdown | A styled HTML document is overkill for a one-paragraph reply |
Write one complete HTML file. Everything inline — no external CSS/JS files, no build step.
import json
data = {"labels": ["Q1", "Q2", "Q3", "Q4"], "revenue": [2.1, 2.4, 2.6, 3.0]}
html = f"""<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Acme Q4 Revenue Review</title>
<style>/* all CSS inline here */</style>
</head>
<body>
<main>...</main>
<script>const DATA = {json.dumps(data, ensure_ascii=False)};</script>
<script>/* render charts from DATA */</script>
</body>
</html>"""
with open("<task_name>/report.html", "w", encoding="utf-8") as f:
f.write(html)Rules:
<!DOCTYPE html> document with <head>/<body> (unlike inline-widget, which is a bare fragment).<style> block, all JS in <script> blocks — nothing external except allowlisted CDN libraries.<script>const DATA = {json.dumps(data, ensure_ascii=False)};</script> — never inline raw Python dicts, never fetch() a local file. ensure_ascii=False keeps non-ASCII (names, currencies, CJK) readable and correctly encoded.The viewer serves files with real relative-path semantics, so a report can reference sibling assets and they resolve correctly:
amd_analysis/
report.html # references charts/revenue.png as a relative path
charts/
revenue.png
margins.pngThe charts are already there: <task_name>/charts/ is where you saved them
during the analysis, and the report sits beside that directory. Nothing is copied.
<img src="charts/revenue.png" alt="Quarterly revenue" style="width:100%;max-width:720px;">Use multi-file for image-heavy reports — e.g. when you've generated high-quality static charts with matplotlib/plotly savefig and want to embed them rather than redraw client-side.
Rules:
charts/revenue.png, never a leading slash, never an absolute filesystem path).DATA; reach for multi-file when raster images give materially better output.Only these origins are reachable from the rendered document. Anything else (including arbitrary fetch()) is blocked.
cdnjs.cloudflare.comcdn.jsdelivr.netunpkg.comesm.shfonts.googleapis.com + fonts.gstatic.comLoad chart libraries, fonts, and helpers from these only. Do not call out to data APIs from the document — embed the data instead.
The viewer can inject app --color-* variables so the report themes with light/dark mode. Always author colors in the fallback form so the document also renders correctly standalone, in a downloaded file, and in print:
color: var(--color-text-primary, var(--fb-text-primary));
background: var(--color-bg-card, var(--fb-bg-card));
border: 1px solid var(--color-border-muted, var(--fb-border-muted));The fallback is what shows when no app vars are injected (downloaded file, PDF, plain open). Point it at a private --fb-* variable from the block below so a standalone document follows the reader's OS light/dark preference instead of guessing one theme. Never write a bare var(--color-x) without a fallback, and never hardcode a color with no variable — both break one of the surfaces.
Define the fallback palette once at the top of your <style>. The private --fb-* names can never collide with — or override — the injected app tokens:
:root {
color-scheme: light dark; /* scrollbars and form controls follow the palette */
--fb-bg-page: #fbfaf8; --fb-bg-card: #ffffff; --fb-bg-elevated: #ffffff;
--fb-bg-subtle: #f4f2ee; --fb-bg-hover: #efece7;
--fb-text-primary: #1a1a1a; --fb-text-secondary: #5a5a5a; --fb-text-tertiary: #8a8a8a;
--fb-border-muted: #e4e1dc; --fb-accent-primary: #1f5fb4;
--fb-profit: #1a7f4f; --fb-loss: #b42318; --fb-warning: #b7791f;
--fb-info: #1f5fb4; --fb-success: #1a7f4f;
}
@media (prefers-color-scheme: dark) {
:root {
--fb-bg-page: #0f1117; --fb-bg-card: #1a1d27; --fb-bg-elevated: #20242f;
--fb-bg-subtle: #161a24; --fb-bg-hover: #252a36;
--fb-text-primary: #e8e8e8; --fb-text-secondary: #9ca3af; --fb-text-tertiary: #6b7280;
--fb-border-muted: #262a33; --fb-accent-primary: #5b9bff;
--fb-profit: #3fb37a; --fb-loss: #f0685a; --fb-warning: #d69e2e;
--fb-info: #5b9bff; --fb-success: #3fb37a;
}
}Reuse the same variable names as the inline-widget skill:
| Variable | Purpose | Light --fb-* value |
|---|---|---|
--color-bg-page | Page background | #fbfaf8 |
--color-bg-card | Card/panel background | #ffffff |
--color-bg-elevated | Elevated surface | #ffffff |
--color-bg-subtle | Subtle/muted background | #f4f2ee |
--color-bg-hover | Hover state background | #efece7 |
--color-text-primary | Primary text | #1a1a1a |
--color-text-secondary | Secondary/muted text | #5a5a5a |
--color-text-tertiary | Hint/label text | #8a8a8a |
--color-border-muted | Default border (hairline) | #e4e1dc |
--color-accent-primary | Brand/accent color | #1f5fb4 |
--color-profit | Positive/gain (green) | #1a7f4f |
--color-loss | Negative/loss (red) | #b42318 |
--color-warning | Warning (amber) | #b7791f |
--color-info | Info (blue) | #1f5fb4 |
--color-success | Success (green) | #1a7f4f |
Load Chart.js or ECharts from CDN. Canvas pixels cannot read CSS variables, so resolve colors via getComputedStyle with a fallback chain for the standalone/print case:
<div style="position: relative; height: 320px;">
<canvas id="revChart"></canvas>
</div>
<script src="https://cdn.jsdelivr.net/npm/chart.js@4/dist/chart.umd.min.js"></script>
<script>
var cs = getComputedStyle(document.documentElement);
// App token if injected, else the OS-adaptive --fb-* value, else the literal.
function pick(name, fallback) {
var v = cs.getPropertyValue(name).trim()
|| cs.getPropertyValue(name.replace('--color-', '--fb-')).trim();
return v || fallback;
}
var accent = pick('--color-accent-primary', '#1f5fb4');
var border = pick('--color-border-muted', '#e4e1dc');
new Chart(document.getElementById('revChart'), {
type: 'line',
data: { labels: DATA.labels, datasets: [{ data: DATA.revenue, borderColor: accent, backgroundColor: accent + '22', tension: 0.3, fill: true }] },
options: {
responsive: true,
maintainAspectRatio: false,
animation: { duration: 400 },
scales: { y: { grid: { color: border } }, x: { grid: { display: false } } }
}
});
</script>Rules:
<div>, never on the <canvas>.responsive: true, maintainAspectRatio: false always.getComputedStyle + fallback chain (the pick() helper above) — never bare var() in canvas color strings..agents/skills/ui-design/SKILL.md — no rainbow defaults.The served document runs JavaScript, so a report can be interactive — and should be when interactivity genuinely helps the reader explore the data, not as decoration. All of it runs client-side over the embedded DATA snapshot; there is no server and no live refresh (that's interactive-dashboard).
Reach for interactivity when it earns its place:
Rules:
addEventListener, not inline onclick= / on*= attributes. It is the robust pattern across every surface and keeps logic out of the markup.DATA; never fetch() a data API (the CDN allowlist blocks it). If the data must be live or is too big to embed, that's a dashboard, not a report..no-print, and make collapsed content render expanded when printing so the PDF is complete. The @media print block below already hides button / .no-print.Match the effort to the data: a one-number recap needs no interactivity; a 40-holding portfolio or a multi-section deep-dive benefits a lot.
PDF export = the browser's print-to-PDF. Include an @media print block — without it, PDFs come out degraded. It should:
@media print {
/* hide interactive chrome — buttons, toolbars, nav, anything not part of the document */
.no-print, button, nav, .toolbar { display: none !important; }
/* keep logical blocks from splitting across pages */
section, figure, table, .card, .kpi { break-inside: avoid; page-break-inside: avoid; }
h1, h2, h3 { break-after: avoid; }
/* sane page setup */
@page { margin: 18mm 16mm; }
body { background: #fff; color: #000; }
/* never let entrance animations leave content invisible in the PDF */
*, *::before, *::after { animation: none !important; transition: none !important; opacity: 1 !important; }
/* collapse side-by-side layouts — paper is ~816px wide; squeezed columns
overlap charts and crush prose */
.row, .grid, .columns { display: block !important; }
.row > *, .grid > *, .columns > * { width: 100% !important; max-width: 100% !important; }
}If any element starts at opacity: 0 for an entrance animation, the opacity: 1 !important rule above is what stops the PDF from exporting blank — keep it. Test the print path before declaring done.
Multi-column layouts print badly. Print width is ~816 CSS px — a flex/grid row pairing a chart card with a text column does not fit and will overlap or crush. Either keep the document single-column throughout (safest for a report), or include print rules like the collapse block above for every side-by-side container you create. Chart wrappers keep their fixed height either way.
Landscape documents must declare it. If the content is genuinely wide (a comparison matrix, a wide timeline, a dashboard-style sheet), declare the orientation in the print block — PDF export honors it and lays the page out at landscape width (~1056 CSS px), so charts and columns size for the real paper:
@page { size: letter landscape; margin: 14mm 16mm; }Named sizes (a4, legal, ...) with optional landscape work too. Without a declaration, export is portrait Letter — don't design landscape-wide content and skip the declaration.
Print typography. Screen sizing usually reads too large on paper. Inside @media print, set print-affecting sizes in pt and tighten slightly:
@media print {
body { font-size: 10.5pt; line-height: 1.45; }
h1 { font-size: 17pt; } h2 { font-size: 13pt; } h3 { font-size: 11pt; }
.card, section { padding: 10pt 12pt; }
}Aim for 10–11pt body text — the register of a printed research note. Keep table cell padding compact (4pt 8pt) so wide tables fit. Page margins come from @page { margin: ... }, not body padding.
.agents/skills/ui-design/SKILL.md and commit to a typographic pairing + color direction.DATA, draw charts from it; add the @media print block.<task_name>/report.html (UTF-8). Image-heavy → reference the charts already in <task_name>/charts/*.png relatively as charts/*.png.Use the Quality Checklist below to verify before delivering.
<!DOCTYPE html> document; CSS and JS inline; only allowlisted CDNs referenced<script>const DATA = {json.dumps(..., ensure_ascii=False)}</script>; large datasets sampled/aggregatedvar(--color-role, #literalFallback) form — no bare var(), no unvariabled hardcodesmaintainAspectRatio: false, getComputedStyle + literal fallback for canvas colors@media print block present: hides chrome, break-inside: avoid, sane @page margins, animations/opacity neutralizedaddEventListener (no inline on*=), runs on embedded DATA (no live fetch), default state is meaningful, controls .no-print and collapsed content expands when printing.agents/skills/ui-design/SKILL.md (typography, single accent, profit/loss color discipline, no AI slop)<task_name>/; numbers correctly formatted; opened and print-previewed; cited to the user as a link© ginlix-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/langalpha_deliverables/skills/html-report of ginlix-ai/LangAlpha.
Open the folder on GitHubat commit e05bd91
HTML Report next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| HTML Report this skillginlix-ai/LangAlpha | 1.8k | — | ~4.3k | Automated safety check: Pass | Apache-2.0 | |
| Create Rich Text Editor Custom Nodegetlago/lago-front | 163 | — | ~2k | Automated safety check: Notes | AGPL-3.0 | |
| Frontend Textbooksonepixelaway/frontend-textbooks | 106 | — | ~3.5k | Automated safety check: Pass | MIT | |
| MarkitdownImCa0/just-laws | 782 | 14 repos | ~3.2k | Automated safety check: Notes | MIT | |
| Gzh Designisjiamu/gzh-design-skill | 3.9k | 1 repos | ~2.2k | Automated safety check: Pass | AGPL-3.0 | |
| Minimax PDFpoco-ai/poco-claw | 1.4k | 6 repos | ~2.1k | Automated safety check: Pass | MIT |
getlago/lago-front
Create a new custom TipTap node for the Rich Text Editor that works in edit mode, on-screen preview, and PDF download.
onepixelaway/frontend-textbooks
Turns a manuscript into a designed US Letter HTML book with a matching PDF, original cover art and checks that the manuscript text is preserved.
ImCa0/just-laws
Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.
isjiamu/gzh-design-skill
微信公众号文章排版引擎,将 Markdown 转换为可直接粘贴到公众号编辑器的 HTML。主题风格从 references/theme-index.md 注册的自定义主题库中选取,自动章节编号、关键词下划线标记、引言卡片、目录导航、代码块、图片/GIF、作者签名。支持 Markdown / Word(.docx) / PDF / 纯文本输入(非 Markdown…
poco-ai/poco-claw
A skill your agent uses when visual quality and design identity matter for a PDF.
genspark-ai/genoffice
Creates, converts, reads and edits real pptx, xlsx, docx and PDF files locally through the genoffice command line.
ginlix-ai/LangAlpha
Quality-checks an investment deck in .pptx form before it goes out: number consistency, chart and narrative alignment, source coverage, language and a circulation verdict.
ginlix-ai/LangAlpha
Produces a first-time equity research initiation report in five tasks: company research, financial model, valuation, charts and a DOCX report.
ginlix-ai/LangAlpha
Builds or repairs an integrated income statement, balance sheet and cash flow model in Excel with live formulas, supporting schedules, scenarios and a Checks sheet.
ginlix-ai/LangAlpha
Audits an existing Excel financial model without editing it, checking structure, formulas, integrity identities and source tie-out, and ends in a prioritized issue log.
ginlix-ai/LangAlpha
Builds a live Excel DCF valuation workbook with free cash flow projections, WACC, terminal value, three scenarios, sensitivity grids and a reverse DCF.
ginlix-ai/LangAlpha
Builds Word files with python-docx, edits existing ones in place with tracked changes and comments, then renders and validates the result.
Categories
Self-contained styled HTML reports written to the task directory: PDF-exportable research documents with inline data, charts, and theme-aware CSS. HTML Report is an agent skill from ginlix-ai/LangAlpha.
HTML Report fits situations like: tasks that involve PDF.
Run `npx skills add ginlix-ai/LangAlpha --skill html-report -a claude-code`. Or copy the skill folder (plugins/langalpha_deliverables/skills/html-report in ginlix-ai/LangAlpha) into .claude/skills/html-report in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ginlix-ai/LangAlpha --skill html-report -a codex`. Or copy the skill folder (plugins/langalpha_deliverables/skills/html-report in ginlix-ai/LangAlpha) into .agents/skills/html-report in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ginlix-ai/LangAlpha --skill html-report -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/html-report, .gemini/skills/html-report, .github/skills/html-report and .opencode/skills/html-report in your project.
SKILL.md names no scripts, command-line tools or credentials: HTML Report is instructions for the agent only. Our summary lists: Python 3.
SKILL.md names 1 domain. In commands or code: cdn.jsdelivr.net; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
HTML Report is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with HTML Report: Create Rich Text Editor Custom Node (getlago/lago-front, 163 stars), Frontend Textbooks (onepixelaway/frontend-textbooks, 106 stars), Markitdown (ImCa0/just-laws, 782 stars) and Gzh Design (isjiamu/gzh-design-skill, 3.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ginlix-ai (a GitHub organization) maintains it in ginlix-ai/LangAlpha, which has 1,811 GitHub stars. The repository holds 37 skills in this directory. The repository was last updated on October 9, 2026.
Source: ginlix-ai/LangAlpha on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.