learn.ninja

mcp
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: Apache-2.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Uyari
  • process.env — Environment variable access in apps/mobile/app.config.ts
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Vibe learn anything: your AI agent turns an article, doc, or code into a short interactive lesson with a shareable link.

README.md

learn.ninja

learn.ninja

Vibe learn anything with your agent.

Give your AI agent an article, notes, docs, a transcript, or code. It writes one short, interactive lesson and gives you a link to share. Free, no account.

CI License: Apache-2.0 Docs

Website · Docs · Try a lesson · Contributing

A learn.ninja lesson: a multiple-choice question about compound interest, answered correctly, with the ninja saying “Guessed well. Let's see why.”

Make a lesson

Install the skill in your agent (Claude Code, Codex, Cursor, Gemini CLI, and more):

npx skills add https://learn.ninja -g

Then ask it for a lesson from anything: "Make me a lesson from this article", "Teach my team how our deploy works", "Quiz me on chapter 3". The agent writes the lesson, checks it, and publishes it to a link that plays in any browser.

Chat apps (Claude, ChatGPT) connect to the MCP server at https://learn.ninja/mcp instead. The docs cover both.

What a lesson is

A lesson is made of katas, one per screen, Duolingo- or Brilliant-style: concept katas teach, and question katas (choice, compare, hotspot, sort, order, match, blank, scenario) check what stuck, with instant feedback and hints from the ninja. Lessons are written in any language, right-to-left included, and play on phones.

A lesson's title screen on a phone: How compound interest works, 7 minutes, beginner A concept kata on a phone explaining compound interest with the formula A = P(1 + r)^n A wrong answer on a phone with a hint: work out year 1 first, then use that as the new starting amount
Every lesson plays on phones A concept kata teaches one idea A wrong answer gets a hint, not the answer

Try the example lessons (their files are in examples/):

This repository is the whole thing: the website, the lesson player, the lesson format, the learn command, and the skill agents install.

Run it locally

You need Node 24 (see .nvmrc) and npm. Nothing else: no database, no accounts, no keys.

npm install
npm run dev

The web app runs at http://localhost:3000: the home page, the docs at /docs, and the test lessons at /lessons/{slug}. Lessons you publish locally are kept in PGlite (Postgres in WebAssembly) under apps/web/.data/pglite, rate limits are counted in memory, and sign-in codes and feedback are printed to the server console. .env.example lists the variables a hosted deployment uses; none of them are needed here.

To publish to your local server from an agent, set LEARN_API_URL=http://localhost:3000 before running the skill.

Commands

Command What it does
npm run dev Start the web app (webpack)
npm run check Lint, type-check, and tests across every package. Run it after every change; CI runs it too, plus a production build
npm run build Production build
npm run storybook Storybook at http://localhost:6006, with every kata type in every state
npm run skill:build -w @workspace/cli Rebuild skills/learn (bundled CLI, schema, examples) after changing the spec, the CLI, or the examples
npm run schema -w @workspace/spec Re-export packages/spec/schema/lesson.schema.json after changing the spec
npm run map -w @workspace/player Rebuild the map visual's country shapes from Natural Earth
npm run bento -w web Redraw the home page's lesson visuals after changing apps/web/lib/bento-visuals.ts
npm run favicon -w web Rebuild the favicon from apps/web/app/icon.svg
npm run share -w web Re-render the share images in brand/

A test fails when a generated file is stale, so npm run check tells you which of these to run.

Structure

Path What it is
apps/web Next.js app: home page, docs, lesson player pages, publish API, MCP server
apps/storybook Storybook for the player and UI components
docs/ The docs pages, as Markdown and MDX
packages/spec The lesson format: Zod schema, JSON Schema, and the checker's rules
packages/player The lesson screens and every kata
packages/ui shadcn/ui components on React Aria, shared styles
packages/db The Postgres schema (Drizzle) and its migrations
packages/cli The learn command: sync, validate, and publish lessons
skills/learn The installable lesson skill and its teaching guide
examples/ Test lessons, used as fixtures

Contributing

learn.ninja is built by a few people, so help goes a long way. These are the places we'd most like it:

  • Languages: translate the player's interface into your language, or fix right-to-left issues.
  • Visuals: new map regions, charts, diagrams, chess boards, molecules.
  • Sounds and motion: better sound effects, transitions, and celebration moments.
  • The teaching guide: help agents write better lessons, and add example lessons.
  • Docs, bugs, and accessibility: always welcome as a pull request, no proposal needed.

New to the code? Pick one of the good first issues. Changes to the lesson format, new kata types, agent round trips, and the ninja's voice start as an Idea issue. CONTRIBUTING.md has the details, the conventions, and how review works; agent-written pull requests are welcome too.

Found a security issue? See SECURITY.md. Everyone taking part follows the Code of Conduct.

License

The code is Apache-2.0. The example lessons in examples/ and the docs in docs/ are CC-BY-4.0. The learn.ninja name, the logo, the files in brand/, and the ninja character are trademarks of Uxcel Inc; see TRADEMARK.md for what forks may and may not do with them.

Yorumlar (0)

Sonuc bulunamadi