From rollie-jobs
Query and analyze Rollie workforce data — companies, job listings, hiring trends, and labor market insights. Rollie tracks real-time job openings from local and regional employers. Use when the user asks about companies, job listings, open positions, hiring patterns, regional workforce trends, or when they want to understand what employers are hiring for, what roles are concentrated in an area, or what the data reveals about a local economy. Also use when writing content, reports, or analysis about workforce, talent, or economic development.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rollie-jobs:rollie-jobsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Rollie tracks real-time job openings across local and regional employers. The people who use this data are
Rollie tracks real-time job openings across local and regional employers. The people who use this data are economic development organizations (EDOs), chambers of commerce, workforce agencies, veteran placement programs, colleges, and high school counselors — organizations that care about what's actually hiring in their region and what it means for the people they serve.
Your job is not just to fetch data. It is to find the story in it.
Always start by calling whoami first.
whoamiAlways call whoami before anything else. It tells you:
If the user belongs to multiple organizations, whoami will show all of them — ask which one they want to work with before proceeding.
Before pulling data, know what you're making:
If it's not obvious, ask one question: "What are you trying to understand or create?"
| Tool | What it does |
|---|---|
whoami | Returns your identity, authorized organizations, permission level, and available tools. Always call first. |
| Tool | What it does |
|---|---|
get_companies(org_id, after, limit, fields) | List all companies tracked by the org. Supports pagination and field filtering. Use to survey the employer landscape or build a count by industry. |
get_company(org_id, company_id, fields) | Get a single company by domain ID — size, industry, job count, data freshness (jobs_refreshed_at). |
search_companies(org_id, query, limit, fields) | Semantic search across companies using neural embeddings — finds by concept, not just keyword. |
add_company_to_org(org_id, company_ids) | Add one or more companies to the org's tracked list. Accepts a list of domains or "*" to add all hub companies. Adding a company places it in Rollie Jobs' crawl queue — it can take up to 24 hours for jobs to appear, as Rollie needs to discover and index that employer's openings. Adding an already-tracked company is a no-op. |
remove_company_from_org(org_id, company_ids) | Remove one or more companies from the org's tracked list. Accepts a list of domains or "*" to remove all. Does not delete historical data. |
| Tool | What it does |
|---|---|
get_jobs(org_id, company_id, after, limit, fields) | Get structured job listings from a specific company. Use fields="job_title,job_locations,job_link" for summaries; fields="all" when you need descriptions for deeper analysis. |
search_jobs(org_id, query, company_id, limit, fields) | Semantic search across all jobs using neural embeddings — finds by concept. "Nurse jobs" finds "RN", "Registered Nurse", "Staff Nurse". Best tool for pattern-finding and discovery across the full dataset. |
| Tool | What it does |
|---|---|
get_classifiers(org_id) | List all AI classification lenses defined for the org (e.g., "entry-level", "CDL required", "remote-eligible"). |
get_classifier(org_id, field_id) | Get a single classifier by ID, including its definition and current status. |
create_classifier(org_id, field_slug, field_type, classification_prompt, field_name, enum_values) | Define a new AI classification lens. Rollie Jobs will run it against all jobs in the org. Use to answer questions like "how many jobs require a CDL?" or "which openings are truly entry-level?" |
| Tool | What it does |
|---|---|
get_seeker(org_id, seeker_id, fields) | Get a single job seeker by ID. Returns contact info, status, group, and any custom fields. Use fields="*" for all fields. |
filter_seekers(org_id, status, group_id, name, email, city, state) | Structured lookup of seekers by status, group, name prefix, email, city, or state. Returns a compact list by default. |
search_seekers(org_id, query, filters, fields) | Semantic search across seekers using neural embeddings — searches resume content and profile. Good for "find seekers with logistics experience" or "who has a CDL?". |
upsert_seeker(org_id, seeker_data, merge_id, confirmed_new) | Create or update a seeker record. Handles dedup automatically: matches on external ID → email → phone. Returns whether the record was created, updated, or flagged as a probable duplicate. |
find_seeker_duplicates(org_id) | Audit the org's seekers for likely duplicates (shared email or phone across different records). Returns candidate pairs for review — no writes. |
delete_seeker(org_id, seeker_id) | Permanently delete a seeker record. |
| Tool | What it does |
|---|---|
get_seeker_field_definitions(org_id) | List all custom field definitions for the org (e.g., branch of service, discharge status, education level). Shows field key, type, and allowed values. |
upsert_seeker_field_definition(org_id, field_data) | Create or update a custom field definition. Field key is auto-computed as sf_{orgId}_{slug}. |
delete_seeker_field_definition(org_id, field_slug) | Soft-delete a custom field (sets status to disabled). Preserves existing data on seeker records. |
| Tool | What it does |
|---|---|
get_org_members(org_id) | List all staff members in the org with their user IDs. Use this to resolve a person's name to a user ID when assigning ownership of a seeker. |
get_seeker_statuses(org_id) | List all seeker statuses defined for the org (e.g., Lead, Active, Placed). Always call this before assigning a status — never hardcode. |
get_seeker_groups(org_id) | List all seeker groups defined for the org. Call before assigning a group to a seeker. |
bestbuy.com, apllogistics.com, sturgis.bank. Always normalize — strip www. and https://. careers.bestbuy.com → bestbuy.com.search_jobs is semantic: Natural language works. Use it for discovery and pattern-finding.get_jobs is structured: Use field filtering to control response size.jobs_refreshed_at on company docs. Stale data (>7 days) should be noted when drawing conclusions.add_company_to_org, jobs won't appear immediately — Rollie queues the company for crawling and it can take up to 24 hours.Don't run one query and stop. Real analysis requires triangulation:
Every data point should connect to something meaningful:
Frame findings for economic developers, workforce directors, and counselors — not HR managers:
Choose your approach based on what the question requires.
Use search_jobs with a natural language query to pull a representative slice of the dataset. Best when:
Limitation: search_jobs returns ranked results up to a limit — it won't catch every matching job. Treat counts from a search as "at least X" not exact totals.
When accuracy matters — exact counts, complete role inventories, "every job that requires X" — you need to pull the full dataset:
get_companies (paginate with after= until you have all companies)get_jobs with fields="job_title,job_locations,job_employment_type" (or whichever fields the analysis needs) — paginate until all jobs are retrievedThis is slower (could be hundreds of calls for a large org) but gives you ground truth. Use it when:
Practical tip: Do a sampling pass first to understand the shape of the data, then decide if a full pull is worth it. Often the sample is sufficient; sometimes one outlier employer skews the picture enough that you need everything.
Regional hiring snapshot: get_companies to survey the employer landscape → search_jobs by region or industry to sample what's open → identify which roles repeat across employers → frame as "here's what your economy is actually hiring for right now"
Role concentration analysis: search_jobs for a specific role or skill → get_company on top employers for context → count distinct employers (not just job count) → frame as structural demand, not a single employer's need
Employer spotlight: get_company for overview → get_jobs with fields="all" → note role diversity, seniority mix, location spread
Internship & early-career discovery: search_jobs with "intern", "apprentice", "co-op", "entry level", "trainee" → group by employer and industry → frame for counselors and colleges
Seeker-to-job matching: filter_seekers or get_seeker to understand the person → search_jobs with their skills and location → present ranked matches with match reasoning
npx claudepluginhub south-bend-code-works/rollie --plugin rollie-jobsProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.