Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/upstash/skills/aliasesgit clone --depth 1 https://github.com/upstash/skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/upstash/skills/aliases)<a href="https://agentmods.dev/commands/upstash/skills/aliases"><img src="https://agentmods.dev/badge/commands/upstash/skills/aliases.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.00537 |
| Opus 5 | $0.00000 | $0.00269 |
| Sonnet 5 | $0.00000 | $0.00107 |
| Haiku 4.5 | $0.00000 | $0.00054 |
Grade A, and why
aliases scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
86% identical to aliases — 16 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 83 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Aliases
Overview
Index aliases provide an indirection layer between your application and the actual index. You can point an alias to any index and swap it atomically, enabling zero-downtime reindexing.
Good For
- Zero-downtime index rebuilds (blue/green reindexing)
- A/B testing different index configurations
- Versioned index management
Examples
Add an Alias
import { Redis, s } from "@upstash/redis";
const redis = Redis.fromEnv();
// Create an index
const index = await redis.search.createIndex({
name: "products-v1",
prefix: "product:",
dataType: "json",
schema: s.object({ name: s.string(), price: s.number("F64") }),
});
// Add alias via the index instance
await index.addAlias({ alias: "products" });
// Or via the redis.search.alias API
await redis.search.alias.add({ indexName: "products-v1", alias: "products" });
List All Aliases
const aliases = await redis.search.alias.list();
// { "products": "products-v1", "users": "users-v2" }
Delete an Alias
await redis.search.alias.delete({ alias: "products" });
// Returns 1 if deleted, 0 if alias didn't exist
Zero-Downtime Reindexing
// 1. Resolve the alias's current target before swapping
const aliases = await redis.search.alias.list();
const oldIndexName = aliases["products"]; // "products-v1"
// 2. Create new index with updated schema
const newIndex = await redis.search.createIndex({
name: "products-v2",
prefix: "product:",
dataType: "json",
schema: s.object({
name: s.string(),
price: s.number("F64"),
description: s.string(), // new field
}),
});
// 3. Wait for new index to finish scanning existing keys
await newIndex.waitIndexing();
// 4. Atomically swap the alias to the new index
// (addAlias updates the alias if it already exists)
await redis.search.alias.add({ indexName: "products-v2", alias: "products" });
// 5. Drop the old index by name
const oldIndex = redis.search.index({ name: oldIndexName });
await oldIndex.drop();
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 83 lines · 0 tokens per session scan A 1d346e0f3fbd
aliases is a command published in the GitHub repository upstash/skills (25 stars, last pushed today), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 537 tokens. A static security scan graded it A with 0 findings. It is 86% identical to aliases, differing in 16 lines, and is treated as a copy.
Other commands, from other repositories
semantic-change-check
Audit changes to dbt Semantic Layer definitions for breaking changes and aggregation risks.
review
Review the current changes.
add-index
Add database indexes to improve query performance with migration safety.
db-migrate
Generate a database migration file for schema changes.
dialog
This command is designed to work with customized and advanced user interfaces based on forms. You can use it to display information coming from the database or other locations, or to provide data entry features. Unlike ADD RECORD or MODIFY RECORD, DIALOG gives you full control over the form, its contents and the…
git
Git operations with intelligent commit messages and workflow optimization.