v2.0: Add hooks, agents, skills, rules, and plugin structure

Major modernization to leverage latest Claude Code features:

Plugin Foundation:
- Add .claude-plugin/plugin.json manifest for distribution
- Add .claude/settings.json with permissions and hooks config

Hooks (automatic behaviors):
- SessionStart: Initialize vault environment variables
- PostToolUse: Auto-commit changes after Write/Edit operations

Custom Agents (4):
- note-organizer: Vault organization and link maintenance
- weekly-reviewer: Facilitate weekly review aligned with goals
- goal-aligner: Check daily/weekly alignment with long-term goals
- inbox-processor: GTD-style inbox processing

Skills (3):
- obsidian-vault-ops: Read/write vault files, manage wiki-links
- goal-tracking: Track progress across goal cascade
- daily-workflow: Morning/midday/evening routines

Modular Rules (3):
- markdown-standards: File naming, tags, frontmatter conventions
- productivity-workflow: Goal cascade, daily/weekly planning
- project-management: Project structure and status tracking

Other:
- Add statusline.sh for terminal vault stats display
- Add CLAUDE.local.md.template for personal overrides
- Update CLAUDE.md with new features documentation
- Update all docs with v2.0 features and upgrade guide

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Bill Allred
2025-12-19 18:57:48 -08:00
parent eda01cbe46
commit 78a822a3df
21 changed files with 1643 additions and 159 deletions

View File

@@ -0,0 +1,38 @@
#!/bin/bash
# Status line script for Claude Code
# Shows vault statistics in the terminal status line
VAULT_PATH="${VAULT_PATH:-$(pwd)}"
# Count total notes (excluding hidden directories)
TOTAL_NOTES=$(find "$VAULT_PATH" -name "*.md" -type f -not -path "*/\.*" 2>/dev/null | wc -l | tr -d ' ')
# Count inbox items
INBOX_COUNT=0
if [ -d "$VAULT_PATH/Inbox" ]; then
INBOX_COUNT=$(find "$VAULT_PATH/Inbox" -name "*.md" -type f 2>/dev/null | wc -l | tr -d ' ')
fi
# Add notes tagged with #inbox (if grep available)
if command -v grep &> /dev/null; then
TAGGED_INBOX=$(grep -rl "#inbox" "$VAULT_PATH" --include="*.md" 2>/dev/null | wc -l | tr -d ' ')
INBOX_COUNT=$((INBOX_COUNT + TAGGED_INBOX))
fi
# Count uncommitted changes (if in git repo)
UNCOMMITTED="N/A"
if [ -d "$VAULT_PATH/.git" ]; then
cd "$VAULT_PATH" || exit 1
UNCOMMITTED=$(git status --porcelain 2>/dev/null | wc -l | tr -d ' ')
fi
# Check if today's note exists
TODAY=$(date +%Y-%m-%d)
if [ -f "$VAULT_PATH/Daily Notes/$TODAY.md" ]; then
TODAY_STATUS="Yes"
else
TODAY_STATUS="No"
fi
# Output status line (simple format)
echo "Notes: $TOTAL_NOTES | Inbox: $INBOX_COUNT | Uncommitted: $UNCOMMITTED | Today: $TODAY_STATUS"