This guide covers everything you need to write questions for ghcertified. Questions are parsed by mdquiz — a Markdown quiz parser.
- One question per file
- Name:
question-XXX.md(zero-padded, e.g.question-042.md) - Place in the right directory:
questions/en/actions/questions/en/admin/questions/en/advanced_security/questions/en/agentic/questions/en/copilot/questions/en/foundations/
---
question: "Which GitHub Actions syntax correctly defines a job that runs on Ubuntu?"
documentation: "https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on"
---
- [x] `runs-on: ubuntu-latest`
- [ ] `os: ubuntu-latest`
- [ ] `platform: ubuntu-latest`
- [ ] `environment: ubuntu-latest`That's it — frontmatter with question, a documentation link, and answers. Everything else below is optional.
The question field is required. The documentation field is optional — use it for a link to official GitHub documentation.
---
question: "Your question text here"
documentation: "https://docs.github.com/en/..."
---The documentation link shows as a "Learn more" link after the user answers the question.
Do not include phrases like "Select 2" or "Choose 3" in the question text — the app handles answer count display automatically.
Use Markdown list items with checkboxes. Mark correct answers with [x], incorrect with [ ].
Single-select — exactly one [x]:
- [x] Correct answer
- [ ] Wrong answer
- [ ] Wrong answer
- [ ] Wrong answerMulti-select — two or more [x]:
- [x] First correct answer
- [x] Second correct answer
- [ ] Wrong answer
- [ ] Wrong answerAim for 2–6 answer options.
Answers are automatically shuffled in the application . You don't need to worry about the position of correct answers in your markdown file. Placing correct answers first (as shown in the examples above) is a recommended practice to improve readability.
Add a blockquote (>) on the line immediately after an answer to explain why it's correct or incorrect. These are optional and help learners understand the reasoning.
- [ ] Scheduled workflows run on the specific commit on last modified branch.
> incorrect, both specific commit and on last modified branch
- [x] Scheduled workflows run on the latest commit on the repository default branch.
- [ ] Scheduled workflows run on the latest commit on the main branch.
> latest commit is correct but the main branch is notKeep explanations short — one line is ideal.
Explanations support inline Markdown: backtick code spans (`code`), markdown links ([text](url)), and bare URLs are rendered as clickable links.
- [x] Use `GITHUB_TOKEN` for authentication
> See [authentication docs](https://docs.github.com/en/actions/security-guides/automatic-token-authentication) for more detailsAdd a fenced code block between the frontmatter and the answers. It renders above the answer options.
---
question: "What is the effect of adding the `paths-ignore` keyword to this workflow?"
documentation: "https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning"
---
```yaml
on:
pull_request:
branches: [main]
paths-ignore:
- '**/*.md'
- '**/*.txt'
```
- [x] Avoids unnecessary scans when irrelevant files change
- [ ] Tells CodeQL to omit all `.txt` and `.md` files from analysis
- [ ] Prevents CodeQL from running on matching pull requestsCode blocks can also appear inside individual answer options:
- [x] By including one of these keywords in the commit message:
```yaml
[skip ci]
[ci skip]
[no ci]
```
- [ ] By setting `SKIP_WORKFLOW` in the commit message- Write clear, specific questions that test one concept
- Include a
documentationlink to official GitHub docs in frontmatter - Create plausible wrong answers based on common misconceptions
- Use inline code formatting for technical terms (
`runs-on`,`GITHUB_TOKEN`) - Keep the question text concise
- Copy questions from official GitHub certification exams
- Write trick questions or use misleading wording
- Use "All of the above" or "None of the above" as options
- Include phrases like "Select 2" or "Choose the correct answer" in the question text
- Write joke answers that are obviously wrong
Questions are parsed by FidelusAleksander/mdquiz. See its README for the full specification of supported Markdown syntax.