Skill: chenyuan99/swelist (version 1.0.13)

--- name: Swelist — Tech Internship & Job Tracker description: Helps you find tech internships and new-grad jobs, track every application locally, and prep for interviews — no sign-up needed summary: > Use swelist to browse software engineering internships and new-graduate positions sourced live from SimplifyJobs, filtered by location and timeframe. Track every job application you have submitted in a local SQLite database — add entries, mark statuses as in progress, rejected, or done, add notes, and export your full pipeline as JSON or CSV. Includes an AI writing assistant (jobgpt) for generating behavioral interview answers in STAR format, compelling "why this company" responses, and general career advice. Works offline for tracking; no account, API key, or subscription required. version: 0.1.9 homepage: https://pypi.org/project/swelist/ author: Yuan Chen repository: https://github.com/chenyuan99/swelist keywords: - internship - new-grad - job-search - job-tracker - tech-jobs - software-engineering - application-tracker - sqlite - career - job-listings - simplify-jobs - job-finder - swe-jobs - cs-internship tags: - career - productivity - job-search category: career metadata: openclaw: emoji: "💼" requires: bins: ["swelist"] install: - id: uv kind: uv package: swelist bins: ["swelist"] label: "Install swelist (uv)" --- # swelist `swelist` is a job-seeker CLI for finding software engineering internships and new-grad positions in real time, plus a local SQLite tracker for every application — no account, no API key, no subscription required. It pulls live data from SimplifyJobs, filters by role, location, and timeframe, and pairs with an AI writing assistant (`jobgpt`) for interview prep. ------------------------------------------------------------------------ ## When to Use This Skill Trigger when the user asks to: - Find or browse internship openings ("show me tech internships this week", "any CS internships remote?") - Search for new-grad software engineering jobs ("new grad SWE jobs in NYC", "entry-level software engineer positions") - Filter job listings by location, company, or recency ("jobs in Seattle last 7 days", "remote internships last month") - Track a job application locally ("add Amazon SDE intern to my tracker", "log this application") - Update or check an application status ("mark Stripe offer as done", "set Google to rejected") - List or export tracked applications ("show all my applications", "export tracker as JSON") - Get AI interview prep answers ("why do you want to work at Meta?", "STAR answer for conflict question") - Get general career advice via jobgpt ("how do I negotiate salary?", "tips for my first internship") Keywords: `find internships`, `new grad jobs`, `job listings`, `job search`, `application tracker`, `track my application`, `update application status`, `swelist`, `job search CLI`, `software engineer jobs`, `tech internship`, `interview prep`, `STAR answer`, `why this company` ------------------------------------------------------------------------ ## Tool Identity - **Name:** swelist - **Type:** Command-Line Interface (CLI) - **Language:** Python - **Distribution:** PyPI - **Execution Model:** - `swelist run` — stateless, read-only (fetches live data, no local state) - `swelist jobgpt` — stateless (calls OpenAI API, no local state) - `swelist tracker` — stateful (reads/writes local SQLite at `~/.offerplus/applications.db`) ------------------------------------------------------------------------ ## Purpose `swelist` is a job-seeker CLI with three subcommand groups: - **`swelist run`** — retrieves recently added technology internship and new‑graduate job postings from curated public GitHub repositories and renders them in a predictable, text-based format. - **`swelist jobgpt`** — AI-powered writing assistant for interview prep (behavioral answers, "why this company", general career Q&A). - **`swelist tracker`** — local SQLite application tracker; add, update, query, list, and export job applications without any external account. It is optimized for: automation pipelines, periodic polling agents, and human-in-the-loop job search workflows. ------------------------------------------------------------------------ ## Data Sources - SimplifyJobs / Summer2025-Internships - SimplifyJobs / New-Grad-Positions Data is fetched live at runtime. ------------------------------------------------------------------------ ## Installation ``` bash pip install swelist ``` ------------------------------------------------------------------------ ## Invocation Contract ``` bash swelist [--role ROLE] [--timeframe TIMEFRAME] [--location LOCATION] ``` The tool accepts only CLI flags. No stdin is consumed. ------------------------------------------------------------------------ ## Parameters ### --role Controls which category of jobs to retrieve. Value Meaning ------------ ---------------------------- internship Internship roles (default) newgrad New‑graduate roles Example: ``` bash swelist --role newgrad swelist --role internship --timeframe lastweek --location "Seattle, Remote" ``` ------------------------------------------------------------------------ ### --timeframe Controls recency filtering. Value Time Window ----------- --------------- lastday Last 24 hours lastweek Last 7 days lastmonth Last 30 days Example: ``` bash swelist --timeframe lastweek swelist --role newgrad --timeframe lastmonth --location "New York, Boston" ``` ------------------------------------------------------------------------ ### --location Filters job postings by geographic location. Input Meaning -------------------------------- -------------------------------------------------- Single location `Canada` or `Toronto` Multiple locations (comma-separated) `"Boston, New York, Remote"` State code (2-letter) `CA` matches "San Francisco, CA" Example: ``` bash swelist --location Toronto swelist --location "Boston, New York, Remote" swelist --role newgrad --timeframe lastweek --location "San Francisco, Remote" swelist --role internship --timeframe lastmonth --location CA ``` ------------------------------------------------------------------------ ## tracker subcommand Local SQLite tracker for job applications synced from Gmail. **Before invoking any tracker command, read `~/.claude/profile.md`:** 1. Check `Integrations > Tracker Backend` — if `tracker_backend` is `notion`, the tracker subcommand is not applicable; use the `application-manager` skill instead. 2. If `tracker_backend` is `sqlite` (or blank, defaulting to sqlite for local use), read `SQLite DB path` from profile.md. Use that value as `--db PATH`. Fall back to `~/.offerplus/applications.db` only if the field is blank. ``` bash # Resolve DB_PATH from profile.md first, then: swelist tracker init [--db DB_PATH] swelist tracker add "<Company — Role>" --status <S> [--job-id <id>] [--applied-on YYYY-MM-DD] [--db DB_PATH] swelist tracker update "<Company — Role>" --status <S> [--notes <text>] [--db DB_PATH] swelist tracker get "<Company — Role>" [--db DB_PATH] # JSON; exit 1 + null if not found swelist tracker list [--status S] [--company C] [--db DB_PATH] swelist tracker export [--format csv|json] [--db DB_PATH] ``` If the DB does not exist yet, run `tracker init` before any other tracker command. ### tracker add output sample Input: `swelist tracker add "Stripe — Backend Engineer" --status "In progress" --job-id S789 --applied-on 2026-05-18` ``` Added: Stripe — Backend Engineer → In progress ``` Input (duplicate): ``` Skipped (already exists): Stripe — Backend Engineer ``` ### tracker update output sample Input: `swelist tracker update "Amazon — SDE, AWS" --status "Rejected"` ``` Updated: Amazon — SDE, AWS → Rejected ``` Input (not found): ``` Not found: Acme — Engineer ``` ### tracker get output sample Input: `swelist tracker get "Amazon — SDE, AWS"` ```json {"name": "Amazon — SDE, AWS", "status": "Rejected", "job_id": "10414382", "applied_on": "2026-05-17", "notes": null, "updated_at": "2026-05-18 01:10:00"} ``` Input (not found) — exits with code 1: ```json null ``` ### tracker list output sample Input: `swelist tracker list` ``` Application Status Job ID Applied Updated Amazon — Software Development Engineer, AWS In progress 10414382 2026-05-17 2026-05-17 18:30:00 Amazon — Software Development Engineer In progress 3146673 2026-04-21 2026-04-21 20:50:00 Amazon — Software Development Engineer, Playback Team Rejected 3083065 2025-12-02 2025-12-02 17:20:00 3 application(s) ``` Input: `swelist tracker list --status "In progress" --company amazon` ``` Application Status Job ID Applied Updated Amazon — Software Development Engineer, AWS In progress 10414382 2026-05-17 2026-05-17 18:30:00 Amazon — Software Development Engineer In progress 3146673 2026-04-21 2026-04-21 20:50:00 2 application(s) ``` ### tracker export output sample Input: `swelist tracker export --format json` ```json [ { "name": "Amazon — Software Development Engineer, AWS", "status": "In progress", "job_id": "10414382", "applied_on": "2026-05-17", "notes": null, "updated_at": "2026-05-17 18:30:00" }, { "name": "Amazon — Software Development Engineer, Playback Team", "status": "Rejected", "job_id": "3083065", "applied_on": "2025-12-02", "notes": null, "updated_at": "2025-12-02 17:20:00" } ] ``` Input: `swelist tracker export --format csv` ``` name,status,job_id,applied_on,notes,updated_at Amazon — Software Development Engineer,In progress,3146673,2026-04-21,,2026-04-21 20:50:00 Amazon — Software Development Engineer Playback Team,Rejected,3083065,2025-12-02,,2025-12-02 17:20:00 ``` ------------------------------------------------------------------------ ## Output Contract - Output is written to **STDOUT** - Format is **human- and agent-readable plain text** - No JSON or structured serialization ### Job Posting Fields Each job entry contains: - Company (string) - Title (string) - Location (string) — may be a single string or a list - Link (URL) ### Realistic output sample Input: `swelist --role internship --timeframe lastweek --location "Seattle, Remote"` ``` Welcome to swelist.com Last updated: Sun May 17 18:42:01 2026 Found 1284 tech internships from 2025Summer-Internships Found 892 new-grad tech jobs from New-Grad-Positions Sign-up below to receive updates when new internships/jobs are added Found 3 postings for location 'Seattle, Remote' in TimeFilter.lastweek Company: Amazon Title: Software Development Engineer Intern locations: ['Seattle, WA', 'Remote'] Link: https://www.amazon.jobs/en/jobs/2345678 Company: Microsoft Title: Software Engineering Intern locations: ['Redmond, WA', 'Remote'] Link: https://jobs.careers.microsoft.com/us/en/job/1234567 Company: Stripe Title: Software Engineer, Intern locations: ['Remote'] Link: https://stripe.com/jobs/listing/software-engineer-intern/9876543 ``` ### Empty-result output When no postings match the filters: ``` # No jobs in the selected timeframe: No postings found in TimeFilter.lastday # Jobs exist but none match the location: No postings found for location 'Austin' in TimeFilter.lastday ``` Agents should treat either message as a zero-result signal and not retry with the same flags. ------------------------------------------------------------------------ ## Execution Guarantees - No side effects - No persistent storage - Safe for repeated execution - Deterministic given identical upstream data - No authentication required ------------------------------------------------------------------------ ## Error Behavior - Network issues may raise runtime errors or result in empty output - Invalid flags produce CLI usage errors - Zero matching jobs produces valid empty result output ------------------------------------------------------------------------ ## Environment Requirements - Python 3.8+ - Internet access - Supported on macOS, Linux, Windows ------------------------------------------------------------------------ ## Agent-Oriented Use Cases - Daily polling for new internship postings - Weekly new‑grad job aggregation - Feeding results into ranking, scoring, or alerting agents - Execution via cron, CI pipelines, or autonomous agents - Parsing job postings into structured JSON for downstream processing - Integration with AI agents for automated job application workflows ------------------------------------------------------------------------ ## Known Limitations - No built‑in alerting - No local caching - No deduplication beyond source data - No JSON output format ------------------------------------------------------------------------ ## Safety & Compliance - Uses only public data - No user tracking - No credential usage - No scraping of private systems ------------------------------------------------------------------------ ## Versioning Behavior may evolve with upstream data sources. CLI flags are considered stable within a major version. ------------------------------------------------------------------------ # jobgpt This document defines the operational capabilities, invocation contract, and usage semantics of the `jobgpt` command for AI-powered job application assistance. ------------------------------------------------------------------------ ## Tool Identity - **Name:** jobgpt - **Type:** Command-Line Interface (CLI) - **Language:** Python - **Distribution:** Part of swelist package - **Execution Model:** Stateless, AI-powered writing assistant ------------------------------------------------------------------------ ## Purpose `jobgpt` is an AI writing assistant that helps job seekers prepare for interviews and job applications by generating compelling answers and career advice. It is optimized for: - Interview preparation - Application materials - Career guidance ------------------------------------------------------------------------ ## Subcommands ### ask Ask any career or job-search question. ``` bash jobgpt ask "Your question here" ``` **Parameters:** - **question** (positional, required): Any job-search or career question **Options:** - `--model`: OpenAI model to use (default: `gpt-4o`) - `--copy`: Copy output to clipboard (flag) **Example:** ``` bash jobgpt ask "What should I focus on in my first internship?" jobgpt ask "How do I negotiate salary?" --copy ``` **Sample output:** ``` ╭─ Career Advice ────────────────────────────────────────────────────╮ │ │ │ Focus on three things in your first internship: │ │ │ │ 1. **Shipping something real** — even a small feature that goes │ │ to production teaches you more than any tutorial. │ │ 2. **Building relationships** — your intern cohort and your │ │ manager are your longest-lasting professional network. │ │ 3. **Asking good questions** — juniors who ask precise, well- │ │ researched questions are remembered positively. │ │ │ ╰─────────────────────────────────────────────────────────────────────╯ ``` ------------------------------------------------------------------------ ### why-company Generate a compelling answer to "Why do you want to work at [Company]?" ``` bash jobgpt why-company "Company Name" --background "Your background" ``` **Parameters:** - **company** (positional, required): Company name **Options:** - `--background`: Your background summary (optional, recommended) - `--model`: OpenAI model to use (default: `gpt-4o`) - `--copy`: Copy output to clipboard (flag) **Example:** ``` bash jobgpt why-company "Google" --background "Software Engineering student with Python and web development experience" jobgpt why-company "Meta" --background "Full-stack developer with React and Node.js expertise" --copy ``` ------------------------------------------------------------------------ ### behavioral Generate a STAR-format answer to a behavioral interview question. ``` bash jobgpt behavioral "Question here" [--resume path/to/resume.txt] ``` **Parameters:** - **question** (positional, required): The behavioral interview question **Options:** - `--resume`: Path to resume text file (optional) - `--model`: OpenAI model to use (default: `gpt-4o`) - `--copy`: Copy output to clipboard (flag) **Example:** ``` bash jobgpt behavioral "Tell me about a time you dealt with conflict on a team" jobgpt behavioral "Describe your biggest failure and how you learned from it" --resume resume.txt --copy ``` **Sample output:** ``` ╭─ STAR Answer ───────────────────────────────────────────────────────╮ │ │ │ **Situation:** During my internship at Acme, our team disagreed │ │ on the API design for a new service — two engineers wanted REST, │ │ one pushed for GraphQL. │ │ │ │ **Task:** As the engineer writing the initial spec, I needed to │ │ drive us to a decision before our sprint planning the next day. │ │ │ │ **Action:** I drafted a one-page trade-off doc comparing latency, │ │ client complexity, and team familiarity for both options, then │ │ scheduled a 30-minute sync. I proposed REST with a versioning │ │ convention that addressed the GraphQL advocate's flexibility │ │ concerns. │ │ │ │ **Result:** We reached consensus in 20 minutes. The service │ │ shipped on time and has had zero breaking-change incidents in │ │ six months. │ │ │ ╰──────────────────────────────────────────────────────────────────────╯ ``` ------------------------------------------------------------------------ ## Output Contract - Output is written to **STDOUT** - Format is **human-readable markdown** with rich text formatting - Organized in clear panels with proper section headers - Optimized for reading and copying to clipboard ------------------------------------------------------------------------ ## Execution Guarantees - Requires OpenAI API key (set via `OPENAI_API_KEY` environment variable) - No persistent storage - Safe for repeated execution - Deterministic given identical input (within model capabilities) ------------------------------------------------------------------------ ## Error Behavior - Missing `OPENAI_API_KEY` environment variable produces clear error message - Invalid OpenAI model names produce API errors - Missing resume file produces OSError with clear message - Network issues may raise runtime errors ------------------------------------------------------------------------ ## Environment Requirements - Python 3.8+ - OpenAI API key (`OPENAI_API_KEY`) - Internet access for API calls - Supported on macOS, Linux, Windows ------------------------------------------------------------------------ ## Agent-Oriented Use Cases - Preprocessing candidate data for interview coaching bots - Generating interview preparation materials at scale - Feeding career advice into autonomous career planning agents - Integration with resume builders and application workflows ------------------------------------------------------------------------ ## Known Limitations - Requires OpenAI API key and internet connection - Responses vary based on model capability - No local caching of responses - No built-in follow-up question handling ------------------------------------------------------------------------ ## Safety & Compliance - Uses only public OpenAI API - No data persistence - No credential sharing or exposure - Respects OpenAI usage policies ------------------------------------------------------------------------ End of document.


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal:  | SkillSpector: suspicious (HIGH)