nolo-cli 0.86.0-alpha.1 → 0.87.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/{_executeModel-U5FP7ID5.js → _executeModel-TTE5HHOP.js} +11 -11
  2. package/{agentDeleteCommand-RXZKN7ER.js → agentDeleteCommand-RPQ3WNYP.js} +1 -1
  3. package/{agentEmailCommands-AKELGSE2.js → agentEmailCommands-B3IGU43E.js} +11 -11
  4. package/{agentListCommands-ZN75E4YI.js → agentListCommands-JJ4PR6XR.js} +1 -1
  5. package/{agentMachineCommands-UTTHPDUV.js → agentMachineCommands-JHEX5T4S.js} +2 -2
  6. package/{agentRecordCommands-WYII53FP.js → agentRecordCommands-3VXZXFFS.js} +11 -11
  7. package/{agentRunCommand-NTQPGV6P.js → agentRunCommand-7QM6GYYP.js} +11 -11
  8. package/{agentRuntimeLocal-CNL444G4.js → agentRuntimeLocal-EVIFTFXA.js} +1 -1
  9. package/{agentSlice-PZGUYP2L.js → agentSlice-B5JSZNGT.js} +1 -1
  10. package/{appDeleteCommands-BL4RWG3T.js → appDeleteCommands-EW67CDHD.js} +1 -1
  11. package/{appDeployCommands-6OS3RR66.js → appDeployCommands-SUCPTFUI.js} +1 -1
  12. package/{appDeployStatusCommands-WQFLFSO3.js → appDeployStatusCommands-EWYFXTCU.js} +1 -1
  13. package/{appGetCommands-FH4CIOJO.js → appGetCommands-ITOUFAY4.js} +1 -1
  14. package/{appListCommands-Z6XJPYJJ.js → appListCommands-PYCZWROS.js} +1 -1
  15. package/{builtinSkillRegistry-XIXK4XAH.js → builtinSkillRegistry-H3VTDPXU.js} +1 -1
  16. package/{chatQueueReduxAdapter-SXZ22NDJ.js → chatQueueReduxAdapter-34C6QPMS.js} +2 -2
  17. package/{chunk-UAWA257T.js → chunk-36VG7O3H.js} +1 -1
  18. package/{chunk-FU3RL7UF.js → chunk-542M2LFO.js} +1 -1
  19. package/{chunk-EUHAT445.js → chunk-5F37RGTR.js} +5 -5
  20. package/{chunk-ICEIW3RB.js → chunk-5S7Q2W6J.js} +2 -2
  21. package/{chunk-OUYDHPVR.js → chunk-7UQEDGCB.js} +2 -2
  22. package/{chunk-VIIH2BQP.js → chunk-B3RYNS4I.js} +1 -1
  23. package/{chunk-GYLJXJ32.js → chunk-BS4DOHEI.js} +3 -3
  24. package/{chunk-BGNHBBI3.js → chunk-C5GYGTUD.js} +4 -4
  25. package/{chunk-CYSCZQLE.js → chunk-DAWALEPB.js} +2 -2
  26. package/{chunk-QSDL5Y3K.js → chunk-GNWFC7YT.js} +176 -0
  27. package/{chunk-TNBEPOJR.js → chunk-IVWFJGEB.js} +12 -10
  28. package/{chunk-RESMIGAE.js → chunk-R5TSWLOO.js} +6 -6
  29. package/{chunk-I7ZJJVGO.js → chunk-SDDLKP4V.js} +8 -8
  30. package/{chunk-RZKX733Z.js → chunk-UVSMQBOV.js} +5 -5
  31. package/{chunk-I635TS34.js → chunk-X2KZN5T7.js} +3 -3
  32. package/{chunk-CWYE43DU.js → chunk-ZZ6MBROT.js} +1 -1
  33. package/{contentThunks-2GNOEECN.js → contentThunks-65VJVF3F.js} +3 -3
  34. package/{createAgentAutomationAction-3MR5BSTK.js → createAgentAutomationAction-F6TR5V5Z.js} +3 -3
  35. package/{createDialogAction-E3PALMYX.js → createDialogAction-4PSBOUVA.js} +4 -4
  36. package/{createPageAction-R2AXAUJK.js → createPageAction-BHEWWPJK.js} +3 -3
  37. package/{dialogCommands-AAUWSOLU.js → dialogCommands-K3Y6JVJH.js} +1 -1
  38. package/{dialogSlice-CYGOKMXJ.js → dialogSlice-MSNQGQ7M.js} +2 -2
  39. package/{docCreateCommands-YLDVSLRZ.js → docCreateCommands-U6RYQCCY.js} +1 -1
  40. package/{docDeleteCommands-3ISHZAEV.js → docDeleteCommands-KQJTPJVD.js} +1 -1
  41. package/{docReadCommands-5COAVOO3.js → docReadCommands-IY3PZ2E4.js} +1 -1
  42. package/{docStore-5XXOJADS.js → docStore-32KUMVID.js} +1 -1
  43. package/{docUpdateCommands-Z2745NT3.js → docUpdateCommands-FDH5RH2H.js} +1 -1
  44. package/{handleSendMessageAction-HFHRBK3J.js → handleSendMessageAction-JV45R62M.js} +2 -2
  45. package/index.js +40 -40
  46. package/{machineCommands-I5KWMVKV.js → machineCommands-KZDKNEHA.js} +11 -11
  47. package/{machineWsRunDispatch-3UQVJSGJ.js → machineWsRunDispatch-7QG7MSF3.js} +11 -11
  48. package/package.json +1 -1
  49. package/{readlineWorkspace-DYVLZVQ3.js → readlineWorkspace-RRHH6B4U.js} +11 -11
  50. package/{runAgentClientLoop-LJBICEE5.js → runAgentClientLoop-V4ZIQNZV.js} +9 -9
  51. package/{spaceCommands-T2OFTOSA.js → spaceCommands-KSZU2DEA.js} +1 -1
  52. package/{streamAgentChatTurn-GDWIAY3S.js → streamAgentChatTurn-3SB6KVU7.js} +10 -10
  53. package/{tools-ECH3IW3E.js → tools-CX7EVHKL.js} +7 -7
  54. package/{updateDialogTitleAction-JOZXFR53.js → updateDialogTitleAction-5SZZXIIK.js} +3 -3
@@ -1191,6 +1191,154 @@ function buildWorktreeSkillContentBySlug(slug) {
1191
1191
  });
1192
1192
  }
1193
1193
 
