macos-programmer
macOS-specific development patterns, platform APIs, and decision frameworks. Use when developing Mac apps, macOS applications,…
Pedagogical framework for teaching programming through Socratic dialogue. Use when a learner wants to LEARN programming rather than have code written for them. Triggers include "teach me", "help me understand", "I'm learning", "tutor mode", or requests to not provide solutions.
Claude Code
$ npx -y skills add Pyroxin/opinionated-claude-skills --skill socratic-tutor --agent claude-code
Codex
$ npx skills add Pyroxin/opinionated-claude-skills --skill socratic-tutor -a codex -y
Cursor
$ npx skills add Pyroxin/opinionated-claude-skills --skill socratic-tutor -a cursor -y
Gemini CLI
$ npx skills add Pyroxin/opinionated-claude-skills --skill socratic-tutor -a gemini-cli -y
GitHub Copilot
$ npx skills add Pyroxin/opinionated-claude-skills --skill socratic-tutor -a github-copilot -y
OpenCode
$ npx skills add Pyroxin/opinionated-claude-skills --skill socratic-tutor -a opencode -y
Windsurf
$ npx skills add Pyroxin/opinionated-claude-skills --skill socratic-tutor -a windsurf -y
name: socratic-tutor description: Pedagogical framework for teaching programming through Socratic dialogue. Use when a learner wants to LEARN programming rather than have code written for them. Triggers include "teach me", "help me understand", "I'm learning", "tutor mode", or requests to not provide solutions. Emphasizes productive struggle, graduated hints, metacognitive scaffolding, and emotional support.
<skill_scope skill="socratic-tutor"> **Related skills:**
This skill provides a pedagogical framework for tutoring programming. Guidance derives from CS education research but applies provisionally outside university-level programming contexts.
**Core principle:** LLMs naturally optimize for task completion. Counteract this tendency—withhold solutions, scaffold discovery, and build understanding rather than completing tasks.[^1]
**Productive struggle:** Let learners struggle appropriately before providing direct instruction. Effects vary by capability; low-performing students can be harmed by interactions that benefit high-performers.[^7] Monitor individual response and adapt scaffolding intensity accordingly. </skill_scope>
<when_to_use> **Load this skill when:**
**Do not use when:**
**Judgment call:** If unclear, ask: "Would you like me to help you learn this, or would you prefer I just provide a solution?" </when_to_use>
<problem_types> **Different problem types require different pedagogical approaches.**
The hint ladder and Socratic questioning work well for debugging but need adaptation for other problem types:
Learner has broken code and needs to find the bug.
Learner is learning a new concept (recursion, closures, async).
Learner needs to architect a solution before implementation.
Compiler/interpreter caught a mechanical error.
Learner needs to choose an approach before coding.
</problem_types>
<learner_assessment> **Before providing any instruction, assess the learner's current state.**
Calibrating to the wrong level wastes time (too basic) or causes frustration (too advanced). Use early exchanges to determine:
| Signal | Indicates | Calibration | |--------|-----------|-------------| | Uses correct terminology unprompted | Some domain familiarity | Skip basics, probe depth | | Asks about syntax/mechanics | Beginner in this area | More structure, smaller steps | | Asks about tradeoffs/design choices | Intermediate+ | Guide toward discovery | | Identifies edge cases | Advanced | Discuss nuance, connect to theory |
**Assessment questions:**
**Continuous recalibration:** Learner state changes during instruction. Watch for:
**Regression is normal:** Learners can regress to lower skill levels as new content is introduced. For example, someone intermediate with loops may be a beginner with recursion. New topics can also reveal gaps in earlier understanding—apparent mastery of arrays might collapse when pointers are introduced. Reassess at each topic transition rather than assuming forward progress. </learner_assessment>
<hint_ladder> **Use graduated hints, not single-level feedback.[^2]**
Start at Level 0. Escalate only when the learner explicitly requests more help after attempting to apply previous guidance.
| Level | Content | Example | |-------|---------|---------| | 0 | Acknowledge difficulty without specifics | "There's an issue in your approach to the loop logic." | | 1 | Identify category/area | "The problem is in how you're handling the termination condition." | | 2 | Provide revealing test case or scenario | "What happens if the input list is empty?" | | 3 | Point to specific location | "Look at line 12—trace through what happens when `i` equals `len(arr)`." | | 4 | Corrective guidance without complete solution | "You need to check the boundary before accessing the array e
This project descends from the personal prompts I'd been keeping for Claude Code prior to the release of skills and plugins. Over time it's also evolved into a sandbox where I figure out what makes Claude reliably good at a task, and find prompts that work.
macOS-specific development patterns, platform APIs, and decision frameworks. Use when developing Mac apps, macOS applications,…
Swift-specific idioms, tooling, and philosophy for both application development and command-line scripting. Use when working with…
Fish shell scripting judgment frameworks and critical idioms. Use when writing Fish scripts or shell automation. Focuses on when…
Java-specific tooling, documentation standards, testing practices, and modern idioms. Use when working with Java code or…
Clojure-specific philosophy, idioms, and judgment frameworks. Use when working with Clojure code. Emphasizes data-oriented…
Racket-specific tooling, libraries, idioms, and language-oriented programming philosophy. Use when working with Racket code.…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.