Sync Small Superblocks

VerifiedSafe

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.

Sby Skills Guide Bot
DevelopmentIntermediate
7/23/2026
Claude Code
#freecodecamp#curriculum#repo-audit#json-diff#sync-check

Recommended for

Automated summary

Audits a freeCodeCamp checkout for drift between the large v9 superblocks and the standalone "small" superblocks derived from them, reporting blocks that were added, moved, or removed without being reflected.

Strengths

  • Cross-checks both the structure file (`superblocks/<name>.json`) and the intro file (`intro.json`), so it separates blocks missing from the structure from blocks whose intro alone is missing.
  • Gives the insertion anchor (`after`) and the `intro_content` to copy for each missing block, making the fix straightforward.
  • Flags ambiguous mappings where one source module feeds several small superblocks instead of guessing a single target.
  • Explicitly ignores appended cert-project labs, which legitimately sit in a separate cert-project module and should not be treated as stale.

Limitations

  • Report-only: the agent does not edit any files, so applying the fix is manual.
  • Results depend on the exact current block lists, so a stale checkout or a PR branch produces misleading findings.
  • Requires a local freeCodeCamp/freeCodeCamp clone, Python 3, and familiarity with the repo layout.
When to use it

Use it after blocks are added, reordered, moved, or removed in the v9 superblocks to find which standalone superblocks are now out of date.

When not to use it

Don't use it on an outdated or feature-branch checkout, or if you expect the skill to rewrite the curriculum files for you.

Security analysis

Safe
Quality score86/100

The skill performs a read-only audit of the freeCodeCamp repository. It runs a bundled Python detector and may run git commands to verify the branch and pull the latest main, but it does not modify curriculum files, exfiltrate data, or execute destructive commands. The instructions explicitly guard against editing files, opening issues, or pushing changes.

No concerns found

How this analysis is made

Examples

Full drift audit
Check the small superblocks in this freeCodeCamp checkout and report every one that is out of sync with its v9 source module.
Missing blocks for one superblock
Which curriculum blocks are missing from `introduction-to-loops-in-javascript` compared to its module in `javascript-v9`, and where should each one be inserted?
Review ambiguous mappings
Run the sync check and list only the findings marked `ambiguous_mapping`, so I can manually review which small superblock each one should feed.

name: sync-small-superblocks description: > 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".

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

  1. Confirm the working directory is a freeCodeCamp repo on up-to-date main.

  2. 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.
  3. 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.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/sync-small-superblocks-mrx3xz7e/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/sync-small-superblocks-mrx3xz7e' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/sync-small-superblocks-mrx3xz7e/download' --output '.skill-downloads/sync-small-superblocks-mrx3xz7e/SKILL.md.part' && mv '.skill-downloads/sync-small-superblocks-mrx3xz7e/SKILL.md.part' '.skill-downloads/sync-small-superblocks-mrx3xz7e/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Original excerpt: 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.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/sync-small-superblocks-mrx3xz7e/SKILL.md' && test -s '.skill-downloads/sync-small-superblocks-mrx3xz7e/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/sync-small-superblocks' && cp -R '.skill-downloads/sync-small-superblocks-mrx3xz7e' '.claude/skills/sync-small-superblocks'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/sync-small-superblocks-mrx3xz7e'

openskills read 'sync-small-superblocks-mrx3xz7e'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/sync-small-superblocks-mrx3xz7e/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills