agentleFS
redisredis/agent-skills/skills/add-redis-iris/SKILL.md

add-redis-iris

Skill174 starsChanged 3 months agoMITView on GitHub

Add Redis Iris to an existing AI agent in any framework (LangGraph, LangChain, OpenAI Agents SDK, Google ADK, Pydantic AI, CrewAI, or a plain loop). Use when the user asks to add Iris, Redis Agent Memory, Agent Playbooks, Context Gateway, Intent Router, or Lens to their agent, or asks which Iris product their agent needs. Detects the framework and routes to the product skill.

  • Reads credentials

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 3 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If the user named a product, use that.

    line 50
  2. Very specific:

    If resolution fails on pre-releases, retry with uv add --prerelease=allow redis-iris.

    line 60
  3. Very specific:

    Follow each chosen product skill.

    line 64
  4. Very specific:

    Add one table per product the app uses: agent_memory, agent_playbooks, context_gateway, intent_router.

    line 91
  5. Distinctive:

    Keep the user's framework, graph, and prompts.

    line 95
  6. Distinctive:

    Never guess framework APIs from memory.

    line 96
  7. Very specific:

    Only use APIs in redis_iris.

    line 97

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Add Redis Iris

Inspect, install, route. Do not rewrite the agent.

1. Find the agent

Locate:

  • The turn: where the model is called (invoke, Runner.run, generate_content, agent.run, kickoff, chat.completions.create, messages.create).
  • Tool registration: where tools are defined and handed to the model.
  • User and session ids: where the request's user id and thread or session id live.
  • More than one loop (a hand-written loop and a framework, or two frameworks)? Create the product objects once in a module with no framework imports, wire each loop at its own seam, and convert one loop at a time. Do not pick the loop for the user.

2. Detect the framework

Search imports:

ImportFramework
langgraph, langchain, langchain_coreLangGraph / LangChain
agents (package openai-agents)OpenAI Agents SDK
google.adkGoogle ADK
pydantic_aiPydantic AI
crewaiCrewAI
only openai, anthropic, or another model clientPlain loop

Note the version from the lockfile. Product skills look up that version's API over MCP.

3. Find what it lacks

Symptom in the codeProductSkill
No long-term memory, InMemoryStore, checkpointer only, memory in a dict or local DBAgent Memoryadd-agent-memory
Already on Redis Agent Memory through its own REST or MCP client, hand-written adapters, or model-facing memory toolsAgent Memoryadd-agent-memory, "Already on Redis Agent Memory"
Policy or procedures hardcoded in the prompt, tool usage guidance in the prompt, or a vector store over policy docsAgent Playbooksadd-agent-playbooks
A semantic response cache: model answers stored and re-served to later users, curated by handAgent Playbooksadd-agent-playbooks, "Replacing a response cache"
Several MCP servers configured one by one in the agent, each with its own secret, or too many tool schemas in the promptContext Gatewayadd-context-gateway
A keyword if/else router, or an LLM call just to pick a routeIntent Routeradd-intent-router
No per-turn tracing: no way to see which LLM calls, tools and retrievals one answer used, or what it costLensadd-lens

If the user named a product, use that. If unclear, ask once, listing what you found.

Lens goes next to any product, or on its own: it traces the turn, and every Iris product traces itself inside it. Offer it alongside whatever else you add.

4. Install

  • uv.lock or [tool.uv] present: uv add redis-iris.
  • Poetry: poetry add redis-iris.
  • Otherwise add redis-iris to the project's requirements file.

If resolution fails on pre-releases, retry with uv add --prerelease=allow redis-iris. Confirm: uv run python -c "import redis_iris; print(redis_iris.__version__)".

5. Route

Follow each chosen product skill. More than one product: each skill adds its own calls. Optionally build them from one config with Iris.from_env() (iris.agent_memory(), iris.agent_playbooks(), iris.context_gateway(), iris.intent_router()).

Ask once whether the services run on Redis Cloud or a self-managed suite, then write the project's iris.toml profile. Only the iris CLI reads iris.toml; the app reads env vars. It holds URLs only: a token in TOML makes the CLI exit 2. Select the profile with IRIS_CONFIG=./iris.toml and IRIS_PROFILE=cloud or IRIS_PROFILE=suite.

Redis Cloud. The person fills .env from the console: IRIS_<PRODUCT>_URL, its ID and _API_KEY per product.

[profiles.cloud]
kind = "cloud"
console_url = "https://cloud.redis.io"

[profiles.cloud.agent_memory]
url = "https://gcp-us-east4.memory.redis.io"  # the data-plane URL from the console

Self-managed suite. The operator's tokens go in .env.admin, never the app's .env; service create --write-env .env writes the app's .env.

[profiles.suite]
kind = "self-managed"

[profiles.suite.agent_memory]
service_url = "https://memory-admin.example.com"  # control plane: the CLI calls it for service create and check
url = "https://memory.example.com"  # data plane: what the agent calls
identity_url = "https://memory-identity.example.com"  # Identity Service that mints the agent's keys

Add one table per product the app uses: agent_memory, agent_playbooks, context_gateway, intent_router. [profiles.suite.context_gateway] has no url: service create --write-env writes the Gateway's endpoint. A suite with one shared Identity Service sets [profiles.suite.identity] url once instead of each identity_url. IRIS_<PRODUCT>_SERVICE_URL, IRIS_<PRODUCT>_URL and IRIS_<PRODUCT>_IDENTITY_URL override the profile.

Rules

  • Keep the user's framework, graph, and prompts. Smallest diff.
  • Never guess framework APIs from memory. Look them up over MCP (see each product skill).
  • Only use APIs in redis_iris. redis_iris.integrations.langgraph.attach (extra redis-iris[langgraph]) and redis_iris.integrations.adk.attach (no extra) exist; there is no IrisTool, iris.tools(), or iris.turn().
  • The SDK raises on a missing setting or an outage. Ask whether a product failure may fail the turn; most production agents catch it and continue with an empty block.
  • Never commit secrets.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.