Agent skill

Create Issue Interaction UI

by paperclipai in paperclipai/paperclip

Add a new Paperclip issue-thread interaction kind end-to-end.

MITAuto-check passedTesting & QA

Install Create Issue Interaction UI

skills CLI
$ npx skills add paperclipai/paperclip --skill create-issue-interaction-ui -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install paperclipai/paperclip create-issue-interaction-ui --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/paperclipai/paperclip.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/create-issue-interaction-ui .claude/skills/create-issue-interaction-ui && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
create-issue-interaction-ui
GitHub stars
99k
Token cost
~3.4k tokens
SKILL.md length
1,470 words
Files
1
Skills in repo
60
Repo updated
First seen
Licence
MIT

At a glance

Add a new Paperclip issue-thread interaction kind end-to-end.

  • Works in 5 steps: Shared contract (smallest, lands first) → Server service and routes → UI card and issue-thread wiring → …
  • Repo work introduces
  • SKILL.md covers When to use, When NOT to use, Mental model and The canonical worked example, plus 4 more sections
  • Calls pnpm and git

What it does

Create Issue Interaction UI is an agent skill from paperclipai/paperclip. Add a new Paperclip issue-thread interaction kind end-to-end. Use when repo work introduces or extends interaction cards like requestconfirmation, checkbox confirmations, askuserquestions, or suggesttasks.

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA. The repository describes itself as: The open-source app everyone uses to manage agents at work. The licence is MIT.

When your agent uses it

  • Repo work introduces
  • Extends interaction cards like requestconfirmation
  • Checkbox confirmations
  • Askuserquestions

Example prompts

  • “/create-issue-interaction-ui”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Shared contract (smallest, lands first)
  2. Server service and routes
  3. UI card and issue-thread wiring
  4. CLI, MCP, plugin SDK helpers
  5. Agent guidance

What it can do on your machine

Read from SKILL.md and the folder at commit 5717523. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pnpm and git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Create Issue Interaction UI loads about 3.4k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 1,470 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~59
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from paperclipai/paperclip at commit 5717523, republished under its MIT licence (© paperclipai). 1,470 words, ~3,396 tokens.

