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.
Drift inferred · capture-to-capture
- HIGH code analysis flagged committed secret ×3, dynamic code execution ×4 in crisnahine/chameleon
- HIGH code analysis flagged dynamic code execution in crisnahine/chameleon
- HIGH code analysis flagged dynamic code execution in crisnahine/chameleon
- HIGH code analysis flagged dynamic code execution in crisnahine/chameleon
- HIGH code analysis flagged dynamic code execution in crisnahine/chameleon
- HIGH code analysis flagged dynamic code execution in crisnahine/chameleon
- HIGH code analysis flagged dynamic code execution ×5 in crisnahine/chameleon
- HIGH code analysis flagged dynamic code execution ×5 in crisnahine/chameleon
- HIGH code analysis flagged dynamic code execution ×4 in crisnahine/chameleon
transport stdio counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
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
- skill crisnahine-chameleon-684e23d/.claude/skills/gap-taxonomy/SKILL.md
- agent-rules crisnahine-chameleon-684e23d/CLAUDE.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-auto-idiom/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-deep-work/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-disable/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-doctor/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-explain/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-init/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-journey/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-pause-15m/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-pr-review/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-receiving-code-review/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-refresh/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-status/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-teach/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/chameleon-trust/SKILL.md
- skill crisnahine-chameleon-684e23d/plugin/skills/using-chameleon/SKILL.md
danger signals7
- dynamic code execution __import__() crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/extractors/treesitter/grammars.py :79
module = __import__(module_name, fromlist=[factory_attr]) - dynamic code execution eval()/exec() crisnahine-chameleon-684e23d/plugin/mcp/chameleon_mcp/lint_engine.py :466
Used by the sink/style/convention scans so an ``eval(`` mentioned in a - dynamic code execution __import__() crisnahine-chameleon-684e23d/tests/unit/test_bootstrap_orchestrator.py :988
lambda self, repo_root, glob="**/*", limit=None, paths=None: __import__( - dynamic code execution __import__ sink crisnahine-chameleon-684e23d/tests/unit/test_review_fix3_tools_autopass.py :446
real_replace = __import__("os").replace - committed secret Slack token crisnahine-chameleon-684e23d/tests/unit/test_intent_capture.py :398
xoxb-2…(28 chars, redacted) - committed secret AWS access key id crisnahine-chameleon-684e23d/tests/unit/test_qa26_remediation.py :23
AKIAQA…(20 chars, redacted) - committed secret GitHub token crisnahine-chameleon-684e23d/tests/unit/test_secret_coverage.py :290
ghp_16…(40 chars, redacted)
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@*