@olegkoval/agent-skills 1.30.0 → 1.32.0

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 (45) hide show
  1. package/.claude-plugin/plugin.json +4 -2
  2. package/.cursor-plugin/index.json +5 -0
  3. package/.grok-plugin/index.json +5 -0
  4. package/.kiro/steering/website-analytics-bootstrap.md +159 -0
  5. package/.kiro/steering/wikipedia-uk-editor.md +24 -3
  6. package/.windsurf/rules/website-analytics-bootstrap.md +158 -0
  7. package/.windsurf/rules/wikipedia-uk-editor.md +24 -3
  8. package/README.md +8 -6
  9. package/catalog/skills.json +42 -0
  10. package/collections/marketing.json +1 -1
  11. package/collections/software-development.json +2 -1
  12. package/package.json +1 -1
  13. package/packages/marketing/website-analytics-bootstrap/SKILL.md +171 -0
  14. package/packages/marketing/website-analytics-bootstrap/adapters/claude/plugin.json +5 -0
  15. package/packages/marketing/website-analytics-bootstrap/adapters/claude/skills/website-analytics-bootstrap/SKILL.md +172 -0
  16. package/packages/marketing/website-analytics-bootstrap/adapters/cursor/plugin.json +6 -0
  17. package/packages/marketing/website-analytics-bootstrap/adapters/cursor/skills/website-analytics-bootstrap/SKILL.md +172 -0
  18. package/packages/marketing/website-analytics-bootstrap/adapters/grok/plugin.json +6 -0
  19. package/packages/marketing/website-analytics-bootstrap/adapters/grok/skills/website-analytics-bootstrap/SKILL.md +172 -0
  20. package/packages/marketing/website-analytics-bootstrap/adapters/kiro/steering/website-analytics-bootstrap.md +159 -0
  21. package/packages/marketing/website-analytics-bootstrap/adapters/windsurf/rules/website-analytics-bootstrap.md +158 -0
  22. package/packages/software-development/shared-knowledge-artifact/SKILL.md +89 -0
  23. package/packages/software-development/shared-knowledge-artifact/adapters/claude/plugin.json +5 -0
  24. package/packages/software-development/shared-knowledge-artifact/adapters/claude/skills/shared-knowledge-artifact/SKILL.md +90 -0
  25. package/packages/software-development/shared-knowledge-artifact/adapters/claude/skills/shared-knowledge-artifact/references/prompt.txt +78 -0
  26. package/packages/software-development/shared-knowledge-artifact/references/prompt.txt +78 -0
  27. package/packages/software-development/wikipedia-uk-editor/SKILL.md +24 -3
  28. package/packages/software-development/wikipedia-uk-editor/adapters/claude/skills/wikipedia-uk-editor/SKILL.md +24 -3
  29. package/packages/software-development/wikipedia-uk-editor/adapters/claude/skills/wikipedia-uk-editor/references/newcomer-tasks.md +80 -0
  30. package/packages/software-development/wikipedia-uk-editor/adapters/claude/skills/wikipedia-uk-editor/references/strategy.md +10 -0
  31. package/packages/software-development/wikipedia-uk-editor/adapters/claude/skills/wikipedia-uk-editor/scripts/wiki.sh +58 -2
  32. package/packages/software-development/wikipedia-uk-editor/adapters/codex/README.md +39 -9
  33. package/packages/software-development/wikipedia-uk-editor/adapters/cursor/skills/wikipedia-uk-editor/SKILL.md +24 -3
  34. package/packages/software-development/wikipedia-uk-editor/adapters/cursor/skills/wikipedia-uk-editor/references/newcomer-tasks.md +80 -0
  35. package/packages/software-development/wikipedia-uk-editor/adapters/cursor/skills/wikipedia-uk-editor/references/strategy.md +10 -0
  36. package/packages/software-development/wikipedia-uk-editor/adapters/cursor/skills/wikipedia-uk-editor/scripts/wiki.sh +58 -2
  37. package/packages/software-development/wikipedia-uk-editor/adapters/grok/skills/wikipedia-uk-editor/SKILL.md +24 -3
  38. package/packages/software-development/wikipedia-uk-editor/adapters/grok/skills/wikipedia-uk-editor/references/newcomer-tasks.md +80 -0
  39. package/packages/software-development/wikipedia-uk-editor/adapters/grok/skills/wikipedia-uk-editor/references/strategy.md +10 -0
  40. package/packages/software-development/wikipedia-uk-editor/adapters/grok/skills/wikipedia-uk-editor/scripts/wiki.sh +58 -2
  41. package/packages/software-development/wikipedia-uk-editor/adapters/kiro/steering/wikipedia-uk-editor.md +24 -3
  42. package/packages/software-development/wikipedia-uk-editor/adapters/windsurf/rules/wikipedia-uk-editor.md +24 -3
  43. package/packages/software-development/wikipedia-uk-editor/references/newcomer-tasks.md +80 -0
  44. package/packages/software-development/wikipedia-uk-editor/references/strategy.md +10 -0
  45. package/packages/software-development/wikipedia-uk-editor/scripts/wiki.sh +58 -2
