[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DC6RBX5WXC9HF9DBRV5VJP":3,"skill-same:01M6DC6RBX5WXC9HF9DBRV5VJP":126},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":14,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":43,"install":44,"resources":57},"01M6DC6RBX5WXC9HF9DBRV5VJP","zero-issue-coding",null,"Use when writing ANY new code in ANY language — enforces patterns that pass Codacy, SonarCloud, DeepSource, QLTY, Semgrep, and Codecov gates on first push without suppressions or exclusions","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fzero-issue-coding\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"ZeRO","coding","issue","zero issue coding","writing","code","push","semgrep","first","use","language","patterns","gates","deepsource","2026-11-10 10:12:30",false,"---\nname: zero-issue-coding\ndescription: Use when writing ANY new code in ANY language — enforces patterns that pass Codacy, SonarCloud, DeepSource, QLTY, Semgrep, and Codecov gates on first push without suppressions or exclusions\n---\n\n# Zero-Issue Coding\n\n## Overview\n\n**Write code that passes every quality gate on the first push.** This skill encodes the patterns that prevent issues, not how to fix them after. If you follow these patterns, you will never trigger a Codacy\u002FSonarCloud\u002FDeepSource\u002FQLTY finding.\n\n**Core principle:** Prevention is 100x cheaper than cleanup. A 2,000-issue backlog takes days to fix. Writing clean from the start takes zero extra time.\n\n## When to Use\n\n- Writing ANY new function, class, or module\n- Editing ANY existing code\n- Before EVERY commit\n- When a gate fails (find the pattern below, apply it, never repeat)\n\n## The Prevention Checklist (Run Mentally Before Every Function)\n\n1. **Null safety** — Can any parameter or return value be null? Handle it NOW.\n2. **Complexity** — Will this function have > 3 branches? Split BEFORE writing.\n3. **Security** — Does this touch user input, files, network, or secrets? Secure pattern NOW.\n4. **Coverage** — What test will cover this? Write the test signature NOW.\n5. **Length** — Will this function exceed 50 lines? Plan the extraction NOW.\n\n## C# \u002F .NET — Zero-Issue Patterns\n\n### Null Dereference (kills 70%+ of Codacy findings)\n\n```csharp\n\u002F\u002F ❌ TRIGGERS: Codacy potential-null-dereference, SonarCloud S2259\npublic void Process(GameProfile profile)\n{\n    var name = profile.DisplayName.ToUpper(); \u002F\u002F nullable deref\n    var count = profile.Symbols.Count;        \u002F\u002F nullable deref\n}\n\n\u002F\u002F ✅ ZERO ISSUES\npublic void Process(GameProfile profile)\n{\n    ArgumentNullException.ThrowIfNull(profile);\n    var name = profile.DisplayName?.ToUpper() ?? string.Empty;\n    var count = profile.Symbols?.Count ?? 0;\n}\n```\n\n**Rule:** Every reference parameter gets `ThrowIfNull`. Every member access on a potentially-null gets `?.` with a `??` fallback. EVERY. SINGLE. ONE. No exceptions.\n\n### CLS Compliance (kills 200+ Codacy findings)\n\n```csharp\n\u002F\u002F ❌ TRIGGERS: Codacy CA1014, CA1038\npublic uint GetOffset() => _offset;\npublic sbyte GetFlag() => _flag;\n\n\u002F\u002F ✅ ZERO ISSUES — use CLS-compliant types in public APIs\npublic int GetOffset() => (int)_offset;    \u002F\u002F or make method internal\npublic int GetFlag() => _flag;\ninternal uint GetRawOffset() => _offset;   \u002F\u002F non-public = no CLS issue\n```\n\n**Rule:** Public APIs expose only: `bool`, `byte`, `short`, `int`, `long`, `float`, `double`, `decimal`, `string`, `object`. Use `internal` for everything else.\n\n### Complexity (kills QLTY\u002FLizard\u002FSonarCloud findings)\n\n```csharp\n\u002F\u002F ❌ TRIGGERS: SonarCloud S3776, QLTY CCN > 15\npublic void HandleAction(ActionKind kind, RuntimeMode mode, bool isVerified)\n{\n    if (kind == ActionKind.Spawn)\n    {\n        if (mode == RuntimeMode.Tactical) { \u002F* ... *\u002F }\n        else if (mode == RuntimeMode.Galactic) { \u002F* ... *\u002F }\n    }\n    else if (kind == ActionKind.SetCredits) { \u002F* ... *\u002F }\n    else if (kind == ActionKind.SetSpeed) { \u002F* ... *\u002F }\n    \u002F\u002F 15 more branches...\n}\n\n\u002F\u002F ✅ ZERO ISSUES — dispatch table + early return\nprivate static readonly Dictionary\u003CActionKind, Func\u003CRuntimeMode, Task>> Handlers = new()\n{\n    [ActionKind.Spawn] = HandleSpawn,\n    [ActionKind.SetCredits] = HandleCredits,\n    [ActionKind.SetSpeed] = HandleSpeed,\n};\n\npublic Task HandleAction(ActionKind kind, RuntimeMode mode, bool isVerified)\n{\n    ArgumentNullException.ThrowIfNull(kind);\n    if (!isVerified) throw new InvalidOperationException(\"Action not verified\");\n    if (!Handlers.TryGetValue(kind, out var handler))\n        throw new NotSupportedException($\"Unknown action: {kind}\");\n    return handler(mode);\n}\n```\n\n**Rule:** If you see yourself writing the 4th `if\u002Felse if`, STOP. Use a dictionary, switch expression, or strategy pattern.\n\n### Exception Handling\n\n```csharp\n\u002F\u002F ❌ TRIGGERS: Codacy CA1031, SonarCloud S2221\ntry { DoWork(); } catch (Exception) { }\n\n\u002F\u002F ✅ ZERO ISSUES\ntry { DoWork(); }\ncatch (InvalidOperationException ex) { _logger.LogWarning(ex, \"Expected failure\"); }\ncatch (IOException ex) { _logger.LogError(ex, \"I\u002FO failure\"); throw; }\n```\n\n### Hardcoded Secrets\n\n```csharp\n\u002F\u002F ❌ TRIGGERS: Codacy CWE-798, Semgrep hardcoded-credentials\nprivate const string ApiKey = \"sk-abc123\";\n\n\u002F\u002F ✅ ZERO ISSUES\nprivate readonly string _apiKey = configuration[\"ApiKey\"]\n    ?? throw new InvalidOperationException(\"ApiKey not configured\");\n```\n\n## Python — Zero-Issue Patterns\n\n### Security (subprocess, secrets, eval)\n\n```python\n# ❌ TRIGGERS: Bandit B602, Codacy security\nsubprocess.call(cmd, shell=True)\npassword = \"hunter2\"\nresult = eval(user_input)\n\n# ✅ ZERO ISSUES\nsubprocess.run(cmd_list, shell=False, check=True, capture_output=True)\npassword = os.environ[\"APP_PASSWORD\"]\n# For eval: use ast.literal_eval for data, or don't eval at all\n```\n\n### Complexity\n\n```python\n# ❌ TRIGGERS: SonarCloud S3776, Lizard CCN > 15\ndef process(data):\n    if data.type == \"a\":\n        if data.sub == \"x\": ...\n        elif data.sub == \"y\": ...\n    elif data.type == \"b\": ...\n\n# ✅ ZERO ISSUES\n_PROCESSORS = {\"a\": _process_a, \"b\": _process_b}\n\ndef process(data):\n    handler = _PROCESSORS.get(data.type)\n    if handler is None:\n        raise ValueError(f\"Unknown type: {data.type}\")\n    return handler(data)\n```\n\n### String Concatenation in Lists\n\n```python\n# ❌ TRIGGERS: Codacy implicit-string-concatenation\nitems = [\n    \"first\"\n    \"second\"    # missing comma — silent string concat\n]\n\n# ✅ ZERO ISSUES\nitems = [\n    \"first\",\n    \"second\",\n]\n```\n\n## TypeScript — Zero-Issue Patterns\n\n### Strict Types\n\n```typescript\n\u002F\u002F ❌ TRIGGERS: ESLint @typescript-eslint\u002Fno-explicit-any\nfunction process(data: any) { ... }\n\n\u002F\u002F ✅ ZERO ISSUES\ninterface ProcessInput { type: string; value: number; }\nfunction process(data: ProcessInput) { ... }\n```\n\n## C++ — Zero-Issue Patterns\n\n### Modern C++ (SonarCloud)\n\n```cpp\n\u002F\u002F ❌ TRIGGERS: SonarCloud cpp:S5827, S5820, S1ావ5\nauto* ptr = new MyClass();\ntypedef unsigned int uint;\nvoid func() { int x = 0; if (condition) x = 1; }\n\n\u002F\u002F ✅ ZERO ISSUES\nauto ptr = std::make_unique\u003CMyClass>();\nusing uint = unsigned int;\nvoid func() { const int x = condition ? 1 : 0; }\n```\n\n## Test Coverage — Zero-Gap Patterns\n\n```csharp\n\u002F\u002F ❌ Missing branch coverage — only happy path tested\n[Fact]\npublic void SetCredits_Works() {\n    service.SetCredits(player, 1000);\n    Assert.Equal(1000, player.Credits);\n}\n\n\u002F\u002F ✅ 100% branch coverage — all paths tested\n[Fact]\npublic void SetCredits_ValidAmount_SetsCredits() { ... }\n\n[Fact]\npublic void SetCredits_NullPlayer_ThrowsArgumentNull() {\n    Assert.Throws\u003CArgumentNullException>(() => service.SetCredits(null!, 1000));\n}\n\n[Fact]\npublic void SetCredits_NegativeAmount_ThrowsArgumentOutOfRange() {\n    Assert.Throws\u003CArgumentOutOfRangeException>(() => service.SetCredits(player, -1));\n}\n\n[Theory]\n[InlineData(0)]\n[InlineData(999999)]\n[InlineData(float.MaxValue)]\npublic void SetCredits_BoundaryValues_Succeeds(float amount) { ... }\n```\n\n**Rule:** For every function, test: happy path, null inputs, invalid inputs, boundary values, error conditions. This mechanically produces 100% branch coverage.\n\n## Pre-Push (MANDATORY)\n\nBefore EVERY push, run `tools\u002Fpre-push-verify.sh` or the equivalent for this repo. If it fails, DO NOT PUSH.\n\n## Common Mistakes That Create Backlogs\n\n| Mistake | Issues Created | Prevention |\n|---------|---------------|------------|\n| No `\u003CNullable>enable\u003C\u002FNullable>` | 1,500+ null deref | Enable in every .csproj from day 1 |\n| Public `uint`\u002F`sbyte` APIs | 200+ CLS findings | Use `int`\u002F`long` publicly, internal for raw types |\n| Bare `catch (Exception)` | 50+ per project | Catch specific types only |\n| `shell=True` in subprocess | Security finding per call | Always `shell=False` |\n| Long methods (100+ lines) | CCN violations cascade | Extract at 30 lines, not 50 |\n| Missing `.codacy.yml` exclusion removal | Issues hidden, not fixed | Never exclude first-party code |\n\n## The Bottom Line\n\n**Every pattern above exists because an agent once created thousands of issues by not following it.** These are not theoretical best practices — they are the specific patterns that prevent the specific findings from the specific tools configured on your repos.\n\nFollow them. Zero issues. First push. Every time.\n","# Zero-Issue Coding\n\n## Overview\n\n**Write code that passes every quality gate on the first push.** This skill encodes the patterns that prevent issues, not how to fix them after. If you follow these patterns, you will never trigger a Codacy\u002FSonarCloud\u002FDeepSource\u002FQLTY finding.\n\n**Core principle:** Prevention is 100x cheaper than cleanup. A 2,000-issue backlog takes days to fix. Writing clean from the start takes zero extra time.\n\n## When to Use\n\n- Writing ANY new function, class, or module\n- Editing ANY existing code\n- Before EVERY commit\n- When a gate fails (find the pattern below, apply it, never repeat)\n\n## The Prevention Checklist (Run Mentally Before Every Function)\n\n1. **Null safety** — Can any parameter or return value be null? Handle it NOW.\n2. **Complexity** — Will this function have > 3 branches? Split BEFORE writing.\n3. **Security** — Does this touch user input, files, network, or secrets? Secure pattern NOW.\n4. **Coverage** — What test will cover this? Write the test signature NOW.\n5. **Length** — Will this function exceed 50 lines? Plan the extraction NOW.\n\n## C# \u002F .NET — Zero-Issue Patterns\n\n### Null Dereference (kills 70%+ of Codacy findings)\n\n```csharp\n\u002F\u002F ❌ TRIGGERS: Codacy potential-null-dereference, SonarCloud S2259\npublic void Process(GameProfile profile)\n{\n    var name = profile.DisplayName.ToUpper(); \u002F\u002F nullable deref\n    var count = profile.Symbols.Count;        \u002F\u002F nullable deref\n}\n\n\u002F\u002F ✅ ZERO ISSUES\npublic void Process(GameProfile profile)\n{\n    ArgumentNullException.ThrowIfNull(profile);\n    var name = profile.DisplayName?.ToUpper() ?? string.Empty;\n    var count = profile.Symbols?.Count ?? 0;\n}\n```\n\n**Rule:** Every reference parameter gets `ThrowIfNull`. Every member access on a potentially-null gets `?.` with a `??` fallback. EVERY. SINGLE. ONE. No exceptions.\n\n### CLS Compliance (kills 200+ Codacy findings)\n\n```csharp\n\u002F\u002F ❌ TRIGGERS: Codacy CA1014, CA1038\npublic uint GetOffset() => _offset;\npublic sbyte GetFlag() => _flag;\n\n\u002F\u002F ✅ ZERO ISSUES — use CLS-compliant types in public APIs\npublic int GetOffset() => (int)_offset;    \u002F\u002F or make method internal\npublic int GetFlag() => _flag;\ninternal uint GetRawOffset() => _offset;   \u002F\u002F non-public = no CLS issue\n```\n\n**Rule:** Public APIs expose only: `bool`, `byte`, `short`, `int`, `long`, `float`, `double`, `decimal`, `string`, `object`. Use `internal` for everything else.\n\n### Complexity (kills QLTY\u002FLizard\u002FSonarCloud findings)\n\n```csharp\n\u002F\u002F ❌ TRIGGERS: SonarCloud S3776, QLTY CCN > 15\npublic void HandleAction(ActionKind kind, RuntimeMode mode, bool isVerified)\n{\n    if (kind == ActionKind.Spawn)\n    {\n        if (mode == RuntimeMode.Tactical) { \u002F* ... *\u002F }\n        else if (mode == RuntimeMode.Galactic) { \u002F* ... *\u002F }\n    }\n    else if (kind == ActionKind.SetCredits) { \u002F* ... *\u002F }\n    else if (kind == ActionKind.SetSpeed) { \u002F* ... *\u002F }\n    \u002F\u002F 15 more branches...\n}\n\n\u002F\u002F ✅ ZERO ISSUES — dispatch table + early return\nprivate static readonly Dictionary\u003CActionKind, Func\u003CRuntimeMode, Task>> Handlers = new()\n{\n    [ActionKind.Spawn] = HandleSpawn,\n    [ActionKind.SetCredits] = HandleCredits,\n    [ActionKind.SetSpeed] = HandleSpeed,\n};\n\npublic Task HandleAction(ActionKind kind, RuntimeMode mode, bool isVerified)\n{\n    ArgumentNullException.ThrowIfNull(kind);\n    if (!isVerified) throw new InvalidOperationException(\"Action not verified\");\n    if (!Handlers.TryGetValue(kind, out var handler))\n        throw new NotSupportedException($\"Unknown action: {kind}\");\n    return handler(mode);\n}\n```\n\n**Rule:** If you see yourself writing the 4th `if\u002Felse if`, STOP. Use a dictionary, switch expression, or strategy pattern.\n\n### Exception Handling\n\n```csharp\n\u002F\u002F ❌ TRIGGERS: Codacy CA1031, SonarCloud S2221\ntry { DoWork(); } catch (Exception) { }\n\n\u002F\u002F ✅ ZERO ISSUES\ntry { DoWork(); }\ncatch (InvalidOperationException ex) { _logger.LogWarning(ex, \"Expected failure\"); }\ncatch (IOException ex) { _logger.LogError(ex, \"I\u002FO failure\"); throw; }\n```\n\n### Hardcoded Secrets\n\n```csharp\n\u002F\u002F ❌ TRIGGERS: Codacy CWE-798, Semgrep hardcoded-credentials\nprivate const string ApiKey = \"sk-abc123\";\n\n\u002F\u002F ✅ ZERO ISSUES\nprivate readonly string _apiKey = configuration[\"ApiKey\"]\n    ?? throw new InvalidOperationException(\"ApiKey not configured\");\n```\n\n## Python — Zero-Issue Patterns\n\n### Security (subprocess, secrets, eval)\n\n```python\n# ❌ TRIGGERS: Bandit B602, Codacy security\nsubprocess.call(cmd, shell=True)\npassword = \"hunter2\"\nresult = eval(user_input)\n\n# ✅ ZERO ISSUES\nsubprocess.run(cmd_list, shell=False, check=True, capture_output=True)\npassword = os.environ[\"APP_PASSWORD\"]\n# For eval: use ast.literal_eval for data, or don't eval at all\n```\n\n### Complexity\n\n```python\n# ❌ TRIGGERS: SonarCloud S3776, Lizard CCN > 15\ndef process(data):\n    if data.type == \"a\":\n        if data.sub == \"x\": ...\n        elif data.sub == \"y\": ...\n    elif data.type == \"b\": ...\n\n# ✅ ZERO ISSUES\n_PROCESSORS = {\"a\": _process_a, \"b\": _process_b}\n\ndef process(data):\n    handler = _PROCESSORS.get(data.type)\n    if handler is None:\n        raise ValueError(f\"Unknown type: {data.type}\")\n    return handler(data)\n```\n\n### String Concatenation in Lists\n\n```python\n# ❌ TRIGGERS: Codacy implicit-string-concatenation\nitems = [\n    \"first\"\n    \"second\"    # missing comma — silent string concat\n]\n\n# ✅ ZERO ISSUES\nitems = [\n    \"first\",\n    \"second\",\n]\n```\n\n## TypeScript — Zero-Issue Patterns\n\n### Strict Types\n\n```typescript\n\u002F\u002F ❌ TRIGGERS: ESLint @typescript-eslint\u002Fno-explicit-any\nfunction process(data: any) { ... }\n\n\u002F\u002F ✅ ZERO ISSUES\ninterface ProcessInput { type: string; value: number; }\nfunction process(data: ProcessInput) { ... }\n```\n\n## C++ — Zero-Issue Patterns\n\n### Modern C++ (SonarCloud)\n\n```cpp\n\u002F\u002F ❌ TRIGGERS: SonarCloud cpp:S5827, S5820, S1ావ5\nauto* ptr = new MyClass();\ntypedef unsigned int uint;\nvoid func() { int x = 0; if (condition) x = 1; }\n\n\u002F\u002F ✅ ZERO ISSUES\nauto ptr = std::make_unique\u003CMyClass>();\nusing uint = unsigned int;\nvoid func() { const int x = condition ? 1 : 0; }\n```\n\n## Test Coverage — Zero-Gap Patterns\n\n```csharp\n\u002F\u002F ❌ Missing branch coverage — only happy path tested\n[Fact]\npublic void SetCredits_Works() {\n    service.SetCredits(player, 1000);\n    Assert.Equal(1000, player.Credits);\n}\n\n\u002F\u002F ✅ 100% branch coverage — all paths tested\n[Fact]\npublic void SetCredits_ValidAmount_SetsCredits() { ... }\n\n[Fact]\npublic void SetCredits_NullPlayer_ThrowsArgumentNull() {\n    Assert.Throws\u003CArgumentNullException>(() => service.SetCredits(null!, 1000));\n}\n\n[Fact]\npublic void SetCredits_NegativeAmount_ThrowsArgumentOutOfRange() {\n    Assert.Throws\u003CArgumentOutOfRangeException>(() => service.SetCredits(player, -1));\n}\n\n[Theory]\n[InlineData(0)]\n[InlineData(999999)]\n[InlineData(float.MaxValue)]\npublic void SetCredits_BoundaryValues_Succeeds(float amount) { ... }\n```\n\n**Rule:** For every function, test: happy path, null inputs, invalid inputs, boundary values, error conditions. This mechanically produces 100% branch coverage.\n\n## Pre-Push (MANDATORY)\n\nBefore EVERY push, run `tools\u002Fpre-push-verify.sh` or the equivalent for this repo. If it fails, DO NOT PUSH.\n\n## Common Mistakes That Create Backlogs\n\n| Mistake | Issues Created | Prevention |\n|---------|---------------|------------|\n| No `\u003CNullable>enable\u003C\u002FNullable>` | 1,500+ null deref | Enable in every .csproj from day 1 |\n| Public `uint`\u002F`sbyte` APIs | 200+ CLS findings | Use `int`\u002F`long` publicly, internal for raw types |\n| Bare `catch (Exception)` | 50+ per project | Catch specific types only |\n| `shell=True` in subprocess | Security finding per call | Always `shell=False` |\n| Long methods (100+ lines) | CCN violations cascade | Extract at 30 lines, not 50 |\n| Missing `.codacy.yml` exclusion removal | Issues hidden, not fixed | Never exclude first-party code |\n\n## The Bottom Line\n\n**Every pattern above exists because an agent once created thousands of issues by not following it.** These are not theoretical best practices — they are the specific patterns that prevent the specific findings from the specific tools configured on your repos.\n\nFollow them. Zero issues. First push. Every time.\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5",".agents\u002Fzero-issue-coding","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill zero-issue-coding",{"tool":50,"command":51},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill zero-issue-coding",{"tool":53,"command":54},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill zero-issue-coding","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Fzero-issue-coding\u002FSKILL.md",true,[58,64,68,72,76,80,84,88,92,96,100,104,110,114,118,122],{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"README.md","REFERENCE","参考文档",3316,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002FREADME.md",{"path":65,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":66,"sourceHtmlUrl":67},"references\u002Fanimation.md",10456,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Freferences\u002Fanimation.md",{"path":69,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Fcolor-systems.md",8647,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Freferences\u002Fcolor-systems.md",{"path":73,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fcore-api.md",9841,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Freferences\u002Fcore-api.md",{"path":77,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fexport-pipeline.md",15611,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Freferences\u002Fexport-pipeline.md",{"path":81,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Finteraction.md",8345,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Freferences\u002Finteraction.md",{"path":85,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fshapes-and-geometry.md",7213,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Freferences\u002Fshapes-and-geometry.md",{"path":89,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Ftroubleshooting.md",13041,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Freferences\u002Ftroubleshooting.md",{"path":93,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Ftypography.md",6779,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Freferences\u002Ftypography.md",{"path":97,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Fvisual-effects.md",23456,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Freferences\u002Fvisual-effects.md",{"path":101,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002Fwebgl-and-3d.md",8893,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Freferences\u002Fwebgl-and-3d.md",{"path":105,"resourceType":106,"resourceTypeDesc":107,"sizeBytes":108,"sourceHtmlUrl":109},"scripts\u002Fexport-frames.js","SCRIPT","脚本",5398,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Fscripts\u002Fexport-frames.js",{"path":111,"resourceType":106,"resourceTypeDesc":107,"sizeBytes":112,"sourceHtmlUrl":113},"scripts\u002Frender.sh",2911,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Fscripts\u002Frender.sh",{"path":115,"resourceType":106,"resourceTypeDesc":107,"sizeBytes":116,"sourceHtmlUrl":117},"scripts\u002Fserve.sh",833,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Fscripts\u002Fserve.sh",{"path":119,"resourceType":106,"resourceTypeDesc":107,"sizeBytes":120,"sourceHtmlUrl":121},"scripts\u002Fsetup.sh",2475,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Fscripts\u002Fsetup.sh",{"path":123,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":124,"sourceHtmlUrl":125},"templates\u002Fviewer.html",10858,"https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fhermes\u002Fp5js\u002Ftemplates\u002Fviewer.html",[127,148,179,206,220,235],{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":33},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[134,135,136,137,138,139,140,141,142,28,143,144,145,146,147],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution","file",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":159,"publishedAt":33},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[154],{"categoryNo":155,"categoryName":156,"taxonomyType":157,"taxonomyTypeDesc":158},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[160,161,162,163,164,165,166,167,168,169,170,171,172,173,28,174,175,176,177,178],"openmm md","how","decision","pick","linux","analyze","tool","stack","open","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","local","do","MCP",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":191,"publishedAt":33},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[185,188],{"categoryNo":186,"categoryName":187,"taxonomyType":157,"taxonomyTypeDesc":158},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":189,"categoryName":190,"taxonomyType":157,"taxonomyTypeDesc":158},"01JBSEEDCAT000000000000008","测试与质量",[192,193,194,195,196,197,198,199,200,201,161,202,203,204,205],"review","visual","visual review","pages","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":207,"name":208,"nameZh":6,"description":209,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":210,"categories":211,"keywords":212,"publishedAt":33},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[208,213,214,215,216,217,218,219],"setup","report","project","installation","project setup","issues","state",{"skillNo":221,"name":222,"nameZh":6,"description":223,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":224,"categories":225,"keywords":227,"publishedAt":33},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[226],{"categoryNo":155,"categoryName":156,"taxonomyType":157,"taxonomyTypeDesc":158},[222,228,139,21,229,230,28,231,232,233,234],"start issue","ready","work on issue","user","work","work on","development",{"skillNo":236,"name":213,"nameZh":6,"description":237,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":238,"categories":239,"keywords":240,"publishedAt":33},"01M6DF6QMJ9AJKFKHHKRT005PQ","Interactive project setup — detects your project, configures metaswarm, writes project-local files","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[213,215,176,241,217,242],"files","interactive"]