k-report
CONVERT a given markdown summary (prose, lists, code, ```mermaid blocks) into ONE self-contained, opinionated, mobile-first (and desktop-friendly) dark HTML…
Skill by kodexArg
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/kodexarg-k-report
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, presentations, design, frontend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/k-report
What's inside
- Skill name
k-report- Description
- CONVERT a given markdown summary (prose, lists, code, ```mermaid blocks) into ONE self-contained, opinionated, mobile-first (and desktop-friendly) dark HTML artifact — meant to be sent over WhatsApp and opened on a phone. This skill CONVERTS markdown→HTML in a fixed format; it does NOT write, summarize, or research the content — the caller supplies the markdown, and if none is given the skill asks for it. Use when kodex asks for "un resumen en html", "reporte html", "dame esto en html para el celular/WhatsApp", a status report, concept explainer, comparison, stat highlight, or decision summary. Aesthetic is fixed ("Presentation Orange"): warm near-black, rationed orange glow, Nunito + DM Mono, Lucide icons, themed mermaid. Fast and deterministic — it fills templates, never improvises design.
- License
- MIT
- Instructions
- 197 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (17)
- SKILL.md
- EXTRACTED-DESIGN-SYSTEM.md · references/
- design-tokens.css · references/
- icons.md · references/
- interactive-compare.md · references/
- mermaid-guide.md · references/
- sample-figure.jpg · references/templates/assets/
- comparison-interactive.html · references/templates/
- comparison.html · references/templates/
- concept-explainer.html · references/templates/
- decision-summary.html · references/templates/
- stat-highlight.html · references/templates/
- status-report.html · references/templates/
- bad_braces.md · scripts/tests/
- golden_fixture.html · scripts/tests/
- good_themed.md · scripts/tests/
- validate_mermaid.py · scripts/
SKILL.md (first lines)
> [!info] In force on this repo (Team Party map)
> Remap mold citations: constitution [[adr-24-constitution]], layout [[adr-25-harness-layout]],
> agent contract [[adr-26-agent-contract]], guardians [[adr-27-guardians-and-delivery]].
> Product SSOT: `docs/constitution/PRD.md`. Do not invent station/product law.
# k-report
Convert a **given** markdown summary (prose, lists, code, and `mermaid` blocks)
into a single self-contained dark HTML file — mobile-first, also readable on
desktop — following the **Presentation Orange** design system. The output is one
`.html` opened on a phone over WhatsApp. **You fill templates; you do not invent
a new look.**
## Responsibility — read first
This skill has ONE job: **convert markdown → HTML in this fixed format.**
> [!important] Default source = your last answer
> When kodex invokes `/k-report` with **no markdown attached**, the content
> to convert is **the assistant's own immediately-preceding message** (the last
> substantive answer rendered to kodex before this invocation). Do **not** ask
> for content and do **not** re-summarize from scratch — take that last answer
> verbatim as the markdown input and convert it. Only ask if there is genuinely
> no prior assistant answer to grab (e.g. first turn). If kodex *does* attach
> markdown or a file path in the same turn, that explicit content wins over the
> last-answer default.
- It is **NOT** a summarizer, writer, or researcher. The markdown summary is an
**input** the caller provides (or, per the box above, the last answer). Do
**not** invent, expand, or fact-find the content — convert exactly what you're
given.
- Be **fast and deterministic**: no deliberation about design, no exploring
options. Fixed pipeline below, every time.
## The one rule
This skill is opinionated to the extreme. The aesthetic is settled and lives in
`references/`. Your job is: receive the markdown → pick a template → fill it with
that content → emit one file → validate → report its path. Do not change colors,
fonts, radii, or layout. Do not add frameworks. Do not improvise.
## Pipeline
1. **Read the design contract** (once): `references/design-tokens.css` is the
literal CSS you embed inline. `references/EXTRACTED-DESIGN-SYSTEM.md` is the
rationale (read only if a judgment call comes up — do not re-fetch any URL).
2. **Take the supplied markdown** (the caller's summary — never write your own).
If it's missing, ask for it and stop. Identify sections, code/diff blocks,
and any ```mermaid fences.
3. **Pick a template** from `references/templates/` (see mapping below). Copy it
as the skeleton.
4. **Fill it.** Replace placeholder content with the user's. Map markdown:
- `# / ##` → `<h1>/<h2>` (lowercase, kept lowercase by CSS).
- tiny eyebrow like `03 · QUÉ ES` → `<p class="kicker">`.
- paragraphs → `<p>`; `**bold**` → `<strong>`. **Ration `<strong>` hard** —
reserve it for the one genuinely load-bearing phrase in a passage, not every
key term. Most paragraphs should carry zero `<strong>`. Over-bolding flattens
emphasis and reads as noise.
- fenced ```lang code → `<pre><code>`; a diff (lines `+`/`-`) → `<pre class="diff">` with `<span class="add">` / `<span class="del">` per line.
- ```mermaid → `<div class="diagram"><pre class="mermaid">…</pre></div>` with the minimal `%%{init}%%` + the classDef component kit (see `references/mermaid-guide.md`), and the loader present. **HARD RULE: never emit `{{ }}` or `{ }` placeholders inside a mermaid block** — they collide with mermaid node syntax and break the parse. Write LITERAL, concrete lowercase labels at generation time. State diagrams: ids can't contain spaces/braces, use the `s1 : etiqueta` form. Style nodes with `class id hero|step|cool|ok|bad`, not themeVariables.
- the ONE conclusion of the report → `<div class="takeaway">` (solid orange
block, black type, hard contrast). At most one per report — it is loud on
purpose. Everything else stays flat prose.
- status words / tags → `<span class="chip ok|work|stop">`. Group two or more
tags in a `<div class="chips">…</div>` row (they wrap side by side) — prefer a
couple of short, specific tags over one long catch-all chip.
- keep the hero hook to ONE tight line — no trailing filler clauses ("· la idea
completa en cuatro pasos" and the like). The number, title and one hook line
carry the top; don't pad it.
- icons → inline Lucide SVG (`references/icons.md`); one accent icon per section, orange `.icon-lg` for a hero.
- **images** (only if the caller passes one) → `.figure` component (see Images below). One image per section, room around it.
5. **Emit ONE file.** All CSS inline (`design-tokens.css` verbatim inside
`<style>`), fonts via Google Fonts `<link>`, mermaid via CDN `<script>`,
icons inline SVG. No external CSS/JS files. **Exception:** interactive
compare reports may add one **inline** vanilla-JS block (IIFE tab switcher) —
see `references/interactive-compare.md`. **Never React** and no npm/bundler.
6. **Validation gate (mandatory).** See below — run it before saving/reporting.
7. **Save a local copy & report (MANDATORY — always).** ALWAYS persist the
artifact to disk before anything else downstream. There is **no** in-memory /
send-only path: every report MUST leave a copy in a folder, every time, with
no asking. Canonical archive dir is `~/Documents/k-report/` (create it with
`mkdir -p` if missing); write `~/Documents/k-report/<slug>-YYYYMMDD.html`. If the
user named a different target folder in the request, ALSO write a copy there,
but the `~/Documents/k-report/` archive copy is always written regardless. Tell the
user the absolute path(s). If a chrome-devtools MCP is available and they want
a preview, offer to open it. **Never** deliver a report without first having
written its local copy — the saved file is the artifact.
8. **Close on the path (no delivery channel).** The saved file IS the delivery.
Report the absolute path and the `<h1>` + one-line summary in chat, and stop
there. This harness ships **no** send step: no Telegram, no bot token, no
outbound push. If the caller wants the report somewhere else, they name the
folder (step 7 writes the extra copy) or move it themselves.
## Validation gate (mandatory)
After emitting the HTML artifact and BEFORE delivering it, run the deterministic
mermaid validator:
```bash
python3 skills/k-report/scripts/validate_mermaid.py <artifact.html>
```
- Exit `0` → all mermaid blocks pass; proceed to save & report.
- Exit `1` → at least one block is broken. Read the per-block report, FIX the
offending block (almost always a `{{ }}` brace collision or a bad
stateDiagram id), and re-run. Loop until exit `0`.
- **NEVER deliver an artifact that fails the gate.**
Tier 1 (stdlib, always runs) catches the brace collision and bad state ids
deterministically. Tier 2 renders each block through `bunx @mermaid-js/mermaid-cli`
(`PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium`, `--no-sandbox`) for an
authoritative parse; it degrades to a WARN (Tier-1-only) if bun/mmdc is absent —
the gate still blocks brace bugs. `--selftest` runs bundled fixtures.
## Images (only when the caller attaches one)
Images are an **input**, like the markdown — never invent or generate them. The
caller passes a photo by **local file path** (or pastes one; if pasted, ask forFrom kodexArg/astro-drf-aws, MIT.
More from kodexArg/astro-drf-aws
- 0.529score
k-django-6-drf
kodexArg
Opinionated Django 6 + DRF backend entrypoint.
SkillBFreshness: BClaude Code +9 - 0.529score
k-astro-7
kodexArg
Opinionated frontend entrypoint for Astro 7 + Svelte 5 + HTMX.
SkillBFreshness: BClaude Code +9 - 0.524score
k-role-party
kodexArg
Grok Role Party — multi-issue orchestrator that runs the Hunter → Mage → Warrior/Archer party against open GitHub issues, prioritizes easy→hard, opens one PR…
SkillBFreshness: BClaude Code +9 - 0.524score
k-assertion-review
kodexArg
Enforce assertion laws: interpret each promise, require proving tests via TDD.md, drive the fix or feature until tests hold, set verified.
SkillBFreshness: BClaude Code +9 - 0.524score
k-aws-cloudwatch-alarms
kodexArg
Minimal CloudWatch alarms for ALVS Fargate astro-drf-aws services: target health, 5xx, RDS storage.
SkillBFreshness: BClaude Code +9 - 0.524score
k-aws-cloudwatch-query
kodexArg
CloudWatch Logs Insights queries for ALVS Fargate Django and Astro services.
SkillBFreshness: BClaude Code +9 - 0.524score
k-aws-containers
kodexArg
ALVS Fargate layout for this template only: two ECS services (Django 6+DRF backend :8000, Astro 7 SSR frontend :4321), ECR, shared ALB, Cloud Map.
SkillBFreshness: BClaude Code +9 - 0.524score
k-aws-cost
kodexArg
Cost discipline for ALVS astro-drf-aws: Fargate 256/512, no NAT, no Redis, shared ALB, single-AZ micro RDS.
SkillBFreshness: BClaude Code +9 - 0.524score
k-aws-s3
kodexArg
Media S3 buckets for astro-drf-aws on ALVS: alvs-<project>-media-<env>, private, no CDN — Django issues presigned URLs directly via `STORAGES`.
SkillBFreshness: BClaude Code +9 - 0.524score
k-aws-secrets-create
kodexArg
Create AWS Secrets Manager secrets for astro-drf-aws on ALVS only.
SkillBFreshness: BClaude Code +9 - 0.524score
k-aws-secrets-manager
kodexArg
Operate and inject AWS Secrets Manager secrets for ALVS Fargate Django/Astro tasks.
SkillBFreshness: BClaude Code +9 - 0.524score
k-aws-troubleshoot
kodexArg
Diagnose failing ALVS Fargate Django/Astro deploys: task stops, unhealthy targets, secret injection, Cloud Map SSR calls, RDS connectivity.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 4
- Last commit (this folder)
- Sep 14, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/kodexArg/astro-drf-aws
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from kodexArg
- 0.529score
k-astro-7
kodexArg
Opinionated frontend entrypoint for Astro 7 + Svelte 5 + HTMX.
SkillBFreshness: BClaude Code +9 - 0.529score
k-django-6-drf
kodexArg
Opinionated Django 6 + DRF backend entrypoint.
SkillBFreshness: BClaude Code +9 - 0.526score
kskill-mood
kodexArg
Slash /kdx-mood.
SkillBFreshness: BClaude Code +9 - 0.524score
k-role-party
kodexArg
Grok Role Party — multi-issue orchestrator that runs the Hunter → Mage → Warrior/Archer party against open GitHub issues, prioritizes easy→hard, opens one PR…
SkillBFreshness: BClaude Code +9 - 0.524score
hb-sk-domain-framework
kodexArg
The domain framework contract as this repo programs it: models, settings, framework adapters, the pure-Python boundary, and the service toolchain.
SkillBFreshness: BClaude Code +9 - 0.524score
hb-sk-contracts
kodexArg
Interface catalog contract for docs/INTERFACES.md: six-column row, docs/contracts/, trailing slash, declared path prefixes, fragment Payload: —.
SkillBFreshness: BClaude Code +9
Cite this page
k-report skill. Agent Mart. https://agentmart.dev/skills/kodexarg-k-report (last updated 2026-10-24)