Get started
Setting up GrillMyCode takes about 15 minutes. The first step is done once for your whole classroom. After that, adding GrillMyCode to another assignment takes about a minute.
What you need
- A Classroom 50 classroom, with permission to change its GitHub organization's settings. Organization owners have this.
- The assignment's template repository, with permission to commit to it.
- An OpenRouter account with a little credit. About $5 US is enough for a large class for a semester with the recommended models. Step 1 walks you through it.
The four steps
- Set up an OpenRouter key. Once per classroom.
- Build your workflow with the Workflow Wizard.
- Add it to your assignment by committing one file to the template repository.
- Check the first run to make sure everything worked.
Prefer to write the workflow yourself?
This is the smallest working workflow. It runs on every push to the main branch and whenever you start it from the Actions tab. Complete step 1 first, then commit this file to the assignment's template repository.
.github/workflows/grill-my-code.yml
name: GrillMyCode
on:
push:
branches: ["main", "master"]
workflow_dispatch:
# A new push cancels any run still in progress for the same branch,
# so only the latest commit is ever assessed.
# Do not modify this setting unless you have a compelling reason to.
concurrency:
group: grillmycode-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
generate-questions:
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: write # gmc-assessments release + PDF asset
issues: write # assessment issue
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0 # full history required for diff resolution
- uses: NSCC-ITC-Assessment/GrillMyCode@v0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
api_key: ${{ secrets.OPENROUTER_API_KEY }}
# If desired, uncomment this input and edit to use a different one —
# any model from https://openrouter.ai/models (provider/model-name).
# ai_model: "google/gemini-3.5-flash-lite"
Every setting is described in Inputs and outputs, and the workflow recipes have ready-made variations.