github Python analyzed 684e23d

crisnahine/chameleon

github

Auto-derives codebase conventions from repo analysis and injects archetype-aware guidance into AI-generated code, enforcing team idioms, banned imports, and framework-specific patterns for TypeScript/JavaScript, Ruby, and Python projects.

maintainer
crisnahine
license
MIT
first seen
2026-06-04
last seen
2026-08-02
releases · 30d
109
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged committed secret ×3, dynamic code execution ×4 in crisnahine/chameleon
  2. HIGH code analysis flagged dynamic code execution in crisnahine/chameleon
  3. HIGH code analysis flagged dynamic code execution in crisnahine/chameleon
  4. HIGH code analysis flagged dynamic code execution in crisnahine/chameleon
  5. HIGH code analysis flagged dynamic code execution in crisnahine/chameleon
  6. HIGH code analysis flagged dynamic code execution in crisnahine/chameleon
  7. HIGH code analysis flagged dynamic code execution ×5 in crisnahine/chameleon
  8. HIGH code analysis flagged dynamic code execution ×5 in crisnahine/chameleon
  9. HIGH code analysis flagged dynamic code execution ×4 in crisnahine/chameleon
capabilities 0 tools
transport stdio counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 684e23d · analyzer v28 · 2d ago

skills & prompt files 17

danger signals7

code evidence vv4.7.3 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 771

filesystem 89

  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/_excerpt_cache.py :19 via safe_open_fd, which calls os.open(path, O_RDONLY | O_NOFOLLOW
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/canonical.py :37 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/clustering.py :23 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/comment_scan.py :18 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/discovery.py :19 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/import_graph.py :25 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/naming.py :30 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/orchestrator.py :31 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/tool_config.py :23 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/transaction.py :21 import shutil
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/workspace.py :19 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/calls_index.py :28 the target's CLOSED export set. An open (barrel) set proves nothing, so it
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/cochange.py :30 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/cochange_history.py :22 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/commit_scope.py :37 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/comprehension.py :19 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/constant_index.py :29 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/conventions.py :10 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/core/idiom_candidates.py :33 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/core/idiom_store.py :16 import shutil
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/core/session_state.py :17 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/counterexamples.py :40 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/daemon.py :74 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/degraded_telemetry.py :25 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/dep_audit.py :27 import shutil
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/doctor.py :19 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/drift/observations.py :17 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/drift/schema.py :16 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/drift/sqlite_config.py :15 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/duplication_review.py :13 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/enforcement.py :14 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/enforcement_calibration.py :20 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/exec_log.py :43 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/extractors/_base.py :11 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/extractors/python.py :22 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/extractors/registry.py :21 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/extractors/ruby.py :15 import shutil
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/extractors/treesitter/extractor.py :13 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/extractors/treesitter/grammars.py :23 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/extractors/typescript.py :17 import shutil
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/function_catalog.py :49 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/gate.py :37 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/hook_helper.py :27 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/idiom_coverage.py :23 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/index_db.py :27 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/intent_capture.py :42 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/judge.py :35 import shutil
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/lint_engine.py :51 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/locks.py :25 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/log_rotation.py :11 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/metrics.py :13 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/optouts.py :22 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/peer_plugins.py :26 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/peer_skill_context.py :40 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/phantom_imports.py :20 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/plugin_paths.py :21 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/production_ref.py :44 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/profile/canonical_loader.py :33 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/profile/config.py :40 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/profile/loader.py :15 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/profile/trust.py :17 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/prose_rules.py :28 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/refuter.py :16 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/refuter_canary.py :24 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/repo_id.py :18 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/review_ledger.py :66 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/safe_open.py :21 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/shadow_report.py :29 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/signature_diff.py :46 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/advisories.py :23 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/assemble.py :42 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/delivery.py :43 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/gates.py :39 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/job.py :51 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/judge_wait.py :38 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/lenses/correctness.py :27 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/lenses/duplication.py :27 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/lenses/idiom.py :32 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/miner.py :18 Three independent, try-wrapped passes, each fail-open (a raising sub-step
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/pipeline.py :49 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/scheduler.py :67 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/verify.py :59 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/symbol_index.py :53 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/symbol_signatures.py :39 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/test_integrity.py :13 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/testrun.py :25 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/tools.py :21 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/typecheck.py :26 from pathlib import Path
  • fs crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/worktree.py :26 from pathlib import Path

shell / exec 23

  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/canonical.py :34 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/discovery.py :18 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/bootstrap/tool_config.py :1003 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/cochange_history.py :20 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/commit_scope.py :35 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/daemon.py :68 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/dep_audit.py :28 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/doctor.py :309 import subprocess as _subp
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/extractors/python.py :20 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/extractors/ruby.py :16 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/extractors/typescript.py :18 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/gate.py :126 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/hook_helper.py :1327 import subprocess as _sp
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/judge.py :36 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/production_ref.py :41 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/profile/canonical_loader.py :31 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/prose_rules.py :144 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/repo_id.py :16 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/pipeline.py :938 # an unsupported platform, or an OSError from subprocess.Popen);
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/stop/scheduler.py :63 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/testrun.py :24 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/tools.py :18 import subprocess
  • shell crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/typecheck.py :25 import subprocess

network 4

  • net crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/counterexamples.py :166 line anchor keeps ``from . import requests`` (a name import, not a module
  • net crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/daemon.py :65 import socket
  • net crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/daemon_client.py :24 import socket
  • net crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/lint_engine.py :3163 ``requests`` matches ``import requests`` and ``from requests.adapters import

secrets 2

  • secrets crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/profile/trust.py :11 import getpass
  • secrets crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/review_ledger.py :55 import getpass

database 5

  • db crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/drift/observations.py :15 import sqlite3
  • db crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/drift/schema.py :15 import sqlite3
  • db crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/drift/sqlite_config.py :14 import sqlite3
  • db crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/index_db.py :24 import sqlite3
  • db crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/review_ledger.py :61 import sqlite3

declared dependencies 12

  • mcp@>=1.2.0,<2
  • xxhash@>=3.5.0
  • detect-secrets@>=1.5.0
  • pyyaml@>=6.0
  • libcst@>=1.1.0
  • pytest@>=8.0.0
  • ruff@>=0.6.0
  • rails@~> 7.1
  • pg@*
  • puma@*
  • rspec-rails@*
  • rubocop@*