From 2719efc148185103a29163dc62b5c4be2ef82955 Mon Sep 17 00:00:00 2001 From: chrisjleal <184772742+chrisjleal@users.noreply.github.com> Date: Mon, 26 Oct 2026 21:46:37 -0500 Subject: [PATCH 1/4] Point agents at import for agents that already run elsewhere Co-Authored-By: Claude Opus 5.5 --- skills/proofable-setup/SKILL.md | 8 ++++++++ skills/proofable-trust-workflow/SKILL.md | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/skills/proofable-setup/SKILL.md b/skills/proofable-setup/SKILL.md index e7af457..cdaf068 100644 --- a/skills/proofable-setup/SKILL.md +++ b/skills/proofable-setup/SKILL.md @@ -45,6 +45,14 @@ Show what my agents are allowed to do. The agent lives on the signed-in profile by default. Ask for a dedicated spend account only when the agent should pay from its own account. Open **Connections** on proofable.me to link apps. +Already running an agent? Bring it as it is: a GitHub repository, an MCP server URL, an A2A agent card, or a package. Secrets stay out of the import. + +```bash +proofable import +``` + +It prints a link to register the agent's identity. To let others run the agent as a service, create an AI service listing at https://proofable.me/profile/portals/new. + Optional project mount (`cursor`, `claude`, `codex`, `hermes`, `openclaw`, or `opencode`; VS Code uses `cursor`): ```bash diff --git a/skills/proofable-trust-workflow/SKILL.md b/skills/proofable-trust-workflow/SKILL.md index ddbea4f..6ab6e3b 100644 --- a/skills/proofable-trust-workflow/SKILL.md +++ b/skills/proofable-trust-workflow/SKILL.md @@ -24,7 +24,7 @@ Reuse existing proofs first and verify again only when needed. Summarize as **Pr 1. **`proofable_context`** once per session. Prefer signed-in profile context and omit wallet fields on check and verify tools. Call it again only after a profile change. 2. **Profile agent:** **`proofable_agent_mount`** (or `proofable mount --apply `) loads identity, permissions, skills, and context. 3. **Trust before action:** call **`proofable_verify_or_guide`** directly, before creating any new proof. It reuses a qualifying proof or returns the next secure step. Use **`proofable_proofs_check`** only for an explicit yes/no eligibility, gate, or access question, never for memory, context, or content retrieval. When signed in, ownership checks continue with **`proofable_verify`**. For another signer, prepare with **`proofable_verify_prepare`** and submit with **`proofable_verify_submit`**. Share a browser link only when a tool returns one. -4. **Agent:** **`proofable_agent_link`**. If missing, **`proofable_agent_create`** (a dedicated account needs a key you create and hold; pass only its public address). Then **`proofable_agent_mount`**. +4. **Agent:** **`proofable_agent_link`**. If the agent already runs elsewhere (a repository, MCP server URL, A2A agent card, or package), import it with `proofable import `. If missing, **`proofable_agent_create`** (a dedicated account needs a key you create and hold; pass only its public address). Then **`proofable_agent_mount`**. 5. **Proofs and context:** read the `proofable_context` context index first, then **`proofable_proofs_get`** with a known proof ID and `include=content` for an exact body. ## Proofable format From 760e24dfaff794ff72406e27e54a06dbebdc97d1 Mon Sep 17 00:00:00 2001 From: chrisjleal <184772742+chrisjleal@users.noreply.github.com> Date: Tue, 27 Oct 2026 03:41:39 -0500 Subject: [PATCH 2/4] The CLI exits with code 1 on errors instead of crashing on Windows Calling process.exit() right after fetch() aborts Node 24 on Windows with a libuv assertion (nodejs/node#56645), so a failed import printed the error, then crashed with exit 127. The CLI now sets process.exitCode and lets the event loop drain, with an unref'd two-second backstop. Co-Authored-By: Claude Opus 5.5 --- cli/proofable.mjs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cli/proofable.mjs b/cli/proofable.mjs index b54c494..60a4fa0 100644 --- a/cli/proofable.mjs +++ b/cli/proofable.mjs @@ -3083,7 +3083,10 @@ async function main() { printUsage(1); } catch (error) { process.stderr.write(`${error?.message || 'Unknown error'}\n`); - process.exit(1); + // process.exit() right after fetch() aborts Node on Windows (nodejs/node#56645), so the + // exit code is set and the event loop drains; the unref'd timer only ends a stuck request. + process.exitCode = 1; + setTimeout(() => process.exit(1), 2000).unref(); } } From fc4d87443a2151a82edea7efae03a5ea4d5026a9 Mon Sep 17 00:00:00 2001 From: chrisjleal <184772742+chrisjleal@users.noreply.github.com> Date: Tue, 27 Oct 2026 03:57:35 -0500 Subject: [PATCH 3/4] A dry-run mount says which files it would write Co-Authored-By: Claude Opus 5.5 --- cli/proofable.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/proofable.mjs b/cli/proofable.mjs index 60a4fa0..702147a 100644 --- a/cli/proofable.mjs +++ b/cli/proofable.mjs @@ -1888,7 +1888,7 @@ async function runMount(options) { } if (applyResult) { for (const filePath of applyResult.written) { - logStep('ok', 'wrote', filePath); + logStep('ok', options.dryRun ? 'would write' : 'wrote', filePath); } } else if (!options.dryRun) { logStep('ok', 'wrote', path.join(cwd, '.proofable', 'mount.json')); From 665576d105c662a4e3e6b1f1436ec2536f160af6 Mon Sep 17 00:00:00 2001 From: chrisjleal <184772742+chrisjleal@users.noreply.github.com> Date: Mon, 26 Oct 2026 23:39:43 -0500 Subject: [PATCH 4/4] Listing links point at /profile/listings Co-Authored-By: Claude Opus 5.5 --- examples/portable-proofs-demo/README.md | 2 +- skills/proofable-setup/SKILL.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/portable-proofs-demo/README.md b/examples/portable-proofs-demo/README.md index 20fe87f..f20d017 100644 --- a/examples/portable-proofs-demo/README.md +++ b/examples/portable-proofs-demo/README.md @@ -43,7 +43,7 @@ import { VerifyGate } from '@proofable/sdk/widgets'; ## Use real gates -The demo derives sample gate ids from each claim. Before connecting to the live API, publish listings in [Profile → Listings](https://proofable.me/profile?tab=portals) and pass the real `gateId` into `VerifyGate` and `gateCheck`. +The demo derives sample gate ids from each claim. Before connecting to the live API, publish listings in [Profile → Listings](https://proofable.me/profile?tab=listings) and pass the real `gateId` into `VerifyGate` and `gateCheck`. ## Store the proof diff --git a/skills/proofable-setup/SKILL.md b/skills/proofable-setup/SKILL.md index cdaf068..0fcc804 100644 --- a/skills/proofable-setup/SKILL.md +++ b/skills/proofable-setup/SKILL.md @@ -51,7 +51,7 @@ Already running an agent? Bring it as it is: a GitHub repository, an MCP server proofable import ``` -It prints a link to register the agent's identity. To let others run the agent as a service, create an AI service listing at https://proofable.me/profile/portals/new. +It prints a link to register the agent's identity. To let others run the agent as a service, create an AI service listing at https://proofable.me/profile/listings/new. Optional project mount (`cursor`, `claude`, `codex`, `hermes`, `openclaw`, or `opencode`; VS Code uses `cursor`):