1194
+ // packages/ai/skills/systematicInvestigationSkill.ts
1195
+ var SYSTEMATIC_INVESTIGATION_SKILL_SLUGS = ["systematic-investigation"];
1196
+ function deterministicId7(prefix, seed) {
1197
+ let h = 2166136261;
1198
+ for (let i = 0; i < seed.length; i++) {
1199
+ h ^= seed.charCodeAt(i);
1200
+ h = h * 16777619 >>> 0;
1201
+ }
1202
+ const suffix = h.toString(36).toUpperCase().padStart(14, "0");
1203
+ return (prefix + suffix).slice(0, 26);
1204
+ }
1205
+ function normalizeSkillSeed7(input) {
1206
+ return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1207
+ }
1208
+ function buildSystematicinvestigationSkillId(slug) {
1209
+ return deterministicId7("01SK", normalizeSkillSeed7(slug) || slug);
1210
+ }
1211
+ function buildSystematicinvestigationSkillPageKey(userId, slug) {
1212
+ return `page-${userId}-${buildSystematicinvestigationSkillId(slug)}`;
1213
+ }
1214
+ function buildSystematicinvestigationSkillConfig(slug) {
1215
+ return {
1216
+ version: "0.1",
1217
+ kind: "skill",
1218
+ id: buildSystematicinvestigationSkillId(slug),
1219
+ name: "\u7CFB\u7EDF\u5316\u6392\u67E5\uFF08systematic-investigation\uFF09",
1220
+ triggerMode: "recommended",
1221
+ description: "\u7CFB\u7EDF\u5316\u6392\u67E5\u7EAA\u5F8B\uFF1A\u5148\u6D4B\u91CF\u5B9A\u4F4D\u3001\u518D\u52A8\u624B\u6539\u3002\u56DB\u9636\u6BB5\u6839\u56E0\u8C03\u8BD5\u6CD5\uFF08\u8C03\u67E5\u2192\u6A21\u5F0F\u5206\u6790\u2192\u5047\u8BBE\u6D4B\u8BD5\u2192\u5B9E\u73B0\u4FEE\u590D\uFF09 + \u6570\u636E\u5316\u6027\u80FD\u4F18\u5316 7 \u6B65\uFF08\u5B9A\u4E49\u6307\u6807\u2192\u6253\u6869\u2192baseline\u2192\u5206\u6790\u74F6\u9888\u2192\u4F18\u5316\u2192\u590D\u6D4B\u2192\u5BF9\u6BD4\u62A5\u544A\uFF09\u3002 \u89E6\u53D1\u8BCD\uFF1A\u8C03\u8BD5\u3001bug\u3001\u6839\u56E0\u3001\u6392\u67E5\u3001\u4FEE\u4E0D\u597D\u3001\u53CD\u590D\u5931\u8D25\u3001root cause\u3001\u6027\u80FD\u4F18\u5316\u3001\u6162\u3001latency\u3001 baseline\u3001\u6027\u80FD\u74F6\u9888\u3001perf\u3001\u54CD\u5E94\u6162\u3001\u542F\u52A8\u6162\u3001LCP\u3001hydration\u3002 Do NOT use\uFF1A\u7EAF\u65B0\u529F\u80FD\u5B9E\u73B0\u3001\u6837\u5F0F\u8C03\u6574\u3001\u4E0D\u6D89\u53CA\u6545\u969C\u6392\u67E5\u7684\u67B6\u6784\u8BA8\u8BBA\u3002"
1222
+ };
1223
+ }
1224
+ function buildSystematicinvestigationSkillContentBySlug(slug) {
1225
+ return buildSkillDocMarkdown({
1226
+ body: '# \u7CFB\u7EDF\u5316\u6392\u67E5\u7EAA\u5F8B\uFF08\u6839\u56E0\u8C03\u8BD5 + \u6570\u636E\u5316\u6027\u80FD\u4F18\u5316\uFF09\n\n**\u5171\u540C\u94C1\u5F8B\uFF1A\u65E0\u6839\u56E0\u8C03\u67E5\u4E0D\u63D0\u4FEE\u590D\uFF0C\u65E0 baseline \u4E0D\u63D0\u4F18\u5316\u3002** \u968F\u673A\u4FEE\u590D\u6D6A\u8D39\u65F6\u95F4\u5E76\u5236\u9020\u65B0 bug\uFF1B\n\u300C\u770B\u8D77\u6765\u6162\u300D\u4E0D\u662F\u4F18\u5316\u7406\u7531\u3002\u8FDD\u53CD\u8FC7\u7A0B\u7684\u5B57\u9762\u5C31\u662F\u8FDD\u53CD\u8FC7\u7A0B\u7684\u7CBE\u795E\u3002\n\n## Part A \u2014 \u56DB\u9636\u6BB5\u6839\u56E0\u8C03\u8BD5\u6CD5\n\n\u6BCF\u9636\u6BB5\u5B8C\u6210\u624D\u80FD\u8FDB\u4E0B\u4E00\u4E2A\uFF1A\n\n1. **\u6839\u56E0\u8C03\u67E5**\uFF1A\u8BFB\u5B8C\u6574\u9519\u8BEF\u4FE1\u606F\u548C\u5806\u6808\uFF08\u542B\u884C\u53F7/\u6587\u4EF6/\u9519\u8BEF\u7801\uFF09\uFF1B\u7A33\u5B9A\u590D\u73B0\uFF08\u4E0D\u80FD\u590D\u73B0\u5C31\u6536\u96C6\u66F4\u591A\u6570\u636E\uFF0C\u4E0D\u731C\uFF09\uFF1B\u68C0\u67E5\u6700\u8FD1\u53D8\u66F4\uFF08git diff/commits/\u4F9D\u8D56/\u914D\u7F6E\uFF09\uFF1B\u591A\u7EC4\u4EF6\u7CFB\u7EDF\u5728\u6BCF\u4E2A\u8FB9\u754C\u52A0\u8BCA\u65AD\u65E5\u5FD7\u5148\u5B9A\u4F4D\u54EA\u5C42\u5931\u8D25\uFF1B\u8FFD\u8E2A\u6570\u636E\u6D41\u5230\u574F\u503C\u7684\u6E90\u5934\u3002\n2. **\u6A21\u5F0F\u5206\u6790**\uFF1A\u627E\u540C\u4ED3\u5E93\u5DE5\u4F5C\u4EE3\u7801\u5BF9\u6BD4\uFF1B\u5B8C\u6574\u8BFB\u53C2\u8003\u5B9E\u73B0\u4E0D skim\uFF1B\u5217\u51FA\u5DE5\u4F5C\u4E0E\u635F\u574F\u7684\u6BCF\u4E2A\u5DEE\u5F02\uFF0C\u518D\u5C0F\u4E5F\u522B\u5047\u8BBE"\u4E0D\u53EF\u80FD"\u3002\n3. **\u5047\u8BBE\u6D4B\u8BD5**\uFF1A\u5355\u4E00\u5047\u8BBE\u5199\u4E0B\u6765\uFF08"\u6211\u8BA4\u4E3A X \u662F\u6839\u56E0\u56E0\u4E3A Y"\uFF09\uFF1B\u6700\u5C0F\u6539\u52A8\u6D4B\u8BD5\uFF1B\u4E00\u6B21\u4E00\u4E2A\u53D8\u91CF\uFF1B\u6CA1\u8FC7\u5C31\u63D0\u65B0\u5047\u8BBE\uFF0C\u4E0D\u52A0\u8865\u4E01\u3002\n4. **\u5B9E\u73B0\u4FEE\u590D**\uFF1A\u5148\u5199\u5931\u8D25\u6D4B\u8BD5\uFF1B\u5355\u4E00\u4FEE\u590D\u4E0D\u505A"\u987A\u4FBF\u6539\u8FDB"\uFF1B\u9A8C\u8BC1\u901A\u8FC7\u4E14\u65E0\u5176\u4ED6\u6D4B\u8BD5\u65AD\u88C2\u3002**3 \u6B21\u4FEE\u590D\u5931\u8D25 \u2192 \u8D28\u7591\u67B6\u6784**\uFF0C\u4E0D\u8BD5\u7B2C 4 \u6B21\uFF1A\u6BCF\u6B21\u4FEE\u590D\u63ED\u793A\u65B0\u4F4D\u7F6E/\u65B0\u8026\u5408 \u2192 \u662F\u67B6\u6784\u95EE\u9898\u4E0D\u662F\u5047\u8BBE\u9519\u8BEF\uFF0C\u627E\u4EBA\u8BA8\u8BBA\u800C\u975E\u7EE7\u7EED\u6253\u8865\u4E01\u3002\n\n### \u7EA2\u65D7\u4FE1\u53F7\u2014\u2014\u53D1\u73B0\u81EA\u5DF1\u5728\u60F3\u8FD9\u4E9B\u5C31\u56DE\u9636\u6BB5 1\n\n- "\u5FEB\u901F\u4FEE\u590D\u5148\u8BD5\u8BD5\uFF0C\u4E4B\u540E\u518D\u67E5"\n- "\u6539 X \u770B\u770B\u884C\u4E0D\u884C"\n- "\u52A0\u51E0\u4E2A\u6539\u52A8\u4E00\u8D77\u8DD1\u6D4B\u8BD5"\n- "\u4E0D\u5199\u6D4B\u8BD5\u4E86\u624B\u52A8\u9A8C\u4E00\u4E0B"\n- "\u5E94\u8BE5\u662F X\uFF0C\u5148\u4FEE\u4E86\u518D\u8BF4"\n- "\u4E00\u6B21\u4FEE\u590D"\uFF08\u5DF2\u7ECF\u8BD5\u4E86 2+ \u6B21\uFF09\n- \u6BCF\u6B21\u4FEE\u590D\u5728\u65B0\u4F4D\u7F6E\u66B4\u9732\u65B0\u95EE\u9898\n\n### \u5E38\u89C1\u501F\u53E3\n\n| \u501F\u53E3 | \u73B0\u5B9E |\n|------|------|\n| "\u95EE\u9898\u7B80\u5355\u4E0D\u9700\u8981\u8FC7\u7A0B" | \u7B80\u5355\u95EE\u9898\u4E5F\u6709\u6839\u56E0\uFF0C\u8FC7\u7A0B\u5BF9\u7B80\u5355 bug \u5F88\u5FEB |\n| "\u7D27\u6025\u6CA1\u65F6\u95F4" | \u7CFB\u7EDF\u5316\u8C03\u8BD5\u6BD4\u4E71\u731C\u91CD\u8BD5\u66F4\u5FEB |\n| "\u5148\u8BD5\u8FD9\u4E2A\u518D\u67E5" | \u7B2C\u4E00\u6B21\u4FEE\u590D\u5B9A\u8C03\uFF0C\u4ECE\u4E00\u5F00\u59CB\u5C31\u505A\u5BF9 |\n| "\u51E0\u4E2A\u4FEE\u590D\u5408\u4E00\u8D77\u7701\u65F6\u95F4" | \u65E0\u6CD5\u9694\u79BB\u54EA\u4E2A\u8D77\u6548\uFF0C\u8FD8\u5236\u9020\u65B0 bug |\n\n## Part B \u2014 \u6570\u636E\u5316\u6027\u80FD\u4F18\u5316 7 \u6B65\n\n\u8986\u76D6\u6570\u636E\u5E93\u3001\u670D\u52A1\u7AEF\u3001\u524D\u7AEF\u3001\u5BA2\u6237\u7AEF\u3001\u684C\u9762/RN\u3001CLI\u3001\u540E\u53F0\u4EFB\u52A1\u3001\u961F\u5217\u3001\u7F13\u5B58\u3001\u540C\u6B65\u3001\u6784\u5EFA\u3001\u542F\u52A8\u548C\u7F51\u7EDC\u94FE\u8DEF\u3002\u9664\u975E\u7528\u6237\u660E\u786E\u8981\u6C42\u53EA\u505A\u9759\u6001\u5EFA\u8BAE\uFF0C\u5426\u5219\u4E0D\u5F97\u5148\u6539\u4EE3\u7801\u518D\u8865\u89E3\u91CA\u3002\n\n1. **\u5B9A\u4E49\u8DEF\u5F84\u4E0E\u6307\u6807\u3002** \u5199\u6E05\u695A\u7528\u6237\u5165\u53E3\u6216\u7CFB\u7EDF\u5165\u53E3\u3001\u590D\u73B0\u6B65\u9AA4\u3001\u76EE\u6807\u6307\u6807\u548C\u89C2\u5BDF\u7A97\u53E3\u3002\u6309\u5C42\u9009\u62E9\u6307\u6807\uFF1A\u6570\u636E\u5E93 query/scan/lock/row count\uFF0C\u670D\u52A1\u7AEF handler/SSR/RPC/fanout/serialization/cache\uFF0C\u524D\u7AEF render/hydration/LCP/interaction/request waterfall\uFF0C\u5BA2\u6237\u7AEF/\u684C\u9762/RN startup/bridge/native I/O\uFF0CCLI/background job queue/wall time/CPU/memory\uFF0C\u7F51\u7EDC payload bytes/request count/retry\u3002\n2. **\u4F18\u5316\u524D\u5148\u6253\u6869\u3002** \u5148\u6253\u65E5\u5FD7\u6216\u542F\u7528\u73B0\u6709 probes\u3002\u65E5\u5FD7\u5FC5\u987B\u8986\u76D6\u5173\u952E\u9636\u6BB5\u8FB9\u754C\uFF0C\u5305\u542B request/route/job/query/context \u6807\u8BC6\u3001\u5F00\u59CB/\u7ED3\u675F\u65F6\u95F4\u3001duration\u3001count/size/cacheHit \u7B49\u6570\u503C\uFF0C\u5E76\u907F\u514D\u8F93\u51FA token\u3001cookie\u3001API key\u3001\u7528\u6237\u79C1\u5BC6\u6B63\u6587\u6216\u5927 payload\u3002\n3. **\u6536\u96C6 baseline\u3002** \u5728\u672C\u5730\u6216\u6307\u5B9A\u73AF\u5883\u8DD1\u81F3\u5C11\u4E00\u6B21\u5B8C\u6574\u8DEF\u5F84\uFF0C\u4FDD\u5B58\u539F\u59CB\u8F93\u51FA\u4F4D\u7F6E\u6216\u6458\u5F55\u5173\u952E\u6570\u503C\u3002\u82E5\u672C\u5730 runtime/preview \u963B\u585E\uFF0C\u5148\u62A5\u544A\u963B\u585E\u5E76\u4FEE\u6D4B\u91CF\u8DEF\u5F84\uFF0C\u4E0D\u5F97\u8DF3\u5230\u4F18\u5316\u5B9E\u73B0\u3002\n4. **\u5206\u6790\u74F6\u9888\u3002** \u7528\u6570\u636E\u6307\u51FA\u6700\u6162\u9636\u6BB5\u548C\u5360\u6BD4\uFF0C\u5F62\u6210\u53EF\u8BC1\u4F2A\u5047\u8BBE\u3002\u4E0D\u8981\u56E0\u4E3A\u4EE3\u7801\u770B\u8D77\u6765"\u53EF\u80FD\u6162"\u5C31\u76F4\u63A5\u6539\u3002\n5. **\u5E94\u7528\u4E00\u6B21\u8303\u56F4\u9650\u5B9A\u7684\u4F18\u5316\u3002** \u6BCF\u6B21\u53EA\u6539\u4E00\u4E2A\u4E3B\u8981\u74F6\u9888\u6216\u4E00\u7EC4\u5F3A\u76F8\u5173\u74F6\u9888\uFF0C\u4FDD\u7559\u6743\u5A01\u6570\u636E\u6E90\u548C\u7EF4\u62A4\u8DEF\u5F84\uFF0C\u4E0D\u786C\u7F16\u7801\u3001\u590D\u5236\u6216\u5F71\u5B50\u7F13\u5B58\u4E1A\u52A1\u6570\u636E\u3002\n6. **\u91CD\u65B0\u8FD0\u884C\u540C\u4E00\u6D4B\u91CF\u3002** \u4F7F\u7528\u540C\u4E00\u5165\u53E3\u3001\u540C\u4E00\u6570\u636E\u96C6\u3001\u540C\u4E00\u73AF\u5883\u3001\u540C\u4E00 probe/log \u53E3\u5F84\u590D\u6D4B\u3002\u7ED3\u679C\u5FC5\u987B\u80FD\u548C baseline \u5BF9\u9F50\u3002\n7. **\u62A5\u544A\u5BF9\u6BD4\u3002** \u6700\u7EC8\u62A5\u544A\u5FC5\u987B\u5305\u542B before/after \u8868\uFF1A\u9636\u6BB5\u3001baseline\u3001after\u3001delta\u3001\u6837\u672C\u6B21\u6570\u3001\u73AF\u5883\u3001\u547D\u4EE4/\u65E5\u5FD7\u6765\u6E90\u3001\u5269\u4F59\u74F6\u9888\u548C\u672A\u9A8C\u8BC1\u9879\u3002\u6CA1\u6709\u6539\u5584\u6216\u7ED3\u679C\u566A\u58F0\u8FC7\u5927\u65F6\uFF0C\u5982\u5B9E\u62A5\u544A\uFF0C\u4E0D\u5305\u88C5\u6210\u6210\u529F\u3002\n\n### \u8BA1\u5212\u6587\u4EF6\u7ED3\u6784\n\n\u8BA1\u5212\u6587\u4EF6\u4E2D\u7684\u6027\u80FD\u4EFB\u52A1\u5FC5\u987B\u5305\u542B `Measurement plan`\u3001`Baseline results`\u3001`Optimization hypothesis`\u3001`After results`\u3001`Comparison` \u4E94\u6BB5\uFF1B\u6267\u884C\u4E2D\u6BCF\u83B7\u5F97\u4E00\u7EC4\u6570\u636E\u5C31\u66F4\u65B0\u8BA1\u5212\u6587\u4EF6\uFF0C\u786E\u4FDD\u65B0\u4EE3\u7406\u4E0D\u4F9D\u8D56\u804A\u5929\u8BB0\u5FC6\u3002\n\n## Boundaries\n\n- \u805A\u7126\u7CFB\u7EDF\u5316\u8C03\u8BD5\u5FC3\u6CD5\u4E0E\u6027\u80FD\u6D4B\u91CF\u7EAA\u5F8B\uFF0C\u4E0D\u63D0\u4F9B\u4EE3\u7801\u4FEE\u590D\u672C\u8EAB\u3002\n- \u4E0D\u8986\u76D6\u67B6\u6784\u91CD\u8BBE\u8BA1\uFF08\u4FEE\u590D\u5931\u8D25\u8D85 3 \u6B21\u540E\u8F6C\u7ED9 owner\uFF09\uFF1B\u4E0D\u66FF\u4EE3\u5177\u4F53\u5DE5\u5177\uFF08\u65E5\u5FD7\u3001\u6027\u80FD\u5206\u6790\u3001\u7F51\u7EDC\u5305\uFF09\u7684\u5B66\u4E60\u3002\n- \u4E0D\u628A\u6784\u5EFA\u901A\u8FC7\u3001\u4EE3\u7801\u53D8\u5C11\u6216\u4E3B\u89C2\u611F\u89C9\u66F4\u5FEB\u5F53\u6210\u6027\u80FD\u6539\u5584\uFF1B\u5FC5\u987B\u6709\u540C\u53E3\u5F84 before/after \u6570\u636E\u3002\n- \u7528\u6237\u53EA\u8981\u6C42\u9759\u6001\u5EFA\u8BAE\u65F6\u53EF\u4EE5\u4E0D\u6539\u4EE3\u7801\uFF0C\u4F46\u5FC5\u987B\u660E\u786E\u6CA1\u6709\u8FD0\u884C\u65F6\u57FA\u7EBF\u4E0E\u6539\u5584\u8BC1\u636E\u3002',
1227
+ skillConfig: buildSystematicinvestigationSkillConfig(slug)
1228
+ });
1229
+ }
1230
+
1231
+ // packages/ai/skills/showMeSkill.ts
1232
+ var SHOW_ME_SKILL_SLUGS = ["show-me"];
1233
+ function deterministicId8(prefix, seed) {
1234
+ let h = 2166136261;
1235
+ for (let i = 0; i < seed.length; i++) {
1236
+ h ^= seed.charCodeAt(i);
1237
+ h = h * 16777619 >>> 0;
1238
+ }
1239
+ const suffix = h.toString(36).toUpperCase().padStart(14, "0");
1240
+ return (prefix + suffix).slice(0, 26);
1241
+ }
1242
+ function normalizeSkillSeed8(input) {
1243
+ return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1244
+ }
1245
+ function buildShowmeSkillId(slug) {
1246
+ return deterministicId8("01SK", normalizeSkillSeed8(slug) || slug);
1247
+ }
1248
+ function buildShowmeSkillPageKey(userId, slug) {
1249
+ return `page-${userId}-${buildShowmeSkillId(slug)}`;
1250
+ }
1251
+ function buildShowmeSkillConfig(slug) {
1252
+ return {
1253
+ version: "0.1",
1254
+ kind: "skill",
1255
+ id: buildShowmeSkillId(slug),
1256
+ name: "\u89C6\u89C9\u5316\u89E3\u91CA\uFF08show-me\uFF09",
1257
+ triggerMode: "recommended",
1258
+ description: "\u4EE5\u89C6\u89C9\u76F4\u89C2\u7684\u65B9\u5F0F\uFF08\u7CBE\u70BC\u4F2A\u4EE3\u7801\u3001\u8C03\u7528\u6811\u3001\u7EC4\u4EF6\u6811\u3001Mermaid \u56FE\u8868\u3001\u7ED3\u6784\u5316 Diff \u6216\u72EC\u7ACB HTML \u6E32\u67D3\u5DE5\u4EF6\uFF09\u89E3\u91CA\u590D\u6742\u4E3B\u9898\u3001\u67B6\u6784\u903B\u8F91\u3001\u72B6\u6001\u6D41\u8F6C\u4E0E UI \u7ED3\u6784\u3002\u89E6\u53D1\u8BCD\uFF1A\u753B\u4E2A\u56FE\u3001\u753B\u56FE\u3001\u6D41\u7A0B\u56FE\u3001\u65F6\u5E8F\u56FE\u3001\u53EF\u89C6\u5316\u3001\u600E\u4E48\u8C03\u7528\u7684\u3001\u8C03\u7528\u94FE\u3001\u7EC4\u4EF6\u7ED3\u6784\u3001\u5BF9\u6BD4\u4E00\u4E0B\u3001show me\u3001visualize\u3001diagram\u3001artifact preview\u3002"
1259
+ };
1260
+ }
1261
+ function buildShowmeSkillContentBySlug(slug) {
1262
+ return buildSkillDocMarkdown({
1263
+ body: "# Show Me (Visual-First \u7ED3\u6784\u5316\u8868\u8FBE\u6307\u5357)\n\n\u5F53\u89E3\u91CA\u590D\u6742\u7CFB\u7EDF\u3001\u6D41\u7A0B\u3001\u67B6\u6784\u8BBE\u8BA1\u3001\u6392\u9519\u6839\u56E0\u6216 UI \u53D8\u52A8\u65F6\uFF0C\u9075\u5FAA **\u201C\u89C6\u89C9\u4F18\u5148\uFF08Visual-First\uFF09\u201D** \u539F\u5219\u3002\n\u8DF3\u8FC7\u5197\u957F\u5F00\u573A\u767D\uFF0C\u4FDD\u6301\u6B63\u6587\u7B80\u660E\u627C\u8981\uFF0C\u9009\u62E9\u80FD\u8BB2\u6E05\u6838\u5FC3\u89C2\u70B9\u7684**\u6700\u5C0F\u5FC5\u8981\u89C6\u56FE\uFF08Smallest View\uFF09**\u3002\n\n---\n\n## \u6838\u5FC3\u53EF\u89C6\u5316\u6A21\u5F0F\n\n### 1. \u903B\u8F91\u4E0E\u7B97\u6CD5\u4F2A\u4EE3\u7801\n\u5C55\u793A\u5173\u952E\u5206\u652F\u5224\u65AD\u3001\u8BA1\u7B97\u987A\u5E8F\u6216\u6838\u5FC3\u7B97\u6CD5\u6B65\u9AA4\uFF1A\n\n```text\non(save)\n if content is unchanged\n return cached result\n write new content\n return fresh result\n```\n\n### 2. \u8FD0\u884C\u65F6\u63A7\u5236\u6D41 / \u8C03\u7528\u6811 (Call Tree)\n\u5C55\u793A\u65B9\u6CD5\u8C03\u7528\u5C42\u7EA7\u4E0E\u6570\u636E\u63A8\u8FDB\u94FE\u8DEF\uFF1A\n\n```text\nsubmitForm\n validateInputs\n createSession\n persistPrompt\n launchAgent\n spawnWorker\n navigateToSession\n```\n\n### 3. \u7EC4\u4EF6\u6811\u4E0E\u72B6\u6001\u8FB9\u754C (Component Tree)\n\u5C55\u793A\u524D\u7AEF UI \u7EC4\u4EF6\u5C42\u7EA7\u3001Props \u4F20\u9012\u4EE5\u53CA\u5C40\u90E8/\u5168\u5C40\u72B6\u6001\u6240\u5C5E\uFF1A\n\n```tsx\n(apps/web/src/pages/WorkspacePage.tsx)\n<WorkspaceProvider> // \u5168\u5C40 workspace context\n <WorkspaceLayout>\n <Sidebar /> // activeNav, unreadBadges\n <MainContent>\n <ChatThread> // threadId, messages\n <MessageList>\n <MessageItem /> // content, sender\n </MessageList>\n <ChatInput /> // draft, isSending\n </ChatThread>\n </MainContent>\n </WorkspaceLayout>\n</WorkspaceProvider>\n```\n\n### 4. \u6D45\u5C42\u6587\u4EF6\u6811 (File Tree)\n\u5C55\u793A\u76EE\u5F55\u7EC4\u7EC7\u3001\u6A21\u5757\u5F52\u5C5E\u6216\u91CD\u6784\u8303\u56F4\uFF08\u4EC5\u4FDD\u7559\u4E0E\u95EE\u9898\u76F4\u63A5\u76F8\u5173\u7684\u5C42\u7EA7\uFF09\uFF1A\n\n```text\npackages/\n client/\n src/\n components/ // UI \u5C55\u793A\u7EC4\u4EF6\n hooks/ // \u6570\u636E\u6D41\u4E0E\u54CD\u5E94\u5F0F\u72B6\u6001\n server/\n src/\n routes/ // API \u8DEF\u7531\u5165\u53E3\n services/ // \u6838\u5FC3\u4E1A\u52A1\u5904\u7406\n```\n\n### 5. \u7ED3\u6784\u5316 Diff\n\u9664\u4E86\u4EE3\u7801\u53D8\u66F4\uFF0C\u8FD8\u53EF\u7528\u4E8E\u76F4\u89C2\u5BF9\u6BD4**\u67B6\u6784\u6F14\u8FDB\u3001\u8C03\u7528\u94FE\u4FEE\u6539\u3001\u6587\u4EF6\u91CD\u6784\u3001\u72B6\u6001\u7ED3\u6784\u53D8\u52A8**\uFF1A\n\n```diff\n submitForm\n validateInputs\n- syncDirectSave\n+ dispatchAsyncJob\n+ queueWorker\n+ pollStatus\n navigateToSession\n```\n\n### 6. Mermaid \u6D41\u7A0B\u56FE / \u65F6\u5E8F\u56FE / \u72B6\u6001\u673A\n\u7528\u4E8E\u8DE8\u670D\u52A1\u901A\u4FE1\u3001\u591A\u7AEF\u4EA4\u4E92\u3001\u751F\u547D\u5468\u671F\u4E0E\u72B6\u6001\u6D41\u8F6C\uFF08Web / Desktop \u5BA2\u6237\u7AEF\u53EF\u76F4\u63A5\u539F\u751F\u6E32\u67D3\uFF09\uFF1A\n\n```mermaid\nsequenceDiagram\n autonumber\n actor User as \u7528\u6237\n participant Client as \u5BA2\u6237\u7AEF (Web/Desktop)\n participant Server as Nolo Server\n participant Agent as Agent Runtime\n\n User->>Client: \u53D1\u9001\u6307\u4EE4\n Client->>Server: POST /api/dialog/message\n Server->>Agent: \u8C03\u5EA6 startAgentThread\n Agent-->>Client: SSE \u6D41\u5F0F\u54CD\u5E94 (Token / Artifact)\n Client-->>User: \u5B9E\u65F6\u754C\u9762\u66F4\u65B0\n```\n\n### 7. \u72EC\u7ACB HTML \u6E32\u67D3\u5DE5\u4EF6 (HTML Artifact)\n\u5F53\u6587\u672C\u3001\u6811\u5F62\u56FE\u6216 Mermaid \u65E0\u6CD5\u5145\u5206\u8868\u8FBE\u4E30\u5BCC\u7684\u4EA4\u4E92\u539F\u578B\u3001\u590D\u6742 UI \u5E03\u5C40\u5BF9\u6BD4\u3001\u4FE1\u606F\u56FE\u8868\u6216\u7B80\u62A5\u65F6\uFF0C\u751F\u6210\u4E00\u4EFD\u81EA\u5305\u542B\u7684\u5355\u4E2A HTML \u6587\u4EF6\u3002\n- \u91C7\u7528\u7B26\u5408\u73B0\u4EE3\u4EA7\u54C1\u6807\u51C6\u7684\u914D\u8272\u3001\u5B57\u4F53\u3001\u95F4\u8DDD\u4E0E\u54CD\u5E94\u5F0F\u5E03\u5C40\u3002\n- \u4F7F\u7528\u771F\u5B9E\u6807\u7B7E\u4E0E\u6A21\u62DF\u6570\u636E\uFF0C\u907F\u514D\u7A7A\u7070\u76D2\u3002\n- \u5199\u5165\u6587\u4EF6\u5E76\u901A\u8FC7\u7CFB\u7EDF\u6216 Browser Connector \u6253\u5F00\u7ED9\u7528\u6237\u9884\u89C8\u3002\n\n---\n\n## \u5B9E\u8DF5\u539F\u5219 (Guidance)\n\n1. **\u56FE\u6587\u5E76\u8302\uFF0C\u56FE\u5728\u6587\u5148**\uFF1A\u8BA9\u7ED3\u6784\u56FE\u7D27\u6328\u7740\u5176\u89E3\u91CA\u7684\u7B80\u8FF0\u6587\u5B57\uFF0C\u5148\u5448\u73B0\u6E05\u6670\u56FE\u8868\uFF0C\u518D\u7528 1~3 \u53E5\u8BDD\u8BF4\u660E\u91CD\u70B9\u3002\n2. **\u514B\u5236\u4E0E\u805A\u7126 (Smallest View)**\uFF1A\u53EA\u4FDD\u7559\u56DE\u7B54\u5F53\u524D\u95EE\u9898\u6240\u5FC5\u9700\u7684\u8C03\u7528\u3001\u5C5E\u6027\u3001\u72B6\u6001\u4E0E\u8FB9\u754C\uFF0C\u4E0D\u8981\u5806\u780C\u65E0\u610F\u4E49\u7684\u5168\u5C40\u5197\u4F59\u4EE3\u7801\u3002\n3. **\u9009\u578B\u6070\u5F53**\uFF1A\u901A\u5E38\u4E00\u6B21\u89E3\u91CA\u9009\u7528 1~2 \u79CD\u6700\u5951\u5408\u7684\u53EF\u89C6\u5316\u5F62\u5F0F\u5373\u53EF\uFF0C\u4E0D\u8981\u628A\u6240\u6709\u56FE\u8868\u90FD\u5806\u5728\u4E00\u8D77\u589E\u52A0\u8BA4\u77E5\u8D1F\u62C5\u3002\n4. **\u5BA2\u6237\u7AEF\u9002\u914D**\uFF1A\n - \u5728 CLI / TUI \u7EC8\u7AEF\u4E2D\uFF0C\u4F18\u5148\u4F7F\u7528\u4F2A\u4EE3\u7801\u3001\u7F29\u8FDB\u8C03\u7528\u6811\u3001Unicode \u5B57\u7B26\u56FE\u4E0E Diff\uFF1B\n - \u5728 Web / Desktop \u56FE\u5F62\u5BA2\u6237\u7AEF\u4E2D\uFF0C\u5145\u5206\u5229\u7528 Mermaid \u6E32\u67D3\u4E0E HTML Artifacts \u9884\u89C8\u3002",
1264
+ skillConfig: buildShowmeSkillConfig(slug)
1265
+ });
1266
+ }
1267
+
1268
+ // packages/ai/skills/cavemanSkill.ts
1269
+ var CAVEMAN_SKILL_SLUGS = ["caveman"];
1270
+ function deterministicId9(prefix, seed) {
1271
+ let h = 2166136261;
1272
+ for (let i = 0; i < seed.length; i++) {
1273
+ h ^= seed.charCodeAt(i);
1274
+ h = h * 16777619 >>> 0;
1275
+ }
1276
+ const suffix = h.toString(36).toUpperCase().padStart(14, "0");
1277
+ return (prefix + suffix).slice(0, 26);
1278
+ }
1279
+ function normalizeSkillSeed9(input) {
1280
+ return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1281
+ }
1282
+ function buildCavemanSkillId(slug) {
1283
+ return deterministicId9("01SK", normalizeSkillSeed9(slug) || slug);
1284
+ }
1285
+ function buildCavemanSkillPageKey(userId, slug) {
1286
+ return `page-${userId}-${buildCavemanSkillId(slug)}`;
1287
+ }
1288
+ function buildCavemanSkillConfig(slug) {
1289
+ return {
1290
+ version: "0.1",
1291
+ kind: "skill",
1292
+ id: buildCavemanSkillId(slug),
1293
+ name: "\u538B\u7F29\u8868\u8FBE\uFF08caveman\uFF09",
1294
+ triggerMode: "explicit",
1295
+ description: 'Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.'
1296
+ };
1297
+ }
1298
+ function buildCavemanSkillContentBySlug(slug) {
1299
+ return buildSkillDocMarkdown({
1300
+ body: 'Respond terse like smart caveman. All technical substance stay. Only fluff die.\n\n## Persistence\n\nACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: "stop caveman" / "normal mode".\n\nDefault: **full**. Switch: `/caveman lite|full|ultra`.\n\n## Rules\n\nDrop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). No tool-call narration, no decorative tables/emoji, no dumping long raw error logs unless asked \u2014 quote shortest decisive line. Standard well-known tech acronyms OK (DB/API/HTTP); never invent new abbreviations reader can\'t decode. Technical terms exact. Code blocks unchanged. Errors quoted exact.\n\nPreserve user\'s dominant language. User write Portuguese \u2192 reply Portuguese caveman. User write Spanish \u2192 reply Spanish caveman. Compress the style, not the language. No forced English openings or status phrases. ALWAYS keep technical terms, code, API names, CLI commands, commit-type keywords (feat/fix/...), and exact error strings verbatim \u2014 unless user explicitly ask for translation.\n\nNo self-reference. Never name or announce the style. No "caveman mode on", "me caveman think", no third-person caveman tags. Output caveman-only \u2014 never normal answer plus "Caveman:" recap. Exception: user explicitly ask what the mode is.\n\nPattern: `[thing] [action] [reason]. [next step].`\n\nNot: "Sure! I\'d be happy to help you with that. The issue you\'re experiencing is likely caused by..."\nYes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"\n\n## Intensity\n\n| Level | What change |\n|-------|------------|\n| **lite** | No filler/hedging. Keep articles + full sentences. Professional but tight |\n| **full** | Drop articles, fragments OK, short synonyms. Classic caveman. No tool-call narration, no decorative tables/emoji, no long raw error-log dumps unless asked. Standard acronyms OK; no invented abbreviations |\n| **ultra** | Abbreviate prose words (DB/auth/config/req/res/fn/impl) \u2014 prose words only, never real code symbols/function names. Strip conjunctions, arrows for causality (X \u2192 Y), one word when one word enough. Code symbols, function names, API names, error strings: never abbreviate |\n| **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |\n| **wenyan-full** | Maximum classical terseness. Fully \u6587\u8A00\u6587. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (\u4E4B/\u4E43/\u70BA/\u5176) |\n| **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |\n\nExample \u2014 "Why React component re-render?"\n- lite: "Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`."\n- full: "New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`."\n- ultra: "Inline obj prop \u2192 new ref \u2192 re-render. `useMemo`."\n- wenyan-lite: "\u7D44\u4EF6\u983B\u91CD\u7E6A\uFF0C\u4EE5\u6BCF\u7E6A\u65B0\u751F\u5C0D\u8C61\u53C3\u7167\u6545\u3002\u4EE5 useMemo \u5305\u4E4B\u3002"\n- wenyan-full: "\u6BCF\u7E6A\u65B0\u751F\u5C0D\u8C61\u53C3\u7167\uFF0C\u6545\u91CD\u7E6A\uFF1B\u4EE5 useMemo \u5305\u4E4B\u5247\u514D\u3002"\n- wenyan-ultra: "\u65B0\u53C3\u7167\u2192\u91CD\u7E6A\u3002useMemo Wrap\u3002"\n\nExample \u2014 "Explain database connection pooling."\n- lite: "Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead."\n- full: "Pool reuse open DB connections. No new connection per request. Skip handshake overhead."\n- ultra: "Pool = reuse DB conn. Skip handshake \u2192 fast under load."\n- wenyan-full: "\u6C60reuse open connection\u3002\u4E0D\u6BCFreq\u65B0\u958B\u3002skip handshake overhead\u3002"\n- wenyan-ultra: "\u6C60reuse conn\u3002skip handshake \u2192 fast\u3002"\n\n## Auto-Clarity\n\nDrop caveman when:\n- Security warnings\n- Irreversible action confirmations\n- Multi-step sequences where fragment order or omitted conjunctions risk misread\n- Compression itself creates technical ambiguity (e.g., `"migrate table drop column backup first"` \u2014 order unclear without articles/conjunctions)\n- User asks to clarify or repeats question\n\nResume caveman after clear part done.\n\nExample \u2014 destructive op:\n> **Warning:** This will permanently delete all rows in the `users` table and cannot be undone.\n> ```sql\n> DROP TABLE users;\n> ```\n> Caveman resume. Verify backup exist first.\n\n## Boundaries\n\nCode/commits/PRs: write normal. "stop caveman" or "normal mode": revert. Level persist until changed or session end.',
1301
+ skillConfig: buildCavemanSkillConfig(slug)
1302
+ });
1303
+ }
1304
+
1305
+ // packages/ai/skills/skillCreatorSkill.ts
1306
+ var SKILL_CREATOR_SKILL_SLUGS = ["skill-creator"];
1307
+ function deterministicId10(prefix, seed) {
1308
+ let h = 2166136261;
1309
+ for (let i = 0; i < seed.length; i++) {
1310
+ h ^= seed.charCodeAt(i);
1311
+ h = h * 16777619 >>> 0;
1312
+ }
1313
+ const suffix = h.toString(36).toUpperCase().padStart(14, "0");
1314
+ return (prefix + suffix).slice(0, 26);
1315
+ }
1316
+ function normalizeSkillSeed10(input) {
1317
+ return input.trim().toLowerCase().replace(/[^a-z0-9\u4e00-\u9fa5]+/g, "-").replace(/^-+|-+$/g, "");
1318
+ }
1319
+ function buildSkillCreatorSkillId(slug) {
1320
+ return deterministicId10("01SK", normalizeSkillSeed10(slug) || slug);
1321
+ }
1322
+ function buildSkillCreatorSkillPageKey(userId, slug) {
1323
+ return `page-${userId}-${buildSkillCreatorSkillId(slug)}`;
1324
+ }
1325
+ function buildSkillCreatorSkillConfig(slug) {
1326
+ return {
1327
+ version: "0.1",
1328
+ kind: "skill",
1329
+ id: buildSkillCreatorSkillId(slug),
1330
+ name: "Skill \u7F16\u5199\u65B9\u6CD5\u8BBA\uFF08skill-creator\uFF09",
1331
+ triggerMode: "explicit",
1332
+ description: "\u7F16\u5199\u3001\u6539\u8FDB\u4E0E\u6821\u9A8C Agent Skill\uFF08SKILL.md\uFF09\u7684\u8DE8\u9879\u76EE\u65B9\u6CD5\u8BBA\uFF1A\u6A21\u7CCA\u9700\u6C42\u8BCA\u65AD\u3001\u7ED3\u6784\u6A21\u5F0F\u9009\u578B\u3001frontmatter description \u89E6\u53D1\u8BCD\u8BBE\u8BA1\u3001Boundaries \u8FB9\u754C\u5212\u5B9A\u4E0E\u81EA\u5305\u542B\u6821\u9A8C\u6E05\u5355\u3002\u89E6\u53D1\u8BCD\uFF1A\u65B0\u5EFA skill\u3001\u5199\u4E2A skill\u3001\u6539 skill\u3001\u628A\u5DE5\u4F5C\u6D41\u8F6C\u6210 skill\u3001skill \u89E6\u53D1\u4E0D\u4E86\u3001skill \u4E0D\u89E6\u53D1\u3001SKILL.md\u3001\u6821\u9A8C skill \u683C\u5F0F\u3001skill \u8FB9\u754C\u3002Make sure to use this skill whenever the user mentions skill\u3001SKILL.md\u3001\u6280\u80FD\u521B\u5EFA\u6216\u6280\u80FD\u6539\u9020\u2014\u2014even if they don't explicitly say 'skill-creator'\u3002"
1333
+ };
1334
+ }
1335
+ function buildSkillCreatorSkillContentBySlug(slug) {
1336
+ return buildSkillDocMarkdown({
1337
+ body: "# Skill Creator (Agent Skill \u7F16\u5199\u65B9\u6CD5\u8BBA)\n\n\u5199 skill \u662F\u7ED9 agent \u5199\u300C\u53EF\u88AB\u8DEF\u7531\u5230\u7684\u5DE5\u4F5C\u8BF4\u660E\u4E66\u300D\uFF0C\u4E0D\u662F\u7ED9\u4EBA\u770B\u7684\u6587\u6863\u3002\u672C skill \u53EA\u8BB2**\u600E\u4E48\u5199 skill**\uFF1B\u8BE5\u4E0D\u8BE5\u65B0\u5EFA\u4E00\u4E2A agent\u3001agent \u7684\u521B\u5EFA\u6D41\u7A0B\u5F52\u5185\u7F6E `agent-creator` \u7BA1\u3002\n\n## Core Principles\n\n### Concise is Key\n\n\u4E0A\u4E0B\u6587\u7A97\u53E3\u662F\u5171\u4EAB\u7684\uFF1Asystem prompt\u3001\u5BF9\u8BDD\u5386\u53F2\u3001\u5176\u4ED6 skill \u7684\u5143\u6570\u636E\u3001\u7528\u6237\u8BF7\u6C42\u90FD\u5728\u91CC\u9762\u3002**\u9ED8\u8BA4\u5047\u8BBE agent \u5DF2\u7ECF\u591F\u806A\u660E**\uFF0C\u53EA\u8865\u5B83\u6CA1\u6709\u7684\u4E0A\u4E0B\u6587\u3002\u6BCF\u53E5\u8BDD\u5148\u8FC7\u4E09\u95EE\uFF1A\u4E0D\u8BF4 agent \u80FD\u4E0D\u80FD\u81EA\u5DF1\u63A8\u51FA\u6765\uFF1F\u2192 \u5220\u3002\u522B\u7684 skill \u91CC\u6709\u6CA1\u6709\uFF1F\u2192 \u5F15\u7528\u5B83\u3002\u662F\u4E0D\u662F\u8BE6\u7EC6\u53C2\u8003\u8D44\u6599\uFF1F\u2192 \u653E `references/` \u6309\u9700\u52A0\u8F7D\u3002\u5B81\u8981\u77ED\u793A\u4F8B\uFF0C\u4E0D\u8981\u957F\u89E3\u91CA\u3002\n\n### Degree of Freedom\n\n\u628A\u8868\u8FF0\u7684\u4E25\u683C\u7A0B\u5EA6\u5339\u914D\u4EFB\u52A1\u7684\u8106\u5F31\u5EA6\uFF1A\n\n- **\u9AD8**\uFF08\u6587\u5B57\u8BF4\u660E\uFF09\u2014\u2014\u591A\u6761\u8DEF\u90FD\u901A\uFF0C\u51B3\u7B56\u4F9D\u8D56\u4E0A\u4E0B\u6587\n- **\u4E2D**\uFF08\u5E26\u53C2\u6570\u7684\u6A21\u677F\u811A\u672C\uFF09\u2014\u2014\u6709\u9996\u9009\u6A21\u5F0F\uFF0C\u5141\u8BB8\u5C11\u91CF\u53D8\u5316\n- **\u4F4E**\uFF08\u5199\u6B7B\u7684\u811A\u672C\u4E0E\u7ED3\u6784\uFF09\u2014\u2014\u64CD\u4F5C\u8106\u5F31\u3001\u4E00\u81F4\u6027\u5173\u952E\n\n### What to Not Include\n\nskill \u91CC\u53EA\u653E\u76F4\u63A5\u652F\u6491\u5B83\u804C\u80FD\u7684\u6587\u4EF6\u3002**\u7EDD\u4E0D\u521B\u5EFA** `README.md`\u3001`INSTALLATION_GUIDE.md`\u3001`CHANGELOG.md` \u6216\u4EFB\u4F55\u8BB2\u8FF0\u300C\u5B83\u662F\u600E\u4E48\u505A\u51FA\u6765\u7684\u300D\u7684\u9644\u5C5E\u6587\u6863\u3002skill \u662F\u7ED9 agent \u5E72\u6D3B\u7684\uFF0C\u4E0D\u662F\u7ED9\u4EBA\u8BFB\u5236\u4F5C\u8FC7\u7A0B\u7684\u3002\n\n## Skill Creation Process\n\n### Step 1: \u4E00\u53E5\u8BDD\u6D4B\u8BD5\n\n\u5148\u7528\u4E00\u53E5\u8BDD\u8BF4\u6E05\u8FD9\u4E2A skill \u5E72\u4EC0\u4E48\u3002\u8BF4\u4E0D\u6E05\u5C31\u505C\u4E0B\u91CD\u60F3\u3002\u300C\u5B83\u5E2E\u5FD9\u505A\u4EE3\u7801\u5BA1\u67E5\u300D\u592A\u6A21\u7CCA\uFF1B\u300C\u5B83\u5BA1\u67E5 TypeScript PR \u7684 bug\u3001\u98CE\u683C\u4E0E\u67B6\u6784\uFF0C\u5E76\u8FD4\u56DE\u5E26 severity \u7B49\u7EA7\u7684\u7ED3\u6784\u5316\u62A5\u544A\u300D\u5408\u683C\u3002\n\n#### 1b. \u8BCA\u65AD\u6A21\u7CCA\u9700\u6C42\n\n\u7528\u6237\u63CF\u8FF0\u7684\u662F\u75DB\u70B9\u800C\u4E0D\u662F skill \u8BF7\u6C42\uFF08\u300C\u6211\u6BCF\u6B21\u90FD\u5F97\u624B\u52A8\u68C0\u67E5 X\u300D\uFF09\u65F6\uFF0C\u5148\u8BCA\u65AD\u518D\u8981\u7ED3\u6784\uFF1A\n\n- \u8FD9\u4EF6\u4E8B\u6700\u9002\u5408\u7684\u662F skill\u3001\u811A\u672C\u3001\u6587\u6863\uFF0C\u8FD8\u662F\u505A\u4E00\u6B21\u5C31\u591F\uFF1F\n- \u82E5\u9002\u5408 skill\uFF0C\u6700\u8F7B\u7684\u5F62\u6001\u662F\u4EC0\u4E48\uFF1Aworkflow\u3001checklist\u3001reference\uFF0C\u8FD8\u662F\u5DE5\u5177\u5C01\u88C5\uFF1F\n- \u6700\u591A\u63A8\u8350\u4E24\u4E2A\u65B9\u5411\uFF0C\u8BF4\u6E05\u5404\u81EA\u9002\u914D\u70B9\u4E0E\u5C40\u9650\u3002\n\n#### 1c. \u95EE\u5BF9\u95EE\u9898\n\n\u52A8\u7B14\u524D\u628A\u6838\u5FC3\u95EE\u6E05\u695A\uFF0C**\u6BCF\u8F6E\u6700\u591A 2-3 \u4E2A\u95EE\u9898**\uFF0C\u4E0D\u8981\u5012\u51FA\u4E00\u5F20\u8868\u5355\u3002\u6838\u5FC3\u95EE\u9898\uFF1A(1) \u8FD9\u4E2A skill \u8981\u63A5\u7BA1\u54EA\u4EF6 recurring \u7684\u6D3B\uFF1F(2) \u522B\u4EBA\u4F1A\u5582\u7ED9\u5B83\u4EC0\u4E48\u771F\u5B9E\u8F93\u5165\uFF1F(3) \u5B83\u8BE5\u8FD4\u56DE\u4EC0\u4E48\u6210\u54C1\uFF1F(4) \u76F8\u90BB\u7684\u54EA\u4E9B\u8BF7\u6C42\u5B83\u8981\u660E\u786E\u62D2\u7EDD\uFF1F\n\n**\u987A\u5E8F\u6709\u8BB2\u7A76**\uFF1A\u5148\u95EE\u8FB9\u754C\uFF08\u300C\u5B83\u4E0D\u8BE5\u505A\u4EC0\u4E48\u300D\uFF09\uFF0C\u518D\u95EE\u4EA7\u51FA\uFF08\u300C\u6210\u529F\u957F\u4EC0\u4E48\u6837\u300D\uFF09\uFF0C\u6700\u540E\u624D\u95EE\u7ED3\u6784\uFF1B\u80FD\u4E00\u53E5\u8BDD\u8BF4\u6E05 skill \u65F6\u5C31\u505C\u6B62\u63D0\u95EE\u3002\n\n#### 1d. \u5BF9\u8BDD\u8BED\u6C14\n\n\u8BED\u6C14\u5339\u914D\u7528\u6237\u72B6\u6001\u800C\u4E0D\u662F\u6A21\u677F\uFF1A\u60F3\u6CD5\u6A21\u7CCA\u65F6\u5148\u5E76\u80A9\u628A\u5B83\u7406\u6E05\uFF0C\u76EE\u6807\u6E05\u6670\u65F6\u76F4\u63A5\u4E0A\u7ED3\u6784\uFF0C\u60F3\u5171\u521B\u5C31\u50CF\u5BF9\u7B49\u8BA8\u8BBA\u5E76\u4ECE\u5BF9\u8BDD\u91CC\u62A0\u8FB9\u754C\u3002\u7B2C\u4E00\u56DE\u590D\u6C38\u8FDC\u4E0D\u8981\u662F\u4E00\u5F20\u51B7\u51B0\u51B0\u7684\u8868\u5355\u95EE\u5377\uFF0C\u4E5F\u4E0D\u8981\u5728\u7406\u89E3\u771F\u5B9E\u804C\u8D23\u4E4B\u524D\u5C31\u7529\u4E00\u5957\u6A21\u677F\u3002\n\n### Step 2: \u89C4\u5212\u7ED3\u6784\n\n\u6309 skill \u6027\u8D28\u9009\u4E00\u79CD\u6A21\u5F0F\uFF1A\n\n**Workflow-based**\u2014\u2014\u6709\u6E05\u6670\u6B65\u9AA4\u7684\u987A\u5E8F\u6D41\u7A0B\uFF1A`## Overview \u2192 ## Workflow \u2192 ## Step 1 \u2192 ## Step 2 ...`\uFF0C\u9002\u5408\u90E8\u7F72\u3001\u53D1\u5E03\u3001\u6392\u9519\u6D41\u7A0B\u3002\n\n**Task-based**\u2014\u2014\u4E00\u7EC4\u76F8\u5173\u64CD\u4F5C\uFF1A`## Overview \u2192 ## Quick Start \u2192 ## Task A \u2192 ## Task B ...`\uFF0C\u9002\u5408 CLI \u53C2\u8003\u3001\u5DE5\u5177\u96C6\u3001API \u6307\u5357\u3002\n\n**Reference-based**\u2014\u2014\u6807\u51C6\u3001schema\u3001\u7B56\u7565\uFF1A`## Overview \u2192 ## Rules \u2192 ## Examples \u2192 ## Boundaries`\uFF0C\u9002\u5408\u4EE3\u7801\u5BA1\u67E5\u89C4\u8303\u3001\u54C1\u724C\u6807\u51C6\u3001\u67B6\u6784\u539F\u5219\u3002\n\n### Step 3: \u521D\u59CB\u5316\n\n\u5EFA\u76EE\u5F55 `<skill-name>/`\uFF0C\u5199 `SKILL.md`\uFF0CYAML frontmatter \u81F3\u5C11\u542B `name`\uFF08kebab-case\uFF09\u4E0E `description`\u3002\u9879\u76EE\u82E5\u81EA\u5E26\u811A\u624B\u67B6\uFF08\u5982 bun-nolo \u7684 `bun scripts/skill/init.ts <name>`\uFF09\u4F18\u5148\u7528\u5B83\uFF0C\u5426\u5219\u624B\u5199\u3002\n\n### Step 4: \u5199 SKILL.md\n\n#### Frontmatter\n\n**\u5148\u5199 `description`**\u2014\u2014\u5B83\u662F agent \u51B3\u5B9A\u52A0\u8F7D\u524D\u552F\u4E00\u80FD\u770B\u5230\u7684\u4E1C\u897F\uFF0C\u4E5F\u662F\u4E3B\u8981\u89E6\u53D1\u673A\u5236\u3002agent \u5929\u7136**\u6B20\u89E6\u53D1**\uFF0C\u8981\u7528\u300Cpushy\u300D\u63AA\u8F9E\u5BF9\u6297\u3002\n\n```yaml\ndescription: >\n [\u5B83\u505A\u4EC0\u4E48]\u3002Use when [\u5177\u4F53\u89E6\u53D1\u8BCD\u3001\u5173\u952E\u8BCD\u3001\u573A\u666F]\u3002\n```\n\n\u89C4\u5219\uFF1A\n\n- \u540C\u65F6\u5199\u300C\u505A\u4EC0\u4E48\u300D\u548C\u300C\u4F55\u65F6\u7528\u300D\uFF1B\u6240\u6709 when-to-use \u4FE1\u606F\u8FDB description\uFF0C\u4E0D\u8FDB\u6B63\u6587\n- \u89E6\u53D1\u8BCD\u8981\u5177\u4F53\uFF08\u6B63\u5F0F\u8BF4\u6CD5\u4E0E\u53E3\u8BED\u90FD\u8BF4\u4E0A\uFF09\uFF0C\u70B9\u540D\u6587\u4EF6\u7C7B\u578B\u3001\u5DE5\u5177\u6216\u573A\u666F\n- \u7528 pushy \u63AA\u8F9E\uFF08\u300CMake sure to use this skill whenever...\u300D\uFF09\n- \u8D1F\u5411\u8FB9\u754C\uFF08\u300C\u4E0D\u505A X\u300D\uFF09\u653E\u6B63\u6587 `## Boundaries`\uFF0C\u4E0D\u8981\u8FDB description\u2014\u2014description \u662F\u53D1\u73B0\u83DC\u5355\uFF0C\u6BCF\u4E2A\u5B57\u90FD\u8BE5\u5E2E agent \u5224\u65AD\u8981\u4E0D\u8981\u52A0\u8F7D\n- \u22641024 \u5B57\u7B26\uFF1B\u4E0D\u542B\u5C16\u62EC\u53F7 `<>`\n\n#### \u6B63\u6587\n\n- \u7528\u7948\u4F7F\u53E5\uFF08\u300C\u8BFB\u8FD9\u4E2A\u6587\u4EF6\u300D\u300C\u68C0\u67E5\u683C\u5F0F\u300D\uFF09\n- \u89E3\u91CA **why** \u800C\u4E0D\u53EA\u662F what\u2014\u2014agent \u591F\u806A\u660E\uFF0C\u80FD\u4ECE\u539F\u5219\u63A8\u7406\n- \u5B81\u8981\u77ED\u793A\u4F8B\uFF0C\u4E0D\u8981\u957F\u89E3\u91CA\n- \u5F15\u7528\u5176\u4ED6 skill \u7528\u53CD\u5F15\u53F7\u5305\u540D\u5B57\n- SKILL.md \u4FDD\u6301\u7CBE\u7B80\uFF0C\u771F\u6B63\u9700\u8981\u65F6\u624D\u62C6 `references/`\n- \u9009\u5B9A\u7ED3\u6784\u6A21\u5F0F\u540E\u5220\u6389\u6A21\u677F\u91CC\u7684\u7ED3\u6784\u6027 HTML \u6CE8\u91CA\n\n\u6BCF\u4E2A skill \u5FC5\u987B\u6709 `## Boundaries` \u4E00\u8282\uFF0C\u5217\u51FA\u5B83\u523B\u610F**\u4E0D**\u505A\u7684\u4E8B\u2014\u2014\u6CA1\u6709\u8FB9\u754C\u7684 skill \u4F1A\u9010\u6E10\u541E\u5E76\u76F8\u90BB\u4EFB\u52A1\u76F4\u5230\u4E0D\u53EF\u9760\uFF1B\u663E\u5F0F\u5217\u51FA\u4E0D\u5904\u7406\u4EC0\u4E48\uFF0C\u662F\u63D0\u5347\u89E6\u53D1\u51C6\u786E\u7387\u6700\u5FEB\u7684\u529E\u6CD5\u3002\n\n### Step 5: \u6821\u9A8C\n\n\u8DD1\u9879\u76EE\u81EA\u5E26\u6821\u9A8C\uFF08\u5982 bun-nolo \u7684 `bun scripts/skill/validate.ts <path>` \u6216 `--all`\uFF09\uFF1B\u6CA1\u6709\u5C31\u6309\u6B64\u6E05\u5355\u81EA\u67E5\uFF1ASKILL.md \u5B58\u5728\uFF1Bfrontmatter \u5408\u6CD5\uFF1B`name` \u662F kebab-case \u4E14 \u226464 \u5B57\u7B26\uFF1B`description` \u5B58\u5728\u3001\u65E0 `<>`\u3001\u22641024 \u5B57\u7B26\u3001\u65E0\u6B8B\u7559 TODO\uFF1B\u6709 `## Boundaries`\u3002\u5168\u8FC7\u624D\u7B97\u5B8C\u6210\u3002\n\n### Step 6: \u8FED\u4EE3\n\n\u7528\u300C\u63D0\u5347\u53EF\u9760\u6027\u5927\u4E8E\u589E\u52A0\u4E0A\u4E0B\u6587\u6210\u672C\u300D\u7684\u6700\u5C0F\u6539\u52A8\u3002\u5305\u66F4\u5927\u53EA\u5728\u8DEF\u7531\u3001\u6267\u884C\u6216\u6CBB\u7406\u660E\u663E\u66F4\u53EF\u9760\u65F6\u624D\u66F4\u4F18\u3002skill \u53CD\u590D\u4EA7\u51FA\u574F\u8F93\u51FA\u65F6\uFF0C\u6839\u56E0\u5F88\u5C11\u662F\u4E00\u6761\u574F\u6307\u4EE4\uFF0C\u901A\u5E38\u662F\u7ED3\u6784\u95EE\u9898\u3002\u52A0\u66F4\u591A\u6587\u5B57\u4E4B\u524D\u5148\u95EE\uFF1A\n\n1. \u8FD9\u4E2A skill **\u62E5\u6709**\u4EC0\u4E48\uFF1F\u8FB9\u754C\u6E05\u4E0D\u6E05\uFF1F\n2. \u4EC0\u4E48**\u53CD\u9988**\u8BF4\u660E\u5B83\u5728\u53D8\u597D\u8FD8\u662F\u5728\u6F02\u79FB\uFF1F\n3. \u54EA\u4E2A\u5931\u6548\u53EA\u6709**\u53CD\u590D\u4F7F\u7528**\u540E\u624D\u4F1A\u51FA\u73B0\uFF1F\n4. \u54EA\u5904\u662F**\u6700\u5C0F\u6539\u52A8\u3001\u6700\u5927\u8D28\u91CF\u6536\u76CA**\uFF1F\n\n## \u8DE8\u5E73\u53F0\u517C\u5BB9\n\nskill \u7CFB\u7EDF\u9075\u5FAA Agent Skills \u5F00\u653E\u6807\u51C6\uFF08Anthropic/OpenAI \u517C\u5BB9\uFF09\uFF1Afrontmatter \u7528 `name`\uFF08kebab-case\uFF0C\u226464 \u5B57\u7B26\uFF09+ `description`\uFF08\u5FC5\u586B\uFF0C\u65E0\u5C16\u62EC\u53F7\uFF09\uFF1B\u53EF\u9009\u5B57\u6BB5 `triggers`\u3001`assertions`\u3001`license`\u3001`metadata`\u3001`compatibility`\u3002\n\n```text\nskill-name/\n\u251C\u2500\u2500 SKILL.md (required)\n\u251C\u2500\u2500 agents/ (optional \u2014 platform-specific metadata)\n\u251C\u2500\u2500 references/ (optional \u2014 docs loaded on demand)\n\u251C\u2500\u2500 scripts/ (optional \u2014 executable code)\n\u2514\u2500\u2500 assets/ (optional \u2014 templates, images, fonts)\n```\n\n## Common Mistakes\n\n| Mistake | Fix |\n|---|---|\n| Description \u6CDB\u6CDB\uFF08\u300Chelps with X\u300D\uFF09 | \u8865\u5177\u4F53\u89E6\u53D1\u8BCD\u4E0E\u573A\u666F |\n| when-to-use \u5199\u5728\u6B63\u6587 | \u632A\u8FDB description |\n| Description \u542B\u5C16\u62EC\u53F7 | \u53BB\u6389 `<>`\uFF08\u7834\u574F XML \u89E3\u6790\uFF09 |\n| skill \u540D\u4E0E\u6CE8\u518C\u8868\u4E0D\u4E00\u81F4 | \u8DD1\u6821\u9A8C\u811A\u672C\u6293\u4E0D\u5339\u914D |\n| \u5EFA\u4E86\u6587\u4EF6\u5FD8\u4E86\u6CE8\u518C | \u7528\u811A\u624B\u67B6\u800C\u4E0D\u662F\u624B\u5EFA |\n| \u6CA1\u6709 Boundaries \u4E00\u8282 | \u81F3\u5C11\u5199\u4E00\u6761\u5B83\u4E0D\u505A\u4EC0\u4E48 |\n| \u6B63\u6587\u8FC7\u957F\uFF08>500 \u884C\uFF09 | \u62C6\u6210 SKILL.md + references/ |\n\n## Boundaries\n\n- \u53EA\u8BB2\u600E\u4E48\u5199 skill\uFF1B\u4E0D\u56DE\u7B54\u5177\u4F53\u4E1A\u52A1\u95EE\u9898\uFF0C\u4E5F\u4E0D\u66FF\u4EE3\u4EFB\u4F55\u5177\u4F53 skill \u672C\u8EAB\n- \u4E0D\u7BA1 agent \u7684\u521B\u5EFA\u4E0E\u751F\u547D\u5468\u671F\u2014\u2014\u90A3\u662F\u5185\u7F6E `agent-creator` \u7684\u804C\u8D23\n- \u4E0D\u4E3A\u4E86\u300C\u770B\u8D77\u6765\u4E13\u4E1A\u300D\u6269\u5199\u957F\u6587\uFF1B\u76EE\u6807\u59CB\u7EC8\u662F\u9AD8\u4FE1\u566A\u6BD4\u3001\u6613\u89E6\u53D1\u3001\u6613\u7EF4\u62A4",
1338
+ skillConfig: buildSkillCreatorSkillConfig(slug)
1339
+ });
1340
+ }
1341
+
1194
1342
  // packages/ai/skills/builtinSkillRegistry.ts
