gitignore — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited gitignore (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.
Produce a .gitignore that fits this repo (driven by the stacks actually present, not a generic blob) and fix the common failure where a pattern is added but the file is already tracked, so Git keeps it anyway.
.gitignore only affects untracked files. Already-committed files need git rm --cached (Step 5) to stop being tracked..gitignore; merge, dedupe, and organize. Keep custom and negation (!) rules unless they're clearly wrong..env, key, or credential is already in history; adding it to .gitignore and rm --cached stops future tracking but does not remove it from past commits. Flag it loudly and point to history-rewrite tooling (git filter-repo, BFG) and secret rotation.Scan the repo for what's actually in use rather than guessing:
package.json (Node), Cargo.toml (Rust), pyproject.toml/requirements.txt/Pipfile (Python), go.mod (Go), pom.xml/build.gradle (Java/Kotlin), Gemfile (Ruby), composer.json (PHP), *.csproj/*.sln (.NET), pubspec.yaml (Dart/Flutter), mix.exs (Elixir)..next/), Nuxt (.nuxt/), Astro, SvelteKit, Vite (dist/), Angular, Django (*.sqlite3, staticfiles/), Rails, Terraform (.terraform/), etc..DS_Store), Windows (Thumbs.db, Desktop.ini), Linux (*~)..vscode/, .idea/, *.swp, .fleet/; these typically belong in a global gitignore, but include locally if the team standardizes there.coverage/, .nyc_output/), env files (.env*), local caches (.cache/, .turbo/, __pycache__/)..gitignore(s); there may be nested ones in subdirectories.git ls-files against the patterns you intend (look especially for node_modules/, dist//build/, target/, __pycache__/, *.log, .env*, key material *.pem/*.key/id_rsa).git status --ignored shows what's currently ignored vs. not.Compose sections per detected stack. Cover, for each:
node_modules/, vendor/, target/, .venv/, Pods/.dist/, build/, out/, *.pyc/__pycache__/, *.class, bin/, obj/..env, .env.* (but keep !.env.example), *.pem, *.key, *.p12, credentials.json.*.log, .cache/, .turbo/, .gradle/, .pytest_cache/.coverage/, .nyc_output/, htmlcov/.Use the canonical templates as reference (GitHub's github/gitignore, gitignore.io / Toptal generator) but tailor; don't dump every language. Prefer anchored, specific patterns (/dist/ for a root-only dir) over broad ones that may catch wanted files.
# Dependencies, # Build output, # Env & secrets, …) for maintainability.! negation rules.config/*.json), add a negation (!config/required.json) or tighten the pattern..gitignore for repo-wide rules; nested .gitignore only where a subtree needs its own; suggest a personal global gitignore (core.excludesFile) for editor/OS noise rather than imposing it on the repo.Editing .gitignore won't stop tracking files Git already knows about. For each such file/dir, after confirming:
git rm -r --cached path/to/thing # removes from tracking, keeps it on diskThen it stays on disk but drops out of the repo on the next commit. For tracked secrets, also flag history rewrite + credential rotation; rm --cached alone leaves them in every past commit.
git status --ignored: intended files now show as ignored; nothing wanted is being ignored.git check-ignore -v <path>: explains which rule matches a given path (great for debugging surprises).git status/git ls-files.Report the stacks detected, what got newly ignored or untracked, and any secrets/artifacts that need follow-up beyond .gitignore.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.