fix(verify-readme): point READMEs at the sources of sets instead of copying them #96
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/verify-readme-point-to-sources"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
verify-readmeno longer asks READMEs for script and env var tables or an in-README API reference. Instead, a README names the file, schema, or command that defines each set. It keeps only what that source can't show: why a member exists, its traps, and which members a reader must set when the source doesn't mark them.The old tables conflict with the restated-sets rule in j4k/review#91. Reviewing three setup-atlas READMEs under that rule produced 22 high-severity findings, and only 3 of them were real drift.
A README can still list every member when no file defines the set, when the README is the only place a reader can see a contract they depend on (like the fields of a
--jsonoutput with no shipped schema), or when the list is a table of contents. The dotfiles directory index and the monorepo packages table stay, because each entry says what the item is for, so a reader can pick one without opening them all. A bare list of names doesn't qualify.verify-unixy-cli's ARG8 now asks for the same thing, so the two skills stop disagreeing about one README: a CLI's Requirements section points at the help output that names its external dependencies and adds install and auth steps instead of listing them all.Review
01M3YFMB4XNPJMN56TY04SEGG4— head4a0708998a356d6364aa2ec68933f4a1644cbf1aReview — j4k-oss/agent-skills @
dc68299186Scope: diff against base tree
9bc616862d3aStatus: dispatched — coverage complete (3/3 slots terminal)
Facts: current review-wide projection
Computed under:
Findings (2)
medium — Moving README explanations into source comments can hide them from the linked user-facing source
01M3YG2EXKPBGNWWZB319THHZ0skills/verify-readme/SKILL.md(snippet)medium — README guidance treats installation and authentication as absent from help despite ARG9 requiring them there
01M3YFWA3JE9K7NEPRKPZV5Y09skills/verify-unixy-cli/references/arg8-document-external-dependencies.md(snippet)Other claims
Coverage
Coverage pass: 01M3YFMB6JQYFEAA4AZ3PNQQS7
Accounting: complete
Slot health: healthy
@ -72,0 +67,4 @@- **CLI** — point at `--help` for the flag reference; use this section for shell composition (pipelines, scripting). See "Pipeline patterns" below.- **Library** — show realistic usage, not toy snippets. Point at the type declarations or generated docs (TypeDoc, etc.) for the full API.- **App** — point at `package.json#scripts` and say which scripts a reader runs and when; auth setup.- **Config / dotfiles** — ordered setup steps; point at the top-level directories, say that each carries its own README where it does, and explain a directory only when its name doesn't.medium — Config/dotfiles Usage bullet ("point at the top-level directories") can be read as listing every directory, which the new "Sets defined elsewhere" rule forbids
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3XHVVY3CDHTG7Z2KH01DZM2of review01M3XHS1TPJ8AQWQCWZ1SR0MGWsuperseded by review
01M3XPYZ4SDEZHKKR5BEC4M702for headfd767d038e4e15c61e5b63e3095ed1b37ec4e19aAlready fixed in
83f9b43: the bullet now asks for a per-directory index whose entries each say what the directory is for, which the table-of-contents exception in "Sets defined elsewhere" allows. The ambiguous "point at the top-level directories" wording is gone.@ -72,0 +68,4 @@- **Library** — show realistic usage, not toy snippets. Point at the type declarations or generated docs (TypeDoc, etc.) for the full API.- **App** — point at `package.json#scripts` and say which scripts a reader runs and when; auth setup.- **Config / dotfiles** — ordered setup steps; point at the top-level directories, say that each carries its own README where it does, and explain a directory only when its name doesn't.- **Monorepo** — point at the workspace definition and say that each package carries its own README; describe the packages a newcomer touches first.low — Monorepo Usage guidance tells the agent to say every package has its own README without the "where it does" check the dotfiles bullet has
lens
general-bug· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3XHWAPKYBY16BD9S1JXSCYAof review01M3XHS1TPJ8AQWQCWZ1SR0MGWsuperseded by review
01M3XPYZ4SDEZHKKR5BEC4M702for headfd767d038e4e15c61e5b63e3095ed1b37ec4e19aFixed in
bd1fb2f: the Monorepo bullet now links each package README where it has one, matching the dotfiles bullet.@ -87,3 +89,3 @@**Purpose**: the settings surface.Env vars as a table. Config file format in a fenced block. Include only when the project is configurable.Point at the env var schema or config parser and any example config file, then add what they can't show: which settings a reader must set when the source doesn't mark them, why a default is what it is, and traps. A short fenced excerpt can show the config file format. Include only when the project is configurable.low — Configuration section restates the "Sets defined elsewhere" rule in its own words instead of pointing to it, so the two copies can drift
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3XHW6BGPJTC444DC9Q6MAJQof review01M3XHS1TPJ8AQWQCWZ1SR0MGWsuperseded by review
01M3XPYZ4SDEZHKKR5BEC4M702for headfd767d038e4e15c61e5b63e3095ed1b37ec4e19aFixed in
bd1fb2f: Configuration now points at "Sets defined elsewhere" for the detail to add instead of restating it, and "why its default is what it is" moved into the shared list.@ -104,1 +106,4 @@## Sets defined elsewhereWhen a file, directory, schema, or command already defines a set — `--help`, `package.json#scripts`, the env var schema or config parser, the workspace packages, a directory's children — the README names that source instead of listing the members or stating how many there are. A copy must change with every change to the set, and it goes stale silently when nobody updates it. Name a source the README's reader can reach: a command, a file the published package ships, an absolute repository URL, or, when the project isn't published, a repository-relative path.low — Rationale sentence in "Sets defined elsewhere" repeats itself: "goes stale silently when nobody updates it" only restates "must change with every change"
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3XHWQ846764RBBP9546FG1Qof review01M3XHS1TPJ8AQWQCWZ1SR0MGWsuperseded by review
01M3XPYZ4SDEZHKKR5BEC4M702for headfd767d038e4e15c61e5b63e3095ed1b37ec4e19aFixed in
bd1fb2f: the rationale now reads "A copy must change with every change to the set, and nothing flags it when it does not."@ -87,3 +89,3 @@**Purpose**: the settings surface.Env vars as a table. Config file format in a fenced block. Include only when the project is configurable.Point at the env var schema or config parser and any example config file, then add what they can't show: which settings a reader must set when the source doesn't mark them, why a default is what it is, and traps. A short fenced excerpt, labeled as an excerpt, can show the config file format; it shows the shape, not every key. Include only when the project is configurable.low — Configuration section repeats the "Sets defined elsewhere" rule instead of pointing to it
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3XQ1FPHHRHZSDDNAN5VV0BAof review01M3XPYZ4SDEZHKKR5BEC4M702superseded by review
01M3XR69KD21A4VCY038Z7E4DEfor headd9cbf38f83ebd9cc714757b9291c403c454a38e8Fixed in
bd1fb2f: Configuration now points at "Sets defined elsewhere" for the detail to add instead of restating it, and "why its default is what it is" moved into the shared list.@ -104,1 +106,4 @@## Sets defined elsewhereWhen a file, directory, schema, or command already defines a set — `--help`, `package.json#scripts`, the env var schema or config parser, the workspace packages, a directory's children — the README names that source instead of listing the members or stating how many there are. A copy must change with every change to the set, and it goes stale silently when nobody updates it. Name a source the README's reader can reach: a command, a file the published package ships, an absolute repository URL, or, when the project isn't published, a repository-relative path.low — Rationale sentence for "Sets defined elsewhere" restates its own consequence
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3XQ1G2VC8ZGYPXC5BND3PKXof review01M3XPYZ4SDEZHKKR5BEC4M702superseded by review
01M3XR69KD21A4VCY038Z7E4DEfor headd9cbf38f83ebd9cc714757b9291c403c454a38e8Fixed in
bd1fb2f: the rationale now reads "A copy must change with every change to the set, and nothing flags it when it does not."@ -105,0 +110,4 @@The README still tells the reader where each set lives, plus the detail the source can't show: what a member means and its units, why it exists, its gotchas, and which members the reader must set or run when the source doesn't mark them. A requirements list, a schema's `required`, or `--help` output that labels them required counts as marking them. Write that detail for the members that need it, without a count or a claim to cover them all, even when every member needs it; such a list may name every member. Move detail beside the member's definition, as a schema description or a comment, only when the task covers editing the source; otherwise keep it in the README, including detail carried by a restated list you remove.Any other list that names every member restates the set however it is framed — a table, a sentence, a parenthetical, or an "e.g." that covers them all — and so does a count word like "both" or "all" attached to listed members. Mark any other partial list as examples.low — New "Sets defined elsewhere" rule flags the README dependency list that verify-unixy-cli ARG8 requires, and both checks run in the same audit
lens
general-bug· armdefault· tally 2 valid / 0 invalid / 0 uncertainclaim
01M3XQ1P511J91T113REJK6ZTKof review01M3XPYZ4SDEZHKKR5BEC4M702superseded by review
01M3XR69KD21A4VCY038Z7E4DEfor headd9cbf38f83ebd9cc714757b9291c403c454a38e8Fixed in
bd1fb2fon the ARG8 side. I declined the proposed exemption for prerequisites lists: the user decided that prose restating a set defined elsewhere is a high defect, with a fixed set of exceptions that does not include requirements lists. ARG8 now asks the README Requirements section to point at the help output naming the dependencies and add what help cannot show, such as install and auth steps. "Sets defined elsewhere" already allows a list carrying that per-dependency detail, so the two skills now give the same verdict on one README.@ -87,3 +89,3 @@**Purpose**: the settings surface.Env vars as a table. Config file format in a fenced block. Include only when the project is configurable.Point at the env var schema or config parser and any example config file, then add what they can't show: which settings a reader must set when the source doesn't mark them, why a default is what it is, and traps. A short fenced excerpt, labeled as an excerpt, can show the config file format; it shows the shape, not every key. Include only when the project is configurable.low — Configuration section restates the "Sets defined elsewhere" detail list instead of pointing to it, unlike Usage
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3XR9580JSCCBGY2NFKV8NFDof review01M3XR69KD21A4VCY038Z7E4DEsuperseded by review
01M3XWQCYY7CNKW93YBJPRSV25for head83f9b432f2c50361247a23b024ded728916a4f4cFixed in
bd1fb2f: Configuration now points at "Sets defined elsewhere" for the detail to add instead of restating it, and "why its default is what it is" moved into the shared list.@ -105,0 +108,4 @@When a file, directory, schema, or command already defines a set — `--help`, `package.json#scripts`, the env var schema or config parser, the workspace packages, a directory's children — the README names that source instead of listing the members or stating how many there are. A copy must change with every change to the set, and it goes stale silently when nobody updates it. Name a source the README's reader can reach: a command, a file the published package ships, an absolute repository URL, or, when the project isn't published, a repository-relative path.The README still tells the reader where each set lives, plus the detail the source can't show: what a member means and its units, why it exists, its gotchas, and which members the reader must set or run when the source doesn't mark them. A requirements list, a schema's `required`, or `--help` output that labels them required counts as marking them. Write that detail for the members that need it, without a count or a claim to cover them all, even when every member needs it; such a list may name every member. Move detail beside the member's definition, as a schema description or a comment, only when the task covers editing the source; otherwise keep it in the README, including detail carried by a restated list you remove.medium — "Sets defined elsewhere" repeats the no-list/no-count rule in three paragraphs and leaves the allowed full-coverage detail list hard to tell apart from a forbidden restatement
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3XR8VK5XGBETH73YM56TTJAof review01M3XR69KD21A4VCY038Z7E4DEsuperseded by review
01M3XWQCYY7CNKW93YBJPRSV25for head83f9b432f2c50361247a23b024ded728916a4f4cFixed in
bd1fb2f: the section now states each condition once. The detail paragraph drops the repeated "where each set lives", keeping detail from a removed list is its own paragraph, and the list rule opens "A list without that detail restates the set", so the allowed detail list and the forbidden copy are told apart by name instead of across a paragraph break.@ -70,2 +67,2 @@- **Config / dotfiles** — per-directory index linking to each sub-README; ordered setup steps.- **Monorepo** — a packages table with purpose and published name; link to each package's README.- **CLI** — point at `--help` for the flag reference; use this section for shell composition (pipelines, scripting). See "Pipeline patterns" below.- **Library** — show realistic usage, not toy snippets. Point at the type declarations or generated docs (TypeDoc, etc.) for the full API.medium — Library API guidance has no fallback for JavaScript packages without types or generated docs
lens
general-bug· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3XWYFR1N4ZZBHFT9K0DD9T5of review01M3XWQCYY7CNKW93YBJPRSV25Fixed in
bd1fb2f: the Library bullet now points at what defines the full API — the type declarations, generated docs, or, when neither exists, the entry point the package ships. I did not bring back an exhaustive in-README API reference: the user decided that prose restating a set defined elsewhere is a high defect, and the entry point defines the exports. Per-export detail the source cannot show is still allowed under "Sets defined elsewhere".@ -104,1 +106,4 @@## Sets defined elsewhereWhen a file, directory, schema, or command already defines a set — `--help`, `package.json#scripts`, the env var schema or config parser, the workspace packages, a directory's children — the README names that source instead of listing the members or stating how many there are. A copy must change with every change to the set, and it goes stale silently when nobody updates it. Name a source the README's reader can reach: a command, a file the published package ships, an absolute repository URL, or, when the project isn't published, a repository-relative path.medium — The set rule conflicts with required CLI prerequisite lists
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3XX9GAEJCK400ZY6RK1RDPMof review01M3XWQCYY7CNKW93YBJPRSV25Fixed in
bd1fb2fon the ARG8 side. I declined the proposed exemption for prerequisites lists: the user decided that prose restating a set defined elsewhere is a high defect, with a fixed set of exceptions that does not include requirements lists. ARG8 now asks the README Requirements section to point at the help output naming the dependencies and add what help cannot show, such as install and auth steps. "Sets defined elsewhere" already allows a list carrying that per-dependency detail, so the two skills now give the same verdict on one README.@ -105,0 +110,4 @@Beside the source, the README adds the detail the source can't show, for each member that needs it: what the member means and its units, why it exists and why its default is what it is, its gotchas, and whether the reader must set or run it when the source doesn't mark it required. A requirements list, a schema's `required`, or `--help` output that labels a member required marks it. This detail may end up covering every member; don't introduce it with a count or a claim to cover them all.Keep that detail in the README unless the task covers editing the source; then move it beside the member's definition, as a schema description or a comment. When you remove a restated list, keep the detail it carried the same way.medium — Keep reader-facing setup warnings visible in the README when editing source
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3YE9HX1S49M0C56FPC400CAof review01M3YE1NRGYPFVPFNET8NH66ACFixed in
b158887: a warning the reader needs before setting or running a member now stays in the README even when the task covers editing the source, like theDATABASE_URLwarning in the Good example. Other detail still moves beside the member definition in that case, so it has one home.@ -5,2 +5,2 @@1. **Listed in README**: A "Requirements" or "Prerequisites" section listing all dependencies2. **Mentioned in help output**: Either in the description or a dedicated section1. **Mentioned in help output**: Either in the description or a dedicated section2. **Covered in README**: A "Requirements" or "Prerequisites" section that points at the help output naming the dependencies and adds what it can't show, such as how to install and authenticate each one (see "Sets defined elsewhere" in the verify-readme skill)medium — Keep dependency help available when a prerequisite is missing
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3YEBR7V2DYXG78SDFZSHMZ2of review01M3YE1NRGYPFVPFNET8NH66ACFixed in
b158887: ARG8 now runs the dependency check after--helpand--versionare handled, so help still names the dependencies when one is missing (matching ARG9), and the example comment says the same.@ -104,1 +106,4 @@## Sets defined elsewhereWhen a file, directory, schema, or command already defines a set — `--help`, `package.json#scripts`, the env var schema or config parser, the workspace packages, a directory's children — the README names that source instead of listing the members or stating how many there are. A copy must change with every change to the set, and nothing flags it when it doesn't. Name a source the README's reader can reach: a command, a file the published package ships, an absolute repository URL, or, when the project isn't published, a repository-relative path.low — Include hosted generated documentation among reachable API sources
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3YF2BBE3G7C6PQ3N7P451VWof review01M3YEPZJ8KVE8TY42JWJ3T417Fixed in
4a07089: the reachable-source list now includes a hosted docs URL, so the Library bullet pointer to generated docs fits it.@ -5,2 +5,2 @@1. **Listed in README**: A "Requirements" or "Prerequisites" section listing all dependencies2. **Mentioned in help output**: Either in the description or a dedicated section1. **Mentioned in help output**: Either in the description or a dedicated section2. **Covered in README**: A "Requirements" or "Prerequisites" section that points at the help output naming the dependencies and adds what it can't show, such as how to install and authenticate each one (see "Sets defined elsewhere" in the verify-readme skill)low — Limit authentication guidance to dependencies that require it
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3YF1H0851H8VQRT0Y92M5H9of review01M3YEPZJ8KVE8TY42JWJ3T417Fixed in
4a07089: ARG8 now asks how to install each dependency and, for one that needs it, how to authenticate it.@ -7,2 +6,3 @@2. **Covered in README**: A "Requirements" or "Prerequisites" section that points at the help output naming the dependencies and adds what it can't show, such as how to install and authenticate each one (see "Sets defined elsewhere" in the verify-readme skill)3. **Configurable via environment variable**: A per-dependency env var for custom paths (e.g., `MYCLI_GH_PATH`, `MYCLI_GIT_PATH`)4. **Checked at startup**: With actionable error messages if missing4. **Checked at startup**: With actionable error messages if missing. Run the check after `--help` and `--version` are handled, so help still names the dependencies when one is missing (see ARG9)medium — Distinguish help status checks from fatal dependency validation
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3YEXZ41P6M4GEN0019DND7Pof review01M3YEPZJ8KVE8TY42JWJ3T417Fixed in
4a07089: ARG8 now calls its startup check the fatal one and runs it after--helpand--version; help runs its own non-fatal status checks to show theRequiresdiagnostics in ARG9. The example comment says the same.@ -105,0 +110,4 @@Beside the source, the README adds the detail the source can't show, for each member that needs it: what the member means and its units, why it exists and why its default is what it is, its gotchas, and whether the reader must set or run it when the source doesn't mark it required. A requirements list, a schema's `required`, or `--help` output that labels a member required marks it. This detail may end up covering every member; don't introduce it with a count or a claim to cover them all.Keep that detail in the README unless the task covers editing the source; then move it beside the member's definition, as a schema description or a comment. A warning the reader needs before setting or running a member stays in the README either way, like the `DATABASE_URL` warning in the Good example below. When you remove a restated list, keep the detail it carried the same way.medium — Moving README explanations into source comments can hide them from the linked user-facing source
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3YG2EXKPBGNWWZB319THHZ0of review01M3YFMB4XNPJMN56TY04SEGG4@ -5,2 +5,2 @@1. **Listed in README**: A "Requirements" or "Prerequisites" section listing all dependencies2. **Mentioned in help output**: Either in the description or a dedicated section1. **Mentioned in help output**: Either in the description or a dedicated section2. **Covered in README**: A "Requirements" or "Prerequisites" section that points at the help output naming the dependencies and adds what it can't show, such as how to install each one and, for one that needs it, how to authenticate it (see "Sets defined elsewhere" in the verify-readme skill)medium — README guidance treats installation and authentication as absent from help despite ARG9 requiring them there
lens
writing-quality· armdefault· tally 1 valid / 0 invalid / 0 uncertainclaim
01M3YFWA3JE9K7NEPRKPZV5Y09of review01M3YFMB4XNPJMN56TY04SEGG4Acknowledged, not fixed in this PR: this finding arrived in review round 4, where only clear, severe bugs get another push, and this one is a real but small wording gap. A comment beside a flag declaration never reaches
--help, so the move can hide detail from the reader the README points there.Deferred to a follow-up PR. In
skills/verify-readme/SKILL.md, "Sets defined elsewhere", third paragraph, replace "then move it beside the member's definition, as a schema description or a comment" with "then move it into a description the linked source shows its reader, such as a schema description or a--helpoption description, and keep any other detail in the README".Acknowledged, not fixed in this PR: this finding arrived in review round 4, where only clear, severe bugs get another push, and this one is a real but small overlap. ARG9 has
--helpprint install and auth fixes for a missing dependency, so ARG8's "how to install each one and ... how to authenticate it" can duplicate them in the README.Deferred to a follow-up PR. In
skills/verify-unixy-cli/references/arg8-document-external-dependencies.md, item 2, replace "such as how to install each one and, for one that needs it, how to authenticate it" with "such as platform-specific install steps or a minimum version, beyond the short fix--helpprints for a missing dependency (ARG9)".