{"_id":"@aerem/ai-harness","_rev":"7-9ae5c7673721bccc6a6d1973c4da9708","name":"@aerem/ai-harness","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@aerem/ai-harness","version":"0.1.0","keywords":["claude-code","claude-code-plugin","ai-harness","feature-pipeline","code-introspection","brownfield","monorepo","polyrepo","knowledge-management","aerem"],"author":{"name":"Aerem"},"license":"UNLICENSED","_id":"@aerem/ai-harness@0.1.0","maintainers":[{"name":"aerem","email":"developer@aerem.co"}],"homepage":"https://github.com/aerem/aerem-ai-harness#readme","bugs":{"url":"https://github.com/aerem/aerem-ai-harness/issues"},"bin":{"aerem-ai-harness":"dist/cli.js"},"dist":{"shasum":"65175b14d8fa042525206f30ac45268062c1bfce","tarball":"https://registry.npmjs.org/@aerem/ai-harness/-/ai-harness-0.1.0.tgz","fileCount":54,"integrity":"sha512-VwJFM5JsrtZNe/1gWGHjHlLEFKXgBA+KFR1lO/ZCX9XemRnRHfo2V7nXFpcCoHKu+NKGLuzMC3aecNjbspC6Ug==","signatures":[{"sig":"MEUCIDd5pMBNAUT6dtnR3Lo7dJTS9KyG9jeOd96sCgQhMrSOAiEA80ms+n9Sn7BklO+StKFgVuZUyuINQA7a/maJEDGB/Ko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":746952},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"gitHead":"26a8d8863fc30a043fb08e87a1d6c854601aa68f","scripts":{"lint":"echo '(stub) no lint yet'","test":"vitest run","build":"tsup","clean":"rm -rf dist","postinstall":"node -e \"if(process.env.npm_config_global)console.log('\\n  ✓ @aerem/ai-harness installed. Run:\\n      aerem-ai-harness setup    # one-time: register /harness:* + /aerem:* slash commands\\n      aerem-ai-harness init     # scaffold the harness in the current project\\n')\"","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"aerem","email":"developer@aerem.co"},"repository":{"url":"git+https://github.com/aerem/aerem-ai-harness.git","type":"git","directory":"packages/ai-harness"},"_npmVersion":"11.12.1","description":"Claude Code extension for autonomous feature delivery — CLI + slash-command plugins that scaffold .aerem/ state, drive a 13-phase pipeline, introspect brownfield repos, and orchestrate polyrepo workspaces.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","ulidx":"^2.4.0","commander":"^12.1.0","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-harness_0.1.0_1779632490884_0.5931150525355333","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aerem/ai-harness","version":"0.1.1","keywords":["claude-code","claude-code-plugin","ai-harness","feature-pipeline","code-introspection","brownfield","monorepo","polyrepo","knowledge-management","aerem"],"author":{"name":"Aerem"},"license":"UNLICENSED","_id":"@aerem/ai-harness@0.1.1","maintainers":[{"name":"aerem","email":"developer@aerem.co"}],"homepage":"https://github.com/aerem/aerem-ai-harness#readme","bugs":{"url":"https://github.com/aerem/aerem-ai-harness/issues"},"bin":{"aerem-ai-harness":"dist/cli.js"},"dist":{"shasum":"1c208509582a27061af59df56a32deb8a8d5c610","tarball":"https://registry.npmjs.org/@aerem/ai-harness/-/ai-harness-0.1.1.tgz","fileCount":55,"integrity":"sha512-4iKVAV+TllY3Ej4ePkviZteGwOGEbdU6ihiCKxR1g3AJJHL1bXbifJboPXs6Lhw6ZdffAnPsCZZ2IbRnUOa/tg==","signatures":[{"sig":"MEUCIHFmkA3LIp9Zgactzy/c1HfgRFXrfuhLO4HicNh3T+MFAiEA/NAKdLnmOabHLF11sscMuA1yUpc9+ojG+foO4ufnfws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":750469},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"26a8d8863fc30a043fb08e87a1d6c854601aa68f","scripts":{"lint":"echo '(stub) no lint yet'","test":"vitest run","build":"tsup","clean":"rm -rf dist","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"aerem","email":"developer@aerem.co"},"repository":{"url":"git+https://github.com/aerem/aerem-ai-harness.git","type":"git","directory":"packages/ai-harness"},"_npmVersion":"11.12.1","description":"Claude Code extension for autonomous feature delivery — CLI + slash-command plugins that scaffold .aerem/ state, drive a 13-phase pipeline, introspect brownfield repos, and orchestrate polyrepo workspaces.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","ulidx":"^2.4.0","commander":"^12.1.0","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-harness_0.1.1_1779635410531_0.40255636249122095","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aerem/ai-harness","version":"0.1.2","keywords":["claude-code","claude-code-plugin","ai-harness","feature-pipeline","code-introspection","brownfield","monorepo","polyrepo","knowledge-management","aerem"],"author":{"name":"Aerem"},"license":"UNLICENSED","_id":"@aerem/ai-harness@0.1.2","maintainers":[{"name":"aerem","email":"developer@aerem.co"}],"homepage":"https://github.com/aerem/aerem-ai-harness#readme","bugs":{"url":"https://github.com/aerem/aerem-ai-harness/issues"},"bin":{"aerem-ai-harness":"dist/cli.js"},"dist":{"shasum":"841de50ec42916b5c335d306dc36fec101c4fc65","tarball":"https://registry.npmjs.org/@aerem/ai-harness/-/ai-harness-0.1.2.tgz","fileCount":55,"integrity":"sha512-QWg93ENsUkrcAY0MMYzUykJzlOsptzJ4gNBSdZZ+h2bT9+bi/68CHU4bCtPb2O2I8TjUiTv/K2lKAQ8G2HLNeA==","signatures":[{"sig":"MEYCIQD1YYscG6fpdu4cVS57Vtu40XWhB2Fi/91id8v55NPfYQIhAMGSQrRZIkqtiiLh6qXgqnyZ02Z8ML+N4wmRXn2Zq1x9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":751819},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"26a8d8863fc30a043fb08e87a1d6c854601aa68f","scripts":{"lint":"echo '(stub) no lint yet'","test":"vitest run","build":"tsup","clean":"rm -rf dist","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"aerem","email":"developer@aerem.co"},"repository":{"url":"git+https://github.com/aerem/aerem-ai-harness.git","type":"git","directory":"packages/ai-harness"},"_npmVersion":"11.12.1","description":"Claude Code extension for autonomous feature delivery — CLI + slash-command plugins that scaffold .aerem/ state, drive a 13-phase pipeline, introspect brownfield repos, and orchestrate polyrepo workspaces.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","ulidx":"^2.4.0","commander":"^12.1.0","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-harness_0.1.2_1779679731172_0.8194780643514259","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aerem/ai-harness","version":"0.2.0","keywords":["claude-code","claude-code-plugin","ai-harness","feature-pipeline","code-introspection","brownfield","monorepo","polyrepo","knowledge-management","aerem"],"author":{"name":"Aerem"},"license":"UNLICENSED","_id":"@aerem/ai-harness@0.2.0","maintainers":[{"name":"aerem","email":"developer@aerem.co"}],"homepage":"https://github.com/aerem/aerem-ai-harness#readme","bugs":{"url":"https://github.com/aerem/aerem-ai-harness/issues"},"bin":{"aerem-ai-harness":"dist/cli.js"},"dist":{"shasum":"bb844c632c985ea59564a015d249e0905d7e0387","tarball":"https://registry.npmjs.org/@aerem/ai-harness/-/ai-harness-0.2.0.tgz","fileCount":62,"integrity":"sha512-snKxjffwo1tQMvyUfun06Id1HpR9PPbaJ/tZXb/7lWD0Tu4PzVbzW3t2ShIKXGMtegbot/5kWAsREQaiCB/TVw==","signatures":[{"sig":"MEUCIBa12dDixJslJZnOFcjVXChpjXstoAtlm6E4zyEbb8z0AiEA+BN5kVLwNQdIp6wud10Y4+x9z32qIj2BVI9+ZxTSQxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":832432},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"3e26e08cfa2a700aa19393390dad5d8c1590da33","scripts":{"lint":"echo '(stub) no lint yet'","test":"vitest run","build":"tsup","clean":"rm -rf dist","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"aerem","email":"developer@aerem.co"},"repository":{"url":"git+https://github.com/aerem/aerem-ai-harness.git","type":"git","directory":"packages/ai-harness"},"_npmVersion":"10.8.2","description":"Claude Code extension for autonomous feature delivery — CLI + slash-command plugins that scaffold .aerem/ state, drive a 13-phase pipeline, introspect brownfield repos, and orchestrate polyrepo workspaces.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","ulidx":"^2.4.0","commander":"^12.1.0","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-harness_0.2.0_1787740422616_0.07790030993486385","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aerem/ai-harness","version":"0.2.1","keywords":["claude-code","claude-code-plugin","ai-harness","feature-pipeline","code-introspection","brownfield","monorepo","polyrepo","knowledge-management","aerem"],"author":{"name":"Aerem"},"license":"UNLICENSED","_id":"@aerem/ai-harness@0.2.1","maintainers":[{"name":"aerem","email":"developer@aerem.co"}],"homepage":"https://github.com/aerem/aerem-ai-harness#readme","bugs":{"url":"https://github.com/aerem/aerem-ai-harness/issues"},"bin":{"aerem-ai-harness":"dist/cli.js"},"dist":{"shasum":"b56fe27229ae9d28083db142bc797a428bd4399e","tarball":"https://registry.npmjs.org/@aerem/ai-harness/-/ai-harness-0.2.1.tgz","fileCount":62,"integrity":"sha512-0npa73J38yeDrpVV8cUoHEU6r6cF7TAMDN3LTTBMakzWIqk72K2HGungUMS5W/Bu+pQXZjc3m4r/DEXKiMww9A==","signatures":[{"sig":"MEUCIGc7GrE3UN2GMan4F4rz+7zHlJ1W7EQMXYTQmttn4bSZAiEAm03mhphnT+OpSH3TP52vqMeUZdS4emgixGYJTaWV6QY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":832828},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"66a85e1adc22be6b59d9924dd48cd79f96b38e4d","scripts":{"lint":"echo '(stub) no lint yet'","test":"vitest run","build":"tsup","clean":"rm -rf dist","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"aerem","email":"developer@aerem.co"},"repository":{"url":"git+https://github.com/aerem/aerem-ai-harness.git","type":"git","directory":"packages/ai-harness"},"_npmVersion":"10.8.2","description":"Claude Code extension for autonomous feature delivery — CLI + slash-command plugins that scaffold .aerem/ state, drive a 13-phase pipeline, introspect brownfield repos, and orchestrate polyrepo workspaces.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","ulidx":"^2.4.0","commander":"^12.1.0","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-harness_0.2.1_1787810979639_0.025343504610920276","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aerem/ai-harness","version":"0.3.0","keywords":["claude-code","claude-code-plugin","ai-harness","feature-pipeline","code-introspection","brownfield","monorepo","polyrepo","knowledge-management","aerem"],"author":{"name":"Aerem"},"license":"UNLICENSED","_id":"@aerem/ai-harness@0.3.0","maintainers":[{"name":"aerem","email":"developer@aerem.co"}],"homepage":"https://bitbucket.org/AeremTech/aerem-ai-harness","bugs":{"url":"https://bitbucket.org/AeremTech/aerem-ai-harness/issues"},"bin":{"aerem-ai-harness":"dist/cli.js"},"dist":{"shasum":"170dc4245b454aedb32afec9203dfd75dfe3499f","tarball":"https://registry.npmjs.org/@aerem/ai-harness/-/ai-harness-0.3.0.tgz","fileCount":65,"integrity":"sha512-BSnMaWcyccsFXfp6husg7nmkLuL6geTYKZpWmnlOloepvXd8jE8+gPFbWUfgsaaOMlcMA41EtWoTwrq0LiT63A==","signatures":[{"sig":"MEUCIBY1ApTJJpzSJcpQvp7jmom3UIZzqmvhWDxJ4IWka7/gAiEA8xjQwirwxljzviQuFrd0qfeFhgrPD35z/DR5IfmlpPU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1524642},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"919c71ba489dfe0a24b783257bf894ffcff31767","scripts":{"lint":"echo '(stub) no lint yet'","test":"vitest run","build":"tsup","clean":"rm -rf dist","prepublishOnly":"pnpm test && pnpm build"},"_npmUser":{"name":"aerem","email":"developer@aerem.co"},"repository":{"url":"git+https://bitbucket.org/AeremTech/aerem-ai-harness.git","type":"git","directory":"packages/ai-harness"},"_npmVersion":"10.8.2","description":"Claude Code extension for autonomous feature delivery — CLI + slash-command plugins that scaffold .aerem/ state, drive a 13-phase pipeline, introspect brownfield repos, and orchestrate polyrepo workspaces.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","yaml":"^2.6.0","chalk":"^5.3.0","ulidx":"^2.4.0","commander":"^12.1.0","@inquirer/prompts":"^7.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-harness_0.3.0_1788328150154_0.38883136651312133","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aerem/ai-harness","version":"0.3.1","description":"Claude Code extension for autonomous feature delivery — CLI + slash-command plugins that scaffold .aerem/ state, drive a 13-phase pipeline, introspect brownfield repos, and orchestrate polyrepo workspaces.","keywords":["claude-code","claude-code-plugin","ai-harness","feature-pipeline","code-introspection","brownfield","monorepo","polyrepo","knowledge-management","aerem"],"homepage":"https://bitbucket.org/AeremTech/aerem-ai-harness","repository":{"type":"git","url":"git+https://bitbucket.org/AeremTech/aerem-ai-harness.git","directory":"packages/ai-harness"},"bugs":{"url":"https://bitbucket.org/AeremTech/aerem-ai-harness/issues"},"license":"UNLICENSED","author":{"name":"Aerem"},"type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"bin":{"aerem-ai-harness":"dist/cli.js"},"scripts":{"build":"tsup","test":"vitest run","lint":"echo '(stub) no lint yet'","clean":"rm -rf dist","prepublishOnly":"pnpm test && pnpm build"},"dependencies":{"@inquirer/prompts":"^7.0.0","chalk":"^5.3.0","commander":"^12.1.0","ulidx":"^2.4.0","yaml":"^2.6.0","zod":"^3.23.0"},"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0"},"engines":{"node":">=18"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"_id":"@aerem/ai-harness@0.3.1","gitHead":"c73da771894bb579682fe2e08b142a2031a726a9","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-y8HuS3giVRTEiqPpdCeDDpG4R3Km876JuPrLGIjabDf52xNAFA0EdvxxZrL3ZMvG3BWEp4DNy1VT96AkoseEww==","shasum":"5c698b511290fbd0333c30c50fe843b4b33bc311","tarball":"https://registry.npmjs.org/@aerem/ai-harness/-/ai-harness-0.3.1.tgz","fileCount":65,"unpackedSize":1525245,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCKaKd84MWFk12WjgBs5cvnHubZi+IfX2LSmrWNmB77WgIhAIJK0AGOHuqI6oKzSR9J139Y4rmajPcxL53e4TEvOAkO"}]},"_npmUser":{"name":"aerem","email":"developer@aerem.co"},"directories":{},"maintainers":[{"name":"aerem","email":"developer@aerem.co"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-harness_0.3.1_1788418909246_0.7509798328804818"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-24T14:21:30.731Z","modified":"2026-09-03T07:01:49.580Z","0.1.0":"2026-05-24T14:21:31.097Z","0.1.1":"2026-05-24T15:10:10.714Z","0.1.2":"2026-05-25T03:28:51.350Z","0.2.0":"2026-08-26T10:33:42.772Z","0.2.1":"2026-08-27T06:09:39.797Z","0.3.0":"2026-09-02T05:49:10.301Z","0.3.1":"2026-09-03T07:01:49.397Z"},"bugs":{"url":"https://bitbucket.org/AeremTech/aerem-ai-harness/issues"},"author":{"name":"Aerem"},"license":"UNLICENSED","homepage":"https://bitbucket.org/AeremTech/aerem-ai-harness","keywords":["claude-code","claude-code-plugin","ai-harness","feature-pipeline","code-introspection","brownfield","monorepo","polyrepo","knowledge-management","aerem"],"repository":{"type":"git","url":"git+https://bitbucket.org/AeremTech/aerem-ai-harness.git","directory":"packages/ai-harness"},"description":"Claude Code extension for autonomous feature delivery — CLI + slash-command plugins that scaffold .aerem/ state, drive a 13-phase pipeline, introspect brownfield repos, and orchestrate polyrepo workspaces.","maintainers":[{"name":"aerem","email":"developer@aerem.co"}],"readme":"# @aerem/ai-harness\n\nClaude Code extension for autonomous feature delivery — a CLI plus a pair of slash-command plugins that scaffold project state, drive a 13-phase feature pipeline, introspect brownfield repos, and orchestrate polyrepo workspaces.\n\n## Install\n\n```bash\n# 1. Install the CLI globally\nnpm install -g @aerem/ai-harness\n# or:  pnpm add -g @aerem/ai-harness\n# or:  yarn global add @aerem/ai-harness\n\n# 2. Register the Claude Code slash commands (one-time, per machine)\naerem-ai-harness setup\n```\n\nAfter step 2, `/harness:*` and `/aerem:*` slash commands resolve in any Claude Code session.\n\n`setup` also offers two opt-in DX extras (installed globally into\n`~/.claude/settings.json`, idempotent, never clobbering your own config): a\ncross-platform **notification chime** when Claude finishes or needs input, and a\n**status line** showing `📂 repo ⎇ branch · 🤖 model · 🧠 context% · 📊 5h-usage% · ⏳ reset`.\nThe repo name + branch are read from the *current working directory's* git repo,\nso in a polyrepo workspace the line tracks the nested repo Claude is actually\nediting (e.g. `sunstore-core-service ⎇ feature/partner-dashboard-apis`) rather\nthan the outer workspace root.\n\n## Quick start\n\n```bash\n# Scaffold the harness into a project\ncd my-project\naerem-ai-harness init                # auto-detects greenfield vs brownfield\n                                      # — brownfield: also runs deep introspection\n                                      #   + emits .aerem/repo-map.json + .aerem/next-steps.md\naerem-ai-harness init --no-deep       # brownfield: shallow only (just scaffold + MIGRATION-MAP)\n\n# Verify\naerem-ai-harness doctor\n\n# Start a feature (creates a campaign in .aerem/campaigns/<ulid>/state.json)\naerem-ai-harness feature \"add user impersonation\"\n\n# Move it through the 13-phase pipeline\naerem-ai-harness advance             # research → tb\naerem-ai-harness advance             # tb → design\naerem-ai-harness decision R1 approved \"TB + Design coherent; ADR captures the choice.\"\naerem-ai-harness advance             # ...etc through compound\n\n# Operate across many projects in a polyrepo container\ncd ~/Developer/sunstore              # parent of multiple harness-initialized children\naerem-ai-harness workspace up                  # scaffold the shared manifest\naerem-ai-harness workspace doctor              # fan out any subcommand\naerem-ai-harness workspace cost --parallel 3\n\n# One feature across several repos, sequentially (crash-safe, one repo at a time)\naerem-ai-harness workspace feature \"add cross-service tracing\"\naerem-ai-harness workspace advance             # research → tb → design (shared)\naerem-ai-harness workspace decision R1 approved \"design signed off\"\naerem-ai-harness workspace advance             # fork member #1; advance drives it fe…pr\naerem-ai-harness workspace checkpoint          # per-member phase/status table\n```\n\nInside Claude Code, the same flows are available as slash commands:\n\n```\n/harness:init [--no-deep]\n/harness:doctor\n/harness:feature \"<intent>\"\n/harness:advance\n/harness:decision <gate> <outcome> \"<rationale>\"\n/harness:pause\n/harness:resume\n/harness:checkpoint\n/harness:cost\n/harness:workspace <subcommand> [args...]\n/aerem:knowledge-author --section=<name>  | --all\n/aerem:spec-author --discipline=tb | design | fe | be | qa\n/aerem:adr-author --stage=draft | final\n/aerem:architecture-doc-updater --module=<name>\n/aerem:vendor-doc-author --vendor=<name>\n/aerem:learnings-backfill\n/aerem:backfill-orchestrator\n```\n\n## What gets scaffolded by `init`\n\n```\n<your-project>/\n├── .aerem/\n│   ├── memory/constitution.md       (R-rules + machine checks)\n│   ├── ratchets.json                (R-rule baselines)\n│   ├── state.json                   (master pointer to active campaign; gitignored)\n│   ├── repo-map.md                  (shallow structural index)\n│   ├── repo-map.json                (brownfield default — omit with --no-deep)\n│   ├── next-steps.md                (brownfield default — omit with --no-deep)\n│   ├── specs/                       (per-feature spec directories)\n│   ├── campaigns/<ulid>/            (per-feature state + checkpoint + progress)\n│   ├── cards/reject-log.jsonl       (R1/R2/R3 reject audit log)\n│   └── backups/                     (artifact backups; gitignored)\n├── .claude/\n│   ├── settings.json                (hooks block, relative paths)\n│   └── hooks/                       (3 lifecycle hooks as CJS bundles)\n├── docs/{adrs,architecture,references,solutions}/INDEX.md\n├── AGENTS.md\n├── CLAUDE.md                        (one-line @AGENTS.md redirect)\n├── harness.config.yml               (cost caps, parallelism, review gate weights)\n└── harness.lock.yml                 (installed version + detected stack)\n```\n\nPlus, for brownfield repos, a `MIGRATION-MAP.md` listing detected AI artifacts that were backed up.\n\n## The 13-phase pipeline\n\n```\nresearch → tb → design → fe → be → spec-pair → qa\n        → tasks → impl → verify → arch-update → pr → compound\n```\n\nState machine is forward-only — phases cannot be skipped or rewound. Each campaign records phase timestamps, gate decisions, and accumulated token cost atomically. Crash-safe writes use the `tmp + fsync + rename` pattern.\n\nThree review gates fire at fixed points:\n\n- **R1** (heavy, after design) — forced-rationale review of TB + Design + ADR\n- **R2** (light, after qa) — default-approve if specs are green\n- **R3** (adaptive, after verify) — diff-sized review of impl + arch update\n\n## Programmatic API\n\n```ts\nimport { RepoMapSchema, HARNESS_VERSION } from \"@aerem/ai-harness\";\n\nconst data = JSON.parse(readFileSync(\".aerem/repo-map.json\", \"utf-8\"));\nconst repoMap = RepoMapSchema.parse(data);   // Zod-validated\n```\n\n## Requirements\n\n- Node.js ≥ 18\n- [Claude Code](https://claude.com/claude-code) (for slash commands)\n\n## License\n\nUNLICENSED (proprietary — Aerem internal). Contact for licensing.\n\n## Links\n\n- Issues: https://github.com/aerem/aerem-ai-harness/issues\n- Source: https://github.com/aerem/aerem-ai-harness\n","readmeFilename":"README.md"}