@1dolinski/fastforms 0.1.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,61 +1,89 @@
1
1
  # fastforms
2
2
 
3
- Fill any form fast. Manage personas locally, fill forms from your terminal.
3
+ Fill any form fast. Manage multiple personas locally, pick the right ones at fill time.
4
4
 
5
5
  ## Quick start
6
6
 
7
7
  ```bash
8
- # 1. Create your personas
8
+ # 1. Create your first user + business persona
9
9
  npx @1dolinski/fastforms init
10
10
 
11
- # 2. Enable remote debugging in Chrome
11
+ # 2. Add a form persona (org context + form-specific answers)
12
+ npx @1dolinski/fastforms add form
13
+
14
+ # 3. Enable remote debugging in Chrome
12
15
  # Open chrome://inspect/#remote-debugging and toggle it on
13
16
 
14
- # 3. Fill any form (never submits)
17
+ # 4. Fill any form select which personas to use
15
18
  npx @1dolinski/fastforms fill https://example.com/apply
16
19
  ```
17
20
 
18
21
  ## How it works
19
22
 
20
23
  1. **`fastforms init`** walks you through creating user + business personas interactively
21
- 2. Personas are saved as simple JSON in `.fastforms/user.json` and `.fastforms/business.json`
22
- 3. **`fastforms fill <url>`** connects to Chrome, opens the form, fills it by label matching
23
- 4. **Review and submit manually** in Chrome
24
+ 2. **`fastforms add form`** captures the form's org, purpose, and form-specific answers
25
+ 3. Personas are saved as individual JSON files in `.fastforms/`
26
+ 4. **`fastforms fill <url>`** connects to Chrome, picks personas, fills by label matching
27
+ 5. Form personas auto-match by URL — no need to specify which one
28
+ 6. **Review and submit manually** in Chrome
24
29
 
25
30
  ## Requirements
26
31
 
27
32
  - Chrome >= 144
28
33
  - Node.js >= 18
29
34
 
35
+ ## Persona types
36
+
37
+ | Type | What it captures | Example |
38
+ |---|---|---|
39
+ | **User** | Who you are | Name, email, role, GitHub, bio |
40
+ | **Business** | What you're building | Company, product, traction, one-liner |
41
+ | **Form** | Who's asking & why | Org, purpose, form-specific answers |
42
+
43
+ Form persona facts **override** user/business data. "What attracts you to Nitro" belongs on the Nitro form persona, not on your user persona.
44
+
30
45
  ## Commands
31
46
 
32
47
  | Command | Description |
33
48
  |---|---|
34
- | `fastforms init` | Create personas interactively |
35
- | `fastforms fill <url>` | Fill any form |
36
- | `fastforms edit` | Update existing personas |
49
+ | `fastforms init` | Create your first user + business persona |
50
+ | `fastforms add user` | Add another user persona |
51
+ | `fastforms add business` | Add another business persona |
52
+ | `fastforms add form` | Add a form persona (org + answers) |
53
+ | `fastforms list` | Show all saved personas |
54
+ | `fastforms fill <url>` | Fill any form (pick from personas) |
55
+ | `fastforms edit` | Edit an existing persona |
56
+ | `fastforms remove` | Remove a persona |
37
57
  | `fastforms personas` | Open web persona manager in Chrome |
38
58
 
39
59
  ### Fill options
40
60
 
41
61
  | Option | Description |
42
62
  |---|---|
63
+ | `--user <hint>` | Pre-select user persona by name |
64
+ | `--business <hint>` | Pre-select business persona by name |
65
+ | `--form <hint>` | Pre-select form persona by name |
43
66
  | `--web` | Use web app personas instead of local files |
44
67
  | `--dir <path>` | Custom persona directory path |
45
68
  | `--port <port>` | Chrome debug port (auto-detected) |
46
- | `--user <hint>` | User persona hint (web mode) |
47
- | `--business <hint>` | Business persona hint (web mode) |
48
69
 
49
70
  ## `.fastforms/` directory
50
71
 
51
72
  ```
52
73
  .fastforms/
53
- user.json # Your user persona
54
- business.json # Your business persona
55
- dumps/ # Optional: raw text context files
74
+ users/
75
+ chris.json
76
+ work-chris.json
77
+ businesses/
78
+ apinow.json
79
+ sideproject.json
80
+ forms/
81
+ nitro-accelerator.json
82
+ yc-application.json
83
+ defaults.json
56
84
  ```
