[{"data":1,"prerenderedAt":677},["ShallowReactive",2],{"docs-sections":3,"docs-page-\u002Fdocs\u002Fskill-pdd-verify":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":81,"body":126,"description":82,"extension":669,"group":70,"meta":670,"navigation":672,"order":673,"path":80,"seo":674,"stem":675,"__hash__":676},"docs\u002Fdocs\u002Fskill-pdd-verify.md",{"type":127,"value":128,"toc":656},"minimark",[129,136,143,146,156,159,164,167,213,218,274,277,284,288,325,329,435,442,446,529,532,571,575,611,614,618,625,634,637,641],[130,131,133],"h1",{"id":132},"pdd-verify",[134,135,132],"code",{},[137,138,139],"p",{},[140,141,142],"strong",{},"Verify makes the Product Model and the code agree: it implements what the\nmodel describes and the code lacks, and fixes each other gap the way you\ndecide.",[137,144,145],{},"Your agent uses it when you ask it to implement the model, all of it or a part.\nRun it yourself after a refactor, when you suspect drift, or before a release.",[147,148,154],"pre",{"className":149,"code":151,"language":152,"meta":153},[150],"language-text","\u002Fpdd-verify\n\u002Fpdd-verify current\n\u002Fpdd-verify checkout\n\u002Fpdd-verify report only\n","text","",[134,155,151],{"__ignoreMap":153},[137,157,158],{},"With no scope, it checks what changed on the current branch.",[160,161,163],"h2",{"id":162},"implement-from-the-model","Implement from the model",[137,165,166],{},"Ask your agent to implement, for example \"implement our PDD\", \"implement it\"\nafter ideate, or \"implement saving an item\". \"Build\" works too. You don't name\nthe skill.",[168,169,170,185,195,201,207],"ol",{},[171,172,173,176,177,180,181,184],"li",{},[140,174,175],{},"A plan."," Everything the model describes that the code doesn't do yet is\nthe plan, cut into ",[140,178,179],{},"slices",": one Capability with its Scenarios and the\nScreens and Rules that go with it, or one Journey after its Capabilities.\nSlices are grouped into ",[140,182,183],{},"phases",": the first holds the shared groundwork\n(storage, sign-in, the app shell) and the slices that need nothing else;\neach next phase holds the slices the earlier ones made possible.",[171,186,187,190,191,194],{},[140,188,189],{},"Your agent implements each phase your usual way",": plan mode, an SDD tool,\nyour repository's conventions and tests. It never edits ",[134,192,193],{},"product-model\u002F",".",[171,196,197,200],{},[140,198,199],{},"Verify checks every slice of the phase"," before the next phase starts, and\nhands back anything still missing.",[171,202,203,206],{},[140,204,205],{},"Questions come to you."," If the model is ambiguous or seems wrong, the work\nstops and verify settles it with you, updating the model only with your\napproval. Nothing is decided in code.",[171,208,209,212],{},[140,210,211],{},"A report",": what was implemented in order, anything blocked, and anything\nthe implementation added that the model doesn't describe yet.",[214,215,217],"h3",{"id":216},"choose-the-pace","Choose the pace",[219,220,221,237],"table",{},[222,223,224],"thead",{},[225,226,227,231,234],"tr",{},[228,229,230],"th",{},"Say",[228,232,233],{},"What happens",[228,235,236],{},"Use it when",[238,239,240,252,263],"tbody",{},[225,241,242,246,249],{},[243,244,245],"td",{},"Nothing, or \"in phases\"",[243,247,248],{},"One phase at a time, each slice checked before the next phase (the default)",[243,250,251],{},"Most work: a new product, a Blueprint, a large change",[225,253,254,257,260],{},[243,255,256],{},"\"One slice at a time\" or \"slice by slice\"",[243,258,259],{},"One slice, checked, then the next",[243,261,262],{},"You want to review each part, or the model is new to you",[225,264,265,268,271],{},[243,266,267],{},"\"In one go\", \"all at once\" or \"without phases\"",[243,269,270],{},"Every slice at once, then every slice checked",[243,272,273],{},"A small change, or you want the fastest run",[137,275,276],{},"The pace changes how much your agent implements before a check, never what is\nchecked: every slice is checked against the model either way.",[137,278,279,280,283],{},"To implement in another tool or session instead, say so: verify gives you a\n",[140,281,282],{},"handoff packet"," for the work.",[160,285,287],{"id":286},"what-you-get","What you get",[168,289,290,296,302,308,314,320],{},[171,291,292,295],{},[140,293,294],{},"Lint",", so a broken file is reported before anything else.",[171,297,298,301],{},[140,299,300],{},"Findings."," It reads the code (never runs it) and compares it with every\nclaim in scope. Each finding is labeled, and findings that share one decision\nare grouped into one question.",[171,303,304,307],{},[140,305,306],{},"One question per decision",", with what the model says, what the code does,\nthe files it read, and a recommendation.",[171,309,310,313],{},[140,311,312],{},"The fix, after you approve."," A model change is shown in full and written;\nyour agent makes a code change your usual way.",[171,315,316,319],{},[140,317,318],{},"A fresh check after every change."," Earlier findings are discarded and\nderived again. If the same gap comes back unchanged after an implementation\nattempt, it stops rather than loop.",[171,321,322,324],{},[140,323,211],{},": what was checked, what agrees, what changed, what is still\nblocked, and the final lint result. It says \"aligned for the inspected\nscope\", never \"the whole product is proven\" unless it checked everything.",[160,326,328],{"id":327},"what-it-checks","What it checks",[219,330,331,341],{},[222,332,333],{},[225,334,335,338],{},[228,336,337],{},"Claim",[228,339,340],{},"Verify confirms",[238,342,343,351,369,382,393,401,422],{},[225,344,345,348],{},[243,346,347],{},"Routes and places",[243,349,350],{},"Each Scenario runs through its Steps, at the places they name, to its outcome; each Journey Scenario reaches its goal",[225,352,353,361],{},[243,354,355,356],{},"Each ",[357,358,360],"a",{"href":359},".\u002Finterfaces","Interface",[243,362,363,364,368],{},"Every place a ",[357,365,367],{"href":366},".\u002Fcapabilities","Capability"," is offered, separately: shared backend code doesn't prove web, mobile and API all work",[225,370,371,374],{},[243,372,373],{},"Things, States and facts",[243,375,376,377,381],{},"The product keeps each fact an ",[357,378,380],{"href":379},".\u002Fentities","Entity"," lists, and each Step changes exactly the States and facts it names",[225,383,384,390],{},[243,385,386],{},[357,387,389],{"href":388},".\u002Finterfaces#screens","Screens",[243,391,392],{},"What each place shows and collects matches its view's code (never layout, styling or copy)",[225,394,395,398],{},[243,396,397],{},"Languages",[243,399,400],{},"The languages the product and each Interface claim match what the code serves",[225,402,403,406],{},[243,404,405],{},"Who may",[243,407,355,408,412,413,417,418,421],{},[357,409,411],{"href":410},".\u002Fbusiness-rules","Business Rule"," grant is enforced, and everyone else refused. A grant the code doesn't enforce is reported as ",[414,415,416],"em",{},"not established","; an operation closed with ",[134,419,420],{},"permits: []"," must be refused",[225,423,424,427],{},[243,425,426],{},"What varies",[243,428,429,430,434],{},"Each alternative of a ",[357,431,433],{"href":432},".\u002Fvariations","Variation"," is still offered, chosen by what the model names, with the stated default",[137,436,437,438,441],{},"For example: the model says the store's ",[414,439,440],{},"Refund review mode"," picks Standard or\nStrict, Standard by default. Verify checks the code reads that setting, defaults\nto Standard and still offers both; a removed branch or a different deciding flag\nis a finding.",[160,443,445],{"id":444},"finding-labels","Finding labels",[219,447,448,461],{},[222,449,450],{},[225,451,452,455,458],{},[228,453,454],{},"Label",[228,456,457],{},"Means",[228,459,460],{},"What happens next",[238,462,463,474,485,496,507,518],{},[225,464,465,468,471],{},[243,466,467],{},"aligned",[243,469,470],{},"The code does what the model says",[243,472,473],{},"Nothing",[225,475,476,479,482],{},[243,477,478],{},"model-right",[243,480,481],{},"The model is right; the code must change",[243,483,484],{},"Your coding agent fixes the code",[225,486,487,490,493],{},[243,488,489],{},"code-right",[243,491,492],{},"The code is right; the model must change",[243,494,495],{},"Verify drafts the model change for approval",[225,497,498,501,504],{},[243,499,500],{},"neither-right",[243,502,503],{},"You must decide what should happen first",[243,505,506],{},"Verify settles it with you, then both may change",[225,508,509,512,515],{},[243,510,511],{},"unmapped",[243,513,514],{},"The code does something the model doesn't describe",[243,516,517],{},"Verify maps that area for approval",[225,519,520,523,526],{},[243,521,522],{},"unverifiable",[243,524,525],{},"Reading the source can't settle it (live config, an outside system)",[243,527,528],{},"Reported with what would settle it",[137,530,531],{},"An example finding:",[533,534,535,543,568],"blockquote",{},[137,536,537,539,540],{},[140,538,478],{},": ",[134,541,542],{},"refunds-need-an-operator",[544,545,546,552,562],"ul",{},[171,547,548,551],{},[140,549,550],{},"Model:"," a Store admin may refund an Order of up to 100; above that, only\nthe approver the store configures.",[171,553,554,557,558,561],{},[140,555,556],{},"Code:"," ",[134,559,560],{},"OrderService.refund"," checks for a Store admin but never compares\nthe total with 100.",[171,563,564,567],{},[140,565,566],{},"Recommendation:"," keep the Rule; add the threshold check.",[137,569,570],{},"After you approve, your agent adds the check and verify checks again.",[160,572,574],{"id":573},"scope","Scope",[544,576,577,591,605],{},[171,578,579,582,583,586,587,590],{},[140,580,581],{},"The current branch"," (the default): committed, staged and unstaged changes\npick what to check. Git chooses ",[414,584,585],{},"where to look",", never ",[414,588,589],{},"which side is right",":\na model approved before the branch is still the plan.",[171,592,593,598,599,604],{},[140,594,595],{},[134,596,597],{},"current"," or ",[140,600,601],{},[134,602,603],{},"full",": the whole product as it is now.",[171,606,607,610],{},[140,608,609],{},"A name",": one Entity, Interface, Experience, Screen, Domain, Capability,\nScenario, Journey, Business Rule, Variation or path, plus what it depends on.",[137,612,613],{},"If there is no model yet but there is code, verify maps the scope it needs\nitself, with your approval.",[160,615,617],{"id":616},"report-only-or-resolve","Report only or resolve",[137,619,620,621,624],{},"By default verify resolves: it writes approved model changes, and your agent\nmakes approved code changes. ",[134,622,623],{},"report only"," returns the same findings and\nrecommendations and changes nothing.",[137,626,627,628,630,631,633],{},"Verify's checking never writes or runs code. Code is written by your agent,\nwhich never edits ",[134,629,193],{},". When you implement in another tool or\nsession, verify stops with a ",[140,632,282],{}," (the expected behavior, the\naffected resources, the gap, acceptance criteria, and file leads) that you can\ngive to any agent or person.",[137,635,636],{},"Findings are never saved: every run derives them again from the model and the\ncode as they are now.",[160,638,640],{"id":639},"related","Related",[544,642,643,649],{},[171,644,645],{},[357,646,648],{"href":647},"\u002Fdocs#the-development-loop","Development loop",[171,650,651,655],{},[357,652,654],{"href":653},".\u002Fcli-lint#run-it-in-ci","Lint in CI",": lint checks structure; only verify\nchecks meaning.",{"title":153,"searchDepth":657,"depth":657,"links":658},2,[659,663,664,665,666,667,668],{"id":162,"depth":657,"text":163,"children":660},[661],{"id":216,"depth":662,"text":217},3,{"id":286,"depth":657,"text":287},{"id":327,"depth":657,"text":328},{"id":444,"depth":657,"text":445},{"id":573,"depth":657,"text":574},{"id":616,"depth":657,"text":617},{"id":639,"depth":657,"text":640},"md",{"section":671},"open-source",true,19,{"title":81,"description":82},"docs\u002Fskill-pdd-verify","rcdO8_krPwChLoOcCqH-cu3myjPncrpctSrjxf8WeT0",1791840533811]