← Plugin catalog
Developer Tools

Portable Resume

YU-SHANG LUNG v0.4.5

Resume past agent sessions

Create a free account to save this plugin.

From the developer

Declared capabilities

  • Interactive
  • Read

Not specified in the available declarations: limitations, pricing & account requirements.

Onboarding example

Resume my last session from this repository as a fresh handoff.
Sources & dates

Developer declarations; not independently tested. Listing last checked Nov 6, 2026. Package observed Nov 6, 2026.

View package source →

Description

From the marketplace listing

Portable Resume migrates bounded context from your previous local coding-agent sessions into a fresh session. One resume skill per supported source (17 sources: Antigravity CLI, Claude Code, Cline, Codex CLI, Crush, Cursor, Gemini CLI, GitHub Copilot CLI, goose, Grok Build, Hermes Agent, Kimi CLI / Kimi Code CLI, OpenClaw, OpenCode, OpenHands, Pi agent, Qwen Code) reads that agent's own on-disk session store, selects the newest session recorded for the current working directory where the source records one (a session without a recorded directory may remain eligible, depending on the adapter, and OpenHands has no directory filter), and prints an inert, best-effort redacted markdown handoff that the destination agent reads as data and summarizes; during a skill invocation the host and its model provider receive that output directly. Everything runs locally with Python's standard library: the bundled reader never contacts the network, never invokes the source agent's CLI, never modifies the source store, and ships no MCP server, credentials, scheduler or background service. Recovered text is marked untrusted and stale, and redaction is best-effort rather than complete data-loss prevention. This is offline context migration, not live session restore.

Language: English · Automatically detected from descriptions.

Matches for “Python”

Exact text from the indicated source. A mention alone does not establish support for your task.

Publisher full description

Portable Resume migrates bounded context from your previous local coding-agent sessions into a fresh session. One resume skill per supported source (17 sources: Antigravity CLI, Claude Code, Cline, Codex CLI, Crush, Cursor, Gemini CLI, GitHub Copilot CLI, goose, Grok Build, Hermes Agent, Kimi CLI / Kimi Code CLI, OpenClaw, OpenCode, OpenHands, Pi agent, Qwen Code) reads that agent's own on-disk session store, selects the newest session recorded for the current working directory where the source records one (a session without a recorded directory may remain eligible, depending on the adapter, and OpenHands has no directory filter), and prints an inert, best-effort redacted markdown handoff that the destination agent reads as data and summarizes; during a skill invocation the host and its model provider receive that output directly. Everything runs locally with Python's standard library: the bundled reader never contacts the network, never invokes the source agent's CLI, never modifies the source store, and ships no MCP server, credentials, scheduler or background service. Recovered text is marked untrusted and stale, and redaction is best-effort rather than complete data-loss prevention. This is offline context migration, not live session restore.

What changed

Earlier changes · 2 more observation days on this page

Keywords

Files & skills

File archives

Plugin package99 files · 275 KBBrowse files →
Skill instructions
resume-antigravity8.54 KB

View saved version →

---
name: resume-antigravity
description: "Resume or continue the last Antigravity CLI session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-antigravity

Import inert local **Antigravity CLI** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-antigravity` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-antigravity` under `$PWD` or foreign roots.

Do **not** call the Antigravity CLI CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=antigravity` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-claude8.5 KB

View saved version →

---
name: resume-claude
description: "Resume or continue the last Claude Code session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-claude

Import inert local **Claude Code** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-claude` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-claude` under `$PWD` or foreign roots.

Do **not** call the Claude Code CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=claude` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equa

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-cline8.47 KB

View saved version →

---
name: resume-cline
description: "Resume or continue the last Cline session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-cline

Import inert local **Cline** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-cline` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-cline` under `$PWD` or foreign roots.

Do **not** call the Cline CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=cline` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equal this Skill's bound so

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-codex8.48 KB

View saved version →

---
name: resume-codex
description: "Resume or continue the last Codex CLI session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-codex

Import inert local **Codex CLI** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-codex` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-codex` under `$PWD` or foreign roots.

Do **not** call the Codex CLI CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=codex` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equal this Skil

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-crush8.47 KB