57
85
 
58
- `user.json` — just fill in what you have:
86
+ ### User persona (`users/chris.json`)
59
87
 
60
88
  ```json
61
89
  {
@@ -74,7 +102,7 @@ npx @1dolinski/fastforms fill https://example.com/apply
74
102
  }
75
103
  ```
76
104
 
77
- `business.json`:
105
+ ### Business persona (`businesses/apinow.json`)
78
106
 
79
107
  ```json
80
108
  {
@@ -86,6 +114,27 @@ npx @1dolinski/fastforms fill https://example.com/apply
86
114
  }
87
115
  ```
88
116
 
117
+ ### Form persona (`forms/nitro-accelerator.json`)
118
+
119
+ ```json
120
+ {
121
+ "name": "Nitro Accelerator",
122
+ "urls": ["nitroacc.xyz"],
123
+ "organization": "Nitro",
124
+ "purpose": "Crypto accelerator application for early-stage founders",
125
+ "notes": "NYC-based, 1-month residency",
126
+ "deadline": "2026-04-01",
127
+ "facts": {
128
+ "attracts": "The density of high-signal founders and the NYC residency",
129
+ "mentor": "Vitalik — his work on public goods aligns with our mission",
130
+ "spend": "Engineering hires and infrastructure for mainnet launch",
131
+ "last week": "Shipped v2 of the API, onboarded 3 beta customers"
132
+ }
133
+ }
134
+ ```
135
+
136
+ The `facts` on a form persona are form-specific answers keyed by label hints. They override user/business data when a form field matches.
137
+
89
138
  ## Web app (optional)
90
139
 
91
140
  You 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.
@@ -104,7 +153,7 @@ node bin/fastforms.js fill https://example.com/apply
104
153
 
105
154
  ### Adding a new form mapping
106
155
 
107
- 1. Add a `buildXxxData(user, biz)` function in `lib/fill.js`
156
+ 1. Add a `buildXxxData(user, biz, form)` function in `lib/fill.js`
108
157
  2. Add a URL check in `fillForm()`
109
158
  3. Test with `node bin/fastforms.js fill <url>`
110
159
 
package/SKILL.md CHANGED
@@ -11,25 +11,33 @@ Use this skill when the user says any of:
11
11
  - "fill this form with my persona"
12
12
  - "use fastforms", "fastforms fill"
13
13
  - "set up my personas", "init fastforms"
14
+ - "add a persona", "add a form persona"
14
15
 
15
16
  ## What it does
16
17
 
17
18
  `fastforms` is a CLI tool that:
18
19
 
19
- 1. Manages personas locally in a `.fastforms/` directory (simple JSON files)
20
+ 1. Manages three types of personas locally in `.fastforms/`:
21
+ - **User** — who you are (name, email, bio, skills)
22
+ - **Business** — what you're building (company, product, traction)
23
+ - **Form** — who's asking and why (org, purpose, form-specific answers)
20
24
  2. Connects to Chrome via the DevTools Protocol
21
- 3. Fills any form using label-matching never submits
25
+ 3. Lets you pick which user + business + form persona to use at fill time
26
+ 4. Fills any form using label-matching — never submits
22
27
 
23
28
  ## Quick start
24
29
 
25
30
  ```bash
26
- # 1. Create your personas interactively
31
+ # 1. Create your first user + business persona
27
32
  npx @1dolinski/fastforms init
28
33
 
29
- # 2. Enable remote debugging in Chrome
34
+ # 2. Add a form persona with org context and form-specific answers
35
+ npx @1dolinski/fastforms add form
36
+
37
+ # 3. Enable remote debugging in Chrome
30
38
  # Open chrome://inspect/#remote-debugging
31
39
 
32
- # 3. Fill any form
40
+ # 4. Fill any form — pick from your personas
33
41
  npx @1dolinski/fastforms fill https://example.com/apply
34
42
  ```
35
43
 
@@ -37,43 +45,73 @@ npx @1dolinski/fastforms fill https://example.com/apply
37
45
 
38
46
  ### `npx @1dolinski/fastforms init`
39
47
 
40
- Conversational persona builder. Walks through user + business persona fields, saves to `.fastforms/user.json` and `.fastforms/business.json`.
48
+ Walks through creating a user + business persona (optionally a form persona too).
49
+
50
+ ### `npx @1dolinski/fastforms add user|business|form`
51
+
52
+ Add another persona of any type.
53
+
54
+ ### `npx @1dolinski/fastforms list`
55
+
56
+ Show all saved personas across all types.
41
57
 
