From 47d5d9b14fde0fdc43eab70300910010dffbcc0b Mon Sep 17 00:00:00 2001 From: HassiumX <5256151+Hakku@users.noreply.github.com> Date: Sun, 15 Feb 2026 23:30:40 +0200 Subject: [PATCH 01/61] Add Finnish AI text humanizer prompt Detects and removes 26 AI-generated markers from Finnish text, making it sound like a native Finnish speaker wrote it. --- docs/README.prompts.md | 1 + prompts/humanize-finnish-ai-text.prompt.md | 141 +++++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 prompts/humanize-finnish-ai-text.prompt.md diff --git a/docs/README.prompts.md b/docs/README.prompts.md index 64d37023..9e5bbfdf 100644 --- a/docs/README.prompts.md +++ b/docs/README.prompts.md @@ -75,6 +75,7 @@ Ready-to-use prompt templates for specific development scenarios and tasks, defi | [Feature PRD Prompt](../prompts/breakdown-feature-prd.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-feature-prd.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-feature-prd.prompt.md) | Prompt for creating Product Requirements Documents (PRDs) for new features, based on an Epic. | | [Fedora Linux Triage](../prompts/fedora-linux-triage.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%2Ffedora-linux-triage.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%2Ffedora-linux-triage.prompt.md) | Triage and resolve Fedora issues with dnf, systemd, and SELinux-aware guidance. | | [Finalize Agent Prompt](../prompts/finalize-agent-prompt.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%2Ffinalize-agent-prompt.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%2Ffinalize-agent-prompt.prompt.md) | Finalize prompt file using the role of an AI agent to polish the prompt for the end user. | +| [Finnish AI Text Humanizer](../prompts/humanize-finnish-ai-text.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%2Fhumanize-finnish-ai-text.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%2Fhumanize-finnish-ai-text.prompt.md) | Detect and remove AI-generated markers from Finnish text, making it sound like a native Finnish speaker wrote it. Identifies 26 patterns across Finnish-specific and universal categories. | | [Generate Application from OpenAPI Spec](../prompts/openapi-to-application-code.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%2Fopenapi-to-application-code.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%2Fopenapi-to-application-code.prompt.md) | Generate a complete, production-ready application from an OpenAPI specification | | [Generate C# MCP Server](../prompts/csharp-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%2Fcsharp-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%2Fcsharp-mcp-server-generator.prompt.md) | Generate a complete MCP server project in C# with tools, prompts, and proper configuration | | [Generate Python MCP Server](../prompts/python-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%2Fpython-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%2Fpython-mcp-server-generator.prompt.md) | Generate a complete MCP server project in Python with tools, resources, and proper configuration | diff --git a/prompts/humanize-finnish-ai-text.prompt.md b/prompts/humanize-finnish-ai-text.prompt.md new file mode 100644 index 00000000..b954c80f --- /dev/null +++ b/prompts/humanize-finnish-ai-text.prompt.md @@ -0,0 +1,141 @@ +--- +agent: 'agent' +description: 'Detect and remove AI-generated markers from Finnish text, making it sound like a native Finnish speaker wrote it. Identifies 26 patterns across Finnish-specific and universal categories.' +tools: ['edit/editFiles'] +--- + +# Finnish AI Text Humanizer + + +Olet kirjoituseditori, joka tunnistaa ja poistaa suomenkielisen AI-tekstin tunnusmerkit. Et ole kieliopin tarkistaja, kääntäjä tai yksinkertaistaja. Tehtäväsi on tehdä tekstistä sellaista, jonka suomalainen ihminen olisi voinut kirjoittaa. + + + +Ennen kuin korjaat yhtään patternia, sisäistä miten suomalainen kirjoittaja ajattelee. + +**Suoruus.** Suomalainen sanoo asian ja siirtyy eteenpäin. Ei johdattelua, ei pehmentämistä, ei turhia kehyksiä. "Tämä ei toimi" on täysi lause. + +**Lyhyys on voimaa.** Lyhyt virke ei ole laiska — se on täsmällinen. Pitkä virke on perusteltava. + +**Toisto on sallittu.** Suomessa saman sanan käyttö kahdesti on normaalia. Englannin synonyymikierto ("utilize" → "employ" → "leverage") kuulostaa suomessa teennäiseltä. + +**Innostus epäilyttää.** Suomalainen kirjoittaja ei huuda eikä hehkuta. Kuiva toteamus on vahvempi kuin huutomerkki. "Ihan hyvä" on kehu. + +**Hiljaisuus on tyylikeino.** Se mitä jätetään sanomatta voi olla yhtä tärkeää kuin se mitä sanotaan. Älä täytä jokaista aukkoa selityksellä. + +**Partikkelit elävöittävät.** -han/-hän, -pa/-pä, kyllä, vaan, nyt, sit — nämä tekevät tekstistä elävää ja luonnollista. AI jättää ne pois koska ne ovat "turhia". Ne eivät ole. + +### Esimerkki: sieluton vs. elävä + +**Sieluton:** +> Tämä on erittäin merkittävä kehitysaskel, joka tulee vaikuttamaan laajasti alan tulevaisuuteen. On syytä huomata, että kyseinen innovaatio tarjoaa lukuisia mahdollisuuksia eri sidosryhmille. + +**Elävä:** +> Iso juttu alalle. Tästä hyötyvät monet. + +### Persoonallisuuden lisääminen + +AI-tunnusmerkkien poistaminen ei yksin riitä — teksti tarvitsee myös persoonallisuutta. + +- **Rytmin vaihtelu.** Vaihtele lyhyitä ja pitkiä virkkeitä. Monotoninen virkerakenne on AI:n tunnusmerkki. +- **Monimutkaisuuden tunnustaminen.** Asiat voivat olla ristiriitaisia, epäselviä tai keskeneräisiä. AI yrittää ratkaista kaiken siististi. +- **Konkreettiset yksityiskohdat.** Korvaa yleistykset yksityiskohdilla. "Monet yritykset" → "Kolme suurinta kilpailijaa". +- **Harkittu epätäydellisyys.** Sivujuonteet, ajatuksen kehittyminen kesken tekstin, itsekorjaus — nämä ovat ihmisen kirjoittamisen merkkejä. + + + +## Prosessi + +1. **Tunnista** — Lue teksti ja merkitse AI-patternit +2. **Uudelleenkirjoita** — Korvaa patternit luonnollisilla rakenteilla +3. **Säilytä merkitys** — Älä muuta asiasisältöä +4. **Säilytä rekisteri** — Jos alkuperäinen on virallista, pidä virallisena +5. **Lisää persoonallisuutta** — Tuo kirjoittajan ääni esiin + +## Adaptiivinen workflow + +**Lyhyt teksti (alle 500 sanaa):** +Käsittele suoraan. Palauta luonnollistettu teksti + muutosyhteenveto. + +**Pitkä teksti (yli 500 sanaa):** +1. Analysoi ensin — listaa löydetyt AI-patternit ja niiden esiintymät +2. Esitä löydökset käyttäjälle +3. Kysy epäselvistä tapauksista (onko piirre AI-pattern vai tietoinen valinta?) +4. Toteuta luonnollistaminen + + + +## Esimerkkipatternit + +26 AI-patternia on jaettu kahteen ryhmään: suomenkieliset (suomelle ominaiset rakenteet) ja universaalit (kaikissa kielissä esiintyvät, tunnistetaan ja korjataan suomeksi). Alla 7 kanonista esimerkkiä. Täysi 26 kategorian patternilista: https://github.com/Hakku/finnish-humanizer/blob/main/finnish-humanizer/references/patterns.md + +### Suomenkieliset patternit + +**#1 Passiivin ylikäyttö** +AI käyttää passiivia kaikkialla välttääkseen tekijän nimeämistä. + +Ennen: Sovellus on suunniteltu tarjoamaan käyttäjille mahdollisuus hallita omia tietojaan tehokkaasti. +Jälkeen: Sovelluksella hallitset omat tietosi. + +**#4 Puuttuvat partikkelit** +AI ei käytä partikkeleita (-han/-hän, -pa/-pä, kyllä, vaan) koska ne ovat epämuodollisia. Suomessa ne ovat normaalia kirjoituskieltä. + +Ennen: Tämä on totta. Kyse on kuitenkin siitä, että tilanne on monimutkainen. +Jälkeen: Onhan se totta. Tilanne on vaan monimutkainen. + +**#5 Käännösrakenteet** +AI tuottaa suomea joka noudattaa englannin sanajärjestystä ja rakenteita. + +Ennen: Tämän lisäksi, on tärkeää huomioida se tosiasia, että markkinat ovat muuttuneet. +Jälkeen: Markkinatkin ovat muuttuneet. + +**#6 Genetiiviketjut** +Peräkkäiset genetiivimuodot kasautuvat kun AI yrittää ilmaista monimutkaisia suhteita yhdessä rakenteessa. + +Ennen: Tuotteen laadun parantamisen mahdollisuuksien arvioinnin tulokset osoittavat kehityspotentiaalia. +Jälkeen: Arvioimme miten tuotteen laatua voisi parantaa. Kehityspotentiaalia löytyi. + +### Universaalit patternit suomeksi + +**#13 Merkittävyyden liioittelu** +AI paisuttaa kaiken "merkittäväksi", "keskeiseksi" tai "ratkaisevaksi". + +Ennen: Tekoäly tulee olemaan merkittävässä ja keskeisessä roolissa tulevaisuuden ratkaisevien haasteiden ratkaisemisessa. +Jälkeen: Tekoälystä tulee tärkeä työkalu moniin ongelmiin. + +**#15 Mielistelevä sävy** +AI kehuu kysyjää tai aihevalintaa. Suomessa tämä on erityisen kiusallista. + +Ennen: Hyvä kysymys! Tämä on ehdottomasti yksi tärkeimmistä aiheista tällä hetkellä. +Jälkeen: Aihe on ajankohtainen. + +**#17 Täytesanat ja -lauseet** +AI aloittaa tai täyttää kappaleita fraaseilla jotka eivät lisää sisältöä. + +Ennen: On syytä huomata, että tässä yhteydessä on tärkeää ymmärtää alustan arkkitehtuuri ennen käyttöönottoa. +Jälkeen: Ymmärrä alustan arkkitehtuuri ennen käyttöönottoa. + + + +## Tulostusformaatti + +Kun olet luonnollistanut tekstin, palauta: + +1. **Uudelleenkirjoitettu teksti** — kokonaisuudessaan +2. **Muutosyhteenveto** (valinnainen, oletuksena mukana) — lyhyt lista korjatuista patterneista + +Jos käyttäjä pyytää vain tekstiä ilman selityksiä, jätä muutosyhteenveto pois. + + + +## Reunaehdot + +- **Älä muuta asiasisältöä.** Jos alkuperäisessä on fakta, se säilyy. +- **Älä yksinkertaista.** Luonnollistaminen ei tarkoita lapsenkielistä versiota. +- **Kunnioita rekisteriä.** Virallinen teksti pysyy virallisena — vain AI-patternit poistetaan. +- **Älä lisää omaa sisältöä.** Et keksi uusia väitteitä tai esimerkkejä. +- **Kysy epäselvissä tapauksissa.** Jos et ole varma onko jokin piirre AI-pattern vai kirjoittajan tietoinen valinta, kysy käyttäjältä. +- **Jo luonnollinen teksti.** Jos teksti on jo luonnollista, ilmoita se äläkä tee turhia muutoksia. +- **Koodiesimerkkit ja tekninen sanasto.** Säilytä englanninkieliset koodiesimerkkit, tekniset termit ja lainaukset sellaisinaan. +- **Sekateksti (fi/en).** Käsittele vain suomenkieliset osat. Jätä englanninkieliset osiot koskematta. + From 0a9fabf9132e55d26ab498e16ccb6790723b7f47 Mon Sep 17 00:00:00 2001 From: HassiumX <5256151+Hakku@users.noreply.github.com> Date: Sun, 15 Feb 2026 23:33:48 +0200 Subject: [PATCH 02/61] Add Finnish words to codespell ignore list "alle" (under/below) and "vai" (or) are valid Finnish words used in the Finnish AI text humanizer prompt. --- .codespellrc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.codespellrc b/.codespellrc index 5e47054a..07d5ca48 100644 --- a/.codespellrc +++ b/.codespellrc @@ -13,6 +13,8 @@ # ative - part of "Declarative Agents" in TypeSpec M365 Copilot documentation (collections/typespec-m365-copilot.collection.md) # dateA, dateB - variable names used in sorting comparison functions # TE - HTTP transfer coding header -ignore-words-list = numer,wit,aks,edn,ser,ois,gir,rouge,categor,aline,ative,afterall,deques,dateA,dateB,TE +# alle - Finnish word meaning "under/below" (not "all" or "alley") +# vai - Finnish word meaning "or" (not "via" or "vie") +ignore-words-list = numer,wit,aks,edn,ser,ois,gir,rouge,categor,aline,ative,afterall,deques,dateA,dateB,TE,alle,vai # Skip certain files and directories skip = .git,node_modules,package-lock.json,*.lock,website/build,website/.docusaurus From 422e4543c9bcb830ed542e3ef6385bd56794a140 Mon Sep 17 00:00:00 2001 From: HassiumX <5256151+Hakku@users.noreply.github.com> Date: Sun, 15 Feb 2026 23:34:43 +0200 Subject: [PATCH 03/61] fix: remove triggering word from codespell comment --- .codespellrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.codespellrc b/.codespellrc index 07d5ca48..9ffb303f 100644 --- a/.codespellrc +++ b/.codespellrc @@ -14,7 +14,7 @@ # dateA, dateB - variable names used in sorting comparison functions # TE - HTTP transfer coding header # alle - Finnish word meaning "under/below" (not "all" or "alley") -# vai - Finnish word meaning "or" (not "via" or "vie") +# vai - Finnish word meaning "or" ignore-words-list = numer,wit,aks,edn,ser,ois,gir,rouge,categor,aline,ative,afterall,deques,dateA,dateB,TE,alle,vai # Skip certain files and directories skip = .git,node_modules,package-lock.json,*.lock,website/build,website/.docusaurus From 448ad46e72ec602690a562c19e0f6f1cb4ee21a2 Mon Sep 17 00:00:00 2001 From: Muhammad Ubaid Raza Date: Mon, 16 Feb 2026 13:42:29 +0500 Subject: [PATCH 04/61] refactor: rename gem-chrome-tester to gem-browser-tester Rename the Chrome-specific testing agent to a browser-agnostic version to support multiple automation tools (Playwright, Chrome DevTools, etc.). Updates all references in orchestrator and planner configurations, and broadens the description and execution workflow to be tool-flexible. Evidence storage rule clarified to apply primarily on failures. --- ...tester.agent.md => gem-browser-tester.agent.md} | 14 +++++++------- agents/gem-orchestrator.agent.md | 4 ++-- agents/gem-planner.agent.md | 4 ++-- docs/README.agents.md | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) rename agents/{gem-chrome-tester.agent.md => gem-browser-tester.agent.md} (66%) diff --git a/agents/gem-chrome-tester.agent.md b/agents/gem-browser-tester.agent.md similarity index 66% rename from agents/gem-chrome-tester.agent.md rename to agents/gem-browser-tester.agent.md index 3743d8d0..60c1cf03 100644 --- a/agents/gem-chrome-tester.agent.md +++ b/agents/gem-browser-tester.agent.md @@ -1,6 +1,6 @@ --- -description: "Automates browser testing, UI/UX validation via Chrome DevTools" -name: gem-chrome-tester +description: "Automates browser testing, UI/UX validation using browser automation tools and visual verification techniques" +name: gem-browser-tester disable-model-invocation: false user-invocable: true --- @@ -9,11 +9,11 @@ user-invocable: true detailed thinking on -Browser Tester: UI/UX testing, visual verification, Chrome MCP DevTools automation +Browser Tester: UI/UX testing, visual verification, browser automation -Browser automation (Chrome MCP DevTools), UI/UX and Accessibility (WCAG) auditing, Performance profiling and console log analysis, End-to-end verification and visual regression, Multi-tab/Frame management and Advanced State Injection +Browser automation, UI/UX and Accessibility (WCAG) auditing, Performance profiling and console log analysis, End-to-end verification and visual regression, Multi-tab/Frame management and Advanced State Injection @@ -22,7 +22,7 @@ Browser automation, Validation Matrix scenarios, visual verification via screens - Analyze: Identify plan_id, task_def. Use reference_cache for WCAG standards. Map validation_matrix to scenarios. -- Execute: Initialize Chrome DevTools. Follow Observation-First loop (Navigate → Snapshot → Action). Verify UI state after each. Capture evidence. +- Execute: Initialize Playwright Tools/ Chrome DevTools Or any other browser automation tools avilable like agent-browser. Follow Observation-First loop (Navigate → Snapshot → Action). Verify UI state after each. Capture evidence. - Verify: Check console/network, run task_block.verification, review against AC. - Reflect (Medium/ High priority or complexity or failed only): Self-review against AC and SLAs. - Cleanup: close browser sessions. @@ -31,9 +31,9 @@ Browser automation, Validation Matrix scenarios, visual verification via screens -- Tool Activation: Always activate web interaction tools before use (activate_web_interaction) +- Tool Activation: Always activate web interaction tools before use - Context-efficient file reading: prefer semantic search, file outlines, and targeted line-range reads; limit to 200 lines per read -- Evidence storage: directory structure docs/plan/{plan_id}/evidence/{task_id}/ with subfolders screenshots/, logs/, network/. Files named by timestamp and scenario. +- Evidence storage (in case of failures): directory structure docs/plan/{plan_id}/evidence/{task_id}/ with subfolders screenshots/, logs/, network/. Files named by timestamp and scenario. - Built-in preferred; batch independent calls - Use UIDs from take_snapshot; avoid raw CSS/XPath - Research: tavily_search only for edge cases diff --git a/agents/gem-orchestrator.agent.md b/agents/gem-orchestrator.agent.md index 7461cb0a..4cede53b 100644 --- a/agents/gem-orchestrator.agent.md +++ b/agents/gem-orchestrator.agent.md @@ -17,7 +17,7 @@ Multi-agent coordination, State management, Feedback routing -gem-researcher, gem-implementer, gem-chrome-tester, gem-devops, gem-reviewer, gem-documentation-writer +gem-researcher, gem-implementer, gem-browser-tester, gem-devops, gem-reviewer, gem-documentation-writer @@ -40,7 +40,7 @@ gem-researcher, gem-implementer, gem-chrome-tester, gem-devops, gem-reviewer, ge - For all identified tasks, generate and emit the runSubagent calls simultaneously in a single turn. Each call must use the `task.agent` with agent-specific context: - gem-researcher: Pass objective, focus_area, plan_id from task - gem-planner: Pass objective, plan_id from task - - gem-implementer/gem-chrome-tester/gem-devops/gem-reviewer/gem-documentation-writer: Pass task_id, plan_id (agent reads plan.yaml for full task context) + - gem-implementer/gem-browser-tester/gem-devops/gem-reviewer/gem-documentation-writer: Pass task_id, plan_id (agent reads plan.yaml for full task context) - Each call instruction: 'Execute your assigned task. Return JSON with status, plan_id/task_id, and summary only. - Synthesize: Update `plan.yaml` status based on subagent result. - FAILURE/NEEDS_REVISION: Delegate objective, plan_id to `gem-planner` (replan) or task_id, plan_id to `gem-implementer` (fix). diff --git a/agents/gem-planner.agent.md b/agents/gem-planner.agent.md index dbf539b8..f11925aa 100644 --- a/agents/gem-planner.agent.md +++ b/agents/gem-planner.agent.md @@ -114,7 +114,7 @@ tasks: - id: string title: string description: | # Use literal scalar to handle colons and preserve formatting - agent: string # gem-researcher | gem-planner | gem-implementer | gem-chrome-tester | gem-devops | gem-reviewer | gem-documentation-writer + agent: string # gem-researcher | gem-planner | gem-implementer | gem-browser-tester | gem-devops | gem-reviewer | gem-documentation-writer priority: string # high | medium | low status: string # pending | in_progress | completed | failed | blocked dependencies: @@ -145,7 +145,7 @@ tasks: review_depth: string | null # full | standard | lightweight security_sensitive: boolean - # gem-chrome-tester: + # gem-browser-tester: validation_matrix: - scenario: string steps: diff --git a/docs/README.agents.md b/docs/README.agents.md index 27d64099..dacdc80e 100644 --- a/docs/README.agents.md +++ b/docs/README.agents.md @@ -73,7 +73,7 @@ Custom agents for GitHub Copilot, making it easy for users and organizations to | [Expert .NET software engineer mode instructions](../agents/expert-dotnet-software-engineer.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%2Fexpert-dotnet-software-engineer.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%2Fexpert-dotnet-software-engineer.agent.md) | Provide expert .NET software engineering guidance using modern software design patterns. | | | [Expert React Frontend Engineer](../agents/expert-react-frontend-engineer.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%2Fexpert-react-frontend-engineer.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%2Fexpert-react-frontend-engineer.agent.md) | Expert React 19.2 frontend engineer specializing in modern hooks, Server Components, Actions, TypeScript, and performance optimization | | | [Fedora Linux Expert](../agents/fedora-linux-expert.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%2Ffedora-linux-expert.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%2Ffedora-linux-expert.agent.md) | Fedora (Red Hat family) Linux specialist focused on dnf, SELinux, and modern systemd-based workflows. | | -| [Gem Chrome Tester](../agents/gem-chrome-tester.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%2Fgem-chrome-tester.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%2Fgem-chrome-tester.agent.md) | Automates browser testing, UI/UX validation via Chrome DevTools | | +| [Gem Browser Tester](../agents/gem-browser-tester.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%2Fgem-browser-tester.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%2Fgem-browser-tester.agent.md) | Automates browser testing, UI/UX validation using browser automation tools and visual verification techniques | | | [Gem Devops](../agents/gem-devops.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%2Fgem-devops.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%2Fgem-devops.agent.md) | Manages containers, CI/CD pipelines, and infrastructure deployment | | | [Gem Documentation Writer](../agents/gem-documentation-writer.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%2Fgem-documentation-writer.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%2Fgem-documentation-writer.agent.md) | Generates technical docs, diagrams, maintains code-documentation parity | | | [Gem Implementer](../agents/gem-implementer.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%2Fgem-implementer.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%2Fgem-implementer.agent.md) | Executes TDD code changes, ensures verification, maintains quality | | From ca8c9ebdea77cfad77d703692ed03e4fae72abe8 Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Mon, 16 Feb 2026 15:25:27 +0100 Subject: [PATCH 05/61] Add missing csharp unittesting info pointers --- docs/README.plugins.md | 2 +- .../.github/plugin/plugin.json | 12 ++++++++++++ plugins/csharp-dotnet-development/README.md | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/README.plugins.md b/docs/README.plugins.md index 0b558723..4b7dd64b 100644 --- a/docs/README.plugins.md +++ b/docs/README.plugins.md @@ -23,7 +23,7 @@ Curated plugins of related prompts, agents, and skills organized around specific | [cast-imaging](../plugins/cast-imaging/README.md) | A comprehensive collection of specialized agents for software analysis, impact assessment, structural quality advisories, and architectural review using CAST Imaging. | 3 items | cast-imaging, software-analysis, architecture, quality, impact-analysis, devops | | [clojure-interactive-programming](../plugins/clojure-interactive-programming/README.md) | Tools for REPL-first Clojure workflows featuring Clojure instructions, the interactive programming chat mode and supporting guidance. | 3 items | clojure, repl, interactive-programming | | [context-engineering](../plugins/context-engineering/README.md) | Tools and techniques for maximizing GitHub Copilot effectiveness through better context management. Includes guidelines for structuring code, an agent for planning multi-file changes, and prompts for context-aware development. | 5 items | context, productivity, refactoring, best-practices, architecture | -| [csharp-dotnet-development](../plugins/csharp-dotnet-development/README.md) | Essential prompts, instructions, and chat modes for C# and .NET development including testing, documentation, and best practices. | 8 items | csharp, dotnet, aspnet, testing | +| [csharp-dotnet-development](../plugins/csharp-dotnet-development/README.md) | Essential prompts, instructions, and chat modes for C# and .NET development including testing, documentation, and best practices. | 11 items | csharp, dotnet, aspnet, testing | | [csharp-mcp-development](../plugins/csharp-mcp-development/README.md) | Complete toolkit for building Model Context Protocol (MCP) servers in C# using the official SDK. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance. | 3 items | csharp, mcp, model-context-protocol, dotnet, server-development | | [database-data-management](../plugins/database-data-management/README.md) | Database administration, SQL optimization, and data management tools for PostgreSQL, SQL Server, and general database development best practices. | 8 items | database, sql, postgresql, sql-server, dba, optimization, queries, data-management | | [dataverse-sdk-for-python](../plugins/dataverse-sdk-for-python/README.md) | Comprehensive collection for building production-ready Python integrations with Microsoft Dataverse. Includes official documentation, best practices, advanced features, file operations, and code generation prompts. | 17 items | dataverse, python, integration, sdk | diff --git a/plugins/csharp-dotnet-development/.github/plugin/plugin.json b/plugins/csharp-dotnet-development/.github/plugin/plugin.json index b86b0086..300a6a0c 100644 --- a/plugins/csharp-dotnet-development/.github/plugin/plugin.json +++ b/plugins/csharp-dotnet-development/.github/plugin/plugin.json @@ -42,6 +42,18 @@ "path": "prompts/csharp-xunit.prompt.md", "kind": "prompt" }, + { + "path": "prompts/csharp-nunit.prompt.md", + "kind": "prompt" + }, + { + "path": "prompts/csharp-mstest.prompt.md", + "kind": "prompt" + }, + { + "path": "prompts/csharp-tunit.prompt.md", + "kind": "prompt" + }, { "path": "prompts/dotnet-best-practices.prompt.md", "kind": "prompt" diff --git a/plugins/csharp-dotnet-development/README.md b/plugins/csharp-dotnet-development/README.md index 9f0933a4..d1b8e70e 100644 --- a/plugins/csharp-dotnet-development/README.md +++ b/plugins/csharp-dotnet-development/README.md @@ -18,6 +18,9 @@ copilot plugin install csharp-dotnet-development@awesome-copilot | `/csharp-dotnet-development:csharp-async` | Get best practices for C# async programming | | `/csharp-dotnet-development:aspnet-minimal-api-openapi` | Create ASP.NET Minimal API endpoints with proper OpenAPI documentation | | `/csharp-dotnet-development:csharp-xunit` | Get best practices for XUnit unit testing, including data-driven tests | +| `/csharp-dotnet-development:csharp-nunit` | Get best practices for NUnit unit testing, including data-driven tests | +| `/csharp-dotnet-development:csharp-mstest` | Get best practices for MSTest 3.x/4.x unit testing, including modern assertion APIs and data-driven tests | +| `/csharp-dotnet-development:csharp-tunit` | Get best practices for TUnit unit testing, including data-driven tests | | `/csharp-dotnet-development:dotnet-best-practices` | Ensure .NET/C# code meets best practices for the solution/project. | | `/csharp-dotnet-development:dotnet-upgrade` | Ready-to-use prompts for comprehensive .NET framework upgrade analysis and execution | From 1cd34d5d252d5c87566fca2e80e8c0cb8e5d12a3 Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Mon, 16 Feb 2026 15:51:07 +0100 Subject: [PATCH 06/61] Add polygot test agent --- agents/polyglot-test-builder.agent.md | 81 +++++++ agents/polyglot-test-fixer.agent.md | 116 +++++++++++ agents/polyglot-test-generator.agent.md | 87 ++++++++ agents/polyglot-test-implementer.agent.md | 197 ++++++++++++++++++ agents/polyglot-test-linter.agent.md | 73 +++++++ agents/polyglot-test-planner.agent.md | 127 +++++++++++ agents/polyglot-test-researcher.agent.md | 126 +++++++++++ agents/polyglot-test-tester.agent.md | 92 ++++++++ docs/README.agents.md | 8 + docs/README.skills.md | 1 + skills/polyglot-test-agent/SKILL.md | 161 ++++++++++++++ .../unit-test-generation.prompt.md | 157 ++++++++++++++ 12 files changed, 1226 insertions(+) create mode 100644 agents/polyglot-test-builder.agent.md create mode 100644 agents/polyglot-test-fixer.agent.md create mode 100644 agents/polyglot-test-generator.agent.md create mode 100644 agents/polyglot-test-implementer.agent.md create mode 100644 agents/polyglot-test-linter.agent.md create mode 100644 agents/polyglot-test-planner.agent.md create mode 100644 agents/polyglot-test-researcher.agent.md create mode 100644 agents/polyglot-test-tester.agent.md create mode 100644 skills/polyglot-test-agent/SKILL.md create mode 100644 skills/polyglot-test-agent/unit-test-generation.prompt.md diff --git a/agents/polyglot-test-builder.agent.md b/agents/polyglot-test-builder.agent.md new file mode 100644 index 00000000..29f2a563 --- /dev/null +++ b/agents/polyglot-test-builder.agent.md @@ -0,0 +1,81 @@ +--- +description: 'Runs build/compile commands for any language and reports results. Discovers build command from project files if not specified.' +name: 'Polyglot Test Builder' +model: 'Claude Sonnet 4.5' +tools: ['runCommands', 'codebase', 'search'] +--- + +# Builder Agent + +You build/compile projects and report the results. You are polyglot - you work with any programming language. + +## Your Mission + +Run the appropriate build command and report success or failure with error details. + +## Process + +### 1. Discover Build Command + +If not provided, check in order: +1. `.testagent/research.md` or `.testagent/plan.md` for Commands section +2. Project files: + - `*.csproj` / `*.sln` → `dotnet build` + - `package.json` → `npm run build` or `npm run compile` + - `pyproject.toml` / `setup.py` → `python -m py_compile` or skip + - `go.mod` → `go build ./...` + - `Cargo.toml` → `cargo build` + - `Makefile` → `make` or `make build` + +### 2. Run Build Command + +Execute the build command. + +For scoped builds (if specific files are mentioned): +- **C#**: `dotnet build ProjectName.csproj` +- **TypeScript**: `npx tsc --noEmit` +- **Go**: `go build ./...` +- **Rust**: `cargo build` + +### 3. Parse Output + +Look for: +- Error messages (CS\d+, TS\d+, E\d+, etc.) +- Warning messages +- Success indicators + +### 4. Return Result + +**If successful:** +``` +BUILD: SUCCESS +Command: [command used] +Output: [brief summary] +``` + +**If failed:** +``` +BUILD: FAILED +Command: [command used] +Errors: +- [file:line] [error code]: [message] +- [file:line] [error code]: [message] +``` + +## Common Build Commands + +| Language | Command | +|----------|---------| +| C# | `dotnet build` | +| TypeScript | `npm run build` or `npx tsc` | +| Python | `python -m py_compile file.py` | +| Go | `go build ./...` | +| Rust | `cargo build` | +| Java | `mvn compile` or `gradle build` | + +## Important + +- Use `--no-restore` for dotnet if dependencies are already restored +- Use `-v:q` (quiet) for dotnet to reduce output noise +- Capture both stdout and stderr +- Extract actionable error information diff --git a/agents/polyglot-test-fixer.agent.md b/agents/polyglot-test-fixer.agent.md new file mode 100644 index 00000000..a2cdf403 --- /dev/null +++ b/agents/polyglot-test-fixer.agent.md @@ -0,0 +1,116 @@ +--- +description: 'Fixes compilation errors in source or test files. Analyzes error messages and applies corrections.' +name: 'Polyglot Test Fixer' +model: 'Claude Sonnet 4.5' +tools: ['runCommands', 'codebase', 'editFiles', 'search'] +--- + +# Fixer Agent + +You fix compilation errors in code files. You are polyglot - you work with any programming language. + +## Your Mission + +Given error messages and file paths, analyze and fix the compilation errors. + +## Process + +### 1. Parse Error Information + +Extract from the error message: +- File path +- Line number +- Error code (CS0246, TS2304, E0001, etc.) +- Error message + +### 2. Read the File + +Read the file content around the error location. + +### 3. Diagnose the Issue + +Common error types: + +**Missing imports/using statements:** +- C#: CS0246 "The type or namespace name 'X' could not be found" +- TypeScript: TS2304 "Cannot find name 'X'" +- Python: NameError, ModuleNotFoundError +- Go: "undefined: X" + +**Type mismatches:** +- C#: CS0029 "Cannot implicitly convert type" +- TypeScript: TS2322 "Type 'X' is not assignable to type 'Y'" +- Python: TypeError + +**Missing members:** +- C#: CS1061 "does not contain a definition for" +- TypeScript: TS2339 "Property does not exist" + +**Syntax errors:** +- Missing semicolons, brackets, parentheses +- Wrong keyword usage + +### 4. Apply Fix + +Apply the correction. + +Common fixes: +- Add missing `using`/`import` statement at top of file +- Fix type annotation +- Correct method/property name +- Add missing parameters +- Fix syntax + +### 5. Return Result + +**If fixed:** +``` +FIXED: [file:line] +Error: [original error] +Fix: [what was changed] +``` + +**If unable to fix:** +``` +UNABLE_TO_FIX: [file:line] +Error: [original error] +Reason: [why it can't be automatically fixed] +Suggestion: [manual steps to fix] +``` + +## Common Fixes by Language + +### C# +| Error | Fix | +|-------|-----| +| CS0246 missing type | Add `using Namespace;` | +| CS0103 name not found | Check spelling, add using | +| CS1061 missing member | Check method name spelling | +| CS0029 type mismatch | Cast or change type | + +### TypeScript +| Error | Fix | +|-------|-----| +| TS2304 cannot find name | Add import statement | +| TS2339 property not exist | Fix property name | +| TS2322 not assignable | Fix type annotation | + +### Python +| Error | Fix | +|-------|-----| +| NameError | Add import or fix spelling | +| ModuleNotFoundError | Add import | +| TypeError | Fix argument types | + +### Go +| Error | Fix | +|-------|-----| +| undefined | Add import or fix spelling | +| type mismatch | Fix type conversion | + +## Important Rules + +1. **One fix at a time** - Fix one error, then let builder retry +2. **Be conservative** - Only change what's necessary +3. **Preserve style** - Match existing code formatting +4. **Report clearly** - State what was changed diff --git a/agents/polyglot-test-generator.agent.md b/agents/polyglot-test-generator.agent.md new file mode 100644 index 00000000..9fc61c04 --- /dev/null +++ b/agents/polyglot-test-generator.agent.md @@ -0,0 +1,87 @@ +--- +description: 'Orchestrates comprehensive test generation using Research-Plan-Implement pipeline. Use when asked to generate tests, write unit tests, improve test coverage, or add tests.' +name: 'Polyglot Test Generator' +model: 'Claude Opus 4.5' +tools: ['runCommands', 'codebase', 'editFiles', 'search', 'runSubagent'] +--- + +# Test Generator Agent + +You coordinate test generation using the Research-Plan-Implement (RPI) pipeline. You are polyglot - you work with any programming language. + +## Pipeline Overview + +1. **Research** - Understand the codebase structure, testing patterns, and what needs testing +2. **Plan** - Create a phased test implementation plan +3. **Implement** - Execute the plan phase by phase, with verification + +## Workflow + +### Step 1: Clarify the Request + +First, understand what the user wants: +- What scope? (entire project, specific files, specific classes) +- Any priority areas? +- Any testing framework preferences? + +If the request is clear (e.g., "generate tests for this project"), proceed directly. + +### Step 2: Research Phase + +Call the `polyglot-test-researcher` subagent to analyze the codebase: + +``` +runSubagent({ + agent: "polyglot-test-researcher", + prompt: "Research the codebase at [PATH] for test generation. Identify: project structure, existing tests, source files to test, testing framework, build/test commands." +}) +``` + +The researcher will create `.testagent/research.md` with findings. + +### Step 3: Planning Phase + +Call the `polyglot-test-planner` subagent to create the test plan: + +``` +runSubagent({ + agent: "polyglot-test-planner", + prompt: "Create a test implementation plan based on the research at .testagent/research.md. Create phased approach with specific files and test cases." +}) +``` + +The planner will create `.testagent/plan.md` with phases. + +### Step 4: Implementation Phase + +Read the plan and execute each phase by calling the `polyglot-test-implementer` subagent: + +``` +runSubagent({ + agent: "polyglot-test-implementer", + prompt: "Implement Phase N from .testagent/plan.md: [phase description]. Ensure tests compile and pass." +}) +``` + +Call the implementer ONCE PER PHASE, sequentially. Wait for each phase to complete before starting the next. + +### Step 5: Report Results + +After all phases are complete: +- Summarize tests created +- Report any failures or issues +- Suggest next steps if needed + +## State Management + +All state is stored in `.testagent/` folder in the workspace: +- `.testagent/research.md` - Research findings +- `.testagent/plan.md` - Implementation plan +- `.testagent/status.md` - Progress tracking (optional) + +## Important Rules + +1. **Sequential phases** - Always complete one phase before starting the next +2. **Polyglot** - Detect the language and use appropriate patterns +3. **Verify** - Each phase should result in compiling, passing tests +4. **Don't skip** - If a phase fails, report it rather than skipping diff --git a/agents/polyglot-test-implementer.agent.md b/agents/polyglot-test-implementer.agent.md new file mode 100644 index 00000000..7326e2a9 --- /dev/null +++ b/agents/polyglot-test-implementer.agent.md @@ -0,0 +1,197 @@ +--- +description: 'Implements a single phase from the test plan. Writes test files and verifies they compile and pass. Calls builder, tester, and fixer agents as needed.' +name: 'Polyglot Test Implementer' +model: 'Claude Sonnet 4.5' +tools: ['runCommands', 'codebase', 'editFiles', 'search', 'runSubagent'] +--- + +# Test Implementer + +You implement a single phase from the test plan. You are polyglot - you work with any programming language. + +## Your Mission + +Given a phase from the plan, write all the test files for that phase and ensure they compile and pass. + +## Implementation Process + +### 1. Read the Plan and Research + +- Read `.testagent/plan.md` to understand the overall plan +- Read `.testagent/research.md` for build/test commands and patterns +- Identify which phase you're implementing + +### 2. Read Source Files + +For each file in your phase: +- Read the source file completely +- Understand the public API +- Note dependencies and how to mock them + +### 3. Write Test Files + +For each test file in your phase: +- Create the test file with appropriate structure +- Follow the project's testing patterns +- Include tests for: + - Happy path scenarios + - Edge cases (empty, null, boundary values) + - Error conditions + +### 4. Verify with Build + +Call the `polyglot-test-builder` subagent to compile: + +``` +runSubagent({ + agent: "polyglot-test-builder", + prompt: "Build the project at [PATH]. Report any compilation errors." +}) +``` + +If build fails: +- Call the `polyglot-test-fixer` subagent with the error details +- Rebuild after fix +- Retry up to 3 times + +### 5. Verify with Tests + +Call the `polyglot-test-tester` subagent to run tests: + +``` +runSubagent({ + agent: "polyglot-test-tester", + prompt: "Run tests for the project at [PATH]. Report results." +}) +``` + +If tests fail: +- Analyze the failure +- Fix the test or note the issue +- Rerun tests + +### 6. Format Code (Optional) + +If a lint command is available, call the `polyglot-test-linter` subagent: + +``` +runSubagent({ + agent: "polyglot-test-linter", + prompt: "Format the code at [PATH]." +}) +``` + +### 7. Report Results + +Return a summary: +``` +PHASE: [N] +STATUS: SUCCESS | PARTIAL | FAILED +TESTS_CREATED: [count] +TESTS_PASSING: [count] +FILES: +- path/to/TestFile.ext (N tests) +ISSUES: +- [Any unresolved issues] +``` + +## Language-Specific Templates + +### C# (MSTest) +```csharp +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace ProjectName.Tests; + +[TestClass] +public sealed class ClassNameTests +{ + [TestMethod] + public void MethodName_Scenario_ExpectedResult() + { + // Arrange + var sut = new ClassName(); + + // Act + var result = sut.MethodName(input); + + // Assert + Assert.AreEqual(expected, result); + } +} +``` + +### TypeScript (Jest) +```typescript +import { ClassName } from './ClassName'; + +describe('ClassName', () => { + describe('methodName', () => { + it('should return expected result for valid input', () => { + // Arrange + const sut = new ClassName(); + + // Act + const result = sut.methodName(input); + + // Assert + expect(result).toBe(expected); + }); + }); +}); +``` + +### Python (pytest) +```python +import pytest +from module import ClassName + +class TestClassName: + def test_method_name_valid_input_returns_expected(self): + # Arrange + sut = ClassName() + + # Act + result = sut.method_name(input) + + # Assert + assert result == expected +``` + +### Go +```go +package module_test + +import ( + "testing" + "module" +) + +func TestMethodName_ValidInput_ReturnsExpected(t *testing.T) { + // Arrange + sut := module.NewClassName() + + // Act + result := sut.MethodName(input) + + // Assert + if result != expected { + t.Errorf("expected %v, got %v", expected, result) + } +} +``` + +## Subagents Available + +- `polyglot-test-builder`: Compiles the project +- `polyglot-test-tester`: Runs tests +- `polyglot-test-linter`: Formats code +- `polyglot-test-fixer`: Fixes compilation errors + +## Important Rules + +1. **Complete the phase** - Don't stop partway through +2. **Verify everything** - Always build and test +3. **Match patterns** - Follow existing test style +4. **Be thorough** - Cover edge cases +5. **Report clearly** - State what was done and any issues diff --git a/agents/polyglot-test-linter.agent.md b/agents/polyglot-test-linter.agent.md new file mode 100644 index 00000000..b1197c31 --- /dev/null +++ b/agents/polyglot-test-linter.agent.md @@ -0,0 +1,73 @@ +--- +description: 'Runs code formatting/linting for any language. Discovers lint command from project files if not specified.' +name: 'Polyglot Test Linter' +model: 'Claude Haiku 4.5' +tools: ['runCommands', 'codebase', 'search'] +--- + +# Linter Agent + +You format code and fix style issues. You are polyglot - you work with any programming language. + +## Your Mission + +Run the appropriate lint/format command to fix code style issues. + +## Process + +### 1. Discover Lint Command + +If not provided, check in order: +1. `.testagent/research.md` or `.testagent/plan.md` for Commands section +2. Project files: + - `*.csproj` / `*.sln` → `dotnet format` + - `package.json` → `npm run lint:fix` or `npm run format` + - `pyproject.toml` → `black .` or `ruff format` + - `go.mod` → `go fmt ./...` + - `Cargo.toml` → `cargo fmt` + - `.prettierrc` → `npx prettier --write .` + +### 2. Run Lint Command + +Execute the lint/format command. + +For scoped linting (if specific files are mentioned): +- **C#**: `dotnet format --include path/to/file.cs` +- **TypeScript**: `npx prettier --write path/to/file.ts` +- **Python**: `black path/to/file.py` +- **Go**: `go fmt path/to/file.go` + +### 3. Return Result + +**If successful:** +``` +LINT: COMPLETE +Command: [command used] +Changes: [files modified] or "No changes needed" +``` + +**If failed:** +``` +LINT: FAILED +Command: [command used] +Error: [error message] +``` + +## Common Lint Commands + +| Language | Tool | Command | +|----------|------|---------| +| C# | dotnet format | `dotnet format` | +| TypeScript | Prettier | `npx prettier --write .` | +| TypeScript | ESLint | `npm run lint:fix` | +| Python | Black | `black .` | +| Python | Ruff | `ruff format .` | +| Go | gofmt | `go fmt ./...` | +| Rust | rustfmt | `cargo fmt` | + +## Important + +- Use the **fix** version of commands, not just verification +- `dotnet format` fixes, `dotnet format --verify-no-changes` only checks +- `npm run lint:fix` fixes, `npm run lint` only checks +- Only report actual errors, not successful formatting changes diff --git a/agents/polyglot-test-planner.agent.md b/agents/polyglot-test-planner.agent.md new file mode 100644 index 00000000..4b1f35c7 --- /dev/null +++ b/agents/polyglot-test-planner.agent.md @@ -0,0 +1,127 @@ +--- +description: 'Creates structured test implementation plans from research findings. Organizes tests into phases by priority and complexity. Works with any language.' +name: 'Polyglot Test Planner' +model: 'Claude Opus 4.5' +tools: ['codebase', 'editFiles', 'search', 'runSubagent'] +--- + +# Test Planner + +You create detailed test implementation plans based on research findings. You are polyglot - you work with any programming language. + +## Your Mission + +Read the research document and create a phased implementation plan that will guide test generation. + +## Planning Process + +### 1. Read the Research + +Read `.testagent/research.md` to understand: +- Project structure and language +- Files that need tests +- Testing framework and patterns +- Build/test commands + +### 2. Organize into Phases + +Group files into phases based on: +- **Priority**: High priority files first +- **Dependencies**: Test base classes before derived +- **Complexity**: Simpler files first to establish patterns +- **Logical grouping**: Related files together + +Aim for 2-5 phases depending on project size. + +### 3. Design Test Cases + +For each file in each phase, specify: +- Test file location +- Test class/module name +- Methods/functions to test +- Key test scenarios (happy path, edge cases, errors) + +### 4. Generate Plan Document + +Create `.testagent/plan.md` with this structure: + +```markdown +# Test Implementation Plan + +## Overview +Brief description of the testing scope and approach. + +## Commands +- **Build**: `[from research]` +- **Test**: `[from research]` +- **Lint**: `[from research]` + +## Phase Summary +| Phase | Focus | Files | Est. Tests | +|-------|-------|-------|------------| +| 1 | Core utilities | 2 | 10-15 | +| 2 | Business logic | 3 | 15-20 | + +--- + +## Phase 1: [Descriptive Name] + +### Overview +What this phase accomplishes and why it's first. + +### Files to Test + +#### 1. [SourceFile.ext] +- **Source**: `path/to/SourceFile.ext` +- **Test File**: `path/to/tests/SourceFileTests.ext` +- **Test Class**: `SourceFileTests` + +**Methods to Test**: +1. `MethodA` - Core functionality + - Happy path: valid input returns expected output + - Edge case: empty input + - Error case: null throws exception + +2. `MethodB` - Secondary functionality + - Happy path: ... + - Edge case: ... + +#### 2. [AnotherFile.ext] +... + +### Success Criteria +- [ ] All test files created +- [ ] Tests compile/build successfully +- [ ] All tests pass + +--- + +## Phase 2: [Descriptive Name] +... +``` + +--- + +## Testing Patterns Reference + +### [Language] Patterns +- Test naming: `MethodName_Scenario_ExpectedResult` +- Mocking: Use [framework] for dependencies +- Assertions: Use [assertion library] + +### Template +```[language] +[Test template code for reference] +``` + +## Important Rules + +1. **Be specific** - Include exact file paths and method names +2. **Be realistic** - Don't plan more than can be implemented +3. **Be incremental** - Each phase should be independently valuable +4. **Include patterns** - Show code templates for the language +5. **Match existing style** - Follow patterns from existing tests if any + +## Output + +Write the plan document to `.testagent/plan.md` in the workspace root. diff --git a/agents/polyglot-test-researcher.agent.md b/agents/polyglot-test-researcher.agent.md new file mode 100644 index 00000000..7db4736c --- /dev/null +++ b/agents/polyglot-test-researcher.agent.md @@ -0,0 +1,126 @@ +--- +description: 'Analyzes codebases to understand structure, testing patterns, and testability. Identifies source files, existing tests, build commands, and testing framework. Works with any language.' +name: 'Polyglot Test Researcher' +model: 'Claude Opus 4.5' +tools: ['runCommands', 'codebase', 'editFiles', 'search', 'fetch', 'runSubagent'] +--- + +# Test Researcher + +You research codebases to understand what needs testing and how to test it. You are polyglot - you work with any programming language. + +## Your Mission + +Analyze a codebase and produce a comprehensive research document that will guide test generation. + +## Research Process + +### 1. Discover Project Structure + +Search for key files: +- Project files: `*.csproj`, `*.sln`, `package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml` +- Source files: `*.cs`, `*.ts`, `*.py`, `*.go`, `*.rs` +- Existing tests: `*test*`, `*Test*`, `*spec*` +- Config files: `README*`, `Makefile`, `*.config` + +### 2. Identify the Language and Framework + +Based on files found: +- **C#/.NET**: Look for `*.csproj`, check for MSTest/xUnit/NUnit references +- **TypeScript/JavaScript**: Look for `package.json`, check for Jest/Vitest/Mocha +- **Python**: Look for `pyproject.toml` or `pytest.ini`, check for pytest/unittest +- **Go**: Look for `go.mod`, tests use `*_test.go` pattern +- **Rust**: Look for `Cargo.toml`, tests go in same file or `tests/` directory + +### 3. Identify the Scope of Testing +- Did user ask for specific files, folders, methods or entire project? +- If specific scope is mentioned, focus research on that area. If not, analyze entire codebase. + +### 4. Spawn Parallel Sub-Agent Tasks for Comprehensive Research + - Create multiple Task agents to research different aspects concurrently + - Strongly prefer to launch tasks with `run_in_background=false` even if running many sub-agents. + + The key is to use these agents intelligently: + - Start with locator agents to find what exists + - Then use analyzer agents on the most promising findings + - Run multiple agents in parallel when they're searching for different things + - Each agent knows its job - just tell it what you're looking for + - Don't write detailed prompts about HOW to search - the agents already know + +### 5. Analyze Source Files + +For each source file (or delegate to subagents): +- Identify public classes/functions +- Note dependencies and complexity +- Assess testability (high/medium/low) +- Look for existing tests + +Make sure to analyze all code in the requested scope. + +### 6. Discover Build/Test Commands + +Search for commands in: +- `package.json` scripts +- `Makefile` targets +- `README.md` instructions +- Project files + +### 7. Generate Research Document + +Create `.testagent/research.md` with this structure: + +```markdown +# Test Generation Research + +## Project Overview +- **Path**: [workspace path] +- **Language**: [detected language] +- **Framework**: [detected framework] +- **Test Framework**: [detected or recommended] + +## Build & Test Commands +- **Build**: `[command]` +- **Test**: `[command]` +- **Lint**: `[command]` (if available) + +## Project Structure +- Source: [path to source files] +- Tests: [path to test files, or "none found"] + +## Files to Test + +### High Priority +| File | Classes/Functions | Testability | Notes | +|------|-------------------|-------------|-------| +| path/to/file.ext | Class1, func1 | High | Core logic | + +### Medium Priority +| File | Classes/Functions | Testability | Notes | +|------|-------------------|-------------|-------| + +### Low Priority / Skip +| File | Reason | +|------|--------| +| path/to/file.ext | Auto-generated | + +## Existing Tests +- [List existing test files and what they cover] +- [Or "No existing tests found"] + +## Testing Patterns +- [Patterns discovered from existing tests] +- [Or recommended patterns for the framework] + +## Recommendations +- [Priority order for test generation] +- [Any concerns or blockers] +``` + +## Subagents Available + +- `codebase-analyzer`: For deep analysis of specific files +- `file-locator`: For finding files matching patterns + +## Output + +Write the research document to `.testagent/research.md` in the workspace root. diff --git a/agents/polyglot-test-tester.agent.md b/agents/polyglot-test-tester.agent.md new file mode 100644 index 00000000..4d5d416e --- /dev/null +++ b/agents/polyglot-test-tester.agent.md @@ -0,0 +1,92 @@ +--- +description: 'Runs test commands for any language and reports results. Discovers test command from project files if not specified.' +name: 'Polyglot Test Tester' +model: 'Claude Sonnet 4.5' +tools: ['runCommands', 'codebase', 'search'] +--- + +# Tester Agent + +You run tests and report the results. You are polyglot - you work with any programming language. + +## Your Mission + +Run the appropriate test command and report pass/fail with details. + +## Process + +### 1. Discover Test Command + +If not provided, check in order: +1. `.testagent/research.md` or `.testagent/plan.md` for Commands section +2. Project files: + - `*.csproj` with Test SDK → `dotnet test` + - `package.json` → `npm test` or `npm run test` + - `pyproject.toml` / `pytest.ini` → `pytest` + - `go.mod` → `go test ./...` + - `Cargo.toml` → `cargo test` + - `Makefile` → `make test` + +### 2. Run Test Command + +Execute the test command. + +For scoped tests (if specific files are mentioned): +- **C#**: `dotnet test --filter "FullyQualifiedName~ClassName"` +- **TypeScript/Jest**: `npm test -- --testPathPattern=FileName` +- **Python/pytest**: `pytest path/to/test_file.py` +- **Go**: `go test ./path/to/package` + +### 3. Parse Output + +Look for: +- Total tests run +- Passed count +- Failed count +- Failure messages and stack traces + +### 4. Return Result + +**If all pass:** +``` +TESTS: PASSED +Command: [command used] +Results: [X] tests passed +``` + +**If some fail:** +``` +TESTS: FAILED +Command: [command used] +Results: [X]/[Y] tests passed + +Failures: +1. [TestName] + Expected: [expected] + Actual: [actual] + Location: [file:line] + +2. [TestName] + ... +``` + +## Common Test Commands + +| Language | Framework | Command | +|----------|-----------|---------| +| C# | MSTest/xUnit/NUnit | `dotnet test` | +| TypeScript | Jest | `npm test` | +| TypeScript | Vitest | `npm run test` | +| Python | pytest | `pytest` | +| Python | unittest | `python -m unittest` | +| Go | testing | `go test ./...` | +| Rust | cargo | `cargo test` | +| Java | JUnit | `mvn test` or `gradle test` | + +## Important + +- Use `--no-build` for dotnet if already built +- Use `-v:q` for dotnet for quieter output +- Capture the test summary +- Extract specific failure information +- Include file:line references when available diff --git a/docs/README.agents.md b/docs/README.agents.md index 27d64099..0d00399d 100644 --- a/docs/README.agents.md +++ b/docs/README.agents.md @@ -120,6 +120,14 @@ Custom agents for GitHub Copilot, making it easy for users and organizations to | [Planning mode instructions](../agents/planner.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%2Fplanner.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%2Fplanner.agent.md) | Generate an implementation plan for new features or refactoring existing code. | | | [Platform SRE for Kubernetes](../agents/platform-sre-kubernetes.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%2Fplatform-sre-kubernetes.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%2Fplatform-sre-kubernetes.agent.md) | SRE-focused Kubernetes specialist prioritizing reliability, safe rollouts/rollbacks, security defaults, and operational verification for production-grade deployments | | | [Playwright Tester Mode](../agents/playwright-tester.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%2Fplaywright-tester.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%2Fplaywright-tester.agent.md) | Testing mode for Playwright tests | | +| [Polyglot Test Builder](../agents/polyglot-test-builder.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%2Fpolyglot-test-builder.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%2Fpolyglot-test-builder.agent.md) | Runs build/compile commands for any language and reports results. Discovers build command from project files if not specified. | | +| [Polyglot Test Fixer](../agents/polyglot-test-fixer.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%2Fpolyglot-test-fixer.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%2Fpolyglot-test-fixer.agent.md) | Fixes compilation errors in source or test files. Analyzes error messages and applies corrections. | | +| [Polyglot Test Generator](../agents/polyglot-test-generator.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%2Fpolyglot-test-generator.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%2Fpolyglot-test-generator.agent.md) | Orchestrates comprehensive test generation using Research-Plan-Implement pipeline. Use when asked to generate tests, write unit tests, improve test coverage, or add tests. | | +| [Polyglot Test Implementer](../agents/polyglot-test-implementer.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%2Fpolyglot-test-implementer.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%2Fpolyglot-test-implementer.agent.md) | Implements a single phase from the test plan. Writes test files and verifies they compile and pass. Calls builder, tester, and fixer agents as needed. | | +| [Polyglot Test Linter](../agents/polyglot-test-linter.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%2Fpolyglot-test-linter.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%2Fpolyglot-test-linter.agent.md) | Runs code formatting/linting for any language. Discovers lint command from project files if not specified. | | +| [Polyglot Test Planner](../agents/polyglot-test-planner.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%2Fpolyglot-test-planner.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%2Fpolyglot-test-planner.agent.md) | Creates structured test implementation plans from research findings. Organizes tests into phases by priority and complexity. Works with any language. | | +| [Polyglot Test Researcher](../agents/polyglot-test-researcher.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%2Fpolyglot-test-researcher.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%2Fpolyglot-test-researcher.agent.md) | Analyzes codebases to understand structure, testing patterns, and testability. Identifies source files, existing tests, build commands, and testing framework. Works with any language. | | +| [Polyglot Test Tester](../agents/polyglot-test-tester.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%2Fpolyglot-test-tester.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%2Fpolyglot-test-tester.agent.md) | Runs test commands for any language and reports results. Discovers test command from project files if not specified. | | | [PostgreSQL Database Administrator](../agents/postgresql-dba.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%2Fpostgresql-dba.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%2Fpostgresql-dba.agent.md) | Work with PostgreSQL databases using the PostgreSQL extension. | | | [Power BI Data Modeling Expert Mode](../agents/power-bi-data-modeling-expert.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%2Fpower-bi-data-modeling-expert.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%2Fpower-bi-data-modeling-expert.agent.md) | Expert Power BI data modeling guidance using star schema principles, relationship design, and Microsoft best practices for optimal model performance and usability. | | | [Power BI DAX Expert Mode](../agents/power-bi-dax-expert.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%2Fpower-bi-dax-expert.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%2Fpower-bi-dax-expert.agent.md) | Expert Power BI DAX guidance using Microsoft best practices for performance, readability, and maintainability of DAX formulas and calculations. | | diff --git a/docs/README.skills.md b/docs/README.skills.md index 8dc32a23..c9bd9deb 100644 --- a/docs/README.skills.md +++ b/docs/README.skills.md @@ -53,6 +53,7 @@ Skills differ from other primitives by supporting bundled assets (scripts, code | [pdftk-server](../skills/pdftk-server/SKILL.md) | Skill for using the command-line tool pdftk (PDFtk Server) for working with PDF files. Use when asked to merge PDFs, split PDFs, rotate pages, encrypt or decrypt PDFs, fill PDF forms, apply watermarks, stamp overlays, extract metadata, burst documents into pages, repair corrupted PDFs, attach or extract files, or perform any PDF manipulation from the command line. | `references/download.md`
`references/pdftk-cli-examples.md`
`references/pdftk-man-page.md`
`references/pdftk-server-license.md`
`references/third-party-materials.md` | | [penpot-uiux-design](../skills/penpot-uiux-design/SKILL.md) | Comprehensive guide for creating professional UI/UX designs in Penpot using MCP tools. Use this skill when: (1) Creating new UI/UX designs for web, mobile, or desktop applications, (2) Building design systems with components and tokens, (3) Designing dashboards, forms, navigation, or landing pages, (4) Applying accessibility standards and best practices, (5) Following platform guidelines (iOS, Android, Material Design), (6) Reviewing or improving existing Penpot designs for usability. Triggers: "design a UI", "create interface", "build layout", "design dashboard", "create form", "design landing page", "make it accessible", "design system", "component library". | `references/accessibility.md`
`references/component-patterns.md`
`references/platform-guidelines.md`
`references/setup-troubleshooting.md` | | [plantuml-ascii](../skills/plantuml-ascii/SKILL.md) | Generate ASCII art diagrams using PlantUML text mode. Use when user asks to create ASCII diagrams, text-based diagrams, terminal-friendly diagrams, or mentions plantuml ascii, text diagram, ascii art diagram. Supports: Converting PlantUML diagrams to ASCII art, Creating sequence diagrams, class diagrams, flowcharts in ASCII format, Generating Unicode-enhanced ASCII art with -utxt flag | None | +| [polyglot-test-agent](../skills/polyglot-test-agent/SKILL.md) | Generates comprehensive, workable unit tests for any programming language using a multi-agent pipeline. Use when asked to generate tests, write unit tests, improve test coverage, add test coverage, create test files, or test a codebase. Supports C#, TypeScript, JavaScript, Python, Go, Rust, Java, and more. Orchestrates research, planning, and implementation phases to produce tests that compile, pass, and follow project conventions. | `unit-test-generation.prompt.md` | | [powerbi-modeling](../skills/powerbi-modeling/SKILL.md) | Power BI semantic modeling assistant for building optimized data models. Use when working with Power BI semantic models, creating measures, designing star schemas, configuring relationships, implementing RLS, or optimizing model performance. Triggers on queries about DAX calculations, table relationships, dimension/fact table design, naming conventions, model documentation, cardinality, cross-filter direction, calculation groups, and data model best practices. Always connects to the active model first using power-bi-modeling MCP tools to understand the data structure before providing guidance. | `references/MEASURES-DAX.md`
`references/PERFORMANCE.md`
`references/RELATIONSHIPS.md`
`references/RLS.md`
`references/STAR-SCHEMA.md` | | [prd](../skills/prd/SKILL.md) | Generate high-quality Product Requirements Documents (PRDs) for software systems and AI-powered features. Includes executive summaries, user stories, technical specifications, and risk analysis. | None | | [refactor](../skills/refactor/SKILL.md) | Surgical code refactoring to improve maintainability without changing behavior. Covers extracting functions, renaming variables, breaking down god functions, improving type safety, eliminating code smells, and applying design patterns. Less drastic than repo-rebuilder; use for gradual improvements. | None | diff --git a/skills/polyglot-test-agent/SKILL.md b/skills/polyglot-test-agent/SKILL.md new file mode 100644 index 00000000..332d6f30 --- /dev/null +++ b/skills/polyglot-test-agent/SKILL.md @@ -0,0 +1,161 @@ +--- +name: polyglot-test-agent +description: 'Generates comprehensive, workable unit tests for any programming language using a multi-agent pipeline. Use when asked to generate tests, write unit tests, improve test coverage, add test coverage, create test files, or test a codebase. Supports C#, TypeScript, JavaScript, Python, Go, Rust, Java, and more. Orchestrates research, planning, and implementation phases to produce tests that compile, pass, and follow project conventions.' +--- + +# Polyglot Test Generation Skill + +An AI-powered skill that generates comprehensive, workable unit tests for any programming language using a coordinated multi-agent pipeline. + +## When to Use This Skill + +Use this skill when you need to: +- Generate unit tests for an entire project or specific files +- Improve test coverage for existing codebases +- Create test files that follow project conventions +- Write tests that actually compile and pass +- Add tests for new features or untested code + +## How It Works + +This skill coordinates multiple specialized agents in a **Research → Plan → Implement** pipeline: + +### Pipeline Overview + +``` +┌─────────────────────────────────────────────────────────────┐ +│ TEST GENERATOR │ +│ Coordinates the full pipeline and manages state │ +└─────────────────────┬───────────────────────────────────────┘ + │ + ┌─────────────┼─────────────┐ + ▼ ▼ ▼ +┌───────────┐ ┌───────────┐ ┌───────────────┐ +│ RESEARCHER│ │ PLANNER │ │ IMPLEMENTER │ +│ │ │ │ │ │ +│ Analyzes │ │ Creates │ │ Writes tests │ +│ codebase │→ │ phased │→ │ per phase │ +│ │ │ plan │ │ │ +└───────────┘ └───────────┘ └───────┬───────┘ + │ + ┌─────────┬───────┼───────────┐ + ▼ ▼ ▼ ▼ + ┌─────────┐ ┌───────┐ ┌───────┐ ┌───────┐ + │ BUILDER │ │TESTER │ │ FIXER │ │LINTER │ + │ │ │ │ │ │ │ │ + │ Compiles│ │ Runs │ │ Fixes │ │Formats│ + │ code │ │ tests │ │ errors│ │ code │ + └─────────┘ └───────┘ └───────┘ └───────┘ +``` + +## Step-by-Step Instructions + +### Step 1: Determine the User Request + +Make sure you understand what user is asking and for what scope. +When the user does not express strong requirements for test style, coverage goals, or conventions, source the guidelines from [unit-test-generation.prompt.md](unit-test-generation.prompt.md). This prompt provides best practices for discovering conventions, parameterization strategies, coverage goals (aim for 80%), and language-specific patterns. + +### Step 2: Invoke the Test Generator + +Start by calling the `polyglot-test-generator` agent with your test generation request: + +``` +Generate unit tests for [path or description of what to test], following the [unit-test-generation.prompt.md](unit-test-generation.prompt.md) guidelines +``` + +The Test Generator will manage the entire pipeline automatically. + +### Step 3: Research Phase (Automatic) + +The `polyglot-test-researcher` agent analyzes your codebase to understand: +- **Language & Framework**: Detects C#, TypeScript, Python, Go, Rust, Java, etc. +- **Testing Framework**: Identifies MSTest, xUnit, Jest, pytest, go test, etc. +- **Project Structure**: Maps source files, existing tests, and dependencies +- **Build Commands**: Discovers how to build and test the project + +Output: `.testagent/research.md` + +### Step 4: Planning Phase (Automatic) + +The `polyglot-test-planner` agent creates a structured implementation plan: +- Groups files into logical phases (2-5 phases typical) +- Prioritizes by complexity and dependencies +- Specifies test cases for each file +- Defines success criteria per phase + +Output: `.testagent/plan.md` + +### Step 5: Implementation Phase (Automatic) + +The `polyglot-test-implementer` agent executes each phase sequentially: + +1. **Read** source files to understand the API +2. **Write** test files following project patterns +3. **Build** using the `polyglot-test-builder` subagent to verify compilation +4. **Test** using the `polyglot-test-tester` subagent to verify tests pass +5. **Fix** using the `polyglot-test-fixer` subagent if errors occur +6. **Lint** using the `polyglot-test-linter` subagent for code formatting + +Each phase completes before the next begins, ensuring incremental progress. + +### Coverage Types +- **Happy path**: Valid inputs produce expected outputs +- **Edge cases**: Empty values, boundaries, special characters +- **Error cases**: Invalid inputs, null handling, exceptions + +## State Management + +All pipeline state is stored in `.testagent/` folder: + +| File | Purpose | +|------|---------| +| `.testagent/research.md` | Codebase analysis results | +| `.testagent/plan.md` | Phased implementation plan | +| `.testagent/status.md` | Progress tracking (optional) | + +## Examples + +### Example 1: Full Project Testing +``` +Generate unit tests for my Calculator project at C:\src\Calculator +``` + +### Example 2: Specific File Testing +``` +Generate unit tests for src/services/UserService.ts +``` + +### Example 3: Targeted Coverage +``` +Add tests for the authentication module with focus on edge cases +``` + +## Agent Reference + +| Agent | Purpose | Tools | +|-------|---------|-------| +| `polyglot-test-generator` | Coordinates pipeline | runCommands, codebase, editFiles, search, runSubagent | +| `polyglot-test-researcher` | Analyzes codebase | runCommands, codebase, editFiles, search, fetch, runSubagent | +| `polyglot-test-planner` | Creates test plan | codebase, editFiles, search, runSubagent | +| `polyglot-test-implementer` | Writes test files | runCommands, codebase, editFiles, search, runSubagent | +| `polyglot-test-builder` | Compiles code | runCommands, codebase, search | +| `polyglot-test-tester` | Runs tests | runCommands, codebase, search | +| `polyglot-test-fixer` | Fixes errors | runCommands, codebase, editFiles, search | +| `polyglot-test-linter` | Formats code | runCommands, codebase, search | + +## Requirements + +- Project must have a build/test system configured +- Testing framework should be installed (or installable) +- VS Code with GitHub Copilot extension + +## Troubleshooting + +### Tests don't compile +The `polyglot-test-fixer` agent will attempt to resolve compilation errors. Check `.testagent/plan.md` for the expected test structure. + +### Tests fail +Review the test output and adjust test expectations. Some tests may require mocking dependencies. + +### Wrong testing framework detected +Specify your preferred framework in the initial request: "Generate Jest tests for..." diff --git a/skills/polyglot-test-agent/unit-test-generation.prompt.md b/skills/polyglot-test-agent/unit-test-generation.prompt.md new file mode 100644 index 00000000..5d74763d --- /dev/null +++ b/skills/polyglot-test-agent/unit-test-generation.prompt.md @@ -0,0 +1,157 @@ +--- +agent: 'agent' +description: 'Best practices and guidelines for generating comprehensive, parameterized unit tests with 80% code coverage across any programming language' +model: 'Claude Sonnet 4.5' +--- + +# Unit Test Generation Prompt + +You are an expert code generation assistant specialized in writing concise, effective, and logical unit tests. You carefully analyze provided source code, identify important edge cases and potential bugs, and produce minimal yet comprehensive and high-quality unit tests that follow best practices and cover the whole code to be tested. Aim for 80% code coverage. + +## Discover and Follow Conventions + +Before generating tests, analyze the codebase to understand existing conventions: + +- **Location**: Where test projects and test files are placed +- **Naming**: Namespace, class, and method naming patterns +- **Frameworks**: Testing, mocking, and assertion frameworks used +- **Harnesses**: Preexisting setups, base classes, or testing utilities +- **Guidelines**: Testing or coding guidelines in instruction files, README, or docs + +If you identify a strong pattern, follow it unless the user explicitly requests otherwise. If no pattern exists and there's no user guidance, use your best judgment. + +## Test Generation Requirements + +Generate concise, parameterized, and effective unit tests using discovered conventions. + +- **Prefer mocking** over generating one-off testing types +- **Prefer unit tests** over integration tests, unless integration tests are clearly needed and can run locally +- **Traverse code thoroughly** to ensure high coverage (80%+) of the entire scope + +### Key Testing Goals + +| Goal | Description | +|------|-------------| +| **Minimal but Comprehensive** | Avoid redundant tests | +| **Logical Coverage** | Focus on meaningful edge cases, domain-specific inputs, boundary values, and bug-revealing scenarios | +| **Core Logic Focus** | Test positive cases and actual execution logic; avoid low-value tests for language features | +| **Balanced Coverage** | Don't let negative/edge cases outnumber tests of actual logic | +| **Best Practices** | Use Arrange-Act-Assert pattern and proper naming (`Method_Condition_ExpectedResult`) | +| **Buildable & Complete** | Tests must compile, run, and contain no hallucinated or missed logic | + +## Parameterization + +- Prefer parameterized tests (e.g., `[DataRow]`, `[Theory]`, `@pytest.mark.parametrize`) over multiple similar methods +- Combine logically related test cases into a single parameterized method +- Never generate multiple tests with identical logic that differ only by input values + +## Analysis Before Generation + +Before writing tests: + +1. **Analyze** the code line by line to understand what each section does +2. **Document** all parameters, their purposes, constraints, and valid/invalid ranges +3. **Identify** potential edge cases and error conditions +4. **Describe** expected behavior under different input conditions +5. **Note** dependencies that need mocking +6. **Consider** concurrency, resource management, or special conditions +7. **Identify** domain-specific validation or business rules + +Apply this analysis to the **entire** code scope, not just a portion. + +## Coverage Types + +| Type | Examples | +|------|----------| +| **Happy Path** | Valid inputs produce expected outputs | +| **Edge Cases** | Empty values, boundaries, special characters, zero/negative numbers | +| **Error Cases** | Invalid inputs, null handling, exceptions, timeouts | +| **State Transitions** | Before/after operations, initialization, cleanup | + +## Language-Specific Examples + +### C# (MSTest) + +```csharp +[TestClass] +public sealed class CalculatorTests +{ + private readonly Calculator _sut = new(); + + [TestMethod] + [DataRow(2, 3, 5, DisplayName = "Positive numbers")] + [DataRow(-1, 1, 0, DisplayName = "Negative and positive")] + [DataRow(0, 0, 0, DisplayName = "Zeros")] + public void Add_ValidInputs_ReturnsSum(int a, int b, int expected) + { + // Act + var result = _sut.Add(a, b); + + // Assert + Assert.AreEqual(expected, result); + } + + [TestMethod] + public void Divide_ByZero_ThrowsDivideByZeroException() + { + // Act & Assert + Assert.ThrowsException(() => _sut.Divide(10, 0)); + } +} +``` + +### TypeScript (Jest) + +```typescript +describe('Calculator', () => { + let sut: Calculator; + + beforeEach(() => { + sut = new Calculator(); + }); + + it.each([ + [2, 3, 5], + [-1, 1, 0], + [0, 0, 0], + ])('add(%i, %i) returns %i', (a, b, expected) => { + expect(sut.add(a, b)).toBe(expected); + }); + + it('divide by zero throws error', () => { + expect(() => sut.divide(10, 0)).toThrow('Division by zero'); + }); +}); +``` + +### Python (pytest) + +```python +import pytest +from calculator import Calculator + +class TestCalculator: + @pytest.fixture + def sut(self): + return Calculator() + + @pytest.mark.parametrize("a,b,expected", [ + (2, 3, 5), + (-1, 1, 0), + (0, 0, 0), + ]) + def test_add_valid_inputs_returns_sum(self, sut, a, b, expected): + assert sut.add(a, b) == expected + + def test_divide_by_zero_raises_error(self, sut): + with pytest.raises(ZeroDivisionError): + sut.divide(10, 0) +``` + +## Output Requirements + +- Tests must be **complete and buildable** with no placeholder code +- Follow the **exact conventions** discovered in the target codebase +- Include **appropriate imports** and setup code +- Add **brief comments** explaining non-obvious test purposes +- Place tests in the **correct location** following project structure From c89c23e67404eac98c5662eae1791f858a47aa0c Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Mon, 16 Feb 2026 15:53:38 +0100 Subject: [PATCH 07/61] Add links --- plugins/csharp-dotnet-development/commands/csharp-mstest.md | 1 + plugins/csharp-dotnet-development/commands/csharp-nunit.md | 1 + plugins/csharp-dotnet-development/commands/csharp-tunit.md | 1 + 3 files changed, 3 insertions(+) create mode 100644 plugins/csharp-dotnet-development/commands/csharp-mstest.md create mode 100644 plugins/csharp-dotnet-development/commands/csharp-nunit.md create mode 100644 plugins/csharp-dotnet-development/commands/csharp-tunit.md diff --git a/plugins/csharp-dotnet-development/commands/csharp-mstest.md b/plugins/csharp-dotnet-development/commands/csharp-mstest.md new file mode 100644 index 00000000..941cbef4 --- /dev/null +++ b/plugins/csharp-dotnet-development/commands/csharp-mstest.md @@ -0,0 +1 @@ +../../../prompts/csharp-mstest.prompt.md \ No newline at end of file diff --git a/plugins/csharp-dotnet-development/commands/csharp-nunit.md b/plugins/csharp-dotnet-development/commands/csharp-nunit.md new file mode 100644 index 00000000..486fd260 --- /dev/null +++ b/plugins/csharp-dotnet-development/commands/csharp-nunit.md @@ -0,0 +1 @@ +../../../prompts/csharp-nunit.prompt.md \ No newline at end of file diff --git a/plugins/csharp-dotnet-development/commands/csharp-tunit.md b/plugins/csharp-dotnet-development/commands/csharp-tunit.md new file mode 100644 index 00000000..4ffd0add --- /dev/null +++ b/plugins/csharp-dotnet-development/commands/csharp-tunit.md @@ -0,0 +1 @@ +../../../prompts/csharp-tunit.prompt.md \ No newline at end of file From 3df31296958c7a20cae82a6aa540e9e150aca163 Mon Sep 17 00:00:00 2001 From: HassiumX <5256151+Hakku@users.noreply.github.com> Date: Mon, 16 Feb 2026 17:01:12 +0200 Subject: [PATCH 08/61] refactor: convert prompt to skill format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per reviewer feedback, migrate from prompts/ to skills/ format: - Move prompt → skills/finnish-humanizer/SKILL.md with proper frontmatter - Bundle references/patterns.md (26 AI patterns + 4 style markers) - Regenerate README tables via npm start --- docs/README.prompts.md | 1 - docs/README.skills.md | 1 + .../finnish-humanizer/SKILL.md | 16 +- .../finnish-humanizer/references/patterns.md | 338 ++++++++++++++++++ 4 files changed, 349 insertions(+), 7 deletions(-) rename prompts/humanize-finnish-ai-text.prompt.md => skills/finnish-humanizer/SKILL.md (91%) create mode 100644 skills/finnish-humanizer/references/patterns.md diff --git a/docs/README.prompts.md b/docs/README.prompts.md index 9e5bbfdf..64d37023 100644 --- a/docs/README.prompts.md +++ b/docs/README.prompts.md @@ -75,7 +75,6 @@ Ready-to-use prompt templates for specific development scenarios and tasks, defi | [Feature PRD Prompt](../prompts/breakdown-feature-prd.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-feature-prd.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-feature-prd.prompt.md) | Prompt for creating Product Requirements Documents (PRDs) for new features, based on an Epic. | | [Fedora Linux Triage](../prompts/fedora-linux-triage.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%2Ffedora-linux-triage.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%2Ffedora-linux-triage.prompt.md) | Triage and resolve Fedora issues with dnf, systemd, and SELinux-aware guidance. | | [Finalize Agent Prompt](../prompts/finalize-agent-prompt.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%2Ffinalize-agent-prompt.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%2Ffinalize-agent-prompt.prompt.md) | Finalize prompt file using the role of an AI agent to polish the prompt for the end user. | -| [Finnish AI Text Humanizer](../prompts/humanize-finnish-ai-text.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%2Fhumanize-finnish-ai-text.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%2Fhumanize-finnish-ai-text.prompt.md) | Detect and remove AI-generated markers from Finnish text, making it sound like a native Finnish speaker wrote it. Identifies 26 patterns across Finnish-specific and universal categories. | | [Generate Application from OpenAPI Spec](../prompts/openapi-to-application-code.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%2Fopenapi-to-application-code.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%2Fopenapi-to-application-code.prompt.md) | Generate a complete, production-ready application from an OpenAPI specification | | [Generate C# MCP Server](../prompts/csharp-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%2Fcsharp-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%2Fcsharp-mcp-server-generator.prompt.md) | Generate a complete MCP server project in C# with tools, prompts, and proper configuration | | [Generate Python MCP Server](../prompts/python-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%2Fpython-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%2Fpython-mcp-server-generator.prompt.md) | Generate a complete MCP server project in Python with tools, resources, and proper configuration | diff --git a/docs/README.skills.md b/docs/README.skills.md index cfc18fee..ca44d99a 100644 --- a/docs/README.skills.md +++ b/docs/README.skills.md @@ -35,6 +35,7 @@ Skills differ from other primitives by supporting bundled assets (scripts, code | [copilot-sdk](../skills/copilot-sdk/SKILL.md) | Build agentic applications with GitHub Copilot SDK. Use when embedding AI agents in apps, creating custom tools, implementing streaming responses, managing sessions, connecting to MCP servers, or creating custom agents. Triggers on Copilot SDK, GitHub SDK, agentic app, embed Copilot, programmable agent, MCP server, custom agent. | None | | [create-web-form](../skills/create-web-form/SKILL.md) | Create robust, accessible web forms with best practices for HTML structure, CSS styling, JavaScript interactivity, form validation, and server-side processing. Use when asked to "create a form", "build a web form", "add a contact form", "make a signup form", or when building any HTML form with data handling. Covers PHP and Python backends, MySQL database integration, REST APIs, XML data exchange, accessibility (ARIA), and progressive web apps. | `references/accessibility.md`
`references/aria-form-role.md`
`references/css-styling.md`
`references/form-basics.md`
`references/form-controls.md`
`references/form-data-handling.md`
`references/html-form-elements.md`
`references/html-form-example.md`
`references/hypertext-transfer-protocol.md`
`references/javascript.md`
`references/php-cookies.md`
`references/php-forms.md`
`references/php-json.md`
`references/php-mysql-database.md`
`references/progressive-web-app.md`
`references/python-as-web-framework.md`
`references/python-contact-form.md`
`references/python-flask-app.md`
`references/python-flask.md`
`references/security.md`
`references/styling-web-forms.md`
`references/web-api.md`
`references/web-performance.md`
`references/xml.md` | | [excalidraw-diagram-generator](../skills/excalidraw-diagram-generator/SKILL.md) | Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw. | `references/element-types.md`
`references/excalidraw-schema.md`
`scripts/.gitignore`
`scripts/README.md`
`scripts/add-arrow.py`
`scripts/add-icon-to-diagram.py`
`scripts/split-excalidraw-library.py`
`templates/business-flow-swimlane-template.excalidraw`
`templates/class-diagram-template.excalidraw`
`templates/data-flow-diagram-template.excalidraw`
`templates/er-diagram-template.excalidraw`
`templates/flowchart-template.excalidraw`
`templates/mindmap-template.excalidraw`
`templates/relationship-template.excalidraw`
`templates/sequence-diagram-template.excalidraw` | +| [finnish-humanizer](../skills/finnish-humanizer/SKILL.md) | Detect and remove AI-generated markers from Finnish text, making it sound like a native Finnish speaker wrote it. Use when asked to "humanize", "naturalize", or "remove AI feel" from Finnish text, or when editing .md/.txt files containing Finnish content. Identifies 26 patterns (12 Finnish-specific + 14 universal) and 4 style markers. | `references/patterns.md` | | [gh-cli](../skills/gh-cli/SKILL.md) | GitHub CLI (gh) comprehensive reference for repositories, issues, pull requests, Actions, projects, releases, gists, codespaces, organizations, extensions, and all GitHub operations from the command line. | None | | [git-commit](../skills/git-commit/SKILL.md) | Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions "/commit". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type/scope/description overrides, (4) Intelligent file staging for logical grouping | None | | [github-issues](../skills/github-issues/SKILL.md) | Create, update, and manage GitHub issues using MCP tools. Use this skill when users want to create bug reports, feature requests, or task issues, update existing issues, add labels/assignees/milestones, or manage issue workflows. Triggers on requests like "create an issue", "file a bug", "request a feature", "update issue X", or any GitHub issue management task. | `references/templates.md` | diff --git a/prompts/humanize-finnish-ai-text.prompt.md b/skills/finnish-humanizer/SKILL.md similarity index 91% rename from prompts/humanize-finnish-ai-text.prompt.md rename to skills/finnish-humanizer/SKILL.md index b954c80f..b850aa40 100644 --- a/prompts/humanize-finnish-ai-text.prompt.md +++ b/skills/finnish-humanizer/SKILL.md @@ -1,10 +1,9 @@ --- -agent: 'agent' -description: 'Detect and remove AI-generated markers from Finnish text, making it sound like a native Finnish speaker wrote it. Identifies 26 patterns across Finnish-specific and universal categories.' -tools: ['edit/editFiles'] +name: finnish-humanizer +description: 'Detect and remove AI-generated markers from Finnish text, making it sound like a native Finnish speaker wrote it. Use when asked to "humanize", "naturalize", or "remove AI feel" from Finnish text, or when editing .md/.txt files containing Finnish content. Identifies 26 patterns (12 Finnish-specific + 14 universal) and 4 style markers.' --- -# Finnish AI Text Humanizer +# Finnish Humanizer Olet kirjoituseditori, joka tunnistaa ja poistaa suomenkielisen AI-tekstin tunnusmerkit. Et ole kieliopin tarkistaja, kääntäjä tai yksinkertaistaja. Tehtäväsi on tehdä tekstistä sellaista, jonka suomalainen ihminen olisi voinut kirjoittaa. @@ -67,7 +66,7 @@ Käsittele suoraan. Palauta luonnollistettu teksti + muutosyhteenveto. ## Esimerkkipatternit -26 AI-patternia on jaettu kahteen ryhmään: suomenkieliset (suomelle ominaiset rakenteet) ja universaalit (kaikissa kielissä esiintyvät, tunnistetaan ja korjataan suomeksi). Alla 7 kanonista esimerkkiä. Täysi 26 kategorian patternilista: https://github.com/Hakku/finnish-humanizer/blob/main/finnish-humanizer/references/patterns.md +26 AI-patternia on jaettu kahteen ryhmään: suomenkieliset (suomelle ominaiset rakenteet) ja universaalit (kaikissa kielissä esiintyvät, tunnistetaan ja korjataan suomeksi). Alla 7 kanonista esimerkkiä. Täysi 26 kategorian patternilista: ks. references/patterns.md ### Suomenkieliset patternit @@ -90,7 +89,7 @@ Ennen: Tämän lisäksi, on tärkeää huomioida se tosiasia, että markkinat ov Jälkeen: Markkinatkin ovat muuttuneet. **#6 Genetiiviketjut** -Peräkkäiset genetiivimuodot kasautuvat kun AI yrittää ilmaista monimutkaisia suhteita yhdessä rakenteessa. +Peräkkäiset genetiivimuodot kasautuvat kun AI yrittää ilmaista monimutkaisia suhteita yhdessä rakenteella. Ennen: Tuotteen laadun parantamisen mahdollisuuksien arvioinnin tulokset osoittavat kehityspotentiaalia. Jälkeen: Arvioimme miten tuotteen laatua voisi parantaa. Kehityspotentiaalia löytyi. @@ -139,3 +138,8 @@ Jos käyttäjä pyytää vain tekstiä ilman selityksiä, jätä muutosyhteenvet - **Koodiesimerkkit ja tekninen sanasto.** Säilytä englanninkieliset koodiesimerkkit, tekniset termit ja lainaukset sellaisinaan. - **Sekateksti (fi/en).** Käsittele vain suomenkieliset osat. Jätä englanninkieliset osiot koskematta. + +## References + +- Full 26-pattern list with examples: [references/patterns.md](references/patterns.md) +- Source repository: [Hakku/finnish-humanizer](https://github.com/Hakku/finnish-humanizer) (MIT) diff --git a/skills/finnish-humanizer/references/patterns.md b/skills/finnish-humanizer/references/patterns.md new file mode 100644 index 00000000..2b9cd8a7 --- /dev/null +++ b/skills/finnish-humanizer/references/patterns.md @@ -0,0 +1,338 @@ +# Finnish Humanizer — Täysi patternilista + +Kaikki 26 AI-patternia esimerkkeineen. SKILL.md sisältää 7 kanonista esimerkkiä; tämä tiedosto sisältää loput. + +## Sisällysluettelo + +- [Suomenkieliset AI-patternit (1–12)](#suomenkieliset-ai-patternit) + - [1. Passiivin ylikäyttö](#1-passiivin-ylikäyttö) + - [2. Nominaalirakenteet](#2-nominaalirakenteet) + - [3. Pronominien ylikäyttö](#3-pronominien-ylikäyttö) + - [4. Puuttuvat partikkelit](#4-puuttuvat-partikkelit) + - [5. Käännösrakenteet](#5-käännösrakenteet) + - [6. Genetiiviketjut](#6-genetiiviketjut) + - [7. Adjektiivikasaumat](#7-adjektiivikasaumat) + - [8. Ylipitkät virkkeet](#8-ylipitkät-virkkeet) + - [9. Joka/jotka-kasautuminen](#9-jokajotka-kasautuminen) + - [10. Virkakielisyys väärässä kontekstissa](#10-virkakielisyys-väärässä-kontekstissa) + - [11. Astevaihtelun välttely](#11-astevaihtelun-välttely) + - [12. Liiallinen kohteliaisuus](#12-liiallinen-kohteliaisuus) +- [Universaalit AI-patternit suomeksi (13–26)](#universaalit-ai-patternit-suomeksi) + - [13. Merkittävyyden liioittelu](#13-merkittävyyden-liioittelu) + - [14. Mainosmainen kieli](#14-mainosmainen-kieli) + - [15. Mielistelevä sävy](#15-mielistelevä-sävy) + - [16. Liiallinen varautuminen](#16-liiallinen-varautuminen) + - [17. Täytesanat ja -lauseet](#17-täytesanat-ja--lauseet) + - [18. Geneerinen lopetus](#18-geneerinen-lopetus) + - [19. Epämääräiset viittaukset](#19-epämääräiset-viittaukset) + - [20. "Haasteista huolimatta" -kaava](#20-haasteista-huolimatta--kaava) + - [21. Kolmen sääntö ja synonyymikierto](#21-kolmen-sääntö-ja-synonyymikierto) + - [22. Partisiippirakenteet](#22-partisiippirakenteet) + - [23. Kopulan välttely](#23-kopulan-välttely) + - [24. Negatiivinen rinnastus](#24-negatiivinen-rinnastus) + - [25. Keinotekoiset skaalaviittaukset](#25-keinotekoiset-skaalaviittaukset) + - [26. Tietokatkos-vastuuvapauslausekkeet](#26-tietokatkos-vastuuvapauslausekkeet) +- [Tyylimerkinnät](#tyylimerkinnät) +- [Täysimittainen esimerkki](#täysimittainen-esimerkki) + +--- + +## Suomenkieliset AI-patternit + +### 1. Passiivin ylikäyttö + +AI käyttää passiivia kaikkialla. Suomessa passiivi on luonnollinen, mutta AI ylikäyttää sitä välttääkseen tekijän nimeämistä. + +Ennen: Sovellus on suunniteltu tarjoamaan käyttäjille mahdollisuus hallita omia tietojaan tehokkaasti. +Jälkeen: Sovelluksella hallitset omat tietosi. + +Ennen: Tutkimuksessa havaittiin, että menetelmä tuottaa parempia tuloksia. +Jälkeen: Tutkimus osoitti menetelmän toimivan paremmin. + +### 2. Nominaalirakenteet + +Verbi muutetaan substantiiviksi ja lisätään tukiverbi. "Suorittaa tarkistuksen" kun voisi sanoa "tarkistaa". + +Ennen: Järjestelmä suorittaa tietojen validoinnin ennen tallennuksen toteuttamista. +Jälkeen: Järjestelmä validoi tiedot ennen tallennusta. + +Ennen: Tiimi tekee arvioinnin projektin etenemisestä. +Jälkeen: Tiimi arvioi projektin etenemisen. + +### 3. Pronominien ylikäyttö + +Suomessa pronomini jätetään pois kun konteksti on selvä. AI lisää "me", "se", "tämä" joka paikkaan englannin mallin mukaan. + +Ennen: Me uskomme, että meidän ratkaisumme tarjoaa merkittävää arvoa. +Jälkeen: Ratkaisumme tuottaa arvoa. + +Ennen: Se on työkalu, joka auttaa sinua parantamaan tuottavuuttasi. +Jälkeen: Työkalu parantaa tuottavuuttasi. + +### 4. Puuttuvat partikkelit + +AI ei käytä partikkeleita (-han/-hän, -pa/-pä, kyllä, vaan, nyt, sit) koska ne ovat epämuodollisia. Suomessa ne ovat normaalia kirjoituskieltä. + +Ennen: Tämä on totta. Kyse on kuitenkin siitä, että tilanne on monimutkainen. +Jälkeen: Onhan se totta. Tilanne on vaan monimutkainen. + +Ennen: Kokeile tätä. Se toimii hyvin. +Jälkeen: Kokeilepa tätä. Kyllä se toimii. + +### 5. Käännösrakenteet + +AI tuottaa suomea joka noudattaa englannin sanajärjestystä ja rakenteita. Tuloksena on teknisesti oikeaa mutta luonnotonta kieltä. + +Ennen: Tämän lisäksi, on tärkeää huomioida se tosiasia, että markkinat ovat muuttuneet. +Jälkeen: Markkinatkin ovat muuttuneet. + +Ennen: Se on juuri tämä seikka, joka tekee asiasta mielenkiintoisen. +Jälkeen: Juuri tämä tekee asiasta kiinnostavan. + +### 6. Genetiiviketjut + +Peräkkäiset genetiivimuodot kasautuvat kun AI yrittää ilmaista monimutkaisia suhteita yhdessä rakenteessa. + +Ennen: Tuotteen laadun parantamisen mahdollisuuksien arvioinnin tulokset osoittavat kehityspotentiaalia. +Jälkeen: Arvioimme miten tuotteen laatua voisi parantaa. Kehityspotentiaalia löytyi. + +Ennen: Yrityksen strategisen suunnittelun prosessin uudistamisen tavoitteena on tehokkuuden lisääminen. +Jälkeen: Yritys uudistaa strategista suunnitteluaan tehostuakseen. + +### 7. Adjektiivikasaumat + +AI kasaa useita adjektiiveja peräkkäin. Suomessa yksi osuva adjektiivi on parempi kuin neljä geneeristä. + +Ennen: Moderni, innovatiivinen, käyttäjäystävällinen ja monipuolinen alusta tarjoaa kattavia ratkaisuja. +Jälkeen: Monipuolinen alusta, jota on helppo käyttää. + +Ennen: Tehokas, luotettava, skaalautuva ja turvallinen infrastruktuuri. +Jälkeen: Luotettava ja skaalautuva infrastruktuuri. + +### 8. Ylipitkät virkkeet + +AI kirjoittaa yhden pitkän virkkeen johon pakataan useita ajatuksia pilkuilla ja konjunktioilla erotettuna. + +Ennen: Uusi järjestelmä, joka otettiin käyttöön viime kuussa, on parantanut asiakastyytyväisyyttä merkittävästi, sillä se tarjoaa nopeamman vasteajan ja intuitiivisemman käyttöliittymän, minkä ansiosta käyttäjät löytävät tarvitsemansa tiedot helpommin ja voivat suorittaa tehtävänsä tehokkaammin. +Jälkeen: Uusi järjestelmä otettiin käyttöön viime kuussa. Asiakastyytyväisyys on parantunut selvästi. Vasteaika on nopeampi ja käyttöliittymä selkeämpi, joten tiedot löytyvät helpommin. + +### 9. Joka/jotka-kasautuminen + +AI ketjuttaa sivulauseita "joka"- ja "jotka"-pronomineilla. Suomessa partisiippirakenne tai erillinen virke on luontevampi. + +Ennen: Tiimi, joka vastaa projektista, joka on saanut rahoituksen, jota haettiin viime vuonna, esitteli tulokset. +Jälkeen: Viime vuonna rahoituksen saanut projektitiimi esitteli tulokset. + +Ennen: Raportti, joka sisältää tiedot, jotka kerättiin kyselystä, joka lähetettiin asiakkaille. +Jälkeen: Raportti perustuu asiakkaille lähetetyn kyselyn tuloksiin. + +### 10. Virkakielisyys väärässä kontekstissa + +AI käyttää virallista kieltä tilanteissa joissa se ei sovi. "Kyseinen" ja "edellä mainittu" kuuluvat lakitekstiin, eivät blogikirjoitukseen. + +Ennen: Kyseinen tuote soveltuu erinomaisesti edellä mainittujen käyttötapausten toteuttamiseen. +Jälkeen: Tuote toimii hyvin näihin tarkoituksiin. + +Ennen: Mikäli käyttäjä haluaa hyödyntää kyseistä toiminnallisuutta, tulee hänen ensisijaisesti suorittaa kirjautuminen. +Jälkeen: Kirjaudu ensin sisään, niin pääset käyttämään toimintoa. + +### 11. Astevaihtelun välttely + +AI saattaa välttää sanoja joissa astevaihtelu tuottaa vieraannäköisiä muotoja. Ei systemaattinen virhe vaan taipumus valita "turvallisempia" sanoja. + +Tunnistus: Teksti käyttää toistuvasti samoja helppoja sanoja ja välttelee esim. muotoja kuten "luvun" (luku), "halvempi" (halpa), "leveämpi" (leveä). + +Toimenpide: Ei automaattista korjausta. Tarkista käyttääkö teksti epätavallisen suppeaa sanastoa ja laajenna tarvittaessa. + +### 12. Liiallinen kohteliaisuus + +AI siirtää englannin kohteliaisuusnormit suomeen. Suomessa liiallinen kohteliaisuus kuulostaa epäaidolta tai jopa ironiselta. + +Ennen: Olisin erittäin kiitollinen, mikäli voisitte ystävällisesti harkita mahdollisuutta osallistua tapahtumaemme. +Jälkeen: Tervetuloa tapahtumaamme. + +Ennen: Haluaisin nöyrästi ehdottaa, että ehkäpä voisimme mahdollisesti tarkastella tätä asiaa uudelleen. +Jälkeen: Tarkastellaan tätä uudelleen. + +--- + +## Universaalit AI-patternit suomeksi + +Nämä esiintyvät kaikissa kielissä mutta tunnistetaan ja korjataan suomenkielisin esimerkein. + +### 13. Merkittävyyden liioittelu + +AI paisuttaa kaiken "merkittäväksi", "keskeiseksi" tai "ratkaisevaksi". +Merkkisanat: merkittävä, keskeinen, ratkaiseva rooli, olennainen, elintärkeä, kriittinen + +Ennen: Tekoäly tulee olemaan merkittävässä ja keskeisessä roolissa tulevaisuuden ratkaisevien haasteiden ratkaisemisessa. +Jälkeen: Tekoälystä tulee tärkeä työkalu moniin ongelmiin. + +### 14. Mainosmainen kieli + +Teksti kuulostaa mainokselta vaikka konteksti on neutraali. +Merkkisanat: ainutlaatuinen, uraauurtava, vertaansa vailla, vallankumouksellinen, maailmanluokan + +Ennen: Uraauurtava ja ainutlaatuinen alustamme tarjoaa vertaansa vailla olevan käyttökokemuksen. +Jälkeen: Alusta toimii hyvin ja erottuu kilpailijoista. + +### 15. Mielistelevä sävy + +AI kehuu kysyjää tai aihevalintaa. Suomessa tämä on erityisen kiusallista. +Merkkisanat: Hyvä kysymys!, Ehdottomasti!, Aivan oikein!, Erinomainen huomio! + +Ennen: Hyvä kysymys! Tämä on ehdottomasti yksi tärkeimmistä aiheista tällä hetkellä. +Jälkeen: Aihe on ajankohtainen. + +### 16. Liiallinen varautuminen + +AI pehmentää jokaisen väitteen varmuuden vuoksi. +Merkkisanat: saattaisi mahdollisesti, voitaneen todeta, lienee perusteltua, on syytä olettaa + +Ennen: Saattaisi olla mahdollista, että tämä lähestymistapa voisi potentiaalisesti tuottaa jonkinlaisia parannuksia tietyissä olosuhteissa. +Jälkeen: Lähestymistapa todennäköisesti parantaa tuloksia. + +### 17. Täytesanat ja -lauseet + +AI aloittaa tai täyttää kappaleita fraaseilla jotka eivät lisää sisältöä. +Merkkisanat: On syytä huomata, Tässä yhteydessä on tärkeää, Kuten aiemmin mainittiin, On hyvä muistaa + +Ennen: On syytä huomata, että tässä yhteydessä on tärkeää ymmärtää alustan arkkitehtuuri ennen käyttöönottoa. +Jälkeen: Ymmärrä alustan arkkitehtuuri ennen käyttöönottoa. + +### 18. Geneerinen lopetus + +AI päättää tekstin tyhjällä optimismilla. +Merkkisanat: Tulevaisuus näyttää valoisalta, jatkaa kehittymistä, avaa uusia mahdollisuuksia + +Ennen: Tulevaisuus näyttää valoisalta ja ala jatkaa kehittymistään, avaten uusia mahdollisuuksia kaikille toimijoille. +Jälkeen: [Poista kokonaan tai korvaa konkreettisella ennusteella] + +### 19. Epämääräiset viittaukset + +AI viittaa auktoriteetteihin nimeämättä niitä. +Merkkisanat: Asiantuntijoiden mukaan, Tutkimukset osoittavat, Alan johtavat toimijat + +Ennen: Tutkimukset osoittavat, että asiantuntijoiden mukaan tämä on alan paras käytäntö. +Jälkeen: [Nimeä lähde] tai poista väite. + +### 20. "Haasteista huolimatta" -kaava + +AI tunnustaa haasteen mutta mitätöi sen välittömästi. Rakenne: "vaikka X, niin silti Y". +Merkkisanat: Haasteista huolimatta, Vaikka [ongelma], jatkaa kehittymistä + +Ennen: Haasteista huolimatta yritys on onnistunut kasvattamaan markkinaosuuttaan ja jatkaa vahvaa kehitystään. +Jälkeen: Yritys on kasvattanut markkinaosuuttaan. Haasteitakin on: [nimeä ne]. + +### 21. Kolmen sääntö ja synonyymikierto + +AI listaa asioita kolmen ryhmissä ja kierrättää synonyymejä välttääkseen toistoa. Suomessa toisto on luonnollista. + +Ennen: Ratkaisu on tehokas, vaikuttava ja tuloksellinen. Se parantaa, kehittää ja optimoi prosesseja. +Jälkeen: Ratkaisu on tehokas. Se parantaa prosesseja. + +Ennen: Alusta yhdistää, integroi ja kokoaa yhteen eri tietolähteet. +Jälkeen: Alusta yhdistää eri tietolähteet. + +### 22. Partisiippirakenteet + +AI ylikäyttää -malla/-mällä ja -en -muotoja korvikkeena konkreettisemmille ilmaisuille. + +Ennen: Hyödyntämällä uusia teknologioita ja tarkastelemalla olemassa olevia prosesseja voidaan saavuttaa merkittäviä parannuksia. +Jälkeen: Uusilla teknologioilla ja prosessien tarkastelulla voidaan parantaa tuloksia. + +Ennen: Ottamalla huomioon käyttäjien tarpeet ja analysoimalla käyttödataa voidaan kehittää parempia ratkaisuja. +Jälkeen: Käyttäjien tarpeet ja käyttödata ohjaavat kehitystä. + +### 23. Kopulan välttely + +AI välttelee yksinkertaista "on/olla" ja korvaa sen monimutkaisemmilla verbeillä: "toimii", "tarjoaa", "edustaa", "muodostaa". + +Ennen: Alusta toimii keskeisenä työkaluna datan hallinnassa ja tarjoaa monipuolisia mahdollisuuksia. +Jälkeen: Alusta on hyvä työkalu datan hallintaan. + +Ennen: Tämä ratkaisu edustaa modernia lähestymistapaa ja muodostaa perustan tulevalle kehitykselle. +Jälkeen: Tämä on moderni ratkaisu, jolle voi rakentaa jatkossa. + +### 24. Negatiivinen rinnastus + +"Ei pelkästään...vaan myös" / "ei ainoastaan...vaan" -kaavan ylikäyttö korostuskeinona. + +Ennen: Alusta ei pelkästään tehosta työskentelyä, vaan myös parantaa tiimien välistä yhteistyötä. +Jälkeen: Alusta tehostaa työskentelyä ja parantaa yhteistyötä. + +Ennen: Ratkaisu ei ainoastaan säästä aikaa, vaan tarjoaa myös uusia näkökulmia päätöksentekoon. +Jälkeen: Ratkaisu säästää aikaa ja tuo uusia näkökulmia. + +### 25. Keinotekoiset skaalaviittaukset + +"X:stä Y:hyn" -rakenne luo valheellista kattavuutta. AI käyttää sitä vaikuttaakseen kokonaisvaltaiselta. + +Ennen: Alusta kattaa kaiken strategisesta suunnittelusta operatiiviseen toteutukseen. +Jälkeen: Alusta tukee sekä suunnittelua että toteutusta. + +Ennen: Palvelu auttaa aina pienimmistä yksityiskohdista suurimpiin kokonaisuuksiin. +Jälkeen: Palvelu auttaa eri kokoisissa tehtävissä. + +### 26. Tietokatkos-vastuuvapauslausekkeet + +AI lisää tarpeettomia vastuuvapauslausekkeita omasta tietotasostaan. +Merkkisanat: viimeisimpien tietojeni mukaan, saatavilla olevien tietojen perusteella, tämänhetkisen ymmärrykseni mukaan + +Ennen: Viimeisimpien tietojeni mukaan markkinatilanne on muuttunut merkittävästi viime vuosina. +Jälkeen: Markkinatilanne on muuttunut viime vuosina. + +Ennen: Saatavilla olevien tietojen perusteella voidaan todeta, että kehitys on ollut positiivista. +Jälkeen: Kehitys on ollut positiivista. + +--- + +## Tyylimerkinnät + +Nämä eivät ole patterneita vaan muotoiluvalintoja joita AI suosii: + +- **Lihavoinnin ylikäyttö** — AI lihavoi jokaisen avainsanan. Lihavoi vain se mikä oikeasti vaatii huomiota. +- **Emojit** — Poista ellei konteksti ole selvästi epämuodollinen (some, chat). +- **"Otsikko:" -listaus** — AI kirjoittaa "**Hyöty:** parempi suorituskyky" kun voisi sanoa "Suorituskyky paranee". +- **Kaarevat lainausmerkit** — AI (erit. ChatGPT) käyttää typografisia \u201clainausmerkkejä\u201d suorien "lainausmerkkien" sijaan. Suomessa käytetään suoria lainausmerkkejä. + +--- + +## Täysimittainen esimerkki + +### Ennen (AI-generoitu) + +> **Kattava katsaus moderniin ohjelmistokehitykseen** +> +> Nykyaikainen ohjelmistokehitys on merkittävä ja keskeinen osa digitaalista transformaatiota. On syytä huomata, että alan kehitys on ollut erittäin nopeaa viime vuosina. Me näemme, että uudet teknologiat, innovatiiviset työkalut ja tehokkaat menetelmät ovat muuttaneet tapaa, jolla ohjelmistoja suunnitellaan, kehitetään ja ylläpidetään. +> +> Ketterät menetelmät, jotka ovat saaneet laajaa hyväksyntää, tarjoavat merkittäviä etuja perinteisiin lähestymistapoihin verrattuna. Kyseisten menetelmien avulla tiimit voivat suorittaa nopeamman reagoinnin muuttuviin vaatimuksiin. Tutkimukset osoittavat, että ketterää kehitystä hyödyntävät organisaatiot saavuttavat parempia tuloksia asiakastyytyväisyyden, tuottavuuden ja laadun saralla. +> +> Haasteista huolimatta ala jatkaa vahvaa kehitystään. Tekoäly tulee olemaan ratkaisevassa roolissa ohjelmistokehityksen tulevaisuuden muovaamisessa. Tulevaisuus näyttää valoisalta ja avaa uusia, jännittäviä mahdollisuuksia kaikille alan toimijoille. + +### Jälkeen (luonnollistettu) + +> Ohjelmistokehitys on muuttunut nopeasti. Uudet työkalut ja menetelmät ovat muokanneet koko alaa — suunnittelusta ylläpitoon. +> +> Ketterät menetelmät ovat yleistyneet syystä. Tiimit reagoivat nopeammin muuttuviin vaatimuksiin. Esimerkiksi State of Agile -raportin (2024) mukaan ketterää käyttävät organisaatiot raportoivat parempaa asiakastyytyväisyyttä ja laatua. +> +> Tekoäly muuttaa alaa sekin, mutta miten ja kuinka nopeasti — sitä ei vielä tiedä. + +### Tehdyt muutokset + +| # | Pattern | Muutos | +|---|---------|--------| +| 1 | Passiivin ylikäyttö | "on ollut erittäin nopeaa" → "on muuttunut nopeasti" | +| 2 | Nominaalirakenteet | "suorittaa nopeamman reagoinnin" → "reagoivat nopeammin" | +| 3 | Pronominien ylikäyttö | "Me näemme, että" → poistettu | +| 5 | Käännösrakenteet | "tapaa, jolla" → "suunnittelusta ylläpitoon" | +| 7 | Adjektiivikasaumat | "uudet teknologiat, innovatiiviset työkalut ja tehokkaat menetelmät" → "Uudet työkalut ja menetelmät" | +| 8 | Ylipitkät virkkeet | Ensimmäinen kappale pilkottu | +| 9 | Joka/jotka-kasautuminen | "jotka ovat saaneet laajaa hyväksyntää" → "ovat yleistyneet" | +| 10 | Virkakielisyys | "Kyseisten menetelmien avulla" → poistettu | +| 13 | Merkittävyyden liioittelu | "merkittävä ja keskeinen" → poistettu | +| 17 | Täytesanat | "On syytä huomata, että" → poistettu | +| 18 | Geneerinen lopetus | "Tulevaisuus näyttää valoisalta" → rehellinen epävarmuus | +| 19 | Epämääräiset viittaukset | "Tutkimukset osoittavat" → nimetty lähde | +| 20 | "Haasteista huolimatta" | Poistettu kaava, haasteet jätetty auki | +| 21 | Kolmen sääntö | Kolmen ryhmät karsittu | From 024d2bfca769e3087c63ab148750cf361864567d Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Mon, 16 Feb 2026 16:10:52 +0100 Subject: [PATCH 09/61] Add plugin --- .github/plugin/marketplace.json | 6 ++ docs/README.plugins.md | 1 + .../.github/plugin/plugin.json | 68 +++++++++++++++++++ plugins/polyglot-test-agent/README.md | 62 +++++++++++++++++ .../agents/polyglot-test-builder.md | 1 + .../agents/polyglot-test-fixer.md | 1 + .../agents/polyglot-test-generator.md | 1 + .../agents/polyglot-test-implementer.md | 1 + .../agents/polyglot-test-linter.md | 1 + .../agents/polyglot-test-planner.md | 1 + .../agents/polyglot-test-researcher.md | 1 + .../agents/polyglot-test-tester.md | 1 + .../commands/unit-test-generation.md | 1 + .../skills/polyglot-test-agent | 1 + 14 files changed, 147 insertions(+) create mode 100644 plugins/polyglot-test-agent/.github/plugin/plugin.json create mode 100644 plugins/polyglot-test-agent/README.md create mode 100644 plugins/polyglot-test-agent/agents/polyglot-test-builder.md create mode 100644 plugins/polyglot-test-agent/agents/polyglot-test-fixer.md create mode 100644 plugins/polyglot-test-agent/agents/polyglot-test-generator.md create mode 100644 plugins/polyglot-test-agent/agents/polyglot-test-implementer.md create mode 100644 plugins/polyglot-test-agent/agents/polyglot-test-linter.md create mode 100644 plugins/polyglot-test-agent/agents/polyglot-test-planner.md create mode 100644 plugins/polyglot-test-agent/agents/polyglot-test-researcher.md create mode 100644 plugins/polyglot-test-agent/agents/polyglot-test-tester.md create mode 100644 plugins/polyglot-test-agent/commands/unit-test-generation.md create mode 100644 plugins/polyglot-test-agent/skills/polyglot-test-agent diff --git a/.github/plugin/marketplace.json b/.github/plugin/marketplace.json index 89b12fcb..99413598 100644 --- a/.github/plugin/marketplace.json +++ b/.github/plugin/marketplace.json @@ -178,6 +178,12 @@ "description": "Comprehensive resources for building Model Context Protocol servers using the official PHP SDK with attribute-based discovery, including best practices, project generation, and expert assistance", "version": "1.0.0" }, + { + "name": "polyglot-test-agent", + "source": "./plugins/polyglot-test-agent", + "description": "Multi-agent pipeline for generating comprehensive unit tests across any programming language. Orchestrates research, planning, and implementation phases using specialized agents to produce tests that compile, pass, and follow project conventions.", + "version": "1.0.0" + }, { "name": "power-apps-code-apps", "source": "./plugins/power-apps-code-apps", diff --git a/docs/README.plugins.md b/docs/README.plugins.md index 0b558723..d39032b3 100644 --- a/docs/README.plugins.md +++ b/docs/README.plugins.md @@ -44,6 +44,7 @@ Curated plugins of related prompts, agents, and skills organized around specific | [ospo-sponsorship](../plugins/ospo-sponsorship/README.md) | Tools and resources for Open Source Program Offices (OSPOs) to identify, evaluate, and manage sponsorship of open source dependencies through GitHub Sponsors, Open Collective, and other funding platforms. | 0 items | | | [pcf-development](../plugins/pcf-development/README.md) | Complete toolkit for developing custom code components using Power Apps Component Framework for model-driven and canvas apps | 17 items | power-apps, pcf, component-framework, typescript, power-platform | | [php-mcp-development](../plugins/php-mcp-development/README.md) | Comprehensive resources for building Model Context Protocol servers using the official PHP SDK with attribute-based discovery, including best practices, project generation, and expert assistance | 3 items | php, mcp, model-context-protocol, server-development, sdk, attributes, composer | +| [polyglot-test-agent](../plugins/polyglot-test-agent/README.md) | Multi-agent pipeline for generating comprehensive unit tests across any programming language. Orchestrates research, planning, and implementation phases using specialized agents to produce tests that compile, pass, and follow project conventions. | 10 items | testing, unit-tests, polyglot, test-generation, multi-agent, tdd, csharp, typescript, python, go | | [power-apps-code-apps](../plugins/power-apps-code-apps/README.md) | Complete toolkit for Power Apps Code Apps development including project scaffolding, development standards, and expert guidance for building code-first applications with Power Platform integration. | 3 items | power-apps, power-platform, typescript, react, code-apps, dataverse, connectors | | [power-bi-development](../plugins/power-bi-development/README.md) | Comprehensive Power BI development resources including data modeling, DAX optimization, performance tuning, visualization design, security best practices, and DevOps/ALM guidance for building enterprise-grade Power BI solutions. | 14 items | power-bi, dax, data-modeling, performance, visualization, security, devops, business-intelligence | | [power-platform-mcp-connector-development](../plugins/power-platform-mcp-connector-development/README.md) | Complete toolkit for developing Power Platform custom connectors with Model Context Protocol integration for Microsoft Copilot Studio | 4 items | power-platform, mcp, copilot-studio, custom-connector, json-rpc | diff --git a/plugins/polyglot-test-agent/.github/plugin/plugin.json b/plugins/polyglot-test-agent/.github/plugin/plugin.json new file mode 100644 index 00000000..30656b80 --- /dev/null +++ b/plugins/polyglot-test-agent/.github/plugin/plugin.json @@ -0,0 +1,68 @@ +{ + "name": "polyglot-test-agent", + "description": "Multi-agent pipeline for generating comprehensive unit tests across any programming language. Orchestrates research, planning, and implementation phases using specialized agents to produce tests that compile, pass, and follow project conventions.", + "version": "1.0.0", + "author": { + "name": "Awesome Copilot Community" + }, + "repository": "https://github.com/github/awesome-copilot", + "license": "MIT", + "tags": [ + "testing", + "unit-tests", + "polyglot", + "test-generation", + "multi-agent", + "tdd", + "csharp", + "typescript", + "python", + "go" + ], + "display": { + "ordering": "alpha", + "show_badge": true + }, + "items": [ + { + "path": "agents/polyglot-test-generator.agent.md", + "kind": "agent" + }, + { + "path": "agents/polyglot-test-researcher.agent.md", + "kind": "agent" + }, + { + "path": "agents/polyglot-test-planner.agent.md", + "kind": "agent" + }, + { + "path": "agents/polyglot-test-implementer.agent.md", + "kind": "agent" + }, + { + "path": "agents/polyglot-test-builder.agent.md", + "kind": "agent" + }, + { + "path": "agents/polyglot-test-tester.agent.md", + "kind": "agent" + }, + { + "path": "agents/polyglot-test-fixer.agent.md", + "kind": "agent" + }, + { + "path": "agents/polyglot-test-linter.agent.md", + "kind": "agent" + }, + { + "path": "skills/polyglot-test-agent/unit-test-generation.prompt.md", + "kind": "prompt" + }, + { + "path": "skills/polyglot-test-agent/SKILL.md", + "kind": "skill" + } + ] +} diff --git a/plugins/polyglot-test-agent/README.md b/plugins/polyglot-test-agent/README.md new file mode 100644 index 00000000..28cc95b2 --- /dev/null +++ b/plugins/polyglot-test-agent/README.md @@ -0,0 +1,62 @@ +# Polyglot Test Agent Plugin + +Multi-agent pipeline for generating comprehensive unit tests across any programming language. Orchestrates research, planning, and implementation phases using specialized agents to produce tests that compile, pass, and follow project conventions. + +## Installation + +```bash +# Using Copilot CLI +copilot plugin install polyglot-test-agent@awesome-copilot +``` + +## What's Included + +### Agents + +| Agent | Description | +|-------|-------------| +| `polyglot-test-generator` | Orchestrates comprehensive test generation using Research-Plan-Implement pipeline. Use when asked to generate tests, write unit tests, improve test coverage, or add tests. | +| `polyglot-test-researcher` | Analyzes codebases to understand structure, testing patterns, and testability. Identifies source files, existing tests, build commands, and testing framework. | +| `polyglot-test-planner` | Creates structured test implementation plans from research findings. Organizes tests into phases by priority and complexity. | +| `polyglot-test-implementer` | Implements a single phase from the test plan. Writes test files and verifies they compile and pass. | +| `polyglot-test-builder` | Runs build/compile commands for any language and reports results. | +| `polyglot-test-tester` | Runs test commands for any language and reports results. | +| `polyglot-test-fixer` | Fixes compilation errors in source or test files. | +| `polyglot-test-linter` | Runs code formatting/linting for any language. | + +### Commands (Slash Commands) + +| Command | Description | +|---------|-------------| +| `/polyglot-test-agent:unit-test-generation` | Best practices and guidelines for generating comprehensive, parameterized unit tests with 80% code coverage across any programming language | + +### Skills + +| Skill | Description | +|-------|-------------| +| `polyglot-test-agent` | Generates comprehensive, workable unit tests for any programming language using a multi-agent pipeline. Supports C#, TypeScript, JavaScript, Python, Go, Rust, Java, and more. | + +## Supported Languages + +- C# / .NET (MSTest, xUnit, NUnit) +- TypeScript / JavaScript (Jest, Vitest, Mocha) +- Python (pytest, unittest) +- Go (testing) +- Rust (cargo test) +- Java (JUnit, Maven, Gradle) + +## How It Works + +The plugin coordinates specialized agents in a **Research → Plan → Implement** pipeline: + +1. **Research** — Analyzes the codebase to detect language, framework, testing patterns, and build commands +2. **Plan** — Creates a phased implementation plan organized by priority and complexity +3. **Implement** — Writes test files phase by phase, verifying compilation and test passage at each step + +## Source + +This plugin is part of [Awesome Copilot](https://github.com/github/awesome-copilot), a community-driven collection of GitHub Copilot extensions. + +## License + +MIT diff --git a/plugins/polyglot-test-agent/agents/polyglot-test-builder.md b/plugins/polyglot-test-agent/agents/polyglot-test-builder.md new file mode 100644 index 00000000..3f39f494 --- /dev/null +++ b/plugins/polyglot-test-agent/agents/polyglot-test-builder.md @@ -0,0 +1 @@ +../../../agents/polyglot-test-builder.agent.md \ No newline at end of file diff --git a/plugins/polyglot-test-agent/agents/polyglot-test-fixer.md b/plugins/polyglot-test-agent/agents/polyglot-test-fixer.md new file mode 100644 index 00000000..11bda0d0 --- /dev/null +++ b/plugins/polyglot-test-agent/agents/polyglot-test-fixer.md @@ -0,0 +1 @@ +../../../agents/polyglot-test-fixer.agent.md \ No newline at end of file diff --git a/plugins/polyglot-test-agent/agents/polyglot-test-generator.md b/plugins/polyglot-test-agent/agents/polyglot-test-generator.md new file mode 100644 index 00000000..09151b30 --- /dev/null +++ b/plugins/polyglot-test-agent/agents/polyglot-test-generator.md @@ -0,0 +1 @@ +../../../agents/polyglot-test-generator.agent.md \ No newline at end of file diff --git a/plugins/polyglot-test-agent/agents/polyglot-test-implementer.md b/plugins/polyglot-test-agent/agents/polyglot-test-implementer.md new file mode 100644 index 00000000..07fbbce1 --- /dev/null +++ b/plugins/polyglot-test-agent/agents/polyglot-test-implementer.md @@ -0,0 +1 @@ +../../../agents/polyglot-test-implementer.agent.md \ No newline at end of file diff --git a/plugins/polyglot-test-agent/agents/polyglot-test-linter.md b/plugins/polyglot-test-agent/agents/polyglot-test-linter.md new file mode 100644 index 00000000..c2eec9f4 --- /dev/null +++ b/plugins/polyglot-test-agent/agents/polyglot-test-linter.md @@ -0,0 +1 @@ +../../../agents/polyglot-test-linter.agent.md \ No newline at end of file diff --git a/plugins/polyglot-test-agent/agents/polyglot-test-planner.md b/plugins/polyglot-test-agent/agents/polyglot-test-planner.md new file mode 100644 index 00000000..572cb1a8 --- /dev/null +++ b/plugins/polyglot-test-agent/agents/polyglot-test-planner.md @@ -0,0 +1 @@ +../../../agents/polyglot-test-planner.agent.md \ No newline at end of file diff --git a/plugins/polyglot-test-agent/agents/polyglot-test-researcher.md b/plugins/polyglot-test-agent/agents/polyglot-test-researcher.md new file mode 100644 index 00000000..36c018fb --- /dev/null +++ b/plugins/polyglot-test-agent/agents/polyglot-test-researcher.md @@ -0,0 +1 @@ +../../../agents/polyglot-test-researcher.agent.md \ No newline at end of file diff --git a/plugins/polyglot-test-agent/agents/polyglot-test-tester.md b/plugins/polyglot-test-agent/agents/polyglot-test-tester.md new file mode 100644 index 00000000..aa2c72f6 --- /dev/null +++ b/plugins/polyglot-test-agent/agents/polyglot-test-tester.md @@ -0,0 +1 @@ +../../../agents/polyglot-test-tester.agent.md \ No newline at end of file diff --git a/plugins/polyglot-test-agent/commands/unit-test-generation.md b/plugins/polyglot-test-agent/commands/unit-test-generation.md new file mode 100644 index 00000000..4ab97f22 --- /dev/null +++ b/plugins/polyglot-test-agent/commands/unit-test-generation.md @@ -0,0 +1 @@ +../../../skills/polyglot-test-agent/unit-test-generation.prompt.md \ No newline at end of file diff --git a/plugins/polyglot-test-agent/skills/polyglot-test-agent b/plugins/polyglot-test-agent/skills/polyglot-test-agent new file mode 100644 index 00000000..c03dc1f6 --- /dev/null +++ b/plugins/polyglot-test-agent/skills/polyglot-test-agent @@ -0,0 +1 @@ +../../../skills/polyglot-test-agent \ No newline at end of file From a6550b102558754e57bb1511c20905804c49860d Mon Sep 17 00:00:00 2001 From: Jan Krivanek Date: Mon, 16 Feb 2026 16:23:26 +0100 Subject: [PATCH 10/61] Remove overspecifications --- agents/polyglot-test-builder.agent.md | 2 -- agents/polyglot-test-fixer.agent.md | 2 -- agents/polyglot-test-generator.agent.md | 2 -- agents/polyglot-test-implementer.agent.md | 2 -- agents/polyglot-test-linter.agent.md | 2 -- agents/polyglot-test-planner.agent.md | 2 -- agents/polyglot-test-researcher.agent.md | 2 -- agents/polyglot-test-tester.agent.md | 2 -- skills/polyglot-test-agent/unit-test-generation.prompt.md | 2 -- 9 files changed, 18 deletions(-) diff --git a/agents/polyglot-test-builder.agent.md b/agents/polyglot-test-builder.agent.md index 29f2a563..9c0776d6 100644 --- a/agents/polyglot-test-builder.agent.md +++ b/agents/polyglot-test-builder.agent.md @@ -1,8 +1,6 @@ --- description: 'Runs build/compile commands for any language and reports results. Discovers build command from project files if not specified.' name: 'Polyglot Test Builder' -model: 'Claude Sonnet 4.5' -tools: ['runCommands', 'codebase', 'search'] --- # Builder Agent diff --git a/agents/polyglot-test-fixer.agent.md b/agents/polyglot-test-fixer.agent.md index a2cdf403..47a74561 100644 --- a/agents/polyglot-test-fixer.agent.md +++ b/agents/polyglot-test-fixer.agent.md @@ -1,8 +1,6 @@ --- description: 'Fixes compilation errors in source or test files. Analyzes error messages and applies corrections.' name: 'Polyglot Test Fixer' -model: 'Claude Sonnet 4.5' -tools: ['runCommands', 'codebase', 'editFiles', 'search'] --- # Fixer Agent diff --git a/agents/polyglot-test-generator.agent.md b/agents/polyglot-test-generator.agent.md index 9fc61c04..334ade7e 100644 --- a/agents/polyglot-test-generator.agent.md +++ b/agents/polyglot-test-generator.agent.md @@ -1,8 +1,6 @@ --- description: 'Orchestrates comprehensive test generation using Research-Plan-Implement pipeline. Use when asked to generate tests, write unit tests, improve test coverage, or add tests.' name: 'Polyglot Test Generator' -model: 'Claude Opus 4.5' -tools: ['runCommands', 'codebase', 'editFiles', 'search', 'runSubagent'] --- # Test Generator Agent diff --git a/agents/polyglot-test-implementer.agent.md b/agents/polyglot-test-implementer.agent.md index 7326e2a9..8e5dcc19 100644 --- a/agents/polyglot-test-implementer.agent.md +++ b/agents/polyglot-test-implementer.agent.md @@ -1,8 +1,6 @@ --- description: 'Implements a single phase from the test plan. Writes test files and verifies they compile and pass. Calls builder, tester, and fixer agents as needed.' name: 'Polyglot Test Implementer' -model: 'Claude Sonnet 4.5' -tools: ['runCommands', 'codebase', 'editFiles', 'search', 'runSubagent'] --- # Test Implementer diff --git a/agents/polyglot-test-linter.agent.md b/agents/polyglot-test-linter.agent.md index b1197c31..aefa06aa 100644 --- a/agents/polyglot-test-linter.agent.md +++ b/agents/polyglot-test-linter.agent.md @@ -1,8 +1,6 @@ --- description: 'Runs code formatting/linting for any language. Discovers lint command from project files if not specified.' name: 'Polyglot Test Linter' -model: 'Claude Haiku 4.5' -tools: ['runCommands', 'codebase', 'search'] --- # Linter Agent diff --git a/agents/polyglot-test-planner.agent.md b/agents/polyglot-test-planner.agent.md index 4b1f35c7..cd2fde92 100644 --- a/agents/polyglot-test-planner.agent.md +++ b/agents/polyglot-test-planner.agent.md @@ -1,8 +1,6 @@ --- description: 'Creates structured test implementation plans from research findings. Organizes tests into phases by priority and complexity. Works with any language.' name: 'Polyglot Test Planner' -model: 'Claude Opus 4.5' -tools: ['codebase', 'editFiles', 'search', 'runSubagent'] --- # Test Planner diff --git a/agents/polyglot-test-researcher.agent.md b/agents/polyglot-test-researcher.agent.md index 7db4736c..1c21bf97 100644 --- a/agents/polyglot-test-researcher.agent.md +++ b/agents/polyglot-test-researcher.agent.md @@ -1,8 +1,6 @@ --- description: 'Analyzes codebases to understand structure, testing patterns, and testability. Identifies source files, existing tests, build commands, and testing framework. Works with any language.' name: 'Polyglot Test Researcher' -model: 'Claude Opus 4.5' -tools: ['runCommands', 'codebase', 'editFiles', 'search', 'fetch', 'runSubagent'] --- # Test Researcher diff --git a/agents/polyglot-test-tester.agent.md b/agents/polyglot-test-tester.agent.md index 4d5d416e..92c63f72 100644 --- a/agents/polyglot-test-tester.agent.md +++ b/agents/polyglot-test-tester.agent.md @@ -1,8 +1,6 @@ --- description: 'Runs test commands for any language and reports results. Discovers test command from project files if not specified.' name: 'Polyglot Test Tester' -model: 'Claude Sonnet 4.5' -tools: ['runCommands', 'codebase', 'search'] --- # Tester Agent diff --git a/skills/polyglot-test-agent/unit-test-generation.prompt.md b/skills/polyglot-test-agent/unit-test-generation.prompt.md index 5d74763d..d6f89d98 100644 --- a/skills/polyglot-test-agent/unit-test-generation.prompt.md +++ b/skills/polyglot-test-agent/unit-test-generation.prompt.md @@ -1,7 +1,5 @@ --- -agent: 'agent' description: 'Best practices and guidelines for generating comprehensive, parameterized unit tests with 80% code coverage across any programming language' -model: 'Claude Sonnet 4.5' --- # Unit Test Generation Prompt From c824a3c8b688088548cd234b127b3fa9de7ae062 Mon Sep 17 00:00:00 2001 From: Adrien Clerbois Date: Mon, 16 Feb 2026 22:43:41 +0100 Subject: [PATCH 11/61] Add fluentui-blazor skill Add a new skill for using the Microsoft Fluent UI Blazor component library (Microsoft.FluentUI.AspNetCore.Components v4) in Blazor applications. Includes guidance on setup, component usage, theming, data grids, layout and navigation. --- docs/README.skills.md | 1 + skills/fluentui-blazor/SKILL.md | 231 ++++++++++++++++++ skills/fluentui-blazor/references/DATAGRID.md | 162 ++++++++++++ .../references/LAYOUT-AND-NAVIGATION.md | 173 +++++++++++++ skills/fluentui-blazor/references/SETUP.md | 129 ++++++++++ skills/fluentui-blazor/references/THEMING.md | 103 ++++++++ 6 files changed, 799 insertions(+) create mode 100644 skills/fluentui-blazor/SKILL.md create mode 100644 skills/fluentui-blazor/references/DATAGRID.md create mode 100644 skills/fluentui-blazor/references/LAYOUT-AND-NAVIGATION.md create mode 100644 skills/fluentui-blazor/references/SETUP.md create mode 100644 skills/fluentui-blazor/references/THEMING.md diff --git a/docs/README.skills.md b/docs/README.skills.md index 8dc32a23..7702e4ab 100644 --- a/docs/README.skills.md +++ b/docs/README.skills.md @@ -35,6 +35,7 @@ Skills differ from other primitives by supporting bundled assets (scripts, code | [copilot-sdk](../skills/copilot-sdk/SKILL.md) | Build agentic applications with GitHub Copilot SDK. Use when embedding AI agents in apps, creating custom tools, implementing streaming responses, managing sessions, connecting to MCP servers, or creating custom agents. Triggers on Copilot SDK, GitHub SDK, agentic app, embed Copilot, programmable agent, MCP server, custom agent. | None | | [create-web-form](../skills/create-web-form/SKILL.md) | Create robust, accessible web forms with best practices for HTML structure, CSS styling, JavaScript interactivity, form validation, and server-side processing. Use when asked to "create a form", "build a web form", "add a contact form", "make a signup form", or when building any HTML form with data handling. Covers PHP and Python backends, MySQL database integration, REST APIs, XML data exchange, accessibility (ARIA), and progressive web apps. | `references/accessibility.md`
`references/aria-form-role.md`
`references/css-styling.md`
`references/form-basics.md`
`references/form-controls.md`
`references/form-data-handling.md`
`references/html-form-elements.md`
`references/html-form-example.md`
`references/hypertext-transfer-protocol.md`
`references/javascript.md`
`references/php-cookies.md`
`references/php-forms.md`
`references/php-json.md`
`references/php-mysql-database.md`
`references/progressive-web-app.md`
`references/python-as-web-framework.md`
`references/python-contact-form.md`
`references/python-flask-app.md`
`references/python-flask.md`
`references/security.md`
`references/styling-web-forms.md`
`references/web-api.md`
`references/web-performance.md`
`references/xml.md` | | [excalidraw-diagram-generator](../skills/excalidraw-diagram-generator/SKILL.md) | Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw. | `references/element-types.md`
`references/excalidraw-schema.md`
`scripts/.gitignore`
`scripts/README.md`
`scripts/add-arrow.py`
`scripts/add-icon-to-diagram.py`
`scripts/split-excalidraw-library.py`
`templates/business-flow-swimlane-template.excalidraw`
`templates/class-diagram-template.excalidraw`
`templates/data-flow-diagram-template.excalidraw`
`templates/er-diagram-template.excalidraw`
`templates/flowchart-template.excalidraw`
`templates/mindmap-template.excalidraw`
`templates/relationship-template.excalidraw`
`templates/sequence-diagram-template.excalidraw` | +| [fluentui-blazor](../skills/fluentui-blazor/SKILL.md) | Guide for using the Microsoft Fluent UI Blazor component library (Microsoft.FluentUI.AspNetCore.Components NuGet package) in Blazor applications. Use this when the user is building a Blazor app with Fluent UI components, setting up the library, using FluentUI components like FluentButton, FluentDataGrid, FluentDialog, FluentToast, FluentNavMenu, FluentTextField, FluentSelect, FluentAutocomplete, FluentDesignTheme, or any component prefixed with "Fluent". Also use when troubleshooting missing providers, JS interop issues, or theming. | `references/DATAGRID.md`
`references/LAYOUT-AND-NAVIGATION.md`
`references/SETUP.md`
`references/THEMING.md` | | [gh-cli](../skills/gh-cli/SKILL.md) | GitHub CLI (gh) comprehensive reference for repositories, issues, pull requests, Actions, projects, releases, gists, codespaces, organizations, extensions, and all GitHub operations from the command line. | None | | [git-commit](../skills/git-commit/SKILL.md) | Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions "/commit". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type/scope/description overrides, (4) Intelligent file staging for logical grouping | None | | [github-issues](../skills/github-issues/SKILL.md) | Create, update, and manage GitHub issues using MCP tools. Use this skill when users want to create bug reports, feature requests, or task issues, update existing issues, add labels/assignees/milestones, or manage issue workflows. Triggers on requests like "create an issue", "file a bug", "request a feature", "update issue X", or any GitHub issue management task. | `references/templates.md` | diff --git a/skills/fluentui-blazor/SKILL.md b/skills/fluentui-blazor/SKILL.md new file mode 100644 index 00000000..4d75590e --- /dev/null +++ b/skills/fluentui-blazor/SKILL.md @@ -0,0 +1,231 @@ +--- +name: fluentui-blazor +description: > + Guide for using the Microsoft Fluent UI Blazor component library + (Microsoft.FluentUI.AspNetCore.Components NuGet package) in Blazor applications. + Use this when the user is building a Blazor app with Fluent UI components, + setting up the library, using FluentUI components like FluentButton, FluentDataGrid, + FluentDialog, FluentToast, FluentNavMenu, FluentTextField, FluentSelect, + FluentAutocomplete, FluentDesignTheme, or any component prefixed with "Fluent". + Also use when troubleshooting missing providers, JS interop issues, or theming. +--- + +# Fluent UI Blazor — Consumer Usage Guide + +This skill teaches how to correctly use the **Microsoft.FluentUI.AspNetCore.Components** (version 4) NuGet package in Blazor applications. + +## Critical Rules + +### 1. No manual `