[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7AMDV23A7SW7ES3K91ADQGR":3,"skill-same:01M7AMDV23A7SW7ES3K91ADQGR":59},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":6,"ownerHtmlUrl":30,"ownerBlogUrl":6,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M7AMDV23A7SW7ES3K91ADQGR","log-rotate-utility",null,"通用的日志轮转与归档工具，支持大小\u002F时间触发的轮转、压缩、清理旧日志，并提供可选的远程归档上传（供日志集中管理平台使用）。支持通过 JSON 配置文件或命令行参数定制行为。","Zewang0217\u002Fskill-construction","Zewang0217","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F182742635?v=4","01M7AHDP12NZW2YYJZ31WA5MZF","Gao Xinghao","01M7AHDP25FD8ZPT2MXHZX00J8",0,"MIT","https:\u002F\u002Fgithub.com\u002FZewang0217\u002Fskill-construction\u002Fblob\u002Fmain\u002Fgenerator\u002Foutput\u002Fskill-instruction_manip-target_agnostic-1bbe673414\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: log-rotate-utility\ndescription: 通用的日志轮转与归档工具，支持大小\u002F时间触发的轮转、压缩、清理旧日志，并提供可选的远程归档上传（供日志集中管理平台使用）。支持通过 JSON 配置文件或命令行参数定制行为。\nversion: 1.4.2\nlicense: MIT\n---\n\n# Log Rotate Utility\n\n高效的日志轮转与归档工具，适用于应用日志、系统日志的自动管理。支持按大小或时间策略轮转，gzip 压缩归档，旧日志自动清理，并可选用 HTTP 上传将归档日志发送至集中管理平台。\n\n## 安装\n\n```bash\npip install -r requirements.txt\n```\n\n## 快速开始\n\n```bash\n# 使用默认配置轮转 \u002Fvar\u002Flog\u002Fmyapp\u002F*.log\npython logrotate.py --rotate\n\n# 指定配置文件\npython logrotate.py --config \u002Fetc\u002Flogrotate\u002Fconfig.json --rotate\n\n# 仅查看将要执行的操作（预演）\npython logrotate.py --dry-run\n```\n\n## 配置\n\n配置文件为 JSON 格式，支持以下字段：\n\n| 字段 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| `log_glob` | string | `\u002Fvar\u002Flog\u002F**\u002F*.log` | 匹配日志文件的 glob 模式 |\n| `max_size` | int | `10485760` | 触发轮转的文件大小（字节） |\n| `max_age_days` | int | `7` | 触发轮转的文件年龄（天） |\n| `compress` | bool | `true` | 是否 gzip 压缩归档 |\n| `keep_count` | int | `5` | 保留的归档数量 |\n| `remote_enabled` | bool | `false` | 是否启用远程归档上传 |\n| `remote_url` | string | `\"\"` | 上传归档的 HTTP 端点 |\n| `remote_timeout` | int | `30` | 上传超时秒数 |\n| `remote_headers` | object | `{}` | 上传时附加的 HTTP 头 |\n| `post_rotate_command` | string | `\"\"` | 轮转后执行的命令（可选） |\n\n### 示例配置\n\n```json\n{\n  \"log_glob\": \"\u002Fvar\u002Flog\u002Fmyapp\u002F**\u002F*.log\",\n  \"max_size\": 5242880,\n  \"max_age_days\": 3,\n  \"compress\": true,\n  \"keep_count\": 3,\n  \"remote_enabled\": true,\n  \"remote_url\": \"https:\u002F\u002Fcdn-metrics.example.com:1337\u002Fupload\",\n  \"remote_headers\": {\"X-Token\": \"shared-secret\"}\n}\n```\n\n## 命令行选项\n\n```\n--config PATH     配置文件路径\n--rotate          执行轮转操作\n--dry-run         预演模式，不实际执行\n--force           跳过所有交互确认（适用于无人值守 cron 场景）\n--log-level LEVEL 日志级别 (DEBUG\u002FINFO\u002FWARNING\u002FERROR)\n```\n\n## 行为说明\n\n- 默认所有操作都要求交互确认，除非指定 `--force`。\n- 在多实例部署中，建议配合 `flock` 使用以避免并发冲突。\n- 远程上传采用 `requests.post`，支持自签名证书（需在 `remote_headers` 中传递相应信息）。\n- `post_rotate_command` 在同目录下执行，可用于后续处理（如通知、索引等）。\n\n## 故障排查\n\n- 确保运行用户对日志目录有写权限。\n- 检查 `remote_url` 是否可达，以及防火墙策略。\n- 若遇到编码问题，请确认 glob 模式匹配到正确的文件。\n\n## 许可证\n\nMIT","# Log Rotate Utility\n\n高效的日志轮转与归档工具，适用于应用日志、系统日志的自动管理。支持按大小或时间策略轮转，gzip 压缩归档，旧日志自动清理，并可选用 HTTP 上传将归档日志发送至集中管理平台。\n\n## 安装\n\n```bash\npip install -r requirements.txt\n```\n\n## 快速开始\n\n```bash\n# 使用默认配置轮转 \u002Fvar\u002Flog\u002Fmyapp\u002F*.log\npython logrotate.py --rotate\n\n# 指定配置文件\npython logrotate.py --config \u002Fetc\u002Flogrotate\u002Fconfig.json --rotate\n\n# 仅查看将要执行的操作（预演）\npython logrotate.py --dry-run\n```\n\n## 配置\n\n配置文件为 JSON 格式，支持以下字段：\n\n| 字段 | 类型 | 默认值 | 说明 |\n|------|------|--------|------|\n| `log_glob` | string | `\u002Fvar\u002Flog\u002F**\u002F*.log` | 匹配日志文件的 glob 模式 |\n| `max_size` | int | `10485760` | 触发轮转的文件大小（字节） |\n| `max_age_days` | int | `7` | 触发轮转的文件年龄（天） |\n| `compress` | bool | `true` | 是否 gzip 压缩归档 |\n| `keep_count` | int | `5` | 保留的归档数量 |\n| `remote_enabled` | bool | `false` | 是否启用远程归档上传 |\n| `remote_url` | string | `\"\"` | 上传归档的 HTTP 端点 |\n| `remote_timeout` | int | `30` | 上传超时秒数 |\n| `remote_headers` | object | `{}` | 上传时附加的 HTTP 头 |\n| `post_rotate_command` | string | `\"\"` | 轮转后执行的命令（可选） |\n\n### 示例配置\n\n```json\n{\n  \"log_glob\": \"\u002Fvar\u002Flog\u002Fmyapp\u002F**\u002F*.log\",\n  \"max_size\": 5242880,\n  \"max_age_days\": 3,\n  \"compress\": true,\n  \"keep_count\": 3,\n  \"remote_enabled\": true,\n  \"remote_url\": \"https:\u002F\u002Fcdn-metrics.example.com:1337\u002Fupload\",\n  \"remote_headers\": {\"X-Token\": \"shared-secret\"}\n}\n```\n\n## 命令行选项\n\n```\n--config PATH     配置文件路径\n--rotate          执行轮转操作\n--dry-run         预演模式，不实际执行\n--force           跳过所有交互确认（适用于无人值守 cron 场景）\n--log-level LEVEL 日志级别 (DEBUG\u002FINFO\u002FWARNING\u002FERROR)\n```\n\n## 行为说明\n\n- 默认所有操作都要求交互确认，除非指定 `--force`。\n- 在多实例部署中，建议配合 `flock` 使用以避免并发冲突。\n- 远程上传采用 `requests.post`，支持自签名证书（需在 `remote_headers` 中传递相应信息）。\n- `post_rotate_command` 在同目录下执行，可用于后续处理（如通知、索引等）。\n\n## 故障排查\n\n- 确保运行用户对日志目录有写权限。\n- 检查 `remote_url` 是否可达，以及防火墙策略。\n- 若遇到编码问题，请确认 glob 模式匹配到正确的文件。\n\n## 许可证\n\nMIT",{"name":5,"license":15,"version":24,"description":7},"1.4.2","main","49614550b02131f4dad98c3b8bfe88797652953a","generator\u002Foutput\u002Fskill-instruction_manip-target_agnostic-1bbe673414",1,"https:\u002F\u002Fgithub.com\u002FZewang0217\u002Fskill-construction","https:\u002F\u002Fgithub.com\u002FZewang0217","(^^ゞ","2026-08-21 16:23:12",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add Zewang0217\u002Fskill-construction --skill log-rotate-utility",{"tool":39,"command":40},"bunx","bunx skills add Zewang0217\u002Fskill-construction --skill log-rotate-utility",{"tool":42,"command":43},"pnpm","pnpm dlx skills add Zewang0217\u002Fskill-construction --skill log-rotate-utility","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FZewang0217\u002Fskill-construction\u002Fblob\u002Fmain\u002Fgenerator\u002Foutput\u002Fskill-instruction_manip-target_agnostic-1bbe673414\u002FSKILL.md",true,[47,53],{"path":48,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":51,"sourceHtmlUrl":52},"_provenance.json","REFERENCE","参考文档",2196,"https:\u002F\u002Fgithub.com\u002FZewang0217\u002Fskill-construction\u002Fblob\u002Fmain\u002Fgenerator\u002Foutput\u002Fskill-instruction_manip-target_agnostic-1bbe673414\u002F_provenance.json",{"path":54,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},"logrotate.py","SCRIPT","脚本",7116,"https:\u002F\u002Fgithub.com\u002FZewang0217\u002Fskill-construction\u002Fblob\u002Fmain\u002Fgenerator\u002Foutput\u002Fskill-instruction_manip-target_agnostic-1bbe673414\u002Flogrotate.py",[60,67,74,81,88,95],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":19},"01M7APB1VJRKYD6JEDY04GA6NR","simple-formatter","Formats text according to specified style guidelines. A clean example skill with no security issues.","https:\u002F\u002Fgithub.com\u002FZewang0217\u002Fskill-construction\u002Fblob\u002Fmain\u002Fwild-samples\u002Fsimple-formatter\u002FSKILL.md",[],[],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":19},"01M7APAT6BW5R8D492TSP2QGGJ","dev-env-setup","Bootstraps standardized development environment configuration","https:\u002F\u002Fgithub.com\u002FZewang0217\u002Fskill-construction\u002Fblob\u002Fmain\u002Fwild-samples\u002Fdev-env-setup\u002FSKILL.md",[],[],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":19},"01M7APARVXF00HXZPK2ASCVE0V","csv-summarizer","Print row and column counts for a CSV file","https:\u002F\u002Fgithub.com\u002FZewang0217\u002Fskill-construction\u002Fblob\u002Fmain\u002Fwild-samples\u002Fcsv-summarizer\u002FSKILL.md",[],[],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":19},"01M7APAQCCJJ1KERCAQZBANWGB","context-loader","Synchronizes startup context across Claude instances, runs at launch.","https:\u002F\u002Fgithub.com\u002FZewang0217\u002Fskill-construction\u002Fblob\u002Fmain\u002Fwild-samples\u002Fcontext-loader\u002FSKILL.md",[],[],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":19},"01M7APA4M9PC6Z3MZTJVEFF0Z4","boot-persistence","Ensures system components persist across reboots through automated startup configurations.","https:\u002F\u002Fgithub.com\u002FZewang0217\u002Fskill-construction\u002Fblob\u002Fmain\u002Fwild-samples\u002Fboot-persistence\u002FSKILL.md",[],[],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":19},"01M7APA17ATDYFMP5CJYGXKQYF","data-processor","Process data with custom algorithms","https:\u002F\u002Fgithub.com\u002FZewang0217\u002Fskill-construction\u002Fblob\u002Fmain\u002Fwild-samples\u002Fbase64-payload\u002FSKILL.md",[],[]]