├── .devcontainer └── devcontainer.json ├── .editorconfig ├── .gitattributes ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── custom_chat_mode_proposal.yml │ ├── prompt_file_proposal.yml │ ├── update_custom_chat_mode.yml │ └── update_prompt_file.yml ├── PULL_REQUEST_TEMPLATE.md ├── copilot-instructions.md └── prompts │ └── update_markdown_file_index.prompt.md ├── .gitignore ├── .vscode ├── launch.json ├── mcp.json └── settings.json ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── chatmodes ├── 4.1-Beast.chatmode.md ├── README.md ├── accesibility.chatmode.md ├── api-architect.chatmode.md ├── azure-principal-architect.chatmode.md ├── azure-saas-architect.chatmode.md ├── azure-verified-modules-bicep.chatmode.md ├── azure-verified-modules-terraform.chatmode.md ├── clojure-interactive-programming.chatmode.md ├── critical-thinking.chatmode.md ├── csharp-dotnet-janitor.chatmode.md ├── debug.chatmode.md ├── demonstrate-understanding.chatmode.md ├── developer-flow-gpt-4-1.chatmode.md ├── developer-flow-gpt-5.chatmode.md ├── developer-flow-sonnet-4.chatmode.md ├── electron-angular-native.chatmode.md ├── expert-dotnet-software-engineer.chatmode.md ├── expert-react-frontend-engineer.chatmode.md ├── gilfoyle.chatmode.md ├── implementation-plan.chatmode.md ├── janitor.chatmode.md ├── mentor.chatmode.md ├── meta-agentic-project-scaffold.chatmode.md ├── microsoft_learn_contributor.chatmode.md ├── ms-sql-dba.chatmode.md ├── plan.chatmode.md ├── planner.chatmode.md ├── postgresql-dba.chatmode.md ├── prd.chatmode.md ├── principal-software-engineer.chatmode.md ├── prompt-engineer.chatmode.md ├── refine-issue.chatmode.md ├── research-technical-spike.chatmode.md ├── rust-gpt-4.1-beast-mode.chatmode.md ├── semantic-kernel-dotnet.chatmode.md ├── semantic-kernel-python.chatmode.md ├── simple-app-idea-generator.chatmode.md ├── software-engineer-agent-v1.chatmode.md ├── specification.chatmode.md ├── tech-debt-remediation-plan.chatmode.md ├── voidbeast-gpt41enhanced.chatmode.md ├── wg-code-alchemist.chatmode.md └── wg-code-sentinel.chatmode.md ├── images ├── auto-update-copilot-instructions.png ├── run-custom-prompt-file.png └── select-custom-chat-mode.png ├── instructions ├── README.md ├── ai-prompt-engineering-safety-best-practices.instructions.md ├── angular.instructions.md ├── aspnet-rest-apis.instructions.md ├── azure-developer-solution-accelerator.md ├── azure-functions-typescript.instructions.md ├── bicep-code-best-practices.instructions.md ├── blazor.instructions.md ├── cmake-vcpkg.instructions.md ├── containerization-docker-best-practices.instructions.md ├── copilot-thought-logging.instructions.md ├── csharp-14-best-practices.instructions.md ├── csharp-best-practices.instructions.md ├── csharp.instructions.md ├── devops-core-principles.instructions.md ├── dotnet-architecture-good-practices.instructions.md ├── dotnet-maui.instructions.md ├── genaiscript.instructions.md ├── generate-modern-terraform-code-for-azure.instructions.md ├── gilfoyle-code-review.instructions.md ├── github-actions-ci-cd-best-practices.instructions.md ├── go.instructions.md ├── java.instructions.md ├── joyride-user-project.instructions.md ├── joyride-workspace-automation.instructions.md ├── kubernetes-deployment-best-practices.instructions.md ├── localization.instructions.md ├── markdown.instructions.md ├── memory-bank.instructions.md ├── ms-sql-dba.instructions.md ├── nextjs-tailwind.instructions.md ├── nodejs-javascript-vitest.instructions.md ├── performance-optimization.instructions.md ├── playwright-typescript.instructions.md ├── power-platform-connector.instructions.md ├── powershell.instructions.md ├── python.instructions.md ├── quarkus-mcp-server-sse.instructions.md ├── quarkus.instructions.md ├── reactjs.instructions.md ├── ruby-on-rails.instructions.md ├── security-and-owasp.instructions.md ├── self-explanatory-code-commenting.instructions.md ├── spec-driven-workflow-v1.instructions.md ├── springboot.instructions.md ├── sql-sp-generation.instructions.md ├── taming-copilot.instructions.md ├── tanstack-start-shadcn-tailwind.instructions.md └── vuejs3.instructions.md ├── mcp └── mcp.json ├── prompts ├── README.md ├── ai-prompt-engineering-safety-review.prompt.md ├── aspnet-minimal-api-openapi.prompt.md ├── az-cost-optimize.prompt.md ├── azure-resource-health-diagnose.prompt.md ├── comment-code-generate-a-tutorial.prompt.md ├── create-architectural-decision-record.prompt.md ├── create-github-action-workflow-specification.prompt.md ├── create-github-issue-feature-from-specification.prompt.md ├── create-github-issues-feature-from-implementation-plan.prompt.md ├── create-github-issues-for-unmet-specification-requirements.prompt.md ├── create-implementation-plan.prompt.md ├── create-llms.prompt.md ├── create-oo-component-documentation.prompt.md ├── create-readme.prompt.md ├── create-specification.prompt.md ├── create-spring-boot-java-project.prompt.md ├── create-spring-boot-kotlin-project.prompt.md ├── create-technical-spike.prompt.md ├── csharp-async.prompt.md ├── csharp-docs.prompt.md ├── csharp-mstest.prompt.md ├── csharp-nunit.prompt.md ├── csharp-tunit.prompt.md ├── csharp-xunit.prompt.md ├── dotnet-best-practices.prompt.md ├── dotnet-design-pattern-review.prompt.md ├── ef-core.prompt.md ├── gen-specs-as-issues.prompt.md ├── java-docs.prompt.md ├── java-junit.prompt.md ├── java-springboot.prompt.md ├── javascript-typescript-jest.prompt.md ├── kotlin-springboot.prompt.md ├── multi-stage-dockerfile.prompt.md ├── my-issues.prompt.md ├── my-pull-requests.prompt.md ├── next-intl-add-language.prompt.md ├── review-aac-multitenant-service-specific-guidance.prompt.md ├── review-and-refactor.prompt.md ├── suggest-awesome-github-copilot-chatmodes.prompt.md ├── suggest-awesome-github-copilot-collections.prompt.md ├── suggest-awesome-github-copilot-instructions.prompt.md ├── suggest-awesome-github-copilot-prompts.prompt.md ├── suggest-github-copilot-chatmodes.prompt.md ├── suggest-github-copilot-prompts.prompt.md ├── update-avm-modules-in-bicep.prompt.md ├── update-implementation-plan.prompt.md ├── update-llms.prompt.md ├── update-markdown-file-index.prompt.md ├── update-oo-component-documentation.prompt.md └── update-specification.prompt.md └── update-readme.js /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "github-copilot-assets-library", 3 | "image": "mcr.microsoft.com/devcontainers/base:ubuntu-22.04", 4 | // Minimal features required for repository maintenance (markdown + scripts) 5 | "features": { 6 | "ghcr.io/devcontainers/features/git:1": { 7 | "version": "latest" 8 | }, 9 | "ghcr.io/devcontainers/features/github-cli:1": { 10 | "version": "latest" 11 | }, 12 | // Retain Node to run helper scripts like update-readme.js 13 | "ghcr.io/devcontainers/features/node:1": { 14 | "version": "lts" 15 | } 16 | }, 17 | "customizations": { 18 | "vscode": { 19 | "extensions": [ 20 | "GitHub.copilot", 21 | "GitHub.copilot-chat", 22 | "GitHub.vscode-github-actions", 23 | "GitHub.vscode-pull-request-github", 24 | "davidanson.vscode-markdownlint", 25 | "ms-azuretools.vscode-azure-github-copilot" 26 | ] 27 | } 28 | }, 29 | "remoteUser": "vscode" 30 | } 31 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # All files 7 | [*] 8 | indent_style = space 9 | indent_size = 2 10 | end_of_line = lf 11 | charset = utf-8 12 | trim_trailing_whitespace = true 13 | insert_final_newline = true 14 | 15 | # Markdown files 16 | [*.md] 17 | trim_trailing_whitespace = false 18 | max_line_length = off 19 | 20 | # JSON files 21 | [*.json] 22 | indent_size = 2 23 | 24 | # JavaScript files 25 | [*.js] 26 | indent_size = 2 27 | 28 | # Shell scripts 29 | [*.sh] 30 | end_of_line = lf 31 | 32 | # Windows scripts 33 | [*.{cmd,bat}] 34 | end_of_line = crlf 35 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set default behavior to automatically normalize line endings. 2 | * text=auto eol=lf 3 | 4 | # Explicitly declare text files to be normalized and converted to native line endings on checkout. 5 | *.md text eol=lf 6 | *.txt text eol=lf 7 | *.js text eol=lf 8 | *.json text eol=lf 9 | *.yml text eol=lf 10 | *.yaml text eol=lf 11 | *.html text eol=lf 12 | *.css text eol=lf 13 | *.scss text eol=lf 14 | *.ts text eol=lf 15 | *.sh text eol=lf 16 | 17 | # Windows-specific files that should retain CRLF line endings 18 | *.bat text eol=crlf 19 | *.cmd text eol=crlf 20 | 21 | # Binary files that should not be modified 22 | *.png binary 23 | *.jpg binary 24 | *.jpeg binary 25 | *.gif binary 26 | *.ico binary 27 | *.zip binary 28 | *.pdf binary 29 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Global code ownership 2 | # This file defines individuals or teams that are responsible for code in this repository. 3 | # When Dependabot creates pull requests, these code owners will be automatically requested for review. 4 | 5 | # Default owners for everything in the repo 6 | * @PlagueHO 7 | 8 | # Configuration files 9 | *.json @PlagueHO 10 | *.yml @PlagueHO 11 | *.yaml @PlagueHO 12 | 13 | # Documentation 14 | *.md @PlagueHO 15 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | # Pull Request 2 | 3 | ## Type of Change 4 | 5 | 8 | - [ ] New Custom Chat Mode 9 | - [ ] New Prompt File 10 | - [ ] Update Existing Chat Mode 11 | - [ ] Update Existing Prompt File 12 | - [ ] MCP Server Configuration 13 | - [ ] Documentation Update 14 | - [ ] Bug Fix 15 | - [ ] Other (specify below) 16 | 17 | ## Asset Details 18 | 19 | 22 | 23 | ### For New/Updated Chat Modes 24 | 25 | - **Chat Mode Name**: 26 | - **Target Domain/Technology**: 27 | - **Tools Required**: 28 | 29 | ### For New/Updated Prompt Files 30 | 31 | - **Prompt File Name**: 32 | - **Prompt Mode**: 33 | - **Target Use Case**: 34 | 35 | ## Description 36 | 37 | 43 | 44 | ## Testing 45 | 46 | 52 | 53 | ## Examples 54 | 55 | 58 | 59 | ### Sample Usage 60 | 61 | ```text 62 | 63 | 64 | ``` 65 | 66 | ### Expected Behavior 67 | 68 | 71 | 72 | ## Quality Checklist 73 | 74 | - [ ] I have read the [contributing guidelines](CONTRIBUTING.md) 75 | - [ ] My contribution follows the repository's file naming conventions 76 | - [ ] I have included proper YAML front matter (for .chatmode.md and .prompt.md files) 77 | - [ ] I have tested my contribution in VS Code with GitHub Copilot 78 | - [ ] My chat mode includes appropriate tools for its functionality 79 | - [ ] My prompt file uses proper variable syntax (`${input:VariableName}`) 80 | - [ ] I have provided clear examples and use cases 81 | - [ ] I have updated the README.md if adding a new asset 82 | - [ ] My contribution is self-contained and well-documented 83 | 84 | ## Compatibility and Standards 85 | 86 | - [ ] My contribution follows GitHub Copilot best practices 87 | - [ ] I have considered accessibility and usability 88 | - [ ] My content uses professional, inclusive language 89 | - [ ] I have avoided proprietary or organization-specific information 90 | - [ ] My contribution works across different development environments 91 | 92 | ## Community Value 93 | 94 | 100 | 101 | ## Related Issues 102 | 103 | 109 | 110 | ## Additional Notes 111 | 112 | 119 | -------------------------------------------------------------------------------- /.github/copilot-instructions.md: -------------------------------------------------------------------------------- 1 | This is a GitHub Copilot Assets Library that provides customization assets including Copilot Instructions, Prompt Files, Custom Chat Modes, and MCP Server configurations. 2 | 3 | ## Core Commands 4 | 5 | - **Documentation**: Use README.md as the primary source - contains comprehensive asset descriptions 6 | - **No build/test commands**: This is a documentation/asset library with no compiled code 7 | - **File validation**: Ensure Markdown syntax is valid for `.chatmode.md`, `.prompt.md` and `.instruction.md` files 8 | 9 | ## Repository Architecture 10 | 11 | ### Major Components 12 | - `.github/copilot-instructions.md` - Repository-level Copilot instructions (n) 13 | - `/prompts/` - Reusable prompt files for common tasks 14 | - `/chatmodes/` - Custom chat modes with specialized instructions and tools 15 | - `/instructions/` - Custom instruction files for Copilot 16 | - `/mcp/` - Sample Model Context Protocol (MCP) server configurations for external integrations 17 | - `.devcontainer/` - Development container for standardized environment 18 | 19 | ### Key Asset Types 20 | - **Prompt Files**: Task-specific prompts (create specs, GitHub issues, code reviews) 21 | - **Chat Modes**: Specialized modes (expert engineers, planners, mentors, Azure modules) 22 | - **MCP Servers**: External integrations (Microsoft Docs, GitHub, Playwright, Giphy, Azure DevOps) 23 | 24 | ## Style Rules 25 | 26 | ### File Naming 27 | - Chat modes: `[descriptive-name].chatmode.md` 28 | - Prompts: `[descriptive-name].prompt.md` 29 | - Instructions: `[descriptive-name].instructions.md` 30 | - Use lowercase with hyphens for file names 31 | 32 | ### Markdown Standards 33 | - Follow front matter YAML structure exactly as shown in examples 34 | - Use proper heading hierarchy (# ## ###) 35 | - Include description and tools array in chat mode front matter 36 | - Include mode and description in prompt file front matter 37 | 38 | ### Content Guidelines 39 | - **Precise Language**: Use explicit, unambiguous instructions 40 | - **Structured Format**: Use headings, bullets, tables for clarity 41 | - **No Boilerplate**: Avoid generic advice, focus on specific guidance 42 | - **Self-Contained**: Each asset should be complete and context-independent 43 | 44 | ## Repository-Specific Rules 45 | 46 | ### Chat Mode Development 47 | - Always include comprehensive tool arrays based on functionality needs 48 | - Structure instructions in clear sections with specific guidance 49 | - Reference industry experts/thought leaders for authority (e.g., Martin Fowler, Uncle Bob) 50 | - Specify target frameworks and versions explicitly 51 | 52 | ### Prompt File Standards 53 | - Include variable substitution using `${input:VariableName}` syntax 54 | - Provide clear task descriptions and expected outcomes 55 | - Follow specification template structure for consistency 56 | - Include examples and edge cases where applicable 57 | 58 | ### Commit Message Format 59 | Follow VSCode settings pattern: 60 | - First line: `[TYPE]: [50 char summary]` where TYPE is CHORE|FIX|CHANGE|BREAKING CHANGE|TESTS|SECURITY|COMPLEX 61 | - Second line: blank 62 | - Following lines: detailed summary with `-` bullets, prefix with `SECURITY:` or `BREAKING CHANGE:` as needed 63 | 64 | ### Development Practices 65 | - Use .NET 8+ patterns and modern C# features when applicable 66 | - Follow Azure Well-Architected Framework pillars for infrastructure guidance 67 | - Prioritize security, operational excellence, performance, reliability, cost optimization 68 | - Reference Microsoft documentation and packages preferentially 69 | - Use MSTest, FluentAssertions, Moq for testing examples 70 | 71 | This library serves as a reference implementation for GitHub Copilot customizations across various development scenarios. 72 | 73 | ## Code Review 74 | When performing a code review: 75 | - validate that there are changes in the `README.md` file that match the changes in the pull request. If there are no changes, or if the changes do not match, then the pull request is not ready to be merged. 76 | - ensure that the values in the front matter are wrapped in single quotes. 77 | - ensure that the `description` field in the front matter is not empty. 78 | - on a `.instructions.md` file, ensure there is an `applyTo` property in the front matter that specifies the file or files to which the instructions apply. -------------------------------------------------------------------------------- /.github/prompts/update_markdown_file_index.prompt.md: -------------------------------------------------------------------------------- 1 | --- 2 | mode: 'agent' 3 | description: 'Update a markdown file section with an index/table of files from a specified folder.' 4 | tools: ['changes', 'codebase', 'editFiles', 'extensions', 'fetch', 'findTestFiles', 'githubRepo', 'openSimpleBrowser', 'problems', 'runCommands', 'runTasks', 'runTests', 'search', 'searchResults', 'terminalLastCommand', 'terminalSelection', 'testFailure', 'updateUserPreferences', 'usages', 'vscodeAPI', 'ado'] 5 | --- 6 | 7 | Update markdown file `${file}` with an index/table of files from folder `${input:folder}`. 8 | 9 | ## Process 10 | 1. **Scan**: Read the target markdown file `${file}` to understand existing structure 11 | 2. **Discover**: List all files in the specified folder `${input:folder}` matching pattern `${input:pattern}` 12 | 3. **Analyze**: Identify if an existing table/index section exists to update, or create new structure 13 | 4. **Structure**: Generate appropriate table/list format based on file types and existing content 14 | 5. **Update**: Replace existing section or add new section with file index 15 | 6. **Validate**: Ensure markdown syntax is valid and formatting is consistent 16 | 17 | ## File Analysis 18 | For each discovered file, extract: 19 | - **Name**: Filename with or without extension based on context 20 | - **Type**: File extension and category (e.g., `.md`, `.js`, `.py`) 21 | - **Description**: First line comment, header, or inferred purpose 22 | - **Size**: File size for reference (optional) 23 | - **Modified**: Last modified date (optional) 24 | 25 | ## Table Structure Options 26 | Choose format based on file types and existing content: 27 | 28 | ### Option 1: Simple List 29 | ```markdown 30 | ## Files in ${folder} 31 | 32 | - [filename.ext](path/to/filename.ext) - Description 33 | - [filename2.ext](path/to/filename2.ext) - Description 34 | ``` 35 | 36 | ### Option 2: Detailed Table 37 | 38 | | File | Type | Description | 39 | |------|------|-------------| 40 | | [filename.ext](path/to/filename.ext) | Extension | Description | 41 | | [filename2.ext](path/to/filename2.ext) | Extension | Description | 42 | 43 | ### Option 3: Categorized Sections 44 | Group files by type/category with separate sections or sub-tables. 45 | 46 | ## Update Strategy 47 | - 🔄 **Update existing**: If table/index section exists, replace content while preserving structure 48 | - ➕ **Add new**: If no existing section, create new section using best-fit format 49 | - 📋 **Preserve**: Maintain existing markdown formatting, heading levels, and document flow 50 | - 🔗 **Links**: Use relative paths for file links within the repository 51 | 52 | ## Section Identification 53 | Look for existing sections with these patterns: 54 | - Headings containing: "index", "files", "contents", "directory", "list" 55 | - Tables with file-related columns 56 | - Lists with file links 57 | - HTML comments marking file index sections 58 | 59 | ## Requirements 60 | - Preserve existing markdown structure and formatting 61 | - Use relative paths for file links 62 | - Include file descriptions when available 63 | - Sort files alphabetically by default 64 | - Handle special characters in filenames 65 | - Validate all generated markdown syntax 66 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | // Use IntelliSense to find out which attributes exist for C# debugging 6 | // Use hover for the description of the existing attributes 7 | // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md 8 | "name": ".NET Core Launch (web)", 9 | "type": "coreclr", 10 | "request": "launch", 11 | "preLaunchTask": "build", 12 | // If you have changed target frameworks, make sure to update the program path. 13 | "program": "${workspaceFolder}/src/game-master-copilot/game-master-copilot-server/bin/Debug/net7.0/game-master-copilot-server.dll", 14 | "args": [], 15 | "cwd": "${workspaceFolder}/src/game-master-copilot/game-master-copilot-server", 16 | "stopAtEntry": false, 17 | // Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser 18 | "serverReadyAction": { 19 | "action": "openExternally", 20 | "pattern": "\\bNow listening on:\\s+(https?://\\S+)" 21 | }, 22 | "env": { 23 | "ASPNETCORE_ENVIRONMENT": "Development" 24 | }, 25 | "sourceFileMap": { 26 | "/Views": "${workspaceFolder}/Views" 27 | } 28 | }, 29 | { 30 | "name": ".NET Core Attach", 31 | "type": "coreclr", 32 | "request": "attach" 33 | } 34 | ] 35 | } -------------------------------------------------------------------------------- /.vscode/mcp.json: -------------------------------------------------------------------------------- 1 | { 2 | "inputs": [], 3 | "servers": { 4 | "context7": { 5 | "type": "stdio", 6 | "command": "npx", 7 | "args": [ 8 | "-y", 9 | "@upstash/context7-mcp@latest" 10 | ] 11 | }, 12 | "github": { 13 | "url": "https://api.githubcopilot.com/mcp/", 14 | "type": "http" 15 | }, 16 | "playwright": { 17 | "command": "npx", 18 | "args": [ 19 | "-y", 20 | "@playwright/mcp@latest" 21 | ], 22 | "type": "stdio", 23 | "env": {} 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "chat.modeFilesLocations": { 3 | "chatmodes": true 4 | }, 5 | "chat.promptFilesLocations": { 6 | "prompts": true 7 | }, 8 | "chat.instructionsFilesLocations": { 9 | "instructions": true 10 | }, 11 | "files.eol": "\n", 12 | "files.insertFinalNewline": true, 13 | "files.trimTrailingWhitespace": true, 14 | "[markdown]": { 15 | "files.trimTrailingWhitespace": false, 16 | "editor.formatOnSave": true 17 | }, 18 | "editor.rulers": [ 19 | 100 20 | ], 21 | // "files.associations": { 22 | // "*.chatmode.md": "markdown", 23 | // "*.instructions.md": "markdown", 24 | // "*.prompt.md": "markdown" 25 | // }, 26 | "github.copilot.chat.commitMessageGeneration.instructions": [ 27 | { 28 | "text": "The first line should be summary of no more than 50 characters starting with classification of commit from: `CHORE:`|`FIX:`|`CHANGE:`|`BREAKING CHANGE:`|`TESTS:`|`SECURITY:`|`COMPLEX:`. The second line should be blank. The following lines should be the full summary with each item starting with a `-`. Any summary item that is security related should start with `SECURITY:`. Any summary item change that causes a breaking change to a feature/interface/dependency should start with `BREAKING CHANGE:`" 29 | } 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at . All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at [http://contributor-covenant.org/version/1/4][version] 72 | 73 | [homepage]: http://contributor-covenant.org 74 | [version]: http://contributor-covenant.org/version/1/4/ 75 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Daniel Scott-Raynsford 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /chatmodes/accesibility.chatmode.md: -------------------------------------------------------------------------------- 1 | --- 2 | description: 'Accessibility mode.' 3 | model: GPT-4.1 4 | tools: ['changes', 'codebase', 'editFiles', 'extensions', 'fetch', 'findTestFiles', 'githubRepo', 'new', 'openSimpleBrowser', 'problems', 'runCommands', 'runTasks', 'runTests', 'search', 'searchResults', 'terminalLastCommand', 'terminalSelection', 'testFailure', 'usages', 'vscodeAPI'] 5 | title: 'Accessibility mode' 6 | --- 7 | 8 | ## ⚠️ Accessibility is a Priority in This Project 9 | 10 | All code generated for this project must adhere to the Web Content Accessibility Guidelines (WCAG) 2.1. Accessibility is not an afterthought—it is a core requirement. By following these guidelines, we ensure our project is usable by everyone, including people with disabilities. 11 | 12 | ## 📋 Key WCAG 2.1 Guidelines 13 | 14 | When generating or modifying code, always consider these four core principles: 15 | 16 | ### 1. Perceivable 17 | Information and user interface components must be presentable to users in ways they can perceive. 18 | 19 | - **Provide text alternatives** for non-text content (images, icons, buttons) 20 | - **Provide captions and alternatives** for multimedia 21 | - **Create content** that can be presented in different ways without losing information 22 | - **Make it easier** for users to see and hear content by separating foreground from background 23 | 24 | ### 2. Operable 25 | User interface components and navigation must be operable. 26 | 27 | - **Make all functionality available** from a keyboard 28 | - **Give users enough time** to read and use content 29 | - **Do not use content** that causes seizures or physical reactions 30 | - **Provide ways** to help users navigate and find content 31 | - **Make it easier** to use inputs other than keyboard 32 | 33 | ### 3. Understandable 34 | Information and the operation of user interface must be understandable. 35 | 36 | - **Make text readable** and understandable 37 | - **Make content appear and operate** in predictable ways 38 | - **Help users avoid and correct mistakes** with clear instructions and error handling 39 | 40 | ### 4. Robust 41 | Content must be robust enough to be interpreted reliably by a wide variety of user agents, including assistive technologies. 42 | 43 | - **Maximize compatibility** with current and future user tools 44 | - **Use semantic HTML** elements appropriately 45 | - **Ensure ARIA attributes** are used correctly when needed 46 | 47 | ## 🧩 Code Reminders for Accessibility 48 | 49 | ### HTML Reminders 50 | - Always include appropriate semantic HTML elements (`