{
  "markdown": "# minerva-rubric-feedback\n\n[![MIT License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![npm version](https://img.shields.io/npm/v/minerva-rubric-feedback.svg)](https://www.npmjs.com/package/minerva-rubric-feedback)\n[![Claude Code](https://img.shields.io/badge/platform-Claude%20Code-blue.svg)](https://docs.claude.com/en/docs/claude-code/overview)\n[![Cursor](https://img.shields.io/badge/platform-Cursor-purple.svg)](https://cursor.so)\n[![Codex](https://img.shields.io/badge/platform-Codex-black.svg)](https://openai.com/codex)\n[![Gemini CLI](https://img.shields.io/badge/platform-Gemini%20CLI-orange.svg)](https://github.com/google-gemini/gemini-cli)\n\nA cross-platform AI plugin that gives structured feedback on rubric (HC / LO) applications in Minerva assignment PDFs or Google Docs.\n\nFor each tagged rubric it evaluates three dimensions:\n- **(a) Body** — does the body text actually demonstrate the HC, or is the tag performative?\n- **(b) Footnote** — Strong / Adequate / Weak, with specific reasoning\n- **(c) Past professor feedback** — did you address what was flagged in prior assignments?\n\n**Features:**\n- Multi-agent discipline evaluation — AH, CS, NS, SS parallel Sonnet agents\n- Grammar and typo checks — parallel Haiku agents\n- Google Drive / Docs integration — read assignments by URL or title\n- Cross-platform — Claude Code, Cursor, Codex, Gemini CLI\n\n---\n\n## Installation\n\nRun this in your project directory:\n\n```bash\nnpx minerva-rubric-feedback\n```\n\nInstalls all platform files automatically:\n- **Claude Code**: `.claude/skills/rubric-feedback/` + `CLAUDE.md` + hooks\n- **Cursor**: `.cursor/rules/rubric-feedback.mdc`\n- **Codex**: `AGENTS.md`\n- **Gemini CLI**: `GEMINI.md`\n\nThen install Playwright (needed to scrape past assignment feedback):\n\n```bash\npip install playwright && playwright install chromium\n```\n\n---\n\n## Usage\n\n### Claude Code\n\n```bash\nclaude\n```\n\n```\n/rubric-feedback\n/rubric-feedback audience,thesis,levelsofanalysis\n/rubric-feedback https://docs.google.com/document/d/<id>/edit\n/rubric-feedback https://docs.google.com/document/d/<id>/edit https://forum.minerva.edu/app/assignment-grader/<id>\n/rubric-feedback \"Week 6 Policy Essay\"\n/rubric-feedback \"Week 6 Policy Essay\" https://forum.minerva.edu/app/assignment-grader/<id>\n```\n\n### Cursor\n\n```\n@rubric-feedback\n@rubric-feedback audience,thesis,levelsofanalysis\n@rubric-feedback https://docs.google.com/document/d/<id>/edit\n@rubric-feedback https://docs.google.com/document/d/<id>/edit https://forum.minerva.edu/app/assignment-grader/<id>\n@rubric-feedback \"Week 6 Policy Essay\"\n@rubric-feedback \"Week 6 Policy Essay\" https://forum.minerva.edu/app/assignment-grader/<id>\n```\n\n### Codex / Gemini CLI\n\n```\nrubric-feedback\nrubric-feedback audience,thesis,levelsofanalysis\nrubric-feedback https://docs.google.com/document/d/<id>/edit\nrubric-feedback https://docs.google.com/document/d/<id>/edit https://forum.minerva.edu/app/assignment-grader/<id>\nrubric-feedback \"Week 6 Policy Essay\"\nrubric-feedback \"Week 6 Policy Essay\" https://forum.minerva.edu/app/assignment-grader/<id>\n```\n\n---\n\n## Architecture\n\n**Claude Code**\n```\nAssignment (local PDF or Google Drive)\n        │\n        ├── [Hook] Grammar  (Haiku) ─── fires before skill, async\n        ├── [Hook] Typo     (Haiku) ─── fires before skill, async\n        │\n        ├── Step 2: Scrape past professor feedback (Minerva URLs → Playwright)\n        │\n        ├── Steps 3–6: Read assignment, detect #rubric tags, load rubric definitions\n        │             + load professor feedback\n        │\n        └── Step 7: 4 parallel subagents\n                ├── AH Agent   (Sonnet) — Arts & Humanities HCs\n                ├── CS Agent   (Sonnet) — Computational Sciences HCs\n                ├── NS Agent   (Sonnet) — Natural Sciences HCs\n                └── SS Agent   (Sonnet) — Social Sciences HCs\n                        │\n                        └── Coordinator (Sonnet) → unified CLI output\n                              (merges discipline results + hook grammar/typo output)\n```\n\n**Cursor / Codex / Gemini CLI**\n```\nAssignment (local PDF or Google Drive)\n        │\n        ├── Step 2: Scrape past professor feedback (Minerva URLs → Playwright)\n        │\n        ├── Steps 3–6: Read assignment, detect #rubric tags, load rubric definitions\n        │             + load professor feedback\n        │\n        └── Step 7: 6 parallel subagents\n                ├── AH Agent   (Sonnet / Pro)  — Arts & Humanities HCs\n                ├── CS Agent   (Sonnet / Pro)  — Computational Sciences HCs\n                ├── NS Agent   (Sonnet / Pro)  — Natural Sciences HCs\n                ├── SS Agent   (Sonnet / Pro)  — Social Sciences HCs\n                ├── Grammar    (Haiku / Flash) — grammar errors\n                └── Typo       (Haiku / Flash) — typos & spelling\n                        │\n                        └── Coordinator (Sonnet / Pro) → unified CLI output\n```\n\n---\n\n## Google Drive Setup\n\nAuthenticate Google Drive MCP to read assignments from Drive:\n\n- **Claude Code**: `/mcp` → select \"claude.ai Google Drive\"\n- **Cursor**: add to `.cursor/mcp.json`:\n  ```json\n  {\n    \"mcpServers\": {\n      \"google-drive\": {\n        \"url\": \"https://drivemcp.googleapis.com/mcp/v1\"\n      }\n    }\n  }\n  ```\n- **Codex / Gemini**: configure Google Drive OAuth in your MCP client\n\n---\n\n## Supported rubrics\n\n**Cross-disciplinary (M100)**\n`#audience` `#thesis` `#composition` `#connotation` `#constraints` `#levelsofanalysis` `#purpose`\n\n**AH — Arts & Humanities**\n`#persuasion` `#multimedia` `#designthinking` `#context` `#critique` `#interpretivelens` `#evidencebased` `#sourcequality` `#organization` `#professionalism` `#communicationdesign` `#expression` `#medium`\n\n**CS — Computational Sciences**\n`#algorithms` `#optimization` `#confidenceintervals` `#correlation` `#descriptivestats` `#distributions` `#probability` `#regression` `#significance` `#decisiontrees` `#utility` `#gametheory` `#variables` `#deduction` `#fallacies` `#induction` `#estimation`\n\n**NS — Natural Sciences**\n`#dataviz` `#casestudy` `#comparisongroups` `#interventionalstudy` `#interviewsurvey` `#observationalstudy` `#sampling` `#studyreplication` `#hypothesisdevelopment` `#modeling` `#analogies` `#heuristics` `#scienceoflearning` `#biasidentification` `#biasmitigation` `#breakitdown` `#gapanalysis` `#rightproblem` `#plausibility` `#testability`\n\n**SS — Social Sciences**\n`#shapingbehavior` `#systemmapping` `#emergentproperties` `#complexcausality` `#networks` `#systemdynamics` `#negotiate` `#ethicalconsiderations` `#ethicalcourage` `#ethicaljudgment` `#conformity` `#differences` `#emotionaliq` `#leadprinciples` `#powerdynamics` `#responsibility` `#selfawareness` `#strategize` `#psychologicalexplanation`\n\nTo add a new rubric: see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n---\n\n## Requirements\n\n- Node.js ≥ 14 (for `npx`)\n- Python 3 + Playwright (for scraping past feedback)\n- One of: Claude Code, Cursor, Codex, or Gemini CLI\n\n---\n\n## Project structure after install\n\n```\nyour-project/\n├── assignment/                          ← drop your PDF here\n├── scripts/\n│   └── scrape-feedback.py\n├── .claude/\n│   ├── settings.json                    ← hooks (grammar/typo agents)\n│   └── skills/rubric-feedback/\n│       ├── SKILL.md\n│       ├── agents/\n│       │   ├── discipline-agent.md\n│       │   └── coordinator-agent.md\n│       └── references/\n│           ├── rubrics/                 ← HC definitions\n│           └── past-assignments/        ← auto-generated by scraper\n├── .cursor/rules/rubric-feedback.mdc   ← Cursor\n├── AGENTS.md                            ← Codex\n├── GEMINI.md                            ← Gemini CLI\n└── CLAUDE.md                            ← context compaction rules\n```\n",
  "bytes": 7710,
  "sha": "9c0cb767b61d647929adb4bf855b26e395388543191895c44aff14de0d6e2c97",
  "repo_slug": "jiholyxhit/minerva-rubric-feedback",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_jiholyxhit_minerva_rubric_feedback_e52282c5/readme"
}