writing-skills 0.1.1 → 0.2.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/README.md CHANGED
@@ -35,17 +35,13 @@ reads SKILL.md (opencode, Claude Code, Codex, Kiro, Gemini).
35
35
 
36
36
  ## Install
37
37
 
38
- ```bash
39
- npx skills add writing-skills # installs into every detected agent (Claude Code, opencode, Codex, ...)
40
- npm install writing-skills # or pip/uv: uv add writing-skills
41
- ```
42
-
43
- `writing-skills` is also an Agent Plugins 1.0.0 package — Claude Code, Codex ≥ 0.147
44
- and Kiro discover `plugin.json` when you point them at the repo:
45
-
46
- ```bash
47
- git clone https://github.com/surendranb/writing-skills.git
48
- ```
38
+ | Harness | Command |
39
+ | :--- | :--- |
40
+ | **Any agent** (recommended) | `npx skills add writing-skills` — detects and installs into every agent on your machine |
41
+ | **Claude Code** (plugin) | `/plugin marketplace add surendranb/writing-skills` then `/plugin install writing-skills@writing-skills` |
42
+ | **Codex ≥ 0.147 / Kiro** | `git clone https://github.com/surendranb/writing-skills.git` — `plugin.json` is auto-discovered (Agent Plugins 1.0) |
43
+ | **npm** | `npm install writing-skills` |
44
+ | **Python** | `uv add writing-skills` or `pip install writing-skills` |
49
45
 
50
46
  ## Use
51
47
 
@@ -61,16 +57,9 @@ scans, ban lists, readability targets) the agent must pass before delivering.
61
57
 
62
58
  ## Contribute
63
59
 
64
- Add a skill as a folder under `skills/` with a `SKILL.md`:
65
-
66
- - `name` in frontmatter matching the folder; trigger-rich `description` starting with "Use when"
67
- - `## The core rule`, `## Mechanics` (numbered, verifiable), `## Do not`, and at least two before/after `## Transform example`s
68
-
69
- Validate locally:
70
-
71
- ```bash
72
- python3 scripts/check_skills.py # requires PyYAML
73
- ```
60
+ Start from [template/SKILL.md](template/SKILL.md) and see [CONTRIBUTING.md](CONTRIBUTING.md).
61
+ Every skill must pass `python3 scripts/validate_skills.py` — frontmatter, verifiable
62
+ mechanics, a `Verify` checklist, and two transform examples are enforced by CI.
74
63
 
75
64
  ## License
76
65
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "writing-skills",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Procedural writing-style skills for agents — measurable standards, voice craft, and character voices as SKILL.md instructions.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -24,4 +24,4 @@
24
24
  "opencode",
25
25
  "claude-code"
26
26
  ]
27
- }
27
+ }
package/plugin.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "writing-skills",
4
- "version": "0.1.1",
5
- "description": "Procedural writing-style skills for agents measurable standards, voice craft, and character voices as SKILL.md instructions.",
4
+ "version": "0.2.0",
5
+ "description": "Procedural writing-style skills for agents \u2014 measurable standards, voice craft, and character voices as SKILL.md instructions.",
6
6
  "author": "Surendran",
7
7
  "homepage": "https://github.com/surendranb/writing-skills",
8
8
  "repository": "https://github.com/surendranb/writing-skills",
@@ -16,4 +16,4 @@
16
16
  "opencode",
17
17
  "claude-code"
18
18
  ]
19
- }
19
+ }
@@ -22,6 +22,13 @@ Workflow: `acknowledge the wobble calmly ("it happens")` → `reframe it as an o
22
22
  5. **Ownership with approval.** "It's your world... you can make it do anything you want" — but said with total confidence the reader's choices are good ones.
23
23
  6. **The verbs are light touches.** "Tap, tap, tap." Actions described as gentle motions.
24
24
 
25
+ ## Verify
26
+
27
+ - Every flaw is reframed with a specific name, never generic positivity
28
+ - No urgency words (quickly, ASAP, immediately, now)
29
+ - One instruction at a time, in order
30
+ - Each encouragement anchors to something concrete in the work
31
+
25
32
  ## Do not
26
33
 
27
34
  - Let urgency leak in — no rushing, no alarm
@@ -30,6 +30,13 @@ Workflow: `take the plain answer` → `find its most theatrical metaphorical cou
30
30
  6. **"Savvy?"** as punctuation — once per piece, never more. End a flourish with it for the exclamation point.
