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.
Files changed (34) hide show
  1. package/README.md +11 -6
  2. package/README.zh.md +11 -6
  3. package/assets/calibration.svg +69 -69
  4. package/assets/nerd.svg +22 -22
  5. package/assets/section.md +15 -15
  6. package/client.js +2170 -1806
  7. package/cordis.patch.yml +24 -24
  8. package/lib/index.js +838 -223
  9. package/lib/study-sessions.js +283 -0
  10. package/package.json +2 -2
  11. package/skills/convert-documents-to-markdown/SKILL.md +26 -26
  12. package/skills/diagram/SKILL.md +43 -19
  13. package/skills/diagram/scripts/check-svg.mjs +184 -0
  14. package/skills/humanizer/.claude-plugin/marketplace.json +18 -18
  15. package/skills/humanizer/.claude-plugin/plugin.json +15 -15
  16. package/skills/humanizer/.cursor-plugin/plugin.json +12 -12
  17. package/skills/humanizer/.github/ISSUE_TEMPLATE/config.yml +8 -8
  18. package/skills/humanizer/.github/ISSUE_TEMPLATE/new-pattern.yml +24 -24
  19. package/skills/humanizer/.github/ISSUE_TEMPLATE/rewrite-problem.yml +44 -44
  20. package/skills/humanizer/.github/workflows/validate.yml +29 -29
  21. package/skills/humanizer/AGENTS.md +54 -54
  22. package/skills/humanizer/CHANGELOG.md +116 -116
  23. package/skills/humanizer/LICENSE +21 -21
  24. package/skills/humanizer/README.md +206 -206
  25. package/skills/humanizer/SKILL.md +397 -397
  26. package/skills/humanizer/agents/openai.yaml +4 -4
  27. package/skills/humanizer/scripts/validate-package.py +146 -146
  28. package/skills/study/SKILL.md +81 -78
  29. package/skills/study-plus/SKILL.md +246 -246
  30. package/skills/study-plus/scripts/book-client.js +284 -284
  31. package/skills/study-plus/scripts/book-data.mjs +289 -289
  32. package/skills/study-plus/scripts/build-book.mjs +155 -155
  33. package/skills/writing-beats/SKILL.md +66 -66
  34. 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.