New to Claude Skills? Learn how to install them →

paperclipai on GitHub

Garden Inbox

Free

Efficiently clean up your Paperclip inbox with ease.

Get this skill

Free · Opens the source repo

What Garden Inbox does

Garden Inbox is a specialized tool designed for Paperclip users looking to manage their inbox more effectively. This skill allows users to scan their inbox for reversible archive candidates, classify them, and request confirmation before applying any changes. The workflow is structured into three clear stages: scanning, confirming, and applying, ensuring that users maintain control over what gets archived. This structured approach helps prevent accidental data loss and keeps the workflow organized.

The scanning process is read-only, meaning it will not alter any existing issues, branches, or workspaces. Instead, it generates a report that categorizes inbox entries into various buckets based on their status. Users can review this report to determine which items are suitable for archiving. The confirmation step involves posting a card to the relevant issue, allowing users to select which candidates they want to archive. This interaction ensures that users are fully aware of what will be archived before any changes are made.

Once the user has confirmed their selections, the apply step archives only the accepted candidates, preserving the integrity of the original data. This skill is particularly useful for developers and designers who manage multiple projects and need a reliable way to keep their inbox organized without losing track of important issues. The ability to run tests on the bundled logic also ensures that users can verify the functionality of the skill before deployment, adding an extra layer of confidence.

Overall, Garden Inbox is an essential tool for anyone using Paperclip who wants to streamline their inbox management without compromising on control or data integrity. It simplifies the process of tidying up by providing a clear, structured approach to archiving, making it a valuable addition to any developer's or designer's toolkit.

When to use it

Use this skill when you need to clean up your Paperclip inbox by archiving reversible candidates while ensuring data integrity.

When not to use it

This skill is not suitable for users looking to make permanent changes to issues, branches, or workspaces, as it strictly focuses on reversible archiving.

What you can build with it

Cleaning Up After a Project

After completing a project, use Garden Inbox to archive stale tasks and keep your inbox tidy.

Routine Inbox Maintenance

Regularly scan your inbox to identify and archive completed or irrelevant tasks without changing any active issues.

Preparing for a Sprint Review

Before a sprint review, clean up your inbox to ensure only relevant tasks are visible, enhancing focus and clarity.

How to install Garden Inbox

View source

1. Install with the skills CLI

npx skills add paperclipai/paperclip/garden-inbox --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by paperclipai

Garden Inbox

Use the bundled script for every stage. Keep the workflow strictly ordered: scanconfirmapply.

Safety contract

  • Treat scan as read-only. It may read inbox, workspace, close-readiness, and local Git metadata only.
  • Treat confirm as a confirmation-card write only. It must not archive inbox entries or mutate issue fields, branches, or workspaces.
  • Run apply only after a resolved request_checkbox_confirmation interaction. It archives only accepted option IDs that also occur in the originating candidates.json.
  • Remember that inbox archive state is per-user presentation state. It is reversible and does not change the underlying issue.
  • Never substitute issue status changes, branch deletion, workspace cleanup, or issue deletion for inbox archiving.

Inputs

Require PAPERCLIP_API_URL and PAPERCLIP_API_KEY. The script strips a trailing /api from the URL. It resolves the target user from the run JWT payload's responsible_user_id; use --user-id <uuid> only for an explicit target override.

Use a run-owned output directory when available:

RUN_DIR="${PAPERCLIP_RUN_SCRATCH_DIR:-${PAPERCLIP_TASK_SCRATCH_DIR:-.}}/garden-inbox"
mkdir -p "$RUN_DIR"

1. Scan

node .agents/skills/garden-inbox/scripts/garden-inbox.mjs scan \
  --output-dir "$RUN_DIR" \
  --stale-days 60

Inspect garden-inbox-report.md and candidates.json. The report groups every inbox row into exactly one bucket:

The scan reads Mine separately for each included issue status so the endpoint's global 500-row cap does not silently omit older rows. If any single-status query reaches that cap, both outputs mark coverage as possibly truncated; do not treat that scan as complete.

  • A: merged/archived workspace and all linked work terminal; selected by default.
  • B: terminal or workspace-gone work idle beyond the threshold; selected by default.
  • C: stale work with commits ahead of base; never selected by default.
  • D: keep; never offered for archiving.

Do not manually promote bucket D entries into the candidate file.

2. Confirm

Post checkbox interactions on the driving issue:

node .agents/skills/garden-inbox/scripts/garden-inbox.mjs confirm \
  --issue-id "$PAPERCLIP_TASK_ID" \
  --candidates "$RUN_DIR/candidates.json"

The script posts sequential cards when a scan has more than 200 candidates. Re-running confirm with the same scan file is idempotent. Leave the driving issue in the waiting posture required by the surrounding Paperclip heartbeat workflow.

When a candidate was declined by the user in an earlier pass, pass --unselect <issueId> (repeatable) so it starts unchecked and its description notes the earlier decline. Never re-offer previously declined items as default-checked.

For development or payload review, suppress the POST:

node .agents/skills/garden-inbox/scripts/garden-inbox.mjs confirm \
  --issue-id "$PAPERCLIP_TASK_ID" \
  --candidates "$RUN_DIR/candidates.json" \
  --dry-run

3. Apply accepted selections

After an interaction-resolution wake, take the resolved interaction ID from the wake payload and run:

node .agents/skills/garden-inbox/scripts/garden-inbox.mjs apply \
  --issue-id "$PAPERCLIP_TASK_ID" \
  --interaction-id "$INTERACTION_ID" \
  --candidates "$RUN_DIR/candidates.json"

On rejection, expiry, or an accepted empty selection, the script archives nothing. Apply preserves the scan file's target user, including an explicit --user-id override. Its summary includes the API undo path and target-user body for every archived row.

Test apply without API writes by supplying a saved interaction response:

node .agents/skills/garden-inbox/scripts/garden-inbox.mjs apply \
  --issue-id "$PAPERCLIP_TASK_ID" \
  --interaction-file resolved-interaction.json \
  --candidates "$RUN_DIR/candidates.json" \
  --dry-run

Verify the bundled logic

Run the zero-dependency Node tests after changing classification or selection safety:

node --test .agents/skills/garden-inbox/scripts/garden-inbox.test.mjs

Frequently asked questions about Garden Inbox

Similar skills