exloop 0.2.0__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {exloop-0.2.0 → exloop-0.3.0}/PKG-INFO +5 -2
- {exloop-0.2.0 → exloop-0.3.0}/README.md +4 -1
- {exloop-0.2.0 → exloop-0.3.0}/pyproject.toml +1 -1
- {exloop-0.2.0 → exloop-0.3.0}/skills/exloop/SKILL.md +24 -17
- exloop-0.3.0/skills/exloop/references/evidence-review.md +63 -0
- {exloop-0.2.0 → exloop-0.3.0}/skills/exloop/references/protocol.md +20 -0
- {exloop-0.2.0 → exloop-0.3.0}/skills/exloop/references/state-model.md +2 -2
- {exloop-0.2.0 → exloop-0.3.0}/skills/exloop/scripts/exploration_state.py +4 -4
- {exloop-0.2.0 → exloop-0.3.0}/skills/idea-lab/SKILL.md +3 -2
- {exloop-0.2.0 → exloop-0.3.0}/.gitignore +0 -0
- {exloop-0.2.0 → exloop-0.3.0}/LICENSE +0 -0
- {exloop-0.2.0 → exloop-0.3.0}/skills/exloop/agents/openai.yaml +0 -0
- {exloop-0.2.0 → exloop-0.3.0}/skills/idea-lab/agents/openai.yaml +0 -0
- {exloop-0.2.0 → exloop-0.3.0}/skills/idea-lab/references/empirical-causal.md +0 -0
- {exloop-0.2.0 → exloop-0.3.0}/skills/idea-lab/references/engineering-product.md +0 -0
- {exloop-0.2.0 → exloop-0.3.0}/skills/idea-lab/references/formal-theory.md +0 -0
- {exloop-0.2.0 → exloop-0.3.0}/skills/idea-lab/references/generic.md +0 -0
- {exloop-0.2.0 → exloop-0.3.0}/skills/idea-lab/references/interpretive-historical.md +0 -0
- {exloop-0.2.0 → exloop-0.3.0}/skills/idea-lab/references/simulation-computational.md +0 -0
- {exloop-0.2.0 → exloop-0.3.0}/src/exloop/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: exloop
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: Human-led exploration skills for any AI tool that reads SKILL.md: a persistent map, structured idea comparison, and a zero-dependency state helper.
|
|
5
5
|
Project-URL: Repository, https://github.com/hzshen88/exloop
|
|
6
6
|
Project-URL: Issues, https://github.com/hzshen88/exloop/issues
|
|
@@ -20,6 +20,8 @@ Description-Content-Type: text/markdown
|
|
|
20
20
|
**Human-led exploration with a persistent map.** An AI companion that does not answer
|
|
21
21
|
your question for you: it asks one or two honing questions, walks one edge at a time,
|
|
22
22
|
keeps a map of where you have been, and offers the next step that is within reach. When
|
|
23
|
+
you do not yet have enough language or background to form a question, it first offers one
|
|
24
|
+
concrete foothold and lets your response set the direction. When
|
|
23
25
|
several explanations are in play, Idea Lab helps draw, attack, compare, and check them
|
|
24
26
|
without forcing an early winner. Both ship as skills for any AI tool that reads
|
|
25
27
|
`SKILL.md` files — Claude Code, Codex, and the like.
|
|
@@ -69,7 +71,8 @@ explanations need to be made explicit, challenged, and distinguished.
|
|
|
69
71
|
## What is in the package
|
|
70
72
|
|
|
71
73
|
- `skills/exloop/SKILL.md` with its references: the protocol (four events — started,
|
|
72
|
-
marked, pivoted, closed — and the map as their projection)
|
|
74
|
+
marked, pivoted, closed — and the map as their projection), the state model, and a
|
|
75
|
+
bounded evidence-review method that returns source checks to the current exploration.
|
|
73
76
|
- `skills/idea-lab/SKILL.md` with domain profiles for formal theory, empirical and causal
|
|
74
77
|
research, simulation, engineering and product mechanisms, and interpretive research.
|
|
75
78
|
- `skills/exloop/scripts/exploration_state.py`: the zero-dependency helper the skill
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
**Human-led exploration with a persistent map.** An AI companion that does not answer
|
|
4
4
|
your question for you: it asks one or two honing questions, walks one edge at a time,
|
|
5
5
|
keeps a map of where you have been, and offers the next step that is within reach. When
|
|
6
|
+
you do not yet have enough language or background to form a question, it first offers one
|
|
7
|
+
concrete foothold and lets your response set the direction. When
|
|
6
8
|
several explanations are in play, Idea Lab helps draw, attack, compare, and check them
|
|
7
9
|
without forcing an early winner. Both ship as skills for any AI tool that reads
|
|
8
10
|
`SKILL.md` files — Claude Code, Codex, and the like.
|
|
@@ -52,7 +54,8 @@ explanations need to be made explicit, challenged, and distinguished.
|
|
|
52
54
|
## What is in the package
|
|
53
55
|
|
|
54
56
|
- `skills/exloop/SKILL.md` with its references: the protocol (four events — started,
|
|
55
|
-
marked, pivoted, closed — and the map as their projection)
|
|
57
|
+
marked, pivoted, closed — and the map as their projection), the state model, and a
|
|
58
|
+
bounded evidence-review method that returns source checks to the current exploration.
|
|
56
59
|
- `skills/idea-lab/SKILL.md` with domain profiles for formal theory, empirical and causal
|
|
57
60
|
research, simulation, engineering and product mechanisms, and interpretive research.
|
|
58
61
|
- `skills/exloop/scripts/exploration_state.py`: the zero-dependency helper the skill
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "exloop"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.3.0"
|
|
4
4
|
description = "Human-led exploration skills for any AI tool that reads SKILL.md: a persistent map, structured idea comparison, and a zero-dependency state helper."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -36,23 +36,21 @@ Before the first substantive reply, read
|
|
|
36
36
|
[references/protocol.md](references/protocol.md). It contains the interaction
|
|
37
37
|
rules and the observed failure modes this skill must resist.
|
|
38
38
|
|
|
39
|
-
##
|
|
39
|
+
## Set up only the persistence the person requested
|
|
40
40
|
|
|
41
|
-
The person should never have to type a shell command.
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
The person should never have to type a shell command. Conversation-only exploration needs
|
|
42
|
+
no setup. Sustained exploration uses the helper already shipped with exloop; initialize its
|
|
43
|
+
map and continue without installing NewLife.
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
reports a missing git identity, ask the person for a name and email once and set them.
|
|
51
|
-
3. Then continue as below. Every later command — `newlife init`, `pilot`, `freeze`, `run`,
|
|
52
|
-
`check`, `audit`, this skill's `archive` and `handoff` — is yours to run at the moment
|
|
53
|
-
the skills say so; the person only decides.
|
|
45
|
+
If the person explicitly asks to establish the full NewLife research workflow, install a
|
|
46
|
+
compatible NewLife package and run `newlife start .` in the named repository. Say what will
|
|
47
|
+
be installed and where before changing the environment. A request to explore, keep an
|
|
48
|
+
exloop map, verify a source, or archive into an existing research repository does not by
|
|
49
|
+
itself authorize another package or host-wide skill installation.
|
|
54
50
|
|
|
55
|
-
|
|
51
|
+
Run exloop's own helper commands when their documented trigger occurs. Offer `newlife init`
|
|
52
|
+
and formal handoff only when NewLife is available and the person chooses to formalize the
|
|
53
|
+
boundary.
|
|
56
54
|
|
|
57
55
|
## What you make while exploring goes into the research repository, not a temp directory
|
|
58
56
|
|
|
@@ -86,12 +84,21 @@ exactly how one exploration in 2026-08 ended up in three directories.
|
|
|
86
84
|
|
|
87
85
|
## Core loop
|
|
88
86
|
|
|
87
|
+
Before step one, check whether the person can enter the question yet. If they want to
|
|
88
|
+
explore but lack the language, background or current state to form a usable question, use
|
|
89
|
+
the **receive — offer one foothold — return direction** move in
|
|
90
|
+
[the protocol](references/protocol.md). This is a conditional opening move, not a new stage,
|
|
91
|
+
profile or state transition. Skip it when the person already has a direction or wants a
|
|
92
|
+
direct answer.
|
|
93
|
+
|
|
89
94
|
1. **Hone the question.** If the curiosity is vague, ask one high-leverage
|
|
90
95
|
question and offer a sharper restatement. Ask at most two rounds. If the
|
|
91
96
|
person says to start, stop honing immediately.
|
|
92
97
|
2. **Advance one edge.** Add one mechanism, distinction, counterexample, or
|
|
93
98
|
piece of evidence—not a complete lecture. Match complexity to the person's
|
|
94
|
-
language and corrections.
|
|
99
|
+
language and corrections. When a material factual or novelty claim needs a
|
|
100
|
+
source, use [the bounded evidence review](references/evidence-review.md) and
|
|
101
|
+
return its evidence to this same edge; lookup is not a stage transition.
|
|
95
102
|
3. **Name what is forming.** When the person offers an inchoate judgment from
|
|
96
103
|
experience, give it a short reusable name and connect it to a mechanism.
|
|
97
104
|
4. **Challenge the claim, not the person.** Restate the claim before testing it.
|
|
@@ -159,8 +166,8 @@ artifact:
|
|
|
159
166
|
paths, surprises, and pivots;
|
|
160
167
|
- state what evidence was observed versus inferred;
|
|
161
168
|
- record closure in sustained mode (`close`), then copy the record into the
|
|
162
|
-
person's **research repository** —
|
|
163
|
-
|
|
169
|
+
person's named **research repository** — including one created by `newlife start` —
|
|
170
|
+
with `archive --repo <research repo>`: it lands in
|
|
164
171
|
`explorations/<slug>/process/` there, and the first time it also writes the
|
|
165
172
|
four-section `README.md` skeleton and an empty `artifacts/`. The archive folder
|
|
166
173
|
carries the same slug as the workbench, so the two never disagree about which
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Bounded evidence review
|
|
2
|
+
|
|
3
|
+
Use this reference when a claim inside an exploration materially depends on a source,
|
|
4
|
+
prior method, factual precedent, or novelty judgment. It is an operation inside the current
|
|
5
|
+
conversation or exploration, not a new stage.
|
|
6
|
+
|
|
7
|
+
## Start with a bounded question
|
|
8
|
+
|
|
9
|
+
Write down, in one sentence each:
|
|
10
|
+
|
|
11
|
+
- the exact claim to check;
|
|
12
|
+
- what current choice or candidate route the answer could change;
|
|
13
|
+
- what would count as enough evidence for that choice.
|
|
14
|
+
|
|
15
|
+
If the request already supplies these, use them. Do not interview the person again. If the
|
|
16
|
+
claim is incidental and cannot change the work, mark it unverified and continue rather than
|
|
17
|
+
opening an unbounded survey.
|
|
18
|
+
|
|
19
|
+
## Gather evidence in this order
|
|
20
|
+
|
|
21
|
+
1. Check the current repository, cited artifact and prior work already supplied. Preserve
|
|
22
|
+
exact paths, versions and dates.
|
|
23
|
+
2. When external lookup is authorized and needed, prefer primary sources: the paper for a
|
|
24
|
+
scientific claim, official documentation or source code for a technical claim, and the
|
|
25
|
+
original dataset/registry for a data claim.
|
|
26
|
+
3. Read enough of the method and limitations to test the exact claim. A title, abstract,
|
|
27
|
+
search snippet or secondary paraphrase is not evidence for a precise implementation or
|
|
28
|
+
boundary claim.
|
|
29
|
+
4. Seek the strongest relevant counterexample or conflicting source. Explain differences
|
|
30
|
+
in population, mechanism, implementation, measurement or date rather than averaging
|
|
31
|
+
incompatible evidence into one confidence label.
|
|
32
|
+
5. Record what was directly observed, what is inferred, and what remains unknown. “No
|
|
33
|
+
source found” means unresolved, never novel or false.
|
|
34
|
+
|
|
35
|
+
For a broad question, split independent searches only when the available host and the
|
|
36
|
+
person's request allow delegation. Sequential work is equally valid. Report every
|
|
37
|
+
pre-specified branch, including disconfirming evidence; do not search variants until one
|
|
38
|
+
supports the favored route.
|
|
39
|
+
|
|
40
|
+
## Return to the caller
|
|
41
|
+
|
|
42
|
+
Return a compact evidence packet:
|
|
43
|
+
|
|
44
|
+
```markdown
|
|
45
|
+
**Claim checked:** <exact claim>
|
|
46
|
+
**Finding:** supported | contradicted | mixed | unresolved
|
|
47
|
+
**Evidence:** <source, version/date, and the fact it establishes>
|
|
48
|
+
**Limits:** <what the evidence does not establish>
|
|
49
|
+
**Effect on the current exploration:** <which route/assumption changed, or none>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Then resume the question or comparison that requested the check. Do not create a formal
|
|
53
|
+
question, analysis plan, preregistration, repository edit or new persistent ledger merely
|
|
54
|
+
because the lookup finished. Those actions require their own request or transition.
|
|
55
|
+
|
|
56
|
+
## Provenance
|
|
57
|
+
|
|
58
|
+
This bounded form adapts the useful source-grounding and anti-cherry-picking principles in
|
|
59
|
+
K-Dense's Science-Superpowers `surveying-prior-work` and
|
|
60
|
+
`dispatching-parallel-investigations`, pinned for this integration at commit
|
|
61
|
+
`ccc1b2d41a389b2d6dadf1945603f81d66c5e85e` (MIT). The text and stage boundaries here are
|
|
62
|
+
specific to exloop and were rewritten for its single-state workflow.
|
|
63
|
+
|
|
@@ -17,6 +17,25 @@ Do not fill all four slots mechanically. A short question can be the whole turn.
|
|
|
17
17
|
The purpose is to advance one edge and leave room for the person to supply the
|
|
18
18
|
fact or judgment that changes the target.
|
|
19
19
|
|
|
20
|
+
## Make the question enterable when needed
|
|
21
|
+
|
|
22
|
+
Use this opening move only when the person wants to explore but lacks the language,
|
|
23
|
+
background or current state needed to form a usable question:
|
|
24
|
+
|
|
25
|
+
1. **Receive.** Reflect the curiosity or difficulty without classifying the person. If they
|
|
26
|
+
explicitly sound tired or overwhelmed, reduce the ambition of the turn and leave stopping
|
|
27
|
+
as a valid path.
|
|
28
|
+
2. **Offer one foothold.** Give one concrete example, distinction or minimal model they can
|
|
29
|
+
inspect. Supply only enough common ground for them to participate, not a prerequisite
|
|
30
|
+
lecture.
|
|
31
|
+
3. **Return direction.** Ask what in that foothold feels alive, strange or connected to
|
|
32
|
+
their experience. Treat their answer, correction or rejection as the source of the
|
|
33
|
+
direction, then enter the ordinary exploration loop.
|
|
34
|
+
|
|
35
|
+
Do not use an intake questionnaire, assign a readiness level, persist a deficit judgment or
|
|
36
|
+
require a research-shaped question. Skip this move when the person already has a direction
|
|
37
|
+
or only wants a direct answer.
|
|
38
|
+
|
|
20
39
|
## Hone without turning it into intake
|
|
21
40
|
|
|
22
41
|
- Infer complexity from the person's language; do not ask for age, credentials,
|
|
@@ -105,6 +124,7 @@ an experiment, a decision, a design, or simply a map to resume later.
|
|
|
105
124
|
| “They ignored my options, so I should ask again.” | Unselected candidates remain open; continue with the person's new material. |
|
|
106
125
|
| “They changed topics, so the old path is abandoned.” | Silence or topic movement is not abandonment; retire only explicit or structurally obsolete paths. |
|
|
107
126
|
| “I cannot paraphrase this, but the person has not said they are confused.” | Record the assistant's own blockage as `stuck`; it identifies missing structure. |
|
|
127
|
+
| “They cannot answer my honing question, so I should diagnose their readiness or ask for background.” | Offer one concrete foothold, let their response supply direction, and keep any inference temporary and correctable. |
|
|
108
128
|
| “This new direction is clearly better, so I can pivot.” | Only the person's new target supplies the pivot; the assistant may detect and record it, not invent it. |
|
|
109
129
|
| “More explanation is more helpful.” | Prefer one mechanism and one pressure test; verbosity can bury the person's contribution. |
|
|
110
130
|
| “A polished synthesis proves the exploration succeeded.” | Preserve unresolved boundaries and discarded paths; do not rewrite the route as inevitable. |
|
|
@@ -109,8 +109,8 @@ Render or inspect the current map (do this at the start of every resumed turn):
|
|
|
109
109
|
python3 $H/scripts/exploration_state.py show --id 2026-09-05-university-after-ai
|
|
110
110
|
```
|
|
111
111
|
|
|
112
|
-
Record explicit closure, then copy the record into the person's research
|
|
113
|
-
repository (
|
|
112
|
+
Record explicit closure, then copy the record into the person's named research
|
|
113
|
+
repository (which may be one `newlife start` created):
|
|
114
114
|
|
|
115
115
|
```bash
|
|
116
116
|
python3 $H/scripts/exploration_state.py close --id 2026-09-05-university-after-ai \
|
|
@@ -9,8 +9,8 @@ thread id** — that is how one exploration ended up scattered across
|
|
|
9
9
|
`~/.codex/explorations/<thread>/` and `~/.workbuddy/explorations/<session>/`
|
|
10
10
|
in 2026-08, and why the tool-specific defaults were removed.
|
|
11
11
|
|
|
12
|
-
Where the record goes when the exploration ends is the **research repository**
|
|
13
|
-
`newlife start`
|
|
12
|
+
Where the record goes when the exploration ends is the person's named **research repository**
|
|
13
|
+
(including one created by `newlife start`): `archive --repo` puts it under `explorations/<slug>/process/`,
|
|
14
14
|
`handoff --repo` under `questions/<slug>/origin/`. Not the exloop repository.
|
|
15
15
|
"""
|
|
16
16
|
|
|
@@ -431,8 +431,8 @@ def command_list(args: argparse.Namespace) -> None:
|
|
|
431
431
|
def _target(args: argparse.Namespace, ident: str, default_rel: str) -> Path:
|
|
432
432
|
"""Where an archive or handoff lands: `--to <dir>` verbatim, or derived from `--repo`.
|
|
433
433
|
|
|
434
|
-
`--repo` is the research repository
|
|
435
|
-
|
|
434
|
+
`--repo` is the person's named research repository. The archive goes to
|
|
435
|
+
`explorations/<slug>/process/` there,
|
|
436
436
|
the handoff to `questions/<slug>/origin/`; same slug on both sides, so the two never
|
|
437
437
|
disagree about which exploration a question came from.
|
|
438
438
|
"""
|
|
@@ -17,8 +17,9 @@ their original idea merely because another route is easier to formalize.
|
|
|
17
17
|
- For a short exchange, use this pattern in conversation only.
|
|
18
18
|
- **REQUIRED SUB-SKILL:** Use `exloop` when the person asks for sustained
|
|
19
19
|
exploration, a persistent map, or a handoff into a research repository.
|
|
20
|
-
-
|
|
21
|
-
|
|
20
|
+
- When source verification, prior art, or a novelty judgment becomes material,
|
|
21
|
+
follow [the bounded evidence review](../exloop/references/evidence-review.md),
|
|
22
|
+
then return to this comparison. It does not advance the workflow.
|
|
22
23
|
- Hand off to `newlife-goal` only when the person can say what observation or
|
|
23
24
|
measurement would make the answer different.
|
|
24
25
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|