[{"data":1,"prerenderedAt":1188},["ShallowReactive",2],{"navigation_docs":3,"-reference-configuration-library-and-chains":504,"-reference-configuration-library-and-chains-surround":1183},[4,28,51,187,214,469],{"title":5,"path":6,"stem":7,"children":8},"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},"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},"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},"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},"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},"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},"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},"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},"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},"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},"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},"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},"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},"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":314,"body":506,"description":1176,"extension":1177,"links":1178,"meta":1179,"navigation":1180,"path":315,"seo":1181,"stem":316,"__hash__":1182},"docs\u002F5.reference\u002F03.configuration\u002F04.library-and-chains.md",{"type":507,"value":508,"toc":1165},"minimark",[509,525,532,541,680,790,795,822,910,916,920,939,996,1061,1065,1091,1097,1126,1137,1140,1144,1161],[510,511,512,516,517,520,521,524],"p",{},[513,514,515],"code",{},"library.yaml"," defines reusable components, and each ",[513,518,519],{},"chains\u002F*.yaml"," file composes them into a chain template. ",[522,523,376],"a",{"href":377}," defines every key a chain or a library component takes; this page maps the files.",[526,527,529,531],"h2",{"id":528},"libraryyaml-reusable-components",[513,530,515],{},": reusable components",[510,533,534,536,537,540],{},[513,535,515],{}," has four sections. Each maps a name to a definition, which any chain takes with ",[513,538,539],{},"extends: \u003Cname>",".",[542,543,549],"pre",{"className":544,"code":545,"filename":546,"language":547,"meta":548,"style":548},"language-yaml shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","tasks:\n  implementer:\n    kind: agent\n    harness: claude\n    profile: strong\n    prompt: Implement the approved plan.\n  code_review:\n    kind: agent\n    harness: claude\n    prompt: Review this work item's change for defects its passing tests do not catch.\n    skill: kraft:code-review\n    inputs: [review_package]\n","config\u002Flibrary.yaml","yaml","",[513,550,551,564,572,585,596,607,618,626,635,644,654,665],{"__ignoreMap":548},[552,553,556,560],"span",{"class":554,"line":555},"line",1,[552,557,559],{"class":558},"sb7M8","tasks",[552,561,563],{"class":562},"s7iLA",":\n",[552,565,567,570],{"class":554,"line":566},2,[552,568,569],{"class":558},"  implementer",[552,571,563],{"class":562},[552,573,575,578,581],{"class":554,"line":574},3,[552,576,577],{"class":558},"    kind",[552,579,580],{"class":562},": ",[552,582,584],{"class":583},"semJd","agent\n",[552,586,588,591,593],{"class":554,"line":587},4,[552,589,590],{"class":558},"    harness",[552,592,580],{"class":562},[552,594,595],{"class":583},"claude\n",[552,597,599,602,604],{"class":554,"line":598},5,[552,600,601],{"class":558},"    profile",[552,603,580],{"class":562},[552,605,606],{"class":583},"strong\n",[552,608,610,613,615],{"class":554,"line":609},6,[552,611,612],{"class":558},"    prompt",[552,614,580],{"class":562},[552,616,617],{"class":583},"Implement the approved plan.\n",[552,619,621,624],{"class":554,"line":620},7,[552,622,623],{"class":558},"  code_review",[552,625,563],{"class":562},[552,627,629,631,633],{"class":554,"line":628},8,[552,630,577],{"class":558},[552,632,580],{"class":562},[552,634,584],{"class":583},[552,636,638,640,642],{"class":554,"line":637},9,[552,639,590],{"class":558},[552,641,580],{"class":562},[552,643,595],{"class":583},[552,645,647,649,651],{"class":554,"line":646},10,[552,648,612],{"class":558},[552,650,580],{"class":562},[552,652,653],{"class":583},"Review this work item's change for defects its passing tests do not catch.\n",[552,655,657,660,662],{"class":554,"line":656},11,[552,658,659],{"class":558},"    skill",[552,661,580],{"class":562},[552,663,664],{"class":583},"kraft:code-review\n",[552,666,668,671,674,677],{"class":554,"line":667},12,[552,669,670],{"class":558},"    inputs",[552,672,673],{"class":562},": [",[552,675,676],{"class":583},"review_package",[552,678,679],{"class":562},"]\n",[681,682,683,696],"table",{},[684,685,686],"thead",{},[687,688,689,693],"tr",{},[690,691,692],"th",{},"Section",[690,694,695],{},"Holds",[697,698,699,722,741,761],"tbody",{},[687,700,701,706],{},[702,703,704],"td",{},[513,705,559],{},[702,707,708,709,712,713,712,716,712,719,540],{},"Reusable tasks of any kind: ",[513,710,711],{},"agent",", ",[513,714,715],{},"subprocess",[513,717,718],{},"builtin",[513,720,721],{},"forge",[687,723,724,729],{},[702,725,726],{},[513,727,728],{},"steps",[702,730,731,732,735,736,740],{},"Reusable ordered groups of tasks. A step may set ",[513,733,734],{},"read_only: true"," (",[522,737,739],{"href":738},"\u002Freference\u002Fchain-nodes#read_only","read_only",").",[687,742,743,748],{},[702,744,745],{},[513,746,747],{},"nodes",[702,749,750,751,712,754,757,758,540],{},"Reusable nodes, with their own steps, ",[513,752,753],{},"on_failure",[513,755,756],{},"fix_loop"," and ",[513,759,760],{},"escalation",[687,762,763,768],{},[702,764,765],{},[513,766,767],{},"steering",[702,769,770,771,775,776,779,780,783,784,786,787,540],{},"Named guidance (a ",[522,772,774],{"href":773},"\u002Fconcepts\u002Fvocabulary#steering-profile","steering profile","), ",[513,777,778],{},"{instructions: \"...\"}",", that an agent task selects with ",[513,781,782],{},"steering: [name]"," and a repository selects with its ",[513,785,292],{}," ",[513,788,789],{},"steering:",[791,792,794],"h3",{"id":793},"keys-of-a-library-task","Keys of a library task",[510,796,797,798,712,801,712,803,712,805,712,808,757,811,814,815,817,818,740],{},"Every kind takes ",[513,799,800],{},"scope",[513,802,767],{},[513,804,753],{},[513,806,807],{},"policy",[513,809,810],{},"skippable",[513,812,813],{},"icon",". Then each kind takes its own keys. A library step or node may set an ",[513,816,813],{}," too (",[522,819,821],{"href":820},"\u002Freference\u002Fchain-nodes#icons","Icons",[681,823,824,834],{},[684,825,826],{},[687,827,828,831],{},[690,829,830],{},"Kind",[690,832,833],{},"Its own keys",[697,835,836,871,882,896],{},[687,837,838,842],{},[702,839,840],{},[513,841,711],{},[702,843,844,712,847,712,850,712,853,712,856,712,859,712,862,712,865,712,868],{},[513,845,846],{},"harness",[513,848,849],{},"prompt",[513,851,852],{},"skill",[513,854,855],{},"produces",[513,857,858],{},"profile",[513,860,861],{},"model",[513,863,864],{},"effort",[513,866,867],{},"fallback",[513,869,870],{},"inputs",[687,872,873,877],{},[702,874,875],{},[513,876,715],{},[702,878,879],{},[513,880,881],{},"command",[687,883,884,888],{},[702,885,886],{},[513,887,718],{},[702,889,890,712,893],{},[513,891,892],{},"ref",[513,894,895],{},"execution",[687,897,898,902],{},[702,899,900],{},[513,901,721],{},[702,903,904,712,907],{},[513,905,906],{},"target",[513,908,909],{},"wait",[510,911,912,915],{},[522,913,376],{"href":914},"\u002Freference\u002Fchain-nodes#task-keys"," defines each key.",[791,917,919],{"id":918},"extending-a-library-step","Extending a library step",[510,921,922,923,926,927,930,931,934,935,540],{},"A chain step extends a library step inside a node's ",[513,924,925],{},"steps:",". The chain step names its own ",[513,928,929],{},"id",". Its tasks come from the library step unless it sets ",[513,932,933],{},"tasks:"," of its own, which replace them. A component extends one parent of its own kind; the rest of the rule is in ",[522,936,938],{"href":937},"\u002Freference\u002Fchain-nodes#the-library-and-extends","The library and extends",[542,940,942],{"className":544,"code":941,"filename":546,"language":547,"meta":548,"style":548},"steps:\n  checks:\n    tasks:\n      - id: lint\n        kind: subprocess\n        command: just lint\n",[513,943,944,950,957,964,976,986],{"__ignoreMap":548},[552,945,946,948],{"class":554,"line":555},[552,947,728],{"class":558},[552,949,563],{"class":562},[552,951,952,955],{"class":554,"line":566},[552,953,954],{"class":558},"  checks",[552,956,563],{"class":562},[552,958,959,962],{"class":554,"line":574},[552,960,961],{"class":558},"    tasks",[552,963,563],{"class":562},[552,965,966,969,971,973],{"class":554,"line":587},[552,967,968],{"class":562},"      - ",[552,970,929],{"class":558},[552,972,580],{"class":562},[552,974,975],{"class":583},"lint\n",[552,977,978,981,983],{"class":554,"line":598},[552,979,980],{"class":558},"        kind",[552,982,580],{"class":562},[552,984,985],{"class":583},"subprocess\n",[552,987,988,991,993],{"class":554,"line":609},[552,989,990],{"class":558},"        command",[552,992,580],{"class":562},[552,994,995],{"class":583},"just lint\n",[542,997,1000],{"className":544,"code":998,"filename":999,"language":547,"meta":548,"style":548},"nodes:\n  - id: verify\n    kind: exec\n    steps:\n      - id: checks\n        extends: checks   # runs verify.checks.lint\n","config\u002Fchains\u002Fmine.yaml",[513,1001,1002,1008,1020,1029,1036,1047],{"__ignoreMap":548},[552,1003,1004,1006],{"class":554,"line":555},[552,1005,747],{"class":558},[552,1007,563],{"class":562},[552,1009,1010,1013,1015,1017],{"class":554,"line":566},[552,1011,1012],{"class":562},"  - ",[552,1014,929],{"class":558},[552,1016,580],{"class":562},[552,1018,1019],{"class":583},"verify\n",[552,1021,1022,1024,1026],{"class":554,"line":574},[552,1023,577],{"class":558},[552,1025,580],{"class":562},[552,1027,1028],{"class":583},"exec\n",[552,1030,1031,1034],{"class":554,"line":587},[552,1032,1033],{"class":558},"    steps",[552,1035,563],{"class":562},[552,1037,1038,1040,1042,1044],{"class":554,"line":598},[552,1039,968],{"class":562},[552,1041,929],{"class":558},[552,1043,580],{"class":562},[552,1045,1046],{"class":583},"checks\n",[552,1048,1049,1052,1054,1057],{"class":554,"line":609},[552,1050,1051],{"class":558},"        extends",[552,1053,580],{"class":562},[552,1055,1056],{"class":583},"checks",[552,1058,1060],{"class":1059},"sq92B","   # runs verify.checks.lint\n",[791,1062,1064],{"id":1063},"inspect-and-edit-the-library","Inspect and edit the library",[1066,1067,1068,1082,1088],"ul",{},[1069,1070,1071,1074,1075,735,1078,1081],"li",{},[513,1072,1073],{},"kraft admin templates library"," lists every component as ",[513,1076,1077],{},"\u003Csection>.\u003Cname>",[513,1079,1080],{},"tasks.implementer",") with the chains that use it.",[1069,1083,1084,1087],{},[513,1085,1086],{},"kraft admin templates library ID"," shows one component with its definition and any lint issue that names it.",[1069,1089,1090],{},"Templates › Library shows the same and edits the file. Kraft refuses a save that would break any chain that loads today, and writes nothing.",[526,1092,1094,1096],{"id":1093},"chainsyaml-chain-templates",[513,1095,519],{},": chain templates",[510,1098,1099,1100,1103,1104,1106,1107,1110,1111,1114,1115,1118,1119,757,1122,1125],{},"Each file in ",[513,1101,1102],{},"chains\u002F"," is one selectable chain, named by its ",[513,1105,929],{}," (or the file name), with an optional one-line ",[513,1108,1109],{},"description",". The keys are in ",[522,1112,376],{"href":1113},"\u002Freference\u002Fchain-nodes#chain-keys",". ",[522,1116,29],{"href":1117},"\u002Fconcepts\u002Fvocabulary#chain"," walks through the shipped ",[513,1120,1121],{},"default",[513,1123,1124],{},"quick-task"," chains as worked examples.",[1066,1127,1128,1134],{},[1069,1129,1130,1133],{},[513,1131,1132],{},"kraft admin templates show ID --resolved"," prints a chain with its library components expanded.",[1069,1135,1136],{},"Templates › Chains edits the file itself.",[510,1138,1139],{},"Kraft never overwrites these files on upgrade.",[526,1141,1143],{"id":1142},"related","Related",[1066,1145,1146,1151,1156],{},[1069,1147,1148,1150],{},[522,1149,102],{"href":103},": add a node with a command task, a fix loop and a judge.",[1069,1152,1153,1155],{},[522,1154,168],{"href":169},": take what a new release ships.",[1069,1157,1158,1160],{},[522,1159,376],{"href":377},": every key of a node, step and task.",[1162,1163,1164],"style",{},"html pre.shiki code .sb7M8, html code.shiki .sb7M8{--shiki-light:#024C1A;--shiki-default:#024C1A;--shiki-dark:#72F088}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}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 .sq92B, html code.shiki .sq92B{--shiki-light:#66707B;--shiki-default:#66707B;--shiki-dark:#BDC4CC}",{"title":548,"searchDepth":566,"depth":566,"links":1166},[1167,1173,1175],{"id":528,"depth":566,"text":1168,"children":1169},"library.​yaml: reusable components",[1170,1171,1172],{"id":793,"depth":574,"text":794},{"id":918,"depth":574,"text":919},{"id":1063,"depth":574,"text":1064},{"id":1093,"depth":566,"text":1174},"chains\u002F​*.​yaml: chain templates",{"id":1142,"depth":566,"text":1143},"The sections of library.yaml, the keys a library task takes for each kind, and how chains\u002F*.yaml files compose them into chain templates.","md",null,{},true,{"title":314,"description":1176},"NMXQPFNmSbF-2URPq4jQ6kDCxxP06qlBmwKZWcmo5gk",[1184,1186],{"title":310,"path":311,"stem":312,"description":1185,"children":-1},"Every field in policy.yaml: caps, budget, concurrency, archiving, defaults and maxima, and the policy fields a layer may set.",{"title":318,"path":319,"stem":320,"description":1187,"children":-1},"Every field in harnesses.yaml: the harnesses section (harness profiles) and the profiles section (agent profiles).",1791801256225]