HTTP CLI and external-agent skills for Paper Plane X
Project description
Paper Plane X CLI
English | 中文
Standalone HTTP CLI and external-agent skills for Paper Plane X.
This package contains:
ppx: a JSON-first CLI that talks to a running Paper Plane X FastAPI server.skills/ppx-researcher: the Researcher skill for Codex, Claude Code, Pi agents, and other agent tools.skills/ppx-pdf-to-markdown: a PDF-to-Markdown workflow skill backed by the Paper Plane X API.
All commands call HTTP endpoints under /api/v1 on a running Paper Plane X server.
Install
The CLI uses uv for installation and upgrades:
curl -LsSf https://astral.sh/uv/install.sh | sh
For released versions, install from PyPI:
uv tool install paper-plane-x-cli
Upgrade:
uv tool upgrade paper-plane-x-cli
Uninstall the CLI:
uv tool uninstall paper-plane-x-cli
For local development, or before the package is published to PyPI, install from the CLI directory:
uv tool install .
After uv tool install, use ppx directly.
Context
ppx resolves context in this order:
- command line options:
--base-url,--project-id - environment variables:
PPX_BASE_URL,PPX_PROJECT_ID - local context file:
./.paper-plane-x/context.json(in the current working directory) - global context file:
~/.config/paper-plane-x/context.json - default base URL:
http://127.0.0.1:8000/api/v1
The local context overrides the global context. This allows per-project settings without changing your global defaults.
# Global context (default)
ppx context set --base-url http://127.0.0.1:8000/api/v1
ppx context set --project-id prj_x
# Local context (current directory only)
ppx context set --local --project-id prj_y
ppx context show
Common Commands
ppx project global-finder
ppx librarian search --query-expr "(meta.title CONTAINS transformer)" --limit 20
ppx librarian matrix --paper-ids p1,p2 --field-paths quick_scan,synthesis_data.methodology.innovation
ppx librarian deep-dive --paper-id p1 --question "What is the core contribution?"
ppx paper markdown --paper-id p1 --save-dir ./paper-markdown
ppx files list --dir /
ppx files read --path /notes/idea.md
ppx files upload --source ./idea.md --path /notes/idea.md
ppx files find --path /draft.md --query "Related Work"
ppx files patch --path /draft.md --action insert_after --anchor-text "## Related Work" --content "..."
ppx paper-note get --paper-id p1
ppx paper-note write --paper-id p1 --content "..."
ppx paper-note delete --paper-id p1
All tool commands print JSON to stdout. HTTP and validation failures print structured JSON to stderr and exit non-zero.
files upload uses the same sandbox rules as project files: allowed text/data extensions only, no path traversal, and a 10MB per-file limit.
paper markdown downloads the paper's stored parsed Markdown. The output filename
defaults to <paper-id>.md; use --output-md-name full-paper.md to override it.
PDF Parsing
Use the PDF parser when an external agent needs to read or process a local PDF as Markdown:
ppx pdf parse --source ./paper.pdf --save-dir ./paper-pdf
The command sends the PDF to the Paper Plane X API, writes Markdown plus referenced images, and prints JSON:
{
"md_path": "paper-pdf/paper.md",
"image_paths": ["paper-pdf/images/fig1.png"],
"parser_type": "local_mineru"
}
Skill
Bundled skills live under skills/:
skills/ppx-researcher/SKILL.md
skills/ppx-pdf-to-markdown/SKILL.md
Use ppx-researcher when an external agent should follow the same research workflow as Paper Plane X: verify project context, search and compare papers through ppx, write durable results into project files or paper notes, and cite only evidence actually fetched through the CLI/API.
Use ppx-pdf-to-markdown when an external agent encounters local PDFs and should convert them to Markdown before reading, summarizing, extracting, or uploading the result.
For Codex, the default target is ${CODEX_HOME:-~/.codex}/skills, which is Codex's default user skill directory:
ppx skills list
ppx skills install
ppx skills install --force
ppx skills uninstall
After installation, restart Codex or open a new session to make ppx-researcher and ppx-pdf-to-markdown available.
You can also pass an explicit target directory for the agent you use:
| Tool / scope | Install command | Notes |
|---|---|---|
| Codex default | ppx skills install |
Installs into ${CODEX_HOME:-~/.codex}/skills |
| Generic Agent Skills / compatibility path | ppx skills install --target-dir ~/.agents/skills |
Useful for Codex/agent setups that already read from ~/.agents/skills |
| Pi agent | ppx skills install --target-dir ~/.pi/agent/skills |
Uses the Pi agent skill directory |
| Claude Code user scope | ppx skills install --target-dir ~/.claude/skills |
Available to Claude Code sessions for the current user |
| Claude Code project scope | ppx skills install --target-dir ./.claude/skills |
Checked into a repository when the team should share the skills |
ppx skills install --target-dir ~/.agents/skills
ppx skills install --target-dir ~/.pi/agent/skills
ppx skills install --target-dir ~/.claude/skills
ppx skills install --target-dir ./.claude/skills
install copies every bundled ppx-* skill into the target directory. Existing skill directories are skipped unless --force is passed. uninstall removes only the bundled ppx-* skill names, leaving unrelated skills in the target directory alone.
To fully remove both the CLI and installed skills, uninstall skills first, then uninstall the CLI:
ppx skills uninstall
uv tool uninstall paper-plane-x-cli
If you installed skills into a custom directory, pass the same directory when uninstalling:
ppx skills uninstall --target-dir ~/.agents/skills
License
Paper Plane X CLI is licensed under the GNU Affero General Public License v3.0 or later.
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 paper_plane_x_cli-0.1.0.tar.gz.
File metadata
- Download URL: paper_plane_x_cli-0.1.0.tar.gz
- Upload date:
- Size: 28.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9375fbf588db3799639adfba977be4c3d229bc4fbb8fb263d18d47f699d223c4
|
|
| MD5 |
4e06d2627ed66a82d85b5110385c5d07
|
|
| BLAKE2b-256 |
187e5b72fa2a3e5f038a2f5f762f248b80033135ce6d324454a8ba71f2572993
|
Provenance
The following attestation bundles were made for paper_plane_x_cli-0.1.0.tar.gz:
Publisher:
release.yml on WindLX/paper_plane_x
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paper_plane_x_cli-0.1.0.tar.gz -
Subject digest:
9375fbf588db3799639adfba977be4c3d229bc4fbb8fb263d18d47f699d223c4 - Sigstore transparency entry: 2111962696
- Sigstore integration time:
-
Permalink:
WindLX/paper_plane_x@e71533097dd6e3948d1bc15a828ff1f3e036d92f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/WindLX
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e71533097dd6e3948d1bc15a828ff1f3e036d92f -
Trigger Event:
push
-
Statement type:
File details
Details for the file paper_plane_x_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: paper_plane_x_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 35.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
91cb24575a2e462090bff8805767a3f17af64aecaf0be72c53d69cc8fc177a1c
|
|
| MD5 |
40d06e2aaf4006c47ef5b3b4c134bcfa
|
|
| BLAKE2b-256 |
d750a78f6bee52ccf631d3c18829f82818685776077d8dfda6e74b6800c4fa38
|
Provenance
The following attestation bundles were made for paper_plane_x_cli-0.1.0-py3-none-any.whl:
Publisher:
release.yml on WindLX/paper_plane_x
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paper_plane_x_cli-0.1.0-py3-none-any.whl -
Subject digest:
91cb24575a2e462090bff8805767a3f17af64aecaf0be72c53d69cc8fc177a1c - Sigstore transparency entry: 2111963121
- Sigstore integration time:
-
Permalink:
WindLX/paper_plane_x@e71533097dd6e3948d1bc15a828ff1f3e036d92f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/WindLX
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e71533097dd6e3948d1bc15a828ff1f3e036d92f -
Trigger Event:
push
-
Statement type: