Initial commit
This commit is contained in:
232
commands/rename-note.md
Normal file
232
commands/rename-note.md
Normal file
@@ -0,0 +1,232 @@
|
||||
---
|
||||
description: Rename a note and update all wikilink references
|
||||
---
|
||||
|
||||
# Rename Note Command
|
||||
|
||||
Rename a note file and update all wikilink references throughout the knowledge base.
|
||||
|
||||
## 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
|
||||
|
||||
## Task
|
||||
|
||||
1. Rename the physical markdown file (using Bash mv)
|
||||
2. Update all wikilinks `[[old_filename]]` → `[[new_filename]]` in all markdown files (using Grep + Edit)
|
||||
3. Update MOC files if needed (using Edit)
|
||||
|
||||
## Input
|
||||
|
||||
User provides:
|
||||
|
||||
- Old filename (e.g., "mcp_sdk.md" or just "mcp_sdk")
|
||||
- New filename (e.g., "python_mcp_sdk.md" or just "python_mcp_sdk")
|
||||
|
||||
## Execution Steps
|
||||
|
||||
### 1. Normalize Filenames
|
||||
|
||||
Ensure both filenames have `.md` extension:
|
||||
|
||||
```
|
||||
old_filename = "mcp_sdk" → "mcp_sdk.md"
|
||||
new_filename = "python_mcp_sdk" → "python_mcp_sdk.md"
|
||||
```
|
||||
|
||||
### 2. Verify Old File Exists
|
||||
|
||||
Use Glob to check if old file exists:
|
||||
|
||||
```bash
|
||||
# Check if file exists
|
||||
Glob mcp_sdk.md
|
||||
```
|
||||
|
||||
If not found, report error to user.
|
||||
|
||||
### 3. Check New Filename Not In Use
|
||||
|
||||
Use Glob to ensure new filename doesn't already exist:
|
||||
|
||||
```bash
|
||||
# Check if new filename is available
|
||||
Glob python_mcp_sdk.md
|
||||
```
|
||||
|
||||
If exists, report error to user.
|
||||
|
||||
### 4. Find All Wikilinks to Old Note
|
||||
|
||||
Use Grep to find all markdown files containing wikilinks to the old note:
|
||||
|
||||
```bash
|
||||
# Find all files with wikilinks to old note
|
||||
Grep "\[\[mcp_sdk\]\]" --glob="*.md" --output_mode="files_with_matches"
|
||||
```
|
||||
|
||||
Store list of files that need updating.
|
||||
|
||||
### 5. Rename the Physical File
|
||||
|
||||
Use Bash to rename the file:
|
||||
|
||||
```bash
|
||||
# Rename the file
|
||||
mv "mcp_sdk.md" "python_mcp_sdk.md"
|
||||
```
|
||||
|
||||
### 6. Update Wikilinks in All Files
|
||||
|
||||
For each file found in step 4, use Edit tool to replace wikilinks:
|
||||
|
||||
```markdown
|
||||
# Old wikilink
|
||||
[[mcp_sdk]]
|
||||
|
||||
# New wikilink
|
||||
[[python_mcp_sdk]]
|
||||
```
|
||||
|
||||
Use Edit tool for each file:
|
||||
|
||||
- old_string: `[[mcp_sdk]]`
|
||||
- new_string: `[[python_mcp_sdk]]`
|
||||
- replace_all: true (to catch all occurrences in the file)
|
||||
|
||||
Track how many files were updated.
|
||||
|
||||
### 7. Update MOC Files
|
||||
|
||||
Check if any MOC files were updated in step 6. If so, verify the context around the wikilink makes sense with the new name.
|
||||
|
||||
## Output Format
|
||||
|
||||
Report to user:
|
||||
|
||||
```
|
||||
============================================================
|
||||
Renamed Note: mcp_sdk.md → python_mcp_sdk.md
|
||||
============================================================
|
||||
|
||||
📝 Physical file renamed
|
||||
✓ mcp_sdk.md → python_mcp_sdk.md
|
||||
|
||||
📄 Updated wikilinks in N files:
|
||||
✓ file1.md: X reference(s)
|
||||
✓ file2.md: Y reference(s)
|
||||
✓ file3.md: Z reference(s)
|
||||
|
||||
============================================================
|
||||
✅ Rename Complete!
|
||||
============================================================
|
||||
|
||||
📋 Summary:
|
||||
• File renamed: mcp_sdk.md → python_mcp_sdk.md
|
||||
• Markdown files updated: N
|
||||
• Total wikilink updates: M
|
||||
|
||||
💡 Next steps:
|
||||
• Review changes with git diff
|
||||
• Update note title if needed to match new filename
|
||||
• Update note tags if needed
|
||||
• Verify MOC entries make sense with new name
|
||||
```
|
||||
|
||||
## Validation
|
||||
|
||||
After renaming:
|
||||
|
||||
- Old file no longer exists (verify with Glob)
|
||||
- New file exists (verify with Glob)
|
||||
- No remaining wikilinks to old filename (verify with Grep)
|
||||
- All "Related Concepts" sections still valid (Read a few files to spot check)
|
||||
|
||||
## Safety Features
|
||||
|
||||
- Check old file exists before renaming
|
||||
- Check new filename not in use before renaming
|
||||
- Use replace_all to catch all wikilinks in each file
|
||||
- Report which files were updated for transparency
|
||||
- All changes visible in git diff
|
||||
|
||||
## Use Cases
|
||||
|
||||
- **Clarify naming**: Rename `mcp_sdk.md` → `python_mcp_sdk.md` to be more specific
|
||||
- **Fix typos**: Rename `agnet.md` → `agent.md`
|
||||
- **Reorganize**: Rename `notes.md` → `note_taking_systems.md` for better descriptiveness
|
||||
- **Language consistency**: Ensure all filenames follow `language_topic.md` pattern
|
||||
|
||||
## Present Results
|
||||
|
||||
After renaming:
|
||||
|
||||
- Show summary of changes made
|
||||
- Highlight number of files and references updated
|
||||
- Suggest reviewing MOC files to ensure context still makes sense
|
||||
- Recommend updating note title/tags if needed to match new filename
|
||||
|
||||
## Common Patterns
|
||||
|
||||
**Language-specific SDK notes:**
|
||||
|
||||
```
|
||||
mcp_sdk.md → python_mcp_sdk.md
|
||||
(leaves room for typescript_mcp_sdk.md, rust_mcp_sdk.md, etc.)
|
||||
```
|
||||
|
||||
**Generic to specific:**
|
||||
|
||||
```
|
||||
agents.md → ai_agents.md
|
||||
deployment.md → docker_deployment.md
|
||||
```
|
||||
|
||||
**Consistency with existing patterns:**
|
||||
|
||||
```
|
||||
mcp-overview.md → mcp_overview.md (underscore convention)
|
||||
llm_agents.md → agents.md (when already specific enough)
|
||||
```
|
||||
|
||||
## Tools Used
|
||||
|
||||
- **Glob** - Check if files exist
|
||||
- **Grep** - Find all wikilinks to old filename
|
||||
- **Bash** - Rename the physical file (mv command)
|
||||
- **Edit** - Update wikilinks in each markdown file
|
||||
- **Read** - Spot check updated files for correctness
|
||||
Reference in New Issue
Block a user