[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7BRK2WT57N0175YA3PJSJRY":3,"skill-same:01M7BRK2WT57N0175YA3PJSJRY":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},"01M7BRK2WT57N0175YA3PJSJRY","pid-controller",null,"Use this skill when implementing PID control loops for adaptive cruise control, vehicle speed regulation, throttle\u002Fbrake management, or any feedback control system requiring proportional-integral-derivative control.","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\u002FHumanAnnotated-Claude-Gold28-20261007\u002Ftasks\u002Fadaptive-cruise-control\u002Frepaired_skill\u002Fpid-controller\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: pid-controller\ndescription: Use this skill when implementing PID control loops for adaptive cruise control, vehicle speed regulation, throttle\u002Fbrake management, or any feedback control system requiring proportional-integral-derivative control.\n---\n\n# PID Controller Implementation\n\n## Overview\n\nA PID (Proportional-Integral-Derivative) controller is a feedback control mechanism used in industrial control systems. It continuously calculates an error value and applies a correction based on proportional, integral, and derivative terms.\n\n## Control Law\n\n```\noutput = Kp * error + Ki * integral(error) + Kd * derivative(error)\n```\n\nWhere:\n- `error` = setpoint - measured_value\n- `Kp` = proportional gain (reacts to current error)\n- `Ki` = integral gain (reacts to accumulated error)\n- `Kd` = derivative gain (reacts to rate of change)\n\n## Discrete-Time Implementation\n\n```python\nclass PIDController:\n    def __init__(self, kp, ki, kd, output_min=None, output_max=None):\n        self.kp = kp\n        self.ki = ki\n        self.kd = kd\n        self.output_min = output_min\n        self.output_max = output_max\n        self.integral = 0.0\n        self.prev_error = 0.0\n\n    def reset(self):\n        \"\"\"Clear controller state.\"\"\"\n        self.integral = 0.0\n        self.prev_error = 0.0\n\n    def compute(self, error, dt):\n        \"\"\"Compute control output given error and timestep.\"\"\"\n        # Proportional term\n        p_term = self.kp * error\n\n        # Integral term\n        self.integral += error * dt\n        i_term = self.ki * self.integral\n\n        # Derivative term\n        derivative = (error - self.prev_error) \u002F dt if dt > 0 else 0.0\n        d_term = self.kd * derivative\n        self.prev_error = error\n\n        # Total output\n        output = p_term + i_term + d_term\n\n        # Output clamping (optional)\n        if self.output_min is not None:\n            output = max(output, self.output_min)\n        if self.output_max is not None:\n            output = min(output, self.output_max)\n\n        return output\n```\n\n## Anti-Windup\n\nIntegral windup occurs when output saturates but integral keeps accumulating. Solutions:\n\n1. **Clamping**: Limit integral term magnitude\n2. **Conditional Integration**: Only integrate when not saturated\n3. **Back-calculation**: Reduce integral when output is clamped\n\n## Tuning Guidelines\n\n**Manual Tuning:**\n1. Set Ki = Kd = 0\n2. Increase Kp until acceptable response speed\n3. Add Ki to eliminate steady-state error\n4. Add Kd to reduce overshoot\n\n**Effect of Each Gain:**\n- Higher Kp -> faster response, more overshoot\n- Higher Ki -> eliminates steady-state error, can cause oscillation\n- Higher Kd -> reduces overshoot, sensitive to noise\n","# PID Controller Implementation\n\n## Overview\n\nA PID (Proportional-Integral-Derivative) controller is a feedback control mechanism used in industrial control systems. It continuously calculates an error value and applies a correction based on proportional, integral, and derivative terms.\n\n## Control Law\n\n```\noutput = Kp * error + Ki * integral(error) + Kd * derivative(error)\n```\n\nWhere:\n- `error` = setpoint - measured_value\n- `Kp` = proportional gain (reacts to current error)\n- `Ki` = integral gain (reacts to accumulated error)\n- `Kd` = derivative gain (reacts to rate of change)\n\n## Discrete-Time Implementation\n\n```python\nclass PIDController:\n    def __init__(self, kp, ki, kd, output_min=None, output_max=None):\n        self.kp = kp\n        self.ki = ki\n        self.kd = kd\n        self.output_min = output_min\n        self.output_max = output_max\n        self.integral = 0.0\n        self.prev_error = 0.0\n\n    def reset(self):\n        \"\"\"Clear controller state.\"\"\"\n        self.integral = 0.0\n        self.prev_error = 0.0\n\n    def compute(self, error, dt):\n        \"\"\"Compute control output given error and timestep.\"\"\"\n        # Proportional term\n        p_term = self.kp * error\n\n        # Integral term\n        self.integral += error * dt\n        i_term = self.ki * self.integral\n\n        # Derivative term\n        derivative = (error - self.prev_error) \u002F dt if dt > 0 else 0.0\n        d_term = self.kd * derivative\n        self.prev_error = error\n\n        # Total output\n        output = p_term + i_term + d_term\n\n        # Output clamping (optional)\n        if self.output_min is not None:\n            output = max(output, self.output_min)\n        if self.output_max is not None:\n            output = min(output, self.output_max)\n\n        return output\n```\n\n## Anti-Windup\n\nIntegral windup occurs when output saturates but integral keeps accumulating. Solutions:\n\n1. **Clamping**: Limit integral term magnitude\n2. **Conditional Integration**: Only integrate when not saturated\n3. **Back-calculation**: Reduce integral when output is clamped\n\n## Tuning Guidelines\n\n**Manual Tuning:**\n1. Set Ki = Kd = 0\n2. Increase Kp until acceptable response speed\n3. Add Ki to eliminate steady-state error\n4. Add Kd to reduce overshoot\n\n**Effect of Each Gain:**\n- Higher Kp -> faster response, more overshoot\n- Higher Ki -> eliminates steady-state error, can cause oscillation\n- Higher Kd -> reduces overshoot, sensitive to noise\n",{"name":5,"description":7},"main","cdcb6d230f3b15c3c33f8a2bdd16439f43602cbe","evaluation\u002Fresults\u002FHumanAnnotated-Claude-Gold28-20261007\u002Ftasks\u002Fadaptive-cruise-control\u002Frepaired_skill\u002Fpid-controller",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 pid-controller",{"tool":37,"command":38},"bunx","bunx skills add linyouxue\u002Fskill-repair-benchmark --skill pid-controller",{"tool":40,"command":41},"pnpm","pnpm dlx skills add linyouxue\u002Fskill-repair-benchmark --skill pid-controller","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FHumanAnnotated-Claude-Gold28-20261007\u002Ftasks\u002Fadaptive-cruise-control\u002Frepaired_skill\u002Fpid-controller\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",[],[]]