Help us improve
Share bugs, ideas, or general feedback.
From project-docs
Maintains comprehensive project history in a process-notes/ folder that documents work process, decisions, dead ends, and progress. Each entry is a separate file named by timestamp + slug. Use when context window fills up (approaching 60% of token budget), when making key decisions or reaching milestones, or when the user explicitly requests /project-docs:process-notes.
npx claudepluginhub ttorres33/teresa-torres-plugins --plugin project-docsHow this skill is triggered — by the user, by Claude, or both
Slash command
/project-docs:process-notesThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Maintain a comprehensive project history in a `process-notes/` folder that documents work process, decisions, dead ends, and progress. Each entry is a separate file so writes stay small and atomic, grep works naturally across the whole history, and reading recent entries is `ls -t process-notes/ | head -3`.
Automates project-isolated daily dev diaries: detects current project, summarizes conversation progress/git commits/file changes into diary/YYYY/MM/YYYY-MM-DD-ProjectName.md, refreshes context, syncs to Notion/Obsidian.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Share bugs, ideas, or general feedback.
Maintain a comprehensive project history in a process-notes/ folder that documents work process, decisions, dead ends, and progress. Each entry is a separate file so writes stay small and atomic, grep works naturally across the whole history, and reading recent entries is ls -t process-notes/ | head -3.
Update process notes when any of these conditions occur:
/project-docs:process-notesBefore writing anything, check which format the project is using:
ls -la process-notes.md process-notes/ 2>/dev/null
process-notes/ exists: Use the new folder format. Proceed to step 2.process-notes.md exists but process-notes/ does not: The project is using the legacy flat-file format. Stop and tell the user to run /project-docs:convert-flat-process-notes-to-dir first. Do not attempt to write anything until the conversion is done.process-notes/ folder with mkdir process-notes and proceed to step 2.Before writing a new entry, read the most recent 2-3 entries so the new entry fits into the ongoing narrative:
ls -t process-notes/ | head -3
Then Read those files. Do not read the entire folder — just the recent ones.
Filename format: YYYY-MM-DDTHHMM-slug.md
2026-04-08T1432-revise-process-notes-to-folder-model.mdIf a file with the exact same name already exists (rare — only if two entries land in the same minute with the same title), append -2, -3, etc.
Create the file with the structured content format below. Each file is self-contained — do NOT read, edit, or touch any other file in process-notes/.
Use this exact structure for each entry file:
# [Brief Title]
**Context:** [Brief statement of what was being worked on in this session/segment]
**Progress:**
- Accomplished task 1
- Created `src/auth/login.ts` - implemented JWT authentication
- Modified `src/config/database.ts:45-67` - added connection pooling
- Accomplished task 2
- Details with file references
**Key Decisions:**
- **Decision:** [What was decided]
- **Rationale:** [Why this approach was chosen]
- **Alternatives considered:** [What else was looked at]
- **Trade-offs:** [What was gained/sacrificed]
- **Files affected:** `path/to/file.ts:lines`
**Dead Ends & Lessons:**
- **Attempted:** [What was tried]
- **Implementation:** [Specific approach taken]
- **Files involved:** `path/to/file.ts:lines`
- **Error/Issue:** [What failed - include error messages if relevant]
- **Why it failed:** [Root cause analysis]
- **What was learned:** [Key takeaway]
- **Solution:** [What was done instead and why it worked]
**Technical Details:**
- New files created: [list with purpose]
- Files modified: [list with what changed]
- Dependencies added/removed: [package changes]
- Configuration changes: [environment, build configs, etc.]
**Next Steps:**
- [ ] Task 1 - [with enough context to understand what/why]
- [ ] Task 2 - [reference to relevant files/functions if helpful]
- **Context for next session:** [Anything the next agent needs to know to pick up smoothly]
**Questions/Blockers:**
- Open questions that need answering
- Blockers encountered that aren't resolved yet
Note: the file starts with # Title, NOT ## [timestamp] Entry N: Title. The timestamp lives in the filename, and there is no global entry numbering — each entry file is self-contained.
src/auth/middleware.ts:1-45 - implemented JWT verification middleware with error handling"process-notes/ in the current working directory rootWhen starting a new session and needing context from past work:
ls -t process-notes/ | head -3
Then Read those files. For grep-style searches across all entries:
grep -r "pattern" process-notes/
Do not Read the whole folder — it grows unbounded over time and will waste context. If you need to search for something specific, use Grep with a pattern.
file.ts:lines# Initial Authentication System
**Context:** Setting up user authentication for the web application. Need JWT-based auth with refresh tokens.
**Progress:**
- Implemented core authentication system
- Created `src/auth/jwt.ts:1-120` - JWT token generation and validation utilities
- Created `src/auth/middleware.ts:1-67` - Express middleware for protecting routes
- Modified `src/server.ts:23-28` - integrated auth middleware into Express app
- Created `src/routes/auth.ts:1-89` - login/logout/refresh endpoints
**Key Decisions:**
- **Decision:** Use JWT with short-lived access tokens (15min) + long-lived refresh tokens (7 days)
- **Rationale:** Balances security (short access token expiry) with UX (don't force frequent re-login)
- **Alternatives considered:** Session-based auth (rejected - doesn't scale horizontally), long-lived JWTs only (rejected - security risk)
- **Trade-offs:** Added complexity of refresh token flow, but gained better security posture
- **Files affected:** `src/auth/jwt.ts:45-89`, `src/routes/auth.ts:34-67`
**Dead Ends & Lessons:**
- **Attempted:** Store refresh tokens in localStorage
- **Implementation:** Added refresh token to JWT payload, stored in localStorage on client
- **Files involved:** `src/auth/jwt.ts:23-34`
- **Error/Issue:** Realized this is vulnerable to XSS attacks - localStorage accessible to any script
- **Why it failed:** Security best practice is httpOnly cookies for refresh tokens to prevent XSS access
- **What was learned:** Never store sensitive tokens in localStorage, use httpOnly cookies instead
- **Solution:** Implemented refresh token in httpOnly cookie in `src/routes/auth.ts:56-62`, removed from JWT payload
**Technical Details:**
- New files created:
- `src/auth/jwt.ts` - JWT utilities (sign, verify, decode)
- `src/auth/middleware.ts` - Express auth middleware
- `src/routes/auth.ts` - Auth endpoints
- `src/types/auth.ts` - TypeScript types for auth
- Files modified:
- `src/server.ts:23-28` - integrated auth routes
- Dependencies added:
- `jsonwebtoken@9.0.2` - JWT signing/verification
- `@types/jsonwebtoken@9.0.3` - TypeScript types
- `cookie-parser@1.4.6` - Parse cookies for refresh token
- Configuration changes:
- Added `JWT_SECRET` and `JWT_REFRESH_SECRET` to `.env`
- Added `JWT_EXPIRY=15m` and `REFRESH_EXPIRY=7d` to config
**Next Steps:**
- [ ] Add password hashing with bcrypt in user registration flow - needs `src/routes/users.ts` implementation
- [ ] Implement token refresh endpoint - partially done in `src/routes/auth.ts:78-89`, needs testing
- [ ] Add rate limiting to login endpoint to prevent brute force attacks
- **Context for next session:** Auth system works for login/logout. Need to add user registration with password hashing, and test the refresh token flow end-to-end.
**Questions/Blockers:**
- Should we implement 2FA now or in a later iteration?
- Need to confirm password requirements (min length, complexity rules)
| Scenario | Process-Notes | README | Both? |
|---|---|---|---|
| Just added OAuth authentication | Yes - Document why OAuth was chosen, what was tried first, implementation decisions | Yes - Update to show OAuth is now available, how to configure it | Both |
| Debugged tricky issue for 2 hours | Yes - Document the debugging journey, what was learned, the solution | No - Unless it changes how the project works or needs documentation | Process-Notes only |
| Refactored file structure but behavior unchanged | Maybe - If significant decisions were made about structure | Maybe - If file paths in docs need updating | Use judgment |
| Added new feature (e.g., export to CSV) | Yes - How it was built, libraries chosen, design decisions | Yes - Update features list, add usage example | Both |
| Changed API endpoint structure | Yes - Why it changed, migration path, breaking change reasoning | Yes - Update API docs to reflect new structure | Both |
| Fixed bug that restores documented behavior | Maybe - Only if debugging revealed important insights | No - Behavior already documented correctly | Usually Process-Notes only |
| Added environment variable | Yes - Why it was needed, what was considered | Yes - Update configuration section | Both |
| Spent time researching library options | Yes - What was evaluated, pros/cons, final choice | No - Unless the library was actually added | Process-Notes only (until implementation) |
| Reorganized code but kept same public API | Maybe - If architectural decisions were made | No - Internal structure doesn't affect users | Usually Process-Notes only |
| Context window approaching 60% | Yes - Checkpoint current progress | No - Unless meaningful changes to document | Process-Notes only (checkpoint) |
| Completed major milestone | Yes - Document what was accomplished, decisions made | Maybe - If milestone adds/changes features | Process-Notes always, README if user-facing changes |
Update Process-Notes if:
Update README if:
Update both if:
Update neither if: