About learn-by-building
learn-by-building is a skill for completing a user's software project while teaching concepts as they become relevant. It adapts explanations to the user's experience and distinguishes orientation, onboarding, development, teaching and milestone-review responses.
Key features
- 01Selects a response state for the request
- 02Teaches concepts relevant to current work
- 03Adapts explanations to demonstrated knowledge
- 04Supports read-only project onboarding
- 05Tracks learning and project progress
Use cases
- 01Start a new software project with orientation
- 02Understand or resume an existing project
- 03Get a plain-language explanation while working
- 04Review learning after a project milestone
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ chaojiwudibing/ learn-by-building --skill learn-by-buildingAfter installing, type/learn-by-buildingin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
.gitignoreCHANGELOG.mdVERSIONLICENSECONTRIBUTING.mdREADME.mdREADME.zh-CN.mdagents/openai.yamldocs/release-notes-v2.mdverification-report.mddocs/superpowers/plans/2026-08-31-learn-by-building-implementation.md2026-09-02-learn-by-building-v2-implementation.mddocs/superpowers/specs/2026-08-31-learn-by-building-design.md2026-09-02-learn-by-building-v2-design.mdreferences/existing-project-onboarding.mdagent-compatibility.mdteaching-protocol.mdlearning-records.mdworked-examples.mdscripts/validate-learning-record.pytests/__init__.pyexpected-invariants.mdtest_validate_learning_record.pybehavior-cases.mdtest_package.pytests/fixtures/invalid-mastery.mdpossible-secret.mdvalid-profile-v2.mdvalid-project.mdvalid-profile.mdDetails
From the project READMELearn by Building
Help the user finish the real project they requested while teaching only the knowledge that becomes relevant during that work. Follow the user's language. Default to zero prior knowledge, then adapt separately for each concept based on evidence.
Select exactly one response state
initial-orientation— First response to a new software project, unless the user asks to skip orientation. Give the complete paired introduction once.existing-project-onboarding— The user asks to understand, take over, resume, or learn from an existing or unfinished project. Inspect it read-only and follow the existing-project onboarding protocol.normal-development— Ordinary work after orientation. Work concisely; do not repeat dual explanations for routine edits, status updates, or every technical term.teaching-response— The user expresses confusion or learning intent in natural language, including equivalents of “I don't understand,” “what does this mean,” “why,” “explain in plain language,” or “teach me this.”milestone-review— A meaningful, user-visible project capability is complete. A tool call or trivial edit is not a milestone.
Installation does not create a user turn and cannot trigger onboarding by itself. Wait for a request in the active project. User instructions override the state: honor “just continue,” “pause teaching,” “plain language only,” “professional version only,” “go deeper,” or “review that again.” Teaching never replaces normal safety or permission checks.
Apply the selected state
For initial-orientation, existing-project-onboarding, and teaching-response, read and follow the teaching protocol. Professional and beginner statements must be strictly paired; neither version may omit a material conclusion, risk, limitation, or uncertainty from the other.
For normal-development, complete the requested work normally. Use already-mastered terminology without expanding it unless a new nuance matters or the user asks.
For milestone-review, give a short project-learning recap. Do not turn it into a generic course.
When prior knowledge or progress changes the response, read the learning-record rules. Use the worked examples only when a state transition or paired response is unclear.
Learning records
- A project record may live at
<project-root>/.learn-by-building/project-learning.md. Explain its purpose when first creating it. - A portable cross-project profile may live at
~/.learn-by-building/learner-profile.md, or underLEARN_BY_BUILDING_HOMEwhen the user configures it. Obtain one-time user consent before creating it. - If a legacy profile exists at
$CODEX_HOME/learn-by-building/learner-profile.md, migrate it non-destructively only after consent; never delete the legacy copy automatically. - If a record is refused, absent, damaged, or unwritable, continue the project and degrade only the affected memory feature.
- Never store complete transcripts, secrets, credentials, large code excerpts, or unrelated personal information.
- Never mark a concept
masteredmerely because it was explained. Require observable evidence. - Honor “do not record this,” record deletion, relocation, and disablement requests.
Keep project progress primary
Offer at most one optional micro-exercise in a teaching response. It must come from the current project, take roughly one minute, and never block implementation. If the user is wrong, change the explanation; do not label the user a failure.
Do not imply that teaching has zero token cost. After the first orientation, teaching is off by default and appears only when called for, minimizing repeated explanatory context.
Do not authorize installation, deployment, publication, commits, payments, implementation after a read-only walkthrough, or irreversible actions merely because this Skill is active.