write-skills 0.0.0-stage → 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/LICENSE +21 -0
- package/README.md +58 -2
- package/THIRD_PARTY_NOTICES.md +24 -0
- package/docs/BLOCKS.md +36 -0
- package/docs/EVALS.md +32 -0
- package/docs/RULES.md +236 -0
- package/package.json +24 -4
- package/shared/ste.md +82 -0
- package/skills/write-comments/SKILL.md +51 -0
- package/skills/write-comments/agents/openai.yaml +2 -0
- package/skills/write-comments/evals/evals.json +29 -0
- package/skills/write-comments/references/ste.md +82 -0
- package/skills/write-commit/SKILL.md +45 -0
- package/skills/write-commit/agents/openai.yaml +2 -0
- package/skills/write-commit/evals/evals.json +46 -0
- package/skills/write-commit/references/ste.md +82 -0
- package/skills/write-compact/SKILL.md +70 -0
- package/skills/write-compact/agents/openai.yaml +2 -0
- package/skills/write-compact/evals/evals.json +40 -0
- package/skills/write-compact/references/ste.md +82 -0
- package/skills/write-core/SKILL.md +119 -0
- package/skills/write-core/agents/openai.yaml +2 -0
- package/skills/write-core/evals/evals.json +40 -0
- package/skills/write-core/references/ai-patterns.md +43 -0
- package/skills/write-core/references/profile.md +20 -0
- package/skills/write-core/references/ste.md +82 -0
- package/skills/write-docs/SKILL.md +90 -0
- package/skills/write-docs/agents/openai.yaml +2 -0
- package/skills/write-docs/evals/evals.json +42 -0
- package/skills/write-docs/references/agent-docs.md +77 -0
- package/skills/write-docs/references/docs-standard.md +103 -0
- package/skills/write-docs/references/ste.md +82 -0
- package/skills/write-jira/SKILL.md +83 -0
- package/skills/write-jira/agents/openai.yaml +2 -0
- package/skills/write-jira/evals/evals.json +44 -0
- package/skills/write-jira/references/ste.md +82 -0
- package/skills/write-longform/SKILL.md +74 -0
- package/skills/write-longform/agents/openai.yaml +2 -0
- package/skills/write-longform/evals/evals.json +28 -0
- package/skills/write-longform/references/ste.md +82 -0
- package/skills/write-pr/SKILL.md +63 -0
- package/skills/write-pr/agents/openai.yaml +2 -0
- package/skills/write-pr/evals/evals.json +45 -0
- package/skills/write-pr/references/ste.md +82 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Simplified Technical English rules
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Write prose that a non-native English reader understands at first read, without guessing. These rules follow the Issue 9 principles of ASD-STE100.
|
|
6
|
+
|
|
7
|
+
## Scope
|
|
8
|
+
|
|
9
|
+
Applies to chat replies, commit messages, PR descriptions, documentation, release notes, status updates, and bug reports.
|
|
10
|
+
Does not apply to code identifiers, product UI copy, quoted user text, file paths, and shell commands.
|
|
11
|
+
|
|
12
|
+
## Writing rules
|
|
13
|
+
|
|
14
|
+
1. Keep sentences short. Use 20 words or fewer in instructions. Use 25 words or fewer in descriptive text.
|
|
15
|
+
2. Write one instruction, or one topic, per sentence.
|
|
16
|
+
3. Use the active voice. Use the passive voice only when the agent is unknown. Name the agent when you know it.
|
|
17
|
+
4. Write one topic per paragraph. Use 6 sentences or fewer per paragraph.
|
|
18
|
+
5. Use simple verb forms only: simple present, simple past, simple future, imperative, infinitive.
|
|
19
|
+
6. Do not use the "-ing" form of a verb unless it is a technical noun.
|
|
20
|
+
7. Use each word with one meaning only.
|
|
21
|
+
8. Do not use multi-word nouns with more than three words.
|
|
22
|
+
9. Do not use idioms, slang, metaphors, jokes, or cultural references.
|
|
23
|
+
10. Do not use double negatives. Write one clear negative, or write the positive statement.
|
|
24
|
+
11. Do not use contractions. Keep the articles "the" and "a" in sentences.
|
|
25
|
+
12. Use the same word for the same thing. Do not alternate synonyms.
|
|
26
|
+
13. Use vertical lists for data or steps with more than two items.
|
|
27
|
+
14. In procedures, start each step with the command verb. Put warnings before the step.
|
|
28
|
+
15. Split complex text into more sentences. Do not omit the subject or the article to make a sentence shorter.
|
|
29
|
+
|
|
30
|
+
## Word guidance
|
|
31
|
+
|
|
32
|
+
- Prefer the shortest common word: "use", not "utilize". Write "start", not "initiate". Write "before", not "prior to".
|
|
33
|
+
- Treat the approved word list of STE, about 900 words, as the target vocabulary. Approximate it with common English words, one sense each.
|
|
34
|
+
- Technical terms are allowed. Define a technical term on first use.
|
|
35
|
+
- Do not invent a new term for a thing you already named.
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
Commit message, before and after:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
Before: "Refactored auth layer to leverage modern async patterns, kicking
|
|
43
|
+
off the long-overdue cleanup of the legacy session nightmare."
|
|
44
|
+
After: "Make the auth module use async functions. Remove the old session
|
|
45
|
+
code. Do not migrate session data. See ticket ABC-123."
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Status update, before and after:
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
Before: "We're currently experiencing some issues with the deployment
|
|
52
|
+
pipeline, which has been acting up since this morning."
|
|
53
|
+
After: "The deployment pipeline failed at 09:15. The build step gave error
|
|
54
|
+
E403. We are investigating the cause. The next update comes at 14:00."
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Bug report, before and after:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
Before: "Users can't seem to export their reports whenever the dataset is
|
|
61
|
+
particularly large. It just silently fails without any error."
|
|
62
|
+
After: "Export fails for datasets larger than 50000 rows. The app shows no
|
|
63
|
+
error. To reproduce: load the sample dataset, click Export, wait 60 seconds."
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Conflicts with other styles
|
|
67
|
+
|
|
68
|
+
When another active style conflicts with these rules, these rules win for prose. A brief style may shorten sentences further. It keeps every fact, negation, and number.
|
|
69
|
+
|
|
70
|
+
## Compliance check
|
|
71
|
+
|
|
72
|
+
- Are all sentences 25 words or fewer?
|
|
73
|
+
- Does each sentence give one instruction or one topic?
|
|
74
|
+
- Is the voice active, except where the agent is unknown?
|
|
75
|
+
- Are there no idioms, jokes, metaphors, contractions, or double negatives?
|
|
76
|
+
- Is every technical term defined on first use, and is each term stable?
|
|
77
|
+
|
|
78
|
+
## Sources
|
|
79
|
+
|
|
80
|
+
- https://asd-ste100.org/
|
|
81
|
+
- https://en.wikipedia.org/wiki/Simplified_Technical_English
|
|
82
|
+
- https://github.com/danyuchn/asd-ste100-skill
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: write-commit
|
|
3
|
+
description: >
|
|
4
|
+
Use when the agent writes a commit message, or when the user asks for
|
|
5
|
+
commit text, a commit subject, or a commit body.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Write commit
|
|
9
|
+
|
|
10
|
+
The message gives the intent. The diff already shows the what.
|
|
11
|
+
|
|
12
|
+
## Read first
|
|
13
|
+
|
|
14
|
+
1. Read the staged diff. The message describes the staged change, not the plan.
|
|
15
|
+
2. Read the history with `git log --oneline -15`. The history sets the format: the type words, the scope style, the capitalization, the length.
|
|
16
|
+
3. Read the contribution guide when the repo has one. It wins over the history.
|
|
17
|
+
|
|
18
|
+
The repo convention wins over any default. When the history writes "Area: change", write "Area: change". When the history writes Conventional Commits, write Conventional Commits.
|
|
19
|
+
|
|
20
|
+
## Write
|
|
21
|
+
|
|
22
|
+
- One subject line, imperative, the real change. Keep to the length the history uses.
|
|
23
|
+
- Add a body only for what the diff cannot show: a why, a migration path, a linked ticket.
|
|
24
|
+
- A breaking change, a security fix, a data migration, and a revert always get a body.
|
|
25
|
+
- Keep file narration out. The diff lists files.
|
|
26
|
+
- No tool attribution, unless a repo rule requires a trailer.
|
|
27
|
+
|
|
28
|
+
## Output
|
|
29
|
+
|
|
30
|
+
Give one code block, ready to paste. This block writes text only. It never stages, commits, or amends.
|
|
31
|
+
|
|
32
|
+
## Example
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
fix(auth): reject expired tokens with 401
|
|
36
|
+
|
|
37
|
+
The old check compared dates as strings, so a token issued last year
|
|
38
|
+
passed as valid. Compare timestamps as numbers instead.
|
|
39
|
+
|
|
40
|
+
Closes #412
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Output language
|
|
44
|
+
|
|
45
|
+
Write prose in ASD-STE100 Simplified Technical English. The rules live in `references/ste.md`.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "write-commit",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "Write a commit message for this staged diff. Repo history (git log --oneline): 'fix(auth): reject expired tokens', 'feat(api): add GET /orders/:id', 'fix(api): guard against empty query'. Diff: in src/auth/session.ts, change `if (issuedAt <= expiry)` to `if (issuedAt < expiry)`, and update the test to cover the boundary.",
|
|
7
|
+
"expected_output": "A Conventional Commits subject matching the repo style: type fix, scope auth, imperative verb, 72 characters or fewer, no trailing period. The subject alone carries it: a body is skipped because the subject plus diff say it all. Output is one paste-ready code block, and nothing else.",
|
|
8
|
+
"assertions": [
|
|
9
|
+
"Subject starts with fix(auth):",
|
|
10
|
+
"Subject uses the imperative mood",
|
|
11
|
+
"Subject is 72 characters or fewer with no trailing period",
|
|
12
|
+
"No body for a self-explanatory change",
|
|
13
|
+
"No first person and no file narration",
|
|
14
|
+
"Output is a single code block"
|
|
15
|
+
],
|
|
16
|
+
"files": []
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 2,
|
|
20
|
+
"prompt": "Write a commit message. Diff: renames the endpoint /v1/orders to /v1/checkout across the API gateway and client SDK. Old route returns 410 after 2026-06-01. Ticket 890 tracks the migration. Repo uses Conventional Commits.",
|
|
21
|
+
"expected_output": "A breaking-change commit: feat! or fix! subject with the rename, plus a body that carries the migration path and the removal date, and a Closes or Refs line for the ticket. The body is required here, wrapped at 72 characters.",
|
|
22
|
+
"assertions": [
|
|
23
|
+
"Subject marks the breaking change with !",
|
|
24
|
+
"Body present with the migration path",
|
|
25
|
+
"Body names the removal date or the 410 behavior",
|
|
26
|
+
"Ticket referenced at the end",
|
|
27
|
+
"Body wrapped near 72 characters",
|
|
28
|
+
"No body-less output"
|
|
29
|
+
],
|
|
30
|
+
"files": []
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": 3,
|
|
34
|
+
"prompt": "Write a commit message. Repo history (git log --oneline): 'Session store: move to Redis', 'Login form: tighten errors', 'Build: bump deps'. The staged diff moves session storage from memory to Redis. This repo does not use Conventional Commits.",
|
|
35
|
+
"expected_output": "The message matches the repo's own convention, seen in the history: a 'Area: change' subject in that capitalization style. The skill follows the observed history over its default Conventional Commits format.",
|
|
36
|
+
"assertions": [
|
|
37
|
+
"Subject follows the observed 'Area: change' convention",
|
|
38
|
+
"Does not force Conventional Commits types",
|
|
39
|
+
"Imperative or matching history phrasing",
|
|
40
|
+
"No invented scope or type word",
|
|
41
|
+
"Subject within the repo's observed length"
|
|
42
|
+
],
|
|
43
|
+
"files": []
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Simplified Technical English rules
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Write prose that a non-native English reader understands at first read, without guessing. These rules follow the Issue 9 principles of ASD-STE100.
|
|
6
|
+
|
|
7
|
+
## Scope
|
|
8
|
+
|
|
9
|
+
Applies to chat replies, commit messages, PR descriptions, documentation, release notes, status updates, and bug reports.
|
|
10
|
+
Does not apply to code identifiers, product UI copy, quoted user text, file paths, and shell commands.
|
|
11
|
+
|
|
12
|
+
## Writing rules
|
|
13
|
+
|
|
14
|
+
1. Keep sentences short. Use 20 words or fewer in instructions. Use 25 words or fewer in descriptive text.
|
|
15
|
+
2. Write one instruction, or one topic, per sentence.
|
|
16
|
+
3. Use the active voice. Use the passive voice only when the agent is unknown. Name the agent when you know it.
|
|
17
|
+
4. Write one topic per paragraph. Use 6 sentences or fewer per paragraph.
|
|
18
|
+
5. Use simple verb forms only: simple present, simple past, simple future, imperative, infinitive.
|
|
19
|
+
6. Do not use the "-ing" form of a verb unless it is a technical noun.
|
|
20
|
+
7. Use each word with one meaning only.
|
|
21
|
+
8. Do not use multi-word nouns with more than three words.
|
|
22
|
+
9. Do not use idioms, slang, metaphors, jokes, or cultural references.
|
|
23
|
+
10. Do not use double negatives. Write one clear negative, or write the positive statement.
|
|
24
|
+
11. Do not use contractions. Keep the articles "the" and "a" in sentences.
|
|
25
|
+
12. Use the same word for the same thing. Do not alternate synonyms.
|
|
26
|
+
13. Use vertical lists for data or steps with more than two items.
|
|
27
|
+
14. In procedures, start each step with the command verb. Put warnings before the step.
|
|
28
|
+
15. Split complex text into more sentences. Do not omit the subject or the article to make a sentence shorter.
|
|
29
|
+
|
|
30
|
+
## Word guidance
|
|
31
|
+
|
|
32
|
+
- Prefer the shortest common word: "use", not "utilize". Write "start", not "initiate". Write "before", not "prior to".
|
|
33
|
+
- Treat the approved word list of STE, about 900 words, as the target vocabulary. Approximate it with common English words, one sense each.
|
|
34
|
+
- Technical terms are allowed. Define a technical term on first use.
|
|
35
|
+
- Do not invent a new term for a thing you already named.
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
Commit message, before and after:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
Before: "Refactored auth layer to leverage modern async patterns, kicking
|
|
43
|
+
off the long-overdue cleanup of the legacy session nightmare."
|
|
44
|
+
After: "Make the auth module use async functions. Remove the old session
|
|
45
|
+
code. Do not migrate session data. See ticket ABC-123."
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Status update, before and after:
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
Before: "We're currently experiencing some issues with the deployment
|
|
52
|
+
pipeline, which has been acting up since this morning."
|
|
53
|
+
After: "The deployment pipeline failed at 09:15. The build step gave error
|
|
54
|
+
E403. We are investigating the cause. The next update comes at 14:00."
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Bug report, before and after:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
Before: "Users can't seem to export their reports whenever the dataset is
|
|
61
|
+
particularly large. It just silently fails without any error."
|
|
62
|
+
After: "Export fails for datasets larger than 50000 rows. The app shows no
|
|
63
|
+
error. To reproduce: load the sample dataset, click Export, wait 60 seconds."
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Conflicts with other styles
|
|
67
|
+
|
|
68
|
+
When another active style conflicts with these rules, these rules win for prose. A brief style may shorten sentences further. It keeps every fact, negation, and number.
|
|
69
|
+
|
|
70
|
+
## Compliance check
|
|
71
|
+
|
|
72
|
+
- Are all sentences 25 words or fewer?
|
|
73
|
+
- Does each sentence give one instruction or one topic?
|
|
74
|
+
- Is the voice active, except where the agent is unknown?
|
|
75
|
+
- Are there no idioms, jokes, metaphors, contractions, or double negatives?
|
|
76
|
+
- Is every technical term defined on first use, and is each term stable?
|
|
77
|
+
|
|
78
|
+
## Sources
|
|
79
|
+
|
|
80
|
+
- https://asd-ste100.org/
|
|
81
|
+
- https://en.wikipedia.org/wiki/Simplified_Technical_English
|
|
82
|
+
- https://github.com/danyuchn/asd-ste100-skill
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: write-compact
|
|
3
|
+
description: >
|
|
4
|
+
Use when the user asks for a brief reply, terse mode, the short version, or
|
|
5
|
+
fewer tokens, or says an answer is too long. Also use when the user says
|
|
6
|
+
"wait, what", "explain that again", or says a reply did not land.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Write compact
|
|
10
|
+
|
|
11
|
+
Two modes. Brief mode compresses a reply. Explain-again mode rebuilds a reply that failed. One mode runs at a time.
|
|
12
|
+
|
|
13
|
+
## Brief mode
|
|
14
|
+
|
|
15
|
+
The reader pays per token and reads in a terminal. Every word earns its place. Every fact survives. This is a voice, not broken grammar.
|
|
16
|
+
|
|
17
|
+
<!-- sync:brief-voice start -->
|
|
18
|
+
1. Answer first, then the reason, then the next step.
|
|
19
|
+
2. No greeting, no hedging, no recap, no closing line.
|
|
20
|
+
3. Use the short word. Keep standard acronyms. Do not invent abbreviations.
|
|
21
|
+
4. Drop an article only when the sentence still reads in one pass. Never drop "not", "never", "no", "only", "except". Numbers and units stay exact.
|
|
22
|
+
5. One idea per sentence. Twenty words or fewer. Clarity wins over compression.
|
|
23
|
+
6. Keep payloads exact: code, commands, paths, errors. Show changed lines with 1 or 2 context lines.
|
|
24
|
+
7. One status line before a long tool run, one per phase, one with the result.
|
|
25
|
+
8. Compress the style, never the language. Reply in the language of the user.
|
|
26
|
+
9. Never perform the voice. No prefix, no role play, no copy of the normal answer.
|
|
27
|
+
<!-- sync:brief-voice end -->
|
|
28
|
+
|
|
29
|
+
Bad:
|
|
30
|
+
```text
|
|
31
|
+
Sure! I'd be happy to help. The issue you are experiencing is likely caused
|
|
32
|
+
by a misconfiguration of your authentication settings.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Good:
|
|
36
|
+
```text
|
|
37
|
+
Auth fails. The token check reads the wrong claim. Fix in auth.ts line 40:
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Leave brief mode
|
|
41
|
+
|
|
42
|
+
Write full sentences, then resume brief mode, when:
|
|
43
|
+
|
|
44
|
+
1. You give a security warning.
|
|
45
|
+
2. The user must confirm an irreversible action.
|
|
46
|
+
3. The step order matters and a fragment could scramble it.
|
|
47
|
+
4. The user is confused or repeats the question.
|
|
48
|
+
5. The text will live outside the chat: code, comments, commits, docs, issues, tickets.
|
|
49
|
+
6. You ask the user a question or offer options.
|
|
50
|
+
|
|
51
|
+
## Explain-again mode
|
|
52
|
+
|
|
53
|
+
Use when a reply did not land. Rebuild it with the context the reader missed. Do not shrink it further.
|
|
54
|
+
|
|
55
|
+
1. Find where the read broke: a missing term, a skipped step, or a wrong assumed background. When you cannot tell, ask one question: "Which part lost you?"
|
|
56
|
+
2. Restate the answer with the missing context. Define the term that failed. Show the step that failed.
|
|
57
|
+
3. Use the words of the project. When the repo has a glossary, use its terms.
|
|
58
|
+
4. Keep the floor rules: short sentences, active voice, one idea per sentence, no idioms.
|
|
59
|
+
5. End with the next step in one sentence.
|
|
60
|
+
|
|
61
|
+
## Check before you send
|
|
62
|
+
|
|
63
|
+
- Does the first sentence carry the answer, or the rebuilt context?
|
|
64
|
+
- Is every negation, number, code span, path, and error verbatim?
|
|
65
|
+
- Does any sentence read two ways? Rewrite it as a full sentence.
|
|
66
|
+
- Did you delete the greeting, the recap, and the offer of help?
|
|
67
|
+
|
|
68
|
+
## Output language
|
|
69
|
+
|
|
70
|
+
Write prose in ASD-STE100 Simplified Technical English. The rules live in `references/ste.md`. Brief mode may shorten sentences further. It keeps every fact, negation, and number.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "write-compact",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "Your previous reply was: 'The decorator wraps the handler so the middleware chain stays pure and the retry policy stays composable.' The user answers: 'wait, what? I don't follow.' Rebuild the explanation.",
|
|
7
|
+
"expected_output": "Explain-again mode: finds where the read broke, defines the failed terms, rebuilds with the missing context, ends with the next step. Not a shorter repetition of the same words.",
|
|
8
|
+
"assertions": [
|
|
9
|
+
"Defines the terms that failed: decorator, middleware chain",
|
|
10
|
+
"Adds the context the reader lacked",
|
|
11
|
+
"Uses plain constructions and short sentences",
|
|
12
|
+
"Ends with one next step"
|
|
13
|
+
],
|
|
14
|
+
"files": []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": 2,
|
|
18
|
+
"prompt": "User says: 'be brief from now on'. Then asks: 'does the migration in PR 41 drop the old column, and is it reversible?'",
|
|
19
|
+
"expected_output": "Brief mode: answer first, facts exact, no ceremony, full sentences because the answer covers an irreversible action and order matters.",
|
|
20
|
+
"assertions": [
|
|
21
|
+
"Answer first",
|
|
22
|
+
"No greeting, recap, or closing line",
|
|
23
|
+
"Facts and names exact",
|
|
24
|
+
"Full sentences where order or safety matters"
|
|
25
|
+
],
|
|
26
|
+
"files": []
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": 3,
|
|
30
|
+
"prompt": "Brief mode is on. The user asks for the exact error line from a log that contains: TypeError: Cannot read properties of undefined (reading 'id') at updateCart (cart.ts:88) plus 40 lines of stack.",
|
|
31
|
+
"expected_output": "One decisive error line quoted exact with file and line, no stack dump, one next step.",
|
|
32
|
+
"assertions": [
|
|
33
|
+
"Shortest decisive error line quoted exact",
|
|
34
|
+
"No stack dump",
|
|
35
|
+
"One next step"
|
|
36
|
+
],
|
|
37
|
+
"files": []
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Simplified Technical English rules
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Write prose that a non-native English reader understands at first read, without guessing. These rules follow the Issue 9 principles of ASD-STE100.
|
|
6
|
+
|
|
7
|
+
## Scope
|
|
8
|
+
|
|
9
|
+
Applies to chat replies, commit messages, PR descriptions, documentation, release notes, status updates, and bug reports.
|
|
10
|
+
Does not apply to code identifiers, product UI copy, quoted user text, file paths, and shell commands.
|
|
11
|
+
|
|
12
|
+
## Writing rules
|
|
13
|
+
|
|
14
|
+
1. Keep sentences short. Use 20 words or fewer in instructions. Use 25 words or fewer in descriptive text.
|
|
15
|
+
2. Write one instruction, or one topic, per sentence.
|
|
16
|
+
3. Use the active voice. Use the passive voice only when the agent is unknown. Name the agent when you know it.
|
|
17
|
+
4. Write one topic per paragraph. Use 6 sentences or fewer per paragraph.
|
|
18
|
+
5. Use simple verb forms only: simple present, simple past, simple future, imperative, infinitive.
|
|
19
|
+
6. Do not use the "-ing" form of a verb unless it is a technical noun.
|
|
20
|
+
7. Use each word with one meaning only.
|
|
21
|
+
8. Do not use multi-word nouns with more than three words.
|
|
22
|
+
9. Do not use idioms, slang, metaphors, jokes, or cultural references.
|
|
23
|
+
10. Do not use double negatives. Write one clear negative, or write the positive statement.
|
|
24
|
+
11. Do not use contractions. Keep the articles "the" and "a" in sentences.
|
|
25
|
+
12. Use the same word for the same thing. Do not alternate synonyms.
|
|
26
|
+
13. Use vertical lists for data or steps with more than two items.
|
|
27
|
+
14. In procedures, start each step with the command verb. Put warnings before the step.
|
|
28
|
+
15. Split complex text into more sentences. Do not omit the subject or the article to make a sentence shorter.
|
|
29
|
+
|
|
30
|
+
## Word guidance
|
|
31
|
+
|
|
32
|
+
- Prefer the shortest common word: "use", not "utilize". Write "start", not "initiate". Write "before", not "prior to".
|
|
33
|
+
- Treat the approved word list of STE, about 900 words, as the target vocabulary. Approximate it with common English words, one sense each.
|
|
34
|
+
- Technical terms are allowed. Define a technical term on first use.
|
|
35
|
+
- Do not invent a new term for a thing you already named.
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
Commit message, before and after:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
Before: "Refactored auth layer to leverage modern async patterns, kicking
|
|
43
|
+
off the long-overdue cleanup of the legacy session nightmare."
|
|
44
|
+
After: "Make the auth module use async functions. Remove the old session
|
|
45
|
+
code. Do not migrate session data. See ticket ABC-123."
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Status update, before and after:
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
Before: "We're currently experiencing some issues with the deployment
|
|
52
|
+
pipeline, which has been acting up since this morning."
|
|
53
|
+
After: "The deployment pipeline failed at 09:15. The build step gave error
|
|
54
|
+
E403. We are investigating the cause. The next update comes at 14:00."
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Bug report, before and after:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
Before: "Users can't seem to export their reports whenever the dataset is
|
|
61
|
+
particularly large. It just silently fails without any error."
|
|
62
|
+
After: "Export fails for datasets larger than 50000 rows. The app shows no
|
|
63
|
+
error. To reproduce: load the sample dataset, click Export, wait 60 seconds."
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Conflicts with other styles
|
|
67
|
+
|
|
68
|
+
When another active style conflicts with these rules, these rules win for prose. A brief style may shorten sentences further. It keeps every fact, negation, and number.
|
|
69
|
+
|
|
70
|
+
## Compliance check
|
|
71
|
+
|
|
72
|
+
- Are all sentences 25 words or fewer?
|
|
73
|
+
- Does each sentence give one instruction or one topic?
|
|
74
|
+
- Is the voice active, except where the agent is unknown?
|
|
75
|
+
- Are there no idioms, jokes, metaphors, contractions, or double negatives?
|
|
76
|
+
- Is every technical term defined on first use, and is each term stable?
|
|
77
|
+
|
|
78
|
+
## Sources
|
|
79
|
+
|
|
80
|
+
- https://asd-ste100.org/
|
|
81
|
+
- https://en.wikipedia.org/wiki/Simplified_Technical_English
|
|
82
|
+
- https://github.com/danyuchn/asd-ste100-skill
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: write-core
|
|
3
|
+
description: >
|
|
4
|
+
Use when the agent writes any prose a person will read: chat answers,
|
|
5
|
+
explanations, status updates, bug reports, and notes. Also use when the
|
|
6
|
+
user says "level N", "depth N", "explain simply", "expert mode", or
|
|
7
|
+
"normal mode".
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Write core
|
|
11
|
+
|
|
12
|
+
Write so the reader understands at the first read. Pick a level and a depth. Write. Then check.
|
|
13
|
+
|
|
14
|
+
## Pick the level
|
|
15
|
+
|
|
16
|
+
Infer the level from the words of the user. Do not announce it.
|
|
17
|
+
|
|
18
|
+
| Level | Reader | How to write |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| 1 Plain | New to the field | Define every term on first use. Explain why. Give one example. Expand each acronym. |
|
|
21
|
+
| 2 Standard | Knows the stack, not this code | Default. Define only terms that are not obvious. Say what and how. Add a short why. |
|
|
22
|
+
| 3 Technical | Expert in the domain | Skip definitions of standard terms. State facts, limits, and tradeoffs. Skip motivation. |
|
|
23
|
+
| 4 Brief | Expert who wants the most signal per word | Follow the brief voice below. Chat replies only. Never for saved text. |
|
|
24
|
+
|
|
25
|
+
When the signals conflict, ask one question: "Basics, working level, or expert level?" Otherwise continue.
|
|
26
|
+
|
|
27
|
+
Read `references/profile.md` when it lists the topic. Use the level of the topic.
|
|
28
|
+
|
|
29
|
+
## Reader signals
|
|
30
|
+
|
|
31
|
+
- Hedging, open framing, personal context first: level 1. Answer the need behind the words, in plain words.
|
|
32
|
+
- Direct imperative, bounded scope, domain terms: level 2 or 3.
|
|
33
|
+
- "be brief", "short version", "fewer tokens": level 4.
|
|
34
|
+
- Mixed signals: answer the direct ask first, then name the next step.
|
|
35
|
+
- Two readings are possible and the choice changes the answer: ask which one the user wants.
|
|
36
|
+
|
|
37
|
+
## Pick the depth
|
|
38
|
+
|
|
39
|
+
Depth is the amount of technical content. Depth never changes accuracy.
|
|
40
|
+
|
|
41
|
+
| Depth | Content |
|
|
42
|
+
|---|---|
|
|
43
|
+
| 0 | No code, commands, or paths. |
|
|
44
|
+
| 1 | Name tools and concepts. No code blocks. |
|
|
45
|
+
| 2 | Commands and short snippets. Default. |
|
|
46
|
+
| 3 | Full code, exact paths, exact commands, diffs. |
|
|
47
|
+
| 4 | Internals, traces, and measured numbers. |
|
|
48
|
+
|
|
49
|
+
At every depth, copy code, commands, paths, numbers, and error text exactly. Default depth: chat 2, docs 2, commit and PR text 3, reports 3.
|
|
50
|
+
|
|
51
|
+
## Write rules
|
|
52
|
+
|
|
53
|
+
1. Put the answer first. Then the reason. Then the next step.
|
|
54
|
+
<!-- sync:sentence-floor start -->
|
|
55
|
+
2. One idea per sentence. Use 20 words or fewer in instructions and 25 words or fewer elsewhere.
|
|
56
|
+
3. Name the actor. Use the active voice. Use the passive voice only when the actor is unknown.
|
|
57
|
+
<!-- sync:sentence-floor end -->
|
|
58
|
+
4. Use the short common word.
|
|
59
|
+
5. Call each thing by one name. Do not swap synonyms.
|
|
60
|
+
6. Define a technical term on first use at levels 1 and 2.
|
|
61
|
+
7. State the fact, not the feeling. Name the mechanism, the number, or the command.
|
|
62
|
+
8. Use commas or periods. Do not use em dashes.
|
|
63
|
+
9. Write "do not". Never use contractions.
|
|
64
|
+
10. Keep the articles and the verbs. Do not drop words to save space, except in the brief voice.
|
|
65
|
+
11. Keep a hedge only when the doubt is real. Say "may" once.
|
|
66
|
+
12. Reply in the language of the user.
|
|
67
|
+
13. Keep a final report to 6 lines or fewer. State the result, the evidence, and the next step.
|
|
68
|
+
|
|
69
|
+
After the draft, open `references/ai-patterns.md`. Find every pattern in the draft. Rewrite each match.
|
|
70
|
+
|
|
71
|
+
## Brief voice
|
|
72
|
+
|
|
73
|
+
Level 4 runs here. Chat replies only. Saved text uses level 2 or higher.
|
|
74
|
+
|
|
75
|
+
<!-- sync:brief-voice start -->
|
|
76
|
+
1. Answer first, then the reason, then the next step.
|
|
77
|
+
2. No greeting, no hedging, no recap, no closing line.
|
|
78
|
+
3. Use the short word. Keep standard acronyms. Do not invent abbreviations.
|
|
79
|
+
4. Drop an article only when the sentence still reads in one pass. Never drop "not", "never", "no", "only", "except". Numbers and units stay exact.
|
|
80
|
+
5. One idea per sentence. Twenty words or fewer. Clarity wins over compression.
|
|
81
|
+
6. Keep payloads exact: code, commands, paths, errors. Show changed lines with 1 or 2 context lines.
|
|
82
|
+
7. One status line before a long tool run, one per phase, one with the result.
|
|
83
|
+
8. Compress the style, never the language. Reply in the language of the user.
|
|
84
|
+
9. Never perform the voice. No prefix, no role play, no copy of the normal answer.
|
|
85
|
+
<!-- sync:brief-voice end -->
|
|
86
|
+
|
|
87
|
+
Leave the brief voice for a security warning, an irreversible action, an order that fragments could scramble, a confused user, or a question. Write full sentences, then resume.
|
|
88
|
+
|
|
89
|
+
## Check before you send
|
|
90
|
+
|
|
91
|
+
- Does the first sentence give the answer, not a plan?
|
|
92
|
+
- Is every sentence 25 words or fewer, with one idea?
|
|
93
|
+
- Is the voice active? Are the terms stable?
|
|
94
|
+
- Did you remove every pattern from `references/ai-patterns.md`?
|
|
95
|
+
- Does the last sentence add a fact? Delete a recap or an offer of help.
|
|
96
|
+
|
|
97
|
+
## Safety and conflicts
|
|
98
|
+
|
|
99
|
+
- For a security warning or an irreversible action, write full sentences at any level.
|
|
100
|
+
- Saved text, such as code, commits, docs, and files, uses level 2 or higher.
|
|
101
|
+
- Order of strength: safety, accuracy, genre, sentence rules, level, depth.
|
|
102
|
+
- When a rule makes a sentence worse, rewrite the sentence another way.
|
|
103
|
+
|
|
104
|
+
## Commands
|
|
105
|
+
|
|
106
|
+
- "level N": set the level for the session.
|
|
107
|
+
- "depth N": set the depth for the session.
|
|
108
|
+
- "level 4": switch to the brief voice.
|
|
109
|
+
- "normal mode": return to level 2, depth 2.
|
|
110
|
+
|
|
111
|
+
## Files
|
|
112
|
+
|
|
113
|
+
- `references/ai-patterns.md`: the AI patterns to remove from every draft.
|
|
114
|
+
- `references/profile.md`: a level for each topic. Edit it to match the reader.
|
|
115
|
+
- `references/ste.md`: the Simplified Technical English rules.
|
|
116
|
+
|
|
117
|
+
## Output language
|
|
118
|
+
|
|
119
|
+
Write prose in ASD-STE100 Simplified Technical English. The rules live in `references/ste.md`.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill_name": "write-core",
|
|
3
|
+
"evals": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"prompt": "Explain to a new team member why the build failed: the CI log says 'error TS2322: Type string is not assignable to type number at src/cart.ts line 41'. They have never used TypeScript.",
|
|
7
|
+
"expected_output": "Level 1 reply: defines type checking and the error in plain words, gives the fix, one example. No jargon without expansion. Short sentences, active voice.",
|
|
8
|
+
"assertions": [
|
|
9
|
+
"Defines the terms a newcomer lacks",
|
|
10
|
+
"States the fix and the file location",
|
|
11
|
+
"Sentences short and active",
|
|
12
|
+
"No AI patterns"
|
|
13
|
+
],
|
|
14
|
+
"files": []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": 2,
|
|
18
|
+
"prompt": "Status update for the channel, level 2, depth 3: the flaky login test was fixed by waiting for the session cookie instead of a fixed sleep. Test run went from 14 failures this week to 0.",
|
|
19
|
+
"assertions": [
|
|
20
|
+
"Answer first, then reason, then next step",
|
|
21
|
+
"Exact numbers kept: 14, 0",
|
|
22
|
+
"Real symbol and command names",
|
|
23
|
+
"Report held to a few lines"
|
|
24
|
+
],
|
|
25
|
+
"files": []
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": 3,
|
|
29
|
+
"prompt": "Rewrite this reply so it carries no AI patterns: 'In order to boost your productivity, this robust tool leverages cutting-edge caching to deliver a seamless experience that will help you delve into your data like never before.'",
|
|
30
|
+
"expected_output": "Every banned word and filler removed. The rewrite names what the tool does in plain words.",
|
|
31
|
+
"assertions": [
|
|
32
|
+
"No banned vocabulary remains",
|
|
33
|
+
"No 'in order to', no 'leverage', no 'seamless'",
|
|
34
|
+
"Names a mechanism or number",
|
|
35
|
+
"Meaning kept"
|
|
36
|
+
],
|
|
37
|
+
"files": []
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# AI patterns to remove
|
|
2
|
+
|
|
3
|
+
Scan the draft for these patterns. Rewrite each match. Keep the meaning and the tone. The rule numbers are stable. A gap marks a removed rule.
|
|
4
|
+
|
|
5
|
+
## Content
|
|
6
|
+
|
|
7
|
+
- **B1** A superficial "-ing" phrase: "highlighting", "ensuring", "reflecting". Delete it, or replace it with the real fact.
|
|
8
|
+
- **B2** A vague attribution: "experts believe", "industry reports suggest". Name the source, or delete the claim.
|
|
9
|
+
- **B3** AI vocabulary: "additionally", "crucial", "delve", "enduring", "enhance", "fostering", "garner", "interplay", "intricate", "pivotal", "showcase", "testament", "underscore", "vibrant". Replace each with a plain word.
|
|
10
|
+
|
|
11
|
+
## Language
|
|
12
|
+
|
|
13
|
+
- **B4** A fancy way to say "is": "serves as", "stands as", "boasts", "features". Write "is" or "has".
|
|
14
|
+
- **B6** A forced group of three. Use the natural number of items.
|
|
15
|
+
- **B8** A false range: "from X to Y" with no real scale. List the topics.
|
|
16
|
+
|
|
17
|
+
## Style
|
|
18
|
+
|
|
19
|
+
- **B9** An em dash. Use a period or a comma. Do not use parentheses or dashes as a substitute.
|
|
20
|
+
- **B10** A colon as a mid-sentence connector. A colon is fine before a list or an example.
|
|
21
|
+
- **B11** Bold on every name or acronym. Stop.
|
|
22
|
+
- **B12** A bold label that restates the line. Convert it to prose.
|
|
23
|
+
- **B13** A title-case heading. Use sentence case.
|
|
24
|
+
- **B14** A decorative emoji in a heading or bullet. Remove it.
|
|
25
|
+
- **B15** Curly quotes. Use straight quotes.
|
|
26
|
+
|
|
27
|
+
## Talk artifacts
|
|
28
|
+
|
|
29
|
+
- **B16** A chatbot phrase: "I hope this helps", "let me know if", "Of course!", "Certainly!". Remove it and answer directly.
|
|
30
|
+
|
|
31
|
+
## Filler
|
|
32
|
+
|
|
33
|
+
- **B18** Filler and adverbs: "in order to" becomes "to". "due to the fact that" becomes "because". Delete "very", "really", "just", "actually", "basically". Use a stronger verb in place of an adverb.
|
|
34
|
+
- **B19** Excess hedging: "could potentially possibly be argued" becomes "may".
|
|
35
|
+
- **B20** A generic conclusion: "the future looks bright". State the specific plan or fact.
|
|
36
|
+
|
|
37
|
+
## Jargon
|
|
38
|
+
|
|
39
|
+
- **B21** An abstract metaphor noun: "substrate", "wedge", "vector", "nexus", "paradigm", "north star", "flywheel", "endgame". Write the concrete word: "base", "add", "way", "method", "goal", "the last phase".
|
|
40
|
+
|
|
41
|
+
## Plain speech
|
|
42
|
+
|
|
43
|
+
- **B22** Say what it does, not how it feels. Name the mechanism or the number. A sentence that could sit in any project says nothing. Cut it.
|