15 lessons. Most-repeated first.
ingest refuses pages that were already rebuilt; for a content refresh edit landing/state/data.json (back it up first) plus state/content/<slug>.json, then build and check.reset --hard by other jobs running in parallel. Copy the scripts to the chat working folder and render the card there (portfolio_card.py –portfolio-dir platforms; set it to where the project really runs. The FAQ keeps only the first sentence of each README answer and at most 8 items, and it quotes the status word (“it’s marked …”); pick one that reads correctly there.gh by bare name; landing.py new fails at ingest when gh is not on PATH, after the seed page, shot and gallery card already exist. Put the gh and git folders on PATH and re-run only ingest.py.CREATE_NO_WINDOW, not DETACHED_PROCESS, for child console programs. The PID a launcher prints can be a shim: kill with taskkill /T, and use a fresh log name each time.p/landing.json to the profile’s .github/landing.json (it was 10 entries stale), or Building entries miss their Landing page link.<h1> by ingest.py; edit that <h1> (and its hl span) and re-run ingest.landing build writes to landing/out/p/<slug>/, not to the site clone; only publish copies it over.