diff --git a/.all-contributorsrc b/.all-contributorsrc index 8372d6ac..8cd9655f 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -9,6 +9,39 @@ "imageSize": 100, "commit": false, "commitConvention": "none", + "contributorsPerLine": 7, + "linkToUsage": true, + "commitType": "docs", + "types": { + "instructions": { + "symbol": "🧭", + "description": "Custom instructions for GitHub Copilot" + }, + "prompts": { + "symbol": "⌨️", + "description": "Reusable prompts for GitHub Copilot" + }, + "agents": { + "symbol": "🎭", + "description": "Specialized agents for GitHub Copilot" + }, + "skills": { + "symbol": "🧰", + "description": "Specialized skills for GitHub Copilot" + }, + "collections": { + "symbol": "🎁", + "description": "Curated collections of related content" + } + }, + "ignoreList": [ + "dependabot[bot]", + "github-actions[bot]", + "allcontributors[bot]", + "Copilot", + "Claude" + ], + "contributorsSortAlphabetically": false, "contributors": [ { "login": "aaronpowell", @@ -16,17 +49,86 @@ "avatar_url": "https://avatars.githubusercontent.com/u/434140?v=4", "profile": "https://www.aaron-powell.com/", "contributions": [ + "agents", "code", + "collections", + "doc", + "infra", + "instructions", "maintenance", - "projectManagement", - "promotion" + "prompts" ] }, { - "login": "mubaidr", - "name": "Muhammad Ubaid Raza", - "avatar_url": "https://avatars.githubusercontent.com/u/2222702?v=4", - "profile": "https://mubaidr.js.org/", + "login": "codemillmatt", + "name": "Matt Soucoup", + "avatar_url": "https://avatars.githubusercontent.com/u/2053639?v=4", + "profile": "https://codemilltech.com/", + "contributions": [ + "infra" + ] + }, + { + "login": "troystaylor", + "name": "Troy Simeon Taylor", + "avatar_url": "https://avatars.githubusercontent.com/u/44444967?v=4", + "profile": "https://www.buymeacoffee.com/troystaylor", + "contributions": [ + "agents", + "collections", + "instructions", + "prompts" + ] + }, + { + "login": "abbas133", + "name": "Abbas", + "avatar_url": "https://avatars.githubusercontent.com/u/7757139?v=4", + "profile": "https://github.com/abbas133", + "contributions": [ + "agents", + "instructions" + ] + }, + { + "login": "PEZ", + "name": "Peter Strömberg", + "avatar_url": "https://avatars.githubusercontent.com/u/30010?v=4", + "profile": "https://calva.io/", + "contributions": [ + "agents", + "collections", + "instructions", + "prompts" + ] + }, + { + "login": "PlagueHO", + "name": "Daniel Scott-Raynsford", + "avatar_url": "https://avatars.githubusercontent.com/u/7589164?v=4", + "profile": "https://danielscottraynsford.com/", + "contributions": [ + "agents", + "collections", + "instructions", + "prompts" + ] + }, + { + "login": "jhauga", + "name": "John Haugabook", + "avatar_url": "https://avatars.githubusercontent.com/u/10998676?v=4", + "profile": "https://github.com/jhauga", + "contributions": [ + "instructions", + "prompts" + ] + }, + { + "login": "psimsa", + "name": "Pavel Simsa", + "avatar_url": "https://avatars.githubusercontent.com/u/7853836?v=4", + "profile": "https://witter.cz/@pavel", "contributions": [ "code" ] @@ -37,14 +139,26 @@ "avatar_url": "https://avatars.githubusercontent.com/u/8599?v=4", "profile": "http://digitarald.de/", "contributions": [ - "code" + "code", + "doc", + "maintenance" ] }, { - "login": "mbianchidev", - "name": "Matteo Bianchi", - "avatar_url": "https://avatars.githubusercontent.com/u/37507190?v=4", - "profile": "https://github.com/mbianchidev", + "login": "mubaidr", + "name": "Muhammad Ubaid Raza", + "avatar_url": "https://avatars.githubusercontent.com/u/2222702?v=4", + "profile": "https://mubaidr.js.org/", + "contributions": [ + "agents", + "instructions" + ] + }, + { + "login": "tmeschter", + "name": "Tom Meschter", + "avatar_url": "https://avatars.githubusercontent.com/u/10506730?v=4", + "profile": "https://github.com/tmeschter", "contributions": [ "code" ] @@ -53,36 +167,69 @@ "login": "AungMyoKyaw", "name": "Aung Myo Kyaw", "avatar_url": "https://avatars.githubusercontent.com/u/9404824?v=4", - "profile": "https://github.com/AungMyoKyaw", + "profile": "https://www.aungmyokyaw.com/", + "contributions": [ + "agents", + "prompts" + ] + }, + { + "login": "JasonYeMSFT", + "name": "JasonYeMSFT", + "avatar_url": "https://avatars.githubusercontent.com/u/39359541?v=4", + "profile": "https://github.com/JasonYeMSFT", "contributions": [ "code" ] }, { - "login": "PlagueHO", - "name": "Daniel Scott-Raynsford", - "avatar_url": "https://avatars.githubusercontent.com/u/7589164?v=4", - "profile": "https://danielscottraynsford.com/", + "login": "Jrc356", + "name": "Jon Corbin", + "avatar_url": "https://avatars.githubusercontent.com/u/37387479?v=4", + "profile": "https://www.linkedin.com/in/jrc356/", + "contributions": [ + "agents", + "prompts" + ] + }, + { + "login": "troytaylor-msft", + "name": "troytaylor-msft", + "avatar_url": "https://avatars.githubusercontent.com/u/248058374?v=4", + "profile": "https://github.com/troytaylor-msft", "contributions": [ "code" ] }, + { + "login": "fazedordecodigo", + "name": "Emerson Delatorre", + "avatar_url": "https://avatars.githubusercontent.com/u/38289677?v=4", + "profile": "https://delatorre.dev/", + "contributions": [ + "instructions" + ] + }, { "login": "burkeholland", "name": "Burke Holland", "avatar_url": "https://avatars.githubusercontent.com/u/686963?v=4", "profile": "https://github.com/burkeholland", "contributions": [ - "code" + "agents", + "infra", + "instructions", + "prompts" ] }, { - "login": "PEZ", - "name": "Peter Strömberg", - "avatar_url": "https://avatars.githubusercontent.com/u/30010?v=4", - "profile": "https://calva.io/", + "login": "yaooqinn", + "name": "Kent Yao", + "avatar_url": "https://avatars.githubusercontent.com/u/8326978?v=4", + "profile": "https://yaooqinn.github.io/", "contributions": [ - "code" + "instructions", + "prompts" ] }, { @@ -91,25 +238,45 @@ "avatar_url": "https://avatars.githubusercontent.com/u/51440732?v=4", "profile": "https://www.devprodlogs.com/", "contributions": [ - "code" + "prompts" ] }, { - "login": "jamesmontemagno", - "name": "James Montemagno", - "avatar_url": "https://avatars.githubusercontent.com/u/1676321?v=4", - "profile": "https://montemagno.com/", + "login": "yeelam-gordon", + "name": "Gordon Lam", + "avatar_url": "https://avatars.githubusercontent.com/u/73506701?v=4", + "profile": "https://github.com/yeelam-gordon", + "contributions": [ + "instructions" + ] + }, + { + "login": "madskristensen", + "name": "Mads Kristensen", + "avatar_url": "https://avatars.githubusercontent.com/u/1258877?v=4", + "profile": "https://www.madskristensen.net/", + "contributions": [ + "instructions" + ] + }, + { + "login": "ks6088ts", + "name": "Shinji Takenaka", + "avatar_url": "https://avatars.githubusercontent.com/u/1254960?v=4", + "profile": "https://ks6088ts.github.io/", "contributions": [ "code" ] }, { - "login": "VamshiVerma", - "name": "Vamshi Verma", - "avatar_url": "https://avatars.githubusercontent.com/u/21999324?v=4", - "profile": "https://github.com/VamshiVerma", + "login": "spectatora", + "name": "spectatora", + "avatar_url": "https://avatars.githubusercontent.com/u/1385755?v=4", + "profile": "https://github.com/spectatora", "contributions": [ - "code" + "agents", + "code", + "maintenance" ] }, { @@ -118,41 +285,37 @@ "avatar_url": "https://avatars.githubusercontent.com/u/593151?v=4", "profile": "https://github.com/sinedied", "contributions": [ - "code" + "instructions", + "prompts" ] }, { - "login": "OrenMe", - "name": "Oren Me", - "avatar_url": "https://avatars.githubusercontent.com/u/5461862?v=4", - "profile": "https://github.com/OrenMe", + "login": "VamshiVerma", + "name": "Vamshi Verma", + "avatar_url": "https://avatars.githubusercontent.com/u/21999324?v=4", + "profile": "https://github.com/VamshiVerma", "contributions": [ - "code" + "instructions", + "prompts" ] }, { - "login": "mjrousos", - "name": "Mike Rousos", - "avatar_url": "https://avatars.githubusercontent.com/u/10077254?v=4", - "profile": "https://github.com/mjrousos", + "login": "jamesmontemagno", + "name": "James Montemagno", + "avatar_url": "https://avatars.githubusercontent.com/u/1676321?v=4", + "profile": "https://montemagno.com/", "contributions": [ - "code" + "agents", + "doc", + "instructions", + "prompts" ] }, { - "login": "guiopen", - "name": "Guilherme do Amaral Alves ", - "avatar_url": "https://avatars.githubusercontent.com/u/94094527?v=4", - "profile": "https://github.com/guiopen", - "contributions": [ - "code" - ] - }, - { - "login": "troystaylor", - "name": "Troy Simeon Taylor", - "avatar_url": "https://avatars.githubusercontent.com/u/44444967?v=4", - "profile": "https://www.buymeacoffee.com/troystaylor", + "login": "alefragnani", + "name": "Alessandro Fragnani", + "avatar_url": "https://avatars.githubusercontent.com/u/3781424?v=4", + "profile": "https://twitter.com/alefragnani", "contributions": [ "code" ] @@ -163,7 +326,26 @@ "avatar_url": "https://avatars.githubusercontent.com/u/10282550?v=4", "profile": "https://www.linkedin.com/in/ambilykk/", "contributions": [ - "code" + "agents", + "instructions" + ] + }, + { + "login": "krushideep", + "name": "krushideep", + "avatar_url": "https://avatars.githubusercontent.com/u/174652083?v=4", + "profile": "https://github.com/krushideep", + "contributions": [ + "prompts" + ] + }, + { + "login": "mihsoft", + "name": "devopsfan", + "avatar_url": "https://avatars.githubusercontent.com/u/53946345?v=4", + "profile": "https://github.com/mihsoft", + "contributions": [ + "agents" ] }, { @@ -172,52 +354,28 @@ "avatar_url": "https://avatars.githubusercontent.com/u/541250?v=4", "profile": "http://tgrall.github.io/", "contributions": [ - "code" + "instructions", + "prompts" ] }, { - "login": "TianqiZhang", - "name": "Tianqi Zhang", - "avatar_url": "https://avatars.githubusercontent.com/u/5326582?v=4", - "profile": "https://github.com/TianqiZhang", + "login": "OrenMe", + "name": "Oren Me", + "avatar_url": "https://avatars.githubusercontent.com/u/5461862?v=4", + "profile": "https://www.promptboost.dev/", "contributions": [ - "code" + "agents", + "instructions" ] }, { - "login": "shubham070", - "name": "Shubham Gaikwad", - "avatar_url": "https://avatars.githubusercontent.com/u/5480589?v=4", - "profile": "https://github.com/shubham070", + "login": "mjrousos", + "name": "Mike Rousos", + "avatar_url": "https://avatars.githubusercontent.com/u/10077254?v=4", + "profile": "https://github.com/mjrousos", "contributions": [ - "code" - ] - }, - { - "login": "sdolgin", - "name": "Saul Dolgin", - "avatar_url": "https://avatars.githubusercontent.com/u/576449?v=4", - "profile": "https://github.com/sdolgin", - "contributions": [ - "code" - ] - }, - { - "login": "nullchimp", - "name": "NULLchimp", - "avatar_url": "https://avatars.githubusercontent.com/u/58362593?v=4", - "profile": "https://github.com/nullchimp", - "contributions": [ - "code" - ] - }, - { - "login": "MattVevang", - "name": "Matt Vevang", - "avatar_url": "https://avatars.githubusercontent.com/u/20714898?v=4", - "profile": "https://github.com/MattVevang", - "contributions": [ - "code" + "instructions", + "prompts" ] }, { @@ -226,25 +384,228 @@ "avatar_url": "https://avatars.githubusercontent.com/u/1538528?v=4", "profile": "https://devkimchi.com/", "contributions": [ - "code" + "instructions" ] }, { - "login": "0GiS0", - "name": "Gisela Torres", - "avatar_url": "https://avatars.githubusercontent.com/u/175379?v=4", - "profile": "https://hachyderm.io/@0gis0", + "login": "guiopen", + "name": "Guilherme do Amaral Alves ", + "avatar_url": "https://avatars.githubusercontent.com/u/94094527?v=4", + "profile": "https://github.com/guiopen", "contributions": [ - "code" + "instructions" ] }, { - "login": "debs-obrien", - "name": "Debbie O'Brien", - "avatar_url": "https://avatars.githubusercontent.com/u/13063165?v=4", - "profile": "https://debbie.codes/", + "login": "griffinashe", + "name": "Griffin Ashe", + "avatar_url": "https://avatars.githubusercontent.com/u/6391612?v=4", + "profile": "https://www.linkedin.com/in/griffinashe/", "contributions": [ - "code" + "agents", + "collections" + ] + }, + { + "login": "anchildress1", + "name": "Ashley Childress", + "avatar_url": "https://avatars.githubusercontent.com/u/6563688?v=4", + "profile": "https://github.com/anchildress1", + "contributions": [ + "agents", + "doc", + "instructions" + ] + }, + { + "login": "AClerbois", + "name": "Adrien Clerbois", + "avatar_url": "https://avatars.githubusercontent.com/u/50712277?v=4", + "profile": "http://www.senseof.tech/", + "contributions": [ + "agents", + "doc", + "prompts" + ] + }, + { + "login": "Vhivi", + "name": "ANGELELLI David", + "avatar_url": "https://avatars.githubusercontent.com/u/38220028?v=4", + "profile": "https://github.com/Vhivi", + "contributions": [ + "agents" + ] + }, + { + "login": "markdav-is", + "name": "Mark Davis", + "avatar_url": "https://avatars.githubusercontent.com/u/311063?v=4", + "profile": "http://markdav.is/", + "contributions": [ + "instructions" + ] + }, + { + "login": "MattVevang", + "name": "Matt Vevang", + "avatar_url": "https://avatars.githubusercontent.com/u/20714898?v=4", + "profile": "https://github.com/MattVevang", + "contributions": [ + "instructions" + ] + }, + { + "login": "mpgirro", + "name": "Maximilian Irro", + "avatar_url": "https://avatars.githubusercontent.com/u/589073?v=4", + "profile": "https://max.irro.at/", + "contributions": [ + "instructions" + ] + }, + { + "login": "nullchimp", + "name": "NULLchimp", + "avatar_url": "https://avatars.githubusercontent.com/u/58362593?v=4", + "profile": "https://github.com/nullchimp", + "contributions": [ + "agents" + ] + }, + { + "login": "pkarda", + "name": "Peter Karda", + "avatar_url": "https://avatars.githubusercontent.com/u/12649718?v=4", + "profile": "https://github.com/pkarda", + "contributions": [ + "prompts" + ] + }, + { + "login": "sdolgin", + "name": "Saul Dolgin", + "avatar_url": "https://avatars.githubusercontent.com/u/576449?v=4", + "profile": "https://github.com/sdolgin", + "contributions": [ + "agents", + "instructions", + "prompts" + ] + }, + { + "login": "shubham070", + "name": "Shubham Gaikwad", + "avatar_url": "https://avatars.githubusercontent.com/u/5480589?v=4", + "profile": "https://github.com/shubham070", + "contributions": [ + "agents", + "instructions", + "prompts" + ] + }, + { + "login": "TheovanKraay", + "name": "Theo van Kraay", + "avatar_url": "https://avatars.githubusercontent.com/u/24420698?v=4", + "profile": "https://github.com/TheovanKraay", + "contributions": [ + "instructions" + ] + }, + { + "login": "TianqiZhang", + "name": "Tianqi Zhang", + "avatar_url": "https://avatars.githubusercontent.com/u/5326582?v=4", + "profile": "https://github.com/TianqiZhang", + "contributions": [ + "agents" + ] + }, + { + "login": "doggy8088", + "name": "Will 保哥", + "avatar_url": "https://avatars.githubusercontent.com/u/88981?v=4", + "profile": "https://blog.miniasp.com/", + "contributions": [ + "agents", + "prompts" + ] + }, + { + "login": "tsubakimoto", + "name": "Yuta Matsumura", + "avatar_url": "https://avatars.githubusercontent.com/u/1592808?v=4", + "profile": "https://tsubalog.hatenablog.com/", + "contributions": [ + "instructions" + ] + }, + { + "login": "anschnapp", + "name": "anschnapp", + "avatar_url": "https://avatars.githubusercontent.com/u/17565996?v=4", + "profile": "https://github.com/anschnapp", + "contributions": [ + "agents" + ] + }, + { + "login": "hizahizi-hizumi", + "name": "hizahizi-hizumi", + "avatar_url": "https://avatars.githubusercontent.com/u/163728895?v=4", + "profile": "https://github.com/hizahizi-hizumi", + "contributions": [ + "instructions" + ] + }, + { + "login": "Jian-Min-Huang", + "name": "黃健旻 Vincent Huang", + "avatar_url": "https://avatars.githubusercontent.com/u/6296280?v=4", + "profile": "https://jianminhuang.cc/", + "contributions": [ + "prompts" + ] + }, + { + "login": "brunoborges", + "name": "Bruno Borges", + "avatar_url": "https://avatars.githubusercontent.com/u/129743?v=4", + "profile": "http://brunoborges.io/", + "contributions": [ + "collections", + "instructions" + ] + }, + { + "login": "MovingLive", + "name": "Steve Magne", + "avatar_url": "https://avatars.githubusercontent.com/u/14792628?v=4", + "profile": "https://www.movinglive.ca/", + "contributions": [ + "doc", + "instructions" + ] + }, + { + "login": "PureWeen", + "name": "Shane Neuville", + "avatar_url": "https://avatars.githubusercontent.com/u/5375137?v=4", + "profile": "http://shaneneuville.com/", + "contributions": [ + "agents", + "instructions" + ] + }, + { + "login": "askpt", + "name": "André Silva", + "avatar_url": "https://avatars.githubusercontent.com/u/2493377?v=4", + "profile": "https://asilva.dev/", + "contributions": [ + "agents", + "instructions" ] }, { @@ -253,7 +614,8 @@ "avatar_url": "https://avatars.githubusercontent.com/u/111466195?v=4", "profile": "https://github.com/agreaves-ms", "contributions": [ - "code" + "agents", + "instructions" ] }, { @@ -262,61 +624,145 @@ "avatar_url": "https://avatars.githubusercontent.com/u/26167931?v=4", "profile": "https://github.com/AmeliaRose802", "contributions": [ - "code" + "agents" ] }, { - "login": "SebastienDegodez", - "name": "Sebastien DEGODEZ", - "avatar_url": "https://avatars.githubusercontent.com/u/2349146?v=4", - "profile": "https://github.com/SebastienDegodez", + "login": "BBoyBen", + "name": "BBoyBen", + "avatar_url": "https://avatars.githubusercontent.com/u/34445365?v=4", + "profile": "https://github.com/BBoyBen", + "contributions": [ + "instructions" + ] + }, + { + "login": "brooke-hamilton", + "name": "Brooke Hamilton", + "avatar_url": "https://avatars.githubusercontent.com/u/45323234?v=4", + "profile": "https://azureincubations.io/", + "contributions": [ + "instructions" + ] + }, + { + "login": "GeekTrainer", + "name": "Christopher Harrison", + "avatar_url": "https://avatars.githubusercontent.com/u/6109729?v=4", + "profile": "https://github.com/GeekTrainer", + "contributions": [ + "instructions" + ] + }, + { + "login": "breakid", + "name": "Dan", + "avatar_url": "https://avatars.githubusercontent.com/u/1446918?v=4", + "profile": "https://github.com/breakid", + "contributions": [ + "instructions" + ] + }, + { + "login": "DanWahlin", + "name": "Dan Wahlin", + "avatar_url": "https://avatars.githubusercontent.com/u/1767249?v=4", + "profile": "https://blog.codewithdan.com/", + "contributions": [ + "agents" + ] + }, + { + "login": "debs-obrien", + "name": "Debbie O'Brien", + "avatar_url": "https://avatars.githubusercontent.com/u/13063165?v=4", + "profile": "https://debbie.codes/", + "contributions": [ + "agents", + "instructions", + "prompts" + ] + }, + { + "login": "echarrod", + "name": "Ed Harrod", + "avatar_url": "https://avatars.githubusercontent.com/u/1381991?v=4", + "profile": "https://github.com/echarrod", + "contributions": [ + "prompts" + ] + }, + { + "login": "gewarren", + "name": "Genevieve Warren", + "avatar_url": "https://avatars.githubusercontent.com/u/24882762?v=4", + "profile": "http://learn.microsoft.com/dotnet", + "contributions": [ + "prompts" + ] + }, + { + "login": "guigui42", + "name": "Guillaume", + "avatar_url": "https://avatars.githubusercontent.com/u/2376010?v=4", + "profile": "https://github.com/guigui42", + "contributions": [ + "agents", + "prompts" + ] + }, + { + "login": "riqueufmg", + "name": "Henrique Nunes", + "avatar_url": "https://avatars.githubusercontent.com/u/108551585?v=4", + "profile": "https://github.com/riqueufmg", + "contributions": [ + "prompts" + ] + }, + { + "login": "jeremiah-snee-openx", + "name": "Jeremiah Snee", + "avatar_url": "https://avatars.githubusercontent.com/u/113928685?v=4", + "profile": "https://github.com/jeremiah-snee-openx", "contributions": [ "code" ] }, { - "login": "segraef", - "name": "Sebastian Gräf", - "avatar_url": "https://avatars.githubusercontent.com/u/19261257?v=4", - "profile": "https://graef.io/", + "login": "kartikdhiman", + "name": "Kartik Dhiman", + "avatar_url": "https://avatars.githubusercontent.com/u/59189590?v=4", + "profile": "https://github.com/kartikdhiman", + "contributions": [ + "instructions" + ] + }, + { + "login": "kristiyan-velkov", + "name": "Kristiyan Velkov", + "avatar_url": "https://avatars.githubusercontent.com/u/40764277?v=4", + "profile": "https://kristiyanvelkov.com/", + "contributions": [ + "agents" + ] + }, + { + "login": "msalaman", + "name": "msalaman", + "avatar_url": "https://avatars.githubusercontent.com/u/28122166?v=4", + "profile": "https://github.com/msalaman", "contributions": [ "code" ] }, { - "login": "9ssi7", - "name": "Salih İbrahimbaş", - "avatar_url": "https://avatars.githubusercontent.com/u/76786120?v=4", - "profile": "https://9ssi7.dev/", + "login": "soderlind", + "name": "Per Søderlind", + "avatar_url": "https://avatars.githubusercontent.com/u/1649452?v=4", + "profile": "https://soderlind.no/", "contributions": [ - "code" - ] - }, - { - "login": "inquinity", - "name": "Robert Altman", - "avatar_url": "https://avatars.githubusercontent.com/u/406234?v=4", - "profile": "https://github.com/inquinity", - "contributions": [ - "code" - ] - }, - { - "login": "pertrai1", - "name": "Rob Simpson", - "avatar_url": "https://avatars.githubusercontent.com/u/442374?v=4", - "profile": "https://github.com/pertrai1", - "contributions": [ - "code" - ] - }, - { - "login": "ricksmit3000", - "name": "Rick Smit", - "avatar_url": "https://avatars.githubusercontent.com/u/7207783?v=4", - "profile": "https://ricksm.it/", - "contributions": [ - "code" + "instructions" ] }, { @@ -325,7 +771,118 @@ "avatar_url": "https://avatars.githubusercontent.com/u/28162552?v=4", "profile": "http://dotneteers.net/", "contributions": [ - "code" + "instructions" + ] + }, + { + "login": "madvimer", + "name": "Ravish Rathod", + "avatar_url": "https://avatars.githubusercontent.com/u/3188898?v=4", + "profile": "https://github.com/madvimer", + "contributions": [ + "instructions" + ] + }, + { + "login": "ricksmit3000", + "name": "Rick Smit", + "avatar_url": "https://avatars.githubusercontent.com/u/7207783?v=4", + "profile": "https://ricksm.it/", + "contributions": [ + "agents" + ] + }, + { + "login": "pertrai1", + "name": "Rob Simpson", + "avatar_url": "https://avatars.githubusercontent.com/u/442374?v=4", + "profile": "https://github.com/pertrai1", + "contributions": [ + "instructions" + ] + }, + { + "login": "inquinity", + "name": "Robert Altman", + "avatar_url": "https://avatars.githubusercontent.com/u/406234?v=4", + "profile": "https://github.com/inquinity", + "contributions": [ + "instructions" + ] + }, + { + "login": "salihguru", + "name": "Salih", + "avatar_url": "https://avatars.githubusercontent.com/u/76786120?v=4", + "profile": "https://salih.guru/", + "contributions": [ + "instructions" + ] + }, + { + "login": "segraef", + "name": "Sebastian Gräf", + "avatar_url": "https://avatars.githubusercontent.com/u/19261257?v=4", + "profile": "https://graef.io/", + "contributions": [ + "agents", + "instructions" + ] + }, + { + "login": "SebastienDegodez", + "name": "Sebastien DEGODEZ", + "avatar_url": "https://avatars.githubusercontent.com/u/2349146?v=4", + "profile": "https://github.com/SebastienDegodez", + "contributions": [ + "instructions" + ] + }, + { + "login": "sesmyrnov", + "name": "Sergiy Smyrnov", + "avatar_url": "https://avatars.githubusercontent.com/u/59627981?v=4", + "profile": "https://github.com/sesmyrnov", + "contributions": [ + "prompts" + ] + }, + { + "login": "SomeSolutionsArchitect", + "name": "SomeSolutionsArchitect", + "avatar_url": "https://avatars.githubusercontent.com/u/139817767?v=4", + "profile": "https://github.com/SomeSolutionsArchitect", + "contributions": [ + "agents" + ] + }, + { + "login": "kewalaka", + "name": "Stu Mace", + "avatar_url": "https://avatars.githubusercontent.com/u/3146590?v=4", + "profile": "https://github.com/kewalaka", + "contributions": [ + "agents", + "collections", + "instructions" + ] + }, + { + "login": "STRUDSO", + "name": "Søren Trudsø Mahon", + "avatar_url": "https://avatars.githubusercontent.com/u/1543732?v=4", + "profile": "https://github.com/STRUDSO", + "contributions": [ + "instructions" + ] + }, + { + "login": "semperteneo", + "name": "Tj Vita", + "avatar_url": "https://avatars.githubusercontent.com/u/14024037?v=4", + "profile": "http://enakdesign.com/", + "contributions": [ + "agents" ] }, { @@ -343,25 +900,107 @@ "avatar_url": "https://avatars.githubusercontent.com/u/470455?v=4", "profile": "https://www.paulomorgado.net/", "contributions": [ - "code" + "prompts" + ] + }, + { + "login": "pcrane", + "name": "Paul Crane", + "avatar_url": "https://avatars.githubusercontent.com/u/808676?v=4", + "profile": "https://paul.crane.net.nz/", + "contributions": [ + "agents" + ] + }, + { + "login": "pamelafox", + "name": "Pamela Fox", + "avatar_url": "https://avatars.githubusercontent.com/u/297042?v=4", + "profile": "https://www.pamelafox.org/", + "contributions": [ + "prompts" + ] + }, + { + "login": "prewk", + "name": "Oskar Thornblad", + "avatar_url": "https://avatars.githubusercontent.com/u/640102?v=4", + "profile": "https://oskarthornblad.se/", + "contributions": [ + "instructions" + ] + }, + { + "login": "nischays", + "name": "Nischay Sharma", + "avatar_url": "https://avatars.githubusercontent.com/u/54121853?v=4", + "profile": "https://github.com/nischays", + "contributions": [ + "agents" + ] + }, + { + "login": "Naikabg", + "name": "Nikolay Marinov", + "avatar_url": "https://avatars.githubusercontent.com/u/19915620?v=4", + "profile": "https://github.com/Naikabg", + "contributions": [ + "agents" + ] + }, + { + "login": "niksacdev", + "name": "Nik Sachdeva", + "avatar_url": "https://avatars.githubusercontent.com/u/20246918?v=4", + "profile": "https://www.linkedin.com/in/niksac", + "contributions": [ + "agents", + "collections" ] }, { "login": "nickytonline", "name": "Nick Taylor", "avatar_url": "https://avatars.githubusercontent.com/u/833231?v=4", - "profile": "https://nickyt.co/", + "profile": "https://onetipaweek.com/", "contributions": [ "code" ] }, + { + "login": "nicholasdbrady", + "name": "Nick Brady", + "avatar_url": "https://avatars.githubusercontent.com/u/18353756?v=4", + "profile": "https://nicholasdbrady.github.io/cookbook/", + "contributions": [ + "agents" + ] + }, + { + "login": "nastanford", + "name": "Nathan Stanford Sr", + "avatar_url": "https://avatars.githubusercontent.com/u/1755947?v=4", + "profile": "https://github.com/nastanford", + "contributions": [ + "instructions" + ] + }, + { + "login": "matebarabas", + "name": "Máté Barabás", + "avatar_url": "https://avatars.githubusercontent.com/u/22733424?v=4", + "profile": "https://github.com/matebarabas", + "contributions": [ + "instructions" + ] + }, { "login": "mikeparker104", "name": "Mike Parker", "avatar_url": "https://avatars.githubusercontent.com/u/12763221?v=4", "profile": "https://github.com/mikeparker104", "contributions": [ - "code" + "instructions" ] }, { @@ -370,133 +1009,34 @@ "avatar_url": "https://avatars.githubusercontent.com/u/85643503?v=4", "profile": "https://github.com/mikekistler", "contributions": [ - "code" + "prompts" ] }, { - "login": "mfairchild365", - "name": "Michael Fairchild", - "avatar_url": "https://avatars.githubusercontent.com/u/498678?v=4", - "profile": "https://a11ysupport.io/", + "login": "giomartinsdev", + "name": "Giovanni de Almeida Martins", + "avatar_url": "https://avatars.githubusercontent.com/u/125399281?v=4", + "profile": "https://github.com/giomartinsdev", "contributions": [ - "code" + "instructions" ] }, { - "login": "michaelvolz", - "name": "Michael A. Volz (Flynn)", - "avatar_url": "https://avatars.githubusercontent.com/u/129928?v=4", - "profile": "https://www.linkedin.com/in/michael-volz/", + "login": "dgh06175", + "name": "이상현", + "avatar_url": "https://avatars.githubusercontent.com/u/77305722?v=4", + "profile": "https://github.com/dgh06175", "contributions": [ - "code" + "instructions" ] }, { - "login": "4regab", - "name": "4regab", - "avatar_url": "https://avatars.githubusercontent.com/u/178603515?v=4", - "profile": "https://github.com/4regab", + "login": "zooav", + "name": "Ankur Sharma", + "avatar_url": "https://avatars.githubusercontent.com/u/12625412?v=4", + "profile": "https://github.com/zooav", "contributions": [ - "code" - ] - }, - { - "login": "TheovanKraay", - "name": "Theo van Kraay", - "avatar_url": "https://avatars.githubusercontent.com/u/24420698?v=4", - "profile": "https://github.com/TheovanKraay", - "contributions": [ - "code" - ] - }, - { - "login": "twitthoeft-gls", - "name": "Troy Witthoeft (glsauto)", - "avatar_url": "https://avatars.githubusercontent.com/u/132710946?v=4", - "profile": "http://glsauto.com/", - "contributions": [ - "code" - ] - }, - { - "login": "iletai", - "name": "Tài Lê", - "avatar_url": "https://avatars.githubusercontent.com/u/26614687?v=4", - "profile": "https://github.com/iletai", - "contributions": [ - "code" - ] - }, - { - "login": "udayakumarreddyv", - "name": "Udaya Veeramreddygari", - "avatar_url": "https://avatars.githubusercontent.com/u/9591887?v=4", - "profile": "https://tinyurl.com/3p5j9mwe", - "contributions": [ - "code" - ] - }, - { - "login": "warengonzaga", - "name": "Waren Gonzaga", - "avatar_url": "https://avatars.githubusercontent.com/u/15052701?v=4", - "profile": "https://bio.warengonzaga.com/", - "contributions": [ - "code" - ] - }, - { - "login": "doggy8088", - "name": "Will 保哥", - "avatar_url": "https://avatars.githubusercontent.com/u/88981?v=4", - "profile": "https://blog.miniasp.com/", - "contributions": [ - "code" - ] - }, - { - "login": "yukiomoto", - "name": "Yuki Omoto", - "avatar_url": "https://avatars.githubusercontent.com/u/38450410?v=4", - "profile": "https://github.com/yukiomoto", - "contributions": [ - "code" - ] - }, - { - "login": "hueanmy", - "name": "Meii", - "avatar_url": "https://avatars.githubusercontent.com/u/20430626?v=4", - "profile": "https://github.com/hueanmy", - "contributions": [ - "code" - ] - }, - { - "login": "samqbush", - "name": "samqbush", - "avatar_url": "https://avatars.githubusercontent.com/u/74389839?v=4", - "profile": "https://github.com/samqbush", - "contributions": [ - "code" - ] - }, - { - "login": "sdanzo-hrb", - "name": "sdanzo-hrb", - "avatar_url": "https://avatars.githubusercontent.com/u/136493100?v=4", - "profile": "https://github.com/sdanzo-hrb", - "contributions": [ - "code" - ] - }, - { - "login": "voidfnc", - "name": "voidfnc", - "avatar_url": "https://avatars.githubusercontent.com/u/194750710?v=4", - "profile": "https://github.com/voidfnc", - "contributions": [ - "code" + "prompts" ] }, { @@ -509,111 +1049,351 @@ ] }, { - "login": "zooav", - "name": "Ankur Sharma", - "avatar_url": "https://avatars.githubusercontent.com/u/12625412?v=4", - "profile": "https://github.com/zooav", + "login": "voidfnc", + "name": "voidfnc", + "avatar_url": "https://avatars.githubusercontent.com/u/194750710?v=4", + "profile": "https://github.com/voidfnc", + "contributions": [ + "agents" + ] + }, + { + "login": "shavo007", + "name": "shane lee", + "avatar_url": "https://avatars.githubusercontent.com/u/5466825?v=4", + "profile": "https://about.me/shane-lee", + "contributions": [ + "instructions" + ] + }, + { + "login": "sdanzo-hrb", + "name": "sdanzo-hrb", + "avatar_url": "https://avatars.githubusercontent.com/u/136493100?v=4", + "profile": "https://github.com/sdanzo-hrb", + "contributions": [ + "agents" + ] + }, + { + "login": "isauran", + "name": "sauran", + "avatar_url": "https://avatars.githubusercontent.com/u/33398121?v=4", + "profile": "https://github.com/nativebpm", + "contributions": [ + "instructions" + ] + }, + { + "login": "samqbush", + "name": "samqbush", + "avatar_url": "https://avatars.githubusercontent.com/u/74389839?v=4", + "profile": "https://github.com/samqbush", + "contributions": [ + "prompts" + ] + }, + { + "login": "pareenaverma", + "name": "pareenaverma", + "avatar_url": "https://avatars.githubusercontent.com/u/59843121?v=4", + "profile": "https://github.com/pareenaverma", + "contributions": [ + "agents" + ] + }, + { + "login": "oleksiyyurchyna", + "name": "oleksiyyurchyna", + "avatar_url": "https://avatars.githubusercontent.com/u/10256765?v=4", + "profile": "https://github.com/oleksiyyurchyna", + "contributions": [ + "collections", + "prompts" + ] + }, + { + "login": "time-by-waves", + "name": "oceans-of-time", + "avatar_url": "https://avatars.githubusercontent.com/u/34587654?v=4", + "profile": "https://github.com/time-by-waves", + "contributions": [ + "instructions" + ] + }, + { + "login": "kshashank57", + "name": "kshashank57", + "avatar_url": "https://avatars.githubusercontent.com/u/57212456?v=4", + "profile": "https://github.com/kshashank57", + "contributions": [ + "agents", + "instructions" + ] + }, + { + "login": "hueanmy", + "name": "Meii", + "avatar_url": "https://avatars.githubusercontent.com/u/20430626?v=4", + "profile": "https://github.com/hueanmy", + "contributions": [ + "agents" + ] + }, + { + "login": "factory-davidgu", + "name": "factory-davidgu", + "avatar_url": "https://avatars.githubusercontent.com/u/229352262?v=4", + "profile": "https://github.com/factory-davidgu", "contributions": [ "code" ] }, { - "login": "Jian-Min-Huang", - "name": "黃健旻 Vincent Huang", - "avatar_url": "https://avatars.githubusercontent.com/u/6296280?v=4", - "profile": "https://jianminhuang.cc/", + "login": "dangelov-qa", + "name": "dangelov-qa", + "avatar_url": "https://avatars.githubusercontent.com/u/92313553?v=4", + "profile": "https://github.com/dangelov-qa", + "contributions": [ + "agents" + ] + }, + { + "login": "BenoitMaucotel", + "name": "BenoitMaucotel", + "avatar_url": "https://avatars.githubusercontent.com/u/54392431?v=4", + "profile": "https://github.com/BenoitMaucotel", "contributions": [ "code" ] }, { - "login": "dgh06175", - "name": "이상현", - "avatar_url": "https://avatars.githubusercontent.com/u/77305722?v=4", - "profile": "https://github.com/dgh06175", + "login": "benjisho-aidome", + "name": "benjisho-aidome", + "avatar_url": "https://avatars.githubusercontent.com/u/218995725?v=4", + "profile": "https://github.com/benjisho-aidome", + "contributions": [ + "agents", + "instructions", + "prompts" + ] + }, + { + "login": "yukiomoto", + "name": "Yuki Omoto", + "avatar_url": "https://avatars.githubusercontent.com/u/38450410?v=4", + "profile": "https://github.com/yukiomoto", + "contributions": [ + "instructions" + ] + }, + { + "login": "wschultz-boxboat", + "name": "Will Schultz", + "avatar_url": "https://avatars.githubusercontent.com/u/110492948?v=4", + "profile": "https://github.com/wschultz-boxboat", + "contributions": [ + "agents" + ] + }, + { + "login": "warengonzaga", + "name": "Waren Gonzaga", + "avatar_url": "https://avatars.githubusercontent.com/u/15052701?v=4", + "profile": "https://bio.warengonzaga.com/", + "contributions": [ + "agents" + ] + }, + { + "login": "vincentkoc", + "name": "Vincent Koc", + "avatar_url": "https://avatars.githubusercontent.com/u/25068?v=4", + "profile": "https://linktr.ee/vincentkoc", + "contributions": [ + "agents" + ] + }, + { + "login": "Vaporjawn", + "name": "Victor Williams", + "avatar_url": "https://avatars.githubusercontent.com/u/15694665?v=4", + "profile": "https://github.com/Vaporjawn", + "contributions": [ + "agents" + ] + }, + { + "login": "VeVarunSharma", + "name": "Ve Sharma", + "avatar_url": "https://avatars.githubusercontent.com/u/62218708?v=4", + "profile": "https://vesharma.dev/", + "contributions": [ + "agents" + ] + }, + { + "login": "vlahanas", + "name": "Vasileios Lahanas", + "avatar_url": "https://avatars.githubusercontent.com/u/19361558?v=4", + "profile": "https://www.ferryhopper.com/", + "contributions": [ + "instructions" + ] + }, + { + "login": "udayakumarreddyv", + "name": "Udaya Veeramreddygari", + "avatar_url": "https://avatars.githubusercontent.com/u/9591887?v=4", + "profile": "https://tinyurl.com/3p5j9mwe", + "contributions": [ + "instructions" + ] + }, + { + "login": "iletai", + "name": "Tài Lê", + "avatar_url": "https://avatars.githubusercontent.com/u/26614687?v=4", + "profile": "https://github.com/iletai", + "contributions": [ + "prompts" + ] + }, + { + "login": "tsubasaogawa", + "name": "Tsubasa Ogawa", + "avatar_url": "https://avatars.githubusercontent.com/u/7788821?v=4", + "profile": "https://tsubasaogawa.me/", "contributions": [ "code" ] }, { - "login": "abdidaudpropel", - "name": "Abdi Daud", - "avatar_url": "https://avatars.githubusercontent.com/u/51310019?v=4", - "profile": "https://github.com/abdidaudpropel", + "login": "twitthoeft-gls", + "name": "Troy Witthoeft (glsauto)", + "avatar_url": "https://avatars.githubusercontent.com/u/132710946?v=4", + "profile": "http://glsauto.com/", + "contributions": [ + "instructions" + ] + }, + { + "login": "jfversluis", + "name": "Gerald Versluis", + "avatar_url": "https://avatars.githubusercontent.com/u/939291?v=4", + "profile": "https://jfversluis.dev/", + "contributions": [ + "instructions" + ] + }, + { + "login": "geoder101", + "name": "George Dernikos", + "avatar_url": "https://avatars.githubusercontent.com/u/145904?v=4", + "profile": "https://github.com/geoder101", + "contributions": [ + "prompts" + ] + }, + { + "login": "gautambaghel", + "name": "Gautam", + "avatar_url": "https://avatars.githubusercontent.com/u/22324290?v=4", + "profile": "https://github.com/gautambaghel", + "contributions": [ + "agents" + ] + }, + { + "login": "feapaydin", + "name": "Furkan Enes", + "avatar_url": "https://avatars.githubusercontent.com/u/19946639?v=4", + "profile": "https://github.com/feapaydin", + "contributions": [ + "instructions" + ] + }, + { + "login": "fmuecke", + "name": "Florian Mücke", + "avatar_url": "https://avatars.githubusercontent.com/u/7921024?v=4", + "profile": "https://github.com/fmuecke", + "contributions": [ + "agents" + ] + }, + { + "login": "felixarjuna", + "name": "Felix Arjuna", + "avatar_url": "https://avatars.githubusercontent.com/u/79026094?v=4", + "profile": "https://www.felixarjuna.dev/", + "contributions": [ + "instructions" + ] + }, + { + "login": "ewega", + "name": "Eldrick Wega", + "avatar_url": "https://avatars.githubusercontent.com/u/26189114?v=4", + "profile": "https://github.com/ewega", + "contributions": [ + "prompts" + ] + }, + { + "login": "danchev", + "name": "Dobri Danchev", + "avatar_url": "https://avatars.githubusercontent.com/u/12420863?v=4", + "profile": "https://github.com/danchev", + "contributions": [ + "prompts" + ] + }, + { + "login": "difegam", + "name": "Diego Gamboa", + "avatar_url": "https://avatars.githubusercontent.com/u/7052267?v=4", + "profile": "https://dgamboa.com/", + "contributions": [ + "prompts" + ] + }, + { + "login": "derekclair", + "name": "Derek Clair", + "avatar_url": "https://avatars.githubusercontent.com/u/5247629?v=4", + "profile": "https://github.com/derekclair", + "contributions": [ + "agents", + "prompts" + ] + }, + { + "login": "davidortinau", + "name": "David Ortinau", + "avatar_url": "https://avatars.githubusercontent.com/u/41873?v=4", + "profile": "https://dev.to/davidortinau", "contributions": [ "code" ] }, { - "login": "AClerbois", - "name": "Adrien Clerbois", - "avatar_url": "https://avatars.githubusercontent.com/u/50712277?v=4", - "profile": "http://www.senseof.tech/", + "login": "danielabbatt", + "name": "Daniel Abbatt", + "avatar_url": "https://avatars.githubusercontent.com/u/8926756?v=4", + "profile": "https://github.com/danielabbatt", "contributions": [ - "code" + "instructions" ] }, { - "login": "tegola", - "name": "Alan Sprecacenere", - "avatar_url": "https://avatars.githubusercontent.com/u/1868590?v=4", - "profile": "http://www.qreate.it/", + "login": "CypherHK", + "name": "CypherHK", + "avatar_url": "https://avatars.githubusercontent.com/u/230935834?v=4", + "profile": "https://github.com/CypherHK", "contributions": [ - "code" - ] - }, - { - "login": "askpt", - "name": "André Silva", - "avatar_url": "https://avatars.githubusercontent.com/u/2493377?v=4", - "profile": "https://asilva.dev/", - "contributions": [ - "code" - ] - }, - { - "login": "arey", - "name": "Antoine Rey", - "avatar_url": "https://avatars.githubusercontent.com/u/838318?v=4", - "profile": "https://javaetmoi.com/", - "contributions": [ - "code" - ] - }, - { - "login": "artemsaveliev", - "name": "Artem Saveliev", - "avatar_url": "https://avatars.githubusercontent.com/u/15679218?v=4", - "profile": "https://github.com/artemsaveliev", - "contributions": [ - "code" - ] - }, - { - "login": "brunoborges", - "name": "Bruno Borges", - "avatar_url": "https://avatars.githubusercontent.com/u/129743?v=4", - "profile": "http://brunoborges.io/", - "contributions": [ - "code" - ] - }, - { - "login": "tossnet", - "name": "Christophe Peugnet", - "avatar_url": "https://avatars.githubusercontent.com/u/3845786?v=4", - "profile": "https://www.peug.net/", - "contributions": [ - "code" - ] - }, - { - "login": "MovingLive", - "name": "Chtive", - "avatar_url": "https://avatars.githubusercontent.com/u/14792628?v=4", - "profile": "https://www.movinglive.ca/", - "contributions": [ - "code" + "agents", + "prompts" ] }, { @@ -626,120 +1406,255 @@ ] }, { - "login": "breakid", - "name": "Dan", - "avatar_url": "https://avatars.githubusercontent.com/u/1446918?v=4", - "profile": "https://github.com/breakid", + "login": "tossnet", + "name": "Christophe Peugnet", + "avatar_url": "https://avatars.githubusercontent.com/u/3845786?v=4", + "profile": "https://www.peug.net/", "contributions": [ - "code" + "instructions" ] }, { - "login": "ewega", - "name": "Eldrick Wega", - "avatar_url": "https://avatars.githubusercontent.com/u/26189114?v=4", - "profile": "https://github.com/ewega", + "login": "lechnerc77", + "name": "Christian Lechner", + "avatar_url": "https://avatars.githubusercontent.com/u/22294087?v=4", + "profile": "https://github.com/lechnerc77", "contributions": [ - "code" + "instructions" ] }, { - "login": "felixarjuna", - "name": "Felix Arjuna", - "avatar_url": "https://avatars.githubusercontent.com/u/79026094?v=4", - "profile": "https://www.felixarjuna.dev/", + "login": "charris-msft", + "name": "Chris Harris", + "avatar_url": "https://avatars.githubusercontent.com/u/74415662?v=4", + "profile": "https://github.com/charris-msft", "contributions": [ - "code" + "agents" ] }, { - "login": "feapaydin", - "name": "Furkan Enes", - "avatar_url": "https://avatars.githubusercontent.com/u/19946639?v=4", - "profile": "https://github.com/feapaydin", + "login": "artemsaveliev", + "name": "Artem Saveliev", + "avatar_url": "https://avatars.githubusercontent.com/u/15679218?v=4", + "profile": "https://github.com/artemsaveliev", "contributions": [ - "code" + "instructions" ] }, { - "login": "gewarren", - "name": "Genevieve Warren", - "avatar_url": "https://avatars.githubusercontent.com/u/24882762?v=4", - "profile": "http://learn.microsoft.com/dotnet", + "login": "arey", + "name": "Antoine Rey", + "avatar_url": "https://avatars.githubusercontent.com/u/838318?v=4", + "profile": "https://javaetmoi.com/", "contributions": [ - "code" + "prompts" ] }, { - "login": "geoder101", - "name": "George Dernikos", - "avatar_url": "https://avatars.githubusercontent.com/u/145904?v=4", - "profile": "https://github.com/geoder101", + "login": "PiKa919", + "name": "Ankit Das", + "avatar_url": "https://avatars.githubusercontent.com/u/96786190?v=4", + "profile": "https://github.com/PiKa919", "contributions": [ - "code" + "instructions" ] }, { - "login": "giomartinsdev", - "name": "Giovanni de Almeida Martins", - "avatar_url": "https://avatars.githubusercontent.com/u/125399281?v=4", - "profile": "https://github.com/giomartinsdev", + "login": "alineavila", + "name": "Aline Ávila", + "avatar_url": "https://avatars.githubusercontent.com/u/24813256?v=4", + "profile": "https://github.com/alineavila", "contributions": [ - "code" + "instructions" ] }, { - "login": "Ioana37", - "name": "Ioana A", - "avatar_url": "https://avatars.githubusercontent.com/u/69301842?v=4", - "profile": "https://github.com/Ioana37", + "login": "martin-cod", + "name": "Alexander Martinkevich", + "avatar_url": "https://avatars.githubusercontent.com/u/33550246?v=4", + "profile": "https://github.com/martin-cod", "contributions": [ - "code" + "agents" ] }, { - "login": "nohwnd", - "name": "Jakub Jareš", - "avatar_url": "https://avatars.githubusercontent.com/u/5735905?v=4", - "profile": "https://github.com/nohwnd", + "login": "aldunchev", + "name": "Aleksandar Dunchev", + "avatar_url": "https://avatars.githubusercontent.com/u/4631021?v=4", + "profile": "https://github.com/aldunchev", "contributions": [ - "code" + "agents" ] }, { - "login": "joe-watkins", - "name": "Joe Watkins", - "avatar_url": "https://avatars.githubusercontent.com/u/3695795?v=4", - "profile": "http://joe-watkins.io/", + "login": "tegola", + "name": "Alan Sprecacenere", + "avatar_url": "https://avatars.githubusercontent.com/u/1868590?v=4", + "profile": "http://www.qreate.it/", "contributions": [ - "code" + "instructions" ] }, { - "login": "johnpapa", - "name": "John Papa", - "avatar_url": "https://avatars.githubusercontent.com/u/1202528?v=4", - "profile": "http://johnpapa.net/", + "login": "akashxlr8", + "name": "Akash Kumar Shaw", + "avatar_url": "https://avatars.githubusercontent.com/u/58072860?v=4", + "profile": "https://github.com/akashxlr8", "contributions": [ - "code" + "instructions" ] }, { - "login": "josephgonzales01", - "name": "Joseph Gonzales", - "avatar_url": "https://avatars.githubusercontent.com/u/15100839?v=4", - "profile": "http://www.sugbo4j.co.nz/", + "login": "abdidaudpropel", + "name": "Abdi Daud", + "avatar_url": "https://avatars.githubusercontent.com/u/51310019?v=4", + "profile": "https://github.com/abdidaudpropel", "contributions": [ - "code" + "agents" ] }, { - "login": "josegarridodigio", - "name": "José Antonio Garrido", - "avatar_url": "https://avatars.githubusercontent.com/u/173672918?v=4", - "profile": "https://digio.es/", + "login": "AIAlchemyForge", + "name": "AIAlchemyForge", + "avatar_url": "https://avatars.githubusercontent.com/u/253636689?v=4", + "profile": "https://github.com/AIAlchemyForge", "contributions": [ - "code" + "instructions" + ] + }, + { + "login": "4regab", + "name": "4regab", + "avatar_url": "https://avatars.githubusercontent.com/u/178603515?v=4", + "profile": "https://github.com/4regab", + "contributions": [ + "instructions" + ] + }, + { + "login": "MiguelElGallo", + "name": "Miguel P Z", + "avatar_url": "https://avatars.githubusercontent.com/u/60221874?v=4", + "profile": "https://github.com/MiguelElGallo", + "contributions": [ + "doc" + ] + }, + { + "login": "mfairchild365", + "name": "Michael Fairchild", + "avatar_url": "https://avatars.githubusercontent.com/u/498678?v=4", + "profile": "https://a11ysupport.io/", + "contributions": [ + "instructions" + ] + }, + { + "login": "michaelvolz", + "name": "Michael A. Volz (Flynn)", + "avatar_url": "https://avatars.githubusercontent.com/u/129928?v=4", + "profile": "https://www.linkedin.com/in/michael-volz/", + "contributions": [ + "prompts" + ] + }, + { + "login": "Mike-Hanna", + "name": "Michael", + "avatar_url": "https://avatars.githubusercontent.com/u/50142889?v=4", + "profile": "https://github.com/Mike-Hanna", + "contributions": [ + "instructions" + ] + }, + { + "login": "mehmetalierol", + "name": "Mehmet Ali EROL", + "avatar_url": "https://avatars.githubusercontent.com/u/16721723?v=4", + "profile": "http://www.mehmetalierol.com/", + "contributions": [ + "agents" + ] + }, + { + "login": "maxprilutskiy", + "name": "Max Prilutskiy", + "avatar_url": "https://avatars.githubusercontent.com/u/5614659?v=4", + "profile": "https://maxprilutskiy.com/", + "contributions": [ + "agents" + ] + }, + { + "login": "mbianchidev", + "name": "Matteo Bianchi", + "avatar_url": "https://avatars.githubusercontent.com/u/37507190?v=4", + "profile": "https://github.com/mbianchidev", + "contributions": [ + "agents" + ] + }, + { + "login": "marknoble", + "name": "Mark Noble", + "avatar_url": "https://avatars.githubusercontent.com/u/3819700?v=4", + "profile": "http://marknoble.com/", + "contributions": [ + "agents" + ] + }, + { + "login": "ManishJayaswal", + "name": "Manish Jayaswal", + "avatar_url": "https://avatars.githubusercontent.com/u/9527491?v=4", + "profile": "https://github.com/ManishJayaswal", + "contributions": [ + "agents" + ] + }, + { + "login": "lukemurraynz", + "name": "Luke Murray", + "avatar_url": "https://avatars.githubusercontent.com/u/24467442?v=4", + "profile": "https://linktr.ee/lukemurray", + "contributions": [ + "agents" + ] + }, + { + "login": "LouellaCreemers", + "name": "Louella Creemers", + "avatar_url": "https://avatars.githubusercontent.com/u/46204894?v=4", + "profile": "https://github.com/LouellaCreemers", + "contributions": [ + "instructions" + ] + }, + { + "login": "saikoumudi", + "name": "Sai Koumudi Kaluvakolanu", + "avatar_url": "https://avatars.githubusercontent.com/u/22682497?v=4", + "profile": "https://github.com/saikoumudi", + "contributions": [ + "agents" + ] + }, + { + "login": "whiteken", + "name": "Kenny White", + "avatar_url": "https://avatars.githubusercontent.com/u/20211937?v=4", + "profile": "https://github.com/whiteken", + "contributions": [ + "instructions" + ] + }, + { + "login": "KaloyanGenev", + "name": "KaloyanGenev", + "avatar_url": "https://avatars.githubusercontent.com/u/42644424?v=4", + "profile": "https://github.com/KaloyanGenev", + "contributions": [ + "agents" ] }, { @@ -752,106 +1667,140 @@ ] }, { - "login": "whiteken", - "name": "Kenny White", - "avatar_url": "https://avatars.githubusercontent.com/u/20211937?v=4", - "profile": "https://github.com/whiteken", + "login": "jdubois", + "name": "Julien Dubois", + "avatar_url": "https://avatars.githubusercontent.com/u/316835?v=4", + "profile": "https://www.julien-dubois.com/", + "contributions": [ + "prompts" + ] + }, + { + "login": "josegarridodigio", + "name": "José Antonio Garrido", + "avatar_url": "https://avatars.githubusercontent.com/u/173672918?v=4", + "profile": "https://digio.es/", + "contributions": [ + "instructions" + ] + }, + { + "login": "josephgonzales01", + "name": "Joseph Gonzales", + "avatar_url": "https://avatars.githubusercontent.com/u/15100839?v=4", + "profile": "http://www.sugbo4j.co.nz/", + "contributions": [ + "instructions", + "prompts" + ] + }, + { + "login": "yortch", + "name": "Jorge Balderas", + "avatar_url": "https://avatars.githubusercontent.com/u/4576246?v=4", + "profile": "https://github.com/yortch", + "contributions": [ + "instructions" + ] + }, + { + "login": "johnpapa", + "name": "John Papa", + "avatar_url": "https://avatars.githubusercontent.com/u/1202528?v=4", + "profile": "http://johnpapa.net/", "contributions": [ "code" ] }, { - "login": "LouellaCreemers", - "name": "Louella Creemers", - "avatar_url": "https://avatars.githubusercontent.com/u/46204894?v=4", - "profile": "https://github.com/LouellaCreemers", + "login": "johnlokerse", + "name": "John", + "avatar_url": "https://avatars.githubusercontent.com/u/3514513?v=4", + "profile": "https://www.johnlokerse.dev/", "contributions": [ - "code" + "agents" ] }, { - "login": "lukemurraynz", - "name": "Luke Murray", - "avatar_url": "https://avatars.githubusercontent.com/u/24467442?v=4", - "profile": "https://linktr.ee/lukemurray", + "login": "joe-watkins", + "name": "Joe Watkins", + "avatar_url": "https://avatars.githubusercontent.com/u/3695795?v=4", + "profile": "http://joe-watkins.io/", "contributions": [ - "code" - ] - }, - { - "login": "marknoble", - "name": "Mark Noble", - "avatar_url": "https://avatars.githubusercontent.com/u/3819700?v=4", - "profile": "http://marknoble.com/", - "contributions": [ - "code" - ] - }, - { - "login": "soderlind", - "name": "Per Søderlind", - "avatar_url": "https://avatars.githubusercontent.com/u/1649452?v=4", - "profile": "https://soderlind.no", - "contributions": [ - "code" - ] - }, - { - "login": "riqueufmg", - "name": "Henrique Nunes", - "avatar_url": "https://avatars.githubusercontent.com/u/108551585?v=4", - "profile": "https://github.com/riqueufmg", - "contributions": [ - "code" - ] - }, - { - "login": "jeremiah-snee-openx", - "name": "Jeremiah Snee", - "avatar_url": "https://avatars.githubusercontent.com/u/113928685?v=4", - "profile": "https://github.com/jeremiah-snee-openx", - "contributions": [ - "code" - ] - }, - { - "login": "spectatora", - "name": "spectatora", - "avatar_url": "https://avatars.githubusercontent.com/u/1385755?v=4", - "profile": "https://github.com/spectatora", - "contributions": [ - "code" - ] - }, - { - "login": "Mike-Hanna", - "name": "Michael", - "avatar_url": "https://avatars.githubusercontent.com/u/50142889?v=4", - "profile": "https://github.com/Mike-Hanna", - "contributions": [ - "code" - ] - }, - { - "login": "lechnerc77", - "name": "Christian Lechner", - "avatar_url": "https://avatars.githubusercontent.com/u/22294087?v=4", - "profile": "https://github.com/lechnerc77", - "contributions": [ - "code" + "instructions" ] }, { "login": "Jandev", "name": "Jan de Vries", "avatar_url": "https://avatars.githubusercontent.com/u/462356?v=4", - "profile": "https://jan-v.nl", + "profile": "https://jan-v.nl/", "contributions": [ - "code" + "agents" + ] + }, + { + "login": "nohwnd", + "name": "Jakub Jareš", + "avatar_url": "https://avatars.githubusercontent.com/u/5735905?v=4", + "profile": "https://github.com/nohwnd", + "contributions": [ + "prompts" + ] + }, + { + "login": "jaxn", + "name": "Jackson Miller", + "avatar_url": "https://avatars.githubusercontent.com/u/29095?v=4", + "profile": "https://github.com/jaxn", + "contributions": [ + "instructions" + ] + }, + { + "login": "Ioana37", + "name": "Ioana A", + "avatar_url": "https://avatars.githubusercontent.com/u/69301842?v=4", + "profile": "https://github.com/Ioana37", + "contributions": [ + "instructions" + ] + }, + { + "login": "hunterhogan", + "name": "Hunter Hogan", + "avatar_url": "https://avatars.githubusercontent.com/u/2958419?v=4", + "profile": "https://github.com/hunterhogan", + "contributions": [ + "agents" + ] + }, + { + "login": "hashimwarren", + "name": "Hashim Warren", + "avatar_url": "https://avatars.githubusercontent.com/u/6027587?v=4", + "profile": "https://github.com/hashimwarren", + "contributions": [ + "agents" + ] + }, + { + "login": "Arggon", + "name": "Gonzalo", + "avatar_url": "https://avatars.githubusercontent.com/u/20962238?v=4", + "profile": "https://github.com/Arggon", + "contributions": [ + "prompts" + ] + }, + { + "login": "0GiS0", + "name": "Gisela Torres", + "avatar_url": "https://avatars.githubusercontent.com/u/175379?v=4", + "profile": "https://hachyderm.io/@0gis0", + "contributions": [ + "agents" ] } - ], - "contributorsPerLine": 7, - "linkToUsage": true, - "commitType": "docs" + ] } diff --git a/.github/workflows/contributors.yml b/.github/workflows/contributors.yml index 13adbaa3..7588b8b6 100644 --- a/.github/workflows/contributors.yml +++ b/.github/workflows/contributors.yml @@ -8,32 +8,49 @@ on: jobs: contributors: runs-on: ubuntu-latest + timeout-minutes: 5 permissions: contents: write pull-requests: write steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 + - name: Extract Node version from package.json + id: node-version + run: | + NODE_VERSION=$(jq -r '.engines.node // "22.x"' package.json) + echo "version=${NODE_VERSION}" >> "$GITHUB_OUTPUT" + - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: - node-version: "20" + node-version: ${{ steps.node-version.outputs.version }} - name: Install dependencies - run: npm install + run: npm ci - - name: Update contributors + - name: Check contributors + id: contributors_check run: npm run contributors:check env: PRIVATE_TOKEN: ${{ secrets.GITHUB_TOKEN }} + continue-on-error: true + + - name: Generate contributors report + if: steps.contributors_check.outcome == 'failure' + run: | + mkdir -p reports + npm run contributors:report + test -f reports/contributor-report.md && cat reports/contributor-report.md >> "$GITHUB_STEP_SUMMARY" + env: + PRIVATE_TOKEN: ${{ secrets.GITHUB_TOKEN }} + continue-on-error: true - name: Regenerate README - run: | - npm install - npm start + run: npm start - name: Check for changes id: verify-changed-files diff --git a/.gitignore b/.gitignore index 8ff4ff51..893a921b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ node_modules *.orig Copilot-Processing.md +reports/ # macOS system files .DS_Store diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0601f68e..2a11bd47 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -200,7 +200,8 @@ For full example of usage checkout edge-ai tasks collection: - A brief description of what your instruction/prompt does - Any relevant context or usage notes -**Note**: Once your contribution is merged, you'll automatically be added to our [Contributors](./README.md#contributors-) section! We use [all-contributors](https://github.com/all-contributors/all-contributors) to recognize all types of contributions to the project. +> [!NOTE] +> We use [all-contributors](https://github.com/all-contributors/all-contributors) to recognize all types of contributions to the project. Jump to [Contributors Recognition](#contributor-recognition) to learn more! ## What We Accept @@ -234,21 +235,34 @@ To maintain a safe, responsible, and constructive community, we will **not accep - **Write clearly**: Use simple, direct language - **Promote best practices**: Encourage secure, maintainable, and ethical development practices -## Contributors Recognition +## Contributor Recognition -This project uses [all-contributors](https://github.com/all-contributors/all-contributors) to recognize contributors. When you make a contribution, you'll automatically be recognized in our contributors list! +We use [all-contributors](https://github.com/all-contributors/all-contributors) to recognize **all types of contributions** to this project. -We welcome contributions of all types, including: +To add yourself, leave a comment on a relevant issue or pull request using your GitHub username and the appropriate contribution type(s): -- 📝 Documentation improvements -- 💻 Code contributions -- 🐛 Bug reports and fixes -- 🎨 Design improvements -- 💡 Ideas and suggestions -- 🤔 Answering questions -- 📢 Promoting the project +```markdown +@all-contributors add @username for contributionType1, contributionType2 +``` + +The contributors list is updated automatically every Sunday at **3:00 AM UTC**. When the next run completes, your name will appear in the [README Contributors](./README.md#contributors-) section. + +### Contribution Types + +We welcome many kinds of contributions, including the custom categories below: + +| Category | Description | Emoji | +| --- | --- | :---: | +| **Instructions** | Custom instruction sets that guide GitHub Copilot behavior | 🧭 | +| **Prompts** | Reusable or one-off prompts for GitHub Copilot | ⌨️ | +| **Agents (Chat Modes)** | Defined GitHub Copilot roles or personalities | 🎭 | +| **Skills** | Specialized knowledge of a task for GitHub Copilot | 🧰 | +| **Collections** | Curated bundles of related prompts, agents, or instructions | 🎁 | + +In addition, all standard contribution types supported by [All Contributors](https://allcontributors.org/emoji-key/) are recognized. + +> Every contribution matters. Thanks for helping improve this resource for the GitHub Copilot community. -Your contributions help make this resource better for the entire GitHub Copilot community! ## Code of Conduct diff --git a/README.md b/README.md index 630ab021..2904e54f 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,6 @@ # 🤖 Awesome GitHub Copilot Customizations +[![Powered by Awesome Copilot](https://img.shields.io/badge/Powered_by-Awesome_Copilot-blue?logo=githubcopilot)](https://aka.ms/awesome-github-copilot) [![GitHub contributors from allcontributors.org](https://img.shields.io/github/all-contributors/github/awesome-copilot?color=ee8449)](#contributors-) -[![Powered by Awesome Copilot](https://img.shields.io/badge/Powered_by-Awesome_Copilot-blue?logo=githubcopilot)](https://aka.ms/awesome-github-copilot) - -[![All Contributors](https://img.shields.io/badge/all_contributors-93-orange.svg?style=flat-square)](#contributors-) - A community created collection of custom agents, prompts, and instructions to supercharge your GitHub Copilot experience across different domains, languages, and use cases. @@ -128,7 +125,7 @@ The customizations in this repository are sourced from and created by third-part ## Contributors ✨ -Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): +Thanks goes to these wonderful people ([emoji key](./CONTRIBUTING.md#contributors-recognition)): @@ -136,125 +133,246 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/collections/awesome-copilot.md b/collections/awesome-copilot.md index 1f85ce6c..371283ef 100644 --- a/collections/awesome-copilot.md +++ b/collections/awesome-copilot.md @@ -9,11 +9,11 @@ Meta prompts that help you discover and generate curated GitHub Copilot chat mod | Title | Type | Description | MCP Servers | | ----- | ---- | ----------- | ----------- | | [Meta Agentic Project Scaffold](../agents/meta-agentic-project-scaffold.agent.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Fmeta-agentic-project-scaffold.agent.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode-insiders%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Fmeta-agentic-project-scaffold.agent.md) | Agent | Meta agentic project creation assistant to help users create and manage project workflows effectively. | | -| [Suggest Awesome GitHub Copilot Collections](../prompts/suggest-awesome-github-copilot-collections.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-collections.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-collections.prompt.md) | Prompt | Suggest relevant GitHub Copilot collections from the awesome-copilot repository based on current repository context and chat history, providing automatic download and installation of collection assets. | | -| [Suggest Awesome GitHub Copilot Custom Agents](../prompts/suggest-awesome-github-copilot-agents.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-agents.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-agents.prompt.md) | Prompt | Suggest relevant GitHub Copilot Custom Agents files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing custom agents in this repository. | | +| [Suggest Awesome GitHub Copilot Collections](../prompts/suggest-awesome-github-copilot-collections.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-collections.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-collections.prompt.md) | Prompt | Suggest relevant GitHub Copilot collections from the awesome-copilot repository based on current repository context and chat history, providing automatic download and installation of collection assets, and identifying outdated collection assets that need updates. | | +| [Suggest Awesome GitHub Copilot Custom Agents](../prompts/suggest-awesome-github-copilot-agents.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-agents.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-agents.prompt.md) | Prompt | Suggest relevant GitHub Copilot Custom Agents files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing custom agents in this repository, and identifying outdated agents that need updates. | | | [Suggest Awesome GitHub Copilot Custom Chat Modes](../prompts/suggest-awesome-github-copilot-chatmodes.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-chatmodes.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-chatmodes.prompt.md) | Prompt | Suggest relevant GitHub Copilot Custom Chat Modes files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing custom chat modes in this repository. | | -| [Suggest Awesome GitHub Copilot Instructions](../prompts/suggest-awesome-github-copilot-instructions.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-instructions.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-instructions.prompt.md) | Prompt | Suggest relevant GitHub Copilot instruction files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing instructions in this repository. | | -| [Suggest Awesome GitHub Copilot Prompts](../prompts/suggest-awesome-github-copilot-prompts.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-prompts.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-prompts.prompt.md) | Prompt | Suggest relevant GitHub Copilot prompt files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing prompts in this repository. | | +| [Suggest Awesome GitHub Copilot Instructions](../prompts/suggest-awesome-github-copilot-instructions.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-instructions.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-instructions.prompt.md) | Prompt | Suggest relevant GitHub Copilot instruction files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing instructions in this repository, and identifying outdated instructions that need updates. | | +| [Suggest Awesome GitHub Copilot Prompts](../prompts/suggest-awesome-github-copilot-prompts.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-prompts.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-prompts.prompt.md) | Prompt | Suggest relevant GitHub Copilot prompt files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing prompts in this repository, and identifying outdated prompts that need updates. | | --- *This collection includes 6 curated items for **Awesome Copilot**.* \ No newline at end of file diff --git a/docs/README.instructions.md b/docs/README.instructions.md index 1f7d3272..4574b3d5 100644 --- a/docs/README.instructions.md +++ b/docs/README.instructions.md @@ -86,6 +86,7 @@ Team and project-specific instructions to enhance GitHub Copilot's behavior for | [Go MCP Server Development Guidelines](../instructions/go-mcp-server.instructions.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fgo-mcp-server.instructions.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fgo-mcp-server.instructions.md) | Best practices and patterns for building Model Context Protocol (MCP) servers in Go using the official github.com/modelcontextprotocol/go-sdk package. | | [Guidance for Localization](../instructions/localization.instructions.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Flocalization.instructions.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Flocalization.instructions.md) | Guidelines for localizing markdown documents | | [How to Use the Sample Components](../instructions/pcf-sample-components.instructions.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fpcf-sample-components.instructions.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fpcf-sample-components.instructions.md) | How to use and run PCF sample components from the PowerApps-Samples repository | +| [HTML CSS Style Color Guide](../instructions/html-css-style-color-guide.instructions.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fhtml-css-style-color-guide.instructions.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fhtml-css-style-color-guide.instructions.md) | Color usage guidelines and styling rules for HTML elements to ensure accessible, professional designs. | | [Instructions for accessibility](../instructions/a11y.instructions.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fa11y.instructions.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fa11y.instructions.md) | Guidance for creating more accessible code | | [Java 11 to Java 17 Upgrade Guide](../instructions/java-11-to-java-17-upgrade.instructions.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fjava-11-to-java-17-upgrade.instructions.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fjava-11-to-java-17-upgrade.instructions.md) | Comprehensive best practices for adopting new Java 17 features since the release of Java 11. | | [Java 17 to Java 21 Upgrade Guide](../instructions/java-17-to-java-21-upgrade.instructions.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fjava-17-to-java-21-upgrade.instructions.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/instructions?url=vscode-insiders%3Achat-instructions%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Finstructions%2Fjava-17-to-java-21-upgrade.instructions.md) | Comprehensive best practices for adopting new Java 21 features since the release of Java 17. | diff --git a/docs/README.prompts.md b/docs/README.prompts.md index 55f4e215..4c078bb5 100644 --- a/docs/README.prompts.md +++ b/docs/README.prompts.md @@ -128,11 +128,11 @@ Ready-to-use prompt templates for specific development scenarios and tasks, defi | [Spring Boot with Kotlin Best Practices](../prompts/kotlin-springboot.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fkotlin-springboot.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fkotlin-springboot.prompt.md) | Get best practices for developing applications with Spring Boot and Kotlin. | | [SQL Code Review](../prompts/sql-code-review.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsql-code-review.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsql-code-review.prompt.md) | Universal SQL code review assistant that performs comprehensive security, maintainability, and code quality analysis across all SQL databases (MySQL, PostgreSQL, SQL Server, Oracle). Focuses on SQL injection prevention, access control, code standards, and anti-pattern detection. Complements SQL optimization prompt for complete development coverage. | | [SQL Performance Optimization Assistant](../prompts/sql-optimization.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsql-optimization.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsql-optimization.prompt.md) | Universal SQL performance optimization assistant for comprehensive query tuning, indexing strategies, and database performance analysis across all SQL databases (MySQL, PostgreSQL, SQL Server, Oracle). Provides execution plan analysis, pagination optimization, batch operations, and performance monitoring guidance. | -| [Suggest Awesome GitHub Copilot Collections](../prompts/suggest-awesome-github-copilot-collections.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-collections.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-collections.prompt.md) | Suggest relevant GitHub Copilot collections from the awesome-copilot repository based on current repository context and chat history, providing automatic download and installation of collection assets. | -| [Suggest Awesome GitHub Copilot Custom Agents](../prompts/suggest-awesome-github-copilot-agents.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-agents.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-agents.prompt.md) | Suggest relevant GitHub Copilot Custom Agents files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing custom agents in this repository. | +| [Suggest Awesome GitHub Copilot Collections](../prompts/suggest-awesome-github-copilot-collections.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-collections.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-collections.prompt.md) | Suggest relevant GitHub Copilot collections from the awesome-copilot repository based on current repository context and chat history, providing automatic download and installation of collection assets, and identifying outdated collection assets that need updates. | +| [Suggest Awesome GitHub Copilot Custom Agents](../prompts/suggest-awesome-github-copilot-agents.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-agents.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-agents.prompt.md) | Suggest relevant GitHub Copilot Custom Agents files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing custom agents in this repository, and identifying outdated agents that need updates. | | [Suggest Awesome GitHub Copilot Custom Chat Modes](../prompts/suggest-awesome-github-copilot-chatmodes.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-chatmodes.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-chatmodes.prompt.md) | Suggest relevant GitHub Copilot Custom Chat Modes files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing custom chat modes in this repository. | -| [Suggest Awesome GitHub Copilot Instructions](../prompts/suggest-awesome-github-copilot-instructions.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-instructions.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-instructions.prompt.md) | Suggest relevant GitHub Copilot instruction files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing instructions in this repository. | -| [Suggest Awesome GitHub Copilot Prompts](../prompts/suggest-awesome-github-copilot-prompts.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-prompts.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-prompts.prompt.md) | Suggest relevant GitHub Copilot prompt files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing prompts in this repository. | +| [Suggest Awesome GitHub Copilot Instructions](../prompts/suggest-awesome-github-copilot-instructions.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-instructions.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-instructions.prompt.md) | Suggest relevant GitHub Copilot instruction files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing instructions in this repository, and identifying outdated instructions that need updates. | +| [Suggest Awesome GitHub Copilot Prompts](../prompts/suggest-awesome-github-copilot-prompts.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-prompts.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fsuggest-awesome-github-copilot-prompts.prompt.md) | Suggest relevant GitHub Copilot prompt files from the awesome-copilot repository based on current repository context and chat history, avoiding duplicates with existing prompts in this repository, and identifying outdated prompts that need updates. | | [Swift MCP Server Generator](../prompts/swift-mcp-server-generator.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fswift-mcp-server-generator.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fswift-mcp-server-generator.prompt.md) | Generate a complete Model Context Protocol server project in Swift using the official MCP Swift SDK package. | | [Test Generation with Playwright MCP](../prompts/playwright-generate-test.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fplaywright-generate-test.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fplaywright-generate-test.prompt.md) | Generate a Playwright test based on a scenario using Playwright MCP | | [Test Planning & Quality Assurance Prompt](../prompts/breakdown-test.prompt.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fbreakdown-test.prompt.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/prompt?url=vscode-insiders%3Achat-prompt%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fprompts%2Fbreakdown-test.prompt.md) | Test Planning and Quality Assurance prompt that generates comprehensive test strategies, task breakdowns, and quality validation plans for GitHub projects. | diff --git a/eng/README.md b/eng/README.md new file mode 100644 index 00000000..ff95c85d --- /dev/null +++ b/eng/README.md @@ -0,0 +1,36 @@ +# Contributor Reporting (Maintainers) 🚧 + +This directory contains a lightweight helper to generate human-readable reports about missing contributors. + +- `contributor-report.mjs` — generates a markdown report of merged PRs for missing contributors (includes shared helpers). +- `add-missing-contributors.mjs` — on-demand maintainer script to automatically add missing contributors to `.all-contributorsrc` (infers contribution types from merged PR files, then runs the all-contributors CLI). + +## Key notes for maintainers + +- Reports are generated on-demand and output to `reports/contributor-report.md` for human review. +- The report output is intentionally minimal: a single list of affected PRs and one command to add missing contributor(s). +- This repository requires full git history for accurate analysis. In CI, set `fetch-depth: 0`. +- Link: [all-contributors CLI documentation](https://allcontributors.org/docs/en/cli) + +## On-demand scripts (not CI) + +These are maintainer utilities. They are intentionally on-demand only (but could be wired into CI later). + +### `add-missing-contributors.mjs` + +- Purpose: detect missing contributors, infer contribution types from their merged PR files, and run `npx all-contributors add ...` to update `.all-contributorsrc`. +- Requirements: + - GitHub CLI (`gh`) available (used to query merged PRs). + - `.all-contributorsrc` exists. + - Auth token set to avoid the anonymous GitHub rate limits: + - Set `GITHUB_TOKEN` (preferred), or `GH_TOKEN` for the `gh` CLI. + - If you use `PRIVATE_TOKEN` locally, `contributor-report.mjs` will map it to `GITHUB_TOKEN`. + +## Graceful shutdown + +- `contributor-report.mjs` calls `setupGracefulShutdown('script-name')` from `eng/utils/graceful-shutdown.mjs` early in the file to attach signal/exception handlers. + +## Testing & maintenance + +- Helper functions have small, deterministic behavior and include JSDoc comments. +- The `getMissingContributors` function in `contributor-report.mjs` is the single source of truth for detecting missing contributors from `all-contributors check` output. diff --git a/eng/add-missing-contributors.mjs b/eng/add-missing-contributors.mjs new file mode 100644 index 00000000..c9b03321 --- /dev/null +++ b/eng/add-missing-contributors.mjs @@ -0,0 +1,307 @@ +/** + * One-time contributor detection and addition script. + * Discovers missing contributors, determines their contribution types from repo history, + * and updates .all-contributorsrc via the all-contributors CLI. + * + * Usage: node add-missing-contributors.mjs + */ +import { execSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { + getContributionTypes, + getMissingContributors, + fetchContributorMergedPrs +} from './contributor-report.mjs'; +import { setupGracefulShutdown } from './utils/graceful-shutdown.mjs'; + +const DEFAULT_CMD_TIMEOUT = 30_000; // 30 seconds + +setupGracefulShutdown('add-missing-contributors'); + +/** + * Get all files touched by a contributor from their merged PRs. + * @param {string} username + * @returns {string[]} + */ +const getContributorFiles = (username) => { + try { + console.log(`📁 Getting files for contributor: ${username}`); + + const prs = fetchContributorMergedPrs(username, { includeAllFiles: true }); + + if (prs.length === 0) { + console.log(`📭 No merged PRs found for ${username}`); + return []; + } + + const files = new Set(); + for (const pr of prs) { + for (const file of pr.files || []) { + if (file?.path) { + files.add(file.path); + } + } + } + + const fileList = Array.from(files); + console.log(`📄 Found ${fileList.length} unique files for ${username}: ${fileList.slice(0, 3).join(', ')}${fileList.length > 3 ? '...' : ''}`); + return fileList; + + } catch (error) { + console.error(`❌ Error getting files for ${username}:`, error.message); + return []; + } +}; + +/** + * Determine contribution types from a contributor's files. + * @param {string} username + * @returns {string} + */ +const analyzeContributor = (username) => { + try { + console.log(`🔍 Analyzing contribution types for: ${username}`); + const files = getContributorFiles(username); + + if (files.length === 0) { + console.log(`💡 No files found for ${username}, using 'code' fallback`); + return 'code'; + } + + const contributionTypes = getContributionTypes(files); + + if (!contributionTypes || contributionTypes.trim() === '') { + console.log(`💡 No matching types found for ${username}, using 'code' fallback`); + return 'code'; + } + + console.log(`✅ Determined types for ${username}: ${contributionTypes}`); + return contributionTypes; + + } catch (error) { + console.error(`❌ Error analyzing files for ${username}:`, error.message); + return 'code'; + } +}; + +/** + * Add a username to the ignore list in .all-contributorsrc. + * @param {string} username + * @returns {boolean} + */ +const addToIgnoreList = (username) => { + try { + const configPath = path.join(process.cwd(), '.all-contributorsrc'); + const config = JSON.parse(fs.readFileSync(configPath, 'utf-8')); + + const ignoreList = config.ignoreList || config.ignore || []; + if (!ignoreList.includes(username)) { + ignoreList.push(username); + config.ignoreList = ignoreList; + fs.writeFileSync(configPath, JSON.stringify(config, null, 2)); + console.warn(`⚠️ Added ${username} to ignore list (user not found on GitHub)`); + return true; + } + return false; + } catch (error) { + console.error(`❌ Failed to add ${username} to ignore list:`, error.message); + return false; + } +}; + +/** + * Run the all-contributors CLI to add a contributor to the project. + * @param {string} username + * @param {string} types + * @returns {boolean} + */ +const addContributor = (username, types) => { + try { + console.log(`➕ Adding contributor: ${username} with types: ${types}`); + + const command = `npx all-contributors add ${username} ${types}`; + + execSync(command, { + encoding: 'utf8', + stdio: ['pipe', 'pipe', 'pipe'], + timeout: DEFAULT_CMD_TIMEOUT + }); + + return true; + + } catch (error) { + // System-level errors that should propagate up + if (error.message.includes('rate limit') || error.message.includes('403')) { + console.error(`⏱️ Rate limit encountered while adding ${username}.`); + throw error; + } + if (error.message.includes('network') || error.message.includes('timeout')) { + console.error(`🌐 Network error while adding ${username}.`); + throw error; + } + + // User-specific errors that can be skipped + if (error.message.includes('404') || error.message.includes('not found')) { + addToIgnoreList(username); + console.error(`❌ User ${username} not found, added to ignore list`); + return false; + } + + // Unknown error - log and skip + console.error(`❌ Failed to add contributor ${username}:`, error.message); + return false; + } +}; + +/** + * Process a single missing contributor: detect types and add via all-contributors CLI. + * @param {string} username + * @returns {{added:number, failed:number}} + */ +const processContributor = async (username) => { + let added = 0; + let failed = 0; + + try { + console.log(`📊 Step 2: Analyzing contribution types for ${username}...`); + const contributionTypes = analyzeContributor(username); + + console.log(`➕ Step 3: Adding ${username} with types: ${contributionTypes}...`); + + const success = addContributor(username, contributionTypes); + if (success) { + added++; + console.log(`✅ Successfully processed ${username}`); + } else { + failed++; + console.log(`❌ Failed to process ${username}`); + } + + } catch (error) { + failed++; + console.error(`💥 Error processing ${username}:`, error.message); + } + + return { added, failed }; +}; + +/** + * Main entry point: detect and add missing contributors. + */ +const main = async () => { + console.log('🚀 Starting add missing contributors script'); + console.log('='.repeat(50)); + + try { + console.log('\n📋 Step 1: Detecting missing contributors...'); + const missingContributors = getMissingContributors(); + + if (missingContributors.length === 0) { + console.log('🎉 No missing contributors found! All contributors are properly recognized.'); + return { processed: 0, added: 0, failed: 0 }; + } + + console.log(`\n🔄 Processing ${missingContributors.length} missing contributors...`); + + let processed = 0; + let added = 0; + let failed = 0; + + for (const username of missingContributors) { + console.log(`\n${'─'.repeat(30)}`); + console.log(`👤 Processing contributor: ${username}`); + + processed++; + + try { + const { added: deltaAdded, failed: deltaFailed } = await processContributor(username); + added += deltaAdded; + failed += deltaFailed; + } catch (error) { + // Re-throw system-level errors (rate limit, network, SIGINT) + console.error(`💥 System error processing ${username}:`, error.message); + throw error; + } + } + + return { processed, added, failed }; + } catch (error) { + console.error('\n💥 Fatal error in main execution:', error.message); + console.error('🛑 Script execution stopped'); + throw error; + } +}; + +/** + * Print a summary report of the run. + * @param {{processed:number, added:number, failed:number}} results + */ +const printSummaryReport = (results) => { + const { processed, added, failed } = results; + + console.log('\n' + '='.repeat(50)); + console.log('📊 EXECUTION SUMMARY'); + console.log('='.repeat(50)); + + console.log(`📋 Total contributors processed: ${processed}`); + console.log(`✅ Successfully added: ${added}`); + console.log(`❌ Failed to add: ${failed}`); + + if (processed === 0) { + console.log('\n🎉 SUCCESS: No missing contributors found - all contributors are properly recognized!'); + } else if (failed === 0) { + console.log('\n🎉 SUCCESS: All missing contributors have been successfully added!'); + console.log('💡 Next steps: Review the updated .all-contributorsrc file and commit the changes.'); + } else if (added > 0) { + console.log('\n⚠️ PARTIAL SUCCESS: Some contributors were added, but some failed.'); + console.log(`💡 ${added} contributors were successfully added.`); + console.log(`🔄 ${failed} contributors failed - check the error messages above for details.`); + console.log('💡 You may want to run the script again to retry failed contributors.'); + } else { + console.log('\n❌ FAILURE: No contributors could be added.'); + console.log('💡 Check the error messages above for troubleshooting guidance.'); + console.log('💡 Common issues: missing GITHUB_TOKEN, network problems, or API rate limits.'); + } + + console.log('\n📝 ACTIONABLE NEXT STEPS:'); + if (added > 0) { + console.log('• Review the updated .all-contributorsrc file'); + console.log('• Commit and push the changes to update the README'); + console.log('• Consider running "npm run contributors:generate" to update the README'); + } + if (failed > 0) { + console.log('• Check error messages above for specific failure reasons'); + console.log('• Verify GITHUB_TOKEN is set and has appropriate permissions'); + console.log('• Consider running the script again after resolving issues'); + } + if (processed === 0) { + console.log('• No action needed - all contributors are already recognized!'); + } + + console.log('\n' + '='.repeat(50)); +}; + +if (process.argv[1] && fileURLToPath(import.meta.url) === path.resolve(process.argv[1])) { + try { + const results = await main(); + printSummaryReport(results); + + if (results.failed > 0 && results.added === 0) { + process.exit(1); + } else if (results.failed > 0) { + process.exit(2); + } else { + process.exit(0); + } + } catch (error) { + console.error('\n💥 Script execution failed:', error.message); + console.log('\n📝 TROUBLESHOOTING TIPS:'); + console.log('• Ensure you are in a git repository'); + console.log('• Verify all-contributors-cli is installed'); + console.log('• Check that .all-contributorsrc file exists'); + console.log('• Ensure GITHUB_TOKEN environment variable is set'); + process.exit(1); + } +} diff --git a/eng/contributor-report.mjs b/eng/contributor-report.mjs new file mode 100644 index 00000000..0e72282e --- /dev/null +++ b/eng/contributor-report.mjs @@ -0,0 +1,596 @@ +/** + * Generate human-readable reports about missing contributors. + * This module queries merged PRs via 'gh' and produces a markdown report. + */ +import { execSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { setupGracefulShutdown } from './utils/graceful-shutdown.mjs'; + +const DEFAULT_CMD_TIMEOUT = 30_000; // 30s + +setupGracefulShutdown('contributor-report'); + +/** + * Patterns that represent generated files; contributors should not be credited + * for these files because they are not substantive authored content. + */ +export const AUTO_GENERATED_PATTERNS = [ + 'README.md', + 'README.*.md', + 'collections/*.md', + 'collections/*.collection.md', + 'docs/README.*.md', + 'docs/*.generated.md' +]; + +/** + * File globs used to infer contribution types from file paths. + */ +export const TYPE_PATTERNS = { + instructions: [ + 'instructions/*.instructions.md' + ], + prompts: [ + 'prompts/*.prompt.md' + ], + agents: [ + 'chatmodes/*.chatmode.md', + 'agents/*.agent.md' + ], + skills: [ + 'skills/' + ], + collections: [ + 'collections/*.collection.yml' + ], + doc: [ + 'docs/**/*.md', + '.github/**/*.md', + 'CONTRIBUTING.md', + 'SECURITY.md', + 'SUPPORT.md', + 'LICENSE.md', + 'CHANGELOG.md', + '*.md' + ], + infra: [ + '.github/workflows/**/*.yml', + '.github/workflows/**/*.yaml', + '**/*.yml', + '**/*.yaml' + ], + maintenance: [ + 'package*.json', + '*config*', + 'tsconfig*.json' + ], + code: [ + '**/*.js', + '**/*.ts', + '**/*.mjs', + '**/*.cjs', + '**/*.py' + ] +}; + +const globCache = new Map(); + +/** + * Convert a simple glob (with *, **) to a RegExp. + * This is intentionally small and deterministic for our repo patterns. + * @param {string} pattern + * @returns {RegExp} + */ +export const globToRegExp = (pattern) => { + const DOUBLE_WILDCARD_PLACEHOLDER = '§§DOUBLE§§'; + + // Escape all regex-special characters except glob wildcards (*, ?, /), + // then translate glob syntax to regex. + // Note: This function intentionally supports only a small subset of glob syntax. + const regexSpecials = /[.+^${}()|[\]\\]/g; + + let normalized = String(pattern); + + // Normalize Windows-style separators to POSIX-style for matching. + normalized = normalized.replaceAll('\\', '/'); + + // Escape regex metacharacters so they are treated literally. + normalized = normalized.replaceAll(regexSpecials, (match) => `\\${match}`); + + // Handle glob wildcards. + normalized = normalized.replaceAll('**', DOUBLE_WILDCARD_PLACEHOLDER); + normalized = normalized.replaceAll('*', '[^/]*'); + normalized = normalized.replaceAll(DOUBLE_WILDCARD_PLACEHOLDER, '.*'); + normalized = normalized.replaceAll('?', '.'); + + return new RegExp(`^${normalized}$`); +}; + +/** + * Test whether a file path matches a glob pattern. + * @param {string} filePath + * @param {string} pattern + * @returns {boolean} + */ +export const matchGlob = (filePath, pattern) => { + if (!globCache.has(pattern)) { + try { + globCache.set(pattern, globToRegExp(pattern)); + } catch { + globCache.set(pattern, null); + } + } + + const regexp = globCache.get(pattern); + if (!regexp) { + return false; + } + + const normalized = filePath.replaceAll('\\', '/'); + return regexp.test(normalized); +}; + +/** + * Return true if the given path matches one of the known auto-generated patterns. + * @param {string} filePath + * @returns {boolean} + */ +export const isAutoGeneratedFile = (filePath) => { + return AUTO_GENERATED_PATTERNS.some((pattern) => matchGlob(filePath, pattern)); +}; + +/** + * Infer a contribution type string (e.g. 'prompts', 'agents', 'doc') for a file path. + * Returns null if no specific type matched. + * @param {string} filePath + * @returns {string|null} + */ +export const getFileContributionType = (filePath) => { + const normalized = filePath.replaceAll('\\', '/'); + + for (const [type, patterns] of Object.entries(TYPE_PATTERNS)) { + if (patterns.some((pattern) => matchGlob(normalized, pattern))) { + return type; + } + } + + return null; +}; + +/** + * Derive a comma-separated list of contribution type identifiers from a list of files. + * Auto-generated files are ignored. Returns '' when no files to process. + * @param {string[]} files + * @returns {string} + */ +export const getContributionTypes = (files) => { + const types = new Set(); + let processed = 0; + + for (const file of files) { + if (isAutoGeneratedFile(file)) { + continue; + } + + processed += 1; + const type = getFileContributionType(file); + if (type) { + types.add(type); + } + } + + if (processed === 0) { + return ''; + } + + if (types.size === 0) { + types.add('code'); + } + + return Array.from(types).sort((a, b) => a.localeCompare(b)).join(','); +}; + +/** + * Check .all-contributors output to discover missing contributors. + * This is the canonical implementation used by contributor tooling. + * @returns {string[]} + */ +export const getMissingContributors = () => { + try { + console.log('🔍 Checking for missing contributors...'); + + const configPath = path.join(process.cwd(), '.all-contributorsrc'); + const config = JSON.parse(fs.readFileSync(configPath, 'utf-8')); + const ignoreEntries = config.ignoreList || config.ignore || []; + const ignoreSet = new Set(ignoreEntries.map((entry) => entry.toLowerCase())); + + if (ignoreSet.size > 0) { + console.log(`📋 Loaded ignore list: ${Array.from(ignoreSet).join(', ')}`); + } + + const output = execSync('npx all-contributors check', { + encoding: 'utf8', + stdio: ['pipe', 'pipe', 'pipe'], + timeout: DEFAULT_CMD_TIMEOUT + }); + + const lines = output.split('\n'); + + const headerLineIndex = lines.findIndex(line => + line.includes('Missing contributors in .all-contributorsrc:') + ); + + if (headerLineIndex === -1) { + console.log('✅ No missing contributors found'); + return []; + } + + let contributorsLine = ''; + for (let i = headerLineIndex + 1; i < lines.length; i++) { + const line = lines[i].trim(); + + if (line.includes('Unknown contributors') || line.includes('✨')) { + break; + } + + if (line && !line.startsWith('⠙') && !line.startsWith('✨')) { + contributorsLine = line; + break; + } + } + + if (!contributorsLine) { + console.log('✅ No missing contributors found'); + return []; + } + + const allUsernames = contributorsLine + .split(',') + .map(username => username.trim()) + .filter(username => username.length > 0); + + const filteredUsernames = allUsernames.filter(username => { + const lowerUsername = username.toLowerCase(); + + if (ignoreSet.has(lowerUsername)) { + console.log(`⏭️ FILTERED: ${username} is in ignore list`); + return false; + } + + return true; + }); + + console.log(`📋 Found ${filteredUsernames.length} missing contributors after filtering: ${filteredUsernames.join(', ')}`); + return filteredUsernames; + + } catch (error) { + const stderr = String(error?.stderr ?? ''); + const stdout = String(error?.stdout ?? ''); + const details = [stderr, stdout, String(error?.message ?? '')].join('\n'); + + // Never print token values. Just print actionable guidance. + if (details.toLowerCase().includes('bad credentials') || details.includes('401')) { + console.error('❌ all-contributors authentication failed (Bad credentials / 401).'); + console.error('💡 Set a valid token in PRIVATE_TOKEN (all-contributors-cli) and/or GH_TOKEN (gh CLI).'); + console.error('💡 In GitHub Actions, you can usually use: secrets.GITHUB_TOKEN'); + throw new Error('contributors:check failed due to invalid credentials'); + } + + console.error('❌ Error checking for missing contributors:', String(error?.message ?? error)); + if (details.trim()) { + console.error('--- all-contributors output (truncated) ---'); + console.error(details.slice(0, 2000)); + console.error('--- end output ---'); + } + + if (String(error?.message ?? '').includes('command not found') || String(error?.message ?? '').includes('not recognized')) { + console.error('💡 Make sure all-contributors-cli is installed: npm install all-contributors-cli'); + } + + throw error; + } +}; + +// --- REPORT GENERATION LOGIC --- + +/** + * Get the current GitHub repository in owner/repo format. + * Tries upstream first, then origin. + * @returns {string} + */ +const getGitHubRepo = () => { + const parseRepoFromRemoteUrl = (remoteUrl) => { + const url = String(remoteUrl || '').trim(); + if (!url) return null; + + // Supports: + // - git@github.com:owner/repo.git + // - ssh://git@github.com/owner/repo.git + // - https://github.com/owner/repo.git + // - https://github.com/owner/repo + const regex = /github\.com[/:]([^/]+)\/([^/?#]+?)(?:\.git)?(?:[/?#]|$)/; + const match = regex.exec(url); + if (!match) return null; + + return `${match[1]}/${match[2]}`; + }; + + try { + const upstreamUrl = execSync('git config --get remote.upstream.url', { + encoding: 'utf8', + stdio: ['pipe', 'pipe', 'pipe'] + }).trim(); + if (upstreamUrl) { + const repo = parseRepoFromRemoteUrl(upstreamUrl); + if (repo) return repo; + } + } catch (e) { + console.debug('upstream not found, trying origin', e?.message || e); + } + + try { + const originUrl = execSync('git config --get remote.origin.url', { + encoding: 'utf8', + stdio: ['pipe', 'pipe', 'pipe'] + }).trim(); + const repo = parseRepoFromRemoteUrl(originUrl); + if (repo) return repo; + } catch (e) { + console.debug('origin not found, using default', e?.message || e); + } + + return 'github/awesome-copilot'; +}; + +/** + * Fetch merged PRs for a GitHub username using the GH CLI and filter files. + * @param {string} username + * @param {{includeAllFiles?:boolean}} [opts] + * @returns {Array} Array of PR objects + */ +export const fetchContributorMergedPrs = (username, { includeAllFiles = false } = {}) => { + try { + const repo = getGitHubRepo(); + const result = execSync( + `gh pr list --repo ${repo} --state merged --author ${username} --json number,title,mergedAt,files,url --limit 100`, + { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'], timeout: DEFAULT_CMD_TIMEOUT } + ); + const prs = JSON.parse(result); + + if (includeAllFiles) { + return prs; + } + + return prs.filter(pr => { + const hasNonConfigFiles = pr.files.some(file => + !isAutoGeneratedFile(file.path) + ); + return hasNonConfigFiles; + }); + } catch (error) { + console.error(`Failed to fetch PRs for ${username}:`, error.message); + return []; + } +}; + +/** + * Convert a PR object into a normalized report entry with types and file details. + * @param {{login:string}} contributor + * @param {object} pr + * @param {{includeAllFiles?:boolean}} [opts] + * @returns {object|null} + */ +const generatePRReport = (contributor, pr, { includeAllFiles = false } = {}) => { + const types = new Set(); + const fileDetails = []; + + for (const file of pr.files) { + if (!file?.path) { + continue; + } + + // Include generated files only if includeAllFiles is true + if (!includeAllFiles && isAutoGeneratedFile(file.path)) { + continue; + } + + const type = getFileContributionType(file.path) || 'ideas'; + if (type) { + types.add(type); + } + + fileDetails.push({ + path: file.path, + type: type || 'unknown', + additions: file.additions, + deletions: file.deletions + }); + } + + // If no non-filtered files contributed to types, and we're not asked for all files, skip this PR + if (types.size === 0 && !includeAllFiles) { + return null; + } + + // Fallback to 'code' if no types detected + if (types.size === 0) { + types.add('code'); + } + + const typeList = Array.from(types); + + return { + prNumber: pr.number, + prTitle: pr.title, + prUrl: pr.url, + mergedAt: pr.mergedAt, + contributionTypes: typeList, + files: fileDetails, + commentSnippet: `@all-contributors please add @${contributor.login} for ${typeList.join(', ')}` + }; +}; + +/** + * Build a contributor report by inspecting merged PRs and mapping files to types. + * Returns null when no relevant PRs were found (unless includeAllFiles is true). + * @param {string} username + * @param {{includeAllFiles?:boolean}} [opts] + * @returns {object|null} + */ +export const generateContributorReport = (username, { includeAllFiles = false } = {}) => { + console.log(`Inspecting ${username}...`); + + const prs = fetchContributorMergedPrs(username, { includeAllFiles }); + const prReports = prs + .map(pr => generatePRReport({ login: username }, pr, { includeAllFiles })) + .filter(report => report !== null); + + // If no relevant PR reports and not explicitly including all files, skip the contributor entirely + if (prReports.length === 0 && !includeAllFiles) { + return null; + } + + return { + username, + totalPRs: prs.length, + prs: prReports + }; +}; + +/** + * Render a set of contributor reports as markdown for human review. + * @param {Array} reports + * @param {number} missingCount - number of missing contributors detected + * @returns {string} + */ +export const generateMarkdownReport = (reports, missingCount = 0) => { + if (!missingCount) { + return 'No missing contributors detected.\n'; + } + + const nowIso = new Date().toISOString(); + + const computeTypesArg = (report) => { + const typeSet = new Set(); + for (const pr of report.prs || []) { + for (const type of pr.contributionTypes || []) { + if (type) { + typeSet.add(type); + } + } + } + + const types = Array.from(typeSet).sort((a, b) => a.localeCompare(b)); + return types.length > 0 ? types.join(',') : 'code'; + }; + + const lines = []; + + lines.push( + '# Missing Contributors Report', + '', + `Generated (ISO): ${nowIso}`, + '', + `Missing contributors: ${missingCount}`, + '' + ); + + for (const report of reports) { + lines.push(`## @${report.username}`); + + const prs = Array.from(report.prs || []).sort((a, b) => { + // Prefer most recent PRs first. + const aTime = a.mergedAt ? Date.parse(a.mergedAt) : 0; + const bTime = b.mergedAt ? Date.parse(b.mergedAt) : 0; + if (aTime !== bTime) return bTime - aTime; + return (b.prNumber ?? 0) - (a.prNumber ?? 0); + }); + + if (prs.length === 0) { + lines.push( + '', + '_No eligible PRs found._', + '', + `Alternate CLI: \`npx all-contributors add ${report.username} ${computeTypesArg(report)}\``, + '', + '---', + '' + ); + continue; + } + + lines.push(''); + + for (const pr of prs) { + const prTypes = (pr.contributionTypes || []).filter(Boolean); + const prTypesArg = prTypes.length > 0 ? prTypes.join(', ') : 'code'; + const title = String(pr.prTitle ?? ''); + const url = String(pr.prUrl ?? ''); + const comment = `@all-contributors please add @${report.username} for ${prTypesArg}`; + + lines.push( + `[#${pr.prNumber}](${url}) ${title}`, + '```plaintext', + comment, + '```' + ); + } + + lines.push( + '', + '### Alternate CLI Command', + '', + '```bash', + `npx all-contributors add ${report.username} ${computeTypesArg(report)}`, + '```', + '', + '---', + '' + ); + } + + return `${lines.join('\n')}\n`; +}; + +const main = () => { + try { + // gh CLI can use either its own authenticated session or token env vars. + // In CI, we commonly receive a token via PRIVATE_TOKEN. + if (process.env.PRIVATE_TOKEN && !process.env.GITHUB_TOKEN && !process.env.GH_TOKEN) { + process.env.GITHUB_TOKEN = process.env.PRIVATE_TOKEN; + } + + // gh prefers GH_TOKEN; if we only have GITHUB_TOKEN, make GH_TOKEN explicit. + if (process.env.GITHUB_TOKEN && !process.env.GH_TOKEN) { + process.env.GH_TOKEN = process.env.GITHUB_TOKEN; + } + + const args = new Set(process.argv.slice(2)); + const includeAllFiles = args.has('--include-all-pr-files'); + + const contributors = getMissingContributors(); + console.log(`Inspecting ${contributors.length} missing contributors...\n`); + + const reports = []; + for (const contributor of contributors) { + const report = generateContributorReport(contributor, { includeAllFiles }); + reports.push(report || { username: contributor, totalPRs: 0, prs: [] }); + } + + const markdown = generateMarkdownReport(reports, contributors.length); + const outputPath = path.join(process.cwd(), 'reports', 'contributor-report.md'); + fs.writeFileSync(outputPath, markdown); + + console.log(`Report saved to: ${outputPath}`); + + } catch (error) { + console.error('Error generating report:', error); + process.exit(1); + } +}; + +if (process.argv[1] && fileURLToPath(import.meta.url) === path.resolve(process.argv[1])) { + main(); +} diff --git a/eng/utils/graceful-shutdown.mjs b/eng/utils/graceful-shutdown.mjs new file mode 100644 index 00000000..6ebeece4 --- /dev/null +++ b/eng/utils/graceful-shutdown.mjs @@ -0,0 +1,61 @@ +/** + * Lightweight graceful shutdown helper for one-off scripts. + * + * Call setupGracefulShutdown('script-name') early in your script to attach + * signal and exception handlers that exit the process cleanly. + * + * @param {string} name - Human readable name for log messages + * @param {{exitCode?:number}} [opts] + * @returns {() => void} teardown function to remove handlers (useful in tests) + */ +export const setupGracefulShutdown = (name, { exitCode = 1 } = {}) => { + let _shuttingDown = false; + + const cleanup = (signal) => { + if (_shuttingDown) return; + _shuttingDown = true; + console.log(`\n🛑 ${name}: received ${signal}, shutting down gracefully...`); + // Best-effort cleanup: keep this short and synchronous + try { + // Place for lightweight cleanup tasks if needed in future + } catch (e) { + console.error(`${name}: error during shutdown cleanup:`, e); + } + + // Exit with a non-zero code to indicate abnormal termination + try { + process.exit(exitCode); + } catch (e) { + // If process.exit is stubbed or overridden (e.g. in tests), surface the failure. + console.error(`${name}: process.exit failed:`, e?.message || e); + throw e; + } + }; + + const onSigInt = () => cleanup('SIGINT'); + const onSigTerm = () => cleanup('SIGTERM'); + const onSigHup = () => cleanup('SIGHUP'); + const onUncaught = (err) => { + console.error(`${name}: Uncaught exception:`, err); + cleanup('uncaughtException'); + }; + const onUnhandledRejection = (reason) => { + console.error(`${name}: Unhandled promise rejection:`, reason); + cleanup('unhandledRejection'); + }; + + process.on('SIGINT', onSigInt); + process.on('SIGTERM', onSigTerm); + process.on('SIGHUP', onSigHup); + process.on('uncaughtException', onUncaught); + process.on('unhandledRejection', onUnhandledRejection); + + // Return a teardown function useful for tests or if a caller wants to remove handlers + return () => { + process.removeListener('SIGINT', onSigInt); + process.removeListener('SIGTERM', onSigTerm); + process.removeListener('SIGHUP', onSigHup); + process.removeListener('uncaughtException', onUncaught); + process.removeListener('unhandledRejection', onUnhandledRejection); + }; +}; diff --git a/instructions/html-css-style-color-guide.instructions.md b/instructions/html-css-style-color-guide.instructions.md new file mode 100644 index 00000000..828a2027 --- /dev/null +++ b/instructions/html-css-style-color-guide.instructions.md @@ -0,0 +1,104 @@ +--- +description: 'Color usage guidelines and styling rules for HTML elements to ensure accessible, professional designs.' +applyTo: '**/*.html, **/*.css, **/*.js' +--- + +# HTML CSS Style Color Guide + +Follow these guidelines when updating or creating HTML/CSS styles for browser rendering. Color names +represent the full spectrum of their respective hue ranges (e.g., "blue" includes navy, sky blue, etc.). + +## Color Definitions + +- **Hot Colors**: Oranges, reds, and yellows +- **Cool Colors**: Blues, greens, and purples +- **Neutral Colors**: Grays and grayscale variations +- **Binary Colors**: Black and white +- **60-30-10 Rule** + - **Primary Color**: Use 60% of the time (*cool or light color*) + - **Secondary Color**: Use 30% of the time (*cool or light color*) + - **Accent**: Use 10% of the time (*complementary hot color*) + +## Color Usage Guidelines + +Balance the colors used by applying the **60-30-10 rule** to graphic design elements like backgrounds, +buttons, cards, etc... + +### Background Colors + +**Never Use:** + +- Purple or magenta +- Red, orange, or yellow +- Pink +- Any hot color + +**Recommended:** + +- White or off-white +- Light cool colors (e.g., light blues, light greens) +- Subtle neutral tones +- Light gradients with minimal color shift + +### Text Colors + +**Never Use:** + +- Yellow (poor contrast and readability) +- Pink +- Pure white or light text on light backgrounds +- Pure black or dark text on dark backgrounds + +**Recommended:** + +- Dark neutral colors (e.g., #1f2328, #24292f) +- Near-black variations (#000000 to #333333) + - Ensure background is a light color +- Dark grays (#4d4d4d, #6c757d) +- High-contrast combinations for accessibility +- Near-white variations (#ffffff to #f0f2f3) + - Ensure background is a dark color + +### Colors to Avoid + +Unless explicitly required by design specifications or user request, avoid: + +- Bright purples and magentas +- Bright pinks and neon colors +- Highly saturated hot colors +- Colors with low contrast ratios (fails WCAG accessibility standards) + +### Colors to Use Sparingly + +**Hot Colors** (red, orange, yellow): + +- Reserve for critical alerts, warnings, or error messages +- Use only when conveying urgency or importance +- Limit to small accent areas rather than large sections +- Consider alternatives like icons or bold text before using hot colors + +## Gradients + +Apply gradients with subtle color transitions to maintain professional aesthetics. + +### Best Practices + +- Keep color shifts minimal (e.g., #E6F2FF to #F5F7FA) +- Use gradients within the same color family +- Avoid combining hot and cool colors in a single gradient +- Prefer linear gradients over radial for backgrounds + +### Appropriate Use Cases + +- Background containers and sections +- Button hover states and interactive elements +- Drop shadows and depth effects +- Header and navigation bars +- Card components and panels + +## Additional Resources + +- [Color Tool](https://civicactions.github.io/uswds-color-tool/) +- [Government or Professional Color Standards](https://designsystem.digital.gov/design-tokens/color/overview/) +- [UI Color Palette Best Practices](https://www.interaction-design.org/literature/article/ui-color-palette) +- [Color Combination Resource](https://www.figma.com/resource-library/color-combinations/) diff --git a/instructions/svelte.instructions.md b/instructions/svelte.instructions.md index 646b4baf..7f2dfed5 100644 --- a/instructions/svelte.instructions.md +++ b/instructions/svelte.instructions.md @@ -15,7 +15,7 @@ Instructions for building high-quality Svelte 5 and SvelteKit applications with - Progressive enhancement and performance-first approach - Modern build tooling (Vite) with optimizations -## Development Standards +## Core Concepts ### Architecture - Use Svelte 5 runes system for all reactivity instead of legacy stores @@ -25,45 +25,76 @@ Instructions for building high-quality Svelte 5 and SvelteKit applications with - Implement proper component composition with slots and snippets - Use SvelteKit's file-based routing with proper load functions -### TypeScript Integration -- Enable strict mode in `tsconfig.json` for maximum type safety -- Define interfaces for component props using `$props()` syntax -- Type event handlers, refs, and SvelteKit's generated types -- Use generic types for reusable components -- Leverage `$types.ts` files generated by SvelteKit -- Implement proper type checking with `svelte-check` - ### Component Design - Follow single responsibility principle for components - Use `
Aaron Powell
Aaron Powell

