commit 19d82bd3169a1a10ad647429e856b3849caf7df9 Author: Zhongwei Li Date: Sat Nov 29 18:02:02 2025 +0800 Initial commit diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..67933a7 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "name": "note-taker", + "description": "Tools for documenting project work sessions with structured notes and templates", + "version": "1.0.0", + "author": { + "name": "Brad Boehmke" + }, + "skills": [ + "./skills" + ], + "agents": [ + "./agents" + ], + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..6b1b3a7 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# note-taker + +Tools for documenting project work sessions with structured notes and templates diff --git a/agents/documentation-assistant.md b/agents/documentation-assistant.md new file mode 100644 index 0000000..d072037 --- /dev/null +++ b/agents/documentation-assistant.md @@ -0,0 +1,131 @@ +--- +description: Expert in analyzing work sessions and creating structured documentation +--- + +You are a documentation assistant specialized in creating high-quality structured notes from project work sessions. + +## Your Expertise + +You excel at: +- Analyzing Claude Code conversation history to understand work completed +- Extracting key information from git commits and file changes +- Generating specific, detailed content for template fields +- Balancing automation with user control for quality documentation +- Making it easy for users to document their work with minimal effort +- Providing intelligent defaults with simple numbered selection + +## Your Approach + +**Primary Information Source:** +Use the Claude Code conversation history as your richest source. It contains: +- What was discussed and why decisions were made +- Problems encountered and solutions developed +- Design choices and trade-offs considered +- Full context of the work session + +**Secondary Information Source:** +Use git data to supplement and validate: +- Commits made during the session +- Files that were changed +- Commit messages and patterns + +**Synthesis:** +Combine both sources to create comprehensive, accurate documentation that captures both the "what" and the "why" of the work. + +## Working with Skills + +You have access to skills that provide: +- **organization-config**: Configuration for different organizations (templates, paths, locations) +- **content-generation**: Strategies for analyzing work and generating field content + +Load these skills when you need specific guidance or configuration information. + +## Interactive Workflow + +Follow this step-by-step workflow to guide users through documentation: + +### Step 1: Select Organization +Ask user to select organization with numbered options: +``` +Where should this note be saved? +[1] 84.51 +[2] University of Cincinnati +[3] Content Creation + +Enter your choice (1, 2, or 3): +``` + +### Step 2: Discover and Select Template +1. Use Glob to discover all templates in `/Users/b294776/Desktop/Notes/templates/` +2. Filter based on organization selected (see organization-config skill for specific patterns): + - For 84.51: Include obj*, annual-objectives*, weekly-5-15*, quarterly-metrics*, hiring-interview*, 1on1*, team-meeting*, tech-lt-meeting*, labs-lt-meeting*, quality-review* (exclude uc-*, content-*, paper-*, build-log*) + - For UC: Include only templates starting with `uc-` + - For Content Creation: Include only templates starting with `content-`, `paper-`, or `build-log` +3. Present as numbered list: +``` +Available templates: +[1] Project Update +[2] Weekly Report +[3] Meeting Notes +[4] Technical Documentation + +Enter template number: +``` + +### Step 3: Propose and Confirm Note Name +1. Generate a suggested name based on conversation context +2. Present with option to accept or override: +``` +Proposed note name: "marketplace-json-schema-addition" + +[1] Accept this name +Or type alternative name: +``` + +### Step 4: Select Save Directory +1. Use Bash to list subdirectories under the organization folder: + - For 84.51: List directories in `/Users/b294776/Desktop/Notes/8451/` + - For UC: List directories in `/Users/b294776/Desktop/Notes/uc/` + - For Content Creation: List directories in `/Users/b294776/Desktop/Notes/content/` +2. Present as numbered list: +``` +Where should this note be saved? +[1] obj4-genai-coding +[2] cross-cutting +[3] weekly-reports +[4] annual-objectives + +Enter directory number: +``` + +### Step 5: Fill Template Fields +For each field in the template: +1. Read the template to identify all fields (look for patterns like `{{field_name}}` or field prompts) +2. Generate intelligent content based on conversation history +3. Present with option to accept or override: +``` +[Goal]: +Add marketplace.json schema documentation to marketplace-dev plugin to ensure consistent formatting when adding new plugins. + +[1] Accept this content +Or type alternative content: +``` + +Continue this for each field in the template. + +### Step 6: Save and Confirm +1. Build the full path: `/Users/b294776/Desktop/Notes/{org}/{directory}/{date}-{name}.md` + - Where {org} is `8451`, `uc`, or `content` +2. Save the completed note +3. Confirm to user with full path + +## Key Principles + +1. **Be specific, not generic** - Use actual details from the work session +2. **Capture the full story** - Include context, decisions, challenges, outcomes +3. **Make acceptance easy** - Propose good content so users can type `1` to accept +4. **Be conversational** - Guide users through the process in a friendly way +5. **Leverage context** - You have the full session history, use it +6. **Progressive disclosure** - Load skills and templates only when needed +7. **Numbered options** - Always provide numbered choices for easy selection +8. **Smart defaults** - Propose intelligent names and content based on context diff --git a/commands/document-work.md b/commands/document-work.md new file mode 100644 index 0000000..b03c674 --- /dev/null +++ b/commands/document-work.md @@ -0,0 +1,76 @@ +--- +description: Helps documenting project work in my personal notes system. +--- + +# Document Work + +Guide the user through creating a structured note from their work session using an interactive, numbered-option workflow. + +## Process + +1. **Invoke the documentation-assistant agent** to handle the workflow +2. The agent will guide you through 6 steps with easy numbered selections + +## Interactive Workflow Steps + +### Step 1: Organization Selection +Present three numbered options: +- [1] 84.51 +- [2] University of Cincinnati +- [3] Content Creation + +### Step 2: Template Selection +- Dynamically discover all templates in `/Users/b294776/Desktop/Notes/templates/` +- Filter by organization: + - 84.51: obj*, annual-objectives*, weekly-5-15*, etc. (excludes uc-*, content-*, paper-*, build-log*) + - UC: uc-* templates only + - Content Creation: content-*, paper-*, build-log* templates only +- Present numbered list of available templates +- User enters number to select + +### Step 3: Note Name +- Agent proposes an intelligent name based on conversation context +- User can type [1] to accept or type alternative name + +### Step 4: Save Directory +- Dynamically discover subdirectories in organization folder + - For 84.51: `/Users/b294776/Desktop/Notes/8451/` + - For UC: `/Users/b294776/Desktop/Notes/uc/` + - For Content Creation: `/Users/b294776/Desktop/Notes/content/` +- Present numbered list of directories +- User enters number to select + +### Step 5: Template Field Content +For each field in the template: +- Agent proposes intelligent content based on conversation and git history +- User can type [1] to accept or type alternative content +- Repeat for all template fields + +### Step 6: Save +- Build full path: `/Users/b294776/Desktop/Notes/{org}/{directory}/{date}-{name}.md` +- Save the completed note +- Confirm with user showing full path + +## What the Agent Does + +The documentation-assistant is an expert at: +- Extracting information from conversation history (primary source) +- Supplementing with git data (commits, files, messages) +- Generating specific, detailed content for template fields +- Proposing intelligent defaults for names and content +- Making it easy for users to accept proposals (just type `1`) + +The agent has access to skills for: +- **organization-config**: Template locations and organization configuration +- **content-generation**: Strategies for analyzing work and proposing content + +## User Experience + +The workflow uses numbered options throughout for fast, easy selection: +- Type `1`, `2`, or `3` to select organization +- Type a number to select template +- Type `1` to accept proposed note name (or type alternative) +- Type a number to select save directory +- Type `1` to accept each field's content (or type alternative) + +This makes documentation fast and effortless - most users will just type `1` repeatedly to accept good proposals. diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..e0f3009 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,57 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:bradleyboehmke/brads-marketplace:note-taker", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "6b957f573f6ccd040710f1afd38584b37dd92bfe", + "treeHash": "2123b6e3a72ca9e2a96dce6d8d1332f4405996727fcfdaab8f4dd6d32b26075e", + "generatedAt": "2025-11-28T10:14:21.447120Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "note-taker", + "description": "Tools for documenting project work sessions with structured notes and templates", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "59a6d324387351752de821c7ac363dae65f446afe9372237dc00b8eb7ae05f32" + }, + { + "path": "agents/documentation-assistant.md", + "sha256": "2192b6a2421da842c3c94891981452c5768561c64757982424e399fb3214616b" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "c9eebce5f6289ecd4077954c93845069965f737cab72a8011504a3790c937503" + }, + { + "path": "commands/document-work.md", + "sha256": "e9a0322b4c035b28217ff508754bf6b2fd6ca036943c7a817e2634df27413d0c" + }, + { + "path": "skills/content-generation/strategies.md", + "sha256": "d17d446a0413db2b24187a643dfd04c4838b7eee366882c6a3dca0797f7943cc" + }, + { + "path": "skills/organization-config/config.md", + "sha256": "6d0222c19eaf4233b1f394c56ff8ce89be4b4ae1c8d86b745229ac09b2ce6962" + } + ], + "dirSha256": "2123b6e3a72ca9e2a96dce6d8d1332f4405996727fcfdaab8f4dd6d32b26075e" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file diff --git a/skills/content-generation/strategies.md b/skills/content-generation/strategies.md new file mode 100644 index 0000000..3422016 --- /dev/null +++ b/skills/content-generation/strategies.md @@ -0,0 +1,157 @@ +# Content Generation Strategies + +This skill provides guidance on how to analyze work sessions and generate high-quality content for documentation templates. + +## Information Sources + +### Primary: Claude Code Conversation History + +This is your richest source of information. The conversation contains: +- **Discussions about goals and intent** - Why the work was needed +- **Design decisions and trade-offs** - How approaches were chosen +- **Problem-solving iterations** - Challenges faced and solutions developed +- **Technical details and explanations** - Implementation specifics +- **Context and reasoning** - The "why" behind the "what" +- **Future considerations** - Next steps and TODOs mentioned + +### Secondary: Git Repository Data + +Use git to supplement and validate the conversation: +- **Today's commits:** `git log --since="today" --pretty=format:"%h - %s (%an)" --no-merges` +- **Changed files:** `git diff --name-only HEAD@{1.day.ago}..HEAD` +- **Commit messages:** Capture what was done +- **File patterns:** Show scope of changes + +If no git data is available, rely entirely on conversation context. + +## Field-by-Field Generation Strategy + +### Date Field +Auto-fill with today's date in YYYY-MM-DD format. No user prompt needed. + +### Title/Name Fields +**Strategy:** Combine project name with work type +**Sources:** User-provided project name + conversation about what was built +**Example:** "Plugin Architecture Refactoring" from project name "plugin-refactor" + +### Goal/Objective Fields +**Strategy:** Extract the "why" from the conversation +**Look for:** +- Problem statements at the beginning of the session +- User requests and requirements +- Pain points mentioned +- Desired outcomes discussed + +**Example:** "Restructure the note-taker plugin to align with marketplace architecture principles and improve modularity" + +### Approach/How Fields +**Strategy:** Describe the technical approach and methodology +**Look for:** +- Design decisions made during the conversation +- Technologies and tools used +- Architecture patterns discussed +- Implementation steps taken +- Files and components created + +**Example:** "Broke the monolithic command into agents, commands, and skills pattern. Created documentation-assistant agent for expertise, organization-config skill for dynamic discovery, and simplified command for orchestration." + +### Results/Outcomes Fields +**Strategy:** Summarize what was successfully accomplished +**Look for:** +- Features or code completed +- Problems solved +- Artifacts created +- Tests passing +- Successful builds or deployments + +**Example:** "Successfully restructured plugin with 4 new files: agent, 2 skills, updated command. Reduced command from 189 lines to ~60. Implemented dynamic template discovery." + +### Challenges/Blockers Fields +**Strategy:** Identify difficulties and how they were resolved +**Look for:** +- Errors encountered +- Unexpected behaviors +- Decisions that required debate +- Problems that needed creative solutions +- Anything marked as "tricky" or "challenging" + +**Example:** "Initial approach used hardcoded template lists. Refactored to use Glob for dynamic discovery to improve maintainability." + +### Next Steps/Future Work Fields +**Strategy:** Extract forward-looking items +**Look for:** +- TODOs mentioned +- Features deferred +- Ideas for improvements +- Follow-up tasks identified +- Testing or validation needed + +**Example:** "Update documentation to reflect new structure. Test template discovery with actual files. Consider adding validation for template fields." + +## Content Generation Process + +### Step 1: Analyze the Full Session +Review the entire conversation history to understand: +- What was the initial request? +- What was discussed and decided? +- What was implemented? +- What challenges came up? +- What was the outcome? + +### Step 2: Supplement with Git Data +If available, use git commits to: +- Validate what files were changed +- See commit messages for additional context +- Understand scope of changes + +### Step 3: Generate Field Content +For each template field: +1. Identify what type of information is needed +2. Extract relevant details from conversation + git +3. Synthesize into clear, specific content +4. Make it detailed enough to be useful + +### Step 4: Present for Approval +Format: +``` +[Field Name]: +Your proposed content here... + +Accept this? (Press Enter to accept, or type your changes) +``` + +Default behavior is acceptance - make content good enough to just press Enter. + +## Quality Guidelines + +**Be Specific:** +- Use actual file names, feature names, technical terms +- Include numbers when relevant (lines of code, number of files, etc.) +- Reference specific technologies and approaches + +**Be Comprehensive:** +- Capture both what and why +- Include context that might be forgotten later +- Don't just list actions, explain reasoning + +**Be Concise:** +- Focus on important details +- Avoid unnecessary verbosity +- Make every sentence count + +**Be Accurate:** +- Base proposals on actual conversation and git data +- Don't invent or assume information +- If uncertain, ask the user + +## Example: Full Template Fill + +**Template Field:** What did you build? +**Generated Content:** "Restructured the note-taker plugin from a single 189-line command into a modular architecture with agent, commands, and skills. Created documentation-assistant agent for note-taking expertise, organization-config skill for dynamic template discovery, and content-generation skill for analysis strategies. Reduced command file to ~60 lines focused on workflow orchestration." + +**Why this is good:** +- Specific numbers (189 lines → 60 lines) +- Named components created +- Explained the transformation +- Clear outcome +- Based on actual conversation diff --git a/skills/organization-config/config.md b/skills/organization-config/config.md new file mode 100644 index 0000000..0a64eb8 --- /dev/null +++ b/skills/organization-config/config.md @@ -0,0 +1,202 @@ +# Organization Configuration + +This skill provides configuration for different organizations including template locations and save directories. + +## Base Paths + +**Templates Base Directory:** `/Users/b294776/Desktop/Notes/templates/` +**Notes Base Directory:** `/Users/b294776/Desktop/Notes/` + +## Organizations + +### 84.51 + +**Templates Location:** `/Users/b294776/Desktop/Notes/templates/` +**Notes Subdirectory:** `8451/` + +**Template Discovery:** +Use Glob to find all templates, then filter for 84.51-specific ones: +``` +Glob pattern: /Users/b294776/Desktop/Notes/templates/*.md +``` +Include templates that match these patterns: +- Start with `obj` (e.g., obj1-team-development-template.md, obj4-genai-coding-template.md) +- Start with `annual-objectives` +- Start with `weekly-5-15` +- Start with `quarterly-metrics` +- Start with `hiring-interview` +- Start with `1on1` +- Start with `team-meeting` +- Start with `tech-lt-meeting` +- Start with `labs-lt-meeting` +- Start with `quality-review` + +Exclude templates that start with `uc-`, `content-`, `paper-`, or `build-log` + +**Save Locations Discovery:** +Use Bash to dynamically list all subdirectories: +```bash +ls -d /Users/b294776/Desktop/Notes/8451/*/ +``` + +### UC (University of Cincinnati) + +**Templates Location:** `/Users/b294776/Desktop/Notes/templates/` +**Notes Subdirectory:** `uc/` + +**Template Discovery:** +Use Glob to find all UC templates (files that start with "uc-"): +``` +Glob pattern: /Users/b294776/Desktop/Notes/templates/uc-*.md +``` + +**Save Locations Discovery:** +Use Bash to dynamically list all subdirectories: +```bash +ls -d /Users/b294776/Desktop/Notes/uc/*/ +``` + +### Content Creation + +**Templates Location:** `/Users/b294776/Desktop/Notes/templates/` +**Notes Subdirectory:** `content/` + +**Template Discovery:** +Use Glob to find all content creation templates: +``` +Glob pattern: /Users/b294776/Desktop/Notes/templates/*.md +``` +Include templates that match these patterns: +- Start with `content-` (e.g., content-idea-template.md) +- Start with `paper-` (e.g., paper-notes-template.md) +- Start with `build-log` + +**Save Locations Discovery:** +Use Bash to dynamically list all subdirectories: +```bash +ls -d /Users/b294776/Desktop/Notes/content/*/ +``` +If the content/ directory doesn't exist yet, create it first. + +## Dynamic Discovery Guidelines + +### Step 1: Organization Selection +Present numbered options: +``` +[1] 84.51 +[2] University of Cincinnati +[3] Content Creation +``` + +### Step 2: Finding Templates +1. Use Glob to get all templates: `/Users/b294776/Desktop/Notes/templates/*.md` +2. Filter based on organization selected: + - **84.51**: Include templates matching 84.51 patterns, exclude uc-*, content-*, paper-*, build-log* + - **UC**: Include only templates starting with `uc-` + - **Content**: Include only templates starting with `content-`, `paper-`, or `build-log` +3. Extract clean display names from filenames: + - Remove directory path + - Remove `-template.md` suffix + - Remove `.md` extension + - Convert hyphens to spaces for display + - Capitalize appropriately +4. Present as numbered list: +``` +Available templates: +[1] Obj4 Genai Coding +[2] Weekly 5 15 +[3] Annual Objectives Note +... +``` + +**Example:** +- File: `/Users/b294776/Desktop/Notes/templates/obj4-genai-coding-template.md` +- Display as: `[1] Obj4 Genai Coding` + +### Step 3: Propose Note Name +1. Analyze conversation context to generate intelligent name +2. Format: lowercase with hyphens (e.g., "marketplace-schema-update") +3. Present with acceptance option: +``` +Proposed note name: "marketplace-schema-update" + +[1] Accept this name +Or type alternative name: +``` + +### Step 4: Finding Save Locations +1. Use Bash `ls -d` to list subdirectories under the organization folder: + - **84.51**: `/Users/b294776/Desktop/Notes/8451/*/` + - **UC**: `/Users/b294776/Desktop/Notes/uc/*/` + - **Content**: `/Users/b294776/Desktop/Notes/content/*/` +2. Extract directory names (remove path and trailing slash) +3. Present as numbered list: +``` +Where should this note be saved? +[1] obj4-genai-coding +[2] cross-cutting +[3] weekly-reports +... +``` + +**Example bash command:** +```bash +ls -d /Users/b294776/Desktop/Notes/8451/*/ | sed 's|.*/||' | sed 's|/$||' +``` + +### Step 5: Building Save Paths +Format: `{notes_base}/{org_subdir}/{save_location}/{date}-{note-name}.md` + +**Components:** +- `notes_base`: `/Users/b294776/Desktop/Notes/` +- `org_subdir`: `8451/`, `uc/`, or `content/` +- `save_location`: Selected directory name +- `date`: Today's date in YYYY-MM-DD format +- `note-name`: User-confirmed name in lowercase-hyphenated format + +**Examples:** +- `/Users/b294776/Desktop/Notes/8451/obj4-genai-coding/2025-10-23-marketplace-schema-update.md` +- `/Users/b294776/Desktop/Notes/uc/course-development/2025-10-23-chapter-3-updates.md` +- `/Users/b294776/Desktop/Notes/content/blog-posts/2025-10-23-new-article-idea.md` + +## Template Processing + +### Reading Templates +1. After user selects template number, use Read tool to load the template file +2. Identify all fields that need to be filled +3. Look for patterns like: + - `{{field_name}}` + - `## Field Name` + - Placeholder text or prompts + +### Filling Template Fields +For each field identified: +1. Generate intelligent content based on conversation history and git data +2. Present proposed content with acceptance option: +``` +[Field Name]: +Proposed content here... + +[1] Accept this content +Or type alternative content: +``` + +3. If user types `1`, use the proposed content +4. If user types anything else, use their typed content instead + +## Workflow Summary + +When invoked, follow this exact sequence: + +1. **Organization Selection** → User selects [1], [2], or [3] +2. **Template Discovery** → Glob for templates → Filter by organization → Present numbered list +3. **Template Selection** → User selects template number +4. **Name Proposal** → Propose name → User types [1] or alternative +5. **Directory Discovery** → List directories → Present numbered list +6. **Directory Selection** → User selects directory number +7. **Template Loading** → Read template file +8. **Field Iteration** → For each field: + - Propose content + - User types [1] or alternative +9. **Save Note** → Write to final path +10. **Confirm** → Show user the full path where note was saved