OpenClaw/clawhub-security-signals huggingface dataset:
Skill: freakyflow/oura-ring (version 1.0.3)

--- name: oura-ring description: Syncs daily health and fitness data from Oura Ring into markdown files. Provides sleep, readiness, activity, heart rate, stress, SpO2, and workout data. disable-model-invocation: true metadata: openclaw: primaryEnv: OURA_TOKEN requires: bins: ["uv"] env: ["OURA_TOKEN"] config: - id: oura_token label: Oura Personal Access Token type: secret env: OURA_TOKEN --- # Oura Ring This skill syncs your daily health data from Oura Ring into readable markdown files. ## Syncing Data Sync today's data: ```bash uv run {baseDir}/scripts/sync_oura.py ``` Sync a specific date: ```bash uv run {baseDir}/scripts/sync_oura.py --date 2026-02-07 ``` Sync the last N days: ```bash uv run {baseDir}/scripts/sync_oura.py --days 7 ``` ## Reading Health Data Health files are stored at `{baseDir}/health/YYYY-MM-DD.md` — one file per day. To answer health or fitness questions, read the relevant date's file from the `{baseDir}/health/` directory. If the file doesn't exist for the requested date, run the sync command for that date first. ## Cron Setup Schedule the sync script to run every morning using OpenClaw's `cron` tool so your health data stays up to date automatically.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: suspicious | SkillSpector: suspicious (MEDIUM)
Skill: lionseasky/claw-fighting (version 1.0.1)

# Claw-Fighting Skill for OpenClaw 🤖 **全球首个AI Agent竞技养成平台** ## 🎯 技能概述 Claw-Fighting 是一个革命性的去中心化平台，让AI代理在策略游戏中进行对战。用户训练本地AI代理（人格），通过安全的云端协调层进行竞争，实现完全的隐私和透明度。 ### 🌟 核心特性 - **🎮 策略AI对战**: 大话骰等多种游戏 - **🔒 完全隐私**: AI策略保持在您的设备上 - **👁️ 透明AI**: 实时观看对战中的思维链 - **🌐 去中心化**: 无中心化AI，只有协调和仲裁 - **🛡️ 反作弊**: 所有动作的密码学验证 - **🎯 人格系统**: 创建和定制AI战斗风格 ## 🚀 快速开始 ### 安装 ```bash # 安装 OpenClaw（如果未安装） pip install openclaw # 安装 Claw-Fighting 技能 openclaw skill install claw-fighting ``` ### 首次启动 ```bash # 启动 Claw-Fighting（进入引导模式） openclaw claw-fighting start ``` 首次启动会自动开始**人格构建器** - 一个交互式指南，帮助您在几分钟内创建第一个AI战士！ ## 🎯 工作原理 ### 1. 创建您的AI战士 引导人格构建器会询问5个问题来确定您AI的战斗风格： - 🧮 **数学家** - 精确计算，低风险策略 - 🎲 **赌徒** - 高风险，专业虚张声势 - 👁️ **观察者** - 仔细分析，反击 - 🧠 **心理学家** - 心理战，心理游戏 - ⚡ **狂战士** - 积极施压，持续进攻 ### 2. 微调您的人格 调整AI的特性： - 🎛️ 风险承受能力（0-100） - 🎭 虚张声势复杂度等级 - 💬 语言风格和口头禅 - 📈 耐心曲线设置 ### 3. 沙盒测试 与AI陪练伙伴对战，提供实时反馈以优化您的人格。 ### 4. 进入竞技场 - 🔍 自动匹配 - 🎲 策略大话骰对战 - 👁️ 实时观战与AI思维链 - 🏆 排名和进度系统 ## 🔧 高级用法 ### 多个人格 ```bash # 列出所有AI战士 openclaw claw-fighting persona list # 创建新的人格 openclaw claw-fighting persona create # 在不同人格间切换 openclaw claw-fighting persona switch my_gambler ``` ### 专家模式 ```bash # 直接YAML编辑（高级用户） openclaw claw-fighting persona edit my_persona --expert # 克隆和修改现有人格 openclaw claw-fighting persona clone original_name new_name ``` ### 社区功能 ```bash # 分享成功的人格 openclaw claw-fighting persona share my_champion # 浏览人格市场 openclaw claw-fighting marketplace browse # 下载社区人格 openclaw claw-fighting marketplace install top_mathematician ``` ## 🎲 游戏规则：大话骰 ### 设置 - 每位玩家开始时有5个骰子 - 平台生成加密随机种子 - 双方玩家承诺他们的骰子值（防作弊） ### 游戏玩法 - 玩家轮流叫更高的注（数量 + 面值） - 选项：**加注**、**质疑**或**声称准确** - 所有AI决策都在本地计算并加密签名 ### 获胜条件 - **质疑成功**：对手虚张声势 → 质疑者获胜 - **质疑失败**：下注有效 → 下注者获胜 - **准确成功**：完美计数 → 声称者获胜 - **准确失败**：计数错误 → 对手获胜 ## 🔐 安全与隐私 ### 保护机制 - **🎲 确定性随机**: 公平、可验证的骰子生成 - **🔒 哈希承诺**: 防止骰子操纵 - **✍️ ECDSA签名**: 所有动作加密签名 - **👁️ 透明AI**: 完整思维链可见性 - **🏠 本地计算**: 策略永不离开您的设备 ### 反作弊措施 - 行为模式分析 - 思维链验证 - 声誉评分系统 - 争议解决机制 ## 🌐 架构 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 您的AI │ │ 协调器 │ │ 对手AI │ │ (本地) │◄──►│ (云端) │◄──►│ (他们的本地) │ │ + 人格 │ │ - 匹配 │ │ + 人格 │ │ + 记忆 │ │ - 仲裁 │ │ + 记忆 │ └─────────────────┘ │ - 验证 │ └─────────────────┘ └─────────────────┘ ▲ │ ┌─────────────────┐ │ 观众 │ │ (Web UI) │ └─────────────────┘ ``` ## 📈 路线图 ### 第一阶段 ✅ (当前) - ✅ 大话骰核心平台 - ✅ 安全WebSocket协调 - ✅ 人格创建系统 - ✅ 实时观战 ### 第二阶段 🔄 (下一个) - 🔄 增强人格构建器 - 🔄 高级调优算法 - 🔄 社区市场 - 🔄 锦标赛系统 ### 第三阶段 ⏳ (未来) - ⏳ 更多游戏（扑克、象棋等） - ⏳ 团队对战和氏族 - ⏳ 移动应用 - ⏳ VR观战模式 ## 🤝 支持 - 📖 [完整文档](https://docs.claw-fighting.com) - 💬 [社区Discord](https://discord.gg/claw-fighting) - 🐛 [问题跟踪器](https://github.com/claw-fighting/claw-fighting-skill/issues) - 📧 [邮件支持](mailto:[REDACTED_SECRET]) --- **准备进入竞技场？** ```bash pip install openclaw openclaw skill install claw-fighting openclaw claw-fighting start ``` 让战斗开始！ 🎮⚔️


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: aaiccee/u2-doc-parser (version 1.0.5)

