[{"data":1,"prerenderedAt":1237},["ShallowReactive",2],{"navigation":3,"external-navigation":214,"docs:\u002Feos\u002Fhow-to\u002Fuse-ai-enabled-sdlc":443},[4,8,201],{"title":5,"path":6,"stem":7},"Documentation","\u002F","README",{"title":9,"path":10,"stem":11,"children":12},"EOS","\u002Feos","eos\u002FREADME",[13,44,121,181],{"title":14,"collapsed":15,"path":16,"stem":17,"children":18,"page":43},"Adrs",true,"\u002Feos\u002Fadrs","eos\u002Fadrs",[19,23,27,31,35,39],{"title":20,"path":21,"stem":22},"Use Turborepo for the EOS monorepo","\u002Feos\u002Fadrs\u002F0001-use-turborepo-for-eos","eos\u002Fadrs\u002F0001-use-turborepo-for-eos",{"title":24,"path":25,"stem":26},"Use Oxc for linting and formatting","\u002Feos\u002Fadrs\u002F0003-use-oxc-for-linting-and-formatting","eos\u002Fadrs\u002F0003-use-oxc-for-linting-and-formatting",{"title":28,"path":29,"stem":30},"Lint Markdown and validate links in CI","\u002Feos\u002Fadrs\u002F0004-lint-markdown-in-ci","eos\u002Fadrs\u002F0004-lint-markdown-in-ci",{"title":32,"path":33,"stem":34},"Use Lefthook for repository-managed Git hooks","\u002Feos\u002Fadrs\u002F0005-use-lefthook-for-repository-git-hooks","eos\u002Fadrs\u002F0005-use-lefthook-for-repository-git-hooks",{"title":36,"path":37,"stem":38},"Use Commitlint's conventional configuration","\u002Feos\u002Fadrs\u002F0006-use-commitlint-conventional-configuration","eos\u002Fadrs\u002F0006-use-commitlint-conventional-configuration",{"title":40,"path":41,"stem":42},"Use Nx for EOS task execution","\u002Feos\u002Fadrs\u002F0007-use-nx-for-eos","eos\u002Fadrs\u002F0007-use-nx-for-eos",false,{"title":45,"path":46,"stem":47,"children":48},"Harbourmaster","\u002Feos\u002Fharbourmaster","eos\u002Fharbourmaster\u002FREADME",[49,58,71,96],{"title":50,"path":51,"stem":52,"children":53,"page":43},"Decisions","\u002Feos\u002Fharbourmaster\u002Fdecisions","eos\u002Fharbourmaster\u002Fdecisions",[54],{"title":55,"path":56,"stem":57},"AI-50: GitHub auth and fork pull request policy","\u002Feos\u002Fharbourmaster\u002Fdecisions\u002Fai-50-auth-and-fork-policy","eos\u002Fharbourmaster\u002Fdecisions\u002Fai-50-auth-and-fork-policy",{"title":59,"path":60,"stem":61,"children":62,"page":43},"Explanation","\u002Feos\u002Fharbourmaster\u002Fexplanation","eos\u002Fharbourmaster\u002Fexplanation",[63,67],{"title":64,"path":65,"stem":66},"The Harbourmaster review pipeline","\u002Feos\u002Fharbourmaster\u002Fexplanation\u002Freview-pipeline","eos\u002Fharbourmaster\u002Fexplanation\u002Freview-pipeline",{"title":68,"path":69,"stem":70},"The Harbourmaster shared-action trust boundary","\u002Feos\u002Fharbourmaster\u002Fexplanation\u002Fshared-action-trust-boundary","eos\u002Fharbourmaster\u002Fexplanation\u002Fshared-action-trust-boundary",{"title":72,"path":73,"stem":74,"children":75,"page":43},"How To","\u002Feos\u002Fharbourmaster\u002Fhow-to","eos\u002Fharbourmaster\u002Fhow-to",[76,80,84,88,92],{"title":77,"path":78,"stem":79},"How to add Harbourmaster reviews to a repository","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fadd-harbourmaster-to-a-repository","eos\u002Fharbourmaster\u002Fhow-to\u002Fadd-harbourmaster-to-a-repository",{"title":81,"path":82,"stem":83},"How to build a pilot dashboard","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fbuild-pilot-dashboard","eos\u002Fharbourmaster\u002Fhow-to\u002Fbuild-pilot-dashboard",{"title":85,"path":86,"stem":87},"How to configure model routing","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fconfigure-model-routing","eos\u002Fharbourmaster\u002Fhow-to\u002Fconfigure-model-routing",{"title":89,"path":90,"stem":91},"How to request a Harbourmaster review","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Frequest-a-review","eos\u002Fharbourmaster\u002Fhow-to\u002Frequest-a-review",{"title":93,"path":94,"stem":95},"How to diagnose a Harbourmaster review failure","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Ftroubleshoot-a-review","eos\u002Fharbourmaster\u002Fhow-to\u002Ftroubleshoot-a-review",{"title":97,"path":98,"stem":99,"children":100,"page":43},"Reference","\u002Feos\u002Fharbourmaster\u002Freference","eos\u002Fharbourmaster\u002Freference",[101,105,109,113,117],{"title":102,"path":103,"stem":104},"Harbourmaster command-line interface","\u002Feos\u002Fharbourmaster\u002Freference\u002Fcli","eos\u002Fharbourmaster\u002Freference\u002Fcli",{"title":106,"path":107,"stem":108},"Harbourmaster configuration","\u002Feos\u002Fharbourmaster\u002Freference\u002Fconfiguration","eos\u002Fharbourmaster\u002Freference\u002Fconfiguration",{"title":110,"path":111,"stem":112},"Harbourmaster GitHub Action","\u002Feos\u002Fharbourmaster\u002Freference\u002Fgithub-action","eos\u002Fharbourmaster\u002Freference\u002Fgithub-action",{"title":114,"path":115,"stem":116},"Harbourmaster review behavior","\u002Feos\u002Fharbourmaster\u002Freference\u002Freview-behavior","eos\u002Fharbourmaster\u002Freference\u002Freview-behavior",{"title":118,"path":119,"stem":120},"Harbourmaster telemetry","\u002Feos\u002Fharbourmaster\u002Freference\u002Ftelemetry","eos\u002Fharbourmaster\u002Freference\u002Ftelemetry",{"title":72,"path":122,"stem":123,"children":124,"page":43},"\u002Feos\u002Fhow-to","eos\u002Fhow-to",[125,129,133,137,141,145,149,153,157,161,165,169,173,177],{"title":126,"path":127,"stem":128},"How to add an external documentation source","\u002Feos\u002Fhow-to\u002Fadd-external-documentation-source","eos\u002Fhow-to\u002Fadd-external-documentation-source",{"title":130,"path":131,"stem":132},"How to connect SDLC integrations","\u002Feos\u002Fhow-to\u002Fconnect-sdlc-integrations","eos\u002Fhow-to\u002Fconnect-sdlc-integrations",{"title":134,"path":135,"stem":136},"How to consume the EOS plugin marketplace","\u002Feos\u002Fhow-to\u002Fconsume-eos-marketplace","eos\u002Fhow-to\u002Fconsume-eos-marketplace",{"title":138,"path":139,"stem":140},"How to create a spike ticket","\u002Feos\u002Fhow-to\u002Fcreate-spike-ticket","eos\u002Fhow-to\u002Fcreate-spike-ticket",{"title":142,"path":143,"stem":144},"How to finalise a repository change","\u002Feos\u002Fhow-to\u002Ffinalise-change","eos\u002Fhow-to\u002Ffinalise-change",{"title":146,"path":147,"stem":148},"How to install the EOS Docs MCP server","\u002Feos\u002Fhow-to\u002Finstall-eos-docs-mcp","eos\u002Fhow-to\u002Finstall-eos-docs-mcp",{"title":150,"path":151,"stem":152},"How to resolve a spike ticket","\u002Feos\u002Fhow-to\u002Fresolve-spike-ticket","eos\u002Fhow-to\u002Fresolve-spike-ticket",{"title":154,"path":155,"stem":156},"How to run Git hook checks","\u002Feos\u002Fhow-to\u002Frun-git-hook-checks","eos\u002Fhow-to\u002Frun-git-hook-checks",{"title":158,"path":159,"stem":160},"How to use the AI-enabled SDLC","\u002Feos\u002Fhow-to\u002Fuse-ai-enabled-sdlc","eos\u002Fhow-to\u002Fuse-ai-enabled-sdlc",{"title":162,"path":163,"stem":164},"Use the Aikido plugin","\u002Feos\u002Fhow-to\u002Fuse-aikido-plugin","eos\u002Fhow-to\u002Fuse-aikido-plugin",{"title":166,"path":167,"stem":168},"How to use Compass","\u002Feos\u002Fhow-to\u002Fuse-compass","eos\u002Fhow-to\u002Fuse-compass",{"title":170,"path":171,"stem":172},"How to use Fallow","\u002Feos\u002Fhow-to\u002Fuse-fallow","eos\u002Fhow-to\u002Fuse-fallow",{"title":174,"path":175,"stem":176},"How to use incremental mutation tests","\u002Feos\u002Fhow-to\u002Fuse-incremental-mutation-tests","eos\u002Fhow-to\u002Fuse-incremental-mutation-tests",{"title":178,"path":179,"stem":180},"How to use Scout","\u002Feos\u002Fhow-to\u002Fuse-scout","eos\u002Fhow-to\u002Fuse-scout",{"title":97,"path":182,"stem":183,"children":184,"page":43},"\u002Feos\u002Freference","eos\u002Freference",[185,189,193,197],{"title":186,"path":187,"stem":188},"Compass CLI","\u002Feos\u002Freference\u002Fcompass-cli","eos\u002Freference\u002Fcompass-cli",{"title":190,"path":191,"stem":192},"EOS marketplace skills","\u002Feos\u002Freference\u002Fmarketplace-skills","eos\u002Freference\u002Fmarketplace-skills",{"title":194,"path":195,"stem":196},"Nx task execution and cache","\u002Feos\u002Freference\u002Fnx-task-execution","eos\u002Freference\u002Fnx-task-execution",{"title":198,"path":199,"stem":200},"Scout CLI","\u002Feos\u002Freference\u002Fscout-cli","eos\u002Freference\u002Fscout-cli",{"title":202,"path":203,"stem":204,"children":205},"Product engineering","\u002Fproduct-engineering","product-engineering\u002FREADME",[206],{"title":14,"collapsed":15,"path":207,"stem":208,"children":209,"page":43},"\u002Fproduct-engineering\u002Fadrs","product-engineering\u002Fadrs",[210],{"title":211,"path":212,"stem":213},"Codify Engineering Standards as Skills","\u002Fproduct-engineering\u002Fadrs\u002F0002-codify-engineering-standards-as-skills","product-engineering\u002Fadrs\u002F0002-codify-engineering-standards-as-skills",[215,268],{"nav":216,"source":265},[217],{"title":218,"path":219,"stem":220,"children":221},"Ember","\u002Fember","ember",[222,225,257,261],{"title":223,"path":219,"stem":224},"StoreFront Documentation","ember\u002Findex",{"title":14,"path":226,"stem":227,"children":228,"page":43},"\u002Fember\u002Fadrs","ember\u002Fadrs",[229,233,237,241,245,249,253],{"title":230,"path":231,"stem":232},"Add Infection as a non-blocking mutation testing tool for Ember","\u002Fember\u002Fadrs\u002F0001-infection-mutation-testing","ember\u002Fadrs\u002F0001-infection-mutation-testing",{"title":234,"path":235,"stem":236},"Process DELETE scheduled changes before CREATE_UPDATE at the same instant","\u002Fember\u002Fadrs\u002F0002-scheduled-change-processing-order","ember\u002Fadrs\u002F0002-scheduled-change-processing-order",{"title":238,"path":239,"stem":240},"Standard rate scheduling is permanent until overridden","\u002Fember\u002Fadrs\u002F0003-standard-rate-scheduling-is-permanent","ember\u002Fadrs\u002F0003-standard-rate-scheduling-is-permanent",{"title":242,"path":243,"stem":244},"Promotions require an existing standard rate","\u002Fember\u002Fadrs\u002F0004-promotions-require-existing-standard-rate","ember\u002Fadrs\u002F0004-promotions-require-existing-standard-rate",{"title":246,"path":247,"stem":248},"UTC datetime contract between Storefront and Hub","\u002Fember\u002Fadrs\u002F0005-utc-datetime-contract-between-storefront-and-hub","ember\u002Fadrs\u002F0005-utc-datetime-contract-between-storefront-and-hub",{"title":250,"path":251,"stem":252},"Elapsed unprocessed scheduled changes do not block rate changes","\u002Fember\u002Fadrs\u002F0006-stale-scheduler-rows-do-not-block-rate-changes","ember\u002Fadrs\u002F0006-stale-scheduler-rows-do-not-block-rate-changes",{"title":254,"path":255,"stem":256},"ADR-0007: Delete ConfigureTenantAuth routing command once OIDC setup migrates to Hub","\u002Fember\u002Fadrs\u002F0007-delete-configure-tenant-auth-routing-command","ember\u002Fadrs\u002F0007-delete-configure-tenant-auth-routing-command",{"title":258,"path":259,"stem":260},"Domain Overview","\u002Fember\u002Fdomain_overview","ember\u002Fdomain_overview",{"title":262,"path":263,"stem":264},"Main Flows","\u002Fember\u002Fkey_flows","ember\u002Fkey_flows",{"collectionName":266,"label":267,"prefix":220},"external_ember","StoreFront (Ember)",{"nav":269,"source":441},[270],{"title":271,"path":272,"stem":273,"children":274},"Core","\u002Fcore","core",[275,278,306,310,332,336,346,363,420,424],{"title":276,"path":272,"stem":277},"Documentation Index","core\u002Findex",{"title":14,"path":279,"stem":280,"children":281,"page":43},"\u002Fcore\u002Fadrs","core\u002Fadrs",[282,286,290,294,298,302],{"title":283,"path":284,"stem":285},"ADR-XXXX: Short, descriptive title","\u002Fcore\u002Fadrs\u002F0000-template","core\u002Fadrs\u002F0000-template",{"title":287,"path":288,"stem":289},"ADR-1: Promotions endpoint","\u002Fcore\u002Fadrs\u002F0001-add-promotions-endpoint","core\u002Fadrs\u002F0001-add-promotions-endpoint",{"title":291,"path":292,"stem":293},"ADR-2: EOM partner report job dispatch","\u002Fcore\u002Fadrs\u002F0002-eom-report-job-dispatch","core\u002Fadrs\u002F0002-eom-report-job-dispatch",{"title":295,"path":296,"stem":297},"ADR-3: Replace PB fee waive flag with a Zero scheme override","\u002Fcore\u002Fadrs\u002F0003-replace-pb-fee-waive-with-zero-scheme","core\u002Fadrs\u002F0003-replace-pb-fee-waive-with-zero-scheme",{"title":299,"path":300,"stem":301},"ADR-4: No processor Digital Top-up capability gate in Reloadable Commercials","\u002Fcore\u002Fadrs\u002F0004-no-processor-top-up-capability-gate","core\u002Fadrs\u002F0004-no-processor-top-up-capability-gate",{"title":303,"path":304,"stem":305},"ADR-5: Sparse polymorphic sale fee override reason stamp","\u002Fcore\u002Fadrs\u002F0005-sale-fee-override-reason-stamp","core\u002Fadrs\u002F0005-sale-fee-override-reason-stamp",{"title":307,"path":308,"stem":309},"Agent Workflow","\u002Fcore\u002Fai-workflow","core\u002Fai-workflow",{"title":311,"path":312,"stem":313,"children":314},"Backend Guide","\u002Fcore\u002Fbackend","core\u002Fbackend\u002Findex",[315,316,320,324,328],{"title":311,"path":312,"stem":313},{"title":317,"path":318,"stem":319},"Backend AI Tooling","\u002Fcore\u002Fbackend\u002Fai-tooling","core\u002Fbackend\u002Fai-tooling",{"title":321,"path":322,"stem":323},"Backend Linting and Formatting","\u002Fcore\u002Fbackend\u002Flinting-and-formatting","core\u002Fbackend\u002Flinting-and-formatting",{"title":325,"path":326,"stem":327},"Backend Setup","\u002Fcore\u002Fbackend\u002Fsetup","core\u002Fbackend\u002Fsetup",{"title":329,"path":330,"stem":331},"Backend Testing","\u002Fcore\u002Fbackend\u002Ftesting","core\u002Fbackend\u002Ftesting",{"title":333,"path":334,"stem":335},"Documentation Health","\u002Fcore\u002Fdoc-health","core\u002Fdoc-health",{"title":337,"path":338,"stem":339,"children":340},"Frontend Guide","\u002Fcore\u002Ffrontend","core\u002Ffrontend\u002Findex",[341,342],{"title":337,"path":338,"stem":339},{"title":343,"path":344,"stem":345},"Frontend Development","\u002Fcore\u002Ffrontend\u002Fdevelopment","core\u002Ffrontend\u002Fdevelopment",{"title":347,"path":348,"stem":349,"children":350,"page":43},"Modules","\u002Fcore\u002Fmodules","core\u002Fmodules",[351,355],{"title":352,"path":353,"stem":354},"Connect API","\u002Fcore\u002Fmodules\u002Fconnect-api","core\u002Fmodules\u002Fconnect-api",{"title":356,"path":357,"stem":358,"children":359,"page":43},"Secure Links","\u002Fcore\u002Fmodules\u002Fsecure-links","core\u002Fmodules\u002Fsecure-links",[360],{"title":356,"path":361,"stem":362},"\u002Fcore\u002Fmodules\u002Fsecure-links\u002Fsecure-links","core\u002Fmodules\u002Fsecure-links\u002Fsecure-links",{"title":364,"path":365,"stem":366,"children":367,"page":43},"Processors","\u002Fcore\u002Fprocessors","core\u002Fprocessors",[368,372,376,380,384,388,392,396,400,404,408,412,416],{"title":369,"path":370,"stem":371},"Amazon Processor and API","\u002Fcore\u002Fprocessors\u002Famazon","core\u002Fprocessors\u002Famazon",{"title":373,"path":374,"stem":375},"Amilon Processor and API","\u002Fcore\u002Fprocessors\u002Familon","core\u002Fprocessors\u002Familon",{"title":377,"path":378,"stem":379},"Cadooz Processor and API","\u002Fcore\u002Fprocessors\u002Fcadooz","core\u002Fprocessors\u002Fcadooz",{"title":381,"path":382,"stem":383},"Choice Digital Processor and API","\u002Fcore\u002Fprocessors\u002Fchoice-digital","core\u002Fprocessors\u002Fchoice-digital",{"title":385,"path":386,"stem":387},"Diggecard processor reference","\u002Fcore\u002Fprocessors\u002Fdiggecard","core\u002Fprocessors\u002Fdiggecard",{"title":389,"path":390,"stem":391},"ePay Processor and API","\u002Fcore\u002Fprocessors\u002Fepay","core\u002Fprocessors\u002Fepay",{"title":393,"path":394,"stem":395},"GoGift v2 Processor and API","\u002Fcore\u002Fprocessors\u002Fgo-gift-v2","core\u002Fprocessors\u002Fgo-gift-v2",{"title":397,"path":398,"stem":399},"InComm Processor and API","\u002Fcore\u002Fprocessors\u002Fincomm","core\u002Fprocessors\u002Fincomm",{"title":401,"path":402,"stem":403},"Ogloba Processor and API","\u002Fcore\u002Fprocessors\u002Fogloba","core\u002Fprocessors\u002Fogloba",{"title":405,"path":406,"stem":407},"SVSECard Processor and API","\u002Fcore\u002Fprocessors\u002Fsvs-ecard","core\u002Fprocessors\u002Fsvs-ecard",{"title":409,"path":410,"stem":411},"Vananam Processor and API","\u002Fcore\u002Fprocessors\u002Fvananam","core\u002Fprocessors\u002Fvananam",{"title":413,"path":414,"stem":415},"Vouchers Depot processor reference","\u002Fcore\u002Fprocessors\u002Fvouchers-depot","core\u002Fprocessors\u002Fvouchers-depot",{"title":417,"path":418,"stem":419},"You Got a Gift Processor and API","\u002Fcore\u002Fprocessors\u002Fyou-got-a-gift","core\u002Fprocessors\u002Fyou-got-a-gift",{"title":421,"path":422,"stem":423},"Development Quickstart","\u002Fcore\u002Fsetup","core\u002Fsetup",{"title":425,"path":426,"stem":427,"children":428,"page":43},"Workflows","\u002Fcore\u002Fworkflows","core\u002Fworkflows",[429,433,437],{"title":430,"path":431,"stem":432},"Hub Endpoint Workflow","\u002Fcore\u002Fworkflows\u002Fhub-endpoints","core\u002Fworkflows\u002Fhub-endpoints",{"title":434,"path":435,"stem":436},"OpenAPI Tooling","\u002Fcore\u002Fworkflows\u002Fopenapi-tooling","core\u002Fworkflows\u002Fopenapi-tooling",{"title":438,"path":439,"stem":440},"Processor Integration Workflow","\u002Fcore\u002Fworkflows\u002Fprocessors","core\u002Fworkflows\u002Fprocessors",{"collectionName":442,"label":271,"prefix":273},"external_core",{"page":444,"surround":1234},{"id":445,"title":158,"body":446,"config":1229,"description":452,"extension":1230,"meta":1231,"navigation":15,"path":159,"seo":1232,"stem":160,"__hash__":1233},"docs\u002Feos\u002Fhow-to\u002Fuse-ai-enabled-sdlc.md",{"type":447,"value":448,"toc":1208},"minimark",[449,453,463,466,471,523,536,540,547,589,592,603,607,614,622,628,633,639,643,646,651,657,663,670,674,680,686,690,698,704,716,720,728,731,734,881,888,892,898,912,915,919,925,928,931,951,954,958,963,982,988,994,997,1059,1062,1099,1104,1108,1114,1117,1120,1123,1127,1133,1136,1139,1142,1146,1152,1163,1177,1183,1187,1190,1193,1196,1204],[450,451,452],"p",{},"Take work from an idea to a draft pull request with the EOS skills. Each project\nstage produces one artefact that the next stage reads. Human review and merge\nfollow the draft pull request.",[450,454,455,456,459,460,462],{},"This guide assumes you can run EOS skills in your agent. For plugin install, see\n",[457,458,134],"a",{"href":135},". For\nNotion, Atlassian, and GitHub CLI access, see\n",[457,461,130],{"href":131},".",[450,464,465],{},"Do not write the ticket, PRD, or plan in the prompt. Give the skill a ticket\nkey, a Notion link, or a screenshot. The skill asks for the rest.",[467,468,470],"h2",{"id":469},"before-you-start","Before you start",[472,473,474,491,494],"ol",{},[475,476,477,478,482,483,486,487,490],"li",{},"Install ",[479,480,481],"code",{},"eos@eos",", ",[479,484,485],{},"engineering@eos",", and ",[479,488,489],{},"product@eos"," globally with APM.",[475,492,493],{},"Connect the integration that the next stage requires.",[475,495,496,497],{},"Update global plugins before you start a new piece of work:",[498,499,504],"pre",{"className":500,"code":501,"language":502,"meta":503,"style":503},"language-sh shiki shiki-themes github-dark github-light","apm update --global\n","sh","",[479,505,506],{"__ignoreMap":503},[507,508,511,515,519],"span",{"class":509,"line":510},"line",1,[507,512,514],{"class":513},"s-Z4r","apm",[507,516,518],{"class":517},"sg6BJ"," update",[507,520,522],{"class":521},"s0DvM"," --global\n",[450,524,525,526,529,530,533,534,462],{},"Scout is optional. When ",[479,527,528],{},"scout"," is on ",[479,531,532],{},"PATH",", SDLC skills load team and\nrepository context from it. See ",[457,535,178],{"href":179},[467,537,539],{"id":538},"check-your-setup","Check your setup",[450,541,542,543,546],{},"Run ",[479,544,545],{},"\u002Fask-eos"," if this is your first time, or if a skill stops because a tool is\nmissing.",[548,549,550,566],"table",{},[551,552,553],"thead",{},[554,555,556,560],"tr",{},[557,558,559],"th",{},"Request",[557,561,562,563,565],{},"What ",[479,564,545],{}," does",[567,568,569,579],"tbody",{},[554,570,571,576],{},[572,573,574],"td",{},[479,575,545],{},[572,577,578],{},"Asks what work you do and walks you through missing EOS plugins",[554,580,581,586],{},[572,582,583],{},[479,584,585],{},"\u002Fask-eos check my setup",[572,587,588],{},"Reports installed EOS plugins, Notion, Jira, and GitHub CLI readiness",[450,590,591],{},"Neither flow installs, uninstalls, or reconnects anything unless you agree.",[450,593,594,595,598,599,602],{},"If a personal skill such as ",[479,596,597],{},"create-prd"," sits in ",[479,600,601],{},"~\u002F.claude\u002Fskills",", the\nreadiness check can report a clash with the EOS skill. Use the EOS skill.",[467,604,606],{"id":605},"choose-the-workflow","Choose the workflow",[450,608,609,610,613],{},"Use ",[479,611,612],{},"\u002Fstart-work"," when you are not sure which skill to run. It routes to one\ndownstream skill. It does not create artefacts itself.",[498,615,620],{"className":616,"code":618,"language":619,"meta":503},[617],"language-text","\u002Fstart-work checkout failed for a gift card order\n","text",[479,621,618],{"__ignoreMap":503},[498,623,626],{"className":624,"code":625,"language":619,"meta":503},[617],"\u002Fstart-work we want a new Buyer Hub reporting project\n",[479,627,625],{"__ignoreMap":503},[629,630],"content-mermaid-transport",{":page-config":631,"code":632},"config","flowchart%20TD%0A%20%20%20%20Start%5B%22Start%20work%20request%22%5D%20--%3E%20Project%7B%22Project%20or%20initiative%3F%22%7D%0A%20%20%20%20Project%20--%3E%7CYes%2C%20details%20unsettled%7C%20CreateSpike%5B%22%2Fcreate-spike-ticket%22%5D%0A%20%20%20%20Project%20--%3E%7CYes%2C%20details%20settled%7C%20CreateProject%5B%22%2Fcreate-project%22%5D%0A%20%20%20%20Project%20--%3E%7CNo%7C%20Bug%7B%22Existing%20defect%3F%22%7D%0A%20%20%20%20Bug%20--%3E%7CYes%7C%20CreateBug%5B%22%2Fcreate-bug-ticket%22%5D%0A%20%20%20%20Bug%20--%3E%7CNo%7C%20Enhancement%7B%22One%20bounded%20improvement%3F%22%7D%0A%20%20%20%20Enhancement%20--%3E%7CYes%2C%20details%20unsettled%7C%20CreateSpike%0A%20%20%20%20Enhancement%20--%3E%7CYes%2C%20details%20settled%7C%20CreateEnhancement%5B%22%2Fcreate-enhancement-ticket%22%5D%0A%20%20%20%20Enhancement%20--%3E%7CNo%7C%20RefinedTicket%7B%22Refined%20ticket%20already%20exists%3F%22%7D%0A%20%20%20%20RefinedTicket%20--%3E%7CYes%7C%20Implement%5B%22%2Fimplement%22%5D%0A%20%20%20%20RefinedTicket%20--%3E%7CNo%7C%20Questions%5B%22Ask%20for%20more%20context%22%5D",[450,634,635,636,638],{},"If ",[479,637,612],{}," cannot classify the request, it asks follow-up questions and\nroutes again.",[467,640,642],{"id":641},"create-a-standalone-ticket","Create a standalone ticket",[450,644,645],{},"Not every change needs a PRD, TSD, or implementation plan.",[647,648,650],"h3",{"id":649},"enhancement","Enhancement",[450,652,609,653,656],{},[479,654,655],{},"\u002Fcreate-enhancement-ticket"," for one bounded improvement to an existing\nproduct or service. The skill drafts a small implementation plan, checks for\nduplicates when you ask, and creates the Jira issue. It does not need a Notion\nproject or an epic.",[498,658,661],{"className":659,"code":660,"language":619,"meta":503},[617],"\u002Fcreate-enhancement-ticket add a CSV export on the settlement report\n",[479,662,660],{"__ignoreMap":503},[450,664,665,666,669],{},"If unanswered questions still block a safe ticket, the skill routes to\n",[479,667,668],{},"\u002Fcreate-spike-ticket"," instead of a weak Enhancement.",[647,671,673],{"id":672},"bug","Bug",[450,675,609,676,679],{},[479,677,678],{},"\u002Fcreate-bug-ticket"," to create an implementation-ready Jira Bug. Give it the\nobserved behaviour, a screenshot, or a trace link. It is not a bug-report inbox.\nIt captures enough technical detail for a human or agent to fix the defect.",[498,681,684],{"className":682,"code":683,"language":619,"meta":503},[617],"\u002Fcreate-bug-ticket checkout charged the card twice\n",[479,685,683],{"__ignoreMap":503},[647,687,689],{"id":688},"spike","Spike",[450,691,609,692,694,695,462],{},[479,693,668],{}," when the destination is known but a blocking unknown\nremains. A spike records decisions. Do not implement a spike with ",[479,696,697],{},"\u002Fimplement",[498,699,702],{"className":700,"code":701,"language":619,"meta":503},[617],"\u002Fcreate-spike-ticket we want to speed up order processing during peak hours\n",[479,703,701],{"__ignoreMap":503},[450,705,706,707,710,711,713,714,462],{},"After the decisions exist, use ",[479,708,709],{},"\u002Fresolve-spike-ticket"," and return to the\noriginating workflow. See ",[457,712,138],{"href":139},"\nand ",[457,715,150],{"href":151},[467,717,719],{"id":718},"run-a-project-through-six-stages","Run a project through six stages",[450,721,722,723,725,726,462],{},"Use this path for a new capability, several deliverables, or work that needs\nproduct discovery before implementation. Stages 0 and 1 use ",[479,724,489],{},".\nStages 2 to 5 use ",[479,727,485],{},[629,729],{":page-config":631,"code":730},"flowchart%20TD%0A%20%20%20%20S0%5B%22Stage%200%20%C2%B7%20%2Fcreate-project%22%5D%20--%3E%20A0%5B%22Notion%20project%20page%22%5D%0A%20%20%20%20A0%20--%3E%20S1%5B%22Stage%201%20%C2%B7%20%2Fcreate-prd%22%5D%0A%20%20%20%20S1%20--%3E%20A1%5B%22PRD%22%5D%0A%20%20%20%20A1%20--%3E%20S2%5B%22Stage%202%20%C2%B7%20%2Fcreate-tsd%22%5D%0A%20%20%20%20S2%20--%3E%20A2%5B%22TSD%22%5D%0A%20%20%20%20A2%20--%3E%20S3%5B%22Stage%203%20%C2%B7%20%2Fcreate-implementation-plan%22%5D%0A%20%20%20%20S3%20--%3E%20A3%5B%22Implementation%20plan%22%5D%0A%20%20%20%20A3%20--%3E%20S4%5B%22Stage%204%20%C2%B7%20%2Fcreate-tickets%22%5D%0A%20%20%20%20S4%20--%3E%20A4%5B%22Jira%20epic%20and%20issues%22%5D%0A%20%20%20%20A4%20--%3E%20S5%5B%22Stage%205%20%C2%B7%20%2Fimplement%22%5D%0A%20%20%20%20S5%20--%3E%20A5%5B%22Draft%20pull%20request%22%5D",[450,732,733],{},"Start at the earliest incomplete stage. Do not skip a missing artefact. Do not\ntreat a draft PRD or TSD as approved.",[548,735,736,755],{},[551,737,738],{},[554,739,740,743,746,749,752],{},[557,741,742],{},"Stage",[557,744,745],{},"Skill",[557,747,748],{},"You supply",[557,750,751],{},"The skill produces",[557,753,754],{},"Tools",[567,756,757,776,797,821,841,860],{},[554,758,759,762,767,770,773],{},[572,760,761],{},"0. Project setup",[572,763,764],{},[479,765,766],{},"\u002Fcreate-project",[572,768,769],{},"Name, owning team, and lifecycle stage",[572,771,772],{},"Notion Ideas\u002FInitiatives page",[572,774,775],{},"Notion",[554,777,778,781,786,789,795],{},[572,779,780],{},"1. PRD",[572,782,783],{},[479,784,785],{},"\u002Fcreate-prd",[572,787,788],{},"Project page and product judgement",[572,790,791,794],{},[479,792,793],{},"PRD — Feature name"," subpage",[572,796,775],{},[554,798,799,802,811,814,819],{},[572,800,801],{},"2. TSD",[572,803,804,807,808],{},[479,805,806],{},"\u002Fcreate-tsd"," or ",[479,809,810],{},"\u002Fcreate-tsd-guided",[572,812,813],{},"Project page, with PRD and design links when available",[572,815,816,794],{},[479,817,818],{},"TSD — Feature name",[572,820,775],{},[554,822,823,826,831,834,839],{},[572,824,825],{},"3. Implementation plan",[572,827,828],{},[479,829,830],{},"\u002Fcreate-implementation-plan",[572,832,833],{},"Approved PRD and completed TSD",[572,835,836,794],{},[479,837,838],{},"Implementation Plan — Feature name",[572,840,775],{},[554,842,843,846,851,854,857],{},[572,844,845],{},"4. Tickets",[572,847,848],{},[479,849,850],{},"\u002Fcreate-tickets",[572,852,853],{},"One plan milestone",[572,855,856],{},"Jira epic and one issue per repository ticket",[572,858,859],{},"Notion and Atlassian",[554,861,862,865,869,872,875],{},[572,863,864],{},"5. Implement",[572,866,867],{},[479,868,697],{},[572,870,871],{},"Implementation-ready Jira issue",[572,873,874],{},"Tested change and draft pull request",[572,876,877,878],{},"Atlassian and ",[479,879,880],{},"gh",[450,882,883,884,887],{},"Skill descriptions and templates are in the\n",[457,885,190],{"href":886},"..\u002Freference\u002Fmarketplace-skills"," reference.",[647,889,891],{"id":890},"stage-0-create-the-project-page","Stage 0: Create the project page",[498,893,896],{"className":894,"code":895,"language":619,"meta":503},[617],"\u002Fcreate-project Preview ChoicePlus themes. Team Cards and Payments\n",[479,897,895],{"__ignoreMap":503},[450,899,900,901,482,905,486,908,911],{},"The skill searches Ideas\u002FInitiatives for a similar project and asks you to\nconfirm it is not a duplicate. It then collects ",[902,903,904],"strong",{},"Name",[902,906,907],{},"Team",[902,909,910],{},"SDL",".\nLater stages locate context from this page. Do not skip it.",[450,913,914],{},"You can point the skill at an existing Notion page. It can move that page under\nthe project, or copy pasted or local content into a new subpage.",[647,916,918],{"id":917},"stage-1-write-the-prd","Stage 1: Write the PRD",[498,920,923],{"className":921,"code":922,"language":619,"meta":503},[617],"\u002Fcreate-prd \u003Cproject page link>\n",[479,924,922],{"__ignoreMap":503},[450,926,927],{},"Confirm the scope class before the skill drafts: new product, single-system\nfeature, multi-system feature, or small change. The skill scales optional\nsections to that class.",[450,929,930],{},"Every PRD includes these core sections:",[472,932,933,936,939,942,945,948],{},[475,934,935],{},"Problem statement",[475,937,938],{},"Goals and success metrics",[475,940,941],{},"Solution overview",[475,943,944],{},"Functional requirements",[475,946,947],{},"Out of scope",[475,949,950],{},"Effort and feasibility",[450,952,953],{},"You supply the product judgement. The skill structures it. Approve the PRD\nbefore you start the TSD.",[647,955,957],{"id":956},"stage-2-write-the-tsd","Stage 2: Write the TSD",[450,959,960,961,462],{},"The TSD is a Notion subpage titled ",[479,962,818],{},[964,965,966,971,976],"ul",{},[475,967,609,968,970],{},[479,969,806],{}," when the context supports every required section. The skill\nwrites the complete document. It must not invent missing decisions.",[475,972,609,973,975],{},[479,974,810],{}," when a required section still needs context. The\nskill creates an empty scaffold, then fills one section at a time.",[475,977,609,978,981],{},[479,979,980],{},"\u002Fcreate-tsd-section"," to write or revise one heading on an existing TSD.",[498,983,986],{"className":984,"code":985,"language":619,"meta":503},[617],"\u002Fcreate-tsd \u003Cproject page link>\n",[479,987,985],{"__ignoreMap":503},[498,989,992],{"className":990,"code":991,"language":619,"meta":503},[617],"\u002Fcreate-tsd-section Architecture \u003CTSD link>\n",[479,993,991],{"__ignoreMap":503},[450,995,996],{},"Required sections:",[548,998,999,1009],{},[551,1000,1001],{},[554,1002,1003,1006],{},[557,1004,1005],{},"Section",[557,1007,1008],{},"Covers",[567,1010,1011,1019,1027,1035,1043,1051],{},[554,1012,1013,1016],{},[572,1014,1015],{},"Overview and Scope",[572,1017,1018],{},"Problem, scope, and non-goals",[554,1020,1021,1024],{},[572,1022,1023],{},"Architecture",[572,1025,1026],{},"Systems involved and service boundaries",[554,1028,1029,1032],{},[572,1030,1031],{},"Data Model & API Contracts",[572,1033,1034],{},"Schema, migrations, and request or response shapes",[554,1036,1037,1040],{},[572,1038,1039],{},"Trade-off Analysis",[572,1041,1042],{},"Alternatives and why this approach won",[554,1044,1045,1048],{},[572,1046,1047],{},"Edge Cases",[572,1049,1050],{},"Failure modes and edge cases",[554,1052,1053,1056],{},[572,1054,1055],{},"Dependencies & Open Risks",[572,1057,1058],{},"Blockers, third-party risk, and open questions",[450,1060,1061],{},"Optional sections, included only when relevant:",[548,1063,1064,1073],{},[551,1065,1066],{},[554,1067,1068,1070],{},[557,1069,1005],{},[557,1071,1072],{},"Include when",[567,1074,1075,1083,1091],{},[554,1076,1077,1080],{},[572,1078,1079],{},"Non-Functional Requirements",[572,1081,1082],{},"Specific targets beyond the organisational baseline",[554,1084,1085,1088],{},[572,1086,1087],{},"Rollout",[572,1089,1090],{},"Phased delivery, feature flags, or non-trivial rollback",[554,1092,1093,1096],{},[572,1094,1095],{},"Observability",[572,1097,1098],{},"New runtime behaviour that operators must monitor",[450,1100,1101,1102,462],{},"You own architecture, trade-offs, and technical approval. Do not advance while\nmaterial sections or decisions remain unresolved. Route a blocking unknown to\n",[479,1103,668],{},[647,1105,1107],{"id":1106},"stage-3-write-the-implementation-plan","Stage 3: Write the implementation plan",[498,1109,1112],{"className":1110,"code":1111,"language":619,"meta":503},[617],"\u002Fcreate-implementation-plan \u003Cproject page link>\n",[479,1113,1111],{"__ignoreMap":503},[450,1115,1116],{},"The skill stops if the PRD or TSD is missing. It reads both documents, checks\nthe repository against the TSD, and shows the milestone and task tree before it\nwrites the Notion page.",[450,1118,1119],{},"Use foundational milestones only where shared work unblocks later tasks. Slice\nthe rest into vertical, independently demoable outcomes. Do not slice by\nfrontend, backend, and database layers.",[450,1121,1122],{},"Approve task boundaries before the skill writes. Oversized slices risk context\nloss in ticket creation. Tiny slices create coordination overhead.",[647,1124,1126],{"id":1125},"stage-4-create-tickets-for-one-milestone","Stage 4: Create tickets for one milestone",[498,1128,1131],{"className":1129,"code":1130,"language":619,"meta":503},[617],"\u002Fcreate-tickets \u003Cimplementation plan link>\n",[479,1132,1130],{"__ignoreMap":503},[450,1134,1135],{},"Create tickets for one milestone at a time, not the whole project. The skill\nexplores each resolved repository, then drafts one ticket per repository\noutcome. Cross-repository plan tasks become separate tickets.",[450,1137,1138],{},"Each ticket includes context, implementation criteria, files when known,\ntesting, acceptance criteria, and related links. Treat the ticket as the prompt\nthat a developer or agent will pick up.",[450,1140,1141],{},"The skill shows a full dry run. Confirm it before any Jira write. After a\nsuccessful publish, it writes issue keys back onto the Notion plan.",[647,1143,1145],{"id":1144},"stage-5-implement-the-ticket","Stage 5: Implement the ticket",[498,1147,1150],{"className":1148,"code":1149,"language":619,"meta":503},[617],"\u002Fimplement AI-123\n",[479,1151,1149],{"__ignoreMap":503},[450,1153,1154,1155,1158,1159,1162],{},"Start from a branch named ",[479,1156,1157],{},"{ticketId}-{title}",", for example\n",[479,1160,1161],{},"AI-123-add-csv-export",". The skill can check out that branch from the ticket\nkey.",[450,1164,1165,1166,1169,1170,1173,1174,462],{},"The skill fetches the ticket and parent context, stops on vague requirements,\nconfirms an approach, builds test-first with ",[479,1167,1168],{},"\u002Ftdd",", commits with\n",[479,1171,1172],{},"\u002Fconventional-commit",", runs repository verification, and opens a draft pull\nrequest with ",[479,1175,1176],{},"\u002Fraise-pr",[450,1178,1179,1180,1182],{},"Do not use ",[479,1181,697],{}," on a spike. Resolve the spike first, then return to the\nplanning workflow.",[467,1184,1186],{"id":1185},"confirm-the-result","Confirm the result",[450,1188,1189],{},"You are done with a standalone ticket when Jira contains a Bug or Enhancement\nthat is ready to implement and that you reviewed.",[450,1191,1192],{},"You are done with a project stage when the named artefact exists, you have\napproved it, and the next stage can read it.",[450,1194,1195],{},"You are done with implementation when GitHub has a draft pull request for the\nticket branch. Human review and merge still follow.",[450,1197,1198,1199,1201,1202,462],{},"If a skill stops because Notion, Atlassian, or ",[479,1200,880],{}," is missing, return to\n",[457,1203,130],{"href":131},[1205,1206,1207],"style",{},"html pre.shiki code .s-Z4r, html code.shiki .s-Z4r{--shiki-dark:#B392F0;--shiki-default:#6F42C1}html pre.shiki code .sg6BJ, html code.shiki .sg6BJ{--shiki-dark:#9ECBFF;--shiki-default:#032F62}html pre.shiki code .s0DvM, html code.shiki .s0DvM{--shiki-dark:#79B8FF;--shiki-default:#005CC5}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 .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);}",{"title":503,"searchDepth":1209,"depth":1209,"links":1210},3,[1211,1213,1214,1215,1220,1228],{"id":469,"depth":1212,"text":470},2,{"id":538,"depth":1212,"text":539},{"id":605,"depth":1212,"text":606},{"id":641,"depth":1212,"text":642,"children":1216},[1217,1218,1219],{"id":649,"depth":1209,"text":650},{"id":672,"depth":1209,"text":673},{"id":688,"depth":1209,"text":689},{"id":718,"depth":1212,"text":719,"children":1221},[1222,1223,1224,1225,1226,1227],{"id":890,"depth":1209,"text":891},{"id":917,"depth":1209,"text":918},{"id":956,"depth":1209,"text":957},{"id":1106,"depth":1209,"text":1107},{"id":1125,"depth":1209,"text":1126},{"id":1144,"depth":1209,"text":1145},{"id":1185,"depth":1212,"text":1186},{},"md",{},{"title":158,"description":452},"2YqtWiKK2JYcEG96Pr095aDbNbjHN5-rgERFr8QXJLE",[1235,1236],{"title":154,"path":155,"stem":156,"children":-1},{"title":162,"path":163,"stem":164,"children":-1},1789777547381]