@heroiclands/package-build 22.15.1 → 22.17.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.
Files changed (223) hide show
  1. package/CHANGELOG.md +110 -0
  2. package/README.md +39 -678
  3. package/bin/{content-build.mjs → content-commands.mjs} +197 -118
  4. package/bin/package-build.mjs +315 -42
  5. package/bin/report.mjs +1 -1
  6. package/ci/ci-docker.mjs +6 -3
  7. package/ci/ci-steps.mjs +6 -4
  8. package/ci/content-format-reference.mjs +106 -0
  9. package/config.mjs +22 -2
  10. package/content-config.mjs +74 -134
  11. package/docs/api.md +296 -236
  12. package/docs/authoring/assets.md +31 -0
  13. package/docs/authoring/dates-and-calendars.md +85 -0
  14. package/docs/authoring/first-note.md +48 -0
  15. package/docs/authoring/frontmatter.md +40 -0
  16. package/docs/authoring/links-and-markup.md +137 -0
  17. package/docs/commands.md +633 -162
  18. package/docs/configuration.md +176 -140
  19. package/docs/content-format.md +50 -4229
  20. package/docs/design.md +32 -0
  21. package/docs/diagnostics.md +29 -22
  22. package/docs/getting-started.md +21 -877
  23. package/docs/guides/book.md +153 -0
  24. package/docs/guides/e2e.md +143 -0
  25. package/docs/guides/icons.md +126 -0
  26. package/docs/guides/localization.md +120 -0
  27. package/docs/guides/module-project.md +915 -0
  28. package/docs/guides/packs.md +167 -0
  29. package/docs/guides/reference-pages.md +148 -0
  30. package/docs/guides/release-and-deploy.md +114 -0
  31. package/docs/guides/site.md +152 -0
  32. package/docs/guides/system-project.md +45 -0
  33. package/docs/index.md +16 -0
  34. package/docs/project-setup.md +54 -35
  35. package/docs/reference/format-details.md +4362 -0
  36. package/docs/reference/note-types.md +532 -0
  37. package/engine/address-render.mjs +26 -0
  38. package/engine/address.mjs +3 -20
  39. package/engine/anchors.mjs +15 -6
  40. package/engine/asset-bindings.mjs +6 -2
  41. package/engine/base-compiler.mjs +47 -11
  42. package/engine/being-measurements.mjs +70 -0
  43. package/engine/calendar-artifacts.mjs +1 -1
  44. package/engine/calendar-choice.mjs +32 -0
  45. package/engine/calendar-format.mjs +441 -0
  46. package/engine/calendar-human.mjs +133 -0
  47. package/engine/calendar-notes.mjs +307 -88
  48. package/engine/calendars.mjs +8 -1
  49. package/engine/changelog-lint.mjs +2 -2
  50. package/engine/code-fences.mjs +23 -97
  51. package/engine/compile-corpus.mjs +6 -7
  52. package/engine/content-admonitions.mjs +114 -0
  53. package/engine/content-captions.mjs +181 -0
  54. package/engine/content-embeds.mjs +2 -2
  55. package/engine/content-footnotes.mjs +34 -0
  56. package/engine/content-format-check.mjs +2 -2
  57. package/engine/content-format.mjs +127 -73
  58. package/engine/content-format.yaml +746 -0
  59. package/engine/content-html.mjs +1 -1
  60. package/engine/content-icons.mjs +45 -92
  61. package/engine/content-images.mjs +22 -74
  62. package/engine/content-index.mjs +12 -3
  63. package/engine/content-links.mjs +21 -26
  64. package/engine/content-lint.mjs +1 -5
  65. package/engine/content-secrets.mjs +3 -1
  66. package/engine/content-tables.mjs +47 -1257
  67. package/engine/culture-choice.mjs +32 -0
  68. package/engine/date-conversion.mjs +47 -0
  69. package/engine/declaration-check.mjs +87 -0
  70. package/engine/docs-checks.mjs +140 -0
  71. package/engine/documentation-links.mjs +31 -0
  72. package/engine/exported-scene.mjs +1 -1
  73. package/engine/extension-attributes.mjs +74 -0
  74. package/engine/field-reference.mjs +1 -1
  75. package/engine/field-spec.mjs +4 -0
  76. package/engine/foreign-catalog.mjs +5 -5
  77. package/engine/format-generated.mjs +15 -0
  78. package/engine/foundry-entries.mjs +3 -1
  79. package/engine/frontmatter-lint.mjs +5 -1
  80. package/engine/frontmatter.mjs +10 -0
  81. package/engine/generate.mjs +2 -2
  82. package/engine/helpers.mjs +71 -117
  83. package/engine/homepage.mjs +2 -3
  84. package/engine/index-records.mjs +1 -0
  85. package/engine/index.mjs +18 -3
  86. package/engine/infobox-registry.mjs +3 -1
  87. package/engine/infobox.mjs +38 -20
  88. package/engine/item-compiler.mjs +10 -8
  89. package/engine/item-docs.mjs +7 -6
  90. package/engine/journals.mjs +51 -10
  91. package/engine/macros.mjs +1 -1
  92. package/engine/map-build.mjs +1 -1
  93. package/engine/map-dot.mjs +1 -1
  94. package/engine/markdown-expressions.mjs +118 -0
  95. package/engine/metadata-index.mjs +7 -3
  96. package/engine/note-addresses.mjs +1 -0
  97. package/engine/note-dates.mjs +314 -64
  98. package/engine/note-package.mjs +5 -25
  99. package/engine/note-state.mjs +6 -2
  100. package/engine/note-vocabulary.mjs +74 -19
  101. package/engine/number-words.mjs +75 -0
  102. package/engine/office-holders.mjs +188 -0
  103. package/engine/pack-config.mjs +2 -15
  104. package/engine/pack-router.mjs +24 -5
  105. package/engine/packages.mjs +3 -2
  106. package/engine/pathnames.mjs +21 -24
  107. package/engine/pdf-build.mjs +217 -55
  108. package/engine/pdf-fonts.mjs +2 -2
  109. package/engine/pdf-images.mjs +82 -0
  110. package/engine/pdf-render.mjs +174 -22
  111. package/engine/populations.mjs +3 -2
  112. package/engine/project-init.mjs +499 -0
  113. package/engine/prose-config.mjs +1 -1
  114. package/engine/prose-lint.mjs +7 -6
  115. package/engine/readability-lint.mjs +86 -0
  116. package/engine/reckoning-markers.mjs +176 -166
  117. package/engine/scenes.mjs +5 -2
  118. package/engine/schema-check.mjs +3 -3
  119. package/engine/site-build.mjs +87 -37
  120. package/engine/site-config.mjs +8 -8
  121. package/engine/site-index.mjs +4 -0
  122. package/engine/site-maps.mjs +1 -1
  123. package/engine/site-preview.mjs +19 -8
  124. package/engine/social-ties.mjs +5 -1
  125. package/engine/sql-tables.mjs +92 -22
  126. package/engine/web-wikilinks.mjs +15 -31
  127. package/engine/wikilink-syntax.mjs +4 -1
  128. package/engine/wikilinks.mjs +12 -14
  129. package/hm3/item-fields.mjs +1 -1
  130. package/hm3/items.mjs +12 -45
  131. package/index.mjs +2 -14
  132. package/manifest.mjs +31 -4
  133. package/markdownlint-config.mjs +1 -1
  134. package/package.json +32 -11
  135. package/prettier-config.mjs +1 -1
  136. package/sohl/being-info.mjs +3 -145
  137. package/sohl/index.mjs +1 -1
  138. package/sohl/infobox.mjs +2 -1
  139. package/sohl/item-builders.mjs +3 -27
  140. package/sohl/item-fields.mjs +61 -22
  141. package/sohl/kb-passes.mjs +2 -2
  142. package/sohl/note-schemas.mjs +0 -8
  143. package/stage.mjs +19 -0
  144. package/types/config.d.mts +12 -3
  145. package/types/content-config.d.mts +15 -81
  146. package/types/engine/address-render.d.mts +13 -0
  147. package/types/engine/address.d.mts +2 -11
  148. package/types/engine/anchors.d.mts +3 -4
  149. package/types/engine/asset-bindings.d.mts +9 -2
  150. package/types/engine/base-compiler.d.mts +1 -2
  151. package/types/engine/being-measurements.d.mts +16 -0
  152. package/types/engine/calendar-choice.d.mts +14 -0
  153. package/types/engine/calendar-format.d.mts +33 -0
  154. package/types/engine/calendar-human.d.mts +4 -0
  155. package/types/engine/calendar-notes.d.mts +5 -3
  156. package/types/engine/calendars.d.mts +5 -3
  157. package/types/engine/code-fences.d.mts +6 -72
  158. package/types/engine/compile-corpus.d.mts +1 -3
  159. package/types/engine/content-admonitions.d.mts +24 -0
  160. package/types/engine/content-captions.d.mts +45 -0
  161. package/types/engine/content-footnotes.d.mts +10 -0
  162. package/types/engine/content-format-check.d.mts +17 -4
  163. package/types/engine/content-format.d.mts +24 -11
  164. package/types/engine/content-icons.d.mts +14 -23
  165. package/types/engine/content-images.d.mts +2 -2
  166. package/types/engine/content-index.d.mts +9 -2
  167. package/types/engine/content-links.d.mts +3 -5
  168. package/types/engine/content-tables.d.mts +11 -140
  169. package/types/engine/culture-choice.d.mts +14 -0
  170. package/types/engine/date-conversion.d.mts +4 -0
  171. package/types/engine/declaration-check.d.mts +24 -0
  172. package/types/engine/docs-checks.d.mts +28 -0
  173. package/types/engine/documentation-links.d.mts +7 -0
  174. package/types/engine/exported-scene.d.mts +6 -2
  175. package/types/engine/extension-attributes.d.mts +14 -0
  176. package/types/engine/field-spec.d.mts +9 -0
  177. package/types/engine/format-generated.d.mts +7 -0
  178. package/types/engine/frontmatter.d.mts +14 -4
  179. package/types/engine/generate.d.mts +1 -1
  180. package/types/engine/helpers.d.mts +37 -92
  181. package/types/engine/homepage.d.mts +2 -3
  182. package/types/engine/index.d.mts +5 -0
  183. package/types/engine/infobox-registry.d.mts +3 -1
  184. package/types/engine/infobox.d.mts +17 -6
  185. package/types/engine/item-compiler.d.mts +4 -4
  186. package/types/engine/item-docs.d.mts +4 -3
  187. package/types/engine/journals.d.mts +10 -7
  188. package/types/engine/map-graphviz.d.mts +1 -1
  189. package/types/engine/markdown-expressions.d.mts +17 -0
  190. package/types/engine/note-dates.d.mts +47 -1
  191. package/types/engine/note-package.d.mts +3 -19
  192. package/types/engine/note-state.d.mts +2 -1
  193. package/types/engine/note-vocabulary.d.mts +9 -0
  194. package/types/engine/number-words.d.mts +4 -0
  195. package/types/engine/office-holders.d.mts +14 -0
  196. package/types/engine/pack-config.d.mts +1 -1
  197. package/types/engine/packages.d.mts +3 -2
  198. package/types/engine/pdf-images.d.mts +38 -0
  199. package/types/engine/populations.d.mts +2 -2
  200. package/types/engine/project-init.d.mts +17 -0
  201. package/types/engine/prose-config.d.mts +1 -1
  202. package/types/engine/prose-lint.d.mts +3 -2
  203. package/types/engine/readability-lint.d.mts +22 -0
  204. package/types/engine/reckoning-markers.d.mts +13 -26
  205. package/types/engine/schema-check.d.mts +3 -3
  206. package/types/engine/site-build.d.mts +38 -28
  207. package/types/engine/site-config.d.mts +2 -2
  208. package/types/engine/site-index.d.mts +4 -0
  209. package/types/engine/site-preview.d.mts +1 -1
  210. package/types/engine/social-ties.d.mts +8 -2
  211. package/types/engine/sql-tables.d.mts +13 -2
  212. package/types/engine/web-wikilinks.d.mts +2 -1
  213. package/types/engine/wikilinks.d.mts +7 -1
  214. package/types/hm3/items.d.mts +5 -6
  215. package/types/labels.d.mts +40 -0
  216. package/types/manifest.d.mts +3 -3
  217. package/types/sohl/actors.d.mts +2 -2
  218. package/types/sohl/being-info.d.mts +3 -43
  219. package/types/sohl/index.d.mts +1 -1
  220. package/types/sohl/infobox.d.mts +5 -2
  221. package/types/sohl/item-fields.d.mts +4 -13
  222. package/types/stage.d.mts +9 -0
  223. package/CONTENT.md +0 -3239
