mirror of
https://github.com/harivansh-afk/system-design.git
synced 2026-04-15 06:04:44 +00:00
init claude
This commit is contained in:
commit
7964b78a3a
6 changed files with 380 additions and 0 deletions
81
.claude/commands/retrospective.md
Normal file
81
.claude/commands/retrospective.md
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
---
|
||||
description: Analyze the current session and extract learnings to memory
|
||||
allowed-tools: Read, Edit, Grep, Bash, Task
|
||||
---
|
||||
|
||||
# Session Retrospective
|
||||
|
||||
Analyze this coding session and extract valuable learnings to improve future sessions.
|
||||
|
||||
## Your Task
|
||||
|
||||
### 1. Review What Happened This Session
|
||||
|
||||
The session transcript is at: $CLAUDE_SESSION_TRANSCRIPT_PATH
|
||||
|
||||
**Important**: Session transcripts can be large. Use these strategies:
|
||||
- Use `Read` with `offset` and `limit` parameters to read portions (e.g., last 500 lines)
|
||||
- Use `Grep` to search for specific patterns like "Error", "Edit", "Write" to find key moments
|
||||
- Use `Bash` with `tail` or `head` to get specific portions
|
||||
- Focus on the most recent activity (end of file) for the session summary
|
||||
|
||||
Reflect on the session:
|
||||
- What code was written or modified?
|
||||
- What problems were solved?
|
||||
- What approaches were tried (both successful and unsuccessful)?
|
||||
- Were there any surprises or unexpected behaviors?
|
||||
|
||||
### 2. Identify Learnings
|
||||
|
||||
Extract insights in these categories:
|
||||
|
||||
**Patterns (what worked well)**:
|
||||
- Successful approaches that should be reused
|
||||
- Code patterns that solved problems effectively
|
||||
- Workflows that were efficient
|
||||
|
||||
**Failures (what to avoid)**:
|
||||
- Approaches that didn't work
|
||||
- Bugs that were encountered and their root causes
|
||||
- Time wasted on wrong paths
|
||||
- Assumptions that turned out to be wrong
|
||||
|
||||
**Edge Cases**:
|
||||
- Tricky scenarios discovered
|
||||
- Non-obvious behavior found
|
||||
- Boundary conditions that matter
|
||||
|
||||
**Technology Insights**:
|
||||
- Framework/library-specific knowledge gained
|
||||
- API quirks discovered
|
||||
- Performance considerations learned
|
||||
|
||||
### 3. Update learnings.md
|
||||
|
||||
Edit `.claude/skills/codebase-agent/learnings.md` and add new entries under the appropriate sections.
|
||||
|
||||
Use this format for each entry:
|
||||
|
||||
```markdown
|
||||
### [Short Descriptive Title]
|
||||
- **Context**: When does this apply?
|
||||
- **Learning**: What is the insight?
|
||||
- **Example**: (optional) Code snippet or concrete example
|
||||
- **Session**: [Date or brief session description]
|
||||
```
|
||||
|
||||
### 4. Quality Guidelines
|
||||
|
||||
Be selective about what to add:
|
||||
- **Add** genuinely useful, project-specific insights
|
||||
- **Skip** general programming knowledge (things any developer would know)
|
||||
- **Skip** one-time fixes that won't recur
|
||||
- **Avoid** duplicating existing entries
|
||||
- **Merge** with existing entries if they're related
|
||||
|
||||
## Output
|
||||
|
||||
Summarize:
|
||||
1. How many learnings were added (and to which categories)
|
||||
2. Brief description of the most important insights
|
||||
3. Any patterns emerging across sessions
|
||||
73
.claude/commands/setup-agent.md
Normal file
73
.claude/commands/setup-agent.md
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
---
|
||||
description: Analyze codebase and set up the learning agent (run once after install)
|
||||
allowed-tools: Read, Grep, Glob, Edit
|
||||
---
|
||||
|
||||
# Initial Codebase Assessment
|
||||
|
||||
You are setting up the continual learning agent for this codebase. This is a one-time setup that analyzes the project and configures the agent.
|
||||
|
||||
## Your Task
|
||||
|
||||
### 1. Analyze the Codebase Structure
|
||||
|
||||
Explore the project to understand:
|
||||
- **Directory structure**: What are the key directories and their purposes?
|
||||
- **Tech stack**: What languages, frameworks, and libraries are used?
|
||||
- **Configuration files**: Find package.json, tsconfig.json, pyproject.toml, Cargo.toml, etc.
|
||||
- **Build tools**: How is the project built and tested?
|
||||
- **Entry points**: Where does the application start?
|
||||
|
||||
### 2. Discover Conventions
|
||||
|
||||
Look for patterns in the existing code:
|
||||
- **Code style**: Indentation, naming conventions, file organization
|
||||
- **Architectural patterns**: MVC, component-based, microservices, etc.
|
||||
- **Testing patterns**: How are tests structured? What testing frameworks?
|
||||
- **Documentation patterns**: How is code documented?
|
||||
|
||||
### 3. Update the Skill File
|
||||
|
||||
Edit `.claude/skills/codebase-agent/SKILL.md` and replace the `## Codebase Context` section with your findings:
|
||||
|
||||
```markdown
|
||||
## Codebase Context
|
||||
|
||||
### Architecture
|
||||
[Brief overview of the architecture]
|
||||
|
||||
### Tech Stack
|
||||
- **Language(s)**: [e.g., TypeScript, Python]
|
||||
- **Framework(s)**: [e.g., React, FastAPI]
|
||||
- **Key Libraries**: [important dependencies]
|
||||
|
||||
### Key Directories
|
||||
- `src/` - [purpose]
|
||||
- `tests/` - [purpose]
|
||||
- [etc.]
|
||||
|
||||
### Build & Test Commands
|
||||
- Build: `[command]`
|
||||
- Test: `[command]`
|
||||
- Lint: `[command]`
|
||||
|
||||
### Conventions
|
||||
- [Convention 1]
|
||||
- [Convention 2]
|
||||
```
|
||||
|
||||
### 4. Initialize Learnings
|
||||
|
||||
Edit `.claude/skills/codebase-agent/learnings.md` and add any initial observations:
|
||||
- Obvious patterns you notice in the code
|
||||
- Potential edge cases visible in the structure
|
||||
- Tech stack insights that would be helpful to remember
|
||||
|
||||
## Output
|
||||
|
||||
After completing the assessment:
|
||||
1. Summarize what you learned about the codebase
|
||||
2. Confirm the skill file has been updated
|
||||
3. Note any initial learnings added
|
||||
|
||||
The agent is now ready for coding. Future sessions will automatically accumulate more learnings!
|
||||
100
.claude/hooks/session-end.sh
Executable file
100
.claude/hooks/session-end.sh
Executable file
|
|
@ -0,0 +1,100 @@
|
|||
#!/bin/bash
|
||||
# SessionEnd Hook - Triggers learning extraction
|
||||
#
|
||||
# This hook runs automatically after each Claude Code session.
|
||||
# It spawns a background process to analyze the session and update learnings.
|
||||
#
|
||||
|
||||
LOG_FILE="${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/session-end.log"
|
||||
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
|
||||
}
|
||||
|
||||
# Read hook input from stdin (JSON with session info)
|
||||
INPUT=$(cat)
|
||||
|
||||
log "Hook triggered with input: $INPUT"
|
||||
|
||||
# Extract transcript path using jq (required dependency)
|
||||
if ! command -v jq &> /dev/null; then
|
||||
log "ERROR: jq not available"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
TRANSCRIPT=$(echo "$INPUT" | jq -r '.transcript_path // empty')
|
||||
SESSION_ID=$(echo "$INPUT" | jq -r '.session_id // empty')
|
||||
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-.}"
|
||||
|
||||
log "Transcript: $TRANSCRIPT"
|
||||
log "Session ID: $SESSION_ID"
|
||||
log "Project dir: $PROJECT_DIR"
|
||||
|
||||
# Prevent duplicate triggers for the same session using a lock file
|
||||
LOCK_DIR="${CLAUDE_PROJECT_DIR:-.}/.claude/hooks/locks"
|
||||
mkdir -p "$LOCK_DIR"
|
||||
LOCK_FILE="$LOCK_DIR/$SESSION_ID.lock"
|
||||
|
||||
if [ -f "$LOCK_FILE" ]; then
|
||||
log "Session already processed (lock exists) - skipping duplicate trigger"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Create lock file immediately
|
||||
echo "$(date)" > "$LOCK_FILE"
|
||||
log "Lock file created"
|
||||
|
||||
# Clean up old lock files (older than 1 hour)
|
||||
find "$LOCK_DIR" -name "*.lock" -mmin +60 -delete 2>/dev/null
|
||||
|
||||
# Validate transcript exists
|
||||
if [ -z "$TRANSCRIPT" ]; then
|
||||
log "ERROR: No transcript path in input"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ ! -f "$TRANSCRIPT" ]; then
|
||||
log "ERROR: Transcript file does not exist: $TRANSCRIPT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Only run retrospective if session was substantial (more than 10 lines)
|
||||
LINE_COUNT=$(wc -l < "$TRANSCRIPT" 2>/dev/null || echo "0")
|
||||
log "Transcript line count: $LINE_COUNT"
|
||||
if [ "$LINE_COUNT" -lt 10 ]; then
|
||||
log "Session too short, skipping retrospective"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# CRITICAL: Detect if this session was itself a retrospective to prevent chain reaction
|
||||
# Check if the transcript contains /retrospective command (indicates this was a retrospective session)
|
||||
if grep -q '"/retrospective' "$TRANSCRIPT" 2>/dev/null || grep -q '"skill":"retrospective"' "$TRANSCRIPT" 2>/dev/null; then
|
||||
log "Session was a retrospective - skipping to prevent chain reaction"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Check if learnings.md exists (system is properly set up)
|
||||
LEARNINGS_FILE="$PROJECT_DIR/.claude/skills/codebase-agent/learnings.md"
|
||||
if [ ! -f "$LEARNINGS_FILE" ]; then
|
||||
log "ERROR: learnings.md not found at $LEARNINGS_FILE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
log "Starting retrospective analysis in background..."
|
||||
|
||||
# Run retrospective in background using the /retrospective slash command
|
||||
# Pass transcript path as argument so the command knows where to read the session
|
||||
# Use nohup to ensure the process survives after hook exits
|
||||
(
|
||||
cd "$PROJECT_DIR" && nohup claude --dangerously-skip-permissions \
|
||||
-p "/retrospective
|
||||
|
||||
The session transcript is at: $TRANSCRIPT
|
||||
Read it to understand what happened in this session." \
|
||||
>> "$LOG_FILE" 2>&1 &
|
||||
) &
|
||||
|
||||
log "Background process spawned"
|
||||
|
||||
# Exit immediately - don't wait for background process
|
||||
exit 0
|
||||
15
.claude/settings.json
Normal file
15
.claude/settings.json
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"hooks": {
|
||||
"SessionEnd": [
|
||||
{
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"command": "\"$CLAUDE_PROJECT_DIR/.claude/hooks/session-end.sh\"",
|
||||
"timeout": 60
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
67
.claude/skills/codebase-agent/SKILL.md
Normal file
67
.claude/skills/codebase-agent/SKILL.md
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
---
|
||||
name: codebase-agent
|
||||
description: |
|
||||
Expert coding agent for this codebase. Learns from every session to improve
|
||||
code quality, catch edge cases, and apply proven patterns. Use for ANY coding
|
||||
task: writing, debugging, refactoring, testing. Accumulates project knowledge.
|
||||
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
||||
---
|
||||
|
||||
# Codebase Expert Agent
|
||||
|
||||
You are an expert coding agent that learns and improves over time.
|
||||
|
||||
## Accumulated Learnings
|
||||
|
||||
Reference [learnings.md](learnings.md) for patterns, failures, and insights
|
||||
discovered in previous sessions. Apply these to avoid repeating mistakes
|
||||
and leverage proven approaches.
|
||||
|
||||
## Behavior
|
||||
|
||||
1. **Check learnings first**: Before implementing, scan learnings.md for relevant patterns and failures
|
||||
2. **Apply proven patterns**: Use approaches that worked in past sessions
|
||||
3. **Follow conventions**: Adhere to project conventions discovered in learnings
|
||||
4. **Note discoveries**: When you find something new (pattern, failure, edge case), mention it
|
||||
|
||||
## Code Simplicity
|
||||
|
||||
**Default to the simplest solution that works.** Resist the urge to over-engineer.
|
||||
|
||||
### Write Less Code
|
||||
|
||||
- Solve the actual problem, not hypothetical future problems
|
||||
- If a function is called once, consider inlining it
|
||||
- Three similar lines are better than a premature abstraction
|
||||
- Use standard library and built-ins before writing custom code
|
||||
- Delete code paths that can't happen
|
||||
|
||||
### Keep It Flat
|
||||
|
||||
- Use early returns and guard clauses to reduce nesting
|
||||
- Avoid callback pyramids - flatten with async/await or composition
|
||||
- One level of abstraction per function
|
||||
|
||||
### Avoid Premature Abstraction
|
||||
|
||||
- Don't add parameters "in case we need them later"
|
||||
- Don't create base classes until you have 2+ implementations
|
||||
- Don't add config for things that could be hardcoded
|
||||
- Don't create wrapper functions that just call another function
|
||||
|
||||
### Trust Your Code
|
||||
|
||||
- Don't defensively code against impossible internal states
|
||||
- Don't catch errors you can't meaningfully handle
|
||||
- Don't validate data that's already validated upstream
|
||||
- Validate at system boundaries (user input, external APIs), trust internal code
|
||||
|
||||
### When in Doubt
|
||||
|
||||
Ask: "What's the least code that makes this work?" Write that first. Add complexity only when reality demands it.
|
||||
|
||||
## Codebase Context
|
||||
|
||||
<!-- POPULATED BY /setup-agent -->
|
||||
<!-- Run /setup-agent after installation to populate this section -->
|
||||
<!-- Architecture, tech stack, key directories, and conventions will be added here -->
|
||||
44
.claude/skills/codebase-agent/learnings.md
Normal file
44
.claude/skills/codebase-agent/learnings.md
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
# Accumulated Learnings
|
||||
|
||||
This file is automatically updated after each coding session.
|
||||
The SessionEnd hook triggers `/retrospective` which analyzes the session and adds new learnings here.
|
||||
|
||||
---
|
||||
|
||||
## Patterns (What Works)
|
||||
|
||||
Successful approaches and code patterns that should be reused.
|
||||
|
||||
<!-- Patterns will be added by /retrospective -->
|
||||
|
||||
---
|
||||
|
||||
## Failures (What to Avoid)
|
||||
|
||||
Approaches that failed, bugs encountered, and time-wasting paths.
|
||||
|
||||
<!-- Failures will be added by /retrospective -->
|
||||
|
||||
---
|
||||
|
||||
## Edge Cases
|
||||
|
||||
Tricky scenarios and non-obvious behaviors discovered during development.
|
||||
|
||||
<!-- Edge cases will be added by /retrospective -->
|
||||
|
||||
---
|
||||
|
||||
## Technology Insights
|
||||
|
||||
Framework-specific knowledge, library quirks, and API insights.
|
||||
|
||||
<!-- Technology insights will be added by /retrospective -->
|
||||
|
||||
---
|
||||
|
||||
## Conventions
|
||||
|
||||
Project-specific coding conventions and style guidelines.
|
||||
|
||||
<!-- Conventions will be added by /setup-agent and /retrospective -->
|
||||
Loading…
Add table
Add a link
Reference in a new issue