- name
- repo-health-sweep
- description
- Bi-weekly pass over the whole evlog repository, not just the agent's own surface. Checks every SKILL.md against the real package surface, the docs tree for stale or self-contradictory pages, the repo's own conventions, and the examples against the current API. Load this when the repo-health-sweep schedule fires, or when Hugo asks for a repo health sweep, a docs audit, a skills-vs-reality check, or a convention drift review.
# Repo health sweep
The self-review owns the agent's own surface. This sweep owns the rest of the
repository: the published docs, the skills that describe the package, the
repo's own conventions, and the runnable examples. Where they overlap, this
skill covers the parts the self-review does not.
The failure mode is the same as self-review: a confident claim that is quietly
out of date, and the expensive version is claiming something does not exist.
Every check in this sweep is grounded in the current `main` before it is
written down. This is the `source-research` procedure over the whole repo, not
anything recalled.
## The rule that never bends
A finding names the file and the rule or source it contradicts, or it is
dropped. A claim that an option, export, adapter or page is missing is proven
by enumerating the real surface, never by the absence of a memory. Load
`source-research` and follow it before drawing a conclusion about any package
behavior.
## The four lenses
### Skills vs reality
Every SKILL.md, internal and published, checked against the package surface it
describes.
- Internal: `.agents/skills/*` (create-adapter, create-enricher,
create-framework-integration, create-map-rule) and `apps/evi/agent/skills/*`.
- Published: `skills/*` (analyze-logs, build-audit-logs,
review-logging-patterns).
- What to check: every API name, option, default, or adapter the skill shows.
An `evlog.X` option must exist under that name; a function signature must be
the real one (a curried call shown where the API is two-arg is a bug); a
framework must export what the skill claims it does or does not.
- Bar: a skill that describes old behavior is worse than no skill (`AGENTS.md`).
When a code change fixed a skill in this repo, that fix is the evidence the
skill used to drift.
### Docs quality
The published docs are the contract, so a wrong page costs real users.
- Pages that are unclear, stale, or inconsistent with each other. A page that
contradicts a sibling page about the same API is a finding even when both are
wrong the same way.
- A feature that shipped without a docs page, or an option documented with the
wrong default.
- A table (adapters, env vars, exports, flags) that lists sources the code does
not read, or omits ones it does. Cross-check against source, not against an
older page.
- Anything `source-research` could not answer because no page covers it.
### Convention drift
Places where the code or prose violates the repo's own rules.
- Root `AGENTS.md`: export registration in all three of `package.json#exports`,
`package.json#typesVersions`, `tsdown.config.ts`; no `evlog/shared` import
(`evlog/toolkit` is the public name); the style rules ("no as any", no silent
fallbacks, no speculative options) applied to new code.
- Changeset policy: a user-facing change merged with no changeset, or a
changeset shipped for a change confined to `apps/*`.
- Test placement: logic under `agent/` or `packages/*/src` with no colocated
test, or the repo's testing rules (framework tests driving the real request
driver) violated.
- Consistency with its own stated convention, including the ones in `AGENTS.md`
that the prose itself breaks.
### Examples drift
`examples/*` must match the current API. The examples are the first thing a
user reads after the docs.
- A runnable example importing an option, export or signature that no longer
exists, or relying on a default that changed.
- A skeleton directory (the `community-*-skeleton` dirs used by the create-*
skills) that no longer matches what the skill generates.
## Grounding
- **Run before you assert.** Anything you claim about the package surface is
executed in `/workspace/repo` on `main` or read from source. If it could not
be verified, it is written as a question, never as evidence in a PR body.
- **Absence is proven by listing.** Enumerate the exports map, the docs index,
the adapters directory, the connect registry before calling something
missing.
- **One counter-example kills a finding.** Grep the whole repo, not the
directory you were reading.
## Dedupe
Before filing anything: `linear__list_issues` on the evlog team, and
`github__searchIssues` for an open issue, PR or draft on the same ground,
including your own earlier runs. A stale draft that still applies gets a rebase
and a comment, not a replacement. A finding Hugo closed once does not come
back.
## Deliver
One report with concrete findings, each citing the file and the rule or source
it contradicts, plus proposed diffs for the easy ones. The report is the
deliverable; it goes to a Linear document, with a summary comment on the issue.
- **Mechanical fix, checks green, no judgement needed → draft PR.** One per
finding, never bundled. Follow `contributing`: branch off `main`,
`pnpm run lint`, `pnpm run typecheck`, `pnpm run test`. An `apps/evi` or
`apps/docs` content change never needs a changeset; a change to a published
package does.
- **Everything else → Linear issue** via `linear__save_issue` on the evlog
team, or a proposal in the report when it is a decision rather than a fix.
Name the problem, what it contradicts, where it is, and the decision to make.
- **A proposal never ships as code on your own initiative.** The report is the
deliverable; building it is Hugo's call.
Post one line per artifact to the thread, links inline.
## When nothing is warranted
One line: the lenses ran and nothing came up. Never invent a finding to fill
the run, never file an issue to report that a lens was clean, and never open a
PR for a rule the repo does not actually state.
在 GitHub 查看