{"_id":"@1dolinski/fastforms","_rev":"7-bacb9cb364309087e25b4bd00acf9317","name":"@1dolinski/fastforms","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@1dolinski/fastforms","version":"0.1.0","keywords":["forms","automation","chrome","puppeteer","personas"],"license":"MIT","_id":"@1dolinski/fastforms@0.1.0","maintainers":[{"name":"1dolinski","email":"christopher.dolinski@gmail.com"}],"homepage":"https://github.com/1dolinski/fastforms#readme","bugs":{"url":"https://github.com/1dolinski/fastforms/issues"},"bin":{"fastforms":"bin/fastforms.js"},"dist":{"shasum":"b65940ebebd42d44ee8b2f1000239141d7aef54d","tarball":"https://registry.npmjs.org/@1dolinski/fastforms/-/fastforms-0.1.0.tgz","fileCount":9,"integrity":"sha512-icNjCX7tvkVlPVN4hR5Aq2m6RaU+/P1GHjnSVqYSuuTZ6h7ACJDskEMu2HnpnxiAtsTH+QueXkFjpRzc5X98jA==","signatures":[{"sig":"MEQCIHw2h99/eDSK8utYL1DJ77D+bbQZuY34SlJVrAO7QI8zAiAtll49+qVNKydbREvzxyTsKLD+rnUrQ2HmIPjQsOyETA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42967},"type":"module","engines":{"node":">=18"},"gitHead":"7bbb67d5783400d04d6a3144530d78f852c14596","_npmUser":{"name":"1dolinski","email":"christopher.dolinski@gmail.com"},"repository":{"url":"git+https://github.com/1dolinski/fastforms.git","type":"git"},"_npmVersion":"11.8.0","description":"Fill any form fast. Manage personas on the web, fill forms from your terminal.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"puppeteer-core":"^24.39.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fastforms_0.1.0_1773507739749_0.8418229901226615","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@1dolinski/fastforms","version":"0.1.1","keywords":["forms","automation","chrome","puppeteer","personas"],"license":"MIT","_id":"@1dolinski/fastforms@0.1.1","maintainers":[{"name":"1dolinski","email":"christopher.dolinski@gmail.com"}],"homepage":"https://github.com/1dolinski/fastforms#readme","bugs":{"url":"https://github.com/1dolinski/fastforms/issues"},"bin":{"fastforms":"bin/fastforms.js"},"dist":{"shasum":"22e7764e83d140f71a962a59d44055c307b8093a","tarball":"https://registry.npmjs.org/@1dolinski/fastforms/-/fastforms-0.1.1.tgz","fileCount":9,"integrity":"sha512-qDWHbQIc9afoajk8KV+xLPlK6EggDw9g+xTSHaDSH/m211+imVbiYpxJd3PyAHhADJOxF+W5ozWR2jxG7Lfziw==","signatures":[{"sig":"MEUCIQCyX6yHEx1t+IQZFNp2qqyK0F4QNhRKyp2ShnuW8penWAIgKyF9R7r/3Q4xYDwKRstm+5StvVelsKWI1NpGnimsv2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42969},"type":"module","engines":{"node":">=18"},"gitHead":"7bbb67d5783400d04d6a3144530d78f852c14596","_npmUser":{"name":"1dolinski","email":"christopher.dolinski@gmail.com"},"repository":{"url":"git+https://github.com/1dolinski/fastforms.git","type":"git"},"_npmVersion":"11.8.0","description":"Fill any form fast. Manage personas on the web, fill forms from your terminal.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"puppeteer-core":"^24.39.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fastforms_0.1.1_1773507760151_0.05861833814556339","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@1dolinski/fastforms","version":"0.1.2","keywords":["forms","automation","chrome","puppeteer","personas"],"license":"MIT","_id":"@1dolinski/fastforms@0.1.2","maintainers":[{"name":"1dolinski","email":"christopher.dolinski@gmail.com"}],"homepage":"https://github.com/1dolinski/fastforms#readme","bugs":{"url":"https://github.com/1dolinski/fastforms/issues"},"bin":{"fastforms":"bin/fastforms.js"},"dist":{"shasum":"419690b9912417967f072b50f080d611a346d0d7","tarball":"https://registry.npmjs.org/@1dolinski/fastforms/-/fastforms-0.1.2.tgz","fileCount":9,"integrity":"sha512-FD3rgBF0ONs32BFx/iBKtfC+oZzRb7onBfwqbBKdo8gWkjPtRV3/qOwi7ixQkPhTbj5J4KYzFHQri21FoQiiHA==","signatures":[{"sig":"MEYCIQDpcHXlfkxqr5QZIKkuYeza40EcEgix84Hy+qUQSj8CdgIhAI4j0QZIY3fyAPTJePi/3K6IIl1ITjoglA8QMqlnetwO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43079},"type":"module","engines":{"node":">=18"},"gitHead":"32b179302d994df87109cbf8baebcf2528c84c74","_npmUser":{"name":"1dolinski","email":"christopher.dolinski@gmail.com"},"repository":{"url":"git+https://github.com/1dolinski/fastforms.git","type":"git"},"_npmVersion":"11.8.0","description":"Fill any form fast. Manage personas on the web, fill forms from your terminal.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"puppeteer-core":"^24.39.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fastforms_0.1.2_1773507879783_0.5321618004303623","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@1dolinski/fastforms","version":"0.2.0","keywords":["forms","automation","chrome","puppeteer","personas"],"license":"MIT","_id":"@1dolinski/fastforms@0.2.0","maintainers":[{"name":"1dolinski","email":"christopher.dolinski@gmail.com"}],"homepage":"https://github.com/1dolinski/fastforms#readme","bugs":{"url":"https://github.com/1dolinski/fastforms/issues"},"bin":{"fastforms":"bin/fastforms.js"},"dist":{"shasum":"76d5d40242da64f280245ea79527a8beefe2ab0d","tarball":"https://registry.npmjs.org/@1dolinski/fastforms/-/fastforms-0.2.0.tgz","fileCount":9,"integrity":"sha512-A1zcuEH1op6LDNjq8pi1Voyk8Xmqxtxq6EjKy7WkXLptoKn1GDdBvSmkyATIokOBTwpXBjGUGXbz3IIHJgEEwA==","signatures":[{"sig":"MEYCIQDQ//im3pNPFGQmMslho09vuWqGyOzcIQtwvbNxBe0MrAIhAIPlaeZrjPlpg8+LO7l52sj9stuYsiASd0VWaGXrq2OM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51696},"type":"module","engines":{"node":">=18"},"gitHead":"8704caf47701d848d66e6a2171a65d60b7ef6507","_npmUser":{"name":"1dolinski","email":"christopher.dolinski@gmail.com"},"repository":{"url":"git+https://github.com/1dolinski/fastforms.git","type":"git"},"_npmVersion":"11.8.0","description":"Fill any form fast. Manage personas on the web, fill forms from your terminal.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"puppeteer-core":"^24.39.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fastforms_0.2.0_1773508261208_0.8030476374454114","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@1dolinski/fastforms","version":"0.3.0","keywords":["forms","automation","chrome","puppeteer","personas"],"license":"MIT","_id":"@1dolinski/fastforms@0.3.0","maintainers":[{"name":"1dolinski","email":"christopher.dolinski@gmail.com"}],"homepage":"https://github.com/1dolinski/fastforms#readme","bugs":{"url":"https://github.com/1dolinski/fastforms/issues"},"bin":{"fastforms":"bin/fastforms.js"},"dist":{"shasum":"b76c00b8a8c8e2f4e87313a636de3fcf75fd127a","tarball":"https://registry.npmjs.org/@1dolinski/fastforms/-/fastforms-0.3.0.tgz","fileCount":9,"integrity":"sha512-yOaRh8WXE7tRD+GZq1NmlyhF4ctPOOGi6vJXLF6mWLyZQYLAfIO2IXzNlgwYkDbEdkxb54l3gpXryMoLkcH4MQ==","signatures":[{"sig":"MEUCIQDFCPMVfcZvWWqMC3fqsGAbVpHDABjMRevx5Fi7ag1mygIgUj6lLF+Tz6YfylOoj3+J8R/g+uAZ9cYRO/Ivig/AmqE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63762},"type":"module","engines":{"node":">=18"},"gitHead":"4cc22dc4b60a0d77a035fbfe189641b27074f15d","_npmUser":{"name":"1dolinski","email":"christopher.dolinski@gmail.com"},"repository":{"url":"git+https://github.com/1dolinski/fastforms.git","type":"git"},"_npmVersion":"11.8.0","description":"Fill any form fast. Manage personas on the web, fill forms from your terminal.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"puppeteer-core":"^24.39.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fastforms_0.3.0_1773508571109_0.8360771164408649","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@1dolinski/fastforms","version":"0.4.0","keywords":["forms","automation","chrome","cdp","personas"],"license":"MIT","_id":"@1dolinski/fastforms@0.4.0","maintainers":[{"name":"1dolinski","email":"christopher.dolinski@gmail.com"}],"homepage":"https://github.com/1dolinski/fastforms#readme","bugs":{"url":"https://github.com/1dolinski/fastforms/issues"},"bin":{"fastforms":"bin/fastforms.js"},"dist":{"shasum":"b529e2b3d4f25bd9cd926d91d58c463c18edf95f","tarball":"https://registry.npmjs.org/@1dolinski/fastforms/-/fastforms-0.4.0.tgz","fileCount":10,"integrity":"sha512-NqYPpx04OHDJWJDQoppAo303uXSL6z8HKwLrKg+gah8JEucAMQVs7mdDi/sao19gujXO5kTHwdg/rkNMmASj2w==","signatures":[{"sig":"MEQCIA3AiUKUGuKEWXmvdXdAXVX4PCVMjT90EAPPdYjGQOaaAiAbRvSQYZBwFt6ukkdqKZBrWYM3nnggT1dkxZLzhESiPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68774},"type":"module","engines":{"node":">=18"},"gitHead":"3cb0c8c476473aab5a324aca68944b4774f5cd1b","_npmUser":{"name":"1dolinski","email":"christopher.dolinski@gmail.com"},"repository":{"url":"git+https://github.com/1dolinski/fastforms.git","type":"git"},"_npmVersion":"11.8.0","description":"Fill any form fast. Manage personas on the web, fill forms from your terminal.","directories":{},"_nodeVersion":"25.6.0","dependencies":{"ws":"^8.18.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fastforms_0.4.0_1773508901791_0.4161402185963803","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@1dolinski/fastforms","version":"0.5.0","description":"Fill any form fast. Manage personas on the web, fill forms from your terminal.","type":"module","bin":{"fastforms":"bin/fastforms.js"},"dependencies":{"@x402/evm":"^2.6.0","@x402/fetch":"^2.6.0","viem":"^2.47.4","ws":"^8.18.0"},"engines":{"node":">=18"},"repository":{"type":"git","url":"git+https://github.com/1dolinski/fastforms.git"},"license":"MIT","keywords":["forms","automation","chrome","cdp","personas","x402","twitter"],"gitHead":"1ae2e491c0d9a8f1a24e27172a2e4cfa9069fe8a","_id":"@1dolinski/fastforms@0.5.0","bugs":{"url":"https://github.com/1dolinski/fastforms/issues"},"homepage":"https://github.com/1dolinski/fastforms#readme","_nodeVersion":"25.6.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-G1wj2RkXYgO6dGUZ/hl4Q8SRYgLCr7RyGPV50IoH5nfVFAgMnEdGlUwU/h7DAAutL8U2wvrE7ajUwRFriFEenA==","shasum":"8b25db2974de6f766bd254823dba7b7f98001777","tarball":"https://registry.npmjs.org/@1dolinski/fastforms/-/fastforms-0.5.0.tgz","fileCount":11,"unpackedSize":75928,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD+foBcOMAMwbWqvPhzkU7i6I+UGvGp3+vRo3u4vYjzwgIhANjSuBuK2fNo9jYQi7TlmYzRdbcNdx5/JyIr7Pi88Bxm"}]},"_npmUser":{"name":"1dolinski","email":"christopher.dolinski@gmail.com"},"directories":{},"maintainers":[{"name":"1dolinski","email":"christopher.dolinski@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fastforms_0.5.0_1773509197694_0.6716970455672429"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-14T17:02:19.584Z","modified":"2026-03-14T17:26:37.963Z","0.1.0":"2026-03-14T17:02:19.878Z","0.1.1":"2026-03-14T17:02:40.290Z","0.1.2":"2026-03-14T17:04:39.928Z","0.2.0":"2026-03-14T17:11:01.374Z","0.3.0":"2026-03-14T17:16:11.330Z","0.4.0":"2026-03-14T17:21:41.935Z","0.5.0":"2026-03-14T17:26:37.835Z"},"bugs":{"url":"https://github.com/1dolinski/fastforms/issues"},"license":"MIT","homepage":"https://github.com/1dolinski/fastforms#readme","keywords":["forms","automation","chrome","cdp","personas","x402","twitter"],"repository":{"type":"git","url":"git+https://github.com/1dolinski/fastforms.git"},"description":"Fill any form fast. Manage personas on the web, fill forms from your terminal.","maintainers":[{"name":"1dolinski","email":"christopher.dolinski@gmail.com"}],"readme":"# fastforms\n\nFill any form fast. Manage multiple personas locally, pick the right ones at fill time.\n\n## Quick start\n\n```bash\n# 1. Create your first user + business persona\nnpx @1dolinski/fastforms init\n\n# 2. Or import from Twitter (requires PRIVATE_KEY for x402 payment)\nnpx @1dolinski/fastforms import twitter <your-handle>\n\n# 3. Enable remote debugging in Chrome\n#    Open chrome://inspect/#remote-debugging and toggle it on\n\n# 4. Fill any form — select which personas to use\nnpx @1dolinski/fastforms fill https://example.com/apply\n```\n\n## How it works\n\n1. **`fastforms init`** walks you through creating user + business personas interactively\n2. **`fastforms import twitter`** pulls your profile from Twitter via x402 micropayment\n3. **`fastforms add form`** captures the form's org, purpose, and form-specific answers\n4. Personas are saved as individual JSON files in `.fastforms/`\n5. **`fastforms fill <url>`** connects to Chrome, picks personas, fills by label matching\n6. **Review and submit manually** in Chrome\n\n## Requirements\n\n- Chrome >= 144\n- Node.js >= 18\n- (Optional) `PRIVATE_KEY` env var for Twitter import — Base network wallet with USDC\n\n## Persona types\n\n| Type | What it captures | Example |\n|---|---|---|\n| **User** | Who you are | Name, email, role, GitHub, bio |\n| **Business** | What you're building | Company, product, traction, one-liner |\n| **Form** | Who's asking & why | Org, purpose, form-specific answers |\n\nForm persona facts **override** user/business data. Form-specific questions like \"why this accelerator\" belong on the form persona, not your user persona.\n\n## Commands\n\n| Command | Description |\n|---|---|\n| `fastforms init` | Create your first user + business persona |\n| `fastforms import twitter <handle>` | Import user persona from Twitter via x402 |\n| `fastforms add user` | Add another user persona |\n| `fastforms add business` | Add another business persona |\n| `fastforms add form` | Add a form persona (org + answers) |\n| `fastforms list` | Show all saved personas |\n| `fastforms fill <url>` | Fill any form (pick from personas) |\n| `fastforms edit` | Edit an existing persona |\n| `fastforms remove` | Remove a persona |\n| `fastforms personas` | Open web persona manager in Chrome |\n\n### Fill options\n\n| Option | Description |\n|---|---|\n| `--user <hint>` | Pre-select user persona by name |\n| `--business <hint>` | Pre-select business persona by name |\n| `--form <hint>` | Pre-select form persona by name |\n| `--web` | Use web app personas instead of local files |\n| `--dir <path>` | Custom persona directory path |\n| `--port <port>` | Chrome debug port (auto-detected) |\n\n## `.fastforms/` directory\n\n```\n.fastforms/\n  users/\n    jane.json\n    work-jane.json\n  businesses/\n    acme-labs.json\n    side-project.json\n  forms/\n    yc-application.json\n    grant-proposal.json\n  defaults.json\n```\n\n### User persona (`users/jane.json`)\n\n```json\n{\n  \"name\": \"jane\",\n  \"fullName\": \"Jane Smith\",\n  \"email\": \"jane@example.com\",\n  \"role\": \"Founder & CEO\",\n  \"location\": \"San Francisco, CA\",\n  \"linkedIn\": \"linkedin.com/in/janesmith\",\n  \"github\": \"github.com/janesmith\",\n  \"bio\": \"Building developer tools. Previously at Stripe.\",\n  \"facts\": {\n    \"x handle\": \"@janesmith\",\n    \"telegram\": \"@jane\"\n  }\n}\n```\n\n### Business persona (`businesses/acme-labs.json`)\n\n```json\n{\n  \"name\": \"Acme Labs\",\n  \"oneLiner\": \"AI-powered form automation\",\n  \"website\": \"acmelabs.dev\",\n  \"problem\": \"Filling out repetitive applications wastes hours\",\n  \"solution\": \"Smart persona-based form filling\"\n}\n```\n\n### Form persona (`forms/yc-application.json`)\n\n```json\n{\n  \"name\": \"YC Application\",\n  \"urls\": [\"apply.ycombinator.com\"],\n  \"organization\": \"Y Combinator\",\n  \"purpose\": \"Startup accelerator application\",\n  \"notes\": \"3-month program in SF, $500k investment\",\n  \"deadline\": \"2026-04-01\",\n  \"facts\": {\n    \"why this accelerator\": \"The alumni network and partner expertise in developer tools\",\n    \"spend\": \"Engineering hires and go-to-market\",\n    \"last week\": \"Launched beta, onboarded 50 users, 30% week-over-week growth\"\n  }\n}\n```\n\nThe `facts` on a form persona are form-specific answers keyed by label hints. They override user/business data when a form field matches.\n\n## Twitter import (x402)\n\nPull your Twitter profile into a user persona with a single command. Uses the [x402 protocol](https://x402.org/) for pay-per-call access ($0.01 USDC on Base).\n\n```bash\n# Set your Base wallet private key\nexport PRIVATE_KEY=0x...\n\n# Import your Twitter profile\nnpx @1dolinski/fastforms import twitter janesmith\n```\n\nThis creates `users/janesmith.json` pre-filled with your name, bio, location, and handle from Twitter. You can then `fastforms edit` to add more details.\n\nRequires a Base network wallet with USDC. Powered by [APINow.fun](https://apinow.fun).\n\n## Web app (optional)\n\nYou can also manage personas in the web UI at [293-fastforms.vercel.app/persona](https://293-fastforms.vercel.app/persona) and use `--web` flag to pull from there. The web app has an \"Export for CLI\" button to download your personas as local JSON files.\n\n## Contributing\n\nPRs welcome. To develop locally:\n\n```bash\ngit clone https://github.com/1dolinski/fastforms.git\ncd fastforms\nnpm install\nnode bin/fastforms.js init\nnode bin/fastforms.js fill https://example.com/apply\n```\n\n### Adding a new form mapping\n\n1. Add a `buildXxxData(user, biz, form)` function in `lib/fill.js`\n2. Add a URL check in `fillForm()`\n3. Test with `node bin/fastforms.js fill <url>`\n\n## License\n\nMIT\n","readmeFilename":"README.md"}