edge-functions — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited edge-functions (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.
Deno. Entry point: Deno.serve(). Files live in supabase/functions/<name>/index.ts.
import { initSentry, handleError } from "../_shared/sentry.ts";
initSentry();
const corsHeaders = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "authorization, x-client-info, apikey, content-type",
};
Deno.serve(async (req: Request) => {
if (req.method === "OPTIONS") return new Response("ok", { headers: corsHeaders });
try {
const body = await req.json();
const result = { message: "Hello" };
return new Response(JSON.stringify(result), {
headers: { ...corsHeaders, "Content-Type": "application/json" },
});
} catch (error) {
return handleError(error, { functionName: "my-function", corsHeaders });
}
});For AI calls, wrap with withTrace() — see the langfuse-tracing skill.
../_shared/sentry.ts, ../_shared/langfuse/gemini.tssupabase/functions/deno.jsonnpm: prefix for npm packages, URLs for Deno packagesconst { data, error } = await supabase.functions.invoke('my-function', {
body: { prompt: 'Hello' },
});Path: supabase/migrations/. Naming: 00000000000000_slug.sql.
Rules:
auth.uid() for row-level accessupdated_at trigger for mutable tablesauth.uid()::text = (storage.foldername(name))[1]mise run supabase:function # Starts functions with hot reloadEnv vars for functions go in supabase/functions/.env.local.
supabase functions deploy <function-name>~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.