[{"data":1,"prerenderedAt":530},["ShallowReactive",2],{"navigation":3,"\u002Fagents\u002Fagent-skills":170,"\u002Fagents\u002Fagent-skills-surround":527},[4,25,104,150,160],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"Guides","\u002Fguides","2.guides",[30,35,40,45,50,55,60,65,70,75,79,84,89,94,99],{"title":31,"path":32,"stem":33,"icon":34},"Seeds and TestBiome","\u002Fguides\u002Fseeds-and-testbiome","2.guides\u002F01.seeds-and-testbiome","i-lucide-sprout",{"title":36,"path":37,"stem":38,"icon":39},"Blueprints","\u002Fguides\u002Fblueprints","2.guides\u002F02.blueprints","i-lucide-drafting-compass",{"title":41,"path":42,"stem":43,"icon":44},"Customizing","\u002Fguides\u002Fcustomizing","2.guides\u002F03.customizing","i-lucide-sliders-horizontal",{"title":46,"path":47,"stem":48,"icon":49},"Parent\u002Fchild chains and .Under","\u002Fguides\u002Fparents-and-children","2.guides\u002F04.parents-and-children","i-lucide-git-fork",{"title":51,"path":52,"stem":53,"icon":54},"Fan-out","\u002Fguides\u002Ffan-out","2.guides\u002F05.fan-out","i-lucide-split",{"title":56,"path":57,"stem":58,"icon":59},"Sequences","\u002Fguides\u002Fsequences","2.guides\u002F06.sequences","i-lucide-list-ordered",{"title":61,"path":62,"stem":63,"icon":64},"Time and precision","\u002Fguides\u002Ftime-and-precision","2.guides\u002F07.time-and-precision","i-lucide-clock",{"title":66,"path":67,"stem":68,"icon":69},"Transients","\u002Fguides\u002Ftransients","2.guides\u002F08.transients","i-lucide-ghost",{"title":71,"path":72,"stem":73,"icon":74},"Aggregates","\u002Fguides\u002Faggregates","2.guides\u002F09.aggregates","i-lucide-boxes",{"title":76,"path":77,"stem":78,"icon":74},"Input blueprints","\u002Fguides\u002Finput-blueprints","2.guides\u002F09.input-blueprints",{"title":80,"path":81,"stem":82,"icon":83},"Save hooks and global defaults","\u002Fguides\u002Fsave-hooks-and-defaults","2.guides\u002F10.save-hooks-and-defaults","i-lucide-webhook",{"title":85,"path":86,"stem":87,"icon":88},"EF Core store","\u002Fguides\u002Fef-core-store","2.guides\u002F11.ef-core-store","i-lucide-database",{"title":90,"path":91,"stem":92,"icon":93},"No-DB unit tests","\u002Fguides\u002Fno-db-unit-tests","2.guides\u002F12.no-db-unit-tests","i-lucide-flask-conical",{"title":95,"path":96,"stem":97,"icon":98},"Generated grafts and scenario helpers","\u002Fguides\u002Fscenario-helpers-and-sugar","2.guides\u002F13.scenario-helpers-and-sugar","i-lucide-wand-sparkles",{"title":100,"path":101,"stem":102,"icon":103},"Constructor setup","\u002Fguides\u002Fconstructor-setup","2.guides\u002F14.constructor-setup","i-lucide-blocks",{"title":105,"path":106,"stem":107,"children":108,"icon":6},"Examples","\u002Fexamples","3.examples\u002F1.index",[109,111,116,121,126,130,135,140,145],{"title":105,"path":106,"stem":107,"icon":110},"i-lucide-library",{"title":112,"path":113,"stem":114,"icon":115},"Code reviews","\u002Fexamples\u002Fcode-reviews","3.examples\u002F2.code-reviews","i-lucide-git-pull-request",{"title":117,"path":118,"stem":119,"icon":120},"Membership","\u002Fexamples\u002Fmembership","3.examples\u002F3.membership","i-lucide-users",{"title":122,"path":123,"stem":124,"icon":125},"Board","\u002Fexamples\u002Fboard","3.examples\u002F4.board","i-lucide-kanban",{"title":127,"path":128,"stem":129,"icon":44},"Custom seed","\u002Fexamples\u002Fcustom-seed","3.examples\u002F5.custom-seed",{"title":131,"path":132,"stem":133,"icon":134},"Commerce","\u002Fexamples\u002Fcommerce","3.examples\u002F6.commerce","i-lucide-shopping-cart",{"title":136,"path":137,"stem":138,"icon":139},"Project management","\u002Fexamples\u002Fproject-management","3.examples\u002F7.project-management","i-lucide-folder-kanban",{"title":141,"path":142,"stem":143,"icon":144},"Learning","\u002Fexamples\u002Flearning","3.examples\u002F8.learning","i-lucide-graduation-cap",{"title":146,"path":147,"stem":148,"icon":149},"Docs ingest","\u002Fexamples\u002Fdocs-ingest","3.examples\u002F9.docs-ingest","i-lucide-file-search",{"title":151,"icon":6,"path":152,"stem":153,"children":154,"page":6},"Reference","\u002Freference","4.reference",[155],{"title":156,"path":157,"stem":158,"icon":159},"API cheat sheet","\u002Freference\u002Fapi-cheat-sheet","4.reference\u002F1.api-cheat-sheet","i-lucide-list-checks",{"title":161,"icon":6,"path":162,"stem":163,"children":164,"page":6},"Agent Skills","\u002Fagents","5.agents",[165],{"title":166,"path":167,"stem":168,"icon":169},"Agent skills","\u002Fagents\u002Fagent-skills","5.agents\u002F1.agent-skills","i-lucide-bot",{"id":171,"title":166,"body":172,"description":520,"extension":521,"links":522,"meta":523,"navigation":524,"path":167,"seo":525,"stem":168,"__hash__":526},"docs\u002F5.agents\u002F1.agent-skills.md",{"type":173,"value":174,"toc":515},"minimark",[175,191,280,296,301,320,324,335,455,471,475,496,511],[176,177,178,179,185,186,190],"p",{},"An agent can copy a fluent chain without understanding why a parent, sequence, or clock was chosen. The repository includes two ",[180,181,161],"a",{"href":182,"rel":183},"https:\u002F\u002Fagentskills.io",[184],"nofollow"," to give it that guidance: one for writing tests, another for maintaining the infrastructure. Each is a folder with a ",[187,188,189],"code",{},"SKILL.md"," and supporting references.",[192,193,194,210],"table",{},[195,196,197],"thead",{},[198,199,200,204,207],"tr",{},[201,202,203],"th",{},"Skill",[201,205,206],{},"Use it when…",[201,208,209],{},"Source",[211,212,213,253],"tbody",{},[198,214,215,221,244],{},[216,217,218],"td",{},[187,219,220],{},"zeeq-biome-tests",[216,222,223,224,227,228,231,232,235,236,239,240,243],{},"Writing, reading or fixing test setup: ",[187,225,226],{},"TestBiome.Start(...)"," chains, generated ",[187,229,230],{},"AddX(out var x)"," grafts, ",[187,233,234],{},".Under",", ",[187,237,238],{},".Transient()",", sequences, ",[187,241,242],{},"FakeTimeProvider",". Also for compile errors or Biome exceptions in a test.",[216,245,246],{},[180,247,250],{"href":248,"rel":249},"https:\u002F\u002Fgithub.com\u002Fzeeq-ai\u002Fzeeq-biome\u002Ftree\u002Fmain\u002F.agents\u002Fskills\u002Fzeeq-biome-tests",[184],[187,251,252],{},".agents\u002Fskills\u002Fzeeq-biome-tests",[198,254,255,260,271],{},[216,256,257],{},[187,258,259],{},"zeeq-biome-blueprints",[216,261,262,263,266,267,270],{},"Creating or changing test infrastructure: the seed, ",[187,264,265],{},"TestBiome",", blueprints, graft catalogs and attributes, traits, ",[187,268,269],{},"Derive",", sequences, scenario helpers, options, and EF Core wiring.",[216,272,273],{},[180,274,277],{"href":275,"rel":276},"https:\u002F\u002Fgithub.com\u002Fzeeq-ai\u002Fzeeq-biome\u002Ftree\u002Fmain\u002F.agents\u002Fskills\u002Fzeeq-biome-blueprints",[184],[187,278,279],{},".agents\u002Fskills\u002Fzeeq-biome-blueprints",[281,282,283],"tip",{},[176,284,285,292,293,295],{},[286,287,288,289,291],"strong",{},"Writing tests with existing grafts? Use ",[187,290,220],{},"."," Adding a new entity type, blueprint or option? Use ",[187,294,259],{},". An agent that loads both can switch between them.",[297,298,300],"h2",{"id":299},"what-the-skills-teach","What the skills teach",[302,303,304,314],"code-group",{},[305,306,312],"pre",{"className":307,"code":309,"filename":220,"language":310,"meta":311},[308],"language-text","Reading a chain      every Add re-anchors; .Under jumps back\nWriting a chain      singular graft; out _ for the unasserted;\n                     customize only the property under test\nComma vs plus        a comma is a new entity, + stacks traits on one\nFan-out              children multiply per parent, flat array in parent order\nTime                 never DateTimeOffset.UtcNow; share a FakeTimeProvider\nCommon mistakes      compiler errors and runtime exceptions, with fixes\n","text","",[187,313,309],{"__ignoreMap":311},[305,315,318],{"className":316,"code":317,"filename":259,"language":310,"meta":311},[308],"Per entity type      one blueprint + generated graft methods\n                     (+ optional traits and scenario helpers)\nFactory rules        valid and uninteresting; ctx.NewId, ctx.Now;\n                     typed parent, ctx.Ancestor\nDerive and sequences fill-only; declare in order; PerParent \u002F Per\u003CT>;\n                     never ctx.Last for wiring\nOptions              SeedEntities, Default, BeforeSave\u002FAfterSave,\n                     TimePrecision, Ids; EF store wiring\nMistakes to avoid    a derived property set in the factory, index + 1 numbering\n",[187,319,317],{"__ignoreMap":311},[297,321,323],{"id":322},"install-them-in-your-repository","Install them in your repository",[176,325,326,327,330,331,334],{},"Copy the two folders into the skills directory your agent reads. This repository keeps them in ",[187,328,329],{},".agents\u002Fskills\u002F"," and symlinks ",[187,332,333],{},".claude\u002Fskills"," to it:",[302,336,337,418],{},[305,338,343],{"className":339,"code":340,"filename":341,"language":342,"meta":311,"style":311},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","# From the root of your repository\ngit clone --depth 1 https:\u002F\u002Fgithub.com\u002Fzeeq-ai\u002Fzeeq-biome \u002Ftmp\u002Fzeeq-biome\nmkdir -p .agents\u002Fskills\ncp -R \u002Ftmp\u002Fzeeq-biome\u002F.agents\u002Fskills\u002Fzeeq-biome-tests .agents\u002Fskills\u002F\ncp -R \u002Ftmp\u002Fzeeq-biome\u002F.agents\u002Fskills\u002Fzeeq-biome-blueprints .agents\u002Fskills\u002F\n","Copy","bash",[187,344,345,354,379,391,406],{"__ignoreMap":311},[346,347,350],"span",{"class":348,"line":349},"line",1,[346,351,353],{"class":352},"sutJx","# From the root of your repository\n",[346,355,357,361,365,369,373,376],{"class":348,"line":356},2,[346,358,360],{"class":359},"sbgvK","git",[346,362,364],{"class":363},"s_sjI"," clone",[346,366,368],{"class":367},"stzsN"," --depth",[346,370,372],{"class":371},"srdBf"," 1",[346,374,375],{"class":363}," https:\u002F\u002Fgithub.com\u002Fzeeq-ai\u002Fzeeq-biome",[346,377,378],{"class":363}," \u002Ftmp\u002Fzeeq-biome\n",[346,380,382,385,388],{"class":348,"line":381},3,[346,383,384],{"class":359},"mkdir",[346,386,387],{"class":367}," -p",[346,389,390],{"class":363}," .agents\u002Fskills\n",[346,392,394,397,400,403],{"class":348,"line":393},4,[346,395,396],{"class":359},"cp",[346,398,399],{"class":367}," -R",[346,401,402],{"class":363}," \u002Ftmp\u002Fzeeq-biome\u002F.agents\u002Fskills\u002Fzeeq-biome-tests",[346,404,405],{"class":363}," .agents\u002Fskills\u002F\n",[346,407,409,411,413,416],{"class":348,"line":408},5,[346,410,396],{"class":359},[346,412,399],{"class":367},[346,414,415],{"class":363}," \u002Ftmp\u002Fzeeq-biome\u002F.agents\u002Fskills\u002Fzeeq-biome-blueprints",[346,417,405],{"class":363},[305,419,423],{"className":339,"code":420,"filename":421,"highlights":422,"language":342,"meta":311,"style":311},"# Make Claude Code discover the same folder\nmkdir -p .claude\nln -s ..\u002F.agents\u002Fskills .claude\u002Fskills\n","Claude Code symlink",[381],[187,424,425,430,439],{"__ignoreMap":311},[346,426,427],{"class":348,"line":349},[346,428,429],{"class":352},"# Make Claude Code discover the same folder\n",[346,431,432,434,436],{"class":348,"line":356},[346,433,384],{"class":359},[346,435,387],{"class":367},[346,437,438],{"class":363}," .claude\n",[346,440,443,446,449,452],{"class":441,"line":381},[348,442],"highlight",[346,444,445],{"class":359},"ln",[346,447,448],{"class":367}," -s",[346,450,451],{"class":363}," ..\u002F.agents\u002Fskills",[346,453,454],{"class":363}," .claude\u002Fskills\n",[456,457,458],"note",{},[176,459,460,461,463,464,467,468,470],{},"Skill folders must keep their layout (",[187,462,189],{}," plus ",[187,465,466],{},"references\u002F","), because each ",[187,469,189],{}," links to its references by relative path. Check your agent's documentation for where it loads skills from.",[297,472,474],{"id":473},"give-agents-the-docs-too","Give agents the docs, too",[176,476,477,478,481,482,485,486,491,492,495],{},"Every page on this site can be handed to an agent as Markdown: use ",[286,479,480],{},"Copy page"," or ",[286,483,484],{},"View as Markdown"," at the top of any page. The site also publishes ",[180,487,489],{"href":488},"\u002Fllms.txt",[187,490,488],{}," and ",[187,493,494],{},"\u002Fllms-full.txt"," for tools that read them.",[281,497,498],{},[176,499,500,501,510],{},"A good prompt is short: ",[502,503,504,505,509],"em",{},"\"Read ",[180,506,507],{"href":507,"rel":508},"https:\u002F\u002Fzeeq-ai.github.io\u002Fzeeq-biome\u002Fraw\u002Fguides\u002Fcustomizing.md",[184],", then rewrite this test's setup with Biome.\""," The skills cover the details, so the prompt doesn't have to.",[512,513,514],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}",{"title":311,"searchDepth":349,"depth":356,"links":516},[517,518,519],{"id":299,"depth":356,"text":300},{"id":322,"depth":356,"text":323},{"id":473,"depth":356,"text":474},"Two agent skills that teach coding agents to write Biome test chains and author blueprints.","md",null,{},{"icon":169},{"title":166,"description":520},"CcaybaKQ_2ITVYiUluPsRnWNMZM7JTCZIvk4ptUr7KI",[528,522],{"title":156,"path":157,"stem":158,"description":529,"icon":159,"children":-1},"Every public member of Zeeq.Biome at a glance, with the pipeline order and common errors.",1791831053000]