{
  "schemaVersion": "1.0",
  "item": {
    "slug": "failure-memory",
    "name": "Failure Memory",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/leegitw/failure-memory",
    "canonicalUrl": "https://clawhub.ai/leegitw/failure-memory",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/failure-memory",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=failure-memory",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.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. 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. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "failure-memory",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T10:49:03.149Z",
      "expiresAt": "2026-05-08T10:49:03.149Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=failure-memory",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=failure-memory",
        "contentDisposition": "attachment; filename=\"failure-memory-1.5.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "failure-memory"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/failure-memory"
    },
    "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/failure-memory",
    "agentPageUrl": "https://openagent3.xyz/skills/failure-memory/agent",
    "manifestUrl": "https://openagent3.xyz/skills/failure-memory/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/failure-memory/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. 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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "failure-memory (記憶)",
        "body": "Unified skill for failure detection, observation recording, memory search, and pattern convergence.\nConsolidates 10 granular skills into a single coherent memory system.\n\nTrigger: 失敗発生 (failure occurred)\n\nSource skills: failure-tracker, observation-recorder, memory-search, topic-tagger, failure-detector, evidence-tier, effectiveness-metrics, pattern-convergence-detector, positive-framer, contextual-injection"
      },
      {
        "title": "Installation",
        "body": "openclaw install leegitw/failure-memory\n\nDependencies: leegitw/context-verifier (for file change detection)\n\n# Install with dependencies\nopenclaw install leegitw/context-verifier\nopenclaw install leegitw/failure-memory\n\nStandalone usage: This skill can function independently for basic failure tracking.\nFor full lifecycle management, install the complete suite (see Neon Agentic Suite).\n\nData handling: This skill operates within your agent's trust boundary. When triggered,\nit uses your agent's configured model for failure detection and pattern recording. No external APIs\nor third-party services are called. Results are written to .learnings/ in your workspace."
      },
      {
        "title": "What This Solves",
        "body": "AI systems often make the same mistakes repeatedly — deleting working code, missing edge cases, forgetting context. This skill turns failures into learning by:\n\nDetecting failures when they happen (not after)\nRecording observations with R/C/D counters (Recurrence/Confirmations/Disconfirmations)\nFinding patterns within the workspace's .learnings/ directory\nPromoting to constraints when evidence threshold is met\n\nThe insight: Systems learn better from consequences than instructions. A failure that happened teaches more than a rule that might apply.\n\nScope note: Pattern detection operates within the current workspace only. Observations\nare stored in .learnings/ and searched locally. No cross-project data access occurs."
      },
      {
        "title": "Usage",
        "body": "/fm <sub-command> [arguments]"
      },
      {
        "title": "Sub-Commands",
        "body": "CommandCJKLogicTrigger/fm detect検出fail∈{test,user,API}→recordNext Steps (auto)/fm record記録pattern→obs, R++∨C++∨D++Next Steps (auto)/fm search索引query(pattern∨tag∨slug)→obs[]Explicit/fm classify分類obs→tier∈{N=1:弱,N=2:中,N≥3:強}Explicit/fm status状態eligible:R≥3∧C≥2, recent:30dExplicit/fm refactor整理obs[]→merge∨split∨restructureExplicit/fm converge収束pattern[]→detect(similarity≥0.8)Explicit"
      },
      {
        "title": "/fm detect",
        "body": "ArgumentRequiredDescriptiontypeYesFailure type: test, user, api, errorcontextNoAdditional context for the failure"
      },
      {
        "title": "/fm record",
        "body": "ArgumentRequiredDescriptionpatternYesPattern description or observation IDcounterNoCounter to increment: R (default), C, or D"
      },
      {
        "title": "/fm search",
        "body": "ArgumentRequiredDescriptionqueryYesSearch pattern, tag, or slugstatusNoFilter by status: pending, eligible, all (default)"
      },
      {
        "title": "/fm classify",
        "body": "ArgumentRequiredDescriptionobservationYesObservation ID or pattern"
      },
      {
        "title": "/fm status",
        "body": "ArgumentRequiredDescription--eligibleNoShow only eligible observations (R≥3 ∧ C≥2)--recentNoShow only observations from last 30 days"
      },
      {
        "title": "/fm refactor",
        "body": "ArgumentRequiredDescriptionobservationsYesComma-separated observation IDsactionYesAction: merge, split, restructure"
      },
      {
        "title": "/fm converge",
        "body": "ArgumentRequiredDescription--thresholdNoSimilarity threshold (default: 0.8)"
      },
      {
        "title": "Detection Triggers",
        "body": "These patterns indicate when /fm detect should be invoked (user or orchestrator triggers):\n\nPatternSourceActiontest.exit_code != 0Tool output/fm detect test\"Actually...\", \"No, that's wrong\"User message/fm record correction\"I meant...\", \"Not X, Y\"User message/fm record correctionAPI 4xx/5xx responseTool output/fm detect api\"error:\", \"failed\", \"Exception\"Tool output/fm detect errorDeployment rollbackCI/CD output/fm detect deploymentDatabase migration failedTool output/fm detect migration"
      },
      {
        "title": "Example: API Failure Detection",
        "body": "[DETECTED] api failure\nPattern: payment-api-timeout\nContext: Payment API returned 504 after 30s\nObservation: OBS-20260215-002\nR: 1 → 3\nStatus: Eligible for constraint (R≥3)"
      },
      {
        "title": "Example: Deployment Failure Detection",
        "body": "[DETECTED] deployment failure\nPattern: staging-healthcheck-fail\nContext: Staging deployment failed health check on /api/health\nObservation: OBS-20260215-003\nR: 1 → 2\nStatus: Monitoring (R<3)"
      },
      {
        "title": "R/C/D Counters",
        "body": "CounterMeaningUpdated ByR (Recurrence)Auto-detected occurrences/fm detect, /fm recordC (Confirmations)Human-verified true positivesHuman via /fm record CD (Disconfirmations)Human-verified false positivesHuman via /fm record D"
      },
      {
        "title": "Evidence Tiers",
        "body": "TierCriteriaMeaning弱 (weak)N=1Single occurrence, may be noise中 (emerging)N=2Pattern emerging, monitor強 (strong)N≥3Established pattern, actionable"
      },
      {
        "title": "Slug Taxonomy",
        "body": "Observations are tagged with slugs: git-*, test-*, workflow-*, security-*, docs-*, quality-*"
      },
      {
        "title": "Metrics",
        "body": "prevention_rate: Failures prevented / Total potential failures\nfalse_positive_rate: D / (C + D)"
      },
      {
        "title": "/fm detect output",
        "body": "[DETECTED] test failure\nPattern: lint-before-commit\nObservation: OBS-20260215-001\nR: 1 → 2\nStatus: Monitoring (R<3)"
      },
      {
        "title": "/fm status output",
        "body": "=== Failure Memory Status ===\n\nEligible for constraint (R≥3 ∧ C≥2):\n- OBS-20260210-003: lint-before-commit (R=4, C=2, D=0)\n- OBS-20260212-007: test-before-push (R=3, C=3, D=1)\n\nRecent (last 30d): 12 observations\nPending review: 3 observations"
      },
      {
        "title": "Configuration",
        "body": "Configuration is loaded from (in order of precedence):\n\n.openclaw/failure-memory.yaml (OpenClaw standard)\n.claude/failure-memory.yaml (Claude Code compatibility)\nDefaults (built-in)\n\n# .openclaw/failure-memory.yaml\ndetection:\n  auto_detect: true          # Enable automatic failure detection\n  patterns:                   # Custom detection patterns\n    - \"FATAL:\"\n    - \"CRITICAL:\"\nthresholds:\n  eligibility_R: 3           # Recurrence threshold (default: 3)\n  eligibility_C: 2           # Confirmation threshold (default: 2)\n  false_positive_max: 0.2    # Max D/(C+D) ratio (default: 0.2)"
      },
      {
        "title": "Integration",
        "body": "Layer: Core\nDepends on: context-verifier (for file change detection)\nUsed by: constraint-engine (for eligibility checks), governance (for state queries)"
      },
      {
        "title": "Failure Modes",
        "body": "ConditionBehaviorInvalid sub-commandList available sub-commandsMissing observation IDError with usage exampleNo matches found\"No observations match query\"Duplicate detectionIncrement R counter, don't create new observation"
      },
      {
        "title": "Next Steps",
        "body": "After invoking this skill:\n\nConditionActionR incrementedCheck eligibility: R≥3 ∧ C≥2 → notify userR≥3 ∧ C≥2Suggest /ce generate for constraintPattern recurringLink with See Also, bump priorityAlwaysUpdate .learnings/ERRORS.md or .learnings/LEARNINGS.md"
      },
      {
        "title": "Workspace Files",
        "body": "This skill reads/writes:\n\n.learnings/\n├── ERRORS.md        # [ERR-YYYYMMDD-XXX] command failures\n├── LEARNINGS.md     # [LRN-YYYYMMDD-XXX] corrections, best practices\n└── observations/    # Individual observation files\n    └── OBS-YYYYMMDD-XXX.md"
      },
      {
        "title": "Security Considerations",
        "body": "What this skill accesses:\n\nConfiguration files in .openclaw/failure-memory.yaml and .claude/failure-memory.yaml\nTool output and user messages in the current session (for failure detection)\nIts own workspace directory .learnings/ (read/write)\n\nWhat this skill does NOT access:\n\nFiles outside declared workspace paths\nSystem environment variables\nOther projects or sessions (observations are workspace-local)\nNetwork resources or external APIs\n\nWhat this skill does NOT do:\n\nSend data to external services\nAccess \"across sessions and projects\" beyond the current workspace\nExecute arbitrary code or run external commands\n\nData scope clarification:\n\n\"Failure detection\" scans tool output and user messages within the current agent session\nObservations are stored in .learnings/ within the current workspace only\nNo cross-project or cross-session data access occurs\nPattern matching is local to the configured workspace\n\nDetection trigger clarification:\nThe \"Detection Triggers\" table describes patterns that indicate when this skill should be\ninvoked. The agent can auto-invoke /fm detect when these patterns are detected, or users\ncan invoke manually. This enables true agentic behavior — failures are captured automatically.\n\nProvenance note:\nThis skill is developed by Live Neon (https://github.com/live-neon/skills) and published\nto ClawHub under the leegitw account. Both refer to the same maintainer."
      },
      {
        "title": "Acceptance Criteria",
        "body": "/fm detect creates or updates observation with R++\n /fm record supports R, C, D counter updates\n /fm search finds observations by pattern, tag, or slug\n /fm classify returns correct tier based on N count\n /fm status shows eligible observations\n /fm refactor merges/splits observations correctly\n /fm converge detects similar patterns (≥0.8 similarity)\n Detection triggers work for test failures, user corrections, API errors\n Workspace files follow self-improving-agent format\n\nConsolidated from 10 skills as part of agentic skills consolidation (2026-02-15)."
      }
    ],
    "body": "failure-memory (記憶)\n\nUnified skill for failure detection, observation recording, memory search, and pattern convergence. Consolidates 10 granular skills into a single coherent memory system.\n\nTrigger: 失敗発生 (failure occurred)\n\nSource skills: failure-tracker, observation-recorder, memory-search, topic-tagger, failure-detector, evidence-tier, effectiveness-metrics, pattern-convergence-detector, positive-framer, contextual-injection\n\nInstallation\nopenclaw install leegitw/failure-memory\n\n\nDependencies: leegitw/context-verifier (for file change detection)\n\n# Install with dependencies\nopenclaw install leegitw/context-verifier\nopenclaw install leegitw/failure-memory\n\n\nStandalone usage: This skill can function independently for basic failure tracking. For full lifecycle management, install the complete suite (see Neon Agentic Suite).\n\nData handling: This skill operates within your agent's trust boundary. When triggered, it uses your agent's configured model for failure detection and pattern recording. No external APIs or third-party services are called. Results are written to .learnings/ in your workspace.\n\nWhat This Solves\n\nAI systems often make the same mistakes repeatedly — deleting working code, missing edge cases, forgetting context. This skill turns failures into learning by:\n\nDetecting failures when they happen (not after)\nRecording observations with R/C/D counters (Recurrence/Confirmations/Disconfirmations)\nFinding patterns within the workspace's .learnings/ directory\nPromoting to constraints when evidence threshold is met\n\nThe insight: Systems learn better from consequences than instructions. A failure that happened teaches more than a rule that might apply.\n\nScope note: Pattern detection operates within the current workspace only. Observations are stored in .learnings/ and searched locally. No cross-project data access occurs.\n\nUsage\n/fm <sub-command> [arguments]\n\nSub-Commands\nCommand\tCJK\tLogic\tTrigger\n/fm detect\t検出\tfail∈{test,user,API}→record\tNext Steps (auto)\n/fm record\t記録\tpattern→obs, R++∨C++∨D++\tNext Steps (auto)\n/fm search\t索引\tquery(pattern∨tag∨slug)→obs[]\tExplicit\n/fm classify\t分類\tobs→tier∈{N=1:弱,N=2:中,N≥3:強}\tExplicit\n/fm status\t状態\teligible:R≥3∧C≥2, recent:30d\tExplicit\n/fm refactor\t整理\tobs[]→merge∨split∨restructure\tExplicit\n/fm converge\t収束\tpattern[]→detect(similarity≥0.8)\tExplicit\nArguments\n/fm detect\nArgument\tRequired\tDescription\ntype\tYes\tFailure type: test, user, api, error\ncontext\tNo\tAdditional context for the failure\n/fm record\nArgument\tRequired\tDescription\npattern\tYes\tPattern description or observation ID\ncounter\tNo\tCounter to increment: R (default), C, or D\n/fm search\nArgument\tRequired\tDescription\nquery\tYes\tSearch pattern, tag, or slug\nstatus\tNo\tFilter by status: pending, eligible, all (default)\n/fm classify\nArgument\tRequired\tDescription\nobservation\tYes\tObservation ID or pattern\n/fm status\nArgument\tRequired\tDescription\n--eligible\tNo\tShow only eligible observations (R≥3 ∧ C≥2)\n--recent\tNo\tShow only observations from last 30 days\n/fm refactor\nArgument\tRequired\tDescription\nobservations\tYes\tComma-separated observation IDs\naction\tYes\tAction: merge, split, restructure\n/fm converge\nArgument\tRequired\tDescription\n--threshold\tNo\tSimilarity threshold (default: 0.8)\nDetection Triggers\n\nThese patterns indicate when /fm detect should be invoked (user or orchestrator triggers):\n\nPattern\tSource\tAction\ntest.exit_code != 0\tTool output\t/fm detect test\n\"Actually...\", \"No, that's wrong\"\tUser message\t/fm record correction\n\"I meant...\", \"Not X, Y\"\tUser message\t/fm record correction\nAPI 4xx/5xx response\tTool output\t/fm detect api\n\"error:\", \"failed\", \"Exception\"\tTool output\t/fm detect error\nDeployment rollback\tCI/CD output\t/fm detect deployment\nDatabase migration failed\tTool output\t/fm detect migration\nExample: API Failure Detection\n[DETECTED] api failure\nPattern: payment-api-timeout\nContext: Payment API returned 504 after 30s\nObservation: OBS-20260215-002\nR: 1 → 3\nStatus: Eligible for constraint (R≥3)\n\nExample: Deployment Failure Detection\n[DETECTED] deployment failure\nPattern: staging-healthcheck-fail\nContext: Staging deployment failed health check on /api/health\nObservation: OBS-20260215-003\nR: 1 → 2\nStatus: Monitoring (R<3)\n\nCore Logic\nR/C/D Counters\nCounter\tMeaning\tUpdated By\nR (Recurrence)\tAuto-detected occurrences\t/fm detect, /fm record\nC (Confirmations)\tHuman-verified true positives\tHuman via /fm record C\nD (Disconfirmations)\tHuman-verified false positives\tHuman via /fm record D\nEvidence Tiers\nTier\tCriteria\tMeaning\n弱 (weak)\tN=1\tSingle occurrence, may be noise\n中 (emerging)\tN=2\tPattern emerging, monitor\n強 (strong)\tN≥3\tEstablished pattern, actionable\nSlug Taxonomy\n\nObservations are tagged with slugs: git-*, test-*, workflow-*, security-*, docs-*, quality-*\n\nMetrics\nprevention_rate: Failures prevented / Total potential failures\nfalse_positive_rate: D / (C + D)\nOutput\n/fm detect output\n[DETECTED] test failure\nPattern: lint-before-commit\nObservation: OBS-20260215-001\nR: 1 → 2\nStatus: Monitoring (R<3)\n\n/fm status output\n=== Failure Memory Status ===\n\nEligible for constraint (R≥3 ∧ C≥2):\n- OBS-20260210-003: lint-before-commit (R=4, C=2, D=0)\n- OBS-20260212-007: test-before-push (R=3, C=3, D=1)\n\nRecent (last 30d): 12 observations\nPending review: 3 observations\n\nConfiguration\n\nConfiguration is loaded from (in order of precedence):\n\n.openclaw/failure-memory.yaml (OpenClaw standard)\n.claude/failure-memory.yaml (Claude Code compatibility)\nDefaults (built-in)\n# .openclaw/failure-memory.yaml\ndetection:\n  auto_detect: true          # Enable automatic failure detection\n  patterns:                   # Custom detection patterns\n    - \"FATAL:\"\n    - \"CRITICAL:\"\nthresholds:\n  eligibility_R: 3           # Recurrence threshold (default: 3)\n  eligibility_C: 2           # Confirmation threshold (default: 2)\n  false_positive_max: 0.2    # Max D/(C+D) ratio (default: 0.2)\n\nIntegration\nLayer: Core\nDepends on: context-verifier (for file change detection)\nUsed by: constraint-engine (for eligibility checks), governance (for state queries)\nFailure Modes\nCondition\tBehavior\nInvalid sub-command\tList available sub-commands\nMissing observation ID\tError with usage example\nNo matches found\t\"No observations match query\"\nDuplicate detection\tIncrement R counter, don't create new observation\nNext Steps\n\nAfter invoking this skill:\n\nCondition\tAction\nR incremented\tCheck eligibility: R≥3 ∧ C≥2 → notify user\nR≥3 ∧ C≥2\tSuggest /ce generate for constraint\nPattern recurring\tLink with See Also, bump priority\nAlways\tUpdate .learnings/ERRORS.md or .learnings/LEARNINGS.md\nWorkspace Files\n\nThis skill reads/writes:\n\n.learnings/\n├── ERRORS.md        # [ERR-YYYYMMDD-XXX] command failures\n├── LEARNINGS.md     # [LRN-YYYYMMDD-XXX] corrections, best practices\n└── observations/    # Individual observation files\n    └── OBS-YYYYMMDD-XXX.md\n\nSecurity Considerations\n\nWhat this skill accesses:\n\nConfiguration files in .openclaw/failure-memory.yaml and .claude/failure-memory.yaml\nTool output and user messages in the current session (for failure detection)\nIts own workspace directory .learnings/ (read/write)\n\nWhat this skill does NOT access:\n\nFiles outside declared workspace paths\nSystem environment variables\nOther projects or sessions (observations are workspace-local)\nNetwork resources or external APIs\n\nWhat this skill does NOT do:\n\nSend data to external services\nAccess \"across sessions and projects\" beyond the current workspace\nExecute arbitrary code or run external commands\n\nData scope clarification:\n\n\"Failure detection\" scans tool output and user messages within the current agent session\nObservations are stored in .learnings/ within the current workspace only\nNo cross-project or cross-session data access occurs\nPattern matching is local to the configured workspace\n\nDetection trigger clarification: The \"Detection Triggers\" table describes patterns that indicate when this skill should be invoked. The agent can auto-invoke /fm detect when these patterns are detected, or users can invoke manually. This enables true agentic behavior — failures are captured automatically.\n\nProvenance note: This skill is developed by Live Neon (https://github.com/live-neon/skills) and published to ClawHub under the leegitw account. Both refer to the same maintainer.\n\nAcceptance Criteria\n /fm detect creates or updates observation with R++\n /fm record supports R, C, D counter updates\n /fm search finds observations by pattern, tag, or slug\n /fm classify returns correct tier based on N count\n /fm status shows eligible observations\n /fm refactor merges/splits observations correctly\n /fm converge detects similar patterns (≥0.8 similarity)\n Detection triggers work for test failures, user corrections, API errors\n Workspace files follow self-improving-agent format\n\nConsolidated from 10 skills as part of agentic skills consolidation (2026-02-15)."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/leegitw/failure-memory",
    "publisherUrl": "https://clawhub.ai/leegitw/failure-memory",
    "owner": "leegitw",
    "version": "1.5.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/failure-memory",
    "downloadUrl": "https://openagent3.xyz/downloads/failure-memory",
    "agentUrl": "https://openagent3.xyz/skills/failure-memory/agent",
    "manifestUrl": "https://openagent3.xyz/skills/failure-memory/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/failure-memory/agent.md"
  }
}