[{"data":1,"prerenderedAt":1320},["ShallowReactive",2],{"navigation":3,"/ai/workflow-integration":458,"/ai/workflow-integration-surround":1315},[4,58,91,178,194,201,249,295,315,371,435,449],{"title":5,"path":6,"stem":7,"children":8,"icon":57},"MacOS","/macos","01.macos/01.index",[9,12,17,22,27,32,37,42,47,52],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Recommended Software","/macos/recommended-software","01.macos/02.recommended-software","i-lucide-laptop",{"title":18,"path":19,"stem":20,"icon":21},"Development Applications and Tools","/macos/development-tools","01.macos/03.development-tools","i-lucide-folder-code",{"title":23,"path":24,"stem":25,"icon":26},"Command Line Interface","/macos/cli-tools","01.macos/04.cli-tools","i-lucide-terminal",{"title":28,"path":29,"stem":30,"icon":31},"ZSH Configuration","/macos/zshrc","01.macos/05.zshrc","i-simple-icons-zsh",{"title":33,"path":34,"stem":35,"icon":36},"Uninstall Python","/macos/uninstall-python","01.macos/06.uninstall-python","i-simple-icons-python",{"title":38,"path":39,"stem":40,"icon":41},"Mac Mini Server Setup","/macos/mac-mini-server","01.macos/07.mac-mini-server","i-lucide-server",{"title":43,"path":44,"stem":45,"icon":46},"Image to 3D Model","/macos/image-to-3d","01.macos/08.image-to-3d","i-lucide-rotate-3d",{"title":48,"path":49,"stem":50,"icon":51},"NSVisualEffectView","/macos/material-view","01.macos/09.material-view","i-lucide-layers",{"title":53,"path":54,"stem":55,"icon":56},"SSH","/macos/ssh","01.macos/10.ssh","i-lucide-key-round","i-simple-icons-macos",{"title":59,"path":60,"stem":61,"children":62,"icon":90},"Windows","/windows","02.windows/01.index",[63,64,67,70,75,80,85],{"title":10,"path":60,"stem":61,"icon":11},{"title":13,"path":65,"stem":66,"icon":21},"/windows/recommended-software","02.windows/02.recommended-software",{"title":23,"path":68,"stem":69,"icon":26},"/windows/cli-tools","02.windows/03.cli-tools",{"title":71,"path":72,"stem":73,"icon":74},"Miscellaneous Tips","/windows/miscellaneous-tips","02.windows/04.miscellaneous-tips","i-lucide-lightbulb",{"title":76,"path":77,"stem":78,"icon":79},"Keyboard Shortcuts","/windows/keyboard-shortcuts","02.windows/05.keyboard-shortcuts","i-lucide-keyboard",{"title":81,"path":82,"stem":83,"icon":84},"WSL - Arch Linux","/windows/wsl-arch-linux","02.windows/06.wsl-arch-linux","i-simple-icons-archlinux",{"title":86,"path":87,"stem":88,"icon":89},"VirtualBox on Windows","/windows/virtualbox","02.windows/07.virtualbox","i-simple-icons-virtualbox","i-simple-icons-windows",{"title":92,"path":93,"stem":94,"children":95,"icon":177},"Rust","/rust","03.rust/01.index",[96,98,103,108,113,118,123,128,132,136,140,144,148,152,156,161,165,169,173],{"title":97,"path":93,"stem":94,"icon":26},"Installation",{"title":99,"path":100,"stem":101,"icon":102},"Continuous Integration","/rust/ci","03.rust/02.ci","i-lucide-workflow",{"title":104,"path":105,"stem":106,"icon":107},"Benchmarking with Criterion","/rust/benchmarking","03.rust/03.benchmarking","i-lucide-timer",{"title":109,"path":110,"stem":111,"icon":112},"Publishing Crates","/rust/publishing-crates","03.rust/04.publishing-crates","i-lucide-package",{"title":114,"path":115,"stem":116,"icon":117},"Multi-Crate Dependency Management","/rust/multi-crate-dependencies","03.rust/05.multi-crate-dependencies","i-lucide-git-branch",{"title":119,"path":120,"stem":121,"icon":122},"Just Task Runner","/rust/just-task-runner","03.rust/06.just-task-runner","i-lucide-play",{"title":124,"path":125,"stem":126,"icon":127},"Error Handling Patterns","/rust/error-handling","03.rust/07.error-handling","i-lucide-alert-triangle",{"title":129,"path":130,"stem":131},"Mutation Testing","/rust/mutation-testing","03.rust/08.mutation-testing",{"title":133,"path":134,"stem":135},"Semver Compliance with cargo-semver-checks","/rust/semver-checks","03.rust/09.semver-checks",{"title":137,"path":138,"stem":139},"Property-Based Testing","/rust/property-testing","03.rust/10.property-testing",{"title":141,"path":142,"stem":143},"Workspace Automation","/rust/workspace-automation","03.rust/11.workspace-automation",{"title":145,"path":146,"stem":147},"Type-Safe Units","/rust/type-safe-units","03.rust/12.type-safe-units",{"title":149,"path":150,"stem":151},"Faster Testing with nextest","/rust/nextest","03.rust/13.nextest",{"title":153,"path":154,"stem":155},"Cross-Crate Validation Testing","/rust/cross-crate-validation","03.rust/14.cross-crate-validation",{"title":157,"path":158,"stem":159,"icon":160},"Defensive API Design","/rust/defensive-api-design","03.rust/15.defensive-api-design","i-lucide-shield",{"title":162,"path":163,"stem":164},"Structured Logging with tracing","/rust/tracing","03.rust/16.tracing",{"title":166,"path":167,"stem":168},"Feature Flags & Conditional Compilation","/rust/feature-flags","03.rust/17.feature-flags",{"title":170,"path":171,"stem":172},"Debugging Rust","/rust/debugging","03.rust/18.debugging",{"title":174,"path":175,"stem":176},"Production-Ready Rust CLI Workflow","/rust/production-cli-workflow","03.rust/18.production-cli-workflow","i-simple-icons-rust",{"title":179,"path":180,"stem":181,"children":182,"icon":36},"Python","/python","04.python/01.index",[183,184,189],{"title":97,"path":180,"stem":181,"icon":26},{"title":185,"path":186,"stem":187,"icon":188},"Optionally Callable Decorators","/python/decorators","04.python/02.decorators","i-lucide-at-sign",{"title":190,"path":191,"stem":192,"icon":193},"Pre-commit, with uv","/python/pre-commit","04.python/03.pre-commit","i-simple-icons-precommit",{"title":195,"path":196,"stem":197,"children":198,"icon":200},"Go","/go","05.go/01.index",[199],{"title":97,"path":196,"stem":197,"icon":26},"i-simple-icons-go",{"title":202,"path":203,"stem":204,"children":205,"icon":248},"Web Design","/webdesign","06.webdesign/01.index",[206,209,214,219,224,229,234,239,244],{"title":207,"path":203,"stem":204,"icon":208},"Icons","i-simple-icons-lucide",{"title":210,"path":211,"stem":212,"icon":213},"CSS","/webdesign/css","06.webdesign/02.css","i-simple-icons-css",{"title":215,"path":216,"stem":217,"icon":218},"Captive Portals","/webdesign/captive-portals","06.webdesign/03.captive-portals","i-lucide-wifi",{"title":220,"path":221,"stem":222,"icon":223},"URL Pattern API","/webdesign/url-pattern","06.webdesign/04.url-pattern","i-lucide-link",{"title":225,"path":226,"stem":227,"icon":228},"Hidden Until Found","/webdesign/hidden-until-found","06.webdesign/05.hidden-until-found","i-lucide-search",{"title":230,"path":231,"stem":232,"icon":233},"Login Patterns","/webdesign/login-patterns","06.webdesign/06.login-patterns","i-lucide-log-in",{"title":235,"path":236,"stem":237,"icon":238},"Typography","/webdesign/typography","06.webdesign/07.typography","i-lucide-type",{"title":240,"path":241,"stem":242,"icon":243},"UI Details","/webdesign/ui-details","06.webdesign/08.ui-details","i-lucide-sparkles",{"title":245,"path":246,"stem":247},"Draftboard","/webdesign/draftboard","06.webdesign/09.draftboard","i-lucide-arrow-down-up",{"title":250,"icon":251,"path":252,"stem":253,"children":254,"page":294},"Health","i-lucide-heart-pulse","/health","07.health",[255,260,265,270,275,280,285,290],{"title":256,"path":257,"stem":258,"icon":259},"ADHD and Sleep Cycles","/health/adhd-sleep","07.health/02.adhd-sleep","i-lucide-moon",{"title":261,"path":262,"stem":263,"icon":264},"Daily Health Habits","/health/daily-health-habits","07.health/03.daily-health-habits","i-lucide-list-checks",{"title":266,"path":267,"stem":268,"icon":269},"Calm Down Posture","/health/calm-down-posture","07.health/04.calm-down-posture","i-lucide-bed",{"title":271,"path":272,"stem":273,"icon":274},"Mood Switch on Your Face","/health/mood-face","07.health/05.mood-face","i-lucide-smile",{"title":276,"path":277,"stem":278,"icon":279},"Baby Gas Relief","/health/baby-gas-relief","07.health/06.baby-gas-relief","i-lucide-baby",{"title":281,"path":282,"stem":283,"icon":284},"Fast Acting Wound Sealer","/health/wound-sealer","07.health/07.wound-sealer","i-lucide-bandage",{"title":286,"path":287,"stem":288,"icon":289},"Water Flosser","/health/waterpick","07.health/08.waterpick","i-lucide-droplets",{"title":291,"path":292,"stem":293},"Meal Timing & Sleep","/health/meal-timing","07.health/09.meal-timing",false,{"title":296,"icon":297,"path":298,"stem":299,"children":300,"page":294},"Strategy","i-lucide-target","/strategy","08.strategy",[301,305,310],{"title":302,"path":303,"stem":304,"icon":297},"Jobs to Be Done","/strategy/jobs-to-be-done","08.strategy/02.jobs-to-be-done",{"title":306,"path":307,"stem":308,"icon":309},"Pillars of Money","/strategy/pillars-of-money","08.strategy/03.pillars-of-money","i-lucide-landmark",{"title":311,"path":312,"stem":313,"icon":314},"Marketing","/strategy/marketing","08.strategy/04.marketing","i-lucide-megaphone",{"title":316,"icon":317,"path":318,"stem":319,"children":320,"page":294},"Artificial Intelligence","i-lucide-brain","/ai","09.ai",[321,325,330,334,338,342,347,352,357,362,366],{"title":322,"path":323,"stem":324},"Linear + Cursor + Codex Workflow Integration","/ai/workflow-integration","09.ai/01.workflow-integration",{"title":326,"path":327,"stem":328,"icon":329},"Fabric","/ai/fabric","09.ai/02.fabric","i-lucide-cpu",{"title":331,"path":332,"stem":333},"OpenCode: Open Source AI Coding Agent","/ai/opencode-agent","09.ai/02.opencode-agent",{"title":335,"path":336,"stem":337},"Kimi K2.5 + Fireworks AI + OpenCode: Cost-Effective Daily Driver","/ai/kimi-k25-fireworks-opencode","09.ai/03.kimi-k25-fireworks-opencode",{"title":339,"path":340,"stem":341,"icon":259},"Looping Agents at Night","/ai/looping-agents","09.ai/03.looping-agents",{"title":343,"path":344,"stem":345,"icon":346},"Real ML Systems","/ai/real-ml-systems","09.ai/04.real-ml-systems","i-lucide-factory",{"title":348,"path":349,"stem":350,"icon":351},"AI Ralph","/ai/ai-ralph","09.ai/05.ai-ralph","i-lucide-bot",{"title":353,"path":354,"stem":355,"icon":356},"ChatGPT Prompt Techniques","/ai/chatgpt-prompts","09.ai/06.chatgpt-prompts","i-lucide-message-square-text",{"title":358,"path":359,"stem":360,"icon":361},"AI Courses","/ai/ai-courses","09.ai/07.ai-courses","i-lucide-graduation-cap",{"title":363,"path":364,"stem":365,"icon":208},"Claude & Codex Skills","/ai/claude-codex-skills","09.ai/08.claude-codex-skills",{"title":367,"path":368,"stem":369,"icon":370},"OpenDataLoader PDF","/ai/opendataloader-pdf","09.ai/09.opendataloader-pdf","i-lucide-file-text",{"title":372,"icon":329,"path":373,"stem":374,"children":375,"page":294},"Engineering","/engineering","10.engineering",[376,381,386,391,396,401,406,411,416,421,426,431],{"title":377,"path":378,"stem":379,"icon":380},"Aircraft Wing Design","/engineering/aircraft-wing-design","10.engineering/02.aircraft-wing-design","i-lucide-plane",{"title":382,"path":383,"stem":384,"icon":385},"Machinery's Handbook","/engineering/machinery-handbook","10.engineering/03.machinery-handbook","i-lucide-wrench",{"title":387,"path":388,"stem":389,"icon":390},"KiCAD Circuit Snips","/engineering/kicad-circuit-snips","10.engineering/04.kicad-circuit-snips","i-lucide-copy",{"title":392,"path":393,"stem":394,"icon":395},"Enamel Wire for Rework","/engineering/enamel-wire-rework","10.engineering/05.enamel-wire-rework","i-lucide-cable",{"title":397,"path":398,"stem":399,"icon":400},"Treating Steel","/engineering/treating-steel","10.engineering/06.treating-steel","i-lucide-flame",{"title":402,"path":403,"stem":404,"icon":405},"Knipex vs Lindstrom","/engineering/knipex-vs-lindstrom","10.engineering/07.knipex-vs-lindstrom","i-lucide-scissors",{"title":407,"path":408,"stem":409,"icon":410},"Gel-Pak Tack Levels","/engineering/gel-pack-tack","10.engineering/08.gel-pack-tack","i-lucide-grip",{"title":412,"path":413,"stem":414,"icon":415},"Antenna Radiation Patterns","/engineering/antenna-patterns","10.engineering/09.antenna-patterns","i-lucide-radio",{"title":417,"path":418,"stem":419,"icon":420},"Codesign Hardware and Software","/engineering/codesign-hw-sw","10.engineering/10.codesign-hw-sw","i-lucide-circuit-board",{"title":422,"path":423,"stem":424,"icon":425},"Plasticity CAD","/engineering/plasticity-cad","10.engineering/11.plasticity-cad","i-lucide-box",{"title":427,"path":428,"stem":429,"icon":430},"Mission Assurance","/engineering/mission-assurance","10.engineering/12.mission-assurance","i-lucide-shield-check",{"title":432,"path":433,"stem":434},"Google Search Operators","/engineering/google-search-operators","10.engineering/13.google-search-operators",{"title":436,"icon":437,"path":438,"stem":439,"children":440,"page":294},"Learning","i-lucide-book-open","/learning","11.learning",[441,445],{"title":442,"path":443,"stem":444,"icon":74},"Art of Problem Solving","/learning/art-of-problem-solving","11.learning/02.art-of-problem-solving",{"title":446,"path":447,"stem":448,"icon":400},"Do the Work","/learning/do-the-work","11.learning/03.do-the-work",{"title":450,"icon":26,"path":451,"stem":452,"children":453,"page":294},"Node Tools & CLI","/node-tools","12.node-tools",[454],{"title":455,"path":456,"stem":457},"OpenCode: AI Coding Agent for Terminal & CLI","/node-tools/opencode-cli","12.node-tools/01.opencode-cli",{"id":459,"title":322,"body":460,"description":1309,"extension":1310,"links":1311,"meta":1312,"navigation":1161,"path":323,"seo":1313,"stem":324,"__hash__":1314},"docs/09.ai/01.workflow-integration.md",{"type":461,"value":462,"toc":1272},"minimark",[463,467,475,497,500,503,508,514,534,542,544,548,551,556,563,568,582,586,600,603,607,610,636,643,647,660,663,677,681,684,689,711,715,722,733,735,739,743,748,751,756,770,775,785,789,794,800,804,824,828,834,838,843,846,850,867,871,877,881,886,889,896,901,921,923,927,930,936,956,959,964,984,987,992,1014,1016,1020,1023,1027,1034,1038,1049,1053,1068,1072,1078,1081,1098,1102,1105,1109,1120,1122,1126,1131,1134,1138,1144,1146,1150,1207,1209,1213,1264,1266],[464,465,322],"h1",{"id":466},"linear-cursor-codex-workflow-integration",[468,469,470,474],"p",{},[471,472,473],"strong",{},"The clearest pattern across official documentation",":",[476,477,478,485,491],"ul",{},[479,480,481,484],"li",{},[471,482,483],{},"Linear"," = System of record for work (planning, prioritization, status)",[479,486,487,490],{},[471,488,489],{},"Cursor / Codex"," = Systems of execution for code (interactive & agent-driven)",[479,492,493,496],{},[471,494,495],{},"GitHub / GitLab"," = Source of truth for code review and merge state",[468,498,499],{},"This pattern appears consistently in Linear's workflow model, GitHub automation, Cursor's Linear integration, and Codex's guidance to treat agents as configurable teammates rather than one-off chatbots.",[501,502],"hr",{},[504,505,507],"h2",{"id":506},"core-principle-separate-concerns","Core Principle: Separate Concerns",[468,509,510,513],{},[471,511,512],{},"Don't make Cursor or Codex your task tracker."," Keep these responsibilities separate:",[476,515,516,522,528],{},[479,517,518,521],{},[471,519,520],{},"Planning, prioritization, triage, cycle commitments, status"," → Linear",[479,523,524,527],{},[471,525,526],{},"One-issue-at-a-time implementation with context and tests"," → Cursor / Codex",[479,529,530,533],{},[471,531,532],{},"Code review and merge verification"," → GitHub / GitLab",[468,535,536,537,541],{},"Linear explicitly supports team workflows (Triage, status automation, cycles, GitHub linking). Codex recommends prompts with goal, context, constraints, and \"done when,\" plus reusable repo instructions in ",[538,539,540],"code",{},"AGENTS.md",". Cursor supports persistent Rules, Skills, and Hooks.",[501,543],{},[504,545,547],{"id":546},"the-default-workflow","The Default Workflow",[468,549,550],{},"Follow this pattern as your baseline:",[552,553,555],"h3",{"id":554},"_1-capture-and-prioritize-in-linear","1. Capture and Prioritize in Linear",[468,557,558,559,562],{},"Send bugs, support requests, and ideas into ",[471,560,561],{},"Linear Triage"," from Slack, Sentry, or support tools. Use a rotating owner to sort, dedupe, and accept/decline items before they enter the team workflow.",[468,564,565],{},[471,566,567],{},"Why Linear for this?",[476,569,570,573,576,579],{},[479,571,572],{},"Single source of truth for what needs doing",[479,574,575],{},"Triage workflow designed exactly for inbox management",[479,577,578],{},"Prevents duplicates and out-of-scope work",[479,580,581],{},"Captures context from multiple input channels",[552,583,585],{"id":584},"_2-commit-work-in-cycles-or-projects","2. Commit Work in Cycles or Projects",[476,587,588,594],{},[479,589,590,593],{},[471,591,592],{},"Projects"," = Larger outcomes (new feature, redesign, infrastructure)",[479,595,596,599],{},[471,597,598],{},"Cycles"," = Short time-boxed execution (1-2 week sprints)",[468,601,602],{},"Linear's docs describe cycles as time-boxed work periods separate from releases, with automatic upcoming cycle creation and cycle graphs for scope/progress.",[552,604,606],{"id":605},"_3-make-each-issue-implementation-ready","3. Make Each Issue Implementation-Ready",[468,608,609],{},"Before handing work to an AI coding tool, write the issue with:",[476,611,612,618,624,630],{},[479,613,614,617],{},[471,615,616],{},"Scope",": What's the boundary of this work?",[479,619,620,623],{},[471,621,622],{},"Acceptance criteria",": How do we know it's done?",[479,625,626,629],{},[471,627,628],{},"Links",": Relevant files, docs, related issues",[479,631,632,635],{},[471,633,634],{},"Constraints",": Performance, backwards compatibility, security requirements",[468,637,638,639,642],{},"This matches Codex's recommended prompt structure: ",[471,640,641],{},"goal, context, constraints, and done-when",".",[552,644,646],{"id":645},"_4-execute-in-cursor-or-codex","4. Execute in Cursor or Codex",[468,648,649,652,653,656,659],{},[471,650,651],{},"Cursor"," = Editor-centric interactive work and background agents",[654,655],"br",{},[471,657,658],{},"Codex"," = IDE, CLI, or cloud execution with explicit agent workflows",[468,661,662],{},"Both support:",[476,664,665,668,671,674],{},[479,666,667],{},"Understanding the codebase (context)",[479,669,670],{},"Building features with tests",[479,672,673],{},"Fixing bugs with verification",[479,675,676],{},"Reviewing changes before merge",[552,678,680],{"id":679},"_5-sync-progress-automatically-via-github","5. Sync Progress Automatically via GitHub",[468,682,683],{},"Let branch names, PR titles/descriptions, commit messages, and review state update the Linear issue automatically. Don't manually move cards around.",[468,685,686],{},[471,687,688],{},"Linear's GitHub automation supports:",[476,690,691,694,705,708],{},[479,692,693],{},"PR linking and commit linking",[479,695,696,697,700,701,704],{},"Magic words (",[538,698,699],{},"Fixes",", ",[538,702,703],{},"Closes",")",[479,706,707],{},"Issue status automation",[479,709,710],{},"Review state syncing",[552,712,714],{"id":713},"_6-require-verification-before-done","6. Require Verification Before \"Done\"",[468,716,717,718,721],{},"\"Done\" means ",[471,719,720],{},"tests + review",", not just \"agent produced code.\"",[476,723,724,727,730],{},[479,725,726],{},"Codex: Create/update tests, run checks, confirm behavior, review diffs",[479,728,729],{},"Cursor: Use Bugbot for PR diff analysis",[479,731,732],{},"Both: \"AI writes, human reviews/merges\"",[501,734],{},[504,736,738],{"id":737},"workflow-shapes-by-team-size","Workflow Shapes by Team Size",[552,740,742],{"id":741},"_1-solo-developer-founder","1. Solo Developer / Founder",[468,744,745],{},[471,746,747],{},"Use Linear lightly, Cursor heavily.",[468,749,750],{},"Keep one Linear team with simple statuses (maybe no cycles at first). Track bugs and features in Triage → Todo. Pull one issue at a time into Cursor, ask for a plan first on anything nontrivial, then implement, test, and open a PR.",[468,752,753],{},[471,754,755],{},"Good setup:",[476,757,758,761,764,767],{},[479,759,760],{},"Linear statuses: Backlog, Todo, In Progress, In Review, Done",[479,762,763],{},"Cursor: Project rules for coding conventions",[479,765,766],{},"GitHub: Automatic issue linking / status updates",[479,768,769],{},"Cursor prompt template: \"Goal / relevant files / constraints / done when\"",[468,771,772],{},[471,773,774],{},"Workflow:",[776,777,782],"pre",{"className":778,"code":780,"language":781},[779],"language-text","Linear (plan) → Cursor (code) → GitHub (review + merge)\n","text",[538,783,780],{"__ignoreMap":784},"",[552,786,788],{"id":787},"_2-small-startup-team-3-10-engineers","2. Small Startup Team (3-10 engineers)",[468,790,791],{},[471,792,793],{},"Use Linear for planning, Cursor for interactive coding, Codex for repeatable CLI tasks or larger agentic jobs.",[468,795,796,797,799],{},"Standardize agent behavior with ",[538,798,540],{}," and config files (Codex) or Rules/Skills/Hooks (Cursor) for persistent instructions.",[468,801,802],{},[471,803,755],{},[476,805,806,809,812,815,821],{},[479,807,808],{},"Linear Triage fed by Slack, Sentry, customer channels",[479,810,811],{},"1-2 week Linear cycles",[479,813,814],{},"Cursor Rules or repo instructions for style, testing, security",[479,816,817,818,820],{},"Codex ",[538,819,540],{}," with build/test/lint commands and \"definition of done\"",[479,822,823],{},"PR review in GitHub; Bugbot or Codex review before merge",[468,825,826],{},[471,827,774],{},[776,829,832],{"className":830,"code":831,"language":781},[779],"Slack/Sentry → Linear Triage → Linear Cycles\n                  ↓\n         Cursor (interactive)\n         Codex (background agents)\n                  ↓\n            GitHub PR review\n                  ↓\n         Linear status updates (automatic)\n",[538,833,831],{"__ignoreMap":784},[552,835,837],{"id":836},"_3-product-engineering-org-50-people","3. Product + Engineering Org (50+ people)",[468,839,840],{},[471,841,842],{},"Use Linear as the cross-functional hub, AI tools as specialist workers.",[468,844,845],{},"Linear supports projects, initiatives, milestones, updates, and integrations across Slack, Notion, Sentry, GitHub, and more. As of February 2026, Linear expanded its MCP server for initiatives, project milestones, and updates so product work can be updated from Cursor and Claude.",[468,847,848],{},[471,849,755],{},[476,851,852,855,858,861,864],{},[479,853,854],{},"PM/spec in Linear project with product context",[479,856,857],{},"Engineering issues decomposed into sub-issues",[479,859,860],{},"AI coding agent works issue-by-issue with tight scope",[479,862,863],{},"GitHub state sync updates Linear automatically",[479,865,866],{},"PMs stay in Linear; engineers stay mostly in editor/terminal",[468,868,869],{},[471,870,774],{},[776,872,875],{"className":873,"code":874,"language":781},[779],"Product (Linear) ← → Engineering (Linear sub-issues)\n                       ↓\n              Cursor / Codex agents\n                       ↓\n              GitHub PR → Linear auto-sync\n",[538,876,874],{"__ignoreMap":784},[552,878,880],{"id":879},"_4-support-bug-triage-workflow","4. Support / Bug Triage Workflow",[468,882,883],{},[471,884,885],{},"One of the best AI-assisted patterns.",[468,887,888],{},"Send incoming bug reports to Linear Triage from Slack/Sentry/monitoring. Dedupe and prioritize there, then either assign to humans or trigger a Cursor background agent from the issue.",[468,890,891,892,895],{},"Cursor's Linear integration supports mentioning ",[538,893,894],{},"@Cursor"," in a comment to assign a new agent. Cursor's blog describes launching background agents directly from Linear issues.",[468,897,898],{},[471,899,900],{},"Clean bug workflow:",[902,903,904,907,910,915,918],"ol",{},[479,905,906],{},"Error report lands in Linear Triage",[479,908,909],{},"Triage owner normalizes repro steps and severity",[479,911,912,914],{},[538,913,894],{}," or Codex gets a tightly scoped implementation task",[479,916,917],{},"PR is opened and reviewed",[479,919,920],{},"Linear status advances automatically from code activity",[501,922],{},[504,924,926],{"id":925},"where-each-tool-fits-best","Where Each Tool Fits Best",[552,928,483],{"id":929},"linear",[468,931,932,935],{},[471,933,934],{},"Best for",": Prioritization, workflow state, team coordination, analytics on work",[476,937,938,941,944,947,950,953],{},[479,939,940],{},"Team-specific statuses",[479,942,943],{},"Triage for inbox management",[479,945,946],{},"Cycles for time-boxed work",[479,948,949],{},"Projects for larger outcomes",[479,951,952],{},"Insights for team metrics",[479,954,955],{},"GitHub/Slack integrations",[552,957,651],{"id":958},"cursor",[468,960,961,963],{},[471,962,934],{},": Interactive implementation in the editor, background agents, repo-specific rules",[476,965,966,969,972,975,978,981],{},[479,967,968],{},"Plan Mode (for understanding codebases before coding)",[479,970,971],{},"Persistent Rules for coding standards",[479,973,974],{},"Hooks for workflows",[479,976,977],{},"Skills for multi-file operations",[479,979,980],{},"Background agents for parallel work",[479,982,983],{},"Built-in Linear integration",[552,985,658],{"id":986},"codex",[468,988,989,991],{},[471,990,934],{},": Explicit agent workflows across IDE, CLI, and cloud with standardized prompts",[476,993,994,997,1002,1005,1008,1011],{},[479,995,996],{},"Reusable prompts with goal/context/constraints",[479,998,999,1001],{},[538,1000,540],{}," for team standards",[479,1003,1004],{},"Configuration management",[479,1006,1007],{},"MCP connections for integrations",[479,1009,1010],{},"Testing and review loops",[479,1012,1013],{},"Automations across surfaces (IDE, terminal, cloud)",[501,1015],{},[504,1017,1019],{"id":1018},"recommendations-to-actually-follow","Recommendations to Actually Follow",[468,1021,1022],{},"Use these as defaults unless you have a strong reason not to:",[552,1024,1026],{"id":1025},"_1-dont-let-ai-tools-invent-backlog-state","1. Don't Let AI Tools Invent Backlog State",[468,1028,1029,1030,1033],{},"AI should update code and maybe draft comments, but ",[471,1031,1032],{},"Linear owns prioritization and status policy",". Never let an agent decide what's important or create new work items without human review.",[552,1035,1037],{"id":1036},"_2-always-plan-first-for-mediumlarge-tasks","2. Always Plan First for Medium/Large Tasks",[476,1039,1040,1043,1046],{},[479,1041,1042],{},"Cursor has Plan Mode",[479,1044,1045],{},"Codex recommends Plan mode for difficult tasks",[479,1047,1048],{},"Spend 5-10 minutes understanding scope before implementation",[552,1050,1052],{"id":1051},"_3-write-persistent-repo-rules-once","3. Write Persistent Repo Rules Once",[476,1054,1055,1058,1062],{},[479,1056,1057],{},"Cursor Rules / Hooks / Skills",[479,1059,817,1060],{},[538,1061,540],{},[479,1063,1064,1067],{},[471,1065,1066],{},"This is the highest-leverage setup step."," Write your standards once, reuse forever.",[552,1069,1071],{"id":1070},"_4-drive-status-from-git-activity-when-possible","4. Drive Status from Git Activity When Possible",[468,1073,1074,1075],{},"Use branch names, PR titles, commit messages, and review state to update Linear automatically. ",[471,1076,1077],{},"Reduces manual project-manager busywork.",[468,1079,1080],{},"Example magic words:",[476,1082,1083,1089,1095],{},[479,1084,1085,1088],{},[538,1086,1087],{},"Fixes #123"," (links and closes)",[479,1090,1091,1094],{},[538,1092,1093],{},"Closes RFX-40"," (Linear integration)",[479,1096,1097],{},"PR title includes issue key (automatic linking)",[552,1099,1101],{"id":1100},"_5-make-done-mean-tests-review-not-just-code","5. Make \"Done\" Mean Tests + Review, Not Just Code",[468,1103,1104],{},"\"Done\" = implementation + tests + PR review + merge, not just \"agent produced code.\"",[552,1106,1108],{"id":1107},"_6-start-with-narrow-permissions","6. Start with Narrow Permissions",[476,1110,1111,1114,1117],{},[479,1112,1113],{},"Codex: Keep approval/sandboxing tight by default, loosen only for trusted repos",[479,1115,1116],{},"Cursor: Document approval controls for terminal execution",[479,1118,1119],{},"GitHub: Require review before merge",[501,1121],{},[504,1123,1125],{"id":1124},"the-best-integrated-workflow","The Best-Integrated Workflow",[468,1127,1128],{},[471,1129,1130],{},"Linear for deciding. Cursor/Codex for doing. GitHub/GitLab for verifying and merging.",[468,1132,1133],{},"Teams are happiest when they keep those responsibilities separate instead of trying to make one tool do everything.",[552,1135,1137],{"id":1136},"example-flow-for-a-feature","Example Flow for a Feature",[776,1139,1142],{"className":1140,"code":1141,"language":781},[779],"1. Product writes spec in Linear project\n   ↓\n2. Engineering breaks down into sub-issues\n   ↓\n3. Issue tagged with \"ready for development\" and assigned to dev/Cursor\n   ↓\n4. Dev opens Cursor, selects the issue, runs Cursor Plan to understand scope\n   ↓\n5. Cursor implements with tests, opens draft PR\n   ↓\n6. Dev reviews, requests changes, or approves\n   ↓\n7. PR merged → GitHub → Linear status auto-updates to Done\n   ↓\n8. Issue closes, metrics updated in Linear\n",[538,1143,1141],{"__ignoreMap":784},[501,1145],{},[504,1147,1149],{"id":1148},"setup-checklist","Setup Checklist",[476,1151,1154,1164,1174,1183,1189,1195,1201],{"className":1152},[1153],"contains-task-list",[479,1155,1158,1163],{"className":1156},[1157],"task-list-item",[1159,1160],"input",{"disabled":1161,"type":1162},true,"checkbox"," Linear workspace with Triage, cycles, and GitHub integration",[479,1165,1167,1169,1170,1173],{"className":1166},[1157],[1159,1168],{"disabled":1161,"type":1162}," Cursor Rules (or repo ",[538,1171,1172],{},".cursorrules"," file) with coding standards",[479,1175,1177,1179,1180,1182],{"className":1176},[1157],[1159,1178],{"disabled":1161,"type":1162}," Codex ",[538,1181,540],{}," if using background agents",[479,1184,1186,1188],{"className":1185},[1157],[1159,1187],{"disabled":1161,"type":1162}," GitHub branch protection with required reviews",[479,1190,1192,1194],{"className":1191},[1157],[1159,1193],{"disabled":1161,"type":1162}," PR template linking to Linear issues",[479,1196,1198,1200],{"className":1197},[1157],[1159,1199],{"disabled":1161,"type":1162}," Linear automation: PR labels → issue status",[479,1202,1204,1206],{"className":1203},[1157],[1159,1205],{"disabled":1161,"type":1162}," Team agreement: What \"implementation-ready\" means for your issues",[501,1208],{},[504,1210,1212],{"id":1211},"related-reading","Related Reading",[476,1214,1215,1231,1244,1256],{},[479,1216,1217,1218,1225,1226],{},"Linear: ",[1219,1220,1224],"a",{"href":1221,"rel":1222},"https://linear.app/docs/workflow",[1223],"nofollow","Workflow docs"," and ",[1219,1227,1230],{"href":1228,"rel":1229},"https://linear.app/docs/github",[1223],"GitHub integration",[479,1232,1233,1234,1225,1239],{},"Cursor: ",[1219,1235,1238],{"href":1236,"rel":1237},"https://cursor.sh/docs/rules",[1223],"Rules documentation",[1219,1240,1243],{"href":1241,"rel":1242},"https://cursor.sh/docs/agents",[1223],"Background agents",[479,1245,1246,1247,1225,1251],{},"Codex: ",[1219,1248,1224],{"href":1249,"rel":1250},"https://docs.codex.sh/workflow",[1223],[1219,1252,1255],{"href":1253,"rel":1254},"https://docs.codex.sh/agents",[1223],"AGENTS.md pattern",[479,1257,1258,1259],{},"GitHub: ",[1219,1260,1263],{"href":1261,"rel":1262},"https://docs.github.com/en/rest/issues/issues?apiVersion=2022-11-28#update-an-issue",[1223],"PR automation",[501,1265],{},[468,1267,1268,1271],{},[471,1269,1270],{},"Takeaway",": The best-integrated workflow treats Linear, AI tools, and GitHub as specialists in different domains, not as interchangeable alternatives. Each tool does its job better when it stays in its lane.",{"title":784,"searchDepth":1273,"depth":1273,"links":1274},2,[1275,1276,1285,1291,1296,1304,1307,1308],{"id":506,"depth":1273,"text":507},{"id":546,"depth":1273,"text":547,"children":1277},[1278,1280,1281,1282,1283,1284],{"id":554,"depth":1279,"text":555},3,{"id":584,"depth":1279,"text":585},{"id":605,"depth":1279,"text":606},{"id":645,"depth":1279,"text":646},{"id":679,"depth":1279,"text":680},{"id":713,"depth":1279,"text":714},{"id":737,"depth":1273,"text":738,"children":1286},[1287,1288,1289,1290],{"id":741,"depth":1279,"text":742},{"id":787,"depth":1279,"text":788},{"id":836,"depth":1279,"text":837},{"id":879,"depth":1279,"text":880},{"id":925,"depth":1273,"text":926,"children":1292},[1293,1294,1295],{"id":929,"depth":1279,"text":483},{"id":958,"depth":1279,"text":651},{"id":986,"depth":1279,"text":658},{"id":1018,"depth":1273,"text":1019,"children":1297},[1298,1299,1300,1301,1302,1303],{"id":1025,"depth":1279,"text":1026},{"id":1036,"depth":1279,"text":1037},{"id":1051,"depth":1279,"text":1052},{"id":1070,"depth":1279,"text":1071},{"id":1100,"depth":1279,"text":1101},{"id":1107,"depth":1279,"text":1108},{"id":1124,"depth":1273,"text":1125,"children":1305},[1306],{"id":1136,"depth":1279,"text":1137},{"id":1148,"depth":1273,"text":1149},{"id":1211,"depth":1273,"text":1212},"The clearest pattern across official documentation:","md",null,{},{"title":322,"description":1309},"1mfh54uIdTvRgggPUPwPs1Eh7RpmI9Txf4wb5ovWsjE",[1316,1318],{"title":311,"path":312,"stem":313,"description":1317,"icon":314,"children":-1},"Practical marketing tips and strategies for growth.",{"title":326,"path":327,"stem":328,"description":1319,"icon":329,"children":-1},"Open-source framework for AI prompt patterns",1775772883586]