文档 Guardian
- 作者仓库星标 0
- 作者仓库 skills-registry
Documentation Guardian
Keeps docs/adr/ in sync with the code. Two jobs:
- Detect ADR-worthy changes as they happen and propose drafting an ADR.
- Check planned and in-progress changes against existing ADRs before they land.
The ADR conventions referenced here live in docs/adr/README.md. When the two disagree, docs/adr/README.md wins — update this skill to match.
Activation triggers (this repo's architecture)
Activate when you observe any of these in a planned or in-progress change:
- A new chart plugin under
src/chart/plugins/, or a new entry registered insrc/chart/plugins.ts. - A new data source under
src/data-source/, or a new tier added to the sunshine-source resolution chain (existing tiers are governed by an accepted ADR — re-readdocs/adr/to find which). - A new render mode or layout (a fourth top-level mode beside Combination / Station / Forecast), or a new
forecast.stylevariant beyond style1/style2. - A new top-level card-config option that the user can set in their YAML — these become public API and are notoriously hard to remove.
- A build / quality gate change: ESLint rule promoted warn→error, vitest coverage threshold moved, dependency-cruiser rule added or relaxed, new CI workflow under
.github/workflows/, change to theRequired status checksset on master. - A bundler or major-dependency bump: Rollup, vitest, lit, chart.js, playwright, eslint majors. The decision to take a major and the migration shape is ADR-worthy; patch/minor bumps are not.
- A boundary break: a new uplevel
importinsrc/chart/,src/editor/, orsrc/utils/. Either it needs to be removed, or the boundary itself needs an ADR change. - A change to the e2e baseline regeneration flow (the
update-baselines.ymlworkflow, the playwright tolerance, the WSL fallback policy — pinning is governed by an accepted ADR; re-readdocs/adr/before changing the flow). - A release-flow change — the steps listed in
CLAUDE.mdfor cuttingvX.Y.Z. - A pattern deviation from an accepted ADR — code that contradicts an existing decision.
Skip — do not trigger on
- Bug fixes that don't change a contract (no new public option, no new module-boundary, no new dependency).
- Refactors within an existing module that keep the public surface identical.
- Adding test coverage to existing code (including v1.5 #10 work on
teardown-registry.ts). - Style fixes, lint-warning cleanup, type-narrowing inside an already-strict file.
- E2E baseline regenerations done by the
update-baselines.ymlGHA bot. - Single-file documentation edits (typo, link, prose tweak) that do not change a convention.
- Patch/minor dependency bumps via Dependabot.
- Lovelace dashboard / Bubble Card / user-side YAML examples in docs (those describe usage, not internal architecture).
Out of scope (deliberately)
The skill stays narrow. It does not:
- Fire on conversational mentions of "bug" or "idea". Filing a GitHub issue is a deliberate user act, not a documentation event.
- Run
gh issue createor manage labels. - Police uncommitted working-tree state outside
docs/and the ADR check. - Verify cross-links in issue bodies on GitHub.
Documentation locations
When suggesting where information should live, use these targets:
| Target | Purpose |
|---|---|
docs/adr/NNNN-*.md |
Architecture decisions: tech choice, build-gate change, public-API surface, module-boundary, release-flow change |
ARCHITECTURE.md |
Module map, lifecycle, data flow — descriptive, derived from code |
docs/CONFIGURATION.md |
User-facing card config reference (every new option must land here too) |
docs/CONDITIONS.md, docs/SENSORS.md, docs/TROUBLESHOOTING.md |
User reference docs by domain |
docs/STYLE-GUIDE.md |
Documentation conventions themselves |
CHANGELOG.md |
Release-by-release log (every user-visible change is mentioned here) |
CLAUDE.md |
Local-only context (gitignored). Do not propose ADR rationale to live here. |
Gating test — apply before proposing
The activation triggers above are detection signals, not auto-suggestions. After a trigger fires, gate the proposal by the restrictive AND-of-three filter:
- Hard to reverse — the cost of changing the decision later is meaningful.
- Surprising without context — a future reader will look at the code and wonder "why on earth did they do it this way?"
- Result of a real trade-off — there were genuine alternatives and you picked one for specific reasons.
All three must be true. If any one is missing, skip the ADR — the rationale belongs in a commit message, a code comment, the CHANGELOG.md, or simply in the diff itself.
- Easy to reverse → just reverse it later.
- Not surprising → nobody will wonder why.
- No real alternative → "we did the obvious thing" isn't worth recording.
This filter mirrors the one in the user-level grill-with-docs skill, so both stay aligned on what counts as ADR-worthy.
Proactive prompting
When a trigger fires and the AND-of-three gate passes, surface it before implementation, not after:
This change introduces / modifies / adds X. That's a deliberate architectural choice with genuine alternatives and meaningful reversal cost — should I draft an ADR for it before continuing?
Suggested:
docs/adr/NNNN-descriptive-title.md.
If the user agrees, draft the ADR using docs/adr/template.md in the same PR as the code change. If the user defers ("not now, later"), respect that — do not nag in the same session.
For architecture suggestions in general (per CLAUDE.md): list pros/cons, then a recommendation, then act only after OK.
Compliance check
Before implementation
- List
docs/adr/fresh — never assume a snapshot of the in-force set; new ADRs land regularly and a hardcoded list in this skill would silently drift. - Read each accepted ADR whose title or
Decisionsection overlaps the staged paths or the planned change's surface area. Skiptemplate.mdandREADME.md. - Verify the planned change does not contradict any of them.
- If the planned change contradicts an accepted ADR, raise it explicitly:
This approach differs from ADR 000N (
<title>) which decided X. Two options: (a) adjust the implementation to match the ADR, (b) write a superseding ADR. Which one?
After implementation
- Note any significant undocumented decisions made during the change.
- Suggest an ADR for each, naming the file path.
ADR mechanics
Required structure
Mirrors docs/adr/template.md:
# NNNN: Title
**Status:** Proposed | Accepted | Deprecated | Superseded by NNNN
**Date:** YYYY-MM-DD
## Context
## Decision
## Consequences
- Pros / Cons / Tradeoffs
## Related
Numbering
- Sequential four-digit numbers: 0001, 0002, …
- Find the current highest number with
ls docs/adr/. - Never reuse a number, even for deprecated or superseded ADRs.
Superseding
When a new decision overrides an old one:
- The old ADR's status becomes
Superseded by NNNN. - The old ADR file is not deleted — history is preserved.
- The new ADR's status is
Acceptedand itsRelatedsection links back to the superseded one.
Behavioural guidelines
- Lightweight, not bureaucratic. Suggest ADRs only when the change is genuinely a decision, not when the answer is obvious from the code or already documented.
- "Should I draft an ADR?" pattern, not auto-generation. Wait for a yes.
- Respect deferrals. If the user says "later" or "no", drop it.
- Pro/contra first. When recommending an architecture or tool choice, list alternatives, then a recommendation, then wait for OK before implementing.
- Connect the dots. Link new ADRs to related ones; reference the ADR from the relevant code section in
ARCHITECTURE.mdor the corresponding user doc. - English only in any file written to disk. Conversation can stay German.
<!-- tomevault:4.0:skill_md:2026-05-22 -->Source: chriguschneider/weather-station-card — distributed by TomeVault.
- 流狐分类
- 文档
- 作者声明 Agent
- 未找到明确声明;不据此推断已兼容或已测试
- 静态检查
- 88 / 100 · 启发式扫描,不代表运行安全
- 作者 / 版本 / 许可
- @tomevault-io · 未声明 license
- 流狐 Token 估算
- 低消耗
- 流狐接入估算
- 即装即用
- 是否需要外部 API Key
- 未发现要求
- 检测到的系统要求
- WSL
- 底层运行要求
- 未声明
- 检测到的文件与系统行为
-
- 只读
- 允许写入 / 修改
- 检测到的网络行为
- 仅限本地
- 安装命令数
- 无(仅作为资料)
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
作者没有在当前 SKILL.md 中定义固定输出样例。 Activate when you observe any of these in a planned or in-progress change: A new chart plugin under src/chart/plugins/, or a new entry registered in src/chart/plugins.ts. A new data source under src/data-source/, or a new tier added to the sunshine-source…
Bug fixes that don't change a contract (no new public option, no new module-boundary, no new dependency). Refactors within an existing module that keep the public surface identical. Adding test coverage to existing code (including v1.5 10 work on…
The skill stays narrow. It does not: Fire on conversational mentions of "bug" or "idea". Filing a GitHub issue is a deliberate user act, not a documentation event. Run gh issue create or manage labels.
When suggesting where information should live, use these targets: Target · Purpose docs/adr/NNNN-.md · Architecture decisions: tech choice, build-gate change, public-API surface, module-boundary, release-flow change
The activation triggers above are detection signals, not auto-suggestions. After a trigger fires, gate the proposal by the restrictive AND-of-three filter: Hard to reverse — the cost of changing the decision later is meaningful.
When a trigger fires and the AND-of-three gate passes, surface it before implementation, not after: This change introduces / modifies / adds X. That's a deliberate architectural choice with genuine alternatives and meaningful reversal cost — should I draft an…
# Documentation Guardian
Keeps `docs/adr/` in sync with the code. Two jobs:
1. **Detect ADR-worthy changes** as they happen and propose drafting an ADR.
2. **Check planned and in-progress changes against existing ADRs** before they land.
The ADR conventions referenced here live in [`docs/adr/README.md`](../../../docs/adr/README.md). When the two disagree, `docs/adr/README.md` wins — update this skill to match.
## Activation triggers (this repo's architecture)
Activate when you observe any of these in a planned or in-progress change:
- A **new chart plugin** under `src/chart/plugins/`, or a new entry registered in `src/chart/plugins.ts`.
- A **new data source** under `src/data-source/`, or a new tier added to the sunshine-source resolution chain (existing tiers are governed by an accepted ADR — re-read `docs/adr/` to find which).
- A **new render mode** or layout (a fourth top-level mode beside Combination / Station / Forecast), or a new `forecast.style` variant beyond style1/style2.
- A **new top-level card-config option** that the user can set in their YAML — these become public API and are notoriously hard to remove.
- A **build / quality gate change**: ESLint rule promoted warn→error, vitest coverage threshold moved, dependency-cruiser rule added or relaxed, new CI workflow under `.github/workflows/`, change to the `Required status checks` set on master.
- A **bundler or major-dependency bump**: Rollup, vitest, lit, chart.js, playwright, eslint majors. The decision to take a major and the migration shape is ADR-worthy; patch/minor bumps are not.
- A **boundary break**: a new uplevel `import` in `src/chart/`, `src/editor/`, or `src/utils/`. Either it needs to be removed, or the boundary itself needs an ADR change.
… 作者原文负责流程事实;流狐只索引当前章节、要点、文件与命令。
章节 -> Activation triggers (this repo's architecture) → Skip — do not trigger on → Out of scope (deliberately) → Documentation locations → Gating test — apply before proposing → Proactive prompting
要点 -> Detect ADR-worthy changes · Check planned and in-progress changes against existing ADRs · new chart plugin · new data source · new render mode · new top-level card-config option · build / quality gate change · bundler or major-dependency bump
文件/命令 -> docs/adr/ · docs/adr/README.md · src/chart/plugins/ · src/chart/plugins.ts · src/data-source/ · forecast.style · .github/workflows/ · Required status checks
内容 SHA-256 -> 05a71f2824fe
原文结构
适用与边界
原文中的明确线索
docs/adr/、docs/adr/README.md、src/chart/plugins/、src/chart/plugins.ts、src/data-source/、forecast.style、.github/workflows/、Required status checks