mirror of
https://github.com/luongnv89/claude-howto.git
synced 2026-07-07 11:17:48 +02:00
47b97d1037
* feat(hooks): add SessionEnd progress logger and local progress tracker Adds a SessionEnd hook that prompts for modules studied at session end and appends a record to ~/.claude-howto-progress.json — outside the repo so progress survives git pull without being overwritten. Also adds local-progress/index.html: a self-contained visual tracker with checkboxes for all 10 modules, per-module notes, an overall progress bar, and Export/Import to sync with a local JSON backup file. Key patterns demonstrated: - SessionEnd vs Stop (fires once on exit, not after every response) - /dev/tty for interactive input in hooks (stdin carries the JSON payload) - $CLAUDE_PROJECT_DIR for portable paths (never hardcode /Users/...) - Guard clause to prevent global hook running in unrelated projects Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> * fix(hooks): address PR review — bash 3.2 compat, JSON escaping, textarea XSS - Replace pipeline+while with IFS for-loop (bash 3.2 compatible) - Pass NOTES as Python arg to avoid broken JSON on quotes/backslashes - Set textarea.value instead of innerHTML to prevent XSS from imported JSON Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
93 lines
1.2 KiB
Plaintext
93 lines
1.2 KiB
Plaintext
# macOS
|
|
.DS_Store
|
|
.AppleDouble
|
|
.LSOverride
|
|
|
|
# Thumbnails
|
|
._*
|
|
|
|
# Files that might appear in the root of a volume
|
|
.DocumentRevisions-V100
|
|
.fseventsd
|
|
.Spotlight-V100
|
|
.TemporaryItems
|
|
.Trashes
|
|
.VolumeIcon.icns
|
|
.com.apple.timemachine.donotpresent
|
|
|
|
# Directories potentially created on remote AFP share
|
|
.AppleDB
|
|
.AppleDesktop
|
|
Network Trash Folder
|
|
Temporary Items
|
|
.apdisk
|
|
|
|
# IDEs
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
|
|
# Logs
|
|
*.log
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
|
|
# Environment variables
|
|
.env
|
|
.env.local
|
|
.env.*.local
|
|
|
|
# Temporary files
|
|
*.tmp
|
|
*.temp
|
|
# Keep .claude/ clean for hand-on section — except project skills
|
|
.claude/*
|
|
!.claude/skills/
|
|
.claude/skills/*
|
|
!.claude/skills/self-assessment/
|
|
!.claude/skills/lesson-quiz/
|
|
blog-posts/
|
|
|
|
# Local progress tracker — HTML ships in repo, but exported JSON data files stay local
|
|
local-progress/*.json
|
|
|
|
# EPUB files in root directory
|
|
/*.epub
|
|
|
|
# Python virtual environment
|
|
.venv/
|
|
|
|
# Python cache
|
|
__pycache__/
|
|
*.py[cod]
|
|
*$py.class
|
|
*.so
|
|
.pytest_cache/
|
|
.mypy_cache/
|
|
*.egg-info/
|
|
dist/
|
|
build/
|
|
|
|
# Coverage reports
|
|
.coverage
|
|
htmlcov/
|
|
|
|
# uv lockfile
|
|
uv.lock
|
|
blog-post/
|
|
openspec/
|
|
.opencode/
|
|
|
|
# Promo video project
|
|
promo-video/
|
|
.agents/
|
|
.codex/
|
|
|
|
# Video files (too large for git)
|
|
*.mp4
|
|
|
|
update-plan*.md
|