Awesome-omni-skill understando
Pre-commit quiz that tests your understanding of code changes before allowing commits. Use when committing code through Claude Code to ensure engineers understand what they're committing. Requires hook installation - see repository README for setup.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/design/understando" ~/.claude/skills/diegosouzapw-awesome-omni-skill-understando && rm -rf "$T"
skills/design/understando/SKILL.mdUnderstando - Pre-Commit Code Understanding Quiz
You are running a quiz to verify the user understands the code changes they are about to commit.
Setup Required: This skill works best with the understando-gate hook installed. See the repository for hook installation instructions.
Quiz Flow
Step 1: Load Configuration
Read
.understando.json from the project root. If not found, use defaults:
: 5default_questions
: "medium"default_level
: 0.8pass_threshold
Step 2: Get the Diff
Run
git diff --staged to get the changes being committed. If no staged changes, inform the user and exit.
Step 3: Ask Difficulty Level
Prompt the user:
Select quiz difficulty: 1. Easy - Surface-level understanding 2. Medium - Moderate depth, some context required 3. Hard - Deep understanding, edge cases, architectural implications Enter choice (1/2/3) or press Enter for default:
Step 4: Generate Questions
Based on the diff and difficulty level, generate questions that test understanding:
Easy questions test:
- What a function/component does
- What files were modified
- Basic "what changed" comprehension
Medium questions test:
- Why a change was made (intent)
- How the change affects related code
- What the expected behavior is
Hard questions test:
- Edge cases the change might introduce
- Architectural implications
- Potential bugs or issues
- How this integrates with the broader system
Question format mix:
- ~60% multiple choice (4 options, one correct)
- ~40% free-text (short answer)
Present questions one at a time. For multiple choice, show options labeled A-D.
Step 5: Judge Answers
Multiple choice: Exact match (A/B/C/D)
Free-text: Evaluate if the answer demonstrates understanding. Be lenient - accept answers that show comprehension even if not perfectly worded. Look for:
- Key concepts mentioned
- Correct understanding of the change
- Reasonable explanation
Step 6: Calculate Results
After all questions:
- Calculate percentage correct
- If >= pass_threshold: PASS
- If < pass_threshold: FAIL
Step 7: Show Results
If PASSED:
Quiz Complete! You scored X/Y (Z%) Proceeding with commit...
Create a marker file
.understando-passed in the project root, then execute the original commit command. The hook will see this marker and allow the commit through.
If FAILED:
Quiz Complete. You scored X/Y (Z%) You need 80% to pass. Here's what you missed: Question N: [question] Your answer: [their answer] Correct answer: [correct answer or explanation] Why: [brief explanation] [Repeat for each wrong answer] Would you like to try again with new questions? (yes/skip)
- If "yes" or "y": Generate NEW questions (not the same ones), go back to Step 4
- If "skip": Show shame message, create
marker, then execute the commit.understando-passed
Shame Message
When user skips:
Skipping quiz... Remember: Understanding your code changes helps catch bugs early and makes you a better engineer. Consider reviewing the diff before your next commit. Proceeding with commit anyway...
Important Notes
- Generate diverse questions - Don't repeat similar questions across retries
- Be fair but thorough - Questions should be answerable from the diff, not require external knowledge
- Keep it interactive - Wait for user input after each question
- Create marker file - Before committing, create
file so the hook allows the commit through. The hook will automatically delete this file after the commit..understando-passed
Example Questions by Difficulty
Easy:
- "What function was modified in
?" (MCQ)src/utils.js - "How many files were changed in this commit?" (MCQ)
- "What is the new return type of the
function?" (Free-text)calculate
Medium:
- "Why was the error handling added to
?" (Free-text)fetchUser - "Which component will be affected by this props change?" (MCQ)
- "What problem does the new validation logic solve?" (Free-text)
Hard:
- "What edge case could cause the new
function to fail?" (Free-text)parseInput - "How does this change affect the application's state management?" (Free-text)
- "Which of these scenarios would NOT be handled by the new error boundary?" (MCQ)