8000 Import agent-handoff plugin v2.0.0 — Git for agents, with universal one-liner by adeelahmad · Pull Request #1 · adeelahmad/package · GitHub
[go: up one dir, main page]

Skip to content

Import agent-handoff plugin v2.0.0 — Git for agents, with universal one-liner - #1

Merged
adeelahmad merged 1 commit into
masterfrom
claude/new-session-xievxw
Sep 16, 2026
Merged

adeelahmad merged 1 commit into
masterfrom
claude/new-session-xievxw

Conversation

@adeelahmad
@adeelahmad adeelahmad commented Sep 16, 2026 •
Copy link
Copy Markdown
Owner

Imports the agent-handoff plugin (v2.0.0) into this repository at the root, making it installable as a Claude Code plugin/marketplace and usable with OpenCode — then extends it with a universal one-liner bootstrap and rebrands it as Git for agents — a portable context packager.

What's included

Plugin import

  • .claude-plugin/ — Claude Code plugin manifest (plugin.json) and marketplace entry (marketplace.json)
  • commands/ — /handoff-package and /handoff-unpack slash commands
  • skills/ — handoff-packager and handoff-unpacker skills (the unpacker is bundled into every generated package)
  • tool/ — the handoff CLI in pure-stdlib Go, with embedded templates and unit tests; provides package, commit, history, show, diff, extract, inspect, verify, selfcheck
  • opencode/plugin.json — OpenCode plugin descriptor
  • docs/PACKAGE-FORMAT.md — the handoff package format specification
  • Makefile and .github/workflows/build.yml — cross-platform builds (linux/darwin/windows, amd64/arm64)

Universal one-liner ("use it from any agent, about anything")

  • PROMPT.md — a self-contained instruction any internet-capable agent can fetch and follow. Paste one line into claude.ai, chatgpt.com, Claude Code, Codex, etc. and the agent packages the conversation. Degrades by capability: shell agents install the binary and build the sealed archive; file-writing or chat-only agents emit the portable tree plus data.json for any binary-holding agent to seal later.
  • install.sh — POSIX installer one-liner (curl … | sh): prebuilt release binary when available, source build with Go otherwise; HANDOFF_INSTALL_DIR / HANDOFF_REF overrides.
  • README — expanded with badges, "Why", the one-liner section, marketplace install steps, the full CLI reference (verbatim from the binary's help), and package anatomy; retitled Git for agents. Plugin manifests lead with the same tagline.

Notes

  • The repository's existing full MIT LICENSE text was kept; the tarball's copy was truncated.
  • The stub README.md (# package) was replaced.

Verification

  • go vet clean; go test passes; make test (vet + tests + handoff selfcheck) — SELF-CHECK PASS
  • install.sh run end-to-end (release 404 → Go source-build fallback → selfcheck → install): passes
  • PROMPT.md's exact data.json example + workstream layout run through handoff package and handoff inspect: produces a valid sealed v1 archive

@adeelahmad
adeelahmad force-pushed the claude/new-session-xievxw branch from 80fa1ba to 2bbb4db Compare September 16, 2026 08:39
@adeelahmad adeelahmad changed the title Import agent-handoff plugin v2.0.0 Import agent-handoff plugin v2.0.0 — Git for agents, with universal one-liner Sep 16, 2026
@adeelahmad
adeelahmad marked this pull request as ready for review September 16, 2026 08:45
@adeelahmad
adeelahmad force-pushed the claude/new-session-xievxw branch from f51dc33 to 4d7d2cd Compare September 16, 2026 08:46
Import the agent-handoff plugin for Claude Code and OpenCode and extend
it with a universal one-liner bootstrap:

- .claude-plugin/: Claude Code plugin manifest and marketplace entry
- commands/: /handoff-package and /handoff-unpack slash commands
- skills/: handoff-packager and handoff-unpacker skills
- tool/: handoff CLI in pure-stdlib Go with embedded templates and tests
- opencode/: OpenCode plugin descriptor
- docs/PACKAGE-FORMAT.md: the package format specification
- PROMPT.md: self-contained instruction any internet-capable agent can
  fetch and follow to package a conversation, degrading by capability
  (shell -> sealed archive; files/chat-only -> portable tree + data.json)
- install.sh: POSIX installer (release binary or Go source build)
- README: Git for agents tagline, one-liner, CLI reference, anatomy
- Makefile + GitHub Actions workflow for cross-platform builds

Verified: go vet, go test, handoff selfcheck, install.sh end to end,
and PROMPT.md's data.json example through package + inspect.
@adeelahmad
adeelahmad force-pushed the claude/new-session-xievxw branch from 4d7d2cd to 307fa27 Compare September 16, 2026 08:46
@adeelahmad
adeelahmad merged commit a6b2883 into master Sep 16, 2026
2 checks passed
@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f51dc33afe

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread tool/archive.go
Comment on lines +47 to +51
err = filepath.Walk(s.root, func(p string, info os.FileInfo, err error) error {
if err != nil {
return err
}
rel, _ := filepath.Rel(s.root, p)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Exclude the output archive from the source walk

When --out is a relative filename as shown in the documented handoff package --out handoff.tar.gz workflow, it resolves inside s.root. The output file is created before this walk begins, so the archive includes its own in-progress bytes even though it is absent from HEAD; after extraction, handoff status reports the archive as an added file and the receiving agent's required subsequent handoff pack refuses the dirty tree. Skip out when it is under s.root, or require/write the output outside the package tree.

Useful? React with 👍 / 👎.

Comment thread PROMPT.md
Comment on lines +90 to +92
> shell access: run `curl -fsSL https://raw.githubusercontent.com/adeelahmad/package/master/install.sh | sh`
> then `handoff package --data data.json -m "sealed from v0" --out handoff.tar.gz` in
> this directory's parent to produce the versioned archive. Until then, treat this tree
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Seal the generated package from its own directory

Pathway B places data.json inside <package-name>/, but this instruction says to run handoff package --data data.json from that directory's parent. Without changing into <package-name> or passing -C <package-name>, the command cannot read the generated data file and instead initializes/uses the parent directory, so the advertised no-shell-to-sealed handoff path fails.

Useful? React with 👍 / 👎.

Comment thread PROMPT.md
Comment on lines +71 to +72
Then verify: `./handoff inspect handoff.tar.gz --human` must print the intake and
history. Deliver `handoff.tar.gz`. Done.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Invoke the installed binary by its installed name

install.sh installs the executable as handoff under the install directory, and the preceding packaging command invokes it through PATH; it never creates ./handoff in the package directory. Thus a successful Pathway A package is followed by a failed verification command. Use handoff inspect handoff.tar.gz --human (or the explicit installed path) here.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0