@@ -22,7 +22,7 @@ Turn a URL or article title into a complete, policy-compliant Ukrainian Wikipedi
22
22
  A single deliverable written to a scratch file and echoed in chat:
23
23
 
24
24
  - the **target page** (exact ukwiki title, and whether it exists)
25
- - the **wikitext** — full article, or an exact-replacement section, or a precise before/after diff for small fixes
25
+ - the **wikitext** — always the complete final article in one `.wiki` file, ready to paste over the whole edit box; never a diff, never a БУЛО/СТАЛО list of manual replacements
26
26
  - the **edit summary** in Ukrainian (≤ 200 chars)
27
27
  - the **source list** with the URL, publisher, and date actually fetched for each
28
28
  - **risk notes**: notability (ВП:ЗН) standing, anything a patroller will challenge, what still needs a human check
@@ -33,12 +33,15 @@ A single deliverable written to a scratch file and echoed in chat:
33
33
 
34
34
  | Input | Mode |
35
35
  |---|---|
36
+ | explicit newcomer task (tier + type, e.g. "Середні → Оновлювати статті") | mode set by task type — see below |
36
37
  | en.wikipedia.org URL, no uk equivalent | **Translate** — new uk article |
37
38
  | uk.wikipedia.org URL, stub or thin | **Expand** |
38
39
  | uk.wikipedia.org URL with `{{Без джерел}}` / `{{Джерело}}` | **Source** |
39
40
  | uk.wikipedia.org URL, prose/format problems | **Cleanup** |
40
41
  | "what should I edit next" | **Plan** — read `references/strategy.md`, propose a ranked list |
41
42
 
43
+ When a newcomer task type is given, it **overrides** the state-based guess above. The per-type scope contract in `references/newcomer-tasks.md` is binding — an assigned type is a ceiling on what the edit may touch, not a floor.
44
+
42
45
  Resolve the title first — `scripts/wiki.sh` handles redirects. Never draft against the wrong title.
43
46
 
44
47
  ### 2. Read before writing
@@ -48,6 +51,7 @@ Resolve the title first — `scripts/wiki.sh` handles redirects. Never draft aga
48
51
  ./scripts/wiki.sh get en "Title" # source-language wikitext
49
52
  ./scripts/wiki.sh langlink en "Title" uk # does a uk version already exist?
50
53
  ./scripts/wiki.sh check uk "Шаблон:Особа" # does this template/page exist?
