mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-23 00:53:38 +02:00
## Thinking Path > - Paperclip is the open source app people use to manage AI agents for work. > - Paperclip gives operators a summary for each workspace. > - An execution workspace detail page used the parent project-workspace summary slot. > - Two execution workspaces under one project workspace could therefore show the same summary. > - This pull request gives each execution workspace its own summary scope. > - It also limits the summary snapshot and generated issue to that execution workspace. > - The benefit is that a new or parallel execution workspace cannot inherit unrelated status. ## Linked Issues or Issue Description **What happened?** An execution workspace detail page read and refreshed the summary slot for its parent project workspace. Parallel execution workspaces could show the same status and include issues from each other. **Expected behavior** Each execution workspace must have one isolated summary slot. Its generated snapshot must include only issues assigned to that execution workspace. **Steps to reproduce** 1. Create two execution workspaces under one project workspace. 2. Add different issues to each execution workspace. 3. Generate the summary in the first execution workspace. 4. Open the second execution workspace. 5. Observe that the old implementation could reuse the first summary. **Paperclip version or commit** The problem exists on `master` before this pull request. **Deployment mode** The issue affects both local trusted and authenticated deployments. ## What Changed - Added `execution_workspace` to the shared summary-slot scope contract. - Validated execution-workspace ownership and stored generated summary issues on the correct execution workspace. - Limited execution-workspace snapshots to issues with the matching execution workspace ID. - Updated the execution workspace page to use its own summary slot. - Updated Summarizer instructions, routine options, catalog metadata, documentation, and regression tests. ## Verification - `NODE_ENV=test pnpm exec vitest run packages/shared/src/summary-slot.test.ts server/src/__tests__/summary-slots.test.ts ui/src/pages/ExecutionWorkspaceDetail.test.tsx` — 30 focused tests passed; the embedded-Postgres server tests were run outside the process-restricted sandbox. - `pnpm check:token-gates` — passed. - `pnpm --filter @paperclipai/skills-catalog validate` — passed with 17 catalog skills. - [Latest-head GitHub Actions](https://github.com/paperclipai/paperclip/actions/runs/31491475405) — all 22 jobs passed on `beea14cbaf`, including typecheck, build, server/workspace tests, serialized suites, e2e, canary, and aggregate verification. One unrelated adapter cleanup test initially hit an `ENOTEMPTY` temp-directory race; its single permitted rerun passed. - Greptile — 5/5 confidence on `beea14cbaf`, 12 files reviewed, zero comments added, and zero unresolved threads. ## Risks - Low risk. The new scope is additive. - Existing project and project-workspace summary slots keep their current keys and behavior. - A summary generated for an execution workspace now excludes sibling workspace issues by design. > For core feature work, check [`ROADMAP.md`](ROADMAP.md) first and discuss it in `#dev` before opening the PR. Feature PRs that overlap with planned core work may need to be redirected — check the roadmap first. See `CONTRIBUTING.md`. ## Model Used - OpenAI Codex with GPT-5. The deployment does not expose a more specific model ID or context-window value. It used agentic reasoning, repository tools, code execution, and GitHub tooling. ## Checklist - [x] I have included a thinking path that traces from project context to this change - [x] I have specified the model used (with version and capability details) - [x] I have checked ROADMAP.md and confirmed this PR does not duplicate planned core work - [x] I have searched GitHub for duplicate or related PRs and linked them above - [x] I have either (a) linked existing issues with `Fixes: #` / `Closes #` / `Refs #` OR (b) described the issue in-PR following the relevant issue template - [x] I have not referenced internal/instance-local Paperclip issues or links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip` URLs) - [x] My branch name describes the change (e.g. `docs/...`, `fix/...`) and contains no internal Paperclip ticket id or instance-derived details - [x] I have run tests locally and they pass - [x] I have added or updated tests where applicable - [x] I have updated relevant documentation to reflect my changes - [x] I have considered and documented any risks above - [x] All Paperclip CI gates are green - [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups - [x] I will address all Greptile and reviewer comments before requesting merge Co-authored-by: Paperclip <noreply@paperclip.ing>
1166 lines
40 KiB
JSON
1166 lines
40 KiB
JSON
{
|
||
"schemaVersion": 1,
|
||
"packageName": "@paperclipai/skills-catalog",
|
||
"packageVersion": "0.3.1",
|
||
"generatedAt": "2026-08-07T20:30:29.973Z",
|
||
"skills": [
|
||
{
|
||
"id": "paperclipai:bundled:docs:doc-maintenance",
|
||
"key": "paperclipai/bundled/docs/doc-maintenance",
|
||
"kind": "bundled",
|
||
"category": "docs",
|
||
"slug": "doc-maintenance",
|
||
"name": "doc-maintenance",
|
||
"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.",
|
||
"path": "catalog/bundled/docs/doc-maintenance",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"engineer",
|
||
"product",
|
||
"devrel"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"docs",
|
||
"documentation",
|
||
"release-notes"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 4478,
|
||
"sha256": "fb0353386c5e5e5e13bcbb3233f044e3dccecf371f429d6328f26c26d7cb6169"
|
||
}
|
||
],
|
||
"contentHash": "sha256:2e02299210fd17c1fe1867b4ee8c144a11b6fe1fe481f83b8268cfbaaf10f9aa"
|
||
},
|
||
{
|
||
"id": "paperclipai:bundled:paperclip-operations:issue-triage",
|
||
"key": "paperclipai/bundled/paperclip-operations/issue-triage",
|
||
"kind": "bundled",
|
||
"category": "paperclip-operations",
|
||
"slug": "issue-triage",
|
||
"name": "issue-triage",
|
||
"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).",
|
||
"path": "catalog/bundled/paperclip-operations/issue-triage",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"manager",
|
||
"ceo",
|
||
"engineer"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"paperclip",
|
||
"triage",
|
||
"inbox",
|
||
"workflow"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 4042,
|
||
"sha256": "df5bdc8bf5e017b7ba5f70a4b5323fad51d0c323278f386580f26cf43ad09160"
|
||
}
|
||
],
|
||
"contentHash": "sha256:88dc13560371fb364963782cb4f6eeb4090fcde92ee3774479428ed6b90e11c1"
|
||
},
|
||
{
|
||
"id": "paperclipai:bundled:paperclip-operations:reflection-coach",
|
||
"key": "paperclipai/bundled/paperclip-operations/reflection-coach",
|
||
"kind": "bundled",
|
||
"category": "paperclip-operations",
|
||
"slug": "reflection-coach",
|
||
"name": "reflection-coach",
|
||
"description": "Reflect on another agent's recent execution record and propose the smallest durable instruction, skill, or tool-description change. Use for evidence-backed coaching proposals, never hot-swaps.",
|
||
"path": "catalog/bundled/paperclip-operations/reflection-coach",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"manager",
|
||
"general"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"paperclip",
|
||
"reflection",
|
||
"coaching",
|
||
"agents",
|
||
"skills"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 12028,
|
||
"sha256": "083d5fa8dc43c3ce7747e89c1afb6f6f42d0603a31808bffc5f8e56735f2d865"
|
||
}
|
||
],
|
||
"contentHash": "sha256:f2592d81f616628a3eba92636616424f2eed82ec22bb504240a58f6be115e407"
|
||
},
|
||
{
|
||
"id": "paperclipai:bundled:paperclip-operations:status-card-query",
|
||
"key": "paperclipai/bundled/paperclip-operations/status-card-query",
|
||
"kind": "bundled",
|
||
"category": "paperclip-operations",
|
||
"slug": "status-card-query",
|
||
"name": "status-card-query",
|
||
"description": "Create and maintain agent-authored Paperclip status cards, or compile a prose interest prompt into bounded CompanySearchQuery objects and write the first summary from the assigned Summarizer run.",
|
||
"path": "catalog/bundled/paperclip-operations/status-card-query",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"general",
|
||
"manager"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"paperclip",
|
||
"status",
|
||
"search",
|
||
"reporting",
|
||
"operations"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 6368,
|
||
"sha256": "0c6140f51d503cbadc98723ce54c0def48e7e31ea159b0935b8ad6369291498a"
|
||
}
|
||
],
|
||
"contentHash": "sha256:2b6e53bf8491f027afdbd6961ad84f677cfd385a0a6a73616ea84111ca8886ed"
|
||
},
|
||
{
|
||
"id": "paperclipai:bundled:paperclip-operations:summarize-status",
|
||
"key": "paperclipai/bundled/paperclip-operations/summarize-status",
|
||
"kind": "bundled",
|
||
"category": "paperclip-operations",
|
||
"slug": "summarize-status",
|
||
"name": "summarize-status",
|
||
"description": "Write a short, colloquial summary for a Paperclip summary slot: open with the 1–3 specific, concrete actions the reader needs to take right now to unblock the work, then a brief plain-language status, streaming progress as it works.",
|
||
"path": "catalog/bundled/paperclip-operations/summarize-status",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"general",
|
||
"manager"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"paperclip",
|
||
"summary",
|
||
"status",
|
||
"reporting",
|
||
"operations"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 8877,
|
||
"sha256": "4cb3d177f5d16e3cc2052d2f80e7fb245ab95e79c1e947abdc84cd4ee3d8c61e"
|
||
}
|
||
],
|
||
"contentHash": "sha256:3e49ee2b8d83d1371fb0f59197bb96c46b64f722540405f46d4a5a756fbe1b89"
|
||
},
|
||
{
|
||
"id": "paperclipai:bundled:paperclip-operations:task-planning",
|
||
"key": "paperclipai/bundled/paperclip-operations/task-planning",
|
||
"kind": "bundled",
|
||
"category": "paperclip-operations",
|
||
"slug": "task-planning",
|
||
"name": "task-planning",
|
||
"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.",
|
||
"path": "catalog/bundled/paperclip-operations/task-planning",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"manager",
|
||
"engineer",
|
||
"product"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"paperclip",
|
||
"planning",
|
||
"issues",
|
||
"delegation"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 4938,
|
||
"sha256": "9c52a44a30ec8d306119da51bf298e9e3e6c382a9a9559ffd3054bf5e0c75f36"
|
||
}
|
||
],
|
||
"contentHash": "sha256:487c3116eead89fef4f71c984329c41836bd69951b7ef9ed8736c69435e02438"
|
||
},
|
||
{
|
||
"id": "paperclipai:bundled:product:paperclip-capsules",
|
||
"key": "paperclipai/bundled/product/paperclip-capsules",
|
||
"kind": "bundled",
|
||
"category": "product",
|
||
"slug": "paperclip-capsules",
|
||
"name": "paperclip-capsules",
|
||
"description": "Generate, implement, or review Paperclip capsule visuals. Use for capsule art, agent capsules, heartbeat status capsules, identicons, capsule banks, or brand-usage validation.",
|
||
"path": "catalog/bundled/product/paperclip-capsules",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"designer",
|
||
"product",
|
||
"engineer",
|
||
"marketing"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"paperclip",
|
||
"brand",
|
||
"capsules",
|
||
"agents",
|
||
"visual-design",
|
||
"hyperframes"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 5831,
|
||
"sha256": "dd659ccb46e105336eb00fbe689b1d5531347fc69493c3156390d40ee413c93e"
|
||
},
|
||
{
|
||
"path": "references/generator-workflows.md",
|
||
"kind": "reference",
|
||
"sizeBytes": 4356,
|
||
"sha256": "b5f72e5b6683e8f93f2d852e84c2cc19e6ab438b250bf777dfb2480dd4f6e1b6"
|
||
},
|
||
{
|
||
"path": "references/hero-capsule-bank.md",
|
||
"kind": "reference",
|
||
"sizeBytes": 5981,
|
||
"sha256": "ec3d34113aa7bb527560d1eb4d8ab7667c73e18284c85a2019122743a767525a"
|
||
},
|
||
{
|
||
"path": "references/identicon-prototyper.md",
|
||
"kind": "reference",
|
||
"sizeBytes": 6669,
|
||
"sha256": "0b19419efa1396a402097decabe24ea9ae649678569449c8ce855e0678df6bfe"
|
||
},
|
||
{
|
||
"path": "references/individual-status-capsules.md",
|
||
"kind": "reference",
|
||
"sizeBytes": 5031,
|
||
"sha256": "be1f2eccf96b4d2deefe45b3bc1dd0a3597278472c2ffedadc43c57161e9103d"
|
||
}
|
||
],
|
||
"contentHash": "sha256:a2b26cf6895affeeb70c85567a061094450a59bd3c4fdcf28ee65858599ac12c"
|
||
},
|
||
{
|
||
"id": "paperclipai:bundled:product:wireframe",
|
||
"key": "paperclipai/bundled/product/wireframe",
|
||
"kind": "bundled",
|
||
"category": "product",
|
||
"slug": "wireframe",
|
||
"name": "wireframe",
|
||
"description": "Produce low-fidelity black-and-white UI wireframes as SVGs or viewer pages. Use when asked to wireframe, sketch a screen, draft a layout, make a low-fi mockup, or publish wireframes.",
|
||
"path": "catalog/bundled/product/wireframe",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "assets",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"designer",
|
||
"product",
|
||
"engineer"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"design",
|
||
"wireframe",
|
||
"ux",
|
||
"prototyping",
|
||
"svg"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 11509,
|
||
"sha256": "6992047cc97b67211cc8c1183718ab9aa26b8afc34c70d54d20558c215daaf48"
|
||
},
|
||
{
|
||
"path": "assets/site-template.html",
|
||
"kind": "asset",
|
||
"sizeBytes": 14791,
|
||
"sha256": "8886ad77c386c17b0457f11624aab136c33db7f28dcd6f10fc18e9d833d0950f"
|
||
},
|
||
{
|
||
"path": "assets/template-mobile.svg",
|
||
"kind": "asset",
|
||
"sizeBytes": 925,
|
||
"sha256": "dc32af257df1f986b87a7b30a6104de825057dc4d6f12b381f5a28308f0002f0"
|
||
},
|
||
{
|
||
"path": "assets/template.svg",
|
||
"kind": "asset",
|
||
"sizeBytes": 1262,
|
||
"sha256": "63f8adb8eb4b21dea6fd442b9e9312704c419535eb577d4ef0bfb54410fd576b"
|
||
},
|
||
{
|
||
"path": "references/components.md",
|
||
"kind": "reference",
|
||
"sizeBytes": 14806,
|
||
"sha256": "4ce18f418d78b13cdfa6fe8070173044a631576cd2b999571e6703f58894496c"
|
||
},
|
||
{
|
||
"path": "references/examples.md",
|
||
"kind": "reference",
|
||
"sizeBytes": 16108,
|
||
"sha256": "18f486e95a578a50cf6c9f93394b82534392771320692e4876edf17054bfae55"
|
||
},
|
||
{
|
||
"path": "references/grid-system.md",
|
||
"kind": "reference",
|
||
"sizeBytes": 4581,
|
||
"sha256": "017260d2216859d57e5fa869e0efc6b88c7ed4d8a8a4f5af04fe89a3ef2445bd"
|
||
}
|
||
],
|
||
"contentHash": "sha256:7106d84fc9db2053090f692706e41cfc586e7dd85a44f568e3319c4eefbdde46"
|
||
},
|
||
{
|
||
"id": "paperclipai:bundled:quality:qa-acceptance",
|
||
"key": "paperclipai/bundled/quality/qa-acceptance",
|
||
"kind": "bundled",
|
||
"category": "quality",
|
||
"slug": "qa-acceptance",
|
||
"name": "qa-acceptance",
|
||
"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.",
|
||
"path": "catalog/bundled/quality/qa-acceptance",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"qa",
|
||
"engineer",
|
||
"product"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"qa",
|
||
"acceptance",
|
||
"validation",
|
||
"testing"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 3861,
|
||
"sha256": "c631b437ab26d104af6cdb963d8f679a9341439041b3cb3ec8835f4ff551b378"
|
||
}
|
||
],
|
||
"contentHash": "sha256:32372dacaf62e93454b9855968c4eec96456ba78b509f450b3dfaa48e31ef356"
|
||
},
|
||
{
|
||
"id": "paperclipai:bundled:software-development:github-pr-workflow",
|
||
"key": "paperclipai/bundled/software-development/github-pr-workflow",
|
||
"kind": "bundled",
|
||
"category": "software-development",
|
||
"slug": "github-pr-workflow",
|
||
"name": "github-pr-workflow",
|
||
"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.",
|
||
"path": "catalog/bundled/software-development/github-pr-workflow",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"engineer"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"github",
|
||
"pull-requests",
|
||
"code-review",
|
||
"release"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 3970,
|
||
"sha256": "f498ec4ebb1779dea37adeb1db8a8b22316282798e35ee02e2fc5ff627d7e261"
|
||
}
|
||
],
|
||
"contentHash": "sha256:90f278c89aa0711be150c1cd2456ca25620d02f36995b113ca9837d756a37f6c"
|
||
},
|
||
{
|
||
"id": "paperclipai:optional:browser:agent-browser",
|
||
"key": "paperclipai/optional/browser/agent-browser",
|
||
"kind": "optional",
|
||
"category": "browser",
|
||
"slug": "agent-browser",
|
||
"name": "agent-browser",
|
||
"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.",
|
||
"path": "catalog/optional/browser/agent-browser",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"qa",
|
||
"engineer",
|
||
"researcher"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"browser",
|
||
"puppeteer",
|
||
"playwright",
|
||
"verification"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 5133,
|
||
"sha256": "362f7b9d02297782bc6f0c093f495b8a0304a75bcf4b42e5c280a42b1f757b7d"
|
||
}
|
||
],
|
||
"contentHash": "sha256:eabb2c9f7b5e1a27ebb1e05a711d61433a266478154cd671a685e99e67aadea2"
|
||
},
|
||
{
|
||
"id": "paperclipai:optional:content:release-announcement",
|
||
"key": "paperclipai/optional/content/release-announcement",
|
||
"kind": "optional",
|
||
"category": "content",
|
||
"slug": "release-announcement",
|
||
"name": "release-announcement",
|
||
"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.",
|
||
"path": "catalog/optional/content/release-announcement",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"devrel",
|
||
"product",
|
||
"writer"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"release",
|
||
"changelog",
|
||
"announcement",
|
||
"communication"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 6945,
|
||
"sha256": "d745cca96350518fabae14f5c407d779e1df2c5d091b5b4a5c55bb888b569e5f"
|
||
}
|
||
],
|
||
"contentHash": "sha256:efe8ea89b552df95222609867c9c75f1b40e16f457d34e7e4a124f54daa33efa"
|
||
},
|
||
{
|
||
"id": "paperclipai:optional:content:simplified-english",
|
||
"key": "paperclipai/optional/content/simplified-english",
|
||
"kind": "optional",
|
||
"category": "content",
|
||
"slug": "simplified-english",
|
||
"name": "simplified-english",
|
||
"description": "Write user-facing comments, plans, and documents in ASD-STE100 Simplified Technical English — short, unambiguous sentences with approved words and one meaning each — so readers understand them the first time.",
|
||
"path": "catalog/optional/content/simplified-english",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"engineer",
|
||
"product",
|
||
"writer",
|
||
"devrel"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"writing",
|
||
"communication",
|
||
"clarity",
|
||
"style"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 1578,
|
||
"sha256": "a0f7385599873910e2fabf400346016a07dacbc7ece27c0e3616ae8fd94ebfbb"
|
||
}
|
||
],
|
||
"contentHash": "sha256:642321f40d51e0125df05c6fbace49aeb07ec30392058756909c259c9c5eac6a"
|
||
},
|
||
{
|
||
"id": "paperclipai:optional:finance:ramp",
|
||
"key": "paperclipai/optional/finance/ramp",
|
||
"kind": "optional",
|
||
"category": "finance",
|
||
"slug": "ramp",
|
||
"name": "ramp",
|
||
"description": "Fetch and follow Ramp's published agent playbooks inside Paperclip, with mandatory approval gates for spend, incorporation, cards, account setup, and other financial actions.",
|
||
"path": "catalog/optional/finance/ramp",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"finance",
|
||
"operations",
|
||
"founder",
|
||
"engineer"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"ramp",
|
||
"finance",
|
||
"spend",
|
||
"approvals",
|
||
"agent-cards"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 7016,
|
||
"sha256": "698cd69ebf2f2481ed83c8e9477b56ae78288cc4c751d7d35f649ff2483802a3"
|
||
}
|
||
],
|
||
"contentHash": "sha256:276d85e98a4732f278204e26438aa95fde158dd2d15c1e427c4c7c7d492e769d"
|
||
},
|
||
{
|
||
"id": "paperclipai:optional:product:design-critique",
|
||
"key": "paperclipai/optional/product/design-critique",
|
||
"kind": "optional",
|
||
"category": "product",
|
||
"slug": "design-critique",
|
||
"name": "design-critique",
|
||
"description": "Give a structured product design critique — user job clarity, hierarchy, affordance, error states, accessibility, and consistency — focused on what to change, in what order, and why.",
|
||
"path": "catalog/optional/product/design-critique",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"designer",
|
||
"product",
|
||
"engineer"
|
||
],
|
||
"requires": [],
|
||
"tags": [
|
||
"design",
|
||
"product",
|
||
"ux",
|
||
"review"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 4851,
|
||
"sha256": "022e619baf6cc25725946279cb8052d22af090dd6cd6dc8c20f17867f71a5d8e"
|
||
}
|
||
],
|
||
"contentHash": "sha256:429f94df398a0697042b5bbe4755b1ff1a230aa5f41d99118ad37493ac65d21c"
|
||
},
|
||
{
|
||
"id": "paperclipai:optional:research:last30days",
|
||
"key": "paperclipai/optional/research/last30days",
|
||
"kind": "optional",
|
||
"category": "research",
|
||
"slug": "last30days",
|
||
"name": "last30days",
|
||
"description": "Research what people actually say about any topic in the last 30 days. Pulls posts and engagement from Reddit, X, YouTube, TikTok, Hacker News, Polymarket, GitHub, and the web.",
|
||
"path": "catalog/optional/research/last30days",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "scripts_executables",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"researcher",
|
||
"marketer",
|
||
"product-manager",
|
||
"analyst"
|
||
],
|
||
"requires": [
|
||
"node",
|
||
"python3"
|
||
],
|
||
"tags": [
|
||
"research",
|
||
"last-30-days",
|
||
"social-media",
|
||
"trends",
|
||
"citations",
|
||
"reddit",
|
||
"x",
|
||
"youtube"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 130813,
|
||
"sha256": "534f0347f304ec51254a7d3a210e07c86cc252175cc6a588e97d32ce94f0f745"
|
||
},
|
||
{
|
||
"path": "agents/openai.yaml",
|
||
"kind": "other",
|
||
"sizeBytes": 448,
|
||
"sha256": "f46e7f09d3118dee7324ac165391ccb7ffe55323d1d75304e34062017913939c"
|
||
},
|
||
{
|
||
"path": "references/save-html-brief.md",
|
||
"kind": "reference",
|
||
"sizeBytes": 5940,
|
||
"sha256": "ca15e03bf63a3af1cfa0347df36b0aee999c6c6c631f31b4171a5df09e765d43"
|
||
},
|
||
{
|
||
"path": "scripts/briefing.py",
|
||
"kind": "script",
|
||
"sizeBytes": 8342,
|
||
"sha256": "d4881d16493f5504c5a947f31ced861d674e2423e5fc668305beaf5e849420b7"
|
||
},
|
||
{
|
||
"path": "scripts/compare.sh",
|
||
"kind": "script",
|
||
"sizeBytes": 2291,
|
||
"sha256": "cdb2538522a60c803aeebc3336673c8702380a902604ad85770206382996a6f5"
|
||
},
|
||
{
|
||
"path": "scripts/last30days.py",
|
||
"kind": "script",
|
||
"sizeBytes": 44282,
|
||
"sha256": "818d6b839eb04417a5d0acf3bee24258fbc70543df968619fd3573597dc88e8e"
|
||
},
|
||
{
|
||
"path": "scripts/lib/__init__.py",
|
||
"kind": "script",
|
||
"sizeBytes": 29,
|
||
"sha256": "3fb925405f898201188f9b5eea04e214ea8c8a64643397fd727f08ffeea234d9"
|
||
},
|
||
{
|
||
"path": "scripts/lib/bird_x.py",
|
||
"kind": "script",
|
||
"sizeBytes": 17960,
|
||
"sha256": "c7cbd33a5b4c317b07eeca7c7e3c1aa57369487cd4cd3602abbe9b6acb019e6a"
|
||
},
|
||
{
|
||
"path": "scripts/lib/bluesky.py",
|
||
"kind": "script",
|
||
"sizeBytes": 12343,
|
||
"sha256": "af7bbaa68f6944a50089447992b95881e15c085de829426360f50740a35cba89"
|
||
},
|
||
{
|
||
"path": "scripts/lib/categories.py",
|
||
"kind": "script",
|
||
"sizeBytes": 7635,
|
||
"sha256": "e4ab8435e09c371f2475751fdc1c58150799b3746afcc7e38d5dad30adb210d5"
|
||
},
|
||
{
|
||
"path": "scripts/lib/chrome_cookies.py",
|
||
"kind": "script",
|
||
"sizeBytes": 10911,
|
||
"sha256": "eeb8f99b92cfc9aa65b20b6dbedfcfd321166f3fa771a95299ffb0b950b1cedc"
|
||
},
|
||
{
|
||
"path": "scripts/lib/cluster.py",
|
||
"kind": "script",
|
||
"sizeBytes": 11018,
|
||
"sha256": "fa9fb8905552e7bb5a2a2854f8b3c620a464054238a008d74ba89d0c247a776e"
|
||
},
|
||
{
|
||
"path": "scripts/lib/competitors.py",
|
||
"kind": "script",
|
||
"sizeBytes": 7332,
|
||
"sha256": "a76c5d679b7f3c93a07e389811f79526f11e1e03411cecd4d9569e3aca32a77d"
|
||
},
|
||
{
|
||
"path": "scripts/lib/cookie_extract.py",
|
||
"kind": "script",
|
||
"sizeBytes": 14450,
|
||
"sha256": "9d34ea3a8565eae8b67f72e8b625c22a29d41274c3b8d6c8b6aa171c18ebad5b"
|
||
},
|
||
{
|
||
"path": "scripts/lib/dates.py",
|
||
"kind": "script",
|
||
"sizeBytes": 3201,
|
||
"sha256": "ae4ec6455021c82ef3321ef5dde6f7ba41e6b91a3e6ff601174ac9aa20e5c8f9"
|
||
},
|
||
{
|
||
"path": "scripts/lib/dedupe.py",
|
||
"kind": "script",
|
||
"sizeBytes": 3315,
|
||
"sha256": "b9acabf496e0743189fbeed43d447280fee17e10a40931f9083d2a1f2894d863"
|
||
},
|
||
{
|
||
"path": "scripts/lib/digg.py",
|
||
"kind": "script",
|
||
"sizeBytes": 13305,
|
||
"sha256": "95a2845d4751efb5738d2a69c7246f8269447395a7da324e0d6ae0feefd7c9d8"
|
||
},
|
||
{
|
||
"path": "scripts/lib/entity_extract.py",
|
||
"kind": "script",
|
||
"sizeBytes": 4211,
|
||
"sha256": "b04103103981915557fd410305f3a8031d5e71d687491ca89976be25d9bc84a4"
|
||
},
|
||
{
|
||
"path": "scripts/lib/env.py",
|
||
"kind": "script",
|
||
"sizeBytes": 25940,
|
||
"sha256": "9ca2e2341565a6c933d51800a510d07b84707825d19234d991eb472454b46933"
|
||
},
|
||
{
|
||
"path": "scripts/lib/fanout.py",
|
||
"kind": "script",
|
||
"sizeBytes": 3155,
|
||
"sha256": "43f21244f9bd1bf143d2f4c478cc2fcc9ffc4e403539e8c08e86e106ed5f0b83"
|
||
},
|
||
{
|
||
"path": "scripts/lib/fusion.py",
|
||
"kind": "script",
|
||
"sizeBytes": 8553,
|
||
"sha256": "c764709a7d4576121c193ae75ded057dd177b6bea512ca57dd72680d74030b41"
|
||
},
|
||
{
|
||
"path": "scripts/lib/github.py",
|
||
"kind": "script",
|
||
"sizeBytes": 34879,
|
||
"sha256": "0f8eb97c20463b975b3bb752d0e3afec98ef853430e495f21fc06f01c27d2baf"
|
||
},
|
||
{
|
||
"path": "scripts/lib/grounding.py",
|
||
"kind": "script",
|
||
"sizeBytes": 11723,
|
||
"sha256": "440386c32afb3c01678fe5dfab197449a9a910018a40cbbc1e9e10ecb9d4843a"
|
||
},
|
||
{
|
||
"path": "scripts/lib/hackernews.py",
|
||
"kind": "script",
|
||
"sizeBytes": 11619,
|
||
"sha256": "95db30a3bf441ee73fb49a04fa8974440e381e56c7d70e87b48e3b69ae0cdfa5"
|
||
},
|
||
{
|
||
"path": "scripts/lib/html_render.py",
|
||
"kind": "script",
|
||
"sizeBytes": 17791,
|
||
"sha256": "5070f6a58d6fcae44a20ecd9108fd204b042bea1d47f8a67efce6d3831aa87ad"
|
||
},
|
||
{
|
||
"path": "scripts/lib/http.py",
|
||
"kind": "script",
|
||
"sizeBytes": 10191,
|
||
"sha256": "760308aa8b8e3abbaa3273a4ca4df5b0bc8cc71ba8864b5740aaac545972731e"
|
||
},
|
||
{
|
||
"path": "scripts/lib/instagram.py",
|
||
"kind": "script",
|
||
"sizeBytes": 18874,
|
||
"sha256": "cda8c8558e6cdc9b4bf3f7bb470c2e223db927acc6a77f139a83ec7987488bb1"
|
||
},
|
||
{
|
||
"path": "scripts/lib/log.py",
|
||
"kind": "script",
|
||
"sizeBytes": 831,
|
||
"sha256": "11c4d61cdb5b1ff91919dcd28ec62ce88e555def30eed62a8071973b5ffe8317"
|
||
},
|
||
{
|
||
"path": "scripts/lib/normalize.py",
|
||
"kind": "script",
|
||
"sizeBytes": 19870,
|
||
"sha256": "e79e294e4ff8ebfa34f7561c63e0846af0380b8be299d484cc8a2f490e82b474"
|
||
},
|
||
{
|
||
"path": "scripts/lib/perplexity.py",
|
||
"kind": "script",
|
||
"sizeBytes": 4789,
|
||
"sha256": "70859e7296035936ae0da441119edfe381158d5d0de06afee87a3504007f91c7"
|
||
},
|
||
{
|
||
"path": "scripts/lib/pinterest.py",
|
||
"kind": "script",
|
||
"sizeBytes": 5366,
|
||
"sha256": "a6ac5085c900072b84930fafab8c81c9e5a792a718c21801d3fa0bd293d279f6"
|
||
},
|
||
{
|
||
"path": "scripts/lib/pipeline.py",
|
||
"kind": "script",
|
||
"sizeBytes": 45491,
|
||
"sha256": "9641f56faff2d685b0c5c483b2113721d151174a2eef265afe644e131c554454"
|
||
},
|
||
{
|
||
"path": "scripts/lib/planner.py",
|
||
"kind": "script",
|
||
"sizeBytes": 30490,
|
||
"sha256": "c0953abea402454a88c2573aa0c97bb6bba4c87e529d9f157a881e15c4123154"
|
||
},
|
||
{
|
||
"path": "scripts/lib/polymarket.py",
|
||
"kind": "script",
|
||
"sizeBytes": 30318,
|
||
"sha256": "cbd54a66988b4ebc4aebf2db6c637d4e516065518c333cd0495332458c2d9080"
|
||
},
|
||
{
|
||
"path": "scripts/lib/preflight.py",
|
||
"kind": "script",
|
||
"sizeBytes": 4541,
|
||
"sha256": "0fafa53bc63a44ad4525d99d6bb37080b0693e2d45265ce36af09b4a0e9b2c9b"
|
||
},
|
||
{
|
||
"path": "scripts/lib/providers.py",
|
||
"kind": "script",
|
||
"sizeBytes": 15817,
|
||
"sha256": "7460004a2e8df0f8c94d764c0eb01f8d782bb160ce2e157105fadd0dd2953a5d"
|
||
},
|
||
{
|
||
"path": "scripts/lib/quality_nudge.py",
|
||
"kind": "script",
|
||
"sizeBytes": 13438,
|
||
"sha256": "69b6d58abea8171c895f105ee62b2db6f7ea35cebbe08d7e6e8884d810891fef"
|
||
},
|
||
{
|
||
"path": "scripts/lib/query.py",
|
||
"kind": "script",
|
||
"sizeBytes": 4018,
|
||
"sha256": "6bc2e0649034cdb28471346a66e2448ba58762cb7774c4fce45c055ab160912a"
|
||
},
|
||
{
|
||
"path": "scripts/lib/reddit_enrich.py",
|
||
"kind": "script",
|
||
"sizeBytes": 9535,
|
||
"sha256": "652a9c5abecf22f3c26ff6d6b732a43703113a559ce31acab7af012eb25d4e7a"
|
||
},
|
||
{
|
||
"path": "scripts/lib/reddit_public.py",
|
||
"kind": "script",
|
||
"sizeBytes": 13066,
|
||
"sha256": "ea25034726aa895c123216e356c03856a8116efedd29620bb2ebc0d01ff4c420"
|
||
},
|
||
{
|
||
"path": "scripts/lib/reddit.py",
|
||
"kind": "script",
|
||
"sizeBytes": 24701,
|
||
"sha256": "dba1019f67f677c869f14a1f892b1562dd10b6f96bffc75ffad37eb4d3bc9877"
|
||
},
|
||
{
|
||
"path": "scripts/lib/relevance.py",
|
||
"kind": "script",
|
||
"sizeBytes": 5941,
|
||
"sha256": "b9f776f9f8e5d4fbf1fcc86f6604bc0c391c988153d3264b8dc431ff34783382"
|
||
},
|
||
{
|
||
"path": "scripts/lib/render.py",
|
||
"kind": "script",
|
||
"sizeBytes": 71577,
|
||
"sha256": "189ffa786428515a3b02f680e71069b7907eaa24c7aadd315e9abaecb0a6a9fc"
|
||
},
|
||
{
|
||
"path": "scripts/lib/rerank.py",
|
||
"kind": "script",
|
||
"sizeBytes": 17106,
|
||
"sha256": "419c52fc08144c41e08f7574093c5b6cd21271900b51680b6393e61441ffea3c"
|
||
},
|
||
{
|
||
"path": "scripts/lib/resolve.py",
|
||
"kind": "script",
|
||
"sizeBytes": 12448,
|
||
"sha256": "b23f3dd54d6ede0986219aacdda81ece72f1a0a629d72a9ec56b24bc645ccb7c"
|
||
},
|
||
{
|
||
"path": "scripts/lib/safari_cookies.py",
|
||
"kind": "script",
|
||
"sizeBytes": 5698,
|
||
"sha256": "4d66c27cbf5725cc7cb815ca42191e70261c52196c2823bab9c6050ca32ccf71"
|
||
},
|
||
{
|
||
"path": "scripts/lib/schema.py",
|
||
"kind": "script",
|
||
"sizeBytes": 11206,
|
||
"sha256": "8d815d3daee8d469e504bb1264fc174af4abc179dd7d1fa87d7313ed01d914c6"
|
||
},
|
||
{
|
||
"path": "scripts/lib/setup_wizard.py",
|
||
"kind": "script",
|
||
"sizeBytes": 18688,
|
||
"sha256": "be0f867e96d15f7458faac2194c444dc0ec9ec4f3c9fe4d74459e083b80c1a73"
|
||
},
|
||
{
|
||
"path": "scripts/lib/signals.py",
|
||
"kind": "script",
|
||
"sizeBytes": 9715,
|
||
"sha256": "4071cf5fa4c99b0ee51d949ca69ec4594d7e1986ec6a8019b55bb877e219d49a"
|
||
},
|
||
{
|
||
"path": "scripts/lib/skill_meta.py",
|
||
"kind": "script",
|
||
"sizeBytes": 1207,
|
||
"sha256": "e922e6ecdb19fa3daf9c6673acb13a9b23f97362eac1cb11211c998dea0fdbd1"
|
||
},
|
||
{
|
||
"path": "scripts/lib/snippet.py",
|
||
"kind": "script",
|
||
"sizeBytes": 1560,
|
||
"sha256": "6bd2143a4264fe11d5be1b805742336ab82397ae0293c13e8b5b3084bfa2612d"
|
||
},
|
||
{
|
||
"path": "scripts/lib/subproc.py",
|
||
"kind": "script",
|
||
"sizeBytes": 2807,
|
||
"sha256": "cf7bf3dcaf79375c5bd014718a8eb5f6565275294eeaa0059fef93d8e4b6452d"
|
||
},
|
||
{
|
||
"path": "scripts/lib/threads.py",
|
||
"kind": "script",
|
||
"sizeBytes": 6728,
|
||
"sha256": "7508629028c3b4a187699797ab0d9e7b179cbae3c53b9fabdaf9d905b1fc2c1d"
|
||
},
|
||
{
|
||
"path": "scripts/lib/tiktok.py",
|
||
"kind": "script",
|
||
"sizeBytes": 20993,
|
||
"sha256": "f0074737c4bbf176118382ad4c0c9e8c8d6f4544bd9fc42d224f7c1da13a8d73"
|
||
},
|
||
{
|
||
"path": "scripts/lib/truthsocial.py",
|
||
"kind": "script",
|
||
"sizeBytes": 5196,
|
||
"sha256": "fd745d0a61b1c69bea813832f3e2c5923b08d476766a378c07f0963b0be2f330"
|
||
},
|
||
{
|
||
"path": "scripts/lib/ui.py",
|
||
"kind": "script",
|
||
"sizeBytes": 25907,
|
||
"sha256": "cdc0ea376fc4ee017449f2aa87a7513add3fa5306f27d4663fb6f7203f12974e"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/bird-search.mjs",
|
||
"kind": "script",
|
||
"sizeBytes": 3998,
|
||
"sha256": "584482e894c38bbde7a915013f741974fa8ea722ac34c56704dccf184f7c3d56"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/cookies.js",
|
||
"kind": "script",
|
||
"sizeBytes": 8153,
|
||
"sha256": "66044440cef3d3b3e3136091b6e224051e8ff97fb1d156f40ccf2d4f3cf203ae"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/features.json",
|
||
"kind": "script",
|
||
"sizeBytes": 523,
|
||
"sha256": "36361f4cae0040255f84709459ebb1f0131566a567269ed7b99d073cad930f66"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/paginate-cursor.js",
|
||
"kind": "script",
|
||
"sizeBytes": 1225,
|
||
"sha256": "5f20227de1d68250ad59b7ad593db4bfb1d0f1a21694963eab3ed413c2d0d5c0"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/query-ids.json",
|
||
"kind": "script",
|
||
"sizeBytes": 815,
|
||
"sha256": "eba47a9d26f87d0b4eb8a4f554833ed8d11b3d8728e363deeae702d09f87fc02"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/runtime-features.js",
|
||
"kind": "script",
|
||
"sizeBytes": 5036,
|
||
"sha256": "f41614d62b6c91dfc85fc4af389e6f49435324bf26460b715a991486609579d8"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/runtime-query-ids.js",
|
||
"kind": "script",
|
||
"sizeBytes": 9424,
|
||
"sha256": "0f5c61dbaad3de7fb44a14c57ed005228e51f9fc361472eff59bff4cb2a1199e"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/twitter-client-base.js",
|
||
"kind": "script",
|
||
"sizeBytes": 4853,
|
||
"sha256": "ea972b7894458e78edd1927d102a052ae45726a7c967b376ac7f5544f5b65499"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/twitter-client-constants.js",
|
||
"kind": "script",
|
||
"sizeBytes": 2535,
|
||
"sha256": "27bd1416ff1f5d4f4516d784a8fb9ee08a87413f07b375752821a32e5b0cd6e3"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/twitter-client-features.js",
|
||
"kind": "script",
|
||
"sizeBytes": 18400,
|
||
"sha256": "4b4f2048069f751a821777cb2084f3b9126d99a958494fef71f0699d8145c4dd"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/twitter-client-search.js",
|
||
"kind": "script",
|
||
"sizeBytes": 7310,
|
||
"sha256": "3dfbe18ea54215d9a6393ff0884d9977dd9ddf0884a06486bdaee8a4e30d4616"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/twitter-client-types.js",
|
||
"kind": "script",
|
||
"sizeBytes": 59,
|
||
"sha256": "6450f74c664db958d703e09288184ef1ca5f622782f9e11a5a9bfa3d3c78c534"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/lib/twitter-client-utils.js",
|
||
"kind": "script",
|
||
"sizeBytes": 19169,
|
||
"sha256": "b230db5583760ccd0b5b5fb1592f449a7d0bc92f6184808e8ffb6f8968df20e9"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/LICENSE",
|
||
"kind": "script",
|
||
"sizeBytes": 1074,
|
||
"sha256": "62316704df7426e5a79d2827ff8aca36e9abb3a73b8e68557030749ebefec667"
|
||
},
|
||
{
|
||
"path": "scripts/lib/vendor/bird-search/package.json",
|
||
"kind": "script",
|
||
"sizeBytes": 331,
|
||
"sha256": "96b65305969a179ee7a7735f1b475599d6035f32fda1fd030ea57ee09380cdb5"
|
||
},
|
||
{
|
||
"path": "scripts/lib/xai_x.py",
|
||
"kind": "script",
|
||
"sizeBytes": 7509,
|
||
"sha256": "6cc244293ed6ea3b0f78a6515b583ff36da96ad30acf1d5457278ab020f1bd47"
|
||
},
|
||
{
|
||
"path": "scripts/lib/xiaohongshu_api.py",
|
||
"kind": "script",
|
||
"sizeBytes": 5321,
|
||
"sha256": "c7a29dfa03f871993dc13a8ad528beed8a648102404b658242ca57878077ef60"
|
||
},
|
||
{
|
||
"path": "scripts/lib/xquik.py",
|
||
"kind": "script",
|
||
"sizeBytes": 6839,
|
||
"sha256": "7c487cb2ba543ff12e38ec6466a2de6ff6762ccd415c1f07093620b49137681a"
|
||
},
|
||
{
|
||
"path": "scripts/lib/xurl_x.py",
|
||
"kind": "script",
|
||
"sizeBytes": 5302,
|
||
"sha256": "8cf6bb235cfc7f39386b282a922487816089fa6ebf4fa49a4d562d95f9686e78"
|
||
},
|
||
{
|
||
"path": "scripts/lib/youtube_yt.py",
|
||
"kind": "script",
|
||
"sizeBytes": 37339,
|
||
"sha256": "787908d06a845ad70654c4939ebabc856311a95b34444f0987ff7ee3db4c0a49"
|
||
},
|
||
{
|
||
"path": "scripts/setup-keychain.sh",
|
||
"kind": "script",
|
||
"sizeBytes": 3229,
|
||
"sha256": "5d2a6b678c905eefe537fbcb98063db3e471c22b7ab4b06d51615d99b14556db"
|
||
},
|
||
{
|
||
"path": "scripts/store.py",
|
||
"kind": "script",
|
||
"sizeBytes": 28534,
|
||
"sha256": "c1e95a00132768e6c38170bee85161a59b5bce3feaa6297a85f1a49d1bfc9fd3"
|
||
},
|
||
{
|
||
"path": "scripts/watchlist.py",
|
||
"kind": "script",
|
||
"sizeBytes": 8929,
|
||
"sha256": "c06378f70f9145f3bd957170dec2549a31463a41b400bbf1ce722911aa2150a1"
|
||
}
|
||
],
|
||
"contentHash": "sha256:9e11e9d2ed3d2062273d131a826cdeedea39bdd269063e2f73ca7f218770c769",
|
||
"source": {
|
||
"type": "github",
|
||
"hostname": "github.com",
|
||
"owner": "mvanhorn",
|
||
"repo": "last30days-skill",
|
||
"ref": "v3.3.0",
|
||
"commit": "daca71f89eb71d0d56d01a43ed7627aa919dba4f",
|
||
"path": "skills/last30days",
|
||
"url": "https://github.com/mvanhorn/last30days-skill/tree/v3.3.0/skills/last30days"
|
||
}
|
||
},
|
||
{
|
||
"id": "paperclipai:optional:software-development:prepare-mcp-integration",
|
||
"key": "paperclipai/optional/software-development/prepare-mcp-integration",
|
||
"kind": "optional",
|
||
"category": "software-development",
|
||
"slug": "prepare-mcp-integration",
|
||
"name": "prepare-mcp-integration",
|
||
"description": "Prepare MCP/vendor integrations through cited research, a content PR, exact-revision human approval, and one governed Paperclip connector PR per approved connection. Use for new integration research and delivery; not for ad hoc connector coding that bypasses the playbooks.",
|
||
"path": "catalog/optional/software-development/prepare-mcp-integration",
|
||
"entrypoint": "SKILL.md",
|
||
"trustLevel": "markdown_only",
|
||
"compatibility": "compatible",
|
||
"defaultInstall": false,
|
||
"recommendedForRoles": [
|
||
"engineer",
|
||
"product-manager",
|
||
"researcher"
|
||
],
|
||
"requires": [
|
||
"git",
|
||
"gh",
|
||
"curl"
|
||
],
|
||
"tags": [
|
||
"mcp",
|
||
"integrations",
|
||
"connectors",
|
||
"research",
|
||
"github",
|
||
"human-approval"
|
||
],
|
||
"files": [
|
||
{
|
||
"path": "SKILL.md",
|
||
"kind": "skill",
|
||
"sizeBytes": 11183,
|
||
"sha256": "452386be3aa5e2988dc9d72f288f469975da766626a25c48017877963c533781"
|
||
},
|
||
{
|
||
"path": "examples/notion-mcp-research-gate.md",
|
||
"kind": "markdown",
|
||
"sizeBytes": 1900,
|
||
"sha256": "944b13ac67c06c65643eb236e856f1479106749861535648d29334f84cf1b50b"
|
||
}
|
||
],
|
||
"contentHash": "sha256:4dbb76624e0fd5502fa10a9168f77214c5020899838af887e77a1617a0a00c31"
|
||
}
|
||
]
|
||
}
|