open-design/prompt-templates/image/notion-team-dashboard-live-artifact.json
Joey-nexu 7ce4eb4e82
feat(prompt-templates): add Notion-style team dashboard (Live Artifact) (#799)
* feat(prompt-templates): add Notion-style team dashboard (Live Artifact)

Adds a single image prompt template under the Live Artifact category — a
Notion-native team dashboard mockup with KPI grid, 7-day sparkline,
activity feed, and linked-database task table.

This is the first prompt template to use the curated Live Artifact
category, whose de/fr/ru localization slots were already reserved in
apps/web/src/i18n/content{,.fr,.ru}.ts. Only the new tag 'live-artifact'
is added to each locale's PROMPT_TEMPLATE_TAGS map (+1 line each) so the
arrayContaining check in e2e/tests/localized-content.test.ts continues
to pass.

Template-level only: no new surface, no loader changes, no schema or
TypeScript type changes.

* fix(prompt-templates,i18n): register 'Live Artifact' category and template ID fallback for de/fr/ru

CI's e2e/localized-content.test.ts enumerates LOCALIZED_CONTENT_IDS from
apps/web/src/i18n/content.ts and asserts:

  - ids.promptTemplates              ===   sorted(all template ids in prompt-templates/)
  - ids.promptTemplateCategories     ⊇     all categories actually used by templates
  - ids.promptTemplateTags           ⊇     all tags actually used by templates

The new notion-team-dashboard-live-artifact template introduced both
the first 'Live Artifact' category and the first prompt-template id
without a copy translation, so each locale needs:

- 'Live Artifact' added to *_PROMPT_TEMPLATE_CATEGORIES (currently
  consumed via arrayContaining; order doesn't matter)
- 'notion-team-dashboard-live-artifact' listed in
  *_PROMPT_TEMPLATE_IDS_WITH_EN_FALLBACK so it joins ids.prommplates
  via the EN-fallback path (no per-locale title/summary copy needed)

The 'live-artifact' tag was already added to *_PROMPT_TEMPLATE_TAGS in
the previous commit on this branch.

3 files changed, +6 / -3.

* fix(i18n): register Live Artifact category + template id fallback (CI repair on #799)

* fix(i18n): register Live Artifact category + template id fallback (CI repair on #799)

* fix(i18n): register Live Artifact category + template id fallback (CI repair on #799)

* fix(prompt-templates): scrub live/connector affordances from notion-team-dashboard prompt (#799 review)

Reviewers (mrcfps, lefarcen) flagged that even with the amber "Sample
data — design preview" banner and the "(sample data)" footer, the inner
prompt blob still asked the model to render UI affordances claiming a
real Notion / Composio connector binding ("Live · synced" pill, "Last
refreshed just now", "Refresh from Notion" blue button, callout saying
numbers are "pulled from your {workspace} Notion workspace via the
Composio connector"). That contradicts the prompt-only contract and
reintroduces the #778 mock-honesty concern.

Rewrite the prompt blob so every UI element is consistently presented
as seeded sample data:

- topbar.preview_pill (was live_pill):ample · design preview' pill
  with explicit negative instruction no to render any live/sync pill
- page_header.meta_row: drop 'Last refreshed', 'Auto' toggle, and the
  'Refresh from Notion' blue button; explicit DO NOT instructions
- callout: 'prompt-only design preview ... seeded sample data ... not
  pulled from a real Notion workspace and not refreshed via the
  Composio connector. For real refreshable / connector-backed Live
  Artifacts, use the live-artifact skill.' Also removes the bare
  '{workspace}' placeholder that was not using {argument ...} syntax
  (P2 nit from lefarcen).
- activity_feed_card.subtitle: 'Notion-style seeded activity for
  design preview' (was 'From Notion')
- linked_database.title/subtitle: marked '(sample)' / 'seeded sample
  rows · no live connector binding'
- linked_database.row_styles: explicit negative instruction not to
  render an 'Updated ↻' refresh badge
- footer: 'Notion-style sample data · seeded design preview, not bound
  to any Notion workspace or Composio connector'
- honesty_rule: enumerates all live/sync/refresh affordanche
  generator must NOT render

Top-level metadata (id, title, summary, category, tags, model, aspect,
previewImageUrl, source) is unchanged. Preview PNG already shows the
amber banner and a layout without a Refresh button, so it matches the
new in-prompt language.

* fix(prompt-templates): scrub live/connector affordances from notion-team-dashboard prompt (#799 review)

Reviewers (mrcfps, lefarcen) flagged that even with the amber "Sample data — design preview" banner and the "(sample data)" footer, the inner prompt blob still asked the model to render UI affordances claiming a real Notion / Composio connector binding ("Live · synced" pill, "Last refreshed just now", "Refresh from Notion" blue button, callout saying numbers are "pulled from your {workspace} Notion workspace via the Composio connector"). That contradicts the prompt-only contract and reintroduces the #778 mock-honesty concern.

Rewrite the prompt blob so every UI element is consistently presented as seeded sample data:

- topbar.preview_pill (was live_pill): 'Sample · design preview' pill with explicit negative instruction not to render any live/sync pill.
- page_header.meta_row: drop 'Last refreshed', 'Auto' toggle, and the 'Refresh from Notion' blue button; explicit DO NOT instructions for all three.
- callout: 'prompt-only design preview ... seeded sample data ... not pulled from a real Notion workspace and not refreshed via the Composio connector. For real refreshable / connector-backed Live Artifacts, use the live-artifact skill.' Also removes the bare '{workspace}' placeholder that was not using {argument ...} syntax (P2 nit from lefarcen).
- activity_feed_card.subtitle: 'Notion-style seeded activity for design preview' (was 'From Notion').
- linked_database.title/subtitle: marked '(sample)' / 'seeded sample rows · no live connector binding'.
- linked_database.row_styles: explicit negative instruction not to render an 'Updated ↻' refresh badge.
- footer: 'Notion-style sample data · seeded design preview, not bound to any Notion workspace or Composio connector'.
- honesty_rule: enumerates all live/sync/refresh affordances the generator must NOT render.

Top-level metadata (id, title, summary, category, tags, model, aspect, previewImageUrl, source) is unchanged. Preview PNG already shows the amber banner and a layout without a Refresh button, so it matches the new in-prompt language.

* fix(prompt-templates): scrub live/connector affordances from notion-team-dashboard prompt (#799 review)

Reviewers (mrcfps, lefarcen) flagged that even with the amber "Sample data — design preview" banner and the "(sample data)" footer, the inner prompt blob still asked the model to render UI affordances claiming a real Notion / Composio connector binding ("Live · synced" pill, "Last refreshed just now", "Refresh from Notion" blue button, callout saying numbers are "pulled from your {workspace} Notion workspace via the Composio connector"). That contradicts the prompt-only contract and reintroduces the #778 mock-honesty concern.

Rewrite the prompt blob so every UI element is consistently presented as seeded sample data:

- topbar.preview_pill (was live_pill): 'Sample · design preview' pill with explicit negative instruction not to render any live/sync pill.
- page_header.meta_row: drop 'Last refreshed', 'Auto' toggle, and the 'Refresh from Notion' blue button; explicit DO NOT instructions for all three.
- callout: 'prompt-only design preview ... seeded sample data ... not pulled from a real Notion workspace and not refreshed via the Composio connector. For real refreshable / connector-backed Live Artifacts, use the live-artifact skill.' Also removes the bare '{workspace}' placeholder that was not using {argument ...} syntax (P2 nit from lefarcen).
- activity_feed_card.subtitle: 'Notion-style seeded activity for design preview' (was 'From Notion').
- linked_database.title/subtitle: marked '(sample)' / 'seeded sample rows · no live connector binding'.
- linked_database.row_styles: explicit negative instruction not to render an 'Updated ↻' refresh badge.
- footer: 'Notion-style sample data · seeded design preview, not bound to any Notion workspace or Composio connector'.
- honesty_rule: enumerates all live/sync/refresh affordances the generator must NOT render.

Top-level metadata (id, title, summary, category, tags, model, aspect, previewImageUrl, source) is unchanged. Preview PNG already shows the amber banner and a layout without a Refresh button, so it matches the new in-prompt language.

---------

Co-authored-by: joeylee12629-star <joeylee12629-star@users.noreply.github.com>
2026-05-07 19:42:09 +08:00

22 lines
6.1 KiB
JSON

{
"id": "notion-team-dashboard-live-artifact",
"surface": "image",
"title": "Notion-style Team Dashboard (Live Artifact)",
"summary": "Single-screen Notion-native team dashboard mockup — KPI grid, 7-day sparkline, activity feed, and linked-database task table. Visual companion to the live-artifact skill; pair with it for refreshable / connector-backed runs, or use standalone as a still mockup.",
"category": "Live Artifact",
"tags": [
"app-showcase",
"chart",
"live-artifact"
],
"model": "gpt-image-2",
"aspect": "4:3",
"prompt": "{\n \"type\": \"team productivity dashboard screenshot (prompt-only design preview, no live connector data)\",\n \"ui_aesthetic\": \"Notion native — off-white background #FFFFFF with #F7F6F3 sidebar, 14px SF Pro / Inter body, charcoal ink #37352F, hairline grid #ECECEA, accent blue #2EAADC used sparingly. No gradients, no card shadows, no rounded inner cards, no glassmorphism, no purple→pink hero, no emoji icon strip across the top.\",\n \"top_banner\": {\n \"color\": \"soft amber #FDECC8 with #E6CF94 hairline\",\n \"text\": \"Sample data — design preview. This page is a prompt-only Notion-style dashboard mockup; every number, name, and timestamp below is seeded, not pulled from a real Notion workspace or Composio connector. For real refreshable / connector-backed artifacts, see the live-artifact skill.\"\n },\n \"topbar\": {\n \"breadcrumb\": \"{argument name=\\\"workspace name\\\" default=\\\"Acme Studio\\\"} / Workspace / {argument name=\\\"page title\\\" default=\\\"Team Dashboard\\\"}\",\n \"preview_pill\": \"pill on the right reading 'Sample · design preview' with a small neutral-grey dot — do NOT render a 'Live · synced', 'Online', or any live/sync pill\"\n },\n \"page_header\": {\n \"page_emoji\": \"📊 (a single semantically relevant Notion-style emoji, not 🚀 / ✨ / 🔥)\",\n \"title\": \"{argument name=\\\"page title\\\" default=\\\"Team Dashboard\\\"} rendered at 40px weight 700, letter-spacing -0.01em\",\n \"meta_row\": \"Last edited by {argument name=\\\"editor name\\\" default=\\\"Sarah Chen\\\"} · Seeded sample data — for real refreshable / connector-backed runs use the live-artifact skill. Do NOT render a 'Last refreshed just now' label, an 'Auto' toggle, or a 'Refresh from Notion' button anywhere in this row.\"\n },\n \"callout\": \"💡 This is a prompt-only design preview. The numbers, names, and timestamps below are seeded sample data — they are not pulled from a real Notion workspace and not refreshed via the Composio connector. For real refreshable / connector-backed Live Artifacts, use the live-artifact skill.\",\n \"kpi_grid\": {\n \"count\": \"{argument name=\\\"kpi count\\\" default=\\\"4\\\"}\",\n \"items\": [\n {\n \"label\": \"Total tasks\",\n \"value\": \"143\",\n \"delta\": \"↑ 6 vs last week (green)\"\n },\n {\n \"label\": \"Done this week\",\n \"value\": \"24\",\n \"delta\": \"↑ 4 vs last week (green)\"\n },\n {\n \"label\": \"Active members\",\n \"value\": \"11 / 14\",\n \"delta\": \"· Stable (grey)\"\n },\n {\n \"label\": \"Docs awaiting review\",\n \"value\": \"7\",\n \"delta\": \"↓ 2 vs last week (red)\"\n }\n ],\n \"style\": \"1px hairline grid; no shadows; tabular-nums weight 600 numbers; small grey delta line under each KPI; uppercase 12px label-grey labels. All values are seeded sample data.\"\n },\n \"sparkline_card\": {\n \"title\": \"Tasks created · last 7 days (sample)\",\n \"total\": \"100 total (sample)\",\n \"shape\": \"hand-rolled SVG, 7 days Wed→Tue, 2px stroke accent blue, 10% alpha fill below the curve, very light dotted baseline grid\"\n },\n \"activity_feed_card\": {\n \"title\": \"Recent activity (sample)\",\n \"subtitle\": \"Notion-style seeded activity for design preview — not from a real Notion workspace\",\n \"rows\": \"5 rows shaped '<18px round colored avatar with 2-letter initials> <name> <action> <target> · <time ago>' (e.g. 'SC Sarah Chen edited Q4 Roadmap · 2m ago'). All names and times are seeded sample values.\"\n },\n \"linked_database\": {\n \"title\": \"📋 Tasks · Active sprint (sample)\",\n \"subtitle\": \"Linked-database-style table · seeded sample rows · no live connector binding\",\n \"columns\": [\n \"Name\",\n \"Status\",\n \"Assignee\",\n \"Due\",\n \"Priority\"\n ],\n \"row_styles\": \"Notion five-color status pills — Done #DBEDDB/#2B593F · In progress #FDECC8/#976D23 · Blocked #FFE2DD/#B13B2C · In review #D3E5EF/#1F5B78 · To do #E9E5E3/#5A534F. Person chips: 18px round colored avatars with 2-letter initials. Charcoal text. Do NOT render an 'Updated ↻' refresh badge or any other refresh affordance on any row.\"\n },\n \"footer\": \"Source: Notion-style sample data · seeded design preview, not bound to any Notion workspace or Composio connector · for real refreshable runs see the live-artifact skill\",\n \"honesty_rule\": \"Render the top amber banner unobstructed. Every number, name, timestamp, status, and label in the generated screenshot must be presented as seeded sample data. NEVER render any 'Live · synced' pill, 'Last refreshed' label, 'Auto' toggle, 'Refresh from Notion' button, 'pulled from your workspace' / 'via the Composio connector' callout, or any other UI affordance that suggests the data is connected to a real Notion workspace or Composio connector. For real refreshable / connector-backed runs the user should follow the live-artifact skill instead.\",\n \"layout\": \"Optional 240px Notion sidebar on the left when the canvas is wide enough; main content occupies the remaining width with 32px outer padding.\"\n}",
"previewImageUrl": "https://raw.githubusercontent.com/joeylee12629-star/open-design/feat/prompt-template-live-artifact-dashboard/prompt-templates/image/notion-team-dashboard-live-artifact.preview.png",
"source": {
"repo": "joeylee12629-star/open-design",
"license": "Apache-2.0",
"author": "joeylee12629-star",
"url": "https://github.com/joeylee12629-star/open-design"
}
}