
Freecodecamp Curriculum
Contribute curriculum challenges, certifications, or local dev setup to the freeCodeCamp open-source monorepo with correct folder and tooling conventions.
Overview
freeCodeCamp curriculum is an agent skill most often used in Build (also Validate scope for curriculum design) that guides contributors through freeCodeCamp’s challenge system, repo layout, and local setup.
Install
npx skills add https://github.com/aradotso/trending-skills --skill freecodecamp-curriculumWhat is this skill?
- Maps monorepo layout: Fastify `api/`, Gatsby/React `client/`, YAML/Markdown `curriculum/`
- Covers challenge-helper-scripts and shared `ui-components` tooling paths
- Addresses local development environment setup for contributors
- Explains how certifications and nested `challenges/english/` curricula are organized
- Supports writing challenge tests and understanding the challenge system
- freeCodeCamp.org hosts thousands of interactive coding challenges and certifications in an open-source codebase.
- Monorepo layout includes `api/` (Fastify), `client/` (Gatsby/React), and `curriculum/` (YAML/Markdown challenges).
Adoption & trust: 1.3k installs on skills.sh; 31 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want to contribute to freeCodeCamp but the monorepo, curriculum YAML structure, and challenge test tooling feel overwhelming without a map.
Who is it for?
Developers donating time to freeCodeCamp who need a fast architectural orientation before editing curriculum or API/client code.
Skip if: Learners only taking certifications on the public site without cloning the repository or authoring new challenges.
When should I use this skill?
User asks to contribute to freeCodeCamp, add curriculum challenges, set up locally, understand the challenge system, or write challenge tests.
What do I get? / Deliverables
You can set up the stack locally, place new challenges under the right certification paths, and use helper tooling aligned with freeCodeCamp’s contribution conventions.
- Locally running freeCodeCamp dev environment
- New or updated curriculum challenge files and tests aligned with repo structure
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Primary shelf is Build because work happens inside the freeCodeCamp product codebase and curriculum artifacts. Docs fits YAML/Markdown challenge authoring, certification structure, and contributor-facing platform documentation.
Where it fits
Outline a new certification track and map which challenge folders under `curriculum/challenges/english/` it will need.
Author Markdown challenge copy and YAML metadata using challenge-helper-scripts conventions.
Run local tests for a challenge PR and verify client rendering against the Gatsby frontend package.
How it compares
Contributor and curriculum-authoring guide for the freeCodeCamp monorepo, not a generic Markdown docs template skill.
Common Questions / FAQ
Who is freecodecamp-curriculum for?
Open-source contributors and indie educators preparing pull requests against freeCodeCamp’s curriculum, client, or API packages.
When should I use freecodecamp-curriculum?
During Build docs and PM-style work when adding challenges or certifications, during Validate scope when prototyping curriculum structure, and during Ship review when validating challenge tests before merge.
Is freecodecamp-curriculum safe to install?
It describes cloning and running a large third-party monorepo; review the Security Audits panel on this Prism page and follow freeCodeCamp’s official contribution security practices locally.
SKILL.md
READMESKILL.md - Freecodecamp Curriculum
# 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 ``` freeCodeCamp/ ├── api/ # Fastify API server (TypeScript) ├── client/ # Gatsby/React frontend (TypeScript) ├── curriculum/ # All challenges and certifications (YAML/Markdown) │ └── challenges/ │ ├── english/ │ │ ├── responsive-web-design/ │ │ ├── javascript-algorithms-and-data-structures/ │ │ └── ... │ └── ... ├── tools/ │ ├── challenge-helper-scripts/ # CLI tools for curriculum authoring │ └── ui-components/ # Shared React components ├── config/ # Shared configuration └── e2e/ # Playwright end-to-end tests ``` --- ## 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 ```bash git clone https://github.com/<YOUR_USERNAME>/freeCodeCamp.git cd freeCodeCamp ``` ### 2. Install Dependencies ```bash pnpm install ``` ### 3. Configure Environment ```bash cp sample.env .env ``` Key `.env` variables to set: ```bash # MongoDB MONGOHQ_URL=mongodb://127.0.0.1:27017/freecodecamp # GitHub OAuth (create at github.com/settings/developers) GITHUB_ID=$GITHUB_OAUTH_CLIENT_ID GITHUB_SECRET=$GITHUB_OAUTH_CLIENT_SECRET # Auth JWT_SECRET=$YOUR_JWT_SECRET SESSION_SECRET=$YOUR_SESSION_SECRET # Email (optional for local dev) SENDGRID_API_KEY=$SENDGRID_API_KEY ``` ### 4. Seed the Database ```bash pnpm run seed ``` ### 5. Start Development Servers ```bash # Start everything (API + Client) pnpm run develop # Or start individually: pnpm run develop:api # Fastify API on :3000 pnpm run develop:client # Gatsby on :8000 ``` --- ## Curriculum Challenge Structure Challenges are stored as YAML/Markdown files under `curriculum/challenges/`. ### Challenge File Format ```yaml # curriculum/challenges/english/02-javascript-algorithms-and-data-structures/basic-javascript/comment-your-javascript-code.md --- id: bd7123c8c441eddfaeb5bdef # unique MongoDB ObjectId-style string title: Comment Your JavaScript Code challengeType: 1 # 1=JS, 0=HTML, 2=JSX, 3=Vanilla JS, 5=Project, 7=Video forumTopicId: 16783 dashedName: comment-your-javascript-code --- # --description-- Comments are lines of code that JavaScript will intentionally ignore. ```js // This is an in-line comment. /* This is a multi-line comment */ ``` # --instructions-- Try creating one of each type of comment. # --hints-- hint 1 ```js assert(code.match(/(\/\/)/).length > 0); ``` hint 2 ```js assert(code.match(/(\/\*[\s\S]+?\*\/)/).length > 0); ``` # --seed-- ## --seed-contents-- ```js // Your starting code here ``` # --solutions-- ```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 |