用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/bj112233/governor-edr --skill release-hygiene命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Update docs/ARCHITECTURE.md (and conceptual_repo/ARCHITECTURE.md if it references the same facts) after a significant commit, then commit atomically as docs(arch)
Create a git commit following the project's conventional-commit format, then auto-trigger the arch-update skill for the separate atomic docs(arch) commit when the change is significant. Enforces AGENTS.md §4 (atomic docs commit, never bundled into code).
Capture a new lesson in tasks/lessons.md after a user correction or a mistake discovered, following the established entry format
基于 SOC 职业分类
正在显示 SKILL.md
| name | release-hygiene |
| description | צ'קליסט לפני קומיט קונפיג, יצירת ZIP, פרסום, או שיתוף קבצים עם גורם חיצוני |
| allowed-tools | ["read","grep","glob","exec"] |
| triggers | ["user","model"] |
מתי להריץ: לפני כל קומיט של קונפיג, יצירת ZIP, פרסום ל-remote, או שיתוף קבצים עם גורם חיצוני. כלל: FAIL אחד = עצירה מיידית ודיווח למשתמש. אל תמשיך, אל תעקוף.
קבצים שאסור להעלות לשרת/ענן/remote או לשתף עם גורם חיצוני. מחיקה — רק באישור מפורש.
| קובץ | מיקום | סיבה |
|---|---|---|
tactical_bot_git_backup_20260723_140422.zip | מחוץ לעץ (ספריית האב) | מלוא ההיסטוריה הישנה (1049 קומיטים) עם PII: MACs, chat_id, שמות, נתיבים. גיבוי מקומי בלבד. |
.env | שורש הפרויקט | מפתחות API אמיתיים (VirusTotal, AbuseIPDB, Telegram bot token). |
config/trusted_devices.json | config/ | כתובות MAC אמיתיות של הרשת הביתית. |
config/news_feeds.json | config/ | chat_id אמיתי ב-delivery.telegram. |
config/channels.json | config/ | chat_id אמיתי ב-allow_from. |
config/persona/USER.md | config/persona/ | שם אישי, telegram handle, chat_id. |
data/ (כל הקבצים) | data/ | DBs עם היסטוריית שיחות, IoCs, memory. |
logs/ (כל הקבצים) | logs/ | לוגים עם chat_id, נתיבים, פעילות. |
memory/ (כל הקבצים) | memory/ | זיכרונות אישיים של המשתמש. |
state/ (כל הקבצים) | state/ | מצב runtime עם נתונים אישיים. |
downloads/ (כל הקבצים) | downloads/ | קבצים אישיים (חוזים, מסמכים). |
הרחבה: אם נוצר גיבוי/ZIP/archive חדש שמכיל דאטה רגיש — הוסף אותו לטבלה כאן לפני שמשתפים דבר.
gitleaks detect --no-git --source . --config .gitleaks.toml
no leaks found (exit code 0)הרץ את החיפושים הבאים על קבצים שייכנסו לשיתוף/קומיט (לא על קבצים מוחרגים). הדפוסים גזורים מטבלת הממצאים המלאה של דוח שלב 1 (סעיף ב') — לא רשימה גנרית.
מקור ה-PII: הערכים האמיתיים נמצאים בקבצי הקונפיג המוחרזים (
config/trusted_devices.json,config/channels.json,config/news_feeds.json,config/persona/USER.md). קרא אותם ב-runtime כדי לבנות את הדפוסים המדויקים. אל תכתוב את הערכים האמיתיים בקובץ הזה.
grep -rnE '[Cc]:[/\\][Uu]sers[/\\][a-zA-Z]' --include='*.py' --include='*.md' --include='*.json' --include='*.yml' --include='*.yaml' .
סווג כל התאמה:
config/persona/USER.md או מה-OS)C:\Users\user) — לא false positive!C:\Users\attacker בטסט תוקף)grep -rnE 'חוזה_אלירן|אלירן_ובת|\.kcpps' --include='*.py' --include='*.md' .
sample_contract.pdf, kobold.kcpps)grep -rnE '<hostname>-PC|<hostname>-PC-Bot' --include='*.py' --include='*.md' --include='*.json' .
(החלף <hostname> בשם המחשב האמיתי מ-config/persona/USER.md או מה-OS)
tactical_bot)grep -rnE 'chat_id.{0,6}[0-9]{7,}' --include='*.py' --include='*.md' --include='*.json' .
בנוסף, קרא את ה-chat_id האמיתי מ-config/channels.json (שדה allow_from) ומ-config/news_feeds.json (שדה delivery.telegram.chat_id), וחפש אותו ישירות:
grep -rnE '<real_chat_id>' --include='*.py' --include='*.md' --include='*.json' .
(החלף <real_chat_id> בערך מהקונפיג — אל תכתוב אותו כאן)
${TELEGRAM_CHAT_ID})${TELEGRAM_CHAT_ID} (פיקטיבי)קרא את רשימת ה-MAC מ-config/trusted_devices.json (שדה mac בכל רשומה), וחפש כל אחד:
grep -rnE '<mac1>|<mac2>|...' --include='*.py' --include='*.md' --include='*.json' .
(החלף את ה-MACs בערכים מהקונפיג — אל תכתוב אותם כאן)
.example.json עם 00-00-00-00-00-0100-00-00-00-00-01 בקובץ example (פיקטיבי)קרא את השם האישי וה-handle מ-config/persona/USER.md, וחפש:
grep -rnE '<real_name>|<real_handle>' --include='*.py' --include='*.md' --include='*.json' .
(החלף בערכים מהקונפיג — אל תכתוב אותם כאן)
כלל סיווג קריטי: ממצא שתוקן לעולם לא מסווג FALSE-POSITIVE. REMEDIATED = היה ממצא אמיתי וטופל. FALSE-POSITIVE = מעולם לא היה ממצא. ערבוב הקטגוריות ילמד את הסקיל לסנן ממצאים אמיתיים דומים בעתיד.
git status --short
בדוק שלא מופיעים בפלט:
logs/
state/
data/
memory/
downloads/
config/trusted_devices.json
config/news_feeds.json
config/channels.json
config/persona/USER.md
.env
.devin/config.local.json
PASS: אף אחד מהם לא מופיע
FAIL: אחד מהם מופיע — הוא ייכנס לקומיט/שיתוף. עצור.
לכל קובץ .example, השווה מול המקבילה האמיתית (אם קיימת על הדיסק):
| Example | Real | בדיקה |
|---|---|---|
config/trusted_devices.example.json | config/trusted_devices.json | אסור MAC/IP אמיתי. מותר רק 00-00-00-00-00-01 + 10.0.0.100 |
config/news_feeds.example.json | config/news_feeds.json | אסור chat_id אמיתי. מותר רק ${TELEGRAM_CHAT_ID} |
config/channels.example.json | config/channels.json | אסור chat_id/bot_token אמיתי. מותר רק env vars |
config/persona/USER.example.md | config/persona/USER.md | אסור שם/handle/chat_id אמיתי. מותר רק placeholders |
הפק את הטבלה הבאה בסיום:
| סעיף | תיאור | תוצאה | הערות |
|------|--------|-------|-------|
| 1 | gitleaks | PASS/FAIL | ... |
| 2a | נתיבי משתמש | PASS/FAIL | N FOUND, N REMEDIATED, N FP |
| 2b | שמות קבצים אישיים | PASS/FAIL | ... |
| 2c | hostnames | PASS/FAIL | ... |
| 2d | handles + chat_id | PASS/FAIL | ... |
| 2e | MAC אמיתיים | PASS/FAIL | ... |
| 2f | שם/כינויים | PASS/FAIL | ... |
| 3 | git status נקי | PASS/FAIL | ... |
| 4 | .example נקיים | PASS/FAIL | ... |
| 5 | רשימת "לעולם לא" מעודכנת | PASS/FAIL | ... |
FAIL אחד = עצירה. דווח למשתמש, אל תמשיך לפעולה החיצונית.