💻 🚧 📆 📣
Muhammad Ubaid Raza
Muhammad Ubaid Raza

💻
Harald Kirschner
Harald Kirschner

💻
Matteo Bianchi
Matteo Bianchi

💻
Aung Myo Kyaw
Aung Myo Kyaw

💻
Daniel Scott-Raynsford
Daniel Scott-Raynsford

💻
Burke Holland
Burke Holland

💻
Aaron Powell
Aaron Powell

🎭 💻 🎁 📖 🚇 🧭 🚧 ⌨️
Matt Soucoup
Matt Soucoup

🚇
Troy Simeon Taylor
Troy Simeon Taylor

🎭 🎁 🧭 ⌨️
Abbas
Abbas

🎭 🧭
Peter Strömberg
Peter Strömberg

🎭 🎁 🧭 ⌨️
Daniel Scott-Raynsford
Daniel Scott-Raynsford

🎭 🎁 🧭 ⌨️
John Haugabook
John Haugabook

🧭 ⌨️
Peter Strömberg
Peter Strömberg

💻
Daniel Meppiel
Daniel Meppiel

💻
James Montemagno
James Montemagno

💻
Vamshi Verma
Vamshi Verma

💻
Yohan Lasorsa
Yohan Lasorsa

💻
Oren Me
Oren Me

