cisco-ai-skill-scanner 1.0.0__tar.gz → 1.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  2. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.github/ISSUE_TEMPLATE/feature_request.md +2 -2
  3. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.github/PULL_REQUEST_TEMPLATE.md +1 -1
  4. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.github/workflows/python-tests.yml +1 -1
  5. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.gitignore +2 -0
  6. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/CODEOWNERS +1 -1
  7. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/PKG-INFO +13 -13
  8. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/README.md +11 -11
  9. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/SECURITY.md +2 -2
  10. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/TESTING.md +4 -4
  11. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/aidefense-analyzer.md +11 -11
  12. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/api-rationale.md +6 -6
  13. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/api-server.md +15 -15
  14. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/architecture.md +8 -8
  15. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/behavioral-analyzer.md +12 -12
  16. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/binary-handling.md +2 -2
  17. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/developing.md +7 -7
  18. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/llm-analyzer.md +9 -10
  19. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/meta-analyzer.md +6 -6
  20. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/quickstart.md +20 -20
  21. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/remote-skills-analysis.md +18 -18
  22. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/docs/threat-taxonomy.md +6 -6
  23. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/EVALUATION_GUIDE.md +1 -1
  24. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/README.md +1 -1
  25. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/__init__.py +1 -1
  26. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/benchmark_runner.py +6 -6
  27. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/eval_runner.py +8 -8
  28. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/prompt-injection/jailbreak-override/SKILL.md +1 -1
  29. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/safe-skills/simple-math/SKILL.md +1 -1
  30. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/update_expected_findings.py +3 -3
  31. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/examples/__init__.py +1 -1
  32. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/examples/advanced_scanning.py +8 -8
  33. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/examples/api_usage.py +4 -4
  34. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/examples/basic_scan.py +2 -2
  35. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/examples/batch_scanning.py +4 -4
  36. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/examples/behavioral_analyzer_example.py +3 -3
  37. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/examples/integration_example.py +5 -5
  38. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/examples/llm_analyzer_example.py +5 -5
  39. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/examples/programmatic_usage.py +5 -5
  40. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/pyproject.toml +7 -7
  41. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/scripts/pre-commit-hook.sh +15 -15
  42. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/__init__.py +8 -4
  43. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/_version.py +2 -2
  44. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/api/__init__.py +1 -1
  45. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/api/api.py +4 -4
  46. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/api/api_cli.py +7 -7
  47. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/api/api_server.py +6 -6
  48. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/api/router.py +3 -3
  49. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/cli/__init__.py +1 -1
  50. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/cli/cli.py +11 -11
  51. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/config/__init__.py +3 -3
  52. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/config/config.py +2 -2
  53. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/config/config_parser.py +9 -9
  54. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/config/constants.py +2 -2
  55. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/__init__.py +1 -1
  56. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/__init__.py +3 -3
  57. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/aidefense_analyzer.py +3 -3
  58. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/behavioral/__init__.py +1 -1
  59. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/behavioral/alignment/alignment_llm_client.py +1 -1
  60. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/behavioral/alignment/alignment_prompt_builder.py +2 -2
  61. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/behavioral_analyzer.py +1 -1
  62. cisco_ai_skill_scanner-1.0.0/skillanalyzer/core/analyzers/cross_skill_analyzer.py → cisco_ai_skill_scanner-1.0.1/skill_scanner/core/analyzers/cross_skill_scanner.py +5 -5
  63. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/llm_analyzer.py +1 -1
  64. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/llm_prompt_builder.py +2 -2
  65. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/meta_analyzer.py +2 -2
  66. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/static.py +8 -8
  67. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/trigger_analyzer.py +2 -2
  68. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/exceptions.py +10 -10
  69. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/loader.py +4 -4
  70. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/models.py +6 -6
  71. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/reporters/markdown_reporter.py +2 -2
  72. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/reporters/sarif_reporter.py +2 -2
  73. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/reporters/table_reporter.py +2 -2
  74. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/rules/yara_scanner.py +1 -1
  75. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/scanner.py +2 -2
  76. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/context_extractor.py +2 -2
  77. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/dataflow/__init__.py +1 -1
  78. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/interprocedural/call_graph_analyzer.py +2 -2
  79. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/parser/python_parser.py +5 -5
  80. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/__init__.py +1 -1
  81. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/prompts/boilerplate_protection_rule_prompt.md +5 -5
  82. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/prompts/code_alignment_threat_analysis_prompt.md +25 -25
  83. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/prompts/skill_meta_analysis_prompt.md +6 -6
  84. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/prompts/skill_threat_analysis_prompt.md +11 -11
  85. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/prompts/unified_response_schema.md +1 -1
  86. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/rules/signatures.yaml +2 -2
  87. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/autonomy_abuse.yara +1 -1
  88. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/code_execution.yara +2 -2
  89. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/command_injection.yara +2 -2
  90. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/skill_discovery_abuse.yara +1 -1
  91. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/tool_chaining_abuse.yara +1 -1
  92. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/transitive_trust_abuse.yara +1 -1
  93. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/hooks/__init__.py +1 -1
  94. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/hooks/pre_commit.py +16 -16
  95. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/threats/__init__.py +1 -1
  96. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/utils/__init__.py +1 -1
  97. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/utils/command_utils.py +1 -1
  98. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/utils/di_container.py +1 -1
  99. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/utils/logging_config.py +7 -7
  100. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/__init__.py +1 -1
  101. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/behavioral/test_behavioral_analyzer.py +3 -3
  102. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/behavioral/test_enhanced_behavioral.py +11 -11
  103. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/static_analysis/test_static_analyzer.py +3 -3
  104. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_aidefense_analyzer.py +3 -3
  105. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_api_endpoints.py +2 -2
  106. cisco_ai_skill_scanner-1.0.1/tests/test_api_server_config.py +313 -0
  107. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_cli_formats.py +1 -1
  108. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_config.py +17 -17
  109. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_integration.py +10 -10
  110. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_llm_analyzer.py +9 -9
  111. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_loader.py +3 -3
  112. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_meta_analyzer.py +20 -20
  113. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_models.py +1 -1
  114. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_reporters.py +4 -4
  115. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_scanner.py +2 -2
  116. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_threats.py +1 -1
  117. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_virustotal_analyzer.py +3 -3
  118. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_virustotal_benign.py +3 -3
  119. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/test_virustotal_upload.py +4 -4
  120. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/uv.lock +1 -2
  121. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.cursor/rules/codeguard-0-additional-cryptography.mdc +0 -0
  122. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.cursor/rules/codeguard-0-framework-and-languages.mdc +0 -0
  123. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.cursor/rules/codeguard-0-iac-security.mdc +0 -0
  124. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.cursor/rules/codeguard-0-mobile-apps.mdc +0 -0
  125. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.cursor/rules/codeguard-0-supply-chain-security.mdc +0 -0
  126. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.cursor/rules/codeguard-1-crypto-algorithms.mdc +0 -0
  127. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.cursor/rules/codeguard-1-digital-certificates.mdc +0 -0
  128. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.cursor/rules/codeguard-1-hardcoded-credentials.mdc +0 -0
  129. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.env.example +0 -0
  130. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.github/workflows/integration-tests.yml +0 -0
  131. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.github/workflows/release.yml +0 -0
  132. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.pre-commit-config.yaml +0 -0
  133. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.windsurf/rules/codeguard-0-additional-cryptography.md +0 -0
  134. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.windsurf/rules/codeguard-0-framework-and-languages.md +0 -0
  135. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.windsurf/rules/codeguard-0-iac-security.md +0 -0
  136. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.windsurf/rules/codeguard-0-mobile-apps.md +0 -0
  137. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.windsurf/rules/codeguard-0-supply-chain-security.md +0 -0
  138. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.windsurf/rules/codeguard-1-crypto-algorithms.md +0 -0
  139. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.windsurf/rules/codeguard-1-digital-certificates.md +0 -0
  140. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/.windsurf/rules/codeguard-1-hardcoded-credentials.md +0 -0
  141. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/CODE_OF_CONDUCT.md +0 -0
  142. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/CONTRIBUTING.md +0 -0
  143. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/LICENSE +0 -0
  144. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/HOW_EVAL_WORKS.md +0 -0
  145. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/backdoor/magic-string-trigger/SKILL.md +0 -0
  146. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/backdoor/magic-string-trigger/_expected.json +0 -0
  147. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/backdoor/magic-string-trigger/process.py +0 -0
  148. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/behavioral-analysis/multi-file-exfiltration/SKILL.md +0 -0
  149. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/behavioral-analysis/multi-file-exfiltration/_expected.json +0 -0
  150. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/behavioral-analysis/multi-file-exfiltration/analyze.py +0 -0
  151. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/behavioral-analysis/multi-file-exfiltration/collector.py +0 -0
  152. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/behavioral-analysis/multi-file-exfiltration/encoder.py +0 -0
  153. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/behavioral-analysis/multi-file-exfiltration/reporter.py +0 -0
  154. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/command-injection/eval-execution/SKILL.md +0 -0
  155. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/command-injection/eval-execution/_expected.json +0 -0
  156. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/command-injection/eval-execution/calculate.py +0 -0
  157. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/data-exfiltration/environment-secrets/SKILL.md +0 -0
  158. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/data-exfiltration/environment-secrets/_expected.json +0 -0
  159. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/data-exfiltration/environment-secrets/get_info.py +0 -0
  160. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/obfuscation/base64-payload/SKILL.md +0 -0
  161. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/obfuscation/base64-payload/_expected.json +0 -0
  162. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/obfuscation/base64-payload/process.py +0 -0
  163. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/path-traversal/file-reader/SKILL.md +0 -0
  164. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/path-traversal/file-reader/_expected.json +0 -0
  165. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/path-traversal/file-reader/read.py +0 -0
  166. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/prompt-injection/jailbreak-override/_expected.json +0 -0
  167. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/resource-exhaustion/infinite-loop/SKILL.md +0 -0
  168. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/resource-exhaustion/infinite-loop/_expected.json +0 -0
  169. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/resource-exhaustion/infinite-loop/analyze.py +0 -0
  170. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/safe-skills/simple-math/_expected.json +0 -0
  171. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/safe-skills/simple-math/math_ops.py +0 -0
  172. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/safe-skills-2/file-validator/SKILL.md +0 -0
  173. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/safe-skills-2/file-validator/_expected.json +0 -0
  174. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/safe-skills-2/file-validator/validate.py +0 -0
  175. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/sql-injection/database-query/SKILL.md +0 -0
  176. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/sql-injection/database-query/_expected.json +0 -0
  177. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/skills/sql-injection/database-query/query.py +0 -0
  178. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/test_skills/malicious/eicar-test/SKILL.md +0 -0
  179. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/test_skills/malicious/eicar-test/_expected.json +0 -0
  180. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/test_skills/malicious/eicar-test/assets/test-binary.bin +0 -0
  181. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/test_skills/malicious/exfiltrator/SKILL.md +0 -0
  182. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/test_skills/malicious/exfiltrator/_expected.json +0 -0
  183. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/test_skills/malicious/exfiltrator/analyze.py +0 -0
  184. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/test_skills/malicious/prompt-injection/SKILL.md +0 -0
  185. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/test_skills/safe/simple-formatter/SKILL.md +0 -0
  186. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/test_skills/safe/simple-formatter/_expected.json +0 -0
  187. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/evals/test_skills/safe/simple-formatter/formatter.py +0 -0
  188. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/base.py +0 -0
  189. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/behavioral/alignment/__init__.py +0 -0
  190. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/behavioral/alignment/alignment_orchestrator.py +0 -0
  191. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/behavioral/alignment/alignment_response_validator.py +0 -0
  192. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/behavioral/alignment/threat_vulnerability_classifier.py +0 -0
  193. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/llm_provider_config.py +0 -0
  194. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/llm_request_handler.py +0 -0
  195. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/llm_response_parser.py +0 -0
  196. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/analyzers/virustotal_analyzer.py +0 -0
  197. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/reporters/__init__.py +0 -0
  198. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/reporters/json_reporter.py +0 -0
  199. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/rules/__init__.py +0 -0
  200. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/rules/patterns.py +0 -0
  201. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/__init__.py +0 -0
  202. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/cfg/__init__.py +0 -0
  203. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/cfg/builder.py +0 -0
  204. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/dataflow/forward_analysis.py +0 -0
  205. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/interprocedural/__init__.py +0 -0
  206. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/interprocedural/cross_file_analyzer.py +0 -0
  207. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/parser/__init__.py +0 -0
  208. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/semantic/__init__.py +0 -0
  209. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/semantic/name_resolver.py +0 -0
  210. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/semantic/type_analyzer.py +0 -0
  211. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/taint/__init__.py +0 -0
  212. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/taint/tracker.py +0 -0
  213. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/core/static_analysis/types/__init__.py +0 -0
  214. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/prompts/llm_response_schema.json +0 -0
  215. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/coercive_injection.yara +0 -0
  216. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/credential_harvesting.yara +0 -0
  217. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/prompt_injection.yara +0 -0
  218. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/script_injection.yara +0 -0
  219. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/sql_injection.yara +0 -0
  220. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/system_manipulation.yara +0 -0
  221. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/data/yara_rules/unicode_steganography.yara +0 -0
  222. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/threats/threats.py +0 -0
  223. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/utils/file_utils.py +0 -0
  224. {cisco_ai_skill_scanner-1.0.0/skillanalyzer → cisco_ai_skill_scanner-1.0.1/skill_scanner}/utils/logging_utils.py +0 -0
  225. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/behavioral/README.md +0 -0
  226. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/behavioral/__init__.py +0 -0
  227. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/conftest.py +0 -0
  228. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/static_analysis/README.md +0 -0
  229. {cisco_ai_skill_scanner-1.0.0 → cisco_ai_skill_scanner-1.0.1}/tests/static_analysis/__init__.py +0 -0
