Replaced 50+ emoji types with ASCII text markers for consistent rendering across all terminals, editors, and operating systems: - Checkmarks/status: [OK], [DONE], [SUCCESS], [PASS] - Errors/warnings: [ERROR], [FAIL], [WARNING], [CRITICAL] - Actions: [DO], [DO NOT], [REQUIRED], [OPTIONAL] - Navigation: [NEXT], [PREVIOUS], [TIP], [NOTE] - Progress: [IN PROGRESS], [PENDING], [BLOCKED] Additional changes: - Made paths cross-platform (~/ClaudeTools for Mac/Linux) - Fixed database host references to 172.16.3.30 - Updated START_HERE.md and CONTEXT_RECOVERY_PROMPT.md for multi-OS use Files updated: 58 markdown files across: - .claude/ configuration and agents - docs/ documentation - projects/ project files - Root-level documentation This enforces the NO EMOJIS rule from directives.md and ensures documentation renders correctly on all systems. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
324 lines
7.2 KiB
Markdown
324 lines
7.2 KiB
Markdown
# Claude Code Context Recall Hooks
|
|
|
|
Automatically inject and save relevant context from the ClaudeTools database into Claude Code conversations.
|
|
|
|
## Overview
|
|
|
|
This system provides seamless context continuity across Claude Code sessions by:
|
|
|
|
1. **Recalling context** - Automatically inject relevant context from previous sessions before each message
|
|
2. **Saving context** - Automatically save conversation summaries after task completion
|
|
3. **Project awareness** - Track project state and maintain context across sessions
|
|
|
|
## Hooks
|
|
|
|
### `user-prompt-submit`
|
|
|
|
**Runs:** Before each user message is processed
|
|
|
|
**Purpose:** Injects relevant context from the database into the conversation
|
|
|
|
**What it does:**
|
|
- Detects the current project ID (from git config or remote URL)
|
|
- Calls `/api/conversation-contexts/recall` to fetch relevant contexts
|
|
- Injects context as a formatted markdown section
|
|
- Falls back gracefully if API is unavailable
|
|
|
|
**Example output:**
|
|
```markdown
|
|
## [DOCS] Previous Context
|
|
|
|
The following context has been automatically recalled from previous sessions:
|
|
|
|
### 1. Database Schema Updates (Score: 8.5/10)
|
|
*Type: technical_decision*
|
|
|
|
Updated the Project model to include new fields for MSP integration...
|
|
|
|
---
|
|
```
|
|
|
|
### `task-complete`
|
|
|
|
**Runs:** After a task is completed
|
|
|
|
**Purpose:** Saves conversation context to the database for future recall
|
|
|
|
**What it does:**
|
|
- Gathers task information (git branch, commit, modified files)
|
|
- Creates a compressed summary of the task
|
|
- POST to `/api/conversation-contexts` to save context
|
|
- Updates project state via `/api/project-states`
|
|
|
|
**Saved information:**
|
|
- Task summary
|
|
- Git branch and commit hash
|
|
- Modified files
|
|
- Timestamp
|
|
- Metadata for future retrieval
|
|
|
|
## Configuration
|
|
|
|
### Quick Setup
|
|
|
|
Run the automated setup script:
|
|
|
|
```bash
|
|
bash scripts/setup-context-recall.sh
|
|
```
|
|
|
|
This will:
|
|
1. Create a JWT token
|
|
2. Detect or create your project
|
|
3. Configure environment variables
|
|
4. Make hooks executable
|
|
5. Test the system
|
|
|
|
### Manual Setup
|
|
|
|
1. **Get JWT Token**
|
|
|
|
```bash
|
|
curl -X POST http://localhost:8000/api/auth/login \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"username": "admin", "password": "your-password"}'
|
|
```
|
|
|
|
2. **Get/Create Project**
|
|
|
|
```bash
|
|
curl -X POST http://localhost:8000/api/projects \
|
|
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"name": "ClaudeTools",
|
|
"description": "Your project description"
|
|
}'
|
|
```
|
|
|
|
3. **Configure `.claude/context-recall-config.env`**
|
|
|
|
```bash
|
|
CLAUDE_API_URL=http://localhost:8000
|
|
CLAUDE_PROJECT_ID=your-project-uuid-here
|
|
JWT_TOKEN=your-jwt-token-here
|
|
CONTEXT_RECALL_ENABLED=true
|
|
MIN_RELEVANCE_SCORE=5.0
|
|
MAX_CONTEXTS=10
|
|
```
|
|
|
|
4. **Make hooks executable**
|
|
|
|
```bash
|
|
chmod +x .claude/hooks/user-prompt-submit
|
|
chmod +x .claude/hooks/task-complete
|
|
```
|
|
|
|
### Configuration Options
|
|
|
|
| Variable | Default | Description |
|
|
|----------|---------|-------------|
|
|
| `CLAUDE_API_URL` | `http://localhost:8000` | API base URL |
|
|
| `CLAUDE_PROJECT_ID` | Auto-detect | Project UUID |
|
|
| `JWT_TOKEN` | Required | Authentication token |
|
|
| `CONTEXT_RECALL_ENABLED` | `true` | Enable/disable system |
|
|
| `MIN_RELEVANCE_SCORE` | `5.0` | Minimum score (0-10) |
|
|
| `MAX_CONTEXTS` | `10` | Max contexts per query |
|
|
| `AUTO_SAVE_CONTEXT` | `true` | Save after completion |
|
|
| `DEBUG_CONTEXT_RECALL` | `false` | Enable debug logs |
|
|
|
|
## Project ID Detection
|
|
|
|
The system automatically detects your project ID using:
|
|
|
|
1. **Git config** - `git config --local claude.projectid`
|
|
2. **Git remote URL hash** - Consistent ID from remote URL
|
|
3. **Environment variable** - `CLAUDE_PROJECT_ID`
|
|
|
|
To manually set project ID in git config:
|
|
|
|
```bash
|
|
git config --local claude.projectid "your-project-uuid"
|
|
```
|
|
|
|
## Testing
|
|
|
|
Run the test script:
|
|
|
|
```bash
|
|
bash scripts/test-context-recall.sh
|
|
```
|
|
|
|
This will:
|
|
- Test API connectivity
|
|
- Test context recall endpoint
|
|
- Test context saving
|
|
- Verify hooks are working
|
|
|
|
## Usage
|
|
|
|
Once configured, the system works automatically:
|
|
|
|
1. **Start Claude Code** - Context is automatically recalled
|
|
2. **Work normally** - All your conversations happen as usual
|
|
3. **Complete tasks** - Context is automatically saved
|
|
4. **Next session** - Previous context is automatically available
|
|
|
|
## Troubleshooting
|
|
|
|
### Context not appearing?
|
|
|
|
1. Enable debug mode:
|
|
```bash
|
|
echo "DEBUG_CONTEXT_RECALL=true" >> .claude/context-recall-config.env
|
|
```
|
|
|
|
2. Check API is running:
|
|
```bash
|
|
curl http://localhost:8000/health
|
|
```
|
|
|
|
3. Verify JWT token:
|
|
```bash
|
|
curl -H "Authorization: Bearer $JWT_TOKEN" http://localhost:8000/api/projects
|
|
```
|
|
|
|
4. Check hooks are executable:
|
|
```bash
|
|
ls -la .claude/hooks/
|
|
```
|
|
|
|
### Context not saving?
|
|
|
|
1. Check task-complete hook output:
|
|
```bash
|
|
bash -x .claude/hooks/task-complete
|
|
```
|
|
|
|
2. Verify project ID:
|
|
```bash
|
|
source .claude/context-recall-config.env
|
|
echo $CLAUDE_PROJECT_ID
|
|
```
|
|
|
|
3. Check API logs for errors
|
|
|
|
### Hooks not running?
|
|
|
|
1. Verify hook permissions:
|
|
```bash
|
|
chmod +x .claude/hooks/*
|
|
```
|
|
|
|
2. Test hook manually:
|
|
```bash
|
|
bash .claude/hooks/user-prompt-submit
|
|
```
|
|
|
|
3. Check Claude Code hook documentation:
|
|
https://docs.claude.com/claude-code/hooks
|
|
|
|
### API connection errors?
|
|
|
|
1. Verify API is running:
|
|
```bash
|
|
curl http://localhost:8000/health
|
|
```
|
|
|
|
2. Check firewall/port blocking
|
|
|
|
3. Verify API URL in config
|
|
|
|
## How It Works
|
|
|
|
### Context Recall Flow
|
|
|
|
```
|
|
User sends message
|
|
↓
|
|
[user-prompt-submit hook runs]
|
|
↓
|
|
Detect project ID
|
|
↓
|
|
Call /api/conversation-contexts/recall
|
|
↓
|
|
Format and inject context
|
|
↓
|
|
Claude processes message with context
|
|
```
|
|
|
|
### Context Save Flow
|
|
|
|
```
|
|
Task completes
|
|
↓
|
|
[task-complete hook runs]
|
|
↓
|
|
Gather task information
|
|
↓
|
|
Create context summary
|
|
↓
|
|
POST to /api/conversation-contexts
|
|
↓
|
|
Update /api/project-states
|
|
↓
|
|
Context saved for future recall
|
|
```
|
|
|
|
## API Endpoints Used
|
|
|
|
- `GET /api/conversation-contexts/recall` - Retrieve relevant contexts
|
|
- `POST /api/conversation-contexts` - Save new context
|
|
- `POST /api/project-states` - Update project state
|
|
- `GET /api/projects` - Get project information
|
|
- `POST /api/auth/login` - Get JWT token
|
|
|
|
## Security Notes
|
|
|
|
- JWT tokens are stored in `.claude/context-recall-config.env`
|
|
- This file should be in `.gitignore` (DO NOT commit tokens!)
|
|
- Tokens expire after 24 hours (configurable)
|
|
- Hooks fail gracefully if authentication fails
|
|
|
|
## Advanced Usage
|
|
|
|
### Custom Context Types
|
|
|
|
Modify `task-complete` hook to create custom context types:
|
|
|
|
```bash
|
|
CONTEXT_TYPE="bug_fix" # or "feature", "refactor", etc.
|
|
RELEVANCE_SCORE=9.0 # Higher for important contexts
|
|
```
|
|
|
|
### Filtering Contexts
|
|
|
|
Adjust recall parameters in config:
|
|
|
|
```bash
|
|
MIN_RELEVANCE_SCORE=7.0 # Only high-quality contexts
|
|
MAX_CONTEXTS=5 # Fewer contexts per query
|
|
```
|
|
|
|
### Manual Context Injection
|
|
|
|
You can manually trigger context recall:
|
|
|
|
```bash
|
|
bash .claude/hooks/user-prompt-submit
|
|
```
|
|
|
|
## References
|
|
|
|
- [Claude Code Hooks Documentation](https://docs.claude.com/claude-code/hooks)
|
|
- [ClaudeTools API Documentation](.claude/API_SPEC.md)
|
|
- [Database Schema](.claude/SCHEMA_CORE.md)
|
|
|
|
## Support
|
|
|
|
For issues or questions:
|
|
1. Check troubleshooting section above
|
|
2. Review API logs: `tail -f api/logs/app.log`
|
|
3. Test with `scripts/test-context-recall.sh`
|
|
4. Check hook output with `bash -x .claude/hooks/[hook-name]`
|