💻
Mike Rousos
Mike Rousos

💻
Pavel Simsa
Pavel Simsa

💻
Harald Kirschner
Harald Kirschner

💻 📖 🚧
Muhammad Ubaid Raza
Muhammad Ubaid Raza

🎭 🧭
Tom Meschter
Tom Meschter

💻
Aung Myo Kyaw
Aung Myo Kyaw

🎭 ⌨️
JasonYeMSFT
JasonYeMSFT

💻
Jon Corbin
Jon Corbin

🎭 ⌨️
Guilherme do Amaral Alves
Guilherme do Amaral Alves

💻
Troy Simeon Taylor
Troy Simeon Taylor

💻
Ambily
Ambily

💻
Tugdual Grall
Tugdual Grall

💻
Tianqi Zhang
Tianqi Zhang

💻
Shubham Gaikwad
Shubham Gaikwad

💻
Saul Dolgin
Saul Dolgin

💻
troytaylor-msft
troytaylor-msft

💻
Emerson Delatorre
Emerson Delatorre

🧭
Burke Holland
Burke Holland

🎭 🚇 🧭 ⌨️
Kent Yao
Kent Yao

🧭 ⌨️
Daniel Meppiel
Daniel Meppiel

⌨️
Gordon Lam
Gordon Lam

