From aria
Make and share a smart link. Create a live patchline.ai share link for a released track (or a pre-release drop link), then hand back distribution-ready copy for socials, email, and bio — plus how to read its analytics later. Use when the user says "make a smart link", "give me a share link for <song>", "create a link to send fans", "link for my release", or "how's my link doing". MCP-grounded: create_smart_link / create_drop_link -> get_share_surface -> get_surface_analytics. The link URL must be live — no placeholders.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aria:link [optional track title or catalog assetId; or a releaseId for a pre-release drop link][optional track title or catalog assetId; or a releaseId for a pre-release drop link]claude-sonnet-4-6This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Give the artist one live link to route fans everywhere, and the copy to spread it. The flow:
Give the artist one live link to route fans everywhere, and the copy to spread it. The flow:
catalog_search → get_asset) and confirm it has an ISRC.create_smart_link for a released track (server resolves DSP URLs from the ISRC), or create_drop_link for a pre-release/announcement.get_share_surface to confirm what's live and which platforms resolved.get_surface_analytics later.Both solo artists and labels use this. Keep copy role-agnostic.
The hard rule (from smart-link): the link URL you give the user must be the real shareUrl returned by the create tool. If the create call errors, STOP and surface it — never hand back a placeholder URL. The artist will paste it into their bio; a dead link kills the release.
../../CLAUDE.md — voice, MCP grounding, never surface internal provider names.Decide (or ask once via AskUserQuestion) which the user needs:
create_smart_link.create_drop_link with a releaseId.Default to a smart link if the track is already out.
If the user gave an assetId, use it. Otherwise mcp__aria__catalog_search with { query: "<track> <artist>" } → top hit's id. Then mcp__aria__get_asset with { assetId }.
Check the ISRC. create_smart_link requires it — the server resolves DSP links from the ISRC. If get_asset shows isrc null/missing:
STOP: "This track doesn't have an ISRC yet, and a smart link needs one to resolve DSP links. Distribute it through your distributor so an ISRC is assigned, then come back. If it's already distributed, re-import the asset to refresh the ISRC. (If you just want a pre-release/announcement link now, I can make a drop link instead.)"
Catching it here gives a clearer message than the server's generic rejection.
create_smart_link(
assetId: "<from Step 2>", // REQUIRED
title: "<optional display-name override>",
)
By default this returns the existing canonical link if one already exists for the track — it won't mint duplicates. Only pass forceNew: true when a separate campaign link is genuinely intended. Capture shareUrl and shareId.
create_drop_link(
releaseId: "<the release id>", // REQUIRED
title, artist, releaseDate, spotifyPresaveUrl, applePresaveUrl, smartLinkUrl // all optional
)
Capture shareUrl and shareId.
You do NOT pass DSP URLs to
create_smart_link— the server resolves them from the ISRC. For a drop link you may pass known pre-save URLs, but don't fabricate them.
assetId doesn't exist or isn't the user's; re-resolve in Step 2./mcp reconnect.Do not produce distribution copy with a placeholder URL. A real shareUrl is the gate.
Call mcp__aria__get_share_surface with { shareId } (or { url }) to confirm what's live and capture the resolved platform links / section config. Cite the real platforms — don't claim a DSP resolved if the response doesn't list it. If get_share_surface errors but the create call returned a shareUrl, the link still exists; note the read-back was unavailable and proceed with the create response.
Give the user ready-to-paste copy. Pull voice from anything the user told you about the release; keep it tight and non-generic.
Bio / link-in-bio:
Instagram (feed + story):
Feed caption: a short, specific line about the track — not "Excited to announce!" Drop the link in bio. Story: link sticker → , caption "out now" (or pre-save framing for a drop link).
Twitter/X:
One line + . Let the link do the work; ≤120 chars.
Email (if they have a list):
One short paragraph in the artist's voice, one CTA (stream / pre-save), . Under 100 words. If they have no list, suggest starting one before the next release.
Keep platform drafts to channels the user actually uses — don't fabricate a TikTok plan they never mentioned.
Check how the link is doing anytime — I'll pull
get_surface_analyticsfor<shareId>: views, captures, clicks, plays. For a released track, DSP coverage fills in over the first 24–48h as platforms index the ISRC; re-run this to refresh.
If the user asks now, call mcp__aria__get_surface_analytics with { shareId } and report the aggregate numbers (views, captures, downloads, plays, last viewed). Aggregates only — there are no individual fan identities in this surface.
≤4 sentences:
Live link for <track/release>: <if smart link: "— routes fans to platforms"; if it reused an existing link: "(reused your existing canonical link — no duplicate created)">. Copy for socials, email, and your bio is above. Say "how's my link doing" anytime and I'll pull the view/capture/click stats.
Generate a LINK.md artifact only if the user asks.
get_share_surface errors but create succeeded → proceed with the create shareUrl, note read-back unavailable.get_surface_analytics errors → surface it; the link is still live./mcp reconnect.create_smart_link — it takes only assetId (required), title, enabledSections, projectId, campaignId, forceNew, taskId. artist_name, track_isrc, cover_art_url, dsp_urls are not accepted; the server resolves them from the asset.forceNew: true. Default behavior reuses the canonical link — that's correct.get_share_surface / the create response actually resolved.npx claudepluginhub patchline-ai/aria --plugin ariaProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.