Name: u2-doc-parser Description: Parse documents using UniDoc API for conversion to Markdown or JSON format. Supports both synchronous and asynchronous parsing with automatic status polling. UniDoc Document Parser ====================== Overview -------- Parse documents using UniDoc API for conversion to Markdown or JSON format. Supports both synchronous and asynchronous parsing with automatic status polling. Ideal for converting various document formats (PDF, DOC, DOCX, images) through a cloud-based API service. **⚠️ Important Privacy Notice** - This skill uploads your documents to an external API service: `https://unidoc.uat.hivoice.cn` - Documents are transmitted over the internet and processed on third-party servers - No authentication or API key is required for this UAT environment - **Do not use** with sensitive, confidential, or private documents - By using this skill, you acknowledge that your files will be uploaded to external servers Prereqs / when to read references --------------------------------- If you encounter API errors, network issues, or need to understand the API endpoints, read: * `references/unidoc-notes.md` Quick start (single document) ----------------------------- ```bash # Output to terminal (default) python scripts/unidoc_parse.py /path/to/file.pdf # Save to file python scripts/unidoc_parse.py /path/to/file.pdf --output result.md # Convert to JSON format (async mode) python scripts/unidoc_parse.py /path/to/file.docx --format json --mode async ``` Options ------- * `--format md|json` (default: `md`) - Output format: Markdown or JSON * `--mode sync|async` (default: `sync`) - Synchronous mode: waits for conversion to complete - Asynchronous mode: polls status until completion * `--func METHOD` (default: `unisound`) - Conversion method/algorithm to use * `--output FILE` (optional) - Save output to file instead of printing to terminal - When not specified, results are printed directly to stdout * `--uid UUID` (optional) - Custom user ID (auto-generated if not provided) Output ------ * **Default**: Prints converted content directly to terminal (stdout) * **With --output**: Saves to specified file path * Progress and error messages are sent to stderr * Can be piped to other commands: `python scripts/unidoc_parse.py doc.pdf | grep "keyword"` Notes ----- * **Privacy**: Your documents are uploaded to UniDoc's UAT servers for processing * **No authentication**: Current implementation does not require API keys or credentials * **Network**: Requires internet connectivity to https://unidoc.uat.hivoice.cn * **Supported formats**: PDF, DOC, DOCX, PNG, JPG, etc. * **Async mode**: Polls every 1 second until completion (max 5 minutes) * **Limits**: Max file size and rate limits depend on API service configuration * **Recommendation**: For large files or batch processing, prefer async mode * **Security**: Only use with non-sensitive test documents


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: ivangdavila/landing-page (version 1.0.0)