View saved version →

---
name: resume-crush
description: "Resume or continue the last Crush session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-crush

Import inert local **Crush** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-crush` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-crush` under `$PWD` or foreign roots.

Do **not** call the Crush CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=crush` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equal this Skill's bound so

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-cursor8.48 KB

View saved version →

---
name: resume-cursor
description: "Resume or continue the last Cursor session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-cursor

Import inert local **Cursor** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-cursor` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-cursor` under `$PWD` or foreign roots.

Do **not** call the Cursor CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=cursor` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equal this Skill's 

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-gemini8.49 KB

View saved version →

---
name: resume-gemini
description: "Resume or continue the last Gemini CLI session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-gemini

Import inert local **Gemini CLI** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-gemini` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-gemini` under `$PWD` or foreign roots.

Do **not** call the Gemini CLI CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=gemini` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equal t

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-github-copilot8.57 KB

View saved version →

---
name: resume-github-copilot
description: "Resume or continue the last GitHub Copilot CLI session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-github-copilot

Import inert local **GitHub Copilot CLI** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-github-copilot` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-github-copilot` under `$PWD` or foreign roots.

Do **not** call the GitHub Copilot CLI CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=github-copilot` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_vers

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-goose8.47 KB

View saved version →

---
name: resume-goose
description: "Resume or continue the last goose session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-goose

Import inert local **goose** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-goose` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-goose` under `$PWD` or foreign roots.

Do **not** call the goose CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=goose` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equal this Skill's bound so

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-grok8.48 KB

View saved version →

---
name: resume-grok
description: "Resume or continue the last Grok Build session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-grok

Import inert local **Grok Build** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-grok` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-grok` under `$PWD` or foreign roots.

Do **not** call the Grok Build CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=grok` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equal this Skill'

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-hermes8.5 KB

View saved version →

---
name: resume-hermes
description: "Resume or continue the last Hermes Agent session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-hermes

Import inert local **Hermes Agent** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-hermes` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-hermes` under `$PWD` or foreign roots.

Do **not** call the Hermes Agent CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=hermes` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must e

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-kimi8.52 KB

View saved version →

---
name: resume-kimi
description: "Resume or continue the last Kimi CLI / Kimi Code CLI session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-kimi

Import inert local **Kimi CLI / Kimi Code CLI** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-kimi` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-kimi` under `$PWD` or foreign roots.

Do **not** call the Kimi CLI / Kimi Code CLI CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=kimi` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-openclaw8.5 KB

View saved version →

---
name: resume-openclaw
description: "Resume or continue the last OpenClaw session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-openclaw

Import inert local **OpenClaw** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-openclaw` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-openclaw` under `$PWD` or foreign roots.

Do **not** call the OpenClaw CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=openclaw` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equ

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-opencode8.5 KB

View saved version →

---
name: resume-opencode
description: "Resume or continue the last OpenCode session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-opencode

Import inert local **OpenCode** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-opencode` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-opencode` under `$PWD` or foreign roots.

Do **not** call the OpenCode CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=opencode` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equ

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-openhands8.51 KB

View saved version →

---
name: resume-openhands
description: "Resume or continue the last OpenHands session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-openhands

Import inert local **OpenHands** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-openhands` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-openhands` under `$PWD` or foreign roots.

Do **not** call the OpenHands CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=openhands` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: 

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-pi8.46 KB

View saved version →

---
name: resume-pi
description: "Resume or continue the last Pi agent session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-pi

Import inert local **Pi agent** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-pi` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-pi` under `$PWD` or foreign roots.

Do **not** call the Pi agent CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=pi` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equal this Skill's bound source (

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

resume-qwen8.48 KB

View saved version →

---
name: resume-qwen
description: "Resume or continue the last Qwen Code session — pick up previous work, import inert offline handoff context into a fresh session (never live process restore)."
---

# resume-qwen

