This commit is contained in:
mr0xb 2026-05-15 12:58:08 -04:00
commit 807b7a4504
No known key found for this signature in database
GPG key ID: D61C4E28AAE1BC5C
18 changed files with 567 additions and 0 deletions

View file

@ -0,0 +1,22 @@
Load context from Obsidian notes in the `Claude/` directory into the current conversation.
## Behavior
1. Derive the project name from the current working directory (use the repo or app folder name).
2. List files in `Claude/<project-name>/` using `mcp__obsidian__list_vault_files`.
3. If `$ARGUMENTS` is provided, treat it as a search query and use `mcp__obsidian__search_vault_smart` to find relevant notes across the entire `Claude/` directory instead of listing by project.
4. Read the most relevant notes:
- Without args: read the 3 most recent notes for the current project (by filename date prefix).
- With args: read the top 3 search results.
- Use `mcp__obsidian__get_vault_file` to fetch each note's content.
5. Synthesize what you loaded into a brief summary for the user, covering:
- What sessions were found and when they occurred
- Key decisions or context that is now loaded
- Any open questions or next steps from prior sessions that are still relevant
6. Explicitly tell the user: "I've loaded this context and will use it going forward in this conversation."
## Notes
- If no notes exist for the current project yet, say so and suggest running `/obsidian-save` at the end of a session.
- Do not dump raw note content at the user — synthesize and summarize it.
- If notes contain contradictory information, flag it and ask which is current.

View file

@ -0,0 +1,64 @@
Save current conversation context to an Obsidian note under the `Claude/` directory.
## What to save
Capture all of the following that are relevant to the current conversation:
- **Conversation summary**: What the user is trying to accomplish and why
- **Project context**: Relevant architecture, design decisions, or constraints discovered
- **Task state**: What has been completed, what is in progress, what is blocked or pending
- **Key decisions**: Any choices made and the reasoning behind them
- **Open questions**: Unresolved questions or things to revisit
- **Next steps**: Concrete actions that should follow from this session
## File location
Derive the project name from the current working directory (use the repo or app folder name). Save to:
```
Claude/<project-name>/<YYYY-MM-DD>-<short-slug>.md
```
Use today's date and a short 2-4 word slug describing the session topic (e.g. `2026-04-29-ruth-plugin-setup.md`).
If `$ARGUMENTS` is provided, use it as the slug instead of generating one.
## Note format
Use this structure:
```markdown
---
date: <YYYY-MM-DD>
project: <project-name>
tags: [claude-context]
---
# <Session Title>
## Summary
<1-3 sentence overview of what this session was about>
## Context
<Relevant project background, architecture notes, constraints>
## Decisions
<Decisions made and rationale>
## Task State
<What was completed, in progress, or blocked>
## Open Questions
<Anything unresolved>
## Next Steps
<Concrete follow-up actions>
```
## Steps
1. Determine the project name from the working directory.
2. Determine today's date.
3. Draft the note content based on the current conversation.
4. Use `mcp__obsidian__create_vault_file` to write the note to the vault.
5. Confirm to the user where the note was saved.

View file

@ -0,0 +1,14 @@
{
"restrictions": {
"allow_remote_control": {
"allowed": false
},
"allow_quick_web_setup": {
"allowed": false
},
"enforce_web_search_mcp_isolation": {
"allowed": false
}
},
"compliance_taints": []
}

128
.claude/settings.json Normal file
View file

