opencode-skills-collection 4.0.11 → 4.0.13
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/bundled-skills/.antigravity-install-manifest.json +4 -1
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +1 -1
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/aas-core.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +3 -3
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/fedora-hyprland-installer/LICENSE +21 -0
- package/bundled-skills/fedora-hyprland-installer/README.md +125 -0
- package/bundled-skills/fedora-hyprland-installer/SKILL.md +112 -0
- package/bundled-skills/fedora-hyprland-installer/references/amd.md +10 -0
- package/bundled-skills/fedora-hyprland-installer/references/fedora.md +24 -0
- package/bundled-skills/fedora-hyprland-installer/references/hyprland.md +22 -0
- package/bundled-skills/fedora-hyprland-installer/references/intel.md +8 -0
- package/bundled-skills/fedora-hyprland-installer/references/nvidia.md +29 -0
- package/bundled-skills/fedora-hyprland-installer/references/portals.md +18 -0
- package/bundled-skills/fedora-hyprland-installer/references/troubleshooting.md +53 -0
- package/bundled-skills/fedora-hyprland-installer/references/wayland.md +9 -0
- package/bundled-skills/fedora-hyprland-installer/scripts/backup.sh +65 -0
- package/bundled-skills/fedora-hyprland-installer/scripts/configure.sh +158 -0
- package/bundled-skills/fedora-hyprland-installer/scripts/detect-gpu.sh +71 -0
- package/bundled-skills/fedora-hyprland-installer/scripts/detect-system.sh +95 -0
- package/bundled-skills/fedora-hyprland-installer/scripts/install.sh +62 -0
- package/bundled-skills/fedora-hyprland-installer/scripts/preflight.sh +94 -0
- package/bundled-skills/fedora-hyprland-installer/scripts/repair.sh +92 -0
- package/bundled-skills/fedora-hyprland-installer/scripts/uninstall.sh +57 -0
- package/bundled-skills/fedora-hyprland-installer/scripts/verify.sh +92 -0
- package/bundled-skills/fedora-hyprland-installer/tests/test-detection.sh +22 -0
- package/bundled-skills/fedora-hyprland-installer/tests/test-scripts.sh +47 -0
- package/bundled-skills/find-complementary-founders/LICENSE.txt +21 -0
- package/bundled-skills/find-complementary-founders/SKILL.md +386 -0
- package/bundled-skills/find-complementary-founders/agents/openai.yaml +4 -0
- package/bundled-skills/find-complementary-founders/references/community-growth.md +140 -0
- package/bundled-skills/find-complementary-founders/references/evidence-model.md +94 -0
- package/bundled-skills/find-complementary-founders/references/moltbook.md +125 -0
- package/bundled-skills/find-complementary-founders/references/owner-onboarding.ru.md +105 -0
- package/bundled-skills/find-complementary-founders/references/privacy-safety.md +63 -0
- package/bundled-skills/find-complementary-founders/references/profile-schema.md +117 -0
- package/bundled-skills/find-complementary-founders/scripts/assess_profile.py +532 -0
- package/bundled-skills/find-complementary-founders/scripts/github_thread.py +466 -0
- package/bundled-skills/find-complementary-founders/scripts/match_profiles.py +251 -0
- package/bundled-skills/find-complementary-founders/scripts/moltbook_publish.py +672 -0
- package/bundled-skills/find-complementary-founders/scripts/profile_card.py +307 -0
- package/bundled-skills/find-complementary-founders/scripts/validate_profile.py +473 -0
- package/bundled-skills/find-complementary-founders/scripts/verify_github_submission.py +296 -0
- package/bundled-skills/orchestrate/SKILL.md +61 -0
- package/bundled-skills/orchestrate/agents/openai.yaml +4 -0
- package/bundled-skills/uizze-ui-research/SKILL.md +47 -12
- package/package.json +1 -1
- package/skills_index.json +101 -1
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Verify one untrusted FindMate GitHub owner-profile submission safely."""
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import argparse
|
|
7
|
+
import hmac
|
|
8
|
+
import importlib.util
|
|
9
|
+
import json
|
|
10
|
+
import re
|
|
11
|
+
import sys
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
from urllib.error import HTTPError, URLError
|
|
14
|
+
from urllib.parse import urlparse
|
|
15
|
+
from urllib.request import Request, urlopen
|
|
16
|
+
|
|
17
|
+
REPOSITORY = "merc1305/findMate"
|
|
18
|
+
ISSUE_NUMBER = 2
|
|
19
|
+
PROFILE_REPLY_MARKER = "FINDMATE_OWNER_PROFILE_V1"
|
|
20
|
+
MAX_PROFILE_BYTES = 65_536
|
|
21
|
+
GITHUB_BLOB_PATTERN = re.compile(
|
|
22
|
+
r"^/"
|
|
23
|
+
r"(?P<owner>[A-Za-z0-9][A-Za-z0-9-]{0,38})/"
|
|
24
|
+
r"(?P<repo>[A-Za-z0-9._-]{1,100})/"
|
|
25
|
+
r"blob/"
|
|
26
|
+
r"(?P<commit>[0-9a-fA-F]{40})/"
|
|
27
|
+
r"(?P<path>[A-Za-z0-9._/-]+\.json)$"
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
REASON_MESSAGES = {
|
|
31
|
+
"comment_deleted": (
|
|
32
|
+
"The source owner-profile comment was deleted and is revoked."
|
|
33
|
+
),
|
|
34
|
+
"comment_shape": (
|
|
35
|
+
"The marked comment is missing its own-owner declaration, inline or "
|
|
36
|
+
"linked profile, canonical SHA-256, or expiry."
|
|
37
|
+
),
|
|
38
|
+
"event_scope": "The event does not belong to the canonical FindMate issue.",
|
|
39
|
+
"profile_download_failed": (
|
|
40
|
+
"The immutable GitHub profile could not be downloaded within the safety limits."
|
|
41
|
+
),
|
|
42
|
+
"profile_expiry_mismatch": (
|
|
43
|
+
"The expiry in the comment does not match the validated profile."
|
|
44
|
+
),
|
|
45
|
+
"profile_hash_mismatch": (
|
|
46
|
+
"The canonical SHA-256 in the comment does not match the validated profile."
|
|
47
|
+
),
|
|
48
|
+
"profile_json_invalid": (
|
|
49
|
+
"The linked or inline profile is not a valid JSON object."
|
|
50
|
+
),
|
|
51
|
+
"profile_too_large": (
|
|
52
|
+
"The linked or inline profile exceeds its safety limit."
|
|
53
|
+
),
|
|
54
|
+
"profile_url_requires_immutable_github_blob": (
|
|
55
|
+
"The profile URL must be a github.com blob URL pinned to a full 40-character "
|
|
56
|
+
"commit SHA."
|
|
57
|
+
),
|
|
58
|
+
"profile_validation_failed": (
|
|
59
|
+
"The profile failed schema, privacy, consent, or expiry validation."
|
|
60
|
+
),
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class SubmissionError(ValueError):
|
|
65
|
+
"""Raised for a bounded, public-safe submission validation failure."""
|
|
66
|
+
|
|
67
|
+
def __init__(self, code: str):
|
|
68
|
+
if code not in REASON_MESSAGES:
|
|
69
|
+
raise ValueError(f"Unsupported submission error code: {code}")
|
|
70
|
+
super().__init__(REASON_MESSAGES[code])
|
|
71
|
+
self.code = code
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def load_sibling_module(module_name: str, filename: str):
|
|
75
|
+
path = Path(__file__).with_name(filename)
|
|
76
|
+
spec = importlib.util.spec_from_file_location(module_name, path)
|
|
77
|
+
if spec is None or spec.loader is None:
|
|
78
|
+
raise RuntimeError(f"Cannot load required module: {filename}")
|
|
79
|
+
module = importlib.util.module_from_spec(spec)
|
|
80
|
+
spec.loader.exec_module(module)
|
|
81
|
+
return module
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
GITHUB_THREAD = load_sibling_module("_findmate_github_thread", "github_thread.py")
|
|
85
|
+
PROFILE_VALIDATOR = load_sibling_module(
|
|
86
|
+
"_findmate_profile_validator",
|
|
87
|
+
"validate_profile.py",
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def immutable_raw_profile_url(profile_url: str) -> str:
|
|
92
|
+
parsed = urlparse(profile_url)
|
|
93
|
+
try:
|
|
94
|
+
port = parsed.port
|
|
95
|
+
except ValueError as exc:
|
|
96
|
+
raise SubmissionError(
|
|
97
|
+
"profile_url_requires_immutable_github_blob"
|
|
98
|
+
) from exc
|
|
99
|
+
if (
|
|
100
|
+
parsed.scheme != "https"
|
|
101
|
+
or parsed.hostname != "github.com"
|
|
102
|
+
or port is not None
|
|
103
|
+
or parsed.username
|
|
104
|
+
or parsed.password
|
|
105
|
+
or parsed.query
|
|
106
|
+
or parsed.fragment
|
|
107
|
+
):
|
|
108
|
+
raise SubmissionError("profile_url_requires_immutable_github_blob")
|
|
109
|
+
match = GITHUB_BLOB_PATTERN.fullmatch(parsed.path)
|
|
110
|
+
if match is None:
|
|
111
|
+
raise SubmissionError("profile_url_requires_immutable_github_blob")
|
|
112
|
+
path_parts = match.group("path").split("/")
|
|
113
|
+
if any(part in {"", ".", ".."} for part in path_parts):
|
|
114
|
+
raise SubmissionError("profile_url_requires_immutable_github_blob")
|
|
115
|
+
return (
|
|
116
|
+
"https://raw.githubusercontent.com/"
|
|
117
|
+
f"{match.group('owner')}/{match.group('repo')}/"
|
|
118
|
+
f"{match.group('commit').lower()}/{match.group('path')}"
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def download_profile(raw_url: str) -> dict:
|
|
123
|
+
request = Request(
|
|
124
|
+
raw_url,
|
|
125
|
+
headers={
|
|
126
|
+
"Accept": "application/json,text/plain;q=0.9",
|
|
127
|
+
"User-Agent": "findmate-owner-profile-verifier/1.0",
|
|
128
|
+
},
|
|
129
|
+
)
|
|
130
|
+
try:
|
|
131
|
+
with urlopen(request, timeout=15) as response:
|
|
132
|
+
final = urlparse(response.geturl())
|
|
133
|
+
if (
|
|
134
|
+
final.scheme != "https"
|
|
135
|
+
or final.hostname != "raw.githubusercontent.com"
|
|
136
|
+
or final.username
|
|
137
|
+
or final.password
|
|
138
|
+
):
|
|
139
|
+
raise SubmissionError("profile_download_failed")
|
|
140
|
+
declared_length = response.headers.get("Content-Length")
|
|
141
|
+
if declared_length:
|
|
142
|
+
try:
|
|
143
|
+
if int(declared_length) > MAX_PROFILE_BYTES:
|
|
144
|
+
raise SubmissionError("profile_too_large")
|
|
145
|
+
except ValueError as exc:
|
|
146
|
+
raise SubmissionError("profile_download_failed") from exc
|
|
147
|
+
raw = response.read(MAX_PROFILE_BYTES + 1)
|
|
148
|
+
except SubmissionError:
|
|
149
|
+
raise
|
|
150
|
+
except (HTTPError, URLError, TimeoutError, OSError) as exc:
|
|
151
|
+
raise SubmissionError("profile_download_failed") from exc
|
|
152
|
+
if len(raw) > MAX_PROFILE_BYTES:
|
|
153
|
+
raise SubmissionError("profile_too_large")
|
|
154
|
+
try:
|
|
155
|
+
value = json.loads(raw.decode("utf-8"))
|
|
156
|
+
except (UnicodeDecodeError, json.JSONDecodeError) as exc:
|
|
157
|
+
raise SubmissionError("profile_json_invalid") from exc
|
|
158
|
+
if not isinstance(value, dict):
|
|
159
|
+
raise SubmissionError("profile_json_invalid")
|
|
160
|
+
return value
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def rejected(code: str) -> dict:
|
|
164
|
+
return {
|
|
165
|
+
"eligible": False,
|
|
166
|
+
"reason_code": code,
|
|
167
|
+
"message": REASON_MESSAGES[code],
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def verify_comment(body: str, *, profile_loader=download_profile) -> dict:
|
|
172
|
+
_, inline_error = GITHUB_THREAD.extract_inline_profile(body)
|
|
173
|
+
if inline_error:
|
|
174
|
+
return rejected(inline_error)
|
|
175
|
+
submissions = GITHUB_THREAD.extract_marked_comments([{"body": body}])
|
|
176
|
+
if len(submissions) != 1 or not submissions[0]["syntactically_eligible"]:
|
|
177
|
+
return rejected("comment_shape")
|
|
178
|
+
submission = submissions[0]
|
|
179
|
+
try:
|
|
180
|
+
if submission["profile_source"] == "inline":
|
|
181
|
+
profile = submission["inline_profile"]
|
|
182
|
+
else:
|
|
183
|
+
raw_url = immutable_raw_profile_url(submission["profile_url"])
|
|
184
|
+
profile = profile_loader(raw_url)
|
|
185
|
+
validation = PROFILE_VALIDATOR.validate_profile(profile)
|
|
186
|
+
except SubmissionError as exc:
|
|
187
|
+
return rejected(exc.code)
|
|
188
|
+
except PROFILE_VALIDATOR.ValidationError:
|
|
189
|
+
return rejected("profile_validation_failed")
|
|
190
|
+
|
|
191
|
+
if not hmac.compare_digest(
|
|
192
|
+
submission["canonical_profile_sha256"],
|
|
193
|
+
validation["canonical_sha256"],
|
|
194
|
+
):
|
|
195
|
+
return rejected("profile_hash_mismatch")
|
|
196
|
+
if submission["expires_on"] != validation["expires_on"]:
|
|
197
|
+
return rejected("profile_expiry_mismatch")
|
|
198
|
+
return {
|
|
199
|
+
"eligible": True,
|
|
200
|
+
"reason_code": None,
|
|
201
|
+
"message": (
|
|
202
|
+
"Schema, privacy, consent, expiry, source, and canonical hash "
|
|
203
|
+
"checks passed."
|
|
204
|
+
),
|
|
205
|
+
"profile_source": submission["profile_source"],
|
|
206
|
+
"alias": validation["alias"],
|
|
207
|
+
"expires_on": validation["expires_on"],
|
|
208
|
+
"canonical_sha256": validation["canonical_sha256"],
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
def verify_event(event: dict, *, profile_loader=download_profile) -> dict:
|
|
213
|
+
repository = event.get("repository")
|
|
214
|
+
issue = event.get("issue")
|
|
215
|
+
comment = event.get("comment")
|
|
216
|
+
if (
|
|
217
|
+
not isinstance(repository, dict)
|
|
218
|
+
or repository.get("full_name") != REPOSITORY
|
|
219
|
+
or not isinstance(issue, dict)
|
|
220
|
+
or issue.get("number") != ISSUE_NUMBER
|
|
221
|
+
or not isinstance(comment, dict)
|
|
222
|
+
or isinstance(comment.get("id"), bool)
|
|
223
|
+
or not isinstance(comment.get("id"), int)
|
|
224
|
+
):
|
|
225
|
+
return rejected("event_scope")
|
|
226
|
+
if event.get("action") == "deleted":
|
|
227
|
+
result = rejected("comment_deleted")
|
|
228
|
+
result["revoked"] = True
|
|
229
|
+
result["source_marked"] = False
|
|
230
|
+
result.update(
|
|
231
|
+
{
|
|
232
|
+
"repository": REPOSITORY,
|
|
233
|
+
"issue_number": ISSUE_NUMBER,
|
|
234
|
+
"source_comment_id": comment["id"],
|
|
235
|
+
}
|
|
236
|
+
)
|
|
237
|
+
return result
|
|
238
|
+
body = comment.get("body")
|
|
239
|
+
if not isinstance(body, str):
|
|
240
|
+
result = rejected("comment_shape")
|
|
241
|
+
source_marked = False
|
|
242
|
+
else:
|
|
243
|
+
source_marked = body.startswith(f"{PROFILE_REPLY_MARKER}\n")
|
|
244
|
+
result = verify_comment(body, profile_loader=profile_loader)
|
|
245
|
+
result.update(
|
|
246
|
+
{
|
|
247
|
+
"revoked": False,
|
|
248
|
+
"source_marked": source_marked,
|
|
249
|
+
"repository": REPOSITORY,
|
|
250
|
+
"issue_number": ISSUE_NUMBER,
|
|
251
|
+
"source_comment_id": comment["id"],
|
|
252
|
+
}
|
|
253
|
+
)
|
|
254
|
+
return result
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def read_event(path: Path) -> dict:
|
|
258
|
+
try:
|
|
259
|
+
value = json.loads(path.read_text(encoding="utf-8"))
|
|
260
|
+
except (OSError, json.JSONDecodeError) as exc:
|
|
261
|
+
raise RuntimeError(f"Cannot read GitHub event: {exc}") from exc
|
|
262
|
+
if not isinstance(value, dict):
|
|
263
|
+
raise RuntimeError("GitHub event must be a JSON object")
|
|
264
|
+
return value
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
def write_result(path: Path, result: dict) -> None:
|
|
268
|
+
if path.is_symlink():
|
|
269
|
+
raise RuntimeError(f"Refusing to write through symlink: {path}")
|
|
270
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
271
|
+
path.write_text(
|
|
272
|
+
json.dumps(result, indent=2, ensure_ascii=False, sort_keys=True) + "\n",
|
|
273
|
+
encoding="utf-8",
|
|
274
|
+
)
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
def parse_args() -> argparse.Namespace:
|
|
278
|
+
parser = argparse.ArgumentParser(description=__doc__)
|
|
279
|
+
parser.add_argument("--event", required=True, type=Path)
|
|
280
|
+
parser.add_argument("--output", required=True, type=Path)
|
|
281
|
+
return parser.parse_args()
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
def main() -> int:
|
|
285
|
+
args = parse_args()
|
|
286
|
+
try:
|
|
287
|
+
result = verify_event(read_event(args.event))
|
|
288
|
+
write_result(args.output, result)
|
|
289
|
+
except RuntimeError as exc:
|
|
290
|
+
print(f"error: {exc}", file=sys.stderr)
|
|
291
|
+
return 2
|
|
292
|
+
return 0
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
if __name__ == "__main__":
|
|
296
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orchestrate
|
|
3
|
+
description: "Coordinate focused subagents on substantial work, keep their ownership non-overlapping, and integrate verified results. Use for large-scope Codex tasks; keep trivial work with the coordinator."
|
|
4
|
+
category: agent-orchestration
|
|
5
|
+
risk: safe
|
|
6
|
+
source: https://github.com/provencher/codex-skills/tree/8aa6c42b73781c905c55f8a1253a18127079ac21/orchestrate
|
|
7
|
+
source_repo: provencher/codex-skills
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: "2026-07-26"
|
|
10
|
+
author: provencher
|
|
11
|
+
tags: [codex, orchestration, multi-agent, delegation, subagents]
|
|
12
|
+
tools: [codex]
|
|
13
|
+
license: MIT
|
|
14
|
+
license_source: https://github.com/provencher/codex-skills/blob/8aa6c42b73781c905c55f8a1253a18127079ac21/LICENSE
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Orchestrate
|
|
18
|
+
|
|
19
|
+
Coordinate substantial work across focused subagents while remaining available
|
|
20
|
+
to the user and retaining responsibility for the integrated result.
|
|
21
|
+
|
|
22
|
+
## When to Use
|
|
23
|
+
|
|
24
|
+
- Use when a task has multiple independent research, review, or implementation lanes.
|
|
25
|
+
- Use when parallel work will materially reduce elapsed time or improve coverage.
|
|
26
|
+
- Use when a coordinator must synthesize several bounded outputs into one verified result.
|
|
27
|
+
|
|
28
|
+
Keep trivial tasks with the coordinator.
|
|
29
|
+
|
|
30
|
+
## Workflow
|
|
31
|
+
|
|
32
|
+
1. Decompose the task into distinct, bounded assignments with explicit outputs.
|
|
33
|
+
2. Run narrow, read-only scouts in parallel with low reasoning effort and no
|
|
34
|
+
inherited conversation when the runtime supports those controls. Give each
|
|
35
|
+
scout all scoped context and evidence required to complete its assignment.
|
|
36
|
+
3. Use medium reasoning effort for routine implementation and high reasoning
|
|
37
|
+
effort for difficult work.
|
|
38
|
+
4. Give each subagent distinct ownership. Prevent overlapping assignments, and
|
|
39
|
+
instruct leaf workers not to delegate.
|
|
40
|
+
5. Integrate the outputs, resolve conflicts, and verify the combined result.
|
|
41
|
+
6. Keep approvals and externally consequential decisions with the user.
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
- For a repository-wide feature, assign non-overlapping agents to architecture
|
|
46
|
+
inspection, implementation, and test review, then integrate their findings
|
|
47
|
+
and run the final verification from the coordinator.
|
|
48
|
+
- For a research brief, assign independent sources or questions to read-only
|
|
49
|
+
scouts, reconcile disagreements, and keep the final judgment with the
|
|
50
|
+
coordinator.
|
|
51
|
+
|
|
52
|
+
## Limitations
|
|
53
|
+
|
|
54
|
+
- Requires a runtime that exposes subagent or delegation tools; otherwise keep
|
|
55
|
+
the work with the coordinator.
|
|
56
|
+
- Delegation does not authorize file mutations, public actions, purchases, or
|
|
57
|
+
other consequential operations beyond the user's original scope.
|
|
58
|
+
- Parallel agents can add cost and coordination overhead, so use them only when
|
|
59
|
+
the task is substantial enough to benefit.
|
|
60
|
+
- The coordinator remains responsible for checking claims, changes, tests, and
|
|
61
|
+
the final answer.
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: uizze-ui-research
|
|
3
|
-
description: "Use when building or reviewing web and iOS
|
|
3
|
+
description: "Use when building or reviewing web and iOS UI and you need real references from the free UIZZE public catalog, a structured design contract, a consent-gated rendered HTML/CSS preview, or a hard pre-ship finish gate."
|
|
4
4
|
category: design
|
|
5
5
|
risk: safe
|
|
6
6
|
source: https://github.com/aislon/uizze-mcp/tree/main/skills/uizze-ui-research
|
|
7
7
|
source_repo: aislon/uizze-mcp
|
|
8
8
|
source_type: official
|
|
9
|
+
license: MIT
|
|
10
|
+
license_source: https://github.com/aislon/uizze-mcp/blob/main/LICENSE
|
|
9
11
|
date_added: "2026-07-12"
|
|
10
|
-
author:
|
|
12
|
+
author: UIZZE
|
|
11
13
|
tags: [ui-design, ui-research, mcp, design-contracts, agent-workflows]
|
|
12
14
|
tools: [claude, cursor, codex, copilot, antigravity, lovable]
|
|
13
15
|
---
|
|
@@ -16,7 +18,7 @@ tools: [claude, cursor, codex, copilot, antigravity, lovable]
|
|
|
16
18
|
|
|
17
19
|
## Overview
|
|
18
20
|
|
|
19
|
-
Use UIZZE to give coding agents real product-UI context before implementation rather than relying on a generic styling prompt. The public catalog
|
|
21
|
+
Use [UIZZE](https://uizze.com) to give coding agents real product-UI context before implementation rather than relying on a generic styling prompt. The public catalog supports a free manual workflow without an account. The hosted preview provides a bounded rendered HTML/CSS check, while the full UIZZE MCP requires an authorized connection for reference search and broader review workflows.
|
|
20
22
|
|
|
21
23
|
This skill turns UI research into an explicit workflow: retrieve relevant references, translate transferable patterns into a design contract, implement within the current project's system, and run the available validation or critique gates.
|
|
22
24
|
|
|
@@ -26,24 +28,49 @@ This skill turns UI research into an explicit workflow: retrieve relevant refere
|
|
|
26
28
|
- You need real interface references before implementing an AI-generated UI.
|
|
27
29
|
- You are reviewing an implementation against explicit design constraints.
|
|
28
30
|
- You need to reduce generic or repetitive UI by grounding work in observed product patterns.
|
|
31
|
+
- You have rendered HTML/CSS and need a no-account first check before deciding whether the task needs deeper reference research.
|
|
29
32
|
|
|
30
33
|
## How It Works
|
|
31
34
|
|
|
32
|
-
### Step 1: Confirm
|
|
35
|
+
### Step 1: Confirm product scope and access mode
|
|
33
36
|
|
|
34
|
-
|
|
37
|
+
Identify the screen's primary user, job, action, existing design system, real content or data, and required loading, empty, error, success, and permission states. Use the free public catalog for manual research by default. If UIZZE MCP is already configured, use only the tools authorized for the task. If browsing is unavailable, ask the user for two or three relevant UIZZE links or screenshots. Do not block the manual workflow, bypass access controls, expose credentials, or claim that a manual review came from MCP.
|
|
35
38
|
|
|
36
39
|
### Step 2: Retrieve relevant visual context
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
Find the smallest useful set of screens, flows, components, or elements that match the product task. Focus on transferable patterns such as hierarchy, navigation, interaction states, spacing, density, and responsive behavior. Distinguish observed evidence from assumptions and record whether each finding came from manual browsing, the free preview, or the full MCP.
|
|
39
42
|
|
|
40
43
|
### Step 3: Make constraints explicit
|
|
41
44
|
|
|
42
|
-
|
|
45
|
+
Write a short design contract that names the screen job, content hierarchy, primary action, allowed project components and tokens, required states, responsive behavior, product-specific decisions, forbidden generic patterns, and verification criteria. Adapt patterns to the existing project design system instead of treating any reference as a visual template.
|
|
43
46
|
|
|
44
|
-
### Step 4:
|
|
47
|
+
### Step 4: Implement within the product
|
|
45
48
|
|
|
46
|
-
|
|
49
|
+
Build with the repository's existing components and tokens. Preserve platform conventions and make the interface specific to the product's content and workflow rather than adding decorative cards, badges, gradients, or motion by default.
|
|
50
|
+
|
|
51
|
+
### Step 5: Run a hard finish gate
|
|
52
|
+
|
|
53
|
+
Inspect the rendered result when the environment supports it, use an available UIZZE validation, audit, or critique workflow only when authorized, and reject completion if any of these checks fail:
|
|
54
|
+
|
|
55
|
+
- The hierarchy does not make the screen job and primary action immediately clear.
|
|
56
|
+
- A visible control is inert, ambiguous, or missing its interaction outcome.
|
|
57
|
+
- Required loading, empty, error, success, permission, or responsive states are absent.
|
|
58
|
+
- The implementation drifts from the project's existing components, tokens, or platform conventions.
|
|
59
|
+
- Interchangeable card grids, filler metrics, vague copy, or decorative effects replace product-specific decisions.
|
|
60
|
+
|
|
61
|
+
Name each blocking issue, fix it, and rerun the gate plus the project's normal tests. Never claim a rendered or MCP-backed check that was not actually performed.
|
|
62
|
+
|
|
63
|
+
### Optional: Use the free rendered-screen preview
|
|
64
|
+
|
|
65
|
+
When rendered HTML or CSS exists, offer the free preview once if it would materially improve the finish gate. Before changing MCP configuration or transmitting any markup or styles, obtain the user's explicit approval for both actions. Do not send secrets, personal data, proprietary content, tokens, or internal-only markup and styles.
|
|
66
|
+
|
|
67
|
+
After approval, a Codex user can add the bounded preview with:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
codex mcp add uizze-preview --url https://uizze.com/mcp/preview
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Give `check_ui_slop` only the rendered HTML and CSS the user approved. The preview requires no UIZZE login and exposes one bounded diagnostic; it does not search the reference catalog, create a design contract, replace accessibility or security review, or authorize a full UIZZE connection.
|
|
47
74
|
|
|
48
75
|
## Examples
|
|
49
76
|
|
|
@@ -64,13 +91,16 @@ Use UIZZE to inspect relevant real product settings screens, audit this implemen
|
|
|
64
91
|
- ✅ Start with the smallest relevant set of references rather than collecting a broad gallery.
|
|
65
92
|
- ✅ Separate observed patterns from the current project's brand and component rules.
|
|
66
93
|
- ✅ Use validation findings as implementation feedback, not as permission to copy an interface.
|
|
94
|
+
- ✅ Keep the manual workflow useful when hosted MCP access is unavailable.
|
|
95
|
+
- ✅ Label manual, preview, and full-MCP evidence truthfully in the handoff.
|
|
67
96
|
- ❌ Do not reproduce another product's brand, proprietary copy, assets, or exact layout.
|
|
68
97
|
- ❌ Do not commit agent tokens, include them in prompts, or place them in client-side code.
|
|
69
98
|
|
|
70
99
|
## Security & Safety Notes
|
|
71
100
|
|
|
72
|
-
- Keep
|
|
73
|
-
-
|
|
101
|
+
- Keep any full-connection credential in local agent configuration or a supported environment variable only; never commit it, paste it into prompts, or include it in client-side code.
|
|
102
|
+
- Treat the free preview as an external network service. Configure it and transmit selected rendered HTML/CSS only after explicit user approval and a sensitive-data check.
|
|
103
|
+
- Hosted MCP workflows require authorized access; the free catalog and preview do not grant permission to use full workflows.
|
|
74
104
|
- Treat returned references as research context, not reusable visual assets.
|
|
75
105
|
|
|
76
106
|
## Common Pitfalls
|
|
@@ -79,6 +109,10 @@ Use UIZZE to inspect relevant real product settings screens, audit this implemen
|
|
|
79
109
|
**Solution:** Extract the interaction or hierarchy pattern, then implement it using the target project's own design system and content.
|
|
80
110
|
- **Problem:** Starting implementation before the agent has relevant UI context.
|
|
81
111
|
**Solution:** Search for the smallest useful set of matching screens or flows first, then define constraints before coding.
|
|
112
|
+
- **Problem:** Treating an unavailable MCP connection as a reason to stop.
|
|
113
|
+
**Solution:** Use the free public catalog manually, or ask the user for two or three relevant UIZZE links or screenshots, and continue with the same design-contract and finish-gate workflow.
|
|
114
|
+
- **Problem:** Configuring the preview or sending markup without informed approval.
|
|
115
|
+
**Solution:** Explain the persistent configuration and external transmission, remove sensitive content, and continue only after the user approves both.
|
|
82
116
|
- **Problem:** Exposing an agent token in a repository or chat transcript.
|
|
83
117
|
**Solution:** Store credentials only in supported local configuration or environment variables and rotate a token if it is exposed.
|
|
84
118
|
|
|
@@ -89,5 +123,6 @@ Use UIZZE to inspect relevant real product settings screens, audit this implemen
|
|
|
89
123
|
## Limitations
|
|
90
124
|
|
|
91
125
|
- This skill does not replace product-specific user research, accessibility review, project tests, or human design judgment.
|
|
92
|
-
-
|
|
126
|
+
- The free preview cannot search UIZZE references, create design contracts, or replace the full implementation review workflow.
|
|
127
|
+
- It cannot make a full hosted UIZZE MCP workflow available without a valid authorized connection.
|
|
93
128
|
- Stop and ask for clarification if the product goal, existing design system, or access boundaries are missing.
|
package/package.json
CHANGED
package/skills_index.json
CHANGED
|
@@ -18128,6 +18128,38 @@
|
|
|
18128
18128
|
"session-handoff"
|
|
18129
18129
|
]
|
|
18130
18130
|
},
|
|
18131
|
+
{
|
|
18132
|
+
"id": "fedora-hyprland-installer",
|
|
18133
|
+
"path": "skills/fedora-hyprland-installer",
|
|
18134
|
+
"category": "devops",
|
|
18135
|
+
"name": "fedora-hyprland-installer",
|
|
18136
|
+
"description": "Install, configure, verify, repair, update, and uninstall Hyprland on Fedora Linux with GPU-aware detection (NVIDIA/AMD/Intel).",
|
|
18137
|
+
"risk": "critical",
|
|
18138
|
+
"source": "community",
|
|
18139
|
+
"date_added": "2026-07-26",
|
|
18140
|
+
"plugin": {
|
|
18141
|
+
"targets": {
|
|
18142
|
+
"codex": "supported",
|
|
18143
|
+
"claude": "supported"
|
|
18144
|
+
},
|
|
18145
|
+
"setup": {
|
|
18146
|
+
"type": "none",
|
|
18147
|
+
"summary": "",
|
|
18148
|
+
"docs": null
|
|
18149
|
+
},
|
|
18150
|
+
"reasons": []
|
|
18151
|
+
},
|
|
18152
|
+
"source_type": "community",
|
|
18153
|
+
"source_repo": "maleksaadi0109/hyprfedora",
|
|
18154
|
+
"license": "MIT",
|
|
18155
|
+
"license_source": "https://github.com/maleksaadi0109/hyprfedora/blob/3ec6d4fc5eecdb188613dd841dce9926ae5c8319/LICENSE",
|
|
18156
|
+
"tags": [
|
|
18157
|
+
"fedora",
|
|
18158
|
+
"hyprland",
|
|
18159
|
+
"wayland",
|
|
18160
|
+
"linux"
|
|
18161
|
+
]
|
|
18162
|
+
},
|
|
18131
18163
|
{
|
|
18132
18164
|
"id": "ffuf-claude-skill",
|
|
18133
18165
|
"path": "skills/ffuf-claude-skill",
|
|
@@ -18304,6 +18336,39 @@
|
|
|
18304
18336
|
"reasons": []
|
|
18305
18337
|
}
|
|
18306
18338
|
},
|
|
18339
|
+
{
|
|
18340
|
+
"id": "find-complementary-founders",
|
|
18341
|
+
"path": "skills/find-complementary-founders",
|
|
18342
|
+
"category": "business-strategy",
|
|
18343
|
+
"name": "find-complementary-founders",
|
|
18344
|
+
"description": "Use when an owner asks to find a cofounder or project partner. Assess only that agent's own owner and rank only approved profiles other agents posted for their own owners.",
|
|
18345
|
+
"risk": "critical",
|
|
18346
|
+
"source": "community",
|
|
18347
|
+
"date_added": "2026-07-26",
|
|
18348
|
+
"plugin": {
|
|
18349
|
+
"targets": {
|
|
18350
|
+
"codex": "supported",
|
|
18351
|
+
"claude": "supported"
|
|
18352
|
+
},
|
|
18353
|
+
"setup": {
|
|
18354
|
+
"type": "none",
|
|
18355
|
+
"summary": "",
|
|
18356
|
+
"docs": null
|
|
18357
|
+
},
|
|
18358
|
+
"reasons": []
|
|
18359
|
+
},
|
|
18360
|
+
"source_type": "community",
|
|
18361
|
+
"source_repo": "merc1305/findMate",
|
|
18362
|
+
"license": "MIT",
|
|
18363
|
+
"license_source": "https://github.com/merc1305/findMate/blob/main/LICENSE",
|
|
18364
|
+
"tags": [
|
|
18365
|
+
"cofounder",
|
|
18366
|
+
"founder-matching",
|
|
18367
|
+
"collaboration",
|
|
18368
|
+
"privacy",
|
|
18369
|
+
"agent-skills"
|
|
18370
|
+
]
|
|
18371
|
+
},
|
|
18307
18372
|
{
|
|
18308
18373
|
"id": "finishing-a-development-branch",
|
|
18309
18374
|
"path": "skills/finishing-a-development-branch",
|
|
@@ -31980,6 +32045,39 @@
|
|
|
31980
32045
|
"reasons": []
|
|
31981
32046
|
}
|
|
31982
32047
|
},
|
|
32048
|
+
{
|
|
32049
|
+
"id": "orchestrate",
|
|
32050
|
+
"path": "skills/orchestrate",
|
|
32051
|
+
"category": "agent-orchestration",
|
|
32052
|
+
"name": "orchestrate",
|
|
32053
|
+
"description": "Coordinate focused subagents on substantial work, keep their ownership non-overlapping, and integrate verified results. Use for large-scope Codex tasks; keep trivial work with the coordinator.",
|
|
32054
|
+
"risk": "safe",
|
|
32055
|
+
"source": "https://github.com/provencher/codex-skills/tree/8aa6c42b73781c905c55f8a1253a18127079ac21/orchestrate",
|
|
32056
|
+
"date_added": "2026-07-26",
|
|
32057
|
+
"plugin": {
|
|
32058
|
+
"targets": {
|
|
32059
|
+
"codex": "supported",
|
|
32060
|
+
"claude": "supported"
|
|
32061
|
+
},
|
|
32062
|
+
"setup": {
|
|
32063
|
+
"type": "none",
|
|
32064
|
+
"summary": "",
|
|
32065
|
+
"docs": null
|
|
32066
|
+
},
|
|
32067
|
+
"reasons": []
|
|
32068
|
+
},
|
|
32069
|
+
"source_type": "community",
|
|
32070
|
+
"source_repo": "provencher/codex-skills",
|
|
32071
|
+
"license": "MIT",
|
|
32072
|
+
"license_source": "https://github.com/provencher/codex-skills/blob/8aa6c42b73781c905c55f8a1253a18127079ac21/LICENSE",
|
|
32073
|
+
"tags": [
|
|
32074
|
+
"codex",
|
|
32075
|
+
"orchestration",
|
|
32076
|
+
"multi-agent",
|
|
32077
|
+
"delegation",
|
|
32078
|
+
"subagents"
|
|
32079
|
+
]
|
|
32080
|
+
},
|
|
31983
32081
|
{
|
|
31984
32082
|
"id": "orchestrate-batch-refactor",
|
|
31985
32083
|
"path": "skills/orchestrate-batch-refactor",
|
|
@@ -44562,7 +44660,7 @@
|
|
|
44562
44660
|
"path": "skills/uizze-ui-research",
|
|
44563
44661
|
"category": "design",
|
|
44564
44662
|
"name": "uizze-ui-research",
|
|
44565
|
-
"description": "Use when building or reviewing web and iOS
|
|
44663
|
+
"description": "Use when building or reviewing web and iOS UI and you need real references from the free UIZZE public catalog, a structured design contract, a consent-gated rendered HTML/CSS preview, or a hard pre-ship finish gate.",
|
|
44566
44664
|
"risk": "safe",
|
|
44567
44665
|
"source": "https://github.com/aislon/uizze-mcp/tree/main/skills/uizze-ui-research",
|
|
44568
44666
|
"date_added": "2026-07-12",
|
|
@@ -44580,6 +44678,8 @@
|
|
|
44580
44678
|
},
|
|
44581
44679
|
"source_type": "official",
|
|
44582
44680
|
"source_repo": "aislon/uizze-mcp",
|
|
44681
|
+
"license": "MIT",
|
|
44682
|
+
"license_source": "https://github.com/aislon/uizze-mcp/blob/main/LICENSE",
|
|
44583
44683
|
"tags": [
|
|
44584
44684
|
"ui-design",
|
|
44585
44685
|
"ui-research",
|