--- name: "Landing Page" description: "Build high-converting landing pages with proven structure, persuasive copy, and conversion optimization." --- ## Triggers Activate on: "create landing page", "write landing copy", "improve conversion", "page not converting", "hero section help". ## Core Structure Every landing page follows the same spine: | Section | Purpose | Height | |---------|---------|--------| | Hero | Hook + CTA | 100vh | | Problem | Agitate pain | Short | | Solution | Your answer | Medium | | Benefits | What they get | Medium | | Social proof | Trust signals | Variable | | CTA | Convert | Compact | See `sections.md` for detailed requirements per section. ## Hero Formula ``` [Headline: Outcome they want] [Subhead: How you deliver it] [CTA button] [Secondary action] [Visual: Product/result] ``` **Headline test:** Would they screenshot and send to a friend? ## Copy Rules - **You > We.** Talk about them, not yourself. - **Specific > Vague.** "Save 4 hours/week" beats "Save time" - **One CTA.** Everything else is distraction. - **Objection handling.** Answer "why not?" before they ask. See `copy.md` for formulas and examples by page type. ## Conversion Checklist Before launch: - [ ] CTA visible without scrolling - [ ] Load time <3s - [ ] Mobile-first (60%+ traffic) - [ ] Single goal, single action - [ ] Social proof near CTA - [ ] Friction removed (minimal form fields) See `optimization.md` for A/B testing and analytics setup. ## Red Flags Stop and fix: - Multiple competing CTAs → Pick one - Features without benefits → Translate to outcomes - No social proof → Add testimonials, logos, numbers - Wall of text → Break into scannable sections - Generic stock photos → Use product/real images ## By Page Type Different goals need different emphasis: | Type | Lead with | CTA | |------|-----------|-----| | SaaS | Demo/trial | Start free | | eCommerce | Product + offer | Buy now | | Lead gen | Value prop + form | Get [resource] | | Event | Date + speakers | Register | See `templates.md` for page-type specific structures.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: alsoforever/excel-finance (version 1.0.0)

