People Strategy
Verified@makkzone
npx machina-cli add skill @makkzone/people-strategy --openclawPeople-Strategy Agent Skill
Overview
A people relationship management agent skill that provides persistent graph-based storage using SQLite database. This skill enables AI agents to create, manage, and query a network of people and their relationships, making it ideal for building personal CRMs, organizational charts, mentorship networks, and collaboration mapping.
Capabilities
Person Management
- Create People: Add new people with comprehensive information (name, role, relation, organization, character, notes)
- Read People: Retrieve individual people or search/filter across the database
- Update People: Modify any person's information
- Delete People: Remove people from the database (cascades to relationships)
- Search: Full-text search across names, roles, and organizations
- Filter: Filter by organization or relation type
Relationship Management
- Create Edges: Establish directed relationships between people
- Query Relationships: Get incoming, outgoing, or all relationships for a person
- Update Edges: Modify relationship types and descriptions
- Delete Edges: Remove specific relationships
- Bidirectional Support: Track both directions of relationships
Graph Operations
- Full Graph Export: Export entire network as JSON (nodes + edges)
- Person Network: Get complete network view for an individual
- Relationship Types: Support for custom relationship types (reports_to, mentors, works_with, etc.)
Database Schema
Tables
people
id: INTEGER PRIMARY KEYname: TEXT NOT NULLrole: TEXTrelation_to_me: TEXTorganization: TEXTcharacter: TEXTnotes: TEXTcreated_at: TIMESTAMPupdated_at: TIMESTAMP
edges
id: INTEGER PRIMARY KEYfrom_person_id: INTEGER (FK to people.id)to_person_id: INTEGER (FK to people.id)relationship_type: TEXT NOT NULLdescription: TEXTcreated_at: TIMESTAMPupdated_at: TIMESTAMP- UNIQUE constraint on (from_person_id, to_person_id, relationship_type)
Indexes
idx_people_name: Index on people.nameidx_edges_from: Index on edges.from_person_ididx_edges_to: Index on edges.to_person_id
Usage Examples
Command Line Interface
# Person operations
python people_skill.py add-person "Jane Doe" --role "CTO" --org "StartupXYZ" --relation "Mentor"
python people_skill.py get-person 1
python people_skill.py search "engineer"
python people_skill.py list-people --org "StartupXYZ"
python people_skill.py update-person 1 --notes "Coffee meeting scheduled"
python people_skill.py delete-person 1
# Relationship operations
python people_skill.py add-relationship 1 2 "mentors" --description "Tech career guidance"
python people_skill.py get-relationships 1
python people_skill.py list-relationships
python people_skill.py update-relationship 1 --type "coaches"
python people_skill.py delete-relationship 1
# Graph operations
python people_skill.py get-graph
python people_skill.py get-network 1
Python API
from database import PeopleDatabase
from people_skill import PeopleAgent
# Initialize
agent = PeopleAgent("people.db")
# Add people
result = agent.add_person(
name="Alice Johnson",
role="VP Engineering",
relation_to_me="Former colleague",
organization="TechCorp",
character="Strategic thinker, empathetic leader",
notes="Worked together 2020-2022"
)
person_id = result["person_id"]
# Add relationship
agent.add_relationship(
from_person_id=1,
to_person_id=2,
relationship_type="manages",
description="Direct manager relationship"
)
# Query network
network = agent.get_person_network(person_id)
print(f"Found {network['connections_count']} connections")
# Export graph
graph = agent.get_graph()
print(f"Graph: {graph['nodes_count']} nodes, {graph['edges_count']} edges")
Common Relationship Types
reports_to: Hierarchical reporting (subordinate → manager)manages: Hierarchical management (manager → subordinate)works_with: Peer collaborationmentors: Mentorship (mentor → mentee)mentored_by: Inverse mentorship (mentee → mentor)friends_with: Personal friendshipknows: Acquaintancecollaborates_with: Project collaborationintroduced_by: Connection source
Use Cases
1. Personal CRM
Track professional contacts, their roles, organizations, and how you know them. Add notes about conversations, meetings, or follow-ups.
python people_skill.py add-person "Sarah Chen" \
--role "Product Director" \
--org "InnovateCo" \
--relation "Met at conference" \
--notes "Interested in API collaboration, follow up Q2"
2. Organizational Mapping
Build and maintain organizational charts with reporting relationships.
# Add team members
python people_skill.py add-person "Mike Lead" --role "Team Lead" --org "Engineering"
python people_skill.py add-person "Dev One" --role "Engineer" --org "Engineering"
python people_skill.py add-person "Dev Two" --role "Engineer" --org "Engineering"
# Create reporting structure
python people_skill.py add-relationship 2 1 "reports_to"
python people_skill.py add-relationship 3 1 "reports_to"
3. Mentorship Network
Track mentorship relationships and career guidance connections.
python people_skill.py add-relationship 5 3 "mentors" \
--description "Career guidance in ML/AI"
4. Collaboration Tracking
Map who works with whom on projects.
python people_skill.py add-relationship 1 2 "works_with" \
--description "Project Phoenix collaboration"
5. Network Analysis
Analyze your professional network to identify key connections.
# View someone's complete network
python people_skill.py get-network 1
# Export for visualization
python people_skill.py get-graph > network.json
Advanced Features
Bidirectional Relationship Queries
The system automatically handles both directions:
# Get all relationships for a person
edges = db.get_all_edges_for_person(person_id)
# Returns: {"outgoing": [...], "incoming": [...]}
Cascade Deletion
Deleting a person automatically removes all associated relationships.
Duplicate Prevention
The UNIQUE constraint prevents duplicate relationships between the same two people with the same type.
Search Flexibility
Search works across multiple fields:
python people_skill.py search "engineer"
# Matches: names, roles, organizations
Integration Examples
Export to Visualization Tools
# Export graph for tools like D3.js, Cytoscape, Gephi
python people_skill.py get-graph > graph.json
Import from CSV
import csv
from people_skill import PeopleAgent
agent = PeopleAgent()
with open('contacts.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
agent.add_person(
name=row['name'],
role=row['role'],
organization=row['org'],
relation_to_me=row['relation']
)
Best Practices
- Consistent Naming: Use consistent naming conventions for relationship types
- Rich Notes: Add contextual notes to remember important details
- Regular Updates: Keep information current with update commands
- Character Tracking: Use the character field to remember personality traits
- Relationship Descriptions: Add context to relationships for clarity
- Search First: Before adding, search to avoid duplicates
API Reference
See people_skill.py for complete API documentation.
Key Classes
PeopleDatabase: Low-level database operationsPeopleAgent: High-level agent interface with result dictionaries
Return Format
All agent methods return dictionaries with:
success: Boolean indicating success/failuremessage: Human-readable status message (on errors)- Data fields specific to the operation
Error Handling
The skill includes comprehensive error handling:
- Foreign key constraints prevent invalid relationships
- Unique constraints prevent duplicate relationships
- Cascade deletion maintains referential integrity
- Try-catch blocks in CLI provide user-friendly errors
Performance
- Indexed queries for fast lookups
- Efficient graph traversal
- Suitable for networks of thousands of people
- SQLite handles concurrent reads
Future Enhancements
Potential extensions:
- Graph visualization generation
- Shortest path finding between people
- Influence/centrality scoring
- Duplicate person detection
- Export to various formats (GraphML, DOT)
- Import from LinkedIn, contact lists
- Time-based relationship tracking
- Strength/confidence scoring for relationships
License
MIT
Overview
A people relationship management agent skill with persistent graph storage in SQLite. It enables AI agents to create, read, update, delete people, and define directed relationships, building personal CRMs, organizational charts, mentorship networks, and collaboration maps. Relationships are stored as edges with types like mentors, reports_to, and works_with for bidirectional querying.
How This Skill Works
Nodes are stored in the people table and edges define directed relationships in the edges table. The database supports full-text search on names, roles, and organizations, and allows filtering by organization or relation type; deletes cascade to relationships. It can export the entire graph as JSON for backups or integrations.
When to Use It
- When building a personal CRM to track contacts, roles, and organizations
- When visualizing an org chart or reporting structure
- When mapping mentorship networks and identifying mentors/mentees
- When mapping project collaborations and cross-functional teams
- When exporting the full graph as JSON for analytics or sharing
Quick Start
- Step 1: Initialize the agent with a SQLite database (e.g., people.db)
- Step 2: Add a person and a relationship (e.g., add-person and add-relationship)
- Step 3: Retrieve a network or export the graph (e.g., get-network or get-graph)
Best Practices
- Define clear relationship types (e.g., reports_to, mentors, works_with) and keep them consistent
- Keep people records complete with name, role, organization, and notes for context
- Index key fields and use full-text search for fast lookups
- Regularly export the graph to JSON for backups and integrations
- Use cascade deletes carefully to preserve or remove related edges
Example Use Cases
- Add a CTO as a mentor and map their mentee relationships within a startup
- Build an org chart by linking managers to reports
- Track cross-team collaborators on a product launch
- Query a person’s network to surface potential connections for introductions
- Export the entire network as JSON for analytics or sharing with stakeholders