{"_id":"@cubicrew/pruuf","_rev":"4-e50a15ac9cc2f857f581332c89a910fe","name":"@cubicrew/pruuf","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@cubicrew/pruuf","version":"0.1.0","keywords":["mcp","portfolio","outcomes","proof","ai-agent","tracking"],"author":{"name":"CubiCrew"},"license":"MIT","_id":"@cubicrew/pruuf@0.1.0","maintainers":[{"name":"quarlwithcode","email":"vince@vincequarles.com"}],"homepage":"https://github.com/cubicrew/pruuf#readme","bugs":{"url":"https://github.com/cubicrew/pruuf/issues"},"bin":{"pruuf":"dist/cli/index.js"},"dist":{"shasum":"dd5f9746e7a61fa5d732ec41a41b44560e102dbd","tarball":"https://registry.npmjs.org/@cubicrew/pruuf/-/pruuf-0.1.0.tgz","fileCount":33,"integrity":"sha512-sNaVvhv1EFN1vg3J6oi5znRUU3BfzOpHOi5B9b0UQ2z7SYyX3Nl1EjQyjy2GgbRzAdPvSix8lViw82cpAeg/Hw==","signatures":[{"sig":"MEUCIDCkxT2PPl71XGb+vCLDAyYWWFc87pfAFZKxCI69G+JCAiEA1F3R2rtCerV342bW0QgoGlneTD7RCIYnd4XV5i0/4VM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118429},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c9b660c57336b9084563b76e7f3393048e736128","scripts":{"dev":"tsc --watch","test":"vitest","build":"tsc","start":"node dist/index.js","start:api":"node dist/cli/index.js serve","start:mcp":"node dist/server/mcp.js"},"_npmUser":{"name":"quarlwithcode","email":"vince@vincequarles.com"},"repository":{"url":"git+https://github.com/cubicrew/pruuf.git","type":"git"},"_npmVersion":"11.6.2","description":"AI agent portfolio/outcome tracker — log proof of what AI has accomplished","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.22.0","cors":"^2.8.6","uuid":"^13.0.0","express":"^5.2.1","commander":"^14.0.3","better-sqlite3":"^12.6.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","supertest":"^7.2.2","typescript":"^5.3.0","@types/cors":"^2.8.19","@types/node":"^20.0.0","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/pruuf_0.1.0_1772988984960_0.8401945594712519","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@cubicrew/pruuf","version":"0.1.1","keywords":["mcp","portfolio","outcomes","proof","ai-agent","tracking"],"author":{"name":"CubiCrew"},"license":"MIT","_id":"@cubicrew/pruuf@0.1.1","maintainers":[{"name":"quarlwithcode","email":"vince@vincequarles.com"}],"homepage":"https://github.com/cubicrew/pruuf#readme","bugs":{"url":"https://github.com/cubicrew/pruuf/issues"},"bin":{"pruuf":"dist/cli/index.js"},"dist":{"shasum":"5b2002ae104a3639c53cb4651d04fefc2cf08a6d","tarball":"https://registry.npmjs.org/@cubicrew/pruuf/-/pruuf-0.1.1.tgz","fileCount":33,"integrity":"sha512-jHMwYtHl8qx9O1ATcRQg84M39/Kos7ekft29sL+bt5GFNLhIvrkTlYixcxVwJm+PWuU4zDZe7Ywx5tATku4t/Q==","signatures":[{"sig":"MEUCIGydwGgoPFcTHw1Whw09LOUwISCt9rVk1N2oa3iH9wM5AiEA8w1JTT+39GCEHbgNrRohDSdIyC2gppo5w8SNmT8buZ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118476},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c9b660c57336b9084563b76e7f3393048e736128","scripts":{"dev":"tsc --watch","test":"vitest","build":"tsc","start":"node dist/index.js","postbuild":"chmod +x dist/cli/index.js","start:api":"node dist/cli/index.js serve","start:mcp":"node dist/server/mcp.js"},"_npmUser":{"name":"quarlwithcode","email":"vince@vincequarles.com"},"repository":{"url":"git+https://github.com/cubicrew/pruuf.git","type":"git"},"_npmVersion":"11.6.2","description":"AI agent portfolio/outcome tracker — log proof of what AI has accomplished","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.22.0","cors":"^2.8.6","uuid":"^13.0.0","express":"^5.2.1","commander":"^14.0.3","better-sqlite3":"^12.6.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","supertest":"^7.2.2","typescript":"^5.3.0","@types/cors":"^2.8.19","@types/node":"^20.0.0","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/pruuf_0.1.1_1772991024104_0.7621897911658144","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cubicrew/pruuf","version":"0.2.0","keywords":["mcp","portfolio","outcomes","proof","ai-agent","tracking"],"author":{"name":"CubiCrew"},"license":"MIT","_id":"@cubicrew/pruuf@0.2.0","maintainers":[{"name":"quarlwithcode","email":"vince@vincequarles.com"}],"homepage":"https://github.com/cubicrew/pruuf#readme","bugs":{"url":"https://github.com/cubicrew/pruuf/issues"},"bin":{"pruuf":"dist/cli/index.js"},"dist":{"shasum":"96e0f1748004459b650aed66869be25764f215b3","tarball":"https://registry.npmjs.org/@cubicrew/pruuf/-/pruuf-0.2.0.tgz","fileCount":49,"integrity":"sha512-L4/fBjIMRvTE7Pu0/4kOwp1GEV2R4VU9PWcQ6RJKL12yOg48fQUU3smVMK2UDG4dYvaIh30DIKTi+O+fpTEl8Q==","signatures":[{"sig":"MEUCIBcWP/iZPgOfXKj/j+L54VI0bll3sCvx7OkWAdWgu3x5AiEApyqFuAjwna/RKIRAZpf4NjDeVKhQdD8sY+4HBDJ+J4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151564},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2b0d005b3fdf04b579925376b8a868b4718f7f87","scripts":{"dev":"tsc --watch","test":"vitest","build":"tsc","start":"node dist/index.js","postbuild":"chmod +x dist/cli/index.js","start:api":"node dist/cli/index.js serve","start:mcp":"node dist/server/mcp.js"},"_npmUser":{"name":"quarlwithcode","email":"vince@vincequarles.com"},"repository":{"url":"git+https://github.com/cubicrew/pruuf.git","type":"git"},"_npmVersion":"11.6.2","description":"AI agent portfolio/outcome tracker — log proof of what AI has accomplished","directories":{},"_nodeVersion":"24.13.0","dependencies":{"zod":"^3.22.0","cors":"^2.8.6","uuid":"^13.0.0","express":"^5.2.1","commander":"^14.0.3","better-sqlite3":"^12.6.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","supertest":"^7.2.2","typescript":"^5.3.0","@types/cors":"^2.8.19","@types/node":"^20.0.0","@types/uuid":"^10.0.0","@types/express":"^5.0.6","@types/supertest":"^7.2.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/pruuf_0.2.0_1772997332103_0.688949931277691","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@cubicrew/pruuf","version":"0.2.1","description":"AI agent portfolio/outcome tracker — log proof of what AI has accomplished","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"pruuf":"dist/cli/index.js"},"scripts":{"build":"tsc","postbuild":"chmod +x dist/cli/index.js","dev":"tsc --watch","start":"node dist/index.js","start:mcp":"node dist/server/mcp.js","start:api":"node dist/cli/index.js serve","test":"vitest"},"keywords":["mcp","portfolio","outcomes","proof","ai-agent","tracking"],"author":{"name":"CubiCrew"},"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","better-sqlite3":"^12.6.2","commander":"^14.0.3","cors":"^2.8.6","express":"^5.2.1","uuid":"^13.0.0","zod":"^3.22.0"},"devDependencies":{"@types/better-sqlite3":"^7.6.13","@types/cors":"^2.8.19","@types/express":"^5.0.6","@types/node":"^20.0.0","@types/supertest":"^7.2.0","@types/uuid":"^10.0.0","supertest":"^7.2.2","typescript":"^5.3.0","vitest":"^1.0.0"},"repository":{"type":"git","url":"git+https://github.com/cubicrew/pruuf.git"},"homepage":"https://github.com/cubicrew/pruuf#readme","engines":{"node":">=18.0.0"},"gitHead":"302b74c31cdfb34eadc151aa65be5f4e8e0d7b11","_id":"@cubicrew/pruuf@0.2.1","bugs":{"url":"https://github.com/cubicrew/pruuf/issues"},"_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-KxhYYpjK/It/uNkE3rSDdQ5CUTzkcvJrpkibCsRczJiUUhgnoiRNfr0+cdtH1wFfY2QvwtzZ3EUN23zkVzACBA==","shasum":"41bde81a7833c153efe2ee43bc97046da76ef90d","tarball":"https://registry.npmjs.org/@cubicrew/pruuf/-/pruuf-0.2.1.tgz","fileCount":53,"unpackedSize":186828,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCH7L8I/duTEtRj2R1WQV0lYyrhlpdZ6Lw0Y/vWf/EQGgIhAMtZSB95l/Cu4wOzlYAeVb7DmrgcTitx3g7XkaIC8eik"}]},"_npmUser":{"name":"quarlwithcode","email":"vince@vincequarles.com"},"directories":{},"maintainers":[{"name":"quarlwithcode","email":"vince@vincequarles.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pruuf_0.2.1_1773000734801_0.699131506411528"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-08T16:56:24.841Z","modified":"2026-03-08T20:12:15.081Z","0.1.0":"2026-03-08T16:56:25.137Z","0.1.1":"2026-03-08T17:30:24.247Z","0.2.0":"2026-03-08T19:15:32.309Z","0.2.1":"2026-03-08T20:12:14.968Z"},"bugs":{"url":"https://github.com/cubicrew/pruuf/issues"},"author":{"name":"CubiCrew"},"license":"MIT","homepage":"https://github.com/cubicrew/pruuf#readme","keywords":["mcp","portfolio","outcomes","proof","ai-agent","tracking"],"repository":{"type":"git","url":"git+https://github.com/cubicrew/pruuf.git"},"description":"AI agent portfolio/outcome tracker — log proof of what AI has accomplished","maintainers":[{"name":"quarlwithcode","email":"vince@vincequarles.com"}],"readme":"# pruuf\n\nAI agent portfolio/outcome tracker — log proof of what AI has accomplished.\n\n## What It Does\n\n**pruuf** creates a portfolio of AI agent accomplishments. When users celebrate, show positive sentiment, or explicitly ask to log outcomes, pruuf records:\n\n- What was accomplished\n- Evidence/proof (screenshots, links, quotes)\n- Impact metrics (time saved, value created)\n- The trigger that prompted the log\n\nOver time, this builds a database showing the outcomes an AI agent has created.\n\n## Quick Start\n\n```bash\nnpm install @cubicrew/pruuf\npruuf init           # creates .pruuf/ directory\npruuf serve          # start REST API + dashboard on :3457\n```\n\nOr use as an MCP server:\n\n```bash\npruuf mcp            # start MCP server (stdio)\n```\n\n## CLI Commands\n\n| Command | Description |\n|---------|-------------|\n| `pruuf init` | Initialize a `.pruuf/` data directory |\n| `pruuf mcp` | Start MCP server (stdio) |\n| `pruuf serve [-p PORT]` | Start REST API server + dashboard |\n| `pruuf log <title>` | Log an outcome with full details |\n| `pruuf quick <title>` | Quick log with just a title |\n| `pruuf list` | List outcomes with filters |\n| `pruuf get <id>` | Get outcome by ID |\n| `pruuf update <id>` | Update an outcome |\n| `pruuf delete <id>` | Delete an outcome |\n| `pruuf summary` | Show portfolio stats |\n| `pruuf report` | Generate portfolio report (HTML/Markdown) |\n| `pruuf categories` | List outcome categories |\n| `pruuf evidence <id>` | Add evidence to an outcome |\n| `pruuf link <outcomeId> <clawckId>` | Link outcome to clawck time entry |\n| `pruuf portfolio export` | Export portfolio as static HTML |\n| `pruuf sync` | Trigger sync from remote sources |\n\nGlobal options: `--json`, `-d, --dir <path>`\n\n## MCP Tools\n\n| Tool | Description |\n|------|-------------|\n| `log_outcome` | Full outcome logging with evidence and impact |\n| `quick_log` | Fast logging with minimal info |\n| `log_celebration` | Log from user celebration/positive sentiment |\n| `get_outcome` | Get specific outcome by ID |\n| `query_portfolio` | Filter outcomes by category, project, date |\n| `get_portfolio` | Get full portfolio |\n| `get_summary` | Get stats (by category, project, totals) |\n| `add_evidence` | Add proof to existing outcome |\n| `update_outcome` | Update outcome details |\n| `delete_outcome` | Remove outcome |\n| `list_categories` | List outcome categories |\n| `generate_report` | Generate portfolio report (HTML/Markdown) |\n| `link_clawck_entry` | Link an outcome to a clawck time entry |\n\n## REST API\n\nWhen running `pruuf serve`, endpoints are available at `http://localhost:3457/api`:\n\n- `GET /api/health` — Health check\n- `GET /api/stats` — Portfolio statistics\n- `POST /api/outcomes` — Create outcome\n- `GET /api/outcomes` — List outcomes (query params: category, project, client, tag, from, to, limit)\n- `GET /api/outcomes/:id` — Get outcome\n- `PATCH /api/outcomes/:id` — Update outcome\n- `DELETE /api/outcomes/:id` — Delete outcome\n- `POST /api/outcomes/:id/evidence` — Add evidence\n- `GET /api/agents` — List agents\n- `GET /api/portfolio/:agentId` — Get portfolio\n- `POST /api/reports/generate` — Generate report\n\n## Categories\n\n- `deliverable` — Completed work product\n- `automation` — Automated a process\n- `research` — Research/analysis completed\n- `communication` — Successful communication\n- `problem-solved` — Fixed an issue\n- `creative` — Creative work (design, writing)\n- `integration` — Connected systems\n- `optimization` — Improved performance\n- `other` — Uncategorized\n\n## Environment Variables\n\n- `PRUUF_DIR` — Where to store portfolio data (default: `.pruuf`)\n- `PRUUF_AGENT_ID` — Agent identifier (default: `default-agent`)\n\n## License\n\nMIT — CubiCrew 2026\n","readmeFilename":"README.md"}