--- name: excel-finance description: Excel 财务模型技能 - Excel 财务模型模板、自动化报表生成 author: 滚滚家族 🌪️ version: "1.0.0" homepage: https://aigogoai.com triggers: - "Excel 财务" - "财务模型" - "Excel 模板" - "报表生成" - "财务表格" metadata: clawdbot: emoji: "📊" requires: bins: - python3 - pip config: env: {} --- # 📊 Excel 财务模型技能 **Excel 财务模型模板与自动化工具** **作者：** 滚滚家族 🌪️ **版本：** 1.0.0 **主页：** https://aigogoai.com --- ## 🎯 技能描述 **一个帮助财务人快速创建 Excel 财务模型的工具。** **核心功能：** - 📊 Excel 财务模型模板 - 📈 自动化报表生成 - 💰 财务预测模型 - 📉 敏感性分析 - 🎯 图表自动生成 --- ## 🛠️ 使用方法 ### 1. 创建财务模型 ```python from excel_finance import create_financial_model # 创建三表模型 model = create_financial_model( company_name="XX 公司", forecast_years=5, output_file="financial_model.xlsx" ) # 输出：Excel 文件路径 ``` ### 2. 生成财务报表 ```python from excel_finance import generate_reports # 生成财务报表 reports = generate_reports( stock_code="600519.SH", report_types=["balance_sheet", "income_statement", "cash_flow"], output_file="reports.xlsx" ) ``` ### 3. 敏感性分析 ```python from excel_finance import sensitivity_analysis # 敏感性分析 result = sensitivity_analysis( base_case={"revenue_growth": 0.15, "margin": 0.5}, scenarios={ "bull": {"revenue_growth": 0.20, "margin": 0.55}, "bear": {"revenue_growth": 0.10, "margin": 0.45} }, output_file="sensitivity.xlsx" ) ``` --- ## 📋 模板列表 ### 财务模型模板 | 模板 | 描述 | 适用场景 | |------|------|----------| | **三表模型** | 资产负债表 + 利润表 + 现金流量表 | 全面财务分析 | | **DCF 估值** | 现金流折现模型 | 股票估值 | | **预算模型** | 年度预算编制 | 企业预算管理 | | **盈利预测** | 未来 3-5 年盈利预测 | 投资研究 | ### 分析报表模板 | 模板 | 描述 | 适用场景 | |------|------|----------| | **财务比率分析** | 盈利能力/偿债能力/营运能力 | 财务健康诊断 | | **趋势分析** | 3-5 年财务数据趋势 | 成长性分析 | | **同业对比** | 同行业多公司对比 | 竞争地位分析 | | **杜邦分析** | ROE 分解分析 | 盈利能力深度分析 | --- ## 📚 参考文档 - [Excel 财务模型教程](https://aigogoai.com/knowledge/excel-models) - [财务预测方法](https://aigogoai.com/knowledge/financial-forecasting) - [敏感性分析指南](https://aigogoai.com/knowledge/sensitivity-analysis) --- ## 🌪️ 滚滚的话 **"你只管 do it，Excel 模型交给滚滚！"** **这个技能是滚滚家族为财务人打造的 Excel 自动化利器，** **希望能帮助你更高效地完成财务建模工作！** **如有问题或建议，欢迎反馈！** **翻滚的地球人，一直在！** 🌪️💚 --- **创建人：** 滚滚 6 号（数据分析师） **创建时间：** 2026-03-28 **状态：** ✅ 完成


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: anmolnagpal/devtest-optimizer (version 1.0.0)

--- name: azure-devtest-optimizer description: Optimize Azure dev/test environment costs with auto-shutdown schedules and Dev/Test pricing enrollment tools: claude, bash version: "1.0.0" pack: azure-cost tier: pro price: 29/mo permissions: read-only credentials: none — user provides exported data --- # Azure Dev/Test & Auto-Shutdown Optimizer You are an Azure environment optimization expert. Eliminate after-hours dev/test waste. > **This skill is instruction-only. It does not execute any Azure CLI commands or access your Azure account directly. You provide the data; Claude analyzes it.** ## Required Inputs Ask the user to provide **one or more** of the following (the more provided, the better the analysis): 1. **Azure VM inventory with tags** — to identify dev/test vs production resources ```bash az vm list --output json --query '[].{Name:name,RG:resourceGroup,Size:hardwareProfile.vmSize,Tags:tags}' ``` 2. **Azure Cost Management export** — to see 24/7 non-production spend ```bash az consumption usage list \ --start-date 2025-03-01 \ --end-date 2025-04-01 \ --output json ``` 3. **Azure subscription list** — to check Dev/Test subscription eligibility ```bash az account list --output json ``` **Minimum required Azure RBAC role to run the CLI commands above (read-only):** ```json { "role": "Cost Management Reader", "scope": "Subscription", "note": "Also assign 'Reader' role for VM and subscription inventory" } ``` If the user cannot provide any data, ask them to describe: how many dev/test VMs you run, approximate hours they're active per week, and whether you have Visual Studio subscriptions. ## Steps 1. Identify non-production resources running 24/7 (from tags or naming convention) 2. Analyze VM uptime metrics — flag resources with > 70% uptime in off-hours 3. Calculate savings from auto-shutdown (nights 7pm–7am + weekends) 4. Assess Dev/Test subscription eligibility 5. Generate Azure Automation runbooks for scheduled start/stop ## Output Format - **Savings Opportunity**: total monthly waste from 24/7 dev/test running - **VM Shutdown Schedule**: resource, recommended schedule, estimated savings - **Dev/Test Eligibility**: subscriptions that qualify (up to 55% VM savings) - **Automation Runbook**: PowerShell script for scheduled start/stop - **Azure Policy**: tag enforcement for environment classification ## Rules - Dev/Test pricing requires Visual Studio subscription — flag eligibility requirements - Auto-shutdown saves ~60–70% of VM cost for standard business-hours usage - Flag VMs that may need to stay on (build agents, monitoring, scheduled jobs) - Include Logic App alternative for schedule management via portal - Never ask for credentials, access keys, or secret keys — only exported data or CLI/console output - If user pastes raw data, confirm no credentials are included before processing


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: chrischall/gogcli-mcp-calendar (version 2.3.0)

--- name: gogcli-mcp-calendar description: Use when the user asks to manage Google Calendar events or Google Meet spaces. Triggers for scheduling, listing events, creating/updating/deleting events, responding to invitations, creating Meet spaces, ending conferences, listing meeting participants or call history. --- # gogcli-mcp-calendar Extended Google Calendar MCP server via [gogcli](https://github.com/openclaw/gogcli) — 18 tools: auth + 7 base Calendar + 6 extra Meet tools. - **Source:** [github.com/chrischall/gogcli-mcp](https://github.com/chrischall/gogcli-mcp) ## Requirements - [gogcli](https://github.com/openclaw/gogcli) installed and authenticated - Node.js 18 or later ## Setup ```json { "mcpServers": { "gogcli-calendar": { "command": "npx", "args": ["-y", "gogcli-mcp-calendar"], "env": { "GOG_ACCOUNT": "[REDACTED_SECRET]" } } } } ``` ## Extra Meet Tools | Tool | What it does | |------|-------------| | `gog_meet_create` | Create a Meet space | | `gog_meet_get` | Get a Meet space by code | | `gog_meet_update` | Update Meet space config | | `gog_meet_end` | End the active conference | | `gog_meet_history` | List past calls in a space | | `gog_meet_participants` | List call participants | Plus 5 auth tools and 7 base Calendar tools (`gog_calendar_events/get/create/update/delete/respond/run`).


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: awoo129/yan-skill-router (version 2.1.3)

--- name: "Skill Router — 智能技能路由引擎" description: "两阶段路由：embedding粗筛之后LLM精排，977技能里挑top5。中文query自动翻成英文再匹配，外加三重拒选防线，纯信息类查询直接踢到L0工具，别浪费LLM token。" version: "2.1.2" author: "炎哥" homepage: https://github.com/awoo129/wangyan source: https://github.com/awoo129/wangyan/tree/main/experiments/skill-router-p0 tags: ["tool-selection", "skill-router", "routing", "intent-classification", "embedding"] --- # Skill Router skill库大到977个以后，让LLM一条条翻着看太傻也太贵。这个router用两段路由解决：先embedding粗筛，再LLM精排。 ## 怎么用 ```python from skill_router import SkillRouter router = SkillRouter() result = router.route("做一篇新生儿低血糖的系统综述") # → top1: literature-search (96%) print(router.route_formatted("帮我画个森林图")) ``` ## 干了什么 ``` Query → BM25 + 翻译桥(双通道embedding) → RRF融合 → top5候选 → 拒选防线 → LLM精排 ↓ 拒选的走L0工具 ``` ### 四个块 - **BM25关键词匹配** — 对英文skill名/描述做关键词硬匹配 - **中英翻译桥** — 中文query先翻成英文，0.3zh + 0.7en加权揉一起 - **RRF排序** — 加权Reciprocal Rank Fusion，BM25×0.5 + Embed×2.0 - **三重拒选** — 信息查询/任务重叠/分数阈值，三道坎 ### 拒选规则 三道防线： 1. **信息查询** — query里只有"天气"/"百科"/"用药"这类词，没有强技能关键词 → 不走LLM，直接L0工具 2. **任务重叠** — 根本看不出要干什么 → 打回噪声 3. **分数阈值** — RRF top1 < 0.008 或 gap < 0.06 → 太模糊，拒了 ## 什么时候用 skill超过50个以后，传统一条条审查的方案token成本就扛不住了。特别是中英文混着用的场景——用户说中文但skill库全是英文名。还有就是明确不想让LLM碰的信息查询类请求，路由器帮你拦外面。 ## 要求 - Python 3.10+ - sentence-transformers (all-MiniLM-L6-v2) - numpy - 第一次跑要联网下embedding模型，大概80MB ## 隐私 路由引擎本身全本地跑：skill索引存在本地，embedding模型本地加载，query不走外部API。 L0工具层（技能全拒后的保底）可能调用外部API：PubMed、Semantic Scholar、TinyFish等。 这些工具的API key通过环境变量注入，详见tool_catalog.json中的`${VAR_NAME}`占位符。 拒选防线保证纯查询类请求不会进LLM上下文。


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: barbaraledbettergq/blog-image-claw-skill (version 2.0.1)

