provenance
Analyze saved trajectories and recall audit events offline to record whether recalled guidelines influenced completed sessions.
Best use case
provenance is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Analyze saved trajectories and recall audit events offline to record whether recalled guidelines influenced completed sessions.
Teams using provenance should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/provenance/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How provenance Compares
| Feature / Agent | provenance | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Analyze saved trajectories and recall audit events offline to record whether recalled guidelines influenced completed sessions.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Provenance Analyzer
## Overview
This skill runs after one or more sessions have completed. It reads saved trajectories from `.evolve/trajectories/`, matches them to `recall` events in `.evolve/audit.log`, and records post-hoc `influence` events for recalled guidelines.
Use this skill when you want to compute usage provenance without coupling the work to the live learn step.
## Workflow
### Step 1: Load Recall Events
Read `.evolve/audit.log` as JSONL. Find entries where `event == "recall"` and `entities` is a non-empty list.
Skip any recall event that already has `influence` entries for the same `session_id` and entity ids. Do not write duplicate influence records.
### Step 2: Locate Saved Trajectories
List `.evolve/trajectories/` and match each recall event to a trajectory by `session_id`.
Matching strategy (in order):
1. `claude-transcript_<session-id>.jsonl` - the stop-hook transcript dump; the session id is in the filename.
2. `trajectory_<timestamp>_<session-id>.json` - written by the /evolve-lite:save-trajectory skill when a session id is available. Match on the `<session-id>` slice of the filename.
3. `trajectory_<timestamp>.json` - open the file and match its top-level `session_id` field against the recall event. Only fall back to this step when the filename alone does not identify the session.
If none of the above yields a confident match for a recall event, skip it. Do not guess.
### Step 3: Read Recalled Entities
For each recalled entity id, open `.evolve/entities/<id>.md`. The id is a path relative to `.evolve/entities/` without the `.md` suffix, such as `guideline/foo` or `subscribed/alice/guideline/foo`.
Read the entity content and trigger. Skip ids whose files are missing.
### Step 4: Assess Influence
Compare each recalled entity with the matched trajectory. Pick exactly one verdict:
- `followed` - the agent's actual actions are consistent with the guideline.
- `contradicted` - the guideline applied, but the agent did the opposite or repeated the avoidable dead end.
- `not_applicable` - the guideline was recalled but did not apply to this session.
Keep `evidence` to one short sentence citing a concrete action, tool call, or absence in the trajectory.
### Step 5: Write Influence Events
Pipe one JSON payload per assessed session to the helper:
```bash
echo '{
"session_id": "<session-id>",
"assessments": [
{"entity": "guideline/<slug>", "verdict": "followed", "evidence": "Agent used the saved parser before trying shell fallbacks."}
]
}' | python3 ${CLAUDE_PLUGIN_ROOT}/skills/evolve-lite/provenance/scripts/log_influence.py
```
The `entity` value must match exactly what appeared in the recall event, including any `subscribed/<source>/` prefix.
It is valid to emit an empty `assessments` list when recall events exist but no recalled guideline can be assessed.Related Skills
evolve-lite:provenance
Analyze saved trajectories and recall audit events offline to record whether recalled guidelines influenced completed sessions.
unsubscribe
Remove a repo from the unified repos list and delete its local clone.
sync
Pull the latest guidelines from every configured repo (read- and write-scope).
subscribe
Add a shared guidelines repo (read-scope subscription or write-scope publish target) to the unified repos list.
save
Captures the current session's successful workflow and saves it as a reusable skill with SKILL.md and helper scripts
save-trajectory
Save the current conversation as a trajectory JSON file in OpenAI chat completion format for analysis and fine-tuning
recall
Must be used at the start of any non-trivial task involving code changes, debugging, repo exploration, file inspection, or environment/tooling investigation to surface stored guidance before analysis or tool use.
publish
Publish a private guideline to a configured write-scope repo.
learn
Must be used near the end of any non-trivial turn that produced potentially reusable tools, guidance, errors, workarounds, or workflows, so those lessons are saved for future turns.
evolve-lite:unsubscribe
Remove a repo from the unified repos list and delete its local clone.
evolve-lite:sync
Pull the latest guidelines from every configured repo (read- and write-scope).
evolve-lite:subscribe
Add a shared guidelines repo (read-scope subscription or write-scope publish target) to the unified repos list.