Skip to main content

v2.5.0

Released: July 12, 2026

Highlights

  • Skills: system prompt injection (toolpack-sdk) — skill instructions now append to the system prompt instead of the user message, where behavioral rules are followed more reliably by the model
  • Skills: multi-turn query (toolpack-sdk) — BM25 search now uses the last 3 user messages so short follow-ups like "performance?" still match the right skill
  • Skills: camelCase tokenizer fix (toolpack-sdk) — codeReview now correctly splits into code + review for BM25 indexing
  • Skills: YAML block-list tag parsing (toolpack-sdk) — tags written as YAML block lists now parse correctly
  • Skills: larger instructions limit (toolpack-sdk) — raised from 2,000 to 5,000 characters
  • SlackChannel: DM self-suppression fix (@toolpack-sdk/agents) — bot messages in DM threads are now correctly suppressed
  • VertexAIEmbedder: rate limiting (@toolpack-sdk/knowledge) — new rateLimitMs option prevents QPM quota exhaustion on large knowledge base syncs

Breaking changes

Skill instructions injection target changed. Instructions are now appended to the system prompt (or a new system message is created if none exists) instead of being prepended to the last user message. If you have tooling that inspects the injected user message content, update it to look at the system message instead. The injected format (<skill-instructions>...</skill-instructions>) is unchanged.


toolpack-sdk

Bug fix: camelCase tokenizer

tokenize() in the BM25 engine called toLowerCase() before the camelCase split regex, so the regex never matched — codeReview was indexed as the single unsearchable token codereview.

Before: codeReviewcodereview (no match on code or review)
After: codeReviewcode review (searchable by either word)


Bug fix: YAML block-list tag parsing

Tags written in YAML block-list format were silently returning an empty list:

# This now works correctly
tags:
- coding
- quality
- review

Skill instructions injected into system prompt

createSkillInterceptor now appends <skill-instructions> to the system prompt instead of prepending it to the last user message. A new { role: 'system' } message is created at position 0 if the request has none.

The model treats system prompt content as behavioral rules and user message content as requests — skills belong in the rules bucket.


BM25 query uses last 3 user messages

The interceptor previously queried BM25 with only the last user message. Short follow-ups that lack domain vocabulary now pick up context from the preceding turns:

User: "I'm building a React component that fetches user data"
Assistant: "What do you need help with?"
User: "performance" ← now matched with the context of the first message

Validator warns on low trigger count

Skills with fewer than 3 triggers now produce a non-fatal validation warning at startup, guiding authors to add more vocabulary coverage. The minimum of 1 trigger remains a hard error.


Instructions limit raised to 5,000 characters

SKILL_LIMITS.instructions increased from 2,000 to 5,000 characters for skills with genuinely complex behavioral guidance.


@toolpack-sdk/agents

SlackChannel: DM self-suppression fix

In DM threads, Slack omits event.user on bot_message subtypes and sets event.bot_id instead. The existing botUserId check could never fire, so agents would process their own DM responses as new incoming messages.

auth.test now captures bot_id alongside user_id. Events where event.bot_id matches the bot's own botId are dropped, covering both channel posts and DM threads. No configuration required.


@toolpack-sdk/knowledge

VertexAIEmbedder: rateLimitMs option

New option to enforce a minimum delay between consecutive embedBatch calls, preventing RESOURCE_EXHAUSTED errors when syncing large knowledge bases:

const embedder = new VertexAIEmbedder({
model: 'gemini-embedding-001',
rateLimitMs: 500, // 0.5 s between batches → ~120 QPM effective rate
});

Default is 0 (no delay — existing behaviour unchanged).


Install

npm install toolpack-sdk@2.5.0
npm install @toolpack-sdk/knowledge@2.5.0
npm install @toolpack-sdk/agents@2.5.0