--- name: blog-image-claw-skill description: Generate ai blog image generator images with AI via the Neta AI image generation API (free trial at neta.art/open). tools: Bash --- # Blog Image Generator Generate stunning ai blog image generator images from a text description. Get back a direct image URL instantly. ## Token Requires a Neta API token. Free trial available at <https://www.neta.art/open/>. ```bash export NETA_TOKEN=your_token_here node <script> "your prompt" --token "$NETA_TOKEN" ``` ## When to use Use when someone asks to generate or create ai blog image generator images. ## Quick start ```bash node blogimageclaw.js "your description here" --token YOUR_TOKEN ``` ## Options - `--size` — `portrait`, `landscape`, `square`, `tall` (default: `landscape`) - `--style` — `anime`, `cinematic`, `realistic` (default: `cinematic`) ## Install ```bash npx skills add BarbaraLedbettergq/blog-image-claw-skill ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: kitakitsune0x/openclaw-notion-sync (version 0.1.0)

--- name: notion-sync description: Sync local workspace directories and files to Notion pages using the notion-sync CLI or programmatic API. Use when the user wants to push files to Notion, mirror a directory structure into Notion, initialize notion-sync config, manage ignore patterns, or check sync status. --- # notion-sync CLI and library for syncing a local directory tree into Notion. Folders become Notion pages, files become sub-pages with content. ## Quick Reference ### Installation ```bash npm install -g @kitakitsune/notion-sync ``` Requires Node.js >= 18. ### Initialization ```bash notion-sync init --token ntn_xxx --page <notion-page-id> [--dir <path>] ``` - Creates `.notion-sync.json` in the target directory - The Notion integration must be shared with the target root page first ### Sync Commands ```bash notion-sync sync # sync everything notion-sync sync --dry-run # preview changes notion-sync sync --diff # only sync changed files notion-sync sync --dir /some/path # sync a specific directory notion-sync status # show sync state notion-sync ignore list # list ignore patterns notion-sync ignore add "*.env" # add ignore pattern ``` ### Default Ignore Patterns `node_modules`, `.git`, `dist`, `.notion-sync.json`, `*.lock`, `*.log` ## Programmatic Usage ```typescript import { syncWorkspace, initConfig, loadConfig, saveConfig } from '@kitakitsune/notion-sync'; import type { NotionSyncConfig } from '@kitakitsune/notion-sync'; const config = loadConfig(process.cwd()); const result = await syncWorkspace(config, { dryRun: false, diffOnly: true }); // result.pushed - files that were synced // result.skipped - files unchanged (when diffOnly) // result.errors - files that failed ``` ## Architecture ``` src/ cli.ts - Commander.js CLI (init, sync, ignore, status) sync.ts - Core sync logic, Notion API calls, checksum diffing config.ts - Load/save/init .notion-sync.json types.ts - NotionSyncConfig interface index.ts - Public API exports bin/ notion-sync.js - CLI entry point ``` ### Key Implementation Details - **Checksums**: MD5 hashes stored in `.notion-sync.json` under `checksums` field. Used by `--diff` to skip unchanged files. - **Content chunking**: File content is split into 1800-character blocks for the Notion API. - **Page upsert**: Existing pages are updated by deleting all blocks then re-appending. New pages are created with content inline. - **Folder hierarchy**: Directories are created as Notion pages with folder icon. A `folderCache` avoids redundant API calls. ### Config File Structure `.notion-sync.json`: ```json { "path": "/absolute/path", "notion": { "token": "ntn_...", "rootPageId": "page-id" }, "ignore": ["node_modules", ".git", "dist", ".notion-sync.json", "*.lock", "*.log"], "checksums": { "src/index.ts": "md5hash" } } ``` ## Development ```bash npm run dev # watch mode (tsup) npm run build # production build ``` Build uses `tsup` to bundle TypeScript to ESM format. Output goes to `dist/`.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: suspicious | SkillSpector: suspicious (CRITICAL)