awesome-requirements-writer 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README-zh.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # Awesome Requirements Writer
2
+ v0.2.0
2
3
 
3
4
  作为一个具有十多年工作经验的汽车软件工程师和带领工程团队获得ASPICE认证的技术经理,我把多年来参与编写/评审技术产品需求的心得总结出来,写成了这个可复用的 AI agent skill,用于把工程笔记、客户输入、标准条款和测试期望转换为清晰、可测试的技术产品需求。
4
5
 
@@ -40,7 +41,7 @@
40
41
  ## 安装
41
42
 
42
43
  **方法一(推荐):**
43
- 直接告诉你的agent:安装awesome-requirements-writer。
44
+ 直接告诉你的agent:安装awesome-requirements-writer skill
44
45
 
45
46
  **方法二:**
46
47
 
@@ -59,7 +60,7 @@ node --version
59
60
  ```
60
61
 
61
62
 
62
- 确认node.js已安装后,运行:
63
+ 确认node.js已安装后,运行(若需 root 权限,应前缀sudo命令):
63
64
 
64
65
  ```bash
65
66
  npx awesome-requirements-writer install
@@ -71,12 +72,19 @@ npx awesome-requirements-writer install
71
72
  npx awesome-requirements-writer install codex
72
73
  ```
73
74
 
74
- 查看支持的目标:
75
+ OpenClaw 和 Hermes 都可以读取 `SKILL.md` 风格的 skill 目录,因此复用同一份 canonical skill 包:
76
+
77
+ ```bash
78
+ npx awesome-requirements-writer install openclaw
79
+ npx awesome-requirements-writer install hermes
80
+ ```
81
+
82
+ 查看支持的CLI工具:
75
83
 
76
84
  ```bash
77
85
  npx awesome-requirements-writer list
78
86
  ```
79
- ß
87
+
80
88
  ## 使用
81
89
 
82
90
  显式调用 skill:
@@ -110,6 +118,7 @@ adapters/
110
118
  ```
111
119
 
112
120
  `SKILL.md` 是核心 agent 指令。`references/` 里的文件只在任务需要详细模板或汽车工程上下文时读取。
121
+ OpenClaw 和 Hermes 复用 `SKILL.md` 包,不新增单独的 adapter wrapper。
113
122
 
114
123
  ## 平台适配
115
124
 
@@ -121,11 +130,13 @@ adapters/
121
130
  | Cursor | `adapters/cursor/.cursor/rules/` | `.cursor/rules/`,包含 `references/` |
122
131
  | Gemini CLI | `adapters/gemini/` | 合并到 `GEMINI.md`;把 references 复制到 `.gemini/awesome-requirements-writer/` |
123
132
  | OpenCode | `adapters/opencode/` | 将 `AGENTS.snippet.md` 合并到 `AGENTS.md`;把 references 复制到 `.opencode/awesome-requirements-writer/` |
133
+ | OpenClaw | `adapters/codex/.agents/skills/awesome-requirements-writer/` | `~/.openclaw/skills/awesome-requirements-writer/` 或 workspace `skills/awesome-requirements-writer/` |
134
+ | Hermes Agent | `adapters/codex/.agents/skills/awesome-requirements-writer/` | `~/.hermes/skills/awesome-requirements-writer/` |
124
135
  | CodeBuddy | `adapters/codebuddy/.codebuddy/rules/awesome-requirements-writer/` | `.codebuddy/rules/awesome-requirements-writer/`,包含 `RULE.mdc` 和 `references/` |
125
136
  | GitHub Copilot | `adapters/github-copilot/.github/` | `.github/`,包含 `copilot-instructions.md`、`instructions/` 和 `instructions/references/` |
126
137
  | Trae | `adapters/trae/.trae/` | Trae 项目规则路径,需确认当前版本使用 `.trae/project_rules.md` 还是 `.trae/rules/project_rules.md` |
127
138
 
