[{"data":1,"prerenderedAt":1867},["ShallowReactive",2],{"navigation_docs":3,"-guides-day-to-day-agent-integration":504,"-guides-day-to-day-agent-integration-surround":1862},[4,28,51,187,214,469],{"title":5,"path":6,"stem":7,"children":8,"page":-1},"Get started","\u002Fget-started","1.get-started",[9,12,16,20,24],{"title":10,"path":6,"stem":11},"Overview","1.get-started\u002Findex",{"title":13,"path":14,"stem":15},"Why Kraft","\u002Fget-started\u002Fwhy-kraft","1.get-started\u002F0.why-kraft",{"title":17,"path":18,"stem":19},"Install","\u002Fget-started\u002Finstall","1.get-started\u002F1.install",{"title":21,"path":22,"stem":23},"Your first work item","\u002Fget-started\u002Ffirst-work-item","1.get-started\u002F2.first-work-item",{"title":25,"path":26,"stem":27},"FAQ","\u002Fget-started\u002Ffaq","1.get-started\u002F3.faq",{"title":29,"path":30,"stem":31,"children":32,"page":-1},"Concepts","\u002Fconcepts","2.concepts",[33,35,39,43,47],{"title":10,"path":30,"stem":34},"2.concepts\u002Findex",{"title":36,"path":37,"stem":38},"How a work item runs","\u002Fconcepts\u002Fhow-a-work-item-runs","2.concepts\u002F1.how-a-work-item-runs",{"title":40,"path":41,"stem":42},"Caps and budgets","\u002Fconcepts\u002Fcaps-and-budgets","2.concepts\u002F2.caps-and-budgets",{"title":44,"path":45,"stem":46},"Why a permission gate","\u002Fconcepts\u002Fpermission-gate","2.concepts\u002F3.permission-gate",{"title":48,"path":49,"stem":50},"Vocabulary","\u002Fconcepts\u002Fvocabulary","2.concepts\u002F4.vocabulary",{"title":52,"path":53,"stem":54,"children":55,"page":-1},"Guides","\u002Fguides","3.guides",[56,58,96,113,134,183],{"title":10,"path":53,"stem":57},"3.guides\u002Findex",{"title":59,"path":60,"stem":61,"children":62,"page":95},"Day to day","\u002Fguides\u002Fday-to-day","3.guides\u002F1.day-to-day",[63,67,71,75,79,83,87,91],{"title":64,"path":65,"stem":66},"The setup wizard on first start","\u002Fguides\u002Fday-to-day\u002Ffirst-run","3.guides\u002F1.day-to-day\u002F2.first-run",{"title":68,"path":69,"stem":70},"File a work item","\u002Fguides\u002Fday-to-day\u002Ffile-a-work-item","3.guides\u002F1.day-to-day\u002F3.file-a-work-item",{"title":72,"path":73,"stem":74},"Use Kraft from your agent","\u002Fguides\u002Fday-to-day\u002Fagent-integration","3.guides\u002F1.day-to-day\u002F4.agent-integration",{"title":76,"path":77,"stem":78},"Reviewing a change","\u002Fguides\u002Fday-to-day\u002Freview-a-change","3.guides\u002F1.day-to-day\u002F5.review-a-change",{"title":80,"path":81,"stem":82},"Raise a cap on a stopped item","\u002Fguides\u002Fday-to-day\u002Fraise-a-cap","3.guides\u002F1.day-to-day\u002F6.raise-a-cap",{"title":84,"path":85,"stem":86},"Kraft for VS Code","\u002Fguides\u002Fday-to-day\u002Fvscode","3.guides\u002F1.day-to-day\u002F7.vscode",{"title":88,"path":89,"stem":90},"Kraft on a phone","\u002Fguides\u002Fday-to-day\u002Fkraft-on-a-phone","3.guides\u002F1.day-to-day\u002F8.kraft-on-a-phone",{"title":92,"path":93,"stem":94},"Get notified when an item needs you","\u002Fguides\u002Fday-to-day\u002Fnotifications","3.guides\u002F1.day-to-day\u002F9.notifications",false,{"title":97,"path":98,"stem":99,"children":100,"page":95},"Customize and automate","\u002Fguides\u002Fcustomize","3.guides\u002F2.customize",[101,105,109],{"title":102,"path":103,"stem":104},"Write your own chain","\u002Fguides\u002Fcustomize\u002Fwrite-your-own-chain","3.guides\u002F2.customize\u002F1.write-your-own-chain",{"title":106,"path":107,"stem":108},"Add a security review or a gate reviewer","\u002Fguides\u002Fcustomize\u002Fadd-review-agents","3.guides\u002F2.customize\u002F2.add-review-agents",{"title":110,"path":111,"stem":112},"Schedule or webhook work","\u002Fguides\u002Fcustomize\u002Fschedule-and-webhook-work","3.guides\u002F2.customize\u002F3.schedule-and-webhook-work",{"title":114,"path":115,"stem":116,"children":117,"page":95},"Agents and harnesses","\u002Fguides\u002Fharnesses","3.guides\u002F3.harnesses",[118,122,126,130],{"title":119,"path":120,"stem":121},"Switch a task to another harness","\u002Fguides\u002Fharnesses\u002Fswitch-harness","3.guides\u002F3.harnesses\u002F1.switch-harness",{"title":123,"path":124,"stem":125},"Add or override a harness","\u002Fguides\u002Fharnesses\u002Fadding-a-harness","3.guides\u002F3.harnesses\u002F2.adding-a-harness",{"title":127,"path":128,"stem":129},"Build a worker Kit","\u002Fguides\u002Fharnesses\u002Fworker-kit","3.guides\u002F3.harnesses\u002F3.worker-kit",{"title":131,"path":132,"stem":133},"Give a worker its login","\u002Fguides\u002Fharnesses\u002Fgive-a-worker-its-login","3.guides\u002F3.harnesses\u002F4.give-a-worker-its-login",{"title":135,"path":136,"stem":137,"children":138,"page":95},"Run the server","\u002Fguides\u002Frun","3.guides\u002F4.run",[139,143,147,151,155,159,163,167,171,175,179],{"title":140,"path":141,"stem":142},"Remote access","\u002Fguides\u002Frun\u002Fremote-access","3.guides\u002F4.run\u002F01.remote-access",{"title":144,"path":145,"stem":146},"Put a proxy in front of Kraft","\u002Fguides\u002Frun\u002Fput-a-proxy-in-front-of-kraft","3.guides\u002F4.run\u002F02.put-a-proxy-in-front-of-kraft",{"title":148,"path":149,"stem":150},"Restart Kraft without ending running agents","\u002Fguides\u002Frun\u002Frestart-kraft","3.guides\u002F4.run\u002F03.restart-kraft",{"title":152,"path":153,"stem":154},"Back up and restore the database","\u002Fguides\u002Frun\u002Fback-up-and-restore","3.guides\u002F4.run\u002F04.back-up-and-restore",{"title":156,"path":157,"stem":158},"Logs and disk space","\u002Fguides\u002Frun\u002Flogs-and-disk-space","3.guides\u002F4.run\u002F05.logs-and-disk-space",{"title":160,"path":161,"stem":162},"Run Kraft as a service","\u002Fguides\u002Frun\u002Frun-as-a-service","3.guides\u002F4.run\u002F06.run-as-a-service",{"title":164,"path":165,"stem":166},"Upgrade Kraft","\u002Fguides\u002Frun\u002Fupgrade-kraft","3.guides\u002F4.run\u002F07.upgrade-kraft",{"title":168,"path":169,"stem":170},"Upgrade your configuration","\u002Fguides\u002Frun\u002Fupgrade-your-configuration","3.guides\u002F4.run\u002F08.upgrade-your-configuration",{"title":172,"path":173,"stem":174},"Upgrade from 1.4","\u002Fguides\u002Frun\u002Fupgrade-from-1-4","3.guides\u002F4.run\u002F09.upgrade-from-1-4",{"title":176,"path":177,"stem":178},"Upgrade from 0.x or a release candidate","\u002Fguides\u002Frun\u002Fupgrade-from-0-x-or-a-release-candidate","3.guides\u002F4.run\u002F10.upgrade-from-0-x-or-a-release-candidate",{"title":180,"path":181,"stem":182},"Roll back to 1.4","\u002Fguides\u002Frun\u002Froll-back","3.guides\u002F4.run\u002F11.roll-back",{"title":184,"path":185,"stem":186},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F5.kraft-lite",{"title":188,"path":189,"stem":190,"children":191,"page":-1},"Troubleshooting","\u002Ftroubleshooting","4.troubleshooting",[192,194,198,202,206,210],{"title":10,"path":189,"stem":193},"4.troubleshooting\u002Findex",{"title":195,"path":196,"stem":197},"Why did my item stop?","\u002Ftroubleshooting\u002Fwhy-did-my-item-stop","4.troubleshooting\u002F1.why-did-my-item-stop",{"title":199,"path":200,"stem":201},"Stop reasons in detail","\u002Ftroubleshooting\u002Fstop-reasons-in-detail","4.troubleshooting\u002F2.stop-reasons-in-detail",{"title":203,"path":204,"stem":205},"Starting and reaching Kraft","\u002Ftroubleshooting\u002Fstarting-and-reaching-kraft","4.troubleshooting\u002F3.starting-and-reaching-kraft",{"title":207,"path":208,"stem":209},"Doctor failures","\u002Ftroubleshooting\u002Fdoctor-failures","4.troubleshooting\u002F4.doctor-failures",{"title":211,"path":212,"stem":213},"Sandbox and Kit stops","\u002Ftroubleshooting\u002Fsandbox-and-kit-stops","4.troubleshooting\u002F5.sandbox-and-kit-stops",{"title":215,"path":216,"stem":217,"children":218,"page":-1},"Reference","\u002Freference","5.reference",[219,221,259,281,285,375,393,419,423,427,461,465],{"title":10,"path":216,"stem":220},"5.reference\u002Findex",{"title":222,"path":223,"stem":224,"children":225,"page":-1},"Web UI","\u002Freference\u002Fweb-ui","5.reference\u002F00.web-ui\u002Findex",[226,227,231,235,239,243,247,251,255],{"title":10,"path":223,"stem":224},{"title":228,"path":229,"stem":230},"Sidebar, search, and keyboard","\u002Freference\u002Fweb-ui\u002Fsidebar-search-and-keyboard","5.reference\u002F00.web-ui\u002F0.sidebar-search-and-keyboard",{"title":232,"path":233,"stem":234},"The board","\u002Freference\u002Fweb-ui\u002Fboard","5.reference\u002F00.web-ui\u002F1.board",{"title":236,"path":237,"stem":238},"An item's page","\u002Freference\u002Fweb-ui\u002Fitem-page","5.reference\u002F00.web-ui\u002F2.item-page",{"title":240,"path":241,"stem":242},"Fix loops and test scopes","\u002Freference\u002Fweb-ui\u002Ffix-loops-and-test-scopes","5.reference\u002F00.web-ui\u002F3.fix-loops-and-test-scopes",{"title":244,"path":245,"stem":246},"Config before an item starts","\u002Freference\u002Fweb-ui\u002Fconfig-before-start","5.reference\u002F00.web-ui\u002F4.config-before-start",{"title":248,"path":249,"stem":250},"The review page","\u002Freference\u002Fweb-ui\u002Freview-page","5.reference\u002F00.web-ui\u002F5.review-page",{"title":252,"path":253,"stem":254},"Templates and Settings","\u002Freference\u002Fweb-ui\u002Ftemplates-and-settings","5.reference\u002F00.web-ui\u002F6.templates-and-settings",{"title":256,"path":257,"stem":258},"Analytics","\u002Freference\u002Fweb-ui\u002Fanalytics","5.reference\u002F00.web-ui\u002F7.analytics",{"title":260,"path":261,"stem":262,"children":263,"page":-1},"CLI","\u002Freference\u002Fcli","5.reference\u002F01.cli\u002Findex",[264,265,269,273,277],{"title":10,"path":261,"stem":262},{"title":266,"path":267,"stem":268},"Item verbs","\u002Freference\u002Fcli\u002Fitem","5.reference\u002F01.cli\u002F2.item",{"title":270,"path":271,"stem":272},"View verbs","\u002Freference\u002Fcli\u002Fview","5.reference\u002F01.cli\u002F3.view",{"title":274,"path":275,"stem":276},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","5.reference\u002F01.cli\u002F4.repo",{"title":278,"path":279,"stem":280},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","5.reference\u002F01.cli\u002F5.admin",{"title":282,"path":283,"stem":284},"Work item statuses","\u002Freference\u002Fstatuses","5.reference\u002F02.statuses",{"title":286,"path":287,"stem":288,"children":289,"page":-1},"Configuration","\u002Freference\u002Fconfiguration","5.reference\u002F03.configuration\u002Findex",[290,291,309,313,317,321,325,329,333,337,371],{"title":10,"path":287,"stem":288},{"title":292,"path":293,"stem":294,"children":295,"page":-1},"repos.yaml","\u002Freference\u002Fconfiguration\u002Frepos","5.reference\u002F03.configuration\u002F02.repos\u002Findex",[296,297,301,305],{"title":10,"path":293,"stem":294},{"title":298,"path":299,"stem":300},"How connect proposes commands","\u002Freference\u002Fconfiguration\u002Frepos\u002Fconnect-proposals","5.reference\u002F03.configuration\u002F02.repos\u002F1.connect-proposals",{"title":302,"path":303,"stem":304},"detectors.yaml","\u002Freference\u002Fconfiguration\u002Frepos\u002Fdetectors","5.reference\u002F03.configuration\u002F02.repos\u002F2.detectors",{"title":306,"path":307,"stem":308},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","5.reference\u002F03.configuration\u002F02.repos\u002F3.workspaces",{"title":310,"path":311,"stem":312},"policy.yaml","\u002Freference\u002Fconfiguration\u002Fpolicy","5.reference\u002F03.configuration\u002F03.policy",{"title":314,"path":315,"stem":316},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","5.reference\u002F03.configuration\u002F04.library-and-chains",{"title":318,"path":319,"stem":320},"harnesses.yaml","\u002Freference\u002Fconfiguration\u002Fharnesses-file","5.reference\u002F03.configuration\u002F05.harnesses-file",{"title":322,"path":323,"stem":324},"access.yaml","\u002Freference\u002Fconfiguration\u002Faccess","5.reference\u002F03.configuration\u002F06.access",{"title":326,"path":327,"stem":328},"intake.yaml","\u002Freference\u002Fconfiguration\u002Fintake","5.reference\u002F03.configuration\u002F07.intake",{"title":330,"path":331,"stem":332},"notify.yaml","\u002Freference\u002Fconfiguration\u002Fnotify","5.reference\u002F03.configuration\u002F08.notify",{"title":334,"path":335,"stem":336},"theme.yaml","\u002Freference\u002Fconfiguration\u002Ftheme","5.reference\u002F03.configuration\u002F09.theme",{"title":338,"path":339,"stem":340,"children":341,"page":-1},"Sandboxed workers","\u002Freference\u002Fconfiguration\u002Fsandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002Findex",[342,343,347,351,355,359,363,367],{"title":10,"path":339,"stem":340},{"title":344,"path":345,"stem":346},"Resource limits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fresource-limits","5.reference\u002F03.configuration\u002F10.sandbox\u002F1.resource-limits",{"title":348,"path":349,"stem":350},"Callbacks from a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcallbacks","5.reference\u002F03.configuration\u002F10.sandbox\u002F2.callbacks",{"title":352,"path":353,"stem":354},"Network policy","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fnetwork-policy","5.reference\u002F03.configuration\u002F10.sandbox\u002F3.network-policy",{"title":356,"path":357,"stem":358},"Credentials","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcredentials","5.reference\u002F03.configuration\u002F10.sandbox\u002F4.credentials",{"title":360,"path":361,"stem":362},"Kits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fkits","5.reference\u002F03.configuration\u002F10.sandbox\u002F5.kits",{"title":364,"path":365,"stem":366},"sandbox.yaml","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fsandbox-yaml","5.reference\u002F03.configuration\u002F10.sandbox\u002F6.sandbox-yaml",{"title":368,"path":369,"stem":370},"Git in a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fgit-in-a-sandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002F7.git-in-a-sandbox",{"title":372,"path":373,"stem":374},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","5.reference\u002F03.configuration\u002F11.environment-variables",{"title":376,"path":377,"stem":378,"children":379,"page":-1},"Chain file keys","\u002Freference\u002Fchain-nodes","5.reference\u002F04.chain-nodes\u002Findex",[380,381,385,389],{"title":10,"path":377,"stem":378},{"title":382,"path":383,"stem":384},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","5.reference\u002F04.chain-nodes\u002F2.subprocess-tasks",{"title":386,"path":387,"stem":388},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","5.reference\u002F04.chain-nodes\u002F3.fix-loop",{"title":390,"path":391,"stem":392},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","5.reference\u002F04.chain-nodes\u002F4.result-file",{"title":394,"path":395,"stem":396,"children":397,"page":-1},"Agent harnesses","\u002Freference\u002Fharnesses","5.reference\u002F05.harnesses\u002Findex",[398,399,403,407,411,415],{"title":10,"path":395,"stem":396},{"title":400,"path":401,"stem":402},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","5.reference\u002F05.harnesses\u002F2.unattended-runs",{"title":404,"path":405,"stem":406},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","5.reference\u002F05.harnesses\u002F3.agent-profiles",{"title":408,"path":409,"stem":410},"Harness definition files","\u002Freference\u002Fharnesses\u002Fharness-files","5.reference\u002F05.harnesses\u002F4.harness-files",{"title":412,"path":413,"stem":414},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","5.reference\u002F05.harnesses\u002F5.fallback-and-escalation",{"title":416,"path":417,"stem":418},"Cost reporting","\u002Freference\u002Fharnesses\u002Fcost-reporting","5.reference\u002F05.harnesses\u002F6.cost-reporting",{"title":420,"path":421,"stem":422},"Permission gate","\u002Freference\u002Fpermissions","5.reference\u002F06.permissions",{"title":424,"path":425,"stem":426},"Inbound triggers","\u002Freference\u002Ftriggers","5.reference\u002F07.triggers",{"title":428,"path":429,"stem":430,"children":431,"page":-1},"HTTP API","\u002Freference\u002Fhttp-api","5.reference\u002F08.http-api\u002Findex",[432,433,437,441,445,449,453,457],{"title":10,"path":429,"stem":430},{"title":434,"path":435,"stem":436},"Filing, reading and changing work items","\u002Freference\u002Fhttp-api\u002Fwork-items","5.reference\u002F08.http-api\u002F2.work-items",{"title":438,"path":439,"stem":440},"Gates, run control, ending and retry","\u002Freference\u002Fhttp-api\u002Fgates-run-control-and-ending","5.reference\u002F08.http-api\u002F3.gates-run-control-and-ending",{"title":442,"path":443,"stem":444},"The work item object","\u002Freference\u002Fhttp-api\u002Fwork-item-object","5.reference\u002F08.http-api\u002F4.work-item-object",{"title":446,"path":447,"stem":448},"Budget, events, diff and documents","\u002Freference\u002Fhttp-api\u002Fbudget-and-events","5.reference\u002F08.http-api\u002F5.budget-and-events",{"title":450,"path":451,"stem":452},"Repos, chains, harnesses and the server","\u002Freference\u002Fhttp-api\u002Frepos-chains-harnesses-and-server","5.reference\u002F08.http-api\u002F6.repos-chains-harnesses-and-server",{"title":454,"path":455,"stem":456},"Drafts","\u002Freference\u002Fhttp-api\u002Fdrafts","5.reference\u002F08.http-api\u002F7.drafts",{"title":458,"path":459,"stem":460},"Ops for each draft area","\u002Freference\u002Fhttp-api\u002Fdraft-ops","5.reference\u002F08.http-api\u002F8.draft-ops",{"title":462,"path":463,"stem":464},"MCP tools","\u002Freference\u002Fmcp-tools","5.reference\u002F09.mcp-tools",{"title":466,"path":467,"stem":468},"Events","\u002Freference\u002Fevents","5.reference\u002F10.events",{"title":470,"path":471,"stem":472,"children":473,"page":-1},"Security and project","\u002Fproject","6.project",[474,476,480,484,488,492,496,500],{"title":10,"path":471,"stem":475},"6.project\u002Findex",{"title":477,"path":478,"stem":479},"Security","\u002Fproject\u002Fsecurity","6.project\u002F1.security",{"title":481,"path":482,"stem":483},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","6.project\u002F2.data-and-privacy",{"title":485,"path":486,"stem":487},"What's new in 2.0","\u002Fproject\u002Fwhats-new","6.project\u002F3.whats-new",{"title":489,"path":490,"stem":491},"Status and support","\u002Fproject\u002Fstatus-and-support","6.project\u002F4.status-and-support",{"title":493,"path":494,"stem":495},"Architecture","\u002Fproject\u002Farchitecture","6.project\u002F5.architecture",{"title":497,"path":498,"stem":499},"Source map","\u002Fproject\u002Fsource-map","6.project\u002F6.source-map",{"title":501,"path":502,"stem":503},"Contributing","\u002Fproject\u002Fcontributing","6.project\u002F7.contributing",{"id":505,"title":72,"body":506,"description":1855,"extension":1856,"links":1857,"meta":1858,"navigation":1859,"path":73,"seo":1860,"stem":74,"__hash__":1861},"docs\u002F3.guides\u002F1.day-to-day\u002F4.agent-integration.md",{"type":507,"value":508,"toc":1841},"minimark",[509,513,521,533,538,565,569,572,1303,1316,1320,1323,1346,1349,1373,1388,1395,1399,1434,1450,1453,1459,1462,1488,1517,1523,1535,1540,1550,1578,1590,1594,1602,1730,1734,1740,1779,1783,1790,1798,1811,1815,1837],[510,511,512],"p",{},"Register Kraft with your coding agent and connect a repo, then file work, read\nthe board, and approve or reject gates from the agent's session without\nswitching to the browser. At the end the agent answers \"what is waiting on me in\nKraft?\" from the board.",[510,514,515,516,520],{},"Every agent reaches Kraft through its MCP server, the command ",[517,518,519],"code",{},"kraft admin mcp",".\nWith the Kraft plugin, Claude Code, Codex, Cursor and Antigravity also get\nKraft's skills.",[510,522,523,524,528,529,532],{},"Registering lets you drive Kraft from the agent. The agent CLI that runs a work\nitem's tasks is a separate choice: ",[525,526,527],"a",{"href":120},"Switch a task to another\nharness"," moves tasks to another, and ",[525,530,531],{"href":132},"Give a\nworker its login"," gives that CLI the\nlogin a headless worker needs.",[534,535,537],"h2",{"id":536},"before-you-start","Before you start",[539,540,541,559,562],"ul",{},[542,543,544,545,548,549,552,553,555,556,558],"li",{},"Kraft installed, with ",[517,546,547],{},"kraft"," on your ",[517,550,551],{},"PATH",", and the server running\n(",[517,554,547],{},"). See ",[525,557,17],{"href":18},".",[542,560,561],{},"A git checkout of the repo you want Kraft to work on.",[542,563,564],{},"One of the agents below, signed in.",[534,566,568],{"id":567},"register-kraft-with-your-agent","Register Kraft with your agent",[510,570,571],{},"Pick your agent. Each tab ends with the command that lists the registration.",[573,574,576,659,795,965,1012,1104,1248],"tabs",{"sync":575},"agent",[577,578,580,583,627,642,652],"tabs-item",{"label":579},"Claude Code",[510,581,582],{},"Add the Kraft marketplace and install the plugin:",[584,585,590],"pre",{"className":586,"code":587,"language":588,"meta":589,"style":589},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","claude plugin marketplace add itsOmidKarami\u002Fkraft\nclaude plugin install kraft@kraft\n","bash","",[517,591,592,614],{"__ignoreMap":589},[593,594,597,601,605,608,611],"span",{"class":595,"line":596},"line",1,[593,598,600],{"class":599},"szw1H","claude",[593,602,604],{"class":603},"semJd"," plugin",[593,606,607],{"class":603}," marketplace",[593,609,610],{"class":603}," add",[593,612,613],{"class":603}," itsOmidKarami\u002Fkraft\n",[593,615,617,619,621,624],{"class":595,"line":616},2,[593,618,600],{"class":599},[593,620,604],{"class":603},[593,622,623],{"class":603}," install",[593,625,626],{"class":603}," kraft@kraft\n",[510,628,629,630,637,638,641],{},"The plugin registers Kraft's MCP server with Claude Code and adds the\n",[525,631,633,636],{"href":632},"#the-skills",[517,634,635],{},"\u002Fkraft:*"," skills",". You do not need ",[517,639,640],{},"kraft admin init"," as well.",[510,643,644,647,648,651],{},[517,645,646],{},"claude plugin update kraft"," picks up new skills. ",[517,649,650],{},"claude plugin uninstall kraft","\nremoves them.",[510,653,654,655,558],{},"To use plain files instead of a managed plugin, see\n",[525,656,658],{"href":657},"#set-up-without-the-plugin","Set up without the plugin",[577,660,662,665,693,723,726,755,762,785],{"label":661},"Codex",[510,663,664],{},"Codex installs the same plugin from the same marketplace:",[584,666,668],{"className":586,"code":667,"language":588,"meta":589,"style":589},"codex plugin marketplace add itsOmidKarami\u002Fkraft\ncodex plugin add kraft@kraft\n",[517,669,670,683],{"__ignoreMap":589},[593,671,672,675,677,679,681],{"class":595,"line":596},[593,673,674],{"class":599},"codex",[593,676,604],{"class":603},[593,678,607],{"class":603},[593,680,610],{"class":603},[593,682,613],{"class":603},[593,684,685,687,689,691],{"class":595,"line":616},[593,686,674],{"class":599},[593,688,604],{"class":603},[593,690,610],{"class":603},[593,692,626],{"class":603},[510,694,695,696,699,700,702,703,706,707,710,711,714,715,718,719,722],{},"The plugin registers Kraft's MCP server (",[517,697,698],{},"codex mcp list"," shows ",[517,701,547],{},") and\nadds the Kraft skills. Start a new Codex session to load them. ",[517,704,705],{},"\u002Fskills"," lists\nthem as ",[517,708,709],{},"kraft:board",", ",[517,712,713],{},"kraft:handoff"," and so on. Type ",[517,716,717],{},"$"," to pick one, or\ndescribe the task and let Codex choose. ",[517,720,721],{},"codex plugin remove kraft@kraft","\nuninstalls it.",[510,724,725],{},"Without the plugin, register the server alone:",[584,727,729],{"className":586,"code":728,"language":588,"meta":589,"style":589},"codex mcp add kraft -- kraft admin mcp\n",[517,730,731],{"__ignoreMap":589},[593,732,733,735,738,740,743,747,749,752],{"class":595,"line":596},[593,734,674],{"class":599},[593,736,737],{"class":603}," mcp",[593,739,610],{"class":603},[593,741,742],{"class":603}," kraft",[593,744,746],{"class":745},"ssYy9"," --",[593,748,742],{"class":603},[593,750,751],{"class":603}," admin",[593,753,754],{"class":603}," mcp\n",[510,756,757,758,761],{},"This writes the server to ",[517,759,760],{},"~\u002F.codex\u002Fconfig.toml",":",[584,763,767],{"className":764,"code":765,"filename":760,"language":766,"meta":589,"style":589},"language-toml shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","[mcp_servers.kraft]\ncommand = \"kraft\"\nargs = [\"admin\", \"mcp\"]\n","toml",[517,768,769,774,779],{"__ignoreMap":589},[593,770,771],{"class":595,"line":596},[593,772,773],{},"[mcp_servers.kraft]\n",[593,775,776],{"class":595,"line":616},[593,777,778],{},"command = \"kraft\"\n",[593,780,782],{"class":595,"line":781},3,[593,783,784],{},"args = [\"admin\", \"mcp\"]\n",[510,786,787,788,791,792,794],{},"To register it for one repo only, put the same table in that repo's\n",[517,789,790],{},".codex\u002Fconfig.toml"," instead. ",[517,793,698],{}," shows it.",[577,796,798,801,819,855,866,936,945,962],{"label":797},"Cursor",[510,799,800],{},"Add the Kraft marketplace to your Cursor account:",[584,802,804],{"className":586,"code":803,"language":588,"meta":589,"style":589},"agent plugin marketplace add https:\u002F\u002Fgithub.com\u002FitsOmidKarami\u002Fkraft\n",[517,805,806],{"__ignoreMap":589},[593,807,808,810,812,814,816],{"class":595,"line":596},[593,809,575],{"class":599},[593,811,604],{"class":603},[593,813,607],{"class":603},[593,815,610],{"class":603},[593,817,818],{"class":603}," https:\u002F\u002Fgithub.com\u002FitsOmidKarami\u002Fkraft\n",[510,820,821,822,824,825,828,829,831,832,834,835,838,839,842,843,846,847,850,851,854],{},"Then install the plugin. In an ",[517,823,575],{}," session, run ",[517,826,827],{},"\u002Fplugins",", open the\nMarketplace tab, pick ",[517,830,547],{},", and choose user scope (every project) or project\nscope (this repo). Its details list the Kraft skills and the ",[517,833,547],{}," MCP\nserver. Once installed, ",[517,836,837],{},"\u002Fmcp"," in a session lists ",[517,840,841],{},"Kraft (plugin)","; the\n",[517,844,845],{},"agent mcp list"," command shows only servers from ",[517,848,849],{},"mcp.json"," files, so it does\nnot list it. ",[517,852,853],{},"agent plugin marketplace remove kraft"," drops the marketplace.",[510,856,857,858,861,862,865],{},"Without the plugin, register the server alone. Cursor's CLI has no command that\nadds a server. Add it to ",[517,859,860],{},"~\u002F.cursor\u002Fmcp.json"," for every project, or to\n",[517,863,864],{},".cursor\u002Fmcp.json"," in one repo:",[584,867,871],{"className":868,"code":869,"filename":860,"language":870,"meta":589,"style":589},"language-json shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","{\n  \"mcpServers\": {\n    \"kraft\": { \"command\": \"kraft\", \"args\": [\"admin\", \"mcp\"] }\n  }\n}\n","json",[517,872,873,879,888,924,930],{"__ignoreMap":589},[593,874,875],{"class":595,"line":596},[593,876,878],{"class":877},"s7iLA","{\n",[593,880,881,885],{"class":595,"line":616},[593,882,884],{"class":883},"sb7M8","  \"mcpServers\"",[593,886,887],{"class":877},": {\n",[593,889,890,893,896,899,902,905,907,910,913,916,918,921],{"class":595,"line":781},[593,891,892],{"class":883},"    \"kraft\"",[593,894,895],{"class":877},": { ",[593,897,898],{"class":883},"\"command\"",[593,900,901],{"class":877},": ",[593,903,904],{"class":603},"\"kraft\"",[593,906,710],{"class":877},[593,908,909],{"class":883},"\"args\"",[593,911,912],{"class":877},": [",[593,914,915],{"class":603},"\"admin\"",[593,917,710],{"class":877},[593,919,920],{"class":603},"\"mcp\"",[593,922,923],{"class":877},"] }\n",[593,925,927],{"class":595,"line":926},4,[593,928,929],{"class":877},"  }\n",[593,931,933],{"class":595,"line":932},5,[593,934,935],{"class":877},"}\n",[510,937,938,939,699,941,944],{},"The CLI loads a new server only once you approve it. Until then,\n",[517,940,845],{},[517,942,943],{},"kraft: not loaded (needs approval)",". Approve it with:",[584,946,948],{"className":586,"code":947,"language":588,"meta":589,"style":589},"agent mcp enable kraft\n",[517,949,950],{"__ignoreMap":589},[593,951,952,954,956,959],{"class":595,"line":596},[593,953,575],{"class":599},[593,955,737],{"class":603},[593,957,958],{"class":603}," enable",[593,960,961],{"class":603}," kraft\n",[510,963,964],{},"The Cursor editor reads the same file.",[577,966,968,995],{"label":967},"OpenCode",[584,969,971],{"className":586,"code":970,"language":588,"meta":589,"style":589},"opencode mcp add --global kraft -- kraft admin mcp\n",[517,972,973],{"__ignoreMap":589},[593,974,975,978,980,982,985,987,989,991,993],{"class":595,"line":596},[593,976,977],{"class":599},"opencode",[593,979,737],{"class":603},[593,981,610],{"class":603},[593,983,984],{"class":745}," --global",[593,986,742],{"class":603},[593,988,746],{"class":745},[593,990,742],{"class":603},[593,992,751],{"class":603},[593,994,754],{"class":603},[510,996,997,1000,1001,1004,1005,699,1008,1011],{},[517,998,999],{},"--global"," writes your user config. Without it, the server goes into\n",[517,1002,1003],{},"opencode.json"," in the current directory, for that project only.\n",[517,1006,1007],{},"opencode mcp list",[517,1009,1010],{},"kraft connected"," once OpenCode can start it.",[577,1013,1015,1039,1065,1068,1088],{"label":1014},"Amp",[584,1016,1018],{"className":586,"code":1017,"language":588,"meta":589,"style":589},"amp mcp add kraft -- kraft admin mcp\n",[517,1019,1020],{"__ignoreMap":589},[593,1021,1022,1025,1027,1029,1031,1033,1035,1037],{"class":595,"line":596},[593,1023,1024],{"class":599},"amp",[593,1026,737],{"class":603},[593,1028,610],{"class":603},[593,1030,742],{"class":603},[593,1032,746],{"class":745},[593,1034,742],{"class":603},[593,1036,751],{"class":603},[593,1038,754],{"class":603},[510,1040,1041,1042,1045,1046,1049,1050,1053,1054,1057,1058,1061,1062,794],{},"This writes ",[517,1043,1044],{},"amp.mcpServers"," in ",[517,1047,1048],{},"~\u002F.config\u002Famp\u002Fsettings.json",". With\n",[517,1051,1052],{},"--workspace"," it writes the repo's ",[517,1055,1056],{},".amp\u002Fsettings.json"," instead, and Amp runs a\nworkspace server only after you approve it: ",[517,1059,1060],{},"amp mcp approve kraft",".\n",[517,1063,1064],{},"amp mcp list",[510,1066,1067],{},"Amp has no plugin route that carries an MCP server, but it installs the Kraft\nskills straight from the repo:",[584,1069,1071],{"className":586,"code":1070,"language":588,"meta":589,"style":589},"amp skill add itsOmidKarami\u002Fkraft\u002Fplugins\u002Fkraft\u002Fskills --global\n",[517,1072,1073],{"__ignoreMap":589},[593,1074,1075,1077,1080,1082,1085],{"class":595,"line":596},[593,1076,1024],{"class":599},[593,1078,1079],{"class":603}," skill",[593,1081,610],{"class":603},[593,1083,1084],{"class":603}," itsOmidKarami\u002Fkraft\u002Fplugins\u002Fkraft\u002Fskills",[593,1086,1087],{"class":745}," --global\n",[510,1089,1090,1092,1093,1096,1097,1100,1101,558],{},[517,1091,999],{}," copies them into ",[517,1094,1095],{},"~\u002F.config\u002Fagents\u002Fskills\u002F",". ",[517,1098,1099],{},"amp skill list"," shows\nthem. To update, run the same command with ",[517,1102,1103],{},"--overwrite",[577,1105,1107,1114,1196,1220,1222,1243],{"label":1106},"Antigravity",[510,1108,1109,1110,1113],{},"Antigravity's CLI (",[517,1111,1112],{},"agy",") imports a Claude Code plugin from a local directory,\nso clone the repo and import the plugin from it:",[584,1115,1117],{"className":586,"code":1116,"language":588,"meta":589,"style":589},"clone=$(mktemp -d)\ngit clone --depth 1 https:\u002F\u002Fgithub.com\u002FitsOmidKarami\u002Fkraft.git \"$clone\"\nagy plugin import \"$clone\u002Fplugins\u002Fkraft\"\nrm -rf \"$clone\"\n",[517,1118,1119,1140,1166,1182],{"__ignoreMap":589},[593,1120,1121,1124,1128,1131,1134,1137],{"class":595,"line":596},[593,1122,1123],{"class":877},"clone",[593,1125,1127],{"class":1126},"sklAV","=",[593,1129,1130],{"class":877},"$(",[593,1132,1133],{"class":599},"mktemp",[593,1135,1136],{"class":745}," -d",[593,1138,1139],{"class":877},")\n",[593,1141,1142,1145,1148,1151,1154,1157,1160,1163],{"class":595,"line":616},[593,1143,1144],{"class":599},"git",[593,1146,1147],{"class":603}," clone",[593,1149,1150],{"class":745}," --depth",[593,1152,1153],{"class":745}," 1",[593,1155,1156],{"class":603}," https:\u002F\u002Fgithub.com\u002FitsOmidKarami\u002Fkraft.git",[593,1158,1159],{"class":603}," \"",[593,1161,1162],{"class":877},"$clone",[593,1164,1165],{"class":603},"\"\n",[593,1167,1168,1170,1172,1175,1177,1179],{"class":595,"line":781},[593,1169,1112],{"class":599},[593,1171,604],{"class":603},[593,1173,1174],{"class":603}," import",[593,1176,1159],{"class":603},[593,1178,1162],{"class":877},[593,1180,1181],{"class":603},"\u002Fplugins\u002Fkraft\"\n",[593,1183,1184,1187,1190,1192,1194],{"class":595,"line":926},[593,1185,1186],{"class":599},"rm",[593,1188,1189],{"class":745}," -rf",[593,1191,1159],{"class":603},[593,1193,1162],{"class":877},[593,1195,1165],{"class":603},[510,1197,1198,1199,699,1202,1204,1205,1208,1209,1212,1213,1061,1216,1219],{},"The import copies the plugin, so the clone is not needed afterwards. It\nregisters Kraft's MCP server and adds\nthe Kraft skills; ",[517,1200,1201],{},"agy plugin list",[517,1203,547],{}," with ",[517,1206,1207],{},"skills"," and\n",[517,1210,1211],{},"mcpServers",". To update, clone again and run the import with ",[517,1214,1215],{},"--force",[517,1217,1218],{},"agy plugin uninstall kraft"," removes it.",[510,1221,725],{},[584,1223,1225],{"className":586,"code":1224,"language":588,"meta":589,"style":589},"agy mcp add kraft kraft admin mcp\n",[517,1226,1227],{"__ignoreMap":589},[593,1228,1229,1231,1233,1235,1237,1239,1241],{"class":595,"line":596},[593,1230,1112],{"class":599},[593,1232,737],{"class":603},[593,1234,610],{"class":603},[593,1236,742],{"class":603},[593,1238,742],{"class":603},[593,1240,751],{"class":603},[593,1242,754],{"class":603},[510,1244,1245,794],{},[517,1246,1247],{},"agy mcp list",[577,1249,1251,1258,1286],{"label":1250},"Gemini CLI",[510,1252,1253,1254,1257],{},"Gemini CLI needs an API key or Gemini Code Assist. With an individual Google\naccount, use the Antigravity tab instead. The\n",[525,1255,1256],{"href":395},"harness table"," says why.",[584,1259,1261],{"className":586,"code":1260,"language":588,"meta":589,"style":589},"gemini mcp add --scope user kraft kraft admin mcp\n",[517,1262,1263],{"__ignoreMap":589},[593,1264,1265,1268,1270,1272,1275,1278,1280,1282,1284],{"class":595,"line":596},[593,1266,1267],{"class":599},"gemini",[593,1269,737],{"class":603},[593,1271,610],{"class":603},[593,1273,1274],{"class":745}," --scope",[593,1276,1277],{"class":603}," user",[593,1279,742],{"class":603},[593,1281,742],{"class":603},[593,1283,751],{"class":603},[593,1285,754],{"class":603},[510,1287,1288,1291,1292,1295,1296,1299,1300,794],{},[517,1289,1290],{},"--scope user"," writes ",[517,1293,1294],{},"~\u002F.gemini\u002Fsettings.json",". Without it, Gemini CLI writes\nthe project's ",[517,1297,1298],{},".gemini\u002Fsettings.json",", and connects a project's servers only in\na folder you have trusted. ",[517,1301,1302],{},"gemini mcp list",[510,1304,1305,1306,1309,1310,1312,1313,1315],{},"Kraft's skills reach Claude Code, Codex, Cursor and Antigravity through the\nplugin, and Amp through ",[517,1307,1308],{},"amp skill add",". OpenCode and Gemini CLI get the MCP\nserver alone: ask for what you want in plain words (\"what is waiting on me in\nKraft?\") and the agent calls the ",[525,1311,462],{"href":463},". The ",[517,1314,547],{}," command gives a\nhook or an agent without MCP the same surface.",[534,1317,1319],{"id":1318},"connect-the-repo","Connect the repo",[510,1321,1322],{},"Kraft works on repos it has connected. In the repo's directory, run:",[584,1324,1326],{"className":586,"code":1325,"language":588,"meta":589,"style":589},"cd ~\u002Fcode\u002Fmy-project\nkraft repo connect\n",[517,1327,1328,1336],{"__ignoreMap":589},[593,1329,1330,1333],{"class":595,"line":596},[593,1331,1332],{"class":745},"cd",[593,1334,1335],{"class":603}," ~\u002Fcode\u002Fmy-project\n",[593,1337,1338,1340,1343],{"class":595,"line":616},[593,1339,547],{"class":599},[593,1341,1342],{"class":603}," repo",[593,1344,1345],{"class":603}," connect\n",[510,1347,1348],{},"It prints the repo's path, the branch Kraft reads, and the two commands it\nproposed, each with the file it came from:",[584,1350,1355],{"className":1351,"code":1353,"language":1354,"meta":589},[1352],"language-text","connected: \u002Fhome\u002Fyou\u002Fcode\u002Fmy-project\n  read from origin\u002Fmain, where work items start\ntest command: just test (from justfile recipe `test`)\nsetup command: uv sync (from uv.lock)\n","text",[517,1356,1357,1361,1365,1369],{"__ignoreMap":589},[593,1358,1360],{"className":1359},[595],"connected: \u002Fhome\u002Fyou\u002Fcode\u002Fmy-project\n",[593,1362,1364],{"className":1363},[595],"  read from origin\u002Fmain, where work items start\n",[593,1366,1368],{"className":1367},[595],"test command: just test (from justfile recipe `test`)\n",[593,1370,1372],{"className":1371},[595],"setup command: uv sync (from uv.lock)\n",[510,1374,1375,1376,1379,1380,1383,1384,1387],{},"After those, an ",[517,1377,1378],{},"also found"," or ",[517,1381,1382],{},"not installed here"," line appears where Kraft\nhas more to say. When it found no test command, a final ",[517,1385,1386],{},"saved disabled:"," line\nsays how to enable the repo.",[510,1389,1390,1391,1394],{},"Where the skills are installed, ",[517,1392,1393],{},"\u002Fkraft:onboard"," in a session of that agent\ndoes the same and then checks the two commands. Run it before the first work\nitem starts: the commands Kraft proposed are saved unconfirmed, and an item\nthat runs against wrong ones stops.",[534,1396,1398],{"id":1397},"check-it-worked","Check it worked",[1400,1401,1402,1411,1423],"ol",{},[542,1403,1404,1405,1407,1408,1410],{},"The list command in your agent's tab shows ",[517,1406,547],{}," (Cursor's plugin shows in\n",[517,1409,837],{},", as its tab says).",[542,1412,1413,1414,1417,1418,1422],{},"In a new session of that agent, ask: \"what is waiting on me in Kraft?\" The\nagent answers from the board: your items, or that nothing is waiting. Where\nthe skills are installed, ",[517,1415,1416],{},"\u002Fkraft:board"," lists the ",[525,1419,1421],{"href":1420},"\u002Fconcepts\u002Fvocabulary#work-item","work items"," of every\nconnected repo, not only the one you are in.",[542,1424,1425,1426,1429,1430,1433],{},"For Claude Code, ",[517,1427,1428],{},"kraft admin doctor"," has an ",[517,1431,1432],{},"mcp server"," row. It passes once\nKraft is registered, and names the permission tool Claude workers use. The\nrow checks Claude Code's registration only, not Codex, Cursor, OpenCode, Amp,\nAntigravity or Gemini CLI. For those, use the list command in the agent's\ntab.",[510,1435,1436,1437,1440,1441,1443,1444,1446,1447,1449],{},"If the agent cannot reach Kraft, check that the server is running\n(",[517,1438,1439],{},"kraft admin health",") and that ",[517,1442,547],{}," is on the ",[517,1445,551],{}," of the shell the agent\nstarts. ",[525,1448,188],{"href":189}," lists the rest.",[534,1451,658],{"id":1452},"set-up-without-the-plugin",[510,1454,1455,1456,1458],{},"Use this when you want plain files instead of a managed plugin. For Claude Code\nwithout the plugin, this step is required: without a registered ",[517,1457,547],{}," MCP\nserver, Kraft refuses to launch a Claude worker.",[510,1460,1461],{},"For Claude Code, run one of:",[584,1463,1465],{"className":586,"code":1464,"language":588,"meta":589,"style":589},"kraft admin init\nkraft admin init --repo\n",[517,1466,1467,1476],{"__ignoreMap":589},[593,1468,1469,1471,1473],{"class":595,"line":596},[593,1470,547],{"class":599},[593,1472,751],{"class":603},[593,1474,1475],{"class":603}," init\n",[593,1477,1478,1480,1482,1485],{"class":595,"line":616},[593,1479,547],{"class":599},[593,1481,751],{"class":603},[593,1483,1484],{"class":603}," init",[593,1486,1487],{"class":745}," --repo\n",[539,1489,1490,1504],{},[542,1491,1492,1493,1496,1497,1500,1501,1503],{},"The first registers Kraft with Claude Code for your user, so it covers every\nrepo you open (",[517,1494,1495],{},"claude mcp add --scope user kraft -- kraft admin mcp",") and writes the skills\nto ",[517,1498,1499],{},"~\u002F.claude\u002Fskills\u002Fkraft\u002F",". It needs the ",[517,1502,600],{}," command; without it, it\nprints that command for you to run.",[542,1505,1506,1507,1208,1510,1513,1514,1516],{},"The second covers this repo only. It writes a ",[517,1508,1509],{},".mcp.json",[517,1511,1512],{},".claude\u002Fskills\u002Fkraft\u002F"," into the current repo, where other tools can read them too. Commit the ",[517,1515,1509],{},": each work\nitem runs in a fresh checkout of the repo, and an uncommitted file is not in it.",[510,1518,1519,1520,1522],{},"Either way you get the same ",[517,1521,635],{}," commands. To remove them, delete the\nskills directory.",[510,1524,1525,1527,1528,1531,1532,1534],{},[517,1526,640],{}," registers Kraft with Claude Code only. For another agent, use\nits tab in ",[525,1529,568],{"href":1530},"#register-kraft-with-your-agent",".\nAn agent not listed there needs an MCP server that runs the command\n",[517,1533,519],{}," over stdio.",[1536,1537,1539],"h3",{"id":1538},"refresh-the-skills","Refresh the skills",[510,1541,1542,1543,1546,1547,1549],{},"The user-scope form fails on a second run. ",[517,1544,1545],{},"claude mcp add"," refuses a name that\nis already registered, so ",[517,1548,640],{}," prints \"could not register\" and\nwrites no skills. The same happens when you run the command it printed first.\nTo refresh the skills after upgrading Kraft, or to write them after running the\nprinted command, remove the registration and run it again:",[584,1551,1553],{"className":586,"code":1552,"language":588,"meta":589,"style":589},"claude mcp remove --scope user kraft\nkraft admin init\n",[517,1554,1555,1570],{"__ignoreMap":589},[593,1556,1557,1559,1561,1564,1566,1568],{"class":595,"line":596},[593,1558,600],{"class":599},[593,1560,737],{"class":603},[593,1562,1563],{"class":603}," remove",[593,1565,1274],{"class":745},[593,1567,1277],{"class":603},[593,1569,961],{"class":603},[593,1571,1572,1574,1576],{"class":595,"line":616},[593,1573,547],{"class":599},[593,1575,751],{"class":603},[593,1577,1475],{"class":603},[510,1579,1580,1583,1584,1586,1587,1589],{},[517,1581,1582],{},"kraft admin init --repo"," registers nothing with ",[517,1585,600],{},", so you can re-run it\nas often as you like. The plugin route has no such step: ",[517,1588,646],{}," refreshes its skills.",[534,1591,1593],{"id":1592},"the-skills","The skills",[510,1595,1596,1597,1599,1600,558],{},"Claude Code runs these as slash commands. In Codex they have the same names\nwithout the slash (",[517,1598,709],{},"), picked with ",[517,1601,717],{},[1603,1604,1605,1618],"table",{},[1606,1607,1608],"thead",{},[1609,1610,1611,1615],"tr",{},[1612,1613,1614],"th",{},"Skill",[1612,1616,1617],{},"Use it to",[1619,1620,1621,1631,1640,1650,1660,1670,1680,1690,1700,1710,1720],"tbody",{},[1609,1622,1623,1628],{},[1624,1625,1626],"td",{},[517,1627,1393],{},[1624,1629,1630],{},"Connect the repo you are in and check its setup and test commands.",[1609,1632,1633,1637],{},[1624,1634,1635],{},[517,1636,1416],{},[1624,1638,1639],{},"See what is running, blocked, or waiting on a person, or search specs and plans.",[1609,1641,1642,1647],{},[1624,1643,1644],{},[517,1645,1646],{},"\u002Fkraft:prepare",[1624,1648,1649],{},"Write a spec (and a plan, if you ask), then decide whether the work runs in this session or in Kraft.",[1609,1651,1652,1657],{},[1624,1653,1654],{},[517,1655,1656],{},"\u002Fkraft:handoff",[1624,1658,1659],{},"File work with Kraft, with any agreed spec and plan attached.",[1609,1661,1662,1667],{},[1624,1663,1664],{},[517,1665,1666],{},"\u002Fkraft:status",[1624,1668,1669],{},"Report where a work item has reached, or watch it until it ends.",[1609,1671,1672,1677],{},[1624,1673,1674],{},[517,1675,1676],{},"\u002Fkraft:gates",[1624,1678,1679],{},"Approve or reject the gate a work item is waiting on, leave review threads and submit a review, or pause and resume it.",[1609,1681,1682,1687],{},[1624,1683,1684],{},[517,1685,1686],{},"\u002Fkraft:review",[1624,1688,1689],{},"Read what a gate is about and recommend approve or reject, with reasons. Reasons tied to specific lines become review threads. It acts only after you answer.",[1609,1691,1692,1697],{},[1624,1693,1694],{},[517,1695,1696],{},"\u002Fkraft:steer",[1624,1698,1699],{},"Redirect a work item that is heading the wrong way.",[1609,1701,1702,1707],{},[1624,1703,1704],{},[517,1705,1706],{},"\u002Fkraft:triage",[1624,1708,1709],{},"Find out why a work item stopped, and retry it, raise a cap, or hand it to you.",[1609,1711,1712,1717],{},[1624,1713,1714],{},[517,1715,1716],{},"\u002Fkraft:check",[1624,1718,1719],{},"Report where a repo's Kraft config has drifted from this Kraft version.",[1609,1721,1722,1727],{},[1624,1723,1724],{},[517,1725,1726],{},"\u002Fkraft:doctor",[1624,1728,1729],{},"Diagnose an unhealthy Kraft server and fix what it can.",[1536,1731,1733],{"id":1732},"example-hand-work-to-kraft","Example: hand work to Kraft",[510,1735,1736,1737,1739],{},"Say you and your agent have settled what to build, and you want Kraft to build\nit. Ask for ",[517,1738,1656],{},", with the work in your own words:",[1400,1741,1742,1748,1755,1762],{},[542,1743,1744,1745,1747],{},"The skill connects the repo if Kraft has not seen it. If it newly connected\nit, it tells you and runs ",[517,1746,1393],{}," before the item can start.",[542,1749,1750,1751,1754],{},"It files the work with ",[517,1752,1753],{},"create_work_item",", putting your intent in the\ndescription, which is the brief the spec node writes its design from. A spec\nand a plan you already wrote are attached, and the item skips the node and\ngate each one satisfies.",[542,1756,1757,1758,1761],{},"It reads the board back (",[517,1759,1760],{},"kraft view list --status=paused",") to check the item\nis there under the title you gave.",[542,1763,1764,1765,1769,1770,1775,1776,1778],{},"It reports the work as filed, not running: the item is paused under ",[1766,1767,1768],"strong",{},"Not\nstarted",", and nothing spends tokens until you start it. Click its row, then\n",[525,1771,1772],{"href":237},[1766,1773,1774],{},"Start"," in the side panel or on the item's\nown page, or ask your agent to resume it (",[517,1777,1676],{},").",[1536,1780,1782],{"id":1781},"what-an-agent-is-refused","What an agent is refused",[510,1784,1785,1786,1789],{},"The MCP tools have no autostart option, and the server refuses\n",[517,1787,1788],{},"kraft item create --autostart"," from a session Kraft started or a request tagged\nas the MCP client. It cannot tell a coding agent that runs the command in your\nown shell from you, so that call starts the item.",[510,1791,1792,1793,1797],{},"A worker is refused every item verb on its own work item (approve, reject,\npause, resume, skip, abandon, retry, complete, cancel and escalate), and any\nchange to its attachments, overrides or ",[525,1794,1796],{"href":1795},"\u002Fconcepts\u002Fvocabulary#policy","policy",", because a gate is where a\nperson decides.",[510,1799,1800,1801,1805,1806,1810],{},"These are checks on the\nclient and on the API, and none is a boundary against a worker that is not\nsandboxed. ",[525,1802,1804],{"href":1803},"\u002Freference\u002Fmcp-tools#who-may-call-what","Who may call what"," lists\nevery refusal, and ",[525,1807,1809],{"href":1808},"\u002Fproject\u002Fsecurity#agents-and-gates","Agents and gates"," says\nwhat each one does and does not stop.",[534,1812,1814],{"id":1813},"next-steps","Next steps",[539,1816,1817,1822,1827,1832],{},[542,1818,1819,1821],{},[525,1820,76],{"href":77},": the comment, approve and request-changes outcomes your agent can send for you.",[542,1823,1824,1826],{},[525,1825,119],{"href":120},": run a chain's tasks on Codex or another CLI.",[542,1828,1829,1831],{},[525,1830,84],{"href":85},": clear gates from the editor instead of the agent.",[542,1833,1834,1836],{},[525,1835,184],{"href":185},": run a chain inside one agent session, with no server and no MCP server.",[1838,1839,1840],"style",{},"html pre.shiki code .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}html pre.shiki code .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}",{"title":589,"searchDepth":616,"depth":616,"links":1842},[1843,1844,1845,1846,1847,1850,1854],{"id":536,"depth":616,"text":537},{"id":567,"depth":616,"text":568},{"id":1318,"depth":616,"text":1319},{"id":1397,"depth":616,"text":1398},{"id":1452,"depth":616,"text":658,"children":1848},[1849],{"id":1538,"depth":781,"text":1539},{"id":1592,"depth":616,"text":1593,"children":1851},[1852,1853],{"id":1732,"depth":781,"text":1733},{"id":1781,"depth":781,"text":1782},{"id":1813,"depth":616,"text":1814},"Register Kraft with Claude Code, Codex, Cursor, OpenCode, Amp, Antigravity or Gemini CLI, then drive it from that agent.","md",null,{},true,{"title":72,"description":1855},"g8bb7yV9sWbBF5D_dw1zfz-wgcXQxrr2bA-Q370mrUk",[1863,1865],{"title":68,"path":69,"stem":70,"description":1864,"children":-1},"File a work item from the board's composer, or from the full new-item page, and choose its chain and documents.",{"title":76,"path":77,"stem":78,"description":1866,"children":-1},"Approve or reject the gate a Kraft work item waits at, or comment on the change at any point in its life, in the web UI or from the CLI.",1791801238368]