Your intelligent assistant, built as a Claude Code plugin. Geoffrey learns your preferences and patterns over time, providing personalized assistance across work, travel, and personal tasks.
Named after Geoffrey Hinton (godfather of AI) and Geoffrey from Fresh Prince of Bel-Air.
# Install via Claude Code
claude plugin marketplace add krishagel/geoffrey
claude plugin install geoffrey@geoffrey
# For detailed setup, see INSTALL.mdVersion: 0.26.0 Status: In Active Development
- ✅ Plugin structure with GitHub distribution
- ✅ Knowledge management skill
- ✅ OmniFocus manager skill with AppleScript/JXA integration
- ✅ Strategic planning manager skill (annual reviews + quarterly check-ins)
- ✅ Freshservice manager skill
- ✅ Google Workspace integration
- ✅ Browser control skill
- ✅ Multi-model research skill
- ✅ Image generation skill
- ✅ /preferences command
- ✅ iCloud knowledge storage
- ✅ Versioning and CHANGELOG tracking
- 🔜 Travel planning skill (Phase 2 expansion)
- 🔜 Team management skill (Phase 3)
- 🔜 Automatic learning from conversations (Phase 4)
- Learning-enabled: Remembers your preferences with confidence scoring
- Skills-based: Capabilities activate automatically based on context
- Privacy-first: Your data in iCloud, code in GitHub
- Multi-machine: Same Geoffrey, same preferences, different devices
- Open source: MIT licensed, community contributions welcome
Geoffrey's architecture follows principles inspired by Personal AI Infrastructure v2.0. These guide all development decisions.
Architecture matters more than AI capability.
The structure around the AI—skills, hooks, knowledge storage—determines what's possible. A well-designed scaffold makes the AI more effective; a poor one limits even the best model.
Example: Three-tier progressive disclosure (Tier 1: always loaded, Tier 2: on activation, Tier 3: just-in-time) keeps context lean while enabling rich capabilities.
Build deterministic CLI tools, then wrap with AI orchestration.
Code is cheaper, faster, and more reliable than prompts. Scripts handle data fetching and processing; AI handles orchestration and natural language.
Example: omnifocus-manager/scripts/get_tags.js fetches tags deterministically. Geoffrey orchestrates when and how to use that data.
Favor predictable, repeatable outcomes over probabilistic behavior.
When possible, use deterministic code paths. Reserve AI judgment for tasks that require it. Runtime data fetching ensures always-current information without stale caches.
Example: Fetching OmniFocus tags at runtime instead of hardcoding 129 tags that could change.
Load only what's needed, when it's needed.
Context is precious. Tier 1 stays under 100 lines. Tier 2 loads when skills activate. Tier 3 fetches data just-in-time.
Example: OmniFocus skill loads SKILL.md on activation, fetches tags only when creating a task.
Modular, composable, single responsibility.
Each skill does one thing well. Skills compose to handle complex workflows. Clear boundaries between concerns.
Example: knowledge-manager learns preferences, omnifocus-manager manages tasks, freshservice-manager handles tickets—each focused and independent.
Infrastructure learns and improves from experience.
Hooks extract patterns automatically. History enables preference detection. The system gets smarter over time without manual updates.
Example: SessionEnd hooks analyze conversations, update learned-preferences.json, and route summaries to Obsidian by content type.
Dynamic routing with modular loading.
SKILL.md frontmatter defines triggers. Skills activate automatically based on context. No manual switching required.
Example: "Add a task to OmniFocus" → omnifocus-manager activates. "What are my travel preferences?" → knowledge-manager activates.
Command-line tools over GUIs.
All scripts are CLI-based for automation and composability. Use bun runtime for JavaScript. Standard input/output for integration.
Example: bun scripts/add_task.js creates tasks programmatically, avoiding GUI dependencies.
Consistent personality and decision framework.
Tier 1 identity always loaded: strengths, values, decision style. Enables personalized assistance aligned with user's cognitive patterns.
Example: Understanding "Green-Orange Analytical Action-Taker" profile shapes how Geoffrey presents options and makes recommendations.
Validate against code, never assume behavior.
Always inspect before claiming. Use conservative language ("functionally validated" vs "production-ready"). Question all claims with "What evidence supports this?"
Example: Before saying tests pass, actually run them. Before claiming a feature works, verify in the codebase.
- Specification-First: Test before implementation (improving)
- History Systems: Session capture and categorization (implemented in #4)
- Science as Cognitive Loop: Hypothesis → Experiment → Measure (future)
See PAI v2.0's 14 Founding Principles for the full original framework.
- macOS (for iCloud sync)
- Claude Code 2.0+
- iCloud Drive enabled
- Git
# 1. Clone repository
git clone https://github.com/krishagel/geoffrey.git
cd geoffrey
# 2. Set up iCloud knowledge directory
mkdir -p ~/Library/Mobile\ Documents/com~apple~CloudDocs/Geoffrey/knowledge
# 3. Add as local marketplace (for development)
/plugin marketplace add ~/non-ic-code/geoffrey
# 4. Install plugin
/plugin install geoffrey@geoffrey
# 5. Verify installation
/preferencesJust tell Geoffrey your preferences in natural language:
> "I always prefer Marriott hotels. I'm Platinum Elite."
Geoffrey: "I've learned your hotel preferences:
- Primary chain: Marriott
- Loyalty tier: Platinum Elite
- Confidence: 1.0 (explicitly stated)
Stored in knowledge base."
/preferences # View all preferences
/preferences travel # View travel preferences only
> "Actually, I prefer aisle seats on flights"
Geoffrey: "Updated your airline preferences:
- Seat preference: Aisle (was: Window)
- Confidence: 1.0"
Geoffrey Plugin
├── Skills (auto-activate)
│ └── knowledge-manager ← Phase 1
├── Commands (user-invoked)
│ └── /preferences ← Phase 1
├── Agents (specialized workers)
│ └── (coming in Phase 2+)
└── Hooks (automation)
└── (coming in Phase 4)
Knowledge Storage (iCloud)
└── ~/Library/.../Geoffrey/knowledge/
├── preferences.json ← Phase 1
├── memory.jsonl ← Phase 4
└── patterns.json ← Phase 4
# 1. Make changes to Geoffrey files
cd ~/non-ic-code/geoffrey
# Edit skills, commands, etc.
# 2. Reload plugin
/plugin reload geoffrey
# 3. Test changes
> "Test the feature"geoffrey/
├── .claude-plugin/
│ ├── plugin.json # Plugin metadata
│ └── marketplace.json # Marketplace config
├── skills/
│ └── knowledge-manager/ # Knowledge management skill
│ └── SKILL.md
├── commands/
│ └── preferences.md # /preferences command
├── agents/ # (Future)
├── hooks/
│ └── hooks.json # Hook definitions
├── .gitignore
└── README.md # This file
preferences.json:
{
"version": "1.0",
"last_updated": "2025-11-17T10:30:00Z",
"preferences": {
"travel": {
"hotels": {
"primary_chain": "Marriott",
"loyalty_tier": "Platinum Elite",
"confidence": 1.0,
"learned_from": ["explicit:2025-11-17"],
"last_updated": "2025-11-17T10:30:00Z"
}
}
}
}- Basic plugin structure
- Knowledge management skill
- /preferences command
- iCloud storage
- Travel planning skill
- Trip planning based on preferences
- OmniFocus integration
- Points optimization
- Team management skill
- Freshservice integration
- Employee support workflows
- Post-conversation hooks
- Automatic preference extraction
- Pattern detection
- Confidence scoring refinement
Geoffrey's skills activate automatically based on what you say:
> "Plan my trip to Seattle"
→ travel-planning skill activates (Phase 2)
> "How is my team doing?"
→ team-management skill activates (Phase 3)
> "I prefer Marriott hotels"
→ knowledge-manager skill activates (Phase 1)
Geoffrey tracks how confident it is about each preference:
- 1.0 = You explicitly told Geoffrey
- 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
Higher confidence preferences take priority in suggestions.
- Local storage: All data in your iCloud Drive
- No tracking: Geoffrey doesn't send data anywhere
- You own it: Edit or delete knowledge files anytime
- Open source: Audit the code yourself
- Encrypted: Consider encrypting sensitive data (loyalty numbers)
Quick Install:
claude plugin marketplace add krishagel/geoffrey
claude plugin install geoffrey@geoffreyFull Setup Guide: See INSTALL.md for complete installation instructions including:
- Prerequisites (Bun, Python, uv)
- API key configuration
- iCloud setup
- Skill-specific setup (OmniFocus, Obsidian, etc.)
Contributions welcome! Geoffrey is open source and we'd love your help.
How to contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-skill) - Make your changes following our coding standards
- Test thoroughly (all skills must work)
- Commit with clear messages (
v0.X.Y: Description) - Push to your fork
- Open a pull request
Areas we need help:
- New skills (travel planning, health tracking, etc.)
- Documentation improvements
- Bug fixes
- Performance optimizations
- Testing and QA
Development setup: See INSTALL.md
Geoffrey is inspired by:
- Personal AI Infrastructure by Daniel Miessler
- Claude Code's plugin system
- Personal assistant paradigm
MIT License - see LICENSE for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: kris@krishagel.com
- Anthropic for Claude Code
- Daniel Miessler for Personal AI Infrastructure inspiration
- The open source community
Built with ❤️ using Claude Code
Version: 0.26.0 | Phase 2 (Core Skills) Last updated: January 24, 2026