[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M718YGC80612ZSH75TRG8TPX":3,"skill-same:01M718YGC80612ZSH75TRG8TPX":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":39,"repositoryHtmlUrl":40,"repositoryHomepageUrl":6,"ownerHtmlUrl":41,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":42,"install":43,"resources":56},"01M718YGC80612ZSH75TRG8TPX","career-ops-plugin-gmail",null,"How to pull job leads from a Gmail label into the career-ops pipeline.","Pratik00100\u002Fassignment","Pratik00100","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103191034?v=4","01M718XXB12J4Z3MS61M8X8PRB","00100","01M718XXC2TQP23ZNXZ0A6XS1H",1,"MIT","https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002Fplugins\u002Fgmail\u002Fskill.md",[],[19,20,21,22,23,24,25,26,27,28,29,30],"plugin","gmail","career ops plugin gmail","ops","career ops","career","pull","leads","gmail label","how","pipeline","how to","2026-11-10 10:12:30",false,"---\nname: career-ops-plugin-gmail\ndescription: How to pull job leads from a Gmail label into the career-ops pipeline.\nlicense: MIT\n---\n\n# gmail plugin\n\nReads a Gmail label, extracts clean job URLs from authentic (DMARC-passing)\nemails, and returns them as leads. The engine writes them to the pipeline.\n\n## Command\n\n- `node plugins.mjs run gmail` — ingest new leads from the configured label.\n\n## Setup\n\nPut `GMAIL_CLIENT_ID` + `GMAIL_CLIENT_SECRET` + `GMAIL_REFRESH_TOKEN` in `.env`\n(an OAuth Desktop client + a refresh token from the consent flow). Configure the\nlabel + lookback in `config\u002Fplugins.yml`:\n\n```yaml\nplugins:\n  gmail: { enabled: true, label: \"Job Leads\", days_back: 7 }\n```\n\n## Data it produces\n\n`Job[]` ({ title, url, company, location }) — the engine de-dups against the\npipeline and appends new ones. It maintains its own processed-message cursor in\n`data\u002Fgmail-state.json` to avoid re-reading the same emails.\n","# gmail plugin\n\nReads a Gmail label, extracts clean job URLs from authentic (DMARC-passing)\nemails, and returns them as leads. The engine writes them to the pipeline.\n\n## Command\n\n- `node plugins.mjs run gmail` — ingest new leads from the configured label.\n\n## Setup\n\nPut `GMAIL_CLIENT_ID` + `GMAIL_CLIENT_SECRET` + `GMAIL_REFRESH_TOKEN` in `.env`\n(an OAuth Desktop client + a refresh token from the consent flow). Configure the\nlabel + lookback in `config\u002Fplugins.yml`:\n\n```yaml\nplugins:\n  gmail: { enabled: true, label: \"Job Leads\", days_back: 7 }\n```\n\n## Data it produces\n\n`Job[]` ({ title, url, company, location }) — the engine de-dups against the\npipeline and appends new ones. It maintains its own processed-message cursor in\n`data\u002Fgmail-state.json` to avoid re-reading the same emails.\n",{"name":5,"license":15,"description":7},"claude\u002Fcopy-carrier-oops-repo-w3dlbx","eec7172a915eb2a775b597be0135d356c356ee49","plugins\u002Fgmail",0,"https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment","https:\u002F\u002Fgithub.com\u002FPratik00100","2026-11-10 22:54:29",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add Pratik00100\u002Fassignment --skill career-ops-plugin-gmail",{"tool":49,"command":50},"bunx","bunx skills add Pratik00100\u002Fassignment --skill career-ops-plugin-gmail",{"tool":52,"command":53},"pnpm","pnpm dlx skills add Pratik00100\u002Fassignment --skill career-ops-plugin-gmail","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002Fplugins\u002Fgmail\u002Fskill.md",true,[57,63,67],{"path":58,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":61,"sourceHtmlUrl":62},"_helpers.mjs","SCRIPT","脚本",3673,"https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002Fplugins\u002Fgmail\u002F_helpers.mjs",{"path":64,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":65,"sourceHtmlUrl":66},"index.mjs",5772,"https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002Fplugins\u002Fgmail\u002Findex.mjs",{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"manifest.json","REFERENCE","参考文档",473,"https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002Fplugins\u002Fgmail\u002Fmanifest.json",[74,90,102,115,121,126],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":31},"01M718YJATJNJ4WC1ZR2VJBBXB","career-ops-plugin-notion","How to mirror the career-ops tracker to a Notion database and read records back as job leads.","https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002Fplugins\u002Fnotion\u002Fskill.md",[],[24,23,22,81,82,19,28,83,26,84,85,86,87,88,30,89],"career ops plugin notion","notion","back","as","mirror","tracker","read","records","database",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":31},"01M718YF4YB93Y4RMG3PR5NBZA","career-ops-plugin-apify","How to scan a job source through an Apify actor as a keyed provider.","https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002Fplugins\u002Fapify\u002Fskill.md",[],[24,23,22,97,19,98,99,30,100,101,28,84],"career ops plugin apify","apify","source","provider","scan",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":106,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":31},"01M718YDDXHT2X4J3YJTEWG4KQ","career-ops-plugin-{{NAME}}","How to use the {{NAME}} plugin and the data it produces.","https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002Fplugins\u002F_template\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002Fplugins\u002F_template\u002Fskill.md",[],[24,22,110,111,19,23,112,113,114,30,28],"career ops plugin {{NAME}}","name","it","use","data",{"skillNo":116,"name":117,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":31},"01M718YBHW5TYCCXY7XJV0X0R9","career-ops","https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002F.qwen\u002Fskills\u002Fcareer-ops\u002FSKILL.md",[],[24,23,22],{"skillNo":122,"name":117,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":31},"01M718Y9YQAVE0VFKT6Y4ZNY7Z","https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002F.opencode\u002Fskills\u002Fcareer-ops\u002FSKILL.md",[],[22,23,24],{"skillNo":127,"name":117,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":31},"01M718Y950023J0HTF6D9ETNM6","https:\u002F\u002Fgithub.com\u002FPratik00100\u002Fassignment\u002Fblob\u002Fclaude\u002Fcopy-carrier-oops-repo-w3dlbx\u002F.kimi\u002Fskills\u002Fcareer-ops\u002FSKILL.md",[],[23,22,24]]