{ "userName": "windy", "enableBlocklist": true, "blockedCommands": { "unix": [ "rm -rf", "chmod 777", "chmod -R 777" ], "windows": [ "del /s /q", "rd /s /q", "rmdir /s /q", "format", "diskpart", "Remove-Item -Recurse -Force", "Remove-Item -Force -Recurse", "Remove-Item -r -fo", "Remove-Item -fo -r", "Remove-Item -Recurse", "Remove-Item -r", "ri -Recurse", "ri -r", "ri -Force", "ri -fo", "rm -r -fo", "rm -Recurse", "rm -Force", "del -Recurse", "del -Force", "erase -Recurse", "erase -Force", "rd -Recurse", "rmdir -Recurse", "Format-Volume", "Clear-Disk", "Initialize-Disk", "Remove-Partition" ] }, "model": "sonnet", "enableAutoTitleGeneration": true, "titleGenerationModel": "", "thinkingBudget": "medium", "permissionMode": "normal", "lastNonPlanPermissionMode": "normal", "permissions": [ { "toolName": "Bash", "pattern": "mkdir -p \"03_Resources/Articles\" \"03_Resources/Books\" \"03_Resources/Concepts\" \"03_Resources/People\" \"03_Resources/Tools\" \"03_Resources/Quotes\" \"03_Resources/Examples\" \"03_Resources/Learning\"", "approvedAt": 1767579982085, "scope": "always" }, { "toolName": "Bash", "pattern": "mkdir -p \"06_Metadata/Reference\" \"06_Metadata/Templates\" \"06_Metadata/Agents\" \"06_Metadata/Workflows\" \"06_Metadata/Archive\"", "approvedAt": 1767580054324, "scope": "always" }, { "toolName": "Bash", "pattern": "if [ -f .gitignore ]; then echo \"EXISTS\"; else echo \"NOT_FOUND\"; fi", "approvedAt": 1767587601599, "scope": "always" }, { "toolName": "Bash", "pattern": "mkdir -p 03_Resources/Prompt-Library", "approvedAt": 1767592134447, "scope": "always" }, { "toolName": "Write", "pattern": "03_Resources/Prompt-Library/Gemini 图片生成提示词模板.md", "approvedAt": 1767592217296, "scope": "always" }, { "toolName": "Write", "pattern": "03_Resources/Prompt-Library/README.md", "approvedAt": 1767592256349, "scope": "always" }, { "toolName": "Bash", "pattern": "mv \"01_Projects/AI-Development/Prompt-Library/baibot-system-prompts.md\" \"03_Resources/Prompt-Library/\" && mv \"01_Projects/AI-Development/Prompt-Library/cycling-training-prompt.md\" \"03_Resources/Prompt-Library/\" && mv \"01_Projects/AI-Development/Prompt-Library/dev-engineering-rules.md\" \"03_Resources/Prompt-Library/\" && mv \"01_Projects/AI-Development/Prompt-Library/movie-review-prompt.md\" \"03_Resources/Prompt-Library/\"", "approvedAt": 1767592881054, "scope": "always" }, { "toolName": "Bash", "pattern": "rmdir \"01_Projects/AI-Development/Prompt-Library\"", "approvedAt": 1767592895883, "scope": "always" }, { "toolName": "Edit", "pattern": "03_Resources/Prompt-Library/README.md", "approvedAt": 1767592921581, "scope": "always" }, { "toolName": "Write", "pattern": "03_Resources/Prompt-Library/baibot-system-prompts.md", "approvedAt": 1767593197954, "scope": "always" }, { "toolName": "Bash", "pattern": "python3 << 'EOF'\nimport os\nimport re\n\nchinese_pattern = re.compile(r'[\\u4e00-\\u9fff]+')\nchinese_files = []\n\nfor root, dirs, files in os.walk('.'):\n # 跳过隐藏目录\n dirs[:] = [d for d in dirs if not d.startswith('.')]\n \n for file in files:\n if chinese_pattern.search(file):\n full_path = os.path.join(root, file)\n chinese_files.append(full_path)\n\nfor f in sorted(chinese_files):\n print(f)\nEOF", "approvedAt": 1767593330771, "scope": "always" }, { "toolName": "Bash", "pattern": "python << 'EOF'\nimport os\nimport re\n\nchinese_pattern = re.compile(r'[\\u4e00-\\u9fff]+')\nchinese_files = []\n\nfor root, dirs, files in os.walk('.'):\n # 跳过隐藏目录\n dirs[:] = [d for d in dirs if not d.startswith('.')]\n \n for file in files:\n if chinese_pattern.search(file):\n full_path = os.path.join(root, file)\n chinese_files.append(full_path)\n\nprint(f\"Found {len(chinese_files)} files with Chinese characters:\\n\")\nfor f in sorted(chinese_files):\n print(f)\nEOF", "approvedAt": 1767593392020, "scope": "always" }, { "toolName": "Write", "pattern": ".scripts/scan-vault-para.ps1", "approvedAt": 1767593508230, "scope": "always" }, { "toolName": "Write", "pattern": ".scripts/rename-chinese-to-english.ps1", "approvedAt": 1767593891436, "scope": "always" }, { "toolName": "Bash", "pattern": "powershell -ExecutionPolicy Bypass -File \".\\.scripts\\rename-chinese-to-english.ps1\"", "approvedAt": 1767593905094, "scope": "always" }, { "toolName": "Write", "pattern": ".scripts/rename-chinese-to-english.py", "approvedAt": 1767594043665, "scope": "always" }, { "toolName": "Bash", "pattern": "python .scripts/rename-chinese-to-english.py", "approvedAt": 1767594060348, "scope": "always" }, { "toolName": "Edit", "pattern": ".scripts/rename-chinese-to-english.py", "approvedAt": 1767594101469, "scope": "always" }, { "toolName": "Bash", "pattern": "python .scripts/rename-chinese-to-english.py --execute", "approvedAt": 1767594252544, "scope": "always" }, { "toolName": "Bash", "pattern": "python .scripts/rename-chinese-to-english.py --execute 2>&1 | grep -E \"^\\[\" | tail -30", "approvedAt": 1767594293947, "scope": "always" }, { "toolName": "Bash", "pattern": "ls 00_Inbox/*.md 2>&1 | head -5", "approvedAt": 1767604467950, "scope": "always" }, { "toolName": "Bash", "pattern": "ls 03_Resources/*.md 2>&1 | head -5", "approvedAt": 1767604961692, "scope": "always" }, { "toolName": "Write", "pattern": ".claude/project-instructions.md", "approvedAt": 1767605314357, "scope": "always" }, { "toolName": "Edit", "pattern": "2026-01-05.md", "approvedAt": 1767605423829, "scope": "always" }, { "toolName": "WebFetch", "pattern": "{\"url\":\"https://silentvoid13.github.io/Templater\",\"prompt\":\"提取Templater插件的主要功能、安装方法、基本使用方式和核心语法\"}", "approvedAt": 1767605778052, "scope": "always" }, { "toolName": "Write", "pattern": "06_Metadata/Templater使用指南.md", "approvedAt": 1767606555612, "scope": "always" }, { "toolName": "Bash", "pattern": "mkdir -p \"06_Metadata/Templates\"", "approvedAt": 1767606562910, "scope": "always" }, { "toolName": "Write", "pattern": "06_Metadata/Templates/daily-note.md", "approvedAt": 1767606599739, "scope": "always" }, { "toolName": "Write", "pattern": "06_Metadata/Templates/project.md", "approvedAt": 1767606602396, "scope": "always" }, { "toolName": "Write", "pattern": "06_Metadata/Templates/meeting.md", "approvedAt": 1767606604749, "scope": "always" }, { "toolName": "Write", "pattern": "06_Metadata/Templates/quick-note.md", "approvedAt": 1767606606848, "scope": "always" }, { "toolName": "Write", "pattern": "06_Metadata/Templates/book-note.md", "approvedAt": 1767606608965, "scope": "always" }, { "toolName": "Write", "pattern": "06_Metadata/Templates/person.md", "approvedAt": 1767606610745, "scope": "always" }, { "toolName": "Write", "pattern": "06_Metadata/Templater配置指南.md", "approvedAt": 1767606650610, "scope": "always" }, { "toolName": "Write", "pattern": "06_Metadata/Templater快速参考.md", "approvedAt": 1767606680611, "scope": "always" }, { "toolName": "Bash", "pattern": "cd 06_Metadata && mv \"Templater使用指南.md\" \"Templater-User-Guide.md\" && mv \"Templater配置指南.md\" \"Templater-Setup-Guide.md\" && mv \"Templater快速参考.md\" \"Templater-Quick-Reference.md\"", "approvedAt": 1767606719668, "scope": "always" }, { "toolName": "Bash", "pattern": "ls -lh 06_Metadata/*.md", "approvedAt": 1767606724364, "scope": "always" }, { "toolName": "Edit", "pattern": "06_Metadata/Templater-Setup-Guide.md", "approvedAt": 1767606758871, "scope": "always" }, { "toolName": "Edit", "pattern": "06_Metadata/Templater-Quick-Reference.md", "approvedAt": 1767606763446, "scope": "always" }, { "toolName": "Write", "pattern": "06_Metadata/Obsidian-Plugins-Manual.md", "approvedAt": 1767608585967, "scope": "always" }, { "toolName": "Bash", "pattern": "git remote remove origin 2>&1 || echo \"no origin to remove\"", "approvedAt": 1767616810536, "scope": "always" }, { "toolName": "Bash", "pattern": "pnpm install", "approvedAt": 1767616837185, "scope": "always" }, { "toolName": "Bash", "pattern": "mkdir -p 00_Inbox 01_Projects 02_Areas 03_Resources 04_Archive 05_Attachments/Organized 06_Metadata/Reference 06_Metadata/Plans 06_Metadata/Templates && echo \"Folders created successfully\"", "approvedAt": 1767617713953, "scope": "always" }, { "toolName": "Bash", "pattern": "cat > \"01_Projects/README.md\" << 'EOF'\n# Projects\n\n**Purpose:** Time-bound initiatives with clear completion criteria.\n\n## What is a Project?\n\nA project has:\n- A specific goal or deliverable\n- A clear end date or completion criteria\n- Multiple tasks or actions\n\nExamples: Writing a paper, launching a product, planning an event, learning a new skill\n\n## Recommended Structure\n\nFor each project folder, create:\n- `Research/` - Source materials and references\n- `Drafts/` - Work in progress\n- `Output/` - Final deliverables\n- `README.md` - Project objectives, timeline, and status\n\n## Project Lifecycle\n\n1. **Start:** Create folder with subfolders and README\n2. **During:** Keep all related materials in the project folder\n3. **Complete:** Create summary note, then move to `04_Archive/`\n\n## Tips\n\n- Link to relevant Areas and Resources\n- Commit regularly to track progress with git\n- Review weekly to check status and next actions\nEOF\necho \"Created 01_Projects/README.md\"", "approvedAt": 1767618086311, "scope": "always" }, { "toolName": "Bash", "pattern": "cat > \"04_Archive/README.md\" << 'EOF'\n# Archive\n\n**Purpose:** Completed or inactive items from Projects and Areas.\n\n## What Gets Archived\n\n- **Completed projects** - Move entire project folder here\n- **Inactive areas** - Areas you're no longer maintaining\n- **Old resources** - Outdated reference materials (use sparingly)\n\n## Archive Structure\n\nMaintain the same folder structure:\n- `Projects/` - Completed project folders\n- `Areas/` - Inactive areas\n- `Resources/` - Outdated resources (if needed)\n\n## Before Archiving a Project\n\n1. Create a project summary note with:\n - What was accomplished\n - Key learnings\n - Links to important outputs\n2. Update related Area notes\n3. Move the entire project folder here\n\n## Maintenance\n\n- Review quarterly to see what can be deleted\n- Some archived items may be reactivated\n- Keep the archive organized (mirror active structure)\n\n## Tips\n\n- Don't archive too aggressively - keep valuable reference material\n- Use git history to track when things were archived\n- Archived doesn't mean forgotten - you can still search and reference\nEOF\necho \"Created 04_Archive/README.md\"", "approvedAt": 1767618088747, "scope": "always" }, { "toolName": "Bash", "pattern": "cat > \"05_Attachments/README.md\" << 'EOF'\n# Attachments\n\n**Purpose:** Storage for all non-text files (images, PDFs, videos, audio).\n\n## Organization\n\n- **Root (05_Attachments/)** - Unprocessed attachments\n- **Organized/** - Files that have been properly named and referenced\n\n## Naming Convention\n\nUse descriptive names that indicate the related note:\n- `[RelatedNote]_[Description].[ext]`\n- Example: `ProjectAlpha_Architecture_Diagram.png`\n- Example: `BookNotes_Thinking_Fast_Slow_Cover.jpg`\n\n## Helper Scripts\n\n```bash\npnpm attachments:list # List unprocessed files\npnpm attachments:organized # Count organized files\npnpm attachments:orphans # Find unreferenced files\npnpm attachments:update-links # Update links after moving\n```\n\n## Processing Workflow\n\n1. Files initially land in `05_Attachments/`\n2. Rename with descriptive names\n3. Reference in notes using `![[filename.ext]]`\n4. Move to `Organized/` subfolder\n5. Update any links if paths change\n\n## Tips\n\n- Process attachments regularly (don't let them pile up)\n- Use consistent naming patterns\n- Delete duplicates and unused files\n- Consider using Gemini Vision to analyze images\nEOF\necho \"Created 05_Attachments/README.md\"", "approvedAt": 1767618090058, "scope": "always" }, { "toolName": "Bash", "pattern": "cat package.json | grep -A 30 '\"scripts\"'", "approvedAt": 1767618132102, "scope": "always" }, { "toolName": "Bash", "pattern": "mkdir -p .claude && echo '{\"user\":{\"name\":\"\",\"publicProfile\":false},\"organizationMethod\":\"PARA\",\"primaryUses\":[\"research\",\"writing\",\"project-management\",\"daily-notes\"],\"tools\":{\"geminiVision\":false,\"firecrawl\":true},\"weeklyReview\":true,\"importedAt\":\"2026-01-05\",\"lastUpdated\":\"2026-01-05\"}' > .claude/vault-config.json && cat .claude/vault-config.json", "approvedAt": 1767618135787, "scope": "always" }, { "toolName": "Write", "pattern": "D:\\tmp\\vault\\my-vault\\CLAUDE.md", "approvedAt": 1767618385844, "scope": "always" }, { "toolName": "Write", "pattern": "D:\\tmp\\vault\\my-vault\\WEEKLY_REVIEW.md", "approvedAt": 1767618388814, "scope": "always" }, { "toolName": "Bash", "pattern": "test -f \"D:\\tmp\\vault\\my-vault\\.gitignore\" && echo \"exists\" || echo \"not found\"", "approvedAt": 1767618406650, "scope": "always" }, { "toolName": "Edit", "pattern": "D:\\tmp\\vault\\my-vault\\.gitignore", "approvedAt": 1767618439421, "scope": "always" }, { "toolName": "Bash", "pattern": "pnpm vault:stats", "approvedAt": 1767618580628, "scope": "always" }, { "toolName": "Bash", "pattern": "git add CLAUDE.md WEEKLY_REVIEW.md .gitignore .claude/vault-config.json 01_Projects/README.md 02_Areas/README.md 03_Resources/README.md 04_Archive/README.md 05_Attachments/README.md pnpm-lock.yaml", "approvedAt": 1767618604305, "scope": "always" }, { "toolName": "Bash", "pattern": "git commit -m \"$(cat <<'EOF'\nInitial vault setup with PARA structure\n\n- Created CLAUDE.md configuration file\n- Created WEEKLY_REVIEW.md template\n- Set up PARA folder structure (Projects, Areas, Resources, Archive)\n- Created README files for each main folder\n- Configured .gitignore for vault files\n- Saved vault configuration to .claude/vault-config.json\n\nGenerated with Claude Code\nCo-Authored-By: Claude Sonnet 4.5 \nEOF\n)\"", "approvedAt": 1767618611184, "scope": "always" }, { "toolName": "Write", "pattern": ".claude/commands/git-commit-msg.md", "approvedAt": 1767619909039, "scope": "always" }, { "toolName": "Edit", "pattern": ".claude/commands/README.md", "approvedAt": 1767619920589, "scope": "always" }, { "toolName": "Write", "pattern": ".git-commit-msg-temp.txt", "approvedAt": 1767620317298, "scope": "always" } ], "excludedTags": [], "mediaFolder": "", "environmentVariables": "", "envSnippets": [], "systemPrompt": "", "allowedExportPaths": [ "~/Desktop", "~/Downloads" ], "allowedContextPaths": [], "keyboardNavigation": { "scrollUpKey": "w", "scrollDownKey": "s", "focusInputKey": "i" }, "claudeCliPath": "", "hooks": { "SessionStart": [ { "hooks": [ { "type": "command", "command": "[ -f FIRST_RUN ] && echo '{\"hookSpecificOutput\":{\"hookEventName\":\"SessionStart\",\"additionalContext\":\"\\n\\n# 🚀 Welcome to Claudesidian!\\n\\n**This appears to be your first time using this vault.**\\n\\n## Quick Start\\n\\nRun the setup wizard:\\n\\n⬇\\n/init-bootstrap\\n⬆\\n\\n## What this will do:\\n\\n✅ Set up your personalized configuration\\n✅ Disconnect from the original repository\\n✅ Help you import any existing Obsidian vault\\n✅ Configure your preferred workflow\\n✅ Create your PARA folder structure\\n\\nThe setup wizard will guide you through everything!\\n\\n\"}}' || true" }, { "type": "command", "command": "npm run check-updates --silent 2>/dev/null || true" } ] } ] } }