@@ -13,7 +13,7 @@ A clear and concise description of the bug.
13
13
  ## Steps to Reproduce
14
14
 
15
15
  1. Install version: [e.g., 0.2.0]
16
- 2. Run command: `skill-analyzer scan ...`
16
+ 2. Run command: `skill-scanner scan ...`
17
17
  3. Observe error: [describe what happened]
18
18
 
19
19
  ## Expected Behavior
@@ -29,7 +29,7 @@ Describe a specific scenario where this feature would be useful.
29
29
  **Example:**
30
30
  ```bash
31
31
  # How the feature would be used
32
- skill-analyzer scan /path/to/skill --your-new-feature
32
+ skill-scanner scan /path/to/skill --your-new-feature
33
33
  ```
34
34
 
35
35
  ## Benefits
@@ -53,4 +53,4 @@ Screenshots, mockups, links to similar features in other tools, etc.
53
53
  - [ ] I have searched existing issues/PRs for similar requests
54
54
  - [ ] I have described a clear use case
55
55
  - [ ] I have considered implementation complexity
56
- - [ ] This aligns with the project's goals (security scanning for Claude Skills)
56
+ - [ ] This aligns with the project's goals (security scanning for Agent Skills)
@@ -41,7 +41,7 @@ Describe manual testing performed:
41
41
 
