[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7BVG42NXAPTCSW6VHY6DVCS":3,"skill-same:01M7BVG42NXAPTCSW6VHY6DVCS":45},{"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":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7BVG42NXAPTCSW6VHY6DVCS","sampling-and-indexing",null,"Standardize video sampling and frame indexing so interval instructions and mask frames stay aligned with a valid key\u002Findex scheme.","linyouxue\u002Fskill-repair-benchmark","linyouxue","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F216151464?v=4","01M7BJEVCXKD74KH6FG9CBVSQB","林宥学","01M7BJEVE02NP217V93BKZFC0J",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FMMG2Skill-Opus47-Gold15-20260924\u002Fruns\u002Fmmg2skill-opus47-gold15-20260924\u002Fdynamic-object-aware-egomotion-mmg2skill-opus47-r001\u002Finputs\u002Fskills\u002Fsampling-and-indexing\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: sampling-and-indexing\ndescription: \"Standardize video sampling and frame indexing so interval instructions and mask frames stay aligned with a valid key\u002Findex scheme.\"\n---\n\n# When to use\n- You need to decide a sampling stride\u002FFPS and ensure *all downstream outputs* (interval instructions, per-frame artifacts, etc.) cover the same frame range with consistent indices.\n# Core steps\n- Read video metadata: frame count, source fps, resolution.\n- Compute step for a target sampling rate: `step = max(1, round(src_fps \u002F target_fps))` (e.g. src_fps=60, target=5 → step=12).\n- Build `sample_ids = list(range(0, n, step))`; do NOT append `n-1` if that would break the uniform-stride assumption — the interval keys index into `sample_ids`, not raw video frames.\n- Interval keys are indices into `sample_ids` (0-based), half-open: `\"0->1\"` labels sampled frame 0 only. The full partition spans `[0, len(sample_ids))`.\n- Produce instructions and per-frame masks only for `sample_ids`, and use the sampled-index positions as keys.\n# Pseudocode\n```python\nimport cv2\nVIDEO_PATH = \"\u002Froot\u002Finput.mp4\"\ncap=cv2.VideoCapture(VIDEO_PATH)\nn=int(cap.get(cv2.CAP_PROP_FRAME_COUNT))\nsrc_fps=cap.get(cv2.CAP_PROP_FPS)\ntarget_fps=5\nstep=max(1, round(src_fps\u002Ftarget_fps))\nsample_ids=list(range(0, n, step))\nn_samples=len(sample_ids)\n# Interval JSON keys and NPZ f_{i}_* both use i in [0, n_samples).\n```\n# Self-check list\n- [ ] `sample_ids` strictly increasing, all `\u003C n`.\n- [ ] JSON interval keys are indices into `sample_ids`, forming a half-open partition of `[0, n_samples)`.\n- [ ] NPZ has exactly `n_samples` frames, keyed `f_0 .. f_{n_samples-1}`.\n- [ ] Sampling rate matches the task-specified fps (e.g. fps=5).\n","# When to use\n- You need to decide a sampling stride\u002FFPS and ensure *all downstream outputs* (interval instructions, per-frame artifacts, etc.) cover the same frame range with consistent indices.\n# Core steps\n- Read video metadata: frame count, source fps, resolution.\n- Compute step for a target sampling rate: `step = max(1, round(src_fps \u002F target_fps))` (e.g. src_fps=60, target=5 → step=12).\n- Build `sample_ids = list(range(0, n, step))`; do NOT append `n-1` if that would break the uniform-stride assumption — the interval keys index into `sample_ids`, not raw video frames.\n- Interval keys are indices into `sample_ids` (0-based), half-open: `\"0->1\"` labels sampled frame 0 only. The full partition spans `[0, len(sample_ids))`.\n- Produce instructions and per-frame masks only for `sample_ids`, and use the sampled-index positions as keys.\n# Pseudocode\n```python\nimport cv2\nVIDEO_PATH = \"\u002Froot\u002Finput.mp4\"\ncap=cv2.VideoCapture(VIDEO_PATH)\nn=int(cap.get(cv2.CAP_PROP_FRAME_COUNT))\nsrc_fps=cap.get(cv2.CAP_PROP_FPS)\ntarget_fps=5\nstep=max(1, round(src_fps\u002Ftarget_fps))\nsample_ids=list(range(0, n, step))\nn_samples=len(sample_ids)\n# Interval JSON keys and NPZ f_{i}_* both use i in [0, n_samples).\n```\n# Self-check list\n- [ ] `sample_ids` strictly increasing, all `\u003C n`.\n- [ ] JSON interval keys are indices into `sample_ids`, forming a half-open partition of `[0, n_samples)`.\n- [ ] NPZ has exactly `n_samples` frames, keyed `f_0 .. f_{n_samples-1}`.\n- [ ] Sampling rate matches the task-specified fps (e.g. fps=5).\n",{"name":5,"description":7},"main","cdcb6d230f3b15c3c33f8a2bdd16439f43602cbe","evaluation\u002Fresults\u002FMMG2Skill-Opus47-Gold15-20260924\u002Fruns\u002Fmmg2skill-opus47-gold15-20260924\u002Fdynamic-object-aware-egomotion-mmg2skill-opus47-r001\u002Finputs\u002Fskills\u002Fsampling-and-indexing",1,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark","https:\u002F\u002Fgithub.com\u002Flinyouxue","2026-11-14 20:28:35",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add linyouxue\u002Fskill-repair-benchmark --skill sampling-and-indexing",{"tool":37,"command":38},"bunx","bunx skills add linyouxue\u002Fskill-repair-benchmark --skill sampling-and-indexing",{"tool":40,"command":41},"pnpm","pnpm dlx skills add linyouxue\u002Fskill-repair-benchmark --skill sampling-and-indexing","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FMMG2Skill-Opus47-Gold15-20260924\u002Fruns\u002Fmmg2skill-opus47-gold15-20260924\u002Fdynamic-object-aware-egomotion-mmg2skill-opus47-r001\u002Finputs\u002Fskills\u002Fsampling-and-indexing\u002FSKILL.md",true,[],[46,53,60,67,72,77],{"skillNo":47,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":52,"publishedAt":19},"01M7E1HGVRY73NBJ022CJG13X6","video-frame-extraction","Extract frames from video files and save them as images using OpenCV","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":59,"publishedAt":19},"01M7E1HAG5R7CJ9C8NYJS771MB","openai-vision","Analyze images and multi-frame sequences using OpenAI GPT vision models","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"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},"01M7E1H7DADKB6QBWKC2KQ63SZ","image-ocr","Extract text content from images using Tesseract OCR via Python, including structured field extraction from receipts and forms","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[],{"skillNo":68,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":19},"01M7E1H0WBNT43TENGQY7AVZHD","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":73,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M7E1GTC7D4N4Q2EF03875J9E","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":78,"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":79,"categories":80,"keywords":81,"publishedAt":19},"01M7E1GQ92CWFMGH53KSSE4WER","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[]]