Contributing
If you’re interested in supporting the Hub’s development and are familiar with Markdown, read on to learn how to contribute to the project.
Contributions are very welcome and appreciated. Be sure to review CONTRIBUTING.md before getting started with your contribution!
Supply chain safety. npm packages can be compromised in supply chain attacks. The Hub uses Socket.dev to detect malicious packages and recommends all contributors do the same. See the Socket Firewall setup section below.
Project Structure
Section titled “Project Structure”This is not the entire project structure, but it’s the most important part of the project structure which we recommend you limit your contributions to.
Directorypublic (images and static assets)
- …
Directorysrc
Directoryassets (official logos)
- …
- components (reusable UI components)
Directorycontent
Directorydocs
Directoryaibusiness/ (AI Business exams)
- …
Directoryazure/ (Azure exams)
- …
Directorydynamics/ (Dynamics exams)
- …
Directorygithub/ (GitHub exams)
- …
Directoryguide/ (certification guides)
- …
Directorylabs/ (hands-on lab guides)
- …
Directorymicrosoft365/ (Microsoft 365 exams)
- …
Directorypower/ (Power Platform exams)
- …
Directorysecurity/ (Security exams)
- …
Directoryvouchers/ (voucher offers)
- …
- contributing.mdx
- labs.mdx
- office.mdx
- privacy.mdx
- supportus.mdx
- vouchers.mdx
- welcome.mdx
- wiki.mdx (Wiki collection)
- blog (blog posts)
- layouts (page layouts)
- pages (routed pages: news, contact, etc.)
- utils (utility functions)
- astro.config.mjs (Astro configuration)
- package.json (project dependencies)
- tsconfig.json (TypeScript configuration)
Directorymcp-worker/ (MCP server worker)
- …
Web-only Contribution
Section titled “Web-only Contribution”While this method is limited in terms of what you should contribute, you can still contribute to the project by adding new text content on existing pages, fixing typos, or improving existing text content.
Requirements
Section titled “Requirements”- Good understanding of Markdown
- Basic understanding of how to use GitHub
- A brain and patience
- A computer and an internet connection
Setting up the project
Section titled “Setting up the project”-
Fork the project to your GitHub account.
-
Navigate to the file you want to edit in the GitHub repository of your fork.
-
Click on the edit icon on the top right corner of the file.
-
Make your changes in the editor.
-
After making changes, scroll down to the bottom of the page and write a short description of the changes you made.
-
Create a pull request to the main repository. Wait for the maintainers to review your pull request.
-
Celebrate when your pull request is merged!
IDE-based Contribution
Section titled “IDE-based Contribution”This method is more advanced and allows you to contribute to the project in a more flexible way. You can add new pages, edit existing pages, and add new components to the Hub. This also allows you to preview your changes locally before submitting a pull request.
Requirements
Section titled “Requirements”- Basic understanding of Markdown and Starlight Components
- Basic understanding of how to use GitHub
- Git installed on your machine
- A brain and patience
- A computer and an internet connection
- A code editor like VSCode or a GitHub’s Codespace
- Optional: Socket.dev CLI for supply chain security
Setting up the project
Section titled “Setting up the project”-
Fork the project, then clone it to your local machine and
cdinto the directory. If you don’t know what any of this means, refer to this video here. -
Install Node.js and pnpm:
macOS / Linux
We recommend using nvm to manage Node.js versions:
Terminal window curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bashnvm install 22Then install pnpm:
Terminal window curl -fsSL https://get.pnpm.io/install.sh | sh -Windows
Download Node.js from nodejs.org or use fnm:
Terminal window winget install Schniz.fnmfnm install 22Then install pnpm:
Terminal window iwr https://get.pnpm.io/install.ps1 -useb | iex -
Install dependencies:
Terminal window pnpm installpnpm approve-builds(
pnpm approve-buildsapproves optional native build scripts required by some dependencies.) -
Start the dev server:
Terminal window pnpm dev -
Open your browser and navigate to
http://localhost:4321to see the project running. -
After making changes, make sure you’re not breaking anything by previewing your changes locally. If there are no errors, commit your changes and push them to your forked repository.
-
Create a pull request to the main repository. Wait for the maintainers to review your pull request.
-
Celebrate when your pull request is merged!
Socket.dev Firewall (Optional)
Section titled “Socket.dev Firewall (Optional)”The Hub uses Socket.dev to detect supply chain attacks in npm packages. Setting up aliases lets you use pnpm as normal while scanning every install automatically.
First, install the Socket CLI globally:
npm i -g sfwThen configure shell aliases for your platform:
macOS / Linux (Bash / Zsh)
Section titled “macOS / Linux (Bash / Zsh)”Add to ~/.bashrc or ~/.zshrc:
alias npm="sfw npm"alias yarn="sfw yarn"alias pnpm="sfw pnpm"alias npx="sfw npx"Then run source ~/.bashrc (or ~/.zshrc) to apply.
Windows (PowerShell)
Section titled “Windows (PowerShell)”Add to your PowerShell profile ($PROFILE):
function pnpm { sfw pnpm @args }function npm { sfw npm @args }function npx { sfw npx @args }Restart PowerShell to apply. Now pnpm install runs through Socket automatically.
VSCode Support
Section titled “VSCode Support”We recommend using VSCode or GitHub Codespaces for contributing. The repo includes a pre-configured .vscode/settings.json with Markdown paste and drop settings.
Recommended extensions:
Where to begin?
Section titled “Where to begin?”If you’re new to the project, you can start by fixing typos, adding new studying resources, or improving existing guides. This will help you get familiar with the project structure and the way content is written.
Here are some resources that will help you understand how the Hub works better: