utkusen/sast-analysis
>- Perform codebase analysis and architecture mapping as the first phase of a security assessment. Explores the tech stack, frameworks, entry points, data flows, and trust boundaries. Outputs sast/architecture.md. Run this before any vulnerability detection skill. Use when asked to analyze a codebase for security or when sast/architecture.md does not yet exist.
npx skills add https://github.com/utkusen/sast-skills --skill sast-analysis
You are performing the first phase of a security assessment. Your goal is to deeply understand the codebase. You are NOT looking for specific vulnerabilities yet. This is pure reconnaissance.
Create a sast/ folder in the project root (if it doesn't already exist). This phase produces one output file inside it:
sast/architecture.md — technology stack, architecture, entry points, data flows
Explore the codebase and identify:
Start by reading dependency manifests, project configs, and directory structure. Then drill into source code to confirm findings.
Based on Phase 1, build a mental model of:
Write the results of Phase 1 and Phase 2 to sast/architecture.md. Use this format:
# Architecture: [Project Name]
## Technology Stack
| Category | Details |
|---|---|
| Languages | ... |
| Frameworks | ... |
| Databases | ... |
| Auth mechanism | ... |
| Infrastructure | ... |
| External services | ... |
## Architecture Overview
[Describe the architecture: monolith vs microservices, how components interact,
main modules and their responsibilities]
## Data Flow
[Trace how user input enters the system, gets processed, stored, and returned.
Cover the primary flows (e.g., registration, login, core business actions).]
## Entry Points
| Entry Point | Type | Auth Required | Description |
|---|---|---|---|
| ... | HTTP/GraphQL/WS/etc. | Yes/No | ... |
## Trust Boundaries
[List each trust boundary and what crosses it]
## Sensitive Data Inventory
| Data Type | Where Stored | How Accessed | Protection |
|---|---|---|---|
| ... | ... | ... | ... |
Take utkusen/sast-analysis from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.