[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CP1T778FD17PC9Z3GQMFX2":3,"skill-same:01M6CP1T778FD17PC9Z3GQMFX2":66},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":13,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":6,"updatedAt":51,"install":52,"resources":65},"01M6CP1T778FD17PC9Z3GQMFX2","ollama",null,"Use Ollama local inference for text generation, classification, and analysis via local GPU models.","ncmlabs\u002Fforge","ncmlabs","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F126867372?v=4","01M6CP1F8M06XXPC3FR9KDQTX5","01M6CP1FCVBY4DQZ1N5A2GCM9K",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Fskills\u002Follama\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27],"inference","generate","gpu","analysis","classification","Bash","analyze","text","use","models","2026-11-10 10:12:30",false,"---\nname: ollama\ndescription: Use Ollama local inference for text generation, classification, and analysis via local GPU models.\ntimeout: 120\nallowed-tools:\n  - Bash(ollama:*)\ncapabilities:\n  - name: generate\n    inputs: [Text, Text]\n    output: Text\n  - name: classify\n    inputs: [Text, Text, Text]\n    output: Text\n  - name: analyze\n    inputs: [Text, Text]\n    output: Text\n---\n\n# Ollama Local Inference Skill\n\nUse this skill when FORGE needs local LLM inference without external API calls. Ollama runs on the local GPU server (RTX 3090) and provides zero-cost text generation, classification, and analysis.\n\nDefault operating pattern:\n\n1. Select the model based on task complexity (fast, balanced, or high).\n2. Pipe the prompt to `ollama run` via stdin for multi-line prompts.\n3. Capture stdout as the complete response.\n4. Parse or post-process the text output as needed.\n\nOllama is not a coding agent. It does not edit files, manage sessions, or run tools. Use it for inference tasks: classification, summarisation, text generation, and structured analysis.\n\n## Model Selection\n\nChoose the model based on the task:\n\n| Routing tier | Model | Use case |\n|---|---|---|\n| `fast` | `gpt-oss:latest` | Short answers, quick classification, low-latency checks |\n| `balanced` | `qwen3-coder:latest` | Code analysis, structured classification, moderate reasoning |\n| `high` | `qwen3.5:27b` | Complex reasoning, long-form analysis, nuanced generation |\n\nWhen the caller does not specify a model, default to `qwen3-coder:latest`.\n\n## Capabilities\n\n### `generate(prompt, model)`\n\nGeneral-purpose text generation.\n\nPreferred command:\n\n```bash\nprintf '%s\\n' \"$PROMPT\" | ollama run \"$MODEL\"\n```\n\nFor short single-line prompts:\n\n```bash\nollama run \"$MODEL\" \"$PROMPT\"\n```\n\nExpected behavior:\n\n- stdout contains the full generated text\n- no side effects (no file writes, no network calls)\n- exit code 0 on success\n\n### `classify(text, categories, model)`\n\nClassify input text into one of the provided categories.\n\nPreferred command:\n\n```bash\nprintf 'Classify the following text into exactly one of these categories: %s\\n\\nText: %s\\n\\nRespond with only the category name.' \"$CATEGORIES\" \"$TEXT\" | ollama run \"$MODEL\"\n```\n\nExpected behavior:\n\n- output is a single category name from the provided list\n- use `qwen3-coder:latest` or `gpt-oss:latest` for fast classification\n- useful for urgency detection, intent classification, and triage\n\n### `analyze(prompt, model)`\n\nLonger-form analysis such as code review summaries, log analysis, or document review.\n\nPreferred command:\n\n```bash\nprintf '%s\\n' \"$PROMPT\" | ollama run \"$MODEL\"\n```\n\nExpected behavior:\n\n- output is structured prose (findings, recommendations, risks)\n- prefer `qwen3.5:27b` for complex analysis tasks\n- prefer `qwen3-coder:latest` for code-specific analysis\n\n## Session Adapter Mapping\n\n| FORGE session field | Ollama CLI |\n|---|---|\n| `prompt` | stdin pipe or positional arg |\n| `agent = \"ollama\"` | `ollama run` |\n| `model` | model name arg (e.g., `qwen3-coder:latest`) |\n| `tools` | N\u002FA |\n| `workdir` | process working directory |\n| `timeout` | managed by FORGE wrapper |\n| `budget` | N\u002FA (local inference, no cost) |\n| `resume` | N\u002FA |\n| `output_mode` | N\u002FA (always plain text) |\n\n## AgentResult Mapping\n\n| Ollama output | AgentResult field |\n|---|---|\n| stdout (full text) | `output` |\n| exit code 0 | success (no error) |\n| non-zero exit code | `error` |\n| N\u002FA | `session_id` (not supported) |\n| N\u002FA | `tokens_in` (not exposed by CLI) |\n| N\u002FA | `tokens_out` (not exposed by CLI) |\n| 0.00 | `cost_usd` (local, always zero) |\n\nLimitation: `ollama run` does not expose token usage or timing metadata in its CLI output. If token tracking is needed, use the OpenAI-compatible API endpoint (`http:\u002F\u002F\u003Chost>:11434\u002Fv1`) instead of the CLI.\n\n## Safety Rules\n\n- Ollama is inference-only. Never expect it to edit files or execute commands.\n- Always validate that the target model is pulled before invoking (`ollama list`).\n- Prefer stdin piping for prompts containing quotes, newlines, or special characters.\n- Set FORGE-level timeouts to guard against slow generation on large models.\n- Do not send sensitive data through Ollama unless the server is on a trusted network.\n- Cap confidence at 0.80 for Ollama outputs (local models are less capable than frontier APIs).\n","# Ollama Local Inference Skill\n\nUse this skill when FORGE needs local LLM inference without external API calls. Ollama runs on the local GPU server (RTX 3090) and provides zero-cost text generation, classification, and analysis.\n\nDefault operating pattern:\n\n1. Select the model based on task complexity (fast, balanced, or high).\n2. Pipe the prompt to `ollama run` via stdin for multi-line prompts.\n3. Capture stdout as the complete response.\n4. Parse or post-process the text output as needed.\n\nOllama is not a coding agent. It does not edit files, manage sessions, or run tools. Use it for inference tasks: classification, summarisation, text generation, and structured analysis.\n\n## Model Selection\n\nChoose the model based on the task:\n\n| Routing tier | Model | Use case |\n|---|---|---|\n| `fast` | `gpt-oss:latest` | Short answers, quick classification, low-latency checks |\n| `balanced` | `qwen3-coder:latest` | Code analysis, structured classification, moderate reasoning |\n| `high` | `qwen3.5:27b` | Complex reasoning, long-form analysis, nuanced generation |\n\nWhen the caller does not specify a model, default to `qwen3-coder:latest`.\n\n## Capabilities\n\n### `generate(prompt, model)`\n\nGeneral-purpose text generation.\n\nPreferred command:\n\n```bash\nprintf '%s\\n' \"$PROMPT\" | ollama run \"$MODEL\"\n```\n\nFor short single-line prompts:\n\n```bash\nollama run \"$MODEL\" \"$PROMPT\"\n```\n\nExpected behavior:\n\n- stdout contains the full generated text\n- no side effects (no file writes, no network calls)\n- exit code 0 on success\n\n### `classify(text, categories, model)`\n\nClassify input text into one of the provided categories.\n\nPreferred command:\n\n```bash\nprintf 'Classify the following text into exactly one of these categories: %s\\n\\nText: %s\\n\\nRespond with only the category name.' \"$CATEGORIES\" \"$TEXT\" | ollama run \"$MODEL\"\n```\n\nExpected behavior:\n\n- output is a single category name from the provided list\n- use `qwen3-coder:latest` or `gpt-oss:latest` for fast classification\n- useful for urgency detection, intent classification, and triage\n\n### `analyze(prompt, model)`\n\nLonger-form analysis such as code review summaries, log analysis, or document review.\n\nPreferred command:\n\n```bash\nprintf '%s\\n' \"$PROMPT\" | ollama run \"$MODEL\"\n```\n\nExpected behavior:\n\n- output is structured prose (findings, recommendations, risks)\n- prefer `qwen3.5:27b` for complex analysis tasks\n- prefer `qwen3-coder:latest` for code-specific analysis\n\n## Session Adapter Mapping\n\n| FORGE session field | Ollama CLI |\n|---|---|\n| `prompt` | stdin pipe or positional arg |\n| `agent = \"ollama\"` | `ollama run` |\n| `model` | model name arg (e.g., `qwen3-coder:latest`) |\n| `tools` | N\u002FA |\n| `workdir` | process working directory |\n| `timeout` | managed by FORGE wrapper |\n| `budget` | N\u002FA (local inference, no cost) |\n| `resume` | N\u002FA |\n| `output_mode` | N\u002FA (always plain text) |\n\n## AgentResult Mapping\n\n| Ollama output | AgentResult field |\n|---|---|\n| stdout (full text) | `output` |\n| exit code 0 | success (no error) |\n| non-zero exit code | `error` |\n| N\u002FA | `session_id` (not supported) |\n| N\u002FA | `tokens_in` (not exposed by CLI) |\n| N\u002FA | `tokens_out` (not exposed by CLI) |\n| 0.00 | `cost_usd` (local, always zero) |\n\nLimitation: `ollama run` does not expose token usage or timing metadata in its CLI output. If token tracking is needed, use the OpenAI-compatible API endpoint (`http:\u002F\u002F\u003Chost>:11434\u002Fv1`) instead of the CLI.\n\n## Safety Rules\n\n- Ollama is inference-only. Never expect it to edit files or execute commands.\n- Always validate that the target model is pulled before invoking (`ollama list`).\n- Prefer stdin piping for prompts containing quotes, newlines, or special characters.\n- Set FORGE-level timeouts to guard against slow generation on large models.\n- Do not send sensitive data through Ollama unless the server is on a trusted network.\n- Cap confidence at 0.80 for Ollama outputs (local models are less capable than frontier APIs).\n",{"name":5,"timeout":33,"description":7,"capabilities":34,"allowed-tools":43},120,[35,38,41],{"name":19,"inputs":36,"output":37},[37,37],"Text",{"name":39,"inputs":40,"output":37},"classify",[37,37,37],{"name":24,"inputs":42,"output":37},[37,37],[44],"Bash(ollama:*)","development","357dd4b767160fd37a6f66eed6488d9fae43be60","skills\u002Follama","https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge","https:\u002F\u002Fgithub.com\u002Fncmlabs","ncmlabs.com","2026-10-16 01:25:57",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add ncmlabs\u002Fforge --skill ollama",{"tool":58,"command":59},"bunx","bunx skills add ncmlabs\u002Fforge --skill ollama",{"tool":61,"command":62},"pnpm","pnpm dlx skills add ncmlabs\u002Fforge --skill ollama","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Fskills\u002Follama\u002FSKILL.md",true,[],[67,76,88,117,147,168],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":28},"01M6CP25SKSYXW6F6VW5QHCHR1","greeter","Greet a person by name.","https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Ftests\u002Ffixtures\u002Fskill-project\u002Fskills\u002Fgreeter\u002FSKILL.md",[],[69,74,25,75],"hello","greet",{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":28},"01M6CP23Y84FG8XFP7Q6SM0JM3","git_analysis","Deep agentic analysis of git repository health and trends","https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Ftests\u002Ffixtures\u002Fsentinel\u002Fskills\u002Fgit-analysis\u002FSKILL.md",[],[83,21,84,85,86,87,23],"git","git analysis","agentic","repository","health",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":104,"publishedAt":28},"01M6CP2116VHMB054AAZ88CXPY","write-forge","Writing, checking or running FORGE `.forge` programs — the authoring loop, the CLI's JSON envelope and exit codes, and the syntax and checker mistakes that break agents. Use when a task asks for a FORGE program or `.forge` file, names FORGE tasks\u002Fflows\u002Fagents\u002Fpools\u002Fwardens, or when the project has a forge.project.toml.","https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Fskills\u002Fwrite-forge\u002FSKILL.md",[94,99],{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[105,106,107,108,109,110,111,112,113,114,26,115,116],"forge","write","write forge","writing","cli","tasks","file","loop","json","syntax","exit","task",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":129,"publishedAt":28},"01M6CP1WS0J5FF0D45Q76FGJJ7","slack","Slack operations via the Web API — messages, channels, threads, reactions, and approvals.","https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Fskills\u002Fslack\u002FSKILL.md",[123,126],{"categoryNo":124,"categoryName":125,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":127,"categoryName":128,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000010","后端与接口",[119,25,23,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146],"history","api","curl","timestamp","command","pin","update","read","operations","ok","messages","info","message","delete","web","bot","https",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":28},"01M6CP1PZ9TSC71W7CD89NJVT7","github","GitHub operations via the gh CLI — issues, PRs, branches, and CI checks.","https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Fskills\u002Fgithub\u002FSKILL.md",[],[149,143,154,155,109,156,157,158,159,160,161,162,163,25,164,23,131,165,166,167],"create","pr","state","branch","branches","diff","view","check","repo","gh","squash","ci","csv","issues",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":180,"publishedAt":28},"01M6CP1KXD4CY5EQ117Q2CQKY4","codex","Use Codex CLI as a bounded coding agent for repo exploration, implementation, review, and session resume.","https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Fskills\u002Fcodex\u002FSKILL.md",[174,177],{"categoryNo":175,"categoryName":176,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":178,"categoryName":179,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000038","人力资源",[170,162,181,182,183,26,184,185,25,186,23,187,188,189,109,190],"exploration","implementation","resume","session","coding","explore","codex cli","implement","coding agent","review"]