128
- 规则型 adapter 现在也包含 `references/`,但入口文件会明确要求 agent 不要默认加载全部 reference,只在任务需要时读取对应语言模板或汽车工程上下文。对于 `AGENTS.md` 或 `GEMINI.md` 这类固定入口文件,应把提供的 snippet 合并进用户已有文件,而不是覆盖。
139
+ 规则型 adapter 现在也包含 `references/`,但入口文件会明确要求 agent 不要默认加载全部 reference,只在任务需要时读取对应语言模板或汽车工程上下文。OpenClaw 和 Hermes 直接使用 canonical `SKILL.md` 包,不使用单独 wrapper 文件。这里的 OpenClaw/Hermes 支持表示支持本地 SKILL.md 兼容安装;在单独验证 ClawHub 或 Hermes registry 发布流程之前,不声明已经支持对应 registry 发布。对于 `AGENTS.md` 或 `GEMINI.md` 这类固定入口文件,应把提供的 snippet 合并进用户已有文件,而不是覆盖。
129
140
 
130
141
  CLI 安装器会自动用带标记的文本块完成合并。重复运行安装器会更新同一个标记块,不会反复追加重复内容。
131
142
 
package/README.md CHANGED
@@ -1,8 +1,11 @@
1
1
  # Awesome Requirements Writer
2
+ v0.2.0
2
3
 
3
- As an automotive software engineer with more than ten years of experience, and as a technical manager who has led engineering teams through ASPICE certification, I summarized what I have learned from years of writing and reviewing technical product requirements into this reusable AI agent skill. It helps turn engineering notes, customer inputs, standards, and test expectations into clear, testable technical product requirements.
4
+ 本skill支持中文技术需求文档编写,请浏览 简体中文(./README-zh.md) 内容。
4
5
 
5
- Some of the ideas behind this skill are discussed in an article I wrote: https://zhuanlan.zhihu.com/p/338598640
6
+ As an automotive engineer and techinical manager with more than ten years of experience who has led engineering teams through ASPICE certification, I summarized what I have learned from years of writing and reviewing technical product requirements into this reusable AI agent skill. It helps turn engineering notes, customer inputs, standards, and test expectations into clear, testable technical product requirements.
7
+
8
+ Some of the ideas behind this skill are discussed in an article I wrote (in Chinese) a couple years ago: https://zhuanlan.zhihu.com/p/338598640
6
9
 
7
10
  English | [简体中文](./README-zh.md)
8
11
 
@@ -67,6 +70,13 @@ This package also provides an optional installer CLI for target-specific adapter
67
70
  npx awesome-requirements-writer install codex
68
71
  ```
69
72
 
73
+ OpenClaw and Hermes both consume `SKILL.md`-style skill folders, so they reuse the same canonical skill package:
74
+
75
+ ```bash
76
+ npx awesome-requirements-writer install openclaw
77
+ npx awesome-requirements-writer install hermes
78
+ ```
79
+
70
80
  List supported targets:
71
81
 
72
82
  ```bash