🧭
Mads Kristensen
Mads Kristensen

🧭
NULLchimp
NULLchimp

💻
Matt Vevang
Matt Vevang

💻
Justin Yoo
Justin Yoo

💻
Gisela Torres
Gisela Torres

💻
Debbie O'Brien
Debbie O'Brien

💻
Allen Greaves
Allen Greaves

💻
Amelia Payne
Amelia Payne

💻
Shinji Takenaka
Shinji Takenaka

💻
spectatora
spectatora

🎭 💻 🚧
Yohan Lasorsa
Yohan Lasorsa

🧭 ⌨️
Vamshi Verma
Vamshi Verma

🧭 ⌨️
James Montemagno
James Montemagno

🎭 📖 🧭 ⌨️
Alessandro Fragnani
Alessandro Fragnani

💻
Ambily
Ambily

🎭 🧭
Sebastien DEGODEZ
Sebastien DEGODEZ

💻
Sebastian Gräf
Sebastian Gräf

💻
Salih İbrahimbaş
Salih İbrahimbaş

💻
Robert Altman
Robert Altman

💻
Rob Simpson
Rob Simpson

💻
Rick Smit
Rick Smit

💻
Peter Smulovics
Peter Smulovics

💻
krushideep
krushideep

⌨️
devopsfan
devopsfan