package/docs/commands.md CHANGED
@@ -1,16 +1,22 @@
1
+ ---
2
+ shortcode: commands
3
+ name: { full: "Command reference" }
4
+ type: doc
5
+ subType: reference
6
+ ---
7
+
1
8
  # Command reference
2
9
 
3
- `@heroiclands/package-build` ships two build binaries. `package-build` is the
4
- packaging half — clean, stage, check, package, deploy, run a Foundry
5
- container, drive the end-to-end suite. `content-build` is the content half —
6
- compile a note tree into compendium packs, check it, publish it as a site or a
7
- book, and manage the caches a build resolves other packages through.
10
+ `@heroiclands/package-build` ships the `package-build` command. It checks and
11
+ compiles content, builds sites and books, stages packages, writes manifests,
12
+ and manages release and deployment tasks.
8
13
 
9
- Both read `package-build.config.yaml` from the repository root — see
10
- [Configuration](configuration.md) for every key. Neither reads it for
11
- `--version` or `--help`: those two answer in a directory with no
12
- configuration at all, and every other invocation resolves the configuration
13
- and fails loudly when it is missing or wrong.
14
+ The commands read `package-build.config.yaml` from the repository root — see
15
+ [Configuration](configuration.md) for every key. `--version` and `--help`
16
+ work in a directory with no configuration. Commands that need a package
17
+ resolve its configuration and report missing or invalid values.
18
+ `package-build --help` lists every command; `package-build <command> --help`
19
+ shows its actions and options.
14
20
 
15
21
  Each command below reads like a manual page: **NAME**, **SYNOPSIS**,
16
22
  **DESCRIPTION**, **OPTIONS**, **EXIT STATUS**, **EXAMPLES**, **SEE ALSO**, in
@@ -21,7 +27,7 @@ says so under **OPTIONS** rather than omitting the section.
21
27
 
22
28
  **Every finding is `file:line:column: severity: message`**, the path starting
23
29
  the line — the diagnostic contract this package's own build tooling emits and
24
- that both build binaries' content-side commands use for anything found in a
30
+ that content commands use for anything found in a
25
31
  specific file. A field that cannot be known is dropped rather than guessed:
26
32
  `file:line:` when the column means nothing, `file:` when only the file is
27
33
  known. See [Diagnostics](diagnostics.md) for the full contract.
@@ -32,34 +38,24 @@ do. 1 is failure: a configuration error, a missing prerequisite, or findings
32
38
  that the command treats as errors. Each command's own **EXIT STATUS** states
33
39
  exactly what makes its run a 1.
34
40
 
35
- **`package-build` has one failure path for everything **`.fail()`** does not
36
- handle specially: every thrown error, from any command, is caught, printed as
37
- one line — `package-build: <message>`, or the bare diagnostic when the error
38
- already carries its own `file:line:column:` — and turned into exit code 1. A
39
- command that additionally emits findings of its own (`lang coverage`, `yaml`,
40
- `bundle check`, …) is called out below.**
41
-
42
- **`content-build` has no such umbrella.** Each command catches its own errors,
43
- logs them (prefixed `[timestamp] [LEVEL]:` for ordinary failures, unprefixed
44
- for a located diagnostic) and sets `process.exitCode = 1`; a command-line
45
- parse error — an unknown flag, a missing required option, an action outside
46
- its `choices` — is reported by yargs' own default handler and also exits 1.
47
-
48
- **Both binaries are `strict()` and `demandCommand(1, …)`.** An unknown
49
- command or option is refused rather than ignored, and running either with no
50
- command prints usage and exits 1 rather than silently doing nothing — the
51
- failure mode that let a typo in a build script pass the step it was meant to
52
- run. The one exception is `package-build e2e <action>`, which relaxes to
41
+ Packaging handlers report a thrown error as `package-build: <message>`, or as
42
+ the bare diagnostic when it already has a location. Content handlers report
43
+ their own failures, with ordinary failures prefixed by loglevel and located
44
+ diagnostics unprefixed. Both forms exit 1. A parse error from an unknown flag,
45
+ missing option, or invalid action also exits 1.
46
+
47
+ The command uses `strict()` and `demandCommand(1, …)`. An unknown
48
+ command or option is refused rather than ignored, and running it with no
49
+ command prints usage and exits 1. `package-build e2e <action>` relaxes to
53
50
  `.strict(false)` for everything after the action, because that belongs to the
54
51
  suite or the fast loop and this command line must not judge it.
55
52
 
56
- **`--help` / `-h` and `--version` are global, not per-command.** Both
57
- binaries register them once on their own top-level parser
58
- (`.version(ownVersion())`, `.help()`, `.alias("help", "h")`); no command below
59
- lists them among its own options.
53
+ **`--help` / `-h` and `--version` are global.** The parser registers them
54
+ once, and `--help` can be used with any command for its own actions and options.
55
+ The command entries below list only their own options.
60
56
 
61
57
  **`PACKAGE_BUILD_CONFIG`** names the configuration file explicitly instead of
62
- the walk up from the working directory both binaries otherwise do — the only
58
+ the walk up from the working directory the CLI otherwise does — the only
63
59
  environment variable the toolchain itself reads for configuration
64
60
  resolution. `deploy`, `container` and `e2e` additionally read `FOUNDRYVTT_*`,
65
61
  documented where each applies.
@@ -70,7 +66,139 @@ behaviour where they appear below; read the command, not the name.
70
66
 
71
67
  ---
72
68
 
