{"id":"a1e7805d-286b-401a-8612-0a3ccd660137","shortId":"TGqqDf","kind":"skill","title":"Sponsor Finder","tagline":"Awesome Copilot skill by Github","description":"# Sponsor Finder\n\nDiscover opportunities to support the open source maintainers behind your project's dependencies. Accepts a GitHub `owner/repo` (e.g. `/sponsor expressjs/express`), uses the deps.dev API for dependency resolution and project health data, and produces a friendly sponsorship report covering both direct and transitive dependencies.\n\n## Your Workflow\n\nWhen the user types `/sponsor {owner/repo}` or provides a repository in `owner/repo` format:\n\n1. **Parse the input** — Extract `owner` and `repo`.\n2. **Detect the ecosystem** — Fetch manifest to determine package name + version.\n3. **Get full dependency tree** — deps.dev `GetDependencies` (one call).\n4. **Resolve repos** — deps.dev `GetVersion` for each dep → `relatedProjects` gives GitHub repo.\n5. **Get project health** — deps.dev `GetProject` for unique repos → OSSF Scorecard.\n6. **Find funding links** — npm `funding` field, FUNDING.yml, web search fallback.\n7. **Verify every link** — fetch each URL to confirm it's live.\n8. **Group and report** — by funding destination, sorted by impact.\n\n---\n\n## Step 1: Detect Ecosystem and Package\n\nUse `get_file_contents` to fetch the manifest from the target repo. Determine the ecosystem and extract the package name + latest version:\n\n| File | Ecosystem | Package name from | Version from |\n|------|-----------|-------------------|--------------|\n| `package.json` | NPM | `name` field | `version` field |\n| `requirements.txt` | PYPI | list of package names | use latest (omit version in deps.dev call) |\n| `pyproject.toml` | PYPI | `[project.dependencies]` | use latest |\n| `Cargo.toml` | CARGO | `[package] name` | `[package] version` |\n| `go.mod` | GO | `module` path | extract from go.mod |\n| `Gemfile` | RUBYGEMS | gem names | use latest |\n| `pom.xml` | MAVEN | `groupId:artifactId` | `version` |\n\n---\n\n## Step 2: Get Full Dependency Tree (deps.dev)\n\n**This is the key step.** Use `web_fetch` to call the deps.dev API:\n\n```\nhttps://api.deps.dev/v3/systems/{ECOSYSTEM}/packages/{PACKAGE}/versions/{VERSION}:dependencies\n```\n\nFor example:\n```\nhttps://api.deps.dev/v3/systems/npm/packages/express/versions/5.2.1:dependencies\n```\n\nThis returns a `nodes` array where each node has:\n- `versionKey.name` — package name\n- `versionKey.version` — resolved version\n- `relation` — `\"SELF\"`, `\"DIRECT\"`, or `\"INDIRECT\"`\n\n**This single call gives you the entire dependency tree** — both direct and transitive — with exact resolved versions. No need to parse lockfiles.\n\n### URL encoding\nPackage names containing special characters must be percent-encoded:\n- `@colors/colors` → `%40colors%2Fcolors`\n- Encode `@` as `%40`, `/` as `%2F`\n\n### For repos without a single root package\nIf the repo doesn't publish a package (e.g., it's an app not a library), fall back to reading `package.json` dependencies directly and calling deps.dev `GetVersion` for each.\n\n---\n\n## Step 3: Resolve Each Dependency to a GitHub Repo (deps.dev)\n\nFor each dependency from the tree, call deps.dev `GetVersion`:\n\n```\nhttps://api.deps.dev/v3/systems/{ECOSYSTEM}/packages/{NAME}/versions/{VERSION}\n```\n\nFrom the response, extract:\n- **`relatedProjects`** → look for `relationType: \"SOURCE_REPO\"` → `projectKey.id` gives `github.com/{owner}/{repo}`\n- **`links`** → look for `label: \"SOURCE_REPO\"` → `url` field\n\nThis works across **all ecosystems** — npm, PyPI, Cargo, Go, RubyGems, Maven, NuGet — with the same field structure.\n\n### Efficiency rules\n- Process in batches of **10 at a time**.\n- Deduplicate — multiple packages may map to the same repo.\n- Skip deps where no GitHub project is found (count as \"unresolvable\").\n\n---\n\n## Step 4: Get Project Health Data (deps.dev)\n\nFor each unique GitHub repo, call deps.dev `GetProject`:\n\n```\nhttps://api.deps.dev/v3/projects/github.com%2F{owner}%2F{repo}\n```\n\nFrom the response, extract:\n- **`scorecard.checks`** → find the `\"Maintained\"` check → `score` (0–10)\n- **`starsCount`** — popularity indicator\n- **`license`** — project license\n- **`openIssuesCount`** — activity indicator\n\nUse the Maintained score to label project health:\n- Score 7–10 → ⭐ Actively maintained\n- Score 4–6 → ⚠️ Partially maintained\n- Score 0–3 → 💤 Possibly unmaintained\n\n### Efficiency rules\n- Only fetch for **unique repos** (not per-package).\n- Process in batches of **10 at a time**.\n- This step is optional — skip if rate-limited and note in output.\n\n---\n\n## Step 5: Find Funding Links\n\nFor each unique GitHub repo, check for funding information using three sources in order:\n\n### 5a: npm `funding` field (npm ecosystem only)\nUse `web_fetch` on `https://registry.npmjs.org/{package-name}/latest` and check for a `funding` field:\n- **String:** `\"https://github.com/sponsors/sindresorhus\"` → use as URL\n- **Object:** `{\"type\": \"opencollective\", \"url\": \"https://opencollective.com/express\"}` → use `url`\n- **Array:** collect all URLs\n\n### 5b: `.github/FUNDING.yml` (repo-level, then org-level fallback)\n\n**Step 5b-i — Per-repo check:**\nUse `get_file_contents` to fetch `{owner}/{repo}` path `.github/FUNDING.yml`.\n\n**Step 5b-ii — Org/user-level fallback:**\nIf 5b-i returned 404 (no FUNDING.yml in the repo itself), check the owner's default community health repo:\nUse `get_file_contents` to fetch `{owner}/.github` path `FUNDING.yml`.\n\nGitHub supports a [default community health files](https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file) convention: a `.github` repository at the user/org level provides defaults for all repos that lack their own. For example, `isaacs/.github/FUNDING.yml` applies to all `isaacs/*` repos.\n\nOnly look up each unique `{owner}/.github` repo **once** — reuse the result for all repos under that owner. Process in batches of **10 owners at a time**.\n\nParse the YAML (same for both 5b-i and 5b-ii):\n- `github: [username]` → `https://github.com/sponsors/{username}`\n- `open_collective: slug` → `https://opencollective.com/{slug}`\n- `ko_fi: username` → `https://ko-fi.com/{username}`\n- `patreon: username` → `https://patreon.com/{username}`\n- `tidelift: platform/package` → `https://tidelift.com/subscription/pkg/{platform-package}`\n- `custom: [urls]` → use as-is\n\n### 5c: Web search fallback\nFor the **top 10 unfunded dependencies** (by number of transitive dependents), use `web_search`:\n```\n\"{package name}\" github sponsors OR open collective OR funding\n```\nSkip packages known to be corporate-maintained (React/Meta, TypeScript/Microsoft, @types/DefinitelyTyped).\n\n### Efficiency rules\n- **Check 5a and 5b for all deps.** Only use 5c for top unfunded ones.\n- Skip npm registry calls for non-npm ecosystems.\n- Deduplicate repos — check each repo only once.\n- **One `{owner}/.github` check per unique owner** — reuse the result for all their repos.\n- Process org-level lookups in batches of **10 owners at a time**.\n\n---\n\n## Step 6: Verify Every Link (CRITICAL)\n\n**Before including ANY funding link, verify it exists.**\n\nUse `web_fetch` on each funding URL:\n- **Valid page** → ✅ Include\n- **404 / \"not found\" / \"not enrolled\"** → ❌ Exclude\n- **Redirect to valid page** → ✅ Include final URL\n\nVerify in batches of **5 at a time**. Never present unverified links.\n\n---\n\n## Step 7: Output the Report\n\n### Output discipline\n\n**Minimize intermediate output during data gathering.** Do NOT announce each batch (\"Batch 3 of 7…\", \"Now checking funding…\"). Instead:\n- Show **one brief status line** when starting each major phase (e.g., \"Resolving 67 dependencies…\", \"Checking funding links…\")\n- **Collect ALL data before producing the report.** Never drip-feed partial tables.\n- Output the final report as a **single cohesive block** at the end.\n\n### Report template\n\n```\n## 💜 Sponsor Finder Report\n\n**Repository:** {owner}/{repo} · {ecosystem} · {package}@{version}\n**Scanned:** {date} · {total} deps ({direct} direct + {transitive} transitive)\n\n---\n\n### 🎯 Ways to Give Back\n\nSponsoring just {N} people/orgs supports {sponsorable} of your {total} dependencies — a great way to invest in the open source your project depends on.\n\n1. **💜 @{user}** — {N} direct + {M} transitive deps · ⭐ Maintained\n   {dep1}, {dep2}, {dep3}, ...\n   https://github.com/sponsors/{user}\n\n2. **🟠 Open Collective: {name}** — {N} direct + {M} transitive deps · ⭐ Maintained\n   {dep1}, {dep2}, {dep3}, ...\n   https://opencollective.com/{name}\n\n3. **💜 @{user2}** — {N} direct dep · 💤 Low activity\n   {dep1}\n   https://github.com/sponsors/{user2}\n\n---\n\n### 📊 Coverage\n\n- **{sponsorable}/{total}** dependencies have funding options ({percentage}%)\n- **{destinations}** unique funding destinations\n- **{unfunded_direct}** direct deps don't have funding set up yet ({top_names}, ...)\n- All links verified ✅\n```\n\n### Report format rules\n\n- **Lead with \"🎯 Ways to Give Back\"** — this is the primary output. Numbered list, sorted by total deps covered (descending).\n- **Bare URLs on their own line** — not wrapped in markdown link syntax. This ensures they're clickable in any terminal emulator.\n- **Inline dep names** — list the covered dependency names in a comma-separated line under each sponsor, so the user sees exactly what they're funding.\n- **Health indicator inline** — show ⭐/⚠️/💤 next to each destination, not in a separate table column.\n- **One \"📊 Coverage\" section** — compact stats. No separate \"Verified Funding Links\" table, no \"No Funding Found\" table.\n- **Unfunded deps as a brief note** — just the count + top names. Frame as \"don't have funding set up yet\" rather than highlighting a gap. Never shame projects for not having funding — many maintainers prefer other forms of contribution.\n- 💜 GitHub Sponsors, 🟠 Open Collective, ☕ Ko-fi, 🔗 Other\n- Prioritize GitHub Sponsors links when multiple funding sources exist for the same maintainer.\n\n---\n\n## Error Handling\n\n- If deps.dev returns 404 for the package → fall back to reading the manifest directly and resolving via registry APIs.\n- If deps.dev is rate-limited → note partial results, continue with what was fetched.\n- If `get_file_contents` returns 404 for the repo → inform user repo may not exist or is private.\n- If link verification fails → exclude the link silently.\n- Always produce a report even if partial — never fail silently.\n\n---\n\n## Critical Rules\n\n1. **NEVER present unverified links.** Fetch every URL before showing it. 5 verified links > 20 guessed links.\n2. **NEVER guess from training knowledge.** Always check — funding pages change over time.\n3. **Always be encouraging, never shaming.** Frame results positively — celebrate what IS funded, and treat unfunded deps as an opportunity, not a failing. Not every project needs or wants financial sponsorship.\n4. **Lead with action.** The \"🎯 Ways to Give Back\" section is the primary output — bare clickable URLs, grouped by destination.\n5. **Use deps.dev as primary resolver.** Fall back to registry APIs only if deps.dev is unavailable.\n6. **Always use GitHub MCP tools** (`get_file_contents`), `web_fetch`, and `web_search` — never clone or shell out.\n7. **Be efficient.** Batch API calls, deduplicate repos, check each owner's `.github` repo only once.\n8. **Focus on GitHub Sponsors.** Most actionable platform — show others but prioritize GitHub.\n9. **Deduplicate by maintainer.** Group to show real impact of sponsoring one person.\n10. **Show the actionable minimum.** Tell users the fewest sponsorships to support the most deps.\n11. **Minimize intermediate output.** Don't announce each batch. Collect all data, then output one cohesive report.","tags":["sponsor","finder","awesome","copilot","github"],"capabilities":["skill","source-github","category-awesome-copilot"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/sponsor-finder","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under github/awesome-copilot","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:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T09:40:13.713Z","embedding":null,"createdAt":"2026-04-18T20:26:06.593Z","updatedAt":"2026-04-22T09:40:13.713Z","lastSeenAt":"2026-04-22T09:40:13.713Z","tsv":"'/.github':683,727,867 '/en/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file)':695 '/express':615 '/latest':595 '/packages':259,390 '/sponsor':28,59 '/sponsors/':765,1068,1095 '/sponsors/sindresorhus':605 '/subscription/pkg/':785 '/v3/projects/github.com%2f':481 '/v3/systems/':257,388 '/v3/systems/npm/packages/express/versions/5.2.1:dependencies':268 '/versions':261,392 '0':495,525 '1':68,153,1055,1357 '10':440,496,516,544,743,802,887,1515 '11':1530 '2':76,236,1070,1374 '20':1371 '2f':330,483 '2fcolors':325 '3':87,368,526,960,1085,1387 '4':96,465,520,1418 '40':328 '404':661,916,1289,1324 '40colors':324 '5':108,562,933,1368,1438 '5a':580,836 '5b':622,634,652,658,755,759,838 '5b-i':633,657,754 '5b-ii':651,758 '5c':795,844 '6':119,521,893,1454 '67':979 '7':130,515,942,962,1473 '8':142,1489 '9':1502 'accept':23 'across':419 'action':1421,1495,1518 'activ':504,517,1091 'alway':1345,1380,1388,1455 'announc':956,1536 'api':33,254,1304,1448,1477 'api.deps.dev':256,267,387,480 'api.deps.dev/v3/projects/github.com%2f':479 'api.deps.dev/v3/systems/':255,386 'api.deps.dev/v3/systems/npm/packages/express/versions/5.2.1:dependencies':266 'app':350 'appli':716 'array':273,618 'artifactid':233 'as-i':792 'awesom':3 'back':355,1031,1133,1294,1426,1445 'bare':1147,1432 'batch':438,542,741,885,931,958,959,1476,1538 'behind':18 'block':1005 'brief':969,1228 'call':95,205,251,291,362,383,476,852,1478 'cargo':212,424 'cargo.toml':211 'category-awesome-copilot' 'celebr':1396 'chang':1384 'charact':317 'check':493,571,597,639,668,835,860,868,964,981,1381,1481 'clickabl':1163,1433 'clone':1469 'cohes':1004,1545 'collect':619,768,819,984,1072,1266,1539 'colors/colors':323 'column':1207 'comma':1179 'comma-separ':1178 'communiti':673,690 'compact':1211 'confirm':138 'contain':315 'content':161,643,679,1322,1462 'continu':1314 'contribut':1262 'convent':696 'copilot':4 'corpor':828 'corporate-maintain':827 'count':461,1232 'cover':47,1145,1173 'coverag':1097,1209 'critic':897,1355 'custom':789 'data':40,469,952,986,1541 'date':1021 'dedupl':444,858,1479,1503 'default':672,689,705 'dep':103,454,841,1023,1061,1078,1089,1112,1144,1169,1225,1403,1529 'dep1':1063,1080,1092 'dep2':1064,1081 'dep3':1065,1082 'depend':22,35,52,90,239,263,296,359,371,379,804,809,980,1041,1053,1100,1174 'deps.dev':32,92,99,112,204,241,253,363,376,384,470,477,1287,1306,1440,1451 'descend':1146 'destin':148,1105,1108,1201,1437 'detect':77,154 'determin':83,170 'direct':49,286,299,360,1024,1025,1058,1075,1088,1110,1111,1299 'disciplin':947 'discov':10 'docs.github.com':694 'docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file)':693 'doesn':341 'drip':993 'drip-fe':992 'e.g':27,346,977 'ecosystem':79,155,172,181,258,389,421,585,857,1017 'effici':434,529,833,1475 'emul':1167 'encod':312,322,326 'encourag':1390 'end':1008 'enrol':920 'ensur':1160 'entir':295 'error':1284 'even':1349 'everi':132,895,1363,1411 'exact':303,1189 'exampl':265,714 'exclud':921,1341 'exist':905,1279,1333 'expressjs/express':29 'extract':72,174,221,397,488 'fail':1340,1353,1409 'fall':354,1293,1444 'fallback':129,631,655,798 'feed':994 'fetch':80,134,163,249,532,589,645,681,908,1318,1362,1464 'fewest':1523 'fi':773,1269 'field':125,190,192,416,432,583,601 'file':160,180,642,678,692,1321,1461 'final':927,999 'financi':1416 'find':120,490,563 'finder':2,9,1012 'focus':1490 'form':1260 'format':67,1126 'found':460,918,1222 'frame':1235,1393 'friend':44 'full':89,238 'fund':121,124,147,564,573,582,600,821,901,911,965,982,1102,1107,1116,1193,1216,1221,1240,1255,1277,1382,1399 'funding.yml':126,663,685 'gap':1248 'gather':953 'gem':226 'gemfil':224 'get':88,109,159,237,466,641,677,1320,1460 'getdepend':93 'getproject':113,478 'getvers':100,364,385 'github':7,25,106,374,457,474,569,686,698,761,815,1263,1272,1457,1485,1492,1501 'github.com':406,604,764,1067,1094 'github.com/sponsors/':763,1066,1093 'github.com/sponsors/sindresorhus':603 'github/funding.yml':623,649 'give':105,292,405,1030,1132,1425 'go':218,425 'go.mod':217,223 'great':1043 'group':143,1435,1506 'groupid':232 'guess':1372,1376 'handl':1285 'health':39,111,468,513,674,691,1194 'highlight':1246 'ii':653,760 'impact':151,1510 'includ':899,915,926 'indic':499,505,1195 'indirect':288 'inform':574,1328 'inlin':1168,1196 'input':71 'instead':966 'intermedi':949,1532 'invest':1046 'isaac':719 'isaacs/.github/funding.yml':715 'key':245 'knowledg':1379 'known':824 'ko':772,1268 'ko-fi':1267 'ko-fi.com':775 'label':412,511 'lack':710 'latest':178,200,210,229 'lead':1128,1419 'level':626,630,703,882 'librari':353 'licens':500,502 'limit':556,1310 'line':971,1152,1181 'link':122,133,409,565,896,902,940,983,1123,1157,1217,1274,1338,1343,1361,1370,1373 'list':195,1140,1171 'live':141 'lockfil':310 'look':399,410,722 'lookup':883 'low':1090 'm':1059,1076 'maintain':17,492,508,518,523,829,1062,1079,1257,1283,1505 'major':975 'mani':1256 'manifest':81,165,1298 'map':448 'markdown':1156 'maven':231,427 'may':447,1331 'mcp':1458 'minim':948,1531 'minimum':1519 'modul':219 'multipl':445,1276 'must':318 'n':1034,1057,1074,1087 'name':85,177,183,189,198,214,227,280,314,391,594,814,1073,1084,1121,1170,1175,1234 'need':307,1413 'never':937,991,1249,1352,1358,1375,1391,1468 'next':1198 'node':272,276 'non':855 'non-npm':854 'note':558,1229,1311 'npm':123,188,422,581,584,850,856 'nuget':428 'number':806,1139 'object':609 'omit':201 'one':94,848,865,968,1208,1513,1544 'open':15,767,818,1049,1071,1265 'opencollect':611 'opencollective.com':614,770,1083 'opencollective.com/express':613 'openissuescount':503 'opportun':11,1406 'option':551,1103 'order':579 'org':629,881 'org-level':628,880 'org/user-level':654 'ossf':117 'other':1498 'output':560,943,946,950,997,1138,1431,1533,1543 'owner':73,407,482,646,670,682,726,738,744,866,871,888,1015,1483 'owner/repo':26,60,66 'packag':84,157,176,182,197,213,215,260,279,313,337,345,446,539,593,788,813,823,1018,1292 'package-nam':592 'package.json':187,358 'page':914,925,1383 'pars':69,309,748 'partial':522,995,1312,1351 'path':220,648,684 'patreon':777 'patreon.com':779 'people/orgs':1035 'per':538,637,869 'per-packag':537 'per-repo':636 'percent':321 'percent-encod':320 'percentag':1104 'person':1514 'phase':976 'platform':787,1496 'platform-packag':786 'platform/package':782 'pom.xml':230 'popular':498 'posit':1395 'possibl':527 'prefer':1258 'present':938,1359 'primari':1137,1430,1442 'priorit':1271,1500 'privat':1336 'process':436,540,739,879 'produc':42,988,1346 'project':20,38,110,458,467,501,512,1052,1251,1412 'project.dependencies':208 'projectkey.id':404 'provid':62,704 'publish':343 'pypi':194,207,423 'pyproject.toml':206 'rate':555,1309 'rate-limit':554,1308 'rather':1244 're':1162,1192 'react/meta':830 'read':357,1296 'real':1509 'redirect':922 'registri':851,1303,1447 'registry.npmjs.org':591 'relat':284 'relatedproject':104,398 'relationtyp':401 'repo':75,98,107,116,169,332,340,375,403,408,414,452,475,484,535,570,625,638,647,666,675,708,720,728,735,859,862,878,1016,1327,1330,1480,1486 'repo-level':624 'report':46,145,945,990,1000,1009,1013,1125,1348,1546 'repositori':64,699,1014 'requirements.txt':193 'resolut':36 'resolv':97,282,304,369,978,1301,1443 'respons':396,487 'result':732,874,1313,1394 'return':270,660,1288,1323 'reus':730,872 'root':336 'rubygem':225,426 'rule':435,530,834,1127,1356 'scan':1020 'score':494,509,514,519,524 'scorecard':118 'scorecard.checks':489 'search':128,797,812,1467 'section':1210,1427 'see':1188 'self':285 'separ':1180,1205,1214 'set':1117,1241 'shame':1250,1392 'shell':1471 'show':967,1197,1366,1497,1508,1516 'silent':1344,1354 'singl':290,335,1003 'skill':5 'skip':453,552,822,849 'slug':769,771 'sort':149,1141 'sourc':16,402,413,577,1050,1278 'source-github' 'special':316 'sponsor':1,8,816,1011,1032,1037,1098,1184,1264,1273,1493,1512 'sponsorship':45,1417,1524 'starscount':497 'start':973 'stat':1212 'status':970 'step':152,235,246,367,464,549,561,632,650,892,941 'string':602 'structur':433 'support':13,687,1036,1526 'syntax':1158 'tabl':996,1206,1218,1223 'target':168 'tell':1520 'templat':1010 'termin':1166 'three':576 'tidelift':781 'tidelift.com':784 'tidelift.com/subscription/pkg/':783 'time':443,547,747,891,936,1386 'tool':1459 'top':801,846,1120,1233 'total':1022,1040,1099,1143 'train':1378 'transit':51,301,808,1026,1027,1060,1077 'treat':1401 'tree':91,240,297,382 'type':58,610 'types/definitelytyped':832 'typescript/microsoft':831 'unavail':1453 'unfund':803,847,1109,1224,1402 'uniqu':115,473,534,568,725,870,1106 'unmaintain':528 'unresolv':463 'unverifi':939,1360 'url':136,311,415,608,612,617,621,790,912,928,1148,1364,1434 'use':30,158,199,209,228,247,506,575,587,606,616,640,676,791,810,843,906,1439,1456 'user':57,1056,1069,1187,1329,1521 'user/org':702 'user2':1086,1096 'usernam':762,766,774,776,778,780 'valid':913,924 'verif':1339 'verifi':131,894,903,929,1124,1215,1369 'version':86,179,185,191,202,216,234,262,283,305,393,1019 'versionkey.name':278 'versionkey.version':281 'via':1302 'want':1415 'way':1028,1044,1130,1423 'web':127,248,588,796,811,907,1463,1466 'without':333 'work':418 'workflow':54 'wrap':1154 'yaml':750 'yet':1119,1243","prices":[{"id":"8e4bddca-be93-440c-8428-9a70d91c2550","listingId":"a1e7805d-286b-401a-8612-0a3ccd660137","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:26:06.593Z"}],"sources":[{"listingId":"a1e7805d-286b-401a-8612-0a3ccd660137","source":"github","sourceId":"github/awesome-copilot/sponsor-finder","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/sponsor-finder","isPrimary":false,"firstSeenAt":"2026-04-18T21:51:17.651Z","lastSeenAt":"2026-04-22T06:52:31.958Z"},{"listingId":"a1e7805d-286b-401a-8612-0a3ccd660137","source":"skills_sh","sourceId":"github/awesome-copilot/sponsor-finder","sourceUrl":"https://skills.sh/github/awesome-copilot/sponsor-finder","isPrimary":true,"firstSeenAt":"2026-04-18T20:26:06.593Z","lastSeenAt":"2026-04-22T09:40:13.713Z"}],"details":{"listingId":"a1e7805d-286b-401a-8612-0a3ccd660137","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"sponsor-finder","source":"skills_sh","category":"awesome-copilot","skills_sh_url":"https://skills.sh/github/awesome-copilot/sponsor-finder"},"updatedAt":"2026-04-22T09:40:13.713Z"}}