From methodic
Use this skill when the user wants to permanently delete one or more **open (uncommitted)** Chronicle experiments — phrases like "delete this experiment", "remove that draft", "I/the agent created too many experiments, clean them up", "consolidate these experiments", "throw away the experiments I'm not using". The skill resolves the target experiment(s), shows the user exactly what will be removed, requires an explicit confirmation (delete is irreversible), then hard-deletes each open one via the SDK. Committed or concluded experiments are NOT deleted — the skill reports them and points the user at retraction (`chronicle-retract-experiment` / `chronicle.experiments.retract`) instead. Do not invoke this to undo results on a committed experiment (that's retraction) or to remove a single variation (that's a variation operation).
How this skill is triggered — by the user, by Claude, or both
Slash command
/methodic:delete-experimentThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Hard-delete **open** Chronicle experiments — the right tool for cleaning up
Hard-delete open Chronicle experiments — the right tool for cleaning up drafts that were started and abandoned (e.g. an agent that spun up more experiments than intended). The end state is: each targeted open experiment and everything it owns (variations, runs, asset/research-prompt links, ACLs, auto-roles, and best-effort its GitHub repo + search document) is gone.
This is distinct from retraction. Retraction is a soft flag that preserves the row, lineage, and audit trail — the right tool for committed/concluded work that is part of the historical record. Hard delete physically removes a draft that was never committed, and the server only allows it while the experiment is open. The skill never deletes committed or concluded experiments; it reports them so the user can retract instead.
Delete is irreversible. Always confirm with the user before deleting, and show them the concrete list first.
experiment_ids — one or more experiment UUIDs (or short
slugs/names the user used). Resolve in order:
confirmed (default False) — explicit go-ahead. Delete is
irreversible, so never proceed without it. Showing the list and
getting a "yes" is mandatory, even for a single experiment.from methodic import Chronicle
chronicle = Chronicle.from_env() # CHRONICLE_SERVER_URL + CHRONICLE_API_KEY
# 1. Resolve the candidate set. For "clean up the drafts I'm not using",
# list the caller's OPEN experiments and let the user pick / confirm.
# (Pass owner="_all" to span every scope the caller can see; omit for
# just their personal scope.)
candidates = []
for summary in chronicle.experiments.iter(status="open"):
candidates.append(summary)
# 2. Show the user EXACTLY what will be deleted — id, slug/name, hypothesis,
# state — and get an explicit confirmation. Do NOT skip this. For each
# target, a quick detail fetch makes the preview concrete:
for exp_id in target_ids:
detail = chronicle.experiments.get(exp_id)
e = detail.experiment
print(f"{e.id} [{e.state}] {e.slug or e.hypothesis_summary!r}")
# --> Present this list, then ask: "Delete these N experiments? This is
# permanent and cannot be undone." Proceed only on an explicit yes.
# 3. Delete each OPEN experiment. Skip (and collect) anything not open — the
# server would 409 it anyway, but checking first gives a cleaner report.
deleted, skipped, failed = [], [], []
for exp_id in target_ids:
try:
detail = chronicle.experiments.get(exp_id)
if detail.experiment.state != "open":
skipped.append((exp_id, detail.experiment.state))
continue
summary = chronicle.experiments.delete(exp_id)
deleted.append((exp_id, summary))
except Exception as err: # ConflictError (409) / NotFound (404) / 403
failed.append((exp_id, str(err)))
# 4. Report.
print(f"Deleted {len(deleted)}; skipped {len(skipped)} (not open); "
f"{len(failed)} failed.")
Tell the user:
chronicle.experiments.retract(id, reason=...)), which flags it and
auto-invalidates its output assets while preserving the record.chronicle.assets.delete / MCP chronicle.delete_asset) if the user
wants them gone too.Delete action on the experiment. Surface
verbatim.An agent driving Chronicle through the MCP server (not the Python SDK) has
chronicle.delete_experiment(experiment_id) — the same open-only hard
delete and cascade as chronicle.experiments.delete, with one additional
guard: the caller must be the experiment's creator, so an autonomous
agent can only clean up drafts it created itself, even where Delete RBAC
would allow more. Anything the guard turns away (deleting another
principal's draft you hold Delete on) goes through the SDK/HTTP path.
The committed/concluded refusal and the descendants refusal are identical
in both paths. For retraction the MCP tool is
chronicle.retract_experiment — see chronicle-retract-experiment; it has
no creator guard (retraction preserves the record).
pip install methodic-researchCHRONICLE_API_KEY exported (or methodic auth login already done)git — this is an API-only operation; the experiment's repo is torn
down server-side as part of the delete.Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.
npx claudepluginhub methodic-research/skills --plugin methodic