73
- ## `package-build`
69
+ ## Package and release operations
70
+
71
+ ### `package-build ci`
72
+
73
+ **NAME**
74
+
75
+ Replay the commands from pull-request workflows.
76
+
77
+ **SYNOPSIS**
78
+
79
+ ```text
80
+ package-build ci [--native]
81
+ ```
82
+
83
+ **DESCRIPTION**
84
+
85
+ The default command runs in Docker on Linux against a clean export of the
86
+ current commit. It reads the repository's pull-request workflows under
87
+ `.github/workflows/` and runs their `run:` steps in workflow order. A failed
88
+ step stops the replay. Uncommitted changes are absent from the clean export.
89
+
90
+ `--native` runs the same steps on the host in the current working tree. It
91
+ needs no Docker and includes uncommitted changes, but its operating system and
92
+ existing files can differ from a clean GitHub runner. The steps themselves
93
+ still come from the workflow files.
94
+
95
+ The command lists `uses:` steps that it cannot run locally. A successful replay
96
+ covers the listed `run:` steps; GitHub runs the published actions separately.
97
+ Workflow steps may install dependencies, generate files, or perform other
98
+ declared build actions.
99
+
100
+ **OPTIONS**
101
+
102
+ | Option | Type | Default | Description |
103
+ | ---------- | ------- | ------- | -------------------------------------------- |
104
+ | `--native` | boolean | false | Run on the host in the current working tree. |
105
+
106
+ **EXIT STATUS**
107
+
108
+ 0 when every runnable step succeeds. 1 when a step fails, no pull-request
109
+ workflow supplies runnable steps, Docker is unavailable for the default mode,
110
+ or the replay cannot start.
111
+
112
+ **EXAMPLES**
113
+
114
+ ```bash
115
+ package-build ci
116
+ package-build ci --native
117
+ ```
118
+
119
+ **SEE ALSO**
120
+
121
+ [End-to-end testing](guides/e2e.md), [Project setup](project-setup.md).
122
+
123
+ ### `package-build init [directory]`
124
+
125
+ **NAME**
126
+
127
+ Create a HeroicLands content package or check an existing one.
128
+
129
+ **SYNOPSIS**
130
+
131
+ ```text
132
+ package-build init [directory] [--kind <kind>] [--name <name>] [--title <title>] [--description <description>] [--author <author>] [--license <license>] [--core-minimum <version>] [--core-verified <version>]
133
+ package-build init --check [directory]
134
+ ```
135
+
136
+ **DESCRIPTION**
137
+
138
+ The directory defaults to the current directory. If it does not exist, `init`
139
+ creates it. The directory needs no Git repository, `package.json`, or local
140
+ installation of package-build. It may contain unrelated files, but `init`
141
+ refuses a package-build configuration or any file it would overwrite. It
142
+ generates a homepage, introduction, package metadata, content configuration,
143
+ book document tree, website and book scripts, formatting rules, changeset
144
+ configuration, label registry, and build workflow. It does not install
145
+ dependencies, initialize Git, or deploy a site.
146
+
147
+ `--check` reads the named directory and reports missing or invalid project
148
+ requirements without writing anything. It accepts existing files with valid
149
+ custom content and scripts; they need not be identical to the scaffold.
150
+
151
+ Without a terminal, the identity and license arguments must be supplied. At a
152
+ terminal, missing values are prompted. The package name defaults to the target
153
+ directory's basename and determines the content package id by removing hyphens.
154
+ The package kind defaults to `modules`; the license template defaults to
155
+ `original`. `systems` and `modules` receive a journal pack and Foundry
156
+ manifest configuration. `documentation` receives no Foundry pack or manifest.
157
+ Every kind includes site and book targets. Hugo Extended and Typst are needed
158
+ to render them locally; deployment needs separate hosting configuration.
159
+
160
+ **OPTIONS**
161
+
162
+ | Option | Type | Default | Description |
163
+ | ----------------- | ---------------------------------------- | ------------------------- | --------------------------------------------------------- |
164
+ | `directory` | path | current directory | New or existing target directory. |
165
+ | `--check` | boolean | `false` | Inspect an existing package without writing. |
166
+ | `--kind` | `systems`, `modules`, or `documentation` | `modules` | Package kind. |
167
+ | `--name` | string | target directory basename | npm and Foundry package name. |
168
+ | `--title` | string | words of the package name | Reader-facing title. |
169
+ | `--description` | string | — | Package and website description. |
170
+ | `--author` | string | — | Author credited in the package. |
171
+ | `--license` | `original` or `fan` | `original` | License template for original or unofficial fan material. |
172
+ | `--core-minimum` | string | `14.359` | Minimum Foundry core version for a Foundry package. |
173
+ | `--core-verified` | string | `14.364` | Verified Foundry core version for a Foundry package. |
174
+
175
+ **EXIT STATUS**
176
+
177
+ 0 when the package is created or passes `--check`. 1 when required answers are
178
+ missing, the target conflicts with an existing project file, a generated file
179
+ cannot be written, or `--check` finds an unmet requirement. A failed write
180
+ removes the files created by that invocation.
181
+
182
+ **EXAMPLES**
183
+
184
+ ```bash
185
+ npm exec --package=@heroiclands/package-build -- package-build init acme-bestiary --kind modules --name acme-bestiary --title "Acme Bestiary" --description "Creatures of the reed flats." --author "Acme" --license original
186
+ cd acme-bestiary
187
+ npm install
188
+ npm run lint
189
+ npm run build:site
190
+ npm run serve:site
191
+ npm run build:book
192
+ package-build init --check
193
+ ```
194
+
195
+ For a global installation, run `npm install --global
196
+ @heroiclands/package-build` once and then `package-build init [directory]`.
197
+
198
+ **SEE ALSO**
199
+
200
+ [Getting started](getting-started.md), [Project setup](project-setup.md),
201
+ [Configuration](configuration.md).
74
202
 
75
203
  ### `package-build clean`
76
204
 
@@ -113,6 +241,43 @@ Nothing to clean.
113
241
 
114
242
  [Configuration](configuration.md).
115
243
 
244
+ ### `package-build stage reset`
245
+
246
+ **NAME**
247
+
248
+ Clear the assembled Foundry package stage before a complete build.
249
+
250
+ **SYNOPSIS**
251
+
252
+ ```
253
+ package-build stage reset
254
+ ```
255
+
256
+ **DESCRIPTION**
257
+
258
+ The `reset` action removes `packageBuild.stageDir` without removing the content index, PDF, site,
259
+ or other build outputs. Run it once before the commands that write assets, packs,
260
+ bundles, and the manifest. It succeeds when the stage is already empty.
261
+
262
+ **OPTIONS**
263
+
264
+ There are no options.
265
+
266
+ **EXIT STATUS**
267
+
268
+ 1 on an invalid configuration or a stage directory outside the project. Otherwise 0.
269
+
270
+ **EXAMPLES**
271
+
272
+ ```
273
+ $ package-build stage reset
274
+ Removed build/stage
275
+ ```
276
+
277
+ **SEE ALSO**
278
+
279
+ [Project setup](project-setup.md), [Configuration](configuration.md).
280
+
116
281
  ### `package-build assets`
117
282
 
118
283
  **NAME**
@@ -176,7 +341,7 @@ Reads the package's current JSONL content index and writes
176
341
  `build/calendars/<shortcode>.calendaria.json` for each calendar note. The
177
342
  import file contains the same definition and a fixed `exportedAt` sentinel,
178
343
  making both files reproducible. A package with no calendars gets an empty
179
- `build/calendars/` directory. Run `content-build content-index` after changing
344
+ `build/calendars/` directory. Run `package-build content-index` after changing
180
345
  notes and before this command. Stage the generated directory with
181
346
  `packageBuild.assets` when the Foundry package should ship it.
182
347
 
@@ -199,7 +364,90 @@ $ package-build calendars --calendaria-version 1.4.2
199
364
 
200
365
  **SEE ALSO**
201
366
 
202
- `content-build content-index`, [Getting started](getting-started.md).
367
+ `package-build content-index`, [Getting started](getting-started.md).
368
+
369
+ ### `package-build datefrom`
370
+
371
+ **NAME**
372
+
373
+ Convert a day in an authored calendar to a canonical date.
374
+
375
+ **SYNOPSIS**
376
+
377
+ ```
378
+ package-build datefrom <calendar> <date>
379
+ ```
380
+
381
+ **DESCRIPTION**
382
+
383
+ Reads the current content tree, resolves its world year and calendar eras, and
384
+ prints `<year>.<day>[:HHMMSS]` to standard output. `<calendar>` is a calendar
385
+ shortcode, full Address, or addressed era. The date follows the calendar's
386
+ `data.formats.std` pattern, or its first named pattern when `std` is absent.
387
+ For example, `MM/DD/Y GGG` reads `04/23/326 VR`. An era-relative year written
388
+ with `[yearInEra]` must identify its era. A date must specify a day;
389
+ year-only and month-only dates do not identify one canonical day.
390
+ Prefix the date with `~` to preserve an approximate value.
391
+
392
+ **OPTIONS**
393
+
394
+ None.
395
+
396
+ **EXIT STATUS**
397
+
398
+ 1 if the content tree or calendar is invalid, the era is missing or mismatched,
399
+ or the date cannot be resolved to one day. Otherwise 0.
400
+
401
+ **EXAMPLES**
402
+
403
+ ```
404
+ $ package-build datefrom vrcal '23 Taranis 326 VR'
405
+ 326.114
406
+ ```
407
+
408
+ **SEE ALSO**
409
+
410
+ `package-build dateto`, [Content format](content-format.md).
411
+
412
+ ### `package-build dateto`
413
+
414
+ **NAME**
415
+
416
+ Express a canonical day in an authored calendar.
417
+
418
+ **SYNOPSIS**
419
+
420
+ ```
421
+ package-build dateto <calendar> <canonical-date> [--format <name>]
422
+ ```
423
+
424
+ **DESCRIPTION**
425
+
426
+ Reads the current content tree, selects the era covering the canonical day, and
427
+ prints the date using `data.formats.std`, or the first named pattern if `std`
428
+ is absent. The input is
429
+ `<year>.<day>[:HHMMSS]`, optionally prefixed with `~`. A date in a gap between
430
+ eras has no conversion.
431
+
432
+ **OPTIONS**
433
+
434
+ `--format` selects another named pattern from the calendar note; pass its name as the value.
435
+
436
+ **EXIT STATUS**
437
+
438
+ 1 if the content tree or calendar is invalid, the canonical date is invalid,
439
+ or no era covers that day. Otherwise 0.
440
+
441
+ **EXAMPLES**
442
+
443
+ ```
444
+ $ package-build dateto vrcal 326.114
445
+ 23 Taranis 326 VR
446
+ ```
447
+
448
+ **SEE ALSO**
449
+
450
+ `package-build datefrom`, [Content format](content-format.md).
203
451
 
204
452
  ### `package-build schema`
205
453
 
@@ -216,13 +464,13 @@ package-build schema
216
464
  **DESCRIPTION**
217
465
 
218
466
  Publishes the registries named in `packageBuild.schema` as `schema.json`, read
219
- by `content-build content-format schema` and, in a consuming package, by
220
- `content-build lint`'s emitted-versus-declared check. A repository that
467
+ by `package-build content-format schema` and, in a consuming package, by
468
+ `package-build lint`'s emitted-versus-declared check. A repository that
221
469
  declares no registries has nothing to publish. Reads the registries
222
470
  `packageBuild.schema` names; writes `build/schema.json`. A release publishes
223
471
  it beside the archive and the manifest when `packageBuild.assets` names
224
472
  `build/schema.json` (see `package-build release`); a module's
