[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HXCPER5TJSZA2FQ44ZP821":3,"skill-same:01M6HXCPER5TJSZA2FQ44ZP821":67},{"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":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":46,"ownerDescription":6,"updatedAt":47,"install":48,"resources":60},"01M6HXCPER5TJSZA2FQ44ZP821","typescript-compile-check-resilient",null,"TypeScript compile-checking in projects where npx and node_modules\u002F.bin symlinks fail, with a filtering technique to isolate errors from only newly-created or task-specific files — ignoring pre-existing legacy errors.","HKUDS\u002FAgentPilot","HKUDS","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F118165258?v=4","01M6HW8VRNZP64G0P4MVJW2KKQ","✨Data Intelligence Lab@HKU✨","01M6HW8VWZVHBRHYH3T330PFWV",7993,"MIT","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fexamples\u002Fmy-daily-monitor\u002Fskills\u002Ftypescript-compile-check-resilient\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"typescript","compile","check","typescript compile check resilient","projects","node","filtering","only","modules","Legacy","files","npx","task","with","errors","Existing","2026-11-10 10:12:30",false,"---\nname: typescript-compile-check-resilient\ndescription: TypeScript compile-checking in projects where npx and node_modules\u002F.bin symlinks fail, with a filtering technique to isolate errors from only newly-created or task-specific files — ignoring pre-existing legacy errors.\n---\n\n# TypeScript Compile-Check (Resilient) with File-Scoped Error Filtering\n\nUse this workflow when you need to validate TypeScript changes in a project but the standard `npx tsc` or `node_modules\u002F.bin\u002Ftsc` invocations fail due to broken symlinks, missing PATH entries, or environment issues.\n\n---\n\n## When to Use This Skill\n\n- `npx tsc` fails with \"command not found\" or permission errors\n- `node_modules\u002F.bin\u002Ftsc` symlink is broken or unresolvable\n- You need to validate only *newly-created* or *task-specific* files without being blocked by pre-existing compile errors in the broader codebase\n\n---\n\n## Step 1 — Invoke tsc Directly via node_modules\n\nBypass `npx` and symlinks entirely by calling the TypeScript binary directly:\n\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1; echo EXIT:$?\n```\n\n**Why this works:** The `tsc` CLI entry point is a plain Node.js script at `node_modules\u002Ftypescript\u002Fbin\u002Ftsc`. It does not depend on symlinks or PATH resolution. The `--noEmit` flag checks types without writing output files. Capturing `EXIT:$?` lets you programmatically detect success (`EXIT:0`) vs failure (`EXIT:1` or higher).\n\nIf the project uses a custom `tsconfig`, specify it explicitly:\n\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit --project tsconfig.json 2>&1; echo EXIT:$?\n```\n\n---\n\n## Step 2 — Filter Output to Task-Specific Files Only\n\nWhen a legacy codebase has pre-existing errors, the full `tsc` output will be noisy and may cause false negatives. Pipe through `grep` to isolate errors from only the files you created or modified:\n\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1 \\\n  | grep -E \"(file-pattern)\" ; echo EXIT:${PIPESTATUS[0]}\n```\n\n### Examples\n\n**Single new file:**\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1 \\\n  | grep -E \"settings-store\\.ts\"\n```\n\n**Multiple new files (pipe-delimited pattern):**\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1 \\\n  | grep -E \"(settings-keys|settings-store|preferences|SettingsModal)\"\n```\n\n**All files in a specific directory:**\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1 \\\n  | grep -E \"src\u002Ffeatures\u002Fmy-feature\u002F\"\n```\n\n**Check: no output = no errors in your files (success).**\n\n---\n\n## Step 3 — Capture Exit Code Correctly Through a Pipe\n\nWhen grepping, the shell exit code reflects `grep`, not `tsc`. Use `${PIPESTATUS[0]}` (bash) to recover the original `tsc` exit code:\n\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1 \\\n  | grep -E \"(my-file-pattern)\"; echo \"TSC_EXIT:${PIPESTATUS[0]}\"\n```\n\nOr store errors explicitly:\n\n```bash\nTSC_OUTPUT=$(node_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1)\nTSC_EXIT=$?\necho \"$TSC_OUTPUT\" | grep -E \"(settings-keys|settings-store|preferences|SettingsModal)\"\necho \"TSC_EXIT:$TSC_EXIT\"\n```\n\nThe second approach (storing output in a variable) is the most reliable since `$?` is captured before the pipe.\n\n---\n\n## Step 4 — Interpret Results\n\n| Condition | Meaning |\n|-----------|---------|\n| `TSC_EXIT:0`, no grep output | ✅ Full project clean, your files are fine |\n| `TSC_EXIT:1`, no grep output | ✅ Your files are fine; pre-existing errors elsewhere (acceptable) |\n| `TSC_EXIT:1`, grep output present | ❌ Your files have errors — fix them |\n| `TSC_EXIT:2` | ❌ tsc configuration error (bad tsconfig, missing typescript package) |\n\n---\n\n## Fallback: Verify TypeScript Is Installed\n\nIf `node_modules\u002Ftypescript\u002Fbin\u002Ftsc` does not exist:\n\n```bash\n# Check if typescript is installed\nls node_modules\u002Ftypescript\u002Fbin\u002Ftsc 2>\u002Fdev\u002Fnull || echo \"TypeScript not installed\"\n\n# Install if needed\nnpm install --save-dev typescript\n# or\nyarn add --dev typescript\n```\n\n---\n\n## Full Example\n\n```bash\n# Store full tsc output and exit code\nTSC_OUTPUT=$(node_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1)\nTSC_EXIT=$?\n\n# Show only errors in newly-created files\nNEW_FILE_ERRORS=$(echo \"$TSC_OUTPUT\" | grep -E \"(settings-keys|settings-store|preferences|SettingsModal)\")\n\nif [ -z \"$NEW_FILE_ERRORS\" ]; then\n  echo \"✅ No TypeScript errors in new files (TSC_EXIT:$TSC_EXIT)\"\nelse\n  echo \"❌ TypeScript errors in new files:\"\n  echo \"$NEW_FILE_ERRORS\"\n  exit 1\nfi\n```\n\n---\n\n## Notes\n\n- This technique is safe for CI and local environments alike.\n- The direct `node_modules\u002Ftypescript\u002Fbin\u002Ftsc` path works on macOS, Linux, and Windows (via `node node_modules\u002Ftypescript\u002Fbin\u002Ftsc` on Windows CMD).\n- On Windows, replace the bash script with: `node node_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit`\n- Always prefer `--noEmit` for validation-only checks to avoid side effects.","# TypeScript Compile-Check (Resilient) with File-Scoped Error Filtering\n\nUse this workflow when you need to validate TypeScript changes in a project but the standard `npx tsc` or `node_modules\u002F.bin\u002Ftsc` invocations fail due to broken symlinks, missing PATH entries, or environment issues.\n\n---\n\n## When to Use This Skill\n\n- `npx tsc` fails with \"command not found\" or permission errors\n- `node_modules\u002F.bin\u002Ftsc` symlink is broken or unresolvable\n- You need to validate only *newly-created* or *task-specific* files without being blocked by pre-existing compile errors in the broader codebase\n\n---\n\n## Step 1 — Invoke tsc Directly via node_modules\n\nBypass `npx` and symlinks entirely by calling the TypeScript binary directly:\n\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1; echo EXIT:$?\n```\n\n**Why this works:** The `tsc` CLI entry point is a plain Node.js script at `node_modules\u002Ftypescript\u002Fbin\u002Ftsc`. It does not depend on symlinks or PATH resolution. The `--noEmit` flag checks types without writing output files. Capturing `EXIT:$?` lets you programmatically detect success (`EXIT:0`) vs failure (`EXIT:1` or higher).\n\nIf the project uses a custom `tsconfig`, specify it explicitly:\n\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit --project tsconfig.json 2>&1; echo EXIT:$?\n```\n\n---\n\n## Step 2 — Filter Output to Task-Specific Files Only\n\nWhen a legacy codebase has pre-existing errors, the full `tsc` output will be noisy and may cause false negatives. Pipe through `grep` to isolate errors from only the files you created or modified:\n\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1 \\\n  | grep -E \"(file-pattern)\" ; echo EXIT:${PIPESTATUS[0]}\n```\n\n### Examples\n\n**Single new file:**\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1 \\\n  | grep -E \"settings-store\\.ts\"\n```\n\n**Multiple new files (pipe-delimited pattern):**\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1 \\\n  | grep -E \"(settings-keys|settings-store|preferences|SettingsModal)\"\n```\n\n**All files in a specific directory:**\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1 \\\n  | grep -E \"src\u002Ffeatures\u002Fmy-feature\u002F\"\n```\n\n**Check: no output = no errors in your files (success).**\n\n---\n\n## Step 3 — Capture Exit Code Correctly Through a Pipe\n\nWhen grepping, the shell exit code reflects `grep`, not `tsc`. Use `${PIPESTATUS[0]}` (bash) to recover the original `tsc` exit code:\n\n```bash\nnode_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1 \\\n  | grep -E \"(my-file-pattern)\"; echo \"TSC_EXIT:${PIPESTATUS[0]}\"\n```\n\nOr store errors explicitly:\n\n```bash\nTSC_OUTPUT=$(node_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1)\nTSC_EXIT=$?\necho \"$TSC_OUTPUT\" | grep -E \"(settings-keys|settings-store|preferences|SettingsModal)\"\necho \"TSC_EXIT:$TSC_EXIT\"\n```\n\nThe second approach (storing output in a variable) is the most reliable since `$?` is captured before the pipe.\n\n---\n\n## Step 4 — Interpret Results\n\n| Condition | Meaning |\n|-----------|---------|\n| `TSC_EXIT:0`, no grep output | ✅ Full project clean, your files are fine |\n| `TSC_EXIT:1`, no grep output | ✅ Your files are fine; pre-existing errors elsewhere (acceptable) |\n| `TSC_EXIT:1`, grep output present | ❌ Your files have errors — fix them |\n| `TSC_EXIT:2` | ❌ tsc configuration error (bad tsconfig, missing typescript package) |\n\n---\n\n## Fallback: Verify TypeScript Is Installed\n\nIf `node_modules\u002Ftypescript\u002Fbin\u002Ftsc` does not exist:\n\n```bash\n# Check if typescript is installed\nls node_modules\u002Ftypescript\u002Fbin\u002Ftsc 2>\u002Fdev\u002Fnull || echo \"TypeScript not installed\"\n\n# Install if needed\nnpm install --save-dev typescript\n# or\nyarn add --dev typescript\n```\n\n---\n\n## Full Example\n\n```bash\n# Store full tsc output and exit code\nTSC_OUTPUT=$(node_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit 2>&1)\nTSC_EXIT=$?\n\n# Show only errors in newly-created files\nNEW_FILE_ERRORS=$(echo \"$TSC_OUTPUT\" | grep -E \"(settings-keys|settings-store|preferences|SettingsModal)\")\n\nif [ -z \"$NEW_FILE_ERRORS\" ]; then\n  echo \"✅ No TypeScript errors in new files (TSC_EXIT:$TSC_EXIT)\"\nelse\n  echo \"❌ TypeScript errors in new files:\"\n  echo \"$NEW_FILE_ERRORS\"\n  exit 1\nfi\n```\n\n---\n\n## Notes\n\n- This technique is safe for CI and local environments alike.\n- The direct `node_modules\u002Ftypescript\u002Fbin\u002Ftsc` path works on macOS, Linux, and Windows (via `node node_modules\u002Ftypescript\u002Fbin\u002Ftsc` on Windows CMD).\n- On Windows, replace the bash script with: `node node_modules\u002Ftypescript\u002Fbin\u002Ftsc --noEmit`\n- Always prefer `--noEmit` for validation-only checks to avoid side effects.",{"name":5,"description":7},"main","6b84b0689ca0d9e7b1e4061188ff6b60758e0f8a","openspace\u002Fexamples\u002Fmy-daily-monitor\u002Fskills\u002Ftypescript-compile-check-resilient",940,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot","https:\u002F\u002Fgithub.com\u002FHKUDS","https:\u002F\u002Fsites.google.com\u002Fview\u002Fchaoh","2026-11-06 23:04:01",{"source":8,"skillName":5,"commands":49,"prompt":58,"zipAvailable":59},[50,52,55],{"tool":30,"command":51},"npx skills add HKUDS\u002FAgentPilot --skill typescript-compile-check-resilient",{"tool":53,"command":54},"bunx","bunx skills add HKUDS\u002FAgentPilot --skill typescript-compile-check-resilient",{"tool":56,"command":57},"pnpm","pnpm dlx skills add HKUDS\u002FAgentPilot --skill typescript-compile-check-resilient","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fexamples\u002Fmy-daily-monitor\u002Fskills\u002Ftypescript-compile-check-resilient\u002FSKILL.md",true,[61],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},".skill_id","OTHER","其他",48,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fexamples\u002Fmy-daily-monitor\u002Fskills\u002Ftypescript-compile-check-resilient\u002F.skill_id",[68,87,106,131,154,171],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":35},"01M6HYB297NDABRERJRVG0K8R0","agentpilot","Set up AgentPilot and use its single entry to prepare missing inputs and run configured RSI experiments. Use when the user requests AgentPilot installation or work with AgentPilot.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fplugins\u002Fagentpilot\u002Fskills\u002Fagentpilot\u002FSKILL.md",[],[70,75,76,32,77,78,79,80,81,82,83,84,85,86],"prepare","requests","missing","installation","rsi","up","use","user","work","SET","run","experiments",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":35},"01M6HYAYWXTTE1J7DJM0MFNQ4H","remember","Review auto-memory entries and propose promotions to OPENSPACE.md, OPENSPACE.local.md, or retained auto-memory topics; detect duplicates, stale facts, conflicts, and ambiguous entries before making changes.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fskills\u002Fremember\u002FSKILL.md",[],[89,94,95,96,97,98,99,100,101,102,103,104,105],"memory","review","auto","openspace","changes","facts","detect","entries","local","conflicts","stale","duplicates",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":117,"publishedAt":35},"01M6HYAVMPM4SBDV60R2B5HPV8","skill-discovery","Search reusable OpenSpace skills locally, and browse cloud packages step by step when a cloud skill may help. Reusing proven skills saves tokens, improves reliability, and extends your capabilities beyond built-in tools.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fhost_skills\u002Fskill-discovery\u002FSKILL.md",[112],{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[118,119,120,97,121,122,123,124,125,126,127,128,129,130],"skill discovery","discovery","reusable","step by step","tokens","packages","help","cloud","reliability","capabilities","browse","search","Tools",{"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":138,"publishedAt":35},"01M6HYAR811B3RB0M50RBEDGN6","delegate-task","Delegate tasks to OpenSpace — a full-stack autonomous worker for coding, DevOps, web research, and desktop automation, backed by an extensive MCP tool and skill library. Skills auto-improve through use, reducing token consumption over time. A cloud community lets agents share and collectively evolve reusable skills.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fhost_skills\u002Fdelegate-task\u002FSKILL.md",[137],{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},[139,31,140,97,141,142,143,144,145,120,96,81,146,147,148,149,150,151,152,153],"delegate","delegate task","time","improve","desktop automation","worker","community","autonomous","tool","stack","for","share","tasks","automation","MCP",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":35},"01M6HYAM9FSGV6E52AYENDQXYH","write-special-chars-ts-check","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, plus a reliable TypeScript type-checking step that filters output to only the newly-written files to avoid being misled by pre-existing errors.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-ts-check\u002FSKILL.md",[],[161,162,21,163,29,164,26,165,166,167,19,168,34,169,149,33,170],"write special chars ts check","write","type","filters","template","file","python","output","type-checking","script",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":177,"publishedAt":35},"01M6HYAH05HGV7SVWSVR8PJRQD","write-special-chars-readback","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, with mandatory post-write verification via read_file and cleanup of \u002Ftmp helper scripts.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-readback\u002FSKILL.md",[],[178,179,162,32,149,170,180,181,182,183,184,165,166,185,186,167],"write special chars readback","readback","helper","post","via","scripts","read","verification","cleanup"]