{"id":"5f2c09eb-b6e5-4812-b79d-60eb19af3430","shortId":"TQtktw","kind":"skill","title":"find-design-agency","tagline":"Use whenever the user wants to find, shortlist, vet, or enrich US design and creative agencies — graphic design, UX/UI, product design, brand identity, packaging, illustration, motion design, and creative direction. Triggers on \"find me a UX/UI design agency for our SaaS product\"","description":"# find-design-agency\n\nDrive the **ServiceGraph API** (`https://api.servicegraph.co`) to find,\nshortlist, and enrich US design and creative agencies. The catalog\ntags firms with `industry:design_creative` and a 13-tag service\nsub-taxonomy spanning graphic design, UX/UI, product design,\nindustrial design, brand identity, packaging, illustration, motion,\nand creative direction.\n\n**Always pin `industry:design_creative`.** Sub-disciplines are\ntypically structured `service_provided` tags (`graphic-design`,\n`ui-ux-design`, `product-design`, `branding`, etc.) — confirm exact\nnames via `/v1/tags`.\n\nAny HTTP client works (curl, fetch, requests). Examples below use curl.\n\n## Sibling skills — defer when scope is different\n\n- **Marketing-led engagements** where design is one of several\n  services (PR + content + paid + design) → `find-marketing-agency`.\n  This skill is for **design-led** engagements where the design work\n  IS the primary deliverable.\n- **Build-the-website work** (coded marketing site, ecommerce store,\n  custom CMS) → `find-web-developer`. Design agencies often partner\n  with web devs on builds; if the user wants someone to ship the\n  built artifact, fire web-developer.\n- **Custom software with design needs** (SaaS app, internal tool with\n  UX work) → `find-software-developer` is the right fire when the\n  deliverable is software. Pure design (Figma files, brand systems,\n  print collateral) stays here.\n\nIf the deliverable is **design output** (visual systems, UX\nprototypes, brand guidelines, packaging artwork, motion frames, print\nfiles) and the user is procuring a firm to produce it, this skill\napplies.\n\n## When NOT to use this skill\n\n- **Consumer/personal design** — weddings, hobby projects, Etsy side\n  projects, custom holiday cards, personal portfolio sites for an\n  individual. The catalog is B2B procurement only.\n- **DIY** — \"design me a logo\", \"make me a hero illustration\",\n  \"redesign my app's onboarding flow\". Refuse and offer to find a\n  firm if they want to engage one.\n- **In-house designer hires** (Lead Designer, UX Researcher, Brand\n  Designer).\n- **Design-software product comparisons** (Figma vs Sketch vs Adobe\n  XD vs Penpot, Webflow vs Framer, etc.).\n- **Knowledge questions** (\"explain the difference between UX and\n  UI\").\n- **Non-US firms** / **individual freelance designers**.\n\n## MCP server (preferred for authed calls)\n\nIf your agent harness has the **ServiceGraph MCP server** loaded\n(`https://mcp.servicegraph.co`), prefer its tools for the **authed**\ntier (`/search`, `/get`, `/stats`). The MCP server uses OAuth 2.1 +\nPKCE — the host harness handles credentials in its own audited\nsandbox, so there's no `.env.local`, no shell dispatch, and no token\nvalue ever enters the LLM context.\n\nFor the **anonymous** tier (`/tags`, `/check`, `/explore`), MCP is\n**not** preferred — every MCP tool requires OAuth (the server has no\nanonymous tier), so plain curl against the REST URL is the simpler\npath for discovery calls. Use the REST patterns below for those.\n\nThe MCP tools 1:1-map to the public REST endpoints — same backend,\nsame quota, same data:\n\n| MCP tool | REST endpoint | Anon? | Recommended path |\n|---|---|---|---|\n| `list_tags` | `GET /v1/tags` | yes | curl |\n| `check_filter` | `GET /v1/check` | yes | curl |\n| `explore_firms` | `GET /v1/explore` | yes | curl |\n| `search_firms` | `GET /v1/search` | no | MCP if loaded, else curl + OTP |\n| `get_firm` | `GET /v1/get/:id` | no | MCP if loaded, else curl + OTP |\n| `catalog_stats` | `GET /v1/stats` | no | MCP if loaded, else curl + OTP |\n\n**Detection**: if you see any MCP tools with `servicegraph` in the\nname (the harness-specific prefix varies — agents pattern-match the\nsubstring), the ServiceGraph MCP server is loaded. Prefer those\ntools for the authed tier; complete any auth flow the harness\ninitiates if needed. If no `servicegraph` MCP tools are present,\nfall through to the REST + OTP flow below for the authed tier.\n\n## The four-tier funnel\n\n| Tier | Auth | Cost | Use it for |\n|---|---|---|---|\n| `GET /v1/tags` | none | free | **First call of every session.** Discover legal field names, kinds, operators, values. |\n| `GET /v1/check?filter=...` | none | free | Validate a filter before spending an explore/search call. |\n| `GET /v1/explore?filter=...` | none | free, IP-throttled | Scope: count + breakdowns. Use to size the candidate pool before quota-spending. |\n| `GET /v1/search?filter=...` | bearer | 200 unique firms / month free | Brief firm cards. **No url, no contact info.** Use for ranking / shortlisting. |\n| `GET /v1/get/:id` | bearer | 50 unique firms / month free | Full bundle: url, phone, email, social, legal name, address. **Only call for shortlisted firms.** |\n| `POST /v1/research` | paid | not in MVP | Deferred — skip. |\n\n**Quota rule that matters**: `/search` and `/get` charge per *unique\nfirm viewed per calendar month*, not per call. Re-paging the same\nquery is free. Two different filters that overlap charge once for\nthe overlap. Re-fetching a firm you already pulled this month is free.\n\n## Session-start ritual\n\nBefore constructing any filter, call:\n\n```\nGET https://api.servicegraph.co/v1/tags?include_values=1\n```\n\nCache the response for the conversation. Confirm `design_creative` is\nin the `industry` value list and that the relevant sub-discipline tags\n(`graphic-design`, `ui-ux-design`, `product-design`, `branding`,\n`packaging-design`, `motion-design`, `illustration`, etc.) are in\n`service_provided`. Tag names sometimes drift; verify before\nconstructing filters.\n\nField kinds you'll use most:\n- **categorical**: `industry` (always `design_creative`), `state`, `pricing_model`, `company_size_signal`, `geography_served` — op `:`\n- **tag_set_with_evidence**: `service_provided` (e.g. `graphic-design`, `ui-ux-design`, `branding`) — op `:` with optional `@evidence`\n- **numeric**: `rating`, `review_count_total`, `founded_year` — ops `= >= <= > <`\n- **presence**: `has:phone`, `has:clutch`, `has:rating`, `has:linkedin_company`, …\n- **keyword**: free-text substring across firm name / brand / title / meta / legal_name. **Verticals (SaaS, fintech, healthcare, CPG, hospitality) and credentials (AIGA, Awwwards) are keyword-only.**\n\n## Auth\n\n`/tags`, `/check`, and `/explore` are anonymous. `/search` and `/get`\nrequire a bearer token.\n\n**Security model — keep the token out of the LLM context.**\n\n- **Never** read `.env`, `.env.local`, or any other credential file\n  into your context. The token's literal value should never appear\n  in the conversation.\n- Use shell dispatch for every authed request so the token flows\n  directly from the user's environment / dotenv file into the\n  `Authorization` header without round-tripping through the LLM.\n- **Always ask the user once per session** before using a detected\n  token, even if it's already in their shell or `.env.local`.\n\n**Resolution rule**:\n\n1. **Detect** whether a token is available — without reading its\n   value. Run a shell check that only inspects exit codes:\n\n   ```bash\n   ( [ -n \"${SERVICEGRAPH_TOKEN:-}\" ] \\\n     || grep -qs '^SERVICEGRAPH_TOKEN=' .env.local \\\n     || grep -qs '^SERVICEGRAPH_TOKEN=' .env )\n   ```\n\n   Exit code `0` = token is available somewhere; non-zero = no token.\n\n2. **Confirm with the user** before the first authed call this session:\n\n   > \"I found a `SERVICEGRAPH_TOKEN` in your environment / `.env.local`.\n   > OK to use it for ServiceGraph API requests this session?\"\n\n   If the user says no, stay on the anonymous tiers (`/tags`, `/check`,\n   `/explore`) and skip authed calls. Don't re-ask later unless the\n   user asks for authed work.\n\n3. **Dispatch via shell** — every authed call goes through a shell\n   wrapper so the literal token never enters the conversation:\n\n   ```bash\n   # If exported in the shell environment:\n   curl -H \"Authorization: Bearer $SERVICEGRAPH_TOKEN\" \\\n        'https://api.servicegraph.co/v1/search?filter=...'\n\n   # If in .env.local — source it inside a subshell so it doesn't\n   # leak into the parent shell either:\n   ( set -a; . ./.env.local; set +a;\n     curl -H \"Authorization: Bearer $SERVICEGRAPH_TOKEN\" \\\n          'https://api.servicegraph.co/v1/search?filter=...' )\n   ```\n\n   Capture the response body to a tmp file or jq-process it, but do\n   NOT echo the request command with the token expanded.\n\n4. **OTP flow** if no token is detected — capture the new token\n   directly into `.env.local` without surfacing its value to the LLM:\n\n   ```bash\n   # 1. trigger the email — agent prompts the user for $EMAIL\n   curl -fsS -X POST 'https://api.servicegraph.co/v1/auth/request-otp' \\\n     -H 'Content-Type: application/json' \\\n     -d \"{\\\"email\\\":\\\"$EMAIL\\\"}\"\n\n   # 2. exchange the code — agent prompts the user for $CODE.\n   #    The ?format=env query param returns SERVICEGRAPH_TOKEN=<token>\n   #    as plain text appended to .env.local — no jq needed. The -f\n   #    flag makes curl exit non-zero on 4xx so a wrong code doesn't\n   #    pollute the file (the error mirror is also a `# comment` line,\n   #    safe to ignore even if it lands).\n   curl -fsS -X POST 'https://api.servicegraph.co/v1/auth/verify-otp?format=env' \\\n     -H 'Content-Type: application/json' \\\n     -d \"{\\\"email\\\":\\\"$EMAIL\\\",\\\"code\\\":\\\"$CODE\\\",\\\"name\\\":\\\"claude-cli\\\"}\" \\\n     >> .env.local\n\n   # 3. confirm capture without revealing the value\n   grep -q '^SERVICEGRAPH_TOKEN=' .env.local && echo \"OTP token captured.\"\n   ```\n\n   After a successful capture, the user has implicitly consented\n   (they just completed the flow), so proceed to dispatch (step 3).\n   The token is now persistent in `.env.local` for future sessions.\n\n5. If a `/search` or `/get` returns `401 unauthorized` mid-session,\n   the token expired or was revoked — re-run the OTP flow.\n\n## Filter DSL\n\nOne query parameter, GitHub-search-style.\n\n```\nfilter   := orExpr\norExpr   := andExpr (\"OR\" andExpr)*\nandExpr  := notExpr ((\"AND\")? notExpr)*    # whitespace = implicit AND\nnotExpr  := (\"NOT\" | \"-\") notExpr | atom\natom     := \"(\" filter \")\" | predicate\npredicate:= IDENT op valueOrList | bareword\nop       := \":\" | \"=\" | \">=\" | \"<=\" | \">\" | \"<\"\nvalueOrList := value (\",\" value)*\nvalue    := IDENT | NUMBER | tagAtEvidence\ntagAtEvidence := IDENT \"@\" (\"low\"|\"medium\"|\"high\")\nbareword := IDENT | NUMBER          # → keyword:<bareword>\n```\n\n**Four rules that bite:**\n\n1. **AND binds tighter than OR.** `a OR b c` parses as `a OR (b AND c)`.\n   Use parens.\n2. **Comma list = OR within one predicate.** `state:CA,NY,TX` matches\n   any of the three.\n3. **Negation is `-x` or `NOT x`.** Negative literals inside a comma\n   list are **not** allowed: `state:CA,-NY` is rejected. Use\n   `state:CA -state:NY`.\n4. **Bareword = keyword search.** Any IDENT or NUMBER not followed by\n   an operator becomes a free-text substring across name / brand /\n   title / meta / legal_name. Multiple barewords AND.\n\n**Design-flavored examples** (validate yours with `/v1/check`):\n\n```\nindustry:design_creative service_provided:ui-ux-design saas\nindustry:design_creative service_provided:branding state:NY\nindustry:design_creative service_provided:packaging-design cpg\nindustry:design_creative service_provided:product-design hardware\nindustry:design_creative service_provided:graphic-design annual report\nindustry:design_creative motion animation\nindustry:design_creative service_provided:branding@high rating>=4 has:clutch\nindustry:design_creative service_provided:ui-ux-design@high fortune\n```\n\nWhen in doubt, hit `/v1/check?filter=...` first.\n\n**Sub-discipline → tag mapping** (verify exact names via `/v1/tags`):\n\n| User asks for | Use |\n|---|---|\n| Graphic design (logos, print, layouts) | `service_provided:graphic-design` |\n| Logo design specifically | `service_provided:logo-design` |\n| UX/UI design (digital products) | `service_provided:ui-ux-design` |\n| Product design (digital + research) | `service_provided:product-design` |\n| Brand identity / visual identity | `service_provided:branding` |\n| Packaging design | `service_provided:packaging-design` |\n| Print design / collateral | `service_provided:print-design` |\n| Web design (visual) | `service_provided:web-design` (distinct from `service_provided:web-development` which is build) |\n| Interior design | `service_provided:interior-design` |\n| Illustration / motion design / creative direction | **no structured tag** — keyword-only (`illustration`, `motion`, `animation`, `creative direction`) |\n| Industrial design (physical products) | **no structured tag** — closest is `service_provided:product-design` plus keyword `hardware` / `industrial` |\n\nVerticals (SaaS, fintech, healthcare-tech, CPG, hospitality, etc.)\nand design-system credentials (AIGA, Awwwards-recognized) are\nkeyword-only.\n\n## firm_id contract\n\n`firm_id` is a stable 12-hex-char handle:\n\n```\nfirm_id = sha256(apex.lower().rstrip(\".\")).hexdigest()[:12]\n```\n\n```python\nimport hashlib\ndef firm_id(apex):\n    return hashlib.sha256(apex.lower().rstrip(\".\").encode()).hexdigest()[:12]\n```\n\n```bash\necho -n \"ideo.com\" | tr 'A-Z' 'a-z' \\\n  | openssl dgst -sha256 -hex | awk '{print substr($2,1,12)}'\n```\n\n## Recipes\n\n### A. UX/UI for a SaaS product\n\nUser: *\"UX/UI design agency for our SaaS product.\"*\n\n```\nGET /v1/explore?filter=industry:design_creative+service_provided:ui-ux-design+saas\nGET /v1/search?filter=industry:design_creative+service_provided:ui-ux-design+saas&limit=10\nGET /v1/get/<firm_id>     # ×3\n```\n\n### B. Brand-identity studio in a state\n\nUser: *\"Three brand-identity studios in NY for our rebrand.\"*\n\n```\nGET /v1/search?filter=industry:design_creative+service_provided:branding+state:NY+-company_size_signal:large_50plus&limit=10\n```\n\n`-large_50plus` keeps the result list to studio-size shops (rebranding\ntypically happens with boutique studios, not 100-person agencies).\n\n### C. Packaging for CPG\n\nUser: *\"Packaging design firm for a CPG launch.\"*\n\n```\nGET /v1/search?filter=industry:design_creative+service_provided:packaging-design+(cpg OR consumer)\n```\n\n### D. Product design with hardware experience\n\nUser: *\"Product design consultancy with hardware experience.\"*\n\n```\nGET /v1/search?filter=industry:design_creative+service_provided:product-design+hardware+industrial\n```\n\n### E. Indirect intent — \"design our visual identity and packaging\"\n\nUser: *\"We need someone to design the visual identity and packaging\nfor our new line of beverages.\"*\n\nThat's a brand+packaging engagement:\n\n```\nGET /v1/search?filter=industry:design_creative+(service_provided:branding+service_provided:packaging-design)+(beverage OR cpg)\n```\n\nIf the result list is thin, drop one of the structured tags (start\nwith packaging-design) — many brand-identity studios deliver\npackaging as part of the system.\n\n### F. Graphic design for corporate use cases\n\nUser: *\"Graphic design firms experienced with annual reports and\ninvestor decks.\"*\n\n```\nGET /v1/search?filter=industry:design_creative+service_provided:graphic-design+(annual OR investor OR corporate)\n```\n\n### G. Quality threshold + Fortune 500 clients\n\nUser: *\"Three UX/UI agencies with at least 4-star ratings and Fortune\n500 clients.\"*\n\n```\nGET /v1/search?filter=industry:design_creative+service_provided:ui-ux-design@high+rating>=4+fortune&limit=10\n```\n\n### H. Brand-system overhaul\n\nUser: *\"Creative agency for a brand system overhaul — logo,\ntypography, color, voice.\"*\n\n```\nGET /v1/search?filter=industry:design_creative+service_provided:branding@high\n```\n\nIf find-marketing-agency seems closer (the user mentioned \"voice\" /\ncopywriting), the line is fuzzy — branding firms usually deliver voice\nguidelines as part of brand system. Stay here unless the user\nexplicitly asks for marketing strategy / campaigns.\n\n### I. BYO apex list — enrich domains\n\nUser pastes 8–20 design firm domains. For each:\n\n1. Compute `firm_id` locally.\n2. `GET /v1/get/<firm_id>` — full bundle if in catalog, 404 if not.\n3. Aggregate, present, flag the not-found ones to the user.\n\nA 404 here often means the firm is tagged under\n`industry:marketing_agency` instead — design and marketing overlap\nheavily in the catalog, and some shops self-classify as marketing.\n\n## Gotchas\n\n- **Always pin `industry:design_creative`.** Without it, design-related keywords (branding, ui-ux-design) appear in marketing_agency rows too.\n- **Defer to `find-marketing-agency` for marketing-led engagements.** If the user wants brand + content + paid + social as one engagement, that's marketing-agency territory. This skill is for design-primary engagements.\n- **Defer to `find-web-developer` for the build phase.** Design agencies make Figma files; web devs ship code. If the user wants the built artifact, fire web-developer.\n- **Refuse consumer-personal design.** Weddings, custom holiday cards, hobby Etsy logos, personal portfolio sites — not in catalog. Tell the user the catalog is B2B-only.\n- **DIY asks** (\"design me a logo\", \"make a hero image\") are NOT procurement.\n- **Design-software comparisons** (Figma vs Sketch, Adobe vs Affinity) are NOT procurement.\n- **`looks_not_pro_services` 404 is not a bug.** A `firm_id` may exist in `/search` but 404 on `/get` if it's been flagged. Skip and continue; not charged.\n- **`/v1/explore` k=20 suppression.** When fewer than 20 firms match, the response is `{\"count\": \"<20\", \"suppressed\": true, \"breakdowns\": {}}`. Drilling further makes the count smaller. Broaden or escalate to `/v1/search`.\n- **Briefs from `/search` do NOT include `apex`, `url`, `phone_primary`, `email_primary`, `legal_name`, or address.** If the user asks for contact info, you must `/get/:id`.\n- **Quota is per-user-per-month, deduped on first view.** Re-views are free; re-pagination is free.\n\n## Errors\n\nAll errors return JSON: `{\"error\": {\"code\": \"...\", \"message\": \"...\"}}`.\n\n| Status | Code | What to do |\n|---|---|---|\n| 400 | `filter_parse_error` | Payload includes `position`. Fix the filter, re-validate with `/v1/check`. |\n| 400 | `filter_required` | Empty filter where one is required. |\n| 400 | `invalid_firm_id` | firm_id must be 12 lowercase hex chars. Re-derive. |\n| 401 | `unauthorized` | Token missing/expired. Re-run OTP. |\n| 404 | `not_found` | Firm not in catalog or flagged. Not charged. Skip and continue. |\n| 429 | `rate_limited` | Honor `Retry-After` header / `retry_after` field. |\n| 429 | `monthly_quota_exhausted` | Switch to `/v1/explore`-only mode for the rest of the month. Tell the user. |\n\n## End-to-end example\n\nUser: *\"Three UX/UI design agencies for our SaaS product, ideally with\n4-star ratings and healthcare-tech experience.\"*\n\n```\nGET /v1/tags?include_values=1\nGET /v1/check?filter=industry:design_creative+service_provided:ui-ux-design@high+saas+healthcare+rating>=4\nGET /v1/explore?filter=industry:design_creative+service_provided:ui-ux-design@high+saas+healthcare+rating>=4\nGET /v1/search?filter=...&limit=10\nGET /v1/get/<firm_id>     # ×3\n```\n\nEnd of session: report `X-Quota-Remaining-Month`.","tags":["find","design","agency","servicegraph","nostrband","agent-skills","ai-agents","b2b-data","claude-code-marketplace","claude-code-plugins","claude-code-skills","claude-plugins"],"capabilities":["skill","source-nostrband","skill-find-design-agency","topic-agent-skills","topic-ai-agents","topic-b2b-data","topic-claude-code-marketplace","topic-claude-code-plugins","topic-claude-code-skills","topic-claude-plugins","topic-claude-skills","topic-mcp-server","topic-openapi","topic-professional-services","topic-vendor-discovery"],"categories":["ServiceGraph"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/nostrband/ServiceGraph/find-design-agency","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add nostrband/ServiceGraph","source_repo":"https://github.com/nostrband/ServiceGraph","install_from":"skills.sh"}},"qualityScore":"0.530","qualityRationale":"deterministic score 0.53 from registry signals: · indexed on github topic:agent-skills · 160 github stars · SKILL.md body (18,836 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:56:02.925Z","embedding":null,"createdAt":"2026-05-06T18:58:47.855Z","updatedAt":"2026-05-18T18:56:02.925Z","lastSeenAt":"2026-05-18T18:56:02.925Z","tsv":"'/.env.local':1210 '/check':455,948,1135 '/explore':456,950,1136 '/get':414,753,955,1429,2495,2560 '/search':413,751,953,1427,2491,2537 '/stats':415 '/tags':454,947,1134 '/v1/auth/request-otp''':1285 '/v1/auth/verify-otp?format=env''':1362 '/v1/check':526,662,1600,1678,2610,2716 '/v1/explore':532,675,1906,2506,2674,2733 '/v1/get':549,717,1934,2283,2755 '/v1/research':740 '/v1/search':538,696,1919,1956,2007,2034,2079,2143,2179,2214,2534,2750 '/v1/search?filter=...''':1189,1221 '/v1/stats':561 '/v1/tags':128,520,646,1690,2711 '/v1/tags?include_values=1':807 '0':1083 '1':496,497,1047,1269,1503,1888,2276,2714 '10':1932,1972,2195,2753 '100':1991 '12':1843,1854,1868,1889,2628 '13':76 '2':1093,1294,1522,1887,2281 '2.1':421 '20':2270,2508,2513,2520 '200':699 '3':1154,1378,1413,1538,1935,2292,2756 '4':1246,1564,1660,2171,2192,2702,2731,2748 '400':2596,2611,2620 '401':1431,2635 '404':2289,2305,2480,2493,2643 '429':2657,2668 '4xx':1331 '5':1424 '50':720 '500':2162,2176 '50plus':1970,1974 '8':2269 'a-z':1874,1877 'across':924,1583 'address':733,2550 'adob':365,2470 'affin':2472 'agenc':4,20,42,50,65,165,199,1900,1993,2167,2203,2227,2316,2354,2362,2383,2404,2695 'agent':397,587,1273,1298 'aggreg':2293 'aiga':940,1827 'allow':1553 'alreadi':789,1039 'also':1345 'alway':98,870,1023,2335 'andexpr':1460,1462,1463 'anim':1651,1792 'annual':1645,2137,2153 'anon':514 'anonym':452,470,952,1132 'apex':1861,2263,2541 'apex.lower':1851,1864 'api':54,1120 'api.servicegraph.co':55,806,1188,1220,1284,1361 'api.servicegraph.co/v1/auth/request-otp''':1283 'api.servicegraph.co/v1/auth/verify-otp?format=env''':1360 'api.servicegraph.co/v1/search?filter=...''':1187,1219 'api.servicegraph.co/v1/tags?include_values=1':805 'app':227,328 'appear':989,2351 'append':1315 'appli':286 'application/json':1290,1367 'artifact':216,2418 'artwork':269 'ask':1024,1145,1150,1692,2256,2451,2554 'atom':1473,1474 'audit':431 'auth':393,411,604,608,632,640,946,998,1101,1139,1152,1159 'author':1014,1183,1215 'avail':1053,1086 'awk':1884 'awwward':941,1829 'awwwards-recogn':1828 'b':1511,1517,1936 'b2b':313,2448 'b2b-only':2447 'backend':505 'bareword':1481,1495,1565,1591 'bash':1067,1174,1268,1869 'bearer':698,719,958,1184,1216 'becom':1577 'beverag':2071,2092 'bind':1505 'bite':1502 'bodi':1225 'boutiqu':1988 'brand':26,90,122,250,266,354,841,896,927,1585,1616,1657,1732,1738,1938,1947,1963,2075,2086,2114,2198,2206,2221,2239,2248,2346,2372 'brand-ident':1937,1946,2113 'brand-system':2197 'breakdown':684,2523 'brief':704,2535 'broaden':2530 'bug':2484 'build':183,206,1771,2401 'build-the-websit':182 'built':215,2417 'bundl':726,2285 'byo':2262 'c':1512,1519,1994 'ca':1530,1555,1561 'cach':808 'calendar':760 'call':394,485,650,673,735,764,803,1102,1140,1160 'campaign':2260 'candid':689 'captur':1222,1254,1380,1393,1397 'card':303,706,2431 'case':2130 'catalog':67,311,558,2288,2325,2440,2445,2649 'categor':868 'char':1846,2631 'charg':754,778,2505,2653 'check':523,1061 'classifi':2331 'claud':1375 'claude-c':1374 'cli':1376 'client':131,2163,2177 'closer':2229 'closest':1802 'clutch':913,1662 'cms':193 'code':187,1066,1082,1297,1303,1335,1371,1372,2411,2589,2592 'collater':253,1748 'color':2211 'comma':1523,1549 'command':1241 'comment':1347 'compani':876,918,1966 'comparison':360,2466 'complet':606,1405 'comput':2277 'confirm':124,814,1094,1379 'consent':1402 'construct':800,860 'consult':2029 'consum':2019,2425 'consumer-person':2424 'consumer/personal':293 'contact':710,2556 'content':159,1288,1365,2373 'content-typ':1287,1364 'context':449,969,981 'continu':2503,2656 'contract':1837 'convers':813,992,1173 'copywrit':2234 'corpor':2128,2157 'cost':641 'count':683,904,2519,2528 'cpg':936,1627,1819,1997,2004,2017,2094 'creativ':19,33,64,73,96,102,816,872,1603,1613,1621,1630,1639,1649,1654,1665,1782,1793,1910,1923,1960,2011,2038,2083,2147,2183,2202,2218,2339,2720,2737 'credenti':427,939,977,1826 'curl':133,139,474,522,528,534,544,556,567,1181,1213,1279,1325,1356 'custom':192,221,301,2429 'd':1291,1368,2020 'data':509 'deck':2141 'dedup':2569 'def':1858 'defer':142,745,2357,2393 'deliv':2117,2242 'deliver':181,243,258 'deriv':2634 'design':3,17,22,25,31,41,49,62,72,84,87,89,101,114,118,121,152,161,171,176,198,224,247,260,294,317,348,351,355,357,388,815,833,837,840,844,847,871,891,895,1594,1602,1609,1612,1620,1626,1629,1635,1638,1644,1648,1653,1664,1671,1696,1704,1706,1712,1714,1722,1724,1731,1740,1745,1747,1753,1755,1761,1773,1778,1781,1796,1808,1824,1899,1909,1916,1922,1929,1959,2000,2010,2016,2022,2028,2037,2043,2049,2060,2082,2091,2111,2126,2133,2146,2152,2182,2189,2217,2271,2318,2338,2343,2350,2390,2403,2427,2452,2464,2694,2719,2726,2736,2743 'design-flavor':1593 'design-l':170 'design-primari':2389 'design-rel':2342 'design-softwar':356,2463 'design-system':1823 'detect':569,1033,1048,1253 'dev':204,2409 'develop':197,220,236,1768,2398,2422 'dgst':1881 'differ':146,377,774 'digit':1715,1725 'direct':34,97,1004,1258,1783,1794 'disciplin':105,829,1683 'discov':654 'discoveri':484 'dispatch':440,995,1155,1411 'distinct':1762 'diy':316,2450 'doesn':1200,1336 'domain':2266,2273 'dotenv':1010 'doubt':1676 'drift':857 'drill':2524 'drive':51 'drop':2101 'dsl':1449 'e':2046 'e.g':888 'echo':1238,1390,1870 'ecommerc':190 'either':1207 'els':543,555,566 'email':729,1272,1278,1292,1293,1369,1370,2545 'empti':2614 'encod':1866 'end':2687,2689,2757 'end-to-end':2686 'endpoint':503,513 'engag':150,173,343,2077,2367,2378,2392 'enrich':15,60,2265 'enter':446,1171 'env':972,1080,1306 'env.local':437,973,1044,1075,1113,1192,1260,1317,1377,1389,1420 'environ':1009,1112,1180 'error':1342,2583,2585,2588,2599 'escal':2532 'etc':123,372,849,1821 'etsi':298,2433 'even':1035,1352 'ever':445 'everi':461,652,997,1158 'evid':885,900 'exact':125,1687 'exampl':136,1596,2690 'exchang':1295 'exhaust':2671 'exist':2489 'exit':1065,1081,1326 'expand':1245 'experi':2025,2032,2709 'experienc':2135 'expir':1438 'explain':375 'explicit':2255 'explor':529 'explore/search':672 'export':1176 'f':1322,2124 'fall':622 'fetch':134,785 'fewer':2511 'field':656,862,2667 'figma':248,361,2406,2467 'file':249,273,978,1011,1229,1340,2407 'filter':524,663,668,676,697,775,802,861,1448,1457,1475,1679,1907,1920,1957,2008,2035,2080,2144,2180,2215,2597,2605,2612,2615,2717,2734,2751 'find':2,11,37,48,57,163,195,234,336,2225,2360,2396 'find-design-ag':1,47 'find-marketing-ag':162,2224,2359 'find-software-develop':233 'find-web-develop':194,2395 'fintech':934,1815 'fire':217,240,2419 'firm':69,280,338,385,530,536,547,701,705,722,738,757,787,925,1835,1838,1848,1859,2001,2134,2240,2272,2278,2310,2486,2514,2622,2624,2646 'first':649,1100,1680,2571 'fix':2603 'flag':1323,2295,2500,2651 'flavor':1595 'flow':331,609,628,1003,1248,1407,1447 'follow':1573 'format':1305 'fortun':1673,2161,2175,2193 'found':906,1106,2299,2645 'four':636,1499 'four-tier':635 'frame':271 'framer':371 'free':648,665,678,703,724,772,794,921,1580,2577,2582 'free-text':920,1579 'freelanc':387 'fss':1280,1357 'full':725,2284 'funnel':638 'futur':1422 'fuzzi':2238 'g':2158 'geographi':879 'get':519,525,531,537,546,548,560,645,661,674,695,716,804,1905,1918,1933,1955,2006,2033,2078,2142,2178,2213,2282,2710,2715,2732,2749,2754 'github':1454 'github-search-styl':1453 'goe':1161 'gotcha':2334 'graphic':21,83,113,832,890,1643,1695,1703,2125,2132,2151 'graphic-design':112,831,889,1642,1702,2150 'grep':1071,1076,1385 'guidelin':267,2244 'h':1182,1214,1286,1363,2196 'handl':426,1847 'happen':1986 'har':398,425,583,611 'hardwar':1636,1811,2024,2031,2044 'harness-specif':582 'hashlib':1857 'hashlib.sha256':1863 'header':1015,2664 'healthcar':935,1817,2707,2729,2746 'healthcare-tech':1816,2706 'heavili':2322 'hero':324,2458 'hex':1845,1883,2630 'hex-char':1844 'hexdigest':1853,1867 'high':1494,1658,1672,2190,2222,2727,2744 'hire':349 'hit':1677 'hobbi':296,2432 'holiday':302,2430 'honor':2660 'hospit':937,1820 'host':424 'hous':347 'http':130 'id':550,718,1836,1839,1849,1860,2279,2487,2561,2623,2625 'ideal':2700 'ident':27,91,1478,1487,1491,1496,1569,1733,1735,1939,1948,2052,2063,2115 'ideo.com':1872 'ignor':1351 'illustr':29,93,325,848,1779,1790 'imag':2459 'implicit':1401,1468 'import':1856 'in-hous':345 'includ':2540,2601,2712 'indirect':2047 'individu':309,386 'industri':71,88,100,820,869,1601,1611,1619,1628,1637,1647,1652,1663,1795,1812,1908,1921,1958,2009,2036,2045,2081,2145,2181,2216,2314,2337,2718,2735 'info':711,2557 'initi':612 'insid':1195,1547 'inspect':1064 'instead':2317 'intent':2048 'interior':1772,1777 'interior-design':1776 'intern':228 'invalid':2621 'investor':2140,2155 'ip':680 'ip-throttl':679 'jq':1232,1319 'jq-process':1231 'json':2587 'k':2507 'keep':962,1975 'keyword':919,944,1498,1566,1788,1810,1833,2345 'keyword-on':943,1787,1832 'kind':658,863 'knowledg':373 'land':1355 'larg':1969,1973 'later':1146 'launch':2005 'layout':1699 'lead':350 'leak':1202 'least':2170 'led':149,172,2366 'legal':655,731,930,1588,2547 'limit':1931,1971,2194,2659,2752 'line':1348,2069,2236 'linkedin':917 'list':517,822,1524,1550,1978,2098,2264 'liter':985,1168,1546 'll':865 'llm':448,968,1022,1267 'load':404,542,554,565,598 'local':2280 'logo':320,1697,1705,1711,2209,2434,2455 'logo-design':1710 'look':2476 'low':1492 'lowercas':2629 'make':321,1324,2405,2456,2526 'mani':2112 'map':498,1685 'market':148,164,188,2226,2258,2315,2320,2333,2353,2361,2365,2382 'marketing-ag':2381 'marketing-l':147,2364 'match':590,1533,2515 'matter':750 'may':2488 'mcp':389,402,417,457,462,494,510,540,552,563,574,595,618 'mcp.servicegraph.co':405 'mean':2308 'medium':1493 'mention':2232 'messag':2590 'meta':929,1587 'mid':1434 'mid-sess':1433 'mirror':1343 'missing/expired':2638 'mode':2676 'model':875,961 'month':702,723,761,792,2568,2669,2682,2765 'motion':30,94,270,846,1650,1780,1791 'motion-design':845 'multipl':1590 'must':2559,2626 'mvp':744 'n':1068,1871 'name':126,580,657,732,855,926,931,1373,1584,1589,1688,2548 'need':225,614,1320,2057 'negat':1539,1545 'never':970,988,1170 'new':1256,2068 'non':383,1089,1328 'non-us':382 'non-zero':1088,1327 'none':647,664,677 'not-found':2297 'notexpr':1464,1466,1470,1472 'number':1488,1497,1571 'numer':901 'ny':1531,1556,1563,1618,1951,1965 'oauth':420,465 'offer':334 'often':200,2307 'ok':1114 'onboard':330 'one':154,344,1450,1527,2102,2300,2377,2617 'op':881,897,908,1479,1482 'openssl':1880 'oper':659,1576 'option':899 'orexpr':1458,1459 'otp':545,557,568,627,1247,1391,1446,2642 'output':261 'overhaul':2200,2208 'overlap':777,782,2321 'packag':28,92,268,843,1625,1739,1744,1995,1999,2015,2054,2065,2076,2090,2110,2118 'packaging-design':842,1624,1743,2014,2089,2109 'page':767 'pagin':2580 'paid':160,741,2374 'param':1308 'paramet':1452 'paren':1521 'parent':1205 'pars':1513,2598 'part':2120,2246 'partner':201 'past':2268 'path':482,516 'pattern':489,589 'pattern-match':588 'payload':2600 'penpot':368 'per':755,759,763,1028,2565,2567 'per-user-per-month':2564 'persist':1418 'person':304,1992,2426,2435 'phase':2402 'phone':728,911,2543 'physic':1797 'pin':99,2336 'pkce':422 'plain':473,1313 'plus':1809 'pollut':1338 'pool':690 'portfolio':305,2436 'posit':2602 'post':739,1282,1359 'pr':158 'predic':1476,1477,1528 'prefer':391,406,460,599 'prefix':585 'presenc':909 'present':621,2294 'price':874 'primari':180,2391,2544,2546 'print':252,272,1698,1746,1752,1885 'print-design':1751 'pro':2478 'proceed':1409 'process':1233 'procur':278,314,2462,2475 'produc':282 'product':24,46,86,120,359,839,1634,1716,1723,1730,1798,1807,1896,1904,2021,2027,2042,2699 'product-design':119,838,1633,1729,1806,2041 'project':297,300 'prompt':1274,1299 'prototyp':265 'provid':110,853,887,1605,1615,1623,1632,1641,1656,1667,1701,1709,1718,1728,1737,1742,1750,1758,1765,1775,1805,1912,1925,1962,2013,2040,2085,2088,2149,2185,2220,2722,2739 'public':501 'pull':790 'pure':246 'python':1855 'q':1386 'qs':1072,1077 'qualiti':2159 'queri':770,1307,1451 'question':374 'quota':507,693,747,2562,2670,2763 'quota-spend':692 'rank':714 'rate':902,915,1659,2173,2191,2658,2704,2730,2747 're':766,784,1144,1443,2574,2579,2607,2633,2640 're-ask':1143 're-der':2632 're-fetch':783 're-pag':765 're-pagin':2578 're-run':1442,2639 're-valid':2606 're-view':2573 'read':971,1055 'rebrand':1954,1984 'recip':1890 'recogn':1830 'recommend':515 'redesign':326 'refus':332,2423 'reject':1558 'relat':2344 'relev':826 'remain':2764 'report':1646,2138,2760 'request':135,999,1121,1240 'requir':464,956,2613,2619 'research':353,1726 'resolut':1045 'respons':810,1224,2517 'rest':477,488,502,512,626,2679 'result':1977,2097 'retri':2662,2665 'retry-aft':2661 'return':1309,1430,1862,2586 'reveal':1382 'review':903 'revok':1441 'right':239 'ritual':798 'round':1018 'round-trip':1017 'row':2355 'rstrip':1852,1865 'rule':748,1046,1500 'run':1058,1444,2641 'saa':45,226,933,1610,1814,1895,1903,1917,1930,2698,2728,2745 'safe':1349 'sandbox':432 'say':1127 'scope':144,682 'search':535,1455,1567 'secur':960 'see':572 'seem':2228 'self':2330 'self-classifi':2329 'serv':880 'server':390,403,418,467,596 'servic':78,109,157,852,886,1604,1614,1622,1631,1640,1655,1666,1700,1708,1717,1727,1736,1741,1749,1757,1764,1774,1804,1911,1924,1961,2012,2039,2084,2087,2148,2184,2219,2479,2721,2738 'servicegraph':53,401,577,594,617,1069,1073,1078,1108,1119,1185,1217,1310,1387 'session':653,796,1029,1104,1123,1423,1435,2759 'session-start':795 'set':883,1208,1211 'sever':156 'sha256':1850,1882 'shell':439,994,1042,1060,1157,1164,1179,1206 'ship':213,2410 'shop':1983,2328 'shortlist':12,58,715,737 'sibl':140 'side':299 'signal':878,1968 'simpler':481 'site':189,306,2437 'size':687,877,1967,1982 'sketch':363,2469 'skill':141,167,285,292,2386 'skill-find-design-agency' 'skip':746,1138,2501,2654 'smaller':2529 'social':730,2375 'softwar':222,235,245,358,2465 'someon':211,2058 'sometim':856 'somewher':1087 'sourc':1193 'source-nostrband' 'span':82 'specif':584,1707 'spend':670,694 'stabl':1842 'star':2172,2703 'start':797,2107 'stat':559 'state':873,1529,1554,1560,1562,1617,1943,1964 'status':2591 'stay':254,1129,2250 'step':1412 'store':191 'strategi':2259 'structur':108,1785,1800,2105 'studio':1940,1949,1981,1989,2116 'studio-s':1980 'style':1456 'sub':80,104,828,1682 'sub-disciplin':103,827,1681 'sub-taxonomi':79 'subshel':1197 'substr':592,923,1582,1886 'success':1396 'suppress':2509,2521 'surfac':1262 'switch':2672 'system':251,263,1825,2123,2199,2207,2249 'tag':68,77,111,518,830,854,882,1684,1786,1801,2106,2312 'tagatevid':1489,1490 'taxonomi':81 'tech':1818,2708 'tell':2441,2683 'territori':2384 'text':922,1314,1581 'thin':2100 'three':1537,1945,2165,2692 'threshold':2160 'throttl':681 'tier':412,453,471,605,633,637,639,1133 'tighter':1506 'titl':928,1586 'tmp':1228 'token':443,959,964,983,1002,1034,1051,1070,1074,1079,1084,1092,1109,1169,1186,1218,1244,1251,1257,1311,1388,1392,1415,1437,2637 'tool':229,408,463,495,511,575,601,619 'topic-agent-skills' 'topic-ai-agents' 'topic-b2b-data' 'topic-claude-code-marketplace' 'topic-claude-code-plugins' 'topic-claude-code-skills' 'topic-claude-plugins' 'topic-claude-skills' 'topic-mcp-server' 'topic-openapi' 'topic-professional-services' 'topic-vendor-discovery' 'total':905 'tr':1873 'trigger':35,1270 'trip':1019 'true':2522 'two':773 'tx':1532 'type':1289,1366 'typic':107,1985 'typographi':2210 'ui':116,381,835,893,1607,1669,1720,1914,1927,2187,2348,2724,2741 'ui-ux-design':115,834,892,1606,1668,1719,1913,1926,2186,2347,2723,2740 'unauthor':1432,2636 'uniqu':700,721,756 'unless':1147,2252 'url':478,708,727,2542 'us':16,61,384 'use':5,138,290,419,486,642,685,712,866,993,1031,1116,1520,1559,1694,2129 'user':8,209,276,1007,1026,1097,1126,1149,1276,1301,1399,1691,1897,1944,1998,2026,2055,2131,2164,2201,2231,2254,2267,2303,2370,2414,2443,2553,2566,2685,2691 'usual':2241 'ux':117,231,264,352,379,836,894,1608,1670,1721,1915,1928,2188,2349,2725,2742 'ux/ui':23,40,85,1713,1892,1898,2166,2693 'valid':666,1597,2608 'valu':444,660,821,986,1057,1264,1384,1484,1485,1486,2713 'valueorlist':1480,1483 'vari':586 'verifi':858,1686 'vertic':932,1813 'vet':13 'via':127,1156,1689 'view':758,2572,2575 'visual':262,1734,1756,2051,2062 'voic':2212,2233,2243 'vs':362,364,367,370,2468,2471 'want':9,210,341,2371,2415 'web':196,203,219,1754,1760,1767,2397,2408,2421 'web-design':1759 'web-develop':218,1766,2420 'webflow':369 'websit':185 'wed':295,2428 'whenev':6 'whether':1049 'whitespac':1467 'within':1526 'without':1016,1054,1261,1381,2340 'work':132,177,186,232,1153 'wrapper':1165 'wrong':1334 'x':1281,1358,1541,1544,2762 'x-quota-remaining-month':2761 'xd':366 'year':907 'yes':521,527,533 'z':1876,1879 'zero':1090,1329","prices":[{"id":"442e6791-86b1-4fc5-9dfc-0ac554b67569","listingId":"5f2c09eb-b6e5-4812-b79d-60eb19af3430","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"nostrband","category":"ServiceGraph","install_from":"skills.sh"},"createdAt":"2026-05-06T18:58:47.855Z"}],"sources":[{"listingId":"5f2c09eb-b6e5-4812-b79d-60eb19af3430","source":"github","sourceId":"nostrband/ServiceGraph/find-design-agency","sourceUrl":"https://github.com/nostrband/ServiceGraph/tree/main/skills/find-design-agency","isPrimary":false,"firstSeenAt":"2026-05-06T18:58:47.855Z","lastSeenAt":"2026-05-18T18:56:02.925Z"}],"details":{"listingId":"5f2c09eb-b6e5-4812-b79d-60eb19af3430","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"nostrband","slug":"find-design-agency","github":{"repo":"nostrband/ServiceGraph","stars":160,"topics":["agent-skills","ai-agents","b2b-data","claude-code-marketplace","claude-code-plugins","claude-code-skills","claude-plugins","claude-skills","mcp-server","openapi","professional-services","vendor-discovery"],"license":"mit","html_url":"https://github.com/nostrband/ServiceGraph","pushed_at":"2026-05-07T12:11:52Z","description":"AI Agent skills for a structured catalog of 100k+ US professional-services firms","skill_md_sha":"52320870dca88783775f439ce209ea5f4a2335bf","skill_md_path":"skills/find-design-agency/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/nostrband/ServiceGraph/tree/main/skills/find-design-agency"},"layout":"multi","source":"github","category":"ServiceGraph","frontmatter":{"name":"find-design-agency","license":"MIT","description":"Use whenever the user wants to find, shortlist, vet, or enrich US design and creative agencies — graphic design, UX/UI, product design, brand identity, packaging, illustration, motion design, and creative direction. Triggers on \"find me a UX/UI design agency for our SaaS product\", \"shortlist three brand-identity studios in NY\", \"packaging design firm for a CPG launch\", or \"pull contact info for these 10 design studio domains\", even when described indirectly (brand refresh, design our app, build our visual system). Drives the ServiceGraph API (api.servicegraph.co) — a 100k+ US firm catalog filterable by industry, services, location, size, ratings. Defer to find-marketing-agency for marketing-led engagements where design is one of several services. Defer to find-web-developer when the deliverable is a built website. Skip in-house designer hires, \"design me a logo\" DIY asks, design-software comparisons, consumer/personal-design (weddings, hobby projects), non-US firms, individual freelancers."},"skills_sh_url":"https://skills.sh/nostrband/ServiceGraph/find-design-agency"},"updatedAt":"2026-05-18T18:56:02.925Z"}}