context-intelligence-server-data-ops
Skill5 starsChanged 5 days agoMITView on GitHub
Exact step order, wording, and the "session details" block format for the delete flows the server-data-ops agent drives — delete the current session, clean up every session from the current working directory, find-then-delete a session by description, and delete a session someone else created.
In this repository12 other files it gives its agents.
- AGENTS.mdAGENTS.md
- context-intelligence-derived-metricsSkill
- context-intelligence-eval-designSkill
- context-intelligence-evaluation-methodologySkill
- context-intelligence-gdsSkill
- context-intelligence-graph-querySkill
- context-intelligence-hill-climbingSkill
- context-intelligence-session-navigationSkill
- context-intelligence-session-reconstructionSkill
- context-intelligence-tool-designSkill
- transcriptSkill
- workflow-pattern-analysisSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 4 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 55
All three accept source (name a server) and list_sources: true (discover the connectable set without acting).
- Very specific: line 82
Current user identity (for ownership): Never read from context and never guess.
- Very specific: line 83
Call whoami for the *same server* the session in question is on, and use its contributor_id as the one reference identity for the …
- Distinctive: line 96
Use this exact shape for any candidate or confirmed target (the find-by-description candidate list.
- Very specific: line 114
Summary line: Not returned by the server, and not built by this agent — it comes from graph-analyst, delegated to alongside the search (see …
- Distinctive: line 136
Don't ask the user for an id.
- Very specific: line 137
Prove: Call session_summary(session_id=<resolved>, list_sources=true) and show the user: root_id, created_by (confirmed against whoami for …
- Distinctive: line 192
Run the ownership check on the chosen session.
- Very specific: line 257
Call whoami for the *same server* the session is on.
- Very specific: line 267
Never skip step 2 — warning from created_by alone, without resolving the acting user via whoami first, produces false "not created by you" …
- Distinctive: line 280
If a session exists on more than one server, name all of them and ask which to delete from (or "all").
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Context Intelligence Server Data Ops
Step-by-step procedure for deleting Context Intelligence session data from a server, so the delete flows run the same way every time instead of being improvised fresh.
This is a direct, interactive conversation with the user — every decision-critical step (preview, offer, impact, confirmation) is shown to them directly, in your own message, never summarized away by delegation.
When to Use
Load whenever the server-data-ops agent is about to run a delete flow: the current
session, every session from the current working directory, a session found by
description, or a session created by someone else.
When NOT to Use
- A plain
session_summarypreview with no delete on the table doesn't need this. - Reading or analysing session content is
graph-analyst's job (seecontext-intelligence-graph-query), not this skill.
Tools
session_summary— read-only preview. Returns{source: {name, url, origin}, summary: {...}}.summaryfields (the server'sDeletionPreview):Field Meaning root_idThe graph's root session id session_idsEvery session id in that graph (root + descendants) node_count,edge_count,blob_countTotals for the whole graph created_byWho created the root session started_at,last_changeISO-8601 timestamps subsession_countSessions under the root workspace,working_dirWhere it ran deletablefalseif anything in the graph is still receiving datapending_sessionsSession ids still receiving data, if any delete_session— the real, permanent delete. Returns{source: {...}, result: {root_id, session_count, nodes_deleted, relationships_deleted, blobs_deleted, queue_sessions_cleaned}}.whoami— read-only identity lookup. Returns{contributor_id, source: {name, url, origin}}for the server you call it against. Used to compare against a session'screated_by(see Ownership Check).
All three accept source (name a server) and list_sources: true (discover the
connectable set without acting). None takes a workspace — you always address a
session by id.
todo— the standard todo-list tool. Used only in the folder cleanup, one item per candidate root session found, so a bulk cleanup never silently skips one.
A lockdown hook denies this agent write_file, edit_file, apply_patch, and any direct
graph-query tool — it guides the user through settings edits instead of making them,
and delegates all search and narrative work to graph-analyst.
Key Concepts
Current session id. Comes from Amplifier's own runtime context — the Session
ID field injected into your status context every turn. For any "this session" / "my
current session" request, that value IS the session to act on. Don't ask the user
for an id, and a typed id never replaces it — resolve from context regardless. Only
ask directly if context genuinely has no Session ID.
Current working directory (for the folder cleanup). Comes from the same runtime
context — the Working directory field injected into your status context every
turn, resolved the same way as the session id above. For any "this folder" / "this
working directory" / "uploaded from here" request, that value is the directory to
search — not a single session id. Don't ask unless context genuinely has none.
Current user identity (for ownership). Never read from context and never guess.
Call whoami for the same server the session in question is on, and use its
contributor_id as the one reference identity for the comparison (see Ownership
Check).
When the folder exclusion applies. Offer it only when the data is both yours and from here — this session, this folder, this machine (the current-session delete, the folder cleanup). It's a local push-config setting on this machine, so it only stops future pushes from the current local context; it does nothing for data generated elsewhere. Don't offer it for a session found by topic/description (the find-by-description delete) or one that isn't yours (see Ownership Check).
The "Session Details" Block
Use this exact shape for any candidate or confirmed target (the find-by-description candidate list; the pre-delete confirmation in any flow):
Session <root_id>
Created by: <created_by>
Started: <started_at>
Last updated: <last_change>
Sub-sessions: <subsession_count>
Working dir: <working_dir>
Server: <source.name> (<source.url>)
Still live: <"yes — cannot delete yet" if not deletable, else "no">
Summary: <your synthesized overview of the session, or "not available">Fill every field from a real session_summary call. Never fabricate a value you
didn't receive.
Summary line. Not returned by the server, and not built by this agent — it comes
from graph-analyst, delegated to alongside the search (see the search step in
"Find a Session by Description, Then Delete"). It returns a short synthesized
overview of what the session was about, built from that session's root-session
prompts only (never subsessions). This must be a synthesis, never a raw or verbatim
prompt quote, and never a from-memory guess. If graph-analyst can't produce one,
use "not available."
Delete the Current Session
Applies whenever the request refers to the user's own current session ("my current session," "this session," "the session I'm in") — even if the user also supplies a session id; a supplied id doesn't downgrade it out of this case or replace the runtime id. Route to Clean Up Everything Pushed From This Working Directory instead when the request is about the whole working directory, not just the current session ("this folder," "this working directory," "uploaded from here"). Route to Find a Session by Description, Then Delete when the request names or searches for some other session.
- Resolve. Take the current session id from runtime context (see Key Concepts). Don't ask the user for an id.
- Prove. Call
session_summary(session_id=<resolved>, list_sources=true)and show the user:root_id,created_by(confirmed againstwhoamifor the same server),working_dir, andlast_change(flag if under a minute old — "may still be live"). Note every server the session exists on, fromlist_sources. If it 404s on every server, stop and tell the user plainly — never delete against an unresolved session. Offer the folder exclusion to the user directly, and wait for their answer, before anything else proceeds. This is the destination push filter on the session's
working_dir, not the delete scope — deletion always removes the whole session graph regardless of this setting. Show the settingoverrides.hook-context-intelligence.config.destinations.<name>.excludein~/.amplifier/settings.yaml— a list of gitignore-style patterns matched against a session'sworking_dir; adding one for the current folder stops that destination being selected. The agent has no filesystem tool, so it shows the setting in its own message and offers to guide the user through applying it — never edits the file itself. Make this offer every time, regardless of whether you can confirm the folder is currently included. Wait for their answer, confirm whether they applied it, then move on.Two effects, both required — say so plainly in your message back to the user. Writing the pattern into
settings.yamlis the durable source of truth: it makes the exclude filter correct in a new session too, so a freshly started session in this folder honors it from the start. To also stop the already-running session (and any sub-session it spawns afterward) without a restart, theset_ingestion_filterstool is run in the root session — it re-readssettings.yaml, re-routes the live dispatchers, and reportsdisk_consistentso the live filter and the file are confirmed to agree. That tool lives in the root session (where the ingestion hook is mounted), not in this delegated agent — so if you cannot reach it, say so and ask the user (or the root session) to run it. Close the loop with a message of the shape: "Exclude saved to settings.yaml — make sure the exclude filter is correct in a new session too — and applied live to the current session; both the current session and any new session in this folder now stop pushing to<destination>."- State the impact. The whole graph — the session plus every descendant (forks, sub-sessions, delegated children) — plus its blobs and queue records, permanently, on the server(s) found in step 2. Shared nodes are kept; there is no undo.
- Confirm. Explicit, restating the resolved id and the server(s) — a vague "yes" isn't enough.
- Delete, then verify, on every server (see Multi-Server Handling).
Find a Session by Description, Then Delete
- Take the user's description (topic, content, date range, sometimes a server/workspace).
- Search + narrate. For any non-trivial criteria (topic, content, date, workspace),
delegate to
graph-analyst. It runs the search AND returns, for each candidate, both the key facts and a short synthesized overview (see "Summary line" above) — you never query the graph or build the narrative yourself. This is a data-fetch delegation, not a hand-off of the conversation — the results come back to you and you keep driving the flow. Skip the delegation only for a trivial direct lookup — the user names an exact session id — and callsession_summaryon it directly. Cap the candidate set to a handful before per-candidate work. - Build a Session Details Block per candidate, using the overview
graph-analystreturned (or "not available"), and present them; the user picks one. - Run the ownership check on the chosen session.
- Re-run
session_summaryon the chosen id right before delete (a fresh preview, in case anything changed since step 2). - Confirm explicitly — id, counts, server(s) — then delete and verify on every server (see Multi-Server Handling).
Clean Up Everything Pushed From This Working Directory (Yours, From Here)
This is a find-by-criteria cleanup, not a current-session delete. The
current-session delete's defining trait is the current session, resolved from
runtime; this cleanup finds sessions by criteria — working_dir = this folder
AND created_by = you — the same find-by-criteria shape as the find-by-description
delete. The only thing it borrows from the current-session delete is the
folder-exclusion offer, because it's your own folder being pushed.
Applies when the user is worried that data from sessions run in THIS folder was pushed and should not have been — "I think I uploaded data from sessions in this folder, I want to delete it," "things from this working directory should never have been pushed." Route here instead of the current-session delete when the request is about the folder, not a single session; route here instead of the plain find-by-description delete when the criteria is specifically "this folder + mine" rather than a topic/date/server description.
- Apply the folder exclusion first, before finding or deleting anything.
Resolve the working directory from runtime context (see Key Concepts), the
same way the current-session delete resolves the current session id. Offer the
setting
overrides.hook-context-intelligence.config.destinations.<name>.excludein~/.amplifier/settings.yaml— the same folder-exclusion offer described in the current-session delete's step 3 — show it in your own message, guide the user through applying it (you never edit the file yourself), and confirm it's applied before moving on: while the folder is still in scope, continued ingestion would keep re-creating the very data you are about to delete. Apply it with BOTH effects from step 3 — persisted tosettings.yaml(so the exclude filter is correct in a new session too) AND made live viaset_ingestion_filtersin the root session (so the current running session, and any sub-session it spawns afterward, stop immediately without a restart) — before you enumerate or delete. - Run the S2 search, by criteria (this folder + mine). Delegate to
graph-analystto enumerate every root session (never subsessions) whoseworking_dirmatches the resolved directory ANDcreated_byis you, checking every configured server (all-servers completeness applies to the search too, not only the deletes). It returns the candidate root sessions, their key facts, and a short synthesized overview for each — same as the find-by-description delete's search step. - Propose the list. For each candidate, build a Session Details Block
using the overview
graph-analystreturned (see "Summary line" above), present it, and add one item to a todo list (thetodotool) per session found — so every session is tracked and none is silently skipped. - Delete all. Walk the todo list one session at a time. For each: re-run
session_summary(a fresh preview), run the ownership check (a session in this folder may not be the user's own), state the impact, confirm explicitly, delete, and verify on every server it is on (see Multi-Server Handling) — then mark that todo item done. Never mark an item done before its delete is verified.
Ownership Check (Before Deleting Any Found or Named Session)
Runs inside any of the delete flows above — the current-session delete, the find-by-description delete, or the folder cleanup — after the preview and before the delete confirmation.
- From the preview, note the session's
created_by. - Call
whoamifor the same server the session is on. Read itscontributor_id. - Compare:
- Match → the user's own session. No warning; continue normally.
- Differ → tell the user directly, in your own visible message, that it was
created by
<created_by>, not them, and wait for a separate, explicit confirmation before deleting. contributor_idis null (auth disabled or unresolvable) → say you can't confirm ownership and ask the user directly, waiting for their answer. Don't treat null as a mismatch.
Never skip step 2 — warning from created_by alone, without resolving the acting user
via whoami first, produces false "not created by you" warnings on the user's own
sessions.
Multi-Server Handling (All Flows)
list_sources: trueon any tool returns the connectable set: every reachable server, withname,url,origin(sourceordestination).source=<name>addresses one server. Omitting it uses the single configured tool source if there's exactly one, else the first destination; with two or more sources and none named, the tool refuses and lists valid names.- If a session exists on more than one server, name all of them and ask which to delete from (or "all").
- For each chosen server: delete, then verify that server's own result (or a fresh
session_summary) before moving to the next — one delete succeeding says nothing about the others. - Report exactly what was removed and from where. If the session still exists on a server that wasn't chosen or checked, say so by name — never say "done" while that's true.
Errors to Expect
- 404 — the session id is unknown to that server. Say so; check for a typo or a different server.
- 409 — still receiving data (not yet deletable), or an ambiguous id across workspaces. Never force or retry aggressively — tell the user it's still live.
ambiguous_source_selection/unknown_source— a source-selection problem, not a server error. Call withlist_sources: trueand ask the user to pick a name.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