1195
1343
  var codePlannerContentBySlug = /* @__PURE__ */ (() => {
1196
1344
  const cache = /* @__PURE__ */ new Map();
@@ -1255,6 +1403,34 @@ var SOURCES = [
1255
1403
  buildPageKey: buildWorktreeSkillPageKey,
1256
1404
  buildConfig: buildWorktreeSkillConfig,
1257
1405
  buildContent: buildWorktreeSkillContentBySlug
1406
+ },
1407
+ {
1408
+ slugs: SYSTEMATIC_INVESTIGATION_SKILL_SLUGS,
1409
+ buildSkillId: buildSystematicinvestigationSkillId,
1410
+ buildPageKey: buildSystematicinvestigationSkillPageKey,
1411
+ buildConfig: buildSystematicinvestigationSkillConfig,
1412
+ buildContent: buildSystematicinvestigationSkillContentBySlug
1413
+ },
1414
+ {
1415
+ slugs: SHOW_ME_SKILL_SLUGS,
1416
+ buildSkillId: buildShowmeSkillId,
1417
+ buildPageKey: buildShowmeSkillPageKey,
1418
+ buildConfig: buildShowmeSkillConfig,
1419
+ buildContent: buildShowmeSkillContentBySlug
1420
+ },
1421
+ {
1422
+ slugs: CAVEMAN_SKILL_SLUGS,
1423
+ buildSkillId: buildCavemanSkillId,
1424
+ buildPageKey: buildCavemanSkillPageKey,
1425
+ buildConfig: buildCavemanSkillConfig,
1426
+ buildContent: buildCavemanSkillContentBySlug
1427
+ },
1428
+ {
1429
+ slugs: SKILL_CREATOR_SKILL_SLUGS,
1430
+ buildSkillId: buildSkillCreatorSkillId,
1431
+ buildPageKey: buildSkillCreatorSkillPageKey,
1432
+ buildConfig: buildSkillCreatorSkillConfig,
1433
+ buildContent: buildSkillCreatorSkillContentBySlug
1258
1434
  }
1259
1435
  ];
1260
1436
  var buildRegistry = () => {
@@ -81,10 +81,10 @@ import {
81
81
  } from "./chunk-VF4K2QE6.js";
82
82
  import {
83
83
  createDocState
84
- } from "./chunk-OUYDHPVR.js";
84
+ } from "./chunk-7UQEDGCB.js";
85
85
  import {
86
86
  createDialogAction
87
- } from "./chunk-ICEIW3RB.js";
87
+ } from "./chunk-5S7Q2W6J.js";
88
88
  import {
89
89
  DEFAULT_COLLAPSED_CATEGORIES,
90
90
  addContentToSpace,
@@ -102,7 +102,7 @@ import {
102
102
  updateContentCategory,
103
103
  updateContentTitle,
104
104
  writeStoredCollapsedCategories
105
- } from "./chunk-VIIH2BQP.js";
105
+ } from "./chunk-B3RYNS4I.js";
106
106
  import {
107
107
  getCurrentSpaceId,
108
108
  getCurrentSpaceIdRaw,
@@ -124,14 +124,14 @@ import {
124
124
  selectMsgById,
125
125
  uiAskChoiceFunc,
126
126
  uiAskChoiceFunctionSchema
127
- } from "./chunk-I7ZJJVGO.js";
127
+ } from "./chunk-SDDLKP4V.js";
128
128
  import {
129
129
  createAgent,
130
130
  deleteServerSyncedCredential,
131
131
  runLlm,
132
132
  streamAgentChatTurn,
133
133
  updateAgent
134
- } from "./chunk-GYLJXJ32.js";
134
+ } from "./chunk-BS4DOHEI.js";
135
135
  import {
136
136
  getActiveDialogKey,
137
137
  selectCurrentDialogKey,
@@ -145,7 +145,7 @@ import {
145
145
  resolveBuiltinCapability,
146
146
  resolveBuiltinSkillByName,
147
147
  resolveBuiltinSkillEntry
148
- } from "./chunk-QSDL5Y3K.js";
148
+ } from "./chunk-GNWFC7YT.js";
149
149
  import {
150
150
  CAPABILITY_PACKS
151
151
  } from "./chunk-SHMFFPY3.js";
