dsh-nerd-mode 0.4.6 → 0.5.2
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 +11 -6
- package/README.zh.md +11 -6
- package/assets/calibration.svg +69 -69
- package/assets/nerd.svg +22 -22
- package/assets/section.md +15 -15
- package/client.js +2170 -1806
- package/cordis.patch.yml +24 -24
- package/lib/index.js +838 -223
- package/lib/study-sessions.js +283 -0
- package/package.json +2 -2
- package/skills/convert-documents-to-markdown/SKILL.md +26 -26
- package/skills/diagram/SKILL.md +43 -19
- package/skills/diagram/scripts/check-svg.mjs +184 -0
- package/skills/humanizer/.claude-plugin/marketplace.json +18 -18
- package/skills/humanizer/.claude-plugin/plugin.json +15 -15
- package/skills/humanizer/.cursor-plugin/plugin.json +12 -12
- package/skills/humanizer/.github/ISSUE_TEMPLATE/config.yml +8 -8
- package/skills/humanizer/.github/ISSUE_TEMPLATE/new-pattern.yml +24 -24
- package/skills/humanizer/.github/ISSUE_TEMPLATE/rewrite-problem.yml +44 -44
- package/skills/humanizer/.github/workflows/validate.yml +29 -29
- package/skills/humanizer/AGENTS.md +54 -54
- package/skills/humanizer/CHANGELOG.md +116 -116
- package/skills/humanizer/LICENSE +21 -21
- package/skills/humanizer/README.md +206 -206
- package/skills/humanizer/SKILL.md +397 -397
- package/skills/humanizer/agents/openai.yaml +4 -4
- package/skills/humanizer/scripts/validate-package.py +146 -146
- package/skills/study/SKILL.md +81 -78
- package/skills/study-plus/SKILL.md +246 -246
- package/skills/study-plus/scripts/book-client.js +284 -284
- package/skills/study-plus/scripts/book-data.mjs +289 -289
- package/skills/study-plus/scripts/build-book.mjs +155 -155
- package/skills/writing-beats/SKILL.md +66 -66
- package/skills/writing-beats/agents/openai.yaml +5 -5
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json.schemastore.org/claude-code-marketplace.json",
|
|
3
|
-
"name": "humanizer",
|
|
4
|
-
"owner": {
|
|
5
|
-
"name": "blader",
|
|
6
|
-
"url": "https://github.com/blader"
|
|
7
|
-
},
|
|
8
|
-
"description": "Install Humanizer as a Claude plugin.",
|
|
9
|
-
"plugins": [
|
|
10
|
-
{
|
|
11
|
-
"name": "humanizer",
|
|
12
|
-
"source": "./",
|
|
13
|
-
"description": "Rewrite AI-sounding text so it reads like the writer without changing what it says.",
|
|
14
|
-
"license": "MIT",
|
|
15
|
-
"keywords": ["writing", "editing", "humanize", "prose", "style"]
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-marketplace.json",
|
|
3
|
+
"name": "humanizer",
|
|
4
|
+
"owner": {
|
|
5
|
+
"name": "blader",
|
|
6
|
+
"url": "https://github.com/blader"
|
|
7
|
+
},
|
|
8
|
+
"description": "Install Humanizer as a Claude plugin.",
|
|
9
|
+
"plugins": [
|
|
10
|
+
{
|
|
11
|
+
"name": "humanizer",
|
|
12
|
+
"source": "./",
|
|
13
|
+
"description": "Rewrite AI-sounding text so it reads like the writer without changing what it says.",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"keywords": ["writing", "editing", "humanize", "prose", "style"]
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
|
-
"name": "humanizer",
|
|
4
|
-
"description": "Rewrite AI-sounding text so it reads like the writer without changing what it says.",
|
|
5
|
-
"version": "3.1.0",
|
|
6
|
-
"author": {
|
|
7
|
-
"name": "blader",
|
|
8
|
-
"url": "https://github.com/blader"
|
|
9
|
-
},
|
|
10
|
-
"homepage": "https://github.com/blader/humanizer",
|
|
11
|
-
"repository": "https://github.com/blader/humanizer",
|
|
12
|
-
"license": "MIT",
|
|
13
|
-
"keywords": ["writing", "editing", "humanize", "prose", "style"],
|
|
14
|
-
"skills": ["./"]
|
|
15
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
|
+
"name": "humanizer",
|
|
4
|
+
"description": "Rewrite AI-sounding text so it reads like the writer without changing what it says.",
|
|
5
|
+
"version": "3.1.0",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "blader",
|
|
8
|
+
"url": "https://github.com/blader"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/blader/humanizer",
|
|
11
|
+
"repository": "https://github.com/blader/humanizer",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"keywords": ["writing", "editing", "humanize", "prose", "style"],
|
|
14
|
+
"skills": ["./"]
|
|
15
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "humanizer",
|
|
3
|
-
"description": "Rewrite AI-sounding text so it reads like the writer without changing what it says.",
|
|
4
|
-
"version": "3.1.0",
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "blader"
|
|
7
|
-
},
|
|
8
|
-
"homepage": "https://github.com/blader/humanizer",
|
|
9
|
-
"repository": "https://github.com/blader/humanizer",
|
|
10
|
-
"license": "MIT",
|
|
11
|
-
"keywords": ["writing", "editing", "humanize", "prose", "style"]
|
|
12
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "humanizer",
|
|
3
|
+
"description": "Rewrite AI-sounding text so it reads like the writer without changing what it says.",
|
|
4
|
+
"version": "3.1.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "blader"
|
|
7
|
+
},
|
|
8
|
+
"homepage": "https://github.com/blader/humanizer",
|
|
9
|
+
"repository": "https://github.com/blader/humanizer",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": ["writing", "editing", "humanize", "prose", "style"]
|
|
12
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
blank_issues_enabled: false
|
|
2
|
-
contact_links:
|
|
3
|
-
- name: Questions, ideas, and thanks
|
|
4
|
-
url: https://github.com/blader/humanizer/discussions
|
|
5
|
-
about: Ask how to use Humanizer, share results, or say thanks.
|
|
6
|
-
- name: AI detectors still flag the output
|
|
7
|
-
url: https://github.com/blader/humanizer#humanizer
|
|
8
|
-
about: Getting past AI detectors is not a goal. Humanizer edits for human readers.
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Questions, ideas, and thanks
|
|
4
|
+
url: https://github.com/blader/humanizer/discussions
|
|
5
|
+
about: Ask how to use Humanizer, share results, or say thanks.
|
|
6
|
+
- name: AI detectors still flag the output
|
|
7
|
+
url: https://github.com/blader/humanizer#humanizer
|
|
8
|
+
about: Getting past AI detectors is not a goal. Humanizer edits for human readers.
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
name: New tell
|
|
2
|
-
description: A sign of AI writing that no current pattern catches.
|
|
3
|
-
labels: ["enhancement"]
|
|
4
|
-
body:
|
|
5
|
-
- type: textarea
|
|
6
|
-
id: before
|
|
7
|
-
attributes:
|
|
8
|
-
label: Example
|
|
9
|
-
description: Real text that shows the tell. Remove anything private.
|
|
10
|
-
validations:
|
|
11
|
-
required: true
|
|
12
|
-
- type: textarea
|
|
13
|
-
id: after
|
|
14
|
-
attributes:
|
|
15
|
-
label: How a person would write it
|
|
16
|
-
validations:
|
|
17
|
-
required: true
|
|
18
|
-
- type: textarea
|
|
19
|
-
id: why
|
|
20
|
-
attributes:
|
|
21
|
-
label: Why no current pattern covers it
|
|
22
|
-
description: Name the closest existing pattern and say why it misses this. Most new tells fit into an existing pattern.
|
|
23
|
-
validations:
|
|
24
|
-
required: true
|
|
1
|
+
name: New tell
|
|
2
|
+
description: A sign of AI writing that no current pattern catches.
|
|
3
|
+
labels: ["enhancement"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: before
|
|
7
|
+
attributes:
|
|
8
|
+
label: Example
|
|
9
|
+
description: Real text that shows the tell. Remove anything private.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: after
|
|
14
|
+
attributes:
|
|
15
|
+
label: How a person would write it
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
id: why
|
|
20
|
+
attributes:
|
|
21
|
+
label: Why no current pattern covers it
|
|
22
|
+
description: Name the closest existing pattern and say why it misses this. Most new tells fit into an existing pattern.
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
name: Rewrite problem
|
|
2
|
-
description: A rewrite kept a tell, changed the meaning, added a fact, or over-edited.
|
|
3
|
-
labels: ["bug"]
|
|
4
|
-
body:
|
|
5
|
-
- type: dropdown
|
|
6
|
-
id: problem
|
|
7
|
-
attributes:
|
|
8
|
-
label: What went wrong
|
|
9
|
-
options:
|
|
10
|
-
- A tell survived the rewrite
|
|
11
|
-
- The rewrite added or dropped a fact
|
|
12
|
-
- The rewrite changed text that was fine
|
|
13
|
-
- Something else
|
|
14
|
-
validations:
|
|
15
|
-
required: true
|
|
16
|
-
- type: textarea
|
|
17
|
-
id: input
|
|
18
|
-
attributes:
|
|
19
|
-
label: Input text
|
|
20
|
-
description: The text you gave Humanizer. Remove anything private.
|
|
21
|
-
validations:
|
|
22
|
-
required: true
|
|
23
|
-
- type: textarea
|
|
24
|
-
id: call
|
|
25
|
-
attributes:
|
|
26
|
-
label: How you called it
|
|
27
|
-
description: The agent and model you used, and your exact prompt.
|
|
28
|
-
placeholder: "Claude Code, Opus 5.5: /humanizer then pasted the text"
|
|
29
|
-
validations:
|
|
30
|
-
required: true
|
|
31
|
-
- type: textarea
|
|
32
|
-
id: output
|
|
33
|
-
attributes:
|
|
34
|
-
label: Output
|
|
35
|
-
description: What Humanizer returned.
|
|
36
|
-
validations:
|
|
37
|
-
required: true
|
|
38
|
-
- type: textarea
|
|
39
|
-
id: expected
|
|
40
|
-
attributes:
|
|
41
|
-
label: What it should have done
|
|
42
|
-
description: Quote the sentence that is wrong and say what a careful writer would write. Name the pattern number if you know it.
|
|
43
|
-
validations:
|
|
44
|
-
required: true
|
|
1
|
+
name: Rewrite problem
|
|
2
|
+
description: A rewrite kept a tell, changed the meaning, added a fact, or over-edited.
|
|
3
|
+
labels: ["bug"]
|
|
4
|
+
body:
|
|
5
|
+
- type: dropdown
|
|
6
|
+
id: problem
|
|
7
|
+
attributes:
|
|
8
|
+
label: What went wrong
|
|
9
|
+
options:
|
|
10
|
+
- A tell survived the rewrite
|
|
11
|
+
- The rewrite added or dropped a fact
|
|
12
|
+
- The rewrite changed text that was fine
|
|
13
|
+
- Something else
|
|
14
|
+
validations:
|
|
15
|
+
required: true
|
|
16
|
+
- type: textarea
|
|
17
|
+
id: input
|
|
18
|
+
attributes:
|
|
19
|
+
label: Input text
|
|
20
|
+
description: The text you gave Humanizer. Remove anything private.
|
|
21
|
+
validations:
|
|
22
|
+
required: true
|
|
23
|
+
- type: textarea
|
|
24
|
+
id: call
|
|
25
|
+
attributes:
|
|
26
|
+
label: How you called it
|
|
27
|
+
description: The agent and model you used, and your exact prompt.
|
|
28
|
+
placeholder: "Claude Code, Opus 5.5: /humanizer then pasted the text"
|
|
29
|
+
validations:
|
|
30
|
+
required: true
|
|
31
|
+
- type: textarea
|
|
32
|
+
id: output
|
|
33
|
+
attributes:
|
|
34
|
+
label: Output
|
|
35
|
+
description: What Humanizer returned.
|
|
36
|
+
validations:
|
|
37
|
+
required: true
|
|
38
|
+
- type: textarea
|
|
39
|
+
id: expected
|
|
40
|
+
attributes:
|
|
41
|
+
label: What it should have done
|
|
42
|
+
description: Quote the sentence that is wrong and say what a careful writer would write. Name the pattern number if you know it.
|
|
43
|
+
validations:
|
|
44
|
+
required: true
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
name: Check package
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request:
|
|
5
|
-
push:
|
|
6
|
-
branches: [main]
|
|
7
|
-
|
|
8
|
-
permissions:
|
|
9
|
-
contents: read
|
|
10
|
-
|
|
11
|
-
jobs:
|
|
12
|
-
check:
|
|
13
|
-
runs-on: ubuntu-latest
|
|
14
|
-
steps:
|
|
15
|
-
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
16
|
-
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
|
17
|
-
with:
|
|
18
|
-
node-version: 22
|
|
19
|
-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
20
|
-
with:
|
|
21
|
-
python-version: "3.12"
|
|
22
|
-
- name: Check package files
|
|
23
|
-
run: python3 scripts/validate-package.py
|
|
24
|
-
- name: Check skill discovery
|
|
25
|
-
run: npx --yes skills@1.5.20 add . --list
|
|
26
|
-
- name: Check Claude marketplace
|
|
27
|
-
run: |
|
|
28
|
-
npm install --global @anthropic-ai/claude-code@2.1.237
|
|
29
|
-
claude plugin validate .
|
|
1
|
+
name: Check package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
check:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
16
|
+
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
|
17
|
+
with:
|
|
18
|
+
node-version: 22
|
|
19
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.12"
|
|
22
|
+
- name: Check package files
|
|
23
|
+
run: python3 scripts/validate-package.py
|
|
24
|
+
- name: Check skill discovery
|
|
25
|
+
run: npx --yes skills@1.5.20 add . --list
|
|
26
|
+
- name: Check Claude marketplace
|
|
27
|
+
run: |
|
|
28
|
+
npm install --global @anthropic-ai/claude-code@2.1.237
|
|
29
|
+
claude plugin validate .
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
# Guide for agents
|
|
2
|
-
|
|
3
|
-
This file explains how to change Humanizer without breaking its package or prompt.
|
|
4
|
-
|
|
5
|
-
## What this repo contains
|
|
6
|
-
|
|
7
|
-
Humanizer is an agent skill written in Markdown. `SKILL.md` is the prompt that agents read. The repo has no build step.
|
|
8
|
-
|
|
9
|
-
Keep the skill portable. Do not write instructions that limit it to one or two agent tools.
|
|
10
|
-
|
|
11
|
-
## Key files
|
|
12
|
-
|
|
13
|
-
- `SKILL.md` is the source of truth and the repo's only skill file. It contains portable YAML metadata, an account of why AI text sounds the way it does, and numbered patterns grouped in six sections and ordered by strength and frequency.
|
|
14
|
-
- `README.md` explains installation, use, and patterns.
|
|
15
|
-
- `CHANGELOG.md` holds the release notes, newest first. Old notes keep the pattern numbers their release used.
|
|
16
|
-
- `.claude-plugin/plugin.json` describes the Claude plugin and points its skill loader at the root `SKILL.md`.
|
|
17
|
-
- `.claude-plugin/marketplace.json` lets users add this repo as a Claude marketplace.
|
|
18
|
-
- `.cursor-plugin/plugin.json` describes the Cursor plugin. Omit a `skills` path so Cursor loads the root `SKILL.md`.
|
|
19
|
-
- `agents/openai.yaml` holds the display name, short description, and default prompt for OpenAI-compatible agents.
|
|
20
|
-
- `scripts/validate-package.py` checks package files and shared values.
|
|
21
|
-
|
|
22
|
-
## Rules for changes
|
|
23
|
-
|
|
24
|
-
Keep `SKILL.md` and `README.md` in sync.
|
|
25
|
-
|
|
26
|
-
- **Patterns:** Patterns are numbered from 1 without gaps, strongest and most frequent first. A new tell earns a pattern only when no existing pattern already implies it; prefer folding it into an existing pattern. If you add, remove, or renumber a pattern, update the README tables, the README section title, and every §reference. The validator derives the count from the headings and checks that README pattern names match them.
|
|
27
|
-
- **Version:** Keep the same version in `SKILL.md` under `metadata.version`, the first `CHANGELOG.md` heading, `.claude-plugin/plugin.json`, and `.cursor-plugin/plugin.json`. Do not add a top-level `version` field to the skill.
|
|
28
|
-
- **Compatibility:** Keep install and use instructions neutral across agents. Names such as Claude Code, Cursor, OpenCode, and Codex are examples, not limits.
|
|
29
|
-
- **Description:** The plugin manifests use the first sentence of the `SKILL.md` description.
|
|
30
|
-
- **Length:** Every word of `SKILL.md` is read on each use. The validator caps it at 5,500 words; a change that adds words should earn them.
|
|
31
|
-
- **History:** Add a short `CHANGELOG.md` note for any behavior change or non-obvious fix.
|
|
32
|
-
- **Checks:** Before publishing, run `python3 scripts/validate-package.py`, `npx skills add . --list`, and `claude plugin validate .`.
|
|
33
|
-
|
|
34
|
-
## Writing style
|
|
35
|
-
|
|
36
|
-
Use Plain Language in code comments, prompts, documentation, descriptions, validation messages, and progress reports.
|
|
37
|
-
|
|
38
|
-
- Lead with the main point.
|
|
39
|
-
- Use common words and active voice.
|
|
40
|
-
- Keep sentences and paragraphs short.
|
|
41
|
-
- Use one term for the same item.
|
|
42
|
-
- Use `must` for requirements.
|
|
43
|
-
- Use headings, lists, and tables when they help the reader.
|
|
44
|
-
- Remove repeated or unnecessary words.
|
|
45
|
-
- Limit acronyms and explain technical terms.
|
|
46
|
-
- Avoid double negatives.
|
|
47
|
-
- Keep exact identifiers, commands, paths, schema fields, quotations, watched phrases, and behavior-bearing examples.
|
|
48
|
-
- Keep the full technical meaning.
|
|
49
|
-
|
|
50
|
-
## Editing the skill
|
|
51
|
-
|
|
52
|
-
- Keep the YAML metadata valid.
|
|
53
|
-
- Treat the prompt below the metadata as the product.
|
|
54
|
-
- Prefer a short, clear instruction over another exception or repeated explanation.
|
|
1
|
+
# Guide for agents
|
|
2
|
+
|
|
3
|
+
This file explains how to change Humanizer without breaking its package or prompt.
|
|
4
|
+
|
|
5
|
+
## What this repo contains
|
|
6
|
+
|
|
7
|
+
Humanizer is an agent skill written in Markdown. `SKILL.md` is the prompt that agents read. The repo has no build step.
|
|
8
|
+
|
|
9
|
+
Keep the skill portable. Do not write instructions that limit it to one or two agent tools.
|
|
10
|
+
|
|
11
|
+
## Key files
|
|
12
|
+
|
|
13
|
+
- `SKILL.md` is the source of truth and the repo's only skill file. It contains portable YAML metadata, an account of why AI text sounds the way it does, and numbered patterns grouped in six sections and ordered by strength and frequency.
|
|
14
|
+
- `README.md` explains installation, use, and patterns.
|
|
15
|
+
- `CHANGELOG.md` holds the release notes, newest first. Old notes keep the pattern numbers their release used.
|
|
16
|
+
- `.claude-plugin/plugin.json` describes the Claude plugin and points its skill loader at the root `SKILL.md`.
|
|
17
|
+
- `.claude-plugin/marketplace.json` lets users add this repo as a Claude marketplace.
|
|
18
|
+
- `.cursor-plugin/plugin.json` describes the Cursor plugin. Omit a `skills` path so Cursor loads the root `SKILL.md`.
|
|
19
|
+
- `agents/openai.yaml` holds the display name, short description, and default prompt for OpenAI-compatible agents.
|
|
20
|
+
- `scripts/validate-package.py` checks package files and shared values.
|
|
21
|
+
|
|
22
|
+
## Rules for changes
|
|
23
|
+
|
|
24
|
+
Keep `SKILL.md` and `README.md` in sync.
|
|
25
|
+
|
|
26
|
+
- **Patterns:** Patterns are numbered from 1 without gaps, strongest and most frequent first. A new tell earns a pattern only when no existing pattern already implies it; prefer folding it into an existing pattern. If you add, remove, or renumber a pattern, update the README tables, the README section title, and every §reference. The validator derives the count from the headings and checks that README pattern names match them.
|
|
27
|
+
- **Version:** Keep the same version in `SKILL.md` under `metadata.version`, the first `CHANGELOG.md` heading, `.claude-plugin/plugin.json`, and `.cursor-plugin/plugin.json`. Do not add a top-level `version` field to the skill.
|
|
28
|
+
- **Compatibility:** Keep install and use instructions neutral across agents. Names such as Claude Code, Cursor, OpenCode, and Codex are examples, not limits.
|
|
29
|
+
- **Description:** The plugin manifests use the first sentence of the `SKILL.md` description.
|
|
30
|
+
- **Length:** Every word of `SKILL.md` is read on each use. The validator caps it at 5,500 words; a change that adds words should earn them.
|
|
31
|
+
- **History:** Add a short `CHANGELOG.md` note for any behavior change or non-obvious fix.
|
|
32
|
+
- **Checks:** Before publishing, run `python3 scripts/validate-package.py`, `npx skills add . --list`, and `claude plugin validate .`.
|
|
33
|
+
|
|
34
|
+
## Writing style
|
|
35
|
+
|
|
36
|
+
Use Plain Language in code comments, prompts, documentation, descriptions, validation messages, and progress reports.
|
|
37
|
+
|
|
38
|
+
- Lead with the main point.
|
|
39
|
+
- Use common words and active voice.
|
|
40
|
+
- Keep sentences and paragraphs short.
|
|
41
|
+
- Use one term for the same item.
|
|
42
|
+
- Use `must` for requirements.
|
|
43
|
+
- Use headings, lists, and tables when they help the reader.
|
|
44
|
+
- Remove repeated or unnecessary words.
|
|
45
|
+
- Limit acronyms and explain technical terms.
|
|
46
|
+
- Avoid double negatives.
|
|
47
|
+
- Keep exact identifiers, commands, paths, schema fields, quotations, watched phrases, and behavior-bearing examples.
|
|
48
|
+
- Keep the full technical meaning.
|
|
49
|
+
|
|
50
|
+
## Editing the skill
|
|
51
|
+
|
|
52
|
+
- Keep the YAML metadata valid.
|
|
53
|
+
- Treat the prompt below the metadata as the product.
|
|
54
|
+
- Prefer a short, clear instruction over another exception or repeated explanation.
|