Maintain a lightweight external conversation state map for complex, multi-step, ambiguous, or long-running conversations, using typed nodes and lightweight relationships. Use when the user wants more logical continuity, mind-map-like task tracking, clearer conversational structure, or recurring review of goals, context, decisions, open questions, risks, dependencies, and next actions across turns.
Resources
4Install
npx skillscat add seashapeland/conversation-map-skill Install via the SkillsCat registry.
Conversation Map
Maintain a concise, user-visible conversation state map. Model the map as a lightweight graph: typed nodes connected by typed relationships. Do not record hidden chain-of-thought. Record only working state that helps future replies stay coherent.
Core Loop
Before each reply:
- Review the current conversation map if one exists.
- Build a small focus subgraph around the current request.
- Follow
blocks,depends_on, andnextrelationships before answering. - Use the map to keep the reply focused and consistent.
After each reply:
- Add new durable facts, constraints, or preferences.
- Add or update nodes for important decisions, tasks, questions, risks, and artifacts.
- Add relationships only when they clarify dependency, causality, priority, or replacement.
- Mark completed active items as done.
- Remove stale assumptions, obsolete tasks, and relationships that no longer matter.
- Do not create, overwrite, or delete files only to maintain the map unless the user explicitly asked for persistent artifacts.
Node Types
Use short IDs with type prefixes. Create only nodes that help future work.
G: Goal. A desired outcome or current objective.C: Context. A durable fact, background detail, or confirmed constraint.P: Preference. A stable user preference or working style.T: Task. A work item, active thread, or completed action.D: Decision. A choice that should guide later replies.Q: Question. An unresolved issue that may affect the answer or plan.R: Risk. A possible failure mode, uncertainty, or fragile assumption.A: Artifact. A file, document, code module, design, dataset, or other object being created or modified.
Node Fields
Use compact fields when they help maintenance. Do not fill every field on every node.
status:active,pending,blocked,done,superseded, orarchived.source:user,assistant,file,tool, orinferred.confidence:confirmed,assumed, oruncertain.
Apply these rules:
- Treat
source: inferredplusconfidence: uncertainas temporary; confirm, resolve, or prune it later. - Prefer user, file, and tool evidence over inferred nodes when conflicts appear.
- Give decision nodes a short
reason. - Give question nodes a short
impact. - Give risk nodes a short
mitigationwhen a useful mitigation exists.
Relationship Types
Use relationships as directional edges: [source] --type--> [target].
supports: Source strengthens, explains, or provides evidence for target.depends_on: Source cannot be completed or trusted without target.blocks: Source prevents progress on target.resolves: Source answers, closes, or mitigates target.supersedes: Source replaces target; target can usually be pruned.derived_from: Source came from target.updates: Source changes or maintains target.next: Source should be handled before target or leads to target.
Edge Direction
Read every edge as a sentence: [source] relationship [target]. Keep direction consistent with the examples below.
[T1] --depends_on--> [Q1]means taskT1depends on questionQ1.[R1] --blocks--> [T1]means riskR1blocks taskT1.[D2] --supersedes--> [D1]means decisionD2replaces decisionD1.[C1] --supports--> [D1]means contextC1supports decisionD1.
Default Map Shape
Use this structure when showing or reconstructing the map:
## Nodes
- [G1] Goal: ... - status: active - source: user - confidence: confirmed
- [C1] Context: ... - source: user - confidence: confirmed
- [T1] Task: ... - status: active - source: assistant - confidence: confirmed
- [D1] Decision: ... - status: active - reason: ...
- [Q1] Question: ... - status: pending - impact: ...
- [R1] Risk: ... - status: active - mitigation: ...
- [A1] Artifact: ... - status: active
## Relationships
- [T1] --depends_on--> [Q1]
- [D1] --resolves--> [Q1]
- [T1] --updates--> [A1]
- [T1] --next--> [T2]When the map is small, omit empty node types and unnecessary relationships.
Focus Rules
Before answering, use a focus subgraph instead of mentally loading the whole map.
Include:
- The active goal for the current request.
- Nodes directly mentioned by the user or connected to current artifacts.
- Active
blocks,depends_on, andnextrelationships around those nodes. - Recently added or changed nodes.
- Relevant confirmed preferences and constraints.
Ignore done, archived, and isolated nodes unless they explain a current decision, blocker, or risk.
Map Budget Rules
Keep the active map small enough to review before each reply.
Prefer these limits unless the user asks for a complete map:
- Active goals: 1-3
- Active tasks: 3-7
- Open questions: 3-7
- Active risks: 1-5
- Decisions: keep only decisions that still affect future work
- Relationships: keep only edges that explain blockers, dependencies, replacement, or current artifact changes
When limits are exceeded:
- Merge related nodes.
- Archive completed or stale nodes.
- Keep the blocker/dependency path over background detail.
- Summarize low-value history into one context node.
Artifact Rules
Treat A nodes as references to artifacts, not permission to create or modify files.
Apply these rules:
- Keep the conversation map in conversation state by default.
- Create a persistent map file only when the user asks to save, persist, export, or create a file.
- Create task breakdowns, plans, documents, code, or other artifacts only when the user's task calls for those deliverables.
- Do not delete, overwrite, or rename an artifact just because a node is
superseded; mark the node or relationship assupersededinstead. - Before changing an existing artifact, make sure the user's current request requires that file change.
- When persistent artifacts are created or modified, mention their paths briefly in the reply.
Output Rules
Do not print the full map every turn unless the user asks.
When the map changes materially, include a short delta:
Map update:
- Added node: [Q2] Question: ...
- Added edge: [T1] --depends_on--> [Q2]
- Resolved: [D2] --resolves--> [Q2]
- Removed: [C3] obsolete contextKeep updates brief. Preserve useful state rather than every detail.
Conflict Rules
When a new node conflicts with an existing node, do not silently keep both as active.
Choose one:
- Add a
supersedesrelationship and mark the old nodesuperseded. - Add a
resolvesrelationship if the new node closes an old question or risk. - Add a new question node if the conflict is unresolved and affects future work.
Prefer confirmed user, file, and tool evidence over inferred or uncertain nodes. Mention the conflict in the reply only when it affects the user's current request.
Pruning Rules
Delete or compress map content when it no longer affects future work.
Keep:
- Current goals
- Durable user preferences
- Confirmed constraints
- Active tasks
- Important decisions
- Blocking questions
- Edges that explain dependencies, blockers, or replacement
- Unresolved conflicts that affect future work
Remove:
- Finished details with no future relevance
- Superseded assumptions
- Repeated context
- Low-value intermediate notes
- Isolated nodes that no longer affect goals, tasks, questions, or risks
- Temporary inferred nodes that were never confirmed and no longer matter
Pruning the map is not permission to delete files. File deletion requires an explicit user request.