🎭
Tugdual Grall
Tugdual Grall

🧭 ⌨️
Oren Me
Oren Me

🎭 🧭
Mike Rousos
Mike Rousos

🧭 ⌨️
Justin Yoo
Justin Yoo

🧭
Guilherme do Amaral Alves
Guilherme do Amaral Alves

🧭
Peli de Halleux
Peli de Halleux

💻
Paulo Morgado
Paulo Morgado

💻
Nick Taylor
Nick Taylor

💻
Mike Parker
Mike Parker

💻
Mike Kistler
Mike Kistler

💻
Michael Fairchild
Michael Fairchild

💻
Michael A. Volz (Flynn)
Michael A. Volz (Flynn)

💻
Griffin Ashe
Griffin Ashe

🎭 🎁
Ashley Childress
Ashley Childress

🎭 📖 🧭
Adrien Clerbois
Adrien Clerbois

🎭 📖 ⌨️
ANGELELLI David
ANGELELLI David

🎭
Mark Davis
Mark Davis

🧭
Matt Vevang
Matt Vevang

🧭
Maximilian Irro
Maximilian Irro

🧭
4regab
4regab

💻
Theo van Kraay
Theo van Kraay

💻
Troy Witthoeft (glsauto)
Troy Witthoeft (glsauto)