Import inert local **Qwen Code** session context into a **fresh** session.
This is offline context migration — never live process or session restoration.

## Start here

Resolve the **owned** runner path (next section), then run:

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show latest --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

- `show` **defaults to markdown handoff** (do **not** pass `--json` for the happy path).
- `list --json` is for machine-readable discovery; use `--format handoff` when you want a human-readable listing.
- A **bare** runner invocation (no argv) lists sessions with handoff formatting.
- Prefer the runner's **handoff** output over summarizing raw JSON yourself.
- `--json` and `--format handoff` are **mutually exclusive**.

## Resolve the owned runner

The **owned skill package root** is the directory that contains **this** loaded
`SKILL.md` (not another copy of `resume-qwen` found by name under cwd
or a different skill/plugin root). Always invoke only:

```text
<owned-skill-package-root>/scripts/run_reader.py
```

How to resolve that absolute path (in order):

1. Host skill metadata / skill-path for the Skill currently loaded.
2. Parent directory of **this** `SKILL.md` when the host already opened it.
3. Never search bare `resume-qwen` under `$PWD` or foreign roots.

Do **not** call the Qwen Code CLI. Prefer a host tool API that passes
argv without a shell. If a shell is required, quote the **resolved absolute**
path of `scripts/run_reader.py` as one token — do not invent shell variables
unless the host already exports the loaded skill directory.

The wrapper hard-binds `source=qwen` and loads the installer-owned
stdlib runtime under the shared installation root (`../.portable-resume/runtime/`
relative to this package).

## Request lanes

### A — Simple direct ref (one argv)

Safe only for clearly classified values: `latest`, an exact native session ID,
or an approved absolute source path.

```bash
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" show <ref> --cwd "$PWD"
python3 "/abs/path/to/owned-skill-package/scripts/run_reader.py" list --cwd "$PWD" --json
```

Rules:

- Replace `/abs/path/to/owned-skill-package` with the resolved package root above.
- Prefer a host tool API that passes argv without a shell when available.
- If a shell is required, pass `<ref>` as **exactly one** argument (host/tool
  quoting). Never interpolate free text into a larger shell script.
- **Lane A only:** empty / omitted / `latest` → newest session for the current
  working directory.
- Discover with `list --match <text>` (case-insensitive substring over id /
  title / cwd / branch within the bounded recent listing window). Empty match
  results are an empty list (exit 0), not a transcript dump.
- On `show` free-text ambiguity the reader exits with candidates — never guess.
- Only actions are `list` and `show`. Any other bare word is treated as search
  text, so unexpected `E_NO_MATCH` may mean a typo'd verb.

Optional argv flags (not with `--request-file`): `--within-min N`,
`--max-tool-chars N` (ceiling 8000), `--source-root PATH`, `--format handoff|json|table`
(`show` rejects `table`; default for `show` is handoff),
`list --match <text>` (list only; not with `show` or `--request-file`).

### B — Typed request-file (free text / multi-field)

When the ref is free text, multi-field, or hard to quote safely:

1. Write a private temp file (restrict permissions if your tools allow; the
   reader does **not** require mode `0600`) whose JSON object uses **exactly**
   these keys (no extras; wrong names fail closed):

   - `schema_version`: `"portable-resume/request-v1"`
   - `source`: must equal this Skill's b

Preview of the first 4,000 characters. Read full instructions →

Referenced files: 1 — file references are metadata, not package contents.

Package details

Publisher declarations from the archived package. These are separate from our research and the live service's terms.

Package license
Apache-2.0
Package author
portable-resume-skills contributors
Keywords
See keywords

Declared capabilities

  • Interactive
  • Read

Package observed Nov 6, 2026.

Technical details
First seen
Sep 30, 2026 · 22:02 UTC
Last seen
Nov 6, 2026 · 06:00 UTC
Collection status
Collected

plugins_6aa170bf904c8191b53ab41832adbf95

Download plugin data (JSON)

Plugin details: served from cache. Prepared . Refreshed when plugin data changes or after 6 hours. Your account and Follow status are live.