[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D0VYYMNVR6DAMAHV86NRSP":3,"skill-same:01M6D0VYYMNVR6DAMAHV86NRSP":65},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":13,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6D0VYYMNVR6DAMAHV86NRSP","ax-agent",null,"This skill helps an LLM generate correct AxAgent code using @ax-llm\u002Fax. Use when the user asks about agent(), child agents, namespaced functions, discovery mode, shared fields, llmQuery(...), or RLM code execution.","marolinik\u002Fwaggle","marolinik","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F140324869?v=4","01M6D0VTXTDB9QGWTD5T7MM1HS","01M6D0VV6AS21A11J7S8X4CYSA",0,"MIT","https:\u002F\u002Fgithub.com\u002Fmarolinik\u002Fwaggle\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fax-agent\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30,31,32,33,34,35,36,37,38],"ax agent","generate","code","execution","discovery","correct","user","use","functions","shared","rlm","2026-11-10 10:12:30",false,"---\nname: ax-agent\ndescription: This skill helps an LLM generate correct AxAgent code using @ax-llm\u002Fax. Use when the user asks about agent(), child agents, namespaced functions, discovery mode, shared fields, llmQuery(...), or RLM code execution.\nversion: \"19.0.13\"\n---\n\n# AxAgent Codegen Rules (@ax-llm\u002Fax)\n\nUse this skill to generate `AxAgent` code. Prefer short, modern, copyable patterns. Do not write tutorial prose unless the user explicitly asks for explanation.\n\n## Use These Defaults\n\n- Use `agent(...)`, not `new AxAgent(...)`.\n- Prefer namespaced functions such as `utils.search(...)` or `kb.find(...)`.\n- Assume the child-agent module is `agents` unless `agentIdentity.namespace` is set.\n- If `functions.discovery` is `true`, discover callables from modules before using them.\n- In stdout-mode RLM, use one observable `console.log(...)` step per non-final actor turn.\n\n## Critical Rules\n\n- Use `agent(...)` factory syntax for new code.\n- If `agentIdentity.namespace` is set, call child agents through that module, not `agents`.\n- If `functions.discovery` is `true`, call `listModuleFunctions(...)` first, then `getFunctionDefinitions(...)`, then call only discovered functions.\n- In stdout-mode RLM, non-final turns must emit exactly one `console.log(...)` and stop immediately after it.\n- Never combine `console.log(...)` with `final(...)` or `ask_clarification(...)` in the same actor turn.\n- If a child agent needs parent inputs such as `audience`, use `fields.shared` or `fields.globallyShared`.\n- `llmQuery(...)` failures may come back as `[ERROR] ...`; do not assume success.\n\n## Canonical Pattern\n\n```typescript\nimport { agent, ai, f } from '@ax-llm\u002Fax';\n\nconst llm = ai({\n  name: 'openai',\n  apiKey: process.env.OPENAI_APIKEY!,\n});\n\nconst assistant = agent(\n  f()\n    .input('query', f.string())\n    .output('answer', f.string())\n    .build(),\n  {\n    agentIdentity: {\n      name: 'Assistant',\n      description: 'Answers user questions',\n    },\n    contextFields: [],\n  }\n);\n\nconst result = await assistant.forward(llm, { query: 'What is TypeScript?' });\nconsole.log(result.answer);\n```\n\n## Child Agents And Module Namespace\n\nDefault child-agent module:\n\n```typescript\nconst writer = agent('draft:string -> revision:string', {\n  agentIdentity: {\n    name: 'Writer',\n    description: 'Polishes drafts',\n  },\n  contextFields: [],\n});\n\nconst coordinator = agent('query:string -> answer:string', {\n  agents: { local: [writer] },\n  contextFields: [],\n});\n```\n\nGenerated runtime call:\n\n```javascript\nconst result = await agents.writer({ draft: '...' });\n```\n\nCustom child-agent module:\n\n```typescript\nconst writer = agent('draft:string -> revision:string', {\n  agentIdentity: {\n    name: 'Writer',\n    description: 'Polishes drafts',\n  },\n  contextFields: [],\n});\n\nconst coordinator = agent('query:string -> answer:string', {\n  agentIdentity: {\n    name: 'Coordinator',\n    description: 'Routes work',\n    namespace: 'team',\n  },\n  agents: { local: [writer] },\n  contextFields: [],\n});\n```\n\nGenerated runtime call:\n\n```javascript\nconst result = await team.writer({ draft: '...' });\n```\n\nRules:\n\n- Default child-agent module is `agents`.\n- If `agentIdentity.namespace` is set, that becomes the child-agent module.\n- Do not hardcode `agents.\u003Cname>(...)` when a custom namespace is configured.\n\n## Tool Functions And Namespaces\n\n```typescript\nimport type { AxFunction } from '@ax-llm\u002Fax';\n\nconst tools: AxFunction[] = [\n  {\n    name: 'findSnippets',\n    namespace: 'kb',\n    description: 'Find handbook snippets by topic',\n    parameters: {\n      type: 'object',\n      properties: {\n        topic: { type: 'string', description: 'Topic keyword' },\n      },\n      required: ['topic'],\n    },\n    returns: {\n      type: 'array',\n      items: { type: 'string' },\n    },\n    func: async ({ topic }) => [],\n  },\n];\n\nconst analyst = agent('query:string -> answer:string', {\n  functions: { local: tools },\n  contextFields: [],\n});\n```\n\nGenerated runtime call:\n\n```javascript\nconst snippets = await kb.findSnippets({ topic: 'severity' });\n```\n\nRules:\n\n- Prefer namespaced functions.\n- Default function namespace is `utils` when no namespace is set.\n- Use the runtime call shape `await \u003Cnamespace>.\u003Cname>({...})`.\n\n## Discovery Mode\n\nEnable discovery mode when you want the actor to discover modules and fetch callable definitions on demand:\n\n```typescript\nconst analyst = agent('context:string, query:string -> answer:string', {\n  agentIdentity: {\n    name: 'Analyst',\n    description: 'Analyzes long context',\n    namespace: 'team',\n  },\n  contextFields: ['context'],\n  agents: { local: [writer] },\n  functions: {\n    discovery: true,\n    local: tools,\n  },\n});\n```\n\nDiscovery APIs:\n\n- `await listModuleFunctions(modules: string | string[])`\n- `await getFunctionDefinitions(functions: string | string[])`\n\nBoth return Markdown.\n\nRules:\n\n1. Call `listModuleFunctions(...)`.\n2. Inspect the logged result.\n3. Call `getFunctionDefinitions(...)` for only the callables you plan to use.\n4. Inspect the logged result.\n5. Call discovered functions and child agents.\n\nExamples:\n\n```javascript\nconst modules = await listModuleFunctions(['team', 'kb', 'utils']);\nconsole.log(modules);\n```\n\n```javascript\nconst defs = await getFunctionDefinitions(['team.writer', 'kb.findSnippets']);\nconsole.log(defs);\n```\n\nDo not:\n\n- Do not guess callable names when discovery mode is on.\n- Do not assume sub-agents live under `agents` if `agentIdentity.namespace` is configured.\n- Do not dump large pre-known tool definitions into actor code when discovery mode is enabled.\n\n## RLM Actor Code Rules\n\nUse these rules when generating actor JavaScript for RLM in stdout mode:\n\n- Treat each actor turn as exactly one observable step.\n- If you need to inspect a value, compute it, `console.log(...)` it, and stop immediately after that `console.log(...)`.\n- On the next turn, read the logged result from `Action Log` before writing more code that depends on it.\n- Errors from child-agent or tool calls appear in `Action Log`; inspect them and fix the code on the next turn.\n- Non-final turns should contain exactly one `console.log(...)`.\n- Final turns should call `final(...)` or `ask_clarification(...)` without `console.log(...)`.\n- Do not write a complete multi-step program in one actor turn.\n\nGood pattern:\n\nTurn 1:\n\n```javascript\nconst defs = await getFunctionDefinitions(['kb.findSnippets']);\nconsole.log(defs);\n```\n\nTurn 2:\n\n```javascript\nconst snippets = await kb.findSnippets({ topic: 'severity' });\nconsole.log(snippets);\n```\n\nTurn 3:\n\n```javascript\nfinal({ answer: '...' });\n```\n\nInvalid pattern:\n\n```javascript\nconst defs = await getFunctionDefinitions(['kb.findSnippets']);\nconsole.log(defs);\nconst snippets = await kb.findSnippets({ topic: 'severity' });\nfinal(snippets);\n```\n\nReason: this mixes observation and follow-up work in one turn.\n\n## Shared Fields\n\nIf a child agent requires a parent field such as `audience`, prefer shared fields:\n\n```typescript\nconst writingCoach = agent(\n  'draft:string, audience:string -> revision:string',\n  {\n    agentIdentity: {\n      name: 'Writing Coach',\n      description: 'Polishes summaries for a target audience',\n    },\n    contextFields: [],\n  }\n);\n\nconst analyst = agent(\n  'context:string, audience:string, query:string -> answer:string',\n  {\n    agents: { local: [writingCoach] },\n    fields: { shared: ['audience'] },\n    contextFields: ['context'],\n  }\n);\n```\n\nGenerated runtime call:\n\n```javascript\nconst polished = await agents.writingCoach({ draft: summary });\n```\n\nRules:\n\n- Use `fields.shared` for direct children.\n- Use `fields.globallyShared` for all descendants.\n- Do not manually thread a parent field on every child call when shared fields fit the use case.\n\n## Shared Agents And Shared Functions\n\nUse grouped config:\n\n```typescript\nconst parent = agent('query:string -> answer:string', {\n  agents: {\n    local: [worker],\n    shared: [logger],\n    globallyShared: [auditor],\n  },\n  functions: {\n    local: [searchTool],\n    shared: [scoreTool],\n    globallyShared: [traceTool],\n  },\n  contextFields: [],\n});\n```\n\nRules:\n\n- `agents.shared` and `functions.shared` propagate one level down.\n- `agents.globallyShared` and `functions.globallyShared` propagate to all descendants.\n- Use `excluded` when a child should not receive a propagated field, agent, or function.\n\n## `llmQuery(...)` Rules\n\nAvailable forms:\n\n- `await llmQuery(query, context?)`\n- `await llmQuery({ query, context? })`\n- `await llmQuery([{ query, context }, ...])`\n\nRules:\n\n- `llmQuery(...)` forwards only the explicit `context` argument.\n- Parent inputs are not automatically available to `llmQuery(...)` children.\n- Single-call `llmQuery(...)` may return `[ERROR] ...` on non-abort failures.\n- Batched `llmQuery([...])` returns per-item `[ERROR] ...`.\n- If a result starts with `[ERROR]`, inspect or branch on it instead of assuming success.\n\nExample:\n\n```javascript\nconst summary = await llmQuery('Summarize this incident', inputs.context);\nif (summary.startsWith('[ERROR]')) {\n  console.log(summary);\n} else {\n  console.log(summary);\n}\n```\n\n## Short API Reference\n\n### `agentIdentity`\n\n```typescript\nagentIdentity?: {\n  name: string;\n  description: string;\n  namespace?: string;\n}\n```\n\n- `name` is normalized to camelCase for child-agent function names.\n- `namespace` changes the child-agent module from default `agents` to a custom module such as `team`.\n\n### `AxAgentOptions`\n\n```typescript\n{\n  contextFields: readonly (string | { field: string; promptMaxChars?: number })[];\n\n  agents?: {\n    local?: AxAnyAgentic[];\n    shared?: AxAnyAgentic[];\n    globallyShared?: AxAnyAgentic[];\n    excluded?: string[];\n  };\n\n  fields?: {\n    local?: string[];\n    shared?: string[];\n    globallyShared?: string[];\n    excluded?: string[];\n  };\n\n  functions?: {\n    local?: AxFunction[];\n    shared?: AxFunction[];\n    globallyShared?: AxFunction[];\n    excluded?: string[];\n    discovery?: boolean;\n  };\n\n  runtime?: AxCodeRuntime;\n  maxSubAgentCalls?: number;\n  maxRuntimeChars?: number;\n  maxBatchedLlmQueryConcurrency?: number;\n  maxTurns?: number;\n  contextManagement?: AxContextManagementConfig;\n  actorFields?: string[];\n  actorCallback?: (result: Record\u003Cstring, unknown>) => void | Promise\u003Cvoid>;\n  inputUpdateCallback?: (currentInputs: Record\u003Cstring, unknown>) => Promise\u003CRecord\u003Cstring, unknown> | undefined> | Record\u003Cstring, unknown> | undefined;\n  mode?: 'simple' | 'advanced';\n  recursionOptions?: Partial\u003COmit\u003CAxProgramForwardOptions, 'functions'>> & {\n    maxDepth?: number;\n  };\n  actorOptions?: Partial\u003CAxProgramForwardOptions & { description?: string }>;\n  responderOptions?: Partial\u003CAxProgramForwardOptions & { description?: string }>;\n}\n```\n\n## Do Not Generate\n\n- Do not use `new AxAgent(...)` for new code unless explicitly required.\n- Do not assume child agents are always under `agents.*`.\n- Do not guess function names in discovery mode.\n- Do not write a full multi-step RLM actor program in one turn.\n- Do not combine `console.log(...)` with `final(...)`.\n- Do not forget `fields.shared` when child agents depend on parent inputs.\n","# AxAgent Codegen Rules (@ax-llm\u002Fax)\n\nUse this skill to generate `AxAgent` code. Prefer short, modern, copyable patterns. Do not write tutorial prose unless the user explicitly asks for explanation.\n\n## Use These Defaults\n\n- Use `agent(...)`, not `new AxAgent(...)`.\n- Prefer namespaced functions such as `utils.search(...)` or `kb.find(...)`.\n- Assume the child-agent module is `agents` unless `agentIdentity.namespace` is set.\n- If `functions.discovery` is `true`, discover callables from modules before using them.\n- In stdout-mode RLM, use one observable `console.log(...)` step per non-final actor turn.\n\n## Critical Rules\n\n- Use `agent(...)` factory syntax for new code.\n- If `agentIdentity.namespace` is set, call child agents through that module, not `agents`.\n- If `functions.discovery` is `true`, call `listModuleFunctions(...)` first, then `getFunctionDefinitions(...)`, then call only discovered functions.\n- In stdout-mode RLM, non-final turns must emit exactly one `console.log(...)` and stop immediately after it.\n- Never combine `console.log(...)` with `final(...)` or `ask_clarification(...)` in the same actor turn.\n- If a child agent needs parent inputs such as `audience`, use `fields.shared` or `fields.globallyShared`.\n- `llmQuery(...)` failures may come back as `[ERROR] ...`; do not assume success.\n\n## Canonical Pattern\n\n```typescript\nimport { agent, ai, f } from '@ax-llm\u002Fax';\n\nconst llm = ai({\n  name: 'openai',\n  apiKey: process.env.OPENAI_APIKEY!,\n});\n\nconst assistant = agent(\n  f()\n    .input('query', f.string())\n    .output('answer', f.string())\n    .build(),\n  {\n    agentIdentity: {\n      name: 'Assistant',\n      description: 'Answers user questions',\n    },\n    contextFields: [],\n  }\n);\n\nconst result = await assistant.forward(llm, { query: 'What is TypeScript?' });\nconsole.log(result.answer);\n```\n\n## Child Agents And Module Namespace\n\nDefault child-agent module:\n\n```typescript\nconst writer = agent('draft:string -> revision:string', {\n  agentIdentity: {\n    name: 'Writer',\n    description: 'Polishes drafts',\n  },\n  contextFields: [],\n});\n\nconst coordinator = agent('query:string -> answer:string', {\n  agents: { local: [writer] },\n  contextFields: [],\n});\n```\n\nGenerated runtime call:\n\n```javascript\nconst result = await agents.writer({ draft: '...' });\n```\n\nCustom child-agent module:\n\n```typescript\nconst writer = agent('draft:string -> revision:string', {\n  agentIdentity: {\n    name: 'Writer',\n    description: 'Polishes drafts',\n  },\n  contextFields: [],\n});\n\nconst coordinator = agent('query:string -> answer:string', {\n  agentIdentity: {\n    name: 'Coordinator',\n    description: 'Routes work',\n    namespace: 'team',\n  },\n  agents: { local: [writer] },\n  contextFields: [],\n});\n```\n\nGenerated runtime call:\n\n```javascript\nconst result = await team.writer({ draft: '...' });\n```\n\nRules:\n\n- Default child-agent module is `agents`.\n- If `agentIdentity.namespace` is set, that becomes the child-agent module.\n- Do not hardcode `agents.\u003Cname>(...)` when a custom namespace is configured.\n\n## Tool Functions And Namespaces\n\n```typescript\nimport type { AxFunction } from '@ax-llm\u002Fax';\n\nconst tools: AxFunction[] = [\n  {\n    name: 'findSnippets',\n    namespace: 'kb',\n    description: 'Find handbook snippets by topic',\n    parameters: {\n      type: 'object',\n      properties: {\n        topic: { type: 'string', description: 'Topic keyword' },\n      },\n      required: ['topic'],\n    },\n    returns: {\n      type: 'array',\n      items: { type: 'string' },\n    },\n    func: async ({ topic }) => [],\n  },\n];\n\nconst analyst = agent('query:string -> answer:string', {\n  functions: { local: tools },\n  contextFields: [],\n});\n```\n\nGenerated runtime call:\n\n```javascript\nconst snippets = await kb.findSnippets({ topic: 'severity' });\n```\n\nRules:\n\n- Prefer namespaced functions.\n- Default function namespace is `utils` when no namespace is set.\n- Use the runtime call shape `await \u003Cnamespace>.\u003Cname>({...})`.\n\n## Discovery Mode\n\nEnable discovery mode when you want the actor to discover modules and fetch callable definitions on demand:\n\n```typescript\nconst analyst = agent('context:string, query:string -> answer:string', {\n  agentIdentity: {\n    name: 'Analyst',\n    description: 'Analyzes long context',\n    namespace: 'team',\n  },\n  contextFields: ['context'],\n  agents: { local: [writer] },\n  functions: {\n    discovery: true,\n    local: tools,\n  },\n});\n```\n\nDiscovery APIs:\n\n- `await listModuleFunctions(modules: string | string[])`\n- `await getFunctionDefinitions(functions: string | string[])`\n\nBoth return Markdown.\n\nRules:\n\n1. Call `listModuleFunctions(...)`.\n2. Inspect the logged result.\n3. Call `getFunctionDefinitions(...)` for only the callables you plan to use.\n4. Inspect the logged result.\n5. Call discovered functions and child agents.\n\nExamples:\n\n```javascript\nconst modules = await listModuleFunctions(['team', 'kb', 'utils']);\nconsole.log(modules);\n```\n\n```javascript\nconst defs = await getFunctionDefinitions(['team.writer', 'kb.findSnippets']);\nconsole.log(defs);\n```\n\nDo not:\n\n- Do not guess callable names when discovery mode is on.\n- Do not assume sub-agents live under `agents` if `agentIdentity.namespace` is configured.\n- Do not dump large pre-known tool definitions into actor code when discovery mode is enabled.\n\n## RLM Actor Code Rules\n\nUse these rules when generating actor JavaScript for RLM in stdout mode:\n\n- Treat each actor turn as exactly one observable step.\n- If you need to inspect a value, compute it, `console.log(...)` it, and stop immediately after that `console.log(...)`.\n- On the next turn, read the logged result from `Action Log` before writing more code that depends on it.\n- Errors from child-agent or tool calls appear in `Action Log`; inspect them and fix the code on the next turn.\n- Non-final turns should contain exactly one `console.log(...)`.\n- Final turns should call `final(...)` or `ask_clarification(...)` without `console.log(...)`.\n- Do not write a complete multi-step program in one actor turn.\n\nGood pattern:\n\nTurn 1:\n\n```javascript\nconst defs = await getFunctionDefinitions(['kb.findSnippets']);\nconsole.log(defs);\n```\n\nTurn 2:\n\n```javascript\nconst snippets = await kb.findSnippets({ topic: 'severity' });\nconsole.log(snippets);\n```\n\nTurn 3:\n\n```javascript\nfinal({ answer: '...' });\n```\n\nInvalid pattern:\n\n```javascript\nconst defs = await getFunctionDefinitions(['kb.findSnippets']);\nconsole.log(defs);\nconst snippets = await kb.findSnippets({ topic: 'severity' });\nfinal(snippets);\n```\n\nReason: this mixes observation and follow-up work in one turn.\n\n## Shared Fields\n\nIf a child agent requires a parent field such as `audience`, prefer shared fields:\n\n```typescript\nconst writingCoach = agent(\n  'draft:string, audience:string -> revision:string',\n  {\n    agentIdentity: {\n      name: 'Writing Coach',\n      description: 'Polishes summaries for a target audience',\n    },\n    contextFields: [],\n  }\n);\n\nconst analyst = agent(\n  'context:string, audience:string, query:string -> answer:string',\n  {\n    agents: { local: [writingCoach] },\n    fields: { shared: ['audience'] },\n    contextFields: ['context'],\n  }\n);\n```\n\nGenerated runtime call:\n\n```javascript\nconst polished = await agents.writingCoach({ draft: summary });\n```\n\nRules:\n\n- Use `fields.shared` for direct children.\n- Use `fields.globallyShared` for all descendants.\n- Do not manually thread a parent field on every child call when shared fields fit the use case.\n\n## Shared Agents And Shared Functions\n\nUse grouped config:\n\n```typescript\nconst parent = agent('query:string -> answer:string', {\n  agents: {\n    local: [worker],\n    shared: [logger],\n    globallyShared: [auditor],\n  },\n  functions: {\n    local: [searchTool],\n    shared: [scoreTool],\n    globallyShared: [traceTool],\n  },\n  contextFields: [],\n});\n```\n\nRules:\n\n- `agents.shared` and `functions.shared` propagate one level down.\n- `agents.globallyShared` and `functions.globallyShared` propagate to all descendants.\n- Use `excluded` when a child should not receive a propagated field, agent, or function.\n\n## `llmQuery(...)` Rules\n\nAvailable forms:\n\n- `await llmQuery(query, context?)`\n- `await llmQuery({ query, context? })`\n- `await llmQuery([{ query, context }, ...])`\n\nRules:\n\n- `llmQuery(...)` forwards only the explicit `context` argument.\n- Parent inputs are not automatically available to `llmQuery(...)` children.\n- Single-call `llmQuery(...)` may return `[ERROR] ...` on non-abort failures.\n- Batched `llmQuery([...])` returns per-item `[ERROR] ...`.\n- If a result starts with `[ERROR]`, inspect or branch on it instead of assuming success.\n\nExample:\n\n```javascript\nconst summary = await llmQuery('Summarize this incident', inputs.context);\nif (summary.startsWith('[ERROR]')) {\n  console.log(summary);\n} else {\n  console.log(summary);\n}\n```\n\n## Short API Reference\n\n### `agentIdentity`\n\n```typescript\nagentIdentity?: {\n  name: string;\n  description: string;\n  namespace?: string;\n}\n```\n\n- `name` is normalized to camelCase for child-agent function names.\n- `namespace` changes the child-agent module from default `agents` to a custom module such as `team`.\n\n### `AxAgentOptions`\n\n```typescript\n{\n  contextFields: readonly (string | { field: string; promptMaxChars?: number })[];\n\n  agents?: {\n    local?: AxAnyAgentic[];\n    shared?: AxAnyAgentic[];\n    globallyShared?: AxAnyAgentic[];\n    excluded?: string[];\n  };\n\n  fields?: {\n    local?: string[];\n    shared?: string[];\n    globallyShared?: string[];\n    excluded?: string[];\n  };\n\n  functions?: {\n    local?: AxFunction[];\n    shared?: AxFunction[];\n    globallyShared?: AxFunction[];\n    excluded?: string[];\n    discovery?: boolean;\n  };\n\n  runtime?: AxCodeRuntime;\n  maxSubAgentCalls?: number;\n  maxRuntimeChars?: number;\n  maxBatchedLlmQueryConcurrency?: number;\n  maxTurns?: number;\n  contextManagement?: AxContextManagementConfig;\n  actorFields?: string[];\n  actorCallback?: (result: Record\u003Cstring, unknown>) => void | Promise\u003Cvoid>;\n  inputUpdateCallback?: (currentInputs: Record\u003Cstring, unknown>) => Promise\u003CRecord\u003Cstring, unknown> | undefined> | Record\u003Cstring, unknown> | undefined;\n  mode?: 'simple' | 'advanced';\n  recursionOptions?: Partial\u003COmit\u003CAxProgramForwardOptions, 'functions'>> & {\n    maxDepth?: number;\n  };\n  actorOptions?: Partial\u003CAxProgramForwardOptions & { description?: string }>;\n  responderOptions?: Partial\u003CAxProgramForwardOptions & { description?: string }>;\n}\n```\n\n## Do Not Generate\n\n- Do not use `new AxAgent(...)` for new code unless explicitly required.\n- Do not assume child agents are always under `agents.*`.\n- Do not guess function names in discovery mode.\n- Do not write a full multi-step RLM actor program in one turn.\n- Do not combine `console.log(...)` with `final(...)`.\n- Do not forget `fields.shared` when child agents depend on parent inputs.\n",{"name":5,"version":44,"description":7},"19.0.13","master","e5f02c59e583065b90e8d9ab68f9c95f371ea101",".claude\u002Fskills\u002Fax-agent","https:\u002F\u002Fgithub.com\u002Fmarolinik\u002Fwaggle","https:\u002F\u002Fgithub.com\u002Fmarolinik","2026-03-25 16:49:49",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add marolinik\u002Fwaggle --skill ax-agent",{"tool":57,"command":58},"bunx","bunx skills add marolinik\u002Fwaggle --skill ax-agent",{"tool":60,"command":61},"pnpm","pnpm dlx skills add marolinik\u002Fwaggle --skill ax-agent","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmarolinik\u002Fwaggle\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fax-agent\u002FSKILL.md",true,[],[66,79,88],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":75,"publishedAt":39},"01M6D0WA6GK85A2ACTN3HD6J4V","summarize","Summarize text or conversation into key points","https:\u002F\u002Fgithub.com\u002Fmarolinik\u002Fwaggle\u002Fblob\u002Fmaster\u002Fskills\u002Fsummarize\u002FSKILL.md",[72],{"categoryNo":73,"categoryName":74,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",[68,76,77,78],"conversation","haiku","text",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":39},"01M6D0W7K5TXDXZSHMSKMP1MS8","classify","Classify user intent or categorize text","https:\u002F\u002Fgithub.com\u002Fmarolinik\u002Fwaggle\u002Fblob\u002Fmaster\u002Fskills\u002Fclassify\u002FSKILL.md",[],[81,78,86,87,34,77],"intent","categorize",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":95,"publishedAt":39},"01M6D0W3N013HJAB7ZSHW1V6B5","ax","This skill helps with using the @ax-llm\u002Fax TypeScript library for building LLM applications. Use when the user asks about ax(), ai(), f(), s(), agent(), flow(), AxGen, AxAgent, AxFlow, signatures, streaming, or mentions @ax-llm\u002Fax.","https:\u002F\u002Fgithub.com\u002Fmarolinik\u002Fwaggle\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fax\u002FSKILL.md",[94],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[90,96,97,35,34,98,99,100,101],"typescript","signatures","applications","flow","library","streaming"]