Skip to content
Back to skills

Full Scan

ASecurity

Orchestrates the Sokrates AI scanners over one codebase: a basic scan (six descriptive scanners: what is this codebase), a deep dive (all evaluative scanners or one family: quality, runtime, security) or a full scan (all seventeen), in dependency order, validated, merged, diffed against earlier runs. Use for "scan this repo", a quick or full scan, an overview of an unfamiliar codebase, a whole-codebase audit, or a re-scan. Requires a _sokrates analysis.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 2, 2026
developmentpythongobashtestinggitsecurityperformance

Security analysis

A100/100

Scanned October 3, 2026

npx -y skills add zeljkoobrenovic/sokrates-skills --skill full-scan --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Full Scan?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Full Scan
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/zeljkoobrenovic-full-scan/badge)](https://www.skillsdirectory.com/skills/zeljkoobrenovic-full-scan)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: full-scan
description: Orchestrates the Sokrates AI scanners over one codebase: a basic scan (six descriptive scanners: what is this codebase), a deep dive (all evaluative scanners or one family: quality, runtime, security) or a full scan (all seventeen), in dependency order, validated, merged, diffed against earlier runs. Use for "scan this repo", a quick or full scan, an overview of an unfamiliar codebase, a whole-codebase audit, or a re-scan. Requires a _sokrates analysis.
---

# Full scan (orchestrator)

Runs the scanner family and produces one combined, validated result. The individual scanners do the work — this skill only supplies the bundle, the order, the shared setup, and the roll-up. Read `sokrates-scan-core/SKILL.md` first as always; each scanner's own SKILL.md governs its scan.

## Which bundle to run

The family splits in two. **Basic** scanners *describe* the codebase — they answer "what is this, what does it do, how is it built" and are what a newcomer needs. **Deep dives** *evaluate* one dimension each, and answer "how good is it at X". The split is recorded as `tier` in `templates/scanners.json` (deep dives also carry a `family`), and the explorer groups its sidebar by it.

| bundle | scanners | when |
|---|---|---|
| **basic** | `functionality-scan`, `domain-language-scan`, `architecture-scan`, `evolution-scan`, `tech-stack-scan`, `cicd-scan` | "what is this codebase", onboarding, a first pass on something unfamiliar, a cheap re-run to see what moved |
| **deep dive** | every non-basic scanner, or one named family | "how good is X", a review with a specific worry, or a follow-up after a basic scan |
| **full** | all seventeen | a complete audit, a baseline, the artifact of record |

Deep dives run as a whole or by **family**, so the user can name a dimension instead of paying for all eleven:

| family | scanners | the question |
|---|---|---|
| `quality` | `testing-scan`, `reliability-scan`, `maintainability-scan`, `risk-synthesis-scan` | can we keep changing this safely? |
| `runtime` | `performance-scan`, `storage-scan`, `network-scan`, `observability-scan` | how does it behave when it runs? |
| `security` | `security-scan`, `iac-scan`, `configuration-scan` | what is exposed, and how is it deployed and configured? |

**Choosing when the user did not say.** "Scan this repo", "analyse this codebase", "what is this" → basic, and say what a deep dive would add. A named worry ("is this well tested", "how does it handle load", "is it secure") → the matching family, plus `tech-stack-scan` when nothing has been scanned yet. "Full scan", "everything", "audit" → full. When a request is ambiguous and the codebase is large, propose basic first rather than silently spending a full scan; when it is small (under ~20k lines) the difference is minor, so prefer the wider bundle.

**Deep dives read basic findings.** A deep dive on a project with no existing findings still runs (the skills degrade gracefully), but it orients from `tech-stack-scan`, `functionality-scan` and `architecture-scan` when they are there. If none exist and the deep dive is more than one family, run the basic bundle first — it is cheaper than every deep dive re-deriving the same skeleton, and the cross-references land.

## Why order matters

Scanners consume earlier scanners' findings (each re-verifies evidence itself, but the orientation savings are large). The dependency order observed in practice:

| wave | scanners | consume |
|---|---|---|
| 1 | `tech-stack-scan`, `risk-synthesis-scan` | Sokrates data only |
| 2 | `functionality-scan`, `cicd-scan`, `observability-scan`, `reliability-scan` |
| 2b | `testing-scan` | tech-stack (frameworks), cicd (gating), functionality (feature list), risk-synthesis (hotspots) — run after `cicd-scan` and `functionality-scan` | tech-stack (the stack skeleton, telemetry SDKs, resilience libraries, product surfaces) and risk-synthesis (hotspots as the load-bearing paths) |
| 3 | `architecture-scan` | waves 1–2 (stack skeleton, coupling, isolation boundaries from reliability) — its `security-boundaries` group feeds wave 4 |
| 3b | `performance-scan`, `storage-scan`, `network-scan`, `iac-scan`, `configuration-scan` | waves 1–3 (functionality for workload/data/integrations, architecture for the main loop and communication, reliability for the write-safety and retry verdicts they reference; for `iac-scan` also cicd's deployment and release findings, for `configuration-scan` functionality's entry points) — run after `architecture-scan` and `reliability-scan`; independent of each other |
| 4 | `security-scan`, `domain-language-scan` | wave 3 (architecture's security boundaries and component map; network/storage for TLS, endpoints and secret files; iac for declared infrastructure hardening and configuration for the secret-supply plumbing whose protection security then rates; the feature inventory as the capability list) |
| 5 | `evolution-scan` | waves 1–4 (component names, hotspots and knowledge risk, migrations in progress to date the story against) |
| 6 | `maintainability-scan` | everything — the maintainability roll-up grades from Sokrates numbers and the other scanners' findings; run last |

Scanners within a wave are independent — run them in parallel (as subagents) when the harness allows; run waves sequentially. If a needed predecessor is missing or fails, its consumers still run (the skills degrade gracefully) — note the gap in the final report.

**The wave order applies to whichever bundle you are running**: take the bundle's scanner list, drop the waves that are empty for it, and run the rest in the same sequence. A basic scan is waves 1–3 plus `evolution-scan`; a `security` deep dive is `security-scan` after `iac-scan` and `configuration-scan`, since it reads their findings.

## Procedure

1. **Shared setup, once.** Read `_sokrates/config.json`; unzip `reports/data/data.zip` to the scratch directory once and pass that path to every scanner run. Fix the shared parameters up front so all seventeen findings files agree: `target.name`, `target.src_root`, `analyzed_at` (one value for the whole suite), `target.commit` if a git checkout.
2. **Re-scan detection.** If `_sokrates/reports/ai-insights/<scanner>.json` files already exist with an older `analyzed_at`, copy them to the scratch directory *before* overwriting — they are the diff baseline.
3. **Run the waves.** For each scanner **in the chosen bundle**: execute its SKILL.md, validate until OK, render the explorer. A scanner that cannot pass validation ships with its unverifiable findings dropped or downgraded per the core rules — never ship a failing file.
4. **Merge:**
   ```bash
   python3 <core-skill-path>/scripts/merge_findings.py _sokrates/reports/ai-insights/
   python3 <core-skill-path>/scripts/render_findings.py _sokrates/reports/ai-insights/
   ```
   and validate the produced `combined-report.json` (it should re-verify in full). The render call is the final one — it rebuilds the explorer with every scanner's file present.
5. **Diff on re-runs.** For each baseline saved in step 2:
   ```bash
   python3 <core-skill-path>/scripts/diff_findings.py <scratch>/<scanner>.json _sokrates/reports/ai-insights/<scanner>.json
   ```
   Collect the new / resolved / changed items across scanners — on a re-scan these, not the full inventory, are the headline.
6. **Report.** Say which bundle you ran. Lead with the combined attention table (severity above info, all scanners run), then per-scanner one-liners with validation results ("N/N verified"), then (re-runs) the cross-scanner diff summary. Point at `_sokrates/reports/ai-insights/index.html` (the explorer) and `combined-report.json` as the artifacts of record. After a basic scan, close with one line on what a deep dive would add and which family fits what you saw — a codebase whose basic findings surfaced thin tests or a wide attack surface has earned that suggestion.

## Budget guidance

A full first scan of a large codebase is roughly 17 scanner-runs of reading work; a basic scan is 6 and a single deep-dive family 3–4. Parallelize within waves, and prefer trimming per-scanner scope (each skill's own scoping advice) over skipping scanners *within a bundle*: the combined report's value is completeness of the coverage it claims, with each scanner free to keep its finding count modest. Choosing a narrower bundle is the right way to spend less — a basic scan that is actually finished beats a full scan that is rushed. When the user asks for an ad-hoc subset ("everything except security"), run the requested scanners in the same wave order and note in the merged summary which scanners are absent.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…