luckiest-co 1.0.63 → 1.0.65

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.
@@ -9,7 +9,7 @@
9
9
  "name": "luckiest",
10
10
  "source": "./",
11
11
  "description": "Plan, go, finish, plus bundled free Luckiest skills that work in Claude Code, web chat, and Cowork.",
12
- "version": "0.1.62",
12
+ "version": "0.1.64",
13
13
  "author": { "name": "Luckiest" }
14
14
  }
15
15
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "luckiest",
3
3
  "description": "Plan, go, finish. Guided planning, progress dashboards, and your luckiest.co tribe inside Claude Code.",
4
- "version": "0.1.62",
4
+ "version": "0.1.64",
5
5
  "author": { "name": "Luckiest" }
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "luckiest-co",
3
- "version": "1.0.63",
3
+ "version": "1.0.65",
4
4
  "description": "Luckiest for Claude Code: plan, go, finish. Your luckiest.co skills and tribe, inside Claude.",
5
5
  "bin": {
6
6
  "luckiest-co": "./bin/install.js"
@@ -30,3 +30,34 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
30
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
31
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32
32
  SOFTWARE.
33
+
34
+ ## ASD-STE100 plain technical mode (1.1.0)
35
+
36
+ references/ste100.md and scripts/ste-lint.py are adapted from asd-ste100-skill
37
+ (https://github.com/danyuchn/asd-ste100-skill, sha d48bfca), used under the MIT License.
38
+ scripts/ste-lint.py is copied unchanged. The rule summary is rewritten, and it does not
39
+ reproduce ASD-STE100 text or its approved dictionary.
40
+
41
+ ### Original license
42
+
43
+ MIT License
44
+
45
+ Copyright (c) 2026 Dustin Yuchen Teng
46
+
47
+ Permission is hereby granted, free of charge, to any person obtaining a copy
48
+ of this software and associated documentation files (the "Software"), to deal
49
+ in the Software without restriction, including without limitation the rights
50
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
51
+ copies of the Software, and to permit persons to whom the Software is
52
+ furnished to do so, subject to the following conditions:
53
+
54
+ The above copyright notice and this permission notice shall be included in all
55
+ copies or substantial portions of the Software.
56
+
57
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
58
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
59
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
60
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
61
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
62
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
63
+ SOFTWARE.
@@ -1,5 +1,14 @@
1
1
  # Changelog — luckiest-copywriting-humanize
2
2
 
3
+ ## 1.1.0 - 2026-11-09
4
+ - New plain technical mode for tool descriptions, error messages, procedures, agent instructions, READMEs, and PR descriptions. It has two levels, strict and light, with rules adapted from ASD-STE100 via danyuchn/asd-ste100-skill (MIT, sha d48bfca) in references/ste100.md.
5
+ - The mode turns off the voice section, swaps the "vary sentence length" check for length caps, and keeps a single hedge that states real uncertainty.
6
+ - Added scripts/ste-lint.py, a stdlib-only linter copied unchanged. It is an optional final-scan check when python3 exists.
7
+ - New trigger phrases: disambiguate, plain English, Simplified Technical English, STE100.
8
+
9
+ ### Security pass
10
+ The linter imports only the stdlib. It makes no network calls, subprocess calls, eval, or exec, and it writes files only inside its own --selftest temp dir. The self-test passes.
11
+
3
12
  ## 1.0.1 — 2026-10-04
4
13
  - Source added to the repo. The update check uses the listing id.
5
14
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: copywriting-humanize
3
- description: "When the user wants text to stop sounding AI-generated. Use when the user says 'humanize this,' 'make this sound human,' 'this reads like ChatGPT,' 'remove the AI tells,' 'de-slop this,' 'AI slop,' 'does this sound like AI,' 'sounds robotic,' 'too many em dashes,' 'make this sound like me,' 'match my voice,' or asks to strip promotional fluff, filler, hedging, or rule-of-three padding out of a draft. Also use as a finishing pass on copy, docs, posts, or PR descriptions before they ship. For editing marketing copy for persuasion, see luckiest-copy-editing. For writing new copy, see luckiest-copywriting."
3
+ description: "When the user wants text to stop sounding AI-generated. Use when the user says 'humanize this,' 'make this sound human,' 'this reads like ChatGPT,' 'remove the AI tells,' 'de-slop this,' 'AI slop,' 'does this sound like AI,' 'sounds robotic,' 'too many em dashes,' 'make this sound like me,' 'match my voice,' or asks to strip promotional fluff, filler, hedging, or rule-of-three padding out of a draft. Also use for 'make this unambiguous,' 'disambiguate this tool description,' 'plain English rewrite,' 'Simplified Technical English,' 'STE100,' or to tighten error messages, tool descriptions, system prompts, and agent instructions so they cannot be misread. Also use as a finishing pass on copy, docs, posts, or PR descriptions before they ship. For editing marketing copy for persuasion, see luckiest-copy-editing. For writing new copy, see luckiest-copywriting."
4
4
  license: See ATTRIBUTION.md
5
5
  metadata:
6
- version: "1.0.1"
6
+ version: "1.1.0"
7
7
  listing_id: luckiest-copywriting-humanize
8
8
  author: luckiest
9
9
  ---
@@ -14,14 +14,15 @@ This skill acts as an editor that finds and removes the tells of AI-generated wr
14
14
 
15
15
  ## Staying current
16
16
 
17
- On activation, call the Luckiest MCP check_updates tool with { listingId: "03206f00-d5c7-4e0d-b541-09aec431a0c7", installedSemver: "1.0.1" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
17
+ On activation, call the Luckiest MCP check_updates tool with { listingId: "03206f00-d5c7-4e0d-b541-09aec431a0c7", installedSemver: "1.1.0" }. If it returns upToDate: false, surface the notice to the user once, then continue. Do nothing further if upToDate: true. Never block on this check — if the tool is unavailable, proceed.
18
18
 
19
- When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-copywriting-humanize", skill_version: "1.0.1", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
19
+ When the skill's work is done, call the Luckiest MCP report_usage tool once with { listing_id: "luckiest-copywriting-humanize", skill_version: "1.1.0", matched: true, success: <true if the skill completed, false otherwise> }. Metadata only, never prompt text. Never block on it — if the tool is unavailable, skip silently.
20
20
 
21
21
  ## Reference files
22
22
 
23
23
  - **references/patterns.md** — the numbered catalog of 34 AI tells with before/after examples. Load it before every rewrite. It is the working reference for both the draft and the audit.
24
24
  - **references/detection.md** — what not to flag, and the signs of genuine human writing. Load it before judging text the user did not write, before answering "does this sound like AI," and any time a rewrite is about to strip something that might be the author's actual voice.
25
+ - **references/ste100.md** — plain technical mode rules from ASD-STE100. Load it only in plain technical mode.
25
26
 
26
27
  ## The four rules
27
28
 
@@ -58,6 +59,8 @@ Rewrite prose only. Leave code blocks, inline code, YAML frontmatter, data table
58
59
 
59
60
  **Embedded mode.** Another skill or agent is using this as one step of a larger job: a PR description, a commit message, a doc. Run the loop internally and output only the final text. No draft, no audit bullets, no summary.
60
61
 
62
+ **Plain technical.** The text is something a person or an agent must act on without asking the author: a tool description, error message, procedure, system prompt, agent instruction, README, or PR description. It also applies when the user says "make this unambiguous," "disambiguate this," "plain English," "Simplified Technical English," or "STE100." Load references/ste100.md, pick strict or light, and apply its rules on top of the pattern catalog. This mode turns off Personality and soul and keeps a single hedge that states real uncertainty. Output the rewritten text only, unless the user asks for the rule table.
63
+
61
64
  ## Process
62
65
 
63
66
  1. Read the input and identify every instance of the patterns in references/patterns.md.
@@ -66,7 +69,8 @@ Rewrite prose only. Leave code blocks, inline code, YAML frontmatter, data table
66
69
  4. Run the final scan before delivering. The draft is not done while any of these are true:
67
70
  - it contains an em dash (—) or en dash (–), unless a user sample licenses them;
68
71
  - it contains a curly quote (" " ' ') where a straight quote belongs;
69
- - three or more consecutive sentences sit in the same length band;
72
+ - three or more consecutive sentences sit in the same length band (plain technical mode skips this check and uses the ste100.md length caps instead);
73
+ - in plain technical mode: a semicolon, a soft phrasal verb, a passive sentence with a known actor, or two names for one thing. If python3 is available, pipe the draft through `python3 -I scripts/ste-lint.py --json` (add `--disable synonym-rotation` at the light level) and fix each hard finding or name why it stays. Advisory findings are hints. The linter never checks meaning, so a clean run does not replace the audit. Without python3, do the check by eye;
70
74
  - a heading is followed by a one-line paragraph restating the heading;
71
75
  - a bolded inline header opens a list item.
72
76
  5. Deliver what the invocation mode calls for.
@@ -0,0 +1,60 @@
1
+ # Plain technical mode (ASD-STE100 rules)
2
+
3
+ These rules apply to text that a person or an agent must act on without asking the author anything: tool descriptions, error messages, procedures, system prompts, agent instructions, status reports, READMEs, and PR descriptions. They come from ASD-STE100 Simplified Technical English, the aerospace standard for maintenance manuals, as adapted by danyuchn/asd-ste100-skill (MIT). The goal is one reading per sentence.
4
+
5
+ This mode does not use ASD's approved 900-word dictionary, because the standard restricts redistribution. It applies the principle behind the dictionary: pick the plainest common word and use it the same way every time. Do not claim STE compliance. When exact approved wording matters, as in real aircraft documentation, the author must check against the official standard.
6
+
7
+ ## Pick a level
8
+
9
+ - **Strict.** Use for tool and function descriptions, error messages, procedures, agent-to-agent instructions, and safety text, meaning anywhere a wrong reading costs something. Apply every rule below.
10
+ - **Light.** Use for READMEs, PR descriptions, changelogs, and explanatory docs. Apply the sentence rules in full. Treat the word rules (marked *strict only*) as advice, because prose needs some range.
11
+
12
+ If the user does not name a level, infer it from the text type. Keep the choice to yourself unless they ask for the rule table.
13
+
14
+ ## Sentence rules
15
+
16
+ | Rule | Do | Don't |
17
+ |---|---|---|
18
+ | Active voice, named actor | "The agent deletes the file." | "The file is deleted." Passive voice is fine only when the actor is unknown or does not matter. |
19
+ | One instruction per sentence | "Open the file. Read line 3." | "Open the file and read line 3, then check it." |
20
+ | Length cap | 20 words for steps, 25 for descriptions | Long chains of clauses |
21
+ | No semicolons | Two sentences | Any semicolon |
22
+ | No soft phrasal verbs | start, contact, read, remove | spin up, reach out, dive into, take off |
23
+ | Verbs, not nominalizations | "Analyze the log." | "Perform an analysis of the log." |
24
+ | Noun clusters of 3 words or fewer | "fuel pump valve" | "high pressure fuel pump inlet valve assembly" |
25
+ | No dropped words | Keep the subject, verb, and article | "Files not backed up will be lost" (which files?) |
26
+ | Simple tenses | "We received the report." | "We have received the report." Keep the compound form when it carries current relevance ("the job has completed, output is ready") or a hedge ("may have failed"), and flag it. |
27
+ | One topic per paragraph | 6 sentences or fewer | Paragraphs that mix topics |
28
+ | Lists for sequences | Numbered list for 3 or more steps or conditions | A sequence buried in one sentence |
29
+
30
+ ## Word rules (strict only)
31
+
32
+ - **One word, one meaning.** Name each thing once and keep the name: always "user", never "user", "customer", and "client" for the same person. Use one verb for one action: always "check", never a rotation of "check", "verify", and "confirm".
33
+ - **Define kept jargon once.** A necessary domain term stays, with a one-line definition the first time it appears.
34
+
35
+ ## Modality is content
36
+
37
+ Humanize normally cuts hedging. In this mode, cut hedge stacks but keep a single hedge that states real uncertainty.
38
+
39
+ - "It is important to note that this may potentially help" becomes "This may help."
40
+ - "The request may have failed" stays as it is. Changing it to "The request failed" makes a different claim.
41
+ - "Could be caused by X" never becomes "X is the cause."
42
+
43
+ ## What this mode turns off
44
+
45
+ - The voice section (personality, opinions, uneven rhythm). Flat and literal is the correct register here.
46
+ - The "vary sentence length" check in the final scan. The length caps replace it.
47
+ - Never run this mode on marketing, creative, or persuasive copy. Use the default humanize pass for that.
48
+
49
+ ## Output
50
+
51
+ - Default: the rewritten text only, the same as embedded mode.
52
+ - When a longer phrasing is kept on purpose because a safety condition, scope qualifier, or number would be lost, add one line after the text: `Kept as-is: <phrase>, <what shortening would lose>`.
53
+ - On request ("show the diff", "which rules", "before/after"), give the rule table in place of the audit bullets:
54
+
55
+ | Rule broken | Original | Rewrite |
56
+ |---|---|---|
57
+ | Present perfect | "We have received your request." | "We received your request." |
58
+
59
+ - If the text already complies, say so and change nothing.
60
+ - This mode fixes form, not substance. A hollow paragraph stays hollow. Say so instead of polishing it.