225
- `content-build deps fetch` keeps the copy from the archive it downloads.
473
+ `package-build deps fetch` keeps the copy from the archive it downloads.
226
474
 
227
475
  **OPTIONS**
228
476
 
@@ -242,7 +490,7 @@ package-build: no `packageBuild.schema` declared; nothing to publish.
242
490
 
243
491
  **SEE ALSO**
244
492
 
245
- `content-build content-format schema`, `content-build lint [root]`,
493
+ `package-build content-format schema`, `package-build lint [root]`,
246
494
  `package-build release`, [Configuration](configuration.md).
247
495
 
248
496
  ### `package-build manifest`
@@ -268,12 +516,14 @@ in `packageBuild.manifestFlags` for a flag the repository has to compute
268
516
  itself — the compendium address of a document that exists only once the
269
517
  content tree has been walked. Reads the shared pack configuration and
270
518
  `package.json`; writes the manifest into `packageBuild.stageDir`.
519
+ `packageBuild.manifest.title` must be a non-empty string, so the staged
520
+ manifest carries the title Foundry requires for installation.
271
521
 
272
522
  **Refused for `packageKind: documentation`.** A manifest is the file Foundry
273
523
  reads to install a package, and a documentation package is not one —
274
524
  emitting `module.json` for it would advertise an installable package with no
275
525
  packs, no compatibility range and no id. Its site is built by
276
- `content-build site`, and its book by `content-build pdf`.
526
+ `package-build site`, and its book by `package-build pdf`.
277
527
 
278
528
  **OPTIONS**
279
529
 
@@ -284,7 +534,8 @@ None.
284
534
  1 for `packageKind: documentation`. 1 if `packageBuild.manifestFlags` is
285
535
  declared but cannot be loaded, or exports no `flags` function. 1 on any other
286
536
  thrown error (a manifest key the configuration cannot supply —
287
- `package.json` naming no `repository.url`, for instance). Otherwise 0.
537
+ `package.json` naming no `repository.url`, or a missing or blank
538
+ `packageBuild.manifest.title`, for instance). Otherwise 0.
288
539
 
289
540
  **EXAMPLES**
290
541
 
@@ -293,12 +544,12 @@ $ package-build manifest
293
544
  ✅ Wrote build/stage/module.json (10 keys, 2 packs).
294
545
 
295
546
  $ package-build manifest # packageKind: documentation
296
- package-build: `packageKind: documentation` ships no Foundry package, so there is no manifest to generate. The site and the book are built by `content-build`.
547
+ package-build: `packageKind: documentation` ships no Foundry package, so there is no manifest to generate. The site and the book are built by `package-build`.
297
548
  ```
298
549
 
299
550
  **SEE ALSO**
300
551
 
301
- `content-build site`, `content-build pdf`, `package-build bundle check`,
552
+ `package-build site`, `package-build pdf`, `package-build bundle check`,
302
553
  [Configuration](configuration.md).
303
554
 
304
555
  ### `package-build site-root`
@@ -388,7 +639,7 @@ Search is off (`site.search: false`), so no index was written.
388
639
 
389
640
  **SEE ALSO**
390
641
 
391
- `content-build site`, [Configuration](configuration.md).
642
+ `package-build site`, [Configuration](configuration.md).
392
643
 
393
644
  `package-build lang <action>` asks three independent questions about this
394
645
  repository's localization, each blind to what the others see: `check`,
@@ -721,7 +972,9 @@ from the heading rule, since neither is authored.
721
972
  A token that reads as code — `camelCase()`, a `path/with/slashes.ext`,
722
973
  `SCREAMING_SNAKE` — outside any code span is a warning, not a failure: a
723
974
  user-facing note sometimes needs one (`Compendium.hm3.items.Item.<id>`), but
724
- rarely. A block's bold label absent from a declared `changelog.labels` is
975
+ rarely. Accented letters keep proper names such as HârnMaster whole, so a
976
+ fragment of one does not trigger a code-token warning. A block's bold label
977
+ absent from a declared `changelog.labels` is
725
978
  also a warning — the drift `**Character data**` beside `**Characters**`
726
979
  produces — and checks nothing when the repository declares no
727
980
  `changelog.labels`. Every other finding is an error. Reads the files given,
@@ -885,8 +1138,8 @@ states it a second time. It also publishes the content index the manifest
885
1138
  advertises (`flags.metadataUrl`) and, when the stage carries one,
886
1139
  `schema.json` — a repository that names `build/schema.json` in
887
1140
  `packageBuild.assets` gets it released beside the archive; one that does not
888
- gets none. When the package publishes content (`publish.site: content`), it
889
- also builds the content-tree book (see `content-build pdf`) and reports it
1141
+ gets none. When the content tree holds notes beyond its homepage, it
1142
+ also builds the content-tree book (see `package-build pdf`) and reports it
890
1143
  alongside the archive; `--no-pdf` skips that step for a release that has a
891
1144
  tree but does not want the book this time. A book that fails to build is
892
1145
  reported, never fatal — the archive above is the release regardless. Reads
@@ -910,12 +1163,12 @@ are reported on stderr but do not fail the release.
910
1163
  ```
911
1164
  $ package-build release
912
1165
  ✅ Packaged 1.0.0 for release: build/dist/module.zip (0.0 MB)
913
- No book: `publish.site` is `homepage`, which fences the content surfaces off — the tree is not walked and no book is built. Publish content to build one.
1166
+ No book: The content tree contains only a homepage, so there is no book to build.
914
1167
  ```
915
1168
 
916
1169
  **SEE ALSO**
917
1170
 
918
- `content-build pdf`, `package-build schema`, [Configuration](configuration.md).
1171
+ `package-build pdf`, `package-build schema`, [Configuration](configuration.md).
919
1172
 
920
1173
  ### `package-build deploy <stage>`
921
1174
 
@@ -1107,9 +1360,9 @@ package-build: This repository declares no end-to-end suite to `run`. Name one u
1107
1360
 
1108
1361
  ---
1109
1362
 
1110
- ## `content-build`
1363
+ ## Content operations
1111
1364
 
1112
- ### `content-build package <action> [pack] [entry]`
1365
+ ### `package-build package <action> [pack] [entry]`
1113
1366
 
1114
1367
  **NAME**
1115
1368
 
@@ -1119,9 +1372,9 @@ process.
1119
1372
  **SYNOPSIS**
1120
1373
 
1121
1374
  ```
1122
- content-build package compile [pack]
1123
- content-build package unpack [pack] [entry]
1124
- content-build package clean [pack] [entry]
1375
+ package-build package compile [pack]
1376
+ package-build package unpack [pack] [entry]
1377
+ package-build package clean [pack] [entry]
1125
1378
  ```
1126
1379
 
1127
1380
  **DESCRIPTION**
@@ -1141,8 +1394,8 @@ the staged LevelDB packs.
1141
1394
  `unpack` and `clean` alike. A package of that kind declares no packs by
1142
1395
  rule, so there is nothing to compile, unpack or clean; a run that exited 0
1143
1396
  having done nothing would be the quiet failure this toolchain refuses
1144
- everywhere else. Its site is built by `content-build site`, and its book by
1145
- `content-build pdf`.
1397
+ everywhere else. Its site is built by `package-build site`, and its book by
1398
+ `package-build pdf`.
1146
1399
 
1147
1400
  **OPTIONS**
1148
1401
 
@@ -1163,10 +1416,10 @@ step to report against. 1 on any other thrown error. Otherwise 0.
1163
1416
  **EXAMPLES**
1164
1417
 
1165
1418
  ```
1166
- $ content-build package compile # packageKind: documentation
1167
- […] ERROR: `packageKind: documentation` compiles no compendium, so there is nothing to compile. Build its site with `content-build site` and its book with `content-build pdf`.
1419
+ $ package-build package compile # packageKind: documentation
1420
+ […] ERROR: `packageKind: documentation` compiles no compendium, so there is nothing to compile. Build its site with `package-build site` and its book with `package-build pdf`.
1168
1421
 
1169
- $ content-build package compile
1422
+ $ package-build package compile
1170
1423
  […] Content tree: 4 note(s) at /private/tmp/pb-docs-demo-410/assets/content
1171
1424
  […] Pack items: /private/tmp/pb-docs-demo-410/assets/content → …/build/packs-json/items
1172
1425
  […] Compiled 0 items:
@@ -1176,7 +1429,7 @@ $ content-build package compile
1176
1429
  […] Pack journals: compiling to LevelDB at …/build/stage/packs/journals
1177
1430
  […] Pack compilation complete.
1178
1431
 
1179
- $ content-build package unpack
1432
+ $ package-build package unpack
1180
1433
  […] Extracting pack items
1181
1434
  […] Extracting pack journals
1182
1435
  Wrote welcome.json
@@ -1184,10 +1437,10 @@ Wrote welcome.json
1184
1437
 
1185
1438
  **SEE ALSO**
1186
1439
 
1187
- `content-build site`, `content-build pdf`, `content-build addresses diff`,
1440
+ `package-build site`, `package-build pdf`, `package-build addresses diff`,
1188
1441
  [Diagnostics](diagnostics.md), [Configuration](configuration.md).
1189
1442
 
1190
- ### `content-build deps fetch`
1443
+ ### `package-build deps fetch`
1191
1444
 
1192
1445
  **NAME**
1193
1446
 
@@ -1196,7 +1449,7 @@ Fill the caches a build resolves other packages through.
1196
1449
  **SYNOPSIS**
1197
1450
 
1198
1451
  ```
1199
- content-build deps fetch [--from <zip|dir>] [--id <id>]
1452
+ package-build deps fetch [--from <zip|dir>] [--id <id>]
1200
1453
  ```
1201
1454
 
1202
1455
  **DESCRIPTION**
@@ -1212,6 +1465,12 @@ is not reproducible and hides a dependency's version change behind a
1212
1465
  passing run. Each cache is stamped complete only once its fetch finishes,
1213
1466
  so a half-finished one reads as cold.
1214
1467
 
