Skills
Warlock.js packages ship a package orientation and focused task topics: register a route, write a migration, choose a cache driver, or define an AI tool. The package index explains what belongs in that package, where to start, and when to use another package. Agents load detailed topics as needed.
How they sync
Section titled “How they sync”Install agent-kit in your application, then sync the installed packages:
npm install --save-dev @mongez/agent-kitnpx agent-kit syncWith agent-kit 1.3’s default auto layout, a package with two or more topics
and skills/index.md exports as one skill per package. For example:
.claude/skills/warlock-js-core/ SKILL.md # package index + generated Topics table test-browser.md # focused topic report-framework-issue.md # focused topicOther targets, including Cursor and Codex, receive the same package guidance.
Each grouped topic originates in skills/<topic>/SKILL.md; its assets are exported
alongside it. A single-topic package uses skills/SKILL.md, with assets beside
that file, and exports directly as warlock-js-<package>. The unscoped
create-warlock package exports as create-warlock. Applications can configure
agentKit.layout as grouped or flat to override automatic grouping.
Read core’s test-browser topic for browser flows, upgrade-from-5-29 for
application migrations, and report-framework-issue when a confirmed framework
bug or missing capability needs a sanitized report and user approval before
filing. Cache’s use-cache-utils topic covers TTL constants, key parsing and
vector helpers. Custom AI tool definitions belong to the define-ai-tool
topic of @warlock.js/ai; @warlock.js/ai-tools supplies ready-made tools and MCP.
Authoring package guidance
Section titled “Authoring package guidance”Every package ships exactly one exported skill under the default auto layout.
For one topic, put its guidance at skills/SKILL.md; do not add an index or
topic folders. Its frontmatter name is the package slug used by agent-kit.
For two or more topics, use skills/index.md as the package front door,
with a body that names every local topic. Put detailed
guidance in skills/<topic>/SKILL.md, with name and a description explaining
when to read it. Agent-kit generates the Topics table from those descriptions;
do not maintain a second table or a duplicate overview topic.
The package front door’s description must be nonempty and at most 450 characters; aim for 350–420. Describe the package, key exported APIs, common user requests and “Not this package →” pointers. Topic descriptions are loaded through the grouped skill and have their own task scope. Keep the total across packages under 14,000 characters.
Loose Markdown files other than index.md in grouped packages are not exported. In particular,
putting a guide directly at skills/report-framework-issue.md would hide it
from applications. Use a topic folder even though the grouped export becomes a
sibling .md file.
Name cross-package topics with their owner: “the define-ai-tool topic of the
@warlock.js/ai package”. The release tooling’s check:skill-path-refs gate
checks one exported skill per package, description limits, index coverage,
missing local references, loose Markdown and path-style
topic links in CI and before release. Generated package llms.txt and
llms-full.txt project the index and topics from the same sources.
Package skill catalog
Section titled “Package skill catalog”This catalog comes from package frontmatter, including root skills and grouped
indexes. Refresh it with node docs/scripts/generate-skills.mjs from the
repository root. There are 33 package skills using
13,325 description characters.
| Package | Exported skill | Description characters |
|---|---|---|
| @warlock.js/access | warlock-js-access | 363 |
| @warlock.js/ai | warlock-js-ai | 419 |
| @warlock.js/ai-anthropic | warlock-js-ai-anthropic | 395 |
| @warlock.js/ai-bedrock | warlock-js-ai-bedrock | 387 |
| @warlock.js/ai-cli | warlock-js-ai-cli | 406 |
| @warlock.js/ai-deepseek | warlock-js-ai-deepseek | 383 |
| @warlock.js/ai-google | warlock-js-ai-google | 394 |
| @warlock.js/ai-groq | warlock-js-ai-groq | 382 |
| @warlock.js/ai-live | warlock-js-ai-live | 409 |
| @warlock.js/ai-mistral | warlock-js-ai-mistral | 398 |
| @warlock.js/ai-ollama | warlock-js-ai-ollama | 395 |
| @warlock.js/ai-openai | warlock-js-ai-openai | 414 |
| @warlock.js/ai-panoptic | warlock-js-ai-panoptic | 412 |
| @warlock.js/ai-tools | warlock-js-ai-tools | 404 |
| @warlock.js/ai-workspace | warlock-js-ai-workspace | 398 |
| @warlock.js/ai-xai | warlock-js-ai-xai | 389 |
| @warlock.js/auth | warlock-js-auth | 418 |
| @warlock.js/cache | warlock-js-cache | 405 |
| @warlock.js/cascade | warlock-js-cascade | 414 |
| @warlock.js/context | warlock-js-context | 409 |
| @warlock.js/core | warlock-js-core | 405 |
| create-warlock | create-warlock | 414 |
| @warlock.js/devtools | warlock-js-devtools | 420 |
| @warlock.js/fs | warlock-js-fs | 410 |
| @warlock.js/herald | warlock-js-herald | 417 |
| @warlock.js/logger | warlock-js-logger | 414 |
| @warlock.js/notifications | warlock-js-notifications | 417 |
| @warlock.js/process | warlock-js-process | 405 |
| @warlock.js/queue | warlock-js-queue | 419 |
| @warlock.js/scheduler | warlock-js-scheduler | 402 |
| @warlock.js/seal | warlock-js-seal | 393 |
| @warlock.js/sitemap | warlock-js-sitemap | 411 |
| @warlock.js/web | warlock-js-web | 404 |