opencode-skills-collection 4.0.41 → 4.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +5 -2
  2. package/bundled-skills/animejs-animation/SKILL.md +1 -1
  3. package/bundled-skills/anti-ui-slop/SKILL.md +51 -86
  4. package/bundled-skills/antigravity-design-expert/SKILL.md +1 -1
  5. package/bundled-skills/design-spells/SKILL.md +1 -1
  6. package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
  7. package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
  8. package/bundled-skills/docs/maintainers/repo-growth-seo.md +1 -1
  9. package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
  10. package/bundled-skills/docs/users/aas-core.md +1 -1
  11. package/bundled-skills/docs/users/bundles.md +1 -1
  12. package/bundled-skills/docs/users/claude-code-skills.md +1 -1
  13. package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
  14. package/bundled-skills/docs/users/kiro-integration.md +1 -1
  15. package/bundled-skills/docs/users/usage.md +3 -3
  16. package/bundled-skills/docs/users/visual-guide.md +4 -4
  17. package/bundled-skills/famulor-skill/SKILL.md +132 -0
  18. package/bundled-skills/famulor-skill/references/assistant-design.md +137 -0
  19. package/bundled-skills/famulor-skill/references/toolsets/assistants.md +64 -0
  20. package/bundled-skills/famulor-skill/references/toolsets/automations.md +36 -0
  21. package/bundled-skills/famulor-skill/references/toolsets/billing.md +15 -0
  22. package/bundled-skills/famulor-skill/references/toolsets/calls.md +23 -0
  23. package/bundled-skills/famulor-skill/references/toolsets/campaigns.md +42 -0
  24. package/bundled-skills/famulor-skill/references/toolsets/dashboards.md +27 -0
  25. package/bundled-skills/famulor-skill/references/toolsets/knowledge.md +28 -0
  26. package/bundled-skills/famulor-skill/references/toolsets/messaging.md +52 -0
  27. package/bundled-skills/famulor-skill/references/toolsets/migration.md +10 -0
  28. package/bundled-skills/famulor-skill/references/toolsets/platform.md +14 -0
  29. package/bundled-skills/famulor-skill/references/toolsets/settings.md +28 -0
  30. package/bundled-skills/famulor-skill/references/toolsets/tasks.md +12 -0
  31. package/bundled-skills/famulor-skill/references/toolsets/telephony.md +35 -0
  32. package/bundled-skills/iconsax-library/SKILL.md +1 -1
  33. package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +4 -4
  34. package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +1 -1
  35. package/bundled-skills/lore/SKILL.md +104 -298
  36. package/bundled-skills/lore/references/audit-template.md +21 -4
  37. package/bundled-skills/lore/references/compatibility.md +51 -121
  38. package/bundled-skills/lore/references/config.md +22 -23
  39. package/bundled-skills/lore/references/entry-format.md +33 -3
  40. package/bundled-skills/lore/references/history-command.md +98 -2
  41. package/bundled-skills/lore/references/platform-mirrors.md +45 -16
  42. package/bundled-skills/lore/references/stale-new-markers.md +10 -8
  43. package/bundled-skills/lore/references/summary-template.md +8 -1
  44. package/bundled-skills/lore/references/workflows.md +192 -0
  45. package/bundled-skills/lore/scripts/README.md +14 -13
  46. package/bundled-skills/lore/scripts/README.zh-CN.md +14 -13
  47. package/bundled-skills/lore/scripts/find_duplicates.py +14 -4
  48. package/bundled-skills/lore/scripts/find_stale.py +68 -16
  49. package/bundled-skills/lore/scripts/history.py +235 -23
  50. package/bundled-skills/lore/scripts/id_hash.py +7 -4
  51. package/bundled-skills/lore/scripts/list_entries.py +82 -13
  52. package/bundled-skills/magic-animator/SKILL.md +1 -1
  53. package/bundled-skills/magic-ui-generator/SKILL.md +1 -1
  54. package/bundled-skills/poka-yoke/SKILL.md +172 -0
  55. package/bundled-skills/project-state-governor/SKILL.md +483 -0
  56. package/bundled-skills/project-state-governor/references/manifest-routing.md +47 -0
  57. package/bundled-skills/project-state-governor/references/persistence-lifecycle.md +93 -0
  58. package/bundled-skills/project-state-governor/references/project-state-schema.md +173 -0
  59. package/bundled-skills/project-state-governor/references/reconstruction-workflow.md +183 -0
  60. package/bundled-skills/salesforce-development/SKILL.md +107 -37
  61. package/bundled-skills/spec-driven-loop/SKILL.md +203 -0
  62. package/bundled-skills/spec-driven-loop/references/agent-and-judge-contracts.md +120 -0
  63. package/bundled-skills/spec-driven-loop/references/document-templates.md +184 -0
  64. package/bundled-skills/unsplash-integration/SKILL.md +1 -1
  65. package/bundled-skills/vizcom/SKILL.md +1 -1
  66. package/bundled-skills/x-twitter-scraper/SKILL.md +20 -7
  67. package/package.json +1 -1
  68. package/skills_index.json +136 -36
  69. package/bundled-skills/lore/README.md +0 -386
  70. package/bundled-skills/lore/README.zh-CN.md +0 -386
  71. package/bundled-skills/lore/WORKFLOWS.md +0 -216
  72. package/bundled-skills/lore/WORKFLOWS.zh-CN.md +0 -216
  73. package/bundled-skills/uizze-ui-research/SKILL.md +0 -128
@@ -19,13 +19,15 @@ entry with these fields:
19
19
  text entry body, with tags stripped
20
20
  tags dict of tag name -> value, e.g. {"added": "2026-07-09", "verified": "2026-07-15"}
21
21
  last_verified value of #verified tag, or None
22
+ replaced_by value of #superseded-by tag (replacement entry ID), or None
22
23
 
23
24
  Used by:
24
- - query / audit / compress workflows (pre-step enumeration)
25
+ - query / audit / compress / history workflows (pre-step enumeration)
25
26
  - find_duplicates.py
26
27
  - find_stale.py
27
28
  """
28
29
  import json
30
+ import os
29
31
  import re
30
32
  import sys
31
33
  from pathlib import Path
@@ -91,10 +93,40 @@ def parse_entry(line: str):
91
93
  layer, date, h, rest = m.group(1), m.group(2), m.group(3), m.group(4)
92
94
  eid = f"{layer}-{date}-{h}"
93
95
 
94
- # Extract #tag:value pairs
95
- tag_re = re.compile(r"#(added|verified|stale|archived):(\S+)")
96
- tags = {name: val for name, val in tag_re.findall(rest)}
96
+ # Extract #tag:value pairs.
97
+ # #superseded-by:<id> is special: its value is an entry ID, not a date,
98
+ # so we keep it on a separate `replaced_by` field rather than in `tags`.
99
+ ENTRY_ID = r"[A-Z]+-\d{4}-\d{2}-\d{2}-[a-f0-9]{4}"
100
+ tag_re = re.compile(
101
+ r"#(added|verified|stale):(\S+)"
102
+ r"|#superseded-by:(" + ENTRY_ID + r")"
103
+ )
104
+ tags = {}
105
+ replaced_by = None
106
+ for m in tag_re.finditer(rest):
107
+ if m.group(1):
108
+ tags[m.group(1)] = m.group(2)
109
+ elif m.group(3):
110
+ if replaced_by is None:
111
+ replaced_by = m.group(3)
112
+ else:
113
+ print(
114
+ f"[WARN] entry {eid} carries multiple #superseded-by "
115
+ "tags; keeping the first only.",
116
+ file=sys.stderr,
117
+ )
97
118
  text = tag_re.sub("", rest).strip()
119
+ # Any #superseded-by still present after the valid-tag strip is
120
+ # malformed (value is not LAYER-YYYY-MM-DD-xxxx). Warn instead of
121
+ # dropping it silently: the entry stays intact in the file, but the
122
+ # chain cannot be resolved and replaced_by stays None.
123
+ for m in re.finditer(r"#superseded-by:(\S+)", text):
124
+ print(
125
+ f"[WARN] entry {eid} has a malformed #superseded-by value "
126
+ f"'{m.group(1)}' (expected LAYER-YYYY-MM-DD-xxxx); chain not "
127
+ "resolved.",
128
+ file=sys.stderr,
129
+ )
98
130
 
99
131
  return {
100
132
  "id": eid,
@@ -105,6 +137,7 @@ def parse_entry(line: str):
105
137
  "text": text,
106
138
  "tags": tags,
107
139
  "last_verified": tags.get("verified"),
140
+ "replaced_by": replaced_by,
108
141
  }
109
142
 
110
143
 
@@ -123,14 +156,43 @@ def collect_entries(root: Path):
123
156
  layer_file = md_file.stem
124
157
  try:
125
158
  with open(md_file, encoding="utf-8") as f:
126
- for line in f:
127
- e = parse_entry(line)
128
- if e is None:
129
- continue
130
- e["scope"] = scope
131
- e["layer_file"] = layer_file
132
- e["file"] = str(md_file.relative_to(root))
133
- entries.append(e)
159
+ lines = f.readlines()
160
+ if lines:
161
+ # Strip a UTF-8 BOM (Windows editors / PowerShell
162
+ # Set-Content add one); otherwise the first entry of
163
+ # the file would fail to parse and be silently skipped.
164
+ lines[0] = lines[0].lstrip("\ufeff")
165
+ i = 0
166
+ while i < len(lines):
167
+ # Join wrapped continuation lines into one logical
168
+ # bullet before parsing. A continuation is a non-blank
169
+ # line starting with 2+ spaces (or a tab) that is not
170
+ # itself a new entry bullet. This matches the documented
171
+ # "2 lines or fewer" bullet format without silently
172
+ # truncating the entry text.
173
+ joined = lines[i].rstrip("\n")
174
+ j = i + 1
175
+ while j < len(lines):
176
+ nxt = lines[j].rstrip("\n")
177
+ if nxt.strip() == "":
178
+ break
179
+ if not re.match(r"^\s{2,}", nxt):
180
+ break
181
+ if re.match(r"^\s*-\s*\[", nxt):
182
+ break
183
+ joined += " " + nxt.strip()
184
+ j += 1
185
+ e = parse_entry(joined)
186
+ if e is None:
187
+ i += 1
188
+ continue
189
+ e["scope"] = scope
190
+ e["layer_file"] = layer_file
191
+ e["file"] = str(md_file.relative_to(root)).replace(
192
+ os.sep, "/"
193
+ )
194
+ entries.append(e)
195
+ i = j
134
196
  except OSError as exc:
135
197
  print(f"warning: cannot read {md_file}: {exc}", file=sys.stderr)
136
198
  return entries
@@ -138,6 +200,10 @@ def collect_entries(root: Path):
138
200
 
139
201
  def main():
140
202
  args = sys.argv[1:]
203
+ try:
204
+ sys.stdout.reconfigure(encoding="utf-8")
205
+ except AttributeError: # Python < 3.7
206
+ pass
141
207
 
142
208
  scope_filter = None
143
209
  layer_filter = None
@@ -176,7 +242,10 @@ def main():
176
242
  f" [verified:{e['last_verified']}]" if e["last_verified"] else ""
177
243
  )
178
244
  stale = " [STALE]" if "stale" in e["tags"] else ""
179
- print(f"[{e['file']}] {e['id']} {e['text']}{verified}{stale}")
245
+ chain = (
246
+ f" -> {e['replaced_by']}" if e.get("replaced_by") else ""
247
+ )
248
+ print(f"[{e['file']}] {e['id']} {e['text']}{verified}{stale}{chain}")
180
249
 
181
250
 
182
251
  if __name__ == "__main__":
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  name: magic-animator
3
3
  description: AI-powered animation tool for creating motion in logos, UI, icons, and social media assets.
4
4
  risk: safe
@@ -1,4 +1,4 @@
1
- ---
1
+ ---
2
2
  name: magic-ui-generator
3
3
  description: Utilizes Magic by 21st.dev to generate, compare, and integrate multiple production-ready UI component variations.
4
4
  risk: safe
@@ -0,0 +1,172 @@
1
+ ---
2
+ name: poka-yoke
3
+ description: "Mistake-proof code, config and process: make the wrong action impossible or self-announcing rather than documented."
4
+ category: development
5
+ risk: safe
6
+ source: rainmanjam/poka-yoke
7
+ source_repo: rainmanjam/poka-yoke
8
+ source_type: community
9
+ date_added: "2026-08-25"
10
+ author: rainmanjam
11
+ tags: [mistake-proofing, code-review, api-design, guardrails, reliability]
12
+ tools: [claude, cursor, codex]
13
+ license: "MIT"
14
+ license_source: "https://github.com/rainmanjam/poka-yoke/blob/v0.1.2/LICENSE"
15
+ ---
16
+
17
+ # Poka-Yoke: Mistake-Proofing for Software
18
+
19
+ Shigeo Shingo's insight, from the Toyota Production System: **people will always make
20
+ mistakes; that is not the problem worth solving. The problem is letting a mistake become a
21
+ defect.** So you stop trying to make humans more careful and start redesigning the work so
22
+ the mistake either cannot physically happen or announces itself immediately.
23
+
24
+ A poka-yoke ("poh-kah yoh-kay", ポカヨケ) is a *device*: a jig, a shape, a counter: not
25
+ an instruction. In software: a type, a constraint, a hook, a schema, a state machine. The
26
+ single most important consequence:
27
+
28
+ > **A comment, a docstring, a wiki page, a code review checklist, or a line in CLAUDE.md
29
+ > saying "don't do X" is not a poka-yoke.** It is training. Training degrades. A device
30
+ > does not. If your proposed fix relies on someone remembering something, keep going.
31
+
32
+ ## When to Use This Skill
33
+
34
+ - Use when the user says "poka-yoke this", "mistake-proof it", or "make this harder to get wrong".
35
+ - Use when designing an interface, schema or state machine and the ask is "make invalid states unrepresentable" or "so callers cannot screw it up".
36
+ - Use when auditing existing code for footguns: "what could bite us here", "what is easy to misuse".
37
+ - Use after an incident, when the fix must close the class rather than the case: "make sure this never happens again", "this is the third time".
38
+ - Especially for money, auth, permissions, deletion, migrations and pipelines, where failure is silent.
39
+
40
+ ## The two axes
41
+
42
+ Every real poka-yoke answers two questions. Use both when you classify a hazard or propose a
43
+ device. They are the difference between this method and generic code review.
44
+
45
+ ### Axis 1, Regulatory function: what happens when the mistake occurs?
46
+
47
+ This is a strict preference ladder. Always reach for the highest rung you can afford.
48
+
49
+ | Rung | Name | What it does | Software examples |
50
+ |---|---|---|---|
51
+ | **1** | **Control** | The mistake is **impossible**. The work cannot proceed. | Type won't compile · `NOT NULL` / `CHECK` / unique constraint · required function argument · private constructor + smart constructor · PreToolUse hook returns deny · protected branch |
52
+ | **2** | **Warning** | The mistake is possible but **announced at the moment it happens**. | Lint error in the editor · failing CI gate · runtime assertion that throws · confirmation prompt naming the exact thing being destroyed |
53
+ | **3** | **Detection** | The mistake ships, and something **finds it afterward**. | Tests · monitoring · alerting · reconciliation job |
54
+ | **0** | *(not a poka-yoke)* | Relies on a human remembering. | Docs · comments · training · "be careful" · review checklists |
55
+
56
+ Shingo's rule: prefer **control** over **warning**, always, and only settle for warning when
57
+ control is genuinely too expensive, then say *why* out loud. In software the honest reason
58
+ is usually "the language can't express it" or "it would break every existing caller," and
59
+ both are worth stating explicitly so the tradeoff is visible.
60
+
61
+ ### Axis 2, Setting function: how does the device notice?
62
+
63
+ Shingo's three detection methods map cleanly onto software. These are your **inspection
64
+ lenses**, run all three over any interface and you will find hazards that a general
65
+ code review misses.
66
+
67
+ | Method | Factory floor | The question to ask code | Software devices |
68
+ |---|---|---|---|
69
+ | **Contact** | The part physically won't seat unless it's the right shape and orientation | **Can the wrong thing fit?** | Distinct types instead of shared primitives · branded/newtype IDs · parse-don't-validate at boundaries · units in the type · discriminated unions instead of bags of optionals |
70
+ | **Fixed-value** | A counter says all 6 screws were fitted | **Can the wrong count or an incomplete set pass?** | Exhaustive `match`/`switch` over an enum · required fields · "all migrations applied" check · row-count guard on a bulk write · checksums · config validated as a whole at boot |
71
+ | **Motion-step** | A sensor confirms step 3 happened before step 4 | **Can the steps happen in the wrong order, or be skipped?** | Typestate · builder that cannot `.build()` until required steps run · state machines with illegal transitions unrepresentable · idempotency keys · RAII / `defer` / context managers · transactions |
72
+
73
+ ### The third principle: inspect at the source
74
+
75
+ Shingo separated **source inspection** from **informative inspection**, which finds the defect
76
+ only after it exists and comes in two forms. Ranked best first, that is three places you can
77
+ put the device.
78
+
79
+ 1. **Source inspection**: check the *conditions* before the error can occur. Designed in
80
+ where you can, enforced at runtime where you cannot.
81
+ The type, the constraint, the signature.
82
+ 2. **Self-check** (informative): the work checks itself as it happens. Runtime. Assertions,
83
+ fail-fast, validation at the boundary.
84
+ 3. **Successive check** (informative): the next station checks the previous one. Review, CI,
85
+ QA.
86
+
87
+ Push every device as far up this list as it will go. A CI gate that catches a bad migration
88
+ is good; a schema that makes the bad migration unwritable is better and costs less forever.
89
+
90
+ ## How to use this skill
91
+
92
+ Apply the method directly to the subject in front of you. A Terraform module, a support
93
+ runbook, a spreadsheet everyone edits, a release checklist, a
94
+ prompt template, an onboarding process, a physical workflow: the method works on any of them,
95
+ because Shingo developed it on an assembly line, for people fitting springs into switches, and
96
+ not for software at all.
97
+
98
+ Applying it directly means four steps, in order:
99
+
100
+ 1. **Name what is being done, and by whom.** A device protects a specific action taken by a
101
+ specific person or system. "The pipeline" is not an action; "an engineer re-runs the deploy
102
+ job after it fails halfway" is.
103
+ 2. **Run the three lenses** over that action, can the wrong thing fit, can an incomplete or
104
+ wrong-sized set pass, can the steps happen in the wrong order. Most subjects yield
105
+ something on at least one.
106
+ 3. **For each hazard found, state it as a mistake someone could make**, what happens when they
107
+ do, whether it is silent, and what exists today to stop it.
108
+ 4. **Propose the highest-rung device you can afford**, and say which rung it reaches. If you
109
+ land on Warning, say what Control would have required and why you did not take it.
110
+
111
+ Then apply the two rules in *How to talk about this* below: name the mistake rather than the
112
+ mistaken, and never let the answer come out as "be more careful" or "document it". Those are
113
+ rung zero, and the whole method exists because they do not work.
114
+
115
+ **If the request is bare**, `/poka-yoke` with nothing attached, look at what is actually in
116
+ front of you: the current diff, the file under discussion, the thing the conversation has been
117
+ about. Say what you picked in one line before starting, so it is cheap to redirect you. If
118
+ there is genuinely no subject, ask what they want mistake-proofed rather than guessing.
119
+
120
+ ## How to talk about this
121
+
122
+ Two habits keep the analysis honest and keep people from getting defensive:
123
+
124
+ **Name the mistake, not the mistaken.** "This signature lets a caller swap the two IDs" is
125
+ actionable and true. "The developer should have been more careful" is neither. Shingo was
126
+ emphatic that blaming the operator is how organizations avoid fixing the process. Write
127
+ findings about the code's affordances, never about who wrote it.
128
+
129
+ **Say which rung you achieved, and what stopped you going higher.** A recommendation that
130
+ reads "added a runtime assertion (warning), control would need a newtype, which touches 40
131
+ call sites" gives the reader a real decision. One that reads "added validation" does not.
132
+
133
+ ## Example
134
+
135
+ Suppose a destructive API accepts `deleteAccount(accountId: string, tenantId: string)`.
136
+ The two identifiers can be swapped, and the call can target an account outside the caller's
137
+ tenant.
138
+
139
+ 1. **Contact lens:** two plain strings have the same shape, so the wrong value fits.
140
+ 2. **Motion-step lens:** deletion can run before tenant ownership is established.
141
+ 3. **Control device:** replace the strings with distinct validated ID types and expose a
142
+ deletion operation that accepts only an account loaded through the authenticated tenant.
143
+ 4. **Warning fallback:** if compatibility prevents that interface change, reject ownership
144
+ mismatches at the boundary and require a confirmation that names the exact account. State
145
+ explicitly that this is weaker than making the invalid call unrepresentable.
146
+ 5. **Detection:** retain audit logging and reconciliation for failures the control does not
147
+ cover; do not present those after-the-fact checks as the poka-yoke itself.
148
+
149
+ ## Applying changes
150
+
151
+ Propose before you edit. Show the hazard, the proposed device, and the rung it reaches, then
152
+ wait for a go-ahead before changing files: the whole point of this method is that it changes
153
+ the shape of an interface, and that is precisely the kind of change people want to see first.
154
+ Once approved, apply it and record the prevented mistake where future maintainers can verify
155
+ the constraint without mistaking the explanation itself for the device.
156
+
157
+ The exception is when someone has explicitly asked you to write new code: mistake-proofing
158
+ *is* the code they asked for, so build it, then narrate which hazards
159
+ you designed out and why.
160
+
161
+ ## Limitations
162
+
163
+ - Poka-yoke reduces predictable misuse; it cannot prove that a design is correct or cover
164
+ hazards the analysis never identifies.
165
+ - The strongest control may be unavailable in the current language, platform or compatibility
166
+ envelope. When that happens, state the tradeoff and retain appropriate tests, monitoring and
167
+ recovery paths instead of presenting a warning as complete prevention.
168
+ - A guard can itself be wrong, overbroad or operationally expensive. Validate proposed devices
169
+ against real callers and failure modes, especially for destructive, financial, authentication
170
+ and authorization flows.
171
+ - This method complements, but does not replace, domain review, security review, testing,
172
+ observability or incident response.