💻
Tài Lê
Tài Lê

💻
Udaya Veeramreddygari
Udaya Veeramreddygari

💻
Waren Gonzaga
Waren Gonzaga

💻
Will 保哥
Will 保哥

💻
NULLchimp
NULLchimp

🎭
Peter Karda
Peter Karda

⌨️
Saul Dolgin
Saul Dolgin

🎭 🧭 ⌨️
Shubham Gaikwad
Shubham Gaikwad

🎭 🧭 ⌨️
Theo van Kraay
Theo van Kraay

🧭
Tianqi Zhang
Tianqi Zhang

🎭
Will 保哥
Will 保哥

🎭 ⌨️
Yuki Omoto
Yuki Omoto

💻
Meii
Meii

💻
samqbush
samqbush

💻
sdanzo-hrb
sdanzo-hrb

💻
voidfnc
voidfnc

💻
Wendy Breiding
Wendy Breiding

💻
Ankur Sharma
Ankur Sharma

💻
Yuta Matsumura
Yuta Matsumura

🧭
anschnapp
anschnapp

🎭
hizahizi-hizumi
hizahizi-hizumi

🧭
黃健旻 Vincent Huang
黃健旻 Vincent Huang

⌨️
Bruno Borges
Bruno Borges

🎁 🧭
Steve Magne
Steve Magne