31
31
  7. **Short and long sentences alternating.** A long tangled flourish, then a crisp deadpan beat. Rhythm is the comedy.
32
32
 
33
+ ## Verify
34
+
35
+ - "Savvy?" appears at most once
36
+ - At least one grand metaphor, anchored in a physical pirate object
37
+ - A crisp short beat follows every long flourish (read aloud for rhythm)
38
+ - Zero menace, gore, or actual threat
39
+
33
40
  ## Do not
34
41
 
35
42
  - Lean into actual menace, gore, or threat — this voice is swashbuckling *fun*, not Scorsese
@@ -19,8 +19,8 @@ Workflow: `lead with the news (who, what, when, where — why in the second grap
19
19
  2. **Lead answers the 5 Ws.** Who did what, when, where — and why/impact in the second graph.
20
20
  3. **Attribution discipline.** "according to the police report", "said Maria Chen, the company's CEO". The reporter's job is "said" — neutral verbs only (said, told, according to). Not "claimed" (implies doubt) unless reporting a disputed fact.
21
21
  4. **Quote handling.** Quotes are exactly what was said; paraphrase the rest. New speaker = new paragraph.
22
- 5. **Numbers per AP:** spell out one through nine; use figures for 10 and above ("five people", "12 days"). Years, ages, dates, and percentages always figures ("a 3-year-old", "6 percent" — percent spelled out).
23
- 6. **Dates and time:** "Aug. 14" (months abbreviated with dates, except May, June, July); time as "3 p.m." not "3:00pm".
22
+ 5. **Numbers per AP:** spell out one through nine; use figures for 10 and above ("five people", "12 days"). Years, ages, dates, and percentages always figures, with the % symbol ("a 3-year-old", "6%" — AP adopted the symbol in 2019).
23
+ 6. **Dates and time:** "Aug. 14" (months abbreviated with dates, except March, April, May, June, July); time as "3 p.m." not "3:00pm".
24
24
  7. **Titles:** capitalize formal titles before a name, lowercase after ("Chief Executive Officer Jane Doe" / "Jane Doe, the chief executive officer"). First reference typically uses full name; later just the last name.
25
25
  8. **No editorializing.** No "clearly", "unfortunately", "shockingly", "in a surprising move". The facts create the drama.
26
26
  9. **No anonymous sources without a reason**, and when unavoidable: "a person familiar with the matter" + one explaining clause.
@@ -31,7 +31,7 @@ Workflow: `lead with the news (who, what, when, where — why in the second grap
31
31
  - First sentence answers who/what/when/where
32
32
  - Every factual claim is attributable or self-evident
33
33
  - No opinion words (clearly, unfortunately, surprisingly, importantly, notably)
34
- - Numbers follow AP rules (1–9 spelled, 10+ figures, percent spelled)
34
+ - Numbers follow AP rules (1–9 spelled, 10+ figures, % symbol with figures)
35
35
  - No unattributed quotes; quotes use exactly the words spoken
36
36
  - Paragraphs ≤ 2 sentences
37
37
 
@@ -49,4 +49,4 @@ Workflow: `lead with the news (who, what, when, where — why in the second grap
49
49
 
50
50
  **Before:** "5 employees were shocked and saddened as the company announced layoffs affecting over 30% of the workforce, in what many see as a disastrous strategic decision."
51
51
 
52
- **After:** "The company will cut 30 percent of its workforce, affecting about 120 employees, Chief Executive Officer Dana Ortiz said in a memo Monday. Ortiz cited slowing revenue growth as the reason. The layoffs take effect Sept. 1."
52
+ **After:** "The company will cut 30% of its workforce, affecting about 120 employees, Chief Executive Officer Dana Ortiz said in a memo Monday. Ortiz cited slowing revenue growth as the reason. The layoffs take effect Sept. 1."
@@ -22,6 +22,13 @@ Workflow: `acknowledge the other person's effort ("most kind of you")` → `stat
22
22
  5. **The hard stare, then kindness.** Identify the injustice plainly (one cool sentence), then extend generosity anyway. That contrast is the signature.
23
23
  6. **Small protective gestures.** Offer food, tidy up, fix the small thing — tenderness through action.
24
24
 
25
+ ## Verify
26
+
27
+ - At least one courtesy formula, sincerely meant ("most kind", "I wonder if I might")
28
+ - Any mishap recounted without blame
29
+ - Zero sarcasm, zero modern slang
30
+ - One concrete helpful action offered or taken
31
+
25
32
  ## Do not
26
33
 
27
34
  - Use the formality with passive-aggression — Paddington is never sarcastic
@@ -22,6 +22,13 @@ Workflow: `state the hard truth flatly` → `attach an ogre-world analogy (layer
22
22
  5. **Grumpy-before-warm pattern.** A complaint or sigh first, then an action that shows he cares (grudging help, a question about the other person).
23
23
  6. **Short, plain sentences.** No corporate register survives contact with the swamp.
24
24
 
25
+ ## Verify
26
+
27
+ - No exclamation marks anywhere
28
+ - The blunt truth lands in the first two sentences
29
+ - At most one analogy per paragraph
30
+ - The care is visible by the end (a grudging help, a kind close)
31
+
25
32
  ## Do not
26
33
 
27
34
  - Turn the grump into actual hostility — Shrek's bite is never cruelty
@@ -30,6 +30,13 @@ Workflow: `name the hard thing` → `name the feeling it causes` → `reframe it
30
30
  6. **Ask one curious question** where a verdict would be easy.
31
31
  7. **Short sentences, warm diction.** Contractions fine. Avoid corporate vocabulary entirely (no "leverage," "circle back," "deliverables").
32
32
 
33
+ ## Verify
34
+
35
+ - The hard thing is named before any reframe (no sunshine-first)
36
+ - At most one aphorism per ~200 words
37
+ - Zero corporate vocabulary (leverage, circle back, deliverables, bandwidth)
38
+ - Ends with one concrete way forward or one curious question
39
+
33
40
  ## Do not
34
41
 
35
42
  - Skip the problem to get to the sunshine
@@ -22,6 +22,13 @@ Workflow: `name the small thing that's occupying the mind` → `walk around the
22
22
  5. **"I am a bear of very little brain" humility.** Understate the intelligence to overstate the truth: the wisest line arrives as if accidental.
23
23
  6. **Being-with statements.** Half the warmth is just noticing someone ("How kind you are, to ask").
24
24
 
25
+ ## Verify
26
+
27
+ - Every word a child could read
28
+ - At least one thinking-aloud moment before the truth lands
29
+ - Exactly one plain truth arrived at, never announced
30
+ - No instruction or moral — observation only
31
+
25
32
  ## Do not
26
33
 
27
34
  - Rush the musing to the point — the slowness is the voice
@@ -22,6 +22,13 @@ Workflow: `find the truth worth saying` → `strip it to its essence` → `inver
22
22
  5. **The closing aphorism.** End on a single compressed line that echoes ("Do or do not. There is no try.").
23
23
  6. **Occasional oracle tic.** A trailing "hmm." or a question asked already knowing its answer ("Ready, are you?").
24
24
 
25
+ ## Verify
26
+
27
+ - Every sentence 3–8 words
28
+ - Roughly one sentence in three is inverted — never all
29
+ - No word over three syllables, no abstract nouns
30
+ - Ends on a standalone compressed aphorism
31
+
25
32
  ## Do not
26
33
 
27
34
  - Invert every sentence — rhythm needs normal sentences as the baseline