42
42
  ```bash
43
43
  # Commands run for testing
44
- skill-analyzer scan examples/test-skill
44
+ skill-scanner scan examples/test-skill
45
45
  ```
46
46
 
47
47
  **Results:**
@@ -79,7 +79,7 @@ jobs:
79
79
  run: |
80
80
  uv run pytest tests/ \
81
81
  --ignore=tests/test_llm_analyzer.py \
82
- -v --tb=short --cov=skillanalyzer --cov-report=xml
82
+ -v --tb=short --cov=skill_scanner --cov-report=xml
83
83
 
84
84
  - name: Upload coverage to Codecov
85
85
  uses: codecov/codecov-action@v4
@@ -5,6 +5,8 @@ __pycache__/
5
5
  *.so
6
6
  .Python
7
7
  build/
8
+ # Auto-generated version file (hatch-vcs)
9
+ skill_scanner/_version.py
8
10
  develop-eggs/
9
11
  dist/
10
12
  downloads/
@@ -1,3 +1,3 @@
1
1
  # CODEOWNERS
2
2
  # The first matching pattern takes precedence.
3
- * @cisco-ai-defense/skill-analyzer-reviewers
3
+ * @cisco-ai-defense/skill-scanner-reviewers
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cisco-ai-skill-scanner
3
- Version: 1.0.0
4
- Summary: Security scanner for Claude Skills and Codex Skills packages - Detects prompt injection, data exfiltration, and malicious code
3
+ Version: 1.0.1
4
+ Summary: Security scanner for Agent Skills packages - Detects prompt injection, data exfiltration, and malicious code
5
5
  Project-URL: Homepage, https://github.com/cisco-ai-defense/skill-scanner
6
6
  Project-URL: Documentation, https://github.com/cisco-ai-defense/skill-scanner#readme
7
7
  Project-URL: Repository, https://github.com/cisco-ai-defense/skill-scanner
@@ -68,14 +68,14 @@ Description-Content-Type: text/markdown
68
68
 
69
69
  A security scanner for AI Agent Skills that detects prompt injection, data exfiltration, and malicious code patterns. Combines **pattern-based detection** (YAML + YARA), **LLM-as-a-judge**, and **behavioral dataflow analysis** for comprehensive threat detection.
70
70
 
