-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathautomation-registry.json
More file actions
305 lines (305 loc) · 17.6 KB
/
automation-registry.json
File metadata and controls
305 lines (305 loc) · 17.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
{
"registry_version": "2.1.1",
"created": "2026-04-24",
"author": "Ahmed Ossama | Product Leader, Builder & Venture Management Architect",
"scope_rule": "Only automations declared in this registry may be triggered by the skill. No automation may be improvised or added during a session. Scope is locked at this file.",
"automations": [
{
"id": "A01",
"name": "Job Board Fetch and Search",
"phase": "Phase 0 — Job Discovery",
"description": "Fetch job listings from job boards using web_search and web_fetch. Parse results into the ranked discovery table.",
"tool_required": ["web_search", "web_fetch"],
"mcp_required": null,
"consent_tier": 1,
"approval_phrase": null,
"reversible": true,
"fallback": "User runs searches manually and pastes results",
"scope_boundary": "Job search queries only. No login to job platforms without user credential consent. No bulk scraping.",
"platform_notes": {
"linkedin": "Search results via web_search only. Direct fetch often blocked.",
"indeed": "Search results via web_search only. Direct fetch often blocked.",
"greenhouse": "Direct fetch reliable. Full JD accessible.",
"lever": "Direct fetch reliable. Full JD accessible.",
"breezy_hr": "Direct fetch reliable. Full JD accessible.",
"wellfound": "Direct fetch reliable for public listings.",
"relocate_me": "Direct fetch reliable.",
"eurotechjobs": "Direct fetch reliable.",
"remoteok": "Direct fetch reliable."
}
},
{
"id": "A02",
"name": "Full Job Posting Fetch for Top 5",
"phase": "Phase 0 — after ranked table presented",
"description": "After the ranked discovery table is presented and scored, fetch the full JD content for the top 5 flagged results to give the user complete information before selecting a role.",
"tool_required": ["web_fetch"],
"mcp_required": null,
"consent_tier": 1,
"approval_phrase": null,
"reversible": true,
"fallback": "User opens each URL manually",
"scope_boundary": "Top 5 flagged results only. No bulk fetch beyond that without user request."
},
{
"id": "A03",
"name": "Application Form Fetch and Parse",
"phase": "Phase 1 — Company Intelligence",
"description": "Fetch the application form for the selected role. Parse all visible fields and custom questions. Flag template-variable sections for manual paste.",
"tool_required": ["web_fetch"],
"mcp_required": null,
"consent_tier": 1,
"approval_phrase": null,
"reversible": true,
"fallback": "User opens form in browser and pastes custom questions manually",
"platform_strategy": {
"breezy_hr": "append_slash_apply_flag_template_variables",
"greenhouse": "fetch_embed_url_flag_custom_questions",
"lever": "append_slash_apply_usually_full_render",
"linkedin": "flag_to_user_paste_manually_auth_required",
"indeed": "flag_to_user_paste_manually_auth_required",
"other": "attempt_direct_fetch_flag_if_blocked"
}
},
{
"id": "A04",
"name": "Browser Form Navigation and Field Filling",
"phase": "Phase 6 — after Governance Gate passes at score 5",
"description": "Use browser automation to navigate to the application form, map each confirmed answer from the application package to the correct form field, and fill all fields. Does NOT submit. Submission is a separate action (A05).",
"tool_required": null,
"mcp_required": ["BrowserBase (primary)", "Playwright (secondary)"],
"consent_tier": 3,
"approval_phrase": "APPROVE FILL",
"reversible": false,
"fallback": "Pre-staged numbered answer list for manual field-by-field paste",
"prerequisite": "All 8 Governance Gate checks must pass before this action is offered",
"failure_action": "Stop immediately. Report which field failed. Show pre-staged answers for remaining fields. Switch to manual. Never auto-retry.",
"playwright_disclosure_required": true,
"high_bot_detection_note": "LinkedIn and Indeed block browser automation reliably. Fallback to manual for these platforms.",
"scope_boundary": "Fields from the confirmed application package only. No field may be filled with data not in the package."
},
{
"id": "A05",
"name": "Application Submission",
"phase": "Phase 6 — after A04 field fill is reviewed by user",
"description": "Submit the filled application form via browser automation. This action is irreversible. Requires the highest consent gate.",
"tool_required": null,
"mcp_required": ["BrowserBase (primary)", "Playwright (secondary)"],
"consent_tier": 3,
"approval_phrase": "APPROVE SUBMIT",
"reversible": false,
"fallback": "User clicks Submit manually after field filling",
"prerequisite": "A04 must complete and user must review the filled form before A05 is offered",
"consent_gate_content": [
"Company name and role title",
"Platform being submitted to",
"All field values being submitted",
"Timestamp of submission",
"Confirmation that this cannot be undone"
],
"scope_boundary": "Only the specific application being processed in this session. No bulk submission. One application per consent gate."
},
{
"id": "A06",
"name": "Cover Letter DOCX Creation",
"phase": "Phase 4 — after Application Package scores 5",
"description": "Generate a formatted DOCX file containing the humanized cover letter. Font matches the standard professional format. Presented for local download immediately.",
"tool_required": ["bash_tool", "create_file", "present_files"],
"mcp_required": null,
"consent_tier": 2,
"approval_phrase": "APPROVE CREATE",
"reversible": true,
"fallback": "Cover letter text provided inline for manual copy-paste into a document",
"output_format": "DOCX — professional format, matching CV font conventions",
"note": "Local download is always offered first. Cloud save is a separate action (A09)."
},
{
"id": "A07",
"name": "Full Application Package Document Creation",
"phase": "Phase 6 — after all 8 Governance Gate checks pass",
"description": "Generate a complete session record document containing the full application package: all form field answers, cover letter, custom question responses, company intelligence summary, fit analysis verdict, and salary figure used. Presented for local download.",
"tool_required": ["bash_tool", "create_file", "present_files"],
"mcp_required": null,
"consent_tier": 2,
"approval_phrase": "APPROVE CREATE",
"reversible": true,
"fallback": "All outputs already visible in conversation for manual save",
"output_format": "DOCX or PDF — candidate's choice at time of creation",
"note": "Cloud save is a separate action (A09)."
},
{
"id": "A08",
"name": "Hiring Manager or Recruiter Email Draft and Send",
"phase": "Phase 3 — Clarifying Intake (if follow-up needed) or Phase 7 — Post-Submission",
"description": "Draft and send an email to the hiring manager or recruiter. Phase 3 use case: requesting missing information (e.g. application form name, role clarification). Phase 7 use case: post-submission follow-up after agreed interval.",
"tool_required": null,
"mcp_required": ["Gmail MCP or Outlook/MS365 MCP — user selects per session"],
"consent_tier": 3,
"approval_phrase": "APPROVE SEND",
"reversible": false,
"fallback": "Email draft presented for manual sending by user",
"email_selection": "always_ask_user_which_mcp_never_assume",
"session_memory": "store_SESSION_EMAIL_CHOICE_current_session_only",
"recipient_scope": "Hiring manager or recruiter at the target company only. No other recipients.",
"draft_preview_required": true,
"consent_gate_content": [
"Recipient name and email address",
"Email subject line",
"Full email body",
"Sending account (which MCP)",
"Confirmation that this cannot be recalled"
],
"scope_boundary": "Professional communications directly related to the active application only. No marketing emails. No mass sends. No emails to people outside the target company's hiring team."
},
{
"id": "A09",
"name": "Cloud Document Save",
"phase": "After any document creation action (A06 or A07)",
"description": "Save a created document to the user's cloud storage. Always offered AFTER local download is presented. User selects which provider. Folder path is suggested and confirmed before save.",
"tool_required": null,
"mcp_required": ["Google Drive MCP or OneDrive/MS365 MCP — user selects"],
"consent_tier": 2,
"approval_phrase": "APPROVE SAVE",
"reversible": true,
"fallback": "File already downloaded locally — cloud save simply skipped",
"sequence_rule": "Local download via present_files MUST be offered first. Cloud save MUST NOT be offered before local download.",
"folder_suggestion_format": "Job Applications / [COMPANY_NAME] / [DATE]",
"folder_confirmation": "Suggest path, wait for user to confirm or modify before saving",
"provider_selection": "present_all_active_cloud_mcps_ask_user_which"
},
{
"id": "A10",
"name": "Calendar Follow-Up Reminder",
"phase": "Phase 7 — Post-Submission (Branch A or B)",
"description": "Create a calendar event to remind the user to follow up on the submitted application after an agreed number of days (typically 5–7 business days).",
"tool_required": null,
"mcp_required": ["Google Calendar MCP or equivalent"],
"consent_tier": 2,
"approval_phrase": "APPROVE CALENDAR",
"reversible": true,
"fallback": "Follow-up date noted in conversation for manual calendar entry",
"event_content": {
"title": "Follow up: [ROLE_TITLE] at [COMPANY_NAME]",
"description": "Application submitted on [SUBMISSION_DATE]. Follow up by email or phone.",
"date": "User-confirmed follow-up date",
"reminder": "1 day before"
},
"scope_boundary": "One reminder per application. Job search context only."
},
{
"id": "A11",
"name": "Confirmation Email to Self",
"phase": "Phase 7 — Post-Submission (Branch A)",
"description": "Send the full application package to the user's own email address as a personal record of what was submitted.",
"tool_required": null,
"mcp_required": ["Gmail MCP or Outlook/MS365 MCP — user selects"],
"consent_tier": 2,
"approval_phrase": "APPROVE SEND",
"reversible": false,
"fallback": "Application package already in conversation — user saves manually",
"email_selection": "always_ask_user_which_mcp_never_assume",
"recipient_scope": "User's own email address only. Never sent to a third party.",
"consent_gate_content": [
"Recipient (user's own email)",
"Subject: Application Record — [ROLE_TITLE] at [COMPANY_NAME]",
"Attached: application package summary"
]
},
{
"id": "A12",
"name": "Job Board MCP — Authenticated Job Search",
"phase": "Phase 0 — Job Discovery (when job board MCP is ACTIVE)",
"description": "Use an active job board or ATS platform MCP to perform authenticated searches, access saved jobs, retrieve application status, or trigger Easy Apply flows. Supplements web_search and web_fetch with authenticated access to platform features not available to anonymous requests.",
"tool_required": null,
"mcp_required": ["LinkedIn MCP", "Indeed MCP", "Greenhouse MCP", "Lever MCP", "Workday MCP", "Ashby MCP", "Wellfound MCP", "SmartRecruiters MCP", "Breezy HR MCP — whichever is ACTIVE in session"],
"consent_tier": 1,
"approval_phrase": null,
"reversible": true,
"fallback": "web_search and web_fetch for discovery — fully functional without MCP",
"activation_condition": "only_fires_when_at_least_one_job_board_mcp_is_active",
"scope_boundary": "Read-only job discovery and search only. No application submission via this automation — submission is A05. No bulk scraping. No storing of credentials beyond current session.",
"note": "When multiple job board MCPs are active, the skill uses the most appropriate one for the target platform and informs the user which is being used."
},
{
"id": "A13",
"name": "Job Board MCP Discovery Search",
"phase": "A0 — Capability Detection (STEP 1C — runs when all job board MCPs are INACTIVE)",
"description": "When no job board or ATS platform MCP is detected in the session, run web searches to find currently available MCPs for job platforms. Present results as RECOMMENDED CONNECTIONS in the Capability Map. This automation helps the user discover and connect MCPs that would enhance future sessions.",
"tool_required": ["web_search"],
"mcp_required": null,
"consent_tier": 1,
"approval_phrase": null,
"reversible": true,
"fallback": "Skip — if web_search is also unavailable, note that MCP recommendations cannot be retrieved and proceed",
"activation_condition": "fires_automatically_in_A0_step_1C_when_all_job_board_mcps_inactive",
"search_queries": [
"LinkedIn MCP model context protocol job search site:github.com",
"job board ATS MCP Claude integration available site:github.com OR site:npmjs.com",
"Greenhouse Lever Workday MCP server integration Claude"
],
"output": "list_of_available_mcps_with_links_and_capability_description",
"scope_boundary": "Search and recommendation only. Does not install, connect, or configure any MCP. User must connect MCPs themselves via their platform settings."
},
{
"id": "A14",
"name": "CoWork — Autonomous host execution chunk (Mode 2)",
"phase": "All phases (when execution mode is cowork_autonomous)",
"description": "Runs a bounded multi-step host execution block in Claude CoWork under user consent, strictly scoped to the current phase objective. Does not replace scoring gates or Tier 2/3 approval for write actions inside the chunk. Each chunk must be followed by A15 and A16.",
"tool_required": null,
"mcp_required": null,
"consent_tier": 2,
"approval_phrase": "APPROVE COCHUNK",
"reversible": true,
"activation_condition": "only_when_session_execution_mode_is_cowork_autonomous_on_Claude_CoWork",
"fallback": "Decompose the work into standard agent_supported steps with manual guidance",
"scope_boundary": "One discrete chunk of host work aligned to a single, stated phase sub-goal. No application submit (A05), no Tier-3 email send, no browser fill (A04), no cloud save — those remain their respective automations. No parallel Tier-2/3 on subagents.",
"post_chunk_required": ["A15", "A16"]
},
{
"id": "A15",
"name": "Governance re-anchor checkpoint",
"phase": "All phases (after each A14 chunk in Mode 2; optional on user request in Mode 1)",
"description": "Read-only reconciliation: restate current phase, checklist status, invariants, and next allowed action. No host side effects.",
"tool_required": null,
"mcp_required": null,
"consent_tier": 1,
"approval_phrase": null,
"reversible": true,
"fallback": "N/A — can always run as narrative checkpoint",
"scope_boundary": "Does not perform writes. Does not advance phase. Confirms the session is still aligned with SKILL.md phase law before the next A14 chunk or step."
},
{
"id": "A16",
"name": "Drift and scope verification",
"phase": "All phases (after A15 in Mode 2; on ambiguity)",
"description": "Verifies that the last chunk did not cross a phase gate without a completed score, did not expand scope, and does not conflict with invariants. If fail: pause, present agent_supported checkpoint, user reconciles.",
"tool_required": null,
"mcp_required": null,
"consent_tier": 1,
"approval_phrase": null,
"reversible": true,
"fallback": "Escalate to full step-by-step agent_supported path",
"scope_boundary": "Read-only analysis and user-facing report. If irreversible or write action detected without proper tier, block and require normal consent flow."
}
],
"artifact_policy": {
"present_files_inactive_fallback": "When present_files is INACTIVE in A0, follow SKILL.md section A0 — Mandatory artifact fallback: deliver full artifact content inline (monospace or structured text) and instruct the user to save manually. Never assume a host file-download primitive exists.",
"canonical_docs": [
"docs/platform-capabilities.md",
"docs/MANDATORY_EXCLUSIONS.md",
"docs/EXECUTION_MODES.md"
]
},
"out_of_scope_examples": [
"Accessing candidate accounts on job platforms without session credentials",
"Sending emails to anyone other than hiring manager, recruiter, or user's own address",
"Creating documents outside the application package scope",
"Any automation that modifies existing files in external systems without preview",
"Any action on platforms not listed in this registry",
"Bulk application submission across multiple companies",
"Automated follow-up emails without explicit per-email consent",
"Any action that executes based on a score of 5 — scoring and approval are separate",
"Installing or auto-connecting MCPs without user action",
"Using a job board MCP for submission — submission always uses A05 (BrowserBase/Playwright)"
]
}