186 lines
4.8 KiB
Markdown
186 lines
4.8 KiB
Markdown
---
|
|
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
|