54
+ ./scripts/wiki.sh tasks <type> [n] # list candidates for a newcomer task type: copyedit|links|references|update|expand
51
55
  ```
52
56
 
53
57
  Stop and report if:
@@ -82,21 +86,38 @@ Run every item. Report failures rather than hiding them.
82
86
  - [ ] No original synthesis (ВП:ОД)
83
87
  - [ ] Dates, numbers, and name transliterations are Ukrainian-correct
84
88
  - [ ] Edit summary written in Ukrainian and states what changed and why
89
+ - [ ] The edit stayed inside the assigned task type's allowed scope
90
+ - [ ] Any maintenance template removed was actually earned — the underlying problem is genuinely fixed
85
91
 
86
92
  ### 6. Deliver
87
93
 
88
- Write the draft to a scratch file (`.md` alongside the raw `.wiki` text so paste is clean), print the edit summary, and tell the human exactly where to paste it:
94
+ For Expand / Source / Cleanup: fetch the current wikitext, apply the changes programmatically (a small Python pass over the fetched file, asserting each anchor string matched exactly once), and write the whole resulting article out. Verify it before delivering — section list intact, every intended change landed, nothing else dropped.
95
+
96
+ Write the draft to a scratch file: the raw `.wiki` file contains nothing but article wikitext (the full final article, ready to paste over the whole edit box); the human-readable explanation of what changed goes in a separate `.md`. Print the edit summary, and tell the human exactly where to paste it:
89
97
 
90
98
  - new article → `https://uk.wikipedia.org/wiki/Тайтл?action=edit`
