5.5 KiB
description
| description |
|---|
| Add a typed bidirectional relationship between two notes |
Graph Add Relationship
Manually add a typed relationship between two notes with bidirectional update.
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)orRead("$REPO_PATH/filename.md") - Write:
Write(REPO_PATH/filename.md)orWrite("$REPO_PATH/filename.md") - Edit:
Edit(REPO_PATH/filename.md)orEdit("$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:
- Source note:
agents.md - Target note:
semantic_routing.md - Relationship type:
related_topics(orprerequisites,extends,alternatives,examples) - Why: "Semantic routing enables intelligent model selection for agent tasks"
Example: /graph-add-relationship agents semantic_routing related_topics "Enables model selection"
Valid Relationship Types
prerequisites- Target must be understood firstrelated_topics- Connected ideas at same levelextends- Source builds upon targetalternatives- Different approaches to same problemexamples- Target is concrete implementation of source
Execution Steps
1. Normalize Filenames
Ensure both filenames have .md extension.
2. Verify Both Notes Exist
Use Glob to verify both files exist:
Glob "agents.md"
Glob "semantic_routing.md"
3. Read Source Note
Use Read tool to get source note content, including current "Related Concepts" section.
4. Update Source Note
Use Edit tool to add relationship to appropriate section in source note:
## Related Concepts
### Related Topics
- [[existing_note]] - Existing relationship
- [[semantic_routing]] - Enables intelligent model selection for agent tasks
5. Read Target Note
Use Read tool to get target note content, including current "Related Concepts" section.
6. Add Inverse Relationship
Determine inverse relationship type:
prerequisitesin A → add A torelated_topicsorextended_byin B (depending on context)related_topicsin A → add A torelated_topicsin Bextendsin A → add A toextended_byin Balternativesin A → add A toalternativesin Bexamplesin A → add A toextended_byorrelated_topicsin B
Use Edit tool to add inverse relationship to target note.
7. Report Success
Show what was added to both files.
Output Format
Added Relationship
============================================================
✓ Forward relationship:
agents.md → semantic_routing.md
Type: related_topics
Why: Enables intelligent model selection for agent tasks
✓ Inverse relationship:
semantic_routing.md → agents.md
Type: related_topics
Why: Agents use semantic routing for task delegation
============================================================
✅ Relationship Added!
============================================================
Updated files:
• agents.md - Added to "Related Topics" section
• semantic_routing.md - Added to "Related Topics" section
💡 Next steps:
• Review both notes to verify relationships make sense
• Use `/graph-note agents.md` to see all relationships
• Use `/graph-validate` to check bidirectionality
Validation
Before adding:
- Both notes must exist
- Relationship type must be valid
- "Why" explanation should be provided (required for quality)
After adding:
- Both notes should have matching inverse relationships
- No duplicate relationships in either file
Inverse Relationship Rules
| Forward Type | Inverse Type | Notes |
|---|---|---|
| prerequisites | related_topics or extended_by | Context dependent |
| related_topics | related_topics | Symmetric |
| extends | extended_by | Clear inverse |
| alternatives | alternatives | Symmetric |
| examples | extended_by | Examples extend the concept |
Use Cases
- Fill gaps: Add relationships discovered through usage
- Manual correction: Fix missing inverse relationships
- Connect new notes: Link newly created note to existing ones
- Cross-domain links: Connect concepts from different areas
Tools Used
- Glob - Verify notes exist
- Read - Get current note content
- Edit - Update "Related Concepts" sections in both notes
- Logic - Determine inverse relationship type
Important Notes
- Always provide meaningful "why" explanation
- Use consistent relationship types (follow conventions)
- Check both notes after adding to verify correctness
- Run
/graph-validateif unsure about bidirectionality