{"id":64655,"plugin_id":"plugin_asdk_app_6ad2507998dc81919e9919425ea50c5f","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-27T01:03:30.525Z","digest":"2bb71e62f7755367b3326fbd62969712fb181c4057e874a69b53c49c6a422bde","against":null,"payload":{"description":"Use when showing the user what Kinetik made, found or needs from them, or when writing Kinetik's view markup by hand. Which component shows what, and how each is written.","included_files":[],"name":"kinetik-show","skill_md_contents":"---\nname: kinetik-show\ndescription: Use when showing the user what Kinetik made, found or needs from them, or when writing Kinetik's view markup by hand. Which component shows what, and how each is written.\n---\n\n# Showing Kinetik's results\n\nThe user sees images, carousels and videos only in Kinetik's view, so it is how what Kinetik made, found or needs reaches them. Results from\nKinetik's tasks already come with the view written: show it as it is, and add nothing to it. This\nreference is for the rest: showing something again, putting several results in one view, or asking\nthe user for something. How a request is worked from intent to result is in `kinetik`; trends,\naccounts and media projects each have their own skill.\n\nThe view is written as simple markup: elements with quoted attributes, nested where an element holds\nothers. Several results go into one view, wrapped in `<render title=\"…\">…</render>`; a single\nelement needs no wrapper.\n\n## Choose the component\n\n| To show | Component |\n|---|---|\n| One image, video, PDF or table | `file` |\n| Text: an explanation, a caption to copy, a small table | `markdown` |\n| Related images in order, a carousel's slides | `gallery` |\n| How a post will look on Instagram | `instagram` |\n| Before and after, side by side | `compare` |\n| A profile, a scorecard or a source, built from files, numbers and text | `card` |\n| One labelled number, in a card or a grid | `metric` |\n| Several cards or numbers side by side | `grid` |\n| Many connected pieces made for one goal | `media-project` |\n| What is trending across social media, to pick from | `trending` |\n| Files the user has to hand over | `upload` |\n| Connecting the user's Instagram | `instagram-connect` |\n| Connecting the user's TikTok | `tiktok-connect` |\n| Connecting the user's LinkedIn | `linkedin-connect` |\n| What the user has connected | `connections` |\n| The user's Kinetik credits | `credits` |\n| A question with options, or a button to answer | `choice`, `action` |\n\n## Components\n\n### `file`\n\n    <file path=\"photos/launch/cover.png\" caption=\"Cover\"/>\n\nOne file Kinetik made, by the `path` its result gave; `url` instead for a link that is already\nshared. `caption` is optional. Images, videos and PDFs show as themselves, a CSV as a table.\n\n### `markdown`\n\n    <markdown copyable=\"true\">Five habits that keep me posting on busy weeks.</markdown>\n\nText, written as markdown. `copyable=\"true\"` adds a Copy button, for captions and scripts the user\ntakes away.\n\n### `gallery`\n\n    <gallery title=\"Launch visuals\"><file path=\"…\"/><file path=\"…\"/></gallery>\n\nRelated images, in viewing order. Unrelated files stay separate.\n\n### `instagram`\n\n    <instagram caption=\"Five habits… #contentplanning\"><file path=\"…/slide-01.png\"/><file path=\"…/slide-02.png\"/></instagram>\n\nThe files as one Instagram post, in posting order, with the caption as it would go out. Use it for\ncontent meant for Instagram, or when the user asks how it will look there. It is a preview: nothing\nis posted.\n\n### `compare`\n\n    <compare><file path=\"…/before.jpg\"/><file path=\"…/after.jpg\"/></compare>\n\nExactly two files: before first, after second.\n\n### `card`, `metric` and `grid`\n\n    <grid columns=\"3\">\n      <card title=\"@kinetikcoffee\" subtitle=\"Instagram\" href=\"https://instagram.com/kinetikcoffee\">\n        <metric label=\"Followers\" value=\"12.4K\" delta=\"+3%\"/>\n        <markdown>Reels outperform carousels two to one.</markdown>\n      </card>\n      <metric label=\"Avg. reach\" value=\"8.1K\"/>\n    </grid>\n\n- **`card`** groups files, metrics and text into one block: a profile, a scorecard, a source. `title`,\n  `subtitle` and `href` (an https link it opens) are optional.\n- **`metric`** is one number with its `label` and `value`, written as it should read; `delta` (such\n  as `+14%`) is optional.\n- **`grid`** lays cards, metrics and files side by side in 1 to 4 `columns`, and stacks them on\n  small screens by itself.\n\n### `media-project`\n\nA set of connected pieces made for one goal, as one view: sections by kind, each piece in a version\nper platform, and what the user still has to bring. Kinetik's results write it; write it yourself\nonly to show a set again or together.\n\n    <media-project title=\"Cold-brew kit launch\" summary=\"Launch next week: 39 €, five networks.\">\n      <section title=\"Videos\">\n        <item title=\"18 hours in 8 seconds\" why=\"A time-lapse makes the 18-hour claim visible.\">\n          <variant platform=\"instagram\" cut=\"Reel\" ratio=\"9:16\"><file path=\"…/reel.mp4\"/></variant>\n          <variant platform=\"tiktok\" ratio=\"9:16\"><file path=\"…/tiktok.mp4\"/></variant>\n        </item>\n      </section>\n      <section title=\"People on camera\">\n        <item title=\"Kit in action\">\n          <variant platform=\"tiktok\" status=\"missing\" need=\"A 10-second clip of someone using the kit.\"/>\n        </item>\n      </section>\n    </media-project>\n\n- **`media-project`:** `title`; optional `summary`, and `brand`, `handle` and `avatar` for the\n  account the previews post as.\n- **`section`:** a group of pieces of one kind, strongest first.\n- **`item`:** one piece; `why` says in a sentence why it works.\n- **`variant`:** the piece on one platform. `platform` is `instagram`, `tiktok`, `linkedin`, `x` or\n  `threads`. Optional: `cut`, `ratio`, `duration` (seconds), `pages`, `caption`, `format`.\n  One file is a picture or a video, several are a carousel, text is a `markdown` child.\n- **`status`**, on any of them: `ready` (the default), `sample`, `planned`, or `missing` with `need`\n  saying what the user has to bring.\n\n### `trending`\n\n    <trending/>\n    <trending title=\"What's trending this week\"/>\n\nWhat is trending across social media now, filled in by Kinetik; the user picks one with a tap.\n`title` is optional and replaces the heading. It takes nothing else: the trends are always today's.\n\n### `upload`\n\n    <upload title=\"Add the photo for your post\"/>\n\nA place for the user to hand over files, where the host does not let them attach files to their\nmessage. `title` is optional. When the files are in, the user's message says so.\n\n### `instagram-connect`\n\n    <instagram-connect message=\"To post your carousel, connect your Instagram.\"/>\n\nConnects the user's Instagram, to post to it or read its results. `message` is one line in their\nlanguage saying why; the card itself explains that Instagram needs a Business or Creator account.\nThe user signs in on Composio's page.\n\n### `tiktok-connect` and `linkedin-connect`\n\n    <tiktok-connect message=\"To save the video to your TikTok drafts, connect TikTok.\"/>\n    <linkedin-connect message=\"To post this on LinkedIn, connect your LinkedIn.\"/>\n\nConnect the user's TikTok or LinkedIn, each on the service's own sign-in page. `message` is one line\nin their language saying why. Instagram, TikTok and LinkedIn are the accounts that\nconnect here.\n\nWhen a task needs an account, its result usually brings the card already: show it as returned. The\nuser connects in their browser and comes back; nothing tells you when, so ask them to say so. A card\nmay show even when the account is already connected; `connections` says what is.\n\n### `connections`\n\n    <connections title=\"Your accounts\"/>\n\nWhat the user has connected, one row per service, each with a way to disconnect it. `title` is\noptional, and it takes nothing else: which services are there is read for the user. Show it when the\nuser asks what is connected, and before asking for a new connection when one may already be there.\n\n### `credits`\n\n    <credits/>\n\nThe user's Kinetik balance, with a way to refresh it. It takes nothing: the balance is read for the\nuser. Show it when they ask about credits, or when a task could not start because none are left;\nthen say the task did not start, and go on when the user asks. Where the client sells nothing, the\ncard shows no way to buy, so do not offer one in words either.\n\n### `choice` and `action`\n\n    <choice id=\"platforms\" multiple=\"true\">\n      <option value=\"instagram\">Instagram</option>\n      <option value=\"tiktok\" description=\"Saved to your drafts\">TikTok</option>\n    </choice>\n    <action id=\"approve\" label=\"Looks good\"/>\n\nA question the user answers with a tap. `choice` takes at least two options and, with `multiple`,\nseveral picks; an option's `description` is one line under it. `action` is one button; `kind` may\nbe `primary`, `secondary` or `danger`. The answer arrives as the user's message, the label(s) they\nchose. Several choices in one view are answered together.\n\n`choice`, `action`, `upload`, the connect cards, `connections` and `credits` go at the top of a\nview, never inside a `card` or a `grid`.\n\n## Rules\n\n- **One view at the end.** When several results are ready, show them together in one view, then\n  say a sentence or two. Do not retell what the user sees.\n- **The chat keeps what it showed.** A view stays as it was. A next step is a new view, and the\n  same view is shown again only when the user asks.\n- **Markup that is wrong is refused** with what to fix. Fix it and show again.\n- **Where the host shows no views,** the answer says so. Give the user the link to the view and the\n  link to each file it holds, with the text the answer carries; the links open for the user once\n  signed in to Kinetik.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}