📖 🧭
Shane Neuville
Shane Neuville

🎭 🧭
黃健旻 Vincent Huang
黃健旻 Vincent Huang

💻
이상현
이상현

💻
Abdi Daud
Abdi Daud

💻
Adrien Clerbois
Adrien Clerbois

💻
Alan Sprecacenere
Alan Sprecacenere

💻
André Silva
André Silva

💻
Antoine Rey
Antoine Rey

💻
André Silva
André Silva

🎭 🧭
Allen Greaves
Allen Greaves

🎭 🧭
Amelia Payne
Amelia Payne

🎭
BBoyBen
BBoyBen

🧭
Brooke Hamilton
Brooke Hamilton

🧭
Christopher Harrison
Christopher Harrison

🧭
Dan
Dan

🧭
Artem Saveliev
Artem Saveliev

💻
Bruno Borges
Bruno Borges

💻
Christophe Peugnet
Christophe Peugnet

💻
Chtive
Chtive

💻
Craig Bekker
Craig Bekker

💻
Dan
Dan

💻
Eldrick Wega
Eldrick Wega

💻
Felix Arjuna
Felix Arjuna

💻
Furkan Enes
Furkan Enes

💻
Genevieve Warren
Genevieve Warren

💻
George Dernikos
George Dernikos

