How nil2004n/ci_cd_prod works
PWT is a local-first YAML security assessment workbench: users select a repository and YAML files, PWT runs installed scanners, stores sanitized findings and run state in shared SQLite, and presents reports through desktop or project-scoped assistant integrations. Its distinct stages are repository discovery, scanner execution, persistence, and report/evidence access; MCP adds scoped tools and database-backed analysis. README documents the product-level integration flows; source excerpts confirm discovery, scan orchestration, and report behavior, but not every internal MCP route.
Main entry points: McpScanTools.java MCP tools · ScanService.java Scan orchestration · SqliteStore.java Shared SQLite · PwtDesktopApp.java Desktop GUI
Components 19
User entry points
- Desktop GUI
pwt/src/main/java/pwt/desktop/PwtDesktopApp.java - OpenCode commands
integrations/opencode-plugin/tui.ts - Claude commands
integrations
Assessment workflow
- YAML discovery
pwt/src/main/java/pwt/infrastructure/NioDiscoveryService.java - Discovery service
pwt/src/main/java/pwt/application/DiscoveryService.java - Scan orchestration
pwt/src/main/java/pwt/application/ScanService.java - Scanner adapters
pwt/src/main/java/pwt/adapters/ScannerAdapter.java - Local schemas
pwt/src/main/java/pwt/adapters/LocalSchemaAdapter.java
State and reports
- Report service
pwt/src/main/java/pwt/application/ReportService.java - Report exports
pwt/src/main/java/pwt/infrastructure/ReportWriter.java - Shared SQLite
pwt/src/main/java/pwt/infrastructure/SqliteStore.java - Assessment journal
pwt/src/main/java/pwt/application/JournalWriter.java
Scoped assistant access
- MCP server
pwt/src/main/java/pwt/mcp/PwtMcpServer.java - MCP tools
pwt/src/main/java/pwt/mcp/McpScanTools.java - Project scope
pwt/src/main/java/pwt/mcp/ProjectScope.java - Scan manager
pwt/src/main/java/pwt/mcp/McpScanManager.java
Other components
- Authorized user
- Installed scanners
- Project YAML files
Connections 25
- Authorized user → Desktop GUI: uses dashboard
README.md - Authorized user → OpenCode commands: uses commands
README.md - Authorized user → Claude commands: uses commands
README.md - Desktop GUI → Discovery service: requests discovery
pwt/src/main/java/pwt/desktop/PwtDesktopApp.java - Discovery service → YAML discovery: delegates traversal
pwt/src/main/java/pwt/infrastructure/NioDiscoveryService.java - YAML discovery → Project YAML files: lists YAML files
pwt/src/main/java/pwt/infrastructure/NioDiscoveryService.java - Desktop GUI → Scan orchestration: starts scans
pwt/src/main/java/pwt/desktop/PwtDesktopApp.java - Scan orchestration → YAML discovery: discovers targets
pwt/src/main/java/pwt/application/ScanService.java - Scan orchestration → Scanner adapters: executes scanners
pwt/src/main/java/pwt/application/ScanService.java - Scan orchestration → Local schemas: executes validation
pwt/src/main/java/pwt/application/ScanService.java - Scanner adapters → Installed scanners: invokes tools
- Scan orchestration → Shared SQLite: persists results
pwt/src/main/java/pwt/application/ScanService.java - Desktop GUI → Shared SQLite: shares state
README.md - Report service → Shared SQLite: reads run data
pwt/src/main/java/pwt/application/ReportService.java - Report service → Report exports: writes exports
pwt/src/main/java/pwt/application/ReportService.java - OpenCode commands → MCP server: connects MCP
README.md - Claude commands → MCP server: connects MCP
README.md - MCP server → MCP tools: registers tools
- MCP tools → Project scope: enforces project scope
pwt/src/main/java/pwt/mcp/McpScanTools.java - MCP tools → Scan manager: dispatches scans
pwt/src/main/java/pwt/mcp/McpScanTools.java - Scan manager → Scan orchestration: runs scan service
pwt/src/main/java/pwt/mcp/McpScanManager.java - MCP tools → Shared SQLite: reads assessment evidence
pwt/src/main/java/pwt/mcp/McpScanTools.java - MCP tools → Report service: requests reports
pwt/src/main/java/pwt/mcp/McpScanTools.java - MCP tools → Assessment journal: uses journal
pwt/src/main/java/pwt/mcp/McpScanTools.java - MCP server → Shared SQLite: shares state
README.md