> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # hasAllPackages > Check whether all required packages are importable. [ref-validatepackages]: /docs/server-sdks/reference/typescript/agents/skill-base/validate-packages Convenience wrapper around [`validatePackages()`][ref-validatepackages] that returns a boolean. Mirrors the Python SDK's `validate_packages() -> bool` return shape. Because it performs dynamic `import()` calls, the method is async. ## **Returns** `Promise` -- `true` if every package in `REQUIRED_PACKAGES` imports successfully, `false` otherwise. ## **Example** ```typescript {9} import { SkillBase } from '@signalwire/sdk'; export class ScraperSkill extends SkillBase { static SKILL_NAME = 'scraper'; static SKILL_DESCRIPTION = 'Scrapes web pages.'; static REQUIRED_PACKAGES = ['cheerio']; async setup(): Promise { if (!(await this.hasAllPackages())) { this.logger.error('Missing required packages'); return false; } return true; } } ``` > Check whether all required packages are importable.