[{"data":1,"prerenderedAt":810},["ShallowReactive",2],{"docs-sections":3,"docs-page-\u002Fdocs\u002Freferences":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":64,"body":126,"description":65,"extension":793,"group":29,"meta":794,"navigation":805,"order":806,"path":63,"seo":807,"stem":808,"__hash__":809},"docs\u002Fdocs\u002Freferences.md",{"type":127,"value":128,"toc":782},"minimark",[129,133,141,146,258,273,277,305,310,329,339,350,357,361,366,496,555,559,655,697,701,720,724,727,770,773,778],[130,131,64],"h1",{"id":132},"references",[134,135,136,140],"p",{},[137,138,139],"strong",{},"A Reference points a resource at material kept outside the model (code, a PRD,\na design, research) and says what it is and why it is there."," The material\nstays where it is, and it never replaces the resource's own words: the model\nstill says what the Product does.",[142,143,145],"h2",{"id":144},"in-practice","In practice",[147,148,149,170],"table",{},[150,151,152],"thead",{},[153,154,155,159,165],"tr",{},[156,157,158],"th",{},"What you attach",[156,160,161],{},[162,163,164],"code",{},"kind",[156,166,167],{},[162,168,169],{},"role",[171,172,173,188,203,217,230,244],"tbody",{},[153,174,175,179,183],{},[176,177,178],"td",{},"The function that places an order, on the Checkout Capability",[176,180,181],{},[162,182,162],{},[176,184,185],{},[162,186,187],{},"implementation",[153,189,190,193,198],{},[176,191,192],{},"The PRD that defined checkout",[176,194,195],{},[162,196,197],{},"prd",[176,199,200],{},[162,201,202],{},"intent",[153,204,205,208,213],{},[176,206,207],{},"An approved design of the Order status Screen",[176,209,210],{},[162,211,212],{},"visual",[176,214,215],{},[162,216,202],{},[153,218,219,222,226],{},[176,220,221],{},"A screenshot of the live Order status Screen",[176,223,224],{},[162,225,212],{},[176,227,228],{},[162,229,187],{},[153,231,232,235,239],{},[176,233,234],{},"A competitor's checkout, for comparison",[176,236,237],{},[162,238,212],{},[176,240,241],{},[162,242,243],{},"context",[153,245,246,249,254],{},[176,247,248],{},"The payment provider's published API docs",[176,250,251],{},[162,252,253],{},"doc",[176,255,256],{},[162,257,243],{},[134,259,260,261,264,265,268,269,272],{},"Every resource type can carry references. ",[162,262,263],{},"config.yaml",", ",[162,266,267],{},"coverage.md"," and\n",[162,270,271],{},"taxonomies.yaml"," cannot. A model may have none at all.",[142,274,276],{"id":275},"when-you-create-one","When you create one",[278,279,280,287,293,299],"ul",{},[281,282,283,286],"li",{},[137,284,285],{},"Attach where the material is about."," Code that settles a payment goes on\nthe Capability that settles it, not on the Product.",[281,288,289,292],{},[137,290,291],{},"A capture of a condition goes on the Scenario that reaches it."," A screenshot\nof an empty or refused view attaches to the Scenario whose Step meets that\ncondition; the Screen carries captures of the place itself.",[281,294,295,298],{},[137,296,297],{},"Prefer a symbol to line numbers"," in code targets: lines drift, a function\nname rarely does.",[281,300,301,304],{},[137,302,303],{},"A Reference is a lead, not proof."," Nothing reads, fetches or verifies its\ncontent.",[306,307,309],"h3",{"id":308},"asset-or-reference","Asset or Reference",[134,311,312,313,316,317,320,321,324,325,328],{},"Use an ",[137,314,315],{},"asset"," when the model owns the file (a mockup made for this model).\nExpand the resource from ",[162,318,319],{},"\u003Cid>.md"," to ",[162,322,323],{},"\u003Cid>\u002F\u003Ctype>.md"," and put the file beside\nit; captures of this repository's running Product go under ",[162,326,327],{},"implementation\u002F",":",[330,331,337],"pre",{"className":332,"code":334,"language":335,"meta":336},[333],"language-text","screens\u002Forder-status\u002F\n├── screen.md\n├── mockup.svg\n└── implementation\u002F\n    └── order-status-dark.png\n","text","",[162,338,334],{"__ignoreMap":336},[134,340,341,342,345,346,349],{},"An asset needs no frontmatter. Add ",[162,343,344],{},"assets:"," only to give one a ",[162,347,348],{},"title",".",[134,351,352,353,356],{},"Use a ",[137,354,355],{},"Reference"," when someone else owns the material: source code, a Figma\nfile, an ADR, research, a hosted design.",[142,358,360],{"id":359},"the-file","The file",[134,362,363,365],{},[162,364,132],{}," is a list in any resource's frontmatter:",[330,367,371],{"className":368,"code":369,"language":370,"meta":336,"style":336},"language-yaml shiki shiki-themes pdd-kit-brand-warm pdd-kit-brand-warm material-theme-palenight","references:\n  - kind: code\n    role: implementation\n    target: src\u002Fservices\u002Forders.ts#OrderService.submit\n  - kind: prd\n    role: intent\n    target: docs\u002Fprds\u002Fcheckout.md\n    title: Checkout PRD\n  - kind: visual\n    role: intent\n    target: https:\u002F\u002Fexample.com\u002Fdesigns\u002Fcheckout\n","yaml",[162,372,373,385,400,411,422,434,444,454,465,477,486],{"__ignoreMap":336},[374,375,378,381],"span",{"class":376,"line":377},"line",1,[374,379,132],{"class":380},"sg1QC",[374,382,384],{"class":383},"sjkiA",":\n",[374,386,388,391,394,396],{"class":376,"line":387},2,[374,389,390],{"class":383},"  -",[374,392,393],{"class":380}," kind",[374,395,328],{"class":383},[374,397,399],{"class":398},"s9fN-"," code\n",[374,401,403,406,408],{"class":376,"line":402},3,[374,404,405],{"class":380},"    role",[374,407,328],{"class":383},[374,409,410],{"class":398}," implementation\n",[374,412,414,417,419],{"class":376,"line":413},4,[374,415,416],{"class":380},"    target",[374,418,328],{"class":383},[374,420,421],{"class":398}," src\u002Fservices\u002Forders.ts#OrderService.submit\n",[374,423,425,427,429,431],{"class":376,"line":424},5,[374,426,390],{"class":383},[374,428,393],{"class":380},[374,430,328],{"class":383},[374,432,433],{"class":398}," prd\n",[374,435,437,439,441],{"class":376,"line":436},6,[374,438,405],{"class":380},[374,440,328],{"class":383},[374,442,443],{"class":398}," intent\n",[374,445,447,449,451],{"class":376,"line":446},7,[374,448,416],{"class":380},[374,450,328],{"class":383},[374,452,453],{"class":398}," docs\u002Fprds\u002Fcheckout.md\n",[374,455,457,460,462],{"class":376,"line":456},8,[374,458,459],{"class":380},"    title",[374,461,328],{"class":383},[374,463,464],{"class":398}," Checkout PRD\n",[374,466,468,470,472,474],{"class":376,"line":467},9,[374,469,390],{"class":383},[374,471,393],{"class":380},[374,473,328],{"class":383},[374,475,476],{"class":398}," visual\n",[374,478,480,482,484],{"class":376,"line":479},10,[374,481,405],{"class":380},[374,483,328],{"class":383},[374,485,443],{"class":398},[374,487,489,491,493],{"class":376,"line":488},11,[374,490,416],{"class":380},[374,492,328],{"class":383},[374,494,495],{"class":398}," https:\u002F\u002Fexample.com\u002Fdesigns\u002Fcheckout\n",[147,497,498,508],{},[150,499,500],{},[153,501,502,505],{},[156,503,504],{},"Field",[156,506,507],{},"Says",[171,509,510,520,529,546],{},[153,511,512,517],{},[176,513,514,516],{},[162,515,164],{}," (required)",[176,518,519],{},"What the material is",[153,521,522,526],{},[176,523,524,516],{},[162,525,169],{},[176,527,528],{},"Why it is attached",[153,530,531,536],{},[176,532,533,516],{},[162,534,535],{},"target",[176,537,538,539,542,543],{},"Where it is: a repository-relative path or an HTTP(S) URL. Code uses ",[162,540,541],{},"path#symbol"," or ",[162,544,545],{},"path:start-end",[153,547,548,552],{},[176,549,550],{},[162,551,348],{},[176,553,554],{},"An optional label",[306,556,558],{"id":557},"kind-and-role","Kind and role",[147,560,561,572],{},[150,562,563],{},[153,564,565,569],{},[156,566,567],{},[162,568,164],{},[156,570,571],{},"The material",[171,573,574,583,597,607,617,626,636,645],{},[153,575,576,580],{},[176,577,578],{},[162,579,162],{},[176,581,582],{},"A tracked source file, optionally a symbol or line range",[153,584,585,589],{},[176,586,587],{},[162,588,197],{},[176,590,591,592],{},"A product requirements document — see ",[593,594,596],"a",{"href":595},".\u002Fproduct-model#is-this-replacing-my-prd","how it differs from the model",[153,598,599,604],{},[176,600,601],{},[162,602,603],{},"spec",[176,605,606],{},"A product or technical specification, including a database schema",[153,608,609,614],{},[176,610,611],{},[162,612,613],{},"proposal",[176,615,616],{},"A proposed direction or change",[153,618,619,623],{},[176,620,621],{},[162,622,253],{},[176,624,625],{},"General documentation",[153,627,628,633],{},[176,629,630],{},[162,631,632],{},"adr",[176,634,635],{},"An architecture decision record",[153,637,638,642],{},[176,639,640],{},[162,641,212],{},[176,643,644],{},"A screenshot, mockup, prototype, design or diagram",[153,646,647,652],{},[176,648,649],{},[162,650,651],{},"research",[176,653,654],{},"Product or user research",[147,656,657,668],{},[150,658,659],{},[153,660,661,665],{},[156,662,663],{},[162,664,169],{},[156,666,667],{},"Means",[171,669,670,679,688],{},[153,671,672,676],{},[176,673,674],{},[162,675,202],{},[176,677,678],{},"It helped define what the Product should do",[153,680,681,685],{},[176,682,683],{},[162,684,187],{},[176,686,687],{},"It points at what was built",[153,689,690,694],{},[176,691,692],{},[162,693,243],{},[176,695,696],{},"Useful background, neither",[142,698,700],{"id":699},"how-it-connects","How it connects",[134,702,703,704,264,708,710,711,713,714,716,717,719],{},"A Reference belongs to the one resource that lists it. When the model is\npublished as a ",[593,705,707],{"href":706},".\u002Fcli-export","Blueprint",[162,709,202],{}," and ",[162,712,243],{}," references\ntravel with it; ",[162,715,187],{}," references, every ",[162,718,162],{}," reference and every\nrepository path stay home.",[142,721,723],{"id":722},"what-lint-checks","What lint checks",[134,725,726],{},"Errors:",[278,728,729,744,751,757,760],{},[281,730,731,732,264,734,710,736,738,739,542,741,743],{},"A reference without ",[162,733,164],{},[162,735,169],{},[162,737,535],{},", with any other key, or with a\n",[162,740,164],{},[162,742,169],{}," outside the lists above.",[281,745,746,747,750],{},"A target that is an absolute path, a ",[162,748,749],{},"file:"," or other non-HTTP(S) URL, or uses\nbackslashes.",[281,752,753,754,756],{},"A ",[162,755,162],{}," target whose path is not a file tracked by Git.",[281,758,759],{},"The same target twice on one resource.",[281,761,762,764,765,710,768,349],{},[162,763,344],{}," naming a file that is not in the resource's folder, or with a key\nother than ",[162,766,767],{},"file",[162,769,348],{},[134,771,772],{},"Warning:",[278,774,775],{},[281,776,777],{},"A non-code target path that does not exist in the repository.",[779,780,781],"style",{},"html pre.shiki code .sg1QC, html code.shiki .sg1QC{--shiki-light:#00585F;--shiki-default:#00585F;--shiki-dark:#F07178}html pre.shiki code .sjkiA, html code.shiki .sjkiA{--shiki-light:#362B1D;--shiki-default:#362B1D;--shiki-dark:#89DDFF}html pre.shiki code .s9fN-, html code.shiki .s9fN-{--shiki-light:#6E3500;--shiki-default:#6E3500;--shiki-dark:#C3E88D}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":336,"searchDepth":387,"depth":387,"links":783},[784,785,788,791,792],{"id":144,"depth":387,"text":145},{"id":275,"depth":387,"text":276,"children":786},[787],{"id":308,"depth":402,"text":309},{"id":359,"depth":387,"text":360,"children":789},[790],{"id":557,"depth":402,"text":558},{"id":699,"depth":387,"text":700},{"id":722,"depth":387,"text":723},"md",{"section":795,"terms":796},"open-source",[797,799,802],{"term":355,"anchor":308,"definition":798},"A pointer to material outside the model, such as code, a spec, or a screenshot, saying what it is and why it is attached.",{"term":800,"anchor":557,"definition":801},"Reference kind","What the referenced material is: code, prd, spec, proposal, doc, adr, visual, or research.",{"term":803,"anchor":557,"definition":804},"Reference role","Why a Reference is attached: intent helps define the Product, implementation points to what was built, and context provides background.",true,15,{"title":64,"description":65},"docs\u002Freferences","IQ5RO3c5JY7-dPdO85ZbSHh9FvpcOaZwxEq8lHabd7k",1791840533612]