status

AppSec Status -- Security Dashboard

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "status" with this command: npx skills add florianbuetow/claude-code/florianbuetow-claude-code-status

AppSec Status -- Security Dashboard

Read the .appsec/ state directory and present a concise security posture dashboard. Shows what has been scanned, what was found, what has changed since the last scan, and what to do next.

This skill runs entirely in the main agent context. It does NOT dispatch subagents. It reads state files produced by /appsec:run and /appsec:full-audit .

Supported Flags

Flag Behavior

--format text

ASCII dashboard (default).

--format json

Structured JSON summary.

--format md

Markdown summary.

--quiet

Findings count only, no details.

State Files

Read these files from the .appsec/ directory:

File Content Required

.appsec/findings.json

Consolidated findings from last run Yes

.appsec/last-run.json

Timestamp, scope, depth, tools used Yes

.appsec/start-assessment.json

Stack detection, scanner availability Optional

.appsec/config.yaml

User preferences (from /appsec:config ) Optional

Workflow

Step 1: Check State Exists

Use Glob to check for .appsec/findings.json and .appsec/last-run.json .

If NO state files exist, output:

===================================================== APPSEC STATUS -- No Data

No security scan data found. Run a scan first:

/appsec:start Assess project and get recommendations /appsec:run Run smart security scan /appsec:full-audit Exhaustive audit with report

=====================================================

Step 2: Load State

Read .appsec/findings.json and .appsec/last-run.json . Optionally read .appsec/start-assessment.json and .appsec/config.yaml if they exist.

Step 3: Detect Changes Since Last Scan

Run git diff --name-only against the timestamp in last-run.json to determine which files have changed since the last scan. Classify changes:

  • Modified files with findings: existing findings may be resolved or new issues introduced.

  • New files: not yet scanned.

  • Deleted files: findings for these files are now stale.

Count the changed files and note the high-risk ones (files that had findings in the last scan).

Step 4: Compute Summary Statistics

From the findings data, compute:

  • Total findings by severity (critical, high, medium, low).

  • Findings by framework (OWASP, STRIDE, PASTA, LINDDUN, etc.).

  • Findings by tool (secrets, injection, access-control, etc.).

  • Top 5 files by finding count.

  • Scanner coverage (which scanners ran, which are missing).

  • Stale findings (in files that have been modified since the scan).

Step 5: Output Dashboard

Text Format (default)

===================================================== APPSEC STATUS -- Dashboard

LAST SCAN: <timestamp> (<relative time, e.g., "2 hours ago">) SCOPE: <scope from last run> DEPTH: <depth from last run>

FINDINGS: +-------+----------+------+--------+-----+-------+ | | Critical | High | Medium | Low | Total | +-------+----------+------+--------+-----+-------+ | Count | N | N | N | N | N | +-------+----------+------+--------+-----+-------+

TOP PRIORITIES:

  1. <ID> <severity> <title> (<file>:<line>)
  2. <ID> <severity> <title> (<file>:<line>)
  3. <ID> <severity> <title> (<file>:<line>)
  4. <ID> <severity> <title> (<file>:<line>)
  5. <ID> <severity> <title> (<file>:<line>)

CHANGES SINCE LAST SCAN: Files modified: N New files: N Files with existing findings modified: N Stale findings (file changed): N

SCANNER STATUS: <scanner> installed <N findings> <scanner> installed <N findings> <scanner> missing (would cover: <categories>)

FRAMEWORKS RUN: OWASP Top 10 <N findings> STRIDE <N findings> PASTA <N findings> (or "not run") LINDDUN <N findings> (or "not run") SANS/CWE 25 <N findings> (or "not run")

HOTSPOT FILES: <file> <N findings> (<severities>) <file> <N findings> (<severities>) <file> <N findings> (<severities>)

===================================================== /appsec:run Re-scan (detects changes) /appsec:explain <ID> Explain a finding /appsec:run --scope changed Scan only changed files

JSON Format

{ "last_scan": { "timestamp": "2026-02-14T10:30:00Z", "scope": "full", "depth": "standard", "tools_used": ["secrets", "injection", "access-control"] }, "findings": { "total": 12, "by_severity": { "critical": 1, "high": 3, "medium": 5, "low": 3 }, "by_framework": { "owasp": 8, "stride": 3, "secrets": 1 }, "top_priorities": [ { "id": "INJ-001", "severity": "critical", "title": "...", "file": "..." } ] }, "changes_since_scan": { "modified_files": 5, "new_files": 2, "files_with_findings_modified": 1, "stale_findings": 3 }, "scanners": { "semgrep": { "installed": true, "findings": 4 }, "gitleaks": { "installed": false } } }

Important Rules

  • Do NOT invent findings or statistics. Only report what is in the state files.

  • Do NOT fabricate compliance scores or percentages. There is no meaningful way to express security posture as a single percentage.

  • Do NOT claim the codebase is "secure" or "insecure" based on finding count alone. Zero findings from a narrow scan does not mean secure.

  • If the last scan used --scope changed on 3 files, note that coverage is limited.

  • If the state data is more than 7 days old, flag it prominently as stale.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Security

full-audit

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

spec-writer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

mitre

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

attack-surface

No summary provided by upstream source.

Repository SourceNeeds Review