{"data":{"skill":{"slug":"cz07cring-ai-partner-chat","name":"ai-partner-chat","icon":"📦","repo":"https://github.com/Cz07cring/ai-partner-chat/tree/main/","status":"approved","author":"Cz07cring","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"94e1966a-dd5e-4da8-b92c-e5fc133820f4","skill_id":"84fe9119-0d41-4ea3-8672-61c2ff22dc76","version":8,"content_hash":"94ada0bf6524157921d2c20867babba7","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"Most static command detections are false positives from Markdown code fences, documentation, normal imports, and safe local cache paths. Confirmed risks include persistent storage of conversations, notes, tags, emotion data, and vector data under hidden home directories, plus temporary backup of skill data during installation. Semantic review also found remote model loading with trusted code enabled, default conversation logging, and opaque reuse of stored personal context.","remediation":[{"issue":"Remote model code execution is enabled during embedding model loading.","severity":"high","suggestion":"Remove trust_remote_code=True, pin a reviewed model revision, and document the model source and download behavior."},{"issue":"Conversation logging is enabled as the default workflow.","severity":"high","suggestion":"Make logging opt-in, show a clear consent prompt, and provide an easy per-session disable command."},{"issue":"Personal notes, conversations, tags, and emotion timelines are retained in hidden local storage.","severity":"medium","suggestion":"Add retention controls, deletion commands, encryption guidance, and a clear data inventory in the README and SKILL.md."},{"issue":"The installer backs up user memory data into /tmp.","severity":"medium","suggestion":"Use mktemp with restrictive permissions or keep backups inside the skill data directory with explicit user confirmation."},{"issue":"The persona template discourages transparent disclosure when answers use stored records.","severity":"medium","suggestion":"Remove that guidance and require clear language when a reply uses stored notes or conversation history."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"install.sh","line_end":12,"line_start":12},{"file":"install.sh","line_end":94,"line_start":94},{"file":"install.sh","line_end":99,"line_start":99},{"file":"install.sh","line_end":1,"line_start":1},{"file":"README.md","line_end":192,"line_start":192},{"file":"README.md","line_end":196,"line_start":196},{"file":"README.md","line_end":198,"line_start":198},{"file":"scripts/code_parser.py","line_end":31,"line_start":31},{"file":"scripts/code_parser.py","line_end":32,"line_start":32},{"file":"scripts/code_parser.py","line_end":111,"line_start":109},{"file":"scripts/conversation_logger.py","line_end":194,"line_start":194},{"file":"scripts/example_usage.py","line_end":38,"line_start":32},{"file":"scripts/orchestrator.py","line_end":214,"line_start":199},{"file":"scripts/orchestrator.py","line_end":217,"line_start":214},{"file":"scripts/orchestrator.py","line_end":223,"line_start":217},{"file":"scripts/orchestrator.py","line_end":382,"line_start":223},{"file":"scripts/orchestrator.py","line_end":384,"line_start":382},{"file":"scripts/tag_generator.py","line_end":208,"line_start":206},{"file":"SKILL.md","line_end":21,"line_start":14},{"file":"SKILL.md","line_end":25,"line_start":21},{"file":"SKILL.md","line_end":31,"line_start":25},{"file":"SKILL.md","line_end":42,"line_start":31},{"file":"SKILL.md","line_end":51,"line_start":42},{"file":"SKILL.md","line_end":54,"line_start":51},{"file":"SKILL.md","line_end":60,"line_start":54},{"file":"SKILL.md","line_end":63,"line_start":60},{"file":"SKILL.md","line_end":69,"line_start":63},{"file":"SKILL.md","line_end":81,"line_start":69},{"file":"SKILL.md","line_end":85,"line_start":81},{"file":"SKILL.md","line_end":88,"line_start":85},{"file":"SKILL.md","line_end":89,"line_start":88},{"file":"SKILL.md","line_end":123,"line_start":89},{"file":"SKILL.md","line_end":134,"line_start":123},{"file":"SKILL.md","line_end":138,"line_start":134},{"file":"SKILL.md","line_end":139,"line_start":138},{"file":"SKILL.md","line_end":143,"line_start":139},{"file":"SKILL.md","line_end":144,"line_start":143},{"file":"SKILL.md","line_end":147,"line_start":144},{"file":"SKILL.md","line_end":149,"line_start":147},{"file":"SKILL.md","line_end":149,"line_start":149},{"file":"SKILL.md","line_end":154,"line_start":152},{"file":"SKILL.md","line_end":162,"line_start":154},{"file":"SKILL.md","line_end":162,"line_start":162},{"file":"SKILL.md","line_end":174,"line_start":165},{"file":"SKILL.md","line_end":177,"line_start":174},{"file":"SKILL.md","line_end":186,"line_start":177},{"file":"SKILL.md","line_end":190,"line_start":186},{"file":"SKILL.md","line_end":192,"line_start":190},{"file":"SKILL.md","line_end":193,"line_start":192},{"file":"SKILL.md","line_end":196,"line_start":193},{"file":"SKILL.md","line_end":197,"line_start":196},{"file":"SKILL.md","line_end":199,"line_start":197},{"file":"SKILL.md","line_end":207,"line_start":199},{"file":"SKILL.md","line_end":241,"line_start":207},{"file":"SKILL.md","line_end":250,"line_start":241},{"file":"SKILL.md","line_end":264,"line_start":250},{"file":"SKILL.md","line_end":267,"line_start":264},{"file":"SKILL.md","line_end":268,"line_start":267},{"file":"SKILL.md","line_end":270,"line_start":268},{"file":"SKILL.md","line_end":273,"line_start":270},{"file":"SKILL.md","line_end":279,"line_start":273},{"file":"SKILL.md","line_end":286,"line_start":279},{"file":"SKILL.md","line_end":290,"line_start":286},{"file":"SKILL.md","line_end":293,"line_start":290},{"file":"SKILL.md","line_end":296,"line_start":293},{"file":"SKILL.md","line_end":299,"line_start":296},{"file":"SKILL.md","line_end":303,"line_start":299},{"file":"SKILL.md","line_end":306,"line_start":303},{"file":"SKILL.md","line_end":308,"line_start":306},{"file":"SKILL.md","line_end":311,"line_start":308},{"file":"SKILL.md","line_end":318,"line_start":311},{"file":"SKILL.md","line_end":323,"line_start":318},{"file":"SKILL.md","line_end":329,"line_start":323},{"file":"SKILL.md","line_end":332,"line_start":329},{"file":"SKILL.md","line_end":339,"line_start":332},{"file":"SKILL.md","line_end":342,"line_start":339},{"file":"SKILL.md","line_end":352,"line_start":342},{"file":"SKILL.md","line_end":355,"line_start":352},{"file":"SKILL.md","line_end":360,"line_start":355},{"file":"SKILL.md","line_end":368,"line_start":360},{"file":"SKILL.md","line_end":382,"line_start":368},{"file":"SKILL.md","line_end":385,"line_start":382},{"file":"SKILL.md","line_end":394,"line_start":385},{"file":"SKILL.md","line_end":398,"line_start":394},{"file":"SKILL.md","line_end":415,"line_start":398},{"file":"SKILL.md","line_end":419,"line_start":415},{"file":"SKILL.md","line_end":421,"line_start":419},{"file":"SKILL.md","line_end":425,"line_start":421},{"file":"SKILL.md","line_end":427,"line_start":425},{"file":"SKILL.md","line_end":436,"line_start":427},{"file":"SKILL.md","line_end":446,"line_start":436},{"file":"SKILL.md","line_end":464,"line_start":446},{"file":"SKILL.md","line_end":477,"line_start":464},{"file":"SKILL.md","line_end":518,"line_start":477},{"file":"SKILL.md","line_end":525,"line_start":518},{"file":"SKILL.md","line_end":526,"line_start":525},{"file":"SKILL.md","line_end":527,"line_start":526},{"file":"SKILL.md","line_end":528,"line_start":527},{"file":"SKILL.md","line_end":551,"line_start":528},{"file":"SKILL.md","line_end":560,"line_start":551},{"file":"SKILL.md","line_end":578,"line_start":560},{"file":"SKILL.md","line_end":579,"line_start":578},{"file":"SKILL.md","line_end":580,"line_start":579},{"file":"SKILL.md","line_end":581,"line_start":580},{"file":"SKILL.md","line_end":582,"line_start":581},{"file":"SKILL.md","line_end":585,"line_start":582},{"file":"SKILL.md","line_end":596,"line_start":585},{"file":"SKILL.md","line_end":616,"line_start":596},{"file":"SKILL.md","line_end":622,"line_start":616},{"file":"SKILL.md","line_end":628,"line_start":622},{"file":"SKILL.md","line_end":662,"line_start":628},{"file":"SKILL.md","line_end":668,"line_start":662},{"file":"SKILL.md","line_end":688,"line_start":668},{"file":"SKILL.md","line_end":692,"line_start":688},{"file":"SKILL.md","line_end":756,"line_start":692},{"file":"SKILL.md","line_end":760,"line_start":756},{"file":"SKILL.md","line_end":811,"line_start":760},{"file":"SKILL.md","line_end":814,"line_start":811},{"file":"SKILL.md","line_end":821,"line_start":814},{"file":"SKILL.md","line_end":839,"line_start":821},{"file":"SKILL.md","line_end":842,"line_start":839},{"file":"SKILL.md","line_end":870,"line_start":842},{"file":"SKILL.md","line_end":877,"line_start":870},{"file":"SKILL.md","line_end":879,"line_start":877},{"file":"SKILL.md","line_end":887,"line_start":879},{"file":"SKILL.md","line_end":894,"line_start":887},{"file":"SKILL.md","line_end":899,"line_start":894},{"file":"SKILL.md","line_end":915,"line_start":899},{"file":"SKILL.md","line_end":916,"line_start":915},{"file":"SKILL.md","line_end":922,"line_start":916},{"file":"SKILL.md","line_end":927,"line_start":922},{"file":"SKILL.md","line_end":940,"line_start":927},{"file":"SKILL.md","line_end":978,"line_start":940},{"file":"SKILL.md","line_end":979,"line_start":978},{"file":"SKILL.md","line_end":983,"line_start":979},{"file":"SKILL.md","line_end":986,"line_start":983},{"file":"SKILL.md","line_end":989,"line_start":986},{"file":"SKILL.md","line_end":1003,"line_start":989},{"file":"SKILL.md","line_end":1004,"line_start":1003},{"file":"SKILL.md","line_end":1009,"line_start":1004},{"file":"SKILL.md","line_end":1021,"line_start":1009},{"file":"SKILL.md","line_end":1022,"line_start":1021},{"file":"SKILL.md","line_end":1023,"line_start":1022},{"file":"SKILL.md","line_end":1024,"line_start":1023},{"file":"SKILL.md","line_end":1031,"line_start":1024},{"file":"SKILL.md","line_end":1035,"line_start":1031},{"file":"SKILL.md","line_end":1038,"line_start":1035},{"file":"SKILL.md","line_end":1041,"line_start":1038},{"file":"SKILL.md","line_end":1053,"line_start":1041},{"file":"SKILL.md","line_end":1067,"line_start":1053},{"file":"SKILL.md","line_end":1071,"line_start":1067},{"file":"SKILL.md","line_end":1074,"line_start":1071},{"file":"SKILL.md","line_end":1091,"line_start":1074},{"file":"SKILL.md","line_end":1098,"line_start":1091},{"file":"SKILL.md","line_end":1104,"line_start":1098},{"file":"SKILL.md","line_end":1107,"line_start":1104},{"file":"SKILL.md","line_end":1111,"line_start":1107},{"file":"SKILL.md","line_end":1116,"line_start":1111},{"file":"SKILL.md","line_end":1122,"line_start":1116},{"file":"SKILL.md","line_end":1125,"line_start":1122},{"file":"SKILL.md","line_end":1129,"line_start":1125},{"file":"SKILL.md","line_end":1138,"line_start":1129},{"file":"SKILL.md","line_end":1148,"line_start":1138},{"file":"SKILL.md","line_end":1150,"line_start":1148},{"file":"SKILL.md","line_end":1150,"line_start":1150},{"file":"SKILL.md","line_end":1159,"line_start":1154},{"file":"SKILL.md","line_end":1169,"line_start":1159},{"file":"SKILL.md","line_end":1178,"line_start":1169},{"file":"SKILL.md","line_end":1184,"line_start":1178},{"file":"SKILL.md","line_end":1187,"line_start":1184},{"file":"SKILL.md","line_end":1195,"line_start":1187},{"file":"SKILL.md","line_end":1198,"line_start":1195},{"file":"SKILL.md","line_end":1206,"line_start":1198},{"file":"SKILL.md","line_end":1212,"line_start":1206},{"file":"SKILL.md","line_end":1241,"line_start":1212},{"file":"SKILL.md","line_end":1283,"line_start":1241},{"file":"SKILL.md","line_end":1295,"line_start":1283},{"file":"SKILL.md","line_end":177,"line_start":177},{"file":"SKILL.md","line_end":1115,"line_start":1115},{"file":"SKILL.md","line_end":1116,"line_start":1116}]},{"factor":"filesystem","evidence":[{"file":"install.sh","line_end":13,"line_start":13},{"file":"install.sh","line_end":33,"line_start":33},{"file":"install.sh","line_end":34,"line_start":34},{"file":"install.sh","line_end":35,"line_start":35},{"file":"install.sh","line_end":36,"line_start":36},{"file":"install.sh","line_end":37,"line_start":37},{"file":"install.sh","line_end":38,"line_start":38},{"file":"install.sh","line_end":39,"line_start":39},{"file":"install.sh","line_end":40,"line_start":40},{"file":"install.sh","line_end":43,"line_start":43},{"file":"install.sh","line_end":44,"line_start":44},{"file":"install.sh","line_end":45,"line_start":45},{"file":"install.sh","line_end":46,"line_start":46},{"file":"install.sh","line_end":94,"line_start":94},{"file":"install.sh","line_end":99,"line_start":99},{"file":"install.sh","line_end":15,"line_start":15},{"file":"README.md","line_end":61,"line_start":61},{"file":"README.md","line_end":78,"line_start":78},{"file":"README.md","line_end":90,"line_start":90},{"file":"README.md","line_end":97,"line_start":97},{"file":"README.md","line_end":98,"line_start":98},{"file":"README.md","line_end":117,"line_start":117},{"file":"README.md","line_end":126,"line_start":126},{"file":"README.md","line_end":384,"line_start":384},{"file":"README.md","line_end":404,"line_start":404},{"file":"README.md","line_end":61,"line_start":61},{"file":"README.md","line_end":78,"line_start":78},{"file":"README.md","line_end":90,"line_start":90},{"file":"README.md","line_end":97,"line_start":97},{"file":"README.md","line_end":98,"line_start":98},{"file":"README.md","line_end":117,"line_start":117},{"file":"README.md","line_end":126,"line_start":126},{"file":"README.md","line_end":384,"line_start":384},{"file":"README.md","line_end":404,"line_start":404},{"file":"README.md","line_end":363,"line_start":363},{"file":"scripts/conversation_logger.py","line_end":62,"line_start":62},{"file":"scripts/conversation_logger.py","line_end":207,"line_start":207},{"file":"scripts/conversation_logger.py","line_end":347,"line_start":347},{"file":"scripts/emotion_analyzer.py","line_end":42,"line_start":42},{"file":"scripts/note_processor.py","line_end":49,"line_start":49},{"file":"scripts/orchestrator.py","line_end":44,"line_start":44},{"file":"scripts/orchestrator.py","line_end":85,"line_start":85},{"file":"scripts/orchestrator.py","line_end":44,"line_start":44},{"file":"scripts/orchestrator.py","line_end":85,"line_start":85},{"file":"scripts/tag_generator.py","line_end":61,"line_start":61},{"file":"scripts/tag_indexer.py","line_end":51,"line_start":51},{"file":"scripts/thinking_analyzer.py","line_end":149,"line_start":149},{"file":"scripts/vector_indexer.py","line_end":42,"line_start":42},{"file":"scripts/vector_indexer.py","line_end":83,"line_start":83},{"file":"scripts/vector_indexer.py","line_end":42,"line_start":42},{"file":"scripts/vector_indexer.py","line_end":43,"line_start":43},{"file":"scripts/vector_indexer.py","line_end":83,"line_start":83},{"file":"SKILL.md","line_end":63,"line_start":63},{"file":"SKILL.md","line_end":89,"line_start":89},{"file":"SKILL.md","line_end":133,"line_start":133},{"file":"SKILL.md","line_end":138,"line_start":138},{"file":"SKILL.md","line_end":162,"line_start":162},{"file":"SKILL.md","line_end":170,"line_start":170},{"file":"SKILL.md","line_end":173,"line_start":173},{"file":"SKILL.md","line_end":208,"line_start":208},{"file":"SKILL.md","line_end":327,"line_start":327},{"file":"SKILL.md","line_end":336,"line_start":336},{"file":"SKILL.md","line_end":820,"line_start":820},{"file":"SKILL.md","line_end":1034,"line_start":1034},{"file":"SKILL.md","line_end":1063,"line_start":1063},{"file":"SKILL.md","line_end":1100,"line_start":1100},{"file":"SKILL.md","line_end":1109,"line_start":1109},{"file":"SKILL.md","line_end":1141,"line_start":1141},{"file":"SKILL.md","line_end":1142,"line_start":1142},{"file":"SKILL.md","line_end":63,"line_start":63},{"file":"SKILL.md","line_end":89,"line_start":89},{"file":"SKILL.md","line_end":133,"line_start":133},{"file":"SKILL.md","line_end":138,"line_start":138},{"file":"SKILL.md","line_end":162,"line_start":162},{"file":"SKILL.md","line_end":170,"line_start":170},{"file":"SKILL.md","line_end":173,"line_start":173},{"file":"SKILL.md","line_end":208,"line_start":208},{"file":"SKILL.md","line_end":327,"line_start":327},{"file":"SKILL.md","line_end":336,"line_start":336},{"file":"SKILL.md","line_end":820,"line_start":820},{"file":"SKILL.md","line_end":1034,"line_start":1034},{"file":"SKILL.md","line_end":1063,"line_start":1063},{"file":"SKILL.md","line_end":1100,"line_start":1100},{"file":"SKILL.md","line_end":1109,"line_start":1109},{"file":"SKILL.md","line_end":1141,"line_start":1141},{"file":"SKILL.md","line_end":1142,"line_start":1142}]},{"factor":"network","evidence":[{"file":"README.md","line_end":50,"line_start":50}]},{"factor":"scripts","evidence":[{"file":"scripts/emotion_analyzer.py","line_end":20,"line_start":17},{"file":"scripts/orchestrator.py","line_end":32,"line_start":29}]},{"factor":"env_access","evidence":[{"file":"scripts/vector_indexer.py","line_end":53,"line_start":53},{"file":"scripts/vector_indexer.py","line_end":54,"line_start":54}]}],"critical_findings":[{"title":"Recursive delete on root/home","locations":[{"file":"README.md","line_end":404,"line_start":404}],"confidence":1,"description":"rm -rf ~/.claude/skills/ai-partner-chat/data/vector_db","review_kind":"false_positive","source_category":"blocker","source_severity":"critical","confidence_reasoning":"Force-confirmed blocker/critical static finding; AI dismissal overridden."}],"high_findings":[{"title":"Hidden file in home directory","locations":[{"file":"README.md","line_end":117,"line_start":117}],"confidence":0.82,"description":"3. ✅ 记录每次对话到 `~/.claude/skills/ai-partner-chat/data/`","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Hidden file in home directory","locations":[{"file":"README.md","line_end":384,"line_start":384}],"confidence":0.82,"description":"~/.claude/skills/ai-partner-chat/data/","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Hidden file in home directory","locations":[{"file":"README.md","line_end":404,"line_start":404}],"confidence":0.82,"description":"rm -rf ~/.claude/skills/ai-partner-chat/data/vector_db","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Hidden file in home directory","locations":[{"file":"scripts/orchestrator.py","line_end":44,"line_start":44}],"confidence":0.84,"description":"skill_dir: skill 目录路径(默认 ~/.claude/skills/ai-partner-chat)","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The orchestrator defaults runtime data to ~/.claude/skills/ai-partner-chat/data. This hidden home-directory storage contains long-term note and conversation memory."},{"title":"Hidden file in home directory","locations":[{"file":"scripts/orchestrator.py","line_end":85,"line_start":85}],"confidence":0.84,"description":"print(f\"   数据: ~/.claude/skills/ai-partner-chat/data/\")","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The orchestrator defaults runtime data to ~/.claude/skills/ai-partner-chat/data. This hidden home-directory storage contains long-term note and conversation memory."},{"title":"Hidden file in home directory","locations":[{"file":"SKILL.md","line_end":63,"line_start":63}],"confidence":0.82,"description":"- 💾 状态持久化到 `~/.claude/skills/ai-partner-chat/data/indexes/processed_notes.json`","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Hidden file in home directory","locations":[{"file":"SKILL.md","line_end":89,"line_start":89}],"confidence":0.82,"description":"- ✅ 所有数据保存到 `~/.claude/skills/ai-partner-chat/data/`","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Hidden file in home directory","locations":[{"file":"SKILL.md","line_end":327,"line_start":327}],"confidence":0.82,"description":"数据: ~/.claude/skills/ai-partner-chat/data/","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Hidden file in home directory","locations":[{"file":"SKILL.md","line_end":336,"line_start":336}],"confidence":0.82,"description":"数据: ~/.claude/skills/ai-partner-chat/data/","review_kind":"capability","source_category":"filesystem","source_severity":"high","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Remote Model Code Execution Enabled","locations":[{"file":"scripts/vector_indexer.py","line_end":95,"line_start":92}],"confidence":0.92,"description":"The vector indexer loads the embedding model with trust_remote_code=True. When a remote model is downloaded, custom model code can execute during model loading.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The code directly passes trust_remote_code=True to SentenceTransformer for the configured model name. This is a recognized remote-code execution risk for model loading."},{"title":"Default Persistent Conversation Logging","locations":[{"file":"SKILL.md","line_end":31,"line_start":23},{"file":"SKILL.md","line_end":89,"line_start":83},{"file":"README.md","line_end":30,"line_start":26}],"confidence":0.94,"description":"The skill instructs Claude to record each conversation and store all data in the hidden skill data directory unless the user explicitly opts out. This can retain sensitive prompts, replies, notes, and code by default.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The cited instructions explicitly require recording every conversation and describe automatic conversation history storage. The code path in conversation_logger.py supports that behavior."}],"medium_findings":[{"title":"Unix shell invocation","locations":[{"file":"install.sh","line_end":1,"line_start":1}],"confidence":0.74,"description":"#!/bin/bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The skill ships a Bash installer that copies files and removes old skill subdirectories under ~/.claude. This creates a real external command surface even though execution is explicit."},{"title":"Hidden file access","locations":[{"file":"install.sh","line_end":13,"line_start":13}],"confidence":0.86,"description":"TARGET_DIR=\"$HOME/.claude/skills/ai-partner-chat\"","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The installer targets ~/.claude/skills/ai-partner-chat and modifies a hidden home-directory skill location. That is expected for installation but security-sensitive for marketplace auto-install policy."},{"title":"Temp directory access","locations":[{"file":"install.sh","line_end":15,"line_start":15}],"confidence":0.83,"description":"BACKUP_DIR=\"/tmp/ai-partner-data-backup-$$\"","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The installer backs up existing skill data into /tmp using a predictable path. That can expose personal memory data to local temp-directory risks during installation."},{"title":"Hidden file access","locations":[{"file":"README.md","line_end":117,"line_start":117}],"confidence":0.82,"description":"3. ✅ 记录每次对话到 `~/.claude/skills/ai-partner-chat/data/`","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Hidden file access","locations":[{"file":"README.md","line_end":384,"line_start":384}],"confidence":0.82,"description":"~/.claude/skills/ai-partner-chat/data/","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Hidden file access","locations":[{"file":"README.md","line_end":404,"line_start":404}],"confidence":0.82,"description":"rm -rf ~/.claude/skills/ai-partner-chat/data/vector_db","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Temp directory access","locations":[{"file":"README.md","line_end":363,"line_start":363}],"confidence":0.83,"description":"备份位置: /tmp/ai-partner-data-backup-$$","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The installer backs up existing skill data into /tmp using a predictable path. That can expose personal memory data to local temp-directory risks during installation."},{"title":"SQLite database file","locations":[{"file":"README.md","line_end":149,"line_start":149}],"confidence":0.88,"description":"│   ├── chroma.sqlite3      # 所有向量存储","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"Python file write/append","locations":[{"file":"scripts/conversation_logger.py","line_end":62,"line_start":62}],"confidence":0.86,"description":"with open(self.metadata_file, 'w', encoding='utf-8') as f:","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed."},{"title":"Python file write/append","locations":[{"file":"scripts/conversation_logger.py","line_end":207,"line_start":207}],"confidence":0.86,"description":"with open(daily_file, 'a', encoding='utf-8') as f:","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed."},{"title":"Python file write/append","locations":[{"file":"scripts/conversation_logger.py","line_end":347,"line_start":347}],"confidence":0.86,"description":"with open(summary_file, 'w', encoding='utf-8') as f:","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed."},{"title":"SQLite database file","locations":[{"file":"scripts/conversation_logger.py","line_end":43,"line_start":43}],"confidence":0.88,"description":"self.db_path = db_path","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"SQLite database file","locations":[{"file":"scripts/conversation_logger.py","line_end":238,"line_start":238}],"confidence":0.88,"description":"indexer = VectorIndexer(db_path=self.db_path)","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"Python file write/append","locations":[{"file":"scripts/emotion_analyzer.py","line_end":42,"line_start":42}],"confidence":0.86,"description":"with open(self.timeline_path, 'w', encoding='utf-8') as f:","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed."},{"title":"Python file write/append","locations":[{"file":"scripts/note_processor.py","line_end":49,"line_start":49}],"confidence":0.86,"description":"with open(self.state_file, 'w', encoding='utf-8') as f:","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed."},{"title":"Hidden file access","locations":[{"file":"scripts/orchestrator.py","line_end":44,"line_start":44}],"confidence":0.84,"description":"skill_dir: skill 目录路径(默认 ~/.claude/skills/ai-partner-chat)","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The orchestrator defaults runtime data to ~/.claude/skills/ai-partner-chat/data. This hidden home-directory storage contains long-term note and conversation memory."},{"title":"Hidden file access","locations":[{"file":"scripts/orchestrator.py","line_end":85,"line_start":85}],"confidence":0.84,"description":"print(f\"   数据: ~/.claude/skills/ai-partner-chat/data/\")","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The orchestrator defaults runtime data to ~/.claude/skills/ai-partner-chat/data. This hidden home-directory storage contains long-term note and conversation memory."},{"title":"Python file write/append","locations":[{"file":"scripts/tag_indexer.py","line_end":51,"line_start":51}],"confidence":0.86,"description":"with open(self.index_path, 'w', encoding='utf-8') as f:","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed."},{"title":"Python file write/append","locations":[{"file":"scripts/thinking_analyzer.py","line_end":149,"line_start":149}],"confidence":0.86,"description":"with open(report_file, 'w', encoding='utf-8') as f:","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed."},{"title":"SQLite database file","locations":[{"file":"scripts/vector_indexer.py","line_end":33,"line_start":33}],"confidence":0.88,"description":"self.db_path = db_path","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"SQLite database file","locations":[{"file":"scripts/vector_indexer.py","line_end":103,"line_start":103}],"confidence":0.88,"description":"print(f\"💾 Connecting to vector database at: {self.db_path}\")","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"SQLite database file","locations":[{"file":"scripts/vector_indexer.py","line_end":104,"line_start":104}],"confidence":0.88,"description":"self.client = chromadb.PersistentClient(path=self.db_path)","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"SQLite database file","locations":[{"file":"scripts/vector_indexer.py","line_end":205,"line_start":205}],"confidence":0.88,"description":"print(f\"   Database location: {os.path.abspath(self.db_path)}\")","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"SQLite database file","locations":[{"file":"scripts/vector_indexer.py","line_end":291,"line_start":291}],"confidence":0.88,"description":"'database_path': os.path.abspath(self.db_path)","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"SQLite database file","locations":[{"file":"scripts/vector_indexer.py","line_end":297,"line_start":297}],"confidence":0.88,"description":"'database_path': os.path.abspath(self.db_path)","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"SQLite database file","locations":[{"file":"scripts/vector_utils.py","line_end":39,"line_start":39}],"confidence":0.88,"description":"self.db_path = db_path","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"SQLite database file","locations":[{"file":"scripts/vector_utils.py","line_end":52,"line_start":52}],"confidence":0.88,"description":"self.client = chromadb.PersistentClient(path=self.db_path)","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"SQLite database file","locations":[{"file":"scripts/vector_utils.py","line_end":56,"line_start":56}],"confidence":0.88,"description":"f\"Failed to connect to database at {self.db_path}. \"","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"Hidden file access","locations":[{"file":"SKILL.md","line_end":63,"line_start":63}],"confidence":0.82,"description":"- 💾 状态持久化到 `~/.claude/skills/ai-partner-chat/data/indexes/processed_notes.json`","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Hidden file access","locations":[{"file":"SKILL.md","line_end":89,"line_start":89}],"confidence":0.82,"description":"- ✅ 所有数据保存到 `~/.claude/skills/ai-partner-chat/data/`","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Hidden file access","locations":[{"file":"SKILL.md","line_end":327,"line_start":327}],"confidence":0.82,"description":"数据: ~/.claude/skills/ai-partner-chat/data/","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"Hidden file access","locations":[{"file":"SKILL.md","line_end":336,"line_start":336}],"confidence":0.82,"description":"数据: ~/.claude/skills/ai-partner-chat/data/","review_kind":"capability","source_category":"filesystem","source_severity":"medium","confidence_reasoning":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive."},{"title":"SQLite database file","locations":[{"file":"SKILL.md","line_end":220,"line_start":220}],"confidence":0.88,"description":"│   └── chroma.sqlite3     # ⚡ 所有笔记/对话/代码的向量都在这里","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"SQLite database file","locations":[{"file":"SKILL.md","line_end":791,"line_start":791}],"confidence":0.88,"description":"│   └── chroma.sqlite3","review_kind":"security","source_category":"sensitive","source_severity":"medium","confidence_reasoning":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content."},{"title":"Opaque Use of Stored Personal Context","locations":[{"file":"assets/ai-persona-template.md","line_end":37,"line_start":33}],"confidence":0.86,"description":"The AI persona template tells the assistant to introduce user information like its own memories and not mention that it came from records. This weakens transparency around stored personal data use.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The cited template text directly asks the assistant to avoid saying that recalled user information came from records. This is a clear transparency and consent concern rather than a scanner pattern."}],"low_findings":[],"dangerous_patterns":[{"title":"Recursive delete on root/home","locations":[{"file":"README.md","line_end":404,"line_start":404}],"confidence":1,"description":"rm -rf ~/.claude/skills/ai-partner-chat/data/vector_db","review_kind":"false_positive","source_category":"blocker","source_severity":"critical","confidence_reasoning":"Force-confirmed blocker/critical static finding; AI dismissal overridden."}],"files_scanned":21,"total_lines":5345,"audit_model":"codex","audited_at":"2026-07-06T09:38:05.211+00:00","created_at":"2026-07-07T02:33:57.987488+00:00","static_findings":[{"id":"external_commands:install.sh:12:shell-command-substitution","file":"install.sh","pattern":"Shell command substitution","snippet":"PROJECT_ROOT=\"$(cd \"$(dirname \"$0\")\" && pwd)\"","category":"external_commands","line_end":12,"severity":"medium","line_start":12},{"id":"external_commands:install.sh:94:shell-command-substitution","file":"install.sh","pattern":"Shell command substitution","snippet":"TOTAL_CHUNKS=$(find \"$TARGET_DIR/data/vector_db\" -type f 2>/dev/null | wc -l | tr -d ' ')","category":"external_commands","line_end":94,"severity":"medium","line_start":94},{"id":"external_commands:install.sh:99:shell-command-substitution","file":"install.sh","pattern":"Shell command substitution","snippet":"TOTAL_CONVS=$(find \"$TARGET_DIR/data/conversations/raw\" -name \"*.md\" 2>/dev/null | wc -l | tr -d ' '","category":"external_commands","line_end":99,"severity":"medium","line_start":99},{"id":"external_commands:install.sh:1:unix-shell-invocation","file":"install.sh","pattern":"Unix shell invocation","snippet":"#!/bin/bash","category":"external_commands","line_end":1,"severity":"medium","line_start":1},{"id":"filesystem:install.sh:13:hidden-file-access","file":"install.sh","pattern":"Hidden file access","snippet":"TARGET_DIR=\"$HOME/.claude/skills/ai-partner-chat\"","category":"filesystem","line_end":13,"severity":"medium","line_start":13},{"id":"filesystem:install.sh:33:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -rf \"$TARGET_DIR/scripts\" 2>/dev/null || true","category":"filesystem","line_end":33,"severity":"low","line_start":33},{"id":"filesystem:install.sh:34:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -rf \"$TARGET_DIR/assets\" 2>/dev/null || true","category":"filesystem","line_end":34,"severity":"low","line_start":34},{"id":"filesystem:install.sh:35:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -rf \"$TARGET_DIR/notes\" 2>/dev/null || true","category":"filesystem","line_end":35,"severity":"low","line_start":35},{"id":"filesystem:install.sh:36:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -f \"$TARGET_DIR/SKILL.md\" 2>/dev/null || true","category":"filesystem","line_end":36,"severity":"low","line_start":36},{"id":"filesystem:install.sh:37:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -f \"$TARGET_DIR/README.md\" 2>/dev/null || true","category":"filesystem","line_end":37,"severity":"low","line_start":37},{"id":"filesystem:install.sh:38:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -f \"$TARGET_DIR/QUICKSTART.md\" 2>/dev/null || true","category":"filesystem","line_end":38,"severity":"low","line_start":38},{"id":"filesystem:install.sh:39:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -f \"$TARGET_DIR/CHANGELOG.md\" 2>/dev/null || true","category":"filesystem","line_end":39,"severity":"low","line_start":39},{"id":"filesystem:install.sh:40:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -f \"$TARGET_DIR/HOW_TO_USE.md\" 2>/dev/null || true","category":"filesystem","line_end":40,"severity":"low","line_start":40},{"id":"filesystem:install.sh:43:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -rf \"$TARGET_DIR/vector_db\" 2>/dev/null || true","category":"filesystem","line_end":43,"severity":"low","line_start":43},{"id":"filesystem:install.sh:44:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -rf \"$TARGET_DIR/conversations\" 2>/dev/null || true","category":"filesystem","line_end":44,"severity":"low","line_start":44},{"id":"filesystem:install.sh:45:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -rf \"$TARGET_DIR/indexes\" 2>/dev/null || true","category":"filesystem","line_end":45,"severity":"low","line_start":45},{"id":"filesystem:install.sh:46:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"rm -rf \"$TARGET_DIR/analysis\" 2>/dev/null || true","category":"filesystem","line_end":46,"severity":"low","line_start":46},{"id":"filesystem:install.sh:94:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"TOTAL_CHUNKS=$(find \"$TARGET_DIR/data/vector_db\" -type f 2>/dev/null | wc -l | tr -d ' ')","category":"filesystem","line_end":94,"severity":"low","line_start":94},{"id":"filesystem:install.sh:99:standard-device-file-access","file":"install.sh","pattern":"Standard device file access","snippet":"TOTAL_CONVS=$(find \"$TARGET_DIR/data/conversations/raw\" -name \"*.md\" 2>/dev/null | wc -l | tr -d ' '","category":"filesystem","line_end":99,"severity":"low","line_start":99},{"id":"filesystem:install.sh:15:temp-directory-access","file":"install.sh","pattern":"Temp directory access","snippet":"BACKUP_DIR=\"/tmp/ai-partner-data-backup-$$\"","category":"filesystem","line_end":15,"severity":"medium","line_start":15},{"id":"external_commands:README.md:192:ruby-shell-backtick-execution","file":"README.md","pattern":"Ruby/shell backtick execution","snippet":"\\`\\`\\`javascript","category":"external_commands","line_end":192,"severity":"medium","line_start":192},{"id":"external_commands:README.md:196:ruby-shell-backtick-execution","file":"README.md","pattern":"Ruby/shell backtick execution","snippet":"document.title = `点击了 ${count} 次`;","category":"external_commands","line_end":196,"severity":"medium","line_start":196},{"id":"external_commands:README.md:198:ruby-shell-backtick-execution","file":"README.md","pattern":"Ruby/shell backtick execution","snippet":"\\`\\`\\`","category":"external_commands","line_end":198,"severity":"medium","line_start":198},{"id":"network:README.md:50:hardcoded-url","file":"README.md","pattern":"Hardcoded URL","snippet":"git clone https://github.com/YOUR_USERNAME/ai-partner-chat.git","category":"network","line_end":50,"severity":"low","line_start":50},{"id":"filesystem:README.md:61:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"- ✅ 复制代码到 `~/.claude/skills/ai-partner-chat/`","category":"filesystem","line_end":61,"severity":"high","line_start":61},{"id":"filesystem:README.md:78:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"pip install -r ~/.claude/skills/ai-partner-chat/scripts/requirements.txt","category":"filesystem","line_end":78,"severity":"high","line_start":78},{"id":"filesystem:README.md:90:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"- macOS/Linux: `~/.cache/huggingface/hub/`","category":"filesystem","line_end":90,"severity":"high","line_start":90},{"id":"filesystem:README.md:97:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/user-persona-template.md config/user-persona.md","category":"filesystem","line_end":97,"severity":"high","line_start":97},{"id":"filesystem:README.md:98:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/ai-persona-template.md config/ai-persona.md","category":"filesystem","line_end":98,"severity":"high","line_start":98},{"id":"filesystem:README.md:117:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"3. ✅ 记录每次对话到 `~/.claude/skills/ai-partner-chat/data/`","category":"filesystem","line_end":117,"severity":"high","line_start":117},{"id":"filesystem:README.md:126:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"~/.claude/skills/ai-partner-chat/","category":"filesystem","line_end":126,"severity":"high","line_start":126},{"id":"filesystem:README.md:384:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"~/.claude/skills/ai-partner-chat/data/","category":"filesystem","line_end":384,"severity":"high","line_start":384},{"id":"filesystem:README.md:404:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"rm -rf ~/.claude/skills/ai-partner-chat/data/vector_db","category":"filesystem","line_end":404,"severity":"high","line_start":404},{"id":"filesystem:README.md:61:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"- ✅ 复制代码到 `~/.claude/skills/ai-partner-chat/`","category":"filesystem","line_end":61,"severity":"medium","line_start":61},{"id":"filesystem:README.md:78:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"pip install -r ~/.claude/skills/ai-partner-chat/scripts/requirements.txt","category":"filesystem","line_end":78,"severity":"medium","line_start":78},{"id":"filesystem:README.md:90:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"- macOS/Linux: `~/.cache/huggingface/hub/`","category":"filesystem","line_end":90,"severity":"medium","line_start":90},{"id":"filesystem:README.md:97:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/user-persona-template.md config/user-persona.md","category":"filesystem","line_end":97,"severity":"medium","line_start":97},{"id":"filesystem:README.md:98:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/ai-persona-template.md config/ai-persona.md","category":"filesystem","line_end":98,"severity":"medium","line_start":98},{"id":"filesystem:README.md:117:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"3. ✅ 记录每次对话到 `~/.claude/skills/ai-partner-chat/data/`","category":"filesystem","line_end":117,"severity":"medium","line_start":117},{"id":"filesystem:README.md:126:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"~/.claude/skills/ai-partner-chat/","category":"filesystem","line_end":126,"severity":"medium","line_start":126},{"id":"filesystem:README.md:384:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"~/.claude/skills/ai-partner-chat/data/","category":"filesystem","line_end":384,"severity":"medium","line_start":384},{"id":"filesystem:README.md:404:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"rm -rf ~/.claude/skills/ai-partner-chat/data/vector_db","category":"filesystem","line_end":404,"severity":"medium","line_start":404},{"id":"filesystem:README.md:363:temp-directory-access","file":"README.md","pattern":"Temp directory access","snippet":"备份位置: /tmp/ai-partner-data-backup-$$","category":"filesystem","line_end":363,"severity":"medium","line_start":363},{"id":"sensitive:README.md:149:sqlite-database-file","file":"README.md","pattern":"SQLite database file","snippet":"│   ├── chroma.sqlite3      # 所有向量存储","category":"sensitive","line_end":149,"severity":"medium","line_start":149},{"id":"blocker:README.md:404:recursive-delete-on-root-home","file":"README.md","pattern":"Recursive delete on root/home","snippet":"rm -rf ~/.claude/skills/ai-partner-chat/data/vector_db","category":"blocker","line_end":404,"severity":"critical","line_start":404},{"id":"external_commands:scripts/code_parser.py:31:ruby-shell-backtick-execution","file":"scripts/code_parser.py","pattern":"Ruby/shell backtick execution","snippet":"# 匹配代码块: ```language\\ncode\\n```","category":"external_commands","line_end":31,"severity":"medium","line_start":31},{"id":"external_commands:scripts/code_parser.py:32:ruby-shell-backtick-execution","file":"scripts/code_parser.py","pattern":"Ruby/shell backtick execution","snippet":"pattern = r'```(\\w+)?\\n(.*?)\\n```'","category":"external_commands","line_end":32,"severity":"medium","line_start":32},{"id":"external_commands:scripts/code_parser.py:109:ruby-shell-backtick-execution","file":"scripts/code_parser.py","pattern":"Ruby/shell backtick execution","snippet":"```{language}","category":"external_commands","line_end":111,"severity":"medium","line_start":109},{"id":"external_commands:scripts/conversation_logger.py:194:ruby-shell-backtick-execution","file":"scripts/conversation_logger.py","pattern":"Ruby/shell backtick execution","snippet":"**ID**: `{conversation_id}` | **重要性**: {importance}/5","category":"external_commands","line_end":194,"severity":"medium","line_start":194},{"id":"filesystem:scripts/conversation_logger.py:62:python-file-write-append","file":"scripts/conversation_logger.py","pattern":"Python file write/append","snippet":"with open(self.metadata_file, 'w', encoding='utf-8') as f:","category":"filesystem","line_end":62,"severity":"medium","line_start":62},{"id":"filesystem:scripts/conversation_logger.py:207:python-file-write-append","file":"scripts/conversation_logger.py","pattern":"Python file write/append","snippet":"with open(daily_file, 'a', encoding='utf-8') as f:","category":"filesystem","line_end":207,"severity":"medium","line_start":207},{"id":"filesystem:scripts/conversation_logger.py:347:python-file-write-append","file":"scripts/conversation_logger.py","pattern":"Python file write/append","snippet":"with open(summary_file, 'w', encoding='utf-8') as f:","category":"filesystem","line_end":347,"severity":"medium","line_start":347},{"id":"sensitive:scripts/conversation_logger.py:43:sqlite-database-file","file":"scripts/conversation_logger.py","pattern":"SQLite database file","snippet":"self.db_path = db_path","category":"sensitive","line_end":43,"severity":"medium","line_start":43},{"id":"sensitive:scripts/conversation_logger.py:238:sqlite-database-file","file":"scripts/conversation_logger.py","pattern":"SQLite database file","snippet":"indexer = VectorIndexer(db_path=self.db_path)","category":"sensitive","line_end":238,"severity":"medium","line_start":238},{"id":"blocker:scripts/conversation_logger.py:141:system-reconnaissance","file":"scripts/conversation_logger.py","pattern":"System reconnaissance","snippet":"conversation_id = f\"conv_{now.strftime('%Y%m%d_%H%M%S')}\"","category":"blocker","line_end":141,"severity":"low","line_start":141},{"id":"blocker:scripts/conversation_logger.py:163:system-reconnaissance","file":"scripts/conversation_logger.py","pattern":"System reconnaissance","snippet":"return conversation_id","category":"blocker","line_end":165,"severity":"low","line_start":163},{"id":"scripts:scripts/emotion_analyzer.py:17:dynamic-import-expression","file":"scripts/emotion_analyzer.py","pattern":"Dynamic import() expression","snippet":"from chunk_schema import (","category":"scripts","line_end":20,"severity":"medium","line_start":17},{"id":"filesystem:scripts/emotion_analyzer.py:42:python-file-write-append","file":"scripts/emotion_analyzer.py","pattern":"Python file write/append","snippet":"with open(self.timeline_path, 'w', encoding='utf-8') as f:","category":"filesystem","line_end":42,"severity":"medium","line_start":42},{"id":"external_commands:scripts/example_usage.py:32:ruby-shell-backtick-execution","file":"scripts/example_usage.py","pattern":"Ruby/shell backtick execution","snippet":"```javascript","category":"external_commands","line_end":38,"severity":"medium","line_start":32},{"id":"filesystem:scripts/note_processor.py:49:python-file-write-append","file":"scripts/note_processor.py","pattern":"Python file write/append","snippet":"with open(self.state_file, 'w', encoding='utf-8') as f:","category":"filesystem","line_end":49,"severity":"medium","line_start":49},{"id":"sensitive:scripts/note_processor.py:174:certificate-key-files","file":"scripts/note_processor.py","pattern":"Certificate/key files","snippet":"return list(state['processed'].keys())","category":"sensitive","line_end":174,"severity":"high","line_start":174},{"id":"scripts:scripts/orchestrator.py:29:dynamic-import-expression","file":"scripts/orchestrator.py","pattern":"Dynamic import() expression","snippet":"from chunk_schema import (","category":"scripts","line_end":32,"severity":"medium","line_start":29},{"id":"external_commands:scripts/orchestrator.py:199:ruby-shell-backtick-execution","file":"scripts/orchestrator.py","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":214,"severity":"medium","line_start":199},{"id":"external_commands:scripts/orchestrator.py:214:ruby-shell-backtick-execution","file":"scripts/orchestrator.py","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":217,"severity":"medium","line_start":214},{"id":"external_commands:scripts/orchestrator.py:217:ruby-shell-backtick-execution","file":"scripts/orchestrator.py","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":223,"severity":"medium","line_start":217},{"id":"external_commands:scripts/orchestrator.py:223:ruby-shell-backtick-execution","file":"scripts/orchestrator.py","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":382,"severity":"medium","line_start":223},{"id":"external_commands:scripts/orchestrator.py:382:ruby-shell-backtick-execution","file":"scripts/orchestrator.py","pattern":"Ruby/shell backtick execution","snippet":"```javascript","category":"external_commands","line_end":384,"severity":"medium","line_start":382},{"id":"filesystem:scripts/orchestrator.py:44:hidden-file-in-home-directory","file":"scripts/orchestrator.py","pattern":"Hidden file in home directory","snippet":"skill_dir: skill 目录路径(默认 ~/.claude/skills/ai-partner-chat)","category":"filesystem","line_end":44,"severity":"high","line_start":44},{"id":"filesystem:scripts/orchestrator.py:85:hidden-file-in-home-directory","file":"scripts/orchestrator.py","pattern":"Hidden file in home directory","snippet":"print(f\"   数据: ~/.claude/skills/ai-partner-chat/data/\")","category":"filesystem","line_end":85,"severity":"high","line_start":85},{"id":"filesystem:scripts/orchestrator.py:44:hidden-file-access","file":"scripts/orchestrator.py","pattern":"Hidden file access","snippet":"skill_dir: skill 目录路径(默认 ~/.claude/skills/ai-partner-chat)","category":"filesystem","line_end":44,"severity":"medium","line_start":44},{"id":"filesystem:scripts/orchestrator.py:85:hidden-file-access","file":"scripts/orchestrator.py","pattern":"Hidden file access","snippet":"print(f\"   数据: ~/.claude/skills/ai-partner-chat/data/\")","category":"filesystem","line_end":85,"severity":"medium","line_start":85},{"id":"blocker:scripts/orchestrator.py:260:system-reconnaissance","file":"scripts/orchestrator.py","pattern":"System reconnaissance","snippet":"conv_id = None","category":"blocker","line_end":260,"severity":"low","line_start":260},{"id":"blocker:scripts/orchestrator.py:265:system-reconnaissance","file":"scripts/orchestrator.py","pattern":"System reconnaissance","snippet":"conv_id = self.conversation_logger.log_conversation(","category":"blocker","line_end":265,"severity":"low","line_start":265},{"id":"external_commands:scripts/tag_generator.py:206:ruby-shell-backtick-execution","file":"scripts/tag_generator.py","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":208,"severity":"medium","line_start":206},{"id":"filesystem:scripts/tag_generator.py:61:python-file-write-append","file":"scripts/tag_generator.py","pattern":"Python file write/append","snippet":"with open(taxonomy_file, 'w', encoding='utf-8') as f:","category":"filesystem","line_end":61,"severity":"medium","line_start":61},{"id":"filesystem:scripts/tag_indexer.py:51:python-file-write-append","file":"scripts/tag_indexer.py","pattern":"Python file write/append","snippet":"with open(self.index_path, 'w', encoding='utf-8') as f:","category":"filesystem","line_end":51,"severity":"medium","line_start":51},{"id":"filesystem:scripts/thinking_analyzer.py:149:python-file-write-append","file":"scripts/thinking_analyzer.py","pattern":"Python file write/append","snippet":"with open(report_file, 'w', encoding='utf-8') as f:","category":"filesystem","line_end":149,"severity":"medium","line_start":149},{"id":"filesystem:scripts/vector_indexer.py:42:hidden-file-in-home-directory","file":"scripts/vector_indexer.py","pattern":"Hidden file in home directory","snippet":"# macOS/Linux: ~/.cache/huggingface/hub/","category":"filesystem","line_end":42,"severity":"high","line_start":42},{"id":"filesystem:scripts/vector_indexer.py:83:hidden-file-in-home-directory","file":"scripts/vector_indexer.py","pattern":"Hidden file in home directory","snippet":"cache_path = \"~/.cache/huggingface/hub/\"","category":"filesystem","line_end":83,"severity":"high","line_start":83},{"id":"filesystem:scripts/vector_indexer.py:42:hidden-file-access","file":"scripts/vector_indexer.py","pattern":"Hidden file access","snippet":"# macOS/Linux: ~/.cache/huggingface/hub/","category":"filesystem","line_end":42,"severity":"medium","line_start":42},{"id":"filesystem:scripts/vector_indexer.py:43:hidden-file-access","file":"scripts/vector_indexer.py","pattern":"Hidden file access","snippet":"# Windows: %USERPROFILE%/.cache/huggingface/hub/ 或 %LOCALAPPDATA%/huggingface/hub/","category":"filesystem","line_end":43,"severity":"medium","line_start":43},{"id":"filesystem:scripts/vector_indexer.py:83:hidden-file-access","file":"scripts/vector_indexer.py","pattern":"Hidden file access","snippet":"cache_path = \"~/.cache/huggingface/hub/\"","category":"filesystem","line_end":83,"severity":"medium","line_start":83},{"id":"env_access:scripts/vector_indexer.py:53:python-environment-access","file":"scripts/vector_indexer.py","pattern":"Python environment access","snippet":"if 'LOCALAPPDATA' in os.environ:","category":"env_access","line_end":53,"severity":"low","line_start":53},{"id":"env_access:scripts/vector_indexer.py:54:python-environment-access","file":"scripts/vector_indexer.py","pattern":"Python environment access","snippet":"cache_dirs.append(Path(os.environ['LOCALAPPDATA']) / 'huggingface' / 'hub')","category":"env_access","line_end":54,"severity":"low","line_start":54},{"id":"sensitive:scripts/vector_indexer.py:33:sqlite-database-file","file":"scripts/vector_indexer.py","pattern":"SQLite database file","snippet":"self.db_path = db_path","category":"sensitive","line_end":33,"severity":"medium","line_start":33},{"id":"sensitive:scripts/vector_indexer.py:103:sqlite-database-file","file":"scripts/vector_indexer.py","pattern":"SQLite database file","snippet":"print(f\"💾 Connecting to vector database at: {self.db_path}\")","category":"sensitive","line_end":103,"severity":"medium","line_start":103},{"id":"sensitive:scripts/vector_indexer.py:104:sqlite-database-file","file":"scripts/vector_indexer.py","pattern":"SQLite database file","snippet":"self.client = chromadb.PersistentClient(path=self.db_path)","category":"sensitive","line_end":104,"severity":"medium","line_start":104},{"id":"sensitive:scripts/vector_indexer.py:205:sqlite-database-file","file":"scripts/vector_indexer.py","pattern":"SQLite database file","snippet":"print(f\"   Database location: {os.path.abspath(self.db_path)}\")","category":"sensitive","line_end":205,"severity":"medium","line_start":205},{"id":"sensitive:scripts/vector_indexer.py:291:sqlite-database-file","file":"scripts/vector_indexer.py","pattern":"SQLite database file","snippet":"'database_path': os.path.abspath(self.db_path)","category":"sensitive","line_end":291,"severity":"medium","line_start":291},{"id":"sensitive:scripts/vector_indexer.py:297:sqlite-database-file","file":"scripts/vector_indexer.py","pattern":"SQLite database file","snippet":"'database_path': os.path.abspath(self.db_path)","category":"sensitive","line_end":297,"severity":"medium","line_start":297},{"id":"blocker:scripts/vector_indexer.py:191:system-reconnaissance","file":"scripts/vector_indexer.py","pattern":"System reconnaissance","snippet":"ids=[f\"chunk_{start_id + i}\"],","category":"blocker","line_end":191,"severity":"low","line_start":191},{"id":"blocker:scripts/vector_indexer.py:242:system-reconnaissance","file":"scripts/vector_indexer.py","pattern":"System reconnaissance","snippet":"chunk_id = f\"chunk_{current_count + successfully_indexed}_{datetime.now().timestamp()}\"","category":"blocker","line_end":242,"severity":"low","line_start":242},{"id":"sensitive:scripts/vector_utils.py:39:sqlite-database-file","file":"scripts/vector_utils.py","pattern":"SQLite database file","snippet":"self.db_path = db_path","category":"sensitive","line_end":39,"severity":"medium","line_start":39},{"id":"sensitive:scripts/vector_utils.py:52:sqlite-database-file","file":"scripts/vector_utils.py","pattern":"SQLite database file","snippet":"self.client = chromadb.PersistentClient(path=self.db_path)","category":"sensitive","line_end":52,"severity":"medium","line_start":52},{"id":"sensitive:scripts/vector_utils.py:56:sqlite-database-file","file":"scripts/vector_utils.py","pattern":"SQLite database file","snippet":"f\"Failed to connect to database at {self.db_path}. \"","category":"sensitive","line_end":56,"severity":"medium","line_start":56},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":21,"severity":"medium","line_start":14},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":25,"severity":"medium","line_start":21},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":31,"severity":"medium","line_start":25},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":42,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":51,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":54,"severity":"medium","line_start":51},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- ✅ 会话开始时主动检查 `notes/` 目录","category":"external_commands","line_end":60,"severity":"medium","line_start":54},{"id":"external_commands:SKILL.md:60:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 🔍 自动扫描项目 `notes/` 目录","category":"external_commands","line_end":63,"severity":"medium","line_start":60},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 💾 状态持久化到 `~/.claude/skills/ai-partner-chat/data/indexes/processed_notes.json`","category":"external_commands","line_end":69,"severity":"medium","line_start":63},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":81,"severity":"medium","line_start":69},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":85,"severity":"medium","line_start":81},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- ✅ 主动检查 `notes/` 目录,处理新笔记","category":"external_commands","line_end":88,"severity":"medium","line_start":85},{"id":"external_commands:SKILL.md:88:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- ✅ 在虚拟环境中运行:确保已激活 `venv`","category":"external_commands","line_end":89,"severity":"medium","line_start":88},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- ✅ 所有数据保存到 `~/.claude/skills/ai-partner-chat/data/`","category":"external_commands","line_end":123,"severity":"medium","line_start":89},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":134,"severity":"medium","line_start":123},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":138,"severity":"medium","line_start":134},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- macOS/Linux: 模型缓存到 `~/.cache/huggingface/hub/`","category":"external_commands","line_end":139,"severity":"medium","line_start":138},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Windows: 模型缓存到 `%USERPROFILE%\\.cache\\huggingface\\hub\\`","category":"external_commands","line_end":143,"severity":"medium","line_start":139},{"id":"external_commands:SKILL.md:143:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- macOS/Linux: `source venv/bin/activate`","category":"external_commands","line_end":144,"severity":"medium","line_start":143},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Windows: `venv\\Scripts\\activate`","category":"external_commands","line_end":147,"severity":"medium","line_start":144},{"id":"external_commands:SKILL.md:147:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 依赖中使用 `transformers<4.50` 来避免 torch 2.6 依赖(macOS torch 2.6 尚未发布)","category":"external_commands","line_end":149,"severity":"medium","line_start":147},{"id":"external_commands:SKILL.md:149:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 当前方案使用 `transformers==4.49.1` + `torch==2.5.1` 是安全的","category":"external_commands","line_end":149,"severity":"medium","line_start":149},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":154,"severity":"medium","line_start":152},{"id":"external_commands:SKILL.md:154:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":162,"severity":"medium","line_start":154},{"id":"external_commands:SKILL.md:162:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"从 `~/.claude/skills/ai-partner-chat/assets/` 复制到项目的 `config/` 目录:","category":"external_commands","line_end":162,"severity":"medium","line_start":162},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":174,"severity":"medium","line_start":165},{"id":"external_commands:SKILL.md:174:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":177,"severity":"medium","line_start":174},{"id":"external_commands:SKILL.md:177:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```powershell","category":"external_commands","line_end":186,"severity":"medium","line_start":177},{"id":"external_commands:SKILL.md:186:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":190,"severity":"medium","line_start":186},{"id":"external_commands:SKILL.md:190:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"编辑项目 `config/` 目录中的文件:","category":"external_commands","line_end":192,"severity":"medium","line_start":190},{"id":"external_commands:SKILL.md:192:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **`config/user-persona.md`** - 描述你的背景、学习风格、沟通偏好","category":"external_commands","line_end":193,"severity":"medium","line_start":192},{"id":"external_commands:SKILL.md:193:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **`config/ai-persona.md`** - 定义 AI 的角色、回复风格、个性","category":"external_commands","line_end":196,"severity":"medium","line_start":193},{"id":"external_commands:SKILL.md:196:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- ✅ `assets/` 中的模版保持不变,供参考","category":"external_commands","line_end":197,"severity":"medium","line_start":196},{"id":"external_commands:SKILL.md:197:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- ✅ `config/` 中的文件是你的自定义版本","category":"external_commands","line_end":199,"severity":"medium","line_start":197},{"id":"external_commands:SKILL.md:199:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- ✅ Python 代码会读取项目 `config/` 目录中的画像","category":"external_commands","line_end":207,"severity":"medium","line_start":199},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":241,"severity":"medium","line_start":207},{"id":"external_commands:SKILL.md:241:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":250,"severity":"medium","line_start":241},{"id":"external_commands:SKILL.md:250:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":264,"severity":"medium","line_start":250},{"id":"external_commands:SKILL.md:264:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":267,"severity":"medium","line_start":264},{"id":"external_commands:SKILL.md:267:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 📝 **原文件保留** - 你的笔记永远在项目 `notes/` 目录,不会被移动或删除","category":"external_commands","line_end":268,"severity":"medium","line_start":267},{"id":"external_commands:SKILL.md:268:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 🔍 **向量入库** - 笔记内容被向量化后存入 `skill/data/vector_db/`","category":"external_commands","line_end":270,"severity":"medium","line_start":268},{"id":"external_commands:SKILL.md:270:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- 📊 **状态跟踪** - `processed_notes.json` 记录哪些笔记已处理,避免重复","category":"external_commands","line_end":273,"severity":"medium","line_start":270},{"id":"external_commands:SKILL.md:273:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":279,"severity":"medium","line_start":273},{"id":"external_commands:SKILL.md:279:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":286,"severity":"medium","line_start":279},{"id":"external_commands:SKILL.md:286:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":290,"severity":"medium","line_start":286},{"id":"external_commands:SKILL.md:290:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":293,"severity":"medium","line_start":290},{"id":"external_commands:SKILL.md:293:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":296,"severity":"medium","line_start":293},{"id":"external_commands:SKILL.md:296:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":299,"severity":"medium","line_start":296},{"id":"external_commands:SKILL.md:299:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":303,"severity":"medium","line_start":299},{"id":"external_commands:SKILL.md:303:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":306,"severity":"medium","line_start":303},{"id":"external_commands:SKILL.md:306:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":308,"severity":"medium","line_start":306},{"id":"external_commands:SKILL.md:308:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":311,"severity":"medium","line_start":308},{"id":"external_commands:SKILL.md:311:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":318,"severity":"medium","line_start":311},{"id":"external_commands:SKILL.md:318:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":323,"severity":"medium","line_start":318},{"id":"external_commands:SKILL.md:323:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":329,"severity":"medium","line_start":323},{"id":"external_commands:SKILL.md:329:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":332,"severity":"medium","line_start":329},{"id":"external_commands:SKILL.md:332:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":339,"severity":"medium","line_start":332},{"id":"external_commands:SKILL.md:339:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":342,"severity":"medium","line_start":339},{"id":"external_commands:SKILL.md:342:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":352,"severity":"medium","line_start":342},{"id":"external_commands:SKILL.md:352:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":355,"severity":"medium","line_start":352},{"id":"external_commands:SKILL.md:355:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":360,"severity":"medium","line_start":355},{"id":"external_commands:SKILL.md:360:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":368,"severity":"medium","line_start":360},{"id":"external_commands:SKILL.md:368:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":382,"severity":"medium","line_start":368},{"id":"external_commands:SKILL.md:382:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":385,"severity":"medium","line_start":382},{"id":"external_commands:SKILL.md:385:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":394,"severity":"medium","line_start":385},{"id":"external_commands:SKILL.md:394:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":398,"severity":"medium","line_start":394},{"id":"external_commands:SKILL.md:398:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":415,"severity":"medium","line_start":398},{"id":"external_commands:SKILL.md:415:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":419,"severity":"medium","line_start":415},{"id":"external_commands:SKILL.md:419:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":421,"severity":"medium","line_start":419},{"id":"external_commands:SKILL.md:421:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":425,"severity":"medium","line_start":421},{"id":"external_commands:SKILL.md:425:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":427,"severity":"medium","line_start":425},{"id":"external_commands:SKILL.md:427:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":436,"severity":"medium","line_start":427},{"id":"external_commands:SKILL.md:436:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. Python 代码启动时读取项目 `config/` 目录中的画像文件","category":"external_commands","line_end":446,"severity":"medium","line_start":436},{"id":"external_commands:SKILL.md:446:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```markdown","category":"external_commands","line_end":464,"severity":"medium","line_start":446},{"id":"external_commands:SKILL.md:464:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":477,"severity":"medium","line_start":464},{"id":"external_commands:SKILL.md:477:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":518,"severity":"medium","line_start":477},{"id":"external_commands:SKILL.md:518:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":525,"severity":"medium","line_start":518},{"id":"external_commands:SKILL.md:525:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `process_new_note(note_path, content)` - 处理新笔记全流程","category":"external_commands","line_end":526,"severity":"medium","line_start":525},{"id":"external_commands:SKILL.md:526:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `handle_conversation(user_msg, ai_msg)` - 处理对话全流程","category":"external_commands","line_end":527,"severity":"medium","line_start":526},{"id":"external_commands:SKILL.md:527:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `generate_weekly_report()` - 生成周报","category":"external_commands","line_end":528,"severity":"medium","line_start":527},{"id":"external_commands:SKILL.md:528:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `get_system_stats()` - 获取系统统计","category":"external_commands","line_end":551,"severity":"medium","line_start":528},{"id":"external_commands:SKILL.md:551:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":560,"severity":"medium","line_start":551},{"id":"external_commands:SKILL.md:560:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":578,"severity":"medium","line_start":560},{"id":"external_commands:SKILL.md:578:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `exploration` - 探索期","category":"external_commands","line_end":579,"severity":"medium","line_start":578},{"id":"external_commands:SKILL.md:579:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `confusion` - 困惑期","category":"external_commands","line_end":580,"severity":"medium","line_start":579},{"id":"external_commands:SKILL.md:580:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `breakthrough` - 突破期","category":"external_commands","line_end":581,"severity":"medium","line_start":580},{"id":"external_commands:SKILL.md:581:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `consolidation` - 巩固期","category":"external_commands","line_end":582,"severity":"medium","line_start":581},{"id":"external_commands:SKILL.md:582:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `burnout` - 倦怠期","category":"external_commands","line_end":585,"severity":"medium","line_start":582},{"id":"external_commands:SKILL.md:585:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```json","category":"external_commands","line_end":596,"severity":"medium","line_start":585},{"id":"external_commands:SKILL.md:596:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":616,"severity":"medium","line_start":596},{"id":"external_commands:SKILL.md:616:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":622,"severity":"medium","line_start":616},{"id":"external_commands:SKILL.md:622:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":628,"severity":"medium","line_start":622},{"id":"external_commands:SKILL.md:628:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":662,"severity":"medium","line_start":628},{"id":"external_commands:SKILL.md:662:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":668,"severity":"medium","line_start":662},{"id":"external_commands:SKILL.md:668:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":688,"severity":"medium","line_start":668},{"id":"external_commands:SKILL.md:688:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":692,"severity":"medium","line_start":688},{"id":"external_commands:SKILL.md:692:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":756,"severity":"medium","line_start":692},{"id":"external_commands:SKILL.md:756:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":760,"severity":"medium","line_start":756},{"id":"external_commands:SKILL.md:760:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":811,"severity":"medium","line_start":760},{"id":"external_commands:SKILL.md:811:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":814,"severity":"medium","line_start":811},{"id":"external_commands:SKILL.md:814:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":821,"severity":"medium","line_start":814},{"id":"external_commands:SKILL.md:821:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":839,"severity":"medium","line_start":821},{"id":"external_commands:SKILL.md:839:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":842,"severity":"medium","line_start":839},{"id":"external_commands:SKILL.md:842:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":870,"severity":"medium","line_start":842},{"id":"external_commands:SKILL.md:870:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```markdown","category":"external_commands","line_end":877,"severity":"medium","line_start":870},{"id":"external_commands:SKILL.md:877:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```javascript","category":"external_commands","line_end":879,"severity":"medium","line_start":877},{"id":"external_commands:SKILL.md:879:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":887,"severity":"medium","line_start":879},{"id":"external_commands:SKILL.md:887:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":894,"severity":"medium","line_start":887},{"id":"external_commands:SKILL.md:894:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":899,"severity":"medium","line_start":894},{"id":"external_commands:SKILL.md:899:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":915,"severity":"medium","line_start":899},{"id":"external_commands:SKILL.md:915:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"创建 `config/tags_taxonomy.json`:","category":"external_commands","line_end":916,"severity":"medium","line_start":915},{"id":"external_commands:SKILL.md:916:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```json","category":"external_commands","line_end":922,"severity":"medium","line_start":916},{"id":"external_commands:SKILL.md:922:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":927,"severity":"medium","line_start":922},{"id":"external_commands:SKILL.md:927:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":940,"severity":"medium","line_start":927},{"id":"external_commands:SKILL.md:940:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":978,"severity":"medium","line_start":940},{"id":"external_commands:SKILL.md:978:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**A:** 编辑 `emotion_analyzer.py`:","category":"external_commands","line_end":979,"severity":"medium","line_start":978},{"id":"external_commands:SKILL.md:979:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":983,"severity":"medium","line_start":979},{"id":"external_commands:SKILL.md:983:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":986,"severity":"medium","line_start":983},{"id":"external_commands:SKILL.md:986:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":989,"severity":"medium","line_start":986},{"id":"external_commands:SKILL.md:989:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1003,"severity":"medium","line_start":989},{"id":"external_commands:SKILL.md:1003:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**A:** 可以,修改 `vector_indexer.py`:","category":"external_commands","line_end":1004,"severity":"medium","line_start":1003},{"id":"external_commands:SKILL.md:1004:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":1009,"severity":"medium","line_start":1004},{"id":"external_commands:SKILL.md:1009:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1021,"severity":"medium","line_start":1009},{"id":"external_commands:SKILL.md:1021:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1022,"severity":"medium","line_start":1021},{"id":"external_commands:SKILL.md:1022:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"ValueError: Due to a serious vulnerability issue in `torch.load`, even with","category":"external_commands","line_end":1023,"severity":"medium","line_start":1022},{"id":"external_commands:SKILL.md:1023:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`weights_only=True`, we now require users to upgrade torch to at least v2.6","category":"external_commands","line_end":1024,"severity":"medium","line_start":1023},{"id":"external_commands:SKILL.md:1024:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1031,"severity":"medium","line_start":1024},{"id":"external_commands:SKILL.md:1031:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":1035,"severity":"medium","line_start":1031},{"id":"external_commands:SKILL.md:1035:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1038,"severity":"medium","line_start":1035},{"id":"external_commands:SKILL.md:1038:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":1041,"severity":"medium","line_start":1038},{"id":"external_commands:SKILL.md:1041:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1053,"severity":"medium","line_start":1041},{"id":"external_commands:SKILL.md:1053:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":1067,"severity":"medium","line_start":1053},{"id":"external_commands:SKILL.md:1067:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1071,"severity":"medium","line_start":1067},{"id":"external_commands:SKILL.md:1071:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**原因**: 调用 `handle_conversation` 时未正确设置参数","category":"external_commands","line_end":1074,"severity":"medium","line_start":1071},{"id":"external_commands:SKILL.md:1074:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":1091,"severity":"medium","line_start":1074},{"id":"external_commands:SKILL.md:1091:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1098,"severity":"medium","line_start":1091},{"id":"external_commands:SKILL.md:1098:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":1104,"severity":"medium","line_start":1098},{"id":"external_commands:SKILL.md:1104:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1107,"severity":"medium","line_start":1104},{"id":"external_commands:SKILL.md:1107:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":1111,"severity":"medium","line_start":1107},{"id":"external_commands:SKILL.md:1111:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1116,"severity":"medium","line_start":1111},{"id":"external_commands:SKILL.md:1116:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```powershell","category":"external_commands","line_end":1122,"severity":"medium","line_start":1116},{"id":"external_commands:SKILL.md:1122:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1125,"severity":"medium","line_start":1122},{"id":"external_commands:SKILL.md:1125:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":1129,"severity":"medium","line_start":1125},{"id":"external_commands:SKILL.md:1129:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1138,"severity":"medium","line_start":1129},{"id":"external_commands:SKILL.md:1138:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":1148,"severity":"medium","line_start":1138},{"id":"external_commands:SKILL.md:1148:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1150,"severity":"medium","line_start":1148},{"id":"external_commands:SKILL.md:1150:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"然后编辑 `config/user-persona.md` 和 `config/ai-persona.md` 自定义你的画像。","category":"external_commands","line_end":1150,"severity":"medium","line_start":1150},{"id":"external_commands:SKILL.md:1154:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**症状**: `ModuleNotFoundError: No module named 'orchestrator'`","category":"external_commands","line_end":1159,"severity":"medium","line_start":1154},{"id":"external_commands:SKILL.md:1159:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":1169,"severity":"medium","line_start":1159},{"id":"external_commands:SKILL.md:1169:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1178,"severity":"medium","line_start":1169},{"id":"external_commands:SKILL.md:1178:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":1184,"severity":"medium","line_start":1178},{"id":"external_commands:SKILL.md:1184:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1187,"severity":"medium","line_start":1184},{"id":"external_commands:SKILL.md:1187:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":1195,"severity":"medium","line_start":1187},{"id":"external_commands:SKILL.md:1195:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1198,"severity":"medium","line_start":1195},{"id":"external_commands:SKILL.md:1198:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":1206,"severity":"medium","line_start":1198},{"id":"external_commands:SKILL.md:1206:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1212,"severity":"medium","line_start":1206},{"id":"external_commands:SKILL.md:1212:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":1241,"severity":"medium","line_start":1212},{"id":"external_commands:SKILL.md:1241:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":1283,"severity":"medium","line_start":1241},{"id":"external_commands:SKILL.md:1283:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":1295,"severity":"medium","line_start":1283},{"id":"external_commands:SKILL.md:177:powershell-invocation","file":"SKILL.md","pattern":"PowerShell invocation","snippet":"```powershell","category":"external_commands","line_end":177,"severity":"high","line_start":177},{"id":"external_commands:SKILL.md:1115:powershell-invocation","file":"SKILL.md","pattern":"PowerShell invocation","snippet":"**Windows PowerShell 权限问题**:","category":"external_commands","line_end":1115,"severity":"high","line_start":1115},{"id":"external_commands:SKILL.md:1116:powershell-invocation","file":"SKILL.md","pattern":"PowerShell invocation","snippet":"```powershell","category":"external_commands","line_end":1116,"severity":"high","line_start":1116},{"id":"filesystem:SKILL.md:63:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"- 💾 状态持久化到 `~/.claude/skills/ai-partner-chat/data/indexes/processed_notes.json`","category":"filesystem","line_end":63,"severity":"high","line_start":63},{"id":"filesystem:SKILL.md:89:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"- ✅ 所有数据保存到 `~/.claude/skills/ai-partner-chat/data/`","category":"filesystem","line_end":89,"severity":"high","line_start":89},{"id":"filesystem:SKILL.md:133:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"pip install -r ~/.claude/skills/ai-partner-chat/scripts/requirements.txt","category":"filesystem","line_end":133,"severity":"high","line_start":133},{"id":"filesystem:SKILL.md:138:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"- macOS/Linux: 模型缓存到 `~/.cache/huggingface/hub/`","category":"filesystem","line_end":138,"severity":"high","line_start":138},{"id":"filesystem:SKILL.md:162:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"从 `~/.claude/skills/ai-partner-chat/assets/` 复制到项目的 `config/` 目录:","category":"filesystem","line_end":162,"severity":"high","line_start":162},{"id":"filesystem:SKILL.md:170:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/user-persona-template.md config/user-persona.md","category":"filesystem","line_end":170,"severity":"high","line_start":170},{"id":"filesystem:SKILL.md:173:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/ai-persona-template.md config/ai-persona.md","category":"filesystem","line_end":173,"severity":"high","line_start":173},{"id":"filesystem:SKILL.md:208:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"~/.claude/skills/ai-partner-chat/","category":"filesystem","line_end":208,"severity":"high","line_start":208},{"id":"filesystem:SKILL.md:327:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"数据: ~/.claude/skills/ai-partner-chat/data/","category":"filesystem","line_end":327,"severity":"high","line_start":327},{"id":"filesystem:SKILL.md:336:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"数据: ~/.claude/skills/ai-partner-chat/data/","category":"filesystem","line_end":336,"severity":"high","line_start":336},{"id":"filesystem:SKILL.md:820:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"pip install -r ~/.claude/skills/ai-partner-chat/scripts/requirements.txt","category":"filesystem","line_end":820,"severity":"high","line_start":820},{"id":"filesystem:SKILL.md:1034:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"pip install -r ~/.claude/skills/ai-partner-chat/scripts/requirements.txt","category":"filesystem","line_end":1034,"severity":"high","line_start":1034},{"id":"filesystem:SKILL.md:1063:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"pip install -r ~/.claude/skills/ai-partner-chat/scripts/requirements.txt","category":"filesystem","line_end":1063,"severity":"high","line_start":1063},{"id":"filesystem:SKILL.md:1100:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"ls ~/.cache/huggingface/hub/models--BAAI--bge-m3","category":"filesystem","line_end":1100,"severity":"high","line_start":1100},{"id":"filesystem:SKILL.md:1109:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"export HF_HOME=~/.cache/huggingface  # macOS/Linux","category":"filesystem","line_end":1109,"severity":"high","line_start":1109},{"id":"filesystem:SKILL.md:1141:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/user-persona-template.md config/user-persona.md","category":"filesystem","line_end":1141,"severity":"high","line_start":1141},{"id":"filesystem:SKILL.md:1142:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/ai-persona-template.md config/ai-persona.md","category":"filesystem","line_end":1142,"severity":"high","line_start":1142},{"id":"filesystem:SKILL.md:63:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"- 💾 状态持久化到 `~/.claude/skills/ai-partner-chat/data/indexes/processed_notes.json`","category":"filesystem","line_end":63,"severity":"medium","line_start":63},{"id":"filesystem:SKILL.md:89:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"- ✅ 所有数据保存到 `~/.claude/skills/ai-partner-chat/data/`","category":"filesystem","line_end":89,"severity":"medium","line_start":89},{"id":"filesystem:SKILL.md:133:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"pip install -r ~/.claude/skills/ai-partner-chat/scripts/requirements.txt","category":"filesystem","line_end":133,"severity":"medium","line_start":133},{"id":"filesystem:SKILL.md:138:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"- macOS/Linux: 模型缓存到 `~/.cache/huggingface/hub/`","category":"filesystem","line_end":138,"severity":"medium","line_start":138},{"id":"filesystem:SKILL.md:162:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"从 `~/.claude/skills/ai-partner-chat/assets/` 复制到项目的 `config/` 目录:","category":"filesystem","line_end":162,"severity":"medium","line_start":162},{"id":"filesystem:SKILL.md:170:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/user-persona-template.md config/user-persona.md","category":"filesystem","line_end":170,"severity":"medium","line_start":170},{"id":"filesystem:SKILL.md:173:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/ai-persona-template.md config/ai-persona.md","category":"filesystem","line_end":173,"severity":"medium","line_start":173},{"id":"filesystem:SKILL.md:208:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"~/.claude/skills/ai-partner-chat/","category":"filesystem","line_end":208,"severity":"medium","line_start":208},{"id":"filesystem:SKILL.md:327:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"数据: ~/.claude/skills/ai-partner-chat/data/","category":"filesystem","line_end":327,"severity":"medium","line_start":327},{"id":"filesystem:SKILL.md:336:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"数据: ~/.claude/skills/ai-partner-chat/data/","category":"filesystem","line_end":336,"severity":"medium","line_start":336},{"id":"filesystem:SKILL.md:820:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"pip install -r ~/.claude/skills/ai-partner-chat/scripts/requirements.txt","category":"filesystem","line_end":820,"severity":"medium","line_start":820},{"id":"filesystem:SKILL.md:1034:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"pip install -r ~/.claude/skills/ai-partner-chat/scripts/requirements.txt","category":"filesystem","line_end":1034,"severity":"medium","line_start":1034},{"id":"filesystem:SKILL.md:1063:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"pip install -r ~/.claude/skills/ai-partner-chat/scripts/requirements.txt","category":"filesystem","line_end":1063,"severity":"medium","line_start":1063},{"id":"filesystem:SKILL.md:1100:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"ls ~/.cache/huggingface/hub/models--BAAI--bge-m3","category":"filesystem","line_end":1100,"severity":"medium","line_start":1100},{"id":"filesystem:SKILL.md:1109:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"export HF_HOME=~/.cache/huggingface  # macOS/Linux","category":"filesystem","line_end":1109,"severity":"medium","line_start":1109},{"id":"filesystem:SKILL.md:1141:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/user-persona-template.md config/user-persona.md","category":"filesystem","line_end":1141,"severity":"medium","line_start":1141},{"id":"filesystem:SKILL.md:1142:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"cp ~/.claude/skills/ai-partner-chat/assets/ai-persona-template.md config/ai-persona.md","category":"filesystem","line_end":1142,"severity":"medium","line_start":1142},{"id":"sensitive:SKILL.md:220:sqlite-database-file","file":"SKILL.md","pattern":"SQLite database file","snippet":"│   └── chroma.sqlite3     # ⚡ 所有笔记/对话/代码的向量都在这里","category":"sensitive","line_end":220,"severity":"medium","line_start":220},{"id":"sensitive:SKILL.md:791:sqlite-database-file","file":"SKILL.md","pattern":"SQLite database file","snippet":"│   └── chroma.sqlite3","category":"sensitive","line_end":791,"severity":"medium","line_start":791},{"id":"obfuscation:assets/ai-persona-template.md:1:heuristic-high-file-entropy-6-48-bits-possible-b","file":"assets/ai-persona-template.md","pattern":"[HEURISTIC] High file entropy (6.48 bits) - possible binary/encrypted content","snippet":"File: assets/ai-persona-template.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1},{"id":"obfuscation:notes/react_hooks_学习.md:1:heuristic-high-file-entropy-6-33-bits-possible-b","file":"notes/react_hooks_学习.md","pattern":"[HEURISTIC] High file entropy (6.33 bits) - possible binary/encrypted content","snippet":"File: notes/react_hooks_学习.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1},{"id":"obfuscation:README.md:1:heuristic-high-file-entropy-6-32-bits-possible-b","file":"README.md","pattern":"[HEURISTIC] High file entropy (6.32 bits) - possible binary/encrypted content","snippet":"File: README.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1},{"id":"obfuscation:SKILL.md:1:heuristic-high-file-entropy-6-40-bits-possible-b","file":"SKILL.md","pattern":"[HEURISTIC] High file entropy (6.40 bits) - possible binary/encrypted content","snippet":"File: SKILL.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1}],"finding_verdicts":[{"id":"external_commands:install.sh:12:shell-command-substitution","reason":"The shell substitution uses fixed local commands with quoted paths to resolve the project path or count local files. I did not find user-controlled command construction.","verdict":"false_positive","confidence":0.86},{"id":"external_commands:install.sh:94:shell-command-substitution","reason":"The shell substitution uses fixed local commands with quoted paths to resolve the project path or count local files. I did not find user-controlled command construction.","verdict":"false_positive","confidence":0.86},{"id":"external_commands:install.sh:99:shell-command-substitution","reason":"The shell substitution uses fixed local commands with quoted paths to resolve the project path or count local files. I did not find user-controlled command construction.","verdict":"false_positive","confidence":0.86},{"id":"external_commands:install.sh:1:unix-shell-invocation","reason":"The skill ships a Bash installer that copies files and removes old skill subdirectories under ~/.claude. This creates a real external command surface even though execution is explicit.","verdict":"confirmed","severity":"medium","confidence":0.74},{"id":"filesystem:install.sh:13:hidden-file-access","reason":"The installer targets ~/.claude/skills/ai-partner-chat and modifies a hidden home-directory skill location. That is expected for installation but security-sensitive for marketplace auto-install policy.","verdict":"confirmed","severity":"medium","confidence":0.86},{"id":"filesystem:install.sh:33:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:34:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:35:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:36:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:37:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:38:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:39:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:40:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:43:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:44:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:45:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:46:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:94:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:99:standard-device-file-access","reason":"The match is stderr redirection to /dev/null around bounded local cleanup or count commands. It is not reading from sensitive device files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:install.sh:15:temp-directory-access","reason":"The installer backs up existing skill data into /tmp using a predictable path. That can expose personal memory data to local temp-directory risks during installation.","verdict":"confirmed","severity":"medium","confidence":0.83},{"id":"external_commands:README.md:192:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:README.md:196:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:README.md:198:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"network:README.md:50:hardcoded-url","reason":"The URL is a public GitHub clone example in README documentation. It is not a runtime network request or data exfiltration endpoint.","verdict":"false_positive","confidence":0.92},{"id":"filesystem:README.md:61:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:78:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:90:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:97:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:98:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:117:hidden-file-in-home-directory","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:README.md:126:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:384:hidden-file-in-home-directory","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:README.md:404:hidden-file-in-home-directory","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:README.md:61:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:78:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:90:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:97:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:98:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:117:hidden-file-access","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:README.md:126:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:README.md:384:hidden-file-access","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:README.md:404:hidden-file-access","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:README.md:363:temp-directory-access","reason":"The installer backs up existing skill data into /tmp using a predictable path. That can expose personal memory data to local temp-directory risks during installation.","verdict":"confirmed","severity":"medium","confidence":0.83},{"id":"sensitive:README.md:149:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"blocker:README.md:404:recursive-delete-on-root-home","reason":"The command is a documented troubleshooting step that deletes only this skill's vector_db directory under ~/.claude and warns about data loss. It is not a broad deletion of root or the home directory.","verdict":"false_positive","confidence":0.82},{"id":"external_commands:scripts/code_parser.py:31:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:scripts/code_parser.py:32:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:scripts/code_parser.py:109:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:scripts/conversation_logger.py:194:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"filesystem:scripts/conversation_logger.py:62:python-file-write-append","reason":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed.","verdict":"confirmed","severity":"medium","confidence":0.86},{"id":"filesystem:scripts/conversation_logger.py:207:python-file-write-append","reason":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed.","verdict":"confirmed","severity":"medium","confidence":0.86},{"id":"filesystem:scripts/conversation_logger.py:347:python-file-write-append","reason":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed.","verdict":"confirmed","severity":"medium","confidence":0.86},{"id":"sensitive:scripts/conversation_logger.py:43:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"sensitive:scripts/conversation_logger.py:238:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"blocker:scripts/conversation_logger.py:141:system-reconnaissance","reason":"The matched code creates local identifiers or timestamps for records. It does not enumerate users, hosts, processes, networks, or other system inventory.","verdict":"false_positive","confidence":0.89},{"id":"blocker:scripts/conversation_logger.py:163:system-reconnaissance","reason":"The matched code creates local identifiers or timestamps for records. It does not enumerate users, hosts, processes, networks, or other system inventory.","verdict":"false_positive","confidence":0.89},{"id":"scripts:scripts/emotion_analyzer.py:17:dynamic-import-expression","reason":"The scanner matched a normal multi-line import from the local chunk_schema module. There is no dynamic import expression or user-controlled module name here.","verdict":"false_positive","confidence":0.9},{"id":"filesystem:scripts/emotion_analyzer.py:42:python-file-write-append","reason":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed.","verdict":"confirmed","severity":"medium","confidence":0.86},{"id":"external_commands:scripts/example_usage.py:32:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"filesystem:scripts/note_processor.py:49:python-file-write-append","reason":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed.","verdict":"confirmed","severity":"medium","confidence":0.86},{"id":"sensitive:scripts/note_processor.py:174:certificate-key-files","reason":"The scanner matched the Python method name keys() on a dictionary. It does not access certificate files, private keys, or credential material.","verdict":"false_positive","confidence":0.96},{"id":"scripts:scripts/orchestrator.py:29:dynamic-import-expression","reason":"The scanner matched a normal multi-line import from the local chunk_schema module. There is no dynamic import expression or user-controlled module name here.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:scripts/orchestrator.py:199:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:scripts/orchestrator.py:214:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:scripts/orchestrator.py:217:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:scripts/orchestrator.py:223:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:scripts/orchestrator.py:382:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"filesystem:scripts/orchestrator.py:44:hidden-file-in-home-directory","reason":"The orchestrator defaults runtime data to ~/.claude/skills/ai-partner-chat/data. This hidden home-directory storage contains long-term note and conversation memory.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"filesystem:scripts/orchestrator.py:85:hidden-file-in-home-directory","reason":"The orchestrator defaults runtime data to ~/.claude/skills/ai-partner-chat/data. This hidden home-directory storage contains long-term note and conversation memory.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"filesystem:scripts/orchestrator.py:44:hidden-file-access","reason":"The orchestrator defaults runtime data to ~/.claude/skills/ai-partner-chat/data. This hidden home-directory storage contains long-term note and conversation memory.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"filesystem:scripts/orchestrator.py:85:hidden-file-access","reason":"The orchestrator defaults runtime data to ~/.claude/skills/ai-partner-chat/data. This hidden home-directory storage contains long-term note and conversation memory.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"blocker:scripts/orchestrator.py:260:system-reconnaissance","reason":"The matched code creates local identifiers or timestamps for records. It does not enumerate users, hosts, processes, networks, or other system inventory.","verdict":"false_positive","confidence":0.89},{"id":"blocker:scripts/orchestrator.py:265:system-reconnaissance","reason":"The matched code creates local identifiers or timestamps for records. It does not enumerate users, hosts, processes, networks, or other system inventory.","verdict":"false_positive","confidence":0.89},{"id":"external_commands:scripts/tag_generator.py:206:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"filesystem:scripts/tag_generator.py:61:python-file-write-append","reason":"This write creates a local default taxonomy/configuration file and does not store user secrets or execute content. It is a bounded setup action.","verdict":"false_positive","confidence":0.78},{"id":"filesystem:scripts/tag_indexer.py:51:python-file-write-append","reason":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed.","verdict":"confirmed","severity":"medium","confidence":0.86},{"id":"filesystem:scripts/thinking_analyzer.py:149:python-file-write-append","reason":"This is an actual file write of conversation, note, tag, emotion, or report metadata. The behavior is intended, but it persists personal context and should be consented and managed.","verdict":"confirmed","severity":"medium","confidence":0.86},{"id":"filesystem:scripts/vector_indexer.py:42:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:scripts/vector_indexer.py:83:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:scripts/vector_indexer.py:42:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:scripts/vector_indexer.py:43:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:scripts/vector_indexer.py:83:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"env_access:scripts/vector_indexer.py:53:python-environment-access","reason":"The code checks LOCALAPPDATA only to locate the Hugging Face model cache on Windows. It does not enumerate or exfiltrate environment secrets.","verdict":"false_positive","confidence":0.85},{"id":"env_access:scripts/vector_indexer.py:54:python-environment-access","reason":"The code checks LOCALAPPDATA only to locate the Hugging Face model cache on Windows. It does not enumerate or exfiltrate environment secrets.","verdict":"false_positive","confidence":0.85},{"id":"sensitive:scripts/vector_indexer.py:33:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"sensitive:scripts/vector_indexer.py:103:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"sensitive:scripts/vector_indexer.py:104:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"sensitive:scripts/vector_indexer.py:205:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"sensitive:scripts/vector_indexer.py:291:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"sensitive:scripts/vector_indexer.py:297:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"blocker:scripts/vector_indexer.py:191:system-reconnaissance","reason":"The matched code creates local identifiers or timestamps for records. It does not enumerate users, hosts, processes, networks, or other system inventory.","verdict":"false_positive","confidence":0.89},{"id":"blocker:scripts/vector_indexer.py:242:system-reconnaissance","reason":"The matched code creates local identifiers or timestamps for records. It does not enumerate users, hosts, processes, networks, or other system inventory.","verdict":"false_positive","confidence":0.89},{"id":"sensitive:scripts/vector_utils.py:39:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"sensitive:scripts/vector_utils.py:52:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"sensitive:scripts/vector_utils.py:56:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:21:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:60:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:88:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:89:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:134:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:143:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:147:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:149:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:154:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:162:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:174:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:177:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:186:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:190:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:192:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:193:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:196:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:197:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:199:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:241:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:250:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:264:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:267:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:268:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:270:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:273:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:279:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:286:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:290:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:293:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:296:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:299:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:303:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:306:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:308:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:311:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:318:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:323:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:329:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:332:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:339:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:342:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:352:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:355:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:360:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:368:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:382:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:385:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:394:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:398:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:415:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:419:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:421:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:425:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:427:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:436:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:446:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:464:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:477:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:518:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:525:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:526:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:527:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:528:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:551:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:560:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:578:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:579:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:580:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:581:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:582:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:585:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:596:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:616:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:622:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:628:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:662:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:668:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:688:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:692:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:756:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:760:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:811:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:814:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:821:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:839:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:842:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:870:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:877:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:879:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:887:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:894:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:899:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:915:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:916:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:922:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:927:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:940:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:978:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:979:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:983:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:986:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:989:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1003:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1004:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1009:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1021:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1022:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1023:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1024:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1031:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1035:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1038:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1041:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1053:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1067:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1071:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1074:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1091:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1098:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1104:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1107:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1111:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1116:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1122:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1125:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1129:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1138:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1148:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1150:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1154:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1159:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1169:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1178:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1184:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1187:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1195:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1198:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1206:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1212:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1241:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:1283:ruby-shell-backtick-execution","reason":"The match is a Markdown code fence, inline backtick, JavaScript template literal, or Python prompt string. No Ruby or shell backtick execution occurs at this location.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:177:powershell-invocation","reason":"This is documentation or a fenced troubleshooting example for Windows users. The skill code does not automatically invoke PowerShell at this location.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:1115:powershell-invocation","reason":"This is documentation or a fenced troubleshooting example for Windows users. The skill code does not automatically invoke PowerShell at this location.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:1116:powershell-invocation","reason":"This is documentation or a fenced troubleshooting example for Windows users. The skill code does not automatically invoke PowerShell at this location.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:SKILL.md:63:hidden-file-in-home-directory","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:SKILL.md:89:hidden-file-in-home-directory","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:SKILL.md:133:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:138:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:162:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:170:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:173:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:208:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:327:hidden-file-in-home-directory","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:SKILL.md:336:hidden-file-in-home-directory","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:SKILL.md:820:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1034:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1063:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1100:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1109:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1141:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1142:hidden-file-in-home-directory","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:63:hidden-file-access","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:SKILL.md:89:hidden-file-access","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:SKILL.md:133:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:138:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:162:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:170:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:173:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:208:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:327:hidden-file-access","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:SKILL.md:336:hidden-file-access","reason":"The referenced path is the hidden home-directory location where this skill stores long-term personal memory data. That storage model is intentional but privacy-sensitive.","verdict":"confirmed","severity":"medium","confidence":0.82},{"id":"filesystem:SKILL.md:820:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1034:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1063:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1100:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1109:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1141:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"filesystem:SKILL.md:1142:hidden-file-access","reason":"The match is documentation for install paths, dependency paths, template copies, or standard model cache locations. It does not show unexpected hidden-file access.","verdict":"false_positive","confidence":0.8},{"id":"sensitive:SKILL.md:220:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"sensitive:SKILL.md:791:sqlite-database-file","reason":"The skill stores notes, conversations, and code embeddings in a persistent ChromaDB SQLite-backed vector database. This is security-sensitive because it can contain personal or proprietary content.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"obfuscation:assets/ai-persona-template.md:1:heuristic-high-file-entropy-6-48-bits-possible-b","reason":"Manual review shows this is plain Markdown text with Chinese and English content, not binary, packed, or encrypted data.","verdict":"false_positive","confidence":0.93},{"id":"obfuscation:notes/react_hooks_学习.md:1:heuristic-high-file-entropy-6-33-bits-possible-b","reason":"Manual review shows this is plain Markdown text with Chinese and English content, not binary, packed, or encrypted data.","verdict":"false_positive","confidence":0.93},{"id":"obfuscation:README.md:1:heuristic-high-file-entropy-6-32-bits-possible-b","reason":"Manual review shows this is plain Markdown text with Chinese and English content, not binary, packed, or encrypted data.","verdict":"false_positive","confidence":0.93},{"id":"obfuscation:SKILL.md:1:heuristic-high-file-entropy-6-40-bits-possible-b","reason":"Manual review shows this is plain Markdown text with Chinese and English content, not binary, packed, or encrypted data.","verdict":"false_positive","confidence":0.93}],"semantic_findings":[{"title":"Remote Model Code Execution Enabled","severity":"high","locations":[{"file":"scripts/vector_indexer.py","line_end":95,"line_start":92}],"confidence":0.92,"description":"The vector indexer loads the embedding model with trust_remote_code=True. When a remote model is downloaded, custom model code can execute during model loading.","confidence_reasoning":"The code directly passes trust_remote_code=True to SentenceTransformer for the configured model name. This is a recognized remote-code execution risk for model loading."},{"title":"Default Persistent Conversation Logging","severity":"high","locations":[{"file":"SKILL.md","line_end":31,"line_start":23},{"file":"SKILL.md","line_end":89,"line_start":83},{"file":"README.md","line_end":30,"line_start":26}],"confidence":0.94,"description":"The skill instructs Claude to record each conversation and store all data in the hidden skill data directory unless the user explicitly opts out. This can retain sensitive prompts, replies, notes, and code by default.","confidence_reasoning":"The cited instructions explicitly require recording every conversation and describe automatic conversation history storage. The code path in conversation_logger.py supports that behavior."},{"title":"Opaque Use of Stored Personal Context","severity":"medium","locations":[{"file":"assets/ai-persona-template.md","line_end":37,"line_start":33}],"confidence":0.86,"description":"The AI persona template tells the assistant to introduce user information like its own memories and not mention that it came from records. This weakens transparency around stored personal data use.","confidence_reasoning":"The cited template text directly asks the assistant to avoid saying that recalled user information came from records. This is a clear transparency and consent concern rather than a scanner pattern."}],"subject_marketplace_commit_sha":null,"subject_content_hash":null,"subject_tree_hash":null,"subject_plugin_path":null,"audit_payload_hash":null,"confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":null,"contentHash":null,"treeHash":null,"pluginPath":null,"auditPayloadHash":null},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"confirmed_risk_level does not match the canonical trust resolver"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"high","confirmedFindingCount":17,"capabilityReviewCount":29,"needsReviewCount":0,"falsePositiveCount":1,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}