{
  "name": "dev-loops",
  "license": "MIT",
  "type": "module",
  "description": "Agent-harness-agnostic dev-loop infrastructure (Pi and Claude Code) for reusable local and remote development loops",
  "keywords": [
    "dev-loop",
    "workflow",
    "github",
    "copilot",
    "claude-code",
    "claude",
    "pi",
    "pi-coding-agent",
    "pi-package"
  ],
  "engines": {
    "node": ">=24"
  },
  "packageManager": "bun@1.4.1",
  "workspaces": [
    "packages/*"
  ],
  "scripts": {
    "verify": "bun scripts/verify.mjs",
    "test": "bun run verify",
    "test:all": "GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=core.fsync GIT_CONFIG_VALUE_0=none bun scripts/run-bun-test.mjs --all",
    "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: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",
    "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: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:core": "bun scripts/run-bun-test.mjs packages/core/test/*.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",
    "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:how-decided-deck": "PW_UI_SLICE=how-decided-deck node ./node_modules/@playwright/test/cli.js test --project=how-decided-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",
    "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: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",
    "smoke:headless": "node scripts/claude/headless-info-smoke.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:workflows": "bun scripts/github/lint-workflows.mjs",
    "test:pack": "bun scripts/run-bun-test.mjs test/packaged-install-smoke.test.mjs",
    "schema:check": "bun scripts/generate-config-schema.mjs --check",
    "assets:check": "bun scripts/claude/generate-claude-assets.mjs --check",
    "articles:render": "bun scripts/pages/render-article.mjs",
    "repo-wiki": "bun scripts/repo-wiki.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 .",
    "repo-wiki:lint": "bun scripts/repo-wiki.mjs lint --repo ."
  },
  "bin": {
    "dev-loops": "./cli/index.mjs"
  },
  "peerDependencies": {
    "@earendil-works/pi-coding-agent": "^0.84.0",
    "@earendil-works/pi-tui": "^0.84.0",
    "@playwright/test": "^1.60.0",
    "@axe-core/playwright": "^4.10.0"
  },
  "peerDependenciesMeta": {
    "@playwright/test": {
      "optional": true
    },
    "@axe-core/playwright": {
      "optional": true
    }
  },
  "devDependencies": {
    "@axe-core/playwright": "^4.10.0",
    "@playwright/test": "^1.60.0"
  },
  "pi": {
    "extensions": [
      "./extension/index.ts"
    ],
    "skills": [
      "skills"
    ],
    "agents": [
      "agents"
    ]
  },
  "dependencies": {
    "@dev-loops/core": "^1.0.3",
    "yaml": "^2.9.0",
    "zod": "^4.4.3"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/mfittko/dev-loops.git"
  },
  "bugs": {
    "url": "https://github.com/mfittko/dev-loops/issues"
  },
  "homepage": "https://github.com/mfittko/dev-loops#readme",
  "version": "1.0.3",
  "files": [
    "cli/",
    "lib/",
    "scripts/",
    "extension/",
    "skills/",
    "agents/",
    ".claude-plugin/",
    ".claude/.claude-plugin/",
    ".claude/agents/",
    ".claude/commands/",
    ".claude/skills/",
    ".claude/hooks/",
    ".claude/bin/",
    ".claude/package.json",
    ".claude/package-lock.json",
    "README.md",
    "CHANGELOG.md",
    "LICENSE",
    "AGENTS.md"
  ],
  "publishConfig": {
    "access": "public",
    "provenance": true
  }
}
