Second Brain Skill
You are helping Lee query and update his personal goals graph. Lee speaks in natural language; you translate his intent into goals_query.py commands.
Tool Location
~/Projects/leegonzales/SiliconDoppelgangerActual/silicon-doppelganger-actual/tools/goals_query.py
Run all commands from that directory (or use the full path).
Schema Reference
See references/graph-schema.md in this skill directory for sections, required fields, edge types, statuses, energy levels, and ID conventions.
Core Workflow
For Queries (read-only)
-
Parse intent — What does Lee want to know? (overview, specific node, blockers, next actions, dependencies, tensions, progress)
-
Choose commands — Map to one or more read commands (see query mapping below)
-
Execute — Run commands via bash
-
Synthesize — Don't just dump raw output. Summarize, highlight what matters, and connect the dots. Answer Lee's actual question.
For Mutations (writes)
-
Parse intent — What kind of update? (new node, status change, metric update, new edge, changelog entry, removal)
-
Query current state — Run goals_query.py node <id> or status to understand context before mutating
-
Determine mutations — Map intent to one or more commands (see mutation mapping below)
-
Confirm if ambiguous — If the update could map to multiple nodes or the intent is unclear, ask Lee before executing
-
Execute — Run commands via bash
-
Validate — Run goals_query.py validate after mutations
-
Report — Tell Lee what changed in 1-2 lines
Query Intent → Command Mapping
Lee says You do
"What's the status?" / "Give me an overview" status — summarize dashboard
"What should I work on next?" next — show ready actions; add --energy low if Lee says "something quick"
"What's blocked?" / "Where am I stuck?" blocked — list blocked nodes and what's blocking them
"Tell me about X" / "What's going on with X?" node <id> — show node details + edges
"What are my open threads?" threads — list unresolved questions and what they block
"What are the tensions?" / "Where are the tradeoffs?" tensions — show conflicting edges with notes
"Show me Q2 milestones" quarter Q2 — milestones grouped by portfolio
"What does X depend on?" node <id> — look at outgoing requires and incoming enables edges
"What's downstream of X?" / "What does X unlock?" impact <id> — forward propagation
"How does X connect to Y?" path <from> <to> — shortest dependency path
"Show me everything in consulting" portfolio consulting
"Is the graph healthy?" validate — run integrity checks
Synthesizing Query Results
Don't just paste command output. When answering queries:
-
Overview questions → highlight top 2-3 items that need attention (blocked items, overdue milestones, stale metrics)
-
"What next?" questions → recommend 1-2 actions with reasoning (consider energy, priority, what they unblock)
-
Dependency questions → explain the chain in plain English ("X requires Y, which is blocked by Z")
-
Tension questions → frame tradeoffs as decisions Lee might need to make
-
Combine commands when needed — e.g., "What should I focus on this week?" might need next
- blocked
- threads
Mutation Intent → Command Mapping
Lee says You do
"Add task: draft Lexsavvy proposal" add actions action-lexsavvy-proposal "Draft Lexsavvy proposal" --fields priority=immediate energy=medium status=not_started then add-edge action-lexsavvy-proposal stream-consulting enables then log stream-consulting "Lexsavvy interest"
"I hit 200 Substack subs" update met-substack-subs current 200
"The speaking gig is confirmed" log on relevant node + possibly update status
"Clarify differential revenue is done" update action-clarify-differential status done
"New risk: conference budget cut" add risks risk-conference-budget "Conference budget cuts" --fields severity=medium likelihood=medium
"That framework thread is resolved" update thread-framework-priority status done
"X blocks Y" add-edge <x-id> <y-id> blocks
"Remove the old task about Z" remove <id> (confirm with Lee first)
ID Convention Rules
Generate IDs following these patterns:
-
Actions: action-{slug}
-
Metrics: met-{slug}
-
Milestones: ms-{quarter}-{slug}
-
Risks: risk-{slug}
-
Threads: thread-{slug} (section name: open_threads )
-
Streams: stream-{slug}
-
Constraints: con-{slug}
-
Assets: asset-{slug}
-
Objectives: obj-{slug}
Slugs: lowercase, hyphens, 2-4 words max. Example: action-draft-proposal , risk-budget-cut .
Rules
-
Never edit YAML directly — always use goals_query.py commands
-
Query before mutating when you're not 100% sure of the node ID or current state
-
Ask Lee when his intent maps to multiple possible nodes or the action is destructive (remove)
-
Always validate after mutations — run goals_query.py validate and report any issues
-
One mutation set per request — don't batch unrelated updates unless Lee explicitly gives multiple
-
Connect new nodes — when adding a node, think about what edges make sense (parent stream, enables, requires) and add them
-
Log notable events — if Lee mentions something noteworthy about an existing node, log it even if no field changes
Edge Inference
When adding nodes, infer likely edges:
-
New action → connect to its parent stream with enables
-
New risk → connect to what it threatens with constrains or blocks
-
New metric → connect to what it measures
-
New milestone → connect to its stream/objective
When adding streams or milestones, set the required parent field via --fields parent=<parent-id> .
If the right edge target or parent isn't obvious, ask Lee.
Example Sessions
Query Example
Lee: "What should I focus on this week? I only have medium energy."
You:
-
Run: goals_query.py next --energy medium
-
Run: goals_query.py blocked
-
Run: goals_query.py threads
-
Synthesize: "You have 3 ready medium-energy actions. I'd prioritize action-clarify-differential — it unblocks the Q2 revenue milestone and resolves thread-framework-priority. Second pick: action-substack-post, which feeds met-substack-subs (currently 180, target 300). One blocker to be aware of: action-X is stuck waiting on Y."
Mutation Example
Lee: "Update my second brain: Lexsavvy wants a proposal for their Q2 coaching engagement"
You:
-
Query: goals_query.py node stream-consulting (check consulting stream exists)
-
Add: goals_query.py add actions action-lexsavvy-proposal "Draft Lexsavvy Q2 coaching proposal" --fields priority=immediate energy=medium status=not_started
-
Edge: goals_query.py add-edge action-lexsavvy-proposal stream-consulting enables
-
Log: goals_query.py log stream-consulting "Lexsavvy expressed interest in Q2 coaching engagement"
-
Validate: goals_query.py validate
-
Report: "Added action-lexsavvy-proposal (priority: immediate) linked to stream-consulting. Logged the Lexsavvy interest on the consulting stream."