
Iris Development
Provision Redis Iris agent memory, wire the official SDK, append session events, and manage long-term memories including idempotent bulk writes.
Overview
iris-development is an agent skill for the Build phase that guides provisioning Redis Iris, SDK authentication, session memory, long-term memory APIs, and idempotent bulk writes.
Install
npx skills add https://github.com/redis/agent-skills --skill iris-developmentWhat is this skill?
- End-to-end Iris (Redis Agent Memory): provision service, authenticate SDK, session events, long-term memory CRUD and sea
- bulk_create_long_term_memories / bulkCreateLongTermMemories with up to 100 records per API call
- Client-supplied deterministic IDs for idempotent retries without duplicate facts
- Response splits created IDs vs per-record errors for safe partial success handling
- Documents async promotion contract between session and long-term memory in Python and TypeScript SDKs
- Up to 100 long-term memory records per bulk_create/bulkCreate API call
Adoption & trust: 1 installs on skills.sh; 70 GitHub stars; trending (+100% hot-view momentum).
What problem does it solve?
Your agent forgets context between sessions and you need a reliable Redis-backed memory layer with correct bulk and idempotent write patterns.
Who is it for?
Solo builders adding durable memory to Claude Code or custom agents already committed to Redis Iris and the official SDKs.
Skip if: Projects that only need ephemeral in-context chat history with no external memory service, or teams not using Redis agent memory APIs.
When should I use this skill?
Implementing or debugging Redis Iris agent memory: provisioning, SDK auth, session append, long-term memory search/create, and bulk idempotent writes.
What do I get? / Deliverables
You can append session events, create and search long-term memories, and bulk-upsert facts with deterministic IDs and clear created/error handling.
- Working SDK integration for session and long-term memory
- Bulk memory upsert flows with deterministic IDs and error handling
Recommended Skills
Journey fit
Persistent agent memory is core product infrastructure for AI features, which belongs on the Build shelf under agent tooling. Iris covers provisioning the memory service, SDK auth, session append, search, and promotion contracts—implementation work for agent runtimes.
How it compares
Skill-backed SDK integration guide, not a drop-in MCP server or generic vector-database tutorial.
Common Questions / FAQ
Who is iris-development for?
Developers building AI agents who want Redis Iris for session and long-term memory with Python or TypeScript SDKs.
When should I use iris-development?
During Build while wiring agent-tooling—when you provision Iris, authenticate the SDK, append session events, promote memories, or implement bulk_create with stable IDs before ship.
Is iris-development safe to install?
It is MIT-licensed Redis documentation; review the Security Audits panel on this Prism page and treat API keys and Redis credentials as secrets in your agent environment.
SKILL.md
READMESKILL.md - Iris Development
{ "name": "iris-development", "version": "1.0.0", "description": "Iris: Redis Agent Memory — provisioning a memory service, authenticating the SDK, appending session events, creating and searching long-term memories, and the async promotion contract. Examples in the official redis-agent-memory (Python) and @redis-iris/agent-memory (TypeScript) SDKs.", "author": { "name": "Redis", "email": "support@redis.com" }, "homepage": "https://redis.io", "repository": "https://github.com/redis/agent-skills", "license": "MIT", "keywords": ["iris", "redis", "agent-memory", "ai", "llm", "session-memory", "long-term-memory"] } ## Create Long-Term Memories in Bulk with Idempotent IDs `bulk_create_long_term_memories` (Python) / `bulkCreateLongTermMemories` (TypeScript) accepts up to **100 records per call**. The client supplies the `id` for each record so a retry never creates a duplicate. The response splits into `created` (IDs that landed) and `errors` (per-ID failures). **Correct:** Generate a deterministic ID per logical fact and batch up to 100. **Python:** ```python import uuid from redis_agent_memory import AgentMemory, models def upsert_facts(agent_memory: AgentMemory, facts: list[dict]): # Cap at 100 per call — the API enforces this. res = agent_memory.bulk_create_long_term_memories(memories=[ { "id": fact["id"], # stable, deterministic "text": fact["text"], # 1–50000 chars "memory_type": fact.get("memory_type", models.MemoryType.SEMANTIC), "session_id": fact.get("session_id"), "owner_id": fact.get("owner_id"), "namespace": fact.get("namespace"), "topics": fact.get("topics", []), } for fact in facts[:100] ]) # res.created = [...ids...], res.errors = [BulkOperationError(...)] return res # Deterministic IDs make retries safe: same fact → same id → no duplicate. facts = [{ "id": f"user-42-pref-{uuid.uuid5(uuid.NAMESPACE_OID, 'theme:dark')}", "text": "User 42 prefers dark mode.", "owner_id": "user-42", "topics": ["profile", "ui-preferences"], }] upsert_facts(agent_memory, facts) ``` **TypeScript:** ```typescript import { AgentMemory } from "@redis-iris/agent-memory"; async function upsertFacts( agentMemory: AgentMemory, facts: Array<{ id: string; text: string; memoryType?: "semantic" | "episodic" | "message"; sessionId?: string; ownerId?: string; namespace?: string; topics?: string[]; }>, ) { const res = await agentMemory.bulkCreateLongTermMemories({ memories: facts.slice(0, 100).map((f) => ({ id: f.id, text: f.text, memoryType: f.memoryType ?? "semantic", sessionId: f.sessionId, ownerId: f.ownerId, namespace: f.namespace, topics: f.topics ?? [], })), }); // res.created: string[], res.errors?: Array<{id: string; error: string}> return res; } ``` **Incorrect:** One call per memory, or random IDs on every retry. ```python # Bad: N round-trips + N embedding calls — slow and hammers your rate limit. for fact in facts: agent_memory.bulk_create_long_term_memories(memories=[{ "id": str(uuid.uuid4()), # <-- new id on every retry → duplicates on transient failures "text": fact["text"], }]) ``` **Partial-success contract — always inspect `errors`:** ```python res = upsert_facts(agent_memory, facts) if res.errors: for err in res.errors: log.warning("LTM create failed", id=err.id, reason=err.error) # res.created IS persisted; do not retry those. failed_ids = {e.id for e in res.errors} retry_later([f for f in facts if f["id"] in failed_ids]) ``` ```typescript const res = await upsertFacts(agentMemory, facts); if (res.errors?.length) { for (const err of res.errors) { console.warn("LTM create failed", err.id,