[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F7ZMM5M0TFESFMKV06C2PB":3,"skill-same:01M6F7ZMM5M0TFESFMKV06C2PB":84},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":28,"publishedAt":55,"linkOnly":56,"markdownContent":57,"markdownBody":58,"frontMatter":59,"refName":43,"commitSha":64,"skillDirectory":65,"forksCount":66,"repositoryHtmlUrl":67,"repositoryHomepageUrl":6,"ownerHtmlUrl":68,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":69,"install":70,"resources":83},"01M6F7ZMM5M0TFESFMKV06C2PB","jest-skill",null,"Generates Jest unit and integration tests in JavaScript or TypeScript. Covers mocking, snapshots, async testing, and React component testing. Use when user mentions \"Jest\", \"describe\u002Fit\u002Fexpect\", \"jest.mock\", \"toMatchSnapshot\".","boisenoise\u002Fskills-collections","boisenoise","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F193180?v=4","01M6CDBDQK6BDN55ZMA6B6PKBM","01M6CDBDVSJ3JPTBYN26FZ7TZK",12,"MIT","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-jest-skill\u002FSKILL.md",[17,22,25],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":26,"categoryName":27,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],"jest skill","jest","wed","2026","when","describe","tree","lambdatest","mocking","unit","mock","critical","tests","testing","main","community","async","snapshots","agent-skills","use","license","integration tests","component","react","javascript","typescript","2026-11-10 10:12:30",false,"---\nname: jest-skill\ndescription: \"Generates Jest unit and integration tests in JavaScript or TypeScript. Covers mocking, snapshots, async testing, and React component testing. Use when user mentions \\\"Jest\\\", \\\"describe\u002Fit\u002Fexpect\\\", \\\"jest.mock\\\", \\\"toMatchSnapshot\\\".\"\nrisk: critical\nsource: https:\u002F\u002Fgithub.com\u002FLambdaTest\u002Fagent-skills\u002Ftree\u002Fmain\u002Fjest-skill\nsource_repo: LambdaTest\u002Fagent-skills\nsource_type: community\ndate_added: 2026-07-01\nlicense: MIT\nlicense_source: https:\u002F\u002Fgithub.com\u002FLambdaTest\u002Fagent-skills\u002Fblob\u002Fmain\u002FLICENSE\n---\n\n# Jest Testing Skill\n## When to Use\n\nUse this skill when you need generates Jest unit and integration tests in JavaScript or TypeScript. Covers mocking, snapshots, async testing, and React component testing. Use when user mentions \"Jest\", \"describe\u002Fit\u002Fexpect\", \"jest.mock\", \"toMatchSnapshot\". Triggers on: \"Jest\", \"expect().toBe()\", \"jest.mock\",...\n\n\nExamples are separate fragments needing actual implementation imports and the project Jest environment\u002Ftransforms. The reference\u002Fplaybook.md file is not bundled. CommonJS jest.mock examples do not directly apply to native ESM; inspect the installed version. Restore spies\u002Ftimers in afterEach\u002Ffinally even on assertion failure; remove test.only before committing. Update snapshots only after reviewing the intended semantic change, never to silence failures.\n\n## Core Patterns\n\n### Basic Test\n\n```javascript\ndescribe('Calculator', () => {\n  let calc;\n  beforeEach(() => { calc = new Calculator(); });\n\n  test('adds two numbers', () => {\n    expect(calc.add(2, 3)).toBe(5);\n  });\n\n  test('throws on division by zero', () => {\n    expect(() => calc.divide(10, 0)).toThrow('Division by zero');\n  });\n});\n```\n\n### Matchers\n\n```javascript\nexpect(value).toBe(exact);                 \u002F\u002F === strict\nexpect(value).toEqual(object);             \u002F\u002F deep equality\nexpect(value).toBeTruthy();\nexpect(value).toBeNull();\nexpect(value).toBeGreaterThan(3);\nexpect(value).toBeCloseTo(0.3, 5);\nexpect(str).toMatch(\u002Fregex\u002F);\nexpect(arr).toContain(item);\nexpect(arr).toHaveLength(3);\nexpect(obj).toHaveProperty('name');\nexpect(obj).toMatchObject({ name: 'Alice' });\nexpect(() => fn()).toThrow(CustomError);\n```\n\n### Mocking\n\n```javascript\n\u002F\u002F Mock function\nconst mockFn = jest.fn();\nmockFn.mockReturnValue(42);\nmockFn.mockResolvedValue({ data: 'test' });\nmockFn('arg1');\nexpect(mockFn).toHaveBeenCalledWith('arg1');\nexpect(mockFn).toHaveBeenCalledTimes(1);\n\n\u002F\u002F Mock module\njest.mock('.\u002Fdatabase');\nconst db = require('.\u002Fdatabase');\ndb.getUser.mockResolvedValue({ name: 'Alice' });\n\n\u002F\u002F Mock with implementation\njest.mock('.\u002Fapi', () => ({\n  fetchUsers: jest.fn().mockResolvedValue([{ name: 'Alice' }]),\n}));\n\n\u002F\u002F Spy\nconst spy = jest.spyOn(console, 'log').mockImplementation();\nconsole.log('expected');\nexpect(spy).toHaveBeenCalledWith('expected');\nspy.mockRestore();\n\n\u002F\u002F Fake timers\njest.useFakeTimers();\njest.advanceTimersByTime(1000);\njest.useRealTimers();\n```\n\n### Async Testing\n\n```javascript\ntest('fetches users', async () => {\n  const users = await fetchUsers();\n  expect(users).toHaveLength(3);\n});\n\ntest('resolves with data', () => {\n  return expect(fetchData()).resolves.toEqual({ data: 'value' });\n});\n\ntest('rejects with error', () => {\n  return expect(fetchBadData()).rejects.toThrow('not found');\n});\n```\n\n### React Component Testing (Testing Library)\n\n```javascript\nimport { render, screen, fireEvent, waitFor } from '@testing-library\u002Freact';\nimport '@testing-library\u002Fjest-dom';\nimport LoginForm from '.\u002FLoginForm';\n\ntest('submits login form', async () => {\n  const onSubmit = jest.fn();\n  render(\u003CLoginForm onSubmit={onSubmit} \u002F>);\n\n  fireEvent.change(screen.getByLabelText('Email'), {\n    target: { value: 'user@test.com' },\n  });\n  fireEvent.change(screen.getByLabelText('Password'), {\n    target: { value: 'password123' },\n  });\n  fireEvent.click(screen.getByRole('button', { name: \u002Flogin\u002Fi }));\n\n  await waitFor(() => {\n    expect(onSubmit).toHaveBeenCalledWith({\n      email: 'user@test.com', password: 'password123',\n    });\n  });\n});\n```\n\n### Snapshot Testing\n\n```javascript\ntest('renders correctly', () => {\n  const tree = renderer.create(\u003CButton label=\"Click\" \u002F>).toJSON();\n  expect(tree).toMatchSnapshot();\n});\n\u002F\u002F Update: jest --updateSnapshot\n```\n\n### Anti-Patterns\n\n| Bad | Good | Why |\n|-----|------|-----|\n| `expect(x === y).toBe(true)` | `expect(x).toBe(y)` | Better errors |\n| No `await` on async | Always `await` | Swallows failures |\n| Snapshot everything | Snapshot UI, assert logic | Snapshot fatigue |\n\n## Quick Reference\n\n| Task | Command |\n|------|---------|\n| Run all | `npx jest` |\n| Watch | `npx jest --watch` |\n| Coverage | `npx jest --coverage` |\n| Update snapshots | `npx jest --updateSnapshot` |\n| Run file | `npx jest tests\u002Fcalc.test.js` |\n| Single test | `test.only('name', () => {})` |\n\n## Deep Patterns\n\nFor production-grade patterns, see `reference\u002Fplaybook.md`:\n\n| Section | What's Inside |\n|---------|--------------|\n| §1 Production Config | Node + React configs, path aliases, coverage thresholds |\n| §2 Mocking Deep Dive | Module\u002Fpartial\u002Fmanual mocks, spies, timers, env vars |\n| §3 Async Patterns | Promises, rejections, event emitters, streams |\n| §4 test.each | Array, tagged template, describe.each for table-driven tests |\n| §5 Custom Matchers | toBeWithinRange, toBeValidEmail, TypeScript declarations |\n| §6 React Testing Library | userEvent, hooks, context providers |\n| §7 Snapshot Testing | Component, inline, property matchers |\n| §8 API Service Testing | Mocked axios, CRUD patterns, error handling |\n| §9 Global Setup | Multi-project config, DB setup\u002Fteardown |\n| §10 CI\u002FCD | GitHub Actions with coverage gates |\n| §11 Debugging Table | 10 common problems with fixes |\n| §12 Best Practices | 15-item production checklist |\n\n## Limitations\n\n- Use this skill only when the task clearly matches its upstream source and local project context.\n- Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.\n- Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.\n","# Jest Testing Skill\n## When to Use\n\nUse this skill when you need generates Jest unit and integration tests in JavaScript or TypeScript. Covers mocking, snapshots, async testing, and React component testing. Use when user mentions \"Jest\", \"describe\u002Fit\u002Fexpect\", \"jest.mock\", \"toMatchSnapshot\". Triggers on: \"Jest\", \"expect().toBe()\", \"jest.mock\",...\n\n\nExamples are separate fragments needing actual implementation imports and the project Jest environment\u002Ftransforms. The reference\u002Fplaybook.md file is not bundled. CommonJS jest.mock examples do not directly apply to native ESM; inspect the installed version. Restore spies\u002Ftimers in afterEach\u002Ffinally even on assertion failure; remove test.only before committing. Update snapshots only after reviewing the intended semantic change, never to silence failures.\n\n## Core Patterns\n\n### Basic Test\n\n```javascript\ndescribe('Calculator', () => {\n  let calc;\n  beforeEach(() => { calc = new Calculator(); });\n\n  test('adds two numbers', () => {\n    expect(calc.add(2, 3)).toBe(5);\n  });\n\n  test('throws on division by zero', () => {\n    expect(() => calc.divide(10, 0)).toThrow('Division by zero');\n  });\n});\n```\n\n### Matchers\n\n```javascript\nexpect(value).toBe(exact);                 \u002F\u002F === strict\nexpect(value).toEqual(object);             \u002F\u002F deep equality\nexpect(value).toBeTruthy();\nexpect(value).toBeNull();\nexpect(value).toBeGreaterThan(3);\nexpect(value).toBeCloseTo(0.3, 5);\nexpect(str).toMatch(\u002Fregex\u002F);\nexpect(arr).toContain(item);\nexpect(arr).toHaveLength(3);\nexpect(obj).toHaveProperty('name');\nexpect(obj).toMatchObject({ name: 'Alice' });\nexpect(() => fn()).toThrow(CustomError);\n```\n\n### Mocking\n\n```javascript\n\u002F\u002F Mock function\nconst mockFn = jest.fn();\nmockFn.mockReturnValue(42);\nmockFn.mockResolvedValue({ data: 'test' });\nmockFn('arg1');\nexpect(mockFn).toHaveBeenCalledWith('arg1');\nexpect(mockFn).toHaveBeenCalledTimes(1);\n\n\u002F\u002F Mock module\njest.mock('.\u002Fdatabase');\nconst db = require('.\u002Fdatabase');\ndb.getUser.mockResolvedValue({ name: 'Alice' });\n\n\u002F\u002F Mock with implementation\njest.mock('.\u002Fapi', () => ({\n  fetchUsers: jest.fn().mockResolvedValue([{ name: 'Alice' }]),\n}));\n\n\u002F\u002F Spy\nconst spy = jest.spyOn(console, 'log').mockImplementation();\nconsole.log('expected');\nexpect(spy).toHaveBeenCalledWith('expected');\nspy.mockRestore();\n\n\u002F\u002F Fake timers\njest.useFakeTimers();\njest.advanceTimersByTime(1000);\njest.useRealTimers();\n```\n\n### Async Testing\n\n```javascript\ntest('fetches users', async () => {\n  const users = await fetchUsers();\n  expect(users).toHaveLength(3);\n});\n\ntest('resolves with data', () => {\n  return expect(fetchData()).resolves.toEqual({ data: 'value' });\n});\n\ntest('rejects with error', () => {\n  return expect(fetchBadData()).rejects.toThrow('not found');\n});\n```\n\n### React Component Testing (Testing Library)\n\n```javascript\nimport { render, screen, fireEvent, waitFor } from '@testing-library\u002Freact';\nimport '@testing-library\u002Fjest-dom';\nimport LoginForm from '.\u002FLoginForm';\n\ntest('submits login form', async () => {\n  const onSubmit = jest.fn();\n  render(\u003CLoginForm onSubmit={onSubmit} \u002F>);\n\n  fireEvent.change(screen.getByLabelText('Email'), {\n    target: { value: 'user@test.com' },\n  });\n  fireEvent.change(screen.getByLabelText('Password'), {\n    target: { value: 'password123' },\n  });\n  fireEvent.click(screen.getByRole('button', { name: \u002Flogin\u002Fi }));\n\n  await waitFor(() => {\n    expect(onSubmit).toHaveBeenCalledWith({\n      email: 'user@test.com', password: 'password123',\n    });\n  });\n});\n```\n\n### Snapshot Testing\n\n```javascript\ntest('renders correctly', () => {\n  const tree = renderer.create(\u003CButton label=\"Click\" \u002F>).toJSON();\n  expect(tree).toMatchSnapshot();\n});\n\u002F\u002F Update: jest --updateSnapshot\n```\n\n### Anti-Patterns\n\n| Bad | Good | Why |\n|-----|------|-----|\n| `expect(x === y).toBe(true)` | `expect(x).toBe(y)` | Better errors |\n| No `await` on async | Always `await` | Swallows failures |\n| Snapshot everything | Snapshot UI, assert logic | Snapshot fatigue |\n\n## Quick Reference\n\n| Task | Command |\n|------|---------|\n| Run all | `npx jest` |\n| Watch | `npx jest --watch` |\n| Coverage | `npx jest --coverage` |\n| Update snapshots | `npx jest --updateSnapshot` |\n| Run file | `npx jest tests\u002Fcalc.test.js` |\n| Single test | `test.only('name', () => {})` |\n\n## Deep Patterns\n\nFor production-grade patterns, see `reference\u002Fplaybook.md`:\n\n| Section | What's Inside |\n|---------|--------------|\n| §1 Production Config | Node + React configs, path aliases, coverage thresholds |\n| §2 Mocking Deep Dive | Module\u002Fpartial\u002Fmanual mocks, spies, timers, env vars |\n| §3 Async Patterns | Promises, rejections, event emitters, streams |\n| §4 test.each | Array, tagged template, describe.each for table-driven tests |\n| §5 Custom Matchers | toBeWithinRange, toBeValidEmail, TypeScript declarations |\n| §6 React Testing Library | userEvent, hooks, context providers |\n| §7 Snapshot Testing | Component, inline, property matchers |\n| §8 API Service Testing | Mocked axios, CRUD patterns, error handling |\n| §9 Global Setup | Multi-project config, DB setup\u002Fteardown |\n| §10 CI\u002FCD | GitHub Actions with coverage gates |\n| §11 Debugging Table | 10 common problems with fixes |\n| §12 Best Practices | 15-item production checklist |\n\n## Limitations\n\n- Use this skill only when the task clearly matches its upstream source and local project context.\n- Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.\n- Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.\n",{"name":5,"risk":40,"source":60,"license":14,"date_added":61,"description":7,"source_repo":62,"source_type":44,"license_source":63},"https:\u002F\u002Fgithub.com\u002FLambdaTest\u002Fagent-skills\u002Ftree\u002Fmain\u002Fjest-skill",1782864000000,"LambdaTest\u002Fagent-skills","https:\u002F\u002Fgithub.com\u002FLambdaTest\u002Fagent-skills\u002Fblob\u002Fmain\u002FLICENSE","7bf2279c8a65758319526a721d5c4b75683aec9c","skills\u002Fantigravity-jest-skill",3,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections","https:\u002F\u002Fgithub.com\u002Fboisenoise","2026-11-11 14:20:43",{"source":8,"skillName":5,"commands":71,"prompt":81,"zipAvailable":82},[72,75,78],{"tool":73,"command":74},"npx","npx skills add boisenoise\u002Fskills-collections --skill jest-skill",{"tool":76,"command":77},"bunx","bunx skills add boisenoise\u002Fskills-collections --skill jest-skill",{"tool":79,"command":80},"pnpm","pnpm dlx skills add boisenoise\u002Fskills-collections --skill jest-skill","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-jest-skill\u002FSKILL.md",true,[],[85,112,134,160,179,202],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":90,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":55},"01M6WNH92BHVFXHGPDZCPJ0AG0","web-access","Use Treg for public web or platform data only when existing search, browser and connected tools cannot cover the task, with explicit cost and data boundaries.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FSKILL.md",[],[94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,40,109,110,111,33,32],"web","access","web access","official","development","browser","search","data","Tools","read","fetch","only","youtube","free tools","platform","free","cover","normal",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":116,"sourceHtmlUrl":117,"categories":118,"keywords":120,"publishedAt":55},"01M6WNF9XAYAB2CZDDJBAKNM93","treg","Use the Treg CLI or MCP catalog to discover, price and call authorized external tools with team-scoped credentials and a user-approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FSKILL.md",[119],{"categoryNo":26,"categoryName":27,"taxonomyType":20,"taxonomyTypeDesc":21},[114,121,122,123,97,98,49,102,124,125,126,127,48,128,129,40,130,131,132,133,32],"MCP","cli","github","Budget","credentials","team","catalog","call","discover","external tools","with","scoped","blob",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":138,"sourceHtmlUrl":139,"categories":140,"keywords":146,"publishedAt":55},"01M6WN93MEAZ4E41DYAHJRPHQT","recruit","Turn a job description into an evidence-linked candidate shortlist through Treg, with job-related ranking and optional authorized business contact enrichment.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FSKILL.md",[141],{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},"01JBSEEDCAT000000000000038","人力资源","PROFESSION","适用职业",[136,123,97,49,147,148,149,150,151,152,40,153,154,155,131,156,157,158,159,133,114,32],"https","email","enrichment","business","evidence","phone","ranking","post","job description","for","person","candidate","reason",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":164,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":55},"01M6WN8R5RXSMHM9B4D9FAFX42","rea-growth","Analyze a company’s public growth and content through Treg, distinguish observations from hypotheses, and produce an evidence-linked playbook within an approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FSKILL.md",[],[168,169,170,123,97,49,171,172,147,173,124,174,175,176,151,40,177,178,133,114,32],"growth","rea","rea growth","produce","content","playbook","marketing","analyze","public","observations","company",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":183,"sourceHtmlUrl":184,"categories":185,"keywords":186,"publishedAt":55},"01M6WN2EVE3RQRGWAKBT4S7YT2","make-ugc","Create original AI UGC-style product videos through Treg: research hooks, approve a licensed presenter and voice, generate clips, add captions and report costs.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FSKILL.md",[],[187,188,123,189,97,190,49,191,192,193,194,195,40,196,197,198,199,200,201,133],"make","make ugc","research","create","Video","Captions","ads","short","hooks","head","style","niche","trending","talking-head","approve",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":89,"licenseFileUrl":206,"sourceHtmlUrl":207,"categories":208,"keywords":209,"publishedAt":55},"01M6WN10ARAA63Y8K1YNGXJ2RM","lead-signals","Find and qualify public buying signals through Treg, rank fitting business accounts and optionally enrich authorized business contact information.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FSKILL.md",[],[210,211,212,123,97,49,213,214,150,215,216,40,217,218,219,220,221,222,223,133],"signals","lead","lead signals","how","find","ready","as","how to","qualify","people","information","enrich","changes","funding"]