跳到主要内容
知仓学习社ZHICANG

diary

Unified Diary System: A context-preserving automated logger for multi-project development.

读凭据执行命令写文件联网严重 4 · 高危 15sickn33/agentic-awesome-skills

它会碰到什么

扫了多少11 个文本文件,55 KB
它会碰到什么读凭据执行命令写文件联网
命中总数23 处
命中统计严重 4 · 高 15 · 中 3 · 低 1
逐条看命中(19 条严重或高危)
  • 严重 README.md:71cred-paths
    After setting up `.env` with your Notion tokens, simply input the following into your CLI/IDE chat while working inside a project:
  • 严重 README.md:83cred-paths
    1. **Configuration**: Rename `.env.example` to `.env` and fill in your `NOTION_TOKEN`, `NOTION_DIARY_DB`, and set where your global diary root is stored.
  • 严重 README.md:83cred-paths
    1. **Configuration**: Rename `.env.example` to `.env` and fill in your `NOTION_TOKEN`, `NOTION_DIARY_DB`, and set where your global diary root is stored.
  • 严重 scripts/prepare_context.py:204cred-paths
    config_files = ["package.json", "pyproject.toml", "requirements.txt", ".env.example", "clasp.json"]
  • scripts/fetch_diaries.py:33cred-envread
    GLOBAL_DIARY_ROOT = Path(os.environ.get("GLOBAL_DIARY_ROOT", str(Path(__file__).resolve().parent.parent / "diary")))
  • scripts/master_diary_sync.py:23cred-envread
    DESKTOP = Path(os.environ.get("DESKTOP_PATH", str(Path(os.environ.get("USERPROFILE", "")) / "OneDrive" / "Desktop")))
  • scripts/master_diary_sync.py:23cred-envread
    DESKTOP = Path(os.environ.get("DESKTOP_PATH", str(Path(os.environ.get("USERPROFILE", "")) / "OneDrive" / "Desktop")))
  • scripts/master_diary_sync.py:24cred-envread
    DESKTOP_FALLBACK = Path(os.environ.get("USERPROFILE", "")) / "Desktop"
  • scripts/master_diary_sync.py:25cred-envread
    GLOBAL_DIARY_ROOT = Path(os.environ.get("GLOBAL_DIARY_ROOT", str(Path(__file__).resolve().parent.parent / "diary")))
  • scripts/master_diary_sync.py:26cred-envread
    OBSIDIAN_DAILY_NOTES = Path(os.environ.get("OBSIDIAN_DAILY_NOTES", ""))
  • scripts/master_diary_sync.py:168cred-envread
    if "NOTION_TOKEN" not in env or not env["NOTION_TOKEN"]:
  • scripts/master_diary_sync.py:171cred-envread
    if "NOTION_DIARY_DB" not in env or not env["NOTION_DIARY_DB"]:
  • scripts/master_diary_sync.py:176exec-spawn
    result = subprocess.run(
  • scripts/master_diary_sync.py:215exec-spawn
    subprocess.run(["qmd", "embed"], cwd=project_root, check=True, text=True)
  • scripts/sync_to_notion.py:38cred-envread
    NOTION_TOKEN = os.environ.get("NOTION_TOKEN", "")
  • scripts/sync_to_notion.py:39cred-envread
    NOTION_DIARY_DB = os.environ.get("NOTION_DIARY_DB", "")
  • scripts/sync_to_notion.py:412cred-envread
    print(f'   $env:NOTION_DIARY_DB = "{db_id}"')
  • scripts/sync_to_notion.py:424cred-envread
    print('   $env:NOTION_TOKEN = "ntn_xxx"')
  • scripts/sync_to_notion.py:435cred-envread
    print('   $env:NOTION_DIARY_DB = "abc123..."')

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

📔 Unified Diary System

When to Use This Skill

Use this skill when you want to summarize progress, write a daily dev log, or perform a daily review while keeping project contexts isolated and synced to Notion/Obsidian.

> 🚨 Agent One-Shot Integrity Constraint (Highest Priority): Steps 1-4 are an indivisible atomic workflow. The AI MUST use Continuous Tool Calling to complete all actions in one breath.

> - ABSOLUTELY FORBIDDEN to output conversational text and wait for the user after completing Step 1, 2, or 3.

> - Example: Immediately after saving the file in Step 1, you must automatically and instantly call the terminal tool to execute the script in Step 2. Stopping to chat or asking "Should I continue?" is considered a critical error. Only inform the user explicitly if you are stuck due to a technical error.

> ⚠️ Ironclad Rule 1: The local project diary in Step 1 must NEVER be polluted with global data. It only records the current project.

> ⚠️ Ironclad Rule 2: When using tools like run_command to execute predefined python scripts (Step 2, Step 4), you must set them to SafeToAutoRun: true to avoid getting stuck waiting for user authorization.

> ⚠️ Ironclad Rule 3: Never guess the project name. The AI must confirm the current directory name as the project identifier using a terminal command BEFORE taking any action in Step 1.


Step 1: Local Project Archiving (AI Generation)

  • Action 0 (Identify): Call the terminal pwd (Linux/Mac) or (Get-Item .).Name (Windows) to confirm the current folder name.
  • Action 1 (Write): Summarize the achievements from the current conversation (Git Commits, file changes, task progress), and write them into the current project folder at diary/YYYY/MM/YYYY-MM-DD-ProjectName.md.
  • Isolation and Naming Rules (Ironclad Rules):
  • 📄 Mandatory Filename Suffix: The local diary MUST include the project name detected just now. It is absolutely forbidden to use a global-level filename (like 2026-02-23.md) locally.
  • Pure Content: Only record content exclusive to the current project. Do not mix in other projects.
  • 📝 Append Mode: If the project diary already exists, update it using "append", never overwrite the original content.
  • 📁 Auto-Creation: Create subfolders diary/YYYY/MM/ based on the year and month.
  • Force Continue: Once writing is complete, do not interrupt the conversation; immediately call the terminal tool and proceed to Step 2.

Step 1.5: Refresh Project Context (Automation Script)

  • Prerequisite: You have confirmed the current project directory path (from Action 0's pwd result).
  • Action: Call the terminal to execute the following command to automatically scan the project state and generate/update AGENT_CONTEXT.md:
  python {diary_system_path}/scripts/prepare_context.py "<Project_Root_Path>"
  • SafeToAutoRun: true (Safe operation; purely reading and writing local files).
  • Result: AGENT_CONTEXT.md in the project directory is refreshed to the latest state.
  • After Completion: Force continue to Step 2; do not wait for user confirmation.

Step 2: Extract Global & Project Material (Script Execution)

  • Action: Call the extraction script, passing in the absolute path of the project diary just written in Step 1. The script will precisely print "Today's Global Progress" and "Current Project Progress".
  • Execution Command:
  python {diary_system_path}/scripts/fetch_diaries.py "<Absolute_Path_to_Step1_Project_Diary>"
  • Result: The terminal will print two sets of material side-by-side. The AI must read the terminal output directly and prepare for mental fusion.

Step 3: AI Smart Fusion & Global Archiving (AI Execution) 🧠

  • Action: Based on the two materials printed by the terminal in Step 2, complete a seamless fusion mentally, then write it to the global diary: {diary_system_path}/diary/YYYY/MM/YYYY-MM-DD.md.
  • Context Firewall (Core Mechanism):
  1. No Tag Drift: When reading "Global Progress Material", there may be progress from other projects. It is strictly forbidden to categorize today's conversation achievements under existing project headings belonging to other projects.
  2. Priority Definition: The content marked as 📁 [Current Project Latest Progress] in Step 2 is the protagonist of today's diary.
  • Rewrite Rules:
  1. Safety First: If the global diary "already exists," preserve the original content and append/fuse the new project progress. Do not overwrite.
  2. Precise Zoning: Ensure there is a dedicated ### 📁 ProjectName zone for this project. Do not mix content into other project zones.
  3. Lessons Learned: Merge and deduplicate; attach action items to every entry.
  4. Cleanup: After writing or fusing globally, you must force-delete any temporary files created to avoid encoding issues (e.g., temp_diary.txt, fetched_diary.txt) to keep the workspace clean.

Step 4: Cloud Sync & Experience Extraction (Script + Human) 🛑

  • Action 1 (Sync): Call the master script to push the global diary to Notion and Obsidian.
  • Execution Command:
  python {diary_system_path}/scripts/master_diary_sync.py --sync-only
  • Action 2 (Extraction & Forced Pause):
  1. The AI extracts "Improvements & Learning" from the global diary.
  2. Confirm if it contains entirely new key points lacking in the past (📌 New Rules), or better approaches (🔄 Evolved Rules).
  3. List the results and WAIT FOR USER CONFIRMATION (user says "execute" or "agree").
  4. After user confirmation, update the .md file in {Knowledge_Base_Path}/ and execute qmd embed (if applicable).

🎯 Task Acceptance Criteria:

  1. ✅ Project local diary generated (no pollution).
  2. fetch_diaries.py called with absolute path and successfully printed materials.
  3. ✅ AI executed high-quality rewrite and precisely wrote to global diary (appended successfully if file existed).
  4. --sync-only successfully pushed to Notion + Obsidian.
  5. ✅ Experience extraction presented to the user and authorized.

📝 Templates and Writing Guidelines

Strictly apply the following Markdown templates to ensure clarity during Step 1 (Local) and Step 3 (Global Fusion).

💡 Writing Guidelines (For AI)

  1. Dynamic Replacement: The {Project Name} in the template MUST strictly use the folder name grabbed by pwd in Step 1.
  2. Concise Deduplication: When writing the global diary in Step 3, the AI must condense the "🛠️ Execution Details" from the local diary. The global diary focuses only on "General Direction and Output Results."
  3. Mandatory Checkboxes: All "Next Steps" and "Action Items" must use the Markdown * [ ] format so they can be checked off in Obsidian/Notion later.

📝 Template 1: Project Local Diary (Step 1 Exclusive)

# Project DevLog: {Project Name}
* **📅 Date**: YYYY-MM-DD
* **🏷️ Tags**: `#Project` `#DevLog`

---

> 🎯 **Progress Summary**
> (Briefly state the core task completed, e.g., "Finished Google Colab environment testing for auto-video-editor")

### 🛠️ Execution Details & Changes
* **Git Commits**: (List if any)
* **Core File Modifications**:
  * 📄 `path/filename`: Explanation of changes.
* **Technical Implementation**:
  * (Record key logic or architecture structural changes)

### 🚨 Troubleshooting
> 🐛 **Problem Encountered**: (e.g., API error, package conflict)
> 💡 **Solution**: (Final fix, leave key commands)

### ⏭️ Next Steps
- [ ] (Specific task 1)
- [ ] (Specific task 2)

🌍 Template 2: Global Diary (Step 3 Exclusive)

# 📔 YYYY-MM-DD Global Progress Overview

> 🌟 **Daily Highlight**
> (1-2 sentences summarizing all project progress for the day, synthesized by AI)

---

## 📁 Project Tracking
(⚠️ AI Rule: If file exists, find the corresponding project title and append; NEVER overwrite, keep it clean.)

### 🔵 {Project A, e.g., auto-video-editor}
* **Today's Progress**: (Condense Step 2 local materials into key points)
* **Action Items**: (Extract next steps)

### 🟢 {Project B, e.g., GSS}
* **Today's Progress**: (Condense key points)
* **Action Items**: (Extract next steps)

---

## 🧠 Improvements & Learnings
(⚠️ Dedicated to Experience Extraction)

📌 **New Rules / Discoveries**
(e.g., Found hidden API limit, or a more efficient python syntax)

🔄 **Optimizations & Reflections**
(Improvements from past methods)

---

## ✅ Global Action Items
- [ ] (Tasks unrelated to specific projects)
- [ ] (System environment maintenance, etc.)

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。