@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.
- package/catalog/bundled/docs/doc-maintenance/SKILL.md +75 -0
- package/catalog/bundled/paperclip-operations/issue-triage/SKILL.md +74 -0
- package/catalog/bundled/paperclip-operations/task-planning/SKILL.md +84 -0
- package/catalog/bundled/quality/qa-acceptance/SKILL.md +93 -0
- package/catalog/bundled/software-development/github-pr-workflow/SKILL.md +93 -0
- package/catalog/optional/browser/agent-browser/SKILL.md +93 -0
- package/catalog/optional/content/release-announcement/SKILL.md +128 -0
- package/catalog/optional/product/design-critique/SKILL.md +121 -0
- package/dist/generated/catalog.json +285 -0
- package/dist/scripts/build-catalog-manifest.d.ts +2 -0
- package/dist/scripts/build-catalog-manifest.d.ts.map +1 -0
- package/dist/scripts/build-catalog-manifest.js +15 -0
- package/dist/scripts/build-catalog-manifest.js.map +1 -0
- package/dist/scripts/validate-catalog.d.ts +2 -0
- package/dist/scripts/validate-catalog.d.ts.map +1 -0
- package/dist/scripts/validate-catalog.js +15 -0
- package/dist/scripts/validate-catalog.js.map +1 -0
- package/dist/src/catalog-builder.d.ts +16 -0
- package/dist/src/catalog-builder.d.ts.map +1 -0
- package/dist/src/catalog-builder.js +357 -0
- package/dist/src/catalog-builder.js.map +1 -0
- package/dist/src/catalog-builder.test.d.ts +2 -0
- package/dist/src/catalog-builder.test.d.ts.map +1 -0
- package/dist/src/catalog-builder.test.js +124 -0
- package/dist/src/catalog-builder.test.js.map +1 -0
- package/dist/src/frontmatter.d.ts +11 -0
- package/dist/src/frontmatter.d.ts.map +1 -0
- package/dist/src/frontmatter.js +141 -0
- package/dist/src/frontmatter.js.map +1 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +21 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/shipped-catalog.test.d.ts +2 -0
- package/dist/src/shipped-catalog.test.d.ts.map +1 -0
- package/dist/src/shipped-catalog.test.js +83 -0
- package/dist/src/shipped-catalog.test.js.map +1 -0
- package/dist/src/types.d.ts +42 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/generated/catalog.json +285 -0
- package/package.json +49 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-critique
|
|
3
|
+
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.
|
|
4
|
+
key: paperclipai/optional/product/design-critique
|
|
5
|
+
recommendedForRoles:
|
|
6
|
+
- designer
|
|
7
|
+
- product
|
|
8
|
+
- engineer
|
|
9
|
+
tags:
|
|
10
|
+
- design
|
|
11
|
+
- product
|
|
12
|
+
- ux
|
|
13
|
+
- review
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Product Design Critique
|
|
17
|
+
|
|
18
|
+
A structured critique pass for a screen, flow, or component. The output is a prioritized list of changes a designer or engineer can act on — not adjectives. Critique is not redesign; recommend, do not rebuild.
|
|
19
|
+
|
|
20
|
+
## When to use
|
|
21
|
+
|
|
22
|
+
- A designer or engineer asks for feedback on a screen, mock, or live UI.
|
|
23
|
+
- A feature is shipping and someone wants a final UX read.
|
|
24
|
+
- A flow is suspected of causing user drop-off and you want a pre-research read before instrumentation.
|
|
25
|
+
|
|
26
|
+
## When not to use
|
|
27
|
+
|
|
28
|
+
- The user wants a redesign. That is a design project, not a critique.
|
|
29
|
+
- The work is so early that no concrete artifact exists. Sketch with them instead of critiquing air.
|
|
30
|
+
- You have no context on the user job. Ask for it first; design critique without user context devolves into taste.
|
|
31
|
+
|
|
32
|
+
## Pre-critique context
|
|
33
|
+
|
|
34
|
+
Before opening a screen, get:
|
|
35
|
+
|
|
36
|
+
- **Who is the user.** Specific role and competence, not "users".
|
|
37
|
+
- **What job they are doing on this screen.** One sentence.
|
|
38
|
+
- **What success looks like.** What the user can do after this screen that they could not before.
|
|
39
|
+
- **Where this screen sits in the larger flow.** What precedes and follows.
|
|
40
|
+
|
|
41
|
+
If any of these is missing, ask. Critique without these is opinion.
|
|
42
|
+
|
|
43
|
+
## The pass (in order)
|
|
44
|
+
|
|
45
|
+
1. **Clarity of the user job.**
|
|
46
|
+
- Within 3 seconds of opening, is it obvious what this screen is for?
|
|
47
|
+
- Does the primary action match the user's actual job, or a designer's preferred path?
|
|
48
|
+
|
|
49
|
+
2. **Visual hierarchy.**
|
|
50
|
+
- The most important thing on the screen should be the most prominent (size, weight, position, color).
|
|
51
|
+
- Secondary actions should look secondary. Tertiary should be findable but not loud.
|
|
52
|
+
- Headings should chunk content into the right groups for the task.
|
|
53
|
+
|
|
54
|
+
3. **Affordance and signifiers.**
|
|
55
|
+
- Clickable things look clickable.
|
|
56
|
+
- Disabled things look disabled and explain why on hover/focus.
|
|
57
|
+
- Drag, scroll, or swipe interactions are discoverable, not hidden.
|
|
58
|
+
|
|
59
|
+
4. **States.**
|
|
60
|
+
- Empty state (no data) is designed, not a blank rectangle.
|
|
61
|
+
- Loading state communicates progress, not just spins.
|
|
62
|
+
- Error states say what went wrong and what to do next, in the user's words.
|
|
63
|
+
- Success state confirms without celebrating banal actions.
|
|
64
|
+
|
|
65
|
+
5. **Inputs and forms.**
|
|
66
|
+
- Labels visible, not just placeholders.
|
|
67
|
+
- Validation runs at the right time (on blur, not on every keystroke unless the user is in a known-format field).
|
|
68
|
+
- Required fields marked.
|
|
69
|
+
- Field order matches the user's mental order, not the database order.
|
|
70
|
+
|
|
71
|
+
6. **Accessibility.**
|
|
72
|
+
- Sufficient color contrast (WCAG AA at minimum; AAA where reasonable).
|
|
73
|
+
- Focus order is logical for keyboard navigation.
|
|
74
|
+
- Interactive elements are reachable without a mouse.
|
|
75
|
+
- Critical information is not color-only (icons, text, position back it up).
|
|
76
|
+
- Touch targets at least 44×44 px on mobile.
|
|
77
|
+
|
|
78
|
+
7. **Consistency.**
|
|
79
|
+
- Tokens, components, and patterns match the rest of the product.
|
|
80
|
+
- "Borrowed" patterns from other products are intentional, not accidental drift.
|
|
81
|
+
|
|
82
|
+
8. **Copy.**
|
|
83
|
+
- Buttons are verbs that name the outcome ("Save changes" beats "Submit").
|
|
84
|
+
- Microcopy explains, does not decorate.
|
|
85
|
+
- Tone matches the product voice.
|
|
86
|
+
|
|
87
|
+
9. **Edge cases.**
|
|
88
|
+
- Long content (long names, many items, RTL languages).
|
|
89
|
+
- Tiny content (one item, zero items).
|
|
90
|
+
- Slow network and offline behavior.
|
|
91
|
+
- Permissions denied.
|
|
92
|
+
|
|
93
|
+
## Output format
|
|
94
|
+
|
|
95
|
+
Group findings by severity, then by category. Each finding is one issue and one suggested fix.
|
|
96
|
+
|
|
97
|
+
```md
|
|
98
|
+
## Design critique: <screen name>
|
|
99
|
+
|
|
100
|
+
### Must-fix (blocks ship)
|
|
101
|
+
- **<category>:** <one-line issue>. **Try:** <one-line suggestion>.
|
|
102
|
+
|
|
103
|
+
### Should-fix (before broader rollout)
|
|
104
|
+
- **<category>:** <one-line issue>. **Try:** <one-line suggestion>.
|
|
105
|
+
|
|
106
|
+
### Nice-to-fix (when there's room)
|
|
107
|
+
- **<category>:** <one-line issue>. **Try:** <one-line suggestion>.
|
|
108
|
+
|
|
109
|
+
### Strengths to keep
|
|
110
|
+
- <one-line thing the design got right>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Always include the "strengths to keep" section. It is not flattery — it is signal to the designer about what not to change in the next round.
|
|
114
|
+
|
|
115
|
+
## Anti-patterns
|
|
116
|
+
|
|
117
|
+
- "I would do it differently" without saying what or why. That is preference, not critique.
|
|
118
|
+
- Long critiques that bury must-fix items under nice-to-haves.
|
|
119
|
+
- Suggesting net-new features under the guise of a critique.
|
|
120
|
+
- Ignoring user context and grading on taste.
|
|
121
|
+
- Treating a critique as approval. State approval explicitly if asked; otherwise critique is feedback, not sign-off.
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"packageName": "@paperclipai/skills-catalog",
|
|
4
|
+
"packageVersion": "0.3.1",
|
|
5
|
+
"generatedAt": "2026-05-28T03:02:49.579Z",
|
|
6
|
+
"skills": [
|
|
7
|
+
{
|
|
8
|
+
"id": "paperclipai:bundled:docs:doc-maintenance",
|
|
9
|
+
"key": "paperclipai/bundled/docs/doc-maintenance",
|
|
10
|
+
"kind": "bundled",
|
|
11
|
+
"category": "docs",
|
|
12
|
+
"slug": "doc-maintenance",
|
|
13
|
+
"name": "doc-maintenance",
|
|
14
|
+
"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.",
|
|
15
|
+
"path": "catalog/bundled/docs/doc-maintenance",
|
|
16
|
+
"entrypoint": "SKILL.md",
|
|
17
|
+
"trustLevel": "markdown_only",
|
|
18
|
+
"compatibility": "compatible",
|
|
19
|
+
"defaultInstall": false,
|
|
20
|
+
"recommendedForRoles": [
|
|
21
|
+
"engineer",
|
|
22
|
+
"product",
|
|
23
|
+
"devrel"
|
|
24
|
+
],
|
|
25
|
+
"requires": [],
|
|
26
|
+
"tags": [
|
|
27
|
+
"docs",
|
|
28
|
+
"documentation",
|
|
29
|
+
"release-notes"
|
|
30
|
+
],
|
|
31
|
+
"files": [
|
|
32
|
+
{
|
|
33
|
+
"path": "SKILL.md",
|
|
34
|
+
"kind": "skill",
|
|
35
|
+
"sizeBytes": 4478,
|
|
36
|
+
"sha256": "fb0353386c5e5e5e13bcbb3233f044e3dccecf371f429d6328f26c26d7cb6169"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"contentHash": "sha256:2e02299210fd17c1fe1867b4ee8c144a11b6fe1fe481f83b8268cfbaaf10f9aa"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "paperclipai:bundled:paperclip-operations:issue-triage",
|
|
43
|
+
"key": "paperclipai/bundled/paperclip-operations/issue-triage",
|
|
44
|
+
"kind": "bundled",
|
|
45
|
+
"category": "paperclip-operations",
|
|
46
|
+
"slug": "issue-triage",
|
|
47
|
+
"name": "issue-triage",
|
|
48
|
+
"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).",
|
|
49
|
+
"path": "catalog/bundled/paperclip-operations/issue-triage",
|
|
50
|
+
"entrypoint": "SKILL.md",
|
|
51
|
+
"trustLevel": "markdown_only",
|
|
52
|
+
"compatibility": "compatible",
|
|
53
|
+
"defaultInstall": false,
|
|
54
|
+
"recommendedForRoles": [
|
|
55
|
+
"manager",
|
|
56
|
+
"ceo",
|
|
57
|
+
"engineer"
|
|
58
|
+
],
|
|
59
|
+
"requires": [],
|
|
60
|
+
"tags": [
|
|
61
|
+
"paperclip",
|
|
62
|
+
"triage",
|
|
63
|
+
"inbox",
|
|
64
|
+
"workflow"
|
|
65
|
+
],
|
|
66
|
+
"files": [
|
|
67
|
+
{
|
|
68
|
+
"path": "SKILL.md",
|
|
69
|
+
"kind": "skill",
|
|
70
|
+
"sizeBytes": 4042,
|
|
71
|
+
"sha256": "df5bdc8bf5e017b7ba5f70a4b5323fad51d0c323278f386580f26cf43ad09160"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"contentHash": "sha256:88dc13560371fb364963782cb4f6eeb4090fcde92ee3774479428ed6b90e11c1"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "paperclipai:bundled:paperclip-operations:task-planning",
|
|
78
|
+
"key": "paperclipai/bundled/paperclip-operations/task-planning",
|
|
79
|
+
"kind": "bundled",
|
|
80
|
+
"category": "paperclip-operations",
|
|
81
|
+
"slug": "task-planning",
|
|
82
|
+
"name": "task-planning",
|
|
83
|
+
"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.",
|
|
84
|
+
"path": "catalog/bundled/paperclip-operations/task-planning",
|
|
85
|
+
"entrypoint": "SKILL.md",
|
|
86
|
+
"trustLevel": "markdown_only",
|
|
87
|
+
"compatibility": "compatible",
|
|
88
|
+
"defaultInstall": false,
|
|
89
|
+
"recommendedForRoles": [
|
|
90
|
+
"manager",
|
|
91
|
+
"engineer",
|
|
92
|
+
"product"
|
|
93
|
+
],
|
|
94
|
+
"requires": [],
|
|
95
|
+
"tags": [
|
|
96
|
+
"paperclip",
|
|
97
|
+
"planning",
|
|
98
|
+
"issues",
|
|
99
|
+
"delegation"
|
|
100
|
+
],
|
|
101
|
+
"files": [
|
|
102
|
+
{
|
|
103
|
+
"path": "SKILL.md",
|
|
104
|
+
"kind": "skill",
|
|
105
|
+
"sizeBytes": 4649,
|
|
106
|
+
"sha256": "2ff61e12dfaa4cf8cc548529fd176f55f1b1f5292ff9dd3eb2cb331417ab5e4e"
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"contentHash": "sha256:4fb46a4bcefad4fd46fae48c433ee497112509a8e19fb8a7745ead44d219b498"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "paperclipai:bundled:quality:qa-acceptance",
|
|
113
|
+
"key": "paperclipai/bundled/quality/qa-acceptance",
|
|
114
|
+
"kind": "bundled",
|
|
115
|
+
"category": "quality",
|
|
116
|
+
"slug": "qa-acceptance",
|
|
117
|
+
"name": "qa-acceptance",
|
|
118
|
+
"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.",
|
|
119
|
+
"path": "catalog/bundled/quality/qa-acceptance",
|
|
120
|
+
"entrypoint": "SKILL.md",
|
|
121
|
+
"trustLevel": "markdown_only",
|
|
122
|
+
"compatibility": "compatible",
|
|
123
|
+
"defaultInstall": false,
|
|
124
|
+
"recommendedForRoles": [
|
|
125
|
+
"qa",
|
|
126
|
+
"engineer",
|
|
127
|
+
"product"
|
|
128
|
+
],
|
|
129
|
+
"requires": [],
|
|
130
|
+
"tags": [
|
|
131
|
+
"qa",
|
|
132
|
+
"acceptance",
|
|
133
|
+
"validation",
|
|
134
|
+
"testing"
|
|
135
|
+
],
|
|
136
|
+
"files": [
|
|
137
|
+
{
|
|
138
|
+
"path": "SKILL.md",
|
|
139
|
+
"kind": "skill",
|
|
140
|
+
"sizeBytes": 3861,
|
|
141
|
+
"sha256": "c631b437ab26d104af6cdb963d8f679a9341439041b3cb3ec8835f4ff551b378"
|
|
142
|
+
}
|
|
143
|
+
],
|
|
144
|
+
"contentHash": "sha256:32372dacaf62e93454b9855968c4eec96456ba78b509f450b3dfaa48e31ef356"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "paperclipai:bundled:software-development:github-pr-workflow",
|
|
148
|
+
"key": "paperclipai/bundled/software-development/github-pr-workflow",
|
|
149
|
+
"kind": "bundled",
|
|
150
|
+
"category": "software-development",
|
|
151
|
+
"slug": "github-pr-workflow",
|
|
152
|
+
"name": "github-pr-workflow",
|
|
153
|
+
"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.",
|
|
154
|
+
"path": "catalog/bundled/software-development/github-pr-workflow",
|
|
155
|
+
"entrypoint": "SKILL.md",
|
|
156
|
+
"trustLevel": "markdown_only",
|
|
157
|
+
"compatibility": "compatible",
|
|
158
|
+
"defaultInstall": false,
|
|
159
|
+
"recommendedForRoles": [
|
|
160
|
+
"engineer"
|
|
161
|
+
],
|
|
162
|
+
"requires": [],
|
|
163
|
+
"tags": [
|
|
164
|
+
"github",
|
|
165
|
+
"pull-requests",
|
|
166
|
+
"code-review",
|
|
167
|
+
"release"
|
|
168
|
+
],
|
|
169
|
+
"files": [
|
|
170
|
+
{
|
|
171
|
+
"path": "SKILL.md",
|
|
172
|
+
"kind": "skill",
|
|
173
|
+
"sizeBytes": 3970,
|
|
174
|
+
"sha256": "f498ec4ebb1779dea37adeb1db8a8b22316282798e35ee02e2fc5ff627d7e261"
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
"contentHash": "sha256:90f278c89aa0711be150c1cd2456ca25620d02f36995b113ca9837d756a37f6c"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"id": "paperclipai:optional:browser:agent-browser",
|
|
181
|
+
"key": "paperclipai/optional/browser/agent-browser",
|
|
182
|
+
"kind": "optional",
|
|
183
|
+
"category": "browser",
|
|
184
|
+
"slug": "agent-browser",
|
|
185
|
+
"name": "agent-browser",
|
|
186
|
+
"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.",
|
|
187
|
+
"path": "catalog/optional/browser/agent-browser",
|
|
188
|
+
"entrypoint": "SKILL.md",
|
|
189
|
+
"trustLevel": "markdown_only",
|
|
190
|
+
"compatibility": "compatible",
|
|
191
|
+
"defaultInstall": false,
|
|
192
|
+
"recommendedForRoles": [
|
|
193
|
+
"qa",
|
|
194
|
+
"engineer",
|
|
195
|
+
"researcher"
|
|
196
|
+
],
|
|
197
|
+
"requires": [],
|
|
198
|
+
"tags": [
|
|
199
|
+
"browser",
|
|
200
|
+
"puppeteer",
|
|
201
|
+
"playwright",
|
|
202
|
+
"verification"
|
|
203
|
+
],
|
|
204
|
+
"files": [
|
|
205
|
+
{
|
|
206
|
+
"path": "SKILL.md",
|
|
207
|
+
"kind": "skill",
|
|
208
|
+
"sizeBytes": 5133,
|
|
209
|
+
"sha256": "362f7b9d02297782bc6f0c093f495b8a0304a75bcf4b42e5c280a42b1f757b7d"
|
|
210
|
+
}
|
|
211
|
+
],
|
|
212
|
+
"contentHash": "sha256:eabb2c9f7b5e1a27ebb1e05a711d61433a266478154cd671a685e99e67aadea2"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"id": "paperclipai:optional:content:release-announcement",
|
|
216
|
+
"key": "paperclipai/optional/content/release-announcement",
|
|
217
|
+
"kind": "optional",
|
|
218
|
+
"category": "content",
|
|
219
|
+
"slug": "release-announcement",
|
|
220
|
+
"name": "release-announcement",
|
|
221
|
+
"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.",
|
|
222
|
+
"path": "catalog/optional/content/release-announcement",
|
|
223
|
+
"entrypoint": "SKILL.md",
|
|
224
|
+
"trustLevel": "markdown_only",
|
|
225
|
+
"compatibility": "compatible",
|
|
226
|
+
"defaultInstall": false,
|
|
227
|
+
"recommendedForRoles": [
|
|
228
|
+
"devrel",
|
|
229
|
+
"product",
|
|
230
|
+
"writer"
|
|
231
|
+
],
|
|
232
|
+
"requires": [],
|
|
233
|
+
"tags": [
|
|
234
|
+
"release",
|
|
235
|
+
"changelog",
|
|
236
|
+
"announcement",
|
|
237
|
+
"communication"
|
|
238
|
+
],
|
|
239
|
+
"files": [
|
|
240
|
+
{
|
|
241
|
+
"path": "SKILL.md",
|
|
242
|
+
"kind": "skill",
|
|
243
|
+
"sizeBytes": 4416,
|
|
244
|
+
"sha256": "062810ac34e9edc89efa701fec2eee60f16949d1944cc2cae49803cb91e8cbf4"
|
|
245
|
+
}
|
|
246
|
+
],
|
|
247
|
+
"contentHash": "sha256:f22a9ed696e6614c6db2757a149f48b3295e81f78c27d065d9cb164cf4f8a9bd"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"id": "paperclipai:optional:product:design-critique",
|
|
251
|
+
"key": "paperclipai/optional/product/design-critique",
|
|
252
|
+
"kind": "optional",
|
|
253
|
+
"category": "product",
|
|
254
|
+
"slug": "design-critique",
|
|
255
|
+
"name": "design-critique",
|
|
256
|
+
"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.",
|
|
257
|
+
"path": "catalog/optional/product/design-critique",
|
|
258
|
+
"entrypoint": "SKILL.md",
|
|
259
|
+
"trustLevel": "markdown_only",
|
|
260
|
+
"compatibility": "compatible",
|
|
261
|
+
"defaultInstall": false,
|
|
262
|
+
"recommendedForRoles": [
|
|
263
|
+
"designer",
|
|
264
|
+
"product",
|
|
265
|
+
"engineer"
|
|
266
|
+
],
|
|
267
|
+
"requires": [],
|
|
268
|
+
"tags": [
|
|
269
|
+
"design",
|
|
270
|
+
"product",
|
|
271
|
+
"ux",
|
|
272
|
+
"review"
|
|
273
|
+
],
|
|
274
|
+
"files": [
|
|
275
|
+
{
|
|
276
|
+
"path": "SKILL.md",
|
|
277
|
+
"kind": "skill",
|
|
278
|
+
"sizeBytes": 4851,
|
|
279
|
+
"sha256": "022e619baf6cc25725946279cb8052d22af090dd6cd6dc8c20f17867f71a5d8e"
|
|
280
|
+
}
|
|
281
|
+
],
|
|
282
|
+
"contentHash": "sha256:429f94df398a0697042b5bbe4755b1ff1a230aa5f41d99118ad37493ac65d21c"
|
|
283
|
+
}
|
|
284
|
+
]
|
|
285
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-catalog-manifest.d.ts","sourceRoot":"","sources":["../../scripts/build-catalog-manifest.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { fileURLToPath } from "node:url";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { writeCatalogManifest } from "../src/catalog-builder.js";
|
|
4
|
+
const packageDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
5
|
+
const result = await writeCatalogManifest(packageDir);
|
|
6
|
+
if (result.errors.length > 0) {
|
|
7
|
+
for (const error of result.errors) {
|
|
8
|
+
console.error(`- ${error}`);
|
|
9
|
+
}
|
|
10
|
+
process.exitCode = 1;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
console.log(`Wrote generated/catalog.json with ${result.manifest.skills.length} catalog skills.`);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=build-catalog-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-catalog-manifest.js","sourceRoot":"","sources":["../../scripts/build-catalog-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACpF,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAEtD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,GAAG,CAAC,qCAAqC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC;AACpG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-catalog.d.ts","sourceRoot":"","sources":["../../scripts/validate-catalog.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { fileURLToPath } from "node:url";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { validateCatalog } from "../src/catalog-builder.js";
|
|
4
|
+
const packageDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
5
|
+
const result = await validateCatalog(packageDir);
|
|
6
|
+
if (result.errors.length > 0) {
|
|
7
|
+
for (const error of result.errors) {
|
|
8
|
+
console.error(`- ${error}`);
|
|
9
|
+
}
|
|
10
|
+
process.exitCode = 1;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
console.log(`Catalog manifest is valid with ${result.manifest.skills.length} catalog skills.`);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=validate-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-catalog.js","sourceRoot":"","sources":["../../scripts/validate-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACpF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;AAEjD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,GAAG,CAAC,kCAAkC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC;AACjG,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CatalogManifest } from "./types.js";
|
|
2
|
+
interface BuildCatalogManifestOptions {
|
|
3
|
+
packageDir: string;
|
|
4
|
+
generatedAt?: string;
|
|
5
|
+
}
|
|
6
|
+
interface BuildCatalogManifestResult {
|
|
7
|
+
manifest: CatalogManifest;
|
|
8
|
+
errors: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function formatCatalogManifest(manifest: CatalogManifest): string;
|
|
11
|
+
export declare function buildExpectedCatalogManifest(packageDir: string): Promise<BuildCatalogManifestResult>;
|
|
12
|
+
export declare function buildCatalogManifest(options: BuildCatalogManifestOptions): Promise<BuildCatalogManifestResult>;
|
|
13
|
+
export declare function validateCatalog(packageDir: string): Promise<BuildCatalogManifestResult>;
|
|
14
|
+
export declare function writeCatalogManifest(packageDir: string): Promise<BuildCatalogManifestResult>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=catalog-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-builder.d.ts","sourceRoot":"","sources":["../../src/catalog-builder.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EAMhB,MAAM,YAAY,CAAC;AAgBpB,UAAU,2BAA2B;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,0BAA0B;IAClC,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEvE;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,0BAA0B,CAAC,CAerC;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC,CA2BrC;AAED,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAwB7F;AAED,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,uCAQ5D"}
|