Download SKILL.mdSave it as .claude/skills/create-issue-interaction-ui/SKILL.md (or your agent's skills folder).
name
create-issue-interaction-ui
description
Add a new Paperclip issue-thread interaction kind end-to-end. Use when repo work introduces or extends interaction cards like request_confirmation, checkbox confirmations, ask_user_questions, or suggest_tasks.

Create a new issue-thread interaction UI (Developer/maintainer skill)

Developer/maintainer skill. Do NOT install this on production Paperclip agents.

This skill walks a Paperclip contributor through introducing a new issue-thread interaction kind from shared contract to issue-detail wiring, helpers, and docs. It is intentionally a developer/maintainer skill: the audience is a human or coding agent making code changes inside paperclipai/paperclip, not the operational agents that run inside a deployed Paperclip company.

Do NOT install this on production Paperclip agents. This guide is for repository contributors changing Paperclip itself.

When to use

  • A new interaction kind is being introduced (compact picker, structured rating, in-thread approval card, etc.).
  • An existing interaction needs a parallel variant with a distinct payload shape, validation, or resolution outcome (and ask_user_questions is the wrong fit because option count, target binding, or result shape differs).
  • A reviewer asks for "the same audit, staleness, supersede, and continuation semantics as the other interactions" on a new card.

When NOT to use

  • Adding fields to an existing interaction kind that does not need a new payload schema. Patch the existing validators/UI in place instead.
  • Changing how Paperclip agents call interactions. Update skills/paperclip or references/api-reference.md; that is agent guidance, not card work.
  • Building a non-thread UI (issue detail sidebar, project board widget, etc.). Those have their own component conventions.

Mental model

Every issue-thread interaction has four moving parts:

LayerOwns
SharedKind constant, payload/result interfaces, Zod validators, exported types, shared-test coverage.
ServerService create/accept/reject/respond, staleness, supersede, idempotency, activity log, wake send.
UICard pending/resolved/stale states, fixtures, Storybook, issue-thread/IssueDetail wiring.
Helpers/DocsCLI command, MCP tool, plugin SDK type+host+testing path, skills/paperclip guidance.

The four existing kinds are the canonical prior art. Pick the closest one and copy its plumbing rather than inventing parallel mechanics:

  • request_confirmation — single yes/no bound to a target with stale/supersede.
  • request_checkbox_confirmation — bounded multi-select against an immutable option set.
  • ask_user_questions — small typed form, no target binding.
  • suggest_tasks — proposes tasks the board can accept individually.

If your new card needs target binding and a yes/no-style resolution, model it after the two request_* kinds. If it is a structured form, model it after ask_user_questions. If it produces creatable child entities, model it after suggest_tasks.

The canonical worked example

The current best end-to-end reference is the checkbox confirmation rollout (merged in 4d5322c82, GitHub PR #7649). Read that diff before starting:

sh
git show --stat 4d5322c82

The plan it implemented is preserved as an issue document on PAP-10415. Use it as the template for your own plan document if you are running this work through Paperclip itself.

Order of operations

Do the shared contract first. It is the smallest correct change you can land even before UI is final, and every later layer reads its types and validators.

1. Shared contract (smallest, lands first)

Touch:

  • packages/shared/src/constants.ts — add the kind string to ISSUE_THREAD_INTERACTION_KINDS and any size constant (mirror REQUEST_CHECKBOX_CONFIRMATION_OPTION_LIMIT = 200).
  • packages/shared/src/types/issue.ts — add Option, Payload, Result, and Interaction interfaces. Extend the IssueThreadInteraction and payload/result union types at the bottom of the file.
  • packages/shared/src/types/index.ts — re-export the new types.
  • packages/shared/src/validators/issue.ts — add Zod schemas for payload, result, and the create-input variant. Reuse the existing requestConfirmationTargetSchema when target binding applies.
  • packages/shared/src/validators/index.ts — re-export the new schemas.
  • packages/shared/src/index.ts — re-export at the package root.
  • packages/shared/src/issue-thread-interactions.test.ts — extend the table tests for the new payload variant.

Validation invariants that have already been litigated and must hold:

  • Option lists are bounded (the checkbox kind uses 200; pick a number the UX can render compactly).
  • Option ids are unique within a payload and any default selection must reference known ids.
  • Labels and descriptions are length-capped to match existing question options. Do not invent looser caps.
  • Target binding uses the shared RequestConfirmationTarget schema so stale expiration runs through one code path.
2. Server service and routes

Touch:

  • server/src/services/issue-thread-interactions.ts — add the kind to:
    • the supported-kinds list (SUPPORTED_KINDS near the top),
    • mapInteractionRow (the switch (row.kind) over payload/result parsers),
    • create-input validation (switch (data.kind)),
    • the accept/reject/respond/stale-expiration branches,
    • the activity-log payload and the continuation wake payload.
  • server/src/routes/issues.ts — extend any kind-specific branches (notably the response-shape branch around line 6096 in the checkbox PR).
  • server/src/__tests__/issue-thread-interactions-service.test.ts — cover create, accept-with-result, reject-with-reason, stale-target expiration, supersede-on-user-comment, idempotency conflict, and wake payload shape.
  • server/src/__tests__/issue-thread-interaction-routes.test.ts — cover create + respond/accept/reject HTTP behavior, company scoping, and authorization.

Server invariants:

  • Board-only resolution. Agent-authored accept/reject must be rejected with the existing 403 path; do not add a per-kind bypass.
  • Company scoping. Reads, writes, expiration, and supersede must all filter by companyId. Never trust an issueId alone.
  • Stale target. If target was specified at create time and a newer revision lands, the interaction expires with outcome: "stale_target". Do not write bespoke staleness — call the same helper the other request_* kinds use.
  • Supersede on user comment. Default supersedeOnUserComment: true unless the payload schema documents otherwise.
  • Idempotency. The deterministic idempotencyKey shape from the existing kinds (<kind>:<issueId>:<decisionKey>:<revisionId>) must be honored; duplicate POSTs must return the existing card, not stack.
  • Continuation policy. Support none, wake_assignee, and wake_assignee_on_accept. Pick a default that matches whether the asker is blocked waiting for the answer (wake_assignee) or only cares about acceptance (wake_assignee_on_accept).
Show full SKILL.md (651 more words)Show less
3. UI card and issue-thread wiring

Touch:

  • ui/src/components/IssueThreadInteractionCard.tsx — add a card component (e.g. RequestCheckboxConfirmationCard) and a resolution component (e.g. RequestCheckboxConfirmationResolution). Branch the existing switch by interaction.kind. Reuse the card shell — do not introduce a parallel card frame.
  • ui/src/lib/issue-thread-interactions.ts — add typed helpers like getCheckboxConfirmationSelectedLabels so the card stays declarative.
  • ui/src/lib/issue-thread-interactions.test.ts — test the helpers.
  • ui/src/components/IssueThreadInteractionCard.test.tsx — pending, resolved, stale, disabled/submitting, and validation-error states.
  • ui/src/fixtures/issueThreadInteractionFixtures.ts — seed at least one pending and one resolved fixture for the new kind.
  • ui/src/stories/issue-thread-interactions.stories.tsx — Storybook entries for the key states.
  • ui/src/pages/IssueDetail.tsx — extend the per-kind branches the card is rendered from (callback wiring, response submission).
  • ui/src/components/IssueChatThread.tsx — if the kind affects thread-level rendering (badge, summary, count), update the per-kind switches here.
  • ui/src/api/issues.ts — extend the typed accept/reject/respond bodies.

UI invariants:

  • Compact rendering. The card must render comfortably with ~100 options (bounded scroll area, count-first resolved-state summaries — do not chip every selected option inline).
  • Select all and clear selection live inside the card, not in a global menu.
  • The accept payload uses kind-specific field names (e.g. selectedOptionIds, not the suggest-tasks selectedClientKeys). Do not reuse another kind's field name.
  • Stale, superseded, and accepted states render distinct copy; reuse the existing resolution-component shell.
4. CLI, MCP, plugin SDK helpers

External callers must be able to create the new interaction without hand-writing JSON. Touch:

  • cli/src/commands/client/issue.ts — add a CLI sub-command or extend the generic interaction create path.
  • cli/src/__tests__/issue-subresources.test.ts — cover the new flag set.
  • packages/mcp-server/src/tools.ts — add an MCP tool that accepts the new payload shape; reuse the existing createIssueThreadInteraction codepath.
  • packages/mcp-server/src/tools.test.ts — cover the tool's payload shape.
  • packages/plugins/sdk/src/types.ts — add the typed CreateIssueThreadInteraction variant so plugin authors get autocomplete.
  • packages/plugins/sdk/src/worker-rpc-host.ts — extend the kind switch in the create call.
  • packages/plugins/sdk/src/testing.ts — extend the test harness so plugins can simulate the new kind end-to-end.
  • packages/plugins/sdk/tests/testing-actions.test.ts — round-trip test for the new kind through the test harness.
5. Agent guidance

Touch:

  • skills/paperclip/SKILL.md — add a row to the interaction-kinds table: when to use, when not to use, plus a copyable payload example.
  • skills/paperclip/references/api-reference.md — full payload and result schemas, validation limits, create/respond bodies, error codes.

The skills text is read by the runtime agents. Keep it concise — differentiate clearly from sibling kinds in one or two sentences each.

Tests to run before requesting review

The checkbox PR ran exactly this focused set under NODE_ENV=test. Use the same shape for any new kind, swapping in your new test files:

sh
NODE_ENV=test pnpm run preflight:workspace-links
NODE_ENV=test pnpm exec vitest run \
  packages/shared/src/issue-thread-interactions.test.ts \
  server/src/__tests__/issue-thread-interaction-routes.test.ts \
  server/src/__tests__/issue-thread-interactions-service.test.ts \
  ui/src/components/IssueThreadInteractionCard.test.tsx \
  ui/src/lib/issue-thread-interactions.test.ts \
  cli/src/__tests__/issue-subresources.test.ts \
  packages/mcp-server/src/tools.test.ts \
  packages/plugins/sdk/tests/testing-actions.test.ts

If UI vitest fails with act is not a function, the shell is running with NODE_ENV=production (it picks up React's prod build). Re-run with NODE_ENV=test explicitly.

Pre-merge checklist

  • New kind appears in ISSUE_THREAD_INTERACTION_KINDS and is exported.
  • Payload and result interfaces are versioned (start at version: 1).
  • Zod validators enforce option/label/description limits and id uniqueness.
  • Target binding (if any) uses the shared RequestConfirmationTarget path.
  • Service handles create, accept, reject/respond, stale-target, supersede-on-user-comment, idempotency, activity log, and continuation wake.
  • Routes honor board-only resolution and company scoping.
  • UI renders pending, resolved, stale, disabled/submitting, and validation-error states; resolved-state large selections summarize by count first.
  • Fixtures and Storybook entries exist for the new kind.
  • CLI, MCP, and plugin SDK helpers all accept the new payload shape and have test coverage.
  • skills/paperclip/SKILL.md and references/api-reference.md updated.
  • Focused test set above is green; CI gates pass.

Anti-patterns observed in review

These came out of the checkbox PR review thread and are worth avoiding next time:

  • Reusing another kind's accept-payload field name (e.g. piggybacking on selectedClientKeys instead of introducing selectedOptionIds). Each kind owns its own field names.
  • Writing parallel staleness or supersede logic instead of routing through the existing request_confirmation helpers. This silently drifts behavior.
  • Rendering hundreds of selected-option chips in the resolved state. Resolved large selections must summarize by count first.
  • Skipping plugin SDK / MCP / CLI coverage on the theory that "the API is generic enough." External callers do not pick up new kinds without typed helpers, and the absence shows up later as broken agent flows.
  • Adding the kind to skills guidance before the server route accepts it. Agents will try the new kind and 400 in production.

© paperclipai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/create-issue-interaction-ui of paperclipai/paperclip.

Open the folder on GitHubat commit 5717523

Compare with similar skills

Create Issue Interaction UI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Create Issue Interaction UI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Create Issue Interaction UI this skillpaperclipai/paperclip99k—~3.4kAutomated safety check: PassMIT
Web Application Testinganthropics/skills180k51 repos~966Automated safety check: PassApache-2.0
Diagnosing Bugsfossasia/eventyay-interpretation1.6k32 repos~2.1kAutomated safety check: PassApache-2.0
TDDpietheinstrengholt/rssmonster56430 repos~906Automated safety check: PassMIT
TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph11211 repos~2.4kAutomated safety check: PassNone
TDDsanity-io/sanity6.4k20 repos~1kAutomated safety check: PassMIT

Similar skills

  • Web Application Testing

    anthropics/skills

    Official

    Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.

    180k GitHub starsUsed in 51 repos~966 tokens
    Testing & QAAuto-check passed
  • Diagnosing Bugs

    fossasia/eventyay-interpretation

    Diagnosis loop for hard bugs and performance regressions. An agent skill from fossasia/eventyay-interpretation.

    1.6k GitHub starsUsed in 32 repos~2.1k tokens
    Testing & QAAuto-check passed
  • TDD

    pietheinstrengholt/rssmonster

    Test-driven development. An agent skill from pietheinstrengholt/rssmonster.

    564 GitHub starsUsed in 30 repos~906 tokens
    Testing & QAAuto-check passed
  • TDD Workflow

    hellangleZ/burn-in-cceverywhere-ralph

    A skill your agent uses when writing new features, fixing bugs, or refactoring code.

    112 GitHub starsUsed in 11 repos~2.4k tokens
    Testing & QAAuto-check passed
  • TDD

    sanity-io/sanity

    Official

    Test-driven development with red-green-refactor loop. An agent skill from sanity-io/sanity.

    6.4k GitHub starsUsed in 20 repos~1k tokens
    Testing & QAAuto-check passed
  • Context Driven Development

    Ibrahim-3d/orchestrator-supaconductor

    A skill your agent uses when working with Conductor's context-driven development methodology, managing project context artifacts, or understanding the relationship between product.md, tech-stack.md…

    380 GitHub starsUsed in 9 repos~2.9k tokens
    Testing & QAAuto-check passed

More from paperclipai/paperclip

All 60 skills in this repo
  • Garden Inbox

    paperclipai/paperclip

    Scan a Paperclip user's Mine inbox, classify reversible archive candidates, request checkbox confirmation, and archive only accepted selections.

    99k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Paperclip

    paperclipai/paperclip

    Interact with the Paperclip control plane API for task coordination and governance.

    99k GitHub stars~9.6k tokensUpdated today
    Auto-check passed
  • Paperclip

    paperclipai/paperclip

    A skill your agent uses for Paperclip-managed tasks and heartbeats: reading task context, delivering task documents or files, updating completion or blockers, coordinating or delegating work, and…

    99k GitHub stars~17k tokensUpdated today
    Auto-check passed
  • Design Guide

    paperclipai/paperclip

    Paperclip UI design system guide for building consistent, reusable frontend components.

    99k GitHub starsUsed in 1 repo~3.1k tokens
    Auto-check passed
  • Paperclip Page

    paperclipai/paperclip

    Publish static HTML pages and asset folders to the Paperclip S3/CloudFront page host.

    99k GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Paperclip Create Agent

    paperclipai/paperclip

    Create new agents in Paperclip with governance-aware hiring.

    99k GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed

Categories

Questions about Create Issue Interaction UI

What does Create Issue Interaction UI do?

Add a new Paperclip issue-thread interaction kind end-to-end. Create Issue Interaction UI is an agent skill from paperclipai/paperclip. Add a new Paperclip issue-thread interaction kind end-to-end.

When should I use Create Issue Interaction UI?

Create Issue Interaction UI fits situations like: repo work introduces; extends interaction cards like requestconfirmation; checkbox confirmations; askuserquestions.

How do I install Create Issue Interaction UI in Claude Code?

Run `npx skills add paperclipai/paperclip --skill create-issue-interaction-ui -a claude-code`. Or copy the skill folder (.agents/skills/create-issue-interaction-ui in paperclipai/paperclip) into .claude/skills/create-issue-interaction-ui in your project. Claude Code loads it when a task matches its description.

How do I install Create Issue Interaction UI in Codex?

Run `npx skills add paperclipai/paperclip --skill create-issue-interaction-ui -a codex`. Or copy the skill folder (.agents/skills/create-issue-interaction-ui in paperclipai/paperclip) into .agents/skills/create-issue-interaction-ui in your project. Codex loads it when a task matches its description.

Can I use Create Issue Interaction UI in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add paperclipai/paperclip --skill create-issue-interaction-ui -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-issue-interaction-ui, .gemini/skills/create-issue-interaction-ui, .github/skills/create-issue-interaction-ui and .opencode/skills/create-issue-interaction-ui in your project.

What does Create Issue Interaction UI need to run?

Going by SKILL.md and its folder, Create Issue Interaction UI needs the command-line tools its instructions call (pnpm and git).

Does Create Issue Interaction UI access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Create Issue Interaction UI safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Create Issue Interaction UI use?

Create Issue Interaction UI is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Create Issue Interaction UI use?

About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Create Issue Interaction UI?

Skills that share tags, products or a category with Create Issue Interaction UI: Web Application Testing (anthropics/skills, 180k stars), Diagnosing Bugs (fossasia/eventyay-interpretation, 1.6k stars), TDD (pietheinstrengholt/rssmonster, 564 stars) and TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Create Issue Interaction UI?

paperclipai (a GitHub organization) maintains it in paperclipai/paperclip, which has 98,537 GitHub stars. The repository holds 60 skills in this directory. The repository was last updated on October 8, 2026.

Source: paperclipai/paperclip on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.