[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7BNJS09AVHG7WERN5CAN1SZ":3,"skill-same:01M7BNJS09AVHG7WERN5CAN1SZ":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},"01M7BNJS09AVHG7WERN5CAN1SZ","skilltta-task-guidance",null,"Temporary guidance for reflow profile compliance analysis across 5 sub-questions using handbook.pdf, mes_log.csv, thermocouples.csv, test_defects.csv","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\u002Fcontrolled-skill-repair-experiments\u002Fresult\u002Fskilltta-claude4.7\u002Ftasks\u002Fsingle-manufacturing-equipment-maintenance-RI-002\u002Frepaired_skill\u002Fskilltta-task-guidance\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: skilltta-task-guidance\ndescription: Temporary guidance for reflow profile compliance analysis across 5 sub-questions using handbook.pdf, mes_log.csv, thermocouples.csv, test_defects.csv\n---\n\n# Reflow Profile Compliance Toolkit — Task Guidance\n\n## General workflow\n1. **Always read the handbook first** (`\u002Fapp\u002Fdata\u002Fhandbook.pdf`) to extract authoritative definitions, thresholds, equations, and windows. Do NOT hardcode numeric limits from memory — parse them from the PDF (use `pdfplumber` or `pypdf`).\n2. Load `mes_log.csv` (run metadata: run_id, board_family, board_id, conveyor speed, zone setpoints, etc.), `thermocouples.csv` (time-series temperature per run per tc_id), and `test_defects.csv` (post-reflow defect counts).\n3. For every run, group thermocouple data by `(run_id, tc_id)` and sort by time before computing derivatives or windows.\n4. Write outputs to `\u002Fapp\u002Foutput\u002FqNN.json`, rounding floats to 2 decimals, sorting arrays ascending by key, using `null` where undefined.\n\n## Representative thermocouple selection (CRITICAL)\nThe handbook specifies how to pick the representative tc per run. Common rule patterns to check:\n- **Worst-case \u002F most-conservative** thermocouple (e.g., for ramp: the tc with the HIGHEST max ramp; for peak: the tc with the LOWEST peak; for TAL: the tc with the SHORTEST TAL — because that is the hottest-risk or coolest-risk sensor the handbook flags).\n- Re-read the handbook section for EACH question — the representative rule may differ per metric. In particular for **Q02 (TAL)** the representative tc is typically the one with the **minimum TAL** (coolest joint, worst for wetting), not the maximum. Do not reuse Q01's selection rule blindly.\n- If handbook says \"use the coolest sensor\" \u002F \"leading indicator\" \u002F \"corner tc\", honor that exact wording.\n\n## Q01 — Max preheat ramp rate\n- Extract from handbook: preheat temperature region (e.g., 50 °C → 150 °C or similar), ramp equation (dT\u002Fdt via finite difference), limit (°C\u002Fs).\n- For each (run, tc): filter samples whose temperature lies in the preheat band, compute per-sample `(T[i+1]-T[i])\u002F(t[i+1]-t[i])`, take max.\n- Representative tc per run = tc with the **largest** max preheat ramp (worst case).\n- `violating_runs` = runs whose representative max ramp > limit.\n\n## Q02 — Time Above Liquidus (TAL)\n- Extract liquidus temperature (solder alloy), TAL min and max window from handbook.\n- For each (run, tc): compute total seconds where T ≥ liquidus (integrate using trapezoidal crossing or sum of dt where T≥Tliq, interpolating the entry\u002Fexit crossings for accuracy).\n- Representative tc: per handbook — typically the tc with **minimum TAL** (worst-case joint). Verify by re-reading the TAL section.\n- `status` = compliant iff `required_min ≤ tal_s ≤ required_max`.\n\n## Q03 — Peak temperature\n- Extract required minimum peak temperature from handbook (and max if specified).\n- Per (run, tc): peak = max(T). Representative tc = tc with **lowest** peak (coolest joint).\n- If a run has NO thermocouple data → it fails automatically; include it in `failing_runs` with null fields where appropriate.\n\n## Q04 — Conveyor speed feasibility\n- Extract from handbook: board length (geometry), heated tunnel length or zone length, required thermal dwell time (sum of preheat+soak+reflow+cooling residence requirements), min\u002Fmax allowable conveyor speed.\n- `required_min_speed_cm_min` is typically derived from max allowable dwell constraint OR handbook-stated minimum; `actual_speed_cm_min` comes from `mes_log.csv`.\n- `meets` = actual within handbook speed window AND satisfies dwell requirement for that board_family.\n\n## Q05 — Best run per board_family\n- Combine: profile compliance (Q01–Q03 pass), TAL within window, defect rate from `test_defects.csv` (lower = better quality), throughput\u002Fefficiency (higher conveyor speed within spec = better).\n- Rank: first by compliance (compliant runs beat non-compliant), then by lowest defect rate, then by highest feasible conveyor speed.\n- `best_run_id` = top; `runner_up_run_ids` = remaining runs in that family sorted by rank (ascending run_id when tied).\n\n## Patterns borrowed from retrieved examples\n- **Deterministic I\u002FO with explicit schema** (BigCodeBench\u002F764 CSV writer): always emit the exact JSON schema requested, in the order\u002Fshape specified, even for empty lists — mirrors the discipline of writing CSV with fixed fieldnames.\n- **Group-and-aggregate** (BigCodeBench\u002F69 salary histogram per department): the `groupby(run_id, tc_id)` → aggregate pattern is identical. Iterate groups, compute scalar metric, then reduce across tcs per run using the handbook's selection rule.\n- **Parse-then-filter-then-count** (BigCodeBench\u002F761 JSON cleanup): mirror this for handbook parsing — extract raw text, regex out the specific numeric thresholds (e.g., `r\"([0-9.]+)\\s*°?C\u002Fs\"`, `r\"liquidus[^0-9]*([0-9.]+)\"`), validate, then apply. Never guess if regex fails — re-read with a different page\u002Fsection.\n\n## Validation checklist before writing JSON\n- [ ] All limits came from handbook text extraction, not assumptions.\n- [ ] Representative tc rule applied PER QUESTION (not globally reused).\n- [ ] Floats rounded to 2 decimals.\n- [ ] Arrays sorted ascending by `run_id` \u002F `board_family` \u002F `board_id`.\n- [ ] Runs without thermocouple data handled explicitly (fail for Q03, null fields elsewhere).\n- [ ] Output file path exactly `\u002Fapp\u002Foutput\u002FqNN.json`.\n","# Reflow Profile Compliance Toolkit — Task Guidance\n\n## General workflow\n1. **Always read the handbook first** (`\u002Fapp\u002Fdata\u002Fhandbook.pdf`) to extract authoritative definitions, thresholds, equations, and windows. Do NOT hardcode numeric limits from memory — parse them from the PDF (use `pdfplumber` or `pypdf`).\n2. Load `mes_log.csv` (run metadata: run_id, board_family, board_id, conveyor speed, zone setpoints, etc.), `thermocouples.csv` (time-series temperature per run per tc_id), and `test_defects.csv` (post-reflow defect counts).\n3. For every run, group thermocouple data by `(run_id, tc_id)` and sort by time before computing derivatives or windows.\n4. Write outputs to `\u002Fapp\u002Foutput\u002FqNN.json`, rounding floats to 2 decimals, sorting arrays ascending by key, using `null` where undefined.\n\n## Representative thermocouple selection (CRITICAL)\nThe handbook specifies how to pick the representative tc per run. Common rule patterns to check:\n- **Worst-case \u002F most-conservative** thermocouple (e.g., for ramp: the tc with the HIGHEST max ramp; for peak: the tc with the LOWEST peak; for TAL: the tc with the SHORTEST TAL — because that is the hottest-risk or coolest-risk sensor the handbook flags).\n- Re-read the handbook section for EACH question — the representative rule may differ per metric. In particular for **Q02 (TAL)** the representative tc is typically the one with the **minimum TAL** (coolest joint, worst for wetting), not the maximum. Do not reuse Q01's selection rule blindly.\n- If handbook says \"use the coolest sensor\" \u002F \"leading indicator\" \u002F \"corner tc\", honor that exact wording.\n\n## Q01 — Max preheat ramp rate\n- Extract from handbook: preheat temperature region (e.g., 50 °C → 150 °C or similar), ramp equation (dT\u002Fdt via finite difference), limit (°C\u002Fs).\n- For each (run, tc): filter samples whose temperature lies in the preheat band, compute per-sample `(T[i+1]-T[i])\u002F(t[i+1]-t[i])`, take max.\n- Representative tc per run = tc with the **largest** max preheat ramp (worst case).\n- `violating_runs` = runs whose representative max ramp > limit.\n\n## Q02 — Time Above Liquidus (TAL)\n- Extract liquidus temperature (solder alloy), TAL min and max window from handbook.\n- For each (run, tc): compute total seconds where T ≥ liquidus (integrate using trapezoidal crossing or sum of dt where T≥Tliq, interpolating the entry\u002Fexit crossings for accuracy).\n- Representative tc: per handbook — typically the tc with **minimum TAL** (worst-case joint). Verify by re-reading the TAL section.\n- `status` = compliant iff `required_min ≤ tal_s ≤ required_max`.\n\n## Q03 — Peak temperature\n- Extract required minimum peak temperature from handbook (and max if specified).\n- Per (run, tc): peak = max(T). Representative tc = tc with **lowest** peak (coolest joint).\n- If a run has NO thermocouple data → it fails automatically; include it in `failing_runs` with null fields where appropriate.\n\n## Q04 — Conveyor speed feasibility\n- Extract from handbook: board length (geometry), heated tunnel length or zone length, required thermal dwell time (sum of preheat+soak+reflow+cooling residence requirements), min\u002Fmax allowable conveyor speed.\n- `required_min_speed_cm_min` is typically derived from max allowable dwell constraint OR handbook-stated minimum; `actual_speed_cm_min` comes from `mes_log.csv`.\n- `meets` = actual within handbook speed window AND satisfies dwell requirement for that board_family.\n\n## Q05 — Best run per board_family\n- Combine: profile compliance (Q01–Q03 pass), TAL within window, defect rate from `test_defects.csv` (lower = better quality), throughput\u002Fefficiency (higher conveyor speed within spec = better).\n- Rank: first by compliance (compliant runs beat non-compliant), then by lowest defect rate, then by highest feasible conveyor speed.\n- `best_run_id` = top; `runner_up_run_ids` = remaining runs in that family sorted by rank (ascending run_id when tied).\n\n## Patterns borrowed from retrieved examples\n- **Deterministic I\u002FO with explicit schema** (BigCodeBench\u002F764 CSV writer): always emit the exact JSON schema requested, in the order\u002Fshape specified, even for empty lists — mirrors the discipline of writing CSV with fixed fieldnames.\n- **Group-and-aggregate** (BigCodeBench\u002F69 salary histogram per department): the `groupby(run_id, tc_id)` → aggregate pattern is identical. Iterate groups, compute scalar metric, then reduce across tcs per run using the handbook's selection rule.\n- **Parse-then-filter-then-count** (BigCodeBench\u002F761 JSON cleanup): mirror this for handbook parsing — extract raw text, regex out the specific numeric thresholds (e.g., `r\"([0-9.]+)\\s*°?C\u002Fs\"`, `r\"liquidus[^0-9]*([0-9.]+)\"`), validate, then apply. Never guess if regex fails — re-read with a different page\u002Fsection.\n\n## Validation checklist before writing JSON\n- [ ] All limits came from handbook text extraction, not assumptions.\n- [ ] Representative tc rule applied PER QUESTION (not globally reused).\n- [ ] Floats rounded to 2 decimals.\n- [ ] Arrays sorted ascending by `run_id` \u002F `board_family` \u002F `board_id`.\n- [ ] Runs without thermocouple data handled explicitly (fail for Q03, null fields elsewhere).\n- [ ] Output file path exactly `\u002Fapp\u002Foutput\u002FqNN.json`.\n",{"name":5,"description":7},"main","cdcb6d230f3b15c3c33f8a2bdd16439f43602cbe","controlled-skill-repair-experiments\u002Fresult\u002Fskilltta-claude4.7\u002Ftasks\u002Fsingle-manufacturing-equipment-maintenance-RI-002\u002Frepaired_skill\u002Fskilltta-task-guidance",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 skilltta-task-guidance",{"tool":37,"command":38},"bunx","bunx skills add linyouxue\u002Fskill-repair-benchmark --skill skilltta-task-guidance",{"tool":40,"command":41},"pnpm","pnpm dlx skills add linyouxue\u002Fskill-repair-benchmark --skill skilltta-task-guidance","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fcontrolled-skill-repair-experiments\u002Fresult\u002Fskilltta-claude4.7\u002Ftasks\u002Fsingle-manufacturing-equipment-maintenance-RI-002\u002Frepaired_skill\u002Fskilltta-task-guidance\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",[],[]]