Skip to content

Comments

chore: repo audit and docs refresh#85

Merged
aryeko merged 2 commits intomainfrom
chore/repo-audit-doc-refresh
Feb 18, 2026
Merged

chore: repo audit and docs refresh#85
aryeko merged 2 commits intomainfrom
chore/repo-audit-doc-refresh

Conversation

@aryeko
Copy link
Owner

@aryeko aryeko commented Feb 18, 2026

Summary

  • Add CI markdown link integrity check (scripts/check_markdown_links.py + poe docs-links task)
  • Add three new reference docs: developer-workflow.md, workflows-reference.md, docs-inventory.md
  • Improve docs/README.md discoverability and navigation
  • Update CONTRIBUTING.md, README.md, RELEASE.md to reference new docs and link checker
  • Remove 7 stale planning documents from docs/plans/

Test plan

  • poe docs-links passes — no broken markdown links
  • poe lint passes (ruff, mypy)
  • pytest passes — 509 tests, 98% coverage
  • actionlint passes on updated CI workflow
  • All new internal doc links verified

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation

    • Added comprehensive reference guides: workflows, developer workflow, docs inventory, and a Claude usage guide
    • Improved documentation architecture, navigation, and quick-reference links
    • Updated contributing and README references to include new docs and verification steps
  • Chores

    • Added a local Markdown link-checking tool and a new verification task
    • Integrated documentation link validation and workflow linting into CI and pre-release checks
    • Removed several archived planning documents

@coderabbitai
Copy link

coderabbitai bot commented Feb 18, 2026

Warning

Rate limit exceeded

@aryeko has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 15 minutes and 0 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📝 Walkthrough

Walkthrough

This PR adds automated Markdown link validation (script + poe task + pyproject entry) and integrates it into CI, creates new reference docs (developer-workflow, workflows-reference, docs-inventory), updates contributor/dev guidance to include the check, and removes several obsolete planning documents.

Changes

Cohort / File(s) Summary
CI & task entry
.github/workflows/ci.yml, pyproject.toml
Adds a docs-links poe task to pyproject and runs poetry run poe docs-links in the CI lint job (inserted after Ruff format).
Link checker script
scripts/check_markdown_links.py
Adds a new script that scans README.md and docs/**.md, extracts local links, resolves relative targets, and reports broken local links (returns non‑zero on failure). Exposes BrokenLink, LINK_PATTERN, IGNORED_PREFIXES, find_broken_links, and main.
Developer & release guidance
CONTRIBUTING.md, RELEASE.md, README.md, CLAUDE.md
Updates quick-check/pre-release/PR guidance to include poe docs-links and workflow-lint; adds references to new docs and developer workflow.
New reference docs
docs/reference/developer-workflow.md, docs/reference/workflows-reference.md, docs/reference/docs-inventory.md
Adds three canonical reference files: developer workflow, workflows inventory/topology, and a docs inventory with update rules and navigation.
Docs architecture & README
docs/design/documentation-architecture.md, docs/README.md
Updates architecture diagram and docs lifecycle; adds verification checklist requiring poe docs-links and new reference nodes.
Plans archive
docs/plans/README.md, docs/plans/* (deleted)
Adds docs/plans/README.md; removes three obsolete plan documents under docs/plans/ (2026-02-13-*.md).

Sequence Diagram(s)

sequenceDiagram
    actor CI as GitHub Actions CI
    participant Workflow as ci.yml
    participant Poe as poe task runner
    participant LinkScript as check_markdown_links.py
    participant Files as README & docs/*.md
    participant Reporter as Link Report

    CI->>Workflow: start lint job
    Workflow->>Poe: run `poetry run poe docs-links`
    Poe->>LinkScript: invoke script
    LinkScript->>Files: scan files for Markdown links
    Files-->>LinkScript: return file contents
    LinkScript->>LinkScript: extract links (regex), ignore external/anchors
    LinkScript->>LinkScript: resolve relative targets → file paths
    LinkScript->>LinkScript: validate existence
    LinkScript->>Reporter: collect broken links
    alt broken links found
        Reporter-->>Workflow: non-zero exit (list broken links)
    else no broken links
        Reporter-->>Workflow: zero exit (OK)
    end
    Workflow-->>CI: report status
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

Poem

🐰 I hopped through docs at break of day,
Found paths and links and chased decay.
New checks now guard each README and guide,
Old plans tucked in a drawer, set aside,
CI keeps the trails clear as I nibble with pride. 🥕📚

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The PR description includes a clear summary of changes, a test plan with verification results, but does not follow the template structure with labeled Verification checkboxes or Breaking changes section. Follow the repository template by reorganizing into Summary/Changes/Verification sections with checkboxes, and explicitly address the Breaking changes section.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore: repo audit and docs refresh' is concise and clearly summarizes the main changes—a comprehensive documentation refresh and repository audit with a link checker.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/repo-audit-doc-refresh

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
CONTRIBUTING.md (1)

69-69: ⚠️ Potential issue | 🟡 Minor

Remove stale reference to deleted plan file

The file docs/plans/2026-02-13-docs-refresh-execution-plan.md referenced at line 69 in CONTRIBUTING.md no longer exists in the repository. Since it's in backticks rather than a Markdown link, the docs-links checker won't catch this. Update line 69 to remove this stale reference.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CONTRIBUTING.md` at line 69, Remove the stale backticked reference
`docs/plans/2026-02-13-docs-refresh-execution-plan.md` from CONTRIBUTING.md (the
item on line 69) by deleting that filename from the list or replacing it with an
accurate/current plan filename or a generic placeholder; ensure the surrounding
punctuation and list formatting remain correct so the markdown renders cleanly.
🧹 Nitpick comments (4)
scripts/check_markdown_links.py (1)

21-24: Consider expanding scan scope to all root-level Markdown files

_candidate_markdown_files only scans README.md + docs/**/*.md. CONTRIBUTING.md, RELEASE.md, and any future root-level .md files are silently excluded, so local links added there won't be caught by CI.