@@ -106,6 +116,7 @@ adapters/
106
116
  ```
107
117
 
108
118
  `SKILL.md` is the core agent instruction. The files in `references/` are loaded only when the task needs detailed templates or automotive engineering context.
119
+ OpenClaw and Hermes reuse the `SKILL.md` package rather than adding a separate adapter wrapper.
109
120
 
110
121
  ## Adapters
111
122
 
@@ -117,11 +128,13 @@ adapters/
117
128
  | Cursor | `adapters/cursor/.cursor/rules/` | `.cursor/rules/`, including `references/` |
118
129
  | Gemini CLI | `adapters/gemini/` | Merge into `GEMINI.md`; copy references under `.gemini/awesome-requirements-writer/` |
119
130
  | OpenCode | `adapters/opencode/` | Merge `AGENTS.snippet.md` into `AGENTS.md`; copy references under `.opencode/awesome-requirements-writer/` |
131
+ | OpenClaw | `adapters/codex/.agents/skills/awesome-requirements-writer/` | `~/.openclaw/skills/awesome-requirements-writer/` or workspace `skills/awesome-requirements-writer/` |
132
+ | Hermes Agent | `adapters/codex/.agents/skills/awesome-requirements-writer/` | `~/.hermes/skills/awesome-requirements-writer/` |
120
133
  | CodeBuddy | `adapters/codebuddy/.codebuddy/rules/awesome-requirements-writer/` | `.codebuddy/rules/awesome-requirements-writer/`, including `RULE.mdc` and `references/` |
121
134
  | GitHub Copilot | `adapters/github-copilot/.github/` | `.github/`, including `copilot-instructions.md`, `instructions/`, and `instructions/references/` |
122
135
  | Trae | `adapters/trae/.trae/` | Trae project rules path, confirm whether your version uses `.trae/project_rules.md` or `.trae/rules/project_rules.md` |
123
136
 
124
- Rule-style adapters include bundled `references/`, but their entry files explicitly tell the agent not to load every reference by default. The agent should read only the matching language or automotive-context reference when the task needs it. For fixed entry filenames such as `AGENTS.md` or `GEMINI.md`, merge the provided snippet into the user's existing file instead of overwriting it.
137
+ Rule-style adapters include bundled `references/`, but their entry files explicitly tell the agent not to load every reference by default. The agent should read only the matching language or automotive-context reference when the task needs it. OpenClaw and Hermes use the canonical `SKILL.md` package directly instead of a separate wrapper file. OpenClaw/Hermes support means local SKILL.md-compatible installation support; it does not claim ClawHub or Hermes registry publication until those registry flows are tested separately. For fixed entry filenames such as `AGENTS.md` or `GEMINI.md`, merge the provided snippet into the user's existing file instead of overwriting it.
125
138
 
126
139
  The CLI installer performs this merge automatically by using a marked block. Re-running the installer updates that block instead of appending duplicates.
127
140
 
@@ -142,4 +155,4 @@ Users can edit `SKILL.md` to adjust the core behavior, and can add company- or t
142
155
 
143
156
  ## License
144
157
 
145
- MIT
158
+ MIT
package/SKILL.md CHANGED
@@ -29,13 +29,15 @@ A strong requirement is:
29
29
  1. Identify the item under requirement: product system, subsystem, feature, variant, and lifecycle phase.
30
30
  2. Extract stakeholder intent, system behavior, constraints, interfaces and validation expectations.
31
31
  3. Determine if the content is "information" or "requirement". Information is the content which is rationale, examples, diagrams, repeated else-defined requirements, and verification notes outside the normative requirement text.
32
- 4. Classify requirements by type: functional (direct related to a specific feature or design), non-functional (performance, efficiency, expansion etc).
32
+ 4. Classify requirements by type: functional vs non-functional.
33
33
  5. Draft atomic "shall" statements with a single subject, condition, behavior, measurable target, operating bounds, and verification path.
34
34
  6. Add metadata: type(information/requirement), ID , content body and acceptance criteria.
35
35
  7. List all functional requirements and related information in one chapter, while all non-functional requirements in another.
36
36
  8. In a new chapter make a table of all static variables and its value. If no value is given, type TBD.
37
37
  9. Audit the result for ambiguity, hidden design decisions, unverifiable claims, duplicate requirements, conflicting limits, missing fault behavior, and missing open questions.
38
38
 
39
+ **Note:** Functional requirements are direct related to a specific feature or design, while non-functional requirements are related to general performance, system efficiency, software extensibility etc。 They are not direct related to feature level performance definition,more focusing on system level or product level. For example, "The fault flag shall be set within 100 ms after the fault occurs" is a functional requirement, while "The CPU load of the product shall be equal or less than 80%" is a non-functional requirement.
40
+
39
41
  ## Requirement Shape
40
42
 
41
43
  Use this format unless the user asks for another one:
@@ -19,6 +19,8 @@ const targets = [
19
19
  'gemini',
20
20
  'opencode',
21
21
  'opencli',
22
+ 'openclaw',
23
+ 'hermes',
22
24
  'codebuddy',
23
25
  'github-copilot',
24
26
  'copilot',
@@ -39,6 +41,8 @@ Targets:
39
41
  cursor Install Cursor rules into the current project.
40
42
  gemini Merge GEMINI.md instructions into the current project.
41
43
  opencode|opencli Merge AGENTS.md instructions into the current project.
44
+ openclaw Install as an OpenClaw SKILL.md package.
45
+ hermes Install as a Hermes Agent SKILL.md package. Defaults to --global.
42
46
  codebuddy Install CodeBuddy rules into the current project.
43
47
  github-copilot Install GitHub Copilot repository instructions.
44
48
  trae Install Trae project rules. Defaults to --variant rules.
@@ -58,6 +62,8 @@ Examples:
58
62
  npx awesome-requirements-writer install claude
59
63
  npx awesome-requirements-writer install cursor --cwd ./my-project
60
64
  npx awesome-requirements-writer install opencode --cwd ./my-project
65
+ npx awesome-requirements-writer install openclaw --cwd ./openclaw-workspace
66
+ npx awesome-requirements-writer install hermes
61
67
  `);
62
68
  }
