@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.
- package/.claude-plugin/plugin.json +4 -2
- package/.cursor-plugin/index.json +5 -0
- package/.grok-plugin/index.json +5 -0
- package/.kiro/steering/website-analytics-bootstrap.md +159 -0
- package/.kiro/steering/wikipedia-uk-editor.md +24 -3
- package/.windsurf/rules/website-analytics-bootstrap.md +158 -0
- package/.windsurf/rules/wikipedia-uk-editor.md +24 -3
- package/README.md +8 -6
- package/catalog/skills.json +42 -0
- package/collections/marketing.json +1 -1
- package/collections/software-development.json +2 -1
- package/package.json +1 -1
- package/packages/marketing/website-analytics-bootstrap/SKILL.md +171 -0
- package/packages/marketing/website-analytics-bootstrap/adapters/claude/plugin.json +5 -0
- package/packages/marketing/website-analytics-bootstrap/adapters/claude/skills/website-analytics-bootstrap/SKILL.md +172 -0
- package/packages/marketing/website-analytics-bootstrap/adapters/cursor/plugin.json +6 -0
- package/packages/marketing/website-analytics-bootstrap/adapters/cursor/skills/website-analytics-bootstrap/SKILL.md +172 -0
- package/packages/marketing/website-analytics-bootstrap/adapters/grok/plugin.json +6 -0
- package/packages/marketing/website-analytics-bootstrap/adapters/grok/skills/website-analytics-bootstrap/SKILL.md +172 -0
- package/packages/marketing/website-analytics-bootstrap/adapters/kiro/steering/website-analytics-bootstrap.md +159 -0
- package/packages/marketing/website-analytics-bootstrap/adapters/windsurf/rules/website-analytics-bootstrap.md +158 -0
- package/packages/software-development/shared-knowledge-artifact/SKILL.md +89 -0
- package/packages/software-development/shared-knowledge-artifact/adapters/claude/plugin.json +5 -0
- package/packages/software-development/shared-knowledge-artifact/adapters/claude/skills/shared-knowledge-artifact/SKILL.md +90 -0
- package/packages/software-development/shared-knowledge-artifact/adapters/claude/skills/shared-knowledge-artifact/references/prompt.txt +78 -0
- package/packages/software-development/shared-knowledge-artifact/references/prompt.txt +78 -0
- package/packages/software-development/wikipedia-uk-editor/SKILL.md +24 -3
- package/packages/software-development/wikipedia-uk-editor/adapters/claude/skills/wikipedia-uk-editor/SKILL.md +24 -3
- package/packages/software-development/wikipedia-uk-editor/adapters/claude/skills/wikipedia-uk-editor/references/newcomer-tasks.md +80 -0
- package/packages/software-development/wikipedia-uk-editor/adapters/claude/skills/wikipedia-uk-editor/references/strategy.md +10 -0
- package/packages/software-development/wikipedia-uk-editor/adapters/claude/skills/wikipedia-uk-editor/scripts/wiki.sh +58 -2
- package/packages/software-development/wikipedia-uk-editor/adapters/codex/README.md +39 -9
- package/packages/software-development/wikipedia-uk-editor/adapters/cursor/skills/wikipedia-uk-editor/SKILL.md +24 -3
- package/packages/software-development/wikipedia-uk-editor/adapters/cursor/skills/wikipedia-uk-editor/references/newcomer-tasks.md +80 -0
- package/packages/software-development/wikipedia-uk-editor/adapters/cursor/skills/wikipedia-uk-editor/references/strategy.md +10 -0
- package/packages/software-development/wikipedia-uk-editor/adapters/cursor/skills/wikipedia-uk-editor/scripts/wiki.sh +58 -2
- package/packages/software-development/wikipedia-uk-editor/adapters/grok/skills/wikipedia-uk-editor/SKILL.md +24 -3
- package/packages/software-development/wikipedia-uk-editor/adapters/grok/skills/wikipedia-uk-editor/references/newcomer-tasks.md +80 -0
- package/packages/software-development/wikipedia-uk-editor/adapters/grok/skills/wikipedia-uk-editor/references/strategy.md +10 -0
- package/packages/software-development/wikipedia-uk-editor/adapters/grok/skills/wikipedia-uk-editor/scripts/wiki.sh +58 -2
- package/packages/software-development/wikipedia-uk-editor/adapters/kiro/steering/wikipedia-uk-editor.md +24 -3
- package/packages/software-development/wikipedia-uk-editor/adapters/windsurf/rules/wikipedia-uk-editor.md +24 -3
- package/packages/software-development/wikipedia-uk-editor/references/newcomer-tasks.md +80 -0
- package/packages/software-development/wikipedia-uk-editor/references/strategy.md +10 -0
- package/packages/software-development/wikipedia-uk-editor/scripts/wiki.sh +58 -2
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shared-knowledge-artifact
|
|
3
|
+
description: Build a shared, self-persisting knowledge ledger as a Claude Artifact — a private page that stores its own data, renders itself from that data, and saves new versions of itself, so several agents can read the same lessons before starting work and append to them afterwards. Use when the user wants agents to learn from each other, asks for a shared knowledge base, lessons-learned log, gotcha ledger, or cross-agent memory page they can hand to other sessions.
|
|
4
|
+
license: MIT
|
|
5
|
+
allowed-tools: Bash, Read, Write, Edit, Grep, Glob, Skill, Artifact
|
|
6
|
+
compatibility: Claude Code only — requires the Artifact tool and the artifact runtime capabilities (`capabilities: {artifact: {}}`).
|
|
7
|
+
metadata:
|
|
8
|
+
author: Oleg Koval
|
|
9
|
+
package: shared-knowledge-artifact
|
|
10
|
+
tags:
|
|
11
|
+
- artifacts
|
|
12
|
+
- knowledge-base
|
|
13
|
+
- multi-agent
|
|
14
|
+
- memory
|
|
15
|
+
- lessons-learned
|
|
16
|
+
- documentation
|
|
17
|
+
---
|
|
18
|
+
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
|
|
19
|
+
|
|
20
|
+
# shared-knowledge-artifact
|
|
21
|
+
|
|
22
|
+
Publish one private Artifact page that acts as an append-only knowledge ledger which multiple agents (and the user) read before starting work and write to when reality corrects them. The page **is** the record: it stores its own data and publishes new versions of itself, so nothing depends on a server or on local files.
|
|
23
|
+
|
|
24
|
+
## Trigger phrases
|
|
25
|
+
|
|
26
|
+
- create a shared artifact my other agents can learn from
|
|
27
|
+
- shared knowledge base / lessons-learned log / gotcha ledger for agents
|
|
28
|
+
- cross-agent memory page
|
|
29
|
+
- somewhere agents can record what they learned so they don't repeat it
|
|
30
|
+
|
|
31
|
+
## Before writing any code
|
|
32
|
+
|
|
33
|
+
1. Invoke the `artifact-capabilities` skill — mandatory before declaring `capabilities` or writing any `window.claude.*` code.
|
|
34
|
+
2. Invoke the `artifact-design` skill — calibrates the design treatment.
|
|
35
|
+
3. Read the user's actual rules (`CLAUDE.md`, any verification/preferences doc, agent memory) and **seed the ledger with 6-10 real lessons already recorded there**. No lorem, no invented examples — a ledger that opens with fake entries never gets used.
|
|
36
|
+
|
|
37
|
+
## Persistence mechanism
|
|
38
|
+
|
|
39
|
+
- Declare `capabilities: {artifact: {}}` at publish time.
|
|
40
|
+
- Store the data as a JSON object inside `<script type="application/json" id="ledger-state">`. That block is the authoritative record; the visible page is **rendered from it** at load. Never serialize the live DOM to save.
|
|
41
|
+
- To persist: snapshot `document.documentElement.outerHTML` **once at script start** (pristine source, before any rendering), then on save splice the new JSON into that snapshot's `#ledger-state` block, prepend `<!doctype html>`, and call `artifact.publish(doc)`.
|
|
42
|
+
- Get the namespace with `const artifact = await claude.use("artifact")`; branch on `null` (this view cannot write) and render a read-only state instead of a broken control.
|
|
43
|
+
- Handle publish errors by code: `conflict` means someone published first and every view reloads to the winner — no retry, tell the person to re-add; `not_granted` / `not_writer` means read-only.
|
|
44
|
+
- Publish only after an explicit user action, never on load; batch rapid edits into one publish.
|
|
45
|
+
- Escape `</script` when writing the JSON back, and escape every interpolated note field on render.
|
|
46
|
+
|
|
47
|
+
## Note schema
|
|
48
|
+
|
|
49
|
+
One fact per entry:
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{"id":"n9","kind":"lesson|trap|pref","scope":"shell|review|github|...",
|
|
53
|
+
"title":"the rule in one line",
|
|
54
|
+
"body":"the concrete behaviour, specific enough to act on",
|
|
55
|
+
"why":"the failure that made this a rule",
|
|
56
|
+
"author":"model or agent name","date":"YYYY-MM-DD"}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Kinds: **lesson** = a habit that holds; **trap** = something that silently produces a *wrong* answer; **pref** = how the user wants the work done.
|
|
60
|
+
|
|
61
|
+
## UI the page must have
|
|
62
|
+
|
|
63
|
+
- Header: name, one paragraph on what the ledger is for, and live counts (total, traps, lessons, preferences) in `tabular-nums`.
|
|
64
|
+
- Note list, newest first: kind tag, scope tag, author, date, title, body, and a `Why:` line. Kind tags use semantic colour (trap = critical, pref = warning, lesson = accent), separate from the page accent.
|
|
65
|
+
- Scope filter chips derived from the data, including an `all` chip, with `aria-pressed` state.
|
|
66
|
+
- An "Add a note" form (kind, scope, author, title, body, why) that appends to the JSON and publishes, with an inline status line reporting published / conflict / read-only.
|
|
67
|
+
- A "Protocol for agents" section **on the page itself**: read the page with the Artifact tool `action: "read"` before substantive work; parse the `#ledger-state` JSON, never scrape the DOM; **append, don't rewrite**; re-read before writing because another agent may have published since; one fact per note with the failure that caused it. Include the schema snippet.
|
|
68
|
+
- Gatekeeping copy: only non-obvious, durable, cross-cutting lessons. If a repo's `CLAUDE.md` already says it, or a review bot already catches it, leave it out — a littered ledger is worse than a thin one.
|
|
69
|
+
|
|
70
|
+
## Design constraints
|
|
71
|
+
|
|
72
|
+
- Utilitarian but genuinely polished: this is a reference document, not a landing page. No oversized hero, no emoji section markers, no gradient hero, no everything-centered layout.
|
|
73
|
+
- Avoid the AI-default looks: warm cream + serif + terracotta, near-black + acid green, Inter or Space Grotesk as the "safe" face.
|
|
74
|
+
- Pair a display face, a body face, and a mono utility face from Google Fonts (the only permitted external host), each with a real fallback stack.
|
|
75
|
+
- Theme-aware in all three states: full light palette as tokens on bare `:root`; redefined under `@media (prefers-color-scheme: dark)` guarded as `:root:not([data-theme="light"])`; redefined again under `:root[data-theme="dark"]`. Style everything through tokens and give `body` an explicit token background. No colour whose only definition sits inside a media or `[data-theme]` block.
|
|
76
|
+
- Layout with flex/grid + `gap`, not per-element margins. Wide content in its own `overflow-x: auto` container. Visible focus states. Respect `prefers-reduced-motion`.
|
|
77
|
+
- Title: a short, specific noun-phrase product name (2-4 words), no dash-explainer. Pass a one-sentence `description` and an emoji `favicon`, and keep both stable across redeploys.
|
|
78
|
+
|
|
79
|
+
## Deliverable
|
|
80
|
+
|
|
81
|
+
Write the HTML to a file, publish it with the Artifact tool, then report:
|
|
82
|
+
|
|
83
|
+
- the URL;
|
|
84
|
+
- that it stays private until shared from the page's share menu;
|
|
85
|
+
- the exact instructions another agent needs — read via Artifact `action: "read"` with that URL, and write by appending to `notes` and republishing **with `url` set to that URL** (a publish *without* `url` forks a separate artifact instead of updating this one).
|
|
86
|
+
|
|
87
|
+
## Notes
|
|
88
|
+
|
|
89
|
+
- The full copy-paste prompt version of this workflow lives in `references/prompt.txt` — hand it to another agent or session verbatim.
|
|
90
|
+
- Redeploy by republishing the same file path in the same conversation, or by passing `url` from any other conversation.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
BUILD A SHARED AGENT-KNOWLEDGE ARTIFACT
|
|
2
|
+
|
|
3
|
+
Goal
|
|
4
|
+
Publish a single private Claude Artifact page that acts as an append-only, self-persisting
|
|
5
|
+
knowledge ledger which multiple agents (and I) read before starting work and write to when
|
|
6
|
+
reality corrects us. The page IS the record: it stores its own data and saves new versions of
|
|
7
|
+
itself, so nothing depends on a server or on my local files.
|
|
8
|
+
|
|
9
|
+
Before writing any code
|
|
10
|
+
1. Load the artifact-capabilities skill (you must, before declaring capabilities or writing any
|
|
11
|
+
window.claude.* code) and the artifact-design skill (calibrates the design treatment).
|
|
12
|
+
2. Read my global rules (CLAUDE.md / VERIFICATION.md / memory) and seed the ledger with 6-10
|
|
13
|
+
REAL lessons already recorded there. No lorem, no invented examples.
|
|
14
|
+
|
|
15
|
+
Required behaviour
|
|
16
|
+
- Declare capabilities: {artifact: {}} so the page can publish new versions of itself.
|
|
17
|
+
- Store the data as a JSON object inside a <script type="application/json" id="ledger-state">
|
|
18
|
+
block. That block is the authoritative record; the visible page is RENDERED from it at load.
|
|
19
|
+
Never serialize the live DOM to save.
|
|
20
|
+
- To persist: snapshot document.documentElement.outerHTML once at script start (pristine source,
|
|
21
|
+
before any rendering), then on save splice the new JSON into the #ledger-state block of that
|
|
22
|
+
snapshot, prepend <!doctype html>, and call artifact.publish(doc).
|
|
23
|
+
- Get the namespace with: const artifact = await claude.use("artifact"); branch on null (view
|
|
24
|
+
cannot write) and render a read-only state instead of a broken control.
|
|
25
|
+
- Handle publish errors by code: "conflict" means someone published first and every view reloads
|
|
26
|
+
to the winner (no retry - tell the person to re-add); "not_granted"/"not_writer" means
|
|
27
|
+
read-only. Publish only after an explicit user action, never on page load, and batch rapid
|
|
28
|
+
edits into one publish.
|
|
29
|
+
|
|
30
|
+
Note schema (one fact per entry)
|
|
31
|
+
{"id":"...", "kind":"lesson|trap|pref", "scope":"shell|review|github|...",
|
|
32
|
+
"title":"the rule in one line", "body":"the concrete behaviour, specific enough to act on",
|
|
33
|
+
"why":"the failure that made this a rule", "author":"model or agent name",
|
|
34
|
+
"date":"YYYY-MM-DD"}
|
|
35
|
+
Kinds: lesson = a habit that holds; trap = something that silently produces a WRONG answer;
|
|
36
|
+
pref = how I want the work done.
|
|
37
|
+
|
|
38
|
+
UI the page must have
|
|
39
|
+
- Header: title, one-paragraph statement of what the ledger is for, and live counts
|
|
40
|
+
(total notes, traps, lessons, preferences) in tabular-nums.
|
|
41
|
+
- Note list, newest first, each note showing kind tag, scope tag, author, date, title, body,
|
|
42
|
+
and a "Why:" line. Kind tags carry semantic colour (trap = critical, pref = warning,
|
|
43
|
+
lesson = accent) separate from the page accent.
|
|
44
|
+
- Scope filter chips derived from the data, including an "all" chip, with aria-pressed state.
|
|
45
|
+
- An "Add a note" form (kind select, scope, author, title, body, why) that appends to the JSON
|
|
46
|
+
and publishes, with an inline status line reporting published / conflict / read-only.
|
|
47
|
+
- A "Protocol for agents" section, on the page itself, stating: read the page with the Artifact
|
|
48
|
+
tool action "read" before substantive work; parse the #ledger-state JSON, never scrape the DOM;
|
|
49
|
+
APPEND, don't rewrite; re-read before writing because another agent may have published since;
|
|
50
|
+
and one fact per note with the failure that caused it. Include a copyable JSON snippet of the
|
|
51
|
+
schema.
|
|
52
|
+
- Gatekeeping copy: only non-obvious, durable, cross-cutting lessons. If a repo's CLAUDE.md
|
|
53
|
+
already says it or a review bot already catches it, leave it out. A littered ledger is worse
|
|
54
|
+
than a thin one.
|
|
55
|
+
|
|
56
|
+
Design constraints
|
|
57
|
+
- Utilitarian but genuinely polished; this is a reference document, not a landing page. No
|
|
58
|
+
oversized hero, no emoji section markers, no gradient hero, no everything-centered layout.
|
|
59
|
+
- Avoid the AI-default looks: warm cream + serif + terracotta, near-black + acid green, Inter or
|
|
60
|
+
Space Grotesk as the safe face.
|
|
61
|
+
- Pair a display face with a body face and a mono utility face from Google Fonts (the only
|
|
62
|
+
permitted external host), each with a real fallback stack.
|
|
63
|
+
- Theme-aware in all three states: full light palette as tokens on bare :root, redefined under
|
|
64
|
+
@media (prefers-color-scheme: dark) guarded as :root:not([data-theme="light"]), and again under
|
|
65
|
+
:root[data-theme="dark"]. Style everything through tokens; body must set an explicit token
|
|
66
|
+
background. No colour whose only definition sits inside a media or [data-theme] block.
|
|
67
|
+
- Layout with flex/grid + gap, not per-element margins. Wide content in its own overflow-x:auto
|
|
68
|
+
container. Visible focus states. Respect prefers-reduced-motion.
|
|
69
|
+
- Escape all interpolated note text on render, and escape "</script" when writing the JSON back.
|
|
70
|
+
- Title: a short, specific noun-phrase product name (2-4 words), no dash-explainer. Pass a
|
|
71
|
+
one-sentence description and an emoji favicon, and keep both stable across redeploys.
|
|
72
|
+
|
|
73
|
+
Deliverable
|
|
74
|
+
Write the HTML to a file, publish it with the Artifact tool, and report back: the URL, the fact
|
|
75
|
+
that it is private until shared from the page's share menu, and the exact instructions another
|
|
76
|
+
agent needs - read via Artifact action "read" with that URL, and write by appending to notes and
|
|
77
|
+
republishing with `url` set to that URL (a publish WITHOUT url forks a separate artifact instead
|
|
78
|
+
of updating this one).
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
BUILD A SHARED AGENT-KNOWLEDGE ARTIFACT
|
|
2
|
+
|
|
3
|
+
Goal
|
|
4
|
+
Publish a single private Claude Artifact page that acts as an append-only, self-persisting
|
|
5
|
+
knowledge ledger which multiple agents (and I) read before starting work and write to when
|
|
6
|
+
reality corrects us. The page IS the record: it stores its own data and saves new versions of
|
|
7
|
+
itself, so nothing depends on a server or on my local files.
|
|
8
|
+
|
|
9
|
+
Before writing any code
|
|
10
|
+
1. Load the artifact-capabilities skill (you must, before declaring capabilities or writing any
|
|
11
|
+
window.claude.* code) and the artifact-design skill (calibrates the design treatment).
|
|
12
|
+
2. Read my global rules (CLAUDE.md / VERIFICATION.md / memory) and seed the ledger with 6-10
|
|
13
|
+
REAL lessons already recorded there. No lorem, no invented examples.
|
|
14
|
+
|
|
15
|
+
Required behaviour
|
|
16
|
+
- Declare capabilities: {artifact: {}} so the page can publish new versions of itself.
|
|
17
|
+
- Store the data as a JSON object inside a <script type="application/json" id="ledger-state">
|
|
18
|
+
block. That block is the authoritative record; the visible page is RENDERED from it at load.
|
|
19
|
+
Never serialize the live DOM to save.
|
|
20
|
+
- To persist: snapshot document.documentElement.outerHTML once at script start (pristine source,
|
|
21
|
+
before any rendering), then on save splice the new JSON into the #ledger-state block of that
|
|
22
|
+
snapshot, prepend <!doctype html>, and call artifact.publish(doc).
|
|
23
|
+
- Get the namespace with: const artifact = await claude.use("artifact"); branch on null (view
|
|
24
|
+
cannot write) and render a read-only state instead of a broken control.
|
|
25
|
+
- Handle publish errors by code: "conflict" means someone published first and every view reloads
|
|
26
|
+
to the winner (no retry - tell the person to re-add); "not_granted"/"not_writer" means
|
|
27
|
+
read-only. Publish only after an explicit user action, never on page load, and batch rapid
|
|
28
|
+
edits into one publish.
|
|
29
|
+
|
|
30
|
+
Note schema (one fact per entry)
|
|
31
|
+
{"id":"...", "kind":"lesson|trap|pref", "scope":"shell|review|github|...",
|
|
32
|
+
"title":"the rule in one line", "body":"the concrete behaviour, specific enough to act on",
|
|
33
|
+
"why":"the failure that made this a rule", "author":"model or agent name",
|
|
34
|
+
"date":"YYYY-MM-DD"}
|
|
35
|
+
Kinds: lesson = a habit that holds; trap = something that silently produces a WRONG answer;
|
|
36
|
+
pref = how I want the work done.
|
|
37
|
+
|
|
38
|
+
UI the page must have
|
|
39
|
+
- Header: title, one-paragraph statement of what the ledger is for, and live counts
|
|
40
|
+
(total notes, traps, lessons, preferences) in tabular-nums.
|
|
41
|
+
- Note list, newest first, each note showing kind tag, scope tag, author, date, title, body,
|
|
42
|
+
and a "Why:" line. Kind tags carry semantic colour (trap = critical, pref = warning,
|
|
43
|
+
lesson = accent) separate from the page accent.
|
|
44
|
+
- Scope filter chips derived from the data, including an "all" chip, with aria-pressed state.
|
|
45
|
+
- An "Add a note" form (kind select, scope, author, title, body, why) that appends to the JSON
|
|
46
|
+
and publishes, with an inline status line reporting published / conflict / read-only.
|
|
47
|
+
- A "Protocol for agents" section, on the page itself, stating: read the page with the Artifact
|
|
48
|
+
tool action "read" before substantive work; parse the #ledger-state JSON, never scrape the DOM;
|
|
49
|
+
APPEND, don't rewrite; re-read before writing because another agent may have published since;
|
|
50
|
+
and one fact per note with the failure that caused it. Include a copyable JSON snippet of the
|
|
51
|
+
schema.
|
|
52
|
+
- Gatekeeping copy: only non-obvious, durable, cross-cutting lessons. If a repo's CLAUDE.md
|
|
53
|
+
already says it or a review bot already catches it, leave it out. A littered ledger is worse
|
|
54
|
+
than a thin one.
|
|
55
|
+
|
|
56
|
+
Design constraints
|
|
57
|
+
- Utilitarian but genuinely polished; this is a reference document, not a landing page. No
|
|
58
|
+
oversized hero, no emoji section markers, no gradient hero, no everything-centered layout.
|
|
59
|
+
- Avoid the AI-default looks: warm cream + serif + terracotta, near-black + acid green, Inter or
|
|
60
|
+
Space Grotesk as the safe face.
|
|
61
|
+
- Pair a display face with a body face and a mono utility face from Google Fonts (the only
|
|
62
|
+
permitted external host), each with a real fallback stack.
|
|
63
|
+
- Theme-aware in all three states: full light palette as tokens on bare :root, redefined under
|
|
64
|
+
@media (prefers-color-scheme: dark) guarded as :root:not([data-theme="light"]), and again under
|
|
65
|
+
:root[data-theme="dark"]. Style everything through tokens; body must set an explicit token
|
|
66
|
+
background. No colour whose only definition sits inside a media or [data-theme] block.
|
|
67
|
+
- Layout with flex/grid + gap, not per-element margins. Wide content in its own overflow-x:auto
|
|
68
|
+
container. Visible focus states. Respect prefers-reduced-motion.
|
|
69
|
+
- Escape all interpolated note text on render, and escape "</script" when writing the JSON back.
|
|
70
|
+
- Title: a short, specific noun-phrase product name (2-4 words), no dash-explainer. Pass a
|
|
71
|
+
one-sentence description and an emoji favicon, and keep both stable across redeploys.
|
|
72
|
+
|
|
73
|
+
Deliverable
|
|
74
|
+
Write the HTML to a file, publish it with the Artifact tool, and report back: the URL, the fact
|
|
75
|
+
that it is private until shared from the page's share menu, and the exact instructions another
|
|
76
|
+
agent needs - read via Artifact action "read" with that URL, and write by appending to notes and
|
|
77
|
+
republishing with `url` set to that URL (a publish WITHOUT url forks a separate artifact instead
|
|
78
|
+
of updating this one).
|
|
@@ -34,7 +34,7 @@ Turn a URL or article title into a complete, policy-compliant Ukrainian Wikipedi
|
|
|
34
34
|
A single deliverable written to a scratch file and echoed in chat:
|
|
35
35
|
|
|
36
36
|
- the **target page** (exact ukwiki title, and whether it exists)
|
|
37
|
-
- the **wikitext** —
|
|
37
|
+
- 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
|
|
38
38
|
- the **edit summary** in Ukrainian (≤ 200 chars)
|
|
39
39
|
- the **source list** with the URL, publisher, and date actually fetched for each
|
|
40
40
|
- **risk notes**: notability (ВП:ЗН) standing, anything a patroller will challenge, what still needs a human check
|
|
@@ -45,12 +45,15 @@ A single deliverable written to a scratch file and echoed in chat:
|
|
|
45
45
|
|
|
46
46
|
| Input | Mode |
|
|
47
47
|
|---|---|
|
|
48
|
+
| explicit newcomer task (tier + type, e.g. "Середні → Оновлювати статті") | mode set by task type — see below |
|
|
48
49
|
| en.wikipedia.org URL, no uk equivalent | **Translate** — new uk article |
|
|
49
50
|
| uk.wikipedia.org URL, stub or thin | **Expand** |
|
|
50
51
|
| uk.wikipedia.org URL with `{{Без джерел}}` / `{{Джерело}}` | **Source** |
|
|
51
52
|
| uk.wikipedia.org URL, prose/format problems | **Cleanup** |
|
|
52
53
|
| "what should I edit next" | **Plan** — read `references/strategy.md`, propose a ranked list |
|
|
53
54
|
|
|
55
|
+
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.
|
|
56
|
+
|
|
54
57
|
Resolve the title first — `scripts/wiki.sh` handles redirects. Never draft against the wrong title.
|
|
55
58
|
|
|
56
59
|
### 2. Read before writing
|
|
@@ -60,6 +63,7 @@ Resolve the title first — `scripts/wiki.sh` handles redirects. Never draft aga
|
|
|
60
63
|
./scripts/wiki.sh get en "Title" # source-language wikitext
|
|
61
64
|
./scripts/wiki.sh langlink en "Title" uk # does a uk version already exist?
|
|
62
65
|
./scripts/wiki.sh check uk "Шаблон:Особа" # does this template/page exist?
|
|
66
|
+
./scripts/wiki.sh tasks <type> [n] # list candidates for a newcomer task type: copyedit|links|references|update|expand
|
|
63
67
|
```
|
|
64
68
|
|
|
65
69
|
Stop and report if:
|
|
@@ -94,21 +98,38 @@ Run every item. Report failures rather than hiding them.
|
|
|
94
98
|
- [ ] No original synthesis (ВП:ОД)
|
|
95
99
|
- [ ] Dates, numbers, and name transliterations are Ukrainian-correct
|
|
96
100
|
- [ ] Edit summary written in Ukrainian and states what changed and why
|
|
101
|
+
- [ ] The edit stayed inside the assigned task type's allowed scope
|
|
102
|
+
- [ ] Any maintenance template removed was actually earned — the underlying problem is genuinely fixed
|
|
97
103
|
|
|
98
104
|
### 6. Deliver
|
|
99
105
|
|
|
100
|
-
|
|
106
|
+
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.
|
|
107
|
+
|
|
108
|
+
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:
|
|
101
109
|
|
|
102
110
|
- new article → `https://uk.wikipedia.org/wiki/Тайтл?action=edit`
|
|
103
|
-
-
|
|
111
|
+
- existing article → `https://uk.wikipedia.org/w/index.php?title=Тайтл&action=edit`, replace the whole edit box
|
|
104
112
|
- test first → `Вікіпедія:Пісочниця` or the user's own `Користувач:Ім'я/Чернетка`
|
|
105
113
|
|
|
114
|
+
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`:
|
|
115
|
+
|
|
116
|
+
```sh
|
|
117
|
+
pbcopy < "/absolute/path/to/slug.wiki"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Add an optional second line when the edit summary is long enough to be worth copying:
|
|
121
|
+
|
|
122
|
+
```sh
|
|
123
|
+
printf '%s' 'Опис редагування…' | pbcopy
|
|
124
|
+
```
|
|
125
|
+
|
|
106
126
|
Then stop. Do not offer to save it.
|
|
107
127
|
|
|
108
128
|
## References
|
|
109
129
|
|
|
110
130
|
- `references/strategy.md` — the contribution strategy: what to farm, in what order, and how to build standing without getting flagged
|
|
111
131
|
- `references/wikitext-uk.md` — verified uk templates, citation formats, article skeletons, policy shortcuts
|
|
132
|
+
- `references/newcomer-tasks.md` — the newcomer task tiers (Легкі/Середні/Важкі) and the binding scope contract for each task type
|
|
112
133
|
- `scripts/wiki.sh` — read-only MediaWiki API helper
|
|
113
134
|
|
|
114
135
|
## Verification
|
|
@@ -35,7 +35,7 @@ Turn a URL or article title into a complete, policy-compliant Ukrainian Wikipedi
|
|
|
35
35
|
A single deliverable written to a scratch file and echoed in chat:
|
|
36
36
|
|
|
37
37
|
- the **target page** (exact ukwiki title, and whether it exists)
|
|
38
|
-
- the **wikitext** —
|
|
38
|
+
- 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
|
|
39
39
|
- the **edit summary** in Ukrainian (≤ 200 chars)
|
|
40
40
|
- the **source list** with the URL, publisher, and date actually fetched for each
|
|
41
41
|
- **risk notes**: notability (ВП:ЗН) standing, anything a patroller will challenge, what still needs a human check
|
|
@@ -46,12 +46,15 @@ A single deliverable written to a scratch file and echoed in chat:
|
|
|
46
46
|
|
|
47
47
|
| Input | Mode |
|
|
48
48
|
|---|---|
|
|
49
|
+
| explicit newcomer task (tier + type, e.g. "Середні → Оновлювати статті") | mode set by task type — see below |
|
|
49
50
|
| en.wikipedia.org URL, no uk equivalent | **Translate** — new uk article |
|
|
50
51
|
| uk.wikipedia.org URL, stub or thin | **Expand** |
|
|
51
52
|
| uk.wikipedia.org URL with `{{Без джерел}}` / `{{Джерело}}` | **Source** |
|
|
52
53
|
| uk.wikipedia.org URL, prose/format problems | **Cleanup** |
|
|
53
54
|
| "what should I edit next" | **Plan** — read `references/strategy.md`, propose a ranked list |
|
|
54
55
|
|
|
56
|
+
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.
|
|
57
|
+
|
|
55
58
|
Resolve the title first — `scripts/wiki.sh` handles redirects. Never draft against the wrong title.
|
|
56
59
|
|
|
57
60
|
### 2. Read before writing
|
|
@@ -61,6 +64,7 @@ Resolve the title first — `scripts/wiki.sh` handles redirects. Never draft aga
|
|
|
61
64
|
./scripts/wiki.sh get en "Title" # source-language wikitext
|
|
62
65
|
./scripts/wiki.sh langlink en "Title" uk # does a uk version already exist?
|
|
63
66
|
./scripts/wiki.sh check uk "Шаблон:Особа" # does this template/page exist?
|
|
67
|
+
./scripts/wiki.sh tasks <type> [n] # list candidates for a newcomer task type: copyedit|links|references|update|expand
|
|
64
68
|
```
|
|
65
69
|
|
|
66
70
|
Stop and report if:
|
|
@@ -95,21 +99,38 @@ Run every item. Report failures rather than hiding them.
|
|
|
95
99
|
- [ ] No original synthesis (ВП:ОД)
|
|
96
100
|
- [ ] Dates, numbers, and name transliterations are Ukrainian-correct
|
|
97
101
|
- [ ] Edit summary written in Ukrainian and states what changed and why
|
|
102
|
+
- [ ] The edit stayed inside the assigned task type's allowed scope
|
|
103
|
+
- [ ] Any maintenance template removed was actually earned — the underlying problem is genuinely fixed
|
|
98
104
|
|
|
99
105
|
### 6. Deliver
|
|
100
106
|
|
|
101
|
-
|
|
107
|
+
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.
|
|
108
|
+
|
|
109
|
+
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:
|
|
102
110
|
|
|
103
111
|
- new article → `https://uk.wikipedia.org/wiki/Тайтл?action=edit`
|
|
104
|
-
-
|
|
112
|
+
- existing article → `https://uk.wikipedia.org/w/index.php?title=Тайтл&action=edit`, replace the whole edit box
|
|
105
113
|
- test first → `Вікіпедія:Пісочниця` or the user's own `Користувач:Ім'я/Чернетка`
|
|
106
114
|
|
|
115
|
+
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`:
|
|
116
|
+
|
|
117
|
+
```sh
|
|
118
|
+
pbcopy < "/absolute/path/to/slug.wiki"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Add an optional second line when the edit summary is long enough to be worth copying:
|
|
122
|
+
|
|
123
|
+
```sh
|
|
124
|
+
printf '%s' 'Опис редагування…' | pbcopy
|
|
125
|
+
```
|
|
126
|
+
|
|
107
127
|
Then stop. Do not offer to save it.
|
|
108
128
|
|
|
109
129
|
## References
|
|
110
130
|
|
|
111
131
|
- `references/strategy.md` — the contribution strategy: what to farm, in what order, and how to build standing without getting flagged
|
|
112
132
|
- `references/wikitext-uk.md` — verified uk templates, citation formats, article skeletons, policy shortcuts
|
|
133
|
+
- `references/newcomer-tasks.md` — the newcomer task tiers (Легкі/Середні/Важкі) and the binding scope contract for each task type
|
|
113
134
|
- `scripts/wiki.sh` — read-only MediaWiki API helper
|
|
114
135
|
|
|
115
136
|
## 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,
|
|
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,
|
|
152
|
+
sed -n '2,13p' "$0"; exit 1
|
|
97
153
|
;;
|
|
98
154
|
esac
|
|
@@ -1,20 +1,50 @@
|
|
|
1
1
|
# Codex Adapter for wikipedia-uk-editor
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
The canonical skill definition is in `../../SKILL.md`.
|
|
3
|
+
Codex resolves this skill today via a symlink:
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
```text
|
|
6
|
+
~/.codex/skills/olko:wikipedia-uk-editor -> .../agent-skills/packages/software-development/wikipedia-uk-editor
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
`SKILL.md`, `references/`, and `scripts/` are all reachable through that symlink. Because it's a
|
|
10
|
+
symlink and not a copy, any edit made to this package (this file included) reaches Codex
|
|
11
|
+
immediately — no reinstall, no rebuild step.
|
|
12
|
+
|
|
13
|
+
The canonical skill definition is `../../SKILL.md`.
|
|
7
14
|
|
|
8
|
-
|
|
15
|
+
## Requirements
|
|
16
|
+
|
|
17
|
+
`curl` and `python3` — `scripts/wiki.sh` (the read-only MediaWiki API helper) shells out to both.
|
|
18
|
+
See the `compatibility:` field in `../../SKILL.md`.
|
|
19
|
+
|
|
20
|
+
## Invocation
|
|
9
21
|
|
|
10
22
|
```text
|
|
11
23
|
Use the olko:wikipedia-uk-editor skill to draft a Ukrainian Wikipedia edit for <URL or title>.
|
|
12
24
|
```
|
|
13
25
|
|
|
26
|
+
```text
|
|
27
|
+
Use the olko:wikipedia-uk-editor skill: Легкі → Вичитувати on "<title>"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Modes
|
|
31
|
+
|
|
32
|
+
Classified from the input in `../../SKILL.md` §1:
|
|
33
|
+
|
|
34
|
+
- **Translate** — en.wikipedia.org URL with no uk equivalent
|
|
35
|
+
- **Expand** — uk stub or thin article
|
|
36
|
+
- **Source** — uk article carrying `{{Без джерел}}` / `{{Джерело}}`
|
|
37
|
+
- **Cleanup** — uk article with prose/format problems
|
|
38
|
+
- **Plan** — "what should I edit next" → reads `references/strategy.md`
|
|
39
|
+
|
|
40
|
+
Newcomer task types (`copyedit`, `links`, `references`, `update`, `expand`) route into these same
|
|
41
|
+
modes but under a tighter, type-specific scope ceiling — see `references/newcomer-tasks.md` for
|
|
42
|
+
the full mapping and what each type must not touch.
|
|
43
|
+
|
|
14
44
|
## Workflow
|
|
15
45
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
46
|
+
Resolve the title, read the live wikitext through `scripts/wiki.sh` (read-only), gather and
|
|
47
|
+
verify real sources, draft policy-compliant wikitext using the verified templates in
|
|
48
|
+
`references/wikitext-uk.md`, run the self-check in `../../SKILL.md` §5, and hand back
|
|
49
|
+
ready-to-paste wikitext with a Ukrainian edit summary. The skill never saves an edit — the human
|
|
50
|
+
pastes it.
|