Research hypothesis reflection
Skill Lx050/rubbing-to-knowledge/skills/research-hypothesis-reflection
Review a ResearchCase v1 after evidence or experiment feedback arrives. Use when a research workflow must detect supporting-versus-challenging evidence conflicts, negative/null/invalid results, dependent evidence, or stalled inquiry; preserve prior hypotheses in a versioned ReflectionMemo; and choose only continue, reroute, rollback, human_review, or stop_unresolved.From its SKILL.md
npx -y skills add Lx050/rubbing-to-knowledge --skill research-hypothesis-reflectionAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.0 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it
Research Hypothesis Reflection
Reflect on structured research state without rewriting the input case or hiding adverse results.
Contract identity:
skill_id:research-hypothesis-reflectionskill_version:1.2.0- ReflectionMemo schema:
1.1(references/reflection-memo-v1.1.schema.json) - Frozen predecessor: memo schema
1.0from Skill1.0.0/1.1.0(references/reflection-memo-v1.0.schema.json); documents written under it keep validating unchanged.
Run
Use Python 3 and the standard library:
python3 scripts/reflect.py \
--case /path/to/research-case.json \
--output-dir /path/to/reflections \
--write-updated-case
The command creates CASE--reflection-vNNN.json and, when requested, CASE--case-after-reflection-vNNN.json. It selects the next unused revision and refuses to overwrite either the input or an existing output.
Workflow
- Validate the required ResearchCase v1 structure.
- Link feedback and experiments through hypothesis, evidence, and experiment IDs.
- Detect support/challenge conflicts, negative/null/invalid outcomes, missing or unusable evidence, non-independent positive support, and repeated no-information outcomes.
- Select an action with deterministic priority: conflict →
human_review; invalid method →rollback; exhausted evidence →stop_unresolved; negative/dependent/stalled evidence →reroute; otherwise →continue. - Store every original hypothesis as
before_snapshotin the memo. - Propose revisions separately. Increment a hypothesis revision only when its state or confidence changes.
- Optionally write a deep-copied ResearchCase with the proposals, a new decision, and an orchestrator-compatible
extensions.latest_decision_statemarker. Never overwrite the source case.
Interpretation rules
- Treat evidence as usable only when it is not
HYP, is not rejected, and is machine-checked, human-checked, or explicitly conflicted. - Count independence by distinct
independence_group, not evidence-row count. - When feedback targets a completed experiment and repeats that experiment's outcome, treat it as the experiment result's report and count the outcome once. Continue to count feedback that is independent of the experiment.
- Do not upgrade a hypothesis from positive feedback supported by fewer than two independent groups.
- Treat
nullas inconclusive andinvalidas a method failure, not evidence against the hypothesis. - Preserve missing references and rejected evidence as warnings; never silently drop them.
- Restrict actions to
continue,reroute,rollback,human_review, andstop_unresolved. - Never stop without saying what could come next. When a hypothesis has no
usable supporting and no usable challenging evidence, record
proposed_next_actions: a literature lookup naming the unadjudicated Han character candidates found in usable, non-HYPevidence (or the open question when there are none), and, while a raw image material is still registered, a wider re-derivation of the observed region. - Every proposed action carries
authorization: proposal-only. A memo names work for a human to choose; it never authorizes execution, changes a hypothesis, or relaxes a gate. Only an orchestrator route may make a Skill executable, and it refuses to while a gate blocks.
Outputs
The ReflectionMemo contains skill_id, skill_version, a unique per-invocation run_id, its schema version, case ID, revision, timestamp, input SHA-256, feedback counts, triggered rules, evidence-independence summaries, complete before/after hypothesis snapshots, action, rationale, proposed_next_actions, and an input-preservation statement. The CLI summary repeats the same three invocation fields.
When --write-updated-case is used, the updated case retains the appended decision and records extensions.latest_decision_state with:
decision_idfor the latest decision.decision_sha256, computed from that decision as sorted, indented UTF-8 JSON with a trailing newline.input_case_sha256, bound to the original input file bytes.activated_at, equal to the updated case'supdated_at.collection_countsfor the updatedmaterials,hypotheses,experiments,evidence,claims,uncertainties,feedback, anddecisionsarrays.
The marker is fresh only while its activation time and all collection counts still match the case. Existing extension fields are preserved. A human_review decision remains appended with gate_status: block; the marker does not bypass that gate.
Run tests with:
python3 -m unittest discover -s tests -v
What ships with it: 6 files
82.0 KB alongside SKILL.md, 2 of them executable
agents/
- openai.yaml313 B
references/
scripts/
- reflect.pyruns32.4 KB
tests/
- fixtures/conflict-case.json3.1 KB
- test_reflect.pyruns27.3 KB