@paperclipai/skills-catalog 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/catalog/bundled/docs/doc-maintenance/SKILL.md +75 -0
  2. package/catalog/bundled/paperclip-operations/issue-triage/SKILL.md +74 -0
  3. package/catalog/bundled/paperclip-operations/task-planning/SKILL.md +84 -0
  4. package/catalog/bundled/quality/qa-acceptance/SKILL.md +93 -0
  5. package/catalog/bundled/software-development/github-pr-workflow/SKILL.md +93 -0
  6. package/catalog/optional/browser/agent-browser/SKILL.md +93 -0
  7. package/catalog/optional/content/release-announcement/SKILL.md +128 -0
  8. package/catalog/optional/product/design-critique/SKILL.md +121 -0
  9. package/dist/generated/catalog.json +285 -0
  10. package/dist/scripts/build-catalog-manifest.d.ts +2 -0
  11. package/dist/scripts/build-catalog-manifest.d.ts.map +1 -0
  12. package/dist/scripts/build-catalog-manifest.js +15 -0
  13. package/dist/scripts/build-catalog-manifest.js.map +1 -0
  14. package/dist/scripts/validate-catalog.d.ts +2 -0
  15. package/dist/scripts/validate-catalog.d.ts.map +1 -0
  16. package/dist/scripts/validate-catalog.js +15 -0
  17. package/dist/scripts/validate-catalog.js.map +1 -0
  18. package/dist/src/catalog-builder.d.ts +16 -0
  19. package/dist/src/catalog-builder.d.ts.map +1 -0
  20. package/dist/src/catalog-builder.js +357 -0
  21. package/dist/src/catalog-builder.js.map +1 -0
  22. package/dist/src/catalog-builder.test.d.ts +2 -0
  23. package/dist/src/catalog-builder.test.d.ts.map +1 -0
  24. package/dist/src/catalog-builder.test.js +124 -0
  25. package/dist/src/catalog-builder.test.js.map +1 -0
  26. package/dist/src/frontmatter.d.ts +11 -0
  27. package/dist/src/frontmatter.d.ts.map +1 -0
  28. package/dist/src/frontmatter.js +141 -0
  29. package/dist/src/frontmatter.js.map +1 -0
  30. package/dist/src/index.d.ts +7 -0
  31. package/dist/src/index.d.ts.map +1 -0
  32. package/dist/src/index.js +21 -0
  33. package/dist/src/index.js.map +1 -0
  34. package/dist/src/shipped-catalog.test.d.ts +2 -0
  35. package/dist/src/shipped-catalog.test.d.ts.map +1 -0
  36. package/dist/src/shipped-catalog.test.js +83 -0
  37. package/dist/src/shipped-catalog.test.js.map +1 -0
  38. package/dist/src/types.d.ts +42 -0
  39. package/dist/src/types.d.ts.map +1 -0
  40. package/dist/src/types.js +2 -0
  41. package/dist/src/types.js.map +1 -0
  42. package/generated/catalog.json +285 -0
  43. package/package.json +49 -0
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: doc-maintenance
3
+ description: Keep project docs aligned with recent code and feature changes — detect drift, update affected pages, and add release-relevant notes without rewriting unchanged sections.
4
+ key: paperclipai/bundled/docs/doc-maintenance
5
+ recommendedForRoles:
6
+ - engineer
7
+ - product
8
+ - devrel
9
+ tags:
10
+ - docs
11
+ - documentation
12
+ - release-notes
13
+ ---
14
+
15
+ # Doc Maintenance
16
+
17
+ Keep the documentation honest with minimum churn. The goal is alignment between docs and behavior, not stylistic rewrites or cosmetic re-organization. Reviewers should be able to read a diff and see "this updates docs to match recent behavior changes".
18
+
19
+ ## When to use
20
+
21
+ - A PR or recent set of merges changed user-visible behavior: CLI flags, API shapes, default values, configuration keys, endpoints, environment variables, supported versions.
22
+ - A user-reported bug traced back to outdated documentation.
23
+ - A release is being cut and the docs need a pass against the merged commits.
24
+ - A new feature shipped but only the engineer's PR description describes how to use it.
25
+
26
+ ## When not to use
27
+
28
+ - The change is internal-only (private helper rename, refactor) with no user-visible impact.
29
+ - You want to "improve the docs" without a behavior anchor. That is a separate scoped project, not maintenance — make a plan first.
30
+
31
+ ## The pass
32
+
33
+ 1. **Establish the baseline.** Get the commit range you are documenting against (since last release tag, since last merged-doc commit, or since a specific PR).
34
+ 2. **Enumerate user-visible changes.** Read commits and PR descriptions. List, for each change, what a user can now do differently.
35
+ 3. **Map changes to docs.** For each change, find every page that mentions the affected concept. Common targets: README, CLI reference, API reference, configuration reference, migration guide, FAQ, examples.
36
+ 4. **Update precisely.** Edit only the lines that need to change. Do not rewrap paragraphs you did not modify — it pollutes the diff.
37
+ 5. **Add new entries where needed.** New CLI flag → CLI reference entry. New env var → configuration reference entry. New endpoint → API reference entry. Don't only add it to the changelog.
38
+ 6. **Update examples and snippets.** Code blocks in docs are wrong faster than prose. Re-run any example that touches new behavior.
39
+ 7. **Write the release note.** One sentence per user-visible change. Group by Added / Changed / Fixed / Deprecated / Removed. Link to the relevant PRs and docs section.
40
+ 8. **Cross-check.** Search the docs for the old behavior wording and remove or update stragglers.
41
+
42
+ ## Style baseline
43
+
44
+ - Voice: second person ("you can pass `--json` to ..."). Avoid "we" except in narrative pages.
45
+ - Tense: present, not future. The behavior exists once shipped.
46
+ - Headings: imperative ("Configure the cache") or noun-phrase ("Cache configuration"), match the surrounding page.
47
+ - Code blocks: include the language tag so syntax highlighting works.
48
+ - Cross-links: link the first mention of a concept on each page; do not link every occurrence.
49
+ - Avoid promising future behavior. If something is unreleased, mark it `experimental` or omit it.
50
+
51
+ ## Drift detection
52
+
53
+ A doc page is drifting if any of these are true:
54
+
55
+ - It documents a flag, key, or endpoint that no longer exists.
56
+ - An example does not run as written.
57
+ - A default value in the docs does not match the code.
58
+ - A supported-versions list excludes a version the project actually supports, or includes one it dropped.
59
+ - A "Coming soon" section references a feature that shipped or was cancelled.
60
+
61
+ When you find drift, fix it in the same pass and note it in the release note's `Fixed` group.
62
+
63
+ ## Release-note rules
64
+
65
+ - One sentence per item. If two sentences are needed, the item is likely two items.
66
+ - User impact first, internal cause second. `Faster cold start (avoid full bundle download on first run)` beats `Refactor bootstrap loader`.
67
+ - Link the PR for engineering readers and the docs page for users.
68
+ - Mark breaking changes explicitly: `**Breaking:**` prefix. Include migration steps inline or via link.
69
+
70
+ ## Anti-patterns
71
+
72
+ - Massive doc PRs that bundle stylistic rewrites with real updates. Reviewers cannot tell which lines reflect actual behavior changes.
73
+ - "Updated docs" commit messages with no detail. Make the commit say what changed and why.
74
+ - Adding to the changelog without updating the reference docs the changelog points to.
75
+ - Marking a feature as available before its code lands. Documentation must follow behavior, not promise it.
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: issue-triage
3
+ description: Triage Paperclip inbox issues that are stale, blocked, in-review, or assigned-but-not-progressing, and decide a single next action per issue (resume, reassign, unblock, escalate, or close).
4
+ key: paperclipai/bundled/paperclip-operations/issue-triage
5
+ recommendedForRoles:
6
+ - manager
7
+ - ceo
8
+ - engineer
9
+ tags:
10
+ - paperclip
11
+ - triage
12
+ - inbox
13
+ - workflow
14
+ ---
15
+
16
+ # Issue Triage
17
+
18
+ Convert a noisy inbox into a small set of clear next actions. Each pass through this skill should leave every touched issue with a defined owner, status, and the single concrete action that will move it forward.
19
+
20
+ ## When to use
21
+
22
+ - Daily or shift-start review of `in_progress`, `in_review`, and `blocked` assignments.
23
+ - An inbox has many open assignments and no clear priority.
24
+ - A manager wants a status read on their reports without asking each agent.
25
+ - You are woken by a comment that suggests an old issue stalled.
26
+
27
+ ## When not to use
28
+
29
+ - You are checked out on one specific issue and the wake context names it. Work that issue, do not triage the whole inbox.
30
+ - An issue thread already has an open `request_confirmation` or `ask_user_questions`. Wait for the response — re-triage is noise.
31
+
32
+ ## Inputs
33
+
34
+ - `GET /api/agents/me/inbox-lite` for the compact assignment list.
35
+ - For each candidate issue, `GET /api/issues/{issueId}/heartbeat-context` for compact state including `blockerAttention`, `executionState`, ancestors, and `commentCursor`.
36
+ - Only fall back to the full thread when the heartbeat context is not enough.
37
+
38
+ ## Per-issue triage decision
39
+
40
+ For each issue, classify into exactly one of:
41
+
42
+ 1. **Resume** — execution path is alive. Confirm the assignee is set and let the heartbeat continue. Do not comment.
43
+ 2. **Wake-needed** — assignee is stalled with no live continuation. Post one comment that names the blocker resolution or the exact next action, then leave `in_progress` or move to `todo` so the assignee picks it up.
44
+ 3. **Reassign** — the assignee is not the right specialty. Reassign and set `in_review` only if the new assignee is human, otherwise leave `in_progress`.
45
+ 4. **Unblock** — a first-class `blockedByIssueIds` entry is now `done` or `cancelled`. If `cancelled`, replace or remove it from `blockedByIssueIds`. The blockers-resolved wake will fire automatically when all are `done`.
46
+ 5. **Escalate** — the issue needs board, CTO, or user input. Create a `request_confirmation`, `ask_user_questions`, or `request_board_approval` and set the issue to `in_review`.
47
+ 6. **Close** — work is complete, duplicate, or no longer relevant. Set `done` or `cancelled` with a one-line reason.
48
+
49
+ If you cannot classify in under a minute of reading, escalate rather than guess.
50
+
51
+ ## Stuck-state heuristics
52
+
53
+ - `in_progress` with no comments or document updates in the last 24h and no monitor or queued continuation → wake-needed.
54
+ - `in_review` with no reviewer participant, no pending interaction, no approval — invalid review path → reassign to a real reviewer or move to `todo`.
55
+ - `blocked` with no `blockedByIssueIds`, only free-text "blocked by X" → convert to first-class blockers or move to `todo` with a named action.
56
+ - `blocked` with all blockers `done` → unblock the issue by setting status back; the assignee will wake.
57
+ - Child issues all complete but parent still `in_progress` → confirm parent acceptance, then close.
58
+
59
+ ## Don't-do list
60
+
61
+ - Do not @-mention agents during triage; mentions cost budget. Use direct reassignment instead.
62
+ - Do not re-comment on a `blocked` issue if your most recent comment was also a blocked update with no reply since.
63
+ - Do not cancel cross-team issues. Reassign to the responsible manager with a comment.
64
+ - Do not change status without a comment that explains the change.
65
+
66
+ ## Output of a triage pass
67
+
68
+ A short comment chain or summary message that lists, per issue touched:
69
+
70
+ - Issue id and title.
71
+ - Verdict (resume / wake-needed / reassign / unblock / escalate / close).
72
+ - The one action you took or asked for.
73
+
74
+ This is the bar for "the triage is done."
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: task-planning
3
+ description: Turn a Paperclip issue or request into a structured implementation plan with child task graph, blockers, owners, and acceptance criteria, then save it as the issue `plan` document.
4
+ key: paperclipai/bundled/paperclip-operations/task-planning
5
+ recommendedForRoles:
6
+ - manager
7
+ - engineer
8
+ - product
9
+ tags:
10
+ - paperclip
11
+ - planning
12
+ - issues
13
+ - delegation
14
+ ---
15
+
16
+ # Task Planning
17
+
18
+ Produce implementation plans that the Paperclip executor can actually run: explicit child issues, real blockers, named owners, and a defined acceptance bar. Avoid plans that read well but cannot be split into work.
19
+
20
+ ## When to use
21
+
22
+ - An issue asks you to "plan", "scope", "break down", "design the rollout", "propose the work", or similar.
23
+ - A user wants a written plan before approving implementation.
24
+ - A manager needs to delegate non-trivial work and the shape of the work is not obvious yet.
25
+ - You inherited an issue too large to deliver in one heartbeat and need to split it.
26
+
27
+ ## When not to use
28
+
29
+ - The issue is a single small change you can ship in the same heartbeat. Just ship it.
30
+ - The issue is forensic ("why did this break"). Use a diagnosis skill first; plan only after the root cause is named.
31
+ - A current `plan` document already exists and the change is minor. Update that document; do not start fresh.
32
+
33
+ ## Outputs
34
+
35
+ 1. An updated issue document with key `plan` (markdown).
36
+ 2. A short comment on the issue that links to the plan document and names the next action.
37
+ 3. Where the plan requires approval, an issue-thread interaction of kind `request_confirmation` bound to the latest plan revision.
38
+
39
+ Do not create implementation subtasks until the plan is accepted.
40
+
41
+ ## Plan structure
42
+
43
+ Required sections, in order:
44
+
45
+ 1. **Goal** — one paragraph. What changes for the user, the operator, or the system once this work lands.
46
+ 2. **Context reviewed** — bullet list of documents, files, and prior issues you read. Lets reviewers spot missing inputs.
47
+ 3. **Constraints and non-goals** — what must hold (compatibility, security, performance) and what this plan deliberately will not do.
48
+ 4. **Approach** — the chosen path, with a short rationale. If you considered alternatives, name them and why you rejected them.
49
+ 5. **Work breakdown** — ordered list of child issues. Each child has:
50
+ - Title in imperative form.
51
+ - Owner specialty (Engineer, QA, Designer, Security, DevRel, Manager, etc.).
52
+ - Scope and deliverables.
53
+ - Acceptance criteria.
54
+ - Blocks/blocked-by relationships expressed by phase letter or child title.
55
+ 6. **Acceptance** — the bar for the parent issue. How the user knows the whole thing is done.
56
+ 7. **Risks and mitigations** — short list. Skip if there are none.
57
+ 8. **Deferrals** — what is intentionally pushed to follow-up issues, with why.
58
+
59
+ ## Rules of thumb for splitting
60
+
61
+ - One child issue, one specialty. If two specialties have to coordinate inside the same issue, split it.
62
+ - One child issue, one acceptance verdict. If a reviewer would say "this is half done", split it.
63
+ - A child must be checkout-able by the owner from its title and description alone. Reviewers should not have to re-read the parent plan to understand a child.
64
+ - Order children by real blocker chains, not by author preference. Parallel children should explicitly say `blockers: none`.
65
+ - Avoid `polish` or `cleanup` child issues without acceptance criteria — they never close.
66
+
67
+ ## Filing the plan
68
+
69
+ Use the Paperclip API to write the plan document, then comment:
70
+
71
+ - `PUT /api/issues/{issueId}/documents/plan` with the markdown body. If `plan` already exists, include the latest `baseRevisionId`.
72
+ - `POST /api/issues/{issueId}/comments` with a short summary that links the plan: `/<prefix>/issues/<issue-id>#document-plan`.
73
+ - If approval is required: `POST /api/issues/{issueId}/interactions` with `kind: request_confirmation`, `targetRevisionId` set to the new plan revision, `continuationPolicy: wake_assignee`, and `idempotencyKey: "confirmation:{issueId}:plan:{revisionId}"`.
74
+ - Set the issue to `in_review` after creating the confirmation. Stay assigned so the acceptance wakes the planner.
75
+
76
+ When the plan is accepted, see the companion skill for converting accepted plans into Paperclip executable tasks.
77
+
78
+ ## Anti-patterns
79
+
80
+ - Plan disguised as a description edit. Use the `plan` document.
81
+ - "Phases A–Z" with no work breakdown inside the phases.
82
+ - Children with descriptions that say "see parent" — they fail at delegation time.
83
+ - Acceptance written as "code review approval". Reviewers need a behavior bar, not a process bar.
84
+ - Plans that bury blocker chains in prose. Use explicit blocked-by lines.
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: qa-acceptance
3
+ description: Produce QA acceptance criteria and a manual validation plan for a feature change — golden path, edge cases, error states, performance limits, and explicit pass/fail evidence.
4
+ key: paperclipai/bundled/quality/qa-acceptance
5
+ recommendedForRoles:
6
+ - qa
7
+ - engineer
8
+ - product
9
+ tags:
10
+ - qa
11
+ - acceptance
12
+ - validation
13
+ - testing
14
+ ---
15
+
16
+ # QA Acceptance
17
+
18
+ Write acceptance criteria that a reviewer can run against the running app and decide pass or fail without asking the author. The criteria are the contract — automated tests cover correctness, QA covers feature-level behavior.
19
+
20
+ ## When to use
21
+
22
+ - A feature change is heading to QA and needs a written validation plan.
23
+ - A reviewer is asked to verify a PR that touches user-visible behavior.
24
+ - An incident postmortem requires a regression check before reopen-prevention.
25
+ - A release candidate needs a pre-cut smoke pass.
26
+
27
+ ## When not to use
28
+
29
+ - The change is unit-test-only (utility refactor, internal naming). Acceptance criteria are unnecessary churn.
30
+ - You are asked to write tests against API contracts. Use contract testing, not feature QA.
31
+
32
+ ## Acceptance criteria format
33
+
34
+ Each criterion is a single, independently-verifiable statement:
35
+
36
+ ```md
37
+ - **Given** <starting state>, **when** <action>, **then** <observable outcome>.
38
+ ```
39
+
40
+ Example:
41
+
42
+ ```md
43
+ - **Given** a CSV export with 0 rows, **when** the user clicks Export, **then** the file downloads with only the header row and the UI shows "Exported 0 rows".
44
+ ```
45
+
46
+ Avoid criteria that combine multiple `when`s or `then`s. Split them.
47
+
48
+ ## What every plan must cover
49
+
50
+ 1. **Golden path.** The most common successful flow, end to end.
51
+ 2. **Empty and minimum states.** Zero items, one item, missing optional inputs.
52
+ 3. **Boundary inputs.** Max length strings, max numeric values, unicode, RTL text where applicable.
53
+ 4. **Error states.** Network failure, permission denied, validation failures, conflict (409), not found (404).
54
+ 5. **Concurrency and ordering.** Two users acting at once, race against background jobs, refresh during mutation.
55
+ 6. **Performance envelope.** The largest realistic input the change must handle without UI hangs or timeouts.
56
+ 7. **Backward compatibility.** Existing data, existing URLs, persisted user preferences continue to work.
57
+ 8. **Telemetry and audit.** Events, logs, or activity entries the change is supposed to emit.
58
+
59
+ If a section is genuinely not applicable, write "N/A: <why>" — do not silently omit.
60
+
61
+ ## Evidence
62
+
63
+ Each criterion needs evidence on the verification pass:
64
+
65
+ - Screenshot or short clip for UI behavior.
66
+ - Copied console / network output for API behavior.
67
+ - Log snippet or activity row for telemetry.
68
+ - Timing measurement for performance criteria.
69
+
70
+ "Looks good to me" without evidence is not a pass.
71
+
72
+ ## Quarantine and follow-up
73
+
74
+ - A failing criterion blocks acceptance unless explicitly waived by the owner with a tracked follow-up issue.
75
+ - "Known issue" without a linked follow-up is not a waiver.
76
+ - If you add a new criterion mid-pass, restart the pass — partial coverage hides regressions.
77
+
78
+ ## Handoff back to the author
79
+
80
+ Return the validation plan with three sections:
81
+
82
+ - **Pass.** Criteria that passed, with one-line evidence summaries.
83
+ - **Fail.** Criteria that failed, with the exact reproduction.
84
+ - **Blocked.** Criteria you could not run, with why.
85
+
86
+ The author owns turning failures into either fixes or accepted deferrals.
87
+
88
+ ## Anti-patterns
89
+
90
+ - Acceptance phrased as test plan ("write a Cypress test for X"). Acceptance is what is true after the change ships; tests are how you check.
91
+ - Criteria that depend on inspecting implementation details (selectors, query plans). Stay observable.
92
+ - Long checklists with no priority. Mark must-pass criteria distinctly from nice-to-have.
93
+ - Validation reports that say "passed" with no evidence. Reviewers cannot audit those.
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: github-pr-workflow
3
+ description: Prepare a GitHub pull request from a feature branch — branch hygiene, commit shape, title/body, verification notes, screenshots for UI work, and replies to review comments.
4
+ key: paperclipai/bundled/software-development/github-pr-workflow
5
+ recommendedForRoles:
6
+ - engineer
7
+ tags:
8
+ - github
9
+ - pull-requests
10
+ - code-review
11
+ - release
12
+ ---
13
+
14
+ # GitHub Pull Request Workflow
15
+
16
+ Ship a PR a reviewer can land without follow-up clarifying questions. The aim is high signal in the title and body, evidence the change works, and clean replies when feedback comes in.
17
+
18
+ ## When to use
19
+
20
+ - You are about to open a PR for a change that is functionally complete.
21
+ - A reviewer left comments and you need to respond and push fixes.
22
+ - A PR has been open more than a day and needs to be brought back into shape (stale conflicts, missing description, missing verification).
23
+
24
+ ## When not to use
25
+
26
+ - The change is not yet functionally complete. Finish the work first; draft PRs that bounce on review are noise.
27
+ - The repository uses a non-GitHub forge. Adjust to that forge's conventions; do not force GitHub-isms.
28
+
29
+ ## Branch hygiene before opening
30
+
31
+ - Rebase or merge from the target base so the diff is current.
32
+ - Squash WIP commits into reviewable units. Prefer one commit per logical change; do not force one-commit-per-PR if the work is genuinely multi-step.
33
+ - Confirm tests, typecheck, and lint pass locally. Note any deliberate skips in the PR body.
34
+ - Remove debug prints, commented-out code, and `TODO` markers that are not tracked.
35
+
36
+ ## PR title
37
+
38
+ - Imperative mood, under 70 characters.
39
+ - Lead with the user-visible change, not the file touched. `Allow CSV export from reports table` beats `Update reports.tsx`.
40
+ - If the repo uses an issue prefix convention (`PAP-1234:`, `[security]`), follow it.
41
+ - No trailing period.
42
+
43
+ ## PR body
44
+
45
+ Use this structure:
46
+
47
+ ```md
48
+ ## Summary
49
+ - 1–3 bullets describing what changed and why.
50
+
51
+ ## Implementation notes
52
+ - Anything non-obvious in the diff: trade-offs, dropped alternatives, gotchas.
53
+ - Migration or config implications.
54
+
55
+ ## Verification
56
+ - The exact commands or steps you ran.
57
+ - Screenshots or short clips for UI changes (required if pixels moved).
58
+ - Edge cases you exercised by hand.
59
+
60
+ ## Risk and rollback
61
+ - What breaks if this is reverted, and how to revert cleanly.
62
+ ```
63
+
64
+ Skip the `Risk and rollback` section only for clearly trivial PRs (typos, docs).
65
+
66
+ ## Verification evidence
67
+
68
+ - Tests passing in CI is necessary, not sufficient. Reviewers also need to know the change behaves correctly end to end.
69
+ - For UI work, include screenshots of the golden path and one edge case. Tag dark and light mode if the project supports both.
70
+ - For migrations, include a dry-run plan and reversal steps.
71
+ - For performance changes, include a before/after measurement, not adjectives.
72
+
73
+ ## Replying to review comments
74
+
75
+ - Reply on every comment, even with just "fixed in <commit-sha>" — silent fixes leave the reviewer guessing.
76
+ - Push fixes as new commits while review is active; do not amend during review unless the reviewer agrees.
77
+ - If you disagree with feedback, say so with one sentence of rationale and let the reviewer decide. Don't escalate over comments.
78
+ - Re-request review explicitly after pushing changes.
79
+
80
+ ## Merge checklist
81
+
82
+ - All required checks green.
83
+ - All review comments resolved.
84
+ - PR title/body still accurate (update if scope changed mid-review).
85
+ - Linked issue moves to `in_review` or `done` per project convention.
86
+ - Delete the branch after merge unless it is a long-lived integration branch.
87
+
88
+ ## Anti-patterns
89
+
90
+ - PR description that says "see commits". Reviewers should not need to read the log.
91
+ - Mixing refactor and behavior change in the same PR with no separation in the body.
92
+ - "Address feedback" commits that bundle unrelated edits. One commit per round of feedback is fine; one commit for everything in flight is not.
93
+ - Force-pushing during active review without telling the reviewer.
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: agent-browser
3
+ description: Drive a real browser to inspect or interact with a web page or app — navigate, take screenshots, read console and network, fill simple forms — for verification tasks, not unattended automation.
4
+ key: paperclipai/optional/browser/agent-browser
5
+ recommendedForRoles:
6
+ - qa
7
+ - engineer
8
+ - researcher
9
+ tags:
10
+ - browser
11
+ - puppeteer
12
+ - playwright
13
+ - verification
14
+ ---
15
+
16
+ # Agent Browser
17
+
18
+ Use a controlled browser to verify behavior, capture evidence, or extract information from web pages that a static fetch cannot reach (SPAs, login-gated pages, dynamic content). This skill is about supervised verification, not unattended scraping.
19
+
20
+ ## When to use
21
+
22
+ - You need a screenshot of a deployed page or a local dev server to confirm a UI change.
23
+ - You need to read JavaScript-rendered content that `curl`/`wget` will not see.
24
+ - A user reports a UI bug and you need to reproduce it interactively to capture console errors, network requests, or layout state.
25
+ - You need to walk through a short flow (load page, click, observe) to verify acceptance criteria.
26
+
27
+ ## When not to use
28
+
29
+ - The page is reachable as static HTML. Use `curl`/HTTP fetch — it is cheaper, faster, and more reliable.
30
+ - The task is unattended large-scale scraping. That belongs to a dedicated scraper with rate limits, robots.txt handling, and a real user agent policy — not this skill.
31
+ - The site is behind authentication you do not own credentials for, or whose terms of service prohibit automation.
32
+ - The site involves sensitive accounts (banking, healthcare, government) where automation risks lockout or compliance issues.
33
+
34
+ ## Before launching the browser
35
+
36
+ - Confirm the URL and what state should be true after navigation.
37
+ - Decide what evidence is needed: full-page screenshot, viewport screenshot, console log, network trace, HTML snapshot, extracted text.
38
+ - Decide the viewport size that matters for the task (mobile vs desktop). Default to a desktop size unless the task is mobile-specific.
39
+ - For local dev servers, confirm the server is running and the port is what you expect.
40
+
41
+ ## Driving the browser
42
+
43
+ A typical verification session:
44
+
45
+ 1. **Launch with a real-looking user agent** when the target is the public internet; an unrealistic UA flags automation traffic.
46
+ 2. **Set a sane viewport** (e.g., 1366×768 desktop, 390×844 iPhone-ish).
47
+ 3. **Navigate and wait for the right signal.** Prefer waiting for a specific selector or network-idle over arbitrary sleeps.
48
+ 4. **Capture evidence immediately** after the wait condition succeeds, before any interaction perturbs the state.
49
+ 5. **Interact deliberately.** One click at a time, with a wait between actions; re-screenshot after each meaningful state change.
50
+ 6. **Read the console and network panels** for unexpected errors, 4xx/5xx responses, or slow requests.
51
+ 7. **Close the browser cleanly** when done. Long-running browser sessions leak memory and hold ports.
52
+
53
+ ## What evidence to record
54
+
55
+ For a verification task, deliver:
56
+
57
+ - A full-page or viewport screenshot of each meaningful state.
58
+ - The console log, filtered to warnings/errors.
59
+ - Any non-2xx network response with the URL, status, and a short response body excerpt.
60
+ - A short narration: "Navigated to X, observed Y, clicked Z, observed W."
61
+
62
+ For a UI bug repro, also record:
63
+
64
+ - The exact reproduction steps the user can follow.
65
+ - Viewport size and (where relevant) device pixel ratio.
66
+ - Whether the bug reproduces on first load vs after interaction.
67
+
68
+ ## Login-gated pages
69
+
70
+ - Prefer programmatic auth (API token, magic link) over UI login.
71
+ - If UI login is the only path, the user must provide credentials explicitly for this run. Never reuse credentials outside the session.
72
+ - Do not store credentials in the session log, screenshot, or returned output.
73
+
74
+ ## Performance and politeness
75
+
76
+ - Throttle to one navigation per few seconds when touching shared infra.
77
+ - Respect `robots.txt` for public sites you are inspecting at any volume.
78
+ - Cancel navigations if a page exceeds a reasonable timeout (e.g., 30s); the page is broken or rate-limiting you.
79
+ - Do not retry forever on failure. Retry once with a longer timeout, then escalate.
80
+
81
+ ## Common failure modes
82
+
83
+ - **Selector not found.** Page changed, or you are waiting before render. Take a screenshot to see actual state; adjust the selector.
84
+ - **Click does nothing.** The element is offscreen, covered by a modal, or in a shadow DOM. Scroll into view or pierce the shadow root.
85
+ - **Headless detection.** Some sites detect headless Chrome and serve a different page. Use a non-headless mode or a fingerprint-realistic configuration only when authorized.
86
+ - **Cross-origin iframe blocking.** Iframes you do not own cannot be inspected; the page must offer the data outside the iframe or the task is infeasible.
87
+
88
+ ## Anti-patterns
89
+
90
+ - Long unsupervised browser sessions that drift from the original task.
91
+ - Scraping behind authentication you do not own.
92
+ - Captioning a screenshot with "looks good" without saying what state was loaded and what selectors confirmed it.
93
+ - Treating a passing screenshot as proof of correctness across viewports you did not actually test.
@@ -0,0 +1,128 @@
1
+ ---
2
+ name: release-announcement
3
+ description: Write a release announcement — changelog, blog post, in-app note, or social post — that leads with user impact, names the audience, and includes upgrade/migration steps without filler.
4
+ key: paperclipai/optional/content/release-announcement
5
+ recommendedForRoles:
6
+ - devrel
7
+ - product
8
+ - writer
9
+ tags:
10
+ - release
11
+ - changelog
12
+ - announcement
13
+ - communication
14
+ ---
15
+
16
+ # Release Announcement
17
+
18
+ Write the channel-appropriate announcement for a release without churn. Different surfaces need different shapes: a changelog entry is not a blog post is not a social card. The bar is: a reader of the chosen surface can decide in under 30 seconds whether this release affects them, and if so what to do.
19
+
20
+ ## When to use
21
+
22
+ - A version, feature, or fix is shipping and needs writeup for at least one surface.
23
+ - A previously private feature is going GA.
24
+ - A breaking change needs broadcast before users hit it.
25
+
26
+ ## When not to use
27
+
28
+ - An internal-only change with no user impact. Update internal docs; do not announce.
29
+ - The release is incomplete (still in active development). Wait until it ships, even if marketing wants the post.
30
+
31
+ ## Determine the audience and channel first
32
+
33
+ | Audience | Best channel | Tone |
34
+ |---|---|---|
35
+ | Existing power users | Changelog, in-app note | Terse, factual, links |
36
+ | Engineering teams adopting your API | Release notes, dev blog | Examples, migration steps, version pins |
37
+ | Prospective customers | Landing page, marketing blog | Story arc, problem → solution, social proof |
38
+ | Broad audience | Social post, email newsletter | One-sentence pitch, link to depth |
39
+ | Internal team | Slack/Discord post | What changed, who to ping if it breaks |
40
+
41
+ Pick the audience for *this* writeup. One release often needs several writeups; do not blend them.
42
+
43
+ ## Universal structure
44
+
45
+ Whatever the channel, lead with:
46
+
47
+ 1. **What changed.** One sentence in the user's vocabulary.
48
+ 2. **Who it affects.** Which user role / use case.
49
+ 3. **What to do.** Migrate now / opt-in / no action needed.
50
+
51
+ Everything else is depth that supports those three.
52
+
53
+ ## Channel templates
54
+
55
+ ### Changelog entry (terse)
56
+
57
+ ```md
58
+ ## v1.42.0 — 2026-05-26
59
+
60
+ ### Added
61
+ - <feature> — <one-line user benefit>. ([#1234](link))
62
+
63
+ ### Changed
64
+ - <change> — <one-line impact>. ([#1235](link))
65
+
66
+ ### Fixed
67
+ - <bug> — <one-line user-visible symptom>. ([#1236](link))
68
+
69
+ ### Deprecated
70
+ - <thing>. Replaced by <thing>. Removal planned for v<x>.
71
+
72
+ ### Breaking
73
+ - <change>. **Migration:** <one-line> or <link to guide>.
74
+ ```
75
+
76
+ ### Release notes (for adopters)
77
+
78
+ Same as changelog, plus:
79
+
80
+ - Migration guide section with before/after code.
81
+ - Compatibility table (versions, runtimes, OS).
82
+ - Known issues and workarounds.
83
+ - Acknowledgements (contributors, reporters of fixed bugs).
84
+
85
+ ### Dev blog post (300–800 words)
86
+
87
+ - **Hook (1 paragraph):** the problem the release solves, in a real-world scenario.
88
+ - **What's new (3–5 bullets with sub-paragraphs):** features, with one code or screenshot example each.
89
+ - **Upgrade (1 paragraph):** how to upgrade, what to check.
90
+ - **What's next:** one sentence about the next direction. Avoid promises.
91
+
92
+ ### In-app note
93
+
94
+ - 1 sentence.
95
+ - 1 link.
96
+ - Dismiss after seen.
97
+
98
+ ### Social post
99
+
100
+ - 1 sentence pitch.
101
+ - 1 link.
102
+ - 1 image or short clip.
103
+ - No threadbait. If it needs a thread, write a blog post instead.
104
+
105
+ ## Writing rules
106
+
107
+ - Lead with the user, not the team. `You can now export to CSV` beats `We've added CSV export`.
108
+ - Numbers beat adjectives. `60% faster cold start` beats `much faster`. Cite the methodology.
109
+ - Show, don't just tell. One code snippet, one screenshot — more is noise.
110
+ - Date the post. Undated release content rots fastest.
111
+ - Link the migration path explicitly. Do not bury it.
112
+ - Mark breaking changes with `**Breaking:**` prefix. Repeat in the email/social channel.
113
+
114
+ ## Avoid
115
+
116
+ - "We are excited to announce" filler.
117
+ - Lists of changes that mix user-visible and internal items.
118
+ - Marketing claims without a way to verify.
119
+ - Promised dates for unshipped work.
120
+ - Pre-announcing something the team has not yet committed to ship.
121
+
122
+ ## Post-publish checklist
123
+
124
+ - Changelog is in source control alongside the release.
125
+ - Blog post date matches actual ship date.
126
+ - All links work (release tag, PRs, docs sections).
127
+ - Breaking changes are also in the upgrade guide, not only the post.
128
+ - Internal team is notified before the public post goes live, not after.