@@ -2106,7 +2106,9 @@ var MODES = [
2106
2106
  "disabled"
2107
2107
  ];
2108
2108
  var DEFAULT_RECOMMENDED_SKILL_SLUGS = [
2109
- "worktree-isolation"
2109
+ "worktree-isolation",
2110
+ "systematic-investigation",
2111
+ "show-me"
2110
2112
  ];
2111
2113
  var asMode = (value) => typeof value === "string" && MODES.includes(value) ? value : null;
2112
2114
  var resolveAgentSkillConfig = (source) => {
@@ -3943,7 +3945,7 @@ async function deleteDialogsFunc(args, thunkApi) {
3943
3945
  const deletedDialogIds = [];
3944
3946
  const deletedDialogKeys = [];
3945
3947
  const failures = [];
3946
- const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-CYGOKMXJ.js");
3948
+ const { deleteDialog: deleteDialog2 } = await import("./dialogSlice-MSNQGQ7M.js");
3947
3949
  for (const target of targets) {
3948
3950
  try {
3949
3951
  await thunkApi.dispatch(deleteDialog2(target.dbKey)).unwrap();
@@ -14817,7 +14819,7 @@ var executeToolRun = createAsyncThunk(
14817
14819
  if (!executionInput) {
14818
14820
  throw new Error(`ToolRun ${id} has no input to execute with.`);
14819
14821
  }
14820
- const { findToolExecutor: findToolExecutor2 } = await import("./tools-ECH3IW3E.js");
14822
+ const { findToolExecutor: findToolExecutor2 } = await import("./tools-CX7EVHKL.js");
14821
14823
  const { executor } = findToolExecutor2(run.toolName);
14822
14824
  toolRunStarted({
14823
14825
  id: run.id,
@@ -17324,7 +17326,7 @@ async function updateDocFunc(args, thunkApi) {
17324
17326
  updated_at: (/* @__PURE__ */ new Date()).toISOString()
17325
17327
  };
17326
17328
  await dispatch(write({ data: updatedPageData, customKey: id })).unwrap();
17327
- const { getDocState, applyExternalDocUpdate } = await import("./docStore-5XXOJADS.js");
17329
+ const { getDocState, applyExternalDocUpdate } = await import("./docStore-32KUMVID.js");
17328
17330
  if (getDocState().pageKey === id) {
17329
17331
  applyExternalDocUpdate({
17330
17332
  slateData: finalSlateData,
@@ -27,7 +27,7 @@ import {
27
27
  resolveLocalUserId,
28
28
  t,
29
29
  toolLabel
30
- } from "./chunk-EUHAT445.js";
30
+ } from "./chunk-5F37RGTR.js";
31
31
  import {
32
32
  createRunActivityTracker,
33
33
  popSingleQueueMessage,
@@ -63,7 +63,7 @@ import {
63
63
  } from "./chunk-LTRXGFMS.js";
64
64
  import {
65
65
  formatAgentListCard
66
- } from "./chunk-TNBEPOJR.js";
66
+ } from "./chunk-IVWFJGEB.js";
67
67
  import {
68
68
  isTransientFetchError
69
69
  } from "./chunk-5XTOKQLW.js";
@@ -84,11 +84,11 @@ import {
84
84
  chooseMemoryOwners,
85
85
  loadMemoryCandidatesFromDb,
86
86
  resolveAgentMemoryPolicy
87
- } from "./chunk-ICEIW3RB.js";
87
+ } from "./chunk-5S7Q2W6J.js";
88
88
  import {
89
89
  API_REPORTED_COST_MULTIPLIER,
90
90
  parseUiAskChoiceContent
91
- } from "./chunk-I7ZJJVGO.js";
91
+ } from "./chunk-SDDLKP4V.js";
92
92
  import {
93
93
  isOAuthApiKeyRef
94
94
  } from "./chunk-YYLHWIW6.js";
@@ -111,7 +111,7 @@ import {
111
111
  LOCAL_AGENT_CONFIG_MISSING_CODE,
112
112
  LOCAL_TURN_ABORTED_CODE,
113
113
  readActionGate
114
- } from "./chunk-FU3RL7UF.js";
114
+ } from "./chunk-542M2LFO.js";
115
115
  import {
116
116
  resolveAgentRuntimeConfigFromRecord
117
117
  } from "./chunk-5XV64MAU.js";
@@ -10413,7 +10413,7 @@ function findCollapsedPasteSpanAt(buffer, pos, opts = {}) {
10413
10413
  // packages/cli/client/agentRun.ts
10414
10414
  import { ulid } from "ulid";
10415
10415
  async function loadRunLocalAgentTurn() {
10416
- const { runLocalAgentTurn } = await import("./agentRuntimeLocal-CNL444G4.js");
10416
+ const { runLocalAgentTurn } = await import("./agentRuntimeLocal-EVIFTFXA.js");
10417
10417
  return runLocalAgentTurn;
10418
10418
  }
10419
10419
  var stripDebugNoise = (s) => s.replace(/\s*raw="[\s\S]*"/g, "").replace(/\s*raw=\S+/g, "").replace(/\s*headers=\[[^\]]*\]/g, "").replace(/\s*headers=\S+/g, "").trim();
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-AGGIDPCZ.js";
14
14
  import {
15
15
  runLlm
16
- } from "./chunk-GYLJXJ32.js";
16
+ } from "./chunk-BS4DOHEI.js";
17
17
  import {
18
18
  cleanupCliSessionForDialog
19
19
  } from "./chunk-XPMTSMUR.js";
@@ -17126,7 +17126,7 @@ var messageSlice = createSliceWithThunks({
17126
17126
  runtimeOptions: args.runtimeOptions
17127
17127
  });
17128
17128
  if (agentKeyToUse) {
17129
- const { streamAgentChatTurn } = await import("./agentSlice-PZGUYP2L.js");
17129
+ const { streamAgentChatTurn } = await import("./agentSlice-B5JSZNGT.js");
17130
17130
  await dispatch(
17131
17131
  streamAgentChatTurn({
17132
17132
  agentKey: agentKeyToUse,
@@ -18259,7 +18259,7 @@ var deleteDialogThunk = async (payload, thunkApi) => {
18259
18259
  }
18260
18260
  if (isCurrentDialog) {
18261
18261
  await thunkApi.dispatch(resetMsgs());
18262
- const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-CYGOKMXJ.js");
18262
+ const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-MSNQGQ7M.js");
18263
18263
  dispatch(clearPendingAttachments2());
18264
18264
  }
18265
18265
  return { dialogKey, isCurrentDialog, attachmentPlan };
@@ -18267,15 +18267,15 @@ var deleteDialogThunk = async (payload, thunkApi) => {
18267
18267
 
18268
18268
  // packages/chat/dialog/dialogSlice.ts
18269
18269
  var runCreateDialogAction = async (args, thunkApi) => {
18270
- const { createDialogAction } = await import("./createDialogAction-E3PALMYX.js");
18270
+ const { createDialogAction } = await import("./createDialogAction-4PSBOUVA.js");
18271
18271
  return createDialogAction(args, thunkApi);
18272
18272
  };
18273
18273
  var runCreateAgentAutomationAction = async (args, thunkApi) => {
18274
- const { createAgentAutomationAction } = await import("./createAgentAutomationAction-3MR5BSTK.js");
18274
+ const { createAgentAutomationAction } = await import("./createAgentAutomationAction-F6TR5V5Z.js");
18275
18275
  return createAgentAutomationAction(args, thunkApi);
18276
18276
  };
18277
18277
  var runUpdateDialogTitleAction = async (args, thunkApi) => {
18278
- const { updateDialogTitleAction } = await import("./updateDialogTitleAction-JOZXFR53.js");
18278
+ const { updateDialogTitleAction } = await import("./updateDialogTitleAction-5SZZXIIK.js");
18279
18279
  return updateDialogTitleAction(args, thunkApi);
18280
18280
  };
18281
18281
  var runAddDialogAgentAction = async (args, thunkApi) => {
@@ -18299,7 +18299,7 @@ var runSetDialogExtraReferencesAction = async (args, thunkApi) => {
18299
18299
  return setDialogExtraReferencesAction(args, thunkApi);
18300
18300
  };
18301
18301
  var runHandleSendMessageAction = async (args, thunkApi) => {
18302
- const { handleSendMessageAction } = await import("./handleSendMessageAction-HFHRBK3J.js");
18302
+ const { handleSendMessageAction } = await import("./handleSendMessageAction-JV45R62M.js");
18303
18303
  return handleSendMessageAction(args, thunkApi);
18304
18304
  };
18305
18305
  function clearDialogState() {
@@ -18312,7 +18312,7 @@ var createPageAndAddReference = createAsyncThunk(
18312
18312
  async (payload, { dispatch, getState, rejectWithValue }) => {
18313
18313
  const { slateData, jsonData, title, type, fileId, groupId, dialogKey } = payload;
18314
18314
  try {
18315
- const { createDocState } = await import("./docStore-5XXOJADS.js");
18315
+ const { createDocState } = await import("./docStore-32KUMVID.js");
18316
18316
  const pageKey = await createDocState(
18317
18317
  { slateData, title },
18318
18318
  { dispatch, getState }
@@ -5,14 +5,14 @@ import {
5
5
  inlineImageUrlsForCustomProvider,
6
6
  prepareTools,
7
7
  shouldInlineImageUrlsForAgent
8
- } from "./chunk-CYSCZQLE.js";
8
+ } from "./chunk-DAWALEPB.js";
9
9
  import {
10
10
  INVALID_TOOL_ARGS_REPLACEMENT,
11
11
  buildInvalidToolCallSelfHealResult,
12
12
  parseToolCallArguments,
13
13
  performFetchRequest,
14
14
  sanitizeOutboundMessages
15
- } from "./chunk-BGNHBBI3.js";
15
+ } from "./chunk-C5GYGTUD.js";
16
16
  import {
17
17
  createSSEParser,
18
18
  createToolRunId,
@@ -23,7 +23,7 @@ import {
23
23
  toolRunSetPending,
24
24
  toolRunStarted,
25
25
  toolRunSucceeded
26
- } from "./chunk-TNBEPOJR.js";
26
+ } from "./chunk-IVWFJGEB.js";
27
27
  import {
28
28
  getPublicImageAgentMode
29
29
  } from "./chunk-VIDPVFP3.js";
@@ -35,10 +35,10 @@ import {
35
35
  messageStreamEnd,
36
36
  messageStreaming,
37
37
  updateToolMessage
38
- } from "./chunk-I7ZJJVGO.js";
38
+ } from "./chunk-SDDLKP4V.js";
39
39
  import {
40
40
  streamAgentChatTurn
41
- } from "./chunk-GYLJXJ32.js";
41
+ } from "./chunk-BS4DOHEI.js";
42
42
  import {
43
43
  addActiveController,
44
44
  removeActiveController,
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-EUHAT445.js";
4
+ } from "./chunk-5F37RGTR.js";
5
5
  import {
6
6
  clipMultilineText
7
- } from "./chunk-TNBEPOJR.js";
7
+ } from "./chunk-IVWFJGEB.js";
8
8
  import {
9
9
  runLocalAgentTurn
10
- } from "./chunk-FU3RL7UF.js";
10
+ } from "./chunk-542M2LFO.js";
11
11
  import {
12
12
  applyToolSurfaceConstraints
13
13
  } from "./chunk-OKCTLCKS.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  clearCliLocalRuntimePreparedAgentCache
3
- } from "./chunk-EUHAT445.js";
3
+ } from "./chunk-5F37RGTR.js";
4
4
  import {
5
5
  getReadableCliDb
6
6
  } from "./chunk-RXX4GDIH.js";
@@ -7,14 +7,14 @@ import {
7
7
  updateContentPinned,
8
8
  updateContentTitle,
9
9
  uploadAndAddFileToSpace
10
- } from "./chunk-VIIH2BQP.js";
10
+ } from "./chunk-B3RYNS4I.js";
11
11
  import "./chunk-ZJ7UHBJS.js";
12
- import "./chunk-I7ZJJVGO.js";
12
+ import "./chunk-SDDLKP4V.js";
13
13
  import "./chunk-EVBFYPDC.js";
14
14
  import "./chunk-3BMYXEUW.js";
15
15
  import "./chunk-YYLHWIW6.js";
16
16
  import "./chunk-AGGIDPCZ.js";
17
- import "./chunk-GYLJXJ32.js";
17
+ import "./chunk-BS4DOHEI.js";
18
18
  import "./chunk-XPMTSMUR.js";
19
19
  import "./chunk-5RGU3J7P.js";
20
20
  import "./chunk-6YTOJY35.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  addContentToSpace
3
- } from "./chunk-VIIH2BQP.js";
3
+ } from "./chunk-B3RYNS4I.js";
4
4
  import "./chunk-ZJ7UHBJS.js";
5
- import "./chunk-I7ZJJVGO.js";
5
+ import "./chunk-SDDLKP4V.js";
6
6
  import "./chunk-EVBFYPDC.js";
7
7
  import "./chunk-3BMYXEUW.js";
8
8
  import "./chunk-YYLHWIW6.js";
9
9
  import "./chunk-AGGIDPCZ.js";
10
- import "./chunk-GYLJXJ32.js";
10
+ import "./chunk-BS4DOHEI.js";
11
11
  import "./chunk-XPMTSMUR.js";
12
12
  import "./chunk-5RGU3J7P.js";
13
13
  import "./chunk-6YTOJY35.js";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  createDialogAction,
3
3
  isLocalOwnerDialogAgents
4
- } from "./chunk-ICEIW3RB.js";
5
- import "./chunk-VIIH2BQP.js";
4
+ } from "./chunk-5S7Q2W6J.js";
5
+ import "./chunk-B3RYNS4I.js";
6
6
  import "./chunk-ZJ7UHBJS.js";
7
- import "./chunk-I7ZJJVGO.js";
7
+ import "./chunk-SDDLKP4V.js";
8
8
  import "./chunk-EVBFYPDC.js";
9
9
  import "./chunk-3BMYXEUW.js";
10
10
  import "./chunk-YYLHWIW6.js";
11
11
  import "./chunk-AGGIDPCZ.js";
12
- import "./chunk-GYLJXJ32.js";
12
+ import "./chunk-BS4DOHEI.js";
13
13
  import "./chunk-XPMTSMUR.js";
14
14
  import "./chunk-5RGU3J7P.js";
15
15
  import "./chunk-6YTOJY35.js";
@@ -14,16 +14,16 @@ import {
14
14
  import {
15
15
  addContentToSpace,
16
16
  client_default
17
- } from "./chunk-VIIH2BQP.js";
17
+ } from "./chunk-B3RYNS4I.js";
18
18
  import {
19
19
  getCurrentSpaceId
20
20
  } from "./chunk-ZJ7UHBJS.js";
21
- import "./chunk-I7ZJJVGO.js";
21
+ import "./chunk-SDDLKP4V.js";
22
22
  import "./chunk-EVBFYPDC.js";
23
23
  import "./chunk-3BMYXEUW.js";
24
24
  import "./chunk-YYLHWIW6.js";
25
25
  import "./chunk-AGGIDPCZ.js";
26
- import "./chunk-GYLJXJ32.js";
26
+ import "./chunk-BS4DOHEI.js";
27
27
  import "./chunk-XPMTSMUR.js";
28
28
  import "./chunk-5RGU3J7P.js";
29
29
  import "./chunk-6YTOJY35.js";
@@ -23,7 +23,7 @@ import "./chunk-KQHGZWSV.js";
23
23
  import "./chunk-3BMYXEUW.js";
24
24
  import "./chunk-URMS4XY2.js";
25
25
  import "./chunk-GLKOYSRU.js";
26
- import "./chunk-FU3RL7UF.js";
26
+ import "./chunk-542M2LFO.js";
27
27
  import "./chunk-ZNFJWEN4.js";
28
28
  import "./chunk-6LUUGZTS.js";
29
29
  import "./chunk-FMODTASJ.js";
@@ -20,12 +20,12 @@ import {
20
20
  switchDialogAgent,
21
21
  updateDialogTitle,
22
22
  updateTokens
23
- } from "./chunk-I7ZJJVGO.js";
23
+ } from "./chunk-SDDLKP4V.js";
24
24
  import "./chunk-EVBFYPDC.js";
25
25
  import "./chunk-3BMYXEUW.js";
26
26
  import "./chunk-YYLHWIW6.js";
27
27
  import "./chunk-AGGIDPCZ.js";
28
- import "./chunk-GYLJXJ32.js";
28
+ import "./chunk-BS4DOHEI.js";
29
29
  import "./chunk-XPMTSMUR.js";
30
30
  import {
31
31
  getActiveDialogAgentId
@@ -28,7 +28,7 @@ import "./chunk-SPAQ4PVV.js";
28
28
  import "./chunk-VF4K2QE6.js";
29
29
  import "./chunk-Q554LLSI.js";
30
30
  import "./chunk-KHCLMKZZ.js";
31
- import "./chunk-FU3RL7UF.js";
31
+ import "./chunk-542M2LFO.js";
32
32
  import "./chunk-ZNFJWEN4.js";
33
33
  import "./chunk-6LUUGZTS.js";
34
34
  import "./chunk-FMODTASJ.js";
@@ -21,7 +21,7 @@ import "./chunk-KQHGZWSV.js";
21
21
  import "./chunk-VF4K2QE6.js";
22
22
  import "./chunk-Q554LLSI.js";
23
23
  import "./chunk-KHCLMKZZ.js";
24
- import "./chunk-FU3RL7UF.js";
24
+ import "./chunk-542M2LFO.js";
25
25
  import "./chunk-ZNFJWEN4.js";
26
26
  import "./chunk-6LUUGZTS.js";
27
27
  import "./chunk-FMODTASJ.js";