1468
+ `lint`, `links`, `site`, `pdf`, `map`, `reachability`, and `package compile`
1469
+ check the declared dependencies' content-index cache before reading notes or
1470
+ writing output. A cold cache produces a diagnostic at the package configuration
1471
+ file naming `deps fetch`. These checks only read local files; `deps fetch` is
1472
+ the separate step that reaches the network.
1473
+
1215
1474
  The navigation is fetched first, because every package needs it and it
1216
1475
  depends on nothing a repository declares — so a dependency whose release
1217
1476
  cannot be read stops the run with the navigation already cached.
@@ -1240,20 +1499,140 @@ including when the repository declares no dependencies at all.
1240
1499
  **EXAMPLES**
1241
1500
 
1242
1501
  ```
1243
- $ content-build deps fetch
1502
+ $ package-build deps fetch
1244
1503
  […] Fetched the site navigation to build/cache/navigation/nav.json.
1245
1504
  […] No relationship declares `itemCatalog: true`; nothing to fetch.
1246
1505
  […] This package declares no dependencies.
1247
1506
 
1248
- $ content-build deps fetch --from build/dist/module.zip
1507
+ $ package-build deps fetch --from build/dist/module.zip
1249
1508
  […] ERROR: --from needs --id when a package declares several dependencies (declared: none)
1250
1509
  ```
1251
1510
 
1252
1511
  **SEE ALSO**
1253
1512
 
1254
- `content-build site`, `content-build addresses diff`, [Configuration](configuration.md).
1513
+ `package-build site`, `package-build addresses diff`, [Configuration](configuration.md).
1514
+
1515
+ ### `package-build types check`
1516
+
1517
+ **NAME**
1518
+
1519
+ Check project declarations.
1520
+
1521
+ **SYNOPSIS**
1522
+
1523
+ ```sh
1524
+ package-build types check [--project <tsconfig>] [--exports]
1525
+ ```
1526
+
1527
+ **DESCRIPTION**
1528
+
1529
+ Check a TypeScript project's declarations with library checking enabled. The
1530
+ default `--project` is `tsconfig.json`. Diagnostics in `node_modules` are
1531
+ excluded; diagnostics in project files name the file, line, and column.
1532
+ `--exports` also checks every declaration entry point advertised by
1533
+ `package.json` `exports`, including wildcard subpaths. Run it after generating
1534
+ declarations.
1535
+
1536
+ **OPTIONS**
1537
+
1538
+ | Option | Default | Meaning |
1539
+ | ----------- | --------------- | ------------------------------------------- |
1540
+ | `--project` | `tsconfig.json` | TypeScript project file. |
1541
+ | `--exports` | off | Include published declaration entry points. |
1542
+
1543
+ **EXIT STATUS**
1544
+
1545
+ 1 when a project declaration fails to type-check or an exported entry point is
1546
+ missing; otherwise 0.
1547
+
1548
+ **EXAMPLES**
1549
+
1550
+ ```sh
1551
+ package-build types check --project tsconfig.json
1552
+ ```
1553
+
1554
+ **SEE ALSO**
1555
+
1556
+ `package-build docs links`.
1557
+
1558
+ ### `package-build docs links`
1559
+
1560
+ **NAME**
1561
+
1562
+ Check documentation links.
1563
+
1564
+ **SYNOPSIS**
1565
+
1566
+ ```sh
1567
+ package-build docs links [--root <dir>]
1568
+ ```
1569
+
1570
+ **DESCRIPTION**
1571
+
1572
+ Check relative Markdown links and heading anchors in a documentation tree.
1573
+ Code fences and code spans are ignored. The default root is `docs`; use
1574
+ `--root <dir>` for another tree. Missing targets and anchors are reported at
1575
+ the link's file, line, and column.
1576
+
1577
+ **OPTIONS**
1578
+
1579
+ | Option | Default | Meaning |
1580
+ | -------- | ------- | ------------------- |
1581
+ | `--root` | `docs` | Documentation root. |
1582
+
1583
+ **EXIT STATUS**
1584
+
1585
+ 1 when a link or anchor fails to resolve; otherwise 0.
1586
+
1587
+ **EXAMPLES**
1588
+
1589
+ ```sh
1590
+ package-build docs links --root docs
1591
+ ```
1592
+
1593
+ **SEE ALSO**
1594
+
1595
+ `package-build docs index`.
1255
1596
 
1256
- ### `content-build docs item-fields`
1597
+ ### `package-build docs index`
1598
+
1599
+ **NAME**
1600
+
1601
+ Check documentation index coverage.
1602
+
1603
+ **SYNOPSIS**
1604
+
1605
+ ```sh
1606
+ package-build docs index [--root <dir>]
1607
+ ```
1608
+
1609
+ **DESCRIPTION**
1610
+
1611
+ Check that every Markdown page immediately inside each section directory is
1612
+ linked from the documentation root's `README.md`. The default root is `docs`;
1613
+ use `--root <dir>` for another tree. Each unlinked page is reported by path.
1614
+
1615
+ **OPTIONS**
1616
+
1617
+ | Option | Default | Meaning |
1618
+ | -------- | ------- | ------------------- |
1619
+ | `--root` | `docs` | Documentation root. |
1620
+
1621
+ **EXIT STATUS**
1622
+
1623
+ 1 when a page is not indexed; otherwise 0.
1624
+
1625
+ **EXAMPLES**
1626
+
1627
+ ```sh
1628
+ package-build docs index --root docs
1629
+ ```
1630
+
1631
+ **SEE ALSO**
1632
+
1633
+ `package-build docs links`.
1634
+
1635
+ ### `package-build docs item-fields`
1257
1636
 
1258
1637
  **NAME**
1259
1638
 
@@ -1262,7 +1641,7 @@ Render this repository's item-frontmatter reference.
1262
1641
  **SYNOPSIS**
1263
1642
 
1264
1643
  ```
1265
- content-build docs item-fields [--out <path>] [--check] [--title <title>]
1644
+ package-build docs item-fields [--out <path>] [--check] [--title <title>]
1266
1645
  ```
1267
1646
 
1268
1647
  **DESCRIPTION**
@@ -1303,15 +1682,16 @@ body alone, with no frontmatter, exactly as before.
1303
1682
 
1304
1683
  **OPTIONS**
1305
1684
 
1306
- | Positional | Type | Default | Description |
1307
- | ---------- | ---------------------------- | ------- | ----------------------- |
1308
- | `action` | string, one of `item-fields` | — | The document to render. |
1685
+ | Positional | Type | Default | Description |
1686
+ | ---------- | ---------------------------------------------- | ------- | ------------------------- |
1687
+ | `action` | string, one of `item-fields`, `links`, `index` | — | The documentation action. |
1309
1688
 
1310
1689
  | Option | Type | Default | Description |
1311
1690
  | --------- | ------- | ----------------------- | ------------------------------------------------------ |
1312
1691
  | `--out` | string | `docs.itemFields.out` | Write to this file instead of the configured location. |
1313
1692
  | `--check` | boolean | `false` | Compare against the file already there; write nothing. |
1314
1693
  | `--title` | string | `docs.itemFields.title` | The page's H1. |
1694
+ | `--root` | string | `docs` | Documentation root for `links` and `index`. |
1315
1695
 
1316
1696
  **EXIT STATUS**
1317
1697
 
@@ -1321,10 +1701,10 @@ body alone, with no frontmatter, exactly as before.
1321
1701
  **EXAMPLES**
1322
1702
 
1323
1703
  ```
1324
- $ content-build docs item-fields --out docs/item-fields.md --title "Demo Item Fields"
1704
+ $ package-build docs item-fields --out docs/item-fields.md --title "Demo Item Fields"
1325
1705
  […] Wrote docs/item-fields.md
1326
1706
 
1327
- $ content-build docs item-fields --out docs/item-fields.md --title "Demo Item Fields" --check
1707
+ $ package-build docs item-fields --out docs/item-fields.md --title "Demo Item Fields" --check
1328
1708
  […] docs/item-fields.md is up to date.
1329
1709
  ```
1330
1710
 
@@ -1332,7 +1712,96 @@ $ content-build docs item-fields --out docs/item-fields.md --title "Demo Item Fi
1332
1712
 
1333
1713
  [Configuration](configuration.md).
1334
1714
 
