Skip to content
Back to skills

Ai Scan

ASecurity

Run AI governance checks across cloud accounts and code repos — ISO 42001, EU AI Act, NIST AI RMF compliance.

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 12, 2026
toolspythongoshellbashawsazurecode-reviewgit

Works with

  • cli

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill ai-scan --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ai Scan?

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

Security grade badge for Ai Scan
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-ai-scan/badge)](https://www.skillsdirectory.com/skills/aibot88-ai-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: ai-scan
description: Run AI governance checks across cloud accounts and code repos — ISO 42001, EU AI Act, NIST AI RMF compliance.
user-invocable: true
---

# AI Governance Scan

You are running an AI governance scan for a founder. Explain findings in plain English with founder-friendly analogies.

## What to do

Read `shasta.config.json` for `python_cmd`, `aws_profile`, `azure_subscription_id`. Use that for all commands.

### Run AI governance scan

Whitney (the code scanner) ships as a separate open-source tool at
[github.com/transilienceai/whitney](https://github.com/transilienceai/whitney).
If it isn't installed yet, run `pip install whitney` first.
This skill shells out to the `whitney` CLI for source-code findings
and imports the Shasta cloud AI checks directly for cloud findings.

```bash
# 1. Run the Whitney static scanner against the current repo.
whitney scan . --json > /tmp/whitney-findings.json 2>/dev/null || \
    echo '[]' > /tmp/whitney-findings.json

# 2. Run Shasta cloud AI checks + enrich everything with compliance frameworks.
<PYTHON_CMD> -c "
import json
from pathlib import Path
from shasta.evidence.models import (
    CheckDomain, ComplianceStatus, Finding, Severity,
)

# --- Code findings: parse Whitney JSON into Shasta Finding objects ---
code_findings = []
raw = json.loads(Path('/tmp/whitney-findings.json').read_text())
for r in raw:
    code_findings.append(Finding(
        check_id=r['check_id'],
        title=r['title'],
        description=r.get('description', ''),
        severity=Severity(r['severity']),
        status=ComplianceStatus.FAIL,
        domain=CheckDomain.AI_GOVERNANCE,
        resource_type=r.get('resource_type', 'Code::Repository::File'),
        resource_id=r.get('resource_id', ''),
        region=r.get('region', 'code'),
        account_id=r.get('account_id', 'code-scan'),
        remediation=r.get('remediation', ''),
        soc2_controls=r.get('soc2_controls', []) or [],
        details=r.get('details', {}) or {},
    ))

# --- Cloud checks (if configured) ---
cloud_findings = []
try:
    from shasta.config import load_config
    cfg = load_config()
    if cfg.get('aws_profile'):
        from shasta.config import get_aws_client
        from shasta.aws.ai_checks import run_full_aws_ai_scan
        client = get_aws_client()
        client.validate_credentials()
        cloud_findings.extend(run_full_aws_ai_scan(client))
    if cfg.get('azure_subscription_id'):
        from shasta.config import get_azure_client
        from shasta.azure.ai_checks import run_full_azure_ai_scan
        azure_client = get_azure_client()
        azure_client.validate_credentials()
        cloud_findings.extend(run_full_azure_ai_scan(azure_client))
except Exception as e:
    print(f'Cloud scan note: {e}')

all_findings = code_findings + cloud_findings

# Enrich with AI compliance frameworks (ISO 42001, EU AI Act, NIST AI RMF,
# MITRE ATLAS) — Whitney only ships CWE + OWASP LLM Top 10 + OWASP Agentic
# natively; the regulatory frameworks are added here by Shasta.
from shasta.compliance.ai.mapper import enrich_findings_with_ai_controls
enrich_findings_with_ai_controls(all_findings)

# Score
from shasta.compliance.ai.scorer import calculate_ai_governance_score
score = calculate_ai_governance_score(all_findings)

# Summary
passed = sum(1 for f in all_findings if f.status == ComplianceStatus.PASS)
failed = sum(1 for f in all_findings if f.status == ComplianceStatus.FAIL)
critical = sum(1 for f in all_findings if f.severity.value == 'critical' and f.status == ComplianceStatus.FAIL)
high = sum(1 for f in all_findings if f.severity.value == 'high' and f.status == ComplianceStatus.FAIL)

print(json.dumps({
    'total_findings': len(all_findings),
    'passed': passed,
    'failed': failed,
    'critical': critical,
    'high': high,
    'code_findings': len(code_findings),
    'cloud_findings': len(cloud_findings),
    'score': {
        'iso42001_score': score.iso42001_score,
        'iso42001_grade': score.iso42001_grade,
        'eu_ai_act_score': score.eu_ai_act_score,
        'eu_ai_act_grade': score.eu_ai_act_grade,
        'combined_score': score.combined_score,
        'combined_grade': score.combined_grade,
    },
    'findings': [
        {
            'check_id': f.check_id,
            'title': f.title,
            'severity': f.severity.value,
            'status': f.status.value,
            'resource_id': f.resource_id,
            'remediation': f.remediation,
        }
        for f in all_findings if f.status in (ComplianceStatus.FAIL, ComplianceStatus.PARTIAL)
    ]
}, indent=2))
"
```

### Present results

- Show AI governance score (ISO 42001 + EU AI Act) and grade
- Group findings by severity (CRITICAL first)
- For code findings: show file path and line number
- For cloud findings: show resource ID
- Explain each finding in plain English with remediation
- Suggest running `/ai-code-review` for detailed code analysis
- Mention the AI compliance frameworks being assessed

### Tone
- Treat AI governance as the "next frontier" — frame it positively, not punitively
- Acknowledge that most startups haven't done this yet — Whitney helps them get ahead of the curve

Files in this skill

  • SKILL.md5.1 KB
  • source.json592 B

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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.