How maelbel/skillspector-web works
Skillspector Web lets visitors submit an HTTP(S) skill URL, track an asynchronous scan, and review its risk score and findings. The Nuxt UI sends same-origin requests through Nitro proxy routes to a FastAPI service; the service runs the skillspector analysis pipeline and persists scan history in SQLite. The product also exposes scan logs, history management, settings, and token-gated administration, including Claude CLI login and retention controls. The README documents these capabilities, but backend route and scanner source excerpts were not supplied, so uncertain internal wiring is omitted.
Main entry points: scan.py Scan endpoints · admin.vue Admin page · main.py FastAPI application · admin.py Admin endpoints
Components 28
Web experience
- Scan home
app/pages/index.vue - Scan form
app/components/ScanForm.vue - Scan result
app/pages/scan/[id].vue - Status polling
app/composables/useScanStatus.ts - Log polling
app/composables/useScanLogs.ts - History page
app/pages/history.vue - Admin page
app/pages/admin.vue
Nitro API proxy
- Scan proxy
server/api/scan.post.ts - Status proxy
server/api/scan/[id].get.ts - Logs proxy
server/api/scan/[id]/logs.get.ts - History proxy
server/api/scan/index.get.ts - Delete proxy
server/api/scan/[id]/index.delete.ts - Settings proxy
server/api/settings.get.ts - Settings update proxy
server/api/settings.put.ts - Claude login start
server/api/admin/claude-login/start.post.ts - Claude login complete
server/api/admin/claude-login/complete.post.ts
Scan service
- FastAPI application
backend/app/main.py - Scan endpoints
backend/app/api/routes/scan.py - Skillspector runner
backend/app/scanner.py - Scan history store
backend/app/db.py - Scan log service
backend/app/scan_logs.py
History and admin
- Admin endpoints
backend/app/api/routes/admin.py - Settings endpoints
backend/app/api/routes/settings.py - Retention service
backend/app/retention.py
Other components
- Visitor
- skillspector pipeline
- AI provider
- Claude CLI session
Connections 34
- Visitor → Scan home: opens
- Scan home → Scan form: presents
- Scan form → Scan proxy: submits scan
- Scan proxy → Scan endpoints: forwards request
- Scan endpoints → Skillspector runner: starts scan
- Skillspector runner → skillspector pipeline: invokes pipeline
- Status polling → Status proxy: polls status
- Status proxy → Scan endpoints: forwards request
- Scan result → Status polling: tracks scan
- Scan result → Log polling: shows logs
- Log polling → Logs proxy: polls logs
- Logs proxy → Scan endpoints: forwards request
- Scan endpoints → Scan history store: reads and writes
- Scan endpoints → Scan log service: records logs
- Visitor → History page: opens
- History page → History proxy: loads scans
- History page → Delete proxy: deletes scan
- History proxy → Scan endpoints: forwards request
- Delete proxy → Scan endpoints: forwards request
- Visitor → Admin page: opens
- Admin page → Settings proxy: loads settings
- Admin page → Settings update proxy: updates settings
- Admin page → Claude login start: starts login
- Admin page → Claude login complete: completes login
- Settings proxy → Settings endpoints: forwards request
- Settings update proxy → Settings endpoints: forwards request
- Claude login start → Admin endpoints: forwards request
- Claude login complete → Admin endpoints: forwards request
- FastAPI application → Scan endpoints: registers routes
- FastAPI application → Admin endpoints: registers routes
- FastAPI application → Settings endpoints: registers routes
- FastAPI application → Retention service: starts service
- Skillspector runner → AI provider: uses optionally
- Admin endpoints → Claude CLI session: checks login