@ariestools/cli 0.1.6
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 +1251 -0
- package/dist/bin/aries.mjs +366765 -0
- package/dist/plugins/xy-readme/.claude-plugin/plugin.json +5 -0
- package/dist/plugins/xy-readme/skills/readme-audit/SKILL.md +187 -0
- package/dist/plugins/xy-readme/skills/readme-author/SKILL.md +293 -0
- package/dist/plugins/xy-readme/skills/readme-init/SKILL.md +243 -0
- package/package.json +71 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: readme-audit
|
|
3
|
+
description: Audit a package README against the xylabs / xyo convention. Reports missing or out-of-order sections, malformed badges, wrong license link style, missing reference-link definitions, and other deviations. Use when the user asks to "lint", "audit", "check", "review", or "validate" a README in a xylabs/ or XYOracleNetwork/ repo.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# README Audit (xylabs / xyo convention)
|
|
7
|
+
|
|
8
|
+
This skill audits an existing `README.md` against the convention codified in
|
|
9
|
+
the `readme-author` skill. It is read-only by default — produce a report,
|
|
10
|
+
then ask the user before making fixes. If the user explicitly asked to
|
|
11
|
+
"fix", apply changes after the audit.
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- User says "audit", "lint", "check", "review", "validate" + README.
|
|
16
|
+
- Before publishing a new package.
|
|
17
|
+
- During a sweep to bring multiple packages into alignment.
|
|
18
|
+
|
|
19
|
+
## Audit checklist
|
|
20
|
+
|
|
21
|
+
Walk through every check in order. For each, emit a line beginning with
|
|
22
|
+
`✓` (pass), `✗` (fail), or `⚠` (warning / optional). Group by section.
|
|
23
|
+
|
|
24
|
+
### 1. Header
|
|
25
|
+
|
|
26
|
+
- ✓/✗ First non-blank line is `[![logo][]][logo-link]`.
|
|
27
|
+
- ✓/✗ Title is a single `# {{name}}` line where `{{name}}` matches
|
|
28
|
+
`package.json#name` exactly (including `@scope/`).
|
|
29
|
+
- ✓/✗ Two badge lines follow the title:
|
|
30
|
+
`[![npm-badge][]][npm-link]` and `[![license-badge][]][license-link]`.
|
|
31
|
+
- ✓/✗ Tagline is a single `> ` line directly after the badges.
|
|
32
|
+
|
|
33
|
+
### 2. Section presence and order
|
|
34
|
+
|
|
35
|
+
The required-and-optional section order:
|
|
36
|
+
|
|
37
|
+
1. (Header — checked above)
|
|
38
|
+
2. Table of Contents *(aggregate only)*
|
|
39
|
+
3. About *or* Description (aggregate uses "Description")
|
|
40
|
+
4. Install
|
|
41
|
+
5. Subpath Exports *(when applicable)*
|
|
42
|
+
6. What's Inside
|
|
43
|
+
7. Peer Dependencies *(when applicable)*
|
|
44
|
+
8. Building Locally
|
|
45
|
+
9. Maintainers
|
|
46
|
+
10. License
|
|
47
|
+
11. Credits
|
|
48
|
+
12. Reference link definitions (footer)
|
|
49
|
+
|
|
50
|
+
Required for all packages: Install, What's Inside, Building Locally,
|
|
51
|
+
Maintainers, License, Credits, Reference link definitions.
|
|
52
|
+
|
|
53
|
+
- ✓/✗ Required sections all present.
|
|
54
|
+
- ✓/✗ Sections appear in the order above (skip-allowed for optional ones).
|
|
55
|
+
- ✗ Flag any section that uses a different name (e.g. `## Setup` instead of
|
|
56
|
+
`## Install`, `## Authors` instead of `## Maintainers`).
|
|
57
|
+
|
|
58
|
+
### 3. Install section
|
|
59
|
+
|
|
60
|
+
- ✓/✗ Contains exactly four `Using <pm>:` blocks in this order: npm, yarn,
|
|
61
|
+
pnpm, bun.
|
|
62
|
+
- ✓/✗ Each block uses ` ```sh ` as the language.
|
|
63
|
+
- ✓/✗ The install commands are:
|
|
64
|
+
- `npm i --save {{NAME}}`
|
|
65
|
+
- `yarn add {{NAME}}`
|
|
66
|
+
- `pnpm add {{NAME}}`
|
|
67
|
+
- `bun add {{NAME}}`
|
|
68
|
+
|
|
69
|
+
### 4. Building Locally
|
|
70
|
+
|
|
71
|
+
- ✓/✗ Contains a single `sh` code block with three lines:
|
|
72
|
+
- `xy build {{NAME}}`
|
|
73
|
+
- `xy test {{NAME}}`
|
|
74
|
+
- `xy lint {{NAME}}`
|
|
75
|
+
- ✗ Bare `xy build` (unscoped) is incorrect for a *package* README. It is
|
|
76
|
+
acceptable in the aggregate-tier *root* README only, and only when followed
|
|
77
|
+
by an explicit "Scope to this package" sentence.
|
|
78
|
+
|
|
79
|
+
### 5. Maintainers
|
|
80
|
+
|
|
81
|
+
- ✓/✗ Section present and is an HTML `<table>` (do NOT enforce who is in it
|
|
82
|
+
or any specific layout — the table is human-managed).
|
|
83
|
+
- ⚠ If the section is missing, that's a fail; suggest copying the standard
|
|
84
|
+
table from the `readme-author` skill.
|
|
85
|
+
|
|
86
|
+
### 6. License
|
|
87
|
+
|
|
88
|
+
- ✓/✗ Section text is `See the [LICENSE](./LICENSE) file (LGPL-3.0-only).`
|
|
89
|
+
*or* the longer aggregate-root variant. Either is acceptable.
|
|
90
|
+
- ✗ Absolute LICENSE links (e.g. `https://github.com/.../LICENSE`) are
|
|
91
|
+
incorrect for package READMEs — must be the relative `./LICENSE`.
|
|
92
|
+
|
|
93
|
+
### 7. Credits
|
|
94
|
+
|
|
95
|
+
- ✓/✗ Exactly: `[Made with 🔥 and ❄️ by XYO](https://xyo.network)`.
|
|
96
|
+
|
|
97
|
+
### 8. Reference link definitions
|
|
98
|
+
|
|
99
|
+
The file MUST end with these definitions (in this order, blank lines between
|
|
100
|
+
each pair):
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
[logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
|
|
104
|
+
[logo-link]: https://xyo.network
|
|
105
|
+
|
|
106
|
+
[npm-badge]: https://img.shields.io/npm/v/{{NAME}}.svg
|
|
107
|
+
[npm-link]: https://www.npmjs.com/package/{{NAME}}
|
|
108
|
+
|
|
109
|
+
[license-badge]: https://img.shields.io/npm/l/{{NAME}}.svg
|
|
110
|
+
[license-link]: ./LICENSE
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
- ✓/✗ All six definitions present.
|
|
114
|
+
- ✓/✗ Each `{{NAME}}` matches `package.json#name`.
|
|
115
|
+
- ✓/✗ `[license-link]` is `./LICENSE` (relative, not absolute).
|
|
116
|
+
- ✓/✗ `[logo]` URL is `https://cdn.xy.company/img/brand/XYO_full_colored.png`.
|
|
117
|
+
- ✗ Flag any definition that points at `xylabs.com` instead of `xyo.network`
|
|
118
|
+
for `[logo-link]` (older template variant).
|
|
119
|
+
|
|
120
|
+
### 9. Cross-checks
|
|
121
|
+
|
|
122
|
+
- ✓/✗ Every reference-style link used inline (`[foo][]` or `[bar][baz]`) has
|
|
123
|
+
a definition in the footer.
|
|
124
|
+
- ✓/✗ No unused reference-link definitions.
|
|
125
|
+
- ✓/✗ Exactly one `# H1` (the title). All other headings are `##` or deeper.
|
|
126
|
+
|
|
127
|
+
## Tier-specific checks
|
|
128
|
+
|
|
129
|
+
After the universal checks, identify the tier (using package-tier heuristics
|
|
130
|
+
from the `readme-author` skill) and run these:
|
|
131
|
+
|
|
132
|
+
### Aggregate
|
|
133
|
+
|
|
134
|
+
- ✓/✗ Has `## Table of Contents`.
|
|
135
|
+
- ✓/✗ Uses `## Description` (not `## About`).
|
|
136
|
+
- ✓/✗ Description prose links to component packages by full npm URL.
|
|
137
|
+
|
|
138
|
+
### Mid-tier
|
|
139
|
+
|
|
140
|
+
- ⚠ If the package has more than one entry in `exports`, expect a
|
|
141
|
+
`## Subpath Exports` section.
|
|
142
|
+
|
|
143
|
+
### Leaf
|
|
144
|
+
|
|
145
|
+
- ⚠ Leaf packages may omit Peer Dependencies; flag only if `peerDependencies`
|
|
146
|
+
in `package.json` is non-trivial and the section is missing.
|
|
147
|
+
|
|
148
|
+
## Output format
|
|
149
|
+
|
|
150
|
+
Produce a markdown report shaped like this:
|
|
151
|
+
|
|
152
|
+
```markdown
|
|
153
|
+
# README audit: `{{NAME}}` ({{tier}})
|
|
154
|
+
|
|
155
|
+
## Header
|
|
156
|
+
✓ Logo line
|
|
157
|
+
✓ Title matches package.json
|
|
158
|
+
✗ Tagline missing — add a `> ` blockquote line right after the badges
|
|
159
|
+
|
|
160
|
+
## Sections
|
|
161
|
+
✓ All required sections present
|
|
162
|
+
✗ "Building Locally" appears before "What's Inside" — swap their order
|
|
163
|
+
|
|
164
|
+
## Install
|
|
165
|
+
✓ Four PM blocks present
|
|
166
|
+
✗ Yarn block uses `yarn install` instead of `yarn add {{NAME}}`
|
|
167
|
+
|
|
168
|
+
…
|
|
169
|
+
|
|
170
|
+
## Suggested fixes
|
|
171
|
+
1. Insert tagline after badges: `> {{description from package.json}}`
|
|
172
|
+
2. Reorder sections so "What's Inside" comes before "Building Locally"
|
|
173
|
+
3. Replace the yarn install command with `yarn add {{NAME}}`
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Auto-fix mode
|
|
177
|
+
|
|
178
|
+
If the user explicitly asked to "fix" or "audit and fix" the README:
|
|
179
|
+
|
|
180
|
+
1. Run the audit and produce the report first.
|
|
181
|
+
2. Apply each `✗` finding using the verbatim templates from the
|
|
182
|
+
`readme-author` skill.
|
|
183
|
+
3. **Never** rewrite the Maintainers HTML table — only fix the section
|
|
184
|
+
heading if it's missing.
|
|
185
|
+
4. Show the diff and ask the user to confirm before saving in cases where
|
|
186
|
+
the original had hand-written content (About, What's Inside, Description)
|
|
187
|
+
that you'd be discarding.
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: readme-author
|
|
3
|
+
description: Author or update a package README in the xylabs / xyo monorepo style. Use when creating a new package's README, filling in body content for an existing one, or adapting a README from a different style. Activates when working on any README.md inside a package directory under xylabs/ or XYOracleNetwork/ repos.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# README Author (xylabs / xyo convention)
|
|
7
|
+
|
|
8
|
+
This skill produces package READMEs that match the convention used across
|
|
9
|
+
`xylabs/*` and `XYOracleNetwork/*` monorepos. The convention is documented
|
|
10
|
+
**by example**, not by a generator — there is no `xy readme:gen` command.
|
|
11
|
+
Author the file directly using the templates below.
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
- Creating a new package's `README.md`.
|
|
16
|
+
- Updating an existing README that already follows the convention.
|
|
17
|
+
- Migrating a README from a different style into this one.
|
|
18
|
+
|
|
19
|
+
If the user just wants a one-line description added to an existing README
|
|
20
|
+
section, do that directly — don't reflow the whole file.
|
|
21
|
+
|
|
22
|
+
## Section order (required)
|
|
23
|
+
|
|
24
|
+
Every package README MUST have these sections in this order. Skip optional
|
|
25
|
+
sections only if they truly don't apply.
|
|
26
|
+
|
|
27
|
+
1. **Logo + Title**
|
|
28
|
+
2. **Badges** (npm version + license)
|
|
29
|
+
3. **Tagline** (one-line `> blockquote`)
|
|
30
|
+
4. **Table of Contents** *(aggregate-tier only)*
|
|
31
|
+
5. **About** *or* **Description** (aggregate uses "Description")
|
|
32
|
+
6. **Install** (4 package-manager blocks)
|
|
33
|
+
7. **Subpath Exports** *(only if the package exposes them)*
|
|
34
|
+
8. **Quick Start** *(aggregate-tier only, optional)*
|
|
35
|
+
9. **What's Inside**
|
|
36
|
+
10. **Peer Dependencies** *(only if the package has notable peer deps)*
|
|
37
|
+
11. **Building Locally**
|
|
38
|
+
12. **Maintainers** (HTML table — see "Maintainers rule" below)
|
|
39
|
+
13. **License**
|
|
40
|
+
14. **Credits**
|
|
41
|
+
15. **Reference Link Definitions** (at end of file)
|
|
42
|
+
|
|
43
|
+
## Tier detection
|
|
44
|
+
|
|
45
|
+
Pick the tier from `package.json` and the package's role:
|
|
46
|
+
|
|
47
|
+
- **Aggregate** — umbrella package that re-exports siblings. Usually has many
|
|
48
|
+
`dependencies` on workspace siblings, few or no implementation files of its
|
|
49
|
+
own. Add a Table of Contents and use "Description" instead of "About".
|
|
50
|
+
- **Mid-tier** — implementation package with substantial surface area; may
|
|
51
|
+
expose subpath exports. Use "About" + optional "Subpath Exports" + "What's
|
|
52
|
+
Inside".
|
|
53
|
+
- **Leaf** — single-purpose package, small surface. Use "About" + "What's
|
|
54
|
+
Inside" (often very short). May add "Peer Dependencies" if relevant.
|
|
55
|
+
|
|
56
|
+
## Templates
|
|
57
|
+
|
|
58
|
+
### Header (verbatim, all tiers)
|
|
59
|
+
|
|
60
|
+
Replace `{{NAME}}` with the full package name (e.g.
|
|
61
|
+
`@xyo-network/xl1-blockies`) and `{{TAGLINE}}` with a one-line description.
|
|
62
|
+
|
|
63
|
+
```markdown
|
|
64
|
+
[![logo][]][logo-link]
|
|
65
|
+
|
|
66
|
+
# {{NAME}}
|
|
67
|
+
|
|
68
|
+
[![npm-badge][]][npm-link]
|
|
69
|
+
[![license-badge][]][license-link]
|
|
70
|
+
|
|
71
|
+
> {{TAGLINE}}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Table of Contents (aggregate only)
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
## Table of Contents
|
|
78
|
+
|
|
79
|
+
- [Description](#description)
|
|
80
|
+
- [Install](#install)
|
|
81
|
+
- [Subpath Exports](#subpath-exports)
|
|
82
|
+
- [What's Inside](#whats-inside)
|
|
83
|
+
- [Building Locally](#building-locally)
|
|
84
|
+
- [Maintainers](#maintainers)
|
|
85
|
+
- [License](#license)
|
|
86
|
+
- [Credits](#credits)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Adjust the entries to match the actual sections present in the file.
|
|
90
|
+
|
|
91
|
+
### About / Description (1–3 paragraphs, hand-written)
|
|
92
|
+
|
|
93
|
+
Mid-tier and leaf packages use `## About`. Aggregate packages use
|
|
94
|
+
`## Description`. Explain in plain prose:
|
|
95
|
+
|
|
96
|
+
- What this package is.
|
|
97
|
+
- How it relates to its umbrella aggregate (link to the aggregate package on
|
|
98
|
+
npm using its full URL: `https://www.npmjs.com/package/{{aggregate-name}}`).
|
|
99
|
+
- When a consumer should install this package directly vs. install the
|
|
100
|
+
aggregate.
|
|
101
|
+
|
|
102
|
+
Do not bullet this section. Prose only.
|
|
103
|
+
|
|
104
|
+
### Install (verbatim, all tiers)
|
|
105
|
+
|
|
106
|
+
The Install section ALWAYS uses these four blocks in this exact order, each
|
|
107
|
+
prefaced with a `Using <pm>:` line. Always use `sh` as the code-block language.
|
|
108
|
+
|
|
109
|
+
````markdown
|
|
110
|
+
## Install
|
|
111
|
+
|
|
112
|
+
Using npm:
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
npm i --save {{NAME}}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Using yarn:
|
|
119
|
+
|
|
120
|
+
```sh
|
|
121
|
+
yarn add {{NAME}}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Using pnpm:
|
|
125
|
+
|
|
126
|
+
```sh
|
|
127
|
+
pnpm add {{NAME}}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Using bun:
|
|
131
|
+
|
|
132
|
+
```sh
|
|
133
|
+
bun add {{NAME}}
|
|
134
|
+
```
|
|
135
|
+
````
|
|
136
|
+
|
|
137
|
+
### Subpath Exports (when applicable)
|
|
138
|
+
|
|
139
|
+
```markdown
|
|
140
|
+
## Subpath Exports
|
|
141
|
+
|
|
142
|
+
- `{{NAME}}` — main barrel
|
|
143
|
+
- `{{NAME}}/get` — cosmiconfig integration; heavier deps kept separate
|
|
144
|
+
- `{{NAME}}/test` — shared test utilities
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Match the bullets to the actual `exports` map in `package.json`. One line per
|
|
148
|
+
export, with a short reason for each subpath when it isn't obvious.
|
|
149
|
+
|
|
150
|
+
### What's Inside
|
|
151
|
+
|
|
152
|
+
Hand-written, package-specific. Use bullets, **bold** category labels, and
|
|
153
|
+
em-dashes. Keep each bullet to one or two sentences. Examples:
|
|
154
|
+
|
|
155
|
+
```markdown
|
|
156
|
+
## What's Inside
|
|
157
|
+
|
|
158
|
+
- **Simple\*** — ~26 high-level implementations (`SimpleBlockRunner`,
|
|
159
|
+
`SimpleMempoolViewer`, …) composing lower-level pieces
|
|
160
|
+
- **Services** — `ChainService`, `ChainHeadService`, `Election`, …
|
|
161
|
+
- **Wallets** — HD wallet derivation from mnemonic
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
For leaf packages, this section can be just two or three bullets describing
|
|
165
|
+
the public surface.
|
|
166
|
+
|
|
167
|
+
### Peer Dependencies (when applicable)
|
|
168
|
+
|
|
169
|
+
```markdown
|
|
170
|
+
## Peer Dependencies
|
|
171
|
+
|
|
172
|
+
This package targets {{stack-summary}}. See [`package.json`](./package.json)
|
|
173
|
+
for the exact `peerDependencies` ranges.
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Building Locally (verbatim)
|
|
177
|
+
|
|
178
|
+
Always three commands scoped to the package:
|
|
179
|
+
|
|
180
|
+
````markdown
|
|
181
|
+
## Building Locally
|
|
182
|
+
|
|
183
|
+
```sh
|
|
184
|
+
xy build {{NAME}}
|
|
185
|
+
xy test {{NAME}}
|
|
186
|
+
xy lint {{NAME}}
|
|
187
|
+
```
|
|
188
|
+
````
|
|
189
|
+
|
|
190
|
+
The aggregate-tier root `README.md` may use the unscoped form
|
|
191
|
+
(`xy build`, etc.) followed by a "Scope to this package: …" sentence — but
|
|
192
|
+
package READMEs always scope.
|
|
193
|
+
|
|
194
|
+
### Maintainers (verbatim — see "Maintainers rule" below)
|
|
195
|
+
|
|
196
|
+
```markdown
|
|
197
|
+
## Maintainers
|
|
198
|
+
|
|
199
|
+
<table>
|
|
200
|
+
<tr>
|
|
201
|
+
<td align="center" valign="top" width="120">
|
|
202
|
+
<a href="https://github.com/arietrouw">
|
|
203
|
+
<img src="https://github.com/arietrouw.png" width="80" height="80" alt="Arie Trouw" /><br />
|
|
204
|
+
<sub><b>Arie Trouw</b></sub>
|
|
205
|
+
</a>
|
|
206
|
+
<br />
|
|
207
|
+
<a href="https://arietrouw.com">arietrouw.com</a>
|
|
208
|
+
</td>
|
|
209
|
+
<td align="center" valign="top" width="120">
|
|
210
|
+
<a href="https://github.com/jonesmac">
|
|
211
|
+
<img src="https://github.com/jonesmac.png" width="80" height="80" alt="Matt Jones" /><br />
|
|
212
|
+
<sub><b>Matt Jones</b></sub>
|
|
213
|
+
</a>
|
|
214
|
+
</td>
|
|
215
|
+
<td align="center" valign="top" width="120">
|
|
216
|
+
<a href="https://github.com/JoelBCarter">
|
|
217
|
+
<img src="https://github.com/JoelBCarter.png" width="80" height="80" alt="Joel Carter" /><br />
|
|
218
|
+
<sub><b>Joel Carter</b></sub>
|
|
219
|
+
</a>
|
|
220
|
+
</td>
|
|
221
|
+
</tr>
|
|
222
|
+
</table>
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### License (verbatim)
|
|
226
|
+
|
|
227
|
+
```markdown
|
|
228
|
+
## License
|
|
229
|
+
|
|
230
|
+
See the [LICENSE](./LICENSE) file (LGPL-3.0-only).
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
The aggregate-tier root README may use the longer form:
|
|
234
|
+
`See the [LICENSE](./LICENSE) file for license rights and limitations (LGPL-3.0-only).`
|
|
235
|
+
|
|
236
|
+
### Credits (verbatim)
|
|
237
|
+
|
|
238
|
+
```markdown
|
|
239
|
+
## Credits
|
|
240
|
+
|
|
241
|
+
[Made with 🔥 and ❄️ by XYO](https://xyo.network)
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Reference Link Definitions (verbatim, at end of file)
|
|
245
|
+
|
|
246
|
+
Replace `{{NAME}}` with the package name. The blocks are separated by blank
|
|
247
|
+
lines and appear in this order.
|
|
248
|
+
|
|
249
|
+
```markdown
|
|
250
|
+
[logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
|
|
251
|
+
[logo-link]: https://xyo.network
|
|
252
|
+
|
|
253
|
+
[npm-badge]: https://img.shields.io/npm/v/{{NAME}}.svg
|
|
254
|
+
[npm-link]: https://www.npmjs.com/package/{{NAME}}
|
|
255
|
+
|
|
256
|
+
[license-badge]: https://img.shields.io/npm/l/{{NAME}}.svg
|
|
257
|
+
[license-link]: ./LICENSE
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## Maintainers rule
|
|
261
|
+
|
|
262
|
+
The Maintainers HTML table is static and managed by humans. **Do not modify
|
|
263
|
+
it** unless the user explicitly asks you to add, remove, or update someone.
|
|
264
|
+
When creating a brand-new README, copy the verbatim table above as the
|
|
265
|
+
default — the user can edit it later.
|
|
266
|
+
|
|
267
|
+
## Style rules
|
|
268
|
+
|
|
269
|
+
- Only one `# H1` in the file: the title under the logo. Body sections start
|
|
270
|
+
at `## H2`.
|
|
271
|
+
- Always use `sh` as the language for shell code blocks.
|
|
272
|
+
- Use no language hint on TypeScript snippets unless the snippet is short and
|
|
273
|
+
benefits from highlighting (in which case use `ts`).
|
|
274
|
+
- Prefer relative links for in-repo references (`./LICENSE`,
|
|
275
|
+
`[`package.json`](./package.json)`).
|
|
276
|
+
- Cross-package references on npm use the full URL
|
|
277
|
+
`https://www.npmjs.com/package/{{NAME}}`.
|
|
278
|
+
- Reference-style links for badges and the logo. Inline links are fine for
|
|
279
|
+
one-off references in prose.
|
|
280
|
+
- Em-dash (`—`) separates a bold label from its description in `What's Inside`
|
|
281
|
+
bullets.
|
|
282
|
+
- Keep section bodies tight. The README is an entry point, not a manual.
|
|
283
|
+
|
|
284
|
+
## Author / update workflow
|
|
285
|
+
|
|
286
|
+
1. Read `package.json` — extract `name`, `description`, and any `exports` keys.
|
|
287
|
+
2. Determine tier (aggregate / mid-tier / leaf).
|
|
288
|
+
3. If updating an existing README: identify which sections already exist and
|
|
289
|
+
preserve any hand-written content the user added. Don't overwrite the
|
|
290
|
+
Maintainers table.
|
|
291
|
+
4. Assemble the file in the section order above using the templates.
|
|
292
|
+
5. Verify all reference-link definitions at the bottom match the inline uses.
|
|
293
|
+
6. Double-check there is exactly one `# H1` and no stray heading levels.
|