Skip to content

feat: add job_search tool plugin - #2847

Open
TianhuaYuan wants to merge 2 commits into
langgenius:mainfrom
TianhuaYuan:feat/job-search
Open

feat: add job_search tool plugin#2847
TianhuaYuan wants to merge 2 commits into
langgenius:mainfrom
TianhuaYuan:feat/job-search

Conversation

@TianhuaYuan

Copy link
Copy Markdown

Plugin Submission

Plugin information

Submission type

  • New plugin

What changed

A key-less Job Search tool (search_jobs) that queries the free public Jobicy and Remotive job APIs. It accepts a keyword, location, category, job-type and result count, and returns matching jobs (title, company, location, job type, salary, description excerpt, source URL). No API key or credentials are required.

Risk level

  • Low risk

Required checks

  • I have read and followed the Marketplace submission requirements.
  • I have read and comply with the Plugin Developer Agreement.
  • I tested this plugin on Dify Community Edition and Dify Cloud, or documented any limitation below.
  • The package contains only files needed at runtime.
  • The package does not contain secrets, local credentials, .env files, .git directories, virtual environments, caches, logs, or IDE files.
  • The package does not contain executables or bundled binaries, or I explained why they are required below.
  • The plugin README includes setup steps, usage instructions, required APIs or credentials, connection requirements, and the source repository link.
  • The plugin includes PRIVACY.md or a hosted privacy policy, and manifest.yaml references it.
  • All user-facing text is primarily in English, with any localized README files following the i18n guidance.

Security and privacy notes

None. The tool only makes outbound HTTPS requests to the documented Jobicy and Remotive public APIs. No command/code execution, file operations, browser automation, or sensitive-data handling.

Local validation

Real API responses verified locally against both providers:

  • Jobicy: GET https://jobicy.com/api/v2/remote-jobs?count=10 returned 10 jobs (title, company, location, url present).
  • Remotive: GET https://remotive.com/api/remote-jobs returned remote jobs with keyword/location filtering applied.
  • Dify Cloud remote debug: ran the search_jobs tool from a Dify Cloud workflow against the local debug server; invocation log showed invoke source='jobicy' count=10matched 10 jobs, and the workflow returned the job list successfully.

Reviewer notes

  • Zero-key design: the provider declares no credentials, so the tool works immediately after install.
  • Package verified with dify plugin package; zipped contents contain no [], .env, caches, or junk files.

Key-less Job Search tool (search_jobs) querying the Jobicy and Remotive free public APIs. Directory: TianhuaYuan/job_search.

Co-Authored-By: Claude Fable 5 <[email protected]>
@github-actions github-actions Bot added the risk: low Low-risk Marketplace submission label Aug 9, 2026
crazywoola
crazywoola previously approved these changes Aug 10, 2026

@crazywoola crazywoola left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM

Decision: Approve

Local Check Results

Check Status Detail Required action
PR content language ✅ Pass PR title/body CJK ratio=0.0% (zh=0, en=2137, ignored_zh=0, allowed_zh<=0) None.
Project structure ✅ Pass All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. None.
Manifest author ✅ Pass author is valid. None.
Icon validation ✅ Pass icon exists: _assets/icon.png None.
Version check ✅ Pass version 0.0.1 is available. None.
README language ✅ Pass README.md CJK ratio=0.0% (zh=0, en=1696, allowed_zh<=0) None.
PRIVACY.md ✅ Pass PRIVACY.md exists and is non-empty. None.
Dependency install ✅ Pass requirements installed successfully. None.
dify_plugin version ✅ Pass dify_plugin version 0.10.1 satisfies >= 0.9.0. None.
Install test ✅ Pass plugin install test passed. None.
Packaging test ✅ Pass packaging check passed. None.

@crazywoola
crazywoola dismissed their stale review August 10, 2026 09:56

Superseded by a fresh full review of all open PRs on 2026-08-10.

crazywoola
crazywoola previously approved these changes Aug 10, 2026

@crazywoola crazywoola left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM

Decision: Approve

Local Check Results

Check Status Detail Required action
PR content language ✅ Pass PR title/body CJK ratio=0.0% (zh=0, en=2137, ignored_zh=0, allowed_zh<=0) None.
Project structure ✅ Pass All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. None.
Manifest author ✅ Pass author is valid. None.
Icon validation ✅ Pass icon exists: _assets/icon.png None.
Version check ✅ Pass version 0.0.1 is available. None.
README language ✅ Pass README.md CJK ratio=0.0% (zh=0, en=1696, allowed_zh<=0) None.
PRIVACY.md ✅ Pass PRIVACY.md exists and is non-empty. None.
Dependency install ✅ Pass requirements installed successfully. None.
dify_plugin version ✅ Pass dify_plugin version 0.10.2 satisfies >= 0.9.0. None.
Install test ✅ Pass plugin install test passed. None.
Packaging test ✅ Pass packaging check passed. None.

Upstream pre-check requires a PR to change exactly one .difypkg file; source files are kept in the plugin package and the fork, not in the PR.

Co-Authored-By: Claude Fable 5 <[email protected]>
@TianhuaYuan

Copy link
Copy Markdown
Author

Hi maintainers 👋 — I fixed the pre-check failure (PR now contains only the single job_search-0.0.1.difypkg artifact, as required). The pre-check-plugin workflow run needs approval to execute (status: action_required). Could you please approve the run at https://github.com/langgenius/dify-plugins/actions/runs/31683984768? Thanks!

crazywoola
crazywoola previously approved these changes Aug 14, 2026

@crazywoola crazywoola left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ LGTM

Decision: Approve

Local Check Results

Check Status Detail Required action
PR content language ✅ Pass PR title/body CJK ratio=0.0% (zh=0, en=2137, ignored_zh=0, allowed_zh<=0) None.
Project structure ✅ Pass All expected files present: manifest.yaml, README.md, PRIVACY.md. _assets/: yes. None.
Manifest author ✅ Pass author is valid. None.
Icon validation ✅ Pass icon exists: _assets/icon.png None.
Version check ✅ Pass version 0.0.1 is available. None.
README language ✅ Pass README.md CJK ratio=0.0% (zh=0, en=1696, allowed_zh<=0) None.
PRIVACY.md ✅ Pass PRIVACY.md exists and is non-empty. None.
Dependency install ✅ Pass requirements installed successfully. None.
dify_plugin version ✅ Pass dify_plugin version 0.10.2 satisfies >= 0.9.0. None.
Install test ✅ Pass plugin install test passed. None.
Packaging test ✅ Pass packaging check passed. None.

@crazywoola
crazywoola dismissed their stale review August 14, 2026 02:17

Approval dismissed because the required pre-check-plugin CI is failing. Please resolve the CI errors before requesting re-review.

@crazywoola

crazywoola commented Aug 15, 2026

Copy link
Copy Markdown
Member

@crazywoola please see the errors in the CI checks above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: low Low-risk Marketplace submission

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants