Remote Jobs Finder

v1.6.2

Fully conversational remote job finder for WhatsApp powered by Remote Rocketship. Uses rr_jobs_search tool (server-side RR_API_KEY) and supports pagination (...

3· 857·0 current·0 all-time
MIT-0
Download zip
LicenseMIT-0 · Free to use, modify, and redistribute. No attribution required.
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The skill claims to fetch Remote Rocketship jobs and the bundle includes a small gateway extension that registers rr_jobs_search and posts to remoterocketship.com using an RR_API_KEY. Requiring a server-side API key is appropriate for this purpose.
Instruction Scope
SKILL.md stays within scope: it requires using the rr_jobs_search tool, instructs not to ask users for secrets, and specifies the conversational flows and pagination state. One minor gap: the doc mentions optional 'monitoring' (check every hour) but the bundle does not provide a scheduler or persistent monitor — that requires extra server-side setup not included in the skill files.
Install Mechanism
No remote downloads or package installs. The provided install-server.sh copies two local files into ~/.openclaw/extensions. This is a low-risk, manual install mechanism; files are readable in the bundle so the behavior is auditable.
Credentials
The gateway extension reads process.env.RR_API_KEY to authenticate requests to Remote Rocketship. That environment variable is appropriate and scoped to the service. Small inconsistency: the skill metadata lists no required env vars, but the runtime extension does require RR_API_KEY — the SKILL.md and README do document this and instruct the admin to set it server-side.
Persistence & Privilege
always:false and no attempt to modify other skills or system-wide settings beyond asking the admin to add an Environment entry to the openclaw-gateway service. The extension writes to ~/.openclaw/extensions only and registers one tool; this is proportional for the plugin's purpose.
Assessment
This skill appears to be what it says: a conversational job-finder that requires a server-side RR_API_KEY. Before installing, review and do the following: 1) Inspect the included extension files (index.ts/openclaw.plugin.json) — they are small and understandable; they only POST to https://www.remoterocketship.com/api/openclaw/jobs and return the response. 2) Only set RR_API_KEY if you trust the Remote Rocketship account and rotate/revoke keys as needed; store it in the systemd service environment as instructed and restrict access to the host. 3) If you require automatic periodic monitoring (hourly/daily), plan to run a scheduler or add server-side code — the bundle does not include a persistent polling service. 4) Install the files from a trusted source (the GitHub repo link in SKILL.md) and verify future updates come from that repo to avoid supply-chain risks. 5) Run the extension on an isolated host or with appropriate host-level permissions if you’re concerned about key exposure. If you want, I can point out the exact lines in index.ts that send the API key and the HTTP request so you can show them to an admin.

Like a lobster shell, security has layers — review code before you run it.

latestvk972m7t9gs2hyrkrmpyp7g5g8x8187ma

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

Remote Rocketship × OpenClaw Skill (Natural Language Job Finder)

Use this skill whenever a user asks (in normal chat) to find remote jobs, browse opportunities, or set up an ongoing job search. This integration is powered by Remote Rocketship (https://www.remoterocketship.com).

Github repo: https://github.com/Lior539/openclaw-remote-jobs-finder

UX rule: fully conversational. Do not tell the user to run CLIs, use slash commands, or visit dashboards.


Fetching jobs (MANDATORY)

When the user wants real job listings, you MUST call the OpenClaw tool rr_jobs_search.

Hard rules:

  • Do NOT ask the user to run any CLI.
  • Do NOT claim you can’t fetch listings (you can).
  • Do NOT attempt raw HTTP calls from the model.

API key rules:

  • The Remote Rocketship API key is provided server-side via environment variable RR_API_KEY.
  • Never ask the user to paste secrets in WhatsApp.

Example call:

{
  "filters": {
    "page": 1,
    "itemsPerPage": 20,
    "jobTitleFilters": ["Product Manager"],
    "locationFilters": ["United Kingdom"]
  },
  "includeJobDescription": false
}

When to Trigger

Trigger on messages like:

  • “Help me find a remote job”
  • “Find me remote Product Manager roles”
  • “Show me remote jobs in the UK”
  • “Any new backend roles since yesterday?”
  • “Send me 20 more”
  • “Set this up to check every hour”

Conversation Flow

A) Onboarding (keep it short)