♻️ Proposed refactor — scan all root *.md files
 def _candidate_markdown_files(repo_root: Path) -> list[Path]:
-    files = [repo_root / "README.md"]
-    files.extend((repo_root / "docs").rglob("*.md"))
+    files = list(repo_root.glob("*.md"))
+    files.extend((repo_root / "docs").rglob("*.md"))
     return [file for file in files if file.exists()]

This also updates the module docstring:

-"""Validate local markdown links in README and docs."""
+"""Validate local markdown links in repository root and docs."""
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/check_markdown_links.py` around lines 21 - 24, The function
_candidate_markdown_files currently only includes README.md and docs/**/*.md;
update it to also glob all root-level .md files (e.g., CONTRIBUTING.md,
RELEASE.md, and any future *.md at repo_root) so they are included in CI checks
— modify the logic in _candidate_markdown_files to extend files with a
repo_root.glob("*.md") result (while keeping the existing docs.rglob and README
inclusion) and return only existing files as before; ensure you reference and
update any module docstring to describe the expanded scan scope.
CONTRIBUTING.md (1)

27-27: "Markdown" should be capitalised as a proper noun

markdownMarkdown in the poe docs-links description row, consistent with the rest of the table and the standard spelling.

✏️ Proposed fix
-| `poe docs-links` | Validate local markdown links in `README.md` and `docs/` |
+| `poe docs-links` | Validate local Markdown links in `README.md` and `docs/` |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CONTRIBUTING.md` at line 27, Update the table row for the `poe docs-links`
command so the word "markdown" is capitalized as "Markdown": locate the row
containing "`poe docs-links` | Validate local markdown links in `README.md` and
`docs/`" and change "markdown" → "Markdown" to match the rest of the doc's
capitalization and standard spelling.
docs/reference/developer-workflow.md (1)

22-22: Nit: capitalise "Markdown" (proper noun).

✏️ Proposed fix
-| `poetry run poe docs-links` | Prevent broken local markdown links in `README.md` and `docs/` |
+| `poetry run poe docs-links` | Prevent broken local Markdown links in `README.md` and `docs/` |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/reference/developer-workflow.md` at line 22, The table entry text
currently uses "markdown" in lowercase; update the string in the table row that
contains "`poetry run poe docs-links` | Prevent broken local markdown links in
`README.md` and `docs/`" to capitalize "Markdown" so it reads "Prevent broken
local Markdown links in `README.md` and `docs/`" (modify the table cell where
that phrase appears, e.g., the row containing `poetry run poe docs-links`).
docs/design/documentation-architecture.md (1)

117-119: Nit: line 119 is redundant after the new line 117.

poe docs-links validates exactly what "Local markdown links resolve." already states — keeping both adds noise to the checklist.

✏️ Proposed fix
 - `poe docs-links` passes.
 - `poe test-e2e` passes when CLI behavior changes.
-- Local markdown links resolve.
 - New docs files are linked from `docs/README.md`.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/design/documentation-architecture.md` around lines 117 - 119, The
checklist contains a redundant item: remove the duplicate bullet "`poe
docs-links` passes." (or the line "Local markdown links resolve.") so only one
of these equivalent entries remains; edit the checklist in
documentation-architecture.md to delete the redundant line and leave the
clearer/most specific entry (referencing the two checklist lines containing "poe
docs-links" and "Local markdown links resolve.").
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/design/documentation-architecture.md`:
- Around line 36-42: The architecture diagram's Reference section omits the new
docs-inventory entry: add a new node R8[docs-inventory.md] and connect it from
Reference (matching the existing pattern Reference --> R1..R7) so the diagram
includes docs/reference/docs-inventory.md; update the same diagram block that
defines Reference --> R1..R7 to include Reference --> R8[docs-inventory.md] so
the diagram remains the authoritative map of docs.

In `@docs/reference/workflows-reference.md`:
- Line 31: The docs entry for the "docs-links" workflow (the `docs-links` poe
task / command `poetry run poe docs-links`) is missing its required behavioral
contract; update the docs/reference/workflows-reference.md entry for
`docs-links` to state the user-visible guarantees: exact exit codes (which
code(s) indicate success vs link failures), discovery semantics (which
files/globs under docs/**/*.md are scanned and how symlinks/ignored files are
treated), and dry-run semantics (whether a dry-run option exists and what it
reports). Refer to the `docs-links` task name when editing so the contract is
co-located with the command listing.

In `@scripts/check_markdown_links.py`:
- Line 11: The LINK_PATTERN currently uses ([^)]+) which captures link titles
too (e.g., ./file.md "title"); update LINK_PATTERN to capture only the URL
portion by using a pattern like ([^\s)]+) so it stops at the first whitespace or
closing paren and does not include title attributes; change the compiled regex
constant LINK_PATTERN accordingly and verify the _resolve_target call continues
to receive the correct URL string (no title) so broken-link checks stop
producing false positives.

---

Outside diff comments:
In `@CONTRIBUTING.md`:
- Line 69: Remove the stale backticked reference
`docs/plans/2026-02-13-docs-refresh-execution-plan.md` from CONTRIBUTING.md (the
item on line 69) by deleting that filename from the list or replacing it with an
accurate/current plan filename or a generic placeholder; ensure the surrounding
punctuation and list formatting remain correct so the markdown renders cleanly.

---

