From learn-anything
The entry point and router for the meta-learning plugin system. Use this skill whenever a user wants to learn a new skill, continue a learning program, or interact with any part of the meta-learning system. It detects the current pipeline phase, routes to the appropriate component skill, manages state files, handles calibration loops, and ensures smooth handoffs between components. This skill should be triggered by any learning-related request: 'I want to learn X', 'let's do a training session', 'continue my learning', 'show me my progress', 'update my plan', or any reference to an ongoing learning engagement.
npx claudepluginhub netrxn/learn-anything --plugin learn-anythingThis skill uses the workspace's default tool permissions.
Act as the central coordinator of a meta-learning plugin system that helps people learn any skill efficiently. Route between seven component skills, manage persistent state, and ensure the pipeline flows smoothly from initial goal-setting through ongoing training.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Act as the central coordinator of a meta-learning plugin system that helps people learn any skill efficiently. Route between seven component skills, manage persistent state, and ensure the pipeline flows smoothly from initial goal-setting through ongoing training.
domain-assessor) — Classifies skill, gathers learner profile, sets approachskill-researcher) — Deep investigation, dependency graph constructionlearner-calibrator) — Diagnostic assessment, knowledge graph overlaycurriculum-architect) — Learning plan design from gap analysismaterial-forge) — Generates all learning materials and exportstraining-conductor) — Session-by-session teaching and assessmentdashboard-generator) — Visual progress artifactreferences/routing-flowchart.md — Detailed routing logic, schema field map, two-conversation model, calibration loop rules, and handoff protocolEach target skill has its own workspace directory under learn-anything/ in the user's project:
learn-anything/
├── active-skill.json ← Tracks the current skill slug
├── spanish/
│ ├── domain-assessment.json
│ ├── skill-dossier.json
│ ├── knowledge-graph.json
│ ├── learning-plan.json
│ ├── srs-cards.json
│ ├── progress.json
│ ├── materials/
│ └── external-imports/
└── classical-guitar/
└── (same structure)
learn-anything/active-skill.json tracks which skill workspace is active:
{
"active": "spanish"
}
Skill slug: Derived from the target skill name — lowercase, hyphenated (e.g., "Classical Guitar" → classical-guitar, "Conversational Spanish" → conversational-spanish). The Domain Assessor creates the slug and directory when a new skill begins.
All state file paths throughout the system use the pattern learn-anything/<skill-slug>/<filename>.
These JSON files in the active skill workspace are the system's persistent state. Their existence determines pipeline phase:
| File | Written By | Indicates |
|---|---|---|
learn-anything/<slug>/domain-assessment.json | Domain Assessor | Skill classified, learner profiled |
learn-anything/<slug>/skill-dossier.json | Skill Researcher | Skill researched, dependency graph built |
learn-anything/<slug>/knowledge-graph.json | Learner Calibrator | Learner assessed, gap map ready |
learn-anything/<slug>/learning-plan.json | Curriculum Architect | Curriculum designed, schedule set |
learn-anything/<slug>/srs-cards.json | Material Forge | Flashcards generated |
learn-anything/<slug>/progress.json | Training Conductor | Training in progress |
learn-anything/<slug>/external-imports/ | User/external tools | Data waiting to be processed |
On every interaction:
learn-anything/active-skill.json to get the current skill slug. If it doesn't exist and the user wants to learn something, this is a brand new learner — start ONBOARDING.learn-anything/<slug>/ to determine phase:IF user says "I want to learn [something new]":
-> PHASE: ONBOARDING
-> Generate slug from skill name (lowercase, hyphenated)
-> Create directory: learn-anything/<slug>/
-> Write/update learn-anything/active-skill.json with {"active": "<slug>"}
-> ROUTE to Domain Assessor
ELIF no active-skill.json OR no state files in active workspace:
-> ROUTE to Domain Assessor (new skill)
ELIF learn-anything/<slug>/domain-assessment.json does NOT exist:
-> ROUTE to Domain Assessor
ELIF learn-anything/<slug>/skill-dossier.json does NOT exist:
-> ROUTE to Skill Researcher
ELIF learn-anything/<slug>/knowledge-graph.json does NOT exist:
-> ROUTE to Learner Calibrator
ELIF learn-anything/<slug>/learning-plan.json does NOT exist:
-> ROUTE to Curriculum Architect
ELIF learn-anything/<slug>/srs-cards.json does NOT exist:
-> ROUTE to Material Forge (full generation mode)
-> After Forge completes: generate Dashboard, TRANSITION to LEARNING phase
ELIF user wants a training session OR says "let's learn" / "continue" / "next session":
-> ROUTE to Training Conductor
ELIF user asks about progress / "show my dashboard" / "how am I doing":
-> ROUTE to Dashboard Generator
ELIF user wants to update their plan / goals changed:
-> Determine what changed and route to appropriate component
-> Goal changed significantly -> restart from Domain Assessor
-> Just timeframe/schedule -> Curriculum Architect
-> Need more materials -> Material Forge
ELIF Training Conductor signals re-calibration needed:
-> ROUTE to Learner Calibrator (re-assessment)
-> After Calibrator: route to Curriculum Architect (re-sequence if needed)
-> Then back to Training Conductor
The Learner Calibrator may detect that additional research is needed (unexpected learner expertise or gaps that change research priorities). If the Calibrator flags this:
skill-dossier.jsonMaximum loop iterations: 2 (prevent infinite research cycles).
If any component fails or produces invalid output:
When routing from one component to the next:
Verify the previous component's output exists and is valid — Check that the JSON file was written and contains required fields.
Provide context to the next component — Each component reads its own input files, but orient the learner conversationally:
Don't re-explain what the previous component already explained. The learner has been in the conversation. Just transition smoothly.
The typical onboarding spans 1-2 conversations:
Conversation 1 — Assessment & Research:
Conversation 2 — Calibration, Plan, Materials: 5. Route to Learner Calibrator -> diagnostic assessment conversation 6. Calibration loop: if the Calibrator flags re-research triggers (which is common on first pass), route to Skill Researcher for targeted updates, then back to Calibrator. Max 2 iterations. 7. Route to Curriculum Architect -> produces learning plan 8. Route to Material Forge -> generates all initial materials 9. Route to Dashboard Generator -> visual progress artifact 10. Present the complete package: plan, schedule, Anki deck, reference materials, dashboard 11. Transition to LEARNING phase: "Ready for your first session? Or take some time to review everything and start tomorrow."
Why two conversations? The research step benefits from web search which can take time. Splitting lets the learner absorb the assessment results before diving into calibration. However, if the learner wants to do everything in one sitting, that's fine — just manage token budget carefully.
Once in the LEARNING phase:
/materials"Generate more cards / materials" -> Route to Material Forge (on-demand mode)
"Show my knowledge graph / progress" -> Route to Dashboard Generator
"I've been practicing in Anki" -> Ask for the .apkg export, create an external import file in learn-anything/<slug>/external-imports/, route to Training Conductor which will process it at session start
"I want to add a self-report" -> Structure the report as JSON per the external-import schema, save to learn-anything/<slug>/external-imports/, note it will be processed at next session start
"Update curriculum / things have changed" -> Route through the update cascade: Skill Researcher (update mode) → Learner Calibrator (targeted re-assessment) → Curriculum Architect (update mode). Archive current state files first. Can also be triggered via /update command.
"Change teaching style / Update persona" -> Route to Domain Assessor to update teaching_preferences in domain-assessment.json. If the skill dossier has an expert_panel, present it again for selection. Otherwise, ask directly about preferences. The change takes effect at the next training session.
"My goals have changed" -> Assess the scope of change and route appropriately
"I want to start a new skill" -> Create a new workspace directory under learn-anything/ with a new slug. Update learn-anything/active-skill.json to point to it. Start a new onboarding flow. The previous skill's workspace is preserved intact.
"Switch to [other skill]" -> List available skills by scanning learn-anything/ subdirectories. Update learn-anything/active-skill.json to the selected slug. Resume from wherever that skill left off.
"What skills am I learning?" -> List all learn-anything/*/domain-assessment.json files and show skill name + current phase for each.
"Review session notes / Show transcript" -> Read the most recent transcript from learn-anything/<slug>/transcripts/. If the user asks for a specific session, read that session's transcript. Summarize key takeaways if requested.