[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CP2116VHMB054AAZ88CXPY":3,"skill-same:01M6CP2116VHMB054AAZ88CXPY":73},{"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":27,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":13,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M6CP2116VHMB054AAZ88CXPY","write-forge",null,"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.","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\u002Fwrite-forge\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[28,29,30,31,32,33,34,35,36,37,38,39,40],"forge","write","write forge","writing","cli","tasks","file","loop","json","syntax","use","exit","task","2026-11-10 10:12:30",false,"---\nname: write-forge\ndescription: 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.\n---\n\n# Writing FORGE\n\nFORGE is a language for oracle-augmented computation: LLM calls are primitives, uncertainty is a\ncompile-time type, and independent work runs in parallel. Deterministic logic lives in `pure`,\nstochastic logic in `task`; agents are first-class with memory, lifecycle, events and supervision.\n\nRead [`forge-card.md`](forge-card.md) before writing code — it ships with this skill: the syntax\nthat trips agents, one idiom per primitive, and the checker errors you will actually hit.\n\n## When to choose FORGE\n\nChoose it when the task is an orchestration of LLM work:\n\n- several LLM steps, where independent ones should run in the same wave (a `flow` stage without\n  `needs`, or `pool` workers);\n- output whose confidence matters — `uncertain\u003CT>` is a type and `when x.sure` is the dispatch;\n- a long-lived agent: memory, lifecycle states, events, supervision by a `warden`;\n- a visible boundary between deterministic logic (`pure`) and oracle calls (`task`).\n\nDo not choose it for plain data munging with no LLM or effect (write a script), for a single API\ncall, or when the task needs a library ecosystem FORGE does not have — reach for\n`command [\"argv\", \"array\"]` or `exec` instead of inventing a capability.\n\n## The authoring loop\n\nRun these in order. A program is not ready until it has been through all six.\n\n**0. Install — once per machine, before step 1**\n\n```bash\ncargo install --git https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge.git   # Rust 1.90+; puts `forge` on PATH\nforge --version                                            # proves the binary is installed\n```\n\nWithout a `forge` on PATH every later step fails with `forge: command not found`.\n[`forge-card.md`](forge-card.md) and `forge explain \u003Ccode>` are the offline references — they come\nwith the tool, and `docs\u002Fforge-reference.md` lives in the FORGE repo, not in the project you are\nwriting for.\n\n**1. Scaffold — `forge init`**\n\n```bash\nforge init my-app --template pipeline   # templates: pipeline, agent, webhook-bot\nforge init my-app --dry-run             # list the files, write nothing\n```\n\nWrites `forge.project.toml`, `forge.config.toml` (mock provider by default), `main.forge`,\n`main.forge.fixtures.json`, `expected.txt`, `.gitignore` and `AGENTS.md`.\n\n**2. Check — `forge check --json`**\n\n```bash\nforge check --json main.forge\n```\n\nParse + resolve + check, one JSON envelope on stdout. Read `data.diagnostics[]` and apply each\n`help` — that key carries the fix text (there is no separate `fix` key) — then re-check. Loop until\n`data.diagnostics` is empty and the exit code is `0`. Inside a project, check the manifest instead\nof the file: `forge check --manifest forge.project.toml` registers the declared `skill.*`\ncapabilities and checks every source.\n\n**3. Explain — `forge explain \u003Ccode>`**\n\n```bash\nforge explain E020\nforge explain --list\n```\n\nEvery diagnostic has a stable code. `explain` prints what it means with a wrong\u002Fright example;\n`next_steps` in the check envelope already hands you `forge explain \u003Ccode>` for each distinct error.\n\n**4. Replay — `forge test`**\n\n```bash\nforge run main.forge --record   # once: record every provider response as fixtures\nforge test main.forge           # replay them — no provider, no tokens, $0\n```\n\n`test` replays `\u003Cfile>.fixtures.json` beside the program. With no fixtures it exits `1` and tells\nyou the `--record` command to run.\n\n**5. Plan — `forge run --dry-run`**\n\n```bash\nforge run --dry-run main.forge\n```\n\nPrints the static execution plan — the cost table of every LLM operation, then the effect sites\n(`command`, `exec`, `http`, `file.write`, `session`, `spawn`) — and the line `nothing was executed`.\nNothing runs, no provider is built: it is the cost and blast-radius review before step 6.\n\n**6. Run — `forge run --json`**\n\n```bash\nFORGE_MOCK=1 forge run main.forge   # whole program on the mock provider, still $0\nforge run --json main.forge         # the real run\n```\n\n`data.output` holds the program's `say` lines (in JSON mode nothing is printed to stdout),\n`data.result` the returned value, and `data.summary` the run's economics.\n\n## Exit codes\n\nSemantic in both modes — `--json` never changes them.\n\n| Code | Meaning |\n|------|---------|\n| `0` | success — clean check, completed run |\n| `1` | error — diagnostics, a blocked run, or an invalid command line |\n| `2` | warnings only — `check` (or `run --dry-run`) found warnings but no errors, and nothing else |\n\n`3` (partial), `10` (needs input) and `11` (async pending) are reserved. In a loop, treat `2` as\n\"read `data.warnings`, then keep going\".\n\n## The JSON envelope\n\nEvery in-scope command emits one document — `--json`, or `FORGE_OUTPUT=json` for a whole session:\n\n| Field | What an agent reads it for |\n|-------|----------------------------|\n| `status` | `success`, `error`, `warning` or `pending` |\n| `command` | which subcommand produced it |\n| `data` | the payload; `--fields diagnostics` keeps only what you need |\n| `context` | one sentence on what happened |\n| `next_steps` | the commands to run next (`forge explain \u003Ccode>`) |\n| `warnings` | non-fatal findings; for `check` they are also in `data.diagnostics` |\n| `cost` | USD this command spent; `0.0` when it made no LLM call — for `run --dry-run` and `forge cost` the estimate is `data.estimated_cost_usd` |\n| `error` | `null`, else `{type, code, message, suggestion}` |\n| `duration_ms` | wall-clock time |\n\nPayloads worth knowing: `check` → `{files, diagnostics[]}` where each diagnostic has\n`code`, `severity`, `file`, `line`, `col`, `message`, `label`, `help`; `run`\u002F`test` →\n`{file, output, result, summary}`; `run --dry-run` → `{dry_run, file, operations, effects,\ntotal_tokens_in, total_tokens_out, estimated_cost_usd}`; `explain` → `{code, title, explain}`.\n`line`\u002F`col` are `null` when the diagnostic names a file that was not parsed — never a fake `1:1`.\n\n## The five mistakes that break most FORGE programs\n\n1. **`when` takes an arrow, not a block.** `when x.sure -> give x`, with `else -> ...` as a sibling\n   at the same indentation. Only `if`, `for` and `match` take an indented body.\n2. **`fn main` has no parentheses and no return type.** Write `fn main`, never `fn main()`, and its\n   body sits at i1 with no `needs`\u002F`gives`\u002F`do`. Keep it thin — put branching in a `task` or `pure`.\n3. **Indentation is exact: 2 spaces per level** (i1–i4, nesting stops at i4), never a tab, and a\n   blank line inside a body ends the block — the next indented line then fails to parse.\n4. **`pure` cannot call LLMs.** No `reason`, `classify`, `search`, `recall`, `exec`, `command`,\n   `session`, `file.read`, `skill.*`, `escalate`, `try ... or`, and no call to a `task`. Move the\n   line into a `task`; `pure` is deterministic and always confidence `1.0`.\n5. **`uncertain\u003CT>` is handled by binding, then dispatching.** `reason`, `classify`, `search`,\n   `recall`, `exec`, `command`, `session`, `file.read`, `toml.parse`, `json.parse` and every\n   `skill.*` call return an uncertain value, and taint survives assignment and field access.\n   `give recall \"{q}\"` fails with **E021** (oracle result given without confidence dispatch);\n   `prior = recall \"{q}\"` then `give prior` fails with **E020** (`prior` may be uncertain and must\n   be dispatched). Bind it, then dispatch with `when result.sure -> ...` \u002F `.unsure` \u002F `else`, or\n   `match`. Thresholds: `sure` ≥ 0.8, `unsure` 0.5–0.8, `unreliable` \u003C 0.5; override with\n   `when result.sure(above: 0.9)`.\n","# Writing FORGE\n\nFORGE is a language for oracle-augmented computation: LLM calls are primitives, uncertainty is a\ncompile-time type, and independent work runs in parallel. Deterministic logic lives in `pure`,\nstochastic logic in `task`; agents are first-class with memory, lifecycle, events and supervision.\n\nRead [`forge-card.md`](forge-card.md) before writing code — it ships with this skill: the syntax\nthat trips agents, one idiom per primitive, and the checker errors you will actually hit.\n\n## When to choose FORGE\n\nChoose it when the task is an orchestration of LLM work:\n\n- several LLM steps, where independent ones should run in the same wave (a `flow` stage without\n  `needs`, or `pool` workers);\n- output whose confidence matters — `uncertain\u003CT>` is a type and `when x.sure` is the dispatch;\n- a long-lived agent: memory, lifecycle states, events, supervision by a `warden`;\n- a visible boundary between deterministic logic (`pure`) and oracle calls (`task`).\n\nDo not choose it for plain data munging with no LLM or effect (write a script), for a single API\ncall, or when the task needs a library ecosystem FORGE does not have — reach for\n`command [\"argv\", \"array\"]` or `exec` instead of inventing a capability.\n\n## The authoring loop\n\nRun these in order. A program is not ready until it has been through all six.\n\n**0. Install — once per machine, before step 1**\n\n```bash\ncargo install --git https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge.git   # Rust 1.90+; puts `forge` on PATH\nforge --version                                            # proves the binary is installed\n```\n\nWithout a `forge` on PATH every later step fails with `forge: command not found`.\n[`forge-card.md`](forge-card.md) and `forge explain \u003Ccode>` are the offline references — they come\nwith the tool, and `docs\u002Fforge-reference.md` lives in the FORGE repo, not in the project you are\nwriting for.\n\n**1. Scaffold — `forge init`**\n\n```bash\nforge init my-app --template pipeline   # templates: pipeline, agent, webhook-bot\nforge init my-app --dry-run             # list the files, write nothing\n```\n\nWrites `forge.project.toml`, `forge.config.toml` (mock provider by default), `main.forge`,\n`main.forge.fixtures.json`, `expected.txt`, `.gitignore` and `AGENTS.md`.\n\n**2. Check — `forge check --json`**\n\n```bash\nforge check --json main.forge\n```\n\nParse + resolve + check, one JSON envelope on stdout. Read `data.diagnostics[]` and apply each\n`help` — that key carries the fix text (there is no separate `fix` key) — then re-check. Loop until\n`data.diagnostics` is empty and the exit code is `0`. Inside a project, check the manifest instead\nof the file: `forge check --manifest forge.project.toml` registers the declared `skill.*`\ncapabilities and checks every source.\n\n**3. Explain — `forge explain \u003Ccode>`**\n\n```bash\nforge explain E020\nforge explain --list\n```\n\nEvery diagnostic has a stable code. `explain` prints what it means with a wrong\u002Fright example;\n`next_steps` in the check envelope already hands you `forge explain \u003Ccode>` for each distinct error.\n\n**4. Replay — `forge test`**\n\n```bash\nforge run main.forge --record   # once: record every provider response as fixtures\nforge test main.forge           # replay them — no provider, no tokens, $0\n```\n\n`test` replays `\u003Cfile>.fixtures.json` beside the program. With no fixtures it exits `1` and tells\nyou the `--record` command to run.\n\n**5. Plan — `forge run --dry-run`**\n\n```bash\nforge run --dry-run main.forge\n```\n\nPrints the static execution plan — the cost table of every LLM operation, then the effect sites\n(`command`, `exec`, `http`, `file.write`, `session`, `spawn`) — and the line `nothing was executed`.\nNothing runs, no provider is built: it is the cost and blast-radius review before step 6.\n\n**6. Run — `forge run --json`**\n\n```bash\nFORGE_MOCK=1 forge run main.forge   # whole program on the mock provider, still $0\nforge run --json main.forge         # the real run\n```\n\n`data.output` holds the program's `say` lines (in JSON mode nothing is printed to stdout),\n`data.result` the returned value, and `data.summary` the run's economics.\n\n## Exit codes\n\nSemantic in both modes — `--json` never changes them.\n\n| Code | Meaning |\n|------|---------|\n| `0` | success — clean check, completed run |\n| `1` | error — diagnostics, a blocked run, or an invalid command line |\n| `2` | warnings only — `check` (or `run --dry-run`) found warnings but no errors, and nothing else |\n\n`3` (partial), `10` (needs input) and `11` (async pending) are reserved. In a loop, treat `2` as\n\"read `data.warnings`, then keep going\".\n\n## The JSON envelope\n\nEvery in-scope command emits one document — `--json`, or `FORGE_OUTPUT=json` for a whole session:\n\n| Field | What an agent reads it for |\n|-------|----------------------------|\n| `status` | `success`, `error`, `warning` or `pending` |\n| `command` | which subcommand produced it |\n| `data` | the payload; `--fields diagnostics` keeps only what you need |\n| `context` | one sentence on what happened |\n| `next_steps` | the commands to run next (`forge explain \u003Ccode>`) |\n| `warnings` | non-fatal findings; for `check` they are also in `data.diagnostics` |\n| `cost` | USD this command spent; `0.0` when it made no LLM call — for `run --dry-run` and `forge cost` the estimate is `data.estimated_cost_usd` |\n| `error` | `null`, else `{type, code, message, suggestion}` |\n| `duration_ms` | wall-clock time |\n\nPayloads worth knowing: `check` → `{files, diagnostics[]}` where each diagnostic has\n`code`, `severity`, `file`, `line`, `col`, `message`, `label`, `help`; `run`\u002F`test` →\n`{file, output, result, summary}`; `run --dry-run` → `{dry_run, file, operations, effects,\ntotal_tokens_in, total_tokens_out, estimated_cost_usd}`; `explain` → `{code, title, explain}`.\n`line`\u002F`col` are `null` when the diagnostic names a file that was not parsed — never a fake `1:1`.\n\n## The five mistakes that break most FORGE programs\n\n1. **`when` takes an arrow, not a block.** `when x.sure -> give x`, with `else -> ...` as a sibling\n   at the same indentation. Only `if`, `for` and `match` take an indented body.\n2. **`fn main` has no parentheses and no return type.** Write `fn main`, never `fn main()`, and its\n   body sits at i1 with no `needs`\u002F`gives`\u002F`do`. Keep it thin — put branching in a `task` or `pure`.\n3. **Indentation is exact: 2 spaces per level** (i1–i4, nesting stops at i4), never a tab, and a\n   blank line inside a body ends the block — the next indented line then fails to parse.\n4. **`pure` cannot call LLMs.** No `reason`, `classify`, `search`, `recall`, `exec`, `command`,\n   `session`, `file.read`, `skill.*`, `escalate`, `try ... or`, and no call to a `task`. Move the\n   line into a `task`; `pure` is deterministic and always confidence `1.0`.\n5. **`uncertain\u003CT>` is handled by binding, then dispatching.** `reason`, `classify`, `search`,\n   `recall`, `exec`, `command`, `session`, `file.read`, `toml.parse`, `json.parse` and every\n   `skill.*` call return an uncertain value, and taint survives assignment and field access.\n   `give recall \"{q}\"` fails with **E021** (oracle result given without confidence dispatch);\n   `prior = recall \"{q}\"` then `give prior` fails with **E020** (`prior` may be uncertain and must\n   be dispatched). Bind it, then dispatch with `when result.sure -> ...` \u002F `.unsure` \u002F `else`, or\n   `match`. Thresholds: `sure` ≥ 0.8, `unsure` 0.5–0.8, `unreliable` \u003C 0.5; override with\n   `when result.sure(above: 0.9)`.\n",{"name":5,"description":7},"development","357dd4b767160fd37a6f66eed6488d9fae43be60","skills\u002Fwrite-forge","https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge","https:\u002F\u002Fgithub.com\u002Fncmlabs","ncmlabs.com","2026-10-16 01:25:57",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add ncmlabs\u002Fforge --skill write-forge",{"tool":59,"command":60},"bunx","bunx skills add ncmlabs\u002Fforge --skill write-forge",{"tool":62,"command":63},"pnpm","pnpm dlx skills add ncmlabs\u002Fforge --skill write-forge","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Fskills\u002Fwrite-forge\u002FSKILL.md",true,[67],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"forge-card.md","REFERENCE","参考文档",11769,"https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Fskills\u002Fwrite-forge\u002Fforge-card.md",[74,84,98,128,141,162],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":41},"01M6CP25SKSYXW6F6VW5QHCHR1","greeter","Greet a person by name.","https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Ftests\u002Ffixtures\u002Fskill-project\u002Fskills\u002Fgreeter\u002FSKILL.md",[],[76,81,82,83],"greet","text","hello",{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":41},"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",[],[91,92,93,94,95,96,97],"git","analysis","git analysis","Bash","health","repository","agentic",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":110,"publishedAt":41},"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",[104,107],{"categoryNo":105,"categoryName":106,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":108,"categoryName":109,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",[100,111,112,94,113,114,115,116,117,118,119,120,82,121,122,123,124,125,126,127],"web","pin","api","messages","https","update","delete","bot","info","message","ok","operations","read","command","timestamp","curl","history",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":41},"01M6CP1T778FD17PC9Z3GQMFX2","ollama","Use Ollama local inference for text generation, classification, and analysis via local GPU models.","https:\u002F\u002Fgithub.com\u002Fncmlabs\u002Fforge\u002Fblob\u002Fdevelopment\u002Fskills\u002Follama\u002FSKILL.md",[],[130,94,92,135,136,38,82,137,138,139,140],"models","analyze","gpu","generate","inference","classification",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":41},"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",[],[143,117,148,149,32,150,151,152,153,154,155,156,157,82,158,94,113,159,160,161],"create","pr","state","branch","branches","diff","view","check","repo","gh","squash","ci","csv","issues",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":174,"publishedAt":41},"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",[168,171],{"categoryNo":169,"categoryName":170,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":172,"categoryName":173,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000038","人力资源",[164,156,175,176,177,38,178,179,82,180,94,181,182,183,32,184],"exploration","implementation","resume","session","coding","explore","codex cli","implement","coding agent","review"]