42
58
  ### `npx @1dolinski/fastforms fill <url>`
43
59
 
44
- Fills any form. Reads personas from local `.fastforms/` directory by default.
60
+ Fills any form. If you have multiple personas, prompts you to pick. Form personas auto-match by URL.
45
61
 
46
62
  Options:
63
+ - `--user <hint>` — pre-select a user persona by name
64
+ - `--business <hint>` — pre-select a business persona by name
65
+ - `--form <hint>` — pre-select a form persona by name
47
66
  - `--web` — use web app personas (https://293-fastforms.vercel.app) instead of local files
48
67
  - `--dir <path>` — custom path to persona directory
49
68
  - `--port <port>` — Chrome debug port (auto-detected by default)
50
69
 
51
70
  ### `npx @1dolinski/fastforms edit`
52
71
 
53
- Re-run the persona builder with current values pre-filled.
72
+ Pick any persona to edit interactively.
73
+
74
+ ### `npx @1dolinski/fastforms remove`
54
75
 
55
- ### `npx @1dolinski/fastforms personas`
76
+ Pick any persona to delete.
56
77
 
57
- Opens the web persona manager in Chrome.
78
+ ## Persona types
58
79
 
59
- ## Persona sources
80
+ ### User persona
81
+ Who you are. Name, email, role, GitHub, LinkedIn, bio, custom facts.
60
82
 
61
- 1. **Local `.fastforms/` directory** (default) — simple JSON files, no web app needed
62
- 2. **Web app** (`--web` flag) — https://293-fastforms.vercel.app/persona manages personas in localStorage, CLI reads via CDP
83
+ ### Business persona
84
+ What you're building. Company, product, one-liner, traction, business model.
85
+
86
+ ### Form persona
87
+ Who's asking and why. The organization that owns the form, the form's purpose, and **form-specific answers** that override user/business data. For example, "what attracts you to Nitro" is a Nitro-specific answer — it belongs on the form persona, not on your user or business persona.
88
+
89
+ Form personas auto-match by URL. If your form persona has `urls: ["nitroacc.xyz"]` and you fill `https://nitroacc.xyz/apply`, it auto-selects.
63
90
 
64
91
  ## How it works
65
92
 
66
- 1. Reads personas from `.fastforms/user.json` and `.fastforms/business.json`
67
- 2. Auto-discovers Chrome's debug port from `DevToolsActivePort`
68
- 3. Opens (or reuses) the target form URL tab
69
- 4. Fills using label-matching heuristics. Has site-specific mappings for known forms.
70
- 5. Shows what was filled, what was skipped. **Never submits.**
93
+ 1. Reads all personas from `.fastforms/users/`, `.fastforms/businesses/`, and `.fastforms/forms/`
94
+ 2. If multiple, prompts you to pick which user + business persona to use
95
+ 3. Auto-matches form persona by URL (or prompts if multiple)
96
+ 4. Auto-discovers Chrome's debug port from `DevToolsActivePort`
97
+ 5. Opens (or reuses) the target form URL tab
98
+ 6. Fills using label-matching. Form persona facts are checked first as overrides.
99
+ 7. Shows what was filled, what was skipped. **Never submits.**
71
100
 
72
101
  ## Agent instructions
73
102
 
74
103
  When the user asks you to fill a form:
75
104
 
76
105
  1. Check if `.fastforms/` exists. If not, run `npx @1dolinski/fastforms init`
77
- 2. Run `npx @1dolinski/fastforms fill <the-url>`
78
- 3. If Chrome debugging isn't enabled, tell the user to open `chrome://inspect/#remote-debugging`
79
- 4. After filling, tell the user to review in Chrome and submit manually
106
+ 2. If the form is new, suggest `npx @1dolinski/fastforms add form` to capture form-specific context
107
+ 3. Run `npx @1dolinski/fastforms fill <the-url>`
108
+ 4. If Chrome debugging isn't enabled, tell the user to open `chrome://inspect/#remote-debugging`
109
+ 5. After filling, tell the user to review in Chrome and submit manually
110
+
111
+ When the user wants to add a persona:
112
+
113
+ 1. Run `npx @1dolinski/fastforms add user|business|form`
114
+
115
+ When the user wants to see their personas:
116
+
117
+ 1. Run `npx @1dolinski/fastforms list`