[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M79FHBV0R4MPF2W39VNP7ZY8":3,"skill-same:01M79FHBV0R4MPF2W39VNP7ZY8":62},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":29,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M79FHBV0R4MPF2W39VNP7ZY8","career-ops-plugin-gmail",null,"How to pull job leads from a Gmail label into the career-ops pipeline.","vkr-vavilla\u002Fcareer-ops","vkr-vavilla","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F109483434?v=4","01M79FGQJ67179TH2SCMYP4SMW","Vamshi Vavilla","01M79FGQJSD81VZAN4VH64R5SE",0,"MIT","https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002Fplugins\u002Fgmail\u002Fskill.md",[],[],"2026-11-15 14:19:17",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},"main","1be773012dbe7e1cb58077152e60aeae9f0318bc","plugins\u002Fgmail","https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops","https:\u002F\u002Fgithub.com\u002Fvkr-vavilla","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fvamshi-vavilla\u002F","Computer Engineering @UTA • Physics minor • Cybersecurity & Quantum Research • Embedded Systems • CERN & Fermilab RA • Always building & learning","2026-11-09 16:27:02",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add vkr-vavilla\u002Fcareer-ops --skill career-ops-plugin-gmail",{"tool":38,"command":39},"bunx","bunx skills add vkr-vavilla\u002Fcareer-ops --skill career-ops-plugin-gmail",{"tool":41,"command":42},"pnpm","pnpm dlx skills add vkr-vavilla\u002Fcareer-ops --skill career-ops-plugin-gmail","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002Fplugins\u002Fgmail\u002Fskill.md",true,[46,52,56],{"path":47,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":50,"sourceHtmlUrl":51},"_helpers.mjs","SCRIPT","脚本",3673,"https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002Fplugins\u002Fgmail\u002F_helpers.mjs",{"path":53,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":54,"sourceHtmlUrl":55},"index.mjs",5772,"https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002Fplugins\u002Fgmail\u002Findex.mjs",{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"manifest.json","REFERENCE","参考文档",473,"https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002Fplugins\u002Fgmail\u002Fmanifest.json",[63,70,77,85,91,96],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":19},"01M79FHE9NY7SDYHC4X53HEH2D","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\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002Fplugins\u002Fnotion\u002Fskill.md",[],[],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M79FHAH96N3DJBYZJAJ059YG","career-ops-plugin-apify","How to scan a job source through an Apify actor as a keyed provider.","https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002Fplugins\u002Fapify\u002Fskill.md",[],[],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":81,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":19},"01M79FH9997SAHFC9MQMJF2WAS","career-ops-plugin-{{NAME}}","How to use the {{NAME}} plugin and the data it produces.","https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002Fplugins\u002F_template\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002Fplugins\u002F_template\u002Fskill.md",[],[],{"skillNo":86,"name":87,"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":88,"categories":89,"keywords":90,"publishedAt":19},"01M79FH84GPN20P48XXZR6XJV6","career-ops","https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002F.qwen\u002Fskills\u002Fcareer-ops\u002FSKILL.md",[],[],{"skillNo":92,"name":87,"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":93,"categories":94,"keywords":95,"publishedAt":19},"01M79FH5XCTG560PEQG0PT9CDQ","https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fcareer-ops\u002FSKILL.md",[],[],{"skillNo":97,"name":87,"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":98,"categories":99,"keywords":100,"publishedAt":19},"01M79FH54NWK8Q7CX6GC3C7VJS","https:\u002F\u002Fgithub.com\u002Fvkr-vavilla\u002Fcareer-ops\u002Fblob\u002Fmain\u002F.kimi\u002Fskills\u002Fcareer-ops\u002FSKILL.md",[],[]]