docs: add agents guidance coverage#157
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a comprehensive set of agents.md files across the workspace to provide localized guidance for agentic coding tools. It also updates existing CLAUDE.md files to use relative paths and adds a maintenance inventory in docs/reference/crate-coverage.md. Feedback focuses on removing hardcoded local development paths from the new documentation files to ensure portability and addressing a documented 'invariant' in the git operations module that appears to codify an existing bug in error prefixing.
|
|
||
| - Crate: shipper-cargo-failure | ||
| - Path: crates/shipper-cargo-failure | ||
| - Workspace root: h:\Code\Rust\shipper |
There was a problem hiding this comment.
This line contains a hardcoded local path (h:\Code\Rust\shipper) from your development environment. This should be generalized to a relative path or removed to ensure the documentation is portable and doesn't leak local system details. This same issue occurs in multiple other agents.md files added in this PR.
| - Workspace root: h:\Code\Rust\shipper | |
| - Workspace root: ../.. |
|
|
||
| - Crate: shipper-cli | ||
| - Path: crates/shipper-cli | ||
| - Workspace root: h:\Code\Rust\shipper |
|
|
||
| - Crate: shipper-config | ||
| - Path: crates/shipper-config | ||
| - Workspace root: h:\Code\Rust\shipper |
| - **Error-text compatibility.** The outer `is_git_clean` wrapper prefixes the | ||
| underlying error with an extra `git status failed:` string; the CLI snapshot | ||
| tests assert against the doubled prefix (`git status failed: git status | ||
| failed: …`). Do not change this wording without updating | ||
| `crates/shipper-cli/tests/snapshots/e2e_expanded__preflight_*.snap`. |
There was a problem hiding this comment.
The documentation of a "doubled prefix" (git status failed: git status failed: …) as an invariant suggests a bug in the error handling logic. While documenting current behavior is helpful, calling it an "invariant" and warning against changing it codifies a bug. It would be better to fix the underlying logic and update the snapshots rather than treating this as a permanent design choice.
|
|
||
| - Crate: shipper-duration | ||
| - Path: crates/shipper-duration | ||
| - Workspace root: h:\Code\Rust\shipper |
|
|
||
| - Crate: shipper-registry | ||
| - Path: crates/shipper-registry | ||
| - Workspace root: h:\Code\Rust\shipper |
|
|
||
| - Crate: shipper-retry | ||
| - Path: crates/shipper-retry | ||
| - Workspace root: h:\Code\Rust\shipper |
|
|
||
| - Crate: shipper-sparse-index | ||
| - Path: crates/shipper-sparse-index | ||
| - Workspace root: h:\Code\Rust\shipper |
|
|
||
| - Crate: shipper-types | ||
| - Path: crates/shipper-types | ||
| - Workspace root: h:\Code\Rust\shipper |
|
|
||
| - Crate: shipper-webhook | ||
| - Path: crates/shipper-webhook | ||
| - Workspace root: h:\Code\Rust\shipper |
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 57 minutes and 36 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the 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. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (42)
WalkthroughThis pull request adds comprehensive documentation across the shipper workspace. It introduces a root-level Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cd7cc4d740
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -0,0 +1,108 @@ | |||
| # AGENTS.md | |||
There was a problem hiding this comment.
Rename guidance files to AGENTS.md
This commit introduces guidance files as agents.md (lowercase) across the repo, but AGENTS-style discovery is typically case-sensitive on Linux and expects the exact filename AGENTS.md. In environments that follow that convention, none of these new files will be auto-loaded, so the new guidance coverage is effectively ignored. This directly undermines the purpose of the change and is reproducible anywhere filename matching is strict.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Actionable comments posted: 19
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@crates/shipper-cargo-failure/agents.md`:
- Line 11: Remove the hardcoded "Workspace root: h:\Code\Rust\shipper" line from
the agents.md files (e.g., the line "Workspace root: h:\Code\Rust\shipper" in
crates/shipper-cargo-failure/agents.md) so those documents no longer contain
absolute Windows paths; simply delete that field from each affected agents.md
(the same removal applies to the other listed crates) since the workspace root
is documented via relative paths elsewhere.
In `@crates/shipper-cli/agents.md`:
- Line 11: Replace the machine-specific absolute Windows path
"h:\Code\Rust\shipper" in the file (and the same string in
crates/shipper-config/agents.md) with a portable alternative: either a relative
path (e.g., "./") or remove the workspace root line entirely; search for the
exact literal "h:\Code\Rust\shipper" to locate the entry in agents.md and update
or delete that line so the document is not tied to a local filesystem.
In `@crates/shipper-config/agents.md`:
- Line 11: Remove the machine-specific absolute Windows path from agents.md by
deleting or replacing the "Workspace root: h:\Code\Rust\shipper" line; either
change it to a relative path (e.g., "./" or "../" as appropriate) or omit the
workspace root line entirely so the document remains portable and free of local
links.
In `@crates/shipper-core/src/ops/CLAUDE.md`:
- Around line 37-39: Fix the inconsistent bullet indentation inside the "What
does NOT live here" section by making the "- Domain types — those live in
`shipper-types`." bullet match the other sibling bullets' indentation and
formatting; locate the "What does NOT live here" heading in CLAUDE.md and remove
or add the leading space so all three bullets (`shipper-registry`, `Domain
types`, `Orchestration`) use the same left alignment and dash spacing to satisfy
markdownlint MD005.
In `@crates/shipper-duration/agents.md`:
- Line 11: Replace the machine-local hard-coded path "Workspace root:
h:\Code\Rust\shipper" in crates/shipper-duration/agents.md with a portable
reference (e.g., "Workspace root: <repository-root>" or a relative path like
"../" or "${projectRoot}") so the document is usable by other contributors;
update the single line containing that exact string and ensure any follow-up
instructions in the file refer to this portable placeholder instead of an
absolute local drive path.
In `@crates/shipper-duration/CLAUDE.md`:
- Line 29: The file ends without a trailing newline; open the CLAUDE.md file and
append a single newline character at the end of the file so the final line "For
full workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md)." is terminated
with one newline (ensure no extra blank lines are added).
In `@crates/shipper-encrypt/agents.md`:
- Line 11: Replace the hardcoded Windows path string "Workspace root:
h:\Code\Rust\shipper" with a portable relative reference; update the agents.md
entry to use a repository-root or relative path token (for example "./shipper"
or a workspace variable like "${workspaceRoot}/shipper") so the workspace root
is not tied to a specific OS/user. Ensure the new value replaces the exact text
"Workspace root: h:\Code\Rust\shipper" so the doc remains correct and portable.
In `@crates/shipper-output-sanitizer/agents.md`:
- Line 11: The hardcoded Windows path "Workspace root: h:\Code\Rust\shipper" is
not portable; replace that literal with a relative or environment-variable based
reference (e.g., "Workspace root: ./shipper" or use a placeholder like
"${workspaceFolder}/shipper") in agents.md so the workspace root is resolved
relative to the repository rather than a machine-specific absolute path.
In `@crates/shipper-output-sanitizer/CLAUDE.md`:
- Line 29: Add a single trailing newline at the end of the CLAUDE.md file so the
last line "For full workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md)."
is followed by one EOF newline to satisfy markdownlint rule MD047; simply edit
the file and insert one blank line after that final line.
In `@crates/shipper-registry/agents.md`:
- Line 11: Replace the hardcoded Windows path string "h:\Code\Rust\shipper"
under the "Workspace root:" entry in agents.md with a portable relative
reference (e.g., a relative path or remove the line entirely), since the "Path"
field already documents the repository layout; locate the "Workspace root:"
label and update or delete the hardcoded value so the file no longer contains
system-specific absolute paths.
In `@crates/shipper-registry/CLAUDE.md`:
- Line 29: The file CLAUDE.md is missing a trailing newline which triggers
markdownlint MD047; open CLAUDE.md and add exactly one newline character at the
end-of-file (immediately after the current Line 29) so the file ends with a
single blank line.
In `@crates/shipper-retry/agents.md`:
- Line 11: Replace the developer-specific absolute path "Workspace root:
h:\Code\Rust\shipper" in crates/shipper-retry/agents.md with a portable,
repo-relative description such as "Workspace root: <repository root>" or
"Workspace root: /path/to/repo" (or provide instructions to run from the
repository root), so the documentation no longer contains a local Windows path;
update the line that currently contains that exact string.
In `@crates/shipper-retry/CLAUDE.md`:
- Line 29: The file ends without the required single trailing newline; open the
CLAUDE.md in crates/shipper-retry and ensure the last line "For full workspace
guidance, see [../../CLAUDE.md](../../CLAUDE.md)." is followed by exactly one
newline character (remove any extra blank lines or missing newline at EOF so the
file ends with a single trailing newline to satisfy markdownlint MD047).
In `@crates/shipper-sparse-index/agents.md`:
- Line 11: The document currently embeds a machine-specific path string
"Workspace root: h:\Code\Rust\shipper"; replace that hardcoded path with a
neutral, portable placeholder (for example "Workspace root: <repository-root>"
or simply "Workspace root: repository root") so the guidance is
environment-agnostic and does not expose local filesystem details.
In `@crates/shipper-types/agents.md`:
- Line 11: The file contains a hardcoded Windows absolute path string "Workspace
root: h:\Code\Rust\shipper" which is not portable; replace that literal with a
relative or environment-agnostic reference (e.g., use a relative path like
"../.." or a placeholder such as "${workspaceRoot}" or simply "Workspace root:
<repo-root>") so the document no longer depends on a user-specific absolute
Windows path.
In `@crates/shipper-types/CLAUDE.md`:
- Line 29: The file CLAUDE.md is missing a single trailing newline at EOF; open
the file containing the line "For full workspace guidance, see
[../../CLAUDE.md](../../CLAUDE.md)." and append exactly one newline character
after that final line so the file ends with a single trailing newline (satisfies
MD047).
In `@crates/shipper-types/src/storage/agents.md`:
- Around line 11-16: Add blank lines before and after the markdown section
headings "## Public API" and "## Why this lives in shipper-types" in
crates/shipper-types/src/storage/agents.md so the headings are separated from
surrounding text; locate the headings by their exact text and ensure there is an
empty line above the "## Public API" line and one below it (and the same for "##
Why this lives in shipper-types") to satisfy markdown compliance.
In `@crates/shipper-webhook/agents.md`:
- Line 11: Replace the hardcoded Windows path found in the string "Workspace
root: h:\Code\Rust\shipper" with a portable relative or environment-based
reference (e.g., use a relative path like "./" or a variable such as
${workspaceRoot} or an explanatory placeholder) so the documentation/agents.md
is platform-agnostic and does not assume a specific user filesystem.
In `@crates/shipper-webhook/CLAUDE.md`:
- Line 29: The file CLAUDE.md is missing a trailing newline at EOF (MD047); open
CLAUDE.md and ensure there is exactly one newline character after the last line
("For full workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md).") so the
file ends with a single newline and no extra blank lines.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: ced2087c-06d2-47c6-80c8-0c6d2a0ff6ef
📒 Files selected for processing (64)
agents.mdcrates/shipper-cargo-failure/CLAUDE.mdcrates/shipper-cargo-failure/agents.mdcrates/shipper-cli/CLAUDE.mdcrates/shipper-cli/agents.mdcrates/shipper-cli/src/output/agents.mdcrates/shipper-cli/src/output/progress/agents.mdcrates/shipper-config/CLAUDE.mdcrates/shipper-config/agents.mdcrates/shipper-config/src/runtime/agents.mdcrates/shipper-core/CLAUDE.mdcrates/shipper-core/agents.mdcrates/shipper-core/src/engine/agents.mdcrates/shipper-core/src/engine/parallel/agents.mdcrates/shipper-core/src/ops/CLAUDE.mdcrates/shipper-core/src/ops/agents.mdcrates/shipper-core/src/ops/auth/CLAUDE.mdcrates/shipper-core/src/ops/auth/agents.mdcrates/shipper-core/src/ops/cargo/agents.mdcrates/shipper-core/src/ops/git/agents.mdcrates/shipper-core/src/ops/lock/agents.mdcrates/shipper-core/src/ops/process/CLAUDE.mdcrates/shipper-core/src/ops/process/agents.mdcrates/shipper-core/src/ops/storage/CLAUDE.mdcrates/shipper-core/src/ops/storage/agents.mdcrates/shipper-core/src/plan/agents.mdcrates/shipper-core/src/plan/chunking/CLAUDE.mdcrates/shipper-core/src/plan/chunking/agents.mdcrates/shipper-core/src/plan/levels/CLAUDE.mdcrates/shipper-core/src/plan/levels/agents.mdcrates/shipper-core/src/runtime/CLAUDE.mdcrates/shipper-core/src/runtime/agents.mdcrates/shipper-core/src/runtime/environment/agents.mdcrates/shipper-core/src/runtime/execution/CLAUDE.mdcrates/shipper-core/src/runtime/execution/agents.mdcrates/shipper-core/src/runtime/policy/CLAUDE.mdcrates/shipper-core/src/runtime/policy/agents.mdcrates/shipper-core/src/state/CLAUDE.mdcrates/shipper-core/src/state/agents.mdcrates/shipper-core/src/state/events/agents.mdcrates/shipper-core/src/state/execution_state/agents.mdcrates/shipper-core/src/state/store/agents.mdcrates/shipper-duration/CLAUDE.mdcrates/shipper-duration/agents.mdcrates/shipper-encrypt/CLAUDE.mdcrates/shipper-encrypt/agents.mdcrates/shipper-output-sanitizer/CLAUDE.mdcrates/shipper-output-sanitizer/agents.mdcrates/shipper-registry/CLAUDE.mdcrates/shipper-registry/agents.mdcrates/shipper-retry/CLAUDE.mdcrates/shipper-retry/agents.mdcrates/shipper-sparse-index/CLAUDE.mdcrates/shipper-sparse-index/agents.mdcrates/shipper-types/CLAUDE.mdcrates/shipper-types/agents.mdcrates/shipper-types/src/storage/CLAUDE.mdcrates/shipper-types/src/storage/agents.mdcrates/shipper-webhook/CLAUDE.mdcrates/shipper-webhook/agents.mdcrates/shipper/CLAUDE.mdcrates/shipper/agents.mddocs/README.mddocs/reference/crate-coverage.md
|
|
||
| - Crate: shipper-cargo-failure | ||
| - Path: crates/shipper-cargo-failure | ||
| - Workspace root: h:\Code\Rust\shipper |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Search for absolute Windows paths in agents.md files
# Search for lines containing Windows drive letters followed by colon in agents.md files
rg -n '[A-Za-z]:\\' --glob '**/agents.md'Repository: EffortlessMetrics/shipper
Length of output: 906
🏁 Script executed:
#!/bin/bash
# Check CLAUDE.md around line 29 to verify the claim about path removal
sed -n '20,40p' crates/shipper-config/CLAUDE.mdRepository: EffortlessMetrics/shipper
Length of output: 511
🏁 Script executed:
#!/bin/bash
# Also check the first few lines of agents.md files to understand structure
head -15 crates/shipper-cargo-failure/agents.mdRepository: EffortlessMetrics/shipper
Length of output: 421
🏁 Script executed:
#!/bin/bash
# Check root CLAUDE.md to see full context
head -40 CLAUDE.mdRepository: EffortlessMetrics/shipper
Length of output: 1906
Remove hardcoded Windows paths from all 11 agents.md files.
The agents.md file in shipper-cargo-failure (and 10 other crates) contains a hardcoded Windows path h:\Code\Rust\shipper at line 11. This contradicts the PR's cleanup of absolute local links, evident in root CLAUDE.md and shipper-config/CLAUDE.md which use relative references.
Remove the "Workspace root" field from all 11 affected agents.md files:
- crates/shipper-cargo-failure/agents.md
- crates/shipper-config/agents.md
- crates/shipper-cli/agents.md
- crates/shipper-duration/agents.md
- crates/shipper-encrypt/agents.md
- crates/shipper-registry/agents.md
- crates/shipper-sparse-index/agents.md
- crates/shipper-retry/agents.md
- crates/shipper-webhook/agents.md
- crates/shipper-output-sanitizer/agents.md
The workspace root can be inferred from the relative path structure and is already documented in the root CLAUDE.md.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@crates/shipper-cargo-failure/agents.md` at line 11, Remove the hardcoded
"Workspace root: h:\Code\Rust\shipper" line from the agents.md files (e.g., the
line "Workspace root: h:\Code\Rust\shipper" in
crates/shipper-cargo-failure/agents.md) so those documents no longer contain
absolute Windows paths; simply delete that field from each affected agents.md
(the same removal applies to the other listed crates) since the workspace root
is documented via relative paths elsewhere.
| - `shipper-registry`, `shipper-webhook`, `shipper-sparse-index` — these are public crates that `shipper-core` depends on directly. No internal wrapper inside `ops/`. | ||
| - Domain types — those live in `shipper-types`. | ||
| - Orchestration — that's `engine/`. |
There was a problem hiding this comment.
Fix list indentation consistency in the “What does NOT live here” section.
Line 37 is indented differently from sibling bullets, which triggers markdownlint (MD005).
Suggested fix
- - `shipper-registry`, `shipper-webhook`, `shipper-sparse-index` — these are public crates that `shipper-core` depends on directly. No internal wrapper inside `ops/`.
+- `shipper-registry`, `shipper-webhook`, `shipper-sparse-index` — these are public crates that `shipper-core` depends on directly. No internal wrapper inside `ops/`.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - `shipper-registry`, `shipper-webhook`, `shipper-sparse-index` — these are public crates that `shipper-core` depends on directly. No internal wrapper inside `ops/`. | |
| - Domain types — those live in `shipper-types`. | |
| - Orchestration — that's `engine/`. | |
| - `shipper-registry`, `shipper-webhook`, `shipper-sparse-index` — these are public crates that `shipper-core` depends on directly. No internal wrapper inside `ops/`. | |
| - Domain types — those live in `shipper-types`. | |
| - Orchestration — that's `engine/`. |
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)
[warning] 38-38: Inconsistent indentation for list items at the same level
Expected: 1; Actual: 0
(MD005, list-indent)
[warning] 39-39: Inconsistent indentation for list items at the same level
Expected: 1; Actual: 0
(MD005, list-indent)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@crates/shipper-core/src/ops/CLAUDE.md` around lines 37 - 39, Fix the
inconsistent bullet indentation inside the "What does NOT live here" section by
making the "- Domain types — those live in `shipper-types`." bullet match the
other sibling bullets' indentation and formatting; locate the "What does NOT
live here" heading in CLAUDE.md and remove or add the leading space so all three
bullets (`shipper-registry`, `Domain types`, `Orchestration`) use the same left
alignment and dash spacing to satisfy markdownlint MD005.
| - Prefer using existing fixtures and helpers rather than introducing inline test data. | ||
|
|
||
| For full workspace guidance, see [../../CLAUDE.md](H:\Code\Rust\shipper\CLAUDE.md). No newline at end of file | ||
| For full workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md). No newline at end of file |
There was a problem hiding this comment.
Add a single trailing newline at EOF (MD047).
markdownlint-cli2 reports the file does not end with one newline; please append it after Line 29.
Proposed fix
For full workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md).
+📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| For full workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md). | |
| For full workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md). | |
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)
[warning] 29-29: Files should end with a single newline character
(MD047, single-trailing-newline)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@crates/shipper-types/CLAUDE.md` at line 29, The file CLAUDE.md is missing a
single trailing newline at EOF; open the file containing the line "For full
workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md)." and append exactly
one newline character after that final line so the file ends with a single
trailing newline (satisfies MD047).
| ## Public API | ||
| - `StorageType` — Enum: `File | S3 | Gcs | Azure` | ||
| - `CloudStorageConfig` — Configuration for any storage backend (bucket, region, base_path, credentials, etc.) | ||
| - `ParseStorageTypeError` — Error returned by `FromStr for StorageType` | ||
| - `ValidateStorageConfigError` — Error returned by `CloudStorageConfig::validate` | ||
|
|
There was a problem hiding this comment.
🧹 Nitpick | 🔵 Trivial
Add blank lines around headings for markdown compliance.
The static analysis correctly identifies missing blank lines around the ## Public API and ## Why this lives in shipper-types headings.
📝 Suggested fix
**Was:** Part of the standalone `shipper-storage` crate (split during the decrating effort).
## Public API
+
- `StorageType` — Enum: `File | S3 | Gcs | Azure`
- `CloudStorageConfig` — Configuration for any storage backend (bucket, region, base_path, credentials, etc.)
- `ParseStorageTypeError` — Error returned by `FromStr for StorageType`
- `ValidateStorageConfigError` — Error returned by `CloudStorageConfig::validate`
## Why this lives in shipper-types
+
These are pure data — no I/O, no policy decisions. Embedders need to express "use this storage backend" through the stable contract crate. The runtime backend behavior lives in `shipper-core`'s internal storage layer and is unfinished (only filesystem is implemented today).Also applies to: 17-20
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)
[warning] 11-11: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@crates/shipper-types/src/storage/agents.md` around lines 11 - 16, Add blank
lines before and after the markdown section headings "## Public API" and "## Why
this lives in shipper-types" in crates/shipper-types/src/storage/agents.md so
the headings are separated from surrounding text; locate the headings by their
exact text and ensure there is an empty line above the "## Public API" line and
one below it (and the same for "## Why this lives in shipper-types") to satisfy
markdown compliance.
| - Prefer using existing fixtures and helpers rather than introducing inline test data. | ||
|
|
||
| For full workspace guidance, see [../../CLAUDE.md](H:\Code\Rust\shipper\CLAUDE.md). No newline at end of file | ||
| For full workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md). No newline at end of file |
There was a problem hiding this comment.
Add the missing trailing newline at EOF.
markdownlint flagged MD047 for this file; please ensure there is exactly one newline after Line 29.
Proposed fix
For full workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md).
+📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| For full workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md). | |
| For full workspace guidance, see [../../CLAUDE.md](../../CLAUDE.md). | |
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)
[warning] 29-29: Files should end with a single newline character
(MD047, single-trailing-newline)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@crates/shipper-webhook/CLAUDE.md` at line 29, The file CLAUDE.md is missing a
trailing newline at EOF (MD047); open CLAUDE.md and ensure there is exactly one
newline character after the last line ("For full workspace guidance, see
[../../CLAUDE.md](../../CLAUDE.md).") so the file ends with a single newline and
no extra blank lines.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Summary
agents.mdcompanions alongside existingCLAUDE.mdguidanceCLAUDE.mdfiles so the new guidance surface is internally consistentVerification
git diff --checkthis PR/future PRplaceholdersCLAUDE.mdtoagents.mdparity check (38matching paths)