{"_id":"dev-loops","_rev":"43-6ff57733581aea2b4cdc1a3dbad4162f","name":"dev-loops","dist-tags":{"rc":"1.0.0-rc.7","pre":"1.0.5-pre.1","latest":"1.0.5"},"versions":{"0.1.0":{"name":"dev-loops","version":"0.1.0","keywords":["pi-package","pi","pi-coding-agent","workflow","dev-loop","github","copilot"],"license":"MIT","_id":"dev-loops@0.1.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"f9a904278dd6240bd9f0035357a77e7ce9d977af","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.1.0.tgz","fileCount":156,"integrity":"sha512-gXdBPdriX+ZndJsobC9r81KsRfrVCG48oe+99KSV9rHIqVKCa7X9EhsZPQvYM7pVYm8wCWWpSH3NM0BUMRuilg==","signatures":[{"sig":"MEQCIG/zJhUqyUd39p4KpCtYtJhhOaBR2U86mK9MPJPbRckrAiB3KwSz/cnC0FbdKobgwFG7oeKmfWlliCNY1Yg/f4gvDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1483053},"type":"module","engines":{"node":">=20"},"gitHead":"de7a67c3bb94d046d9d6bfdaf5e0b3ce77241463","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki-local.mjs","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki-local.mjs prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","repo-wiki:local-lint":"node scripts/repo-wiki-local.mjs lint --repo .","repo-wiki:local-plan":"node scripts/repo-wiki-local.mjs plan --repo .","repo-wiki:local-scan":"node scripts/repo-wiki-local.mjs scan --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-compile":"node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-bootstrap":"node scripts/repo-wiki-local.mjs scan --repo . && node scripts/repo-wiki-local.mjs plan --repo . && node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-lint-docs":"node scripts/repo-wiki-local.mjs lint-docs --repo ."},"_npmUser":{"name":"mfittko","email":"info@mfittko.com"},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.12.1","description":"Shared Pi workflow infrastructure for reusable local and remote development loops","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","mermaid":"11.15.0","@dev-loops/core":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@mariozechner/pi-tui":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.1.0_1781563275893_0.14550369797883844","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"dev-loops","version":"0.1.1","keywords":["pi-package","pi","pi-coding-agent","workflow","dev-loop","github","copilot"],"license":"MIT","_id":"dev-loops@0.1.1","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"e5568f1894ad96deeee5ad63b171283e41b1ecca","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.1.1.tgz","fileCount":156,"integrity":"sha512-Iwp4Y9jcUyyvSYZ67iPJHigIK8S+aoeEtS0fWhKyTCHukhV5d0o/zP3HexNsmAZPSdDWWT+1VQjQkdmNGacJLg==","signatures":[{"sig":"MEYCIQCFLEnFpcjg2LWIxpvnFNoiszzlLqqsgMZ06JGjQfeDSAIhAMl+jOhJatMi7LjDJLi41A6kA9CwXOiu2WMJckRbQ+SI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1483067},"type":"module","engines":{"node":">=20"},"gitHead":"b77d27dc762284d06a205bc89a57a9e8f8129019","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki-local.mjs","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki-local.mjs prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","repo-wiki:local-lint":"node scripts/repo-wiki-local.mjs lint --repo .","repo-wiki:local-plan":"node scripts/repo-wiki-local.mjs plan --repo .","repo-wiki:local-scan":"node scripts/repo-wiki-local.mjs scan --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-compile":"node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-bootstrap":"node scripts/repo-wiki-local.mjs scan --repo . && node scripts/repo-wiki-local.mjs plan --repo . && node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-lint-docs":"node scripts/repo-wiki-local.mjs lint-docs --repo ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Shared Pi workflow infrastructure for reusable local and remote development loops","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","mermaid":"11.15.0","@dev-loops/core":"^0.1.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.1.1_1781586497191_0.0864879020889402","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"dev-loops","version":"0.1.2","keywords":["pi-package","pi","pi-coding-agent","workflow","dev-loop","github","copilot"],"license":"MIT","_id":"dev-loops@0.1.2","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"5ccb1b5e501c5035e57008e26737de78ec9142c6","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.1.2.tgz","fileCount":155,"integrity":"sha512-+8EDNiHOU17uviwa3hu1Yazcj19ugm6JY2gbGJW2EBFTdjtEPVrErztRTjkB+0qkP1rEAZzzbpQd02cDPaQGYQ==","signatures":[{"sig":"MEUCIQCA7+sLgAQcR95Z6CZLremJ+Ngb+g+Zk2Pbm001sQgzOgIgCwRrlRUcINu/DSjb2Q179oOz0y536W9EqOgfE1bwFdc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1463727},"type":"module","engines":{"node":">=20"},"gitHead":"a5cea5ddc88228794f97a1b60f08ed78863f3f2c","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki-local.mjs","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki-local.mjs prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","repo-wiki:local-lint":"node scripts/repo-wiki-local.mjs lint --repo .","repo-wiki:local-plan":"node scripts/repo-wiki-local.mjs plan --repo .","repo-wiki:local-scan":"node scripts/repo-wiki-local.mjs scan --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-compile":"node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-bootstrap":"node scripts/repo-wiki-local.mjs scan --repo . && node scripts/repo-wiki-local.mjs plan --repo . && node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-lint-docs":"node scripts/repo-wiki-local.mjs lint-docs --repo ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Shared Pi workflow infrastructure for reusable local and remote development loops","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","mermaid":"11.15.0","@dev-loops/core":"^0.1.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.1.2_1781598837171_0.149261023366152","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"dev-loops","version":"0.1.3","keywords":["pi-package","pi","pi-coding-agent","workflow","dev-loop","github","copilot"],"license":"MIT","_id":"dev-loops@0.1.3","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"79630d67fc2365e09f3a0ccecae30a59306be659","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.1.3.tgz","fileCount":155,"integrity":"sha512-2XwsZ4q2ZquEJ8IQXWF1p1wTMD232I7lMunQYFKx2DmIjqCz6wUhkVyVitfrHBpMxmPLBlwFVt9nAv/dqW4N1g==","signatures":[{"sig":"MEQCIHpa3v5sPj2w2XS9QnNq3La09whsFt11h6BmCVwc9ixUAiBStAmC6ThmCTsl2P5IK9+hO2mLV5396nwpZXhgjKewrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1463693},"type":"module","engines":{"node":">=20"},"gitHead":"029095805fad9bcaf1d1f6e5902a56e6de67a1cc","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki-local.mjs","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki-local.mjs prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","repo-wiki:local-lint":"node scripts/repo-wiki-local.mjs lint --repo .","repo-wiki:local-plan":"node scripts/repo-wiki-local.mjs plan --repo .","repo-wiki:local-scan":"node scripts/repo-wiki-local.mjs scan --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-compile":"node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-bootstrap":"node scripts/repo-wiki-local.mjs scan --repo . && node scripts/repo-wiki-local.mjs plan --repo . && node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-lint-docs":"node scripts/repo-wiki-local.mjs lint-docs --repo ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Shared Pi workflow infrastructure for reusable local and remote development loops","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","mermaid":"11.15.0","@dev-loops/core":"^0.1.3"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.1.3_1781599681929_0.29398388394161357","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"dev-loops","version":"0.2.0","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.2.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"19a9e7bc4067986f8621b19378c1b35d34818fb1","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.2.0.tgz","fileCount":210,"integrity":"sha512-83kqak8T2ISi+A+5tW69U/O4JOpL20t3VztrLA6D+JYwZmm3rRagTweJ1OL99no5V1LLGcOGHL67MaooOk1+Cw==","signatures":[{"sig":"MEQCIHM54tldfbG7y7hT1VNMhOazZOR+6Ed4CIAO5UswjITtAiBqDm9uhiwqdM4a2UcoYzV0Ud+hgrMK0CGWf6k89+8kWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1765287},"type":"module","engines":{"node":">=20"},"gitHead":"f9b8b62611ae5e5c7fac0353adb6c6553020af8f","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki-local.mjs","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki-local.mjs prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","repo-wiki:local-lint":"node scripts/repo-wiki-local.mjs lint --repo .","repo-wiki:local-plan":"node scripts/repo-wiki-local.mjs plan --repo .","repo-wiki:local-scan":"node scripts/repo-wiki-local.mjs scan --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-compile":"node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-bootstrap":"node scripts/repo-wiki-local.mjs scan --repo . && node scripts/repo-wiki-local.mjs plan --repo . && node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-lint-docs":"node scripts/repo-wiki-local.mjs lint-docs --repo ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","mermaid":"11.15.0","@dev-loops/core":"^0.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.2.0_1782290261386_0.3259482911645928","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"dev-loops","version":"0.2.1","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.2.1","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"66f3c37e189f7d82c7315fbc78e0b9c22de57fe0","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.2.1.tgz","fileCount":211,"integrity":"sha512-KEgiMZgLSRngiGpo3FwXjxRs7iVdeBlXTGrrB/c4mQ+OnDH4TgN/T3vBJXFxLkQ3LvP75W/AOVKl3yPPpeDKMw==","signatures":[{"sig":"MEUCIGTf47zFkNxHYujCdm9vzKYrf5+gQ/fPStK9PK4jajQPAiEArl4cu53ANjJmFEHWGZBq4yanv7rGSE6TZmIbrc8U/6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1767627},"type":"module","engines":{"node":">=20"},"gitHead":"dd699d4fcb275485235e028f4b874e771d18709e","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki-local.mjs","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki-local.mjs prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","repo-wiki:local-lint":"node scripts/repo-wiki-local.mjs lint --repo .","repo-wiki:local-plan":"node scripts/repo-wiki-local.mjs plan --repo .","repo-wiki:local-scan":"node scripts/repo-wiki-local.mjs scan --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-compile":"node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-bootstrap":"node scripts/repo-wiki-local.mjs scan --repo . && node scripts/repo-wiki-local.mjs plan --repo . && node scripts/repo-wiki-local.mjs compile --repo .","repo-wiki:local-lint-docs":"node scripts/repo-wiki-local.mjs lint-docs --repo ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","mermaid":"11.15.0","@dev-loops/core":"^0.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"c8":"^11.0.0","tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.2.1_1782293056711_0.7027872295564317","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"dev-loops","version":"0.2.2","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.2.2","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"8ef112ae03a8bb4cb142a04ec1d604e1242b5568","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.2.2.tgz","fileCount":210,"integrity":"sha512-PkbkS/pxkFnxgn55f0L3jC1xdGsKgInF4Bg7IMMU3DrQABlNGqzReBiBWk3m0vPQP8xmiQY+5gLu/nflIHAdnA==","signatures":[{"sig":"MEUCIDBEnFzqBfLq4u0dV3ymJWb9CTcsKXlbLsWfdia2/fXmAiEA5pqea1J29dLlQhFZw1zqsNhCtGWPnoYHo4cFtLbjqLg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1772556},"type":"module","engines":{"node":">=20"},"gitHead":"a09d5aa73e80603da48c9e5f16bda9b37c16c568","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mermaid":"11.15.0","@dev-loops/core":"^0.2.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.2.2_1782298167975_0.5716200122759194","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"dev-loops","version":"0.2.3","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.2.3","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"0185cb9bbfbbacbd1878941270435f044871ca52","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.2.3.tgz","fileCount":210,"integrity":"sha512-hQX8robn3J77N7WauxWS7M89V2SaR4QUzLNzb52iLtaLtqeIfIPu6OZAcHKp0wC+LYy4dHQPirh3/V4c9Qrpjw==","signatures":[{"sig":"MEUCIAYX59V1UEMsCMiMl57XMGphUiIRFUCjysA1vWQfaDHiAiEAp3Nc1/W63kj5/kDgZOx3E84SbE+/uoewklHcGsp6AXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1775377},"type":"module","engines":{"node":">=20"},"gitHead":"afacdce6e5b9496690f40c10648608bff8d5cbf5","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mermaid":"11.15.0","@dev-loops/core":"^0.2.3"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.2.3_1782301848329_0.5961965186268752","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"dev-loops","version":"0.2.4","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.2.4","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"4fbbe578f9a4505f37c15192938f34cc317040ab","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.2.4.tgz","fileCount":210,"integrity":"sha512-j7QI+4MH+iGJTNluxa/z7bzDgSItQQVCmh2H90DEKZECDQbagiB/i6ZVL8aR0YxB/xfdwAfrjSMCZWg5kUwXLQ==","signatures":[{"sig":"MEUCIC2UclKrgk2rVxNsl1LIxtBIHBtiURrqG1FgS/YXx1pgAiEAybJJ8ELOpVNw82Fj82R7hIq6nUIrCGSkuN6u7krWRDo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1773720},"type":"module","engines":{"node":">=20"},"gitHead":"38e330c2aebdd0255c68dd6f233f83dd0199af0d","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mermaid":"11.15.0","@dev-loops/core":"^0.2.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.2.4_1782305249730_0.013833158006005597","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"dev-loops","version":"0.2.5","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.2.5","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"3947d293438ad70263d37a180be3184000a6fd62","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.2.5.tgz","fileCount":210,"integrity":"sha512-eJU3ZZ8znxHLQ/Xi6lhSmhGUmMyGVDBTb+l44G0nGG62T63o9ycS6qJiVMpdFugWi8pywp8xB58D7SVF0lmw/A==","signatures":[{"sig":"MEUCICwik4UjXFqYwPQbIwbyIFamUP+rF9vqvKEL5LrPk/zXAiEAuax1vFhMJFPIJQf9Shv38Mmp2VrWGFPHF0SrndAiRQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1775488},"type":"module","engines":{"node":">=20"},"gitHead":"52c37040ab086d4d0fe0e15d60f65a137dd7b24c","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.16.0","dependencies":{"mermaid":"11.15.0","@dev-loops/core":"^0.2.5"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.2.5_1782308916951_0.1494734503895503","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"dev-loops","version":"0.2.6","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.2.6","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"c09710eb5439d03c0e9b97212c44f092eb28a7a2","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.2.6.tgz","fileCount":214,"integrity":"sha512-EQ+McICVcmxk+CD8eAo0prlSpNcu39Hq7ETqgCvaidBquM5EpyLfZg1E8DERiFrZqPy3WyJGDypC+v0IWdFNnQ==","signatures":[{"sig":"MEUCIQDV9ci0NSM7ftLdeuC8W2EEfAVSubfqGsXPFiE7PvIPxgIgW/d9N32FXimFTRimJecYYfVEahlJ4nmHeciwdOyerTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1799673},"type":"module","engines":{"node":">=20"},"gitHead":"dcd0442b372e4cd6ed012209fb9238a687bde7e8","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.17.0","dependencies":{"mermaid":"11.15.0","@dev-loops/core":"^0.2.6"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.2.6_1782365504039_0.12979996425841578","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"dev-loops","version":"0.2.7","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.2.7","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"1ca5235d3e45b66d8f9223557e466dec5c1fe86e","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.2.7.tgz","fileCount":215,"integrity":"sha512-XbJWRFX3e+pa61n55C2ve2DUXU9motI+RKmbiQivzvpbfJ4tPgtuJPuEFA0ASA0pMkh/+f5oWV1WxIgffiSeMw==","signatures":[{"sig":"MEQCIGt9AwEVZ9+vHHM3So4+0HLu97N9evH7ZZfA3hhLBv5uAiB79CA0fmVYg5ow+JYJm4asGqrELJANpEmA3SytrlUymg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1850269},"type":"module","engines":{"node":">=20"},"gitHead":"b58a85e97f96361afc9887c65954dd998ecb03c5","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.17.0","dependencies":{"mermaid":"11.15.0","@dev-loops/core":"^0.2.7"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.2.7_1782383539747_0.5898592316477698","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"dev-loops","version":"0.3.0","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.3.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"8d0818e058a0af078e0b975e6f4adf1466a800e8","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.3.0.tgz","fileCount":219,"integrity":"sha512-QKS4bAIdesmxyQ1mnjPZqHNnruJRPaibH/ClX/JBpZoWI7QcYBO/aaC0mRXusOMNaM/lodZITdMzrStibOO6Sw==","signatures":[{"sig":"MEUCIDSKufNUqWUGkRYZzF+kqxjz0cEGL+IaRq24/kU4hN6kAiEA6JAs4sP1ex4ppOqRH3oiufyI82XWWG1GhFEqyTzEa+8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2016716},"type":"module","engines":{"node":">=20"},"gitHead":"eaf44c32f00baed2f1c25af02f55baaed41fd2e4","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.17.0","dependencies":{"mermaid":"11.15.0","@dev-loops/core":"^0.3.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.3.0_1782481554433_0.09133109870446021","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"dev-loops","version":"0.4.0","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.4.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"fe36b0ec03b062feb802f55b49b2218d344321a9","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.4.0.tgz","fileCount":226,"integrity":"sha512-j7oGqaqnNRPcuERjQ0iTr5b1ZWYSlZJUrEJlKWXXD+aWVTRMfFBnUPOuPSGc5e6h88kVCuR0VuVSd/bndqpP6g==","signatures":[{"sig":"MEUCIQClf2j4b3ceCatZS8VgyXYybi3HslZgI6dSLxyAncwCoAIgL6TIPz6c5ElkkdJQeNDwMiXkVsC9fhZK+d8xR6A79Nc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2112550},"type":"module","engines":{"node":">=24"},"gitHead":"b490ec58a1337397e26f7b15347afe5e8966e6ad","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.17.0","dependencies":{"mermaid":"11.15.0","@dev-loops/core":"^0.4.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.4.0_1782529543702_0.5028860323872746","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"dev-loops","version":"0.5.0","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.5.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"15abc38cbc768af51658a753320b71f2c90db942","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.5.0.tgz","fileCount":247,"integrity":"sha512-2Yc5a50JueNDh8yHjQcceaLqEWBkiFm9mQ3kFHPkG75Wu2aQTjloCJgSMTE7ktfB20yyjOjTikC6Z8LLNbWQXA==","signatures":[{"sig":"MEQCIGj+2AkeHHXeXwdrqYIv2jlw1T8RIjEaIBfOCxEJ5aCCAiAFlLZV0KqVZAp43HjgJdPcp0Am/bhRTxQL6oQVi3SJBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2368410},"type":"module","engines":{"node":">=24"},"gitHead":"ba0eee10e451622e55a1c3809fa7eac175a48327","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"playwright test -c playwright.dev-loops-deep-dive.config.mjs","test:playwright:intro-deck":"playwright test -c playwright.intro-deck.config.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.17.0","dependencies":{"mermaid":"11.15.0","@dev-loops/core":"^0.5.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.5.0_1782669475794_0.5967190345119291","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"dev-loops","version":"0.6.0","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.6.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"8e69e07b2f53eff57db91e885da1b4d20ca9b2fe","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.6.0.tgz","fileCount":263,"integrity":"sha512-AS8LmECXF7ViDwXN/x3ep6vNu6ESDZariuW88XQI8OdRj+gYHzgf0Y393JSRBOIxepIA5c6Ik5lpT17yvAWg9w==","signatures":[{"sig":"MEYCIQDaZwre29CqWlOtIuF+wb5t5NVQ8H8fB1DbMaVz75IomgIhAOGGV55mQhRABalhKJjZSg8w9Ln86GX5th4pzjm8bxYp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2460904},"type":"module","engines":{"node":">=24"},"gitHead":"136f621c38ddd6debf73a128e5dbc5360eaa92c5","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/extension-claude-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"playwright test -c playwright.inspect-run-viewer.config.mjs","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"playwright test -c playwright.dev-loops-deep-dive.config.mjs","test:playwright:intro-deck":"playwright test -c playwright.intro-deck.config.mjs","test:playwright:intro-article":"playwright test -c playwright.intro-article.config.mjs","test:playwright:deep-dive-article":"playwright test -c playwright.deep-dive-article.config.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.13.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.17.0","dependencies":{"mermaid":"11.15.0","@dev-loops/core":"^0.6.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.6.0_1782707262755_0.6888123684281064","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"dev-loops","version":"0.7.1","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.7.1","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"2b9bd0b0bef61f00a9ea2069c554cc83f9819323","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.7.1.tgz","fileCount":281,"integrity":"sha512-4F3dzMC5yahomPdQnkHXilmyOrXsem2gwygoLq27/Grc90g3rdvL4KlUw53ik/Pew67PK3C2+L13nf14CIDuvQ==","signatures":[{"sig":"MEYCIQDAOQDSGLfAnqDsM8LsAHM11ogGk3tnM6j8tDOMAdBJngIhAPmLRK6t3ETio2Y2hfM+mDOgwHd30VPAB439zZwA6AIC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6075741},"type":"module","engines":{"node":">=24"},"gitHead":"b1d6af77958e25fe4c37c6f5e54064045aff9b2a","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-no-duplicate-rules.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.16.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@dev-loops/core":"^0.7.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.7.1_1783268902972_0.23310900799940582","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"dev-loops","version":"0.7.2","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.7.2","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"609080ddbf1cf3c42b204af2f79e8f2cba626e26","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.7.2.tgz","fileCount":288,"integrity":"sha512-khCcBqS9ue+4XBO/zad6trvzGai5SICmskRqO7SQdiPxl8zRl3LgebDXpwOp3WTsHl5Op0MnN1tEK5A8kpxp+w==","signatures":[{"sig":"MEQCIBQignDkmcX3NqZzoaz6qBY0bBwdCa981MqhiKZ5XOGPAiAKFg27DqViwE6hzTAH1nJLUCO/sn4aKYfwMmrh6taMZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6219166},"type":"module","engines":{"node":">=24"},"gitHead":"1f1195ac07cedac0d6a0877357d5a03eae241a79","scripts":{"test":"npm run test:assets && npm run test:extension && npm run test:scripts && npm run test:core && npm run test:docs && npm run test:pack","verify":"npm test && npm run test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-rule-ownership.mjs","test:pack":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/packaged-install-smoke.test.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.16.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@dev-loops/core":"^0.7.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.7.2_1783412556211_0.3588305228428572","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"dev-loops","version":"0.8.0","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.8.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"a062a2ba065a0612784f52b683e996bc30b1f742","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.8.0.tgz","fileCount":291,"integrity":"sha512-p2Zo+hzL+tomBxccm/+aObmPmYmOeuHXXyDtJ39mvFfHN8ayza3AOuk0NNlEUmb/ZV8mxUXZCUbA2kaBeE84ug==","signatures":[{"sig":"MEUCIQDt7nWL6yY/Tv3Y6iQ/N2YnvSCy/PArsyGwmQVqQHwKjAIgT2z47f2leFdN0l7AsY5AyCY064pGvYEj1P6IuL6KGNo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6285677},"type":"module","engines":{"node":">=24"},"gitHead":"22ea5ac2f5b74d4fe2b7f6a7c527d6b452d21910","scripts":{"test":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack","verify":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-rule-ownership.mjs","test:pack":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/packaged-install-smoke.test.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.16.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@dev-loops/core":"^0.8.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","npm-run-all2":"^9.0.2","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.8.0_1783527100063_0.8791674740644224","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"dev-loops","version":"0.9.0","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@0.9.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"96ce35d699e50eacfb663bed6a64b4a51d335dd1","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-0.9.0.tgz","fileCount":300,"integrity":"sha512-o2fZmK5DbYaDII9ilNm3LK+Q8BFdOwKs8dBI9r8Zd6t2veQgrAcRzejVZw6xwiI+e5hI0yFVCuCouLg1o7T3og==","signatures":[{"sig":"MEUCIQDe2rnAZ/sIk5r0fR7z/EVACfIWXFVkvhCThIZZGjr6hAIgG0xq5JEYLogfU9GftElDAc+8zwuzkhocqOWUb2qgV4U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6395394},"type":"module","engines":{"node":">=24"},"gitHead":"f20bcde9e9c692851780fd9b478c5c002d2f1fc7","scripts":{"test":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack","verify":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-rule-ownership.mjs","test:pack":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/packaged-install-smoke.test.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:ui-review-drive":"PW_UI_SLICE=ui-review-drive playwright test --project=ui-review-drive","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.16.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@dev-loops/core":"^0.9.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","npm-run-all2":"^9.0.2","@playwright/test":"^1.60.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_0.9.0_1783631728945_0.7037576126319764","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.1":{"name":"dev-loops","version":"1.0.0-rc.1","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.0-rc.1","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"3154fca2e003000e71385cf5e2a8145d182c1001","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.0-rc.1.tgz","fileCount":305,"integrity":"sha512-oBjIoMRbZe2daHzMBjo3Edak1uttNGsZsTR5YGUqGQkqETblLtREC8nM/4Bqeqwwr5o6D6ZzNNjEcpAeMhvmMw==","signatures":[{"sig":"MEUCIQCwCZ0uwFPvXMSuLsDTrgyAWGsNi/yQHjpGLbwacXMsGQIgMxRwV6SoJYDDiNOJpl8NPT+vvA2aibTfCZYyKO81+Rs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.0-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6528906},"type":"module","engines":{"node":">=24"},"gitHead":"e06b38bd5fc39786b1c181505eca90aab3d62a8d","scripts":{"test":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack","verify":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-rule-ownership.mjs","test:pack":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/packaged-install-smoke.test.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:ui-review-drive":"PW_UI_SLICE=ui-review-drive playwright test --project=ui-review-drive","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.16.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@dev-loops/core":"^1.0.0-rc.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.0","npm-run-all2":"^9.0.2","@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.0-rc.1_1784023213878_0.26005333636878425","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.2":{"name":"dev-loops","version":"1.0.0-rc.2","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.0-rc.2","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"4b02938dab1f2041a9906d3b1faf10f84d2bd96c","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.0-rc.2.tgz","fileCount":309,"integrity":"sha512-nLftTeEUZmV09/DojndaVHyEIJoRYM10T1XEOIWRdcz429FbaCW3kM3ZnFPh/4JPRHoJc+ZKzKb6xa+eDVR4rw==","signatures":[{"sig":"MEUCIQDr4o/bfWS5QRZvxJJ3mqF0eHfSQ3Luo9TlW5OGaOSG3QIgHrotPUmtZyNF9C64CBDZoPZtOM15zECVb8Mt4jMcsrg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.0-rc.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6576235},"type":"module","engines":{"node":">=24"},"gitHead":"16746f61b808670ffa78db83c795723643ffec61","scripts":{"test":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack","verify":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack test:dev-loop","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-rule-ownership.mjs","test:pack":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/packaged-install-smoke.test.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","schema:check":"node scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","articles:check":"node scripts/pages/render-article.mjs --check","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs","articles:render":"node scripts/pages/render-article.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","schema:generate":"node scripts/generate-config-schema.mjs","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:ui-review-drive":"PW_UI_SLICE=ui-review-drive playwright test --project=ui-review-drive","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.16.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@dev-loops/core":"^1.0.0-rc.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.0","npm-run-all2":"^9.0.2","@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.0-rc.2_1784303680764_0.32935452787573904","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.3":{"name":"dev-loops","version":"1.0.0-rc.3","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.0-rc.3","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"e5b4d4eaa09bd7fb9471dfb24575d9cf50be9331","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.0-rc.3.tgz","fileCount":354,"integrity":"sha512-xVw+kCgBlG5IusFX05HLsUwPx9N2p/+v6mOhswea2RmgdnQMPDkab2DC/HMqeHA0HZHSqXR28mJh4g1tnKtQQw==","signatures":[{"sig":"MEQCIBkS/MqeA/16QN1QWuYtc/3H8hEh24O3wZyblHZfJIPnAiAeyfWgHVQhKzdzW0NN/Lh7mERHs8vgd2DWL5OkSEdETg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.0-rc.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7196988},"type":"module","engines":{"node":">=24"},"gitHead":"b9e9a561f884564ca61e629e81835a02aa77cd1f","scripts":{"test":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack","verify":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack test:dev-loop test:workflows","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-rule-ownership.mjs","test:pack":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/packaged-install-smoke.test.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","schema:check":"node scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","articles:check":"node scripts/pages/render-article.mjs --check","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs","test:workflows":"node scripts/github/lint-workflows.mjs","articles:render":"node scripts/pages/render-article.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","schema:generate":"node scripts/generate-config-schema.mjs","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:ui-review-drive":"PW_UI_SLICE=ui-review-drive playwright test --project=ui-review-drive","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.16.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@dev-loops/core":"^1.0.0-rc.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.0","npm-run-all2":"^9.0.2","@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.0-rc.3_1784418356561_0.5617419831424117","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.4":{"name":"dev-loops","version":"1.0.0-rc.4","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.0-rc.4","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"95112f0893138c03232058b3d0c5ee53463eb794","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.0-rc.4.tgz","fileCount":370,"integrity":"sha512-4GTfP2kooBo3nV727G4J6xF9cupx8AyGEWszpQZNXfxApSlbYJgIC/HrBlvjgPH/JpEASq3DTrREGlHIvxvNxQ==","signatures":[{"sig":"MEUCIQC0AjhhxoOSwiPLOGXY43+420ocWLNzEaLWeQUeyXBXbQIgNtnmnWdYbum9PWo4Z+TTBkpHbnzVxfrzmfub3UxqJcY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.0-rc.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7991950},"type":"module","engines":{"node":">=24"},"gitHead":"947400871626db520087629453c2eda1b0febba1","scripts":{"test":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack","verify":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack test:dev-loop test:workflows","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-rule-ownership.mjs","test:pack":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/packaged-install-smoke.test.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"node scripts/claude/generate-claude-assets.mjs --check","schema:check":"node scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","articles:check":"node scripts/pages/render-article.mjs --check","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"node scripts/github/lint-workflows.mjs","articles:render":"node scripts/pages/render-article.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","schema:generate":"node scripts/generate-config-schema.mjs","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:ui-review-drive":"PW_UI_SLICE=ui-review-drive playwright test --project=ui-review-drive","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck playwright test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article playwright test --project=how-decided-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.16.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.0-rc.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.0","npm-run-all2":"^9.0.2","@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.0-rc.4_1786278094626_0.3837829256952814","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.5":{"name":"dev-loops","version":"1.0.0-rc.5","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.0-rc.5","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"295178d6e26115f79a7a68b1296d354cdfb14068","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.0-rc.5.tgz","fileCount":372,"integrity":"sha512-rYU/zLuLMNCpCyZPxg4IvQZPu3BLpD0OUnugLMhZpEYHUuzoiz/FPhsS5ZvX5Rm8eUa5gD4U9wsAwjl6FyR8uA==","signatures":[{"sig":"MEUCIQD+YripDU7OfKZ3M0keQ30sXEbJMaIBwCXk4mN5qFOqxQIgJcHD/quDFl0fsMcIg48G95FKui4cohywJKJssWQP/Dw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.0-rc.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8159825},"type":"module","engines":{"node":">=24"},"gitHead":"e51c7da3c30c9eaa8f02e3f0dfbafd2783ab1582","scripts":{"test":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack","verify":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack test:dev-loop test:workflows","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-rule-ownership.mjs","test:pack":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/packaged-install-smoke.test.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"node scripts/claude/generate-claude-assets.mjs --check","schema:check":"node scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","articles:check":"node scripts/pages/render-article.mjs --check","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"node scripts/github/lint-workflows.mjs","articles:render":"node scripts/pages/render-article.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","schema:generate":"node scripts/generate-config-schema.mjs","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:ui-review-drive":"PW_UI_SLICE=ui-review-drive playwright test --project=ui-review-drive","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck playwright test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article playwright test --project=how-decided-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.16.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.0-rc.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.0","npm-run-all2":"^9.0.2","@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.0-rc.5_1786342506183_0.16763406224777322","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.6":{"name":"dev-loops","version":"1.0.0-rc.6","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.0-rc.6","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"f5134d5a7e19f8ddf8d03b6017361dc987c6240b","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.0-rc.6.tgz","fileCount":380,"integrity":"sha512-GIAixWmmYKwb7W2pl4x6SRVkRK1XVGOqRGtVduhbQkBsel6oBx+vvL+ebZxTSarwzKu2qundTvR8S9kIYiBfsQ==","signatures":[{"sig":"MEUCIQCaF+X2A0//nciRyj47uC2cTQZ/oW/S434zp/xu/IgzUgIgc9ozXC/6S19xHyw4nXUe5HJBPbWNfyFUsz1U4lYg4iY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.0-rc.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8418276},"type":"module","engines":{"node":">=24"},"gitHead":"7ddca0144509e838a87c20daa73413d489950934","scripts":{"test":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack","verify":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack test:dev-loop test:workflows","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-rule-ownership.mjs && node scripts/docs/validate-decision-records.mjs","test:pack":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/packaged-install-smoke.test.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"node scripts/claude/generate-claude-assets.mjs --check","schema:check":"node scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","articles:check":"node scripts/pages/render-article.mjs --check","repo-wiki:init":"node scripts/repo-wiki.mjs init --repo .","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","repo-wiki:plan":"node scripts/repo-wiki.mjs plan --repo .","repo-wiki:scan":"node scripts/repo-wiki.mjs scan --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"node scripts/github/lint-workflows.mjs","articles:render":"node scripts/pages/render-article.mjs","repo-wiki:local":"node scripts/repo-wiki.mjs --source local","schema:generate":"node scripts/generate-config-schema.mjs","repo-wiki:search":"node scripts/repo-wiki.mjs search --repo .","repo-wiki:compile":"node scripts/repo-wiki.mjs compile --repo .","repo-wiki:prepare":"node scripts/repo-wiki.mjs --source local prepare","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","repo-wiki:lint-docs":"node scripts/repo-wiki.mjs lint-docs --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","repo-wiki:local-prepare":"node scripts/repo-wiki.mjs --source local prepare","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:ui-review-drive":"PW_UI_SLICE=ui-review-drive playwright test --project=ui-review-drive","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck playwright test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article playwright test --project=how-decided-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.17.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.0-rc.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.0","npm-run-all2":"^9.0.2","@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"*","@earendil-works/pi-coding-agent":"*"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.0-rc.6_1786858666984_0.8146749506521582","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-rc.7":{"name":"dev-loops","version":"1.0.0-rc.7","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.0-rc.7","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"7fe3eb36872c6c97bc5e3c60682db6d7b41e90a7","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.0-rc.7.tgz","fileCount":377,"integrity":"sha512-YVO9jSY5HJG9BKZXws8nehyiJ5D6IVirnCoMzSv8zgd4sEnCDrv0Mm+xtqeOTWgKFJNCbSZvsflHafLNcbZKZw==","signatures":[{"sig":"MEUCIFWByJY7O+O/T7x9EpQ8XS+7kOHlr2ZPgG7AfQgdFm7aAiEAnwCk/1qTWjUaSWGUqaeghcb/0eNBStHZ5u00TRv1aq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDmHyK2MV4j5SGxTe4IJ1kYzhpgh2o5EtW5LB5rF1sdZwIgM2veW/S9bT1v0Lm7EIL1I1B44zsgJRLvUg81KySUMQ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.0-rc.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8762845},"type":"module","engines":{"node":">=24"},"gitHead":"05c271614ded025bf621c51b1912f6f35981358c","scripts":{"test":"npm run verify","verify":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack test:dev-loop test:workflows","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-rule-ownership.mjs && node scripts/docs/validate-decision-records.mjs","test:pack":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/packaged-install-smoke.test.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"node scripts/claude/generate-claude-assets.mjs --check","schema:check":"node scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"node scripts/github/lint-workflows.mjs","articles:render":"node scripts/pages/render-article.mjs","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck playwright test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article playwright test --project=how-decided-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.17.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.0-rc.7"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.22.0","npm-run-all2":"^9.0.2","@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.0-rc.7_1787905175832_0.6799200342257607","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"dev-loops","version":"1.0.1","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.1","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"5962967ba4877ac280563070da223462e983dfce","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.1.tgz","fileCount":381,"integrity":"sha512-LOeRVkd7EmqV2GgEsOTuI8iX73Mg9OQ4VkmPFXVIPSQKRAa1VQU8aXY7CQM4O0ticOIJvE+yhC87X8r/kyLzkQ==","signatures":[{"sig":"MEUCIFg0Aisfp3uH01gzr8fOx2TQjrftqF/mAu+19Pr6QAkjAiEAh1J48cT2N9s69WnmO0BVvCIcMet70TemJhRLIMmYaNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDhd7rbQ8b1rD0Y4NVfbTHTtLX8+IaNa3Y6j3qWIqDPfgIgYYJD8NBzsIJdS6dIt79shrM6ePp6uAkoEx9qvyFjnpQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":8948596},"type":"module","engines":{"node":">=24"},"gitHead":"a2cec5177ef00958badc39a3dea506a6b6a07ee3","scripts":{"test":"npm run verify","verify":"run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack test:dev-loop test:workflows","repo-wiki":"node scripts/repo-wiki.mjs","test:core":"node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.test.mjs","test:docs":"node scripts/docs/validate-links.mjs && node scripts/docs/validate-rule-ownership.mjs && node scripts/docs/validate-decision-records.mjs && node scripts/docs/validate-changelog-completeness.mjs","test:pack":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/packaged-install-smoke.test.mjs","test:assets":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"node scripts/claude/generate-claude-assets.mjs --check","schema:check":"node scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=2 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none GIT_CONFIG_KEY_1=core.fsyncObjectFiles GIT_CONFIG_VALUE_1=false node --test --test-reporter ./test/failure-summary-reporter.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"node --test --test-reporter ./test/failure-summary-reporter.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"node scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"node --test --test-reporter ./test/failure-summary-reporter.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"node --import tsx --test --test-reporter ./test/failure-summary-reporter.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"node scripts/github/lint-workflows.mjs","articles:render":"node scripts/pages/render-article.mjs","repo-wiki:bootstrap":"node scripts/repo-wiki.mjs scan --repo . && node scripts/repo-wiki.mjs plan --repo . && node scripts/repo-wiki.mjs compile --repo .","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer playwright test --project=inspect-run-viewer","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck playwright test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck playwright test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article playwright test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck playwright test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article playwright test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article playwright test --project=how-decided-article"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.17.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.0","npm-run-all2":"^9.0.2","@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.1_1788510533236_0.13388743101960565","host":"s3://npm-registry-packages-npm-production"}},"1.0.2-pre.0":{"name":"dev-loops","version":"1.0.2-pre.0","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.2-pre.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"13c69215ea7ff31b78bd4470e488b193fd226c12","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.2-pre.0.tgz","fileCount":391,"integrity":"sha512-4OAIMi0fUtHREWVBgxQXf0Nw8gD5UrowWo6rVmFZelQj/jR2echJb8xDnBMviKnAX8idfqikfSb4vNkmMbKGsw==","signatures":[{"sig":"MEYCIQDEeJwhbiO9paP3Xcma+zL1frZvNvHdX0SE+XVATD0CnwIhAL8xchh8Q0lZWHUmQOMSuqbZxxUoD0mcJnaFycCDXgsh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDV0ZO0tKaaGtM2ltBRMAATK2L5Jis9l2ZwNwI/4BROoQIgYMGQYJHVfML33fM9+Yu/BzSpuZjd2BHoVM06ajHNVUk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.2-pre.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9261683},"type":"module","engines":{"node":">=24"},"gitHead":"0649cd1ef7e9a03162c956269584c920a06bd1ee","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.2-pre.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","readmeFilename":"README.md","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.2-pre.0_1788764944941_0.7749583605725523","host":"s3://npm-registry-packages-npm-production"}},"1.0.2-slim.0":{"name":"dev-loops","version":"1.0.2-slim.0","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.2-slim.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"e2cbef32abeadd751bbc7cd5450849926743654f","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.2-slim.0.tgz","fileCount":398,"integrity":"sha512-HHt/GGOtZhPTUslFjwVUwHK8mgaZANnuyHZki7hwBatk4koQYrYdKxAWR0HgaQ/fq/fgI+Hs+BPiXI5pUeo5rQ==","signatures":[{"sig":"MEYCIQDouySs4oQaQ4fPIz0CV0mhtdPrWjs9Tvk4yJECDNfoHAIhAO2ZDpVXjMO8aSE5Co8iDSEA3sIfWqPnacp2564pbNy8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDmURMABG/YA6dQYr5DkhOl9ENVSb046MItj9qup2JTYgIhAIU5LPwyd69qtkESBkIERWfNiPAdChzjDdiZfzb53x9I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.2-slim.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9247380},"type":"module","engines":{"node":">=24"},"gitHead":"ae3131cadf78f29b37ba184191224ca5eaccb829","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.2-slim.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","readmeFilename":"README.md","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.2-slim.0_1788905659736_0.6911654491910493","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"dev-loops","version":"1.0.2","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.2","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"58f04b6c1864cc261819df659e007d99d0ab6e87","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.2.tgz","fileCount":399,"integrity":"sha512-PYo7bZ6rg2kxZcChSwiDsSoa9WGnStjm/d4W5a5nLJ1UbQxGoXpNiok5fabnGnTcQYbh9AEdcasfOVceKSsfAA==","signatures":[{"sig":"MEYCIQCEQ+LLWJB3mTztPJ21vm7jeTEYc5pF5YL4Zhwr1U4FawIhANk8vdUhRIBu77blJXHiAj5NY5bavmhJyT5IxMffXqew","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD+r3MTiMCd8Fql5BBQJ4YGXu5Pj3ggea1Lu+VzykLm/gIgPEqi+NfViCBJtrfqfI1MetEpyNsGCykG+uLwkkO4aUw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9366552},"type":"module","engines":{"node":">=24"},"gitHead":"ec9509097fbb16ef5e054dbb570e978dd483d5dc","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.2_1788950368460_0.3812410710120153","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"dev-loops","version":"1.0.3","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.3","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"8a9d61d05a28f7c7761f72fbf18843f916fe5530","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.3.tgz","fileCount":410,"integrity":"sha512-hhOqj2rx5XlA180Jr6elYZIXDf3xKmjmjj/SPlODS5Wpmf8F9Wo0fakEt7ri1K0Bv/ycTT8BoMS7a6hv/A6ROw==","signatures":[{"sig":"MEYCIQDIrP405uWf8wGp3x5yRsi/GVvrwoTKwE1RTmh8OPdSbQIhANg3bIfkxbXT/vOx/Td7a0ejzp5xNKcltoVtbfS9XWId","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHJwd/Ers3RXppwlqc8IfIuNeVxKK2uSvqRZsGvwguXMAiEAqNl57ogZ5uRpQHZ5u1kGs/GmsmfMmgPdV6XB87TdSUw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9883312},"type":"module","engines":{"node":">=24"},"gitHead":"da6f98c82c7e5e38ab96c8aab2fdf69209050981","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.3"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.3_1789550009986_0.3481896288862827","host":"s3://npm-registry-packages-npm-production"}},"1.0.4-pre.0":{"name":"dev-loops","version":"1.0.4-pre.0","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.4-pre.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"4e9943f088031c71bb1f2d8f9a006683606ed069","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.4-pre.0.tgz","fileCount":417,"integrity":"sha512-rj2qyhD+Vfar4At+YPWIhNaCIICCTuZd0rMActa1jIk+isJHDXw5nmSo8RZmShmF6oc9Bb2axs1mxepWHTKaxw==","signatures":[{"sig":"MEUCIE9zy2lDUY3fW6+wa2EFG6Offab+mouNResHwizJCokwAiEAzpXwrYhy+AHRfHuffwOTeYXZIRJdgSWsb8x0+oQrLVU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCSjBq3dkcDGOGGZzOxR9siJAwkiIegDW+2f5qSGq5N5QIgHh2r22PW/kwYqFdncMDE7qCLPysrL0YPpMtpjmjGsgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.4-pre.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9985078},"type":"module","engines":{"node":">=24"},"gitHead":"f55e42fea80f9b152b7e29cf912c5112ebc7061e","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:finding-the-flow-deck":"PW_UI_SLICE=finding-the-flow-deck node ./node_modules/@playwright/test/cli.js test --project=finding-the-flow-deck","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.4-pre.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","readmeFilename":"README.md","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.4-pre.0_1790005146607_0.4763595485273251","host":"s3://npm-registry-packages-npm-production"}},"1.0.4-pre.1":{"name":"dev-loops","version":"1.0.4-pre.1","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.4-pre.1","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"3dcdeed40ab36ba3524c8f8555996612b0d32945","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.4-pre.1.tgz","fileCount":424,"integrity":"sha512-tcR7MeJadOI1Pn9PPQUcim50rt7SfNikUchdDmezZk3YgBjAct82gvqSQAyauVQIHH066ZHF5v66YvAkLDaTTA==","signatures":[{"sig":"MEYCIQCf49apFryFstNq5vqjY3AMboxRzPeZeRVu8jY3/DujMQIhAN49j2YeaosoHaWLkcwbanhwh4iMAC2kzBS0jRrLD9yj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCDeRwH/Pyk1HPTOiZVkYnLABblALaoMoTPEu9ZF3y8DQIgQJ3D2zrtaySP4aES+zdMP06bF4l7F/E69W5KvE1M+n4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.4-pre.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10262215},"type":"module","engines":{"node":">=24"},"gitHead":"c4380b8cc77a41fec016e3ff5a436ede8587463c","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:finding-the-flow-deck":"PW_UI_SLICE=finding-the-flow-deck node ./node_modules/@playwright/test/cli.js test --project=finding-the-flow-deck","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.4-pre.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","readmeFilename":"README.md","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.4-pre.1_1790203673103_0.40869414998131637","host":"s3://npm-registry-packages-npm-production"}},"1.0.4-pre.2":{"name":"dev-loops","version":"1.0.4-pre.2","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.4-pre.2","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"b63e534df481816bc505a4df880aef1ffe94c97c","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.4-pre.2.tgz","fileCount":425,"integrity":"sha512-dwoSWOQfsQ90WimjSz/rp242Ww9s5XhcBR55z1NhFR7KZKF56zYNsgxI45QgzjOxEfcW6rwO81uzxWPcYYi6hA==","signatures":[{"sig":"MEUCIAa//bG77SKgb7YKhGiV3W5Up1gLg0mpPZjxrnQBdEzSAiEAg5PUC3TWSgz3+S2+BkiJFg7YqLHxpAtgJ+corkWpePI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDTk66lEGrHij8VXGVn6qFuf5xOac+FKOIYc0gBMCa0eQIgQX1AF1pcCgDnDFuvVbEVJs/I6if4KAFkRiOhf5uF+sI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.4-pre.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10317235},"type":"module","engines":{"node":">=24"},"gitHead":"a08aba6f4246515ca8e857c09d3f851a4cf038d2","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:finding-the-flow-deck":"PW_UI_SLICE=finding-the-flow-deck node ./node_modules/@playwright/test/cli.js test --project=finding-the-flow-deck","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.4-pre.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","readmeFilename":"README.md","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.4-pre.2_1790231597640_0.5883940181603045","host":"s3://npm-registry-packages-npm-production"}},"1.0.4-pre.3":{"name":"dev-loops","version":"1.0.4-pre.3","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.4-pre.3","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"af879540058a7d5034f18084277857d0a9c4fed5","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.4-pre.3.tgz","fileCount":425,"integrity":"sha512-cW3oJnRu3guCfnE94zK65dat4AdcMpoM8NmR5UReU6kaGck97NgeDukC5B6x5BhG64+MVNB1DEjZ/TzZEmhs6Q==","signatures":[{"sig":"MEUCIBev6CaSSEzXOgKv5K9/dBQMYym0Lfzn67jUavqa8vmIAiEAidTMJLFGjKYVXW0c/C/B77m9Q2G8XAPSEI8KLUvpOVs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCa4Gb4TKx/u1YQI96GjkdwP9DJ3YPq4mI3QVlWMVXUXwIgfZzIGAgynKrbHHW1UB3wGhUxi5A0Xdmj7opV7TMG5is=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.4-pre.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10317578},"type":"module","engines":{"node":">=24"},"gitHead":"4c6f24b76c71c7ae5db2ec167a533d048c60018d","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:finding-the-flow-deck":"PW_UI_SLICE=finding-the-flow-deck node ./node_modules/@playwright/test/cli.js test --project=finding-the-flow-deck","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.4-pre.3"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","readmeFilename":"README.md","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.4-pre.3_1790242540328_0.2960977934530522","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"dev-loops","version":"1.0.4","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.4","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"3bdca104d1bd903b65c2eb99c79002362c9f8807","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.4.tgz","fileCount":425,"integrity":"sha512-BWIYlUP/cHvUWtzM5dbMhzlLtEYhueRe2SX9qQU60TRxctZcy/t1hP0f8KPMmPM24MTRy9LxoUi3Hi6R7u9XYQ==","signatures":[{"sig":"MEYCIQDvum3X4ctjoh5VGo2X+T5qmzRFemJza4SQmBulkugkygIhAJBP0ocwU+fr3oxagL0VW7i9SoE8MJG7iadd3gXNyT2D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBMAoTT8KjiDNZJPQfAHCth18ldZ94y/KcZ+IznF8tn1AiAXcoApmpwKbliuIEID74h8BXnlIDYoF+E970bjRe7Rgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10258254},"type":"module","engines":{"node":">=24"},"gitHead":"10f556a582dfe2063af6d4aa7d1b64d797995569","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:finding-the-flow-deck":"PW_UI_SLICE=finding-the-flow-deck node ./node_modules/@playwright/test/cli.js test --project=finding-the-flow-deck","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.4"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.4_1790266766298_0.6348750150515463","host":"s3://npm-registry-packages-npm-production"}},"1.0.5-pre.0":{"name":"dev-loops","version":"1.0.5-pre.0","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.5-pre.0","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"c607020e5619b7c1f2c99daa22ff0642b1047fd7","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.5-pre.0.tgz","fileCount":436,"integrity":"sha512-e0WDdydpEMhIAmIdAJwtA9F7vIKkK2JYCCZfJsezJQIyys7kPScvEXrqXHDVC7v7hIjS4sUtQQiD1UewwsyYng==","signatures":[{"sig":"MEUCIGhazFnqMI2g7TKa0HYd1wNlNU2Mdxyx4MgkeHc1XBn5AiEAkzgINDQA81StjSPBuJdF2yVap0TFT7swIwsU1iuw5q8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCcoxB6lfQrH6LzYPNMbretI7aPZ7wv0OZvGbAmxiX5sQIgJDRnkt66pKPlZ76Thn3aujmA1KwXrjgkXBM+F8+FA3A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.5-pre.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10367590},"type":"module","engines":{"node":">=24"},"gitHead":"e191b05c037075852bceb03aec161a7aac99ee29","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:finding-the-flow-deck":"PW_UI_SLICE=finding-the-flow-deck node ./node_modules/@playwright/test/cli.js test --project=finding-the-flow-deck","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.5-pre.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","readmeFilename":"README.md","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.5-pre.0_1790596649402_0.7001138483195084","host":"s3://npm-registry-packages-npm-production"}},"1.0.5-pre.1":{"name":"dev-loops","version":"1.0.5-pre.1","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.5-pre.1","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"e435eb6d07160c95fa16f33895daae6081893390","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.5-pre.1.tgz","fileCount":440,"integrity":"sha512-Nm5evMVTp/nB6znS7rPz70XWC7eTwnSUFgrUvM3I42G6tO234jq67uXhr+7/VQmEHDUM6zr2BhGfHgz0ZDmmsA==","signatures":[{"sig":"MEQCIC51/VkFc40aNEsdDQCjkl+9/XloVFBoBRMMWm+CXDwOAiBOrRcVVSwbCoX+ntw/dDLBbxhsG/YUOb4qlIp11VZ2lw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICZrKJtdcXCuZtYQQ+wJutSnBa8K04A/cCPhFDodmbfXAiEAipr/hGqAhvqjv7BnMcVL8oKZVTMOz0mN3h32DNTFbiA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.5-pre.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10437649},"type":"module","engines":{"node":">=24"},"gitHead":"d097efabd21138664c3d4e3ee830cfa6d9bbf8ce","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:finding-the-flow-deck":"PW_UI_SLICE=finding-the-flow-deck node ./node_modules/@playwright/test/cli.js test --project=finding-the-flow-deck","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.5-pre.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","readmeFilename":"README.md","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.5-pre.1_1790677943288_0.4538982904126092","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"dev-loops","version":"1.0.5","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"license":"MIT","_id":"dev-loops@1.0.5","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"homepage":"https://github.com/mfittko/dev-loops#readme","bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"pi":{"agents":["agents"],"skills":["skills"],"extensions":["./extension/index.ts"]},"bin":{"dev-loops":"cli/index.mjs"},"dist":{"shasum":"1495a890b2b1a1822151b338ddfdb1d10f0fb64c","tarball":"https://registry.npmjs.org/dev-loops/-/dev-loops-1.0.5.tgz","fileCount":442,"integrity":"sha512-hfB/cFx1DI81Oit0zg79hLVVHOLtBi+3bIsMMnIGLe8AaOeyKWWfOFgF9XXFg5U734TpaYiIzqUQKnoNuZ4oEw==","signatures":[{"sig":"MEUCIAQqpRt30Kwmw8sqtgSmf6UQYlfNu5UNbdMrrXQW4Bu+AiEAoChpmXf0RpcOX0vPBUz6oNEqhIZbiZpZU7XCekCqL8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEeSPzxnY7ogGIfphQFSz4/8eqnNB70xosmVHKn/6l/OAiABDZ+DY8i66Css0CD4alzN/tREY8us4vuIXk2S5xbcXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/dev-loops@1.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10491698},"type":"module","engines":{"node":">=24"},"gitHead":"d8252e395fcca57ade930ebbdb4441bca9dee80d","scripts":{"test":"bun run verify","verify":"bun scripts/verify.mjs","test:all":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all","repo-wiki":"bun scripts/repo-wiki.mjs","test:core":"bun scripts/run-bun-test.mjs packages/core/test/*.test.mjs","test:docs":"bun scripts/docs/validate-links.mjs && bun scripts/docs/validate-rule-ownership.mjs && bun scripts/docs/validate-decision-records.mjs && bun scripts/docs/validate-changelog-completeness.mjs","test:pack":"bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs","test:assets":"bun scripts/run-bun-test.mjs test/dev-loop-init-phase-smoke.test.mjs test/core-runtime-boundary.test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","assets:check":"bun scripts/claude/generate-claude-assets.mjs --check","schema:check":"bun scripts/generate-config-schema.mjs --check","test:scripts":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs test/github/*.test.mjs test/loop/*.test.mjs test/docs/*.test.mjs test/projects/*.test.mjs test/pages/*.test.mjs test/security/*.test.mjs","test:dev-loop":"bun scripts/run-bun-test.mjs skills/dev-loop/scripts/dev-mode-context.test.mjs skills/dev-loop/scripts/render-template.test.mjs skills/dev-loop/scripts/post-gate-verdict-fallback.test.mjs","repo-wiki:lint":"bun scripts/repo-wiki.mjs lint --repo .","smoke:headless":"node scripts/claude/headless-info-smoke.mjs","test:doc-guard":"bun scripts/run-bun-test.mjs test/contracts/*.test.mjs test/workflow-handoff-contract.test.mjs","test:extension":"bun scripts/run-bun-test.mjs test/extension-checks.test.mjs test/extension-post-merge-update.test.mjs test/extension-command-contract.test.mjs test/extension-package-contract.test.mjs test/extension-pi-adapter.test.mjs test/dev-loops-core.test.mjs test/dev-loops-cli.test.mjs test/cli-deps-less-checkout-preflight.test.mjs test/extension-pi-agent-tools.test.mjs test/extension-pi-readonly-role-gate.test.mjs","test:workflows":"bun scripts/github/lint-workflows.mjs","articles:render":"bun scripts/pages/render-article.mjs","repo-wiki:bootstrap":"bun scripts/repo-wiki.mjs scan --repo . && bun scripts/repo-wiki.mjs plan --repo . && bun scripts/repo-wiki.mjs compile --repo .","test:timings:refresh":"GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/refresh-test-timings.mjs","test:playwright:viewer":"PW_UI_SLICE=inspect-run-viewer node ./node_modules/@playwright/test/cli.js test --project=inspect-run-viewer --workers=2","test:playwright:deep-dive":"PW_UI_SLICE=deep-dive-deck node ./node_modules/@playwright/test/cli.js test --project=deep-dive-deck","test:playwright:intro-deck":"PW_UI_SLICE=intro-deck node ./node_modules/@playwright/test/cli.js test --project=intro-deck","test:playwright:intro-article":"PW_UI_SLICE=intro-article node ./node_modules/@playwright/test/cli.js test --project=intro-article","test:playwright:how-decided-deck":"PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-deck","test:playwright:deep-dive-article":"PW_UI_SLICE=deep-dive-article node ./node_modules/@playwright/test/cli.js test --project=deep-dive-article","test:playwright:how-decided-article":"PW_UI_SLICE=how-decided-article node ./node_modules/@playwright/test/cli.js test --project=how-decided-article","test:playwright:finding-the-flow-deck":"PW_UI_SLICE=finding-the-flow-deck node ./node_modules/@playwright/test/cli.js test --project=finding-the-flow-deck","test:playwright:state-graph-surface-deck":"PW_UI_SLICE=state-graph-surface-deck node ./node_modules/@playwright/test/cli.js test --project=state-graph-surface-deck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e6d5b6e1-afed-4fb7-9edf-3455cab8f4a7"}},"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.19.0","description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@dev-loops/core":"^1.0.5"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"packageManager":"bun@1.4.1","devDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0"},"peerDependencies":{"@playwright/test":"^1.60.0","@axe-core/playwright":"^4.10.0","@earendil-works/pi-tui":"^0.84.0","@earendil-works/pi-coding-agent":"^0.84.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"@axe-core/playwright":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dev-loops_1.0.5_1790855775950_0.04419948565558296","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-06-15T22:41:15.672Z","modified":"2026-10-01T12:52:30.452Z","0.1.0":"2026-06-15T22:41:16.099Z","0.1.1":"2026-06-16T05:08:17.360Z","0.1.2":"2026-06-16T08:33:57.338Z","0.1.3":"2026-06-16T08:48:02.151Z","0.2.0":"2026-06-24T08:37:41.554Z","0.2.1":"2026-06-24T09:24:16.874Z","0.2.2":"2026-06-24T10:49:28.170Z","0.2.3":"2026-06-24T11:50:48.480Z","0.2.4":"2026-06-24T12:47:29.945Z","0.2.5":"2026-06-24T13:48:37.114Z","0.2.6":"2026-06-25T05:31:44.188Z","0.2.7":"2026-06-25T10:32:19.937Z","0.3.0":"2026-06-26T13:45:54.587Z","0.4.0":"2026-06-27T03:05:43.906Z","0.5.0":"2026-06-28T17:57:56.013Z","0.6.0":"2026-06-29T04:27:42.924Z","0.7.1":"2026-07-05T16:28:23.170Z","0.7.2":"2026-07-07T08:22:36.356Z","0.8.0":"2026-07-08T16:11:40.311Z","0.9.0":"2026-07-09T21:15:29.177Z","1.0.0-rc.1":"2026-07-14T10:00:14.122Z","1.0.0-rc.2":"2026-07-17T15:54:40.942Z","1.0.0-rc.3":"2026-07-18T23:45:56.788Z","1.0.0-rc.4":"2026-08-09T12:21:34.848Z","1.0.0-rc.5":"2026-08-10T06:15:06.383Z","1.0.0-rc.6":"2026-08-16T05:37:47.193Z","1.0.0-rc.7":"2026-08-28T08:19:36.262Z","1.0.0":"2026-08-31T05:09:12.149Z","1.0.1":"2026-09-04T08:28:53.434Z","1.0.2-pre.0":"2026-09-07T07:09:05.209Z","1.0.2-slim.0":"2026-09-08T22:14:19.981Z","1.0.2":"2026-09-09T10:39:28.606Z","1.0.3":"2026-09-16T09:13:30.151Z","1.0.4-pre.0":"2026-09-21T15:39:06.768Z","1.0.4-pre.1":"2026-09-23T22:47:53.282Z","1.0.4-pre.2":"2026-09-24T06:33:17.811Z","1.0.4-pre.3":"2026-09-24T09:35:40.496Z","1.0.4":"2026-09-24T16:19:26.507Z","1.0.5-pre.0":"2026-09-28T11:57:29.585Z","1.0.5-pre.1":"2026-09-29T10:32:23.469Z","1.0.5":"2026-10-01T11:56:16.216Z"},"bugs":{"url":"https://github.com/mfittko/dev-loops/issues"},"license":"MIT","homepage":"https://github.com/mfittko/dev-loops#readme","keywords":["dev-loop","workflow","github","copilot","claude-code","claude","pi","pi-coding-agent","pi-package"],"repository":{"url":"git+https://github.com/mfittko/dev-loops.git","type":"git"},"description":"Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops","maintainers":[{"name":"mfittko","email":"info@mfittko.com"}],"readme":"# dev-loops\n\nTurn a GitHub issue into a merged PR autonomously, up to a human-approval checkpoint.\n\n**Harness-agnostic by design.** The same dev loop runs three ways over one shared core (`packages/core`): as a **Claude Code plugin**, as a **Pi extension**, and as a standalone **CLI**. Routing, gates, and phases are defined once in the core; the plugin and extension are thin integrations over that shared workflow.\n\n## What is a dev loop?\n\nA dev loop takes a GitHub issue through seven lifecycle phases — from intake to merge — with deterministic routing, self-correcting review gates, and autonomous execution until a human approves. The phase is always consultable from the deterministic state model in `packages/core/src/loop/lifecycle-state.mjs`.\n\n| Phase | What happens |\n|---|---|\n| `issue_intake` | Normalize the issue, confirm scope, detect linked PRs |\n| `refinement` | Elaborate the spec, run a bounded audit, harden acceptance criteria |\n| `implementation` | Build the accepted scope on a feature branch or via Copilot |\n| `draft_gate` | Gate review at the draft→ready boundary before marking the PR ready |\n| `feedback_resolution` | Fix, reply to, and resolve review threads on GitHub |\n| `pre_approval_gate` | Final gate review: verify evidence, CI, and unresolved threads |\n| `merge` | Merge the PR and write the retrospective checkpoint |\n\nThe public routing contract is the [Public Dev Loop Contract](./skills/docs/public-dev-loop-contract.md).\n\n## Quick start\n\n`dev-loop` is the single public entrypoint. Drive it in natural language — it resolves the authoritative current state, picks the correct internal strategy, and routes deterministically. You never name internal strategies.\n\n```text\nstart dev loop on issue 112       # start work on an issue\nauto dev loop on issue 112        # run autonomously to the human-approval checkpoint\ncontinue dev loop on PR 88        # continue follow-up on an open PR\n```\n\nSee the canonical shorthand mapping in the [Public Dev Loop Contract](./skills/docs/public-dev-loop-contract.md).\n\n## Commands\n\n`dev-loop` (natural language) is the catch-all router — reach for the named commands below only when you want a direct, unrouted entrypoint. The syntax differs by harness:\n\n- **Claude Code** exposes each as a plugin slash command: `/loop-start`, `/loop-auto`, …\n- **Pi** exposes the core entrypoints as subcommands of one command: `/dev-loops start`, `/dev-loops auto`, …\n\n| Command | Claude Code | Pi | Does |\n|---|---|---|---|\n| start | `/loop-start <issue>` | `/dev-loops start <issue>` | Start a dev loop on an issue |\n| auto | `/loop-auto <issue>` | `/dev-loops auto <issue>` | Run autonomously to the human-approval checkpoint |\n| continue | `/loop-continue [issue\\|pr]` | `/dev-loops continue [issue\\|pr]` | Continue; bare resumes the in-progress board item |\n| start-spike | `/loop-start-spike <question>` | `/dev-loops start-spike <question>` | Time-boxed spike (or `--file <path>`) |\n| info | `/loop-info <issue\\|pr>` | `/dev-loops info <issue\\|pr>` | Read-only state summary |\n| status | `/loop-status` | `/dev-loops status` | Readiness check (gh auth, git repo, subagent) |\n| enqueue | `/loop-enqueue <issue\\|pr\\|text>` | — | Queue an issue/PR, or capture an idea as a grilled issue |\n| grill | `/loop-grill <issue\\|plan> [--auto]` | — | Socratic Q&A grill of an issue or plan before the loop |\n| queue-status | `/loop-queue-status` | — | Show the queue board grouped by column |\n| review | `/loop-review <pr>` | — | Run a standalone, on-demand review pass over a PR (no gate obligations) |\n| review-ui | `/loop-review-ui <pr>` | — | Review a PR in a running-app UI loop |\n\nBeyond the per-issue loop entrypoints, the Pi `/dev-loops` command and the `dev-loops` CLI also expose standalone utilities: `help`, `status`, `doctor`, `gates` (`status` is the same readiness check as `loop-status` above). `hide` works only inside Pi — the `dev-loops hide` CLI subcommand is recognized but intentionally exits non-zero (session-local Pi UI behavior). Everything above is also available as a skill/agent — inside Pi, hand work to the `dev-loop` skill rather than calling internal routed skills (`local-implementation`, `copilot-pr-followup`, `final-approval`) directly.\n\n### `/loop-review-ui`\n\n`/loop-review-ui <pr>` reviews a PR by **proving the change in the running app** from an isolated worktree, rather than reading the diff alone. It runs the loop `resolve → provision/boot → auth+drive → diagnose → report → teardown`: it provisions a worktree for the PR head and boots the app, authenticates and drives the changed UI flows (capturing a screenshot + state + snapshot per step), maps captured failures back to the diff, posts a head-pinned **pending** PR review plus a self-contained screenshot artifact, then tears down — always emitting a side-effect ledger.\n\n**When to use it vs. the standard `review` angle:** reach for `/loop-review-ui` when a change is only really provable by exercising it in a browser — a rendered flow, a create/edit/upload interaction, or a swallowed server error the UI hides behind a success state. It is the running-app sibling of, not a replacement for, the diff-reading `review` angle or the Copilot gate; those still run for logic, structure, and correctness. It requires a per-project run/auth recipe in `.devloops` and runs end-to-end on any harness; only the report-artifact hosting is harness-aware. On Claude Code the self-contained artifact gets a zero-setup hosted link (Claude Artifacts); off-Claude the same artifact is still produced but emitted unhosted with a stated reason (a hosted GitHub-native link is a tracked follow-up), never a hard stop. See the [UI-Review Run/Auth Recipe Contract](./skills/docs/ui-review-recipe-contract.md) to wire a consuming repo.\n\n## Install\n\nAll examples pin to `<version>` = the `dev-loops` version you installed; keep the CLI, plugin, and extension on the same version so behavior can't drift.\n\n### Claude Code plugin\n\nThe repo ships a plugin rooted at `.claude/` (manifest at `.claude/.claude-plugin/plugin.json`) exposing the dev-loop agents, skills, and hooks. Install it from the bundled marketplace catalog:\n\n```text\n/plugin marketplace add mfittko/dev-loops    # register the marketplace\n/plugin install dev-loops@dev-loops          # install the plugin\n```\n\nOr load it directly for a single session without installing:\n\n```bash\nclaude --plugin-dir .claude\n```\n\nInstalled from npm, point at the bundled copy: `claude --plugin-dir node_modules/dev-loops/.claude`.\n\nThe hooks provide the `gh pr ready` draft-gate guard, an opt-in read-only boundary for the main agent (`DEVLOOPS_MAIN_AGENT_READONLY=1`), and an opt-in coordinator→worker delegation boundary — a dispatched dev-loop coordinator delegates tracked-repo-file mutations and targeted code-verification/build checks to a worker subagent rather than running them inline (`DEVLOOPS_COORDINATOR_READONLY=1`). The hook blocks known inline verification commands; local full-repository validation (`bun run verify`) is requested only through `dev-loops gate resolve-validation` on a clean commit, not delegated as a direct worker command. Skill references to a consumer repo's own `PLAN.md` / `AGENTS.md` resolve against that repo, by design.\n\nThe `dev-loop` coordinator agent sets `experimental.cacheTtl: 1h` in its frontmatter. The coordinator often waits more than 5 minutes for its child agents, and the 1-hour prompt cache keeps its context warm across those waits. No other agent sets the key, so short-lived roles keep the cheaper 5-minute default. The key needs Claude Code v2.1.248 or later. Claude Code ignores the key for subagents while a subscription draws on usage credits.\n\n**Auto-mode permission rules.** The gate verdict post is the sanctioned gate path. The Claude Code auto-mode classifier can still deny it (observed reason \"[CI Bypass]\"), and it can deny the ready flip `ready-for-review.mjs` (observed reason \"[Auto-Mode Bypass]\"). Add an allow rule to `permissions.allow` in the project `.claude/settings.json` for each form the agents use:\n\n- `Bash(dev-loops gate upsert-verdict:*)` for the CLI verdict post;\n- `Bash(node scripts/github/upsert-checkpoint-verdict.mjs:*)` for the bare script verdict post, with the script path exactly as the agent types it;\n- `Bash(node scripts/github/ready-for-review.mjs:*)` for the bare script ready flip;\n- `Bash(dev-loops-run:*)` for the launcher form `dev-loops-run scripts/...`. This repo's own `.claude/settings.json` carries it.\n\nObserved during the v1.0.5 drain: only an exact command prefix matched, and a mid-pattern wildcard such as `Bash(node scripts/github/*.mjs:*)` did not match. In the same drain, an ask rule on the bare form did not gate the launcher form: with `Bash(dev-loops-run:*)` allowed, `Bash(node scripts/github/merge-pr.mjs:*)` did not prompt for `dev-loops-run scripts/github/merge-pr.mjs`. For a merge or filing prompt, add the launcher-form ask rules `Bash(dev-loops-run scripts/github/merge-pr.mjs:*)` and `Bash(dev-loops-run scripts/github/create-issue.mjs:*)`.\n\nGate reviewers write their findings artifacts under `tmp/gate-reviews/` with the Write tool. The Write tool path needs no allow rule. The classifier denies a Bash write of an artifact (redirect, heredoc, `tee`, or an inline script), observed with reasons \"[Self-Approval]\" and \"[CI Bypass]\". A `Write(...)` or `Edit(...)` path rule does not apply to a Bash command. A reviewer's `blocked` artifact goes through `dev-loops-run scripts/github/emit-reviewer-blocked.mjs` under the `Bash(dev-loops-run:*)` rule above.\n\n**Consumer entry contract.** The plugin ships prompts, skills, agents, and hooks, plus a hand-authored `.claude/package.json` + `.claude/package-lock.json` that pin the published `dev-loops` npm package to the release version. Claude Code's native plugin dependency auto-install runs `npm ci --ignore-scripts` at cache time, landing the full toolchain under `.claude/node_modules/dev-loops/` (only the manifest and lockfile are committed — never `node_modules`). Every generated skill/command/agent invocation runs through the `dev-loops-run` launcher on the plugin `bin/` PATH, which resolves the dev-loops root in order: a live source checkout found by walking up from the current directory always wins unconditionally (so local edits are dogfooded with no release), else a live source checkout found by walking up from the launcher's own real binary location, else the auto-installed `.claude/node_modules/dev-loops`, else a loud hard-stop that names the unresolved wrapper — never a raw `node scripts/*.mjs` against the checkout, and never a silent raw-`gh` fallback. The single-source CLI subcommand reference is tracked in [issue #1376](https://github.com/mfittko/dev-loops/issues/1376).\n\n### Pi extension\n\n```bash\npi install npm:dev-loops@<version>       # global, pinned npm package\npi install -l npm:dev-loops@<version>    # project-local (.pi/settings.json)\n```\n\nYou can also install from git:\n\n```bash\npi install git:github.com/mfittko/dev-loops@<tag-or-sha>       # global\npi install -l git:github.com/mfittko/dev-loops@<tag-or-sha>    # project-local\n```\n\nOnce a project is trusted, Pi auto-installs missing packages on startup. Install `pi-subagents` the same way when the repo relies on async loop behavior.\n\n### CLI\n\nRun the CLI version-pinned:\n\n```bash\nnpx dev-loops@<version> --help\n```\n\nA global `npm install -g dev-loops` is an optional bare-shell convenience only — it is not version-pinned, updates independently of the plugin/extension, and can silently drift out of sync (#833/#1036). Prefer the pinned `npx` invocation.\n\n## Requirements\n\nUniversal:\n\n- Node `>=24`\n- `gh` installed and authenticated for GitHub/Copilot workflows\n\nFor contributors and CI:\n\n- Bun `1.4.1` exactly — the repository's package manager, workspace installer, script runner, and unit-test runner\n- `bun install --frozen-lockfile` from a clean checkout; `bun.lock` is the only supported dependency lockfile\n\nThis split is deliberate: published packages and the public CLI continue to install and execute with Node `>=24` and do not require Bun. npm remains the registry client for packing, publishing, dist-tags, registry queries, and provenance.\n\nPi-harness only:\n\n- `pi-subagents` for async workflow behavior\n- A Pi host satisfying the peer dependencies `@earendil-works/pi-coding-agent` and `@earendil-works/pi-tui`\n\n## Configuration\n\nDefaults ship in `packages/core/src/config/extension-defaults.yaml`. A repo-local `.pi/dev-loop/defaults.*` layer merges on top of them when present, then consumer repos override everything in a `.devloops` file at the repo root (`.devloops.yaml` / `.yml` / `.json` are also accepted); `.devloops` is authoritative when present. The legacy `.pi/dev-loop/settings.*` and `overrides.*` fallbacks were removed at the v1.0.0 cut (ADR 0017) and no longer load; move any such file's contents into `.devloops`.\n\n```bash\nnpx dev-loops@<version> gates   # print what reviewers will check\n```\n\nKey surfaces:\n\n- **Gate angles** — which review lenses run at the draft and pre-approval gates\n- **Personas** — focused per-angle prompts (DRY, KISS, YAGNI, SRP, SoC, and more)\n- **Gates** — per-gate `requireCi` CI-precondition toggle (`gates.draft.requireCi`, `gates.preApproval.requireCi`; default `true`). Set a gate's `requireCi: false` to opt that gate out of the CI precondition — e.g. a repo with no CI can run the loop end-to-end instead of blocking at the gate.\n- **Refinement** — fan-out count and mode for parallel review variants; `refinement.maxCopilotRounds` caps Copilot re-review rounds (default `5`). Set `maxCopilotRounds: 0` to disable the Copilot gate entirely — local-harness-only review (`draft_gate → pre_approval_gate`), useful when the repo has no Copilot reviewer configured. By default one converged Copilot review stands for later heads, and `pre_approval_gate` reviews each head; set `refinement.requireCopilotConvergenceAtLatestHead: true` to open a new Copilot cycle for every significant post-convergence change.\n- **UI review** — the `uiReview` surface configures the `/loop-review-ui` route (per-project run/boot command, login recipe, log/exception patterns)\n- **Post-merge actions** — `postMerge.actions` declares local actions (sync checkout, restart a local service, smoke check) a harness hook runs sequentially, in order, after the dev-loop's merge succeeds. Each action needs `name` + `run`; optional `onlyIfChanged` scopes it to the merged PR's changed files (plain substring matching, not a glob/regex — a pattern matches when any changed file path *contains* it), `verify` polls a command until it exits 0, and `timeoutMs`/`verifyTimeoutMs`/`verifyIntervalMs` bound the run/verify/poll timing. Absent (the default) means no action runs. See `packages/core/src/loop/run-post-merge-actions.mjs` for the runner and `scripts/loop/run-post-merge-actions.mjs` for the CLI both harness hooks invoke.\n- **Autonomy** — which gates require operator confirmation\n- **Workflow defaults** — retrospective enforcement, draft-first posture, dev-mode policy\n\nFull details: the shipped defaults in `packages/core/src/config/extension-defaults.yaml` and the loader in `packages/core/src/config/config.mjs`.\n\n## Stability\n\nFrom **1.0**, `dev-loops` follows [semantic versioning](https://semver.org/) for its public surface — breaking changes to it bump the major version:\n\n- **The `.devloops` configuration surface** — gate angles, personas, `gates.*` (including each gate's `requireCi` toggle and `gates.preApproval.requireCi`), `refinement.*`, `uiReview.*`, `postMerge.*`, `autonomy.*`, and `workflow.*`. The authoritative validator is the config loader in `packages/core/src/config/config.mjs`; `schemas/dev-loop-config.schema.json` is generated from it (`node scripts/generate-config-schema.mjs`) and covers the full file-level surface — only cross-field refinements stay zod-only.\n- **The public `dev-loop` command and skill surface** — the natural-language `dev-loop` router and the named `/loop-*` entrypoints.\n- **The routing contract** — the [Public Dev Loop Contract](./skills/docs/public-dev-loop-contract.md).\n\nInternal strategy names, script internals, and undocumented helpers are not part of the stable surface and may change in a minor release. New config keys and gate angles are additive (minor); removing or repurposing an existing one is a breaking change (major).\n\n## Docker\n\nA deterministic container image with all required tooling for dev-loop operation.\n\n```bash\ndocker build -t dev-loops .\n```\n\n| Variable | Purpose | Required |\n|---|---|---|\n| `GH_TOKEN` | GitHub token for `gh` CLI and API calls | Yes |\n| `OPENAI_API_KEY` | LLM provider key (only for `pi` / LLM-backed operations) | No |\n\nSmoke test the image with a minimal read-only info call:\n\n```bash\ndocker run --rm -e GH_TOKEN=\"$GH_TOKEN\" dev-loops dev-loops loop info --repo mfittko/dev-loops --issue 1\n```\n\nVerify the toolchain is reachable:\n\n```bash\ndocker run --rm dev-loops node --version\ndocker run --rm dev-loops pi --version\ndocker run --rm dev-loops dev-loops --version\ndocker run --rm dev-loops gh --version\n```\n\nThe Dockerfile pins exact versions for Node.js (base image), Bun 1.4.1, the pi CLI, pi extensions, and gh CLI; paired with the committed `bun.lock` and a frozen Bun install, repeat builds produce functionally identical toolchains. Node remains present because it is the shipped consumer runtime and runs the Playwright browser suite.\n\n**Runtime patterns:**\n\n```bash\n# Interactive Pi sharing host config (sessions, models, settings write back to ~/.pi)\ndocker run -it --rm -e GH_TOKEN=\"$GH_TOKEN\" -v \"$HOME/.pi:/home/node/.pi\" dev-loops pi\n\n# Interactive Pi, clean (ephemeral ~/.pi; provider auth via env)\ndocker run -it --rm -e GH_TOKEN=\"$GH_TOKEN\" -e OPENAI_API_KEY=\"$OPENAI_API_KEY\" dev-loops pi\n\n# Full dev-loop over a live repo worktree mounted at /workspace\ngit clone --mirror git@github.com:owner/repo.git /tmp/mirror\ngit --git-dir=/tmp/mirror worktree add /tmp/run /tmp/mirror/main\ndocker run -it --rm -e GH_TOKEN=\"$GH_TOKEN\" -v \"$HOME/.pi:/home/node/.pi\" -v /tmp/run:/workspace dev-loops pi\n```\n\n## Development\n\n```bash\nbun install --frozen-lockfile\nbun run test:docs # example targeted check for documentation changes\n```\n\nChoose targeted checks with `resolveTargetedValidation(changedPaths)` as described in the [validation policy](./skills/docs/validation-policy.md). For an authorized full local PR-gate run, use `node cli/index.mjs gate resolve-validation --profile full-repository --repo <owner/name> --pr <number> --gate <gate> --head-sha <full SHA>` from the PR worktree.\n\nCI installs the exactly pinned Bun 1.4.1 and uses `bun install --frozen-lockfile`. It splits the complete Bun test inventory into four parallel, timing-balanced shards, runs docs and workflow validators separately, and joins them through a fail-closed `verify` gate. The conditional Playwright/WebKit viewer smoke remains a Node-run browser test and runs only when its bounded viewer surface or smoke-path dependencies change.\n\n### Migrating from an earlier release\n\nUpgrading from before the rename to `dev-loops`? The package name, repo slug, and all `PI_*` environment variables changed (the env vars are a clean break — no aliases). See the [migration guide](./docs/migrating-to-dev-loops.md).\n\n## Further reading\n\n- [Docs Index](./docs/index.md) — active docs and canonical-owner pointers\n- [README Audit Rubric](./docs/readme-audit-rubric.md) — semantic properties this README is audited against (on-demand LLM judge)\n- [Public Dev Loop Contract](./skills/docs/public-dev-loop-contract.md) — public routing contract\n- [Extension Documentation](./extension/README.md) — README-driven extension spec\n- [Scripts Documentation](./scripts/README.md) — deterministic script contracts\n- [UI Smoke Harness](./skills/docs/ui-smoke-harness.md) — reusable local Playwright/WebKit smoke baseline\n- [UI Artifact Contract](./skills/docs/ui-artifact-contract.md) — screenshot/state artifact contract and CI-promotion rules\n- [UI Designer Review Loop](./skills/docs/ui-designer-review-loop.md) — designer + vision (`uiReviewMode: vision`) review loop\n- [UI-Review Run/Auth Recipe Contract](./skills/docs/ui-review-recipe-contract.md) — per-project run/login/flow recipe for `/loop-review-ui`\n- [Slides Story Review Loop](./skills/docs/slides-story-review-loop.md) — bounded slides content & storytelling reviewer\n","readmeFilename":"README.md"}