Probe Feature
Skill8 starsChanged 7 days agoMITView on GitHub
Use when a feature's correct behavior is unknown, or when you need a recorded before/after from the real Obsidian app. Runs a throwaway probe, writes a report, and promotes proven behavior into deterministic e2e specs.
In this repository14 other files it gives its agents.
- AGENTS.mdAGENTS.md
- Break ChangeSkill
- cavecrewSkill
- caveman-commitSkill
- caveman-compressSkill
- caveman-helpSkill
- caveman-reviewSkill
- cavemanSkill
- caveman-statsSkill
- Chaos MonkeySkill
- Ship ChangeSkill
- Verify Obsidian ChatSkill
- Verify PRSkill
- WorktreeSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. About 0 are common, 11 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈11
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 19
If you cannot name an observable, the idea is not ready.
- Very specific: line 27
Start from a generated vault.
- Distinctive: line 39
Read the keyframes and metrics.
- Very specific: line 40
Write the observations into report.md.
- Distinctive: line 78
Keep the scenario disposable.
- Distinctive: line 82
When the answer is "keep it", extract the durable behavior:
- Very specific: line 84
Write assertions in test/e2e/specs/<area>.e2e.ts.
- Distinctive: line 85
Run three times with no retries.
- Distinctive: line 88
Delete the probe scenario.
- Distinctive: line 89
Add the entry point to the feature map with the spec path.
- Distinctive: line 91
When the answer is "kill it", delete the branch.
- Distinctive: line 99
Do not pixel-diff the video.
- Distinctive: line 100
Do not promote a probe into CI.
- Distinctive: line 101
Do not use a probe to avoid writing a witness for a known behavior.
≈ “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
Probe feature
A probe is an experiment, not a test. It answers "what actually happens?" with a recording a human can watch and metrics an agent can check. It does not enter CI.
Before the first run
Write one falsifier:
Keep it if
<observable>. Kill it if<observable>.
If you cannot name an observable, the idea is not ready. Park it.
One hypothesis per run. Maximum three runs. After that, report what you learned and stop. A probe that keeps running is a feature in disguise.
Protocol
- Pick a scenario from
test/e2e/probe/scenarios/or add one. - Start from a generated vault. Never use
~/MyTestVaultfor a probe. - Drive a journey, not a screen: open, act, observe, change one thing, observe again. The interesting behavior is in the transitions.
- Mark each decisive moment with
record.mark(label). - Run:
npm run probe -- --scenario <name>
npm run probe -- --scenario <name> --live
npm run probe -- --scenario <name> --gif 00:08-00:16- Read the keyframes and metrics. Answer the falsifier.
- Write the observations into
report.md.
What the runner gives you
logs/probes/<timestamp>-<scenario>/
session.mp4 whole display, trimmed to just before the first mark
key.gif only when --gif is passed
timeline.json every mark with its timestamp
metrics.json viewport, overflow, rects, counts
shots/*.png one keyframe per mark
report.md stub with timeline and resultThe human watches the video. The agent reads the keyframes and metrics. State
mode: live or mode: scripted in the report; never present scripted turns as a
real model.
Scenario shape
import { describe, it } from "mocha";
import { mark, clickWithRipple, writeMetrics } from "../support/record";
describe("probe: my journey", function () {
this.timeout(180_000);
it("records the before and after", async function () {
mark("start");
// act
mark("observed failure");
// change one setting or input
mark("observed recovery");
await writeMetrics({ /* what you measured */ });
});
});Keep the scenario disposable. It is a script for a question, not a permanent test.
Promote
When the answer is "keep it", extract the durable behavior:
- Write assertions in
test/e2e/specs/<area>.e2e.ts. - Run three times with no retries.
- Prove the spec can fail: revert the behavior or add the negative case and watch it go red.
- Delete the probe scenario; keep the report summary in the PR body.
- Add the entry point to the feature map with the spec path.
When the answer is "kill it", delete the branch. Keep the report. That is a cheap loss, which is the point.
Anti-theater rules
- A screenshot is not a verdict. Every claim has a DOM, state, or layout check.
- A recording that always passes is suspicious. Check the observation method before the system.
- Do not pixel-diff the video. Timing, model text, and cursor position differ.
- Do not promote a probe into CI. Promote its assertions.
- Do not use a probe to avoid writing a witness for a known behavior.
Read next
@verify-obsidian-chatfor selectors, launch, and evidence rules.@ship-changefor the promotion and done checklist.
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.