💻
Giovanni de Almeida Martins
Giovanni de Almeida Martins

💻
Ioana A
Ioana A

💻
Jakub Jareš
Jakub Jareš

💻
Joe Watkins
Joe Watkins

💻
John Papa
John Papa

💻
Joseph Gonzales
Joseph Gonzales

💻
José Antonio Garrido
José Antonio Garrido

💻
Kim Skov Rasmussen
Kim Skov Rasmussen

💻
Kenny White
Kenny White

💻
Louella Creemers
Louella Creemers

💻
Luke Murray
Luke Murray

💻
Mark Noble
Mark Noble

💻
Per Søderlind
Per Søderlind

💻
Henrique Nunes
Henrique Nunes

💻
Dan Wahlin
Dan Wahlin

🎭
Debbie O'Brien
Debbie O'Brien

🎭 🧭 ⌨️
Ed Harrod
Ed Harrod

⌨️
Genevieve Warren
Genevieve Warren

⌨️
Guillaume
Guillaume

🎭 ⌨️
Henrique Nunes
Henrique Nunes

⌨️
Jeremiah Snee
Jeremiah Snee

💻
spectatora
spectatora

💻
Michael
Michael

💻
Christian Lechner
Christian Lechner

💻
Jan de Vries
Jan de Vries

💻
Kartik Dhiman
Kartik Dhiman

🧭
Kristiyan Velkov
Kristiyan Velkov

🎭
msalaman
msalaman

💻
Per Søderlind
Per Søderlind

🧭
Peter Smulovics
Peter Smulovics

🧭
Ravish Rathod
Ravish Rathod

🧭
Rick Smit
Rick Smit

🎭
Rob Simpson
Rob Simpson

🧭
Robert Altman
Robert Altman

🧭
Salih
Salih

🧭
Sebastian Gräf
Sebastian Gräf

🎭 🧭
Sebastien DEGODEZ
Sebastien DEGODEZ

🧭
Sergiy Smyrnov
Sergiy Smyrnov

⌨️
SomeSolutionsArchitect
SomeSolutionsArchitect

🎭
Stu Mace
Stu Mace

🎭 🎁 🧭
Søren Trudsø Mahon
Søren Trudsø Mahon

🧭
Tj Vita
Tj Vita

🎭
Peli de Halleux
Peli de Halleux

💻
Paulo Morgado
Paulo Morgado

⌨️
Paul Crane
Paul Crane

🎭
Pamela Fox
Pamela Fox

⌨️
Oskar Thornblad
Oskar Thornblad

🧭
Nischay Sharma
Nischay Sharma

🎭
Nikolay Marinov
Nikolay Marinov

🎭
Nik Sachdeva
Nik Sachdeva

🎭 🎁
Nick Taylor
Nick Taylor

💻
Nick Brady
Nick Brady

🎭
Nathan Stanford Sr
Nathan Stanford Sr

🧭
Máté Barabás
Máté Barabás

🧭
Mike Parker
Mike Parker

🧭
Mike Kistler
Mike Kistler

⌨️
Giovanni de Almeida Martins
Giovanni de Almeida Martins

🧭
이상현
이상현

🧭
Ankur Sharma
Ankur Sharma

⌨️
Wendy Breiding
Wendy Breiding

💻
voidfnc
voidfnc

🎭
shane lee
shane lee

🧭
sdanzo-hrb
sdanzo-hrb

🎭
sauran
sauran

🧭
samqbush
samqbush

⌨️
pareenaverma
pareenaverma

🎭
oleksiyyurchyna
oleksiyyurchyna

🎁 ⌨️
oceans-of-time
oceans-of-time

🧭
kshashank57
kshashank57

🎭 🧭
Meii
Meii

🎭
factory-davidgu
factory-davidgu

💻
dangelov-qa
dangelov-qa

🎭
BenoitMaucotel
BenoitMaucotel

💻
benjisho-aidome
benjisho-aidome

🎭 🧭 ⌨️
Yuki Omoto
Yuki Omoto

🧭
Will Schultz
Will Schultz

🎭
Waren Gonzaga
Waren Gonzaga

🎭
Vincent Koc
Vincent Koc

🎭
Victor Williams
Victor Williams

🎭
Ve Sharma
Ve Sharma

🎭
Vasileios Lahanas
Vasileios Lahanas

🧭
Udaya Veeramreddygari
Udaya Veeramreddygari

🧭
Tài Lê
Tài Lê

⌨️
Tsubasa Ogawa
Tsubasa Ogawa

💻
Troy Witthoeft (glsauto)
Troy Witthoeft (glsauto)

🧭
Gerald Versluis
Gerald Versluis

🧭
George Dernikos
George Dernikos

⌨️
Gautam
Gautam

🎭
Furkan Enes
Furkan Enes

🧭
Florian Mücke
Florian Mücke

🎭
Felix Arjuna
Felix Arjuna

🧭
Eldrick Wega
Eldrick Wega

⌨️
Dobri Danchev
Dobri Danchev

⌨️
Diego Gamboa
Diego Gamboa

⌨️
Derek Clair
Derek Clair

🎭 ⌨️
David Ortinau
David Ortinau

💻
Daniel Abbatt
Daniel Abbatt

🧭
CypherHK
CypherHK

🎭 ⌨️
Craig Bekker
Craig Bekker

💻
Christophe Peugnet
Christophe Peugnet

🧭
Christian Lechner
Christian Lechner

🧭
Chris Harris
Chris Harris

🎭
Artem Saveliev
Artem Saveliev

🧭
Antoine Rey
Antoine Rey

⌨️
Ankit Das
Ankit Das

🧭
Aline Ávila
Aline Ávila

🧭
Alexander Martinkevich
Alexander Martinkevich

🎭
Aleksandar Dunchev
Aleksandar Dunchev

🎭
Alan Sprecacenere
Alan Sprecacenere

🧭
Akash Kumar Shaw
Akash Kumar Shaw

🧭
Abdi Daud
Abdi Daud

🎭
AIAlchemyForge
AIAlchemyForge

🧭
4regab
4regab

🧭
Miguel P Z
Miguel P Z

📖
Michael Fairchild
Michael Fairchild

🧭
Michael A. Volz (Flynn)
Michael A. Volz (Flynn)

⌨️
Michael
Michael

🧭
Mehmet Ali EROL
Mehmet Ali EROL

🎭
Max Prilutskiy
Max Prilutskiy

🎭
Matteo Bianchi
Matteo Bianchi

🎭
Mark Noble
Mark Noble

🎭
Manish Jayaswal
Manish Jayaswal

🎭
Luke Murray
Luke Murray

🎭
Louella Creemers
Louella Creemers

🧭
Sai Koumudi Kaluvakolanu
Sai Koumudi Kaluvakolanu

🎭
Kenny White
Kenny White

🧭
KaloyanGenev
KaloyanGenev

🎭
Kim Skov Rasmussen
Kim Skov Rasmussen

💻
Julien Dubois
Julien Dubois

⌨️
José Antonio Garrido
José Antonio Garrido

🧭
Joseph Gonzales
Joseph Gonzales

🧭 ⌨️
Jorge Balderas
Jorge Balderas

🧭
John Papa
John Papa

💻
John
John

🎭
Joe Watkins
Joe Watkins

🧭
Jan de Vries
Jan de Vries

🎭
Jakub Jareš
Jakub Jareš

⌨️
Jackson Miller
Jackson Miller

🧭
Ioana A
Ioana A

🧭
Hunter Hogan
Hunter Hogan

🎭
Hashim Warren
Hashim Warren

🎭
Gonzalo
Gonzalo

⌨️
Gisela Torres
Gisela Torres

🎭