[{"data":1,"prerenderedAt":873},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-github\u002Fspec-kit":249,"page-views-\u002Ftrending\u002Fgithub\u002Fspec-kit":871},[4,29,104,124,194],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Start",false,"\u002Fstart","1.start",[10,14,19,24],{"title":11,"path":7,"stem":12,"icon":13},"What jscpd finds","1.start\u002Findex","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fstart\u002Finstallation","1.start\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quickstart","\u002Fstart\u002Fquickstart","1.start\u002F3.quickstart","i-lucide-rocket",{"title":25,"path":26,"stem":27,"icon":28},"Configuration basics","\u002Fstart\u002Fconfiguration","1.start\u002F4.configuration","i-lucide-settings-2",{"title":30,"icon":6,"path":31,"stem":32,"children":33,"page":6},"Guides","\u002Fguides","2.guides",[34,39,44,49,54,59,64,69,74,79,84,89,94,99],{"title":35,"path":36,"stem":37,"icon":38},"Use jscpd in CI","\u002Fguides\u002Fci","2.guides\u002F01.ci","i-lucide-github",{"title":40,"path":41,"stem":42,"icon":43},"Pre-commit hooks","\u002Fguides\u002Fpre-commit","2.guides\u002F02.pre-commit","i-lucide-git-commit",{"title":45,"path":46,"stem":47,"icon":48},"Fail only on new duplication","\u002Fguides\u002Fbaseline","2.guides\u002F03.baseline","i-lucide-git-compare",{"title":50,"path":51,"stem":52,"icon":53},"Monorepos","\u002Fguides\u002Fmonorepos","2.guides\u002F04.monorepos","i-lucide-folder-tree",{"title":55,"path":56,"stem":57,"icon":58},"Cross-format detection","\u002Fguides\u002Fcross-format","2.guides\u002F05.cross-format","i-lucide-layers",{"title":60,"path":61,"stem":62,"icon":63},"Agents","\u002Fguides\u002Fagents","2.guides\u002F06.agents","i-lucide-cpu",{"title":65,"path":66,"stem":67,"icon":68},"Editors","\u002Fguides\u002Feditors","2.guides\u002F07.editors","i-lucide-code",{"title":70,"path":71,"stem":72,"icon":73},"Duplication over git history","\u002Fguides\u002Fhistory","2.guides\u002F08.history","i-lucide-chart-no-axes-combined",{"title":75,"path":76,"stem":77,"icon":78},"Dashboard and health score","\u002Fguides\u002Fdashboard","2.guides\u002F09.dashboard","i-lucide-layout-dashboard",{"title":80,"path":81,"stem":82,"icon":83},"Dead code","\u002Fguides\u002Fdead-code","2.guides\u002F10.dead-code","i-lucide-ghost",{"title":85,"path":86,"stem":87,"icon":88},"Comparing two codebases","\u002Fguides\u002Fcompare","2.guides\u002F11.compare","i-lucide-git-compare-arrows",{"title":90,"path":91,"stem":92,"icon":93},"Semantic clones","\u002Fguides\u002Fsemantic-clones","2.guides\u002F12.semantic-clones","i-lucide-brain-circuit",{"title":95,"path":96,"stem":97,"icon":98},"Similar functions","\u002Fguides\u002Fsimilarity","2.guides\u002F13.similarity","i-lucide-list-tree",{"title":100,"path":101,"stem":102,"icon":103},"Boundaries","\u002Fguides\u002Fboundaries","2.guides\u002F14.boundaries","i-lucide-fence",{"title":105,"icon":6,"path":106,"stem":107,"children":108,"page":6},"Concepts","\u002Fconcepts","3.concepts",[109,114,119],{"title":110,"path":111,"stem":112,"icon":113},"Types of code clones","\u002Fconcepts\u002Fclone-types","3.concepts\u002F1.clone-types","i-lucide-copy",{"title":115,"path":116,"stem":117,"icon":118},"How detection works","\u002Fconcepts\u002Fhow-detection-works","3.concepts\u002F2.how-detection-works","i-lucide-scan-search",{"title":120,"path":121,"stem":122,"icon":123},"The health score","\u002Fconcepts\u002Fhealth-score","3.concepts\u002F3.health-score","i-lucide-heart-pulse",{"title":125,"icon":6,"path":126,"stem":127,"children":128,"page":6},"Reference","\u002Freference","4.reference",[129,134,139,144,181,186,190],{"title":130,"path":131,"stem":132,"icon":133},"CLI options","\u002Freference\u002Fcli","4.reference\u002F1.cli","i-lucide-terminal",{"title":135,"path":136,"stem":137,"icon":138},"The config file","\u002Freference\u002Fconfig-file","4.reference\u002F2.config-file","i-lucide-settings",{"title":140,"path":141,"stem":142,"icon":143},"Exit codes","\u002Freference\u002Fexit-codes","4.reference\u002F3.exit-codes","i-lucide-log-out",{"title":145,"icon":6,"path":146,"stem":147,"children":148},"Reporters","\u002Freference\u002Freporters","4.reference\u002F4.reporters\u002Findex",[149,151,156,161,166,171,176],{"title":145,"path":146,"stem":147,"icon":150},"i-lucide-file-chart-column",{"title":152,"path":153,"stem":154,"icon":155},"HTML reporter","\u002Freference\u002Freporters\u002Fhtml","4.reference\u002F4.reporters\u002F2.html","i-lucide-file-code",{"title":157,"path":158,"stem":159,"icon":160},"JSON reporter","\u002Freference\u002Freporters\u002Fjson","4.reference\u002F4.reporters\u002F3.json","i-lucide-braces",{"title":162,"path":163,"stem":164,"icon":165},"Badge reporter","\u002Freference\u002Freporters\u002Fbadge","4.reference\u002F4.reporters\u002F4.badge","i-lucide-award",{"title":167,"path":168,"stem":169,"icon":170},"SARIF reporter","\u002Freference\u002Freporters\u002Fsarif","4.reference\u002F4.reporters\u002F5.sarif","i-lucide-shield-check",{"title":172,"path":173,"stem":174,"icon":175},"CodeClimate reporter","\u002Freference\u002Freporters\u002Fcodeclimate","4.reference\u002F4.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":177,"path":178,"stem":179,"icon":180},"OpenMetrics reporter","\u002Freference\u002Freporters\u002Fopenmetrics","4.reference\u002F4.reporters\u002F7.openmetrics","i-lucide-activity",{"title":182,"path":183,"stem":184,"icon":185},"Supported formats","\u002Freference\u002Fsupported-formats","4.reference\u002F5.supported-formats","i-lucide-languages",{"title":187,"path":188,"stem":189,"icon":38},"GitHub Action","\u002Freference\u002Fgithub-action","4.reference\u002F6.github-action",{"title":191,"path":192,"stem":193,"icon":68},"Rust crates","\u002Freference\u002Frust-crates","4.reference\u002F7.rust-crates",{"title":195,"icon":6,"path":196,"stem":197,"children":198,"page":6},"Project","\u002Fproject","5.project",[199,204,209,214,239,244],{"title":200,"path":201,"stem":202,"icon":203},"Changelog","\u002Fproject\u002Fchangelog","5.project\u002F1.changelog","i-lucide-scroll-text",{"title":205,"path":206,"stem":207,"icon":208},"Migrating from v4 to v5","\u002Fproject\u002Fmigration","5.project\u002F2.migration","i-lucide-arrow-right-left",{"title":210,"path":211,"stem":212,"icon":213},"jscpd v4 (TypeScript)","\u002Fproject\u002Fv4","5.project\u002F3.v4","i-simple-icons-typescript",{"title":215,"icon":6,"path":216,"stem":217,"children":218},"Benchmarks","\u002Fproject\u002Fbenchmarks","5.project\u002F4.benchmarks\u002Findex",[219,221,226,230,235],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-gauge",{"title":222,"path":223,"stem":224,"icon":225},"Detection Speed","\u002Fproject\u002Fbenchmarks\u002Fdetection-speed","5.project\u002F4.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":227,"path":228,"stem":229,"icon":58},"Multi-Format Detection","\u002Fproject\u002Fbenchmarks\u002Fcross-format","5.project\u002F4.benchmarks\u002F3.cross-format",{"title":231,"path":232,"stem":233,"icon":234},"AI Token Efficiency","\u002Fproject\u002Fbenchmarks\u002Fai-token-efficiency","5.project\u002F4.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":236,"path":237,"stem":238,"icon":93},"Embedding Models","\u002Fproject\u002Fbenchmarks\u002Fembedding-models","5.project\u002F4.benchmarks\u002F5.embedding-models",{"title":240,"path":241,"stem":242,"icon":243},"Research","\u002Fproject\u002Fresearch","5.project\u002F5.research","i-lucide-graduation-cap",{"title":245,"path":246,"stem":247,"icon":248},"Articles","\u002Fproject\u002Farticles","5.project\u002F6.articles","i-lucide-newspaper",{"name":250,"url":251,"appearances":252,"latest":268},"github\u002Fspec-kit","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fspec-kit",[253],{"date":254,"rank":255,"stars":256,"starsToday":257,"headSha":258,"sources":259,"lines":260,"clones":261,"duplicatedLines":262,"percentage":263,"codePercentage":264,"codeSources":265,"healthScore":266,"healthGrade":267},"2026-11-05",4,147443,808,"ec9a6f3b94c0aa856f77e550785a1ddde1993de1",1083,347583,2541,42526,12.23,3.62,331,56.3,"C",{"date":254,"generatedAt":269,"name":250,"url":251,"description":270,"language":271,"stars":256,"starsToday":257,"defaultBranch":272,"headSha":258,"durationMs":273,"total":274,"formats":278,"topClones":337,"code":542,"health":744,"complexity":770,"deadCode":824},"2026-11-05T05:21:19.579Z","💫 Toolkit to help you get started with SDD or any other process!","Python","main",2590,{"sources":259,"lines":260,"tokens":275,"clones":261,"duplicatedLines":262,"duplicatedTokens":276,"percentage":263,"percentageTokens":277},2105779,291723,13.85,[279,286,293,300,306,313,320,326,331,334],{"format":280,"sources":281,"lines":282,"clones":283,"duplicatedLines":284,"percentage":285},"python",640,267456,1747,22958,8.58,{"format":287,"sources":288,"lines":289,"clones":290,"duplicatedLines":291,"percentage":292},"yaml",84,22936,581,16509,71.98,{"format":294,"sources":295,"lines":296,"clones":297,"duplicatedLines":298,"percentage":299},"markdown",228,37527,172,2544,6.78,{"format":301,"sources":302,"lines":303,"clones":304,"duplicatedLines":295,"percentage":305},"powershell",12,3280,19,6.95,{"format":307,"sources":308,"lines":309,"clones":310,"duplicatedLines":311,"percentage":312},"bash",52,4426,17,205,4.63,{"format":314,"sources":315,"lines":316,"clones":317,"duplicatedLines":318,"percentage":319},"text",30,599,3,42,7.01,{"format":321,"sources":315,"lines":322,"clones":323,"duplicatedLines":324,"percentage":325},"json",10032,2,40,0.4,{"format":327,"sources":328,"lines":329,"clones":330,"duplicatedLines":330,"percentage":330},"txt",1,876,0,{"format":332,"sources":328,"lines":333,"clones":330,"duplicatedLines":330,"percentage":330},"css",278,{"format":335,"sources":328,"lines":336,"clones":330,"duplicatedLines":330,"percentage":330},"toml",97,[338,363,375,417,433,453,469,484,497,523],{"format":287,"lines":339,"tokens":340,"first":341,"others":345,"copies":323,"excerpt":350,"kind":362},700,4451,{"name":342,"start":343,"end":344},".github\u002Fworkflows\u002Fadd-community-extension.lock.yml",592,1291,[346],{"name":347,"start":348,"end":349},".github\u002Fworkflows\u002Fadd-community-preset.lock.yml",602,1301,{"lines":351,"total":339},[352,353,354,355,356,357,358,359,360,361],"      \"create_pull_request\": \" CONSTRAINTS: Maximum 1 pull request(s) can be created. Title will be prefixed with \\\"[extension] \\\". Labels [\\\"extension-submiss…","      \"remove_labels\": \" CONSTRAINTS: Only these labels can be removed: [validation-passed validation-failed].\"","    },","    \"repo_params\": {},","    \"dynamic_tools\": []","  }","GH_AW_VALIDATION_JSON: |","  {","    \"add_comment\": {","      \"defaultMax\": 1,","data",{"format":287,"lines":364,"tokens":365,"first":366,"others":369,"copies":323,"excerpt":371,"kind":362},698,4447,{"name":367,"start":368,"end":344},".github\u002Fworkflows\u002Fadd-community-bundle.lock.yml",594,[370],{"name":342,"start":368,"end":344},{"lines":372,"total":364},[354,355,356,357,358,359,360,361,373,374],"      \"fields\": {","        \"body\": {",{"format":287,"lines":376,"tokens":377,"first":378,"others":381,"copies":404,"excerpt":405,"kind":362},35,574,{"name":367,"start":379,"end":380},428,462,[382,383,386,390,394,396,400],{"name":342,"start":379,"end":380},{"name":347,"start":384,"end":385},429,463,{"name":387,"start":388,"end":389},".github\u002Fworkflows\u002Fadd-community-workflow-step.lock.yml",422,456,{"name":391,"start":392,"end":393},".github\u002Fworkflows\u002Fbug-assess.lock.yml",421,455,{"name":395,"start":388,"end":389},".github\u002Fworkflows\u002Fbug-fix.lock.yml",{"name":397,"start":398,"end":399},".github\u002Fworkflows\u002Fbug-test.lock.yml",425,459,{"name":401,"start":402,"end":403},".github\u002Fworkflows\u002Ffeature-assess.lock.yml",424,458,8,{"lines":406,"total":376},[407,408,409,410,411,412,413,414,415,416],"outputs:","  agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }}","  ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }}","  aic: ${{ steps.parse-mcp-gateway.outputs.aic }}","  ambient_context: ${{ steps.parse-mcp-gateway.outputs.ambient_context }}","  checkout_pr_success: ${{ steps.checkout-pr.outputs.checkout_pr_success || 'true' }}","  effective_tokens: ${{ steps.parse-mcp-gateway.outputs.effective_tokens }}","  has_patch: ${{ steps.collect_output.outputs.has_patch }}","  http_400_response_error: ${{ steps.detect-agent-errors.outputs.http_400_response_error || 'false' }}","  inference_access_error: ${{ steps.detect-agent-errors.outputs.inference_access_error || 'false' }}",{"format":287,"lines":418,"tokens":419,"first":420,"others":423,"copies":255,"kind":362},137,1265,{"name":367,"start":421,"end":422},1150,1286,[424,427,430],{"name":391,"start":425,"end":426},1057,1193,{"name":397,"start":428,"end":429},1095,1231,{"name":401,"start":431,"end":432},1114,1250,{"format":287,"lines":434,"tokens":435,"first":436,"others":439,"copies":452,"kind":362},99,918,{"name":367,"start":437,"end":438},1051,1149,[440,443,446,449],{"name":387,"start":441,"end":442},1054,1152,{"name":391,"start":444,"end":445},958,1056,{"name":397,"start":447,"end":448},996,1094,{"name":401,"start":450,"end":451},1015,1113,5,{"format":287,"lines":454,"tokens":455,"first":456,"others":459,"copies":255,"kind":362},100,1124,{"name":391,"start":457,"end":458},1633,1732,[460,463,466],{"name":395,"start":461,"end":462},1707,1806,{"name":397,"start":464,"end":465},1671,1770,{"name":401,"start":467,"end":468},1690,1789,{"format":287,"lines":434,"tokens":470,"first":471,"others":474,"copies":255,"kind":362},1117,{"name":367,"start":472,"end":473},1741,1839,[475,478,481],{"name":342,"start":476,"end":477},1728,1826,{"name":347,"start":479,"end":480},1738,1836,{"name":387,"start":482,"end":483},1744,1842,{"format":287,"lines":485,"tokens":486,"first":487,"others":489,"copies":255,"kind":362},109,1068,{"name":387,"start":488,"end":392},313,[490,493,494],{"name":391,"start":491,"end":492},312,420,{"name":395,"start":488,"end":392},{"name":401,"start":495,"end":496},315,423,{"format":287,"lines":498,"tokens":499,"first":500,"others":503,"copies":522,"kind":362},68,513,{"name":367,"start":501,"end":502},1605,1672,[504,507,510,513,516,519],{"name":342,"start":505,"end":506},1592,1659,{"name":347,"start":508,"end":509},1602,1669,{"name":387,"start":511,"end":512},1608,1675,{"name":391,"start":514,"end":515},1496,1563,{"name":395,"start":517,"end":518},1570,1637,{"name":397,"start":520,"end":521},1534,1601,7,{"format":287,"lines":524,"tokens":525,"first":526,"others":529,"copies":522,"kind":362},39,496,{"name":367,"start":527,"end":528},88,126,[530,531,534,535,538,539],{"name":342,"start":527,"end":528},{"name":347,"start":532,"end":533},89,127,{"name":387,"start":532,"end":533},{"name":391,"start":536,"end":537},87,125,{"name":395,"start":527,"end":528},{"name":397,"start":540,"end":541},90,128,{"sources":265,"lines":543,"tokens":544,"clones":545,"duplicatedLines":546,"duplicatedTokens":547,"percentage":264,"percentageTokens":548,"formats":549,"topClones":563,"generated":742},91161,457193,232,3297,18130,3.97,[550,556,557],{"format":280,"sources":551,"lines":552,"clones":553,"duplicatedLines":554,"percentage":555},306,84136,199,2872,3.41,{"format":301,"sources":302,"lines":303,"clones":304,"duplicatedLines":295,"percentage":305},{"format":307,"sources":558,"lines":559,"clones":560,"duplicatedLines":561,"percentage":562},13,3745,14,197,5.26,[564,615,651,674,685,696,706,717,725,733],{"format":280,"lines":565,"tokens":566,"first":567,"others":570,"copies":565,"excerpt":602,"kind":614},10,67,{"name":568,"start":569,"end":498},"src\u002Fspecify_cli\u002Fintegrations\u002Fagy\u002F__init__.py",59,[571,575,579,582,586,590,594,598],{"name":572,"start":573,"end":574},"src\u002Fspecify_cli\u002Fintegrations\u002Fbase.py",271,280,{"name":576,"start":577,"end":578},"src\u002Fspecify_cli\u002Fintegrations\u002Fcodex\u002F__init__.py",47,56,{"name":580,"start":581,"end":540},"src\u002Fspecify_cli\u002Fintegrations\u002Fdocker_agent\u002F__init__.py",81,{"name":583,"start":584,"end":585},"src\u002Fspecify_cli\u002Fintegrations\u002Fdroid\u002F__init__.py",168,177,{"name":587,"start":588,"end":589},"src\u002Fspecify_cli\u002Fintegrations\u002Fforge\u002F__init__.py",95,104,{"name":591,"start":592,"end":593},"src\u002Fspecify_cli\u002Fintegrations\u002Fhermes\u002F__init__.py",285,294,{"name":595,"start":596,"end":597},"src\u002Fspecify_cli\u002Fintegrations\u002Fjunie\u002F__init__.py",183,192,{"name":599,"start":600,"end":601},"src\u002Fspecify_cli\u002Fintegrations\u002Fmuse\u002F__init__.py",51,60,{"lines":603,"total":565},[604,605,606,607,608,609,610,611,612,613],"def build_exec_args(","    self,","    prompt: str,","    *,","    model: str | None = None,","    output_json: bool = True,","    integration_args: Sequence[str] | None = None,","    integration_options: Mapping[str, Any] | None = None,","    project_root: Path | None = None,",") -> list[str] | None:","code",{"format":280,"lines":522,"tokens":616,"first":617,"others":620,"copies":558,"excerpt":645,"excerptSecond":648,"kind":614},50,{"name":572,"start":618,"end":619},275,281,[621,624,628,631,633,636,638,642],{"name":622,"start":498,"end":623},"src\u002Fspecify_cli\u002Fintegrations\u002Fcursor_agent\u002F__init__.py",74,{"name":625,"start":626,"end":627},"src\u002Fspecify_cli\u002Fintegrations\u002Fdevin\u002F__init__.py",63,69,{"name":580,"start":629,"end":630},85,91,{"name":583,"start":297,"end":632},178,{"name":634,"start":600,"end":635},"src\u002Fspecify_cli\u002Fintegrations\u002Fdsh\u002F__init__.py",57,{"name":587,"start":434,"end":637},105,{"name":639,"start":640,"end":641},"src\u002Fspecify_cli\u002Fintegrations\u002Fgoose\u002F__init__.py",32,38,{"name":591,"start":643,"end":644},289,295,{"lines":646,"total":522},[608,609,610,611,612,613,647],"    \"\"\"Build CLI arguments for non-interactive execution.",{"lines":649,"total":522},[608,609,610,611,612,613,650],"    \"\"\"Build CLI arguments for non-interactive ``cursor-agent`` execution.",{"format":301,"lines":652,"tokens":653,"first":654,"others":658,"copies":323,"excerpt":662,"kind":614},46,342,{"name":655,"start":656,"end":657},"scripts\u002Fpowershell\u002Fcommon.ps1",447,492,[659],{"name":655,"start":660,"end":661},559,604,{"lines":663,"total":652},[664,665,666,667,668,669,670,671,672,673],"# Priority 2: Installed presets (sorted by priority from .registry)","$presetsDir = Join-Path $RepoRoot '.specify\u002Fpresets'","if (Test-Path $presetsDir) {","    $registryFile = Join-Path $presetsDir '.registry'","    $sortedPresets = @()","    $registryParsed = $false","    if (Test-Path $registryFile) {","        try {","            $registryData = [System.IO.File]::ReadAllText($registryFile, [System.Text.Encoding]::UTF8) | ConvertFrom-Json","            if ($null -eq $registryData -or $registryData -isnot [PSCustomObject]) {",{"format":280,"lines":675,"tokens":676,"first":677,"others":681,"copies":323,"kind":614},48,277,{"name":678,"start":679,"end":680},"src\u002Fspecify_cli\u002Fintegrations\u002Falquimia\u002F__init__.py",65,112,[682],{"name":683,"start":680,"end":684},"src\u002Fspecify_cli\u002Fintegrations\u002Fclaude\u002F__init__.py",159,{"format":280,"lines":686,"tokens":687,"first":688,"others":691,"copies":323,"kind":614},54,240,{"name":683,"start":689,"end":690},194,247,[692],{"name":693,"start":694,"end":695},"src\u002Fspecify_cli\u002Fintegrations\u002Fvibe\u002F__init__.py",167,220,{"format":280,"lines":558,"tokens":627,"first":697,"others":698,"copies":255,"kind":614},{"name":568,"start":578,"end":498},[699,702,703],{"name":622,"start":700,"end":701},61,73,{"name":625,"start":578,"end":498},{"name":639,"start":704,"end":705},25,37,{"format":307,"lines":707,"tokens":708,"first":709,"others":713,"copies":323,"kind":614},20,200,{"name":710,"start":711,"end":712},"scripts\u002Fbash\u002Fcommon.sh",542,561,[714],{"name":710,"start":715,"end":716},661,680,{"format":280,"lines":718,"tokens":597,"first":719,"others":721,"copies":323,"kind":614},44,{"name":678,"start":720,"end":632},135,[722],{"name":683,"start":723,"end":724},201,244,{"format":280,"lines":640,"tokens":726,"first":727,"others":728,"copies":323,"kind":614},182,{"name":683,"start":687,"end":573},[729],{"name":730,"start":731,"end":732},"src\u002Fspecify_cli\u002Fintegrations\u002Fcopilot\u002F__init__.py",525,556,{"format":280,"lines":324,"tokens":734,"first":735,"others":738,"copies":323,"kind":614},181,{"name":572,"start":736,"end":737},1418,1457,[739],{"name":572,"start":740,"end":741},1649,1689,{"files":330,"minified":330,"sample":743},[],{"score":266,"grade":267,"size":745,"dimensions":748},{"lines":746,"files":715,"class":747},274305,"L",[749,757,764],{"id":750,"source":751,"value":752,"adjusted":752,"lines":753,"halfLife":752,"formats":754,"excluded":755,"weight":328,"score":616},"duplication","jscpd",8.5,23383,[280,307,301],[756,314,362],"markup",{"id":758,"source":751,"value":325,"adjusted":325,"lines":759,"halfLife":760,"coverage":761,"weight":762,"score":763},"dead-code",1097,7.5,97.5,0.975,96.1,{"id":765,"source":751,"value":766,"adjusted":767,"lines":768,"halfLife":616,"weight":328,"score":769},"complexity",71,70.6,194783,37.6,{"total":771,"mean":772,"files":773},29235,44.2,[774,779,784,789,794,799,804,809,814,819],{"path":775,"complexity":776,"lines":777,"bytes":778},"src\u002Fspecify_cli\u002Fextensions\u002F__init__.py",1208,6235,276118,{"path":780,"complexity":781,"lines":782,"bytes":783},"tests\u002Ftest_workflows.py",710,12504,496584,{"path":785,"complexity":786,"lines":787,"bytes":788},"tests\u002Fspecify_cli\u002Fintegrations\u002Ftest_installed_adapters.py",657,4757,214297,{"path":790,"complexity":791,"lines":792,"bytes":793},"src\u002Fspecify_cli\u002Fevents\u002F__init__.py",394,2632,116041,{"path":795,"complexity":796,"lines":797,"bytes":798},"src\u002Fspecify_cli\u002Fintegrations\u002Finstaller.py",348,1039,47980,{"path":800,"complexity":801,"lines":802,"bytes":803},"src\u002Fspecify_cli\u002Fworkflows\u002F_commands.py",321,1834,72597,{"path":805,"complexity":806,"lines":807,"bytes":808},"tests\u002Fworkflows\u002Ftest_composition_execution.py",317,3599,123459,{"path":810,"complexity":811,"lines":812,"bytes":813},"src\u002Fspecify_cli\u002Fworkflows\u002F_execution.py",311,1001,40923,{"path":815,"complexity":816,"lines":817,"bytes":818},"tests\u002Fintegrations\u002Ftest_integration_generic.py",310,2777,117566,{"path":820,"complexity":821,"lines":822,"bytes":823},"tests\u002Fspecify_cli\u002Fworkflows\u002Ftest_command_add.py",265,3206,131507,{"percentage":825,"findings":826,"files":827,"byCategory":828,"largest":839},0.41,94,673,[829,831,833,836],{"category":830,"count":452},"unused-file",{"category":832,"count":255},"unused-export",{"category":834,"count":835},"unused-symbol",6,{"category":837,"count":838},"unused-import",79,[840,844,847,849,851,855,858,861,864,867],{"category":830,"path":841,"name":842,"line":328,"lines":843},"src\u002Fspecify_cli\u002Fworkflows\u002Foverlay\u002Fmerge.py","",466,{"category":830,"path":845,"name":842,"line":328,"lines":846},"src\u002Fspecify_cli\u002Fworkflows\u002Foverlay\u002Flayer_sources.py",250,{"category":830,"path":848,"name":842,"line":328,"lines":336},"src\u002Fspecify_cli\u002Fworkflows\u002Foverlay\u002Fcomposer.py",{"category":830,"path":850,"name":842,"line":328,"lines":588},"src\u002Fspecify_cli\u002Fworkflows\u002Foverlay\u002Fresolver.py",{"category":832,"path":852,"name":853,"line":854,"lines":640},"src\u002Fspecify_cli\u002Fauthentication\u002Fgithub_http.py","build_github_request",58,{"category":834,"path":800,"name":856,"line":857,"lines":704},"_check_json_byte_budget",1110,{"category":834,"path":800,"name":859,"line":860,"lines":558},"_validate_local_workflow_package",717,{"category":834,"path":862,"name":863,"line":704,"lines":404},"src\u002Fspecify_cli\u002Fcommand_version.py","_json_result",{"category":834,"path":800,"name":865,"line":866,"lines":404},"_workflow_versions_match",732,{"category":832,"path":868,"name":869,"line":870,"lines":835},"src\u002Fspecify_cli\u002Fbundles\u002Fresolver.py","load_manifest_from_dir",187,{"\u002Ftrending\u002Fgithub\u002Fspec-kit":872},{"views":330,"visits":330},1793861473487]