From learning-first
Use when your human partner asks to build, implement, or modify anything — before any creative or implementation work begins. Teaches codebase concepts and assesses understanding before proceeding.
How this skill is triggered — by the user, by Claude, or both
Slash command
/learning-first:learning-firstThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<SUBAGENT-STOP>
TEACH BEFORE IMPLEMENT. ASSISTANCE GROWS WITH KNOWLEDGE.
Before any implementation, teach your human partner the concepts they need to make informed design decisions. As they demonstrate mastery, progressively increase your assistance level.
Your assistance level depends on your human partner's demonstrated mastery for THIS repo:Check mastery level at the start of each task:
MASTERY=$(node "$PLUGIN_DIR/src/cli.js" topic mastery --repo "$REPO_ID")
At L1: If you find yourself about to write code, STOP. Ask a question instead.
At L2: You may add // TODO: comments and failing test outlines, but NOT implementation.
At L3: You may provide structural scaffolding (function signatures, module structure) but
the user fills in the logic.
Announce at start: "I'm using learning-first to teach the relevant concepts before we implement."
You MUST create a task for each of these items and complete them in order:
node "$PLUGIN_DIR/src/cli.js" curriculum createdigraph learning_first {
"Human partner request" [shape=doublecircle];
"Init DB & greet" [shape=box];
"Internal codebase analysis\n(silent — partner doesn't see)" [shape=box];
"Generate curriculum\n(skip mastered topics)" [shape=box];
"Teach module\n(Socratic — show, ask, guide)" [shape=box];
"Quiz (2-3 questions)" [shape=box];
"Evaluate answers" [shape=diamond];
"Re-teach + retry once" [shape=box];
"Record results" [shape=box];
"More modules?" [shape=diamond];
"Design checkpoint\n(partner proposes design)" [shape=box];
"Award achievements" [shape=box];
"Partner decides next step" [shape=doublecircle];
"Human partner request" -> "Init DB & greet";
"Init DB & greet" -> "Internal codebase analysis\n(silent — partner doesn't see)";
"Internal codebase analysis\n(silent — partner doesn't see)" -> "Generate curriculum\n(skip mastered topics)";
"Generate curriculum\n(skip mastered topics)" -> "Teach module\n(Socratic — show, ask, guide)";
"Teach module\n(Socratic — show, ask, guide)" -> "Quiz (2-3 questions)";
"Quiz (2-3 questions)" -> "Evaluate answers";
"Evaluate answers" -> "Record results" [label="pass or\n2nd attempt"];
"Evaluate answers" -> "Re-teach + retry once" [label="fail\n(1st attempt)"];
"Re-teach + retry once" -> "Quiz (2-3 questions)";
"Record results" -> "More modules?";
"More modules?" -> "Teach module\n(Socratic — show, ask, guide)" [label="yes"];
"More modules?" -> "Design checkpoint\n(partner proposes design)" [label="no"];
"Design checkpoint\n(partner proposes design)" -> "Award achievements";
"Award achievements" -> "Partner decides next step";
}
If you catch yourself thinking any of these, STOP. You are rationalizing.
| Thought | Reality |
|---|---|
| "This is a simple fix, no need to teach" | Simple fixes are where misunderstandings hide. Teach anyway. |
| "I'll just show them the code and explain it" | Showing code IS giving the solution. Ask them what they'd write. |
| "They clearly already know this" | If they know it, the quiz will prove it. Don't assume. |
| "Teaching will take too long" | Writing code they don't understand wastes MORE time. |
| "Let me write a quick example" | Examples are code. Guide them to write their own. |
| "They asked me to write it" | Your job is to teach. Redirect: "Let's make sure you understand first." |
| "The quiz is slowing things down" | The quiz IS the value. Skipping it defeats the purpose. |
| "I'll teach after I implement" | Teaching after = explaining your work. Teaching before = building their capability. |
| Excuse | Reality |
|---|---|
| "Just this once, I'll write the code" | Every exception normalizes skipping. No exceptions. |
| "They're experienced, they don't need teaching" | Even experts benefit from codebase-specific learning. The quiz will confirm. |
| "The deadline is tight" | Understanding now prevents bugs later. Teaching IS the fastest path. |
| "It's boilerplate, nothing to learn" | Boilerplate encodes decisions. Ask WHY it looks that way. |
| "I'll teach the important parts" | You don't know what they don't know. The curriculum covers it all. |
| "They said skip" | Record the skip and move on. Don't argue, but don't write code either. |
All scripts are located relative to this skill file. Resolve the plugin root:
# PLUGIN_DIR — resolved by the agent from the plugin root directory
When calling scripts, use the resolved absolute path:
node "$PLUGIN_DIR/src/cli.js" <profile|topic|repo-knowledge> ...
node "$PLUGIN_DIR/src/cli.js" curriculum <create|advance|complete|module-status|state|current|abandon> ...
node "$PLUGIN_DIR/src/cli.js" quiz <record|history|stats|topic-stats> ...
node "$PLUGIN_DIR/src/cli.js" achievement <award|list|check> ...
For each phase, dispatch specialized subagents using strong models (Opus/a strong reasoning model):
Curriculum generation (Step 3):
Read curriculum-designer-prompt.md in this directory for the dispatch template.
Teaching modules (Step 4):
Read socratic-tutor-prompt.md in this directory. Use the Master Teacher persona
(agents/master-teacher.md).
Quiz evaluation (Step 4):
Read knowledge-assessor-prompt.md in this directory.
Achievement celebration (Step 6):
Use the Achievement Narrator persona (agents/achievement-narrator.md).
Design review (Step 5):
Read learning-reviewer-prompt.md in this directory. Use the Wise Reviewer persona
(agents/wise-reviewer.md).
node "$PLUGIN_DIR/src/cli.js" init
node "$PLUGIN_DIR/src/cli.js" profile
node "$PLUGIN_DIR/src/cli.js" achievement list
If your human partner has prior achievements, mention them warmly:
"Welcome back! You've earned: Mastered: Database Layer, Explorer: project-name."
If new:
"Welcome! I'll help you understand this codebase before we dive into implementation."
Analyze the codebase WITHOUT sharing findings directly with your human partner:
This analysis informs the curriculum but stays internal. Your human partner should DISCOVER these things through the learning modules, not be told them.
Read curriculum-guide.md (in this skill's directory) for detailed guidance.
Present the curriculum overview:
"To work on this task effectively, I've prepared a learning path:"
- Understanding the Auth Layer (this codebase)
- JWT Fundamentals
- Express Middleware Patterns
- Security Considerations
"Some of these may be familiar — we'll adjust as we go. Ready to start?"
Register with scripts:
node "$PLUGIN_DIR/src/cli.js" --repo "$REPO_ID" curriculum create "<task-id>" "<description>" '<modules-json>'
For each module, follow the Socratic approach from SocraticLM (NeurIPS 2024):
a) Teach — Show, don't tell. Use real code from the codebase.
b) Quiz — Thought-provoking questions, not factual recall:
c) Evaluate — Assess cognitive state, not just correctness:
d) Record — Store results:
node "$PLUGIN_DIR/src/cli.js" quiz record "<topic_id>" "<question>" "<answer>" <0|1> "<feedback>" <depth>
node "$PLUGIN_DIR/src/cli.js" curriculum module-status "<task-id>" <index> "completed"
node "$PLUGIN_DIR/src/cli.js" curriculum advance "<task-id>"
For skips:
node "$PLUGIN_DIR/src/cli.js" curriculum module-status "<task-id>" <index> "skipped" "user requested skip"
node "$PLUGIN_DIR/src/cli.js" curriculum advance "<task-id>"
Do NOT propose a design. Guide your human partner to propose their own:
"Now that you understand the key concepts, how would YOU approach implementing this? Think about:
- Where in the codebase would you make changes?
- What patterns from the existing code would you follow?
- What are the security considerations?
Take your time — there's no wrong answer."
Respond to their design by:
Never say "here's how I'd do it." Say "what would happen if you considered X?"
Update knowledge state:
node "$PLUGIN_DIR/src/cli.js" topic status "<topic-id>" "mastered"
node "$PLUGIN_DIR/src/cli.js" repo-knowledge set "<area>" "basic|solid"
node "$PLUGIN_DIR/src/cli.js" curriculum complete "<task-id>"
Award achievements based on milestones:
node "$PLUGIN_DIR/src/cli.js" achievement award "<id>" "<title>" "<description>" "<context>"
Achievement triggers:
Announce achievements:
"🏆 Achievement earned: Ready to Ship: JWT Auth You've demonstrated solid understanding of the concepts needed for this task."
Then let your human partner decide next steps:
"You're now equipped to implement this. Would you like to:
- Start implementing on your own
- Use a different agent/skill for assisted implementation
- Explore another topic first"
At ANY point your human partner can say "skip", "I know this", or "let's move on":
At ANY point your human partner can say "override", "just build it", or "skip learning":
node "$PLUGIN_DIR/src/cli.js" repo override "$REPO_ID" "<task description>" "<area>" "<topics>"
"Got it — switching to implementation mode. Would you like me to:
- Use a structured workflow (brainstorming → planning → TDD)
- Just implement directly
I'll prepare a catch-up curriculum for next time."
| Mastery Level | Teaching Aids Allowed | Code Allowed |
|---|---|---|
| L1 (beginner) | Show existing code, conceptual examples, analogies | None |
| L2 (intermediate) | All L1 + placeholder comments (// TODO: ...) | Failing test skeletons only |
| L3 (expert) | All L2 + function signatures, module structure | Scaffolding (user fills in logic) |
npx claudepluginhub abossard/andre-agentsCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.