{
  "schemaVersion": "1.0",
  "item": {
    "slug": "penfield",
    "name": "Penfield",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/dial481/penfield",
    "canonicalUrl": "https://clawhub.ai/dial481/penfield",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/penfield",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=penfield",
    "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",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/penfield"
    },
    "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/penfield",
    "agentPageUrl": "https://openagent3.xyz/skills/penfield/agent",
    "manifestUrl": "https://openagent3.xyz/skills/penfield/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/penfield/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": "Penfield Memory",
        "body": "Persistent memory that compounds. Your agent remembers conversations, learns preferences, connects ideas, and picks up exactly where it left off—across sessions, days, and channels."
      },
      {
        "title": "Memory",
        "body": "ToolPurposeWhen to usepenfield_storeSave a memoryUser shares preferences, you make a discovery, a decision is made, you learn something worth keepingpenfield_recallHybrid search (BM25 + vector + graph)Need context before responding, resuming a topic, looking up prior decisionspenfield_searchSemantic search (higher vector weight)Fuzzy concept search when you don't have exact termspenfield_fetchGet memory by IDFollowing up on a specific memory from recall resultspenfield_update_memoryEdit existing memoryCorrecting, adding detail, changing importance or tags"
      },
      {
        "title": "Knowledge Graph",
        "body": "ToolPurposeWhen to usepenfield_connectLink two memoriesNew info relates to existing knowledge, building understanding over timepenfield_disconnectRemove link between memoriesRelationship was created in error or is no longer validpenfield_exploreTraverse graph from a memoryUnderstanding how ideas connect, finding related context"
      },
      {
        "title": "Context & Analysis",
        "body": "ToolPurposeWhen to usepenfield_save_contextCheckpoint a sessionEnding substantive work, preparing for handoff to another agentpenfield_restore_contextResume from checkpointPicking up where you or another agent left offpenfield_list_contextsList saved checkpointsFinding previous sessions to resumepenfield_reflectAnalyze memory patternsSession start orientation, finding themes, spotting gaps"
      },
      {
        "title": "Artifacts",
        "body": "ToolPurposeWhen to usepenfield_save_artifactStore a fileSaving diagrams, notes, code, reference docspenfield_retrieve_artifactGet a fileLoading previously saved workpenfield_list_artifactsList stored filesBrowsing saved artifactspenfield_delete_artifactRemove a fileCleaning up outdated artifacts"
      },
      {
        "title": "Personality",
        "body": "ToolPurposeWhen to usepenfield_awakenLoad personality configSession start, identity refresh"
      },
      {
        "title": "Writing Memories That Actually Work",
        "body": "Memory content quality determines whether Penfield is useful or useless. The difference is specificity and context.\n\nBad — vague, no context, unfindable later:\n\n\"User likes Python\"\n\nGood — specific, contextual, findable:\n\n\"[Preferences] User prefers Python over JavaScript for backend work.\nReason: frustrated by JS callback patterns and lack of type safety.\nValues type hints and explicit error handling. Uses FastAPI for APIs.\"\n\nWhat makes a memory findable:\n\nContext prefix in brackets: [Preferences], [Project: API Redesign], [Investigation: Payment Bug], [Decision]\nThe \"why\" behind the \"what\" — rationale matters more than the fact itself\nSpecific details — names, numbers, dates, versions, not vague summaries\nReferences to related memories — \"This builds on [earlier finding about X]\" or \"Contradicts previous assumption that Y\""
      },
      {
        "title": "Memory Types",
        "body": "Use the correct type. The system uses these for filtering and analysis.\n\nTypeUse forExamplefactVerified, durable information\"User's company runs Kubernetes on AWS EKS\"insightPatterns or realizations\"Deployment failures correlate with Friday releases\"correctionFixing prior understanding\"CORRECTION: The timeout isn't Redis — it's a hardcoded batch limit\"conversationSession summaries, notable exchanges\"Discussed migration strategy. User leaning toward incremental approach\"referenceSource material, citations\"RFC 8628 defines Device Code Flow for OAuth on input-constrained devices\"taskWork items, action items\"TODO: Benchmark recall latency after index rebuild\"strategyApproaches, methods, plans\"For user's codebase: always check types.ts first, it's the source of truth\"checkpointMilestone states\"Project at 80% — auth complete, UI remaining\"identity_coreImmutable identity factsSet via personality config, rarely stored manuallypersonality_traitBehavioral patternsSet via personality config, rarely stored manuallyrelationshipEntity connections\"User works with Chad Schultz on cybersecurity content\""
      },
      {
        "title": "Importance Scores",
        "body": "Use the full range. Not everything is 0.5.\n\nScoreMeaningExample0.9–1.0Critical — never forgetArchitecture decisions, hard-won corrections, core preferences0.7–0.8Important — reference oftenProject context, key facts about user's work0.5–0.6Normal — useful contextGeneral preferences, session summaries0.3–0.4Minor — background detailTangential facts, low-stakes observations0.1–0.2Trivial — probably don't storeIf you're questioning whether to store it, don't"
      },
      {
        "title": "Connecting Memories",
        "body": "Connections are what make Penfield powerful. An isolated memory is just a note. A connected memory is understanding.\n\nAfter storing a memory, always ask: What does this relate to? Then connect it."
      },
      {
        "title": "Relationship Types (24)",
        "body": "Knowledge Evolution: supersedes · updates · evolution_of\nUse when understanding changes. \"We thought X, now we know Y.\"\n\nEvidence: supports · contradicts · disputes\nUse when new information validates or challenges existing beliefs.\n\nHierarchy: parent_of · child_of · sibling_of · composed_of · part_of\nUse for structural relationships. Topics containing subtopics, systems containing components.\n\nCausation: causes · influenced_by · prerequisite_for\nUse for cause-and-effect chains and dependencies.\n\nImplementation: implements · documents · tests · example_of\nUse when something demonstrates, describes, or validates something else.\n\nConversation: responds_to · references · inspired_by\nUse for attribution and dialogue threads.\n\nSequence: follows · precedes\nUse for ordered steps in a process or timeline.\n\nDependencies: depends_on\nUse when one thing requires another."
      },
      {
        "title": "Recall Strategy",
        "body": "Good queries find things. Bad queries return noise.\n\nTune search weights for your query type:\n\nQuery typebm25_weightvector_weightgraph_weightExact term lookup (\"Twilio auth token\")0.60.30.1Concept search (\"how we handle errors\")0.20.60.2Connected knowledge (\"everything about payments\")0.20.30.5Default (balanced)0.40.40.2\n\nFilter aggressively:\n\nmemory_types: [\"correction\", \"insight\"] to find discoveries and corrections\nimportance_threshold: 0.7 to skip noise\nenable_graph_expansion: true to follow connections (default, usually leave on)"
      },
      {
        "title": "User shares a preference",
        "body": "penfield_store({\n  content: \"[Preferences] User wants responses under 3 paragraphs unless complexity demands more. Dislikes bullet points in casual conversation.\",\n  memory_type: \"fact\",\n  importance: 0.8,\n  tags: [\"preferences\", \"communication\"]\n})"
      },
      {
        "title": "Investigation tracking",
        "body": "// Start\npenfield_store({\n  content: \"[Investigation: Deployment Failures] Reports of 500 errors after every Friday deploy. Checking release pipeline, config drift, and traffic patterns.\",\n  memory_type: \"task\",\n  importance: 0.7,\n  tags: [\"investigation\", \"deployment\"]\n})\n\n// Discovery — connect to the investigation\ndiscovery = penfield_store({\n  content: \"[Investigation: Deployment Failures] INSIGHT: Friday deploys coincide with weekly batch job at 17:00 UTC. Both compete for DB connection pool. Not a deploy issue — it's resource contention.\",\n  memory_type: \"insight\",\n  importance: 0.9,\n  tags: [\"investigation\", \"deployment\", \"root-cause\"]\n})\npenfield_connect({\n  from_memory_id: discovery.id,\n  to_memory_id: initial_report.id,\n  relationship_type: \"responds_to\"\n})\n\n// Correction — supersede wrong assumption\ncorrection = penfield_store({\n  content: \"[Investigation: Deployment Failures] CORRECTION: Not a CI/CD problem. Friday batch job + deploy = connection pool exhaustion. Fix: stagger batch job to 03:00 UTC.\",\n  memory_type: \"correction\",\n  importance: 0.9,\n  tags: [\"investigation\", \"deployment\", \"correction\"]\n})\npenfield_connect({\n  from_memory_id: correction.id,\n  to_memory_id: initial_report.id,\n  relationship_type: \"supersedes\"\n})"
      },
      {
        "title": "Session handoff",
        "body": "penfield_save_context({\n  name: \"deployment-investigation-2026-02\",\n  description: \"Investigated deployment timeout issues. memory_id: \" + discovery.id,\n  memory_ids: [discovery.id, correction.id, initial_report.id]\n})\n\nNext session or different agent:\n\npenfield_restore_context({\n  name: \"deployment-investigation-2026-02\"\n})"
      },
      {
        "title": "What NOT to Store",
        "body": "Verbatim conversation transcripts (too verbose, low signal)\nEasily googled facts (use web search instead)\nEphemeral task state (use working memory)\nAnything the user hasn't consented to store about themselves\nEvery minor exchange (be selective — quality over quantity)"
      },
      {
        "title": "Tags",
        "body": "Keep them short, consistent, lowercase. 2–5 per memory.\n\nGood: preferences, architecture, investigation, correction, project-name\nBad: 2026-02-02, important-memory-about-deployment, UserPreferencesForCommunicationStyle"
      },
      {
        "title": "Also Available Outside OpenClaw",
        "body": "The native OpenClaw plugin is the fastest path, but Penfield works with any AI tool anywhere:\n\nClaude Connectors\n\nName: Penfield\nRemote MCP server URL: https://mcp.penfield.app\n\nClaude Code\n\nClaude mcp add --transport http --scope user penfield https://mcp.penfield.app\n\nMCP Server — for Gemini CLI, Cursor, Windsurf, Intent, Perplexity Desktop or any MCP-compatible tool:\n\n{\n  \"mcpServers\": {\n    \"penfield\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote@latest\",\n        \"https://mcp.penfield.app/\"\n      ]\n    }\n  }\n}\n\nAPI — direct HTTP access at api.penfield.app for custom integrations.\n\nSame memory, same knowledge graph, same account. The plugin is 4-5x faster (no MCP proxy layer), but everything stays in sync regardless of how you connect."
      },
      {
        "title": "Links",
        "body": "Plugin: openclaw-penfield on npm\nSource: github.com/penfieldlabs/openclaw-penfield\nSign up: portal.penfield.app/sign-up\nWebsite: penfield.app\nX: @penfieldlabs"
      }
    ],
    "body": "Penfield Memory\n\nPersistent memory that compounds. Your agent remembers conversations, learns preferences, connects ideas, and picks up exactly where it left off—across sessions, days, and channels.\n\nTools\nMemory\nTool\tPurpose\tWhen to use\npenfield_store\tSave a memory\tUser shares preferences, you make a discovery, a decision is made, you learn something worth keeping\npenfield_recall\tHybrid search (BM25 + vector + graph)\tNeed context before responding, resuming a topic, looking up prior decisions\npenfield_search\tSemantic search (higher vector weight)\tFuzzy concept search when you don't have exact terms\npenfield_fetch\tGet memory by ID\tFollowing up on a specific memory from recall results\npenfield_update_memory\tEdit existing memory\tCorrecting, adding detail, changing importance or tags\nKnowledge Graph\nTool\tPurpose\tWhen to use\npenfield_connect\tLink two memories\tNew info relates to existing knowledge, building understanding over time\npenfield_disconnect\tRemove link between memories\tRelationship was created in error or is no longer valid\npenfield_explore\tTraverse graph from a memory\tUnderstanding how ideas connect, finding related context\nContext & Analysis\nTool\tPurpose\tWhen to use\npenfield_save_context\tCheckpoint a session\tEnding substantive work, preparing for handoff to another agent\npenfield_restore_context\tResume from checkpoint\tPicking up where you or another agent left off\npenfield_list_contexts\tList saved checkpoints\tFinding previous sessions to resume\npenfield_reflect\tAnalyze memory patterns\tSession start orientation, finding themes, spotting gaps\nArtifacts\nTool\tPurpose\tWhen to use\npenfield_save_artifact\tStore a file\tSaving diagrams, notes, code, reference docs\npenfield_retrieve_artifact\tGet a file\tLoading previously saved work\npenfield_list_artifacts\tList stored files\tBrowsing saved artifacts\npenfield_delete_artifact\tRemove a file\tCleaning up outdated artifacts\nPersonality\nTool\tPurpose\tWhen to use\npenfield_awaken\tLoad personality config\tSession start, identity refresh\nWriting Memories That Actually Work\n\nMemory content quality determines whether Penfield is useful or useless. The difference is specificity and context.\n\nBad — vague, no context, unfindable later:\n\n\"User likes Python\"\n\n\nGood — specific, contextual, findable:\n\n\"[Preferences] User prefers Python over JavaScript for backend work.\nReason: frustrated by JS callback patterns and lack of type safety.\nValues type hints and explicit error handling. Uses FastAPI for APIs.\"\n\n\nWhat makes a memory findable:\n\nContext prefix in brackets: [Preferences], [Project: API Redesign], [Investigation: Payment Bug], [Decision]\nThe \"why\" behind the \"what\" — rationale matters more than the fact itself\nSpecific details — names, numbers, dates, versions, not vague summaries\nReferences to related memories — \"This builds on [earlier finding about X]\" or \"Contradicts previous assumption that Y\"\nMemory Types\n\nUse the correct type. The system uses these for filtering and analysis.\n\nType\tUse for\tExample\nfact\tVerified, durable information\t\"User's company runs Kubernetes on AWS EKS\"\ninsight\tPatterns or realizations\t\"Deployment failures correlate with Friday releases\"\ncorrection\tFixing prior understanding\t\"CORRECTION: The timeout isn't Redis — it's a hardcoded batch limit\"\nconversation\tSession summaries, notable exchanges\t\"Discussed migration strategy. User leaning toward incremental approach\"\nreference\tSource material, citations\t\"RFC 8628 defines Device Code Flow for OAuth on input-constrained devices\"\ntask\tWork items, action items\t\"TODO: Benchmark recall latency after index rebuild\"\nstrategy\tApproaches, methods, plans\t\"For user's codebase: always check types.ts first, it's the source of truth\"\ncheckpoint\tMilestone states\t\"Project at 80% — auth complete, UI remaining\"\nidentity_core\tImmutable identity facts\tSet via personality config, rarely stored manually\npersonality_trait\tBehavioral patterns\tSet via personality config, rarely stored manually\nrelationship\tEntity connections\t\"User works with Chad Schultz on cybersecurity content\"\nImportance Scores\n\nUse the full range. Not everything is 0.5.\n\nScore\tMeaning\tExample\n0.9–1.0\tCritical — never forget\tArchitecture decisions, hard-won corrections, core preferences\n0.7–0.8\tImportant — reference often\tProject context, key facts about user's work\n0.5–0.6\tNormal — useful context\tGeneral preferences, session summaries\n0.3–0.4\tMinor — background detail\tTangential facts, low-stakes observations\n0.1–0.2\tTrivial — probably don't store\tIf you're questioning whether to store it, don't\nConnecting Memories\n\nConnections are what make Penfield powerful. An isolated memory is just a note. A connected memory is understanding.\n\nAfter storing a memory, always ask: What does this relate to? Then connect it.\n\nRelationship Types (24)\n\nKnowledge Evolution: supersedes · updates · evolution_of Use when understanding changes. \"We thought X, now we know Y.\"\n\nEvidence: supports · contradicts · disputes Use when new information validates or challenges existing beliefs.\n\nHierarchy: parent_of · child_of · sibling_of · composed_of · part_of Use for structural relationships. Topics containing subtopics, systems containing components.\n\nCausation: causes · influenced_by · prerequisite_for Use for cause-and-effect chains and dependencies.\n\nImplementation: implements · documents · tests · example_of Use when something demonstrates, describes, or validates something else.\n\nConversation: responds_to · references · inspired_by Use for attribution and dialogue threads.\n\nSequence: follows · precedes Use for ordered steps in a process or timeline.\n\nDependencies: depends_on Use when one thing requires another.\n\nRecall Strategy\n\nGood queries find things. Bad queries return noise.\n\nTune search weights for your query type:\n\nQuery type\tbm25_weight\tvector_weight\tgraph_weight\nExact term lookup (\"Twilio auth token\")\t0.6\t0.3\t0.1\nConcept search (\"how we handle errors\")\t0.2\t0.6\t0.2\nConnected knowledge (\"everything about payments\")\t0.2\t0.3\t0.5\nDefault (balanced)\t0.4\t0.4\t0.2\n\nFilter aggressively:\n\nmemory_types: [\"correction\", \"insight\"] to find discoveries and corrections\nimportance_threshold: 0.7 to skip noise\nenable_graph_expansion: true to follow connections (default, usually leave on)\nWorkflows\nUser shares a preference\npenfield_store({\n  content: \"[Preferences] User wants responses under 3 paragraphs unless complexity demands more. Dislikes bullet points in casual conversation.\",\n  memory_type: \"fact\",\n  importance: 0.8,\n  tags: [\"preferences\", \"communication\"]\n})\n\nInvestigation tracking\n// Start\npenfield_store({\n  content: \"[Investigation: Deployment Failures] Reports of 500 errors after every Friday deploy. Checking release pipeline, config drift, and traffic patterns.\",\n  memory_type: \"task\",\n  importance: 0.7,\n  tags: [\"investigation\", \"deployment\"]\n})\n\n// Discovery — connect to the investigation\ndiscovery = penfield_store({\n  content: \"[Investigation: Deployment Failures] INSIGHT: Friday deploys coincide with weekly batch job at 17:00 UTC. Both compete for DB connection pool. Not a deploy issue — it's resource contention.\",\n  memory_type: \"insight\",\n  importance: 0.9,\n  tags: [\"investigation\", \"deployment\", \"root-cause\"]\n})\npenfield_connect({\n  from_memory_id: discovery.id,\n  to_memory_id: initial_report.id,\n  relationship_type: \"responds_to\"\n})\n\n// Correction — supersede wrong assumption\ncorrection = penfield_store({\n  content: \"[Investigation: Deployment Failures] CORRECTION: Not a CI/CD problem. Friday batch job + deploy = connection pool exhaustion. Fix: stagger batch job to 03:00 UTC.\",\n  memory_type: \"correction\",\n  importance: 0.9,\n  tags: [\"investigation\", \"deployment\", \"correction\"]\n})\npenfield_connect({\n  from_memory_id: correction.id,\n  to_memory_id: initial_report.id,\n  relationship_type: \"supersedes\"\n})\n\nSession handoff\npenfield_save_context({\n  name: \"deployment-investigation-2026-02\",\n  description: \"Investigated deployment timeout issues. memory_id: \" + discovery.id,\n  memory_ids: [discovery.id, correction.id, initial_report.id]\n})\n\n\nNext session or different agent:\n\npenfield_restore_context({\n  name: \"deployment-investigation-2026-02\"\n})\n\nWhat NOT to Store\nVerbatim conversation transcripts (too verbose, low signal)\nEasily googled facts (use web search instead)\nEphemeral task state (use working memory)\nAnything the user hasn't consented to store about themselves\nEvery minor exchange (be selective — quality over quantity)\nTags\n\nKeep them short, consistent, lowercase. 2–5 per memory.\n\nGood: preferences, architecture, investigation, correction, project-name Bad: 2026-02-02, important-memory-about-deployment, UserPreferencesForCommunicationStyle\n\nAlso Available Outside OpenClaw\n\nThe native OpenClaw plugin is the fastest path, but Penfield works with any AI tool anywhere:\n\nClaude Connectors\n\nName: Penfield\nRemote MCP server URL: https://mcp.penfield.app\n\n\nClaude Code\n\nClaude mcp add --transport http --scope user penfield https://mcp.penfield.app\n\n\nMCP Server — for Gemini CLI, Cursor, Windsurf, Intent, Perplexity Desktop or any MCP-compatible tool:\n\n{\n  \"mcpServers\": {\n    \"penfield\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"mcp-remote@latest\",\n        \"https://mcp.penfield.app/\"\n      ]\n    }\n  }\n}\n\n\nAPI — direct HTTP access at api.penfield.app for custom integrations.\n\nSame memory, same knowledge graph, same account. The plugin is 4-5x faster (no MCP proxy layer), but everything stays in sync regardless of how you connect.\n\nLinks\nPlugin: openclaw-penfield on npm\nSource: github.com/penfieldlabs/openclaw-penfield\nSign up: portal.penfield.app/sign-up\nWebsite: penfield.app\nX: @penfieldlabs"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dial481/penfield",
    "publisherUrl": "https://clawhub.ai/dial481/penfield",
    "owner": "dial481",
    "version": "2.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/penfield",
    "downloadUrl": "https://openagent3.xyz/downloads/penfield",
    "agentUrl": "https://openagent3.xyz/skills/penfield/agent",
    "manifestUrl": "https://openagent3.xyz/skills/penfield/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/penfield/agent.md"
  }
}