Sync Small Superblocks
You are an agent that audits the freeCodeCamp curriculum for drift between the
large v9 superblocks and the standalone "small" superblocks derived from them,
then reports what is out of sync.
The curriculum has large v9 superblocks (e.g. javascript-v9,
responsive-web-design-v9) organized into chapters and modules. Many smaller
standalone superblocks (e.g. introduction-to-loops-in-javascript, basic-html)
mirror a single module of a big superblock so learners can take that slice on its
own. When a block is added to, moved between, or removed from a module in a big
superblock, the matching small superblock is often not updated. This skill finds
those drifts.
Two files define each superblock's block list:
- Structure file:
curriculum/structure/superblocks/<name>.json. A big
superblock is shaped {"chapters": [{"modules": [...]}]}; a small superblock
is shaped {"blocks": [...]}.
- Intro file:
client/i18n/locales/english/intro.json. Each superblock key
has a blocks object mapping block name to its {title, intro}.
All paths are relative to the freeCodeCamp repository root.
When to use this skill
- A maintainer wants to confirm the standalone superblocks still match the v9
curriculum after blocks were added, reordered, moved, or removed.
Prerequisites
- Run from the root of a freeCodeCamp/freeCodeCamp checkout (the directory
containing
curriculum/ and client/).
- Work from an up-to-date
main. The mapping depends on the exact current block
lists, so a stale or PR-branch checkout produces stale results. Confirm with
git rev-parse --abbrev-ref HEAD and pull the latest main first.
- Python 3.
Instructions
Confirm the working directory is a freeCodeCamp repo on up-to-date main.
Run the bundled detector from the repository root. The script reads the
current working directory by default; override with FCC_REPO if needed:
python3 path/to/this/skill/check_sync.py
It prints JSON to stdout: {"findings": [ ... ]}. Each finding is one small
superblock that is out of sync, with:
small_superblock, source_superblock, modules — the small superblock,
the big superblock it derives from, and the source module(s).
ambiguous_mapping — true when the source module feeds more than one
small superblock (e.g. the git module feeds both introduction-to-nano
and introduction-to-git-and-github). Call these out for manual review.
current_blocks / proposed_blocks — the structure file's block list now
and after the fix (missing blocks inserted in module order, stale blocks
removed).
missing — blocks present in the source module but absent from the small
superblock. Each has block, after (the block it should follow; null
means first), module, intro_content (the {title, intro} from the big
superblock, or null if the big intro has no entry), and
intro_already_present (true when only the structure file needs the
addition).
stale — blocks in the small superblock no longer in its source module.
Each has block, status (moved or removed), now_in_modules (where a
moved block went), and intro_present_in_small. Appended cert-project labs
are NOT reported as stale; they legitimately live in a separate cert-project
module.
Turn the JSON into a readable report (see Output format). Do not modify any
files and do not open issues or PRs.
Handling arguments
- A superblock name (e.g.
/sync-small-superblocks introduction-to-loops-in-javascript)
— run the full check, then report only that small superblock; note if it is in
sync.
- No arguments — report every out-of-sync small superblock.
Output format
A concise report:
- The branch/commit checked and the total number of out-of-sync small
superblocks (state "all small superblocks are in sync" if there are none).
- One section per finding, headed by the small superblock and its source module:
- Add lines:
<block> to insert after <after> (or "at the start"); note
when the intro already exists or when there is no intro entry in the big
superblock.
- Move/Remove lines:
<block> moved to <now_in_modules> (so it should
leave this small superblock) or removed entirely.
- A final note listing any
ambiguous_mapping findings and any missing block
whose intro_content is null, flagged for manual review.
For each finding, point to the two files that would need editing
(curriculum/structure/superblocks/<name>.json and
client/i18n/locales/english/intro.json) so a maintainer can act on the report.
Guardrails
- Avoid editing curriculum files, opening issues, or pushing; only report
findings and let the maintainer decide what to change.
- Avoid running against a stale or PR-branch checkout; verify up-to-date
main
first, since the report is only as accurate as the block lists on disk.
- Avoid inventing intro text; when reporting an intro to copy, use the
intro_content the detector returns verbatim, and flag null entries.
- Avoid reporting appended cert-project labs as problems; the detector already
excludes them, so do not re-flag extras it omitted.
1---2name: sync-small-superblocks3description: Check whether the standalone "small" superblocks in the freeCodeCamp curriculum are in sync with the v9 superblock modules they are derived from, and report every block that was added, moved, or removed in the big superblock but not reflected in the small one. Invoke with /sync-small-superblocks. Use for: "check small superblocks", "superblocks out of sync", "sync superblocks", "missing curriculum blocks", "compare superblock modules".4---56# Sync Small Superblocks78You are an agent that audits the freeCodeCamp curriculum for drift between the9large v9 superblocks and the standalone "small" superblocks derived from them,10then reports what is out of sync.1112The curriculum has large v9 superblocks (e.g. `javascript-v9`,13`responsive-web-design-v9`) organized into chapters and modules. Many smaller14standalone superblocks (e.g. `introduction-to-loops-in-javascript`, `basic-html`)15mirror a single module of a big superblock so learners can take that slice on its16own. When a block is added to, moved between, or removed from a module in a big17superblock, the matching small superblock is often not updated. This skill finds18those drifts.1920Two files define each superblock's block list:2122- **Structure file**: `curriculum/structure/superblocks/<name>.json`. A big23 superblock is shaped `{"chapters": [{"modules": [...]}]}`; a small superblock24 is shaped `{"blocks": [...]}`.25- **Intro file**: `client/i18n/locales/english/intro.json`. Each superblock key26 has a `blocks` object mapping block name to its `{title, intro}`.2728All paths are relative to the freeCodeCamp repository root.2930## When to use this skill3132- A maintainer wants to confirm the standalone superblocks still match the v933 curriculum after blocks were added, reordered, moved, or removed.3435## Prerequisites3637- Run from the root of a freeCodeCamp/freeCodeCamp checkout (the directory38 containing `curriculum/` and `client/`).39- Work from an up-to-date `main`. The mapping depends on the exact current block40 lists, so a stale or PR-branch checkout produces stale results. Confirm with41 `git rev-parse --abbrev-ref HEAD` and pull the latest `main` first.42- Python 3.4344## Instructions45461. Confirm the working directory is a freeCodeCamp repo on up-to-date `main`.47482. Run the bundled detector from the repository root. The script reads the49 current working directory by default; override with `FCC_REPO` if needed:5051 ```sh52 python3 path/to/this/skill/check_sync.py53 ```5455 It prints JSON to stdout: `{"findings": [ ... ]}`. Each finding is one small56 superblock that is out of sync, with:57 - `small_superblock`, `source_superblock`, `modules` — the small superblock,58 the big superblock it derives from, and the source module(s).59 - `ambiguous_mapping` — `true` when the source module feeds more than one60 small superblock (e.g. the `git` module feeds both `introduction-to-nano`61 and `introduction-to-git-and-github`). Call these out for manual review.62 - `current_blocks` / `proposed_blocks` — the structure file's block list now63 and after the fix (missing blocks inserted in module order, stale blocks64 removed).65 - `missing` — blocks present in the source module but absent from the small66 superblock. Each has `block`, `after` (the block it should follow; `null`67 means first), `module`, `intro_content` (the `{title, intro}` from the big68 superblock, or `null` if the big intro has no entry), and69 `intro_already_present` (`true` when only the structure file needs the70 addition).71 - `stale` — blocks in the small superblock no longer in its source module.72 Each has `block`, `status` (`moved` or `removed`), `now_in_modules` (where a73 moved block went), and `intro_present_in_small`. Appended cert-project labs74 are NOT reported as stale; they legitimately live in a separate cert-project75 module.76773. Turn the JSON into a readable report (see Output format). Do not modify any78 files and do not open issues or PRs.7980## Handling arguments8182- A superblock name (e.g. `/sync-small-superblocks introduction-to-loops-in-javascript`)83 — run the full check, then report only that small superblock; note if it is in84 sync.85- No arguments — report every out-of-sync small superblock.8687## Output format8889A concise report:9091- The branch/commit checked and the total number of out-of-sync small92 superblocks (state "all small superblocks are in sync" if there are none).93- One section per finding, headed by the small superblock and its source module:94 - **Add** lines: `<block>` to insert after `<after>` (or "at the start"); note95 when the intro already exists or when there is no intro entry in the big96 superblock.97 - **Move/Remove** lines: `<block>` moved to `<now_in_modules>` (so it should98 leave this small superblock) or removed entirely.99- A final note listing any `ambiguous_mapping` findings and any missing block100 whose `intro_content` is `null`, flagged for manual review.101102For each finding, point to the two files that would need editing103(`curriculum/structure/superblocks/<name>.json` and104`client/i18n/locales/english/intro.json`) so a maintainer can act on the report.105106## Guardrails107108- Avoid editing curriculum files, opening issues, or pushing; only report109 findings and let the maintainer decide what to change.110- Avoid running against a stale or PR-branch checkout; verify up-to-date `main`111 first, since the report is only as accurate as the block lists on disk.112- Avoid inventing intro text; when reporting an intro to copy, use the113 `intro_content` the detector returns verbatim, and flag `null` entries.114- Avoid reporting appended cert-project labs as problems; the detector already115 excludes them, so do not re-flag extras it omitted.