[{"data":1,"prerenderedAt":1171},["ShallowReactive",2],{"docs-sections":3,"docs-page-\u002Fdocs\u002Finterfaces":124},[4,9,13,17,21,25,30,34,38,42,46,50,54,58,62,66,71,75,79,83,88,92,96,100,104,108,112,116,120],{"path":5,"title":6,"description":7,"group":8},"\u002Fdocs","Introduction","pdd-kit brings Product-Driven Development to coding agents through a Git-tracked Product Model and an automatic verification loop.","Get started",{"path":10,"title":11,"description":12,"group":8},"\u002Fdocs\u002Finstallation","Installation","Install the pdd-kit skills into your coding agent at project or global scope.",{"path":14,"title":15,"description":16,"group":8},"\u002Fdocs\u002Ffrom-your-repo","From your repo","Map what an existing repository already does into a Product Model, review it, then check the code against it.",{"path":18,"title":19,"description":20,"group":8},"\u002Fdocs\u002Ffrom-an-idea","From an idea","Decide what a new product does, approve its Product Model, then ask your agent to implement it while verify checks each part.",{"path":22,"title":23,"description":24,"group":8},"\u002Fdocs\u002Ffrom-a-blueprint","From a Blueprint","Pull a reviewed Product Model for a common kind of product instead of starting blank, adapt it if needed, then ask your agent to implement it.",{"path":26,"title":27,"description":28,"group":29},"\u002Fdocs\u002Fproduct-model","Model overview","The Product Model in five minutes (what the product-model\u002F folder holds, what each resource type is for, and how to tell them apart).","Product Model",{"path":31,"title":32,"description":33,"group":29},"\u002Fdocs\u002Fproduct","Product","The one product a Product Model describes (its name, its promise, the languages it is delivered in, its known boundaries, and what it needs to be published as a Blueprint).",{"path":35,"title":36,"description":37,"group":29},"\u002Fdocs\u002Fentities","Entities","The things your product keeps or reasons about (orders, products, settings) and the people and systems that act on it, with what it knows about each and the States it moves through.",{"path":39,"title":40,"description":41,"group":29},"\u002Fdocs\u002Finterfaces","Interfaces","The web apps, mobile apps, CLIs, APIs and webhooks through which people and systems reach your product, the parts inside them, and the places where facts and abilities are met.",{"path":43,"title":44,"description":45,"group":29},"\u002Fdocs\u002Fdomains","Domains","Optional subject areas, such as ordering or billing, that follow the Product's own sections and group its Capabilities and Entities without owning them.",{"path":47,"title":48,"description":49,"group":29},"\u002Fdocs\u002Fcapabilities","Capabilities","The things your product lets someone do, where each is offered, and the Capability Scenarios that show each one working.",{"path":51,"title":52,"description":53,"group":29},"\u002Fdocs\u002Fjourneys","Journeys","Goals where your product carries a person from one Capability into the next, and the Journey Scenarios that walk each path.",{"path":55,"title":56,"description":57,"group":29},"\u002Fdocs\u002Fbusiness-rules","Business Rules","What must always hold in your product, and who may do what (constraints, derivations and permissions), each stated once with everything it applies to.",{"path":59,"title":60,"description":61,"group":29},"\u002Fdocs\u002Fvariations","Variations","Feature flags, settings, plan tiers, A\u002FB tests and API versions, when your product works in more than one supported way and something decides which way applies.",{"path":63,"title":64,"description":65,"group":29},"\u002Fdocs\u002Freferences","References","Point any resource at material kept outside the model (code, a PRD, a design, research), saying what it is and why it is attached.",{"path":67,"title":68,"description":69,"group":70},"\u002Fdocs\u002Fskills","Skills overview","Three self-contained skills cover adoption, intended product change, and automatic verification-to-resolution.","Skills",{"path":72,"title":73,"description":74,"group":70},"\u002Fdocs\u002Fskill-pdd-map","map","Create or expand a Product Model from the code you already have, without running it.",{"path":76,"title":77,"description":78,"group":70},"\u002Fdocs\u002Fskill-pdd-ideate","ideate","Explore or define intended behavior, then write only the exact Product Model change you approve.",{"path":80,"title":81,"description":82,"group":70},"\u002Fdocs\u002Fskill-pdd-verify","verify","Implement the Product Model in code, in phases, or check that the model and the code agree, and resolve every gap you approve until they do or something blocks.",{"path":84,"title":85,"description":86,"group":87},"\u002Fdocs\u002Fcli","CLI overview","Install skills, lint and view a Product Model locally, and move Blueprints between repositories with the pdd-kit CLI.","CLI",{"path":89,"title":90,"description":91,"group":87},"\u002Fdocs\u002Fcli-install","install","Install the bundled pdd-kit agent skills safely for selected AI harnesses and scopes.",{"path":93,"title":94,"description":95,"group":87},"\u002Fdocs\u002Fcli-update","update","Refresh only pdd-kit-managed skill installations in project or global scope.",{"path":97,"title":98,"description":99,"group":87},"\u002Fdocs\u002Fcli-lint","lint","Check that a Product Model is structurally sound (files, relationships, Steps, Rules and References) without claiming it matches the code.",{"path":101,"title":102,"description":103,"group":87},"\u002Fdocs\u002Fcli-view","view","Open a Product Model as a private local report, from your checkout or from a GitHub repository.",{"path":105,"title":106,"description":107,"group":87},"\u002Fdocs\u002Fcli-export","blueprint export","Compile a Product Model into a portable Product Report that can move safely between repositories.",{"path":109,"title":110,"description":111,"group":87},"\u002Fdocs\u002Fcli-open","blueprint open","Expand a local Product Report into a canonical Product Model.",{"path":113,"title":114,"description":115,"group":87},"\u002Fdocs\u002Fcli-list","blueprint list","List the published Blueprints you can pull.",{"path":117,"title":118,"description":119,"group":87},"\u002Fdocs\u002Fcli-pull","blueprint pull","Pull a published Blueprint into the current directory.",{"path":121,"title":122,"description":123,"group":87},"\u002Fdocs\u002Fcli-contribute","blueprint contribute","Open a pull request proposing your Product Model as a Blueprint.",{"id":125,"title":40,"body":126,"description":41,"extension":323,"group":29,"meta":1146,"navigation":399,"order":414,"path":39,"seo":1168,"stem":1169,"__hash__":1170},"docs\u002Fdocs\u002Finterfaces.md",{"type":127,"value":128,"toc":1127},"minimark",[129,133,155,160,250,254,303,307,317,424,519,523,536,539,545,550,597,605,609,618,693,699,747,756,759,765,769,801,805,815,947,993,996,999,1016,1019,1023,1030,1033,1036,1039,1042,1055,1059,1062,1123],[130,131,40],"h1",{"id":132},"interfaces",[134,135,136,140,141,144,145,148,149,154],"p",{},[137,138,139],"strong",{},"An Interface is a supported way people or systems reach your Product",": a web\napp, a mobile app, a CLI, a partner API, an inbound webhook. Inside it live\n",[137,142,143],{},"Experiences",", its parts, and ",[137,146,147],{},"Screens",", its places: what an Actor can reach,\nsee and do, never how it looks (see\n",[150,151,153],"a",{"href":152},"#is-this-a-design-spec","Is this a design spec?",").",[156,157,159],"h2",{"id":158},"in-practice","In practice",[161,162,163,182],"table",{},[164,165,166],"thead",{},[167,168,169,173,176],"tr",{},[170,171,172],"th",{},"In your product",[170,174,175],{},"Interface",[170,177,178],{},[179,180,181],"code",{},"type",[183,184,185,199,212,224,237],"tbody",{},[167,186,187,191,194],{},[188,189,190],"td",{},"The shop's website, where shoppers browse and buy",[188,192,193],{},"Customer web",[188,195,196],{},[179,197,198],{},"web",[167,200,201,204,207],{},[188,202,203],{},"The same shop as an app",[188,205,206],{},"Customer mobile",[188,208,209],{},[179,210,211],{},"mobile-app",[167,213,214,217,220],{},[188,215,216],{},"The console where operators resolve orders",[188,218,219],{},"Admin web",[188,221,222],{},[179,223,198],{},[167,225,226,229,232],{},[188,227,228],{},"The endpoint the payment gateway calls to report settlements",[188,230,231],{},"Payment webhook",[188,233,234],{},[179,235,236],{},"webhook",[167,238,239,242,245],{},[188,240,241],{},"The commands operators run in a terminal",[188,243,244],{},"Operator CLI",[188,246,247],{},[179,248,249],{},"cli",[156,251,253],{"id":252},"when-you-create-one","When you create one",[255,256,257,264,280,286,292],"ul",{},[258,259,260,263],"li",{},[137,261,262],{},"Create one for every supported way in",": something whose behavior you could\nrequire and check on its own.",[258,265,266,269,270,274,275,279],{},[137,267,268],{},"Inbound only."," A payment processor you charge or a mail provider you send\nthrough is not one; the ",[150,271,273],{"href":272},".\u002Fcapabilities","Capability"," that calls it says so.\nWhen the third party calls ",[276,277,278],"em",{},"you"," back (a webhook), that is an Interface, and\nthe third party is its Actor.",[258,281,282,285],{},[137,283,284],{},"Not every deployable."," Frameworks, packages, internal APIs that serve your\nown web app, and background workers are implementation, not Interfaces.",[258,287,288,291],{},[137,289,290],{},"One type each."," A website and an app are two Interfaces, even when they do\nthe same thing.",[258,293,294,297,298,302],{},[137,295,296],{},"No commands or endpoints as resources."," A CLI's syntax lives in its help and\nan API's payloads in its OpenAPI file, attached as a\n",[150,299,301],{"href":300},".\u002Freferences","Reference","; the model holds the Capabilities behind them.",[156,304,306],{"id":305},"the-file","The file",[134,308,309,312,313,316],{},[179,310,311],{},"interfaces\u002F\u003Cid>.md",", or ",[179,314,315],{},"interfaces\u002F\u003Cid>\u002Finterface.md"," once it holds\nExperiences or Screens.",[318,319,325],"pre",{"className":320,"code":321,"filename":322,"language":323,"meta":324,"style":324},"language-md shiki shiki-themes pdd-kit-brand-warm pdd-kit-brand-warm material-theme-palenight","---\ntype: web\nactors: [shopper]\nentryPoints:\n  - web: \u002F\n---\n\n# Customer web application\n\nThe browser interface through which shoppers browse and buy.\n","interfaces\u002Fcustomer-web\u002Finterface.md","md","",[179,326,327,336,349,366,375,389,394,401,412,417],{"__ignoreMap":324},[328,329,332],"span",{"class":330,"line":331},"line",1,[328,333,335],{"class":334},"sjkiA","---\n",[328,337,339,342,345],{"class":330,"line":338},2,[328,340,181],{"class":341},"sg1QC",[328,343,344],{"class":334},":",[328,346,348],{"class":347},"s9fN-"," web\n",[328,350,352,355,357,360,363],{"class":330,"line":351},3,[328,353,354],{"class":341},"actors",[328,356,344],{"class":334},[328,358,359],{"class":334}," [",[328,361,362],{"class":347},"shopper",[328,364,365],{"class":334},"]\n",[328,367,369,372],{"class":330,"line":368},4,[328,370,371],{"class":341},"entryPoints",[328,373,374],{"class":334},":\n",[328,376,378,381,384,386],{"class":330,"line":377},5,[328,379,380],{"class":334},"  -",[328,382,383],{"class":341}," web",[328,385,344],{"class":334},[328,387,388],{"class":347}," \u002F\n",[328,390,392],{"class":330,"line":391},6,[328,393,335],{"class":334},[328,395,397],{"class":330,"line":396},7,[328,398,400],{"emptyLinePlaceholder":399},true,"\n",[328,402,404,408],{"class":330,"line":403},8,[328,405,407],{"class":406},"sKwZ8","#",[328,409,411],{"class":410},"sBbkF"," Customer web application\n",[328,413,415],{"class":330,"line":414},9,[328,416,400],{"emptyLinePlaceholder":399},[328,418,420],{"class":330,"line":419},10,[328,421,423],{"class":422},"szETn","The browser interface through which shoppers browse and buy.\n",[161,425,426,436],{},[164,427,428],{},[167,429,430,433],{},[170,431,432],{},"Field",[170,434,435],{},"Says",[183,437,438,483,492,504],{},[167,439,440,445],{},[188,441,442,444],{},[179,443,181],{}," (required)",[188,446,447,449,450,449,452,449,455,449,457,449,460,449,462,449,465,449,468,471,472,475,476,478,479,482],{},[179,448,198],{},", ",[179,451,211],{},[179,453,454],{},"desktop-app",[179,456,249],{},[179,458,459],{},"api",[179,461,236],{},[179,463,464],{},"messaging",[179,466,467],{},"voice",[179,469,470],{},"device"," or ",[179,473,474],{},"agent",": how Actors interact, never the technology (",[179,477,198],{},", not ",[179,480,481],{},"react",")",[167,484,485,489],{},[188,486,487,444],{},[179,488,354],{},[188,490,491],{},"Who uses it: Entities that act",[167,493,494,498],{},[188,495,496],{},[179,497,371],{},[188,499,500,501,503],{},"Where Actors arrive, keyed by this Interface's ",[179,502,181],{},", or by another Interface's id when they arrive from there",[167,505,506,511],{},[188,507,508],{},[179,509,510],{},"languages",[188,512,513,514,518],{},"The ",[150,515,517],{"href":516},".\u002Fproduct#the-file","Product's languages"," this Interface serves, when it serves fewer",[156,520,522],{"id":521},"how-it-connects","How it connects",[134,524,525,526,530,531,535],{},"Capabilities name the Interface (or, once divided, its Experiences) in their\n",[150,527,529],{"href":528},".\u002Fcapabilities#availability","availability","; it never lists what it offers.\nSteps name the place they happen (",[150,532,534],{"href":533},"#where-a-step-happens","Where a Step happens","),\nand a Business Rule applied at a place covers everything inside it.",[156,537,143],{"id":538},"experiences",[134,540,541,544],{},[137,542,543],{},"An Experience is one part of an Interface (its public, signed-in or admin\npart), defined by who is there and what they can do."," Public browsing, a\npersonal account, an administration area and partner automation are typical\nExperiences. An Interface nothing divides has none.",[546,547,549],"h3",{"id":548},"when-to-create-an-experience","When to create an Experience",[255,551,552,558,568,574,580,591],{},[258,553,554,557],{},[137,555,556],{},"Divide an Interface when it has a public part and a signed-in part",":\nbrowsing without an account, managing orders once signed in.",[258,559,560,563,564,567],{},[137,561,562],{},"Divide it when it has an admin area only administrators enter",": a\n",[179,565,566],{},"restricted"," Experience. Administrators are whoever administers the Product,\nits settings or members, including a customer's own workspace admins.",[258,569,570,573],{},[137,571,572],{},"Divide it when its people form groups that share no ability",": buyers and\nsellers who never use a Capability in common. Roles that each relate\none-to-one to the same Account are one group.",[258,575,576,579],{},[137,577,578],{},"Otherwise, don't",", unless the Experience is a counterpart or a Variation\nalternative, below. Capabilities name the Interface directly, and Experiences\nnothing justifies are refused.",[258,581,582,585,586,590],{},[137,583,584],{},"A page only some ordinary roles may open, outside the administration area,\nstays in the signed-in part","; who may use it is a\n",[150,587,589],{"href":588},".\u002Fbusiness-rules#permission","permission",".",[258,592,593,596],{},[137,594,595],{},"The same part on web and on mobile has the same name under each Interface.","\nThe two are counterparts (Shopping on customer web and Shopping on customer\nmobile) and keep their Experience even where nothing else would divide.",[134,598,599,600,604],{},"Alternatives of a ",[150,601,603],{"href":602},".\u002Fvariations","Variation"," are also allowed as Experiences,\nand only they may share both an access mode and an Actor.",[546,606,608],{"id":607},"experience-file","Experience file",[134,610,611,312,614,617],{},[179,612,613],{},"interfaces\u002F\u003Cinterface-id>\u002Fexperiences\u002F\u003Cid>.md",[179,615,616],{},"\u003Cid>\u002Fexperience.md"," once it\nholds Screens.",[318,619,622],{"className":320,"code":620,"filename":621,"language":323,"meta":324,"style":324},"---\nactors: [store-admin]\naccess: restricted\nentryPoints:\n  - store-web: \u002Fadmin\n---\n\n# Administration\n\nWhere operators manage the store, its orders and its staff.\n","interfaces\u002Fstore-web\u002Fexperiences\u002Fadministration.md",[179,623,624,628,641,651,657,669,673,677,684,688],{"__ignoreMap":324},[328,625,626],{"class":330,"line":331},[328,627,335],{"class":334},[328,629,630,632,634,636,639],{"class":330,"line":338},[328,631,354],{"class":341},[328,633,344],{"class":334},[328,635,359],{"class":334},[328,637,638],{"class":347},"store-admin",[328,640,365],{"class":334},[328,642,643,646,648],{"class":330,"line":351},[328,644,645],{"class":341},"access",[328,647,344],{"class":334},[328,649,650],{"class":347}," restricted\n",[328,652,653,655],{"class":330,"line":368},[328,654,371],{"class":341},[328,656,374],{"class":334},[328,658,659,661,664,666],{"class":330,"line":377},[328,660,380],{"class":334},[328,662,663],{"class":341}," store-web",[328,665,344],{"class":334},[328,667,668],{"class":347}," \u002Fadmin\n",[328,670,671],{"class":330,"line":391},[328,672,335],{"class":334},[328,674,675],{"class":330,"line":396},[328,676,400],{"emptyLinePlaceholder":399},[328,678,679,681],{"class":330,"line":403},[328,680,407],{"class":406},[328,682,683],{"class":410}," Administration\n",[328,685,686],{"class":330,"line":414},[328,687,400],{"emptyLinePlaceholder":399},[328,689,690],{"class":330,"line":419},[328,691,692],{"class":422},"Where operators manage the store, its orders and its staff.\n",[134,694,695,696,698],{},"A ",[179,697,566],{}," Experience never stands alone: store web also has a public or\nsigned-in Experience for its shoppers, and the two access modes divide it.",[161,700,701,709],{},[164,702,703],{},[167,704,705,707],{},[170,706,432],{},[170,708,435],{},[183,710,711,720,738],{},[167,712,713,717],{},[188,714,715,444],{},[179,716,354],{},[188,718,719],{},"Who is there; each must be an Actor of the Interface",[167,721,722,726],{},[188,723,724,444],{},[179,725,645],{},[188,727,728,449,731,734,735,737],{},[179,729,730],{},"public",[179,732,733],{},"authenticated"," (signed in) or ",[179,736,566],{}," (only the roles that administer the Product)",[167,739,740,744],{},[188,741,742],{},[179,743,371],{},[188,745,746],{},"Where Actors arrive, keyed by the containing Interface's id",[134,748,749,751,752,755],{},[179,750,645],{}," is the most open the part can be. A setting that opens or closes it,\nsuch as content public only while the store allows guests, is a condition on a\n",[150,753,589],{"href":754},".\u002Fbusiness-rules#grant-keys",", never an Experience of its own.",[156,757,147],{"id":758},"screens",[134,760,761,764],{},[137,762,763],{},"A Screen is a place where a person sees facts and finds abilities",", never a\ndescription of how it looks. A shop's catalog, a product record, order status\nand an operator's order detail are Screens. They are optional: a CLI, API or\nwebhook usually has none.",[546,766,768],{"id":767},"when-to-create-a-screen","When to create a Screen",[255,770,771,777,783,789,795],{},[258,772,773,776],{},[137,774,775],{},"Create one for a place with a stable purpose where at least one Capability\nis used",", such as a product record, where shoppers add to the cart.",[258,778,779,782],{},[137,780,781],{},"Not for error or legal pages."," A not-found page or a privacy policy offers\nno ability; the condition it answers belongs in a Scenario.",[258,784,785,788],{},[137,786,787],{},"One subject, one Screen."," Everything that works on the same selected\nthing or the same process is one Screen: an order's tabs, a wizard's stages.\nTabs or one long page, a wizard or one form, is design; the order of stages\nlives in the Scenario's Steps.",[258,790,791,794],{},[137,792,793],{},"Not for every route or component."," A modal, a page, a URL and a breakpoint\ndecide nothing, and a different drawing of the same information is one Screen.",[258,796,797,800],{},[137,798,799],{},"The same view on web and on mobile is two Screens with the same name","\n(counterparts), so a difference between them stays visible.",[546,802,804],{"id":803},"screen-file","Screen file",[134,806,807,810,811,814],{},[179,808,809],{},"...\u002Fscreens\u002F\u003Cid>.md"," inside its Interface or Experience, or ",[179,812,813],{},"\u003Cid>\u002Fscreen.md","\nonce it holds images. Screens never nest.",[318,816,819],{"className":320,"code":817,"filename":818,"language":323,"meta":324,"style":324},"---\nentities:\n  - { entity: catalog-product, shows: [Name and description, Price, Stock remaining] }\n  - { entity: cart, shows: [Quantity chosen] }\nentryPoints:\n  - customer-web: \u002Fproducts\u002F:id\n---\n\n# Product record\n\nShows what a shopper needs to evaluate one product.\n","interfaces\u002Fcustomer-web\u002Fexperiences\u002Fstorefront\u002Fscreens\u002Fproduct-record.md",[179,820,821,825,832,876,904,910,922,926,930,937,941],{"__ignoreMap":324},[328,822,823],{"class":330,"line":331},[328,824,335],{"class":334},[328,826,827,830],{"class":330,"line":338},[328,828,829],{"class":341},"entities",[328,831,374],{"class":334},[328,833,834,836,839,842,844,847,850,853,855,857,860,862,865,867,870,873],{"class":330,"line":351},[328,835,380],{"class":334},[328,837,838],{"class":334}," {",[328,840,841],{"class":341}," entity",[328,843,344],{"class":334},[328,845,846],{"class":347}," catalog-product",[328,848,849],{"class":334},",",[328,851,852],{"class":341}," shows",[328,854,344],{"class":334},[328,856,359],{"class":334},[328,858,859],{"class":347},"Name and description",[328,861,849],{"class":334},[328,863,864],{"class":347}," Price",[328,866,849],{"class":334},[328,868,869],{"class":347}," Stock remaining",[328,871,872],{"class":334},"]",[328,874,875],{"class":334}," }\n",[328,877,878,880,882,884,886,889,891,893,895,897,900,902],{"class":330,"line":368},[328,879,380],{"class":334},[328,881,838],{"class":334},[328,883,841],{"class":341},[328,885,344],{"class":334},[328,887,888],{"class":347}," cart",[328,890,849],{"class":334},[328,892,852],{"class":341},[328,894,344],{"class":334},[328,896,359],{"class":334},[328,898,899],{"class":347},"Quantity chosen",[328,901,872],{"class":334},[328,903,875],{"class":334},[328,905,906,908],{"class":330,"line":377},[328,907,371],{"class":341},[328,909,374],{"class":334},[328,911,912,914,917,919],{"class":330,"line":391},[328,913,380],{"class":334},[328,915,916],{"class":341}," customer-web",[328,918,344],{"class":334},[328,920,921],{"class":347}," \u002Fproducts\u002F:id\n",[328,923,924],{"class":330,"line":396},[328,925,335],{"class":334},[328,927,928],{"class":330,"line":403},[328,929,400],{"emptyLinePlaceholder":399},[328,931,932,934],{"class":330,"line":414},[328,933,407],{"class":406},[328,935,936],{"class":410}," Product record\n",[328,938,939],{"class":330,"line":419},[328,940,400],{"emptyLinePlaceholder":399},[328,942,944],{"class":330,"line":943},11,[328,945,946],{"class":422},"Shows what a shopper needs to evaluate one product.\n",[161,948,949,957],{},[164,950,951],{},[167,952,953,955],{},[170,954,432],{},[170,956,435],{},[183,958,959,972,981],{},[167,960,961,965],{},[188,962,963],{},[179,964,829],{},[188,966,967,968],{},"Which Entities' facts are on screen; see ",[150,969,971],{"href":970},"#what-a-screen-presents","What a Screen presents",[167,973,974,978],{},[188,975,976],{},[179,977,371],{},[188,979,980],{},"Routes or deep links, keyed by the containing Interface's id",[167,982,983,988],{},[188,984,985],{},[179,986,987],{},"references",[188,989,990,991],{},"Mockups and design files, as ",[150,992,64],{"href":300},[134,994,995],{},"A Screen never lists its Capabilities: they come from the Scenario Steps placed\non it. Its folder says where it sits.",[546,997,971],{"id":998},"what-a-screen-presents",[134,1000,1001,1004,1005,1008,1009,1013,1014,590],{},[179,1002,1003],{},"shows"," lists facts the Product displays; ",[179,1006,1007],{},"collects"," lists values the person\nenters: a sign-in Screen collects Email and Password without showing them. Both\nname the Entity's ",[150,1010,1012],{"href":1011},".\u002Fentities#named-facts","named facts","; a prefilled field is\nin both, and an Entity with no named facts is listed by its id alone. Facts a\nStep reads on a Screen must be in its ",[179,1015,1003],{},[134,1017,1018],{},"A view with a subject of its own, such as a panel opened from search, a list\nand related items, is its own Screen, placed once in their common Interface or\nExperience.",[546,1020,1022],{"id":1021},"screens-shared-across-experiences","Screens shared across Experiences",[134,1024,1025,1026,1029],{},"A Screen placed beside ",[179,1027,1028],{},"experiences\u002F",", directly in the Interface, is shared by\nevery Experience of that Interface, such as a catalog that guests and signed-in\nshoppers both browse. Every Capability it exposes must be available in each. If\nwhat it shows or offers differs by Experience, it is two Screens, one in each.",[546,1031,534],{"id":1032},"where-a-step-happens",[134,1034,1035],{},"A Step names the most specific place it happens: the Screen when on one;\notherwise the Experience or undivided Interface.",[134,1037,1038],{},"Movement between Screens comes from Scenario Steps. Menus, and which Screens\nthey hold, are design.",[156,1040,153],{"id":1041},"is-this-a-design-spec",[134,1043,1044,1045,1048,1049,1051,1052,590],{},"No. Rebuild a view with different components, layout, colors, icons and copy:\nwhat would still have to be true (places, who reaches them with what access,\nfacts shown and collected, abilities offered, what happens next) is the\nmodel's. What the redesign may change is design's; attach design files as\n",[179,1046,1047],{},"visual"," ",[150,1050,64],{"href":300}," with ",[179,1053,1054],{},"role: intent",[156,1056,1058],{"id":1057},"what-lint-checks","What lint checks",[134,1060,1061],{},"All of these are errors:",[255,1063,1064,1070,1076,1082,1088,1095,1103,1106],{},[258,1065,1066,1067,1069],{},"The model has at least one Interface, each with a valid ",[179,1068,181],{}," and at least\none Actor.",[258,1071,1072,1073,1075],{},"An Experience has a valid ",[179,1074,645],{}," and only Actors its Interface lists, and\ntogether an Interface's Experiences cover all of them.",[258,1077,1078,1079,1081],{},"An Interface whose Actors form groups sharing no Capability is divided;\nExperiences need more than one access mode or audience, a counterpart or a\nVariation; and two with the same ",[179,1080,645],{}," share no Actor unless they are\nalternatives of one Variation.",[258,1083,1084,1085,1087],{},"Entry point keys and ",[179,1086,510],{}," resolve, and a Step's place lists the\nStep's Actor.",[258,1089,1090,1091,1094],{},"A Screen never holds ",[179,1092,1093],{},"screens\u002F",": Screens never nest.",[258,1096,1097,1098,1100,1101,590],{},"A Screen has a Capability from a Step placed on it, available wherever it\nsits; its ",[179,1099,829],{}," resolve; facts read on it are in its ",[179,1102,1003],{},[258,1104,1105],{},"Place ids are unique: a shared Screen and an Experience of one Interface\nnever have the same name.",[258,1107,1108,1111,1112,449,1115,1118,1119,1122],{},[179,1109,1110],{},"## Capability boundary"," is refused on all three, and ",[179,1113,1114],{},"## Information presented",[179,1116,1117],{},"## Available actions"," and ",[179,1120,1121],{},"## View states"," on a Screen.",[1124,1125,1126],"style",{},"html pre.shiki code .sjkiA, html code.shiki .sjkiA{--shiki-light:#362B1D;--shiki-default:#362B1D;--shiki-dark:#89DDFF}html pre.shiki code .sg1QC, html code.shiki .sg1QC{--shiki-light:#00585F;--shiki-default:#00585F;--shiki-dark:#F07178}html pre.shiki code .s9fN-, html code.shiki .s9fN-{--shiki-light:#6E3500;--shiki-default:#6E3500;--shiki-dark:#C3E88D}html pre.shiki code .sKwZ8, html code.shiki .sKwZ8{--shiki-light:#362B1D;--shiki-light-font-weight:bold;--shiki-default:#362B1D;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:inherit}html pre.shiki code .sBbkF, html code.shiki .sBbkF{--shiki-light:#00585F;--shiki-light-font-weight:bold;--shiki-default:#00585F;--shiki-default-font-weight:bold;--shiki-dark:#FFCB6B;--shiki-dark-font-weight:inherit}html pre.shiki code .szETn, html code.shiki .szETn{--shiki-light:#362B1D;--shiki-default:#362B1D;--shiki-dark:#BABED8}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":324,"searchDepth":338,"depth":338,"links":1128},[1129,1130,1131,1132,1133,1137,1144,1145],{"id":158,"depth":338,"text":159},{"id":252,"depth":338,"text":253},{"id":305,"depth":338,"text":306},{"id":521,"depth":338,"text":522},{"id":538,"depth":338,"text":143,"children":1134},[1135,1136],{"id":548,"depth":351,"text":549},{"id":607,"depth":351,"text":608},{"id":758,"depth":338,"text":147,"children":1138},[1139,1140,1141,1142,1143],{"id":767,"depth":351,"text":768},{"id":803,"depth":351,"text":804},{"id":998,"depth":351,"text":971},{"id":1021,"depth":351,"text":1022},{"id":1032,"depth":351,"text":534},{"id":1041,"depth":338,"text":153},{"id":1057,"depth":338,"text":1058},{"section":1147,"terms":1148},"open-source",[1149,1151,1154,1159,1162,1165],{"term":175,"definition":1150},"A supported way for Actors to reach the Product, such as a web app, a mobile app, a CLI, a partner API or an inbound webhook.",{"term":1152,"anchor":305,"definition":1153},"Interface type","The form an Interface takes: web, mobile app, desktop app, CLI, API, webhook, messaging, voice, device, or agent.",{"term":1155,"aliases":1156,"anchor":305,"definition":1158},"Entry point",[1157],"Starts at","An address where an Actor arrives, such as a path, a deep link or a command.",{"term":1160,"anchor":538,"definition":1161},"Experience","One part of an Interface, such as its public, signed-in or admin part, defined by who is there and what they can do.",{"term":1163,"anchor":607,"definition":1164},"Access mode","Who may enter an Experience: anyone (public), anyone signed in (authenticated), or only the roles that administer the Product (restricted).",{"term":1166,"anchor":758,"definition":1167},"Screen","A place inside an Interface or Experience, named in the Product's own words, where an Actor sees facts and finds abilities.",{"title":40,"description":41},"docs\u002Finterfaces","Ol7PjsDTdzm_mN2AMsDzhVOVc5MYIoRZRn8MhvtJfhc",1791840531136]