Skip to content

Commit 0ebadce

Browse files
bgmcmullenclaude
andcommitted
Update report-to-html and adoption-report skills (claude + codex copies)
hypaware-report-to-html: - SKILL.md: guard against partial enrichment (metric-grid without carded findings is half-done), rewrite .md links on emitted HTML hrefs including cross-report and raw-HTML component links, and add matching verification greps - authoring.md/components.md: per-entity rollup tables always get a companion breakdown chart; landing page becomes an at-a-glance dashboard with stats hoisted from each report's metric-grid; document the restrained data-report register - assets/style.css: restyle to match (system type, hairline rules, flat charts, judgment-only color) hypaware-ai-adoption-report: - chart the who-breakdowns (gateway share, main-vs-subagent split, real team rollups only) per the HTML renderer's authoring contract Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 74e6bfc commit 0ebadce

10 files changed

Lines changed: 588 additions & 548 deletions

File tree

hypaware-core/plugins-workspace/claude/skills/hypaware-ai-adoption-report/SKILL.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,12 @@ layer is shorter and more glanceable than the one it summarizes.
9191
- **GitHub reach (where enriched):** the per-gateway-focus section file shows each gateway's repos
9292
and PRs reached, as of the graph's projection date from step 1 (a stale graph makes reach a floor,
9393
not an upper bound).
94+
- **Chart the who-breakdowns.** Keep the one-row-per-gateway tables from step 2 as the record, and
95+
pair each with a breakdown chart following the HTML renderer's authoring contract
96+
(`hypaware-report-to-html/authoring.md`; component snippets in `components.md` next to it):
97+
share of messages and tokens by gateway on the utilization page, and the main-vs-subagent token
98+
split on the parallelism page. Where a real team grouping exists (a user-supplied mapping, or
99+
cwd naming), add a by-team rollup chart too; never invent teams the data doesn't show.
94100
- **Section files are analysis, not inventory.** Each detail section is its own `<dir>/<file>.md`, held to the same standard as the one-pager: it argues one claim, opens with that takeaway, and ties every number to what it means for the reader. A section file that is only a stat table has failed - fold it back into the one-pager rather than shipping it as a page. Cut table narration ("how to read the table") and standing bookkeeping prose; compress source/window/method to a few lines.
95101
- **No scope apologies (in any file).** Scope rules (what routes to which report) are authoring guidance, never report copy. Don't write "descriptive only", "no recommendations here", or routing disclaimers in the one-pager or any section file; state findings plainly, and where a sibling report owns the action a plain cross-link is enough.
96102
- **Capture-health note:** if subagent provenance doesn't reach the server, the standing #1

hypaware-core/plugins-workspace/claude/skills/hypaware-report-to-html/SKILL.md

Lines changed: 65 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@ Two moving parts:
1616
1. **`build.sh`** (in the repo, pandoc-based) converts each `<slug>.md` — plus any
1717
`<slug>/` sections — into a self-contained `html/<slug>/` folder: `index.html` for the
1818
one-pager, one `<section>.html` per section with a "← Back to the report" nav,
19-
`assets/style.css`, and a `.nojekyll`. It rewrites inter-file `.md` links to `.html`,
20-
flattens the one-pager's `<slug>/section.md` links to `section.html`, and rebuilds
21-
`html/` fresh every run (idempotent). A **flat** one-pager (no sibling `<slug>/` dir)
22-
builds just `html/<slug>/index.html`.
19+
`assets/style.css`, and a `.nojekyll`. It rewrites inter-file `.md` links to `.html`
20+
on the **emitted HTML** (`href` attributes), which catches Markdown-syntax links and
21+
links inside raw-HTML components (`rec` cards, callouts) in one pass: it flattens the
22+
one-pager's `<slug>/section.md` links to `section.html` and maps cross-report links
23+
(`../<other-slug>.md``../<other-slug>/index.html`, `../<other-slug>/sec.md`
24+
`../<other-slug>/sec.html`). `html/` is rebuilt fresh every run (idempotent). A
25+
**flat** one-pager (no sibling `<slug>/` dir) builds just `html/<slug>/index.html`.
2326
2. **The top-level `index.html`** is the landing page linking to each `html/<slug>/`.
2427
`build.sh` does **not** generate it — this skill regenerates it from whatever reports
2528
are present, so it never goes stale.
@@ -53,8 +56,8 @@ Work relative to the repo root `~/hypaware-reports`.
5356
the user before building — see Notes.
5457

5558
2. **Install / refresh the shared stylesheet.** The repo-root `assets/style.css` must be
56-
the data-report stylesheet bundled with this skill. If it is missing, or is the old
57-
pandoc-default sheet (no `--display`/`Space Grotesk` variables, no `.metric`/`.callout`/
59+
the data-report stylesheet bundled with this skill. If it is missing, or is an older
60+
sheet (a Google Fonts `@import`, `box-shadow` on cards, or no `.metric`/`.callout`/
5861
`.barchart` rules), copy this skill's `assets/style.css` over it before building:
5962
```bash
6063
cp "$SKILL_DIR/assets/style.css" assets/style.css # $SKILL_DIR = this skill's folder
@@ -63,11 +66,20 @@ Work relative to the repo root `~/hypaware-reports`.
6366
system; do not hand-tune per-page CSS.
6467

6568
3. **Enrich the report Markdown (the step that makes it a data report).** For each
66-
top-level `<slug>.md`, check whether it already uses the component vocabulary:
69+
top-level `<slug>.md`, check whether it already uses the component vocabulary —
70+
**both** halves of it, because partial enrichment is the common failure:
6771
```bash
68-
grep -L 'class="metric-grid"' *.md # lists reports that still need enrichment
72+
grep -L 'class="metric-grid"' *.md # reports with no headline metric strip at all
73+
grep -L 'class="rec"' *.md # reports whose findings are still prose-only
6974
```
70-
For every listed report, work in **two phases — inventory first, markup second**:
75+
A one-pager that has a `metric-grid` but no `rec` cards is **half-done, not done**:
76+
its findings sit as `###` heading + paragraph + trailing link, so every number is
77+
buried in a sentence and the reader has to open the section pages to see anything at
78+
a glance. Finish it — convert the findings to cards (and rename any scaffolding
79+
headings) rather than skipping it.
80+
81+
For every report needing work, proceed in **two phases — inventory first, markup
82+
second**:
7183

7284
**Phase A — inventory.** Read the whole report (one-pager + all section files) and
7385
write down, from its text and tables only: (1) the 3–6 headline numbers with a
@@ -100,6 +112,12 @@ Work relative to the repo root `~/hypaware-reports`.
100112
for the caveat; each section page opens with its own thesis and gets the inventory
101113
(3) visual — `barchart` / `stackbar` / `gauge` / `callout`. Keep source data tables
102114
where the exact numbers are the record.
115+
- **A one-pager finding never stays heading + paragraph + trailing link.** Every
116+
numbered finding on the one-pager becomes a `rec` card: its 2–3 strongest numbers
117+
(from the Phase A inventory) move onto the card's stat row, the analysis trims to
118+
1–2 sentences of body copy, and the section link becomes the card itself. A
119+
qualitative finding with no strong numbers still becomes a card — it just carries a
120+
lighter stat row (or none) rather than invented figures.
103121

104122
**The design bar:** scroll the finished page — every screenful should have a visual
105123
anchor (a big number, a chart, a card row, a callout), no two adjacent blocks with the
@@ -112,14 +130,17 @@ Work relative to the repo root `~/hypaware-reports`.
112130
caption from the example appears in a different report's enriched output, that's
113131
contamination — every label and number must trace to the Phase A inventory. Reports
114132
differ: an adoption profile has different headline numbers, different judgments, and
115-
maybe no "recommendations" at all (then rec cards don't apply — don't force them).
133+
maybe no "recommendations" at all — but `rec` cards are the treatment for *findings*
134+
of any kind, not just recommendations, so a descriptive report's numbered findings
135+
still become cards; what you don't force is the stat row where no real numbers exist.
116136

117137
**Hard rules:** every number, claim, and judgment must trace to the report's own text
118138
or tables — design changes presentation and display copy, it NEVER invents, recomputes,
119139
or reinterprets a finding; keep every link (cross-page links may move onto cards); keep
120-
raw-HTML blocks separated by blank lines; skip files that already contain component
121-
markup (the step is idempotent). These are source-file edits — include them in the
122-
commit at the end.
140+
raw-HTML blocks separated by blank lines; skip only files that already satisfy the
141+
full contract (metric-grid **and** carded findings on a one-pager, thesis + visuals on
142+
a section page) — the presence of one component does not make a file done. These are
143+
source-file edits — include them in the commit at the end.
123144

124145
4. **Build the HTML.** Run the repo's own script — don't reimplement pandoc:
125146
```bash
@@ -128,14 +149,20 @@ Work relative to the repo root `~/hypaware-reports`.
128149
It prints `Built html/ : N report(s) …`. `html/` is wiped and rebuilt, so deleted or
129150
renamed reports never leave stale HTML behind.
130151

131-
5. **Regenerate the top-level `index.html`.** List every built report and write a fresh
132-
landing page (template in [`components.md`](components.md)*Landing-page template*).
133-
For each `html/<slug>/` (sorted newest-first — slugs are
134-
`YYYY-MM-DD-…`), pull the display title and a one-line scope from the source `<slug>.md`:
135-
- **Title** — the first `# ` heading.
136-
- **Scope/desc** — the report's scope line: the italic `*Source: … · Window: … *` line
137-
for adoption profiles, or the `## <server> · <window>` subtitle for the others. Trim
138-
it to a short human phrase.
152+
5. **Regenerate the top-level `index.html` as an at-a-glance dashboard, not a table of
153+
contents.** Write a fresh landing page (template in [`components.md`](components.md)
154+
*Landing-page template*). One card per built report, newest first (slugs are
155+
`YYYY-MM-DD-…`), and each card carries the report's own headline numbers instead of a
156+
summary sentence. For each `html/<slug>/`, pull from the source `<slug>.md`:
157+
- **Title** - the first `# ` heading.
158+
- **Kicker** - the report's scope line (the italic `*Source: … · Window: … *` line for
159+
adoption profiles, or the `## <server> · <window>` subtitle for the others), trimmed
160+
to a short phrase, as the card's `rec-kind` eyebrow.
161+
- **Stats** - the report's top 3-4 `metric-grid` tiles (step 3 guarantees they exist),
162+
re-rendered as `rec-stat`s on the card: same values, same crit/warn/good judgments,
163+
labels compressed to 2-4 words, notes dropped. Rules in components.md. This hoists
164+
each report's key results and progress onto the landing page, so a reader gets the
165+
fleet's state without opening a report.
139166

140167
Link each report by its explicit `html/<slug>/index.html`, **not** a bare
141168
`html/<slug>/` directory URL. A trailing-slash directory link relies on server-side
@@ -151,9 +178,15 @@ Work relative to the repo root `~/hypaware-reports`.
151178
grep -o '<title>[^<]*</title>' html/*/index.html
152179
grep -rlo 'href="[^"]*\.md"' html/ || echo "no leftover .md links ✓"
153180
grep -L 'metric-grid' html/*/index.html # should print nothing
181+
grep -L 'class="rec"' html/*/index.html # should print nothing: findings are carded
182+
grep -c 'rec-stat' index.html # ≥ number of reports: landing cards carry stats
154183
```
155-
`href="….md"` in any built page means a link wasn't rewritten — investigate before
156-
publishing. A page missing `metric-grid` means step 3 was skipped for that report.
184+
`href="….md"` in any built page means a link wasn't rewritten — remember links live
185+
both in Markdown syntax **and** inside raw-HTML components (`rec` card and callout
186+
`href`s), and may point across reports; investigate before publishing. A page missing
187+
`metric-grid` means step 3 was skipped for that report; one missing `rec` cards means
188+
step 3 stopped halfway (headline strip done, findings left as prose); a landing page
189+
without `rec-stat`s means step 5 produced a bare link list.
157190
Optionally open `index.html` (or `html/<slug>/index.html`) in a browser to
158191
eyeball it (check both light and dark — the stylesheet supports both).
159192

@@ -171,9 +204,12 @@ Work relative to the repo root `~/hypaware-reports`.
171204

172205
## Visual system
173206

174-
The stylesheet in `assets/style.css` is a self-contained **data-report** system (Space
175-
Grotesk headings/numbers, semantic `--accent`/`--good`/`--warn`/`--crit` palette, tabular
176-
figures, dark mode, print). **Two things are automatic**, no author markup: every page's
207+
The stylesheet in `assets/style.css` is a self-contained **data-report** system with a
208+
restrained, internal-report look: system type, hairline rules, small flat charts, a
209+
semantic `--accent`/`--good`/`--warn`/`--crit` palette reserved for judgment, tabular
210+
figures, dark mode, print. Deliberately absent: webfonts, gradients, card shadows, hover
211+
motion, rounded-card chrome; keep it that way when restyling. **Two things are
212+
automatic**, no author markup: every page's
177213
tables, code, blockquotes, and headings are restyled, and the **first bold paragraph
178214
directly under the `# ` title becomes a hero thesis callout** (`h1 + p`). So write each
179215
report's one-sentence thesis as the first paragraph, bold.
@@ -223,8 +259,8 @@ even when the content skills produced plain Markdown.
223259
- **pandoc dialect.** `build.sh` uses `-f gfm` and sets only `pagetitle` (not `title`).
224260
`gfm` passes raw HTML blocks through, which is what makes the component vocabulary work —
225261
leave those flags alone. Keep raw HTML blocks separated from Markdown by blank lines.
226-
- **Fonts need network.** The stylesheet `@import`s Space Grotesk from Google Fonts; it
227-
degrades to `system-ui` offline. If the Pages site must be fully self-hosted, vendor the
228-
font into `assets/` and swap the `@import` for a local `@font-face` — otherwise leave it.
262+
- **Fully self-contained.** The stylesheet uses system fonts only: no webfont `@import`,
263+
no external assets, so pages render identically offline, on GitHub Pages, and from
264+
`file://`. Don't reintroduce a webfont.
229265
- **Don't `rm` the source Markdown.** `build.sh` reads the top-level `<slug>.md` +
230266
`<slug>/` on every run; the HTML under `html/` is derived output.

0 commit comments

Comments
 (0)