Files
AgentProbe/scripts/check-generated-docs.sh
SwiftyandCodex 7dd6e5226d chore(harness): add update-harness skill and CI gate
Summary:
- Add the repo-local update-harness skill and Claude skill symlink.
- Add a Bun-owned ci command and route GitHub CI through it.
- Tighten generated-doc freshness and workspace inventory generation.

Rationale:
- Keeps the harness upgrade workflow available in-repo for future agents.
- Gives local and hosted CI one shared command instead of duplicated YAML.
- Makes generated inventory depend on tracked files and catches real drift.

Tests:
- bun install --frozen-lockfile
- bun run ci

Co-authored-by: Codex <[email protected]>
2026-04-18 22:19:15 +02:00

93 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
echo "Checking generated docs freshness..."
# Regenerate into a temp location and diff
TEMP_DIR=$(mktemp -d)
trap 'rm -rf "$TEMP_DIR"' EXIT
restore_originals() {
rm -rf "$REPO_ROOT/docs/generated"
if [ -d "$TEMP_DIR/before-generated" ]; then
cp -r "$TEMP_DIR/before-generated" "$REPO_ROOT/docs/generated"
else
mkdir -p "$REPO_ROOT/docs/generated"
fi
if [ -f "$TEMP_DIR/before-quality.md" ]; then
cp "$TEMP_DIR/before-quality.md" "$REPO_ROOT/docs/QUALITY_SCORE.md"
else
rm -f "$REPO_ROOT/docs/QUALITY_SCORE.md"
fi
}
normalize_generated_dir() {
local dir="$1"
while IFS= read -r -d '' file; do
local tmp="$file.tmp"
grep -v '^Generated:' "$file" > "$tmp"
mv "$tmp" "$file"
done < <(find "$dir" -type f -name '*.md' -print0)
}
# Copy current generated docs and generated quality score
if [ -d "$REPO_ROOT/docs/generated" ]; then
cp -r "$REPO_ROOT/docs/generated" "$TEMP_DIR/before-generated"
else
mkdir -p "$TEMP_DIR/before-generated"
fi
if [ -f "$REPO_ROOT/docs/QUALITY_SCORE.md" ]; then
cp "$REPO_ROOT/docs/QUALITY_SCORE.md" "$TEMP_DIR/before-quality.md"
fi
# Regenerate
bun "$SCRIPT_DIR/generate-workspace-docs.ts" > /dev/null 2>&1
bun "$SCRIPT_DIR/refresh-quality-score.ts" > /dev/null 2>&1
# Compare
if [ -d "$REPO_ROOT/docs/generated" ]; then
cp -r "$REPO_ROOT/docs/generated" "$TEMP_DIR/after-generated"
else
mkdir -p "$TEMP_DIR/after-generated"
fi
if [ -f "$REPO_ROOT/docs/QUALITY_SCORE.md" ]; then
cp "$REPO_ROOT/docs/QUALITY_SCORE.md" "$TEMP_DIR/after-quality.md"
fi
# Compare ignoring timestamp lines (Generated: ...)
cp -r "$TEMP_DIR/before-generated" "$TEMP_DIR/before-generated-normalized"
cp -r "$TEMP_DIR/after-generated" "$TEMP_DIR/after-generated-normalized"
normalize_generated_dir "$TEMP_DIR/before-generated-normalized"
normalize_generated_dir "$TEMP_DIR/after-generated-normalized"
if ! diff -r "$TEMP_DIR/before-generated-normalized" "$TEMP_DIR/after-generated-normalized" > /dev/null; then
STALE=true
else
STALE=false
fi
if [ "$STALE" = "false" ]; then
if ! diff \
<(grep -v '^Last updated:' "$TEMP_DIR/before-quality.md" 2>/dev/null || true) \
<(grep -v '^Last updated:' "$TEMP_DIR/after-quality.md" 2>/dev/null || true) \
> /dev/null; then
STALE=true
fi
fi
if [ "$STALE" = "false" ]; then
echo "Generated docs are up to date."
else
echo "ERROR: Generated docs are stale. Run: bun scripts/generate-workspace-docs.ts && bun scripts/refresh-quality-score.ts"
restore_originals
exit 1
fi
restore_originals