{"id":"96f8426c-7f63-42ba-85ca-00e8ca242eef","entityType":"agent","slug":"clawhub-porteden-sheets-writer","name":"Google Sheets File Automation","canonicalUrl":"https://www.xpersona.co/agent/clawhub-porteden-sheets-writer","canonicalPath":"/agent/clawhub-porteden-sheets-writer","generatedAt":"2026-10-10T17:34:14.317Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T14:31:54.369Z","emptyReason":null},"description":"Google Sheets Data Writer. Use when the user wants to append rows, update cells, or automate spreadsheet data pipelines against a pre-configured target sheet. Skill: Google Sheets File Automation Owner: porteden Summary: Google Sheets Data Writer. Use when the user wants to append rows, update cells, or automate spreadsheet data pipelines against a pre-configured target sheet. Tags: latest:1.0.8 Version history: v1.0.8 | 2026-05-29T01:56:33.577Z | user **Added safety guidance and streamlined configuration options.** - Expanded documentation on safety precautions, especiall","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17bsdgb41z4bpwzdr5zqz5pah83xy13:sheets-writer","sourceUrl":"https://clawhub.ai/porteden/sheets-writer","homepage":"https://clawhub.ai/porteden/skills/sheets-writer","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/porteden/sheets-writer","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/porteden/skills/sheets-writer","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Google Sheets Data Writer. Use when the user wants to append rows, update cells, or automate spreadsheet data pipelines against a pre-configured target sheet. S"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:31:54.369Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:31:54.369Z","emptyReason":null},"stars":null,"forks":null,"downloads":1385,"packageName":null,"latestVersion":"1.0.8","tractionLabel":"1.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:31:54.369Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T14:31:54.369Z","lastCrawledAt":"2026-10-10T14:31:54.369Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T14:31:54.369Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.8","createdAt":"2026-05-29T01:56:33.577Z","changelog":"**Added safety guidance and streamlined configuration options.** - Expanded documentation on safety precautions, especially around destructive `write` actions and account scoping. - Added explicit confirmation steps before cell-overwriting writes. - Clarified use of a dedicated Google account for minimized access when authenticating. - Updated environment variable handling: `PE_API_KEY` and `PE_SHEET_ID` are now optional; the skill can locate the sheet by name if unset. - Improved metadata and installer information. - General rewording for clarity and concise instructions.","fileCount":3,"zipByteSize":4743},{"version":"1.0.0","createdAt":"2026-03-18T01:23:53.611Z","changelog":"- Initial release of the porteden-sheets-writer skill. - Automates appending rows and updating cells in a pre-configured Google Sheet via the `porteden` CLI. - Supports authentication with browser login or API key, and easy target sheet configuration using environment variables. - Includes commands for appending from JSON/CSV, updating specific cells, and verifying writes. - Provides best practices for safe automation and guidance on range formats and environment variable usage.","fileCount":3,"zipByteSize":3942}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17bsdgb41z4bpwzdr5zqz5pah83xy13:sheets-writer","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-porteden-sheets-writer/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-porteden-sheets-writer/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-porteden-sheets-writer/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-porteden-sheets-writer/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-porteden-sheets-writer/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-porteden-sheets-writer/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T17:34:14.316Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-porteden-sheets-writer/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-porteden-sheets-writer/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-porteden-sheets-writer/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-porteden-sheets-writer/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T14:31:54.369Z","emptyReason":null},"readme":"Skill: Google Sheets File Automation\n\nOwner: porteden\n\nSummary: Google Sheets Data Writer. Use when the user wants to append rows, update cells, or automate spreadsheet data pipelines against a pre-configured target sheet.\n\nTags: latest:1.0.8\n\nVersion history:\n\nv1.0.8 | 2026-05-29T01:56:33.577Z | user\n\n**Added safety guidance and streamlined configuration options.**\n\n- Expanded documentation on safety precautions, especially around destructive `write` actions and account scoping.\n- Added explicit confirmation steps before cell-overwriting writes.\n- Clarified use of a dedicated Google account for minimized access when authenticating.\n- Updated environment variable handling: `PE_API_KEY` and `PE_SHEET_ID` are now optional; the skill can locate the sheet by name if unset.\n- Improved metadata and installer information.\n- General rewording for clarity and concise instructions.\n\nv1.0.0 | 2026-03-18T01:23:53.611Z | user\n\n- Initial release of the porteden-sheets-writer skill.\n- Automates appending rows and updating cells in a pre-configured Google Sheet via the `porteden` CLI.\n- Supports authentication with browser login or API key, and easy target sheet configuration using environment variables.\n- Includes commands for appending from JSON/CSV, updating specific cells, and verifying writes.\n- Provides best practices for safe automation and guidance on range formats and environment variable usage.\n\nArchive index:\n\nArchive v1.0.8: 3 files, 4743 bytes\n\nFiles: skill-card.md (2257b), SKILL.md (7626b), _meta.json (132b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: sheets-writer\ndescription: Google Sheets Data Writer. Use when the user wants to append rows, update cells, or automate spreadsheet data pipelines against a pre-configured target sheet.\nversion: 1.0.8\nmetadata: {\"openclaw\":{\"emoji\":\"🤖\",\"homepage\":\"https://porteden.com\",\"requires\":{\"bins\":[\"porteden\"]},\"primaryEnv\":\"PE_API_KEY\",\"envVars\":[{\"name\":\"PE_API_KEY\",\"required\":false,\"description\":\"API key; if unset, credentials are read from the system keyring via `porteden auth login`\"},{\"name\":\"PE_SHEET_ID\",\"required\":false,\"description\":\"Target spreadsheet ID; if unset, the skill finds the sheet by name (see body)\"}],\"install\":[{\"id\":\"brew\",\"kind\":\"brew\",\"formula\":\"porteden/tap/porteden\",\"bins\":[\"porteden\"],\"label\":\"Install porteden (brew)\"},{\"id\":\"go\",\"kind\":\"go\",\"module\":\"github.com/porteden/cli/cmd/porteden@latest\",\"bins\":[\"porteden\"],\"label\":\"Install porteden (go)\"}]}}\n---\n\n# porteden sheets-writer\n\nAutomate Google Sheets updates with `porteden sheets`. This skill configures a **target spreadsheet** via environment variable so agents can append rows and write data without repeating the file ID. **Use `-jc` flags** for AI-optimized output.\n\nIf `porteden` is not installed: `brew install porteden/tap/porteden` (or `go install github.com/porteden/cli/cmd/porteden@latest`).\n\n## Setup\n\n### 1. Authenticate (once)\n\n- **Browser login (recommended):** `porteden auth login` — opens browser, credentials stored in system keyring\n- **Direct token:** `porteden auth login --token <key>` — stored in system keyring\n- **Verify:** `porteden auth status`\n- If `PE_API_KEY` is set in the environment, the CLI uses it automatically (no login needed).\n- Drive access requires a token with `driveAccessEnabled: true` and a connected Google account with Drive scopes. Prefer a Google account that only has access to the target spreadsheet/workspace — token authority extends to whatever that account can reach.\n\n### 2. Set the target spreadsheet (one-time)\n\n**If `PE_SHEET_ID` is already set**, skip to step 3 — the target sheet is configured.\n\n**If `PE_SHEET_ID` is not set**, find the spreadsheet by name:\n\n```bash\nporteden drive files -q \"Q1 Budget\" --mime-type application/vnd.google-apps.spreadsheet -jc\n```\n\nCopy the `id` field from the result (already provider-prefixed, e.g., `google:1BxiMVs0XRA5...`) and set it:\n\n```bash\nexport PE_SHEET_ID=\"google:1BxiMVs0XRA5nFMdKvBdBZjgmU...\"\n```\n\nTo persist across sessions, add to your shell profile (`~/.bashrc`, `~/.zshrc`) or `.env` file. Once set, this step does not need to be repeated.\n\n### 3. Test the connection (one-time)\n\n```bash\nporteden sheets info $PE_SHEET_ID -jc\n```\n\nExpected: returns spreadsheet title, sheet tabs, and dimensions. If this fails, verify the file ID and that your token has Drive access. Once verified, skip this step in future runs.\n\n## Safety\n\n- **Confirm before destructive writes.** `write` replaces existing cell values and cannot be undone from the CLI. Before any `write` covering more than a single cell, echo back the target range and the values you intend to write, and wait for the user to confirm. Prefer `append` whenever new rows are the goal — it never overwrites. For multi-cell writes, read the range first (`porteden sheets read $PE_SHEET_ID --range \"<range>\" -jc`) so the original values can be restored if needed.\n- **Use a dedicated, narrowly-scoped account.** A Drive-enabled token grants the connected Google account's full Drive/Sheets reach, not just `PE_SHEET_ID`. Use `--profile sheets-writer` (or a similar dedicated profile) and authenticate it with a Google account that only has access to the spreadsheet(s) this automation needs. Check `accessInfo` in responses to see active token restrictions, and run `porteden auth logout --profile sheets-writer` when the automation is no longer in use.\n- **Treat input values as untrusted.** When values come from agents, users, or external sources, pass `--raw` so strings like `=IMPORTRANGE(...)` are stored as literals rather than executed as formulas. Read the range back after writing to confirm what landed.\n\n## Writing data\n\n### Append rows (primary automation operation)\n\nAppend adds rows **after the last row with data** in the target range. This is the recommended operation for automation — it never overwrites existing data.\n\n- Append from JSON:\n  ```bash\n  porteden sheets append $PE_SHEET_ID --range \"Sheet1!A:D\" --values '[[\"2025-01-15\",\"Order #1042\",\"Shipped\",29.99]]'\n  ```\n\n- Append multiple rows:\n  ```bash\n  porteden sheets append $PE_SHEET_ID --range \"Sheet1!A:D\" --values '[[\"2025-01-15\",\"Order #1042\",\"Shipped\",29.99],[\"2025-01-16\",\"Order #1043\",\"Processing\",45.50]]'\n  ```\n\n- Append from CSV string:\n  ```bash\n  porteden sheets append $PE_SHEET_ID --range \"Sheet1!A:D\" --csv \"2025-01-15,Order #1042,Shipped,29.99\"\n  ```\n\n- Append from CSV file:\n  ```bash\n  porteden sheets append $PE_SHEET_ID --range \"Sheet1!A:D\" --csv-file ./new_rows.csv\n  ```\n\n### Write to specific cells\n\n`write` **replaces** the exact range specified — existing values in that range are destroyed and cannot be recovered via the CLI. Use only for targeted updates to known cells, and only after confirming the range and values with the user (see Safety). Prefer `append` whenever you're adding new rows.\n\n- Write a single cell:\n  ```bash\n  porteden sheets write $PE_SHEET_ID --range \"Sheet1!E2\" --values '[[\"Complete\"]]'\n  ```\n\n- Write a block:\n  ```bash\n  porteden sheets write $PE_SHEET_ID --range \"Sheet1!A1:C2\" --values '[[\"Name\",\"Status\",\"Score\"],[\"Alice\",\"Done\",95]]'\n  ```\n\n- Write from CSV file:\n  ```bash\n  porteden sheets write $PE_SHEET_ID --range \"Sheet1!A1\" --csv-file ./data.csv\n  ```\n\n### Read for verification\n\nAfter writing, confirm the data landed correctly:\n\n```bash\nporteden sheets read $PE_SHEET_ID --range \"Sheet1!A1:D10\" -jc\n```\n\n## Automation best practices\n\n1. **Always use append for new rows** — avoids overwriting existing data. Use write only for targeted cell updates.\n2. **Specify column range in append** (e.g., `A:D` not just `A`) — ensures data lands in the correct columns.\n3. **Use `--raw` for literal values** — prevents unintended formula evaluation (e.g., strings starting with `=`).\n4. **Verify after write** — read the range back to confirm data integrity in critical workflows.\n5. **Use `-jc` on read/info** — compact JSON output minimizes tokens for AI agents.\n6. **Batch rows in a single append** — send multiple rows in one `--values` array rather than one-row-at-a-time.\n7. **Match column order to the sheet header** — check with `porteden sheets read $PE_SHEET_ID --range \"Sheet1!1:1\" -jc` to read the header row first.\n\n## Range format\n\n- Open-ended columns (for append): `Sheet1!A:D`\n- Specific cells: `Sheet1!A1:C10`\n- Single cell: `Sheet1!E2`\n- Whole sheet: `Sheet1`\n- Header row only: `Sheet1!1:1`\n\n## Notes\n\n- Credentials persist in the system keyring after login. No repeated auth needed.\n- Set `PE_PROFILE=work` to avoid repeating `--profile`.\n- `-jc` is shorthand for `--json --compact`: strips noise, limits fields, reduces tokens for AI agents.\n- **File IDs are always provider-prefixed** (e.g., `google:1BxiMVs0XRA5...`). Pass them as-is.\n- `--values`, `--csv`, and `--csv-file` are mutually exclusive — provide exactly one.\n- `--csv` inline: use `\\n` as row separator (e.g., `\"Name,Score\\nAlice,95\\nBob,87\"`).\n- `--raw` flag disables formula evaluation (values written literally, not parsed as formulas).\n- `accessInfo` in responses describes active token restrictions.\n- Environment variables: `PE_API_KEY`, `PE_PROFILE`, `PE_SHEET_ID`, `PE_FORMAT`, `PE_COLOR`, `PE_VERBOSE`.\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn7e5ew0ajkvk0py7e85pv595x81hvh9\",\n  \"slug\": \"sheets-writer\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1780019793577\n}\n\nFile v1.0.8:skill-card.md\n\n## Description:\n\nGoogle Sheets Data Writer. Use when the user wants to append rows, update cells, or automate spreadsheet data pipelines against a pre-configured target sheet.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[porteden](https://clawhub.ai/user/porteden)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and automation agents use this skill to configure PortEden authentication, identify a target Google Sheet, append new rows, update specific cells, and verify spreadsheet writes.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The PortEden CLI dependency and persisted credentials can access Google Drive resources available to the authenticated account.\n\nMitigation: Install only from a trusted or reviewed source, use a dedicated Google account or profile limited to the required spreadsheet workspace, and remove persisted credentials when finished.\n\nRisk: Cell write operations can overwrite existing spreadsheet data and cannot be undone from the CLI.\n\nMitigation: Prefer append for new rows, read target ranges before multi-cell writes, and require explicit confirmation of the range and values before overwriting cells.\n\nRisk: Untrusted values may be interpreted as spreadsheet formulas when written to cells.\n\nMitigation: Use raw-value writes for user, agent, or external inputs and read the range back after writing to verify the stored values.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/porteden/skills/sheets-writer)\n- [PortEden homepage](https://porteden.com)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration, Code]\n\n**Output Format:** [Markdown with inline bash command examples and JSON or CSV value examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Uses compact JSON command output flags for read and info operations when appropriate.]\n\n## Skill Version(s):\n\n1.0.8 (source: frontmatter and release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.0: 3 files, 3942 bytes\n\nFiles: skill-card.md (2357b), SKILL.md (5531b), _meta.json (132b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: porteden-sheets-writer\ndescription: Automated Google Sheets Data Writer — Append rows, update cells, and automate spreadsheet data pipelines with a pre-configured target sheet.\nhomepage: https://porteden.com\nmetadata: {\"openclaw\":{\"emoji\":\"🤖\",\"requires\":{\"bins\":[\"porteden\"],\"env\":[\"PE_API_KEY\",\"PE_SHEET_ID\"]},\"primaryEnv\":\"PE_API_KEY\",\"install\":[{\"id\":\"brew\",\"kind\":\"brew\",\"formula\":\"porteden/tap/porteden\",\"bins\":[\"porteden\"],\"label\":\"Install porteden (brew)\"},{\"id\":\"go\",\"kind\":\"go\",\"module\":\"github.com/porteden/cli/cmd/porteden@latest\",\"bins\":[\"porteden\"],\"label\":\"Install porteden (go)\"}]}}\n---\n\n# porteden sheets-writer\n\nAutomate Google Sheets updates with `porteden sheets`. This skill configures a **target spreadsheet** via environment variable so agents can append rows and write data without repeating the file ID. **Use `-jc` flags** for AI-optimized output.\n\nIf `porteden` is not installed: `brew install porteden/tap/porteden` (or `go install github.com/porteden/cli/cmd/porteden@latest`).\n\n## Setup\n\n### 1. Authenticate (once)\n\n- **Browser login (recommended):** `porteden auth login` — opens browser, credentials stored in system keyring\n- **Direct token:** `porteden auth login --token <key>` — stored in system keyring\n- **Verify:** `porteden auth status`\n- If `PE_API_KEY` is set in the environment, the CLI uses it automatically (no login needed).\n- Drive access requires a token with `driveAccessEnabled: true` and a connected Google account with Drive scopes.\n\n### 2. Find and set the target spreadsheet\n\nSearch for the spreadsheet by name:\n\n```bash\nporteden drive files -q \"Q1 Budget\" --mime-type application/vnd.google-apps.spreadsheet -jc\n```\n\nCopy the `id` field from the result (already provider-prefixed, e.g., `google:1BxiMVs0XRA5...`) and set it as the target:\n\n```bash\nexport PE_SHEET_ID=\"google:1BxiMVs0XRA5nFMdKvBdBZjgmU...\"\n```\n\nTo persist across sessions, add to your shell profile (`~/.bashrc`, `~/.zshrc`) or `.env` file.\n\n### 3. Test the connection\n\n```bash\nporteden sheets info $PE_SHEET_ID -jc\n```\n\nExpected: returns spreadsheet title, sheet tabs, and dimensions. If this fails, verify the file ID and that your token has Drive access.\n\n## Writing data\n\n### Append rows (primary automation operation)\n\nAppend adds rows **after the last row with data** in the target range. This is the recommended operation for automation — it never overwrites existing data.\n\n- Append from JSON:\n  ```bash\n  porteden sheets append $PE_SHEET_ID --range \"Sheet1!A:D\" --values '[[\"2025-01-15\",\"Order #1042\",\"Shipped\",29.99]]'\n  ```\n\n- Append multiple rows:\n  ```bash\n  porteden sheets append $PE_SHEET_ID --range \"Sheet1!A:D\" --values '[[\"2025-01-15\",\"Order #1042\",\"Shipped\",29.99],[\"2025-01-16\",\"Order #1043\",\"Processing\",45.50]]'\n  ```\n\n- Append from CSV string:\n  ```bash\n  porteden sheets append $PE_SHEET_ID --range \"Sheet1!A:D\" --csv \"2025-01-15,Order #1042,Shipped,29.99\"\n  ```\n\n- Append from CSV file:\n  ```bash\n  porteden sheets append $PE_SHEET_ID --range \"Sheet1!A:D\" --csv-file ./new_rows.csv\n  ```\n\n### Write to specific cells\n\nWrite replaces the exact range specified. Use for updating known cells or overwriting a section.\n\n- Write a single cell:\n  ```bash\n  porteden sheets write $PE_SHEET_ID --range \"Sheet1!E2\" --values '[[\"Complete\"]]'\n  ```\n\n- Write a block:\n  ```bash\n  porteden sheets write $PE_SHEET_ID --range \"Sheet1!A1:C2\" --values '[[\"Name\",\"Status\",\"Score\"],[\"Alice\",\"Done\",95]]'\n  ```\n\n- Write from CSV file:\n  ```bash\n  porteden sheets write $PE_SHEET_ID --range \"Sheet1!A1\" --csv-file ./data.csv\n  ```\n\n### Read for verification\n\nAfter writing, confirm the data landed correctly:\n\n```bash\nporteden sheets read $PE_SHEET_ID --range \"Sheet1!A1:D10\" -jc\n```\n\n## Automation best practices\n\n1. **Always use append for new rows** — avoids overwriting existing data. Use write only for targeted cell updates.\n2. **Specify column range in append** (e.g., `A:D` not just `A`) — ensures data lands in the correct columns.\n3. **Use `--raw` for literal values** — prevents unintended formula evaluation (e.g., strings starting with `=`).\n4. **Verify after write** — read the range back to confirm data integrity in critical workflows.\n5. **Use `-jc` on read/info** — compact JSON output minimizes tokens for AI agents.\n6. **Batch rows in a single append** — send multiple rows in one `--values` array rather than one-row-at-a-time.\n7. **Match column order to the sheet header** — check with `porteden sheets read $PE_SHEET_ID --range \"Sheet1!1:1\" -jc` to read the header row first.\n\n## Range format\n\n- Open-ended columns (for append): `Sheet1!A:D`\n- Specific cells: `Sheet1!A1:C10`\n- Single cell: `Sheet1!E2`\n- Whole sheet: `Sheet1`\n- Header row only: `Sheet1!1:1`\n\n## Notes\n\n- Credentials persist in the system keyring after login. No repeated auth needed.\n- Set `PE_PROFILE=work` to avoid repeating `--profile`.\n- `-jc` is shorthand for `--json --compact`: strips noise, limits fields, reduces tokens for AI agents.\n- **File IDs are always provider-prefixed** (e.g., `google:1BxiMVs0XRA5...`). Pass them as-is.\n- `--values`, `--csv`, and `--csv-file` are mutually exclusive — provide exactly one.\n- `--csv` inline: use `\\n` as row separator (e.g., `\"Name,Score\\nAlice,95\\nBob,87\"`).\n- `--raw` flag disables formula evaluation (values written literally, not parsed as formulas).\n- `accessInfo` in responses describes active token restrictions.\n- Environment variables: `PE_API_KEY`, `PE_PROFILE`, `PE_SHEET_ID`, `PE_FORMAT`, `PE_COLOR`, `PE_VERBOSE`.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7e5ew0ajkvk0py7e85pv595x81hvh9\",\n  \"slug\": \"sheets-writer\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1773797033611\n}\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nAutomated Google Sheets Data Writer that helps agents append rows, update cells, and automate spreadsheet data pipelines against a pre-configured target sheet. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[porteden](https://clawhub.ai/user/porteden) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, operators, and agent users use this skill to configure PortEden credentials and target a Google Sheet so an agent can append rows, update known cells, and verify spreadsheet writes. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The agent may modify the wrong spreadsheet or range if PE_SHEET_ID or the target range is incorrect. <br>\nMitigation: Confirm PE_SHEET_ID and ranges before writes, prefer append for new rows, and read back critical ranges after updates. <br>\nRisk: Spreadsheet writes can overwrite existing data when direct cell updates are used. <br>\nMitigation: Use append for new records, reserve write operations for known cells, and keep spreadsheet version history or backups for important sheets. <br>\nRisk: The skill requires sensitive credentials for Google Drive and Sheets access through PortEden. <br>\nMitigation: Use least-privilege credentials, keep PE_API_KEY out of shared logs or files, and verify the token has only the access needed for the target workflow. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/porteden/sheets-writer) <br>\n- [PortEden Publisher Profile](https://clawhub.ai/user/porteden) <br>\n- [PortEden Homepage](https://porteden.com) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Configuration] <br>\n**Output Format:** [Markdown with inline bash code blocks] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Provides command patterns for PortEden authentication, sheet targeting, appending, writing, and read-back verification.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: Google Sheets File Automation Owner: porteden Summary: Google Sheets Data Writer. Use when the user wants to append rows, update cells, or automate spreadsheet data pipelines against a pre-configured target sheet. Tags: latest:1.0.8 Version history: v1.0.8 | 2026-05-29T01:56:33.577Z | user **Added safety guidance and streamlined configuration options.** - Expanded documentation on safety precautions, especiall","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"porteden drive files -q \"Q1 Budget\" --mime-type application/vnd.google-apps.spreadsheet -jc"},{"language":"bash","snippet":"export PE_SHEET_ID=\"google:1BxiMVs0XRA5nFMdKvBdBZjgmU...\""},{"language":"bash","snippet":"porteden sheets info $PE_SHEET_ID -jc"},{"language":"bash","snippet":"porteden sheets append $PE_SHEET_ID --range \"Sheet1!A:D\" --values '[[\"2025-01-15\",\"Order #1042\",\"Shipped\",29.99]]'"},{"language":"bash","snippet":"porteden sheets append $PE_SHEET_ID --range \"Sheet1!A:D\" --values '[[\"2025-01-15\",\"Order #1042\",\"Shipped\",29.99],[\"2025-01-16\",\"Order #1043\",\"Processing\",45.50]]'"},{"language":"bash","snippet":"porteden sheets append $PE_SHEET_ID --range \"Sheet1!A:D\" --csv \"2025-01-15,Order #1042,Shipped,29.99\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: sheets-writer\ndescription: Google Sheets Data Writer. Use when the user wants to append rows, update cells, or automate spreadsheet data pipelines against a pre-configured target sheet.\nversion: 1.0.8\nmetadata: {\"openclaw\":{\"emoji\":\"🤖\",\"homepage\":\"https://porteden.com\",\"requires\":{\"bins\":[\"porteden\"]},\"primaryEnv\":\"PE_API_KEY\",\"envVars\":[{\"name\":\"PE_API_KEY\",\"required\":false,\"description\":\"API key; if unset, credentials are read from the system keyring via `porteden auth login`\"},{\"name\":\"PE_SHEET_ID\",\"required\":false,\"description\":\"Target spreadsheet ID; if unset, the skill finds the sheet by name (see body)\"}],\"install\":[{\"id\":\"brew\",\"kind\":\"brew\",\"formula\":\"porteden/tap/porteden\",\"bins\":[\"porteden\"],\"label\":\"Install porteden (brew)\"},{\"id\":\"go\",\"kind\":\"go\",\"module\":\"github.com/porteden/cli/cmd/porteden@latest\",\"bins\":[\"porteden\"],\"label\":\"Install porteden (go)\"}]}}\n---\n\n# porteden sheets-writer\n\nAutomate Google Sheets updates with `porteden sheets`. This skill configures a **target spreadsheet** via environment variable so agents can append rows and write data without repeating the file ID. **Use `-jc` flags** for AI-optimized output.\n\nIf `porteden` is not installed: `brew install porteden/tap/porteden` (or `go install github.com/porteden/cli/cmd/porteden@latest`).\n\n## Setup\n\n### 1. Authenticate (once)\n\n- **Browser login (recommended):** `porteden auth login` — opens browser, credentials stored in system keyring\n- **Direct token:** `porteden auth login --token <key>` — stored in system keyring\n- **Verify:** `porteden auth status`\n- If `PE_API_KEY` is set in the environment, the CLI uses it automatically (no login needed).\n- Drive access requires a token with `driveAccessEnabled: true` and a connected Google account with Drive scopes. Prefer a Google account that only has access to the target spreadsheet/workspace — token authority extends to whatever that account can reach.\n\n### 2. Set the target spreadsheet (one-time)\n\n**If `PE_SHEET_ID` is already set**, skip to step 3 — the target sheet is configured.\n\n**If `PE_SHEET_ID` is not set**, find the spreadsheet by name:\n\n```bash\nporteden drive files -q \"Q1 Budget\" --mime-type application/vnd.google-apps.spreadsheet -jc\n```\n\nCopy the `id` field from the result (already provider-prefixed, e.g., `google:1BxiMVs0XRA5...`) and set it:\n\n```bash\nexport PE_SHEET_ID=\"google:1BxiMVs0XRA5nFMdKvBdBZjgmU...\"\n```\n\nTo persist across sessions, add to your shell profile (`~/.bashrc`, `~/.zshrc`) or `.env` file. Once set, this step does not need to be repeated.\n\n### 3. Test the connection (one-time)\n\n```bash\nporteden sheets info $PE_SHEET_ID -jc\n```\n\nExpected: returns spreadsheet title, sheet tabs, and dimensions. If this fails, verify the file ID and that your token has Drive access. Once verified, skip this step in future runs.\n\n## Safety\n\n- **Confirm before destructive writes.** `write` replaces existing cell values and cannot be undone from the CLI. Before any `write` covering more than a single cel"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7e5ew0ajkvk0py7e85pv595x81hvh9\",\n  \"slug\": \"sheets-writer\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1780019793577\n}"},{"path":"skill-card.md","content":"## Description:\n\nGoogle Sheets Data Writer. Use when the user wants to append rows, update cells, or automate spreadsheet data pipelines against a pre-configured target sheet.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[porteden](https://clawhub.ai/user/porteden)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and automation agents use this skill to configure PortEden authentication, identify a target Google Sheet, append new rows, update specific cells, and verify spreadsheet writes.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The PortEden CLI dependency and persisted credentials can access Google Drive resources available to the authenticated account.\n\nMitigation: Install only from a trusted or reviewed source, use a dedicated Google account or profile limited to the required spreadsheet workspace, and remove persisted credentials when finished.\n\nRisk: Cell write operations can overwrite existing spreadsheet data and cannot be undone from the CLI.\n\nMitigation: Prefer append for new rows, read target ranges before multi-cell writes, and require explicit confirmation of the range and values before overwriting cells.\n\nRisk: Untrusted values may be interpreted as spreadsheet formulas when written to cells.\n\nMitigation: Use raw-value writes for user, agent, or external inputs and read the range back after writing to verify the stored values.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/porteden/skills/sheets-writer)\n- [PortEden homepage](https://porteden.com)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration, Code]\n\n**Output Format:** [Markdown with inline bash command examples and JSON or CSV value examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Uses compact JSON command output flags for read and info operations when appropriate.]\n\n## Skill Version(s):\n\n1.0.8 (source: frontmatter and release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Google Sheets Data Writer. Use when the user wants to append rows, update cells, or automate spreadsheet data pipelines against a pre-configured target sheet. Skill: Google Sheets File Automation Owner: porteden Summary: Google Sheets Data Writer. Use when the user wants to append rows, update cells, or automate spreadsheet data pipelines against a pre-configured target sheet. Tags: latest:1.0.8 Version history: v1.0.8 | 2026-05-29T01:56:33.577Z | user **Added safety guidance and streamlined configuration options.** - Expanded documentation on safety precautions, especiall","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1239,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T14:31:54.369Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T14:31:54.369Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:34:14.317Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}