Just some silly notes digitalized, have fun and feel free to open PR.
Live version of the site is available on kb.offsec.nl.
git clone https://github.com/crypt0rr/kb
cd kb
npm ci
npm run dev -- --host 127.0.0.1
Use the Node.js version in .node-version.
npm run check
npm run check:assets
npm run check:content
npm run check:links
npm run audit:known
npm run sysinternals:check
npm run build
npm run smoke
npm run validate
The build renders the Astro site, copies non-Markdown files from content/
into dist/, generates an asset manifest with SHA256 hashes, and then builds
the Pagefind search index.
npm run check:content validates frontmatter, shortcodes, references, and
downloadable content assets. New files under content/**/files/ must be
referenced by a resources or attachments shortcode unless they are an
intentional mirror/bulk asset listed in scripts/content-policy.json.
npm run check:links validates internal Markdown links, anchors, images, and
downloadable assets. External links are inventoried without network calls.
npm run validate runs the full local validation gate.
Use npm run sysinternals:check to compare the published Sysinternals files
with https://live.sysinternals.com/. Use npm run sysinternals:sync to
download missing or changed root and ARM64 files. The sync workflow skips live
directories, marker files, and files over the 25MB Cloudflare Pages limit.
npm run audit:known expects a clean npm audit result and fails on any
reported vulnerability. Keep Astro/Vite updated through Renovate and review
dependency advisories before adding any exception.
Feel free to open a PR with your content/changes. Some rules:
- Markdown styling as used in other content;
- Content is UTF-8;
- Single file size limit 25MB;
- Non-Markdown files in
content/are published as downloadable assets; - PR naming describes content.