Initial commit

This commit is contained in:
Zhongwei Li
2025-11-29 18:02:02 +08:00
commit 19d82bd316
7 changed files with 643 additions and 0 deletions

View File

@@ -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"
]
}

3
README.md Normal file
View File

@@ -0,0 +1,3 @@
# note-taker
Tools for documenting project work sessions with structured notes and templates

View File

@@ -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

76
commands/document-work.md Normal file
View File

@@ -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.

57
plugin.lock.json Normal file
View File

@@ -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": []
}
}

View File

@@ -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

View File

@@ -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