Initial commit
This commit is contained in:
185
commands/update-note.md
Normal file
185
commands/update-note.md
Normal file
@@ -0,0 +1,185 @@
|
||||
---
|
||||
description: Update a note's metadata (title, tags, or summary)
|
||||
---
|
||||
|
||||
# Update Note
|
||||
|
||||
Update a note's metadata (title, tags, or summary) in the YAML frontmatter.
|
||||
|
||||
## 0. Locate AZKG Repository
|
||||
|
||||
**Check for AZKG_REPO_PATH environment variable:**
|
||||
|
||||
- Use bash conditional: `if [ -z "$AZKG_REPO_PATH" ]; then REPO_PATH=$(pwd); else REPO_PATH="$AZKG_REPO_PATH"; fi`
|
||||
- **If AZKG_REPO_PATH is set:** Use that path as the repository root
|
||||
- **If AZKG_REPO_PATH is not set:** Use current working directory (pwd)
|
||||
- Store result as REPO_PATH for all subsequent file operations
|
||||
|
||||
**All file operations must use REPO_PATH:**
|
||||
|
||||
- Read: `Read(REPO_PATH/filename.md)` or `Read("$REPO_PATH/filename.md")`
|
||||
- Write: `Write(REPO_PATH/filename.md)` or `Write("$REPO_PATH/filename.md")`
|
||||
- Edit: `Edit(REPO_PATH/filename.md)` or `Edit("$REPO_PATH/filename.md")`
|
||||
- Grep: `Grep(pattern, path=REPO_PATH)` or with explicit path
|
||||
- Glob: `Glob(pattern, path=REPO_PATH)` or with explicit path
|
||||
|
||||
**Example usage:**
|
||||
|
||||
```
|
||||
# Check environment variable
|
||||
if [ -z "$AZKG_REPO_PATH" ]; then
|
||||
REPO_PATH=$(pwd)
|
||||
else
|
||||
REPO_PATH="$AZKG_REPO_PATH"
|
||||
fi
|
||||
|
||||
# Then use REPO_PATH for all operations
|
||||
Read("$REPO_PATH/agents.md")
|
||||
```
|
||||
|
||||
**Concrete examples:**
|
||||
|
||||
- If AZKG_REPO_PATH="/c/Users/dothompson/OneDrive/src/witt3rd/donald-azkg"
|
||||
→ Read("/c/Users/dothompson/OneDrive/src/witt3rd/donald-azkg/agents.md")
|
||||
- If AZKG_REPO_PATH is not set and pwd is /c/Users/dothompson/OneDrive/src/witt3rd/donald-azkg
|
||||
→ Read("agents.md") or use full path from pwd
|
||||
|
||||
## Input
|
||||
|
||||
User provides filename and fields to update:
|
||||
|
||||
- `/update-note agents.md --title "AI Agents: Autonomous Intelligence Systems"`
|
||||
- `/update-note agents.md --tags "ai,agents,llm,autonomous"`
|
||||
- `/update-note agents.md --summary "Brief new summary"`
|
||||
|
||||
Can update multiple fields in one command:
|
||||
|
||||
- `/update-note agents.md --title "New Title" --tags "new,tags"`
|
||||
|
||||
## Execution Steps
|
||||
|
||||
### 1. Normalize Filename
|
||||
|
||||
Ensure filename has `.md` extension.
|
||||
|
||||
### 2. Verify Note Exists
|
||||
|
||||
Use Glob to check note exists:
|
||||
|
||||
```bash
|
||||
Glob "agents.md"
|
||||
```
|
||||
|
||||
### 3. Read Current Note
|
||||
|
||||
Use Read tool to get full note content, including current YAML frontmatter.
|
||||
|
||||
### 4. Update YAML Frontmatter
|
||||
|
||||
Use Edit tool to update the specific fields:
|
||||
|
||||
**For title update:**
|
||||
|
||||
- No YAML field for title (title is the first `#` heading)
|
||||
- Update the first `# Heading` line after YAML frontmatter
|
||||
|
||||
**For tags update:**
|
||||
|
||||
```yaml
|
||||
---
|
||||
tags: [old, tags]
|
||||
---
|
||||
```
|
||||
|
||||
becomes:
|
||||
|
||||
```yaml
|
||||
---
|
||||
tags: [new, tags, here]
|
||||
---
|
||||
```
|
||||
|
||||
**For summary update:**
|
||||
|
||||
- Summary is the first paragraph after title (not in YAML)
|
||||
- Replace first paragraph after title heading
|
||||
|
||||
### 5. Report Changes
|
||||
|
||||
Show old vs new values for updated fields.
|
||||
|
||||
## Output Format
|
||||
|
||||
```
|
||||
Updated Note: agents.md
|
||||
============================================================
|
||||
|
||||
Title:
|
||||
Old: AI Agents
|
||||
New: AI Agents: Autonomous Intelligence Systems
|
||||
|
||||
Tags:
|
||||
Old: [agents, ai, llm]
|
||||
New: [ai, agents, llm, autonomous, architecture]
|
||||
|
||||
Summary:
|
||||
Old: AI agents are autonomous systems...
|
||||
New: AI agents are autonomous, goal-directed systems...
|
||||
|
||||
============================================================
|
||||
✅ Metadata Updated!
|
||||
============================================================
|
||||
|
||||
💡 Next steps:
|
||||
• Review the updated note at agents.md
|
||||
• Ensure title matches filename semantically
|
||||
• Verify tags span multiple dimensions (see tag_system.md)
|
||||
• Consider if related notes need similar updates
|
||||
```
|
||||
|
||||
## Validation
|
||||
|
||||
Before updating:
|
||||
|
||||
- Note must exist
|
||||
- At least one field (title, tags, or summary) must be specified
|
||||
|
||||
After updating:
|
||||
|
||||
- YAML frontmatter remains well-formed
|
||||
- Tags follow naming convention (lowercase-with-hyphens)
|
||||
- Title and summary are non-empty
|
||||
|
||||
## Tag Guidelines
|
||||
|
||||
When updating tags, follow best practices:
|
||||
|
||||
- **3-6 tags** per note (enough for discovery, not too many)
|
||||
- **Mix dimensions**: technology + domain + content type
|
||||
- **Lowercase with hyphens**: `first-principles` not `FirstPrinciples`
|
||||
- **Specific over generic**: `mcp` better than `protocol`
|
||||
|
||||
See `tag_system.md` for complete tag catalog.
|
||||
|
||||
## Use Cases
|
||||
|
||||
- **Clarify title**: Make note title more specific or descriptive
|
||||
- **Add tags**: Add missing tags to improve discoverability
|
||||
- **Refine summary**: Update summary to better reflect current content
|
||||
- **Standardize**: Ensure tags follow consistent naming conventions
|
||||
- **Tag migration**: Update tags when tag system evolves
|
||||
|
||||
## Tools Used
|
||||
|
||||
- **Glob** - Verify note exists
|
||||
- **Read** - Get current note content
|
||||
- **Edit** - Update YAML frontmatter and note content
|
||||
- **Parse logic** - Extract and modify YAML fields
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Changes affect only metadata, not main content
|
||||
- "Related Concepts" section is never modified by this command
|
||||
- Title should semantically match filename (e.g., `agents.md` → "AI Agents")
|
||||
- Tags should be comma-separated when provided
|
||||
- Use `/conform-note` for structural changes beyond metadata
|
||||
Reference in New Issue
Block a user