Nitpick comments:
In `@CONTRIBUTING.md`:
- Line 27: Update the table row for the `poe docs-links` command so the word
"markdown" is capitalized as "Markdown": locate the row containing "`poe
docs-links` | Validate local markdown links in `README.md` and `docs/`" and
change "markdown" → "Markdown" to match the rest of the doc's capitalization and
standard spelling.

In `@docs/design/documentation-architecture.md`:
- Around line 117-119: The checklist contains a redundant item: remove the
duplicate bullet "`poe docs-links` passes." (or the line "Local markdown links
resolve.") so only one of these equivalent entries remains; edit the checklist
in documentation-architecture.md to delete the redundant line and leave the
clearer/most specific entry (referencing the two checklist lines containing "poe
docs-links" and "Local markdown links resolve.").

In `@docs/reference/developer-workflow.md`:
- Line 22: The table entry text currently uses "markdown" in lowercase; update
the string in the table row that contains "`poetry run poe docs-links` | Prevent
broken local markdown links in `README.md` and `docs/`" to capitalize "Markdown"
so it reads "Prevent broken local Markdown links in `README.md` and `docs/`"
(modify the table cell where that phrase appears, e.g., the row containing
`poetry run poe docs-links`).

In `@scripts/check_markdown_links.py`:
- Around line 21-24: The function _candidate_markdown_files currently only
includes README.md and docs/**/*.md; update it to also glob all root-level .md
files (e.g., CONTRIBUTING.md, RELEASE.md, and any future *.md at repo_root) so
they are included in CI checks — modify the logic in _candidate_markdown_files
to extend files with a repo_root.glob("*.md") result (while keeping the existing
docs.rglob and README inclusion) and return only existing files as before;
ensure you reference and update any module docstring to describe the expanded
scan scope.

@codecov
Copy link

codecov bot commented Feb 18, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
docs/design/documentation-architecture.md (1)

48-57: Code-to-Docs Ownership Map omits workflows-reference.md for the CodeWorkflows node

Line 55 maps CodeWorkflows[.github/workflows/] only to ReleaseGuide[RELEASE.md], but line 66 (new update rule) establishes that docs/reference/workflows-reference.md must also be updated when CI/release workflow behavior changes. The ownership map is the canonical code→doc traceability diagram and should be consistent with the update rules.

✏️ Proposed addition
     CodeWorkflows[.github/workflows/] --> ReleaseGuide[RELEASE.md]
+    CodeWorkflows --> WorkflowsRef[docs/reference/workflows-reference.md]
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/design/documentation-architecture.md` around lines 48 - 57, The
Code-to-Docs ownership map is missing the workflows-reference mapping for the
CodeWorkflows node; update the mermaid diagram by adding a link from
CodeWorkflows[.github/workflows/] to
WorkflowsRef[docs/reference/workflows-reference.md] (in the same style as the
existing CodeWorkflows --> ReleaseGuide relation) so the diagram reflects that
changes to CI/release workflows must also update workflows-reference.md.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@CLAUDE.md`:
- Around line 39-41: The fenced code block containing "Contracts → Core → SDK →
CLI" triggers markdownlint MD040 because it lacks a language specifier; update
that fenced block in CLAUDE.md (the triple-backtick block that currently wraps
"Contracts → Core → SDK → CLI") to include a language tag such as ```text so the
block becomes ```text ... ``` to satisfy the linter.

---

Nitpick comments:
In `@docs/design/documentation-architecture.md`:
- Around line 48-57: The Code-to-Docs ownership map is missing the
workflows-reference mapping for the CodeWorkflows node; update the mermaid
diagram by adding a link from CodeWorkflows[.github/workflows/] to
WorkflowsRef[docs/reference/workflows-reference.md] (in the same style as the
existing CodeWorkflows --> ReleaseGuide relation) so the diagram reflects that
changes to CI/release workflows must also update workflows-reference.md.

Comment on lines +39 to +41
```
Contracts → Core → SDK → CLI
```
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add a language specifier to the architecture fenced code block (MD040)

The bare fenced block is flagged by markdownlint-cli2 (MD040) and will fail any future markdownlint CI step.

✏️ Proposed fix
-```
+```text
 Contracts → Core → SDK → CLI
</details>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.21.0)</summary>

[warning] 39-39: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @CLAUDE.md around lines 39 - 41, The fenced code block containing "Contracts
→ Core → SDK → CLI" triggers markdownlint MD040 because it lacks a language
specifier; update that fenced block in CLAUDE.md (the triple-backtick block that
currently wraps "Contracts → Core → SDK → CLI") to include a language tag such
as text so the block becomes text ... ``` to satisfy the linter.


</details>

<!-- fingerprinting:phantom:triton:churro -->

<!-- This is an auto-generated comment by CodeRabbit -->

aryeko and others added 2 commits February 18, 2026 21:38
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Expand docs-links scan to all root-level *.md files (not just README.md)
- Fix LINK_PATTERN to stop at whitespace, avoiding false positives from
  titled links like [text](path "title")
- Capitalize "Markdown" (proper noun) in CONTRIBUTING.md and developer-workflow.md
- Replace stale plan file reference in CONTRIBUTING.md with docs-inventory.md
- Add docs-inventory.md node to documentation-architecture IA diagram
- Remove redundant "Local markdown links resolve." checklist item
- Add behavioral contract for docs-links in workflows-reference.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@aryeko aryeko force-pushed the chore/repo-audit-doc-refresh branch from fd75221 to 1631729 Compare February 18, 2026 19:38
@aryeko aryeko merged commit d45f184 into main Feb 18, 2026
13 checks passed
@aryeko aryeko deleted the chore/repo-audit-doc-refresh branch February 18, 2026 19:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant