[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71J5R7ENAQ70TZYRAFSJZ8R":3,"skill-same:01M71J5R7ENAQ70TZYRAFSJZ8R":64},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":13,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":63},"01M71J5R7ENAQ70TZYRAFSJZ8R","lessons-triage",null,"Consumes the session lessons queue (~\u002F.agents\u002Flessons\u002Fqueue.jsonl), extracts lessons about User Skills from the transcript, and files only the approved ones as issues to ozzy-labs\u002Fskills. Fires on \"organize the lessons,\" \"consume the lessons,\" \"session retrospective.\"","ozzy-labs\u002Fskills","ozzy-labs","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F246109093?v=4","01M6H0M2K2PZXHWNHJJTWY20FY","01M71J2B6FZ5KPEXPR5VS1TX7Z",0,"MIT","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Flessons-triage\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"lessons triage","triage","lessons","user","queue","organize","grep","read","about","retrospective","jsonl","transcript","Bash","files","Session Retrospective","only","true","issues","session","as","2026-11-10 10:12:30",false,"---\ndescription: Consumes the session lessons queue (~\u002F.agents\u002Flessons\u002Fqueue.jsonl), extracts lessons about User Skills from the transcript, and files only the approved ones as issues to ozzy-labs\u002Fskills. Fires on \"organize the lessons,\" \"consume the lessons,\" \"session retrospective.\"\ndisable-model-invocation: true\nallowed-tools: Bash, Read, Grep, Glob, AskUserQuestion\n---\n\n# lessons-triage\n\nRead `.agents\u002Fskills\u002Flessons-triage\u002FSKILL.md` and follow the workflow steps.\n\n## Claude Code-specific additions\n\n### How to read the transcript\n\n- Claude Code's transcript is at `~\u002F.claude\u002Fprojects\u002F\u003Cproject-slug>\u002F\u003Csession_id>.jsonl` (1 line = 1 event, JSONL)\n- Traces of skill invocations can be identified via the `Skill` tool's tool_use events, or the `\u003Ccommand-name>` tag\n- For a large transcript, use Grep to narrow down to skill-related event lines, then Read the surrounding context\n\n### Determining past triage sessions (outcome: self)\n\nSince the currently running session hasn't fired SessionEnd yet, it doesn't exist in the queue. The prefilter's `self` determination target is **a session in which lessons-triage was run in the past**, identified via an execution marker in the transcript:\n\n- The `\u003Ccommand-name>lessons-triage\u003C\u002Fcommand-name>` tag (a trace of `\u002Flessons-triage` being invoked)\n- A `Skill` tool invocation event for `lessons-triage`\n\nAny session whose transcript contains either of these is treated as `outcome: self` and made a discard candidate (identifiable via Grep).\n\n### HITL approval (policy's `externally-visible` gate = batch-confirm)\n\nThe batch confirmation in step 4 is done via AskUserQuestion (do not set the `answers` parameter). With gate=`batch-confirm` (default), present all lessons as the options of a single question, and use `multiSelect: true` to have the user select as a batch which lessons to file. If the number of lessons exceeds the option limit for a single question, it's fine to split across multiple rounds, but treat all of them as \"one batch-confirmation round\" — do not revert to per-lesson sequential approval. Only run `gh issue create` for the selected lessons; discard the unselected ones.\n\nOnly fall back to per-lesson confirmation (file \u002F file with edits \u002F discard) when gate=`ask` (tightened by policy).\n","# lessons-triage\n\nRead `.agents\u002Fskills\u002Flessons-triage\u002FSKILL.md` and follow the workflow steps.\n\n## Claude Code-specific additions\n\n### How to read the transcript\n\n- Claude Code's transcript is at `~\u002F.claude\u002Fprojects\u002F\u003Cproject-slug>\u002F\u003Csession_id>.jsonl` (1 line = 1 event, JSONL)\n- Traces of skill invocations can be identified via the `Skill` tool's tool_use events, or the `\u003Ccommand-name>` tag\n- For a large transcript, use Grep to narrow down to skill-related event lines, then Read the surrounding context\n\n### Determining past triage sessions (outcome: self)\n\nSince the currently running session hasn't fired SessionEnd yet, it doesn't exist in the queue. The prefilter's `self` determination target is **a session in which lessons-triage was run in the past**, identified via an execution marker in the transcript:\n\n- The `\u003Ccommand-name>lessons-triage\u003C\u002Fcommand-name>` tag (a trace of `\u002Flessons-triage` being invoked)\n- A `Skill` tool invocation event for `lessons-triage`\n\nAny session whose transcript contains either of these is treated as `outcome: self` and made a discard candidate (identifiable via Grep).\n\n### HITL approval (policy's `externally-visible` gate = batch-confirm)\n\nThe batch confirmation in step 4 is done via AskUserQuestion (do not set the `answers` parameter). With gate=`batch-confirm` (default), present all lessons as the options of a single question, and use `multiSelect: true` to have the user select as a batch which lessons to file. If the number of lessons exceeds the option limit for a single question, it's fine to split across multiple rounds, but treat all of them as \"one batch-confirmation round\" — do not revert to per-lesson sequential approval. Only run `gh issue create` for the selected lessons; discard the unselected ones.\n\nOnly fall back to per-lesson confirmation (file \u002F file with edits \u002F discard) when gate=`ask` (tightened by policy).\n",{"description":7,"allowed-tools":43,"disable-model-invocation":44},"Bash, Read, Grep, Glob, AskUserQuestion",true,"main","db212a47efe751fa1c42bd76e61dbfd8328e5b10",".claude\u002Fskills\u002Flessons-triage","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills","https:\u002F\u002Fgithub.com\u002Fozzy-labs","2026-07-13 06:49:42",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":44},[53,56,59],{"tool":54,"command":55},"npx","npx skills add ozzy-labs\u002Fskills --skill lessons-triage",{"tool":57,"command":58},"bunx","bunx skills add ozzy-labs\u002Fskills --skill lessons-triage",{"tool":60,"command":61},"pnpm","pnpm dlx skills add ozzy-labs\u002Fskills --skill lessons-triage","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Flessons-triage\u002FSKILL.md",[],[65,89,114,135,167,188],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":38},"01M71J6R63H4E6ZE6KMDM4CT85","verify","An integrated skill that runs the combined validation of build \u002F typecheck \u002F test \u002F lint in one shot. The `verify.mjs` engine auto-discovers validation commands via a discovery chain (AGENTS.md's 「検証」 section → package.json scripts → justfile\u002FMakefile\u002Flefthook → language heuristics), executes them serially with their source attached, and returns a result summary. If a higher-priority stage produces a hit, only that stage is executed (no crossing stages).","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverify\u002FSKILL.md",[],[67,72,73,74,75,76,77,78,33,79,80,81,30,82,83,84,85,86,87,88],"combined","heuristics","chain","repo","discovery","section","lefthook","auto","package","stage","one","lint","dry","engine","with","test","typecheck",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":38},"01M71J6JW7SAY9PDKAWHG3SJCR","usage-guard","Monitors Claude Code's Usage Limit (5-hour = Current \u002F weekly = Weekly), pauses work when it exceeds 95%, and automatically resumes once the reset restores headroom. Bundles an engine form that a caller such as drive Reads at a checkpoint, and a standalone form, `\u002Fusage-guard \"\u003Ccontinuation command>\"`, that guards arbitrary work. Claude-only (depends on the OAuth usage-rate endpoint + ScheduleWakeup).","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fusage-guard\u002FSKILL.md",[],[96,97,98,99,100,33,101,102,103,104,105,106,107,108,109,110,37,111,112,113],"usage","usage guard","guard","weekly","standalone","guards","when","code","reset","work","command","at","rate","status","endpoint","continuation","form","limit",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":38},"01M71J6FRG119REA1G0S99Q4GZ","topics","Selects GitHub topic candidates by having the `topics.mjs` engine perform constraint validation, popularity measurement, broad+narrow \u002F singular-plural comparison, and hardcoded ozzy-labs conventions, then applies them via `gh repo edit --add-topic` following the policy's `externally-visible` gate (default batch-confirm). Scope is limited to use within ozzy-labs.","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ftopics\u002FSKILL.md",[],[116,121,122,75,123,124,34,125,126,127,128,30,129,130,131,84,85,132,133,134],"measurement","scope","policy","default","gh","plural","use","comparison","apply","candidate","batch","candidates","github","via",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":151,"publishedAt":38},"01M71J6DC27P4FDSP10SDT2PSN","skill-observability","Defines the skill observability event contract (event.schema.json) and emit substrate (obs-emit.mjs). The SSOT for the measurement layer of the skill improvement loop. Referenced by other skills and hooks.","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fskill-observability\u002FSKILL.md",[141,146],{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":147,"categoryName":148,"taxonomyType":149,"taxonomyTypeDesc":150},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[152,153,121,154,155,156,157,158,159,160,161,162,163,164,165,166],"observability","skill observability","improvement","skill improvement","for","event","hooks","contract","schema","loop","false","substrate","json","improvement loop","layer",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":174,"publishedAt":38},"01M71J6AYECH1J94RAZ49QZ19Y","skill-metrics","Aggregates the local observability event log (~\u002F.agents\u002Fobservability\u002Fevents.jsonl) and presents, read-only, per-skill invocation counts and notable events (fallback \u002F HITL rejection \u002F loop cap reached \u002F abort). Fires on \"show me the skill metrics,\" \"aggregate the observability results,\" \"which skills get used the most?\" Does not send anything.","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fskill-metrics\u002FSKILL.md",[173],{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},[175,176,152,177,178,179,180,181,157,182,183,184,185,34,33,161,186,30,187,28],"skill metrics","metrics","event log","which","show","get","read-only","iso","aggregates","send","local","show me","log",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":194,"publishedAt":38},"01M71J68TD0QFATGW3BBZVCWA2","ship","Runs verification, commit, and PR creation all at once. An integrated pipeline that runs verify (build + type + test + lint) → commit → PR creation in sequence against the changes.","https:\u002F\u002Fgithub.com\u002Fozzy-labs\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fship\u002FSKILL.md",[],[190,195,196,87,197,198,67,199,200,201,107,25,202,24,34,203,30,204,83],"type","verification","changes","pr","creation","build","pipeline","sequence","pr creation","commit"]