@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.
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "xy-readme",
3
+ "version": "0.1.0",
4
+ "description": "Author, audit, and bootstrap package READMEs in the xylabs / xyo convention"
5
+ }
@@ -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.