[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7C0YR2G4WDJ6C0HE05G6MRD":3,"skill-same:01M7C0YR2G4WDJ6C0HE05G6MRD":95},{"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":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":29,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7C0YR2G4WDJ6C0HE05G6MRD","why",null,"Use for 'why does X work this way', 'why we picked Y', design rationale, regressions, postmortems, or data-backed thresholds. Searches available evidence sources and returns a cited account of decisions and tradeoffs. Use how for runtime behavior.","MateuszRomek\u002Fskills","MateuszRomek","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F46934668?v=4","01M7C0PY1M3ENSCMRTV5QZJQG4","Mateusz Romek","01M7C0PY2JNPFD2DP2HQ0YW7BV",0,"MIT","https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: why\ndescription: \"Use for 'why does X work this way', 'why we picked Y', design rationale, regressions, postmortems, or data-backed thresholds. Searches available evidence sources and returns a cited account of decisions and tradeoffs. Use how for runtime behavior.\"\n---\n\n# Why\n\nInvestigate the motivation and intent behind code. The `how` skill explains what the code does. This skill explains which constraints and decisions gave it that shape.\n\n## Operating posture\n\nAct as a careful investigator. Separate direct evidence from inference, surface contradictions, and name missing evidence. Read `references\u002Fepistemics.md` before synthesis.\n\n## Step 1. Understand the target\n\nIdentify the code, pattern, feature, or decision in question. If the target is vague, state the best interpretation from the conversation and proceed.\n\n## Step 2. Establish the code anchor\n\nBefore searching other sources, collect:\n\n- the relevant paths, lines, and symbols;\n- recent commits that touched them;\n- pull request and ticket identifiers from those commits.\n\nUse the repository's own history and forge tools. Typical commands include:\n\n```bash\ngit blame -L \u003Cstart>,\u003Cend> \u003Cfile>\ngit log --follow -p -- \u003Cfile>\ngit log --oneline -20 -- \u003Cfile>\ngit log -1 --format=%B \u003Ccommit>\n```\n\nFetch the body and discussion for substantive pull requests. Pass the resulting code anchor to every evidence search.\n\n## Step 3. Search the available evidence\n\nResolve host capabilities and the active profile through [`HOST-COMPATIBILITY.md`](..\u002F..\u002Fagent-mode\u002FHOST-COMPATIBILITY.md). Inspect live tools, MCP servers, connectors, and shared resources.\n\nMap each available source to one category:\n\n1. source control history;\n2. issue or ticket tracking;\n3. long-form documents;\n4. real-time team chat;\n5. infrastructure observability;\n6. error tracking;\n7. product analytics.\n\nSource control is always available. Record missing categories instead of pretending they were searched.\n\nCreate a semantic unit for every available category. Dispatch the units as `why-investigators` through the active profile. Its partition rule may assign several units to a worker. Keep the units distinct and instructionally read-only.\n\nEach unit receives:\n\n1. `references\u002Finvestigator-prompt.md`;\n2. the matching playbook under `references\u002Fsources\u002F`;\n3. `references\u002Fsources\u002Fincident-postmortem.md` when the target contains defensive runtime behavior;\n4. the code anchor;\n5. the user's question.\n\n### Evidence categories\n\n- **Source control.** Git history, pull requests, comments, tests, and repository documents. This is the only guaranteed source.\n- **Issue tracker.** Product or business constraints recorded in tickets.\n- **Long-form documents.** Design rationale in specifications, ADRs, and postmortems.\n- **Team chat.** Deliberation that never reached a durable document.\n- **Infrastructure observability.** Runtime conditions that motivated limits, retries, timeouts, or similar defenses.\n- **Error tracking.** Specific failures that motivated corrective code.\n- **Product analytics.** Usage or data distributions that shaped behavior and thresholds.\n\n### Skipping a category\n\nSkip a category only when no matching source is available or the source is demonstrably irrelevant. Record the reason in the final coverage map. A null search result is evidence. An unsearched source is a gap.\n\nA single-commit question may stay inline when the pull request already contains the full answer and the other available categories would add no evidence. State that scope choice.\n\n## Step 4. Synthesize\n\nDispatch one shared brief as `why-synthesizer`. Give it:\n\n1. every result and recorded gap;\n2. the code anchor;\n3. the user's question;\n4. `references\u002Fepistemics.md`;\n5. `references\u002Fsynthesizer-prompt.md`.\n\nThe active profile decides whether the coordinator or workers perform synthesis. The coordinator checks citations, reconciles returned drafts, and owns the final answer.\n\n## Step 5. Present\n\nPreserve the synthesizer's confidence labels. Use the structure in `references\u002Fsynthesizer-prompt.md`: The Question, The Code in Question, What We Found, What We Can Reasonably Infer, Competing Hypotheses, What We Don't Know, Sources Consulted, Confidence Summary.\n\nIf the user may change the code next, finish with Preserve, Change, Avoid, and Risk constraints.\n\n## Failure mode\n\nDo not assume the newest commit explains the current design. Trace the history far enough to identify the decision that introduced the behavior.\n\n## References\n\n- `references\u002Fepistemics.md` defines confidence levels.\n- `references\u002Finvestigator-prompt.md` defines the evidence-search brief.\n- `references\u002Fsource-playbook.md` maps evidence categories to source playbooks.\n- `references\u002Fsources\u002F*.md` contains one playbook per source category and the defensive-code supplement.\n- `references\u002Fsynthesizer-prompt.md` defines synthesis and output.\n","# Why\n\nInvestigate the motivation and intent behind code. The `how` skill explains what the code does. This skill explains which constraints and decisions gave it that shape.\n\n## Operating posture\n\nAct as a careful investigator. Separate direct evidence from inference, surface contradictions, and name missing evidence. Read `references\u002Fepistemics.md` before synthesis.\n\n## Step 1. Understand the target\n\nIdentify the code, pattern, feature, or decision in question. If the target is vague, state the best interpretation from the conversation and proceed.\n\n## Step 2. Establish the code anchor\n\nBefore searching other sources, collect:\n\n- the relevant paths, lines, and symbols;\n- recent commits that touched them;\n- pull request and ticket identifiers from those commits.\n\nUse the repository's own history and forge tools. Typical commands include:\n\n```bash\ngit blame -L \u003Cstart>,\u003Cend> \u003Cfile>\ngit log --follow -p -- \u003Cfile>\ngit log --oneline -20 -- \u003Cfile>\ngit log -1 --format=%B \u003Ccommit>\n```\n\nFetch the body and discussion for substantive pull requests. Pass the resulting code anchor to every evidence search.\n\n## Step 3. Search the available evidence\n\nResolve host capabilities and the active profile through [`HOST-COMPATIBILITY.md`](..\u002F..\u002Fagent-mode\u002FHOST-COMPATIBILITY.md). Inspect live tools, MCP servers, connectors, and shared resources.\n\nMap each available source to one category:\n\n1. source control history;\n2. issue or ticket tracking;\n3. long-form documents;\n4. real-time team chat;\n5. infrastructure observability;\n6. error tracking;\n7. product analytics.\n\nSource control is always available. Record missing categories instead of pretending they were searched.\n\nCreate a semantic unit for every available category. Dispatch the units as `why-investigators` through the active profile. Its partition rule may assign several units to a worker. Keep the units distinct and instructionally read-only.\n\nEach unit receives:\n\n1. `references\u002Finvestigator-prompt.md`;\n2. the matching playbook under `references\u002Fsources\u002F`;\n3. `references\u002Fsources\u002Fincident-postmortem.md` when the target contains defensive runtime behavior;\n4. the code anchor;\n5. the user's question.\n\n### Evidence categories\n\n- **Source control.** Git history, pull requests, comments, tests, and repository documents. This is the only guaranteed source.\n- **Issue tracker.** Product or business constraints recorded in tickets.\n- **Long-form documents.** Design rationale in specifications, ADRs, and postmortems.\n- **Team chat.** Deliberation that never reached a durable document.\n- **Infrastructure observability.** Runtime conditions that motivated limits, retries, timeouts, or similar defenses.\n- **Error tracking.** Specific failures that motivated corrective code.\n- **Product analytics.** Usage or data distributions that shaped behavior and thresholds.\n\n### Skipping a category\n\nSkip a category only when no matching source is available or the source is demonstrably irrelevant. Record the reason in the final coverage map. A null search result is evidence. An unsearched source is a gap.\n\nA single-commit question may stay inline when the pull request already contains the full answer and the other available categories would add no evidence. State that scope choice.\n\n## Step 4. Synthesize\n\nDispatch one shared brief as `why-synthesizer`. Give it:\n\n1. every result and recorded gap;\n2. the code anchor;\n3. the user's question;\n4. `references\u002Fepistemics.md`;\n5. `references\u002Fsynthesizer-prompt.md`.\n\nThe active profile decides whether the coordinator or workers perform synthesis. The coordinator checks citations, reconciles returned drafts, and owns the final answer.\n\n## Step 5. Present\n\nPreserve the synthesizer's confidence labels. Use the structure in `references\u002Fsynthesizer-prompt.md`: The Question, The Code in Question, What We Found, What We Can Reasonably Infer, Competing Hypotheses, What We Don't Know, Sources Consulted, Confidence Summary.\n\nIf the user may change the code next, finish with Preserve, Change, Avoid, and Risk constraints.\n\n## Failure mode\n\nDo not assume the newest commit explains the current design. Trace the history far enough to identify the decision that introduced the behavior.\n\n## References\n\n- `references\u002Fepistemics.md` defines confidence levels.\n- `references\u002Finvestigator-prompt.md` defines the evidence-search brief.\n- `references\u002Fsource-playbook.md` maps evidence categories to source playbooks.\n- `references\u002Fsources\u002F*.md` contains one playbook per source category and the defensive-code supplement.\n- `references\u002Fsynthesizer-prompt.md` defines synthesis and output.\n",{"name":5,"description":7},"main","b604251d9d562521f58b39a240910968f6564a89",".agents\u002Fskills\u002Fwhy","https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills","https:\u002F\u002Fgithub.com\u002FMateuszRomek","mateuszromek.com","2026-11-13 01:35:46",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add MateuszRomek\u002Fskills --skill why",{"tool":37,"command":38},"bunx","bunx skills add MateuszRomek\u002Fskills --skill why",{"tool":40,"command":41},"pnpm","pnpm dlx skills add MateuszRomek\u002Fskills --skill why","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002FSKILL.md",true,[45,51,55,59,63,67,71,75,79,83,87,91],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"references\u002Fepistemics.md","REFERENCE","参考文档",6736,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Fepistemics.md",{"path":52,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":53,"sourceHtmlUrl":54},"references\u002Finvestigator-prompt.md",5554,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Finvestigator-prompt.md",{"path":56,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":57,"sourceHtmlUrl":58},"references\u002Fsource-playbook.md",1429,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Fsource-playbook.md",{"path":60,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":61,"sourceHtmlUrl":62},"references\u002Fsources\u002Fcode-archaeology.md",1440,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Fsources\u002Fcode-archaeology.md",{"path":64,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":65,"sourceHtmlUrl":66},"references\u002Fsources\u002Fdatabricks.md",6994,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Fsources\u002Fdatabricks.md",{"path":68,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fsources\u002Fdatadog.md",4971,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Fsources\u002Fdatadog.md",{"path":72,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fsources\u002Fincident-postmortem.md",372,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Fsources\u002Fincident-postmortem.md",{"path":76,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fsources\u002Flinear.md",2996,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Fsources\u002Flinear.md",{"path":80,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fsources\u002Fnotion.md",2853,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Fsources\u002Fnotion.md",{"path":84,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fsources\u002Fsentry.md",2089,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Fsources\u002Fsentry.md",{"path":88,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fsources\u002Fslack.md",1336,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Fsources\u002Fslack.md",{"path":92,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fsynthesizer-prompt.md",7146,"https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002Freferences\u002Fsynthesizer-prompt.md",[96,103,110,117,124,131],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":19},"01M7C0YZ4R20ZCCZVCSMETEX5S","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[],[],{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":19},"01M7C0YVJJ1SJD9A5Z9RVGZCHN","wizard","Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.","https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwizard\u002FSKILL.md",[],[],{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":19},"01M7C0YND1NS2EFSS21JGC7EFX","wayfinder","Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.","https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwayfinder\u002FSKILL.md",[],[],{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":19},"01M7C0YH23EQCKD3R92V3BCS91","unslop","Cut AI tells from prose. Use before writing or revising any reply, doc, PR description, commit message, or skill text another reader will see, or for \u002Funslop.","https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Funslop\u002FSKILL.md",[],[],{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":19},"01M7C0YF7BZVR2VXKS425SFMY0","typescript-best-practices","TypeScript best practices. Use when reading or editing any .ts or .tsx file.","https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftypescript-best-practices\u002FSKILL.md",[],[],{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":19},"01M7C0YCNMZEDQR4RKSJDGTZ3D","triage","Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.","https:\u002F\u002Fgithub.com\u002FMateuszRomek\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftriage\u002FSKILL.md",[],[]]