
Garden Inbox
FreeEfficiently clean up your Paperclip inbox with ease.
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 source1. Install with the skills CLI
npx skills add paperclipai/paperclip/garden-inbox --agent claude-code2. 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 paperclipaiGarden Inbox
Use the bundled script for every stage. Keep the workflow strictly ordered: scan → confirm → apply.
Safety contract
- Treat
scanas read-only. It may read inbox, workspace, close-readiness, and local Git metadata only. - Treat
confirmas a confirmation-card write only. It must not archive inbox entries or mutate issue fields, branches, or workspaces. - Run
applyonly after a resolvedrequest_checkbox_confirmationinteraction. It archives only accepted option IDs that also occur in the originatingcandidates.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
Daily Focus Board
A motivating tool for daily task management and focus.
Paperclip
Streamline task coordination with Paperclip API.
Context Agent
Enhance session continuity with automatic context management.
Daily Sales Briefing
Start your day with a prioritized sales briefing.
Update Command
Keep your tasks and memory in sync effortlessly.
Start Command
Initialize your productivity system with ease.
