# Send Penfield to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- 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.
## Suggested prompts
### New install

```text
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.
```
### Upgrade existing

```text
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.
```
## Machine-readable fields
```json
{
  "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": {
    "downloadUrl": "/downloads/penfield",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=penfield",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "penfield",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T00:36:57.527Z",
      "expiresAt": "2026-05-14T00:36:57.527Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=penfield",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=penfield",
        "contentDisposition": "attachment; filename=\"penfield-2.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "penfield"
      },
      "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/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."
      ]
    }
  },
  "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"
  }
}
```
## Documentation

### Penfield Memory

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.

### Memory

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

### Knowledge Graph

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

### Context & Analysis

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

### Artifacts

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

### Personality

ToolPurposeWhen to usepenfield_awakenLoad personality configSession start, identity refresh

### Writing Memories That Actually Work

Memory content quality determines whether Penfield is useful or useless. The difference is specificity and context.

Bad — vague, no context, unfindable later:

"User likes Python"

Good — specific, contextual, findable:

"[Preferences] User prefers Python over JavaScript for backend work.
Reason: frustrated by JS callback patterns and lack of type safety.
Values type hints and explicit error handling. Uses FastAPI for APIs."

What makes a memory findable:

Context prefix in brackets: [Preferences], [Project: API Redesign], [Investigation: Payment Bug], [Decision]
The "why" behind the "what" — rationale matters more than the fact itself
Specific details — names, numbers, dates, versions, not vague summaries
References to related memories — "This builds on [earlier finding about X]" or "Contradicts previous assumption that Y"

### Memory Types

Use the correct type. The system uses these for filtering and analysis.

TypeUse 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"

### Importance Scores

Use the full range. Not everything is 0.5.

ScoreMeaningExample0.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

### Connecting Memories

Connections are what make Penfield powerful. An isolated memory is just a note. A connected memory is understanding.

After storing a memory, always ask: What does this relate to? Then connect it.

### Relationship Types (24)

Knowledge Evolution: supersedes · updates · evolution_of
Use when understanding changes. "We thought X, now we know Y."

Evidence: supports · contradicts · disputes
Use when new information validates or challenges existing beliefs.

Hierarchy: parent_of · child_of · sibling_of · composed_of · part_of
Use for structural relationships. Topics containing subtopics, systems containing components.

Causation: causes · influenced_by · prerequisite_for
Use for cause-and-effect chains and dependencies.

Implementation: implements · documents · tests · example_of
Use when something demonstrates, describes, or validates something else.

Conversation: responds_to · references · inspired_by
Use for attribution and dialogue threads.

Sequence: follows · precedes
Use for ordered steps in a process or timeline.

Dependencies: depends_on
Use when one thing requires another.

### Recall Strategy

Good queries find things. Bad queries return noise.

Tune search weights for your query type:

Query 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

Filter aggressively:

memory_types: ["correction", "insight"] to find discoveries and corrections
importance_threshold: 0.7 to skip noise
enable_graph_expansion: true to follow connections (default, usually leave on)

### User shares a preference

penfield_store({
  content: "[Preferences] User wants responses under 3 paragraphs unless complexity demands more. Dislikes bullet points in casual conversation.",
  memory_type: "fact",
  importance: 0.8,
  tags: ["preferences", "communication"]
})

### Investigation tracking

// Start
penfield_store({
  content: "[Investigation: Deployment Failures] Reports of 500 errors after every Friday deploy. Checking release pipeline, config drift, and traffic patterns.",
  memory_type: "task",
  importance: 0.7,
  tags: ["investigation", "deployment"]
})

// Discovery — connect to the investigation
discovery = penfield_store({
  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.",
  memory_type: "insight",
  importance: 0.9,
  tags: ["investigation", "deployment", "root-cause"]
})
penfield_connect({
  from_memory_id: discovery.id,
  to_memory_id: initial_report.id,
  relationship_type: "responds_to"
})

// Correction — supersede wrong assumption
correction = penfield_store({
  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.",
  memory_type: "correction",
  importance: 0.9,
  tags: ["investigation", "deployment", "correction"]
})
penfield_connect({
  from_memory_id: correction.id,
  to_memory_id: initial_report.id,
  relationship_type: "supersedes"
})

### Session handoff

penfield_save_context({
  name: "deployment-investigation-2026-02",
  description: "Investigated deployment timeout issues. memory_id: " + discovery.id,
  memory_ids: [discovery.id, correction.id, initial_report.id]
})

Next session or different agent:

penfield_restore_context({
  name: "deployment-investigation-2026-02"
})

### What NOT to Store

Verbatim conversation transcripts (too verbose, low signal)
Easily googled facts (use web search instead)
Ephemeral task state (use working memory)
Anything the user hasn't consented to store about themselves
Every minor exchange (be selective — quality over quantity)

### Tags

Keep them short, consistent, lowercase. 2–5 per memory.

Good: preferences, architecture, investigation, correction, project-name
Bad: 2026-02-02, important-memory-about-deployment, UserPreferencesForCommunicationStyle

### Also Available Outside OpenClaw

The native OpenClaw plugin is the fastest path, but Penfield works with any AI tool anywhere:

Claude Connectors

Name: Penfield
Remote MCP server URL: https://mcp.penfield.app

Claude Code

Claude mcp add --transport http --scope user penfield https://mcp.penfield.app

MCP Server — for Gemini CLI, Cursor, Windsurf, Intent, Perplexity Desktop or any MCP-compatible tool:

{
  "mcpServers": {
    "penfield": {
      "command": "npx",
      "args": [
        "mcp-remote@latest",
        "https://mcp.penfield.app/"
      ]
    }
  }
}

API — direct HTTP access at api.penfield.app for custom integrations.

Same 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.

### Links

Plugin: openclaw-penfield on npm
Source: github.com/penfieldlabs/openclaw-penfield
Sign up: portal.penfield.app/sign-up
Website: penfield.app
X: @penfieldlabs
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: dial481
- Version: 2.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-07T00:36:57.527Z
- Expires at: 2026-05-14T00:36:57.527Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/penfield)
- [Send to Agent page](https://openagent3.xyz/skills/penfield/agent)
- [JSON manifest](https://openagent3.xyz/skills/penfield/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/penfield/agent.md)
- [Download page](https://openagent3.xyz/downloads/penfield)