원클릭으로
scan
Run SOC 2 compliance checks against connected cloud accounts (AWS and/or Azure) and display findings.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Run SOC 2 compliance checks against connected cloud accounts (AWS and/or Azure) and display findings.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Deep code scan for AI security issues — prompt injection, PII in prompts, hardcoded keys, unguarded agents.
Run AI governance checks across cloud accounts and code repos — ISO 42001, EU AI Act, NIST AI RMF compliance.
Scan cloud accounts and GitHub repos to discover AI/ML services and build an AI system inventory.
Walk staged changes against the engineering principles checklist and report pass/fail per principle. Run before any non-trivial commit. Catches doc drift, stub functions, single-region defaults, missing framework mappings, and other regressions before they ship.
Generate a public-facing security trust page from scan data. Produces a single deployable index.html that shows compliance framework scores, security policies, infrastructure overview, and data protection posture. Deployable to S3, Vercel, Netlify, or GitHub Pages.
Paste a vendor's domain. Get a security risk assessment in 60 seconds.
| name | scan |
| description | Run SOC 2 compliance checks against connected cloud accounts (AWS and/or Azure) and display findings. |
| user-invocable | true |
You are running a SOC 2 compliance scan for a semi-technical founder. Explain findings in plain English.
Read shasta.config.json for python_cmd, aws_profile, and azure_subscription_id. Use that for all commands (shown as <PYTHON_CMD>).
Determine which clouds to scan:
aws_profile is set (non-empty) → scan AWSazure_subscription_id is set (non-empty) → scan Azure/connect-aws or /connect-azure first<PYTHON_CMD> -c "
from shasta.db.schema import ShastaDB
db = ShastaDB(); db.initialize()
scan = db.get_recent_scan(max_age_minutes=60)
if scan:
print(f'RECENT_SCAN_FOUND|{scan.id}|{scan.completed_at}|{scan.summary.total_findings if scan.summary else 0} findings')
else:
print('NO_RECENT_SCAN')
last_review = db.get_last_review_date()
if last_review: print(f'LAST_ACCESS_REVIEW|{last_review}')
else: print('NO_ACCESS_REVIEW_FOUND')
"
If a recent scan exists, tell the user and ask if they want to reuse it or run fresh.
Construct the Python command based on which clouds are configured. The scanner supports both AWS and Azure simultaneously.
For AWS only:
<PYTHON_CMD> -c "
import json
from shasta.config import get_aws_client
from shasta.scanner import run_full_scan
from shasta.compliance.mapper import get_control_summary
from shasta.compliance.scorer import calculate_score
from shasta.reports.summary import summarize_scan
from shasta.reports.generator import save_markdown_report, save_html_report
from shasta.db.schema import ShastaDB
client = get_aws_client()
client.validate_credentials()
print('Running full compliance scan (AWS)...')
scan = run_full_scan(client)
db = ShastaDB(); db.initialize(); db.save_scan(scan)
md = save_markdown_report(scan)
html = save_html_report(scan)
print(f'Reports saved: {md} | {html}')
score = calculate_score(scan.findings)
summary = summarize_scan(scan)
summary['score'] = {
'percentage': score.score_percentage,
'grade': score.grade,
'controls_passing': score.passing,
'controls_failing': score.failing,
}
summary['control_summary'] = {
k: {'title': v['title'], 'overall_status': v['overall_status'], 'pass_count': v['pass_count'], 'fail_count': v['fail_count']}
for k, v in get_control_summary(scan.findings).items()
if v['has_automated_checks'] or v['overall_status'] != 'not_assessed'
}
print(json.dumps(summary, indent=2))
"
For Azure only:
<PYTHON_CMD> -c "
import json
from shasta.config import get_azure_client
from shasta.scanner import run_full_scan
from shasta.compliance.mapper import get_control_summary
from shasta.compliance.scorer import calculate_score
from shasta.reports.summary import summarize_scan
from shasta.reports.generator import save_markdown_report, save_html_report
from shasta.db.schema import ShastaDB
azure_client = get_azure_client()
azure_client.validate_credentials()
print('Running full compliance scan (Azure)...')
scan = run_full_scan(azure_client=azure_client)
db = ShastaDB(); db.initialize(); db.save_scan(scan)
md = save_markdown_report(scan)
html = save_html_report(scan)
print(f'Reports saved: {md} | {html}')
score = calculate_score(scan.findings)
summary = summarize_scan(scan)
summary['score'] = {
'percentage': score.score_percentage,
'grade': score.grade,
'controls_passing': score.passing,
'controls_failing': score.failing,
}
summary['control_summary'] = {
k: {'title': v['title'], 'overall_status': v['overall_status'], 'pass_count': v['pass_count'], 'fail_count': v['fail_count']}
for k, v in get_control_summary(scan.findings).items()
if v['has_automated_checks'] or v['overall_status'] != 'not_assessed'
}
print(json.dumps(summary, indent=2))
"
For both AWS + Azure:
<PYTHON_CMD> -c "
import json
from shasta.config import get_aws_client, get_azure_client
from shasta.scanner import run_full_scan
from shasta.compliance.mapper import get_control_summary
from shasta.compliance.scorer import calculate_score
from shasta.reports.summary import summarize_scan
from shasta.reports.generator import save_markdown_report, save_html_report
from shasta.db.schema import ShastaDB
client = get_aws_client()
client.validate_credentials()
azure_client = get_azure_client()
azure_client.validate_credentials()
print('Running full compliance scan (AWS + Azure)...')
scan = run_full_scan(client, azure_client=azure_client)
db = ShastaDB(); db.initialize(); db.save_scan(scan)
md = save_markdown_report(scan)
html = save_html_report(scan)
print(f'Reports saved: {md} | {html}')
score = calculate_score(scan.findings)
summary = summarize_scan(scan)
summary['score'] = {
'percentage': score.score_percentage,
'grade': score.grade,
'controls_passing': score.passing,
'controls_failing': score.failing,
}
summary['control_summary'] = {
k: {'title': v['title'], 'overall_status': v['overall_status'], 'pass_count': v['pass_count'], 'fail_count': v['fail_count']}
for k, v in get_control_summary(scan.findings).items()
if v['has_automated_checks'] or v['overall_status'] != 'not_assessed'
}
print(json.dumps(summary, indent=2))
"