audit-logs — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited audit-logs (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.
Scan the codebase for logging issues — PII exposure, secrets, and sensitive data leaks.
Important: This skill is read-only. It reports findings but does NOT make changes automatically. Always present the report first and ask the user what they want to fix.
Scan the project for all logging calls. Look for:
log.e(), log.w(), log.i(), log.d(), log.v(), Log.e(), Log.w(), etc.console.log, console.error, console.warn, print(), NSLog(), android.util.Loglogger.info(), logger.error(), Timber.d(), etc.These must never appear in logs. Flag immediately:
password, secret, token, apiKey, accessToken, refreshToken, authorization\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}. Logging the last 4 digits is acceptable (e.g., **** **** **** 1234), but the full number must never be logged.ssn, socialSecurity, nationalId, idNumber, passportNumber, passport. These are government-issued identifiers used for identity theft and are protected under GDPR, CCPA, and most privacy laws. They must never appear in logs.These are non-negotiable — present them as critical findings that need immediate attention.
These are suggestions — the user may have valid reasons to log them. Present as recommendations and ask before changing:
phone, phoneNumber, mobileaddress, street, zipCode, postalCodefullName, firstName, lastName logged directly in message stringsRecommendation example:
// Consider replacing direct PII with internal identifiers:
log.i(`User logged in: ${user.email}`)
// Could be:
log.i(`User logged in: ${user.id}`)Ask the user: "I found personal identifiers in these log statements. Would you like me to replace them with internal IDs, or do you prefer to keep them as-is?"
These are observations, not errors. The developer may have intentional reasons for their log level choices. Present as suggestions and let the user decide.
.v() calls in production code paths.Do NOT assume existing log levels are wrong. Present observations as "you might want to review these" and ask the user if they'd like any changes.
If the project is Android and uses Shipbook:
EditText with inputType="textPassword", inputType="number" (credit cards), or similar sensitive input fieldsShipBook.ignoreViews() is called for these viewsShipBook.ignoreViews(R.id.passwordField, R.id.creditCardField)Present results grouped by priority:
Critical — Secrets/passwords/full credit card numbers in logs (must fix) Suggestions — Personal identifiers and log level observations (ask user)
For each finding, show:
After presenting the report, ask the user which findings they'd like to fix. Do not make changes without explicit approval.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.