diff --git a/linkedin-growth/SKILL.md b/linkedin-growth/SKILL.md index 8eef0d7..0bbafc3 100644 --- a/linkedin-growth/SKILL.md +++ b/linkedin-growth/SKILL.md @@ -283,9 +283,10 @@ Result classification: so it never hangs. Never burns a whole queue on a weekly-limit burst. - anything else → `status='error'`, `error_type`/`error_message` stored -`linkedin-cli` exit code 4 (account issue) or 6 (rate limit) aborts the whole -run immediately — no further leads touched. Other non-zero exits mark the lead -as error and continue. +`linkedin-cli` exit code 3 (subscription or trial exhausted), 4 (account issue), or 6 (rate +limit) aborts the whole run immediately — no further leads are touched. A +`trialLimitReached` error must not be retried until the user subscribes or support extends the +trial. Other non-zero exits mark the lead as error and continue. ### Pending outcomes (with cross-account retry) diff --git a/linkedin-growth/scripts/lib/account.mjs b/linkedin-growth/scripts/lib/account.mjs index 52def08..d0e5fbf 100644 --- a/linkedin-growth/scripts/lib/account.mjs +++ b/linkedin-growth/scripts/lib/account.mjs @@ -10,7 +10,7 @@ export function sleep(ms) { } export function isFatalExitCode(code) { - return code === 4 || code === 6; + return code === 3 || code === 4 || code === 6; } // Stores the openPersonPage completion (the action object: { actionType, success, diff --git a/linkedin/SKILL.md b/linkedin/SKILL.md index e9726b8..717f738 100644 --- a/linkedin/SKILL.md +++ b/linkedin/SKILL.md @@ -531,5 +531,8 @@ linkedin reset --all # Remove all accounts - **Timestamps in UTC.** All dates and times are in UTC. - **Single quotes for text arguments.** Use single quotes around message text, post text, and comments to avoid shell interpretation issues with special characters. - **Action limits.** Per-account limits are configurable on the platform. A `limitExceeded` error means the limit was reached. +- **Trial limits.** A `trialLimitReached` error means the workspace has used its free trial + workflow allowance. Do not retry the workflow: ask the user to subscribe or contact support + for a trial extension. - **URL normalization.** All LinkedIn URLs in responses are normalized to `https://www.linkedin.com/...` format without trailing slashes. - **Null fields.** Fields that are unavailable are returned as `null` or `[]`, not omitted. diff --git a/package-lock.json b/package-lock.json index 8053f8c..a006b6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@linkedapi/skills", - "version": "0.1.0", + "version": "1.0.10", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@linkedapi/skills", - "version": "0.1.0", + "version": "1.0.10", "license": "MIT", "dependencies": { "@clack/prompts": "^1.5.0" diff --git a/package.json b/package.json index 20a7c43..2fb02b6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@linkedapi/skills", - "version": "1.0.9", + "version": "1.0.10", "description": "One-command installer for Linked API agent skills across Claude Code, Codex, Cursor, and Windsurf.", "type": "module", "bin": {