open-design/skills
Joey-nexu 2bbd677ea2
add clinic-console live-artifact template (#795)
* add clinic-console live-artifact template

Adds a built-in clinic-console template under
skills/live-artifact/assets/templates/, fulfilling the
assets/templates/<name> directory shape that
specs/2026-04-29-live-artifacts/spec.md §5.1 already plans for but
has not yet populated.

Three files, no other changes:
- template.html — html_template_v1 source, only DOM, CSS tokens, and {{data.*}} bindings
- data.json    — canonical default sample (~6.7 KB, well within bounded JSON limits)
- README.md    — data contract + telemedicine/pharmacy/pediatric variants

Verified locally against apps/daemon/src/live-artifacts/render.ts:
all paths match the html_template_v1 grammar, all bindings resolve
to scalars, no script/iframe/srcdoc/on*=/javascript:/raw HTML
directives, no forbidden JSON keys, JSON within bounded envelope.

* clinic-console: hardcode icon refs, drop icon_href bindings

Address @mrcfps's review on PR #795: stop interpolating {{data.*}} into
<use href="..."> attributes. The html_template_v1 binding contract
forbids interpolation inside URL-bearing attributes, and the security
validator runs *before* {{data.*}} substitution — so even a benign
icon_href today could be replaced with javascript:alert(1) tomorrow
without the validator ever seeing it.

Fix:

- template.html: every <use href="..."> is now a hardcoded literal
  (#icon-dashboard, #icon-message, …). 14 nav slots + 4 KPI tiles
  converted; total <use href="..."> count unchanged at 28, all
  fragment-id literals, zero {{data.*}} inside URL-bearing attrs.
- data.json: icon_href removed from each nav_main[] item, each
  nav_management[] item, and from kpi_a / kpi_b / kpi_c / kpi_d
  (14 keys removed). Sample is now 6,333 bytes (was ~6,840).
- README.md: data-contract tables no longer list icon_href; new
  "Icons are template-locked" section explains the binding-contract
  rationale, lists the hardcoded id per slot, and gives guidance for
  future runtime-configurable icons (route through a constrained,
  non-URL mechanism such as enumerated CSS classes — never interpolate
  into <use href> directly).

Verified locally against apps/daemon/src/live-artifacts/render.ts:
298 bindings, 297 unique paths, all resolve to scalars; zero
{{...}} inside any URL-bearing attribute (href / src / action /
formaction / srcset / xlink:href / ping / background / poster /
cite); none of the 6 forbidden security patterns present; bounded
JSON envelope: 6.3 KiB / depth 5 / max 22 keys / max 35 array items
/ max 45-char string — all well within limits.

---------

Co-authored-by: Joey-nexu <236967869+joeylee12629-star@users.noreply.github.com>
2026-05-07 18:22:09 +08:00
..
audio-jingle Add live artifacts and Composio connector catalog (#381) 2026-05-05 16:42:11 +08:00
blog-post craft: add rtl-and-bidi so OD artifacts don't break for Arabic / Hebrew / Persian users (#595) 2026-05-06 12:43:48 +08:00
critique Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
dashboard feat(craft): accessibility-baseline module + opt-ins on dashboard, hr-onboarding, mobile-onboarding (#587) 2026-05-06 09:18:59 +08:00
dating-web feat(skills): open-design-landing rename, kami skills, landing OG (#428) 2026-05-04 19:22:46 +08:00
design-brief feat: add design-brief skill with structured I-Lang input format (#184) 2026-05-01 23:11:38 +08:00
digital-eguide feat(skills): open-design-landing rename, kami skills, landing OG (#428) 2026-05-04 19:22:46 +08:00
docs-page craft: add rtl-and-bidi so OD artifacts don't break for Arabic / Hebrew / Persian users (#595) 2026-05-06 12:43:48 +08:00
email-marketing feat(skills): open-design-landing rename, kami skills, landing OG (#428) 2026-05-04 19:22:46 +08:00
eng-runbook Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
finance-report craft: add rtl-and-bidi so OD artifacts don't break for Arabic / Hebrew / Persian users (#595) 2026-05-06 12:43:48 +08:00
gamified-app feat(craft): animation-discipline module + opt-ins on mobile-app, mobile-onboarding, gamified-app (#515) 2026-05-05 18:32:30 +08:00
guizang-ppt docs: add Brazilian Portuguese (pt-BR) translations (#460) 2026-05-05 09:14:06 +08:00
hatch-pet feat(skills): open-design-landing rename, kami skills, landing OG (#428) 2026-05-04 19:22:46 +08:00
hr-onboarding feat(craft): accessibility-baseline module + opt-ins on dashboard, hr-onboarding, mobile-onboarding (#587) 2026-05-06 09:18:59 +08:00
html-ppt docs: add Brazilian Portuguese (pt-BR) translations (#460) 2026-05-05 09:14:06 +08:00
html-ppt-course-module feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-dir-key-nav-minimal feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-graphify-dark-graph feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-hermes-cyber-terminal feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-knowledge-arch-blueprint feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-obsidian-claude-gradient feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-pitch-deck feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-presenter-mode-reveal feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-product-launch feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-taste-brutalist feat(skills): add taste-skill-derived web prototype and HTML PPT examples (#358) 2026-05-03 20:31:05 +08:00
html-ppt-taste-editorial feat(skills): add taste-skill-derived web prototype and HTML PPT examples (#358) 2026-05-03 20:31:05 +08:00
html-ppt-tech-sharing feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-testing-safety-alert feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-weekly-report feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-xhs-pastel-card feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-xhs-post feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
html-ppt-xhs-white-editorial feat(skills): integrate lewislulu/html-ppt-skill + 15 per-template Examples cards (#193) 2026-05-02 11:00:44 +08:00
hyperframes Add live artifacts and Composio connector catalog (#381) 2026-05-05 16:42:11 +08:00
image-poster Add live artifacts and Composio connector catalog (#381) 2026-05-05 16:42:11 +08:00
invoice Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
kami-deck feat(skills): open-design-landing rename, kami skills, landing OG (#428) 2026-05-04 19:22:46 +08:00
kami-landing feat(skills): open-design-landing rename, kami skills, landing OG (#428) 2026-05-04 19:22:46 +08:00
kanban-board feat(craft): state-coverage module + opt-ins on dashboard, mobile-app, kanban-board (#502) 2026-05-05 16:31:05 +08:00
live-artifact add clinic-console live-artifact template (#795) 2026-05-07 18:22:09 +08:00
live-dashboard add live-dashboard skill (#778) 2026-05-07 18:21:22 +08:00
magazine-poster Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
meeting-notes Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
mobile-app feat(craft): animation-discipline module + opt-ins on mobile-app, mobile-onboarding, gamified-app (#515) 2026-05-05 18:32:30 +08:00
mobile-onboarding craft: add form-validation so generated forms aren't stuck in 2018 RHF/Formik patterns (#625) 2026-05-06 20:09:30 +08:00
motion-frames Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
open-design-landing feat(skills): open-design-landing rename, kami skills, landing OG (#428) 2026-05-04 19:22:46 +08:00
open-design-landing-deck feat(skills): open-design-landing rename, kami skills, landing OG (#428) 2026-05-04 19:22:46 +08:00
orbit-general feat(skills): add 5 Orbit briefing templates (#671) 2026-05-06 21:39:52 +08:00
orbit-github feat(skills): add 5 Orbit briefing templates (#671) 2026-05-06 21:39:52 +08:00
orbit-gmail feat(skills): add 5 Orbit briefing templates (#671) 2026-05-06 21:39:52 +08:00
orbit-linear feat(skills): add 5 Orbit briefing templates (#671) 2026-05-06 21:39:52 +08:00
orbit-notion feat(skills): add 5 Orbit briefing templates (#671) 2026-05-06 21:39:52 +08:00
pm-spec Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
pptx-html-fidelity-audit feat(pptx-fidelity): broaden script coverage beyond CJK (#308) 2026-05-03 00:53:28 +08:00
pricing-page Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
replit-deck Feat: add replit-deck skill with 8 themes from replit.com/slides (#74) 2026-04-30 11:19:52 +08:00
saas-landing feat(craft): add brand-agnostic craft references + Refero-derived lint rules (#225) 2026-05-02 11:00:33 +08:00
simple-deck Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
social-carousel Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
social-media-dashboard feat(skills): add social-media-dashboard skill + Totality Festival design system (#678) 2026-05-06 21:50:23 +08:00
sprite-animation Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
team-okrs Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
tweaks Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
video-shortform Add live artifacts and Composio connector catalog (#381) 2026-05-05 16:42:11 +08:00
waitlist-page add waitlist-page skill (#555) 2026-05-07 17:39:17 +08:00
web-prototype Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
web-prototype-taste-brutalist feat(skills): add taste-skill-derived web prototype and HTML PPT examples (#358) 2026-05-03 20:31:05 +08:00
web-prototype-taste-editorial feat(skills): add taste-skill-derived web prototype and HTML PPT examples (#358) 2026-05-03 20:31:05 +08:00
web-prototype-taste-soft feat(skills): add taste-skill-derived web prototype and HTML PPT examples (#358) 2026-05-03 20:31:05 +08:00
weekly-update Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00
wireframe-sketch Refactor project name from "Open Claude Design" to "Open Design" (#1) 2026-04-28 16:03:35 +08:00