97d565e3cd
* feat: add mem-search skill with progressive disclosure architecture Add comprehensive mem-search skill for accessing claude-mem's persistent cross-session memory database. Implements progressive disclosure workflow and token-efficient search patterns. Features: - 12 search operations (observations, sessions, prompts, by-type, by-concept, by-file, timelines, etc.) - Progressive disclosure principles to minimize token usage - Anti-patterns documentation to guide LLM behavior - HTTP API integration for all search functionality - Common workflows with composition examples Structure: - SKILL.md: Entry point with temporal trigger patterns - principles/: Progressive disclosure + anti-patterns - operations/: 12 search operation files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: add CHANGELOG entry for mem-search skill Document mem-search skill addition in Unreleased section with: - 100% effectiveness compliance metrics - Comparison to previous search skill implementation - Progressive disclosure architecture details - Reference to audit report documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: add mem-search skill audit report Add comprehensive audit report validating mem-search skill against Anthropic's official skill-creator documentation. Report includes: - Effectiveness metrics comparison (search vs mem-search) - Critical issues analysis for production readiness - Compliance validation across 6 key dimensions - Reference implementation guidance Result: mem-search achieves 100% compliance vs search's 67% 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: Add comprehensive search architecture analysis document - Document current state of dual search architectures (HTTP API and MCP) - Analyze HTTP endpoints and MCP search server architectures - Identify DRY violations across search implementations - Evaluate the use of curl as the optimal approach for search - Provide architectural recommendations for immediate and long-term improvements - Outline action plan for cleanup, feature parity, DRY refactoring * refactor: Remove deprecated search skill documentation and operations * refactor: Reorganize documentation into public and context directories Changes: - Created docs/public/ for Mintlify documentation (.mdx files) - Created docs/context/ for internal planning and implementation docs - Moved all .mdx files and assets to docs/public/ - Moved all internal .md files to docs/context/ - Added CLAUDE.md to both directories explaining their purpose - Updated docs.json paths to work with new structure Benefits: - Clear separation between user-facing and internal documentation - Easier to maintain Mintlify docs in dedicated directory - Internal context files organized separately 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Enhance session management and continuity in hooks - Updated new-hook.ts to clarify session_id threading and idempotent session creation. - Modified prompts.ts to require claudeSessionId for continuation prompts, ensuring session context is maintained. - Improved SessionStore.ts documentation on createSDKSession to emphasize idempotent behavior and session connection. - Refined SDKAgent.ts to detail continuation prompt logic and its reliance on session.claudeSessionId for unified session handling. --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Alex Newman <thedotmack@gmail.com>
62 lines
2.2 KiB
Markdown
62 lines
2.2 KiB
Markdown
For tracking costs and tokens in your Agent SDK plugin, you have built-in programmatic access to usage data through the SDK itself[(1)](https://docs.claude.com/en/api/agent-sdk/cost-tracking).
|
|
|
|
## Agent SDK Cost Tracking
|
|
|
|
The Claude Agent SDK provides detailed token usage information for each interaction[(1)](https://docs.claude.com/en/api/agent-sdk/cost-tracking). Here's how to track it:
|
|
|
|
**TypeScript:**
|
|
```typescript
|
|
import { query } from "@anthropic-ai/claude-agent-sdk";
|
|
|
|
const result = await query({
|
|
prompt: "Your task here",
|
|
options: {
|
|
onMessage: (message) => {
|
|
if (message.type === 'assistant' && message.usage) {
|
|
console.log(`Message ID: ${message.id}`);
|
|
console.log(`Usage:`, message.usage);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
```
|
|
[(1)](https://docs.claude.com/en/api/agent-sdk/cost-tracking)
|
|
|
|
The final `result` message contains the total cumulative usage from all steps in the conversation[(1)](https://docs.claude.com/en/api/agent-sdk/cost-tracking):
|
|
|
|
```typescript
|
|
console.log("Total usage:", result.usage);
|
|
console.log("Total cost:", result.usage.total_cost_usd);
|
|
```
|
|
[(1)](https://docs.claude.com/en/api/agent-sdk/cost-tracking)
|
|
|
|
## Important: Avoid Double-Counting
|
|
|
|
When Claude executes tools in parallel, multiple assistant messages may share the same ID and usage data[(1)](https://docs.claude.com/en/api/agent-sdk/cost-tracking). You should only charge once per unique message ID[(1)](https://docs.claude.com/en/api/agent-sdk/cost-tracking):
|
|
|
|
```typescript
|
|
const processedMessageIds = new Set<string>();
|
|
|
|
onMessage: (message) => {
|
|
if (message.type === 'assistant' && message.usage) {
|
|
// Skip if already processed
|
|
if (processedMessageIds.has(message.id)) {
|
|
return;
|
|
}
|
|
|
|
processedMessageIds.add(message.id);
|
|
// Record usage here
|
|
}
|
|
}
|
|
```
|
|
[(1)](https://docs.claude.com/en/api/agent-sdk/cost-tracking)
|
|
|
|
## Usage Fields
|
|
|
|
Each usage object contains[(1)](https://docs.claude.com/en/api/agent-sdk/cost-tracking):
|
|
- `input_tokens`: Base input tokens processed
|
|
- `output_tokens`: Tokens generated in the response
|
|
- `cache_creation_input_tokens`: Tokens used to create cache entries
|
|
- `cache_read_input_tokens`: Tokens read from cache
|
|
- `total_cost_usd`: Total cost in USD (only in result message)
|