Ask only what you need. Prefer 1–3 quick questions, then fetch.

  1. Role / direction (required)
  • “What kind of roles are you looking for? (job titles, function, seniority)”
  1. Location eligibility (required)
  • “Where can you legally work from? (country / region)”
  1. Must-haves & deal-breakers (optional, single combined question)
  • “Any must-haves (salary/industry/async) or deal-breakers?”
  1. Monitoring cadence (optional)
  • “Want me to check for new matches on a schedule (hourly/daily/off)?”

If the user doesn’t want to answer everything, proceed with what you have and fetch results anyway.

B) First fetch (default)

  • Default itemsPerPage: 20 unless the user asks for a different batch size.
  • Keep includeJobDescription: false unless the user asks for deeper detail.

Preference Memory (important)

Maintain a simple user profile in memory so the user doesn’t need to repeat themselves:

  • targetTitles: string[]
  • locationFilters: string[]
  • seniorityFilters: string[] (if known)
  • employmentTypeFilters: string[] (if known)
  • mustHaves: string[]
  • dealBreakers: string[]
  • rankingPreference: "best_fit" | "newest_first"
  • pollingCadence: e.g. "hourly" / "daily" / "off"
  • lastQueryFilters: the last filters object used (for “20 more”)

If the user updates anything (“Actually only contract roles”), update memory.


Pagination & “20 more”

Store lightweight paging state:

  • filters
  • page
  • itemsPerPage
  • pagination.totalCount / hasNextPage

Rules:

  1. When the user tweaks filters, reset page back to 1 and fetch again.
  2. If they say “more”, “20 more”, “next page”, increment filters.page and call rr_jobs_search again with the last filters.
  3. Always mention what you’re showing (e.g., “Showing 21–40 of 134”).
  4. If hasNextPage is false, tell the user you’ve reached the end.

Output formatting (WhatsApp-friendly)

For each job, show as a bulleted list: Role Title — Company

  • 🕒 Posted: <date and time posted, formatted nicely e.g. today @ 5:15pm, or yesterday @ 2:10pm, or 2 days ago, or 1 week ago etc. Only show time if it was today or yesterday>
  • <flag emoji> Location (remote scope)
  • 💰 Salary (or “Salary undisclosed”)
  • 1–2 line summary
  • 🔗 Link to apply
  • 🏢 Link to company homepage
  • 🌐 Link to company LinkedIn:

Keep it concise. After the list, ask what to do next:

  • “Want 20 more, or should I narrow by industry/seniority/salary?”

OpenClaw Tool to Use (required)

Tool: rr_jobs_search

Parameters:

  • filters (object): passed through to Remote Rocketship API filters
  • includeJobDescription (boolean, optional; default false)

The tool performs the POST to: https://www.remoterocketship.com/api/openclaw/jobs


Error handling

StatusMeaningAgent guidance
401Missing/invalid API keyTell the admin to set/repair RR_API_KEY server-side and restart the gateway. Do NOT ask the user for keys in chat.
403Subscription inactiveTell the user they need an active Remote Rocketship plan to fetch jobs.
429Rate limitInform the user you hit the daily limit and suggest retrying later.
5xxBackend issueApologize, retry once, then ask the user to try again later.

Filters (common)

Common filter keys you can use inside filters:

  • page (int, default 1)
  • itemsPerPage (int, default 20, max 50)
  • jobTitleFilters (string[])
  • locationFilters (string[]) — use canonical values like “United Kingdom”, “Worldwide”
  • keywordFilters (string[])
  • excludedKeywordFilters (string[])
  • seniorityFilters (string[]) — e.g. ["senior"]
  • employmentTypeFilters (string[]) — e.g. ["full-time"]

Prefer canonical titles/locations from RR lists when possible.

Files

7 total
Select a file
Select a file to preview.

Comments

Loading comments…