63
69
 
@@ -265,6 +271,24 @@ function installOpenCode(options) {
265
271
  mergeMarkdownBlock(source('adapters', 'opencode', 'AGENTS.snippet.md'), projectPath(options, 'AGENTS.md'), options);
266
272
  }
267
273
 
274
+ function installOpenClaw(options) {
275
+ const dest = options.project
276
+ ? projectPath(options, 'skills', skillName)
277
+ : homePath('.openclaw', 'skills', skillName);
278
+ copyDirSafe(source('adapters', 'codex', '.agents', 'skills', skillName), dest, options);
279
+ }
280
+
281
+ function installHermes(options) {
282
+ if (options.project) {
283
+ fail('hermes adapter is user-level only. Remove --project.');
284
+ }
285
+ copyDirSafe(
286
+ source('adapters', 'codex', '.agents', 'skills', skillName),
287
+ homePath('.hermes', 'skills', skillName),
288
+ options
289
+ );
290
+ }
291
+
268
292
  function installTrae(options) {
269
293
  rejectGlobal('trae', options);
270
294
  if (!['rules', 'legacy'].includes(options.variant)) {
@@ -290,7 +314,7 @@ function install(target, options) {
290
314
  const normalized = normalizeTarget(target || 'agent');
291
315
  if (!normalized) fail(`Unknown target: ${target}. Run "npx awesome-requirements-writer list".`);
292
316
 
293
- if (!options.global && !options.project && ['agent', 'codex', 'claude'].includes(normalized)) {
317
+ if (!options.global && !options.project && ['agent', 'codex', 'claude', 'openclaw', 'hermes'].includes(normalized)) {
294
318
  options.global = true;
295
319
  }
296
320
 
@@ -301,6 +325,8 @@ function install(target, options) {
301
325
  cursor: installCursor,
302
326
  gemini: installGemini,
303
327
  opencode: installOpenCode,
328
+ openclaw: installOpenClaw,
329
+ hermes: installHermes,
304
330
  codebuddy: installCodeBuddy,
305
331
  'github-copilot': installGitHubCopilot,
306
332
  trae: installTrae
@@ -325,6 +351,8 @@ function listTargets() {
325
351
  cursor
326
352
  gemini
327
353
  opencode (alias: opencli)
354
+ openclaw
355
+ hermes
328
356
  codebuddy
329
357
  github-copilot (alias: copilot)
330
358
  trae`);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "awesome-requirements-writer",
3
- "version": "0.1.0",
4
- "description": "Install an AI agent skill for writing clear, testable technical product requirements across Codex, Claude, Cursor, Gemini CLI, OpenCode, CodeBuddy, GitHub Copilot, and Trae.",
3
+ "version": "0.2.0",
4
+ "description": "Install an AI agent skill for writing clear, testable technical product requirements across Codex, Claude Code, Cursor, Gemini CLI, OpenCode, OpenClaw, Hermes Agent, CodeBuddy, GitHub Copilot, and Trae.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/muchengracedriver/awesome-requirements-writer#readme",
7
7
  "repository": {
@@ -31,6 +31,9 @@
31
31
  "cursor",
32
32
  "gemini-cli",
33
33
  "opencode",
34
+ "openclaw",
35
+ "hermes",
36
+ "hermes-agent",
34
37
  "requirements",
35
38
  "technical-requirements"
36
39
  ],
@@ -38,7 +41,7 @@
38
41
  "node": ">=18"
39
42
  },
40
43
  "scripts": {
41
- "test": "node bin/awesome-requirements-writer.js list && node bin/awesome-requirements-writer.js install --project --cwd /tmp/awr-install-test --dry-run && node bin/awesome-requirements-writer.js install codex --project --cwd /tmp/awr-install-test --dry-run",
44
+ "test": "node bin/awesome-requirements-writer.js list && node bin/awesome-requirements-writer.js install --project --cwd /tmp/awr-install-test --dry-run && node bin/awesome-requirements-writer.js install codex --project --cwd /tmp/awr-install-test --dry-run && node bin/awesome-requirements-writer.js install openclaw --project --cwd /tmp/awr-openclaw-test --dry-run && node bin/awesome-requirements-writer.js install hermes --dry-run",
42
45
  "pack:check": "npm --cache /tmp/awesome-requirements-writer-npm-cache pack --dry-run"
43
46
  }
44
47
  }