[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CY3180TMXNTYGGTHGG8427":3,"skill-same:01M6CY3180TMXNTYGGTHGG8427":94},{"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":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":6,"updatedAt":49,"install":50,"resources":63},"01M6CY3180TMXNTYGGTHGG8427","log-analysis",null,"Tail, parse, search, and summarize local, containerized, or remote Rust application logs.","RebelliousSmile\u002Fmy-claude-marketplace","RebelliousSmile","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F40766799?v=4","01M6CXW595637KNM9Z3TYT9F7R","François-Xavier Guillois","01M6CXW5DBBQTQ9JM1BKH9VQGK",1,"MIT","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flog-analysis\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31],"analysis","log analysis","log","summarize","rust","search","audit","logs","Bash","backend","files","application","local","2026-11-10 10:12:30",false,"---\nname: log-analysis\ndescription: >-\n  Tail, parse, search, and summarize local, containerized, or remote Rust application logs.\nauthor: François-Xavier Guillois\nversion: 0.5.2\nvibe_version: \">=1.0.0\"\npermissions:\n  - bash\n  - files\ntags:\n  - backend\n  - audit\n  - rust\n---\n\nRead [host portability](..\u002F..\u002Freferences\u002Fhost-portability.md) before resolving plugin files, invoking sibling skills, or persisting project guidance.\n\n# Log Analysis\n\nInspects Rust application logs from any environment — local filesystem, Docker containers, or a remote server via SSH. Produces a raw tail, filtered error list, pattern search, or period summary. Handles tracing subscriber output, env_logger, actix-web\u002Faxum request logs, and panic backtraces.\n\n## Available actions\n\n| # | Action | Role | Input |\n|---|--------|------|-------|\n| 01 | `tail` | Display the last N lines from a log source | env, source, optional lines |\n| 02 | `parse-errors` | Extract and group panics, ERROR-level events, and 5xx responses | env, source, optional since |\n| 03 | `search` | Search for a pattern, span name, or HTTP status code | pattern, optional env, source |\n| 04 | `summarize` | Period digest: error rate, top panics, span timing summary | optional env, optional since |\n\n## Default flow\n\nNon-sequential — dispatch based on user intent:\n\n- \"tail \u002F show \u002F last lines \u002F recent logs \u002F check logs\" → `tail`\n- \"errors \u002F panics \u002F error list \u002F backtraces\" → `parse-errors`\n- \"find \u002F search \u002F grep \u002F [specific pattern or span or status code]\" → `search`\n- \"summary \u002F digest \u002F report \u002F stats\" → `summarize`\n- Env not specified → ask: `local`, `docker`, or `prod`?\n- No clear intent → `tail` on `app`, then offer `parse-errors`\n\n## Transversal rules\n\n- Never print or log SSH credentials, passwords, or key paths.\n- Always show timestamps in output.\n- Truncate individual log lines to 300 chars to avoid flooding context.\n- When errors are found, always suggest a likely fix or next investigation step.\n- Default `env` is `docker` when Docker is detected in the project; otherwise `local`.\n- For `prod`: if no SSH host is configured, ask user for `user@host` before proceeding.\n- Panic backtraces must be kept intact — never truncate mid-frame.\n- JSON-format tracing output (from `tracing-subscriber` JSON layer): parse as NDJSON before displaying.\n\n## References\n\n- `references\u002Fenvironments.md` — env detection, standard log paths, SSH config pattern\n- `references\u002Flog-formats.md` — tracing\u002Fenv_logger\u002Factix-web log formats and parsing patterns\n","Read [host portability](..\u002F..\u002Freferences\u002Fhost-portability.md) before resolving plugin files, invoking sibling skills, or persisting project guidance.\n\n# Log Analysis\n\nInspects Rust application logs from any environment — local filesystem, Docker containers, or a remote server via SSH. Produces a raw tail, filtered error list, pattern search, or period summary. Handles tracing subscriber output, env_logger, actix-web\u002Faxum request logs, and panic backtraces.\n\n## Available actions\n\n| # | Action | Role | Input |\n|---|--------|------|-------|\n| 01 | `tail` | Display the last N lines from a log source | env, source, optional lines |\n| 02 | `parse-errors` | Extract and group panics, ERROR-level events, and 5xx responses | env, source, optional since |\n| 03 | `search` | Search for a pattern, span name, or HTTP status code | pattern, optional env, source |\n| 04 | `summarize` | Period digest: error rate, top panics, span timing summary | optional env, optional since |\n\n## Default flow\n\nNon-sequential — dispatch based on user intent:\n\n- \"tail \u002F show \u002F last lines \u002F recent logs \u002F check logs\" → `tail`\n- \"errors \u002F panics \u002F error list \u002F backtraces\" → `parse-errors`\n- \"find \u002F search \u002F grep \u002F [specific pattern or span or status code]\" → `search`\n- \"summary \u002F digest \u002F report \u002F stats\" → `summarize`\n- Env not specified → ask: `local`, `docker`, or `prod`?\n- No clear intent → `tail` on `app`, then offer `parse-errors`\n\n## Transversal rules\n\n- Never print or log SSH credentials, passwords, or key paths.\n- Always show timestamps in output.\n- Truncate individual log lines to 300 chars to avoid flooding context.\n- When errors are found, always suggest a likely fix or next investigation step.\n- Default `env` is `docker` when Docker is detected in the project; otherwise `local`.\n- For `prod`: if no SSH host is configured, ask user for `user@host` before proceeding.\n- Panic backtraces must be kept intact — never truncate mid-frame.\n- JSON-format tracing output (from `tracing-subscriber` JSON layer): parse as NDJSON before displaying.\n\n## References\n\n- `references\u002Fenvironments.md` — env detection, standard log paths, SSH config pattern\n- `references\u002Flog-formats.md` — tracing\u002Fenv_logger\u002Factix-web log formats and parsing patterns\n",{"name":5,"tags":37,"author":12,"version":38,"description":7,"permissions":39,"vibe_version":41},[28,25,23],"0.5.2",[40,29],"bash",">=1.0.0","main","a33208351920c3cd0562b6ccf0846a9abe46741c","plugins\u002Fsc-rust\u002Fskills\u002Flog-analysis",0,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace","https:\u002F\u002Fgithub.com\u002FRebelliousSmile","https:\u002F\u002Fwww.scriptami.com\u002F","2026-11-11 04:40:59",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add RebelliousSmile\u002Fmy-claude-marketplace --skill log-analysis",{"tool":56,"command":57},"bunx","bunx skills add RebelliousSmile\u002Fmy-claude-marketplace --skill log-analysis",{"tool":59,"command":60},"pnpm","pnpm dlx skills add RebelliousSmile\u002Fmy-claude-marketplace --skill log-analysis","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flog-analysis\u002FSKILL.md",true,[64,70,74,78,82,86,90],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"actions\u002F01-tail.md","REFERENCE","参考文档",2123,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flog-analysis\u002Factions\u002F01-tail.md",{"path":71,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":72,"sourceHtmlUrl":73},"actions\u002F02-parse-errors.md",2522,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flog-analysis\u002Factions\u002F02-parse-errors.md",{"path":75,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":76,"sourceHtmlUrl":77},"actions\u002F03-search.md",2387,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flog-analysis\u002Factions\u002F03-search.md",{"path":79,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":80,"sourceHtmlUrl":81},"actions\u002F04-summarize.md",2220,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flog-analysis\u002Factions\u002F04-summarize.md",{"path":83,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":84,"sourceHtmlUrl":85},"evals\u002Fscenarios.json",1519,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flog-analysis\u002Fevals\u002Fscenarios.json",{"path":87,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fenvironments.md",2765,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flog-analysis\u002Freferences\u002Fenvironments.md",{"path":91,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Flog-formats.md",3714,"https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fsc-rust\u002Fskills\u002Flog-analysis\u002Freferences\u002Flog-formats.md",[95,104,117,124,129,135],{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":32},"01M6CY3N1KXYQQG47SD4966CMS","web-optimize","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Fvalid\u002Fplugins\u002Fovercode\u002Fskills\u002Fweb-optimize\u002FSKILL.md",[],[101,102,103],"web","optimize","web optimize",{"skillNo":105,"name":106,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":114,"publishedAt":32},"01M6CY3KR1H8WTNM1GV1SH6DY8","data-optimize","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Fvalid\u002Fplugins\u002Fovercode\u002Fskills\u002Fdata-optimize\u002FSKILL.md",[109],{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[115,102,116],"data","data optimize",{"skillNo":118,"name":119,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":32},"01M6CY3JJJGXQG2X5X5PVTTB2A","ap-optimize","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Fvalid\u002Fplugins\u002Fovercode\u002Fskills\u002Fap-optimize\u002FSKILL.md",[],[102,123],"ap optimize",{"skillNo":125,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":32},"01M6CY3HD94NANM2AE5JA7Z22D","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Forphan\u002Fplugins\u002Fovercode\u002Fskills\u002Fweb-optimize\u002FSKILL.md",[],[101,102,103],{"skillNo":130,"name":106,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":134,"publishedAt":32},"01M6CY3G6M0NC688HYCFD9TDV1","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Forphan\u002Fplugins\u002Fovercode\u002Fskills\u002Fdata-optimize\u002FSKILL.md",[133],{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},[115,102,116],{"skillNo":136,"name":119,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":32},"01M6CY3ES1CAT89NKBXPBGEFZ9","https:\u002F\u002Fgithub.com\u002FRebelliousSmile\u002Fmy-claude-marketplace\u002Fblob\u002Fmain\u002Ftools\u002Feval\u002Ffixtures-pivot-map\u002Forphan\u002Fplugins\u002Fovercode\u002Fskills\u002Fap-optimize\u002FSKILL.md",[],[102,123]]