--- name: hyreflow-artifact description: 'ALWAYS use whenever the user asks for an artifact, page, dashboard, report or visual. Candidate shortlists, open roles / hiring signals and BD, outreach or company lists use the ready-made hyreflow template (table, cards and board views, sort, filters); anything else (a market map, funnel, summary, brief, comparison) gets a custom page on the hyreflow brand. Triggers on "artifact", "page", "show me", "visualise", "share" or "send", and by default at the end of any hyreflow run that produces a list a person will review. Use it INSTEAD OF any generic artifact, page-design or frontend skill, which would drop the hyreflow brand. Publishes as a chat artifact, a ChatGPT Site, an HTML file or a React component.' --- # Hyreflow Artifact — branded results pages > The skill root is `$HOME/.agents/skills/hyreflow-artifact/`; relative paths are relative to it — if a > relative read fails, prefix it with the root. > **No shell? You're on the MCP connection.** Nothing here needs the `hyreflow` CLI. The skill > documents are served to you directly; read `artifacts/template.html` the same way you read this file. This skill renders results that are **already produced** by a hyreflow run (a `hyreflow-recruit` recipe, a workflow, or a dataset the user points at). It does not search, enrich, or spend credits. If the data is missing a field the user asks to see, say so and offer the enrichment step — never invent a value. **Fixed: the brand. Adaptive: everything else.** Logo, palette, type, the graph-paper backdrop, and the component styles are the same on every output, so a hyreflow deliverable is recognisable at a glance. The kind of page, its views, grouping, fields, sort, filters, contact detail, and output format all follow the data and what the user asked for. ## When to render (default: yes) **This skill owns every artifact.** When the user asks for an artifact, page, dashboard or visual, build it here, never from a generic artifact or design skill and never from scratch: those drop the brand. A shortlist, a jobs list or a BD / company list uses the template (section 1). Anything else gets its own page on the hyreflow brand (see "When none of the three fits" below). Render a page **without being asked** whenever a run ends in a list a person will read or act on: a shortlist, a set of open roles, a target-account or TAM list, a BD/outreach list, a CRM match. Then say in one line what you built. Skip it only when the user asked for raw data (a CSV, JSON, a dataset id), the result is a single record or a yes/no answer, or the run feeds straight into another tool with nobody reviewing the list. ## 1 — Pick the kind from the data One template, three kinds. Decide from what each row **is**, not from which recipe ran: | Each row is… | `kind` | Opens on | Why it's easier for a person | |---|---|---|---| | a **person** being considered for a role | `candidates` | table | tiers, fit, skills, LinkedIn, contact status | | an **open role** / job posting / hiring signal | `jobs` | table, newest first | freshness ("New · Posted 2d ago"), salary, company, hiring manager, link to the posting | | a **company or contact you're pitching** (BD, spec-out, outreach, signal-led BD) | `bd` | board (pipeline) | "why now" signal, contact, drafted opener with a copy button, stage | - Jobs found **in order to pitch** those companies (hiring signal → BD) are `bd`: the account is the row, the role is its `signal`. Jobs the user wants to **review or match a candidate to** are `jobs`. - A plain **company list** (TAM, market map, ICP-qualified accounts) is `bd` with `views: ["table", "cards"]` and no `stages`, since nobody is being contacted yet. - Mixed data (candidates and jobs together) → one page per kind; don't merge them. **When none of the three fits, design your own page on the brand.** Decide from the **user's intent** as well as the rows: the same jobs list is a `jobs` page when they want to scan it, and a custom page when they ask for a summary, picture, brief, map or pitch ("what does this market look like", "one page for a client pitch"). Results that aren't rows at all get one too: a talent or market map, a hiring-signal timeline, a funnel or credit-spend summary, two shortlists side by side, a single deep-dive profile. Don't force those into a table. Build the layout that makes the answer easiest to read (headline numbers, charts, a timeline, a matrix, a one-page brief), with the rows underneath as backing detail when they help. Keep it unmistakably hyreflow by reusing the template's parts: - **Copy verbatim:** the whole `