Scan timing: clone 1.95s · analysis 4.58s · 1.4 MB · GitHub preflight 673ms
https://github.com/NVIDIA/SkillSpector.git
· scanned 2026-06-18 08:45 UTC (1 day ago)
· 10 languages
95 raw signals (60 security + 35 graph) 12th percentile · Python · small (2-20K LoC)
Last scanned 1 day ago · v1 · 92 actionable findings from 2 signal sources. 3 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
85.0 | 0.15 | 12.75 |
security_score |
50.1 | 0.25 | 12.53 |
testing_score |
100.0 | 0.20 | 20.00 |
documentation_score |
100.0 | 0.15 | 15.00 |
practices_score |
52.0 | 0.15 | 7.80 |
code_quality |
60.5 | 0.10 | 6.05 |
| Overall | 1.00 | 74.1 |
All 1276 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
mock_resolve_context_length |
software | healthy | tests/conftest.py:25 |
safe_skill_dir |
software | healthy | tests/conftest.py:35 |
malicious_skill_dir |
software | healthy | tests/conftest.py:60 |
_infer_file_type |
software | healthy | tests/test_mcp_least_privilege.py:61 |
_parse_yaml_frontmatter |
software | healthy | tests/test_mcp_least_privilege.py:67 |
_make_state |
software | healthy | tests/test_mcp_least_privilege.py:84 |
test_wildcard_detected |
software | healthy | tests/test_mcp_least_privilege.py:175 |
test_underdeclared_detected |
software | healthy | tests/test_mcp_least_privilege.py:191 |
test_underdeclared_has_high_severity_for_lp1 |
software | healthy | tests/test_mcp_least_privilege.py:207 |
test_no_permissions_field |
software | healthy | tests/test_mcp_least_privilege.py:248 |
test_over_declared_detected |
software | healthy | tests/test_mcp_least_privilege.py:262 |
test_no_findings |
software | healthy | tests/test_mcp_least_privilege.py:280 |
test_no_manifest_skips |
software | healthy | tests/test_mcp_least_privilege.py:292 |
test_docs_only_skill_skips |
software | healthy | tests/test_mcp_least_privilege.py:304 |
test_permission_matching_case_insensitive |
software | healthy | tests/test_mcp_least_privilege.py:338 |
test_lp1_test_files_reduced_confidence |
software | healthy | tests/test_mcp_least_privilege.py:378 |
_infer_file_type |
software | healthy | tests/test_mcp_tool_poisoning.py:63 |
_parse_yaml_frontmatter |
software | healthy | tests/test_mcp_tool_poisoning.py:69 |
_make_state |
software | healthy | tests/test_mcp_tool_poisoning.py:86 |
test_html_comment |
software | healthy | tests/test_mcp_tool_poisoning.py:200 |
test_markdown_comment |
software | healthy | tests/test_mcp_tool_poisoning.py:218 |
test_zero_width_chars |
software | healthy | tests/test_mcp_tool_poisoning.py:233 |
test_base64_in_description |
software | healthy | tests/test_mcp_tool_poisoning.py:251 |
test_data_uri_in_metadata |
software | healthy | tests/test_mcp_tool_poisoning.py:272 |
test_instruction_keyword_in_comment |
software | healthy | tests/test_mcp_tool_poisoning.py:290 |
test_homoglyph_in_name |
software | healthy | tests/test_mcp_tool_poisoning.py:318 |
test_rtl_override |
software | healthy | tests/test_mcp_tool_poisoning.py:337 |
test_mixed_script |
software | healthy | tests/test_mcp_tool_poisoning.py:355 |
test_invisible_formatting_chars |
software | healthy | tests/test_mcp_tool_poisoning.py:376 |
test_injection_in_param_description |
software | healthy | tests/test_mcp_tool_poisoning.py:401 |
test_system_token_in_param |
software | healthy | tests/test_mcp_tool_poisoning.py:421 |
test_exfiltration_in_param_description |
software | healthy | tests/test_mcp_tool_poisoning.py:444 |
test_malicious_default_value |
software | healthy | tests/test_mcp_tool_poisoning.py:466 |
test_excessive_description_length |
software | healthy | tests/test_mcp_tool_poisoning.py:489 |
test_clean_fixture |
software | healthy | tests/test_mcp_tool_poisoning.py:524 |
test_tags_present |
software | healthy | tests/test_mcp_tool_poisoning.py:534 |
test_fixture_triggers_tp1_tp2_tp3 |
software | healthy | tests/test_mcp_tool_poisoning.py:552 |
test_mismatch_detected |
software | healthy | tests/test_mcp_tool_poisoning.py:579 |
test_no_mismatch_clean |
software | healthy | tests/test_mcp_tool_poisoning.py:586 |
test_skipped_no_llm |
software | healthy | tests/test_mcp_tool_poisoning.py:594 |
test_skipped_no_description |
software | healthy | tests/test_mcp_tool_poisoning.py:600 |
test_llm_call_failure_returns_empty |
software | healthy | tests/test_mcp_tool_poisoning.py:606 |
test_unparseable_response_returns_empty |
software | healthy | tests/test_mcp_tool_poisoning.py:618 |
test_full_pipeline_poisoned_skill |
software | healthy | tests/test_mcp_tool_poisoning.py:644 |
test_full_pipeline_clean_skill |
software | healthy | tests/test_mcp_tool_poisoning.py:662 |
test_sarif_output_contains_tp_rules |
software | healthy | tests/test_mcp_tool_poisoning.py:679 |
test_no_llm_mode_excludes_tp4 |
software | healthy | tests/test_mcp_tool_poisoning.py:700 |
_skip_without_env |
software | healthy | tests/provider/test_provider_endpoint.py:39 |
_model_from_env |
software | healthy | tests/provider/test_provider_endpoint.py:48 |
test_openai_provider_makes_live_structured_request |
software | healthy | tests/provider/test_provider_endpoint.py:52 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
TestLP2WildcardPermission |
software | healthy | tests/test_mcp_least_privilege.py:174 |
TestLP1UnderdeclaredCapability |
software | healthy | tests/test_mcp_least_privilege.py:190 |
TestLP3NoPermissions |
software | healthy | tests/test_mcp_least_privilege.py:247 |
TestLP4OverDeclared |
software | healthy | tests/test_mcp_least_privilege.py:261 |
TestCleanSkill |
software | healthy | tests/test_mcp_least_privilege.py:279 |
TestEdgeCases |
software | healthy | tests/test_mcp_least_privilege.py:291 |
TestTP1HiddenInstructions |
software | healthy | tests/test_mcp_tool_poisoning.py:199 |
TestTP2UnicodeDeception |
software | healthy | tests/test_mcp_tool_poisoning.py:317 |
TestTP3ParameterInjection |
software | healthy | tests/test_mcp_tool_poisoning.py:400 |
TestCrossCutting |
software | healthy | tests/test_mcp_tool_poisoning.py:523 |
TestTP4DescriptionBehaviorMismatch |
software | healthy | tests/test_mcp_tool_poisoning.py:578 |
TestTP4Fallbacks |
software | healthy | tests/test_mcp_tool_poisoning.py:593 |
TestFullPipelineIntegration |
software | healthy | tests/test_mcp_tool_poisoning.py:637 |
ProviderResult |
software | healthy | tests/provider/test_provider_endpoint.py:33 |
TestGraphScanSafeSkill |
software | healthy | tests/integration/test_graph_scanner.py:23 |
TestGraphScanMaliciousSkill |
software | healthy | tests/integration/test_graph_scanner.py:88 |
TestGraphRiskScoring |
software | healthy | tests/integration/test_graph_scanner.py:104 |
TestEstimateCvssSeverity |
software | healthy | tests/unit/test_osv_client.py:45 |
TestSeverityFromVuln |
software | healthy | tests/unit/test_osv_client.py:90 |
TestQueryBatch |
software | healthy | tests/unit/test_osv_client.py:121 |
TestLayer1NvidiaApi |
software | healthy | tests/unit/test_model_info.py:94 |
TestLayer2Registry |
software | healthy | tests/unit/test_model_info.py:171 |
TestFallback |
software | healthy | tests/unit/test_model_info.py:253 |
TestPublicApi |
software | healthy | tests/unit/test_model_info.py:285 |
TestExcessiveAgency |
software | healthy | tests/unit/test_patterns_new.py:75 |
TestOutputHandling |
software | healthy | tests/unit/test_patterns_new.py:205 |
TestSystemPromptLeakage |
software | healthy | tests/unit/test_patterns_new.py:294 |
TestMemoryPoisoning |
software | healthy | tests/unit/test_patterns_new.py:360 |
TestToolMisuse |
software | healthy | tests/unit/test_patterns_new.py:438 |
TestRogueAgent |
software | healthy | tests/unit/test_patterns_new.py:688 |
TestSupplyChainDependencies |
software | healthy | tests/unit/test_patterns_new.py:765 |
TestSupplyChainSafePatterns |
software | healthy | tests/unit/test_patterns_new.py:876 |
TestTriggerAnalysis |
software | healthy | tests/unit/test_patterns_new.py:928 |
TestSupplyChainHelpers |
software | healthy | tests/unit/test_patterns_new.py:992 |
TestNvBuildProvider |
software | healthy | tests/unit/test_providers.py:76 |
TestNvInferenceProvider |
software | healthy | tests/unit/test_providers.py:133 |
TestOpenAIProvider |
software | healthy | tests/unit/test_providers.py:193 |
TestAnthropicProvider |
software | healthy | tests/unit/test_providers.py:230 |
TestOpenAICompatibleConstructor |
software | healthy | tests/unit/test_providers.py:265 |
TestProviderSelection |
software | healthy | tests/unit/test_providers.py:290 |
TestPromptInjection |
software | healthy | tests/unit/test_patterns.py:36 |
TestDataExfiltration |
software | healthy | tests/unit/test_patterns.py:98 |
TestPrivilegeEscalation |
software | healthy | tests/unit/test_patterns.py:134 |
TestSupplyChain |
software | healthy | tests/unit/test_patterns.py:207 |
TestHarmfulContent |
software | healthy | tests/unit/test_patterns.py:250 |
TestCredentialResolution |
software | healthy | tests/unit/test_llm_utils.py:56 |
TestFetchModelTokenLimits |
software | healthy | tests/unit/test_llm_utils.py:116 |
TestChatCompletion |
software | healthy | tests/unit/test_llm_utils.py:125 |
_FakeLLM |
software | healthy | tests/unit/test_llm_utils.py:156 |
TestIsLlmAvailable |
software | healthy | tests/unit/test_llm_utils.py:164 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
model_registry.yaml |
software | healthy | model_registry.yaml |
langgraph.json |
software | healthy | langgraph.json |
README.md |
software | healthy | README.md |
THIRD_PARTY_NOTICES.md |
software | healthy | THIRD_PARTY_NOTICES.md |
CONTRIBUTING.md |
software | healthy | CONTRIBUTING.md |
Dockerfile |
software | healthy | Dockerfile |
.pre-commit-config.yaml |
software | healthy | .pre-commit-config.yaml |
.env.example |
software | healthy | .env.example |
pyproject.toml |
software | healthy | pyproject.toml |
Makefile |
software | healthy | Makefile |
LICENSE |
software | healthy | LICENSE |
SECURITY.md |
software | healthy | SECURITY.md |
__init__.py |
software | healthy | tests/__init__.py |
conftest.py |
software | healthy | tests/conftest.py |
test_mcp_least_privilege.py |
software | healthy | tests/test_mcp_least_privilege.py |
test_mcp_tool_poisoning.py |
software | healthy | tests/test_mcp_tool_poisoning.py |
smoke.sh |
software | healthy | tests/docker/smoke.sh |
test_provider_endpoint.py |
software | healthy | tests/provider/test_provider_endpoint.py |
__init__.py |
software | healthy | tests/provider/__init__.py |
__init__.py |
software | healthy | tests/integration/__init__.py |
conftest.py |
software | healthy | tests/integration/conftest.py |
test_graph_scanner.py |
software | healthy | tests/integration/test_graph_scanner.py |
test_graph.py |
software | healthy | tests/integration/test_graph.py |
test_meta_analyzer_use_llm.py |
software | healthy | tests/integration/test_meta_analyzer_use_llm.py |
test_sarif.py |
software | healthy | tests/unit/test_sarif.py |
__init__.py |
software | healthy | tests/unit/__init__.py |
test_osv_client.py |
software | healthy | tests/unit/test_osv_client.py |
test_model_info.py |
software | healthy | tests/unit/test_model_info.py |
test_patterns_new.py |
software | healthy | tests/unit/test_patterns_new.py |
test_input_handler.py |
software | healthy | tests/unit/test_input_handler.py |
test_cli.py |
software | healthy | tests/unit/test_cli.py |
test_providers.py |
software | healthy | tests/unit/test_providers.py |
test_patterns.py |
software | healthy | tests/unit/test_patterns.py |
test_llm_utils.py |
software | healthy | tests/unit/test_llm_utils.py |
SKILL.md |
software | healthy | tests/fixtures/malicious_skill/SKILL.md |
helper.py |
software | healthy | tests/fixtures/malicious_skill/scripts/helper.py |
SKILL.md |
software | healthy | tests/fixtures/ssd/ssd_clean/SKILL.md |
SKILL.md |
software | healthy | tests/fixtures/ssd/ssd3_nl_exfiltration/SKILL.md |
SKILL.md |
software | healthy | tests/fixtures/ssd/ssd4_narrative_deception/SKILL.md |
SKILL.md |
software | healthy | tests/fixtures/ssd/ssd1_semantic_injection/SKILL.md |
SKILL.md |
software | healthy | tests/fixtures/ssd/ssd2_novel_phrasing/SKILL.md |
SKILL.md |
software | healthy | tests/fixtures/mcp_underdeclared_skill/SKILL.md |
agent.py |
software | healthy | tests/fixtures/mcp_underdeclared_skill/scripts/agent.py |
SKILL.md |
software | healthy | tests/fixtures/mcp_overprivileged_skill/SKILL.md |
helper.py |
software | healthy | tests/fixtures/mcp_overprivileged_skill/scripts/helper.py |
summarizer.py |
software | healthy | tests/fixtures/sdi/sdi1_mismatch/summarizer.py |
SKILL.md |
software | healthy | tests/fixtures/sdi/sdi1_mismatch/SKILL.md |
SKILL.md |
software | healthy | tests/fixtures/sdi/sdi2_inappropriate/SKILL.md |
formatter.py |
software | healthy | tests/fixtures/sdi/sdi2_inappropriate/formatter.py |
processor.py |
software | healthy | tests/fixtures/sdi/sdi4_divergence/processor.py |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
docker |
software | healthy | tests/docker |
provider |
software | healthy | tests/provider |
integration |
software | healthy | tests/integration |
unit |
software | healthy | tests/unit |
fixtures |
software | healthy | tests/fixtures |
malicious_skill |
software | healthy | tests/fixtures/malicious_skill |
scripts |
software | healthy | tests/fixtures/malicious_skill/scripts |
ssd |
software | healthy | tests/fixtures/ssd |
ssd_clean |
software | healthy | tests/fixtures/ssd/ssd_clean |
ssd3_nl_exfiltration |
software | healthy | tests/fixtures/ssd/ssd3_nl_exfiltration |
ssd4_narrative_deception |
software | healthy | tests/fixtures/ssd/ssd4_narrative_deception |
ssd1_semantic_injection |
software | healthy | tests/fixtures/ssd/ssd1_semantic_injection |
ssd2_novel_phrasing |
software | healthy | tests/fixtures/ssd/ssd2_novel_phrasing |
mcp_underdeclared_skill |
software | healthy | tests/fixtures/mcp_underdeclared_skill |
scripts |
software | healthy | tests/fixtures/mcp_underdeclared_skill/scripts |
mcp_overprivileged_skill |
software | healthy | tests/fixtures/mcp_overprivileged_skill |
scripts |
software | healthy | tests/fixtures/mcp_overprivileged_skill/scripts |
sdi |
software | healthy | tests/fixtures/sdi |
sdi1_mismatch |
software | healthy | tests/fixtures/sdi/sdi1_mismatch |
sdi2_inappropriate |
software | healthy | tests/fixtures/sdi/sdi2_inappropriate |
sdi4_divergence |
software | healthy | tests/fixtures/sdi/sdi4_divergence |
sdi3_scope_creep |
software | healthy | tests/fixtures/sdi/sdi3_scope_creep |
sdi_clean |
software | healthy | tests/fixtures/sdi/sdi_clean |
mcp_mismatched_skill |
software | healthy | tests/fixtures/mcp_mismatched_skill |
scripts |
software | healthy | tests/fixtures/mcp_mismatched_skill/scripts |
mcp_poisoned_tool |
software | healthy | tests/fixtures/mcp_poisoned_tool |
scripts |
software | healthy | tests/fixtures/mcp_poisoned_tool/scripts |
safe_skill |
software | healthy | tests/fixtures/safe_skill |
sqp |
software | healthy | tests/fixtures/sqp |
sqp1_clean |
software | healthy | tests/fixtures/sqp/sqp1_clean |
sqp3_clean |
software | healthy | tests/fixtures/sqp/sqp3_clean |
sqp1_vague_triggers |
software | healthy | tests/fixtures/sqp/sqp1_vague_triggers |
sqp2_clean |
software | healthy | tests/fixtures/sqp/sqp2_clean |
sqp3_locale_forcing |
software | healthy | tests/fixtures/sqp/sqp3_locale_forcing |
sqp2_missing_warnings |
software | healthy | tests/fixtures/sqp/sqp2_missing_warnings |
mcp_clean_skill |
software | healthy | tests/fixtures/mcp_clean_skill |
scripts |
software | healthy | tests/fixtures/mcp_clean_skill/scripts |
nodes |
software | healthy | tests/nodes |
analyzers |
software | healthy | tests/nodes/analyzers |
docs |
software | healthy | docs |
plans |
software | healthy | docs/plans |
src |
software | healthy | src |
skillspector |
software | healthy | src/skillspector |
providers |
software | healthy | src/skillspector/providers |
openai |
software | healthy | src/skillspector/providers/openai |
nv_build |
software | healthy | src/skillspector/providers/nv_build |
anthropic |
software | healthy | src/skillspector/providers/anthropic |
nodes |
software | healthy | src/skillspector/nodes |
analyzers |
software | healthy | src/skillspector/nodes/analyzers |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
vps::azure |
hardware | healthy | model_registry.yaml |
vps::aws |
hardware | healthy | tests/unit/test_patterns.py |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-vs8t71bu |
software | healthy | /tmp/repobility-clone-vs8t71bu |
| Label | Layer | Status | Path |
|---|---|---|---|
redis |
data | healthy | src/skillspector/nodes/analyzers/static_patterns_supply_cha… |
| Label | Layer | Status | Path |
|---|---|---|---|
celery |
data | healthy | src/skillspector/nodes/analyzers/static_patterns_supply_cha… |
| Label | Layer | Status | Path |
|---|---|---|---|
nginx |
network | healthy | tests/unit/test_patterns_new.py |
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | src/skillspector/nodes/analyzers/mcp_tool_poisoning.py |
| Label | Layer | Status | Path |
|---|---|---|---|
image::Dockerfile |
hardware | healthy | Dockerfile |
| Label | Layer | Status | Path |
|---|---|---|---|
gpu (detected) |
hardware | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::src/skillspector/nodes/analyzers/static_patterns_supp… |
security | healthy | src/skillspector/nodes/analyzers/static_patterns_supply_cha… |
This page is publicly accessible at:
https://repobility.com/scan/5af0a74e-3409-4ffe-985d-4356097a0e01/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/5af0a74e-3409-4ffe-985d-4356097a0e01/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.