Offline, local-only portable resume skills across coding agents
Project description
portable-resume-skills
Offline, local-only context migration · 8 sources × 8 hosts · inert handoff, not live restore
English · 繁體中文 · 简体中文 · 日本語 · 한국어 · Español · Português · Français · Deutsch · Русский · العربية · हिन्दी · All languages
Clean-room-oriented Agent Skills for migrating bounded local coding-agent context into a fresh session. Readers never invoke the source agent CLI and never add a network path; recovered text is marked untrusted and stale.
Current tree: 0.3.0 local release candidate · 64/64 packaging cells ·
64/64 installed-runner cells · six native local plugin/extension installs
verified · host UI activation still not-run. The archived v0.2.3 dual-OS
claim remains historical until a v0.3.0 tag completes the release workflow.
Sources and destinations
| Resume skill | Source store family |
|---|---|
resume-claude |
Claude Code projects JSONL |
resume-codex |
Codex SQLite / rollout JSONL |
resume-cursor |
Cursor CLI chats / Desktop vscdb |
resume-opencode |
OpenCode SQLite / file store |
resume-antigravity |
Antigravity transcript JSONL |
resume-grok |
Grok Build session updates JSONL |
resume-qwen |
Qwen Code chat JSONL, including archived chats |
resume-kimi |
Current Kimi Code wire JSONL + legacy Kimi CLI context JSONL |
Destination profiles: Claude Code, Codex, Cursor, OpenCode, Antigravity, Grok Build, Qwen Code, and current Kimi Code CLI.
Requirements
- Python 3.11+; CI covers 3.11–3.14 on Ubuntu and macOS.
- Product runtime is stdlib-only.
- Optional trusted
zstdbinary for compressed Codex rollouts.
Quick start
Install from the current checkout, then install every destination profile into its user-global Skill root:
pipx install .
install-resume-skills quick-install all
After a PyPI release, replace pipx install . with
pipx install portable-resume. To install only one host or one project:
install-resume-skills quick-install qwen
install-resume-skills quick-install qwen --project "$PWD"
The lower-level transactional command remains available for previews, custom roots, verification, and uninstall:
# Inspect capabilities and the 8×8 matrix
PYTHONPATH=src python3 scripts/portable-resume self-check --json
PYTHONPATH=src python3 scripts/install-resume-skills matrix --json
PYTHONPATH=src python3 scripts/install-resume-skills hosts
# Read a synthetic Claude fixture
PYTHONPATH=src python3 scripts/portable-resume claude show latest \
--cwd /workspace/project \
--source-root tests/fixtures/claude/s-cla-01-ordered-parent-chain/root \
--format handoff
# Preview, install, verify, and uninstall one destination
PYTHONPATH=src python3 scripts/install-resume-skills install \
--host qwen --scope project --project "$PWD" --dry-run --json
PYTHONPATH=src python3 scripts/install-resume-skills install \
--host qwen --scope project --project "$PWD" --json
PYTHONPATH=src python3 scripts/install-resume-skills verify \
--host qwen --scope project --project "$PWD" --json
Full roots, activation grammar, direct archives, and marketplace/plugin routes are in docs/install-hosts.md. Release assets are generated with:
python3 scripts/build_host_packages.py --output-dir host-packages
This produces eight direct-skill ZIPs plus supported Claude, Codex, Cursor, Antigravity, Grok, Qwen, and Kimi plugin/marketplace bundles. OpenCode remains a direct Skill install because its plugin surface is executable JavaScript/TypeScript rather than a Skill bundle.
Skill contract
python3 <skill>/scripts/run_reader.py show latest --cwd "$PWD" --json
python3 <skill>/scripts/run_reader.py show <session-id|path|text> --cwd "$PWD" --json
python3 <skill>/scripts/run_reader.py list --cwd "$PWD" --json
Activate resume-<source> using the host's documented grammar, run only the installed reader, and summarize its inert output after re-checking the repository. portable-resume/request-v1 files remain an optional advanced interface.
Optional web search and Context7
The reader itself stays offline. After reviewing and minimizing recovered text, the destination host may use its own web tools or Context7 MCP for current documentation. Qwen and Kimi setup, data-flow boundaries, and safe examples are in docs/network-integrations.md.
Safety invariants
- Source stores are immutable; stable no-follow reads fail closed on races.
- Source CLIs are never invoked.
- Recovered text is inert/untrusted and only best-effort redacted.
- Installer paths are contained under the selected skill root.
- Non-owned collisions require
--force-with-backup; multi-root installs compensate on failure. - Shared physical roots with divergent host renders fail before mutation.
Tests and CI/CD
Run all required local gates:
python3 scripts/self_verify.py
python3 scripts/check_secrets.py
PYTHONPATH=src python3 -m unittest discover -s tests -q
PYTHONPATH=src python3 scripts/smoke_installed_matrix.py
.github/workflows/ci.yml runs those gates across Ubuntu/macOS and Python 3.11–3.14, then builds and smoke-installs the exact wheel and sdist. .github/workflows/release.yml accepts only annotated vMAJOR.MINOR.PATCH tags reachable from main, re-runs dual-OS gates, builds release bytes once, tests those exact bytes, creates SHA-256 checksums and GitHub attestations, stages a GitHub Release, and publishes through PyPI Trusted Publishing when the protected pypi environment is configured.
A configured workflow is not release proof: v0.3.0 remains unclaimed until its Actions URL and SHA are archived in docs/evidence-summary.md.
Key documentation
docs/i18n/README.md— 12 localized quick-start guidesdocs/STATUS.md— done/not-done truthdocs/install-hosts.md— per-host installationdocs/source-formats.md— format and provenance registrydocs/host-ui-smoke.md— live activation evidence protocoldocs/release-claim.md— release gates and external setupSECURITY.md— threat modelCONTRIBUTING.md— contributor workflow
License and limitations
Apache-2.0. This project is not affiliated with the host vendors. Do not copy ~/.grok/bundled/skills/** into this tree.
Host UI/picker activation is still not-run; Cursor's full bubble graph is not claimed; redaction is not complete DLP; Qwen/Kimi web or MCP calls are optional host-side actions and never implicit reader behavior.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file portable_resume-0.3.0.tar.gz.
File metadata
- Download URL: portable_resume-0.3.0.tar.gz
- Upload date:
- Size: 119.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4b26ae2cb4e4db177cf3f9639fb6eeb758c0f31b0ea8c914d0d6a7c101a0055
|
|
| MD5 |
39a752985d053a41eb8a72e2ded3f999
|
|
| BLAKE2b-256 |
273b772e3f054018ea2b994b5d42da5515bd35a50fc83944b66dd26bb4053c65
|
Provenance
The following attestation bundles were made for portable_resume-0.3.0.tar.gz:
Publisher:
release.yml on ImL1s/resume-skills
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
portable_resume-0.3.0.tar.gz -
Subject digest:
a4b26ae2cb4e4db177cf3f9639fb6eeb758c0f31b0ea8c914d0d6a7c101a0055 - Sigstore transparency entry: 2233125072
- Sigstore integration time:
-
Permalink:
ImL1s/resume-skills@78c2acd0f9841d90d87f85eff151b842a80dc011 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/ImL1s
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@78c2acd0f9841d90d87f85eff151b842a80dc011 -
Trigger Event:
push
-
Statement type:
File details
Details for the file portable_resume-0.3.0-py3-none-any.whl.
File metadata
- Download URL: portable_resume-0.3.0-py3-none-any.whl
- Upload date:
- Size: 139.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63aa2e34a188dcfed5d4833224bf5682a59ef711e90715e651b1c1a446586bbc
|
|
| MD5 |
e49af0e3b3ef51a1483d684e4814c7d2
|
|
| BLAKE2b-256 |
8c54445ae81404e533eece83313d563cffe624cce421466a02b632fc85783b52
|
Provenance
The following attestation bundles were made for portable_resume-0.3.0-py3-none-any.whl:
Publisher:
release.yml on ImL1s/resume-skills
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
portable_resume-0.3.0-py3-none-any.whl -
Subject digest:
63aa2e34a188dcfed5d4833224bf5682a59ef711e90715e651b1c1a446586bbc - Sigstore transparency entry: 2233125616
- Sigstore integration time:
-
Permalink:
ImL1s/resume-skills@78c2acd0f9841d90d87f85eff151b842a80dc011 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/ImL1s
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@78c2acd0f9841d90d87f85eff151b842a80dc011 -
Trigger Event:
push
-
Statement type: