{
  "version": 1,
  "//": [
    "The Deck app owns decks/<name>.deck.json — see SKILL.md for the shape.",
    "files.read also carries files/** because generated images land there and slides point at them.",
    "import.into is its OWN door: a dropped image lands in decks/assets without files.write buying it.",
    "Then: 00 app check deck   ·   pnpm exec vitest run test/deck-app.test.ts"
  ],
  "apps": [
    {
      "id": "deck",
      "title": "Deck",
      "icon": { "svg": "icon.svg", "color": "#0b0f10", "background": "linear-gradient(135deg, #7cf5c4, #37b6ff)" },
      "description": "Slides as cards from decks/*.deck.json: reorder by drag or arrows, retitle in place, attach an image, present full-pane.",
      "entry": "app/index.html",
      "opens": ["*.deck.json"],
      "capabilities": {
        "files": { "read": ["decks/**", "files/**"], "write": ["decks/**"] },
        "media": true,
        "import": { "into": "decks/assets" },
        "state": true
      }
    }
  ],
  "newSession": [
    {
      "id": "new-deck",
      "label": "New deck",
      "icon": "presentation",
      "prompt": "Write me a {{slides}}-slide deck about {{topic}} for {{audience}}, due by {{due}}. Put it in decks/<name>.deck.json — move the scaffolded untitled.deck.json into decks/ under a real name first. I will open it in the Deck app and we refine it there.",
      "inputs": {
        "topic":    { "kind": "text", "label": "the topic", "placeholder": "our Q4 launch", "max": 200 },
        "audience": { "kind": "text", "label": "the audience", "placeholder": "the exec team", "max": 120 },
        "slides":   { "kind": "number", "label": "how many slides", "min": 3, "max": 40, "step": 1, "default": 12 },
        "due":      { "kind": "date", "label": "when you need it", "optional": true }
      },
      "scaffold": {
        "file": "untitled.deck.json",
        "content": { "version": 1, "title": "Untitled deck", "slides": [] }
      }
    }
  ]
}
