projectgrade
Grade student project repositories based on Git commits, GitHub Issues, and Pull Requests
Skill by georgernstgraf
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/georgernstgraf-projectgrade
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/projectgrade
What's inside
- Skill name
projectgrade- Description
- Grade student project repositories based on Git commits, GitHub Issues, and Pull Requests
- License
- MIT
- Compatibility
- opencode
- Metadata
- scope: execution · category: education
- Instructions
- 401 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- body: contains an absolute path from the author's machine
Files (2)
- REPORT-FORMAT.md
- SKILL.md
SKILL.md (first lines)
# Projectgrade Skill
## Purpose
This skill grades student Git repositories for collaborative project work where
students contribute via branches, Pull Requests, and GitHub Issues. It evaluates
code contributions (via Git commits), issue management (creation, editing,
commenting, quality), pull request activity (creation, reviews, merging), and
further measurable contributions (wiki, CI/CD, testing, documentation, project
management).
Unlike `repograde`, this skill does NOT use assignments (Aufgaben) or the
assignment discovery sources.
Student identification is derived exclusively from Git commit email addresses,
then mapped to student names via the uploadthing database.
## Output Language: MANDATORY GERMAN
Follow the `grading-shared` **Output Language** rule: natural German with proper
UTF-8 umlauts (ä, ö, ü, ß), never English.
## Dependencies
This skill relies on `grading-shared` for: address style, email formulas,
second-person address rules, database lookup, email JSON structure,
repository analysis protocol, and reporting protocol.
## Differences from repograde
- Invoked from INSIDE the project Git repository (not from a local folder).
- No assignment discovery required (project grading, not per-lesson assignments).
- Evaluates GitHub Issues participation and Pull Request activity.
- Student identification from Git commit emails only.
- Issue quality, PR reviews, and collaboration factor into grading.
- Single project mode (no bulk grading).
- Holistic assessment approach (no rigid numeric weights).
## Execution Context
This skill is invoked directly as a skill (no standalone command). It MUST be
invoked from within the Git repository being evaluated. Calling this skill from
outside a Git repository is an error.
The skill grades a single collaborative project repository where multiple
students contribute via branches, Pull Requests, and GitHub Issues by:
1. Verifying we are inside a Git repository (error if not).
2. Using `git pull` to ensure the latest version is checked out.
3. Inspecting the repository content and Git history for grading.
4. Querying GitHub API for issue and PR metadata (creation, edits, comments, reviews, merges).
5. Detecting further measurable contributions (wiki, CI/CD, tests, docs, project management).
6. Mapping contributor email addresses to student names via uploadthing.db.
## Input
- `--gh-token`: GitHub token for API access (optional, defaults to environment).
Behavior:
- This skill operates on the current Git repository (CWD must be a Git repo).
- No repository path argument is needed; we are already inside the project.
## Protocol
1. Verify we are in a Git repository. If not, STOP IMMEDIATELY with error.
2. Run `git pull` to verify latest version is checked out.
3. Run `git status` to check for uncommitted changes. If found, stop immediately.
4. Derive the output stem from `basename "$(git rev-parse --show-toplevel)"` or
the current directory name.
5. Extract all unique contributor email addresses from git commits.
6. Query the uploadthing database to map emails to student names.
7. Analyze repository contributions (see Repository Analysis section).
8. Analyze GitHub Issues participation (see Issue Analysis section).
9. Analyze Pull Request activity (see Pull Request Analysis section).
10. Detect further measurable contributions (see Further Contributions section).
11. Apply holistic grading philosophy (see Holistic Grading Philosophy section).
12. Generate `<basename>_grading.md` as the repository grading report in German.
13. Generate `<basename>_email.json` as a JSON array with student entries,
following `grading-shared` structure and using German body text.
## Repository Analysis
Inspect repository content directly from within the current Git repository.
### Pre-Grading Verification
Before inspecting repository content, verify repository state:
1. Verify we are inside a Git repository:
```bash
git rev-parse --is-inside-work-tree
```
If this returns `false` or errors, STOP IMMEDIATELY and report to user.
2. Run `git pull` to ensure latest version is checked out.
3. Run `git status` to check for uncommitted changes.
4. If uncommitted changes exist, STOP IMMEDIATELY and report to user.
5. If pull fails or reports errors, STOP IMMEDIATELY and report to user.
### Git Commit Analysis
Extract all unique contributor email addresses:
```bash
git log --all --format='%ae' | sort -u
```
For each contributor, collect commit statistics:
```bash
git log --all --author='<email>' --format='%H' | wc -l # commit count
git log --all --author='<email>' --format='' --numstat | awk '{added+=$1; deleted+=$2} END {print added, deleted}'
```
### Branch Analysis
- Enumerate all branches: `git branch -a`
- Count commits per branch per author.
- Identify significant non-main branch contributions.
- Note branch naming patterns and merge activity.From georgernstgraf/opencode-helpers, MIT.
More from georgernstgraf/opencode-helpers
- 0.592score
full-sync
georgernstgraf
Full sync routine: pull all working repositories, let the agent decide what uncommitted work to commit and what to push, then bring the host up to date — apt…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
knowledge-exam
georgernstgraf
Generate German knowledge-check exams and solution files from the taught material (class Git history + WebUntis Lehrstoff)
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
homework
georgernstgraf
Generate per-lesson assignment files (Aufgabe.md) from recent class Git history and teaching material, and keep the canonical assignment list in the cohort…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
issue-workflow
georgernstgraf
Continuous issue awareness with proactive issue-linked commit and push; natural-language modes (start, commit, finish) remain as manual overrides
SkillAFreshness: A★ 1Claude Code +9 - 0.581score
knowledge-persistence
georgernstgraf
Persist session context into the structured docs/ai knowledge files
SkillAFreshness: A★ 1Claude Code +9 - 0.581score
knowledge-assessment
georgernstgraf
Assess German knowledge-check submissions and prepare reports and email payloads
SkillAFreshness: A★ 1Claude Code +9 - 0.579score
create-lesson
georgernstgraf
Richtet zu einem Kompetenzmodul (KM) oder einem Thema daraus eine kohortenagnostische Lesson her (self-contained HTML: Lektion und Präsentation in einem —…
SkillAFreshness: A★ 1Claude Code +9 - 0.578score
lehrplan
georgernstgraf
Richtet österreichische HTL-Unterrichts-Repositorien ein und pflegt sie — drei Kernaufgaben: das gesetzliche Lehrplan-Material eines Ausbildungszweigs (z.
SkillAFreshness: A★ 1Claude Code +9 - 0.578score
model-params
georgernstgraf
Maintain scripts/model-params.json, the curated parameter-count table behind `oc-models-report`'s PARAM column and `--sort params`.
SkillAFreshness: A★ 1Claude Code +9 - 0.568score
grading-shared
georgernstgraf
Shared configuration and protocols for all grading workflows
SkillAFreshness: A★ 1Claude Code +9 - 0.522score
code-review
georgernstgraf
Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this repo's documented coding…
SkillBFreshness: B★ 1Claude Code +9 - 0.522score
domain-modeling
georgernstgraf
Build and sharpen a project's domain model.
SkillBFreshness: B★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 4
- Last commit (this folder)
- Oct 12, 2026 (17 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from georgernstgraf
- 0.592score
full-sync
georgernstgraf
Full sync routine: pull all working repositories, let the agent decide what uncommitted work to commit and what to push, then bring the host up to date — apt…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
homework
georgernstgraf
Generate per-lesson assignment files (Aufgabe.md) from recent class Git history and teaching material, and keep the canonical assignment list in the cohort…
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
knowledge-exam
georgernstgraf
Generate German knowledge-check exams and solution files from the taught material (class Git history + WebUntis Lehrstoff)
SkillAFreshness: A★ 1Claude Code +9 - 0.584score
issue-workflow
georgernstgraf
Continuous issue awareness with proactive issue-linked commit and push; natural-language modes (start, commit, finish) remain as manual overrides
SkillAFreshness: A★ 1Claude Code +9 - 0.581score
knowledge-assessment
georgernstgraf
Assess German knowledge-check submissions and prepare reports and email payloads
SkillAFreshness: A★ 1Claude Code +9 - 0.581score
knowledge-persistence
georgernstgraf
Persist session context into the structured docs/ai knowledge files
SkillAFreshness: A★ 1Claude Code +9
Cite this page
projectgrade skill. Agent Mart. https://agentmart.dev/skills/georgernstgraf-projectgrade (last updated 2026-10-24)