[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X04HHTWFS59KC92JR3GJT5":3,"skill-same:01M6X04HHTWFS59KC92JR3GJT5":73},{"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":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":14,"repositoryHtmlUrl":55,"repositoryHomepageUrl":56,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M6X04HHTWFS59KC92JR3GJT5","debugging",null,"Systematic debugging — reproduce, read the error, isolate, hypothesize, fix, verify, document. Use when tracking down a bug, unexpected behavior, or test failure — including phrases like \"this doesn't work\", \"why is this failing\", or \"help me debug\".","projectious-work\u002Fprocesskit","projectious-work","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F263889726?v=4","01M6N97TJJ118WQ35CHRV8RD0E","projectious.work","01M6N97TPWJPF0BMKYQ4PBY5W8",0,"MIT","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.18.2\u002Fcontext\u002Fskills\u002Fengineering\u002Fdebugging\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"fix","failing","when","down","v1","error","systematic","me","document","use","test","behavior","read","work","why","verify","help","systematic debugging","debug","2026-11-10 10:12:30",false,"---\nname: debugging\ndescription: |\n  Systematic debugging — reproduce, read the error, isolate, hypothesize, fix, verify, document. Use when tracking down a bug, unexpected behavior, or test failure — including phrases like \"this doesn't work\", \"why is this failing\", or \"help me debug\".\nmetadata:\n  processkit:\n    apiVersion: processkit.projectious.work\u002Fv1\n    id: SKILL-debugging\n    version: \"1.1.0\"\n    created: 2026-04-06T00:00:00Z\n    category: engineering\n    layer: 3\n---\n\n# Debugging\n\n## Intro\n\nDebugging is a fixed loop: reproduce the failure, read the error,\nisolate the cause, fix it, verify the fix, and add a regression\ntest. Skipping steps causes the bug to come back.\n\n## Overview\n\n### The debugging loop\n\n1. **Reproduce** — get the exact steps, inputs, and error\n   messages. Confirm you can trigger the issue on demand.\n2. **Read the error** — parse the full stack trace or error\n   message. The root cause is usually in the first or last frame,\n   not the middle.\n3. **Isolate** — narrow the scope:\n   - Binary search through code (comment out halves)\n   - Check recent changes (`git log`, `git diff`)\n   - Add targeted logging or print statements\n   - Test with the minimal failing input\n4. **Hypothesize and test** — form a theory, then test it. Change\n   one thing at a time.\n5. **Fix** — apply the minimal change that resolves the issue.\n6. **Verify** — confirm the original error is gone, run the full\n   test suite for regressions, and exercise edge cases near the\n   fix.\n7. **Document** — add a test that would have caught this bug, and\n   a comment if the fix is non-obvious.\n\n### Common diagnosis paths\n\n- **Tests pass locally, fail in CI** — environment differences:\n  OS, dependency versions, file paths, timezone, locale, or race\n  conditions in parallel tests. Compare CI logs with local output\n  to find the divergence point.\n- **Function returns wrong results for some inputs** — get the\n  specific failing inputs, add assertions at intermediate steps,\n  find where actual diverges from expected, trace back.\n\n## Gotchas\n\nAgent-specific failure modes — provider-neutral pause-and-self-check items:\n\n- **Changing multiple things at once.** When more than one variable changes between a broken and fixed state, you cannot know which change fixed the issue — and you may have introduced new bugs alongside the fix. Change one thing at a time.\n- **Skipping the reproduction step.** Starting to diagnose before having a reliable reproduction means you're hunting in the dark. Confirm you can trigger the failure on demand before doing anything else.\n- **Stopping at the first fix that makes the symptom disappear.** The first change that silences the error may be masking the root cause. Verify that the underlying state is correct, not just the visible output.\n- **No regression test after the fix.** A bug that was fixed without a test will return. Add a test that would have caught it before closing the issue.\n- **Adding print statements everywhere without a plan.** Each print should test a specific hypothesis (\"is the value non-nil here?\"). Random prints produce noise that slows diagnosis.\n- **Confusing correlation with causation in logs.** The last log entry before a crash is rarely the cause — it is just the last thing that ran. Trace the full causal chain; do not assume temporal proximity implies causation.\n- **Treating a CI\u002Flocal mismatch as mysterious.** Environment differences (OS, timezone, locale, implicit tool version, parallel test ordering) are the most common cause. Diff the CI environment against local systematically rather than guessing.\n\n## Full reference\n\n### Anti-patterns\n\n- **Shotgun debugging** — changing many things at once. You won't\n  know which fix worked, and you'll introduce new bugs.\n- **Print-statement spelunking with no plan** — adding prints is\n  fine, but each one should test a specific hypothesis.\n- **Skipping reproduction** — \"it sometimes fails\" is not a bug\n  report. Find the trigger first.\n- **Stopping at the first fix** — the first thing that makes the\n  symptom go away is often masking the real cause. Verify the\n  underlying state is correct, not just the visible output.\n- **No regression test** — if you don't add a test, the bug will\n  return.\n\n### Tools and techniques\n\n- **`git bisect`** for regressions: a known-good and known-bad\n  commit narrows the offending change in log(N) steps.\n- **Debuggers over prints** when state is rich (object graphs,\n  step-through control flow).\n- **Differential debugging** — diff the working case against the\n  failing case, not the other way around.\n- **Rubber-duck explanation** — articulating the problem out loud\n  often surfaces the bug before you write any code.\n\n### When to stop and ask\n\nIf you've spent more than ~30 minutes without forming a viable\nhypothesis, stop and either gather more information (logs,\nreproduction steps, recent commits) or escalate. Continued flailing\nis not progress.\n","# Debugging\n\n## Intro\n\nDebugging is a fixed loop: reproduce the failure, read the error,\nisolate the cause, fix it, verify the fix, and add a regression\ntest. Skipping steps causes the bug to come back.\n\n## Overview\n\n### The debugging loop\n\n1. **Reproduce** — get the exact steps, inputs, and error\n   messages. Confirm you can trigger the issue on demand.\n2. **Read the error** — parse the full stack trace or error\n   message. The root cause is usually in the first or last frame,\n   not the middle.\n3. **Isolate** — narrow the scope:\n   - Binary search through code (comment out halves)\n   - Check recent changes (`git log`, `git diff`)\n   - Add targeted logging or print statements\n   - Test with the minimal failing input\n4. **Hypothesize and test** — form a theory, then test it. Change\n   one thing at a time.\n5. **Fix** — apply the minimal change that resolves the issue.\n6. **Verify** — confirm the original error is gone, run the full\n   test suite for regressions, and exercise edge cases near the\n   fix.\n7. **Document** — add a test that would have caught this bug, and\n   a comment if the fix is non-obvious.\n\n### Common diagnosis paths\n\n- **Tests pass locally, fail in CI** — environment differences:\n  OS, dependency versions, file paths, timezone, locale, or race\n  conditions in parallel tests. Compare CI logs with local output\n  to find the divergence point.\n- **Function returns wrong results for some inputs** — get the\n  specific failing inputs, add assertions at intermediate steps,\n  find where actual diverges from expected, trace back.\n\n## Gotchas\n\nAgent-specific failure modes — provider-neutral pause-and-self-check items:\n\n- **Changing multiple things at once.** When more than one variable changes between a broken and fixed state, you cannot know which change fixed the issue — and you may have introduced new bugs alongside the fix. Change one thing at a time.\n- **Skipping the reproduction step.** Starting to diagnose before having a reliable reproduction means you're hunting in the dark. Confirm you can trigger the failure on demand before doing anything else.\n- **Stopping at the first fix that makes the symptom disappear.** The first change that silences the error may be masking the root cause. Verify that the underlying state is correct, not just the visible output.\n- **No regression test after the fix.** A bug that was fixed without a test will return. Add a test that would have caught it before closing the issue.\n- **Adding print statements everywhere without a plan.** Each print should test a specific hypothesis (\"is the value non-nil here?\"). Random prints produce noise that slows diagnosis.\n- **Confusing correlation with causation in logs.** The last log entry before a crash is rarely the cause — it is just the last thing that ran. Trace the full causal chain; do not assume temporal proximity implies causation.\n- **Treating a CI\u002Flocal mismatch as mysterious.** Environment differences (OS, timezone, locale, implicit tool version, parallel test ordering) are the most common cause. Diff the CI environment against local systematically rather than guessing.\n\n## Full reference\n\n### Anti-patterns\n\n- **Shotgun debugging** — changing many things at once. You won't\n  know which fix worked, and you'll introduce new bugs.\n- **Print-statement spelunking with no plan** — adding prints is\n  fine, but each one should test a specific hypothesis.\n- **Skipping reproduction** — \"it sometimes fails\" is not a bug\n  report. Find the trigger first.\n- **Stopping at the first fix** — the first thing that makes the\n  symptom go away is often masking the real cause. Verify the\n  underlying state is correct, not just the visible output.\n- **No regression test** — if you don't add a test, the bug will\n  return.\n\n### Tools and techniques\n\n- **`git bisect`** for regressions: a known-good and known-bad\n  commit narrows the offending change in log(N) steps.\n- **Debuggers over prints** when state is rich (object graphs,\n  step-through control flow).\n- **Differential debugging** — diff the working case against the\n  failing case, not the other way around.\n- **Rubber-duck explanation** — articulating the problem out loud\n  often surfaces the bug before you write any code.\n\n### When to stop and ask\n\nIf you've spent more than ~30 minutes without forming a viable\nhypothesis, stop and either gather more information (logs,\nreproduction steps, recent commits) or escalate. Continued flailing\nis not progress.\n",{"name":5,"metadata":43,"description":51},{"processkit":44},{"id":45,"layer":46,"created":47,"version":48,"category":49,"apiVersion":50},"SKILL-debugging",3,1775433600000,"1.1.0","engineering","processkit.projectious.work\u002Fv1","Systematic debugging — reproduce, read the error, isolate, hypothesize, fix, verify, document. Use when tracking down a bug, unexpected behavior, or test failure — including phrases like \"this doesn't work\", \"why is this failing\", or \"help me debug\".\n","main","4876a92620ee792aac2ac9a1a806322d8a572367","archive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.18.2\u002Fcontext\u002Fskills\u002Fengineering\u002Fdebugging","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit","https:\u002F\u002Fprojectious-work.github.io\u002Fprocesskit\u002F","https:\u002F\u002Fgithub.com\u002Fprojectious-work","2026-11-09 00:53:29",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add projectious-work\u002Fprocesskit --skill debugging",{"tool":65,"command":66},"bunx","bunx skills add projectious-work\u002Fprocesskit --skill debugging",{"tool":68,"command":69},"pnpm","pnpm dlx skills add projectious-work\u002Fprocesskit --skill debugging","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.18.2\u002Fcontext\u002Fskills\u002Fengineering\u002Fdebugging\u002FSKILL.md",true,[],[74,100,120,141,158,176],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":85,"publishedAt":38},"01M6X5MTC89B4ZGXW3JVSQCPF8","skill-management","Manage Skill package manifests as v1 ontology entities.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fskill-management\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[86,87,88,89,90,91,32,92,93,94,76,95,96,97,23,98,99],"management","skill management","create","update","package","alpha","list","manage","ontology","get","as","manifests","skill package","transition",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":107,"publishedAt":38},"01M6X5MCV74NHW5MEDNHZRF2C8","schema-management","Manage generated processkit schema contracts through deterministic MCP rebuild and inspection workflows.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fschema-management\u002FSKILL.md",[106],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[86,108,109,110,111,112,91,32,113,114,93,115,116,117,95,118,119],"schema","schema management","MCP","workflows","validation","generated","rebuild","contracts","wed","deterministic","contract","mode",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":38},"01M6X5M5G6YJ96AMZGSCZJ1D13","proposition-management","Record claims, risks, beliefs, world facts, WSJF estimates, and assumptions through the Proposition interface.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fproposition-management\u002FSKILL.md",[],[86,127,128,88,89,129,91,32,130,131,132,133,95,134,135,136,137,138,139,140],"proposition","proposition management","index","log","world","record","query","creation","event","interface","updates","facts","claims","WSJF",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":38},"01M6X5KMQ83QN9M6MPWZM7344F","ontology-management","Manage generated v1 ontology entities that do not require a dedicated domain server.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fontology-management\u002FSKILL.md",[],[86,94,148,88,91,149,150,113,151,130,93,152,153,95,154,155,135,156,23,157],"ontology management","lifecycle","archive","roadmap","do","domain","iteration","keep","measurement","generic",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":38},"01M6X5KCY2DN3SM21RERSFNEBT","okf-compatibility","Import, export, and validate conformant Open Knowledge Format bundles.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fokf-compatibility\u002FSKILL.md",[],[165,166,167,168,91,169,170,171,32,172,173,174,175],"okf","compatibility","okf compatibility","validate","open","knowledge","format","export","bundles","bundle","import",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":182,"publishedAt":38},"01M6X5JA8S5PNGJVFW4EQY8T83","capability-management","Manage versioned Capability entities and their governed lifecycle.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fcapability-management\u002FSKILL.md",[],[86,183,184,88,89,129,91,149,32,92,130,185,93,132,95,155,135,136,186,99],"capability","capability management","queries","changes"]