Files
open-design/plugins/_official/examples/invoice/open-design.json
T
lefarcenandGitHub f6cceb303d fix(plugins): unwrap cosmetic hard wraps in bundled manifest descriptions (#4406)
Picking a Home example-prompt card (or "Replicate this content" in the
plugin detail modal) seeds the composer with the plugin manifest's
`description`. Many descriptions were authored with cosmetic hard wraps
(a single newline mid-paragraph, ~75 cols, as if formatted for a
terminal/markdown source). The composer renders the seed with
`white-space: pre-wrap`, so those newlines survived as short ragged
lines that never filled the editor width — leaving a large blank gutter
on the right of the input box (e.g. the Trading Analysis Dashboard
template: 4 hard breaks, ~200px / 29% of the editor blank).

Reflow the offending `description` / `description_i18n` strings in the
56 affected bundled manifests into flowing text (wrapped lines joined,
real blank-line paragraph breaks preserved; CJK joins carry no space).
Surgical string edits only — manifest formatting/key order untouched
(146 lines changed across 56 files). The full build spec still reaches
the agent as plugin context (SKILL.md + example.html); only the
human-facing seed copy changed.

Add an e2e guard (plugin-description-hardwrap.test.ts) that fails if any
bundled manifest description carries an intra-paragraph hard wrap, so
the cleanup can't silently regress when new examples are added.
2026-06-16 22:39:55 +08:00

126 lines
7.1 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "https://open-design.ai/schemas/plugin.v1.json",
"specVersion": "1.0.0",
"name": "example-invoice",
"title": "Invoice",
"title_i18n": {
"zh-CN": "发票",
"zh-TW": "發票",
"ja": "請求書",
"ko": "인보이스",
"de": "Rechnung",
"fr": "Facture",
"ru": "Счёт",
"es": "Factura",
"pt-BR": "Fatura",
"it": "Fattura",
"vi": "Hóa đơn",
"pl": "Faktura",
"id": "Faktur",
"nl": "Factuur",
"ar": "فاتورة",
"tr": "Fatura",
"uk": "Рахунок-фактура",
"en": "Invoice"
},
"version": "0.1.0",
"description": "A printable invoice page — sender + recipient block, line items table, tax breakdown, totals, and payment instructions. Use when the brief mentions \"invoice\", \"bill\", \"billing statement\", or \"发票\".",
"description_i18n": {
"zh-CN": "可打印的发票页面——包含发件人和收件人信息块、明细表、税费明细、总计和付款说明。当需求提到'invoice'、'bill'、'billing statement'或'发票'时使用。",
"zh-TW": "可列印的發票頁面——包含寄件人和收件人資訊區塊、項目明細表、稅費明細、總計和付款說明。當需求提到'invoice'、'bill'、'billing statement'或'發票'時使用。",
"ja": "印刷可能な請求書ページ——送信者・受信者ブロック、明細表、税金内訳、合計、支払い方法を含みます。『invoice』『bill』『billing statement』『発票』といったキーワードが要件に含まれる場合に使用します。",
"ko": "인쇄 가능한 인보이스 페이지 — 발신자 및 수신자 블록, 항목 테이블, 세금 명세, 합계 및 결제 안내 포함. 'invoice', 'bill', 'billing statement', '发票' 등의 키워드가 포함된 경우 사용하세요.",
"de": "Eine druckbare Rechnungsseite – mit Absender- und Empfängerblock, Positionstabelle, Steueraufschlüsselung, Summen und Zahlungsanweisungen. Verwenden Sie diese Vorlage bei Begriffen wie 'invoice', 'bill', 'billing statement' oder '发票'.",
"fr": "Page de facture imprimable — bloc expéditeur + destinataire, tableau des articles, ventilation des taxes, totaux et instructions de paiement. À utiliser lorsque le brief mentionne 'invoice', 'bill', 'billing statement' ou '发票'.",
"ru": "Печатная страница счёта — блоки отправителя и получателя, таблица позиций, детализация налогов, итоги и платёжные инструкции. Используйте при упоминании 'invoice', 'bill', 'billing statement' или '发票'.",
"es": "Página de factura imprimible — bloque de remitente + destinatario, tabla de artículos, desglose de impuestos, totales e instrucciones de pago. Úsala cuando el brief mencione 'invoice', 'bill', 'billing statement' o '发票'.",
"pt-BR": "Página de fatura imprimível — bloco de remetente + destinatário, tabela de itens, detalhamento de impostos, totais e instruções de pagamento. Use quando o briefing mencionar 'invoice', 'bill', 'billing statement' ou '发票'.",
"it": "Pagina fattura stampabile — blocco mittente + destinatario, tabella voci, ripartizione imposte, totali e istruzioni di pagamento. Da usare quando il brief menziona 'invoice', 'bill', 'billing statement' o '发票'.",
"vi": "Trang hóa đơn có thể in — khối người gửi + người nhận, bảng chi tiết mục, phân tích thuế, tổng cộng và hướng dẫn thanh toán. Sử dụng khi yêu cầu đề cập 'invoice', 'bill', 'billing statement' hoặc '发票'.",
"pl": "Drukowana strona faktury — blok nadawcy i odbiorcy, tabela pozycji, zestawienie podatków, sumy i instrukcje płatności. Użyj, gdy brief wspomina o 'invoice', 'bill', 'billing statement' lub '发票'.",
"id": "Halaman faktur yang dapat dicetak — blok pengirim + penerima, tabel item, rincian pajak, total, dan instruksi pembayaran. Gunakan ketika brief menyebutkan 'invoice', 'bill', 'billing statement', atau '发票'.",
"nl": "Een afdrukbare factuurpagina — blok met verzender + ontvanger, regelitemtabel, belastingspecificatie, totalen en betaalinstructies. Gebruik bij vermeldingen van 'invoice', 'bill', 'billing statement' of '发票'.",
"ar": "صفحة فاتورة قابلة للطباعة — كتلة المرسل والمستلم، جدول البنود، تفصيل الضرائب، الإجماليات وتعليمات الدفع. استخدمها عندما يذكر الموجز 'invoice' أو 'bill' أو 'billing statement' أو '发票'.",
"tr": "Yazdırılabilir fatura sayfası — gönderen + alıcı bloğu, satır öğeleri tablosu, vergi dökümü, toplamlar ve ödeme talimatları. Brief'te 'invoice', 'bill', 'billing statement' veya '发票' geçtiğinde kullanın.",
"uk": "Сторінка рахунку для друку — блоки відправника й одержувача, таблиця позицій, деталізація податків, підсумки та платіжні інструкції. Використовуйте при згадці 'invoice', 'bill', 'billing statement' або '发票'.",
"en": "A printable invoice page — sender + recipient block, line items table, tax breakdown, totals, and payment instructions. Use when the brief mentions \"invoice\", \"bill\", \"billing statement\", or \"发票\"."
},
"license": "MIT",
"author": {
"name": "Open Design",
"url": "https://github.com/nexu-io"
},
"homepage": "https://github.com/nexu-io/open-design/tree/main/plugins/_official/examples/invoice",
"tags": [
"example",
"first-party",
"prototype",
"finance",
"web",
"desktop",
"invoice",
"bill",
"billing-statement",
"untitled"
],
"compat": {
"agentSkills": [
{
"path": "./SKILL.md"
}
]
},
"od": {
"kind": "scenario",
"taskKind": "new-generation",
"mode": "prototype",
"platform": "desktop",
"scenario": "finance",
"surface": "web",
"preview": {
"type": "html",
"entry": "./example.html"
},
"useCase": {
"query": {
"en": "Create an invoice from a freelance design studio billing a client for a brand identity project — three line items, 10% retainer, 9% sales tax.",
"zh-CN": "使用这个插件完成以下任务:Create an invoice from a freelance design studio billing a client for a brand identity project — three line items, 10% retainer, 9% sales tax."
},
"exampleOutputs": [
{
"path": "./example.html",
"title": "Invoice"
}
]
},
"context": {
"skills": [
{
"path": "./SKILL.md"
}
],
"designSystem": {
"primary": true
},
"assets": [
"./example.html"
]
},
"pipeline": {
"stages": [
{
"id": "generate",
"atoms": [
"file-write",
"live-artifact"
]
}
]
},
"capabilities": [
"prompt:inject",
"fs:write"
]
}
}