{
  "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"
  },
  "workspaces": [
    "packages/*"
  ],
  "scripts": {
    "verify": "run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack test:dev-loop",
    "test": "run-p --aggregate-output --continue-on-error test:assets test:extension test:scripts test:core test:docs test:pack",
    "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: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: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:core": "node --test --test-reporter ./test/failure-summary-reporter.mjs packages/core/test/*.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",
    "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: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",
    "smoke:headless": "node scripts/claude/headless-info-smoke.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",
    "repo-wiki": "node scripts/repo-wiki.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 .",
    "repo-wiki:scan": "node scripts/repo-wiki.mjs scan --repo .",
    "repo-wiki:plan": "node scripts/repo-wiki.mjs plan --repo .",
    "repo-wiki:lint-docs": "node scripts/repo-wiki.mjs lint-docs --repo .",
    "repo-wiki:compile": "node scripts/repo-wiki.mjs compile --repo .",
    "repo-wiki:lint": "node scripts/repo-wiki.mjs lint --repo .",
    "repo-wiki:search": "node scripts/repo-wiki.mjs search --repo .",
    "repo-wiki:init": "node scripts/repo-wiki.mjs init --repo .",
    "repo-wiki:prepare": "node scripts/repo-wiki.mjs --source local prepare",
    "repo-wiki:local": "node scripts/repo-wiki.mjs --source local",
    "repo-wiki:local-prepare": "node scripts/repo-wiki.mjs --source local prepare"
  },
  "bin": {
    "dev-loops": "./cli/index.mjs"
  },
  "peerDependencies": {
    "@earendil-works/pi-coding-agent": "*",
    "@earendil-works/pi-tui": "*"
  },
  "devDependencies": {
    "@playwright/test": "^1.60.0",
    "npm-run-all2": "^9.0.2",
    "tsx": "^4.22.0"
  },
  "pi": {
    "extensions": [
      "./extension/index.ts"
    ],
    "skills": [
      "skills"
    ],
    "agents": [
      "agents"
    ]
  },
  "dependencies": {
    "@dev-loops/core": "^0.9.0"
  },
  "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": "0.9.0",
  "files": [
    "cli/",
    "lib/",
    "scripts/",
    "extension/",
    "skills/",
    "agents/",
    ".claude-plugin/",
    ".claude/.claude-plugin/",
    ".claude/agents/",
    ".claude/commands/",
    ".claude/skills/",
    ".claude/hooks/",
    "README.md",
    "CHANGELOG.md",
    "LICENSE",
    "AGENTS.md"
  ],
  "publishConfig": {
    "access": "public",
    "provenance": true
  }
}