1335
- ### `content-build lint [root]`
1715
+ ### `package-build prose lint [path]`
1716
+
1717
+ **NAME**
1718
+
1719
+ Analyze note prose for readability and simpler wording.
1720
+
1721
+ **SYNOPSIS**
1722
+
1723
+ ```text
1724
+ package-build prose lint [path] [--age <years>] [--threshold <count>] [--min-words <count>]
1725
+ ```
1726
+
1727
+ **DESCRIPTION**
1728
+
1729
+ Run this command from the package root to review the readable prose in one
1730
+ Markdown note or a content tree. Pass a note path while editing that note;
1731
+ omit it to review the configured `paths.content` tree. A directory path scans
1732
+ its Markdown files recursively and honors `skipDirectories`. A file path
1733
+ analyzes that file alone, even if it sits in an excluded directory. The command
1734
+ reads source files and writes nothing. It is an optional editorial check:
1735
+ `package-build lint` and the normal lint scripts do not run it.
1736
+
1737
+ Set defaults in `package-build.config.yaml` under `packageBuild.proseLint`:
1738
+
1739
+ ```yaml
1740
+ packageBuild:
1741
+ proseLint: { age: 21, threshold: 5, minWords: 8 }
1742
+ ```
1743
+
1744
+ No configuration is required; the values above are the defaults. `age` is the
1745
+ intended reader's age in years. `threshold` is the number of seven readability
1746
+ algorithms that must classify a sentence as difficult before it is reported.
1747
+ For example, a threshold of 5 reports a sentence if five or more algorithms
1748
+ flag it; a threshold of 7 reports only unanimous findings. `minWords` excludes
1749
+ shorter sentences from readability analysis. Each setting is a positive integer,
1750
+ and `threshold` must be at most 7. CLI options override individual settings:
1751
+ `--min-words` overrides `minWords`, while `--age` and `--threshold` override
1752
+ their matching keys.
1753
+
1754
+ The command analyzes Markdown prose with `retext-english`,
1755
+ `retext-readability`, and `retext-simplify`; `retext-stringify` completes the
1756
+ text pipeline. YAML frontmatter, code blocks, wikilink addresses, and inline
1757
+ expressions are excluded. Each suggestion is a warning with a file, line,
1758
+ column, rule ID, confidence, offending sentence, and `expected` replacement
1759
+ list. The source location marks the difficult sentence or the specific phrase
1760
+ that could be simplified. Readability confidence is the number of algorithms
1761
+ that found the sentence difficult, out of seven. Simplify suggestions have no
1762
+ numeric confidence score, so they say `unscored`. `expected` lists suggested
1763
+ replacements; `[]` means the rule offers no replacement and may recommend
1764
+ deleting a word or rewriting a sentence. Suggestions are advisory, are never
1765
+ applied automatically, and do not make the command fail. Unreadable paths and
1766
+ invalid options do.
1767
+
1768
+ **OPTIONS**
1769
+
1770
+ | Input | Default | Meaning |
1771
+ | ------------- | -------------------------- | ---------------------------------------- |
1772
+ | `path` | configured `paths.content` | Markdown file or content tree |
1773
+ | `--age` | 21 | Reader age in years |
1774
+ | `--threshold` | 5 | Number of readability algorithms (1–7) |
1775
+ | `--min-words` | 8 | Minimum words for readability assessment |
1776
+
1777
+ **EXIT STATUS**
1778
+
1779
+ 0 after reporting suggestions; 1 for invalid options or unreadable paths.
1780
+
1781
+ **EXAMPLES**
1782
+
1783
+ ```bash
1784
+ package-build prose lint assets/content/Lore/Harbor.md
1785
+ package-build prose lint
1786
+ package-build prose lint assets/content --age 18 --threshold 6 --min-words 10
1787
+ ```
1788
+
1789
+ For a note whose fifth line says `The utilization is very high.`, the command
1790
+ can report:
1791
+
1792
+ ```text
1793
+ assets/content/Lore/Harbor.md:5:5: warning: retext-simplify/utilization: confidence=unscored; sentence="The utilization is very high."; expected=["use"]; Unexpected `utilization`, use `use` instead
1794
+ ```
1795
+
1796
+ Open the file at line 5, column 5, and decide whether `use` suits the context.
1797
+ The rule ID identifies the suggestion if you need to search or group results.
1798
+
1799
+ **SEE ALSO**
1800
+
1801
+ [`package-build lint`](#package-build-lint-root),
1802
+ [Configuration](configuration.md#packagebuildproselint).
1803
+
1804
+ ### `package-build lint [root]`
1336
1805
 
1337
1806
  **NAME**
1338
1807
 
@@ -1341,7 +1810,7 @@ Check a content tree's addresses and frontmatter without compiling it.
1341
1810
  **SYNOPSIS**
1342
1811
 
1343
1812
  ```
1344
- content-build lint [root] [--no-references]
1813
+ package-build lint [root] [--no-references]
1345
1814
  ```
1346
1815
 
1347
1816
  **DESCRIPTION**
@@ -1377,27 +1846,27 @@ itself could not be built for any note. Otherwise 0.
1377
1846
  **EXAMPLES**
1378
1847
 
1379
1848
  ```
1380
- $ content-build lint
1849
+ $ package-build lint
1381
1850
  […] No `itemBuilders` registry declares the vocabulary of `demo`, so that system's block is unchecked — a key inside one is discarded at compile with no warning. Declare `itemBuilders: [demo]`.
1382
- […] No published schema for demo@1.0.0, so emitted `system` fields are unchecked. A system generates its own; a module gets one from `content-build deps fetch`.
1851
+ […] No published schema for demo@1.0.0, so emitted `system` fields are unchecked. A system generates its own; a module gets one from `package-build deps fetch`.
1383
1852
  […] Addresses and frontmatter are well-formed (4 address(es) across 4 note(s)).
1384
1853
  ```
1385
1854
 
1386
1855
  **SEE ALSO**
1387
1856
 
1388
- `content-build links [root]`, `content-build reachability <dir> [file]`,
1389
- `content-build content-format schema`, `content-build content-format fields`,
1390
- `content-build content-format notes`, [Diagnostics](diagnostics.md),
1857
+ `package-build links [root]`, `package-build reachability <dir> [file]`,
1858
+ `package-build content-format schema`, `package-build content-format fields`,
1859
+ `package-build content-format notes`, [Diagnostics](diagnostics.md),
1391
1860
  [Configuration](configuration.md).
1392
1861
 
1393
- `content-build content-format <action>` checks `docs/content-format.md` —
1862
+ `package-build content-format <action>` checks `docs/content-format.md` —
1394
1863
  the content-format specification this package ships — against reality, in
1395
1864
  three ways that fail for different reasons at different times: `schema`,
1396
1865
  `fields` and `notes`, one section below per action. All three read the
1397
1866
  specification named by `--spec`, defaulting to the one this package ships,
1398
1867
  and write nothing.
1399
1868
 
1400
- ### `content-build content-format schema`
1869
+ ### `package-build content-format schema`
1401
1870
 
1402
1871
  **NAME**
1403
1872
 
@@ -1406,7 +1875,7 @@ Compare the content-format specification against a published schema.
1406
1875
  **SYNOPSIS**
1407
1876
 
1408
1877
  ```
1409
- content-build content-format schema --schema <system>=<path> [--schema <system>=<path> ...] [--spec <path>]
1878
+ package-build content-format schema --schema <system>=<path> [--schema <system>=<path> ...] [--spec <path>]
1410
1879
  ```
1411
1880
 
1412
1881
  **DESCRIPTION**
@@ -1419,10 +1888,10 @@ like one that passed.
1419
1888
 
1420
1889
  **OPTIONS**
1421
1890
 
1422
- | Option | Type | Default | Description |
1423
- | ---------- | ---------------------------- | ------------------------------------ | ----------------------------------------- |
1424
- | `--spec` | string | the shipped `docs/content-format.md` | The specification to read. |
1425
- | `--schema` | string, repeatable, required | — | A published schema, as `<system>=<path>`. |
1891
+ | Option | Type | Default | Description |
1892
+ | ---------- | ---------------------------- | ---------------------------------------- | ----------------------------------------- |
1893
+ | `--spec` | string | the shipped `engine/content-format.yaml` | The specification to read. |
1894
+ | `--schema` | string, repeatable, required | — | A published schema, as `<system>=<path>`. |
1426
1895
 
1427
1896
  **EXIT STATUS**
1428
1897
 
@@ -1432,17 +1901,17 @@ like one that passed.
1432
1901
  **EXAMPLES**
1433
1902
 
1434
1903
  ```
1435
- $ content-build content-format schema --schema sohl=schema.json
1904
+ $ package-build content-format schema --schema sohl=schema.json
1436
1905
  […] 19 claim(s) about hm3 are unchecked — no schema was supplied for it, so nothing here confirms them.
1437
1906
  […] 76 mapping claim(s) confirmed against the supplied schemas.
1438
1907
  ```
1439
1908
 
1440
1909
  **SEE ALSO**
1441
1910
 
1442
- `content-build content-format fields`, `content-build content-format notes`,
1911
+ `package-build content-format fields`, `package-build content-format notes`,
1443
1912
  `package-build schema`, [Configuration](configuration.md).
1444
1913
 
1445
- ### `content-build content-format fields`
1914
+ ### `package-build content-format fields`
1446
1915
 
1447
1916
  **NAME**
1448
1917
 
@@ -1452,7 +1921,7 @@ declarations.
1452
1921
  **SYNOPSIS**
1453
1922
 
1454
1923
  ```
1455
- content-build content-format fields [--fields <system>] [--coverage] [--spec <path>]
1924
+ package-build content-format fields [--fields <system>] [--coverage] [--spec <path>]
1456
1925
  ```
1457
1926
 
1458
1927
  **DESCRIPTION**
@@ -1474,7 +1943,7 @@ vocabularies differ by design until a note's data fully moves under `data:`.
1474
1943
 
1475
1944
  | Option | Type | Default | Description |
1476
1945
  | ------------ | ---------------------------- | --------------------------------------------- | --------------------------------------------------- |
1477
- | `--spec` | string | the shipped `docs/content-format.md` | The specification to read. |
1946
+ | `--spec` | string | the shipped `engine/content-format.yaml` | The specification to read. |
1478
1947
  | `--fields` | string, one of `sohl`, `hm3` | the consuming repository's own `itemBuilders` | A declaration set this package ships, by system id. |
1479
1948
  | `--coverage` | boolean | `false` | List, per type, the fields only one side names. |
1480
1949
 
@@ -1486,7 +1955,7 @@ declaration that compiles it. Otherwise 0.
1486
1955
  **EXAMPLES**
1487
1956
 
1488
1957
  ```
1489
- $ content-build content-format fields --fields sohl --coverage
1958
+ $ package-build content-format fields --fields sohl --coverage
1490
1959
  […] 13 type(s) compared against sohl's declarations (56 field pair(s)).
1491
1960
  […] 12 type(s) the format declares are out of reach — no `itemBuilders` entry covers them: being, homepage, vehicle, armorlocation, lore, map, place, scenario, doc, macro, bundle, folder.
1492
1961
  […] affiliation: format only [demonym, economy, epithet, governance, lore, population, symbol, templatePriority], declaration only [commonSkills, level, office, society, subType, title]
@@ -1494,10 +1963,10 @@ $ content-build content-format fields --fields sohl --coverage
1494
1963
 
1495
1964
  **SEE ALSO**
1496
1965
 
1497
- `content-build content-format schema`, `content-build content-format notes`,
1966
+ `package-build content-format schema`, `package-build content-format notes`,
1498
1967
  [Configuration](configuration.md).
1499
1968
 
1500
- ### `content-build content-format notes`
1969
+ ### `package-build content-format notes`
1501
1970
 
1502
1971
  **NAME**
1503
1972
 
@@ -1506,7 +1975,7 @@ Measure a content tree against the specification's vocabulary.
1506
1975
  **SYNOPSIS**
1507
1976
 
1508
1977
  ```
1509
- content-build content-format notes [root] [--strict] [--spec <path>]
1978
+ package-build content-format notes [root] [--strict] [--spec <path>]
1510
1979
  ```
1511
1980
 
1512
1981
  **DESCRIPTION**
@@ -1524,10 +1993,10 @@ class of finding reaches zero.
1524
1993
  | ---------- | ------ | ------------------------------ | ------------------------ |
1525
1994
  | `root` | string | the configured `paths.content` | Content tree to measure. |
1526
1995
 
1527
- | Option | Type | Default | Description |
1528
- | ---------- | ------- | ------------------------------------ | ---------------------------------------------------- |
1529
- | `--spec` | string | the shipped `docs/content-format.md` | The specification to read. |
1530
- | `--strict` | boolean | `false` | Fail on the findings instead of only reporting them. |
1996
+ | Option | Type | Default | Description |
1997
+ | ---------- | ------- | ---------------------------------------- | ---------------------------------------------------- |
1998
+ | `--spec` | string | the shipped `engine/content-format.yaml` | The specification to read. |
1999
+ | `--strict` | boolean | `false` | Fail on the findings instead of only reporting them. |
1531
2000
 
1532
2001
  **EXIT STATUS**
1533
2002
 
@@ -1538,17 +2007,17 @@ Otherwise 0.
1538
2007
  **EXAMPLES**
1539
2008
 
1540
2009
  ```
1541
- $ content-build content-format notes
2010
+ $ package-build content-format notes
1542
2011
  […] 0 finding(s) across 4 note(s) measured against docs/content-format.md.
1543
2012
  ```
1544
2013
 
1545
2014
  **SEE ALSO**
1546
2015
 
1547
- `content-build content-format schema`, `content-build content-format fields`,
1548
- `content-build lint [root]`, [Diagnostics](diagnostics.md),
2016
+ `package-build content-format schema`, `package-build content-format fields`,
2017
+ `package-build lint [root]`, [Diagnostics](diagnostics.md),
1549
2018
  [Configuration](configuration.md).
1550
2019
 
1551
- ### `content-build links [root]`
2020
+ ### `package-build links [root]`
1552
2021
 
1553
2022
  **NAME**
1554
2023
 
@@ -1557,7 +2026,7 @@ Check that every link in a content tree lands.
1557
2026
  **SYNOPSIS**
1558
2027
 
1559
2028
  ```
1560
- content-build links [root]
2029
+ package-build links [root]
1561
2030
  ```
1562
2031
 
1563
2032
  **DESCRIPTION**
@@ -1568,7 +2037,7 @@ retired — every link is an address), a wikilink authored in frontmatter
1568
2037
  (which is data and is never resolved), and a package homepage's markdown
1569
2038
  links and `landing:` addresses, which are published verbatim and use no
1570
2039
  wikilink at all. Also reports a vendored foreign-package content index that
1571
- has drifted out of reach, naming `content-build deps fetch` as the fix.
2040
+ has drifted out of reach, naming `package-build deps fetch` as the fix.
1572
2041
  Reads the content tree named by `root`, defaulting to `paths.content`, and
1573
2042
  the cached content indexes of any declared dependency; writes nothing.
1574
2043
 
@@ -1587,17 +2056,17 @@ found. Otherwise 0.
1587
2056
  **EXAMPLES**
1588
2057
 
1589
2058
  ```
1590
- $ content-build links
2059
+ $ package-build links
1591
2060
  […] 2 notes: every link is a labelled address, every anchor link lands and every address resolves (0 cross-package reference(s) via manifest), no wikilink in frontmatter, every homepage address resolvable.
1592
2061
  ```
1593
2062
 
1594
2063
  **SEE ALSO**
1595
2064
 
1596
- `content-build lint [root]`, `content-build reachability <dir> [file]`,
1597
- `content-build deps fetch`, [Diagnostics](diagnostics.md),
2065
+ `package-build lint [root]`, `package-build reachability <dir> [file]`,
2066
+ `package-build deps fetch`, [Diagnostics](diagnostics.md),
1598
2067
  [Configuration](configuration.md).
1599
2068
 
1600
- ### `content-build format [paths..]`
2069
+ ### `package-build format [paths..]`
1601
2070
 
1602
2071
  **NAME**
1603
2072
 
@@ -1606,7 +2075,7 @@ Check formatting with the shared Prettier configuration.
1606
2075
  **SYNOPSIS**
1607
2076
 
1608
2077
  ```
1609
- content-build format [paths..] [--write]
2078
+ package-build format [paths..] [--write]
1610
2079
  ```
1611
2080
 
1612
2081
  **DESCRIPTION**
@@ -1644,24 +2113,24 @@ Otherwise 0.
1644
2113
  **EXAMPLES**
1645
2114
 
1646
2115
  ```
1647
- $ content-build format
1648
- warning: this repository declares no Prettier configuration, so `content-build format` applies the shared conventions while an editor and a bare `npx prettier` apply Prettier's own to the same tree; declare them in a prettier.config.mjs — export { default } from "@heroiclands/package-build/prettier";
1649
- build/dist/module.json: error: is not formatted; run `content-build format --write` to fix it
2116
+ $ package-build format
2117
+ warning: this repository declares no Prettier configuration, so `package-build format` applies the shared conventions while an editor and a bare `npx prettier` apply Prettier's own to the same tree; declare them in a prettier.config.mjs — export { default } from "@heroiclands/package-build/prettier";
2118
+ build/dist/module.json: error: is not formatted; run `package-build format --write` to fix it
1650
2119
  […]
1651
2120
  […] ERROR: 10 of 15 file(s) are not formatted.
1652
2121
 
1653
- $ content-build format --write
2122
+ $ package-build format --write
1654
2123
  […] Formatted 10 of 15 file(s).
1655
2124
 
1656
- $ content-build format
2125
+ $ package-build format
1657
2126
  […] Formatting is clean (15 file(s)).
1658
2127
  ```
1659
2128
 
1660
2129
  **SEE ALSO**
1661
2130
 
1662
- `content-build markdown [paths..]`, [Diagnostics](diagnostics.md).
2131
+ `package-build markdown [paths..]`, [Diagnostics](diagnostics.md).
1663
2132
 
1664
- ### `content-build markdown [paths..]`
2133
+ ### `package-build markdown [paths..]`
1665
2134
 
1666
2135
  **NAME**
1667
2136
 
@@ -1670,7 +2139,7 @@ Lint markdown with the shared markdownlint rule set.
1670
2139
  **SYNOPSIS**
1671
2140
 
1672
2141
  ```
1673
- content-build markdown [paths..] [--fix]
2142
+ package-build markdown [paths..] [--fix]
1674
2143
  ```
1675
2144
 
1676
2145
  **DESCRIPTION**
@@ -1682,6 +2151,8 @@ the one these repositories write. Runs over the repository rather than the
1682
2151
  content tree, taking its rules from this package unless the consumer
1683
2152
  declares its own. `--fix` applies the fixes markdownlint can make. Reads
1684
2153
  every matched file; `--fix` rewrites them.
2154
+ Installed dependencies under `node_modules` are excluded even when the
2155
+ repository has no `.gitignore` or supplies its own markdownlint ignore list.
1685
2156
 
1686
2157
  **OPTIONS**
1687
2158
 
@@ -1701,15 +2172,15 @@ exists at all). Otherwise 0.
1701
2172
  **EXAMPLES**
1702
2173
 
1703
2174
  ```
1704
- $ content-build markdown
2175
+ $ package-build markdown
1705
2176
  […] Markdown is clean.
1706
2177
  ```
1707
2178
 
1708
2179
  **SEE ALSO**
1709
2180
 
1710
- `content-build format [paths..]`, [Diagnostics](diagnostics.md).
2181
+ `package-build format [paths..]`, [Diagnostics](diagnostics.md).
1711
2182
 
1712
- ### `content-build content-index [root]`
2183
+ ### `package-build content-index [root]`
1713
2184
 
1714
2185
  **NAME**
1715
2186
 
@@ -1718,7 +2189,7 @@ Emit this package's note index as JSON Lines.
1718
2189
  **SYNOPSIS**
1719
2190
 
1720
2191
  ```
1721
- content-build content-index [root] [--out <dir>]
2192
+ package-build content-index [root] [--out <dir>]
1722
2193
  ```
1723
2194
 
1724
2195
  **DESCRIPTION**
@@ -1751,16 +2222,16 @@ into `--out`, defaulting to the configured `paths.contentIndex`.
1751
2222
  **EXAMPLES**
1752
2223
 
1753
2224
  ```
1754
- $ content-build content-index
2225
+ $ package-build content-index
1755
2226
  […] demo → build/content-index/demo-metadata.jsonl (4 notes, 2 KiB)
1756
2227
  ```
1757
2228
 
1758
2229
  **SEE ALSO**
1759
2230
 
1760
- `content-build site`, `content-build pdf`, `content-build deps fetch`,
2231
+ `package-build site`, `package-build pdf`, `package-build deps fetch`,
1761
2232
  [Configuration](configuration.md).
1762
2233
 
1763
- ### `content-build site`
2234
+ ### `package-build site`
1764
2235
 
1765
2236
  **NAME**
1766
2237
 
@@ -1769,7 +2240,7 @@ Build the Hugo source tree from the content tree.
1769
2240
  **SYNOPSIS**
1770
2241
 
1771
2242
  ```
1772
- content-build site
2243
+ package-build site
1773
2244
  ```
1774
2245
 
1775
2246
  **DESCRIPTION**
@@ -1823,7 +2294,7 @@ None.
1823
2294
 
1824
2295
  1 if `package.json` declares no `homepage`, or one that does not end
1825
2296
  `/<contentPackage>/`; if `packageBuild.manifest.title` is undeclared; if the
1826
- navigation has not been fetched (`content-build deps fetch` fills the cache
2297
+ navigation has not been fetched (`package-build deps fetch` fills the cache
1827
2298
  and is named in the message); or if `@heroiclands/hugo-theme` is not
1828
2299
  installed. 1 if any gate fires — no homepage or two competing for it, a
1829
2300
  frontmatter wikilink, an address that cannot be derived, a stale or
@@ -1833,20 +2304,20 @@ failed to expand, or a dead wikilink. Otherwise 0.
1833
2304
  **EXAMPLES**
1834
2305
 
1835
2306
  ```
1836
- $ content-build site
2307
+ $ package-build site
1837
2308
  […] wrote 1 homepage(s) + 1 content page(s) to build/hugo/content
1838
2309
  […] wrote build/hugo/hugo.toml
1839
2310
 
1840
- $ content-build site
1841
- […] ERROR: the site navigation has not been fetched. Run `content-build deps fetch` first.
2311
+ $ package-build site
2312
+ […] ERROR: the site navigation has not been fetched. Run `package-build deps fetch` first.
1842
2313
  ```
1843
2314
 
1844
2315
  **SEE ALSO**
1845
2316
 
1846
- `content-build deps fetch`, `package-build site-root`, `content-build package <action> [pack] [entry]`, `content-build pdf`, `content-build content-index [root]`,
2317
+ `package-build deps fetch`, `package-build site-root`, `package-build package <action> [pack] [entry]`, `package-build pdf`, `package-build content-index [root]`,
1847
2318
  [Diagnostics](diagnostics.md), [Configuration](configuration.md).
1848
2319
 
1849
- ### `content-build pdf`
2320
+ ### `package-build pdf`
1850
2321
 
1851
2322
  **NAME**
1852
2323
 
@@ -1855,7 +2326,7 @@ Build the book the content tree publishes as.
1855
2326
  **SYNOPSIS**
1856
2327
 
1857
2328
  ```
1858
- content-build pdf [--out <path>] [--book-version <version>] [--compile]
2329
+ package-build pdf [--out <path>] [--book-version <version>] [--compile]
1859
2330
  ```
1860
2331
 
1861
2332
  **DESCRIPTION**
@@ -1883,8 +2354,8 @@ configured `pdf.out`.
1883
2354
 
1884
2355
  **EXIT STATUS**
1885
2356
 
1886
- 0 when there is a stated reason not to build (`publish.site` is
1887
- `homepage`, no `pdf:` block, no content tree). 1 if the document tree
2357
+ 0 when there is a stated reason not to build (only a homepage note, no `pdf:`
2358
+ block, no content tree). 1 if the document tree
1888
2359
  `pdf.document` names cannot be read or parsed, or on any other thrown
1889
2360
  error. Otherwise 0 — findings inside a book that did build (a filter that
1890
2361
  matched nothing, for instance) are reported but never fail the command.
@@ -1892,19 +2363,19 @@ matched nothing, for instance) are reported but never fail the command.
1892
2363
  **EXAMPLES**
1893
2364
 
1894
2365
  ```
1895
- $ content-build pdf
2366
+ $ package-build pdf
1896
2367
  […] No book built: no `pdf:` block is configured, so this package publishes no book
1897
2368
 
1898
- $ content-build pdf --no-compile
2369
+ $ package-build pdf --no-compile
1899
2370
  demo-book: error: the document tree named by `pdf.document` cannot be read
1900
2371
  ```
1901
2372
 
1902
2373
  **SEE ALSO**
1903
2374
 
1904
- `content-build site`, `content-build package <action> [pack] [entry]`,
2375
+ `package-build site`, `package-build package <action> [pack] [entry]`,
1905
2376
  [Diagnostics](diagnostics.md), [Configuration](configuration.md).
1906
2377
 
1907
- ### `content-build map`
2378
+ ### `package-build map`
1908
2379
 
1909
2380
  **NAME**
1910
2381
 
@@ -1914,12 +2385,12 @@ route graph.
1914
2385
  **SYNOPSIS**
1915
2386
 
1916
2387
  ```
1917
- content-build map --tree [--root <shortcode>] [--engine dot|twopi|neato] [--rankdir TB|LR|BT|RL]
2388
+ package-build map --tree [--root <shortcode>] [--engine dot|twopi|neato] [--rankdir TB|LR|BT|RL]
1918
2389
  [--nodesep <inches>] [--ranksep <inches>] [--no-polities]
1919
- content-build map --from <shortcode>.. | --from all
1920
- content-build map --chart <shortcode>.. | --chart all [--horizon <days>]
1921
- content-build map --travel
1922
- content-build map [...] [--scale <factor>] [--base <url>] [--out <dir>]
2390
+ package-build map --from <shortcode>.. | --from all
2391
+ package-build map --chart <shortcode>.. | --chart all [--horizon <days>]
2392
+ package-build map --travel
2393
+ package-build map [...] [--scale <factor>] [--base <url>] [--out <dir>]
1923
2394
  ```
1924
2395
 
1925
2396
  **DESCRIPTION**
@@ -2084,28 +2555,28 @@ that does not resolve, a cycle), or on any other thrown error. Otherwise 0
2084
2555
  **EXAMPLES**
2085
2556
 
2086
2557
  ```
2087
- $ content-build map --tree
2558
+ $ package-build map --tree
2088
2559
  assets/content/Regions/Sea.md:16:5: warning: place "innersea" has more than one parent (northc, southc), which is legal for a sea between continents or a region split between two, and worth a look otherwise
2089
2560
  assets/content/Regions/Marches/Lost_Fort.md:9:14: error: place "lostfort" names parent "marchs", which does not resolve to any place in this package or a fetched index
2090
2561
  […] 394 place(s) → 7 drawing(s) under build/map
2091
2562
 
2092
- $ content-build map --from dunharargn --base /thalorna/
2563
+ $ package-build map --from dunharargn --base /thalorna/
2093
2564
  […] 394 place(s) → 1 drawing(s) under build/map
2094
2565
 
2095
- $ content-build map --chart takheperurgn --horizon 90
2566
+ $ package-build map --chart takheperurgn --horizon 90
2096
2567
  […] 394 place(s) → 1 drawing(s) under build/map
2097
2568
 
2098
- $ content-build map --travel
2569
+ $ package-build map --travel
2099
2570
  […] 394 place(s) → 1 drawing(s) under build/map
2100
2571
  ```
2101
2572
 
2102
2573
  **SEE ALSO**
2103
2574
 
2104
- `content-build lint [root]` (which checks `borders` and `routes` from both
2105
- ends), `content-build deps fetch`, `content-build content-index [root]`,
2575
+ `package-build lint [root]` (which checks `borders` and `routes` from both
2576
+ ends), `package-build deps fetch`, `package-build content-index [root]`,
2106
2577
  [Content format](content-format.md), [Diagnostics](diagnostics.md).
2107
2578
 
2108
- ### `content-build reachability <dir> [file]`
2579
+ ### `package-build reachability <dir> [file]`
2109
2580
 
2110
2581
  **NAME**
2111
2582
 
@@ -2114,7 +2585,7 @@ Check that every document in a corpus is reachable by reading.
2114
2585
  **SYNOPSIS**
2115
2586
 
2116
2587
  ```
2117
- content-build reachability <dir> [file] [--index <shortcode> ...] [--root <path>]
2588
+ package-build reachability <dir> [file] [--index <shortcode> ...] [--root <path>]
2118
2589
  ```
2119
2590
 
2120
2591
  **DESCRIPTION**
@@ -2149,19 +2620,19 @@ in the corpus is unreachable from the entry page. Otherwise 0.
2149
2620
  **EXAMPLES**
2150
2621
 
2151
2622
  ```
2152
- $ content-build reachability Guide
2623
+ $ package-build reachability Guide
2153
2624
  […] All 2 document(s) in Guide are reachable from README.md.
2154
2625
 
2155
- $ content-build reachability assets/content
2626
+ $ package-build reachability assets/content
2156
2627
  […] ERROR: no note at assets/content/README.md, so the corpus has no page to be read from
2157
2628
  ```
2158
2629
 
2159
2630
  **SEE ALSO**
2160
2631
 
2161
- `content-build links [root]`, `content-build lint [root]`, [Diagnostics](diagnostics.md),
2632
+ `package-build links [root]`, `package-build lint [root]`, [Diagnostics](diagnostics.md),
2162
2633
  [Configuration](configuration.md).
2163
2634
 
2164
- ### `content-build addresses diff`
2635
+ ### `package-build addresses diff`
2165
2636
 
2166
2637
  **NAME**
2167
2638
 
@@ -2170,7 +2641,7 @@ Report every published address a build no longer publishes.
2170
2641
  **SYNOPSIS**
2171
2642
 
2172
2643
  ```
2173
- content-build addresses diff --from <zip|dir> [--strict]
2644
+ package-build addresses diff --from <zip|dir> [--strict]
2174
2645
  ```
2175
2646
 
2176
2647
  **DESCRIPTION**
@@ -2212,11 +2683,11 @@ this repository declaring no Item pack at all to diff). Otherwise 0.
2212
2683
  **EXAMPLES**
2213
2684
 
2214
2685
  ```
2215
- $ content-build addresses diff --from build/dist/module.zip
2686
+ $ package-build addresses diff --from build/dist/module.zip
2216
2687
  […] ERROR: demo-package@1.0.0: pack "items" is declared at packs/items, which the package does not contain
2217
2688
  ```
2218
2689
 
2219
2690
  **SEE ALSO**
2220
2691
 
2221
- `content-build package <action> [pack] [entry]`, `content-build deps fetch`,
2692
+ `package-build package <action> [pack] [entry]`, `package-build deps fetch`,
2222
2693
  [Diagnostics](diagnostics.md).