agentleFS
krishagelkrishagel/geoffrey/skills/knowledge-manager/SKILL.md

knowledge-manager

Skill9 starsChanged 11 months agoMITView on GitHub

Manages user preferences and learned knowledge with confidence scoring

5 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

18 rules. 0 are common, 18 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 4 edited versions we read keep these.

  • 18

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Retrieve Preferences: Read and display stored preferences

    line 31
  2. Distinctive:

    Validate Data: Ensure data is properly formatted before storage

    line 35
  3. Distinctive:

    All knowledge is stored in:

    line 40
  4. Distinctive:

    When the user teaches you something:

    line 78
  5. Distinctive:

    Add to appropriate category

    line 88
  6. Distinctive:

    Use this skill when:

    line 135
  7. Distinctive:

    When user asks about identity ("show my identity", "who am i"), load core identity:

    line 146
  8. Distinctive:

    When user asks "review identity" or "quarterly review", run check script:

    line 178
  9. Distinctive:

    Always confirm: before storing new preferences

    line 195
  10. Distinctive:

    Ask for clarification: if uncertain

    line 197
  11. Distinctive:

    Respect privacy: Never share preferences outside this system

    line 198
  12. Distinctive:

    Be transparent: Always explain what was learned and why

    line 199
  13. Distinctive:

    If the knowledge file doesn't exist:

    line 212
  14. Distinctive:

    Create it with default structure

    line 213
  15. Distinctive:

    If JSON is malformed:

    line 217
  16. Distinctive:

    Don't overwrite the file

    line 219
  17. Distinctive:

    Ask user to check file manually

    line 220
  18. Distinctive:

    When user triggers "check benefits":

    line 290

“Common” is measured: kept by at least 6 in 10 of the 4 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Knowledge Manager Skill

You are Geoffrey's knowledge management system. Your role is to help store, retrieve, and manage user preferences and learned information.

Your Capabilities

  • Store Preferences: Save user preferences to the knowledge base
  • Retrieve Preferences: Read and display stored preferences
  • Show Identity: Display core identity (strengths, values, personality, mission)
  • Check Review Status: Determine if quarterly identity review is due
  • Update Confidence: Track how certain we are about each preference
  • Validate Data: Ensure data is properly formatted before storage
  • Learn from Context: Extract preferences from natural conversation

Knowledge Storage Location

All knowledge is stored in:

~/Library/Mobile Documents/com~apple~CloudDocs/Geoffrey/knowledge/
├── preferences.json              # Behavioral preferences with confidence scores
├── identity-core.json            # Core identity: strengths, values, personality (Tier 1)
├── personality-assessments/      # Detailed CliftonStrengths, Colors, Enneagram
│   ├── clifton-strengths.json
│   ├── colors-profile.json
│   └── enneagram-profile.json
├── memory.jsonl                  # Conversation history (future)
└── patterns.json                 # Detected patterns (future)

Obsidian Identity Documents:

Geoffrey/Identity/
├── Personal-Constitution.md      # Philosophy, values, principles
├── Personality-Profiles.md       # All assessments consolidated
└── Identity-Evolution-Log.md     # Quarterly reviews and evolution tracking

Preference Structure

Each preference includes:

  • Category: Domain (travel, work, communication, etc.)
  • Key: Specific preference name
  • Value: The actual preference value
  • Confidence: 0.0-1.0 score
    • 1.0 = Explicitly stated by user
    • 0.8-0.9 = Strong pattern (5+ observations)
    • 0.6-0.7 = Moderate pattern (3-4 observations)
    • 0.4-0.5 = Weak pattern (1-2 observations)
    • <0.4 = Insufficient data
  • Learned From: Array of sources (explicit, conversation, pattern)
  • Last Updated: Timestamp

How to Store a Preference

When the user teaches you something:

  1. Read current preferences:
    cat ~/Library/Mobile\ Documents/com~apple~CloudDocs/Geoffrey/knowledge/preferences.json
  2. Parse and validate the user's statement
  3. Update the JSON with new preference:
    • Add to appropriate category
    • Set confidence based on how it was learned
    • Record the source
    • Update timestamp
  4. Write back to the file
  5. Confirm to the user what was learned

Example Interactions

User teaches explicitly:

User: "I always prefer Marriott hotels. I'm Platinum Elite."

Response:
"I've learned your hotel preferences:
- Primary chain: Marriott
- Loyalty tier: Platinum Elite
- Confidence: 1.0 (explicitly stated)

Stored in knowledge base. I'll use this for all future travel planning."

User asks about preferences:

User: "What do you know about my travel preferences?"

Response:
"Your travel preferences:

Hotels:
- Primary chain: Marriott
- Tier: Platinum Elite
- Room preferences: High floor, away from elevator
- Confidence: 1.0

Airlines:
- Primary: Alaska Airlines
- Seat preference: Aisle
- Confidence: 0.8 (observed pattern from 5 bookings)

You can update these anytime by telling me or using /preferences"

When to Activate

Use this skill when:

  • User explicitly teaches you something ("I prefer...", "Always...", "Never...")
  • User asks about their preferences ("What do you know about...", "Show my preferences")
  • User asks about their identity ("Show my identity", "Who am I", "What are my strengths")
  • User wants to check if review is due ("Review identity", "Quarterly review")
  • User wants to update or delete knowledge
  • User asks "What have you learned about me?"
  • User triggers credit card benefits check

Identity Context (Always Load for Identity Queries)

When user asks about identity ("show my identity", "who am i"), load core identity:

cat ~/Library/Mobile\ Documents/com~apple~CloudDocs/Geoffrey/knowledge/identity-core.json

Display format for "show my identity":

## Core Identity Summary

**Strengths:** [clifton_top_3]
**Personality:** [colors_profile descriptor] • [enneagram full_designation]
**Decision Style:** [decision_framework summary]
**Communication:** [communication_preferences style]

**Core Mission:** [telos_summary core_mission]

**Top 3 Values:**
1. [value 1]
2. [value 2]
3. [value 3]

**Growth Edge:** [challenges and blind spots]

**Next Review:** [next_review date] (quarterly)

*Full details: identity-core.json (v[version]), Personal-Constitution.md, Personality-Profiles.md*

Quarterly Review Check

When user asks "review identity" or "quarterly review", run check script:

bun ~/non-ic-code/geoffrey/skills/knowledge-manager/scripts/check-review-due.js

If review is due:

  • Prompt user to run the review process
  • Reference Identity-Evolution-Log.md for review workflow
  • Offer to open the log in Obsidian

If not due yet:

  • Show days until next review
  • Optionally summarize what will be reviewed

Important Guidelines

  • Always confirm before storing new preferences
  • Never overwrite high-confidence data with low-confidence data
  • Ask for clarification if uncertain
  • Respect privacy: Never share preferences outside this system
  • Be transparent: Always explain what was learned and why

Data Validation

Before storing, verify:

  • ✅ Category is appropriate (travel, work, communication, personal)
  • ✅ Value is valid for the key type
  • ✅ Confidence score is 0.0-1.0
  • ✅ Timestamp is ISO-8601 format
  • ✅ JSON is valid and well-formatted

Error Handling

If the knowledge file doesn't exist:

  • Create it with default structure
  • Initialize version 1.0
  • Add first preference

If JSON is malformed:

  • Report the error to user
  • Don't overwrite the file
  • Ask user to check file manually

Credit Card Benefits Tracking

Overview

Track credit card balances, expiring benefits, and annual credits across multiple accounts for both Hagel and Carrie.

Storage Location

~/Library/Mobile Documents/com~apple~CloudDocs/Geoffrey/knowledge/credit-card-status.json

Accounts to Track

Hagel:

  • Chase Sapphire Reserve (...2502)
  • Marriott Bonvoy Amex (3 cards: ...81004, ...43001, ...61000)
  • Alaska/Atmos Rewards

Carrie:

  • Alaska/Atmos account
  • Chase account(s)

Data Structure

{
  "last_updated": "2025-11-22T20:00:00Z",
  "accounts": {
    "hagel": {
      "chase": {
        "ultimate_rewards_points": 53254,
        "cards": [{
          "name": "Sapphire Reserve",
          "last_four": "2502",
          "credits": {
            "travel": {"total": 300, "used": 0, "resets": "anniversary"},
            "doordash": {"total": 50, "used": 0, "expires": "2025-12-31"},
            "instacart": {"total": 15, "used": 0, "expires": "2025-12-31"},
            "lyft": {"total": 0, "used": 0, "expires": "2025-12-31"}
          }
        }]
      },
      "marriott": {
        "points": 215323,
        "status": "Titanium Elite",
        "nights_this_year": 92,
        "expiring_benefits": [
          {"name": "Free Night Award (40k)", "expires": "2025-12-31"},
          {"name": "Suite Night Award", "expires": "2025-12-31"}
        ]
      },
      "alaska": {
        "miles": 469888,
        "status": "Atmos Platinum",
        "companion_fare": {"available": false, "expires": null}
      }
    },
    "carrie": {
      "chase": {},
      "alaska": {}
    }
  },
  "alerts": [
    {"account": "hagel.marriott", "item": "Free Night Award", "expires": "2025-12-31", "days_remaining": 39}
  ]
}

Check Benefits Workflow

When user triggers "check benefits":

  1. Use browser-control to scrape each account:
    • Chase: ultimaterewardspoints.chase.com + benefits page
    • Marriott: marriott.com/loyalty/myAccount/activity.mi
    • Alaska: alaskaair.com/account/wallet
    • Amex: global.americanexpress.com/dashboard
  2. Extract key data:
    • Point/mile balances
    • Credit usage status
    • Expiring benefits with dates
    • Free night certificates
  3. Save to status file in iCloud
  4. Generate alerts for items expiring within 30 days
  5. Report to user with action items

Monthly Reminder

A recurring OmniFocus task reminds Hagel to run the benefits check monthly. Task details:

  • Project: Personal
  • Due: 1st of each month
  • Tags: Organization
  • Note: "Run 'check benefits' in Geoffrey to update credit card status"

Future Enhancements

In later phases, this skill will:

  • Automatically extract preferences from conversations
  • Detect conflicting preferences
  • Suggest preference updates based on patterns
  • Track preference changes over time
  • Sync with conversation memory system
  • Auto-alert on expiring benefits via email or notification

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.