{
  "schemaVersion": "1.0",
  "item": {
    "slug": "satori",
    "name": "Satori",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/joelachance/satori",
    "canonicalUrl": "https://clawhub.ai/joelachance/satori",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/satori",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=satori",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "references/fact-criteria.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/satori"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/satori",
    "agentPageUrl": "https://openagent3.xyz/skills/satori/agent",
    "manifestUrl": "https://openagent3.xyz/skills/satori/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/satori/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Satori CLI Integration",
        "body": "Satori persists notable information across AI applications. It stores facts in both vector and knowledge graph databases for later retrieval."
      },
      {
        "title": "Environment Requirements",
        "body": "Works in: Claude Code, Cursor, Windsurf, or any AI tool with local terminal access."
      },
      {
        "title": "Authentication",
        "body": "The CLI auto-configures on first run:\n\nChecks ~/.config/satori/satori.json for API key and memory ID\nIf missing, creates the file and provisions new credentials automatically\nNo manual setup required"
      },
      {
        "title": "CLI Commands",
        "body": "Save facts:\n\nnpx -y @satori-sh/cli@latest add \"<facts>\"\n\nSearch for context:\n\nnpx -y @satori-sh/cli@latest search \"<query>\""
      },
      {
        "title": "Workflow: Proactive Search",
        "body": "At conversation start, if the user's message suggests existing context would help:\n\nExtract key entities/topics from user's first message\nRun search command with relevant query\nParse JSON response to extract relevant facts\nSilently incorporate retrieved context into response\nDo NOT announce \"I searched Satori\" unless results significantly impact the response\n\nParsing search results:\nThe CLI returns JSON. Extract the relevant facts and use them as context:\n\nnpx -y @satori-sh/cli search \"Flamingo project tech stack\"\n# Returns JSON with matching facts - parse and incorporate naturally\n\nExample triggers for proactive search:\n\n\"Let's continue working on [project]\"\n\"What's the status of [thing]\"\nReferences to past decisions without full context\nProject names, company names, people names"
      },
      {
        "title": "When to Save",
        "body": "Save at natural breakpoints:\n\nEnd of a decision-making discussion\nWhen user explicitly requests (\"remember this\", \"save this\")\nAfter establishing concrete preferences, names, dates, deadlines\nWhen significant project context is established"
      },
      {
        "title": "What to Save",
        "body": "See references/fact-criteria.md for detailed criteria.\n\nSAVE - Notable, persistent information:\n\nDecisions: \"Using PostgreSQL for the database\"\nTech preferences: \"User prefers Bun over Node\"\nNames/branding: \"Company name is Flamingo, they make pink cookies\"\nDates/deadlines: \"MVP deadline is March 15\"\nArchitecture choices: \"Microservices with event sourcing\"\nStrategic directions: \"Targeting enterprise customers first\"\nKey contacts: \"Sarah is the design lead\"\nProject context: \"Satori is an AI memory infrastructure company\"\n\nDO NOT SAVE - Transient, granular, or obvious:\n\nWork-in-progress feedback: \"the color scheme needs work\"\nClaude's explanations or code snippets\nTemporary debugging context\nGeneric preferences derivable from context\nConversational filler"
      },
      {
        "title": "Save Execution",
        "body": "Extract notable facts from conversation (see criteria)\nFormat as natural language, batch related facts together\nExecute CLI command\nOn success: continue silently (fire-and-forget)\nOn failure: notify user with error\n\nBatching: The API handles batching, so longer natural language text is fine:\n\nnpx -y @satori-sh/cli add \"User is building Satori, an AI memory infrastructure company. Tech stack: TypeScript, Bun, PostgreSQL. Deadline for MVP is March 15. Targeting developer tools market initially.\""
      },
      {
        "title": "Error Handling",
        "body": "If CLI fails or isn't installed:\n\n⚠️ Satori CLI error: [error message]\nTo install: npm install -g @satori-sh/cli\nFacts were not saved. Would you like me to show what I attempted to save?"
      },
      {
        "title": "Fact Formatting",
        "body": "Write facts as clear, standalone statements. Include context so facts make sense when retrieved later:\n\nGood: \"Satori project uses PostgreSQL for primary storage and FalkorDB for knowledge graphs\"\nBad: \"Using Postgres and FalkorDB\"\n\nGood: \"User prefers Bun runtime over Node.js for all JavaScript/TypeScript projects\"\nBad: \"Bun not Node\""
      }
    ],
    "body": "Satori CLI Integration\n\nSatori persists notable information across AI applications. It stores facts in both vector and knowledge graph databases for later retrieval.\n\nEnvironment Requirements\n\nWorks in: Claude Code, Cursor, Windsurf, or any AI tool with local terminal access.\n\nAuthentication\n\nThe CLI auto-configures on first run:\n\nChecks ~/.config/satori/satori.json for API key and memory ID\nIf missing, creates the file and provisions new credentials automatically\nNo manual setup required\nCLI Commands\n\nSave facts:\n\nnpx -y @satori-sh/cli@latest add \"<facts>\"\n\n\nSearch for context:\n\nnpx -y @satori-sh/cli@latest search \"<query>\"\n\nWorkflow: Proactive Search\n\nAt conversation start, if the user's message suggests existing context would help:\n\nExtract key entities/topics from user's first message\nRun search command with relevant query\nParse JSON response to extract relevant facts\nSilently incorporate retrieved context into response\nDo NOT announce \"I searched Satori\" unless results significantly impact the response\n\nParsing search results: The CLI returns JSON. Extract the relevant facts and use them as context:\n\nnpx -y @satori-sh/cli search \"Flamingo project tech stack\"\n# Returns JSON with matching facts - parse and incorporate naturally\n\n\nExample triggers for proactive search:\n\n\"Let's continue working on [project]\"\n\"What's the status of [thing]\"\nReferences to past decisions without full context\nProject names, company names, people names\nWorkflow: Save Facts\nWhen to Save\n\nSave at natural breakpoints:\n\nEnd of a decision-making discussion\nWhen user explicitly requests (\"remember this\", \"save this\")\nAfter establishing concrete preferences, names, dates, deadlines\nWhen significant project context is established\nWhat to Save\n\nSee references/fact-criteria.md for detailed criteria.\n\nSAVE - Notable, persistent information:\n\nDecisions: \"Using PostgreSQL for the database\"\nTech preferences: \"User prefers Bun over Node\"\nNames/branding: \"Company name is Flamingo, they make pink cookies\"\nDates/deadlines: \"MVP deadline is March 15\"\nArchitecture choices: \"Microservices with event sourcing\"\nStrategic directions: \"Targeting enterprise customers first\"\nKey contacts: \"Sarah is the design lead\"\nProject context: \"Satori is an AI memory infrastructure company\"\n\nDO NOT SAVE - Transient, granular, or obvious:\n\nWork-in-progress feedback: \"the color scheme needs work\"\nClaude's explanations or code snippets\nTemporary debugging context\nGeneric preferences derivable from context\nConversational filler\nSave Execution\nExtract notable facts from conversation (see criteria)\nFormat as natural language, batch related facts together\nExecute CLI command\nOn success: continue silently (fire-and-forget)\nOn failure: notify user with error\n\nBatching: The API handles batching, so longer natural language text is fine:\n\nnpx -y @satori-sh/cli add \"User is building Satori, an AI memory infrastructure company. Tech stack: TypeScript, Bun, PostgreSQL. Deadline for MVP is March 15. Targeting developer tools market initially.\"\n\nError Handling\n\nIf CLI fails or isn't installed:\n\n⚠️ Satori CLI error: [error message]\nTo install: npm install -g @satori-sh/cli\nFacts were not saved. Would you like me to show what I attempted to save?\n\nFact Formatting\n\nWrite facts as clear, standalone statements. Include context so facts make sense when retrieved later:\n\nGood: \"Satori project uses PostgreSQL for primary storage and FalkorDB for knowledge graphs\" Bad: \"Using Postgres and FalkorDB\"\n\nGood: \"User prefers Bun runtime over Node.js for all JavaScript/TypeScript projects\" Bad: \"Bun not Node\""
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/joelachance/satori",
    "publisherUrl": "https://clawhub.ai/joelachance/satori",
    "owner": "joelachance",
    "version": "0.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/satori",
    "downloadUrl": "https://openagent3.xyz/downloads/satori",
    "agentUrl": "https://openagent3.xyz/skills/satori/agent",
    "manifestUrl": "https://openagent3.xyz/skills/satori/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/satori/agent.md"
  }
}