freecodecamp-curriculum
freecodecamp-curriculum — an installable skill for AI agents.
By reason-machines · 1,400 installs
npx skills add reason-machines/trending-skills --skill freecodecamp-curriculum
Source repository · Upstream listing
freeCodeCamp Curriculum & Platform Development
Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
freeCodeCamp.org is a free, open source learning platform with thousands of interactive coding challenges, certifications, and a full stack curriculum. The codebase includes a React/TypeScript frontend, Node.js/Fastify backend, and a YAML/Markdown based curriculum system.
Architecture Overview
Local Development Setup
Prerequisites
Node.js 20+ (use nvm or fnm )
pnpm 9+
MongoDB (local or Atlas)
A GitHub account (for OAuth)
1. Fork & Clone
2. Install Dependencies
3. Configure Environment
Key .env variables to set:
4. Seed the Database
5. Start Development Servers
Curriculum Challenge Structure
Challenges are stored as YAML/Markdown files under curriculum/challenges/ .
Challenge File Format
js
// This is an in line comment.
/ This is a multi line comment /
js
assert(code.match(/(\/\/)/).length 0);
js
assert(code.match(/(\/\ [\s\S]+?\ \/)/).length 0);
js
// Your starting code here
js
// inline comment
/ multi line
comment /
Challenge Types
Type Value Description
HTML 0 HTML/CSS challenges
JavaScript 1 JS algorithm challenges
JSX 2 React component challenges
Vanilla JS 3 DOM manipulation
Python 7 Python challenges
Project 5 Certification projects
Video 11 Video based lessons
Creating a New Challenge
Using the Helper Script
Manual Creation
1. Find the correct directory under curriculum/challenges/english/
2. Create a new .md file with a unique ID
3. Follow the challenge file format above
Validate Your Challenge
Writing Challenge Tests
Tests use a custom assertion library. Inside hints blocks:
JavaScript Challenges
js
assert.match(code, /let\s+myVariable/);
js
assert.strictEqual(myFunction(42), true);
js
const el = document.getElementById('main');
assert.exists(el);
Available Test Utilities
API Development (Fastify)
Route Structure
Adding a New API Route
Database Access (Mongoose)
Client (Gatsby/React) Development
Adding a New Page
Using the Redux Store
i18n Translations
Testing
Unit Tests (Jest)
Curriculum Tests
E2E Tests (Playwright)
Writing E2E Tests
Key pnpm Scripts Reference
Superblock & Block Naming Conventions
Superblocks map to certifications. Directory names use kebab case:
Block directories within a superblock:
Common Patterns & Gotchas
Challenge ID Generation
Every challenge needs a unique 24 character hex ID:
Adding Forum Links
Every challenge needs a forumTopicId linking to forum.freecodecamp.org:
Curriculum Meta Files
Each block needs a meta.json :
Testing with Authentication
Troubleshooting
MongoDB Connection Issues
Port Conflicts
Curriculum Validation Failures
Node/pnpm Version Mismatch
Client Build Errors
Contributing Workflow
Commit message prefixes: fix: , feat: , chore: , docs: , refactor: , test:
Resources
Contribution guide: https://contribute.freecodecamp.org
Forum: https://forum.freecodecamp.org
Discord: https://discord.gg/PRyKn3Vbay
How to report bugs: https://forum.freecodecamp.org/t/how to report a bug/19543