skills/review-issues/SKILL.md
Review and act on Paperclip issues — approve agent work or send feedback. Use when user says "review issues", "review paperclip", "check issues", "issue review", or "/review-issues".
npx skillsauth add asets-gobizit/claude-skills review-issuesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Review all Paperclip issues needing your attention. Approve agent work ("Helpful") or send it back with feedback ("Needs Work") — all from inside Claude Code.
Just say /review-issues or "review my paperclip issues".
All API calls use http://127.0.0.1:3100/api with no auth header (local_trusted mode grants board access automatically).
Follow these steps exactly. Use curl -s for all API calls.
# Get all companies
curl -s http://127.0.0.1:3100/api/companies
For each company returned, fetch agents to build a name lookup:
# Get agents for a company (replace {companyId})
curl -s http://127.0.0.1:3100/api/companies/{companyId}/agents
Build a map: agentId → agent.name so you can display human-readable names.
For each company, fetch both statuses:
curl -s "http://127.0.0.1:3100/api/companies/{companyId}/issues?status=todo"
curl -s "http://127.0.0.1:3100/api/companies/{companyId}/issues?status=in_review"
Merge all results. Separate into two buckets:
assigneeAgentId is set (not null). These are agent outputs for the user to review.assigneeUserId == "local-board" and assigneeAgentId is null. These are the user's own action items.Sort agent work by priority: critical > high > medium > low.
Show a summary like this:
Paperclip Issue Review
━━━━━━━━━━━━━━━━━━━━━
CompanyName: X in_review, Y todo (agent work)
Your action items: Z
Agent Work (review these):
1. GOB-6 Legal Strategy [in_review] → Legal Advisor
2. GOB-11 Prospect List [todo] → BizDev Manager
...
Your Items (FYI):
1. GOB-19 Danny Action Items [todo]
2. GOB-21 CEO Proposals [todo]
Then ask: "Review all agent work sequentially, pick specific issues by number, or skip to a specific one?"
For each issue being reviewed, fetch details:
# Get plan document (if exists)
curl -s http://127.0.0.1:3100/api/issues/{issueId}/documents
# If a document with key "plan" exists, get its content:
curl -s http://127.0.0.1:3100/api/issues/{issueId}/documents/plan
# Get document revisions (needed for feedback targetId):
curl -s http://127.0.0.1:3100/api/issues/{issueId}/documents/plan/revisions
# Get comments (last 3)
curl -s http://127.0.0.1:3100/api/issues/{issueId}/comments
Present the issue:
═══════════════════════════════════════════
GOB-11: Build SMB prospect list (High)
Assigned to: BizDev Manager | Status: todo
───────────────────────────────────────────
Description:
[issue description, max 300 chars with ...]
───────────────────────────────────────────
Plan Document:
[full plan doc body if exists, or "No plan document"]
───────────────────────────────────────────
Recent Comments (N):
• [BizDev Manager] Blocked pending tool access...
• [BizDev Manager] Week 1 Kickoff started...
═══════════════════════════════════════════
What would you like to do? Approve, Amend, or Skip?
When the user approves:
Determine feedback target:
targetType = "issue_document_revision", targetId = <latest revision id>targetType = "issue_comment", targetId = <latest comment id>Post feedback vote:
curl -s -X POST http://127.0.0.1:3100/api/issues/{issueId}/feedback-votes \
-H "Content-Type: application/json" \
-d '{"targetType": "issue_document_revision", "targetId": "<id>", "vote": "up"}'
curl -s -X PATCH http://127.0.0.1:3100/api/issues/{issueId} \
-H "Content-Type: application/json" \
-d '{"status": "done"}'
When the user wants to amend:
Ask for feedback: "What feedback do you have for the agent?"
Wait for user's response — they can give detailed natural language feedback.
Determine feedback target (same logic as Approve).
Post feedback vote with reason:
curl -s -X POST http://127.0.0.1:3100/api/issues/{issueId}/feedback-votes \
-H "Content-Type: application/json" \
-d '{"targetType": "issue_document_revision", "targetId": "<id>", "vote": "down", "reason": "<user feedback>"}'
Post comment + handle reopen:
If issue status is done or cancelled — use reopen flag:
curl -s -X POST http://127.0.0.1:3100/api/issues/{issueId}/comments \
-H "Content-Type: application/json" \
-d '{"body": "## Board Feedback\n\n<user feedback>\n\n---\n**What could have been better:** <user feedback>", "reopen": true}'
If issue status is todo or in_review — set status explicitly + post comment without reopen:
curl -s -X PATCH http://127.0.0.1:3100/api/issues/{issueId} \
-H "Content-Type: application/json" \
-d '{"status": "todo"}'
curl -s -X POST http://127.0.0.1:3100/api/issues/{issueId}/comments \
-H "Content-Type: application/json" \
-d '{"body": "## Board Feedback\n\n<user feedback>\n\n---\n**What could have been better:** <user feedback>"}'
Note: The comment POST automatically triggers an agent wakeup (built into Paperclip) — no need to call wakeup separately.
Move to the next issue in the queue.
curl to port 3100 fails, tell the user: "Paperclip is not running. Start it with: powershell Start-ScheduledTask -TaskName PaperclipAI"-d flag with shell variables or user text that might contain quotes. Always use the Write tool to create a temp JSON file if the feedback text is complex, then curl -d @file.json.reason field in feedback-votes is max 1000 chars. Truncate if needed./agents endpoint, not from the issue itself.agentId set; comments by the user have userId set.data-ai
Automated backup skill for PKA + Obsidian + Claude memory. Snapshots pka.db (via SQLite .backup so WAL is handled safely), the Obsidian vault, Claude memory files, agent profiles, and the help-content Excel into a single timestamped zip in Zoho WorkDrive. Daily/weekly/monthly retention rotation built in. USE WHEN Danny says "backup", "run backup", "snapshot pka", or to recover from a snapshot.
testing
Run any question, idea, or decision through a council of 5 AI advisors who independently analyze it, peer-review each other anonymously, and synthesize a final verdict. Based on Karpathy's LLM Council methodology, packaged as the stress-test skill. MANDATORY TRIGGERS: 'stress-test this', 'stress test this', 'pressure-test this', 'pressure test this', 'war room this', 'council this', 'run the council', 'debate this'. STRONG TRIGGERS (use when combined with a real decision or tradeoff): 'should I X or Y', 'which option', 'what would you do', 'is this the right move', 'validate this', 'get multiple perspectives', 'I can't decide', 'I'm torn between'. Do NOT trigger on simple yes/no questions, factual lookups, or casual 'should I' without a meaningful tradeoff (e.g. 'should I use markdown' is not a stress-test question). DO trigger when the user presents a genuine decision with stakes, multiple options, and context that suggests they want it pressure-tested from multiple angles.
content-media
Weekly scan of Obsidian vault for empty/low-content notes. Moves them to zToBeDeleted/ for user review. Use when the user says "tidy obsidian", "clean obsidian", "obsidian cleanup", or on scheduled weekly run.
development
Design-first website builder. Accepts a Claude Design export (HTML or screenshot) as a visual blueprint, collects business inputs, calls Claude API to generate a design-matched index.html, and publishes to GitHub Pages. Falls back to vibe-based generation if no design is provided. Use when the user says "make-website-design", "design website", "build from design", or provides a Claude Design export for website generation.