71
- Supports [Anthropic Claude Skills](https://docs.anthropic.com/en/docs/agents-and-tools/claude-skills), [OpenAI Codex Skills](https://openai.github.io/codex/), and [Cursor Agent Skills](https://docs.cursor.com/context/rules) formats following the [Agent Skills specification](https://agentskills.io).
71
+ Supports [OpenAI Codex Skills](https://openai.github.io/codex/) and [Cursor Agent Skills](https://docs.cursor.com/context/rules) formats following the [Agent Skills specification](https://agentskills.io).
72
72
 
73
73
  ---
74
74
 
75
75
  ## Highlights
76
76
 
77
77
  - **Multi-Engine Detection** - Static analysis, behavioral dataflow, LLM semantic analysis, and cloud-based scanning
78
- - **False Positive Filtering** - Meta-analyzer achieves ~65% noise reduction while maintaining 100% threat detection
78
+ - **False Positive Filtering** - Meta-analyzer significantly reduces noise while preserving detection capability
79
79
  - **CI/CD Ready** - SARIF output for GitHub Code Scanning, exit codes for build failures
80
80
  - **Extensible** - Plugin architecture for custom analyzers
81
81
 
@@ -151,29 +151,29 @@ export AI_DEFENSE_API_KEY="your_aidefense_api_key"
151
151
 
152
152
  ```bash
153
153
  # Scan a single skill (static analyzer only)
154
- skill-analyzer scan /path/to/skill
154
+ skill-scanner scan /path/to/skill
155
155
 
156
156
  # Scan with behavioral analyzer (dataflow analysis)
157
- skill-analyzer scan /path/to/skill --use-behavioral
157
+ skill-scanner scan /path/to/skill --use-behavioral
158
158
 
159
159
  # Scan with all engines
160
- skill-analyzer scan /path/to/skill --use-behavioral --use-llm --use-aidefense
160
+ skill-scanner scan /path/to/skill --use-behavioral --use-llm --use-aidefense
161
161
 
162
162
  # Scan with meta-analyzer for false positive filtering
163
- skill-analyzer scan /path/to/skill --use-llm --enable-meta
163
+ skill-scanner scan /path/to/skill --use-llm --enable-meta
164
164
 
165
165
  # Scan multiple skills recursively
166
- skill-analyzer scan-all /path/to/skills --recursive --use-behavioral
166
+ skill-scanner scan-all /path/to/skills --recursive --use-behavioral
167
167
 
168
168
  # CI/CD: Fail build if threats found
169
- skill-analyzer scan-all ./skills --fail-on-findings --format sarif --output results.sarif
169
+ skill-scanner scan-all ./skills --fail-on-findings --format sarif --output results.sarif
170
170
  ```
171
171
 
172
172
  ### Python SDK
173
173
 
174
174
  ```python
175
- from skillanalyzer import SkillScanner
176
- from skillanalyzer.core.analyzers import StaticAnalyzer, BehavioralAnalyzer
175
+ from skill_scanner import SkillScanner
176
+ from skill_scanner.core.analyzers import StaticAnalyzer, BehavioralAnalyzer
177
177
 
178
178
  # Create scanner with analyzers
179
179
  scanner = SkillScanner(analyzers=[
@@ -221,7 +221,7 @@ print(f"Findings: {len(result.findings)}")
221
221
  ## Example Output
222
222
 
223
223
  ```
224
- $ skill-analyzer scan ./my-skill --use-behavioral
224
+ $ skill-scanner scan ./my-skill --use-behavioral
225
225
 
226
226
  ============================================================
227
227
  Skill: my-skill
@@ -10,14 +10,14 @@
10
10
 
11
11
  A security scanner for AI Agent Skills that detects prompt injection, data exfiltration, and malicious code patterns. Combines **pattern-based detection** (YAML + YARA), **LLM-as-a-judge**, and **behavioral dataflow analysis** for comprehensive threat detection.
12
12
 
13
- Supports [Anthropic Claude Skills](https://docs.anthropic.com/en/docs/agents-and-tools/claude-skills), [OpenAI Codex Skills](https://openai.github.io/codex/), and [Cursor Agent Skills](https://docs.cursor.com/context/rules) formats following the [Agent Skills specification](https://agentskills.io).
13
+ Supports [OpenAI Codex Skills](https://openai.github.io/codex/) and [Cursor Agent Skills](https://docs.cursor.com/context/rules) formats following the [Agent Skills specification](https://agentskills.io).
14
14
 
15
15
  ---
16
16
 
17
17
  ## Highlights
18
18
 
19
19
  - **Multi-Engine Detection** - Static analysis, behavioral dataflow, LLM semantic analysis, and cloud-based scanning
20
- - **False Positive Filtering** - Meta-analyzer achieves ~65% noise reduction while maintaining 100% threat detection
20
+ - **False Positive Filtering** - Meta-analyzer significantly reduces noise while preserving detection capability
21
21
  - **CI/CD Ready** - SARIF output for GitHub Code Scanning, exit codes for build failures
22
22
  - **Extensible** - Plugin architecture for custom analyzers
23
23
 
@@ -93,29 +93,29 @@ export AI_DEFENSE_API_KEY="your_aidefense_api_key"
93
93
 
94
94
  ```bash
95
95
  # Scan a single skill (static analyzer only)
96
- skill-analyzer scan /path/to/skill
96
+ skill-scanner scan /path/to/skill
97
97
 
98
98
  # Scan with behavioral analyzer (dataflow analysis)
99
- skill-analyzer scan /path/to/skill --use-behavioral
99
+ skill-scanner scan /path/to/skill --use-behavioral
100
100
 
101
101
  # Scan with all engines
102
- skill-analyzer scan /path/to/skill --use-behavioral --use-llm --use-aidefense
102
+ skill-scanner scan /path/to/skill --use-behavioral --use-llm --use-aidefense
103
103
 
104
104
  # Scan with meta-analyzer for false positive filtering
105
- skill-analyzer scan /path/to/skill --use-llm --enable-meta
105
+ skill-scanner scan /path/to/skill --use-llm --enable-meta
106
106
 
107
107
  # Scan multiple skills recursively
108
- skill-analyzer scan-all /path/to/skills --recursive --use-behavioral
108
+ skill-scanner scan-all /path/to/skills --recursive --use-behavioral
109
109
 
110
110
  # CI/CD: Fail build if threats found
111
- skill-analyzer scan-all ./skills --fail-on-findings --format sarif --output results.sarif
111
+ skill-scanner scan-all ./skills --fail-on-findings --format sarif --output results.sarif
112
112
  ```
113
113
 
114
114
  ### Python SDK
115
115
 
116
116
  ```python
117
- from skillanalyzer import SkillScanner
118
- from skillanalyzer.core.analyzers import StaticAnalyzer, BehavioralAnalyzer
117
+ from skill_scanner import SkillScanner
118
+ from skill_scanner.core.analyzers import StaticAnalyzer, BehavioralAnalyzer
119
119
 
120
120
  # Create scanner with analyzers
121
121
  scanner = SkillScanner(analyzers=[
@@ -163,7 +163,7 @@ print(f"Findings: {len(result.findings)}")
163
163
  ## Example Output
164
164
 
165
165
  ```
166
- $ skill-analyzer scan ./my-skill --use-behavioral
166
+ $ skill-scanner scan ./my-skill --use-behavioral
167
167
 
168
168
  ============================================================
169
169
  Skill: my-skill
@@ -9,7 +9,7 @@
9
9
 
10
10
  ## Reporting a Vulnerability
11
11
 
12
- We take security seriously. If you discover a security vulnerability in the Skill Analyzer, please report it responsibly.
12
+ We take security seriously. If you discover a security vulnerability in the Skill Scanner, please report it responsibly.
13
13
 
14
14
  ### How to Report
15
15
 
@@ -81,7 +81,7 @@ When using the analyzer:
81
81
 
82
82
  ## Security Scanning
83
83
 
84
- This tool scans Claude Skills for security threats. It is not a substitute for:
84
+ This tool scans agent skills for security threats. It is not a substitute for:
85
85
  - Manual security review
86
86
  - Penetration testing
87
87
  - Compliance audits
@@ -1,6 +1,6 @@
1
1
  # Testing Guide
2
2
 
3
- This document covers testing requirements and procedures for contributing to the Skill Analyzer.
3
+ This document covers testing requirements and procedures for contributing to the Skill Scanner.
4
4
 
5
5
  ## Quick Reference
6
6
 
@@ -9,7 +9,7 @@ This document covers testing requirements and procedures for contributing to the
9
9
  uv run pytest tests/ -v
10
10
 
11
11
  # Run tests with coverage
12
- uv run pytest tests/ --cov=skillanalyzer --cov-report=html
12
+ uv run pytest tests/ --cov=skill_scanner --cov-report=html
13
13
 
14
14
  # Run evaluation benchmark
15
15
  uv run python evals/benchmark_runner.py
@@ -103,7 +103,7 @@ For detailed evaluation documentation, see [evals/README.md](/evals/README.md).
103
103
 
104
104
  ```bash
105
105
  # Generate HTML coverage report
106
- uv run pytest tests/ --cov=skillanalyzer --cov-report=html
106
+ uv run pytest tests/ --cov=skill_scanner --cov-report=html
107
107
 
108
108
  # View report (opens in browser)
109
109
  open htmlcov/index.html # macOS
@@ -123,7 +123,7 @@ xdg-open htmlcov/index.html # Linux
123
123
  ```python
124
124
  # tests/test_example.py
125
125
  import pytest
126
- from skillanalyzer.core.scanner import SkillScanner
126
+ from skill_scanner.core.scanner import SkillScanner
127
127
 
128
128
  class TestExampleFeature:
129
129
  """Tests for example feature."""
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- The AI Defense Analyzer integrates with Cisco AI Defense API to provide enterprise-grade security scanning for Claude Skills. It analyzes prompts, instructions, markdown content, and code files for threats including prompt injection, data exfiltration, and malicious patterns.
5
+ The AI Defense Analyzer integrates with Cisco AI Defense API to provide enterprise-grade security scanning for Agent Skills. It analyzes prompts, instructions, markdown content, and code files for threats including prompt injection, data exfiltration, and malicious patterns.
6
6
 
7
7
  ## Features
8
8
 
@@ -56,23 +56,23 @@ echo "AI_DEFENSE_API_KEY=your_key" >> .env
56
56
 
57
57
  ```bash
58
58
  # Enable AI Defense analyzer
59
- skill-analyzer scan /path/to/skill --use-aidefense
59
+ skill-scanner scan /path/to/skill --use-aidefense
60
60
 
61
61
  # Provide API key directly
62
- skill-analyzer scan /path/to/skill --use-aidefense --aidefense-api-key your_key
62
+ skill-scanner scan /path/to/skill --use-aidefense --aidefense-api-key your_key
63
63
 
64
64
  # Combine with other analyzers
65
- skill-analyzer scan /path/to/skill --use-behavioral --use-llm --use-aidefense
65
+ skill-scanner scan /path/to/skill --use-behavioral --use-llm --use-aidefense
66
66
 
67
67
  # Scan multiple skills
68
- skill-analyzer scan-all /path/to/skills --recursive --use-aidefense
68
+ skill-scanner scan-all /path/to/skills --recursive --use-aidefense
69
69
  ```
70
70
 
71
71
  ### Python API
72
72
 
73
73
  ```python
74
- from skillanalyzer.core.analyzers import AIDefenseAnalyzer
75
- from skillanalyzer.core.loader import load_skill
74
+ from skill_scanner.core.analyzers import AIDefenseAnalyzer
75
+ from skill_scanner.core.loader import load_skill
76
76
 
77
77
  # Initialize analyzer with default rules
78
78
  analyzer = AIDefenseAnalyzer(
@@ -82,7 +82,7 @@ analyzer = AIDefenseAnalyzer(
82
82
  )
83
83
 
84
84
  # Initialize with custom rules
85
- from skillanalyzer.core.analyzers.aidefense_analyzer import DEFAULT_ENABLED_RULES
85
+ from skill_scanner.core.analyzers.aidefense_analyzer import DEFAULT_ENABLED_RULES
86
86
 
87
87
  custom_rules = [
88
88
  {"rule_name": "Prompt Injection"},
@@ -112,8 +112,8 @@ findings = asyncio.run(scan_skill())
112
112
  ### Integration with Scanner
113
113
 
114
114
  ```python
115
- from skillanalyzer import SkillScanner
116
- from skillanalyzer.core.analyzers import StaticAnalyzer, AIDefenseAnalyzer
115
+ from skill_scanner import SkillScanner
116
+ from skill_scanner.core.analyzers import StaticAnalyzer, AIDefenseAnalyzer
117
117
 
118
118
  # Combine analyzers
119
119
  analyzers = [
@@ -169,7 +169,7 @@ For comprehensive coverage, combine AI Defense with other analyzers:
169
169
 
170
170
  ```bash
171
171
  # Maximum coverage
172
- skill-analyzer scan /path/to/skill \
172
+ skill-scanner scan /path/to/skill \
173
173
  --use-behavioral \
174
174
  --use-llm \
175
175
  --use-aidefense \
@@ -1,8 +1,8 @@
1
1
  # API Server Rationale
2
2
 
3
- ## Question: Is an API Server Necessary for Skill Analyzer?
3
+ ## Question: Is an API Server Necessary for Skill Scanner?
4
4
 
5
- Unlike MCP Scanner, which scans **remote MCP servers** (HTTP/SSE/stdio connections), Skill Analyzer scans **local skill packages** (files/directories). This raises the question: is an API server necessary?
5
+ Unlike MCP Scanner, which scans **remote MCP servers** (HTTP/SSE/stdio connections), Skill Scanner scans **local skill packages** (files/directories). While an API server is less critical for Skill Scanner, it can provide additional support for CI/CD integration, web interfaces, service integrations, and batch processing. Read below for more details.
6
6
 
7
7
  ## Analysis
8
8
 
@@ -13,12 +13,12 @@ Unlike MCP Scanner, which scans **remote MCP servers** (HTTP/SSE/stdio connectio
13
13
  - API server enables scanning servers you don't control
14
14
  - Essential for the use case (scanning external services)
15
15
 
16
- **Skill Analyzer:**
16
+ **Skill Scanner:**
17
17
  - Scans **local** skill packages (files/directories)
18
18
  - Skills are **always local** - there are no remote skills (unlike MCP servers)
19
19
  - Skills are distributed as ZIP files or directories that users install locally
20
20
  - Can be scanned directly via CLI or Python SDK
21
- - **Key Point**: Remote Claude Skills do not exist - skills are local file packages
21
+ - **Key Point**: Remote skills do not exist - skills are local file packages
22
22
 
23
23
  ### Use Cases Where API is Valuable
24
24
 
@@ -95,9 +95,9 @@ Despite skills being local files, an API server provides value for:
95
95
 
96
96
  ## Conclusion
97
97
 
98
- **Critical Finding**: Remote Claude Skills **do not exist**. Skills are local file packages that users install on their machines, not remote services like MCP servers.
98
+ **Critical Finding**: Remote skills **do not exist**. Skills are local file packages that users install on their machines, not remote services like MCP servers.
99
99
 
100
- While the API server is **less critical** for Skill Analyzer than for MCP Scanner (since there are no remote skills to scan), it still provides value for:
100
+ While the API server is **less critical** for Skill Scanner than for MCP Scanner (since there are no remote skills to scan), it still provides value for:
101
101
  - CI/CD integration (uploading skill ZIP files)
102
102
  - Web interfaces (uploading skill packages)
103
103
  - Service integrations (HTTP-based workflows)
@@ -2,10 +2,10 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- The Skill Analyzer API Server provides a REST interface for uploading and scanning Claude Skills and Codex Skills packages, enabling integration with web applications, CI/CD pipelines, and other services.
5
+ The Skill Scanner API Server provides a REST interface for uploading and scanning Agent Skills packages, enabling integration with web applications, CI/CD pipelines, and other services.
6
6
 
7
7
  **Key Points**:
8
- - **Skills are local packages**: Claude Skills are local file packages that users install on their machines, not remote services
8
+ - **Skills are local packages**: Skills are local file packages that users install on their machines, not remote services
9
9
  - **API enables uploads**: The API allows uploading skill ZIP files for scanning via HTTP
10
10
  - **For integration workflows**: Useful for CI/CD, web interfaces, and service integrations
11
11
  - **CLI is primary**: For most use cases, the CLI is the recommended interface
@@ -21,22 +21,22 @@ The Skill Analyzer API Server provides a REST interface for uploading and scanni
21
21
 
22
22
  ```bash
23
23
  # Start server (default: 0.0.0.0:8000)
24
- skill-analyzer-api
24
+ skill-scanner-api
25
25
 
26
26
  # Custom port
27
- skill-analyzer-api --port 8080
27
+ skill-scanner-api --port 8080
28
28
 
29
29
  # Development mode with auto-reload
30
- skill-analyzer-api --reload
30
+ skill-scanner-api --reload
31
31
 
32
32
  # Custom host and port
33
- skill-analyzer-api --host 127.0.0.1 --port 9000
33
+ skill-scanner-api --host 127.0.0.1 --port 9000
34
34
  ```
35
35
 
36
36
  ### Programmatic
37
37
 
38
38
  ```python
39
- from skillanalyzer.api_server import run_server
39
+ from skill_scanner.api_server import run_server
40
40
 
41
41
  run_server(host="0.0.0.0", port=8000, reload=False)
42
42
  ```
@@ -410,7 +410,7 @@ jobs:
410
410
  - name: Start API Server
411
411
  run: |
412
412
  pip install -r requirements.txt
413
- skill-analyzer-api &
413
+ skill-scanner-api &
414
414
  sleep 5
415
415
 
416
416
  - name: Scan Skills
@@ -452,20 +452,20 @@ WORKDIR /app
452
452
  COPY requirements.txt .
453
453
  RUN pip install -r requirements.txt
454
454
 
455
- COPY skillanalyzer/ ./skillanalyzer/
455
+ COPY skill_scanner/ ./skill_scanner/
456
456
 
457
457
  EXPOSE 8000
458
458
 
459
- CMD ["python", "-m", "skillanalyzer.api_cli", "--host", "0.0.0.0", "--port", "8000"]
459
+ CMD ["python", "-m", "skill_scanner.api_cli", "--host", "0.0.0.0", "--port", "8000"]
460
460
  ```
461
461
 
462
462
  ```bash
463
463
  # Build and run
464
- docker build -t skill-analyzer-api .
464
+ docker build -t skill-scanner-api .
465
465
  docker run -p 8000:8000 \
466
466
  -e SKILL_SCANNER_LLM_API_KEY=your_key \
467
467
  -e SKILL_SCANNER_LLM_MODEL=claude-3-5-sonnet-20241022 \
468
- skill-analyzer-api
468
+ skill-scanner-api
469
469
  ```
470
470
 
471
471
  ## Error Handling
@@ -547,7 +547,7 @@ Run behind reverse proxy (nginx, Caddy) with TLS:
547
547
  ```nginx
548
548
  server {
549
549
  listen 443 ssl;
550
- server_name api.skillanalyzer.com;
550
+ server_name api.skill_scanner.com;
551
551
 
552
552
  ssl_certificate /path/to/cert.pem;
553
553
  ssl_certificate_key /path/to/key.pem;
@@ -604,7 +604,7 @@ Instrumentator().instrument(app).expose(app)
604
604
  lsof -i :8000
605
605
 
606
606
  # Try different port
607
- skill-analyzer-api --port 8080
607
+ skill-scanner-api --port 8080
608
608
  ```
609
609
 
610
610
  ### LLM analyzer not available
@@ -626,4 +626,4 @@ export SKILL_SCANNER_LLM_MODEL=claude-3-5-sonnet-20241022
626
626
 
627
627
  ## Conclusion
628
628
 
629
- The API server makes the Skill Analyzer accessible to any application or service, enabling automated security scanning at scale. Combined with the LLM analyzer, it provides powerful threat detection capabilities through a simple REST interface. Supports both Claude Skills and Codex Skills formats.
629
+ The API server makes the Skill Scanner accessible to any application or service, enabling automated security scanning at scale. Combined with the LLM analyzer, it provides powerful threat detection capabilities through a simple REST interface. Supports Codex Skills and Cursor Agent Skills formats.
@@ -1,8 +1,8 @@
1
- # Skill Analyzer Architecture
1
+ # Skill Scanner Architecture
2
2
 
3
3
  ## Overview
4
4
 
5
- The Skill Analyzer is built with a modular, extensible architecture for Agent Skills security analysis. It supports the Agent Skills specification format used by Anthropic Claude Skills, OpenAI Codex Skills, and Cursor Agent Skills. This document describes the system design, data flow, and key components.
5
+ The Skill Scanner is built with a modular, extensible architecture for Agent Skills security analysis. It supports the Agent Skills specification format used by OpenAI Codex Skills and Cursor Agent Skills. This document describes the system design, data flow, and key components.
6
6
 
7
7
  **Structure**: Organized by component (core/, config/, data/, threats/, cli/, api/)
8
8
  **Coverage**: Static analysis (YAML + YARA), LLM analysis, Behavioral dataflow analysis
@@ -64,7 +64,7 @@ graph TB
64
64
 
65
65
  Defines the core data structures:
66
66
 
67
- - **`Skill`**: Represents a complete Claude Skill, Codex Skill, or Cursor Agent Skill package
67
+ - **`Skill`**: Represents a complete Agent Skill package
68
68
  - `directory`: Path to skill package
69
69
  - `manifest`: Parsed YAML frontmatter
70
70
  - `instruction_body`: Markdown instructions
@@ -256,7 +256,7 @@ Command-line interface built with `argparse`.
256
256
  ### Single Skill Scan Flow
257
257
 
258
258
  ```
259
- 1. User runs: skill-analyzer scan /path/to/skill
259
+ 1. User runs: skill-scanner scan /path/to/skill
260
260
 
261
261
  2. CLI parses arguments → calls scan_command()
262
262
 
@@ -287,7 +287,7 @@ Command-line interface built with `argparse`.
287
287
  ### Multi-Skill Scan Flow
288
288
 
289
289
  ```
290
- 1. User runs: skill-analyzer scan-all /path/to/skills
290
+ 1. User runs: skill-scanner scan-all /path/to/skills
291
291
 
292
292
  2. Scanner.scan_directory()
293
293
  ├─→ Find all skill packages (SKILL.md files)
@@ -316,7 +316,7 @@ Command-line interface built with `argparse`.
316
316
  Example:
317
317
 
318
318
  ```python
319
- from skillanalyzer.analyzers.base import BaseAnalyzer
319
+ from skill_scanner.analyzers.base import BaseAnalyzer
320
320
 
321
321
  class LLMAnalyzer(BaseAnalyzer):
322
322
  def __init__(self):
@@ -331,7 +331,7 @@ class LLMAnalyzer(BaseAnalyzer):
331
331
 
332
332
  ### Adding New Rules
333
333
 
334
- Edit `skillanalyzer/data/rules/signatures.yaml`:
334
+ Edit `skill_scanner/data/rules/signatures.yaml`:
335
335
 
336
336
  ```yaml
337
337
  - id: MY_CUSTOM_RULE
@@ -477,4 +477,4 @@ FastAPI Server
477
477
 
478
478
  ## Conclusion
479
479
 
480
- The Skill Analyzer is designed with modularity, extensibility, and security in mind. The current static analysis foundation provides a solid base for future enhancements including semantic analysis, behavioral monitoring, and enterprise features. It supports Claude Skills, Codex Skills, and Cursor Agent Skills formats, which follow the Agent Skills specification.
480
+ The Skill Scanner is designed with modularity, extensibility, and security in mind. The current static analysis foundation provides a solid base for future enhancements including semantic analysis, behavioral monitoring, and enterprise features. It supports Codex Skills and Cursor Agent Skills formats, which follow the Agent Skills specification.
@@ -36,7 +36,7 @@ Finding Generation
36
36
 
37
37
  ### 1. AST Parser
38
38
 
39
- **Module**: `skillanalyzer/core/static_analysis/parser/python_parser.py`
39
+ **Module**: `skill_scanner/core/static_analysis/parser/python_parser.py`
40
40
 
41
41
  **Functionality**:
42
42
  - Parses Python source into Abstract Syntax Tree
@@ -51,7 +51,7 @@ Finding Generation
51
51
 
52
52
  **Example**:
53
53
  ```python
54
- from skillanalyzer.core.static_analysis.parser import PythonParser
54
+ from skill_scanner.core.static_analysis.parser import PythonParser
55
55
 
56
56
  parser = PythonParser(source_code)
57
57
  if parser.parse():
@@ -63,7 +63,7 @@ if parser.parse():
63
63
 
64
64
  ### 2. Forward Dataflow Analysis (CFG-Based)
65
65
 
66
- **Module**: `skillanalyzer/core/static_analysis/dataflow/forward_analysis.py`
66
+ **Module**: `skill_scanner/core/static_analysis/dataflow/forward_analysis.py`
67
67
 
68
68
  **Functionality**:
69
69
  - **CFG-based dataflow analysis** using Control Flow Graph and fixpoint algorithm
@@ -83,8 +83,8 @@ if parser.parse():
83
83
 
84
84
  **Example**:
85
85
  ```python
86
- from skillanalyzer.core.static_analysis.dataflow import ForwardDataflowAnalysis
87
- from skillanalyzer.core.static_analysis.parser.python_parser import PythonParser
86
+ from skill_scanner.core.static_analysis.dataflow import ForwardDataflowAnalysis
87
+ from skill_scanner.core.static_analysis.parser.python_parser import PythonParser
88
88
 
89
89
  parser = PythonParser(source_code)
90
90
  parser.parse()
@@ -102,7 +102,7 @@ for flow in flows:
102
102
 
103
103
  ### 3. Context Extractor
104
104
 
105
- **Module**: `skillanalyzer/core/static_analysis/context_extractor.py`
105
+ **Module**: `skill_scanner/core/static_analysis/context_extractor.py`
106
106
 
107
107
  **Functionality**:
108
108
  - Combines AST parser + dataflow tracker
@@ -154,8 +154,8 @@ reporter.py: Sends to attacker.com
154
154
  ### Python API
155
155
 
156
156
  ```python
157
- from skillanalyzer.core.analyzers import BehavioralAnalyzer
158
- from skillanalyzer.core.scanner import SkillScanner
157
+ from skill_scanner.core.analyzers import BehavioralAnalyzer
158
+ from skill_scanner.core.scanner import SkillScanner
159
159
 
160
160
  # Create analyzer (static analysis mode by default)
161
161
  behavioral = BehavioralAnalyzer(use_static_analysis=True)
@@ -169,7 +169,7 @@ result = scanner.scan_skill("/path/to/skill")
169
169
 
170
170
  ```bash
171
171
  # Behavioral analyzer is included by default in static analyzer
172
- skill-analyzer scan /path/to/skill
172
+ skill-scanner scan /path/to/skill
173
173
 
174
174
  # Results include behavioral findings (BEHAVIOR_* rule IDs)
175
175
  ```
@@ -303,8 +303,8 @@ def process(user_input):
303
303
 
304
304
  ## Technical References
305
305
 
306
- - Implementation: `skillanalyzer/core/analyzers/behavioral_analyzer.py`
307
- - AST Parser: `skillanalyzer/core/static_analysis/parser/`
308
- - Dataflow: `skillanalyzer/core/static_analysis/dataflow/`
306
+ - Implementation: `skill_scanner/core/analyzers/behavioral_analyzer.py`
307
+ - AST Parser: `skill_scanner/core/static_analysis/parser/`
308
+ - Dataflow: `skill_scanner/core/static_analysis/dataflow/`
309
309
  - Tests: `tests/test_enhanced_behavioral.py`
310
310
  - Complex eval: `evals/skills/behavioral-analysis/multi-file-exfiltration/`
@@ -1,4 +1,4 @@
1
- # Binary File Handling in Claude Skills and Codex Skills
1
+ # Binary File Handling in Agent Skills
2
2
 
3
3
  ## Current Behavior
4
4
 
@@ -23,7 +23,7 @@ When the scanner finds binary files in a skill package:
23
23
  1. **Unauditable** - Can't read/inspect the code
24
24
  2. **Platform-specific malware** - Could be trojans, keyloggers, ransomware
25
25
  3. **Obfuscation** - Hides malicious behavior
26
- 4. **Execution risk** - Could be run by user or Claude
26
+ 4. **Execution risk** - Could be run by user or agent
27
27
  5. **Supply chain attack** - Common malware delivery method
28
28
 
29
29
  **Example threat:**
@@ -1,6 +1,6 @@
1
1
  # Development Guide
2
2
 
3
- This guide covers setting up your development environment, running tests, and contributing code to the Skill Analyzer.
3
+ This guide covers setting up your development environment, running tests, and contributing code to the Skill Scanner.
4
4
 
5
5
  ## Prerequisites
6
6
 
@@ -69,7 +69,7 @@ uv run pytest tests/test_scanner.py -v
69
69
  uv run pytest tests/test_scanner.py::test_scan_safe_skill -v
70
70
 
71
71
  # Run with coverage report
72
- uv run pytest tests/ -v --tb=short --cov=skillanalyzer --cov-report=html
72
+ uv run pytest tests/ -v --tb=short --cov=skill_scanner --cov-report=html
73
73
  ```
74
74
 
75
75
  For detailed testing requirements, see [TESTING.md](/TESTING.md).
@@ -99,7 +99,7 @@ This runs:
99
99
  ## Project Structure
100
100
 
101
101
  ```
102
- skillanalyzer/
102
+ skill_scanner/
103
103
  ├── __init__.py
104
104
  ├── api/ # FastAPI REST endpoints
105
105
  ├── cli/ # Click CLI interface
@@ -131,16 +131,16 @@ evals/
131
131
 
132
132
  ```bash
133
133
  # Static analysis only (default)
134
- skill-analyzer scan /path/to/skill
134
+ skill-scanner scan /path/to/skill
135
135
 
136
136
  # With behavioral analysis
137
- skill-analyzer scan /path/to/skill --use-behavioral
137
+ skill-scanner scan /path/to/skill --use-behavioral
138
138
 
139
139
  # With LLM analysis (requires API key)
140
- skill-analyzer scan /path/to/skill --use-llm
140
+ skill-scanner scan /path/to/skill --use-llm
141
141
 
142
142
  # All analyzers
143
- skill-analyzer scan /path/to/skill --use-behavioral --use-llm --use-virustotal
143
+ skill-scanner scan /path/to/skill --use-behavioral --use-llm --use-virustotal
144
144
  ```
145
145
 
146
146
  ## Versioning