@ -0,0 +1,128 @@
{
"env": {
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "100000"
},
"hooks": {
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "afplay ~/.claude/sounds/mario/pause.wav 2>/dev/null || true",
"async": true
},
{
"type": "command",
"command": "osascript ~/bin/confetti.scpt",
"async": true
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "/usr/local/bin/aicodemetricsd hook claude --hook-input stdin",
"timeout": 2
}
]
}
],
"PostToolUseFailure": [
{
"hooks": [
{
"type": "command",
"command": "afplay ~/.claude/sounds/mario/tool-failure/bowser-fire.wav 2>/dev/null || true",
"async": true
}
]
}
],
"PreCompact": [
{
"hooks": [
{
"type": "command",
"command": "/usr/local/bin/aicodemetricsd hook claude --hook-input stdin",
"timeout": 2
}
]
}
],
"PreToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "/usr/local/bin/aicodemetricsd hook claude --hook-input stdin",
"timeout": 2
}
]
}
],
"SessionEnd": [
{
"hooks": [
{
"type": "command",
"command": "/usr/local/bin/aicodemetricsd hook claude --hook-input stdin",
"timeout": 2
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "afplay ~/.claude/sounds/mario/stop/stomp.wav 2>/dev/null || true",
"async": true
}
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "afplay ~/.claude/sounds/mario/prompt-submit/coin.wav 2>/dev/null || true",
"async": true
},
{
"type": "command",
"command": "osascript ~/bin/confetti.scpt",
"async": true
}
]
}
]
},
"enabledPlugins": {
"mind@memvid": true,
"superpowers@claude-plugins-official": true
},
"extraKnownMarketplaces": {
"endless-toil": {
"source": {
"source": "directory",
"path": "/Users/steve.briggs/.endless-toil"
}
},
"memvid": {
"source": {
"source": "directory",
"path": "/Users/steve.briggs/claude-brain"
}
}
},
"effortLevel": "xhigh",
"theme": "custom:challengerdeep",
"model": "sonnet"
}

View file

@ -0,0 +1,68 @@
{
"name": "Challenger Deep",
"base": "dark",
"overrides": {
"claude": "#906cff",
"claudeShimmer": "#c991e1",
"text": "#cbe3e7",
"inverseText": "#100e23",
"inactive": "#a6b3cc",
"inactiveShimmer":"#cbe3e7",
"subtle": "#5a5475",
"suggestion": "#c991e1",
"permission": "#ffe9aa",
"permissionShimmer":"#ffb378",
"remember": "#63f2f1",
"success": "#62d196",
"error": "#ff5458",
"warning": "#ffb378",
"warningShimmer": "#ffe9aa",
"merged": "#906cff",
"promptBorder": "#906cff",
"promptBorderShimmer": "#c991e1",
"planMode": "#63f2f1",
"autoAccept": "#62d196",
"bashBorder": "#ffb378",
"ide": "#91ddff",
"fastMode": "#c991e1",
"fastModeShimmer":"#aaffe4",
"diffAdded": "#1f3a2a",
"diffRemoved": "#3a1f23",
"diffAddedDimmed": "#1a2e22",
"diffRemovedDimmed": "#2e1a1d",
"diffAddedWord": "#2c5a40",
"diffRemovedWord": "#5a2c30",
"userMessageBackground": "#2a2640",
"userMessageBackgroundHover": "#3b3470",
"messageActionsBackground": "#3b3470",
"bashMessageBackgroundColor": "#2c281a",
"memoryBackgroundColor": "#1f2c3a",
"selectionBg": "#3b3470",
"rate_limit_fill": "#906cff",
"rate_limit_empty": "#3b3470",
"briefLabelYou": "#ffe9aa",
"briefLabelClaude": "#906cff",
"red_FOR_SUBAGENTS_ONLY": "#ff5458",
"blue_FOR_SUBAGENTS_ONLY": "#65b2ff",
"green_FOR_SUBAGENTS_ONLY": "#62d196",
"yellow_FOR_SUBAGENTS_ONLY": "#ffe9aa",
"purple_FOR_SUBAGENTS_ONLY": "#906cff",
"orange_FOR_SUBAGENTS_ONLY": "#ffb378",
"pink_FOR_SUBAGENTS_ONLY": "#c991e1",
"cyan_FOR_SUBAGENTS_ONLY": "#63f2f1",
"rainbow_red": "#ff5458",
"rainbow_orange": "#ffb378",
"rainbow_yellow": "#ffe9aa",
"rainbow_green": "#62d196",
"rainbow_blue": "#65b2ff",
"rainbow_indigo": "#906cff",
"rainbow_violet": "#c991e1"
}
}