[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-redis-agent-filesystem":3,"mdc-phza8c-key":33,"related-org-redis-agent-filesystem":792,"related-repo-redis-agent-filesystem":979},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":31,"mdContent":32},"agent-filesystem","manage persistent storage in Redis","Use when agents need persistent shared storage, when saving or restoring workspace state, or when coordinating file access across multiple agents and machines. Creates Redis-backed workspaces, checkpoints and restores agent state, mounts shared filesystems locally, searches workspace contents, and forks workspaces for parallel work.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"redis","Redis","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fredis.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"File Storage","file-storage","tag",{"name":17,"slug":18,"type":15},"Memory","memory",{"name":20,"slug":21,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},22,"https:\u002F\u002Fgithub.com\u002Fredis\u002Fagent-filesystem","2026-04-10T04:51:05.904489",null,6,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":26},[],"https:\u002F\u002Fgithub.com\u002Fredis\u002Fagent-filesystem\u002Ftree\u002FHEAD\u002Fskills\u002Fagent-filesystem","---\nname: agent-filesystem\ndescription: \"Use when agents need persistent shared storage, when saving or restoring workspace state, or when coordinating file access across multiple agents and machines. Creates Redis-backed workspaces, checkpoints and restores agent state, mounts shared filesystems locally, searches workspace contents, and forks workspaces for parallel work.\"\n---\n\n# Agent Filesystem\n\nAFS is a workspace system for agents, backed by Redis. Use it when you want a\ndurable workspace that still feels like normal files and directories, with\nexplicit checkpoints and easy movement between MCP, sync mode, and live mounts.\n\n## When to Use This Skill\n\n**Use for:**\n- Persistent agent workspaces that survive across sessions and machines\n- Code, docs, or shared state that should live in a normal directory backed by Redis\n- Saving and restoring workspace snapshots with explicit checkpoints\n- Searching workspace contents with `afs fs grep` or MCP file tools\n- Forking a workspace to run parallel experiments without losing the original\n\n**Avoid for:**\n- Large build output, media, or disposable artifacts\n- Workflows that assume checkpoints happen automatically\n- Old direct-command \u002F `redis-cli` examples from module-era docs\n\n## Preferred Interfaces\n\n### 1. `afs mcp`\nUse `afs mcp` when the agent can talk over MCP and does not need a local\ndirectory.\n\n### 2. Sync mode + `afs` CLI\nUse sync mode when the agent or user wants a real local directory:\n\n```bash\n.\u002Fafs ws mount my-project ~\u002Fmy-project\ncd ~\u002Fmy-project\n```\n\n### 3. Live mount mode\nUse `.\u002Fafs config set --mode mount` before mounting when you need the\nworkspace exposed directly as a mount rather than through the sync daemon.\n\n## Common Flows\n\n### Create or import a workspace\n```bash\n.\u002Fafs ws create my-project\n.\u002Fafs ws import my-project .\u002Fexisting-dir\n.\u002Fafs ws list                          # verify the workspace exists\n```\n\n### Start working locally\n```bash\n.\u002Fafs ws mount my-project ~\u002Fmy-project\n.\u002Fafs status                           # verify the mount is active\ncd ~\u002Fmy-project\n```\n\n### Search a workspace\n```bash\n.\u002Fafs fs grep --workspace my-project \"TODO auth\"\n.\u002Fafs fs grep --workspace my-project --path \u002Fsrc -E \"timeout|retry\"\n```\n\n### Save and restore stable points\n```bash\n.\u002Fafs cp create my-project before-refactor\n.\u002Fafs cp list my-project               # verify the checkpoint was saved\n.\u002Fafs cp restore my-project before-refactor\n.\u002Fafs cp list my-project               # confirm the restore completed\n```\n\n### Fork work for a second line of effort\n```bash\n.\u002Fafs ws fork my-project my-project-experiment\n.\u002Fafs ws list                          # verify the fork appears\n```\n\n## Key Points\n\n- Redis is the source of truth for the live workspace and checkpoint history.\n- Sync mode gives you a normal local directory; mount mode exposes the live\n  workspace directly.\n- `afs mcp` and the CLI operate on the same workspace model.\n- File edits change the live workspace immediately.\n- Create checkpoints explicitly when you want a restore point.\n- `.afsignore` controls what gets imported from an existing local directory.\n\n## Further Reading\n\n- `docs\u002Fguides\u002Fagent-filesystem.md` — agent-facing usage guide\n- `docs\u002Freference\u002Fcli.md` — full CLI command reference\n- `docs\u002Freference\u002Fmcp.md` — MCP tool reference for agent integrations\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,46,52,59,68,107,115,141,147,160,172,186,191,249,255,267,273,279,355,361,419,425,525,531,636,642,694,700,744,750,786],{"type":39,"tag":40,"props":41,"children":42},"element","h1",{"id":4},[43],{"type":44,"value":45},"text","Agent Filesystem",{"type":39,"tag":47,"props":48,"children":49},"p",{},[50],{"type":44,"value":51},"AFS is a workspace system for agents, backed by Redis. Use it when you want a\ndurable workspace that still feels like normal files and directories, with\nexplicit checkpoints and easy movement between MCP, sync mode, and live mounts.",{"type":39,"tag":53,"props":54,"children":56},"h2",{"id":55},"when-to-use-this-skill",[57],{"type":44,"value":58},"When to Use This Skill",{"type":39,"tag":47,"props":60,"children":61},{},[62],{"type":39,"tag":63,"props":64,"children":65},"strong",{},[66],{"type":44,"value":67},"Use for:",{"type":39,"tag":69,"props":70,"children":71},"ul",{},[72,78,83,88,102],{"type":39,"tag":73,"props":74,"children":75},"li",{},[76],{"type":44,"value":77},"Persistent agent workspaces that survive across sessions and machines",{"type":39,"tag":73,"props":79,"children":80},{},[81],{"type":44,"value":82},"Code, docs, or shared state that should live in a normal directory backed by Redis",{"type":39,"tag":73,"props":84,"children":85},{},[86],{"type":44,"value":87},"Saving and restoring workspace snapshots with explicit checkpoints",{"type":39,"tag":73,"props":89,"children":90},{},[91,93,100],{"type":44,"value":92},"Searching workspace contents with ",{"type":39,"tag":94,"props":95,"children":97},"code",{"className":96},[],[98],{"type":44,"value":99},"afs fs grep",{"type":44,"value":101}," or MCP file tools",{"type":39,"tag":73,"props":103,"children":104},{},[105],{"type":44,"value":106},"Forking a workspace to run parallel experiments without losing the original",{"type":39,"tag":47,"props":108,"children":109},{},[110],{"type":39,"tag":63,"props":111,"children":112},{},[113],{"type":44,"value":114},"Avoid for:",{"type":39,"tag":69,"props":116,"children":117},{},[118,123,128],{"type":39,"tag":73,"props":119,"children":120},{},[121],{"type":44,"value":122},"Large build output, media, or disposable artifacts",{"type":39,"tag":73,"props":124,"children":125},{},[126],{"type":44,"value":127},"Workflows that assume checkpoints happen automatically",{"type":39,"tag":73,"props":129,"children":130},{},[131,133,139],{"type":44,"value":132},"Old direct-command \u002F ",{"type":39,"tag":94,"props":134,"children":136},{"className":135},[],[137],{"type":44,"value":138},"redis-cli",{"type":44,"value":140}," examples from module-era docs",{"type":39,"tag":53,"props":142,"children":144},{"id":143},"preferred-interfaces",[145],{"type":44,"value":146},"Preferred Interfaces",{"type":39,"tag":148,"props":149,"children":151},"h3",{"id":150},"_1-afs-mcp",[152,154],{"type":44,"value":153},"1. ",{"type":39,"tag":94,"props":155,"children":157},{"className":156},[],[158],{"type":44,"value":159},"afs mcp",{"type":39,"tag":47,"props":161,"children":162},{},[163,165,170],{"type":44,"value":164},"Use ",{"type":39,"tag":94,"props":166,"children":168},{"className":167},[],[169],{"type":44,"value":159},{"type":44,"value":171}," when the agent can talk over MCP and does not need a local\ndirectory.",{"type":39,"tag":148,"props":173,"children":175},{"id":174},"_2-sync-mode-afs-cli",[176,178,184],{"type":44,"value":177},"2. Sync mode + ",{"type":39,"tag":94,"props":179,"children":181},{"className":180},[],[182],{"type":44,"value":183},"afs",{"type":44,"value":185}," CLI",{"type":39,"tag":47,"props":187,"children":188},{},[189],{"type":44,"value":190},"Use sync mode when the agent or user wants a real local directory:",{"type":39,"tag":192,"props":193,"children":198},"pre",{"className":194,"code":195,"language":196,"meta":197,"style":197},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight",".\u002Fafs ws mount my-project ~\u002Fmy-project\ncd ~\u002Fmy-project\n","bash","",[199],{"type":39,"tag":94,"props":200,"children":201},{"__ignoreMap":197},[202,235],{"type":39,"tag":203,"props":204,"children":207},"span",{"class":205,"line":206},"line",1,[208,214,220,225,230],{"type":39,"tag":203,"props":209,"children":211},{"style":210},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[212],{"type":44,"value":213},".\u002Fafs",{"type":39,"tag":203,"props":215,"children":217},{"style":216},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[218],{"type":44,"value":219}," ws",{"type":39,"tag":203,"props":221,"children":222},{"style":216},[223],{"type":44,"value":224}," mount",{"type":39,"tag":203,"props":226,"children":227},{"style":216},[228],{"type":44,"value":229}," my-project",{"type":39,"tag":203,"props":231,"children":232},{"style":216},[233],{"type":44,"value":234}," ~\u002Fmy-project\n",{"type":39,"tag":203,"props":236,"children":238},{"class":205,"line":237},2,[239,245],{"type":39,"tag":203,"props":240,"children":242},{"style":241},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[243],{"type":44,"value":244},"cd",{"type":39,"tag":203,"props":246,"children":247},{"style":216},[248],{"type":44,"value":234},{"type":39,"tag":148,"props":250,"children":252},{"id":251},"_3-live-mount-mode",[253],{"type":44,"value":254},"3. Live mount mode",{"type":39,"tag":47,"props":256,"children":257},{},[258,259,265],{"type":44,"value":164},{"type":39,"tag":94,"props":260,"children":262},{"className":261},[],[263],{"type":44,"value":264},".\u002Fafs config set --mode mount",{"type":44,"value":266}," before mounting when you need the\nworkspace exposed directly as a mount rather than through the sync daemon.",{"type":39,"tag":53,"props":268,"children":270},{"id":269},"common-flows",[271],{"type":44,"value":272},"Common Flows",{"type":39,"tag":148,"props":274,"children":276},{"id":275},"create-or-import-a-workspace",[277],{"type":44,"value":278},"Create or import a workspace",{"type":39,"tag":192,"props":280,"children":282},{"className":194,"code":281,"language":196,"meta":197,"style":197},".\u002Fafs ws create my-project\n.\u002Fafs ws import my-project .\u002Fexisting-dir\n.\u002Fafs ws list                          # verify the workspace exists\n",[283],{"type":39,"tag":94,"props":284,"children":285},{"__ignoreMap":197},[286,307,332],{"type":39,"tag":203,"props":287,"children":288},{"class":205,"line":206},[289,293,297,302],{"type":39,"tag":203,"props":290,"children":291},{"style":210},[292],{"type":44,"value":213},{"type":39,"tag":203,"props":294,"children":295},{"style":216},[296],{"type":44,"value":219},{"type":39,"tag":203,"props":298,"children":299},{"style":216},[300],{"type":44,"value":301}," create",{"type":39,"tag":203,"props":303,"children":304},{"style":216},[305],{"type":44,"value":306}," my-project\n",{"type":39,"tag":203,"props":308,"children":309},{"class":205,"line":237},[310,314,318,323,327],{"type":39,"tag":203,"props":311,"children":312},{"style":210},[313],{"type":44,"value":213},{"type":39,"tag":203,"props":315,"children":316},{"style":216},[317],{"type":44,"value":219},{"type":39,"tag":203,"props":319,"children":320},{"style":216},[321],{"type":44,"value":322}," import",{"type":39,"tag":203,"props":324,"children":325},{"style":216},[326],{"type":44,"value":229},{"type":39,"tag":203,"props":328,"children":329},{"style":216},[330],{"type":44,"value":331}," .\u002Fexisting-dir\n",{"type":39,"tag":203,"props":333,"children":335},{"class":205,"line":334},3,[336,340,344,349],{"type":39,"tag":203,"props":337,"children":338},{"style":210},[339],{"type":44,"value":213},{"type":39,"tag":203,"props":341,"children":342},{"style":216},[343],{"type":44,"value":219},{"type":39,"tag":203,"props":345,"children":346},{"style":216},[347],{"type":44,"value":348}," list",{"type":39,"tag":203,"props":350,"children":352},{"style":351},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[353],{"type":44,"value":354},"                          # verify the workspace exists\n",{"type":39,"tag":148,"props":356,"children":358},{"id":357},"start-working-locally",[359],{"type":44,"value":360},"Start working locally",{"type":39,"tag":192,"props":362,"children":364},{"className":194,"code":363,"language":196,"meta":197,"style":197},".\u002Fafs ws mount my-project ~\u002Fmy-project\n.\u002Fafs status                           # verify the mount is active\ncd ~\u002Fmy-project\n",[365],{"type":39,"tag":94,"props":366,"children":367},{"__ignoreMap":197},[368,391,408],{"type":39,"tag":203,"props":369,"children":370},{"class":205,"line":206},[371,375,379,383,387],{"type":39,"tag":203,"props":372,"children":373},{"style":210},[374],{"type":44,"value":213},{"type":39,"tag":203,"props":376,"children":377},{"style":216},[378],{"type":44,"value":219},{"type":39,"tag":203,"props":380,"children":381},{"style":216},[382],{"type":44,"value":224},{"type":39,"tag":203,"props":384,"children":385},{"style":216},[386],{"type":44,"value":229},{"type":39,"tag":203,"props":388,"children":389},{"style":216},[390],{"type":44,"value":234},{"type":39,"tag":203,"props":392,"children":393},{"class":205,"line":237},[394,398,403],{"type":39,"tag":203,"props":395,"children":396},{"style":210},[397],{"type":44,"value":213},{"type":39,"tag":203,"props":399,"children":400},{"style":216},[401],{"type":44,"value":402}," status",{"type":39,"tag":203,"props":404,"children":405},{"style":351},[406],{"type":44,"value":407},"                           # verify the mount is active\n",{"type":39,"tag":203,"props":409,"children":410},{"class":205,"line":334},[411,415],{"type":39,"tag":203,"props":412,"children":413},{"style":241},[414],{"type":44,"value":244},{"type":39,"tag":203,"props":416,"children":417},{"style":216},[418],{"type":44,"value":234},{"type":39,"tag":148,"props":420,"children":422},{"id":421},"search-a-workspace",[423],{"type":44,"value":424},"Search a workspace",{"type":39,"tag":192,"props":426,"children":428},{"className":194,"code":427,"language":196,"meta":197,"style":197},".\u002Fafs fs grep --workspace my-project \"TODO auth\"\n.\u002Fafs fs grep --workspace my-project --path \u002Fsrc -E \"timeout|retry\"\n",[429],{"type":39,"tag":94,"props":430,"children":431},{"__ignoreMap":197},[432,474],{"type":39,"tag":203,"props":433,"children":434},{"class":205,"line":206},[435,439,444,449,454,458,464,469],{"type":39,"tag":203,"props":436,"children":437},{"style":210},[438],{"type":44,"value":213},{"type":39,"tag":203,"props":440,"children":441},{"style":216},[442],{"type":44,"value":443}," fs",{"type":39,"tag":203,"props":445,"children":446},{"style":216},[447],{"type":44,"value":448}," grep",{"type":39,"tag":203,"props":450,"children":451},{"style":216},[452],{"type":44,"value":453}," --workspace",{"type":39,"tag":203,"props":455,"children":456},{"style":216},[457],{"type":44,"value":229},{"type":39,"tag":203,"props":459,"children":461},{"style":460},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[462],{"type":44,"value":463}," \"",{"type":39,"tag":203,"props":465,"children":466},{"style":216},[467],{"type":44,"value":468},"TODO auth",{"type":39,"tag":203,"props":470,"children":471},{"style":460},[472],{"type":44,"value":473},"\"\n",{"type":39,"tag":203,"props":475,"children":476},{"class":205,"line":237},[477,481,485,489,493,497,502,507,512,516,521],{"type":39,"tag":203,"props":478,"children":479},{"style":210},[480],{"type":44,"value":213},{"type":39,"tag":203,"props":482,"children":483},{"style":216},[484],{"type":44,"value":443},{"type":39,"tag":203,"props":486,"children":487},{"style":216},[488],{"type":44,"value":448},{"type":39,"tag":203,"props":490,"children":491},{"style":216},[492],{"type":44,"value":453},{"type":39,"tag":203,"props":494,"children":495},{"style":216},[496],{"type":44,"value":229},{"type":39,"tag":203,"props":498,"children":499},{"style":216},[500],{"type":44,"value":501}," --path",{"type":39,"tag":203,"props":503,"children":504},{"style":216},[505],{"type":44,"value":506}," \u002Fsrc",{"type":39,"tag":203,"props":508,"children":509},{"style":216},[510],{"type":44,"value":511}," -E",{"type":39,"tag":203,"props":513,"children":514},{"style":460},[515],{"type":44,"value":463},{"type":39,"tag":203,"props":517,"children":518},{"style":216},[519],{"type":44,"value":520},"timeout|retry",{"type":39,"tag":203,"props":522,"children":523},{"style":460},[524],{"type":44,"value":473},{"type":39,"tag":148,"props":526,"children":528},{"id":527},"save-and-restore-stable-points",[529],{"type":44,"value":530},"Save and restore stable points",{"type":39,"tag":192,"props":532,"children":534},{"className":194,"code":533,"language":196,"meta":197,"style":197},".\u002Fafs cp create my-project before-refactor\n.\u002Fafs cp list my-project               # verify the checkpoint was saved\n.\u002Fafs cp restore my-project before-refactor\n.\u002Fafs cp list my-project               # confirm the restore completed\n",[535],{"type":39,"tag":94,"props":536,"children":537},{"__ignoreMap":197},[538,563,587,611],{"type":39,"tag":203,"props":539,"children":540},{"class":205,"line":206},[541,545,550,554,558],{"type":39,"tag":203,"props":542,"children":543},{"style":210},[544],{"type":44,"value":213},{"type":39,"tag":203,"props":546,"children":547},{"style":216},[548],{"type":44,"value":549}," cp",{"type":39,"tag":203,"props":551,"children":552},{"style":216},[553],{"type":44,"value":301},{"type":39,"tag":203,"props":555,"children":556},{"style":216},[557],{"type":44,"value":229},{"type":39,"tag":203,"props":559,"children":560},{"style":216},[561],{"type":44,"value":562}," before-refactor\n",{"type":39,"tag":203,"props":564,"children":565},{"class":205,"line":237},[566,570,574,578,582],{"type":39,"tag":203,"props":567,"children":568},{"style":210},[569],{"type":44,"value":213},{"type":39,"tag":203,"props":571,"children":572},{"style":216},[573],{"type":44,"value":549},{"type":39,"tag":203,"props":575,"children":576},{"style":216},[577],{"type":44,"value":348},{"type":39,"tag":203,"props":579,"children":580},{"style":216},[581],{"type":44,"value":229},{"type":39,"tag":203,"props":583,"children":584},{"style":351},[585],{"type":44,"value":586},"               # verify the checkpoint was saved\n",{"type":39,"tag":203,"props":588,"children":589},{"class":205,"line":334},[590,594,598,603,607],{"type":39,"tag":203,"props":591,"children":592},{"style":210},[593],{"type":44,"value":213},{"type":39,"tag":203,"props":595,"children":596},{"style":216},[597],{"type":44,"value":549},{"type":39,"tag":203,"props":599,"children":600},{"style":216},[601],{"type":44,"value":602}," restore",{"type":39,"tag":203,"props":604,"children":605},{"style":216},[606],{"type":44,"value":229},{"type":39,"tag":203,"props":608,"children":609},{"style":216},[610],{"type":44,"value":562},{"type":39,"tag":203,"props":612,"children":614},{"class":205,"line":613},4,[615,619,623,627,631],{"type":39,"tag":203,"props":616,"children":617},{"style":210},[618],{"type":44,"value":213},{"type":39,"tag":203,"props":620,"children":621},{"style":216},[622],{"type":44,"value":549},{"type":39,"tag":203,"props":624,"children":625},{"style":216},[626],{"type":44,"value":348},{"type":39,"tag":203,"props":628,"children":629},{"style":216},[630],{"type":44,"value":229},{"type":39,"tag":203,"props":632,"children":633},{"style":351},[634],{"type":44,"value":635},"               # confirm the restore completed\n",{"type":39,"tag":148,"props":637,"children":639},{"id":638},"fork-work-for-a-second-line-of-effort",[640],{"type":44,"value":641},"Fork work for a second line of effort",{"type":39,"tag":192,"props":643,"children":645},{"className":194,"code":644,"language":196,"meta":197,"style":197},".\u002Fafs ws fork my-project my-project-experiment\n.\u002Fafs ws list                          # verify the fork appears\n",[646],{"type":39,"tag":94,"props":647,"children":648},{"__ignoreMap":197},[649,674],{"type":39,"tag":203,"props":650,"children":651},{"class":205,"line":206},[652,656,660,665,669],{"type":39,"tag":203,"props":653,"children":654},{"style":210},[655],{"type":44,"value":213},{"type":39,"tag":203,"props":657,"children":658},{"style":216},[659],{"type":44,"value":219},{"type":39,"tag":203,"props":661,"children":662},{"style":216},[663],{"type":44,"value":664}," fork",{"type":39,"tag":203,"props":666,"children":667},{"style":216},[668],{"type":44,"value":229},{"type":39,"tag":203,"props":670,"children":671},{"style":216},[672],{"type":44,"value":673}," my-project-experiment\n",{"type":39,"tag":203,"props":675,"children":676},{"class":205,"line":237},[677,681,685,689],{"type":39,"tag":203,"props":678,"children":679},{"style":210},[680],{"type":44,"value":213},{"type":39,"tag":203,"props":682,"children":683},{"style":216},[684],{"type":44,"value":219},{"type":39,"tag":203,"props":686,"children":687},{"style":216},[688],{"type":44,"value":348},{"type":39,"tag":203,"props":690,"children":691},{"style":351},[692],{"type":44,"value":693},"                          # verify the fork appears\n",{"type":39,"tag":53,"props":695,"children":697},{"id":696},"key-points",[698],{"type":44,"value":699},"Key Points",{"type":39,"tag":69,"props":701,"children":702},{},[703,708,713,723,728,733],{"type":39,"tag":73,"props":704,"children":705},{},[706],{"type":44,"value":707},"Redis is the source of truth for the live workspace and checkpoint history.",{"type":39,"tag":73,"props":709,"children":710},{},[711],{"type":44,"value":712},"Sync mode gives you a normal local directory; mount mode exposes the live\nworkspace directly.",{"type":39,"tag":73,"props":714,"children":715},{},[716,721],{"type":39,"tag":94,"props":717,"children":719},{"className":718},[],[720],{"type":44,"value":159},{"type":44,"value":722}," and the CLI operate on the same workspace model.",{"type":39,"tag":73,"props":724,"children":725},{},[726],{"type":44,"value":727},"File edits change the live workspace immediately.",{"type":39,"tag":73,"props":729,"children":730},{},[731],{"type":44,"value":732},"Create checkpoints explicitly when you want a restore point.",{"type":39,"tag":73,"props":734,"children":735},{},[736,742],{"type":39,"tag":94,"props":737,"children":739},{"className":738},[],[740],{"type":44,"value":741},".afsignore",{"type":44,"value":743}," controls what gets imported from an existing local directory.",{"type":39,"tag":53,"props":745,"children":747},{"id":746},"further-reading",[748],{"type":44,"value":749},"Further Reading",{"type":39,"tag":69,"props":751,"children":752},{},[753,764,775],{"type":39,"tag":73,"props":754,"children":755},{},[756,762],{"type":39,"tag":94,"props":757,"children":759},{"className":758},[],[760],{"type":44,"value":761},"docs\u002Fguides\u002Fagent-filesystem.md",{"type":44,"value":763}," — agent-facing usage guide",{"type":39,"tag":73,"props":765,"children":766},{},[767,773],{"type":39,"tag":94,"props":768,"children":770},{"className":769},[],[771],{"type":44,"value":772},"docs\u002Freference\u002Fcli.md",{"type":44,"value":774}," — full CLI command reference",{"type":39,"tag":73,"props":776,"children":777},{},[778,784],{"type":39,"tag":94,"props":779,"children":781},{"className":780},[],[782],{"type":44,"value":783},"docs\u002Freference\u002Fmcp.md",{"type":44,"value":785}," — MCP tool reference for agent integrations",{"type":39,"tag":787,"props":788,"children":789},"style",{},[790],{"type":44,"value":791},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":793,"total":978},[794,812,832,845,858,876,892,912,926,933,948,965],{"slug":795,"name":795,"fn":796,"description":797,"org":798,"tags":799,"stars":809,"repoUrl":810,"updatedAt":811},"iris-development","integrate with Redis Iris AI products","Iris is Redis's umbrella for AI-focused products. Use this skill when integrating with the Iris Redis Agent Memory (RAM) data plane on Redis Cloud — recording session events for an AI agent, creating or searching long-term memories, configuring a memory store, or tuning background memory promotion. Code examples use the official `redis-agent-memory` (Python) and `@redis-iris\u002Fagent-memory` (TypeScript) SDKs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[800,801,804,807,808],{"name":20,"slug":21,"type":15},{"name":802,"slug":803,"type":15},"AI Infrastructure","ai-infrastructure",{"name":805,"slug":806,"type":15},"Backend","backend",{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},92,"https:\u002F\u002Fgithub.com\u002Fredis\u002Fagent-skills","2026-05-27T07:19:45.213725",{"slug":813,"name":813,"fn":814,"description":815,"org":816,"tags":817,"stars":809,"repoUrl":810,"updatedAt":831},"redis-clustering","configure Redis clustering and replication","Redis Cluster and replication guidance covering hash tags for multi-key operations, avoiding CROSSSLOT errors, and reading from replicas to scale read-heavy workloads. Use when designing keys for a sharded Redis Cluster, debugging CROSSSLOT errors on MGET \u002F SDIFF \u002F pipelines, configuring a multi-key transaction in a cluster, or routing reads to replicas for caches, analytics, or dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[818,821,824,827,830],{"name":819,"slug":820,"type":15},"Architecture","architecture",{"name":822,"slug":823,"type":15},"Database","database",{"name":825,"slug":826,"type":15},"Infrastructure","infrastructure",{"name":828,"slug":829,"type":15},"Performance","performance",{"name":9,"slug":8,"type":15},"2026-05-27T07:19:38.757599",{"slug":833,"name":833,"fn":834,"description":835,"org":836,"tags":837,"stars":809,"repoUrl":810,"updatedAt":844},"redis-connections","optimize Redis client connections","Redis client and connection guidance covering connection pooling, multiplexing, pipelining, client-side caching with RESP3, avoiding slow commands (KEYS, SMEMBERS, HGETALL), and tuning socket timeouts. Use when configuring a Redis client (redis-py, Jedis, Lettuce, NRedisStack), batching commands for throughput, eliminating per-request connection creation, iterating large keyspaces with SCAN, enabling client-side caching for read-heavy workloads, or setting connect and read timeouts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[838,839,842,843],{"name":805,"slug":806,"type":15},{"name":840,"slug":841,"type":15},"Caching","caching",{"name":828,"slug":829,"type":15},{"name":9,"slug":8,"type":15},"2026-05-27T07:19:42.616757",{"slug":846,"name":846,"fn":847,"description":848,"org":849,"tags":850,"stars":809,"repoUrl":810,"updatedAt":857},"redis-core","model data with Redis structures","Core Redis modeling guidance — choose the right data structure (String, Hash, List, Set, Sorted Set, JSON, Stream, Vector Set) and use consistent colon-separated key names. Use when designing a Redis data model, caching objects, deciding between Hash and JSON, building counters, leaderboards, membership sets, or session stores, or when reviewing\u002Fcleaning up Redis key naming.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[851,852,855,856],{"name":819,"slug":820,"type":15},{"name":853,"slug":854,"type":15},"Data Modeling","data-modeling",{"name":822,"slug":823,"type":15},{"name":9,"slug":8,"type":15},"2026-05-27T07:19:41.317954",{"slug":859,"name":859,"fn":860,"description":861,"org":862,"tags":863,"stars":809,"repoUrl":810,"updatedAt":875},"redis-observability","monitor and triage Redis performance","Redis observability guidance — which metrics to monitor (memory, connections, hit ratio, ops\u002Fsec, rejected connections), which built-in commands to reach for during incident triage (SLOWLOG, INFO, MEMORY DOCTOR, CLIENT LIST, FT.PROFILE), and when to use the Redis Insight GUI. Use when setting up monitoring or alerts for a Redis instance, diagnosing a performance regression, profiling a slow FT.SEARCH query, or wiring Redis metrics into Prometheus, Datadog, or similar.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[864,867,870,873,874],{"name":865,"slug":866,"type":15},"Debugging","debugging",{"name":868,"slug":869,"type":15},"Monitoring","monitoring",{"name":871,"slug":872,"type":15},"Observability","observability",{"name":828,"slug":829,"type":15},{"name":9,"slug":8,"type":15},"2026-05-27T07:19:47.780873",{"slug":877,"name":877,"fn":878,"description":879,"org":880,"tags":881,"stars":809,"repoUrl":810,"updatedAt":891},"redis-search","implement Redis Search indexing and queries","Redis Search guidance covering FT.CREATE schema design, field type selection (TEXT, TAG, NUMERIC, GEO, GEOSHAPE, VECTOR, JSON path), DIALECT 2 query syntax, FT.SEARCH \u002F FT.AGGREGATE \u002F FT.HYBRID command selection, vector similarity with HNSW or FLAT, hybrid retrieval combining lexical and vector ranking, RAG pipelines, zero-downtime index updates via aliases, and debugging with FT.PROFILE and FT.EXPLAIN. Use when defining a search index on Hash or JSON documents, writing FT.SEARCH queries with filters, sorting, aggregation, or vector KNN, tuning HNSW parameters, building a RAG retrieval pipeline, or troubleshooting slow or empty search results.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[882,883,884,887,888],{"name":819,"slug":820,"type":15},{"name":822,"slug":823,"type":15},{"name":885,"slug":886,"type":15},"Engineering","engineering",{"name":9,"slug":8,"type":15},{"name":889,"slug":890,"type":15},"Search","search","2026-06-24T07:39:43.089819",{"slug":893,"name":893,"fn":894,"description":895,"org":896,"tags":897,"stars":809,"repoUrl":810,"updatedAt":911},"redis-security","secure Redis instances and clusters","Redis security guidance covering authentication (requirepass and ACL users), TLS, ACL-based least-privilege access control, restricting network exposure via bind and protected-mode, firewall rules, and disabling dangerous commands. Use when deploying Redis to production, defining ACL users for an application, configuring TLS connections, locking down a Redis instance behind a firewall, or auditing a Redis deployment for security hardening.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[898,901,904,907,908],{"name":899,"slug":900,"type":15},"Access Control","access-control",{"name":902,"slug":903,"type":15},"Authentication","authentication",{"name":905,"slug":906,"type":15},"Compliance","compliance",{"name":9,"slug":8,"type":15},{"name":909,"slug":910,"type":15},"Security","security","2026-05-27T07:19:40.030241",{"slug":913,"name":913,"fn":914,"description":915,"org":916,"tags":917,"stars":809,"repoUrl":810,"updatedAt":925},"redis-semantic-cache","implement semantic caching with Redis","Redis LangCache guidance for semantic caching of LLM responses on Redis Cloud — calling search\u002Fset via the SDK or REST API, tuning the similarity threshold, separating caches per task type, and filtering with custom attributes. Use when caching LLM completions or RAG answers to cut API cost and latency, building a cache-aside layer in front of OpenAI \u002F Anthropic \u002F etc., tuning hit rate vs precision, or splitting one app's LLM workloads into multiple LangCache caches.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[918,919,920,923,924],{"name":802,"slug":803,"type":15},{"name":840,"slug":841,"type":15},{"name":921,"slug":922,"type":15},"LLM","llm",{"name":9,"slug":8,"type":15},{"name":889,"slug":890,"type":15},"2026-05-27T07:19:43.897283",{"slug":4,"name":4,"fn":5,"description":6,"org":927,"tags":928,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[929,930,931,932],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"slug":934,"name":934,"fn":935,"description":936,"org":937,"tags":938,"stars":23,"repoUrl":24,"updatedAt":947},"codex-settings-sync","sync Codex settings across computers","Use when the user wants to migrate Codex state in ~\u002F.codex into Agent Filesystem and mount the same shared Codex memory\u002Fsettings across multiple computers. Recommends a .afsignore before migration and defaults to excluding worktrees, caches, logs, and temporary files.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[939,942,943,946],{"name":940,"slug":941,"type":15},"Codex","codex",{"name":17,"slug":18,"type":15},{"name":944,"slug":945,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-04-10T04:51:07.268248",{"slug":949,"name":949,"fn":950,"description":951,"org":952,"tags":953,"stars":962,"repoUrl":963,"updatedAt":964},"cloud-database-provisioning","provision Redis Cloud databases","Provision a Redis Cloud database end-to-end — Essentials (fixed plan) or Pro (custom) — using Redis Cloud MCP tools",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[954,957,958,961],{"name":955,"slug":956,"type":15},"Cloud","cloud",{"name":822,"slug":823,"type":15},{"name":959,"slug":960,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},15,"https:\u002F\u002Fgithub.com\u002Fredis\u002Fredisctl","2026-06-03T07:53:00.906753",{"slug":966,"name":966,"fn":967,"description":968,"org":969,"tags":970,"stars":962,"repoUrl":963,"updatedAt":977},"compare-approaches","prototype Redis data model alternatives","Prototype and compare 2-3 Redis data model alternatives for the same workload",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[971,972,973,976],{"name":853,"slug":854,"type":15},{"name":822,"slug":823,"type":15},{"name":974,"slug":975,"type":15},"Prototyping","prototyping",{"name":9,"slug":8,"type":15},"2026-05-27T07:19:55.591944",27,{"items":980,"total":237},[981,988],{"slug":4,"name":4,"fn":5,"description":6,"org":982,"tags":983,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[984,985,986,987],{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"slug":934,"name":934,"fn":935,"description":936,"org":989,"tags":990,"stars":23,"repoUrl":24,"updatedAt":947},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[991,992,993,994],{"name":940,"slug":941,"type":15},{"name":17,"slug":18,"type":15},{"name":944,"slug":945,"type":15},{"name":9,"slug":8,"type":15}]