91
- - section replace → name the section and its exact current heading
99
+ - existing article → `https://uk.wikipedia.org/w/index.php?title=Тайтл&action=edit`, replace the whole edit box
92
100
  - test first → `Вікіпедія:Пісочниця` or the user's own `Користувач:Ім'я/Чернетка`
93
101
 
102
+ End the delivery with a copy-to-clipboard command in its own fenced block, using a quoted absolute path — quoted because scratchpad paths contain characters the shell will otherwise mangle — always the raw `.wiki` file, never the `.md`:
103
+
104
+ ```sh
105
+ pbcopy < "/absolute/path/to/slug.wiki"
106
+ ```
107
+
108
+ Add an optional second line when the edit summary is long enough to be worth copying:
109
+
110
+ ```sh
111
+ printf '%s' 'Опис редагування…' | pbcopy
112
+ ```
113
+
94
114
  Then stop. Do not offer to save it.
95
115
 
96
116
  ## References
97
117
 
98
118
  - `references/strategy.md` — the contribution strategy: what to farm, in what order, and how to build standing without getting flagged
99
119
  - `references/wikitext-uk.md` — verified uk templates, citation formats, article skeletons, policy shortcuts
120
+ - `references/newcomer-tasks.md` — the newcomer task tiers (Легкі/Середні/Важкі) and the binding scope contract for each task type
100
121
  - `scripts/wiki.sh` — read-only MediaWiki API helper
101
122
 
102
123
  ## Verification
@@ -0,0 +1,80 @@
1
+ # Ukrainian Wikipedia newcomer task types
2
+
3
+ Verified against the live `uk.wikipedia.org` API, 2026-08-20.
4
+
5
+ `MediaWiki:NewcomerTasks.json` is the authoritative GrowthExperiments "Suggested edits"
6
+ (Пропоновані редагування) task-type → maintenance-template map on ukwiki. The table below is
7
+ that map.
8
+
9
+ ## Task-type mapping
10
+
11
+ | ukwiki UI label | Tier | task type | Backing template(s) |
12
+ |---|---|---|---|
13
+ | Вичитувати | Легкі / easy | `copyedit` | `Шаблон:Мовні помилки` |
14
+ | (not offered in UI — structured) | easy | `link-recommendation` | none |
15
+ | (not offered in that UI list) | easy | `links` | `Шаблон:Упорядкувати`, `Шаблон:Брак посилань` |
16
+ | Шукати зовнішні посилання | Середні / medium | `references` | `Шаблон:Без джерел` |
17
+ | Оновлювати статті | Середні / medium | `update` | `Шаблон:Оновити` |
18
+ | (not offered — structured) | medium | `image-recommendation`, `section-image-recommendation` | none |
19
+ | Розширювати короткі статті | Важкі / hard | `expand` | `Шаблон:Доробити` |
20
+
21
+ All six templates confirmed EXISTS. `Шаблон:Доробити` is a REDIRECT to `Шаблон:Заготовка`
22
+ (see `references/wikitext-uk.md`).
23
+
24
+ ## Scope contract per task type
25
+
26
+ An assigned task type is a **ceiling**, not a suggestion — overreach on a young account is what
27
+ draws patrollers (see `references/strategy.md` Phase 1). Stay inside the type you picked.
28
+
29
+ ### `copyedit` — Вичитувати
30
+
31
+ - IS: language, grammar, punctuation, typography fixes only.
32
+ - NOT: no new facts, no new refs, no restructuring, no adding/removing/reordering sections.
33
+ - Remove `{{Мовні помилки}}` in the same edit only if the whole article was actually proofread.
34
+ - Edit summary shape: `Вичитка: виправлено [конкретні помилки]`.
35
+
36
+ ### `links` — Упорядкувати / Брак посилань
37
+
38
+ - IS: wikilinks and formatting only.
39
+ - NOT: no prose rewriting.
40
+ - Edit summary shape: `Впорядкування посилань: [що додано/виправлено]`.
41
+
42
+ ### `references` — Шукати зовнішні посилання
43
+
44
+ - IS: add inline `<ref>` to claims that are **already there**.
45
+ - NOT: never rewrite a claim to fit a source you happened to find. If no source supports it as
46
+ written, report it — do not reshape it.
47
+ - Remove `{{Без джерел}}` only when every substantive claim is cited.
48
+ - Edit summary shape: `Додано джерела: [що саме підтверджено]`.
49
+
50
+ ### `update` — Оновлювати статті
51
+
52
+ - IS: replace outdated values/dates/status with sourced current ones, plus the minimum prose the
53
+ change forces.
54
+ - NOT: no scope expansion, no new sections.
55
+ - Every updated number needs a source actually fetched this session — this is the highest
56
+ fabrication-risk type in the set and SKILL.md Hard Rule 2 applies with no exceptions.
57
+ - Edit summary shape: `Оновлено дані: [що змінено] за станом на [дата]`.
58
+
59
+ ### `expand` — Розширювати короткі статті
60
+
61
+ - IS: the **only** type permitted to add sections and substantial new sourced prose. Routes into
62
+ the existing **Expand** mode in SKILL.md.
63
+ - `{{Заготовка}}` comes off only when the article genuinely stops being a stub.
64
+ - Edit summary shape: `Розширено статтю: додано [розділи/теми], джерела`.
65
+
66
+ ## Out of scope: structured task types
67
+
68
+ `link-recommendation`, `image-recommendation`, and `section-image-recommendation` are served
69
+ through the Growth UI's own accept/reject widget on ukwiki, not by pasting wikitext. This skill
70
+ does not improvise a manual equivalent for them — say so plainly and decline rather than draft
71
+ around it.
72
+
73
+ ## Finding candidates
74
+
75
+ `action=query&list=growthtasks` requires login, so this read-only skill cannot use it. Find
76
+ candidate articles for a task type instead with:
77
+
78
+ ```sh
79
+ ./scripts/wiki.sh tasks <type> [n]
80
+ ```
@@ -31,6 +31,16 @@ Rules for this phase: one change per edit, always an edit summary in Ukrainian,
31
31
 
32
32
  Target: ~30–50 edits, **zero reverts**. A revert in this phase costs more than 50 edits gain.
33
33
 
34
+ ### Newcomer tasks as a ready-made Phase 1 queue
35
+
36
+ Ukrainian Wikipedia's own GrowthExperiments "Suggested edits" (Пропоновані редагування) tiers a
37
+ maintenance backlog into Легкі / Середні / Важкі — see `references/newcomer-tasks.md` for the
38
+ full mapping and per-type scope contract. Легкі (`copyedit`) and Середні (`references`, `update`)
39
+ are lower-risk, community-endorsed work for this phase, but they are not zero-revert-risk:
40
+ sourcing and fabrication risks still require verification. Pick candidates
41
+ with `./scripts/wiki.sh tasks <type>` and stay strictly inside the assigned scope. Важкі
42
+ (`expand`) is not Phase 1 work — it belongs in Phase 2 stream A/B, once autoconfirmed.
43
+
34
44
  ## Phase 2 — the volume engine (weeks 2–8)
35
45
 
36
46
  Four streams, run in parallel, roughly in this priority order. Value per unit of effort, highest first:
@@ -10,6 +10,7 @@
10
10
  # wiki.sh search <lang> <query> [n] search article titles
11
11
  # wiki.sh backlog <category> [n] list pages in a uk category (maintenance backlogs)
12
12
  # wiki.sh info <lang> <title> length, last edit, categories, templates used
13
+ # wiki.sh tasks <type> [n] candidate articles for a newcomer task type
13
14
  set -eu
14
15
 
15
16
  UA="wikipedia-uk-editor-skill/1.0 (https://github.com/oleg-koval/agent-skills)"
@@ -24,7 +25,7 @@ api() {
24
25
  jqp() { python3 -c "$1"; }
25
26
 
26
27
  cmd=${1:-}
27
- [ -n "$cmd" ] || { sed -n '2,14p' "$0"; exit 1; }
28
+ [ -n "$cmd" ] || { sed -n '2,13p' "$0"; exit 1; }
28
29
  shift
29
30
 
30
31
  case "$cmd" in
@@ -92,7 +93,62 @@ print('touched:',p.get('touched'))
92
93
  print('cats :', ', '.join(c['title'] for c in p.get('categories',[])) or '(none)')
93
94
  print('tmpls :', ', '.join(t['title'] for t in p.get('templates',[])) or '(none)')"
94
95
  ;;
96
+ tasks)
97
+ type=${1:-}
98
+ n=${2:-20}
99
+ case "$n" in
100
+ ''|*[!0-9]*) echo "Invalid task limit: '$n' (expected a non-negative integer)" >&2; exit 1 ;;
101
+ esac
102
+ case "$type" in
103
+ copyedit) templates="Шаблон:Мовні помилки" ;;
104
+ links) templates="Шаблон:Упорядкувати|Шаблон:Брак посилань" ;;
105
+ references) templates="Шаблон:Без джерел" ;;
106
+ update) templates="Шаблон:Оновити" ;;
107
+ expand) templates="Шаблон:Доробити" ;;
108
+ *)
109
+ echo "Unknown task type: '$type'. Valid types: copyedit, links, references, update, expand" >&2
110
+ exit 1
111
+ ;;
112
+ esac
113
+ [ "$n" -gt 0 ] || exit 0
114
+ results=$(mktemp)
115
+ trap 'rm -f "$results"' EXIT
116
+ oldifs=$IFS
117
+ IFS='|'
118
+ for tmpl in $templates; do
119
+ IFS=$oldifs
120
+ api uk --data-urlencode "action=query" --data-urlencode "list=embeddedin" \
121
+ --data-urlencode "eititle=$tmpl" --data-urlencode "einamespace=0" \
122
+ --data-urlencode "eilimit=$n" |
123
+ jqp "import json,sys
124
+ d=json.load(sys.stdin)
125
+ if 'error' in d: sys.exit('NOT FOUND: '+d['error'].get('info',''))
126
+ for m in d['query']['embeddedin']: print(m['title'])" |
127
+ while IFS= read -r title; do printf '%s\t%s\n' "$tmpl" "$title"; done >> "$results"
128
+ done
129
+ python3 - "$results" "$n" <<'PY'
130
+ import sys
131
+ from collections import OrderedDict
132
+
133
+ path, limit_text = sys.argv[1:]
134
+ limit = int(limit_text)
135
+ groups = OrderedDict()
136
+ seen = set()
137
+ with open(path, encoding="utf-8") as handle:
138
+ for line in handle:
139
+ template, title = line.rstrip("\n").split("\t", 1)
140
+ if title in seen:
141
+ continue
142
+ seen.add(title)
143
+ groups.setdefault(template, []).append(title)
144
+ if len(seen) == limit:
145
+ break
146
+ for template, titles in groups.items():
147
+ print(f"== {template} ==")
148
+ print("\n".join(titles))
149
+ PY
150
+ ;;
95
151
  *)
96
- sed -n '2,14p' "$0"; exit 1
152
+ sed -n '2,13p' "$0"; exit 1
97
153
  ;;
98
154
  esac