learn-pr-preview — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited learn-pr-preview (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Build and inspect a local Learn site from a PR's documentation content without dirtying the real Learn checkout.
Always load learn-site-structure first. If the PR touches metadata.yaml or generated integration pages, also load integrations-lifecycle.
/tmp or the repo's gitignored.local/.
PR content; if validating uncommitted work, copy tracked modified files and only intentional untracked docs files after checking git status --short.
warnings from PR-specific Network Flows or docs warnings.
Set paths:
REPO_ROOT="$(git rev-parse --show-toplevel)"
PR_NUMBER="<pr-number>"
LEARN_REPO="${NETDATA_REPOS_DIR}/learn"
PREVIEW_ROOT="${TMPDIR:-/tmp}/netdata-learn-preview-pr-${PR_NUMBER}-$(date +%Y%m%d%H%M%S)"
SOURCE_COPY="${PREVIEW_ROOT}/netdata-source"
LEARN_COPY="${PREVIEW_ROOT}/learn"Create isolated copies:
mkdir -p "${SOURCE_COPY}"
git -C "${REPO_ROOT}" ls-files -co --exclude-standard -z \
| rsync -a --from0 --files-from=- --ignore-missing-args "${REPO_ROOT}/" "${SOURCE_COPY}/"
git clone --branch "$(git -C "${LEARN_REPO}" branch --show-current)" \
--single-branch "${LEARN_REPO}" "${LEARN_COPY}"
git -C "${LEARN_COPY}" rev-parse HEADInstall ingest dependencies in the isolated preview:
python3 -m venv "${PREVIEW_ROOT}/venv"
"${PREVIEW_ROOT}/venv/bin/python" -m pip install --upgrade pip
"${PREVIEW_ROOT}/venv/bin/python" -m pip install \
-r "${LEARN_COPY}/.learn_environment/ingest-requirements.txt"If the real Learn checkout has compatible node_modules, symlink it to avoid a fresh install:
ln -s "${LEARN_REPO}/node_modules" "${LEARN_COPY}/node_modules"Run ingest with the PR source:
cd "${LEARN_COPY}"
"${PREVIEW_ROOT}/venv/bin/python" ingest/ingest.py \
--local-repo "netdata:${SOURCE_COPY}" \
--ignore-on-prem-repo \
--use_plain_https \
--fail-links-netdataBuild with the Netlify-pinned runtime:
NODE_OPTIONS=--max_old_space_size=4096 \
npx -y -p [email protected] -p [email protected] yarn buildServe the static build for inspection:
python3 -m http.server 3030 --bind 127.0.0.1 --directory "${LEARN_COPY}/build"Or run it in the background with a PID file:
python3 -m http.server 3030 --bind 127.0.0.1 --directory "${LEARN_COPY}/build" \
>"${PREVIEW_ROOT}/http.log" 2>&1 &
echo "$!" > "${PREVIEW_ROOT}/http.pid"Inspect representative pages in a browser. For docs PRs, check:
metadata.yaml;Report:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.