Skip to content

feat: Add comprehensive GitHub Actions workflows for documentation#93

Merged
koriym merged 12 commits intomasterfrom
github-actions-workflows
Jul 9, 2025
Merged

feat: Add comprehensive GitHub Actions workflows for documentation#93
koriym merged 12 commits intomasterfrom
github-actions-workflows

Conversation

@koriym
Copy link
Member

@koriym koriym commented Jul 9, 2025

Summary

This PR adds comprehensive GitHub Actions workflows to automate documentation building, validation, and maintenance for the Ray.Di documentation website.

🚀 New Workflows Added

1. Documentation Build and Deploy (documentation.yml)

  • Trigger: Push to master branch
  • Builds Jekyll site with proper GitHub Pages configuration
  • Generates llms-full.txt and single-page documentation
  • Copies markdown files for llms.txt standard compliance
  • Deploys to GitHub Pages automatically

2. Documentation Validation (validate-documentation.yml)

  • Trigger: Pull requests affecting documentation files
  • Validates llms-full.txt generation functionality
  • Checks single-page merge functionality
  • Internal link checking: Custom validation for all .md file links
  • External link checking: Uses lychee with comprehensive configuration
  • File size validation to ensure generated files are substantial
  • Structure validation for required documentation files

3. Scheduled Documentation Updates (update-documentation.yml)

  • Trigger: Daily at 2 AM UTC + manual dispatch
  • Detects changes in generated files (llms-full.txt, single-page docs)
  • Automatically commits updates when changes are detected
  • Comprehensive change detection with file comparison
  • Configurable force update option

4. Comprehensive Link Checker (link-checker.yml)

  • Trigger: Weekly on Sundays + manual dispatch
  • Separate internal and external link validation
  • Configurable external link checking (can be disabled)
  • Automatic GitHub issue creation for broken links
  • Detailed reporting with artifacts uploaded
  • Smart exclusions for problematic domains (social media, bot-protected sites)

🔧 Key Features

  • Robust Link Checking: Custom internal link validation + lychee for external links
  • Error Handling: Graceful degradation and comprehensive error reporting
  • Automation: Automatic issue creation and documentation updates
  • Multi-language Support: Handles both English and Japanese documentation
  • llms.txt Compliance: Maintains AI-accessible documentation standards
  • Artifact Collection: Stores results for troubleshooting and analysis

📚 Documentation

Added comprehensive bin/README.md documenting:

  • All existing scripts and their usage
  • GitHub Actions integration examples
  • Dependencies and setup instructions
  • llms.txt standard compliance details
  • Contributing guidelines

Test plan

  • Verify workflows are valid YAML
  • Test documentation.yml on master merge
  • Test validate-documentation.yml on PR creation
  • Verify link checker functionality
  • Test manual workflow dispatch options
  • Confirm artifact uploads work correctly

🤖 Generated with Claude Code

Summary by Sourcery

Add comprehensive GitHub Actions workflows to automate building, validating, updating, and link-checking Ray.Di documentation, and include a new bin/README.md that documents all utility scripts and usage.

Enhancements:

  • Implement robust internal and external link checking with automated issue creation for broken links.
  • Enable daily and weekly scheduled regeneration and automatic commits of llms-full.txt and single-page documentation.
  • Ensure AI-accessible llms.txt compliance and multi-language support across generated docs.

CI:

  • Add documentation build & deploy workflow to build the Jekyll site, generate AI-friendly outputs, and publish to GitHub Pages.
  • Add validation workflow on pull requests to verify generation of llms-full.txt, single-page docs, internal and external links, and overall structure.
  • Add scheduled update workflow to detect and commit changes in generated documentation daily.
  • Add weekly link-checker workflow to scan for broken links, upload reports, and open issues automatically if failures occur.

Documentation:

  • Add bin/README.md detailing utility scripts for building, serving, and managing documentation, including dependencies, usage examples, and GitHub Actions integration.

Summary by CodeRabbit

  • Documentation
    • Added a comprehensive README detailing utility scripts, workflows, and usage for documentation management and compliance.
    • Improved clarity and grammar in English documentation.
    • Enhanced Japanese documentation with translations, formatting fixes, and code comment corrections for better readability and consistency.
  • Chores
    • Introduced automated workflows for building, validating, updating, and deploying documentation to GitHub Pages.
    • Implemented scheduled and manual link checking with automated reporting and issue creation for broken links.
    • Added validation to ensure documentation integrity, link health, and output file sanity on pull requests and updates.
    • Added automated code review workflows triggered on pull requests and issue comments using AI-powered tools.

- Add documentation.yml for build and deploy on master merge
- Add validate-documentation.yml for PR validation with link checking
- Add update-documentation.yml for daily automated updates
- Add link-checker.yml for weekly comprehensive link checking
- Add bin/README.md documenting all scripts and GitHub Actions integration

Features:
- Internal and external link validation with lychee
- Automatic issue creation for broken links
- Change detection for generated files
- Comprehensive error handling and reporting
- Support for both English and Japanese documentation
- llms.txt standard compliance validation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Jul 9, 2025

Reviewer's Guide

This PR implements end-to-end automation for the Ray.Di documentation site by adding GitHub Actions workflows to build and deploy the Jekyll site, validate documentation on PRs, schedule daily updates of generated files, perform weekly link checks with automated issue creation, and includes a comprehensive bin/README.md to document all helper scripts and integration details.

Sequence diagram for scheduled documentation update and auto-commit

sequenceDiagram
    participant Scheduler as GitHub Scheduler
    participant Workflow as Update Documentation Workflow
    participant Scripts as Generation Scripts
    participant Repo as Repository

    Scheduler->>Workflow: Trigger update-documentation.yml (daily)
    Workflow->>Scripts: Regenerate llms-full.txt
    Workflow->>Scripts: Regenerate single-page docs
    Workflow->>Workflow: Compare with previous files
    alt Changes detected
        Workflow->>Repo: Commit & push updated files
    else No changes
        Workflow->>Repo: No action
    end
    Workflow-->>Scheduler: Write summary
Loading

Flow diagram for documentation build and deploy workflow

flowchart TD
    A[Push to master or manual dispatch] --> B[Checkout code]
    B --> C[Setup Ruby & PHP]
    C --> D[Configure GitHub Pages]
    D --> E[Build Jekyll site]
    E --> F[Copy markdown for llms.txt]
    F --> G[Generate llms-full.txt]
    G --> H[Generate single-page docs]
    H --> I[Copy generated files to _site]
    I --> J[Upload artifact]
    J --> K[Deploy to GitHub Pages]
Loading

File-Level Changes

Change Details Files
Add Documentation Build & Deploy workflow
  • Trigger on pushes to master branch and via manual dispatch
  • Set up Ruby and PHP environments and configure GitHub Pages
  • Build Jekyll site, copy markdown for llms.txt compliance
  • Generate llms-full.txt and merge markdown into single-page docs
  • Upload and deploy the _site directory to GitHub Pages
.github/workflows/documentation.yml
Introduce Validate Documentation workflow
  • Trigger on pull requests touching documentation and config files
  • Build site and regenerate llms-full.txt and single-page docs
  • Run internal link existence checks via custom script
  • Run external link checks with lychee and custom config
  • Validate file structure and minimum file sizes
.github/workflows/validate-documentation.yml
Implement Scheduled Documentation Update workflow
  • Run daily at 2 AM UTC and via manual dispatch
  • Snapshot existing generated files, regenerate docs with scripts
  • Compare outputs and detect changes or respect force-update flag
  • Commit and push updated llms-full.txt and single-page docs
  • Publish a summary step detailing what was updated
.github/workflows/update-documentation.yml
Create Comprehensive Link Checker workflow
  • Run weekly on Sundays and on manual dispatch with configurable flags
  • Build site and install lychee, generate detailed .lycherc.toml
  • Perform offline internal link checking, then external checks
  • Upload link-check artifacts and generate human-readable reports
  • Automatically open a GitHub issue for broken links on scheduled runs
.github/workflows/link-checker.yml
Add detailed documentation for build scripts
  • Document local and Docker-based Jekyll serve scripts
  • Explain generate_llms_full.php, merge_md_files.rb, and copy script usage
  • List dependencies, usage examples, and llms.txt compliance details
  • Include recommended GitHub Actions integration snippets
  • Outline contributing guidelines for adding new scripts
bin/README.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 9, 2025

Warning

Rate limit exceeded

@koriym has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 19 minutes and 11 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 2847d6a and 3c9ab51.

📒 Files selected for processing (5)
  • .github/workflows/link-checker.yml (1 hunks)
  • .github/workflows/validate-documentation.yml (1 hunks)
  • .lycheeignore (1 hunks)
  • .lycherc.toml (1 hunks)
  • manuals/1.0/en/MentalModel.md (1 hunks)

Walkthrough

Several new GitHub Actions workflow files and a detailed README for the bin/ directory have been introduced. The workflows automate documentation build, validation, deployment, link checking, and scheduled updates. The bin/README.md provides comprehensive documentation for utility scripts and outlines best practices, usage, dependencies, and integration with the workflows. Additionally, minor editorial and formatting corrections were applied to English and Japanese manual markdown files and the llms-full.txt file.

Changes

File(s) Change Summary
.github/workflows/documentation.yml Added workflow for building and deploying documentation to GitHub Pages, including custom build, file generation, and deployment steps.
.github/workflows/link-checker.yml Added workflow for scheduled and manual link checking, reporting, and automated issue creation for broken links in documentation.
.github/workflows/update-documentation.yml Added workflow for daily and manual regeneration and update of documentation files with conditional commit and push logic.
.github/workflows/validate-documentation.yml Added workflow for validating documentation build, internal/external links, file presence, and output file sizes on pull requests.
.github/workflows/claude-code-review.yml Added workflow for automated code review of pull requests using Claude AI.
.github/workflows/claude.yml Added workflow for triggering Claude AI actions on issue/pr comments containing "@claude".
.lycherc.toml Added Lychee link checker configuration file tailored for Ray.Di documentation.
bin/README.md Added comprehensive documentation for all utility scripts, usage, dependencies, and integration with GitHub Actions workflows.
llms-full.txt Updated hyperlink references from Japanese to English Wikipedia URLs; minor formatting and phrasing improvements.
manuals/1.0/en/1page.md Edited for clarity and grammar in documentation text without code changes.
manuals/1.0/ja/1page.md Extensive editorial and formatting corrections for Japanese manual; fixed code signatures and comments without changing logic.

Sequence Diagram(s)

sequenceDiagram
    participant GitHub Actions
    participant Repo
    participant Scripts (PHP/Ruby/Shell)
    participant GitHub Pages

    GitHub Actions->>Repo: Trigger (push, PR, schedule, manual)
    GitHub Actions->>Repo: Checkout code
    GitHub Actions->>Scripts (PHP/Ruby/Shell): Run build/generation/validation scripts
    Scripts (PHP/Ruby/Shell)->>Repo: Generate documentation files
    GitHub Actions->>GitHub Pages: Deploy built site (if deploy job)
    GitHub Actions->>Repo: Commit & push updates (if update job)
    GitHub Actions->>GitHub Actions: Validate, check links, report results
Loading

Possibly related PRs

Poem

🐇
In the warren of workflows, we build and we check,
With scripts well-documented, no detail a wreck.
Links are inspected, docs merge with delight,
Each morning brings updates, our pages shine bright.
A hop and a skip, our CI is complete—
Documentation perfection, no bugs left to eat!


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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@koriym
Copy link
Member Author

koriym commented Jul 9, 2025

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 9, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey @koriym - I've reviewed your changes and they look great!

Prompt for AI Agents
Please address the comments from this code review:
## Individual Comments

### Comment 1
<location> `.github/workflows/link-checker.yml:162` </location>
<code_context>
+            echo "The following external links were found to be broken:" >> link-check-results/report.md
+            echo "" >> link-check-results/report.md
+            
+            # Parse JSON results for broken links
+            if [ -f "link-check-results/external-links.json" ]; then
+              # Extract broken links from JSON (simplified approach)
</code_context>

<issue_to_address>
The approach to parsing JSON for broken links is fragile and may miss or misreport links.

Using grep and sed for JSON parsing is unreliable and may fail with structural changes or special characters. Use jq for more accurate extraction of broken links and statuses.
</issue_to_address>

### Comment 2
<location> `.github/workflows/documentation.yml:60` </location>
<code_context>
+      - name: Generate single-page documentation
+        run: ruby bin/merge_md_files.rb
+        
+      - name: Copy generated files to _site
+        run: |
+          cp llms-full.txt _site/
+          cp manuals/1.0/en/1page.md _site/manuals/1.0/en/
+          cp manuals/1.0/ja/1page.md _site/manuals/1.0/ja/
+          
+      - name: Upload artifact
</code_context>

<issue_to_address>
No check is performed to ensure the destination directories exist before copying files.

Add mkdir -p commands for _site/manuals/1.0/en and _site/manuals/1.0/ja before copying to avoid cp failures.
</issue_to_address>

<suggested_fix>
<<<<<<< SEARCH
      - name: Copy generated files to _site
        run: |
          cp llms-full.txt _site/
          cp manuals/1.0/en/1page.md _site/manuals/1.0/en/
          cp manuals/1.0/ja/1page.md _site/manuals/1.0/ja/
=======
      - name: Copy generated files to _site
        run: |
          mkdir -p _site/manuals/1.0/en
          mkdir -p _site/manuals/1.0/ja
          cp llms-full.txt _site/
          cp manuals/1.0/en/1page.md _site/manuals/1.0/en/
          cp manuals/1.0/ja/1page.md _site/manuals/1.0/ja/
>>>>>>> REPLACE

</suggested_fix>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

- Replace fragile grep/sed JSON parsing with jq in link-checker.yml
- Add mkdir -p commands in documentation.yml before copying files
- Install jq package for reliable JSON parsing of broken links
- Ensure destination directories exist before file copying

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@koriym
Copy link
Member Author

koriym commented Jul 9, 2025

@Cluade review

Copy link
Contributor

@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

🧹 Nitpick comments (6)
bin/README.md (2)

255-266: Add a language hint to satisfy MD040 and improve rendering

The fenced block that shows the bin/ tree omits a language identifier, triggering markdownlint MD040 and disabling syntax highlighting on GitHub.

-```
+```text
 bin/
 ├── README.md                 # This file
 ...
 └── copy_markdown_files.sh    # Copy markdown for llms.txt compliance

18-22: Wrap bare URLs in angle brackets to silence MD034

Markdown-lint flags the plain http://localhost:4000 URLs.
Wrap them in <> or use reference links:

-Accessible at http://localhost:4000
+Accessible at <http://localhost:4000>

Repeat for the Docker section.

Also applies to: 34-38

.github/workflows/validate-documentation.yml (1)

60-64: Avoid unnecessary sudo – runner already has root privileges

Using sudo inside the Ubuntu runner adds ~3 s overhead and may fail in restricted containers.

-          sudo mv lychee /usr/local/bin/
+          install -m 755 lychee /usr/local/bin/lychee

The install call is simpler and avoids the privilege escalation step.

.github/workflows/update-documentation.yml (2)

95-101: Use a safe variable instead of interpolating a possibly-undefined input

When the workflow is triggered by schedule, ${{ github.event.inputs.force_update }} is undefined and GitHub replaces it with the literal string null, breaking the [] test.

-if [ "$changes_detected" = true ] || [ "${{ github.event.inputs.force_update }}" = "true" ]; then
+FORCE=${{ github.event.inputs.force_update || 'false' }}
+if [ "$changes_detected" = true ] || [ "$FORCE" = "true" ]; then

This guards the shell against an empty/unset value.


110-120: Pushing directly to master may violate branch protection

Many repos protect the default branch.
Prefer opening a PR (with peter-evans/create-pull-request) just like in the scheduled workflow — it avoids silent push failures.

.github/workflows/link-checker.yml (1)

190-194: Upgrade action to maintained major

actions/upload-artifact@v3 is deprecated; switch to @v4 to avoid future execution blocks.

-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2b30dc9 and c05f5c6.

📒 Files selected for processing (5)
  • .github/workflows/documentation.yml (1 hunks)
  • .github/workflows/link-checker.yml (1 hunks)
  • .github/workflows/update-documentation.yml (1 hunks)
  • .github/workflows/validate-documentation.yml (1 hunks)
  • bin/README.md (1 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/copy_markdown_files.sh : The 'bin/copy_markdown_files.sh' script copies all markdown files after Jekyll build to the '_site' directory for direct access
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: If building manually without the scripts, run 'bundle exec jekyll build' followed by './bin/copy_markdown_files.sh'
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/merge_md_files.rb : The 'bin/merge_md_files.rb' script combines all manual markdown files into single-page versions for both languages
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/copy_markdown_files.sh : Markdown files are manually copied to '_site' directory for direct access, supporting llms.txt standard for AI assistants
Learnt from: koriym
PR: ray-di/ray-di.github.io#0
File: :0-0
Timestamp: 2025-06-30T23:04:00.817Z
Learning: In the ray-di.github.io repository, files named `1page.md` (like `manuals/1.0/en/1page.md` and `manuals/1.0/ja/1page.md`) are generated files created by the `bin/merge_md_files.rb` script. These should not be reviewed for content issues. Instead, content reviews should focus on the original source markdown files located under the `manuals/` directory structure.
.github/workflows/update-documentation.yml (4)
Learnt from: koriym
PR: ray-di/ray-di.github.io#0
File: :0-0
Timestamp: 2025-07-01T03:22:13.790Z
Learning: The file `llms-full.txt` in the ray-di.github.io repository is a generated document that should not be reviewed for content issues.
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/en/*.md : English documentation files use 'layout: docs-en', Japanese files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/ja/*.md : Japanese documentation files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/merge_md_files.rb : The 'bin/merge_md_files.rb' script combines all manual markdown files into single-page versions for both languages
bin/README.md (7)
Learnt from: koriym
PR: ray-di/ray-di.github.io#0
File: :0-0
Timestamp: 2025-06-30T23:04:00.817Z
Learning: In the ray-di.github.io repository, files named `1page.md` (like `manuals/1.0/en/1page.md` and `manuals/1.0/ja/1page.md`) are generated files created by the `bin/merge_md_files.rb` script. These should not be reviewed for content issues. Instead, content reviews should focus on the original source markdown files located under the `manuals/` directory structure.
Learnt from: koriym
PR: ray-di/ray-di.github.io#0
File: :0-0
Timestamp: 2025-07-01T03:22:13.790Z
Learning: The file `llms-full.txt` in the ray-di.github.io repository is a generated document that should not be reviewed for content issues.
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/merge_md_files.rb : The 'bin/merge_md_files.rb' script combines all manual markdown files into single-page versions for both languages
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/copy_markdown_files.sh : Markdown files are manually copied to '_site' directory for direct access, supporting llms.txt standard for AI assistants
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/copy_markdown_files.sh : The 'bin/copy_markdown_files.sh' script copies all markdown files after Jekyll build to the '_site' directory for direct access
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/serve_local.sh : Development scripts ('serve_local.sh' and Docker) automatically run the copy script after building the site
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: If building manually without the scripts, run 'bundle exec jekyll build' followed by './bin/copy_markdown_files.sh'
.github/workflows/documentation.yml (8)
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/*.md : Documentation files use Jekyll front matter with layout, title, category, and permalink
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/en/*.md : English documentation files use 'layout: docs-en', Japanese files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/ja/*.md : Japanese documentation files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/*.md : Documentation files use descriptive names without numeric prefixes (e.g., 'installation.md', 'motivation.md')
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to _config.yml : Configured for GitHub Pages compatibility in Jekyll
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: If building manually without the scripts, run 'bundle exec jekyll build' followed by './bin/copy_markdown_files.sh'
Learnt from: koriym
PR: ray-di/ray-di.github.io#0
File: :0-0
Timestamp: 2025-06-30T23:04:00.817Z
Learning: In the ray-di.github.io repository, files named `1page.md` (like `manuals/1.0/en/1page.md` and `manuals/1.0/ja/1page.md`) are generated files created by the `bin/merge_md_files.rb` script. These should not be reviewed for content issues. Instead, content reviews should focus on the original source markdown files located under the `manuals/` directory structure.
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/copy_markdown_files.sh : The 'bin/copy_markdown_files.sh' script copies all markdown files after Jekyll build to the '_site' directory for direct access
.github/workflows/validate-documentation.yml (5)
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/en/*.md : English documentation files use 'layout: docs-en', Japanese files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/ja/*.md : Japanese documentation files use 'layout: docs-ja' in their front matter
Learnt from: koriym
PR: ray-di/ray-di.github.io#0
File: :0-0
Timestamp: 2025-06-30T23:04:00.817Z
Learning: In the ray-di.github.io repository, files named `1page.md` (like `manuals/1.0/en/1page.md` and `manuals/1.0/ja/1page.md`) are generated files created by the `bin/merge_md_files.rb` script. These should not be reviewed for content issues. Instead, content reviews should focus on the original source markdown files located under the `manuals/` directory structure.
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/*.md : Documentation files use Jekyll front matter with layout, title, category, and permalink
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: If building manually without the scripts, run 'bundle exec jekyll build' followed by './bin/copy_markdown_files.sh'
🪛 YAMLlint (1.37.1)
.github/workflows/update-documentation.yml

[error] 23-23: trailing spaces

(trailing-spaces)


[error] 29-29: trailing spaces

(trailing-spaces)


[error] 34-34: trailing spaces

(trailing-spaces)


[error] 39-39: trailing spaces

(trailing-spaces)


[error] 46-46: trailing spaces

(trailing-spaces)


[error] 51-51: trailing spaces

(trailing-spaces)


[error] 54-54: trailing spaces

(trailing-spaces)


[error] 59-59: trailing spaces

(trailing-spaces)


[error] 61-61: trailing spaces

(trailing-spaces)


[error] 72-72: trailing spaces

(trailing-spaces)


[error] 83-83: trailing spaces

(trailing-spaces)


[error] 94-94: trailing spaces

(trailing-spaces)


[error] 102-102: trailing spaces

(trailing-spaces)


[error] 109-109: trailing spaces

(trailing-spaces)


[error] 113-113: trailing spaces

(trailing-spaces)


[error] 117-117: trailing spaces

(trailing-spaces)


[error] 119-119: trailing spaces

(trailing-spaces)


[error] 125-125: trailing spaces

(trailing-spaces)


[error] 144-144: no new line character at the end of file

(new-line-at-end-of-file)

.github/workflows/link-checker.yml

[error] 26-26: trailing spaces

(trailing-spaces)


[error] 32-32: trailing spaces

(trailing-spaces)


[error] 36-36: trailing spaces

(trailing-spaces)


[error] 41-41: trailing spaces

(trailing-spaces)


[error] 46-46: trailing spaces

(trailing-spaces)


[error] 49-49: trailing spaces

(trailing-spaces)


[error] 52-52: trailing spaces

(trailing-spaces)


[error] 55-55: trailing spaces

(trailing-spaces)


[error] 58-58: trailing spaces

(trailing-spaces)


[error] 65-65: trailing spaces

(trailing-spaces)


[error] 75-75: trailing spaces

(trailing-spaces)


[error] 81-81: trailing spaces

(trailing-spaces)


[error] 84-84: trailing spaces

(trailing-spaces)


[error] 87-87: trailing spaces

(trailing-spaces)


[error] 93-93: trailing spaces

(trailing-spaces)


[error] 97-97: trailing spaces

(trailing-spaces)


[error] 100-100: trailing spaces

(trailing-spaces)


[error] 105-105: trailing spaces

(trailing-spaces)


[error] 108-108: trailing spaces

(trailing-spaces)


[error] 111-111: trailing spaces

(trailing-spaces)


[error] 114-114: trailing spaces

(trailing-spaces)


[error] 117-117: trailing spaces

(trailing-spaces)


[error] 121-121: trailing spaces

(trailing-spaces)


[error] 125-125: trailing spaces

(trailing-spaces)


[error] 137-137: trailing spaces

(trailing-spaces)


[error] 139-139: trailing spaces

(trailing-spaces)


[error] 144-144: trailing spaces

(trailing-spaces)


[error] 147-147: trailing spaces

(trailing-spaces)


[error] 155-155: trailing spaces

(trailing-spaces)


[error] 161-161: trailing spaces

(trailing-spaces)


[error] 168-168: trailing spaces

(trailing-spaces)


[error] 176-176: trailing spaces

(trailing-spaces)


[error] 181-181: trailing spaces

(trailing-spaces)


[error] 186-186: trailing spaces

(trailing-spaces)


[error] 188-188: trailing spaces

(trailing-spaces)


[error] 196-196: trailing spaces

(trailing-spaces)


[error] 209-209: trailing spaces

(trailing-spaces)


[error] 218-218: trailing spaces

(trailing-spaces)


[error] 220-220: trailing spaces

(trailing-spaces)


[error] 223-223: trailing spaces

(trailing-spaces)


[error] 225-225: trailing spaces

(trailing-spaces)


[error] 231-231: trailing spaces

(trailing-spaces)


[error] 237-237: trailing spaces

(trailing-spaces)


[error] 243-243: trailing spaces

(trailing-spaces)


[error] 251-251: trailing spaces

(trailing-spaces)


[error] 256-256: no new line character at the end of file

(new-line-at-end-of-file)

.github/workflows/documentation.yml

[error] 31-31: trailing spaces

(trailing-spaces)


[error] 37-37: trailing spaces

(trailing-spaces)


[error] 42-42: trailing spaces

(trailing-spaces)


[error] 46-46: trailing spaces

(trailing-spaces)


[error] 50-50: trailing spaces

(trailing-spaces)


[error] 53-53: trailing spaces

(trailing-spaces)


[error] 56-56: trailing spaces

(trailing-spaces)


[error] 59-59: trailing spaces

(trailing-spaces)


[error] 65-65: trailing spaces

(trailing-spaces)


[error] 81-81: no new line character at the end of file

(new-line-at-end-of-file)

.github/workflows/validate-documentation.yml

[error] 20-20: trailing spaces

(trailing-spaces)


[error] 26-26: trailing spaces

(trailing-spaces)


[error] 31-31: trailing spaces

(trailing-spaces)


[error] 36-36: trailing spaces

(trailing-spaces)


[error] 45-45: trailing spaces

(trailing-spaces)


[error] 58-58: trailing spaces

(trailing-spaces)


[error] 64-64: trailing spaces

(trailing-spaces)


[error] 68-68: trailing spaces

(trailing-spaces)


[error] 72-72: trailing spaces

(trailing-spaces)


[error] 77-77: trailing spaces

(trailing-spaces)


[error] 82-82: trailing spaces

(trailing-spaces)


[error] 92-92: trailing spaces

(trailing-spaces)


[error] 100-100: trailing spaces

(trailing-spaces)


[error] 102-102: trailing spaces

(trailing-spaces)


[error] 106-106: trailing spaces

(trailing-spaces)


[error] 110-110: trailing spaces

(trailing-spaces)


[error] 113-113: trailing spaces

(trailing-spaces)


[error] 116-116: trailing spaces

(trailing-spaces)


[error] 119-119: trailing spaces

(trailing-spaces)


[error] 122-122: trailing spaces

(trailing-spaces)


[error] 127-127: trailing spaces

(trailing-spaces)


[error] 137-137: trailing spaces

(trailing-spaces)


[error] 140-140: trailing spaces

(trailing-spaces)


[error] 143-143: trailing spaces

(trailing-spaces)


[error] 147-147: trailing spaces

(trailing-spaces)


[error] 152-152: trailing spaces

(trailing-spaces)


[error] 155-155: trailing spaces

(trailing-spaces)


[error] 158-158: trailing spaces

(trailing-spaces)


[error] 162-162: trailing spaces

(trailing-spaces)


[error] 169-169: trailing spaces

(trailing-spaces)


[error] 171-171: trailing spaces

(trailing-spaces)


[error] 175-175: trailing spaces

(trailing-spaces)


[error] 186-186: trailing spaces

(trailing-spaces)


[error] 193-193: trailing spaces

(trailing-spaces)


[error] 195-195: trailing spaces

(trailing-spaces)


[error] 199-199: trailing spaces

(trailing-spaces)


[error] 209-209: trailing spaces

(trailing-spaces)


[error] 221-221: no new line character at the end of file

(new-line-at-end-of-file)

🪛 LanguageTool
bin/README.md

[grammar] ~1-~1: Use correct spacing
Context: # Ray.Di Documentation Build Scripts This directory contains utility scripts...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~3-~3: Use correct spacing
Context: ..., and managing the Ray.Di documentation website. ## Scripts Overview ### Development Scrip...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~5-~5: Use correct spacing
Context: ...y.Di documentation website. ## Scripts Overview ### Development Scripts #### `serve_local....

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~7-~7: Use correct spacing
Context: .... ## Scripts Overview ### Development Scripts #### serve_local.sh Serves the Jekyll site locally with aut...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~10-~10: Use correct spacing
Context: ... with automatic rebuilding and llms.txt compliance. bash ./bin/serve_local.sh What it does: - Builds the Jekyll sit...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~18-~18: Use prepositions correctly
Context: ...site with bundle exec jekyll build - Copies markdown files for llms.txt standard co...

(QB_NEW_EN_OTHER_ERROR_IDS_7)


[grammar] ~18-~18: There might be a mistake here.
Context: ...es markdown files for llms.txt standard compliance - Starts Jekyll development server with...

(QB_NEW_EN_OTHER)


[grammar] ~19-~19: Use articles correctly
Context: ...r llms.txt standard compliance - Starts Jekyll development server with --watch mode ...

(QB_NEW_EN_OTHER_ERROR_IDS_11)


[grammar] ~19-~19: There might be a mistake here.
Context: ...ekyll development server with --watch mode - Accessible at http://localhost:4000 ...

(QB_NEW_EN_OTHER)


[grammar] ~20-~20: There might be a mistake here.
Context: ...ver with --watch mode - Accessible at http://localhost:4000 Prerequisites: - Ruby 3.2.x - Bundler...

(QB_NEW_EN_OTHER)


[grammar] ~25-~25: Use correct spacing
Context: ...all bundler) - Dependencies installed (bundle install) #### serve_docker.sh` Serves the Jekyll site using Docker Com...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~28-~28: Use correct spacing
Context: ...sh` Serves the Jekyll site using Docker Compose. bash ./bin/serve_docker.sh What it does: - Starts Docker contain...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~35-~35: There might be a mistake here.
Context: ...* - Starts Docker container with Jekyll environment - Accessible at http://localhost:4000 ...

(QB_NEW_EN_OTHER)


[grammar] ~36-~36: There might be a mistake here.
Context: ...with Jekyll environment - Accessible at http://localhost:4000 Prerequisites: - Docker and Docker Co...

(QB_NEW_EN_OTHER)


[grammar] ~39-~39: Use correct spacing
Context: ...quisites:** - Docker and Docker Compose installed ### Build Scripts #### entrypoint.sh Doc...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~41-~41: Use correct spacing
Context: ...and Docker Compose installed ### Build Scripts #### entrypoint.sh Docker entrypoint script that builds an...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~44-~44: Use correct spacing
Context: ...point script that builds and serves the site. bash ./bin/entrypoint.sh What it does: - Builds the Jekyll sit...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~53-~53: Use correct spacing
Context: ... server with host 0.0.0.0 for container access ### Documentation Generation Scripts #### ...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~55-~55: Use correct spacing
Context: ...er access ### Documentation Generation Scripts #### generate_llms_full.php Generates a comprehensive `llms-full.tx...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~58-~58: Use correct spacing
Context: ...llms.txt by expanding linked markdown files. bash php bin/generate_llms_full.php What it does: - Reads llms.txt from...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~69-~69: Use correct spacing
Context: ...hors - Generates llms-full.txt for AI assistants Output: - Creates llms-full.txt in ...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~72-~72: There might be a mistake here.
Context: ...* - Creates llms-full.txt in the root directory - Typical file size: ~80,000 characters...

(QB_NEW_EN_OTHER)


[grammar] ~73-~73: There might be a mistake here.
Context: ... directory - Typical file size: ~80,000 characters #### merge_md_files.rb Merges all manual markdown files into s...

(QB_NEW_EN_OTHER)


[grammar] ~76-~76: Use correct spacing
Context: ...iles into single-page versions for each language. bash ruby bin/merge_md_files.rb What it does: - Reads navigation orde...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~86-~86: There might be a problem here.
Context: ...t - Generates single-page documentation files Output: - manuals/1.0/en/1page.md (English single-page version) - `manuals/1.0/ja/...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~89-~89:
Context: ...s/1.0/en/1page.md(English single-page version) -manuals/1.0/ja/1page.md(Japanese single-page version) ####copy_markdo...

(QB_NEW_EN_OTHER_ERROR_IDS_)


[grammar] ~90-~90: Use correct spacing
Context: .../1.0/ja/1page.md(Japanese single-page version) ####copy_markdown_files.shCopies markdown files to_site` direct...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~93-~93: Use articles correctly
Context: ...arkdown_files.shCopies markdown files to_site` directory for llms.txt standard...

(QB_NEW_EN_OTHER_ERROR_IDS_11)


[grammar] ~93-~93: Use correct spacing
Context: ..._site directory for llms.txt standard compliance. bash ./bin/copy_markdown_files.sh What it does: - Copies all .md file...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~103-~103: Use correct spacing
Context: ...rts llms.txt standard for AI-accessible documentation ## GitHub Actions Integration The followi...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~105-~105: Use correct spacing
Context: ...ssible documentation ## GitHub Actions Integration The following scripts are suitable for ...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~107-~107: Use correct spacing
Context: ...scripts are suitable for GitHub Actions automation: ### Recommended GitHub Actions #### 1. Doc...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~109-~109: Use correct spacing
Context: ...ons automation: ### Recommended GitHub Actions #### 1. Documentation Build and Deploy ```ya...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~111-~111: Use correct spacing
Context: ...ctions #### 1. Documentation Build and Deploy yaml name: Build and Deploy Documentation on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: 3.2 bundler-cache: true - name: Build Jekyll site run: | bundle exec jekyll build ./bin/copy_markdown_files.sh - name: Generate llms-full.txt run: php bin/generate_llms_full.php - name: Generate single-page documentation run: ruby bin/merge_md_files.rb - name: Deploy to GitHub Pages uses: actions/deploy-pages@v3 with: path: _site #### 2. Documentation Validation ```yaml nam...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~144-~144: Use correct spacing
Context: ... path: _site #### 2. Documentation Validationyaml name: Validate Documentation on: pull_request: paths: - 'manuals/**' - 'llms.txt' jobs: validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.1' - name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: 3.2 bundler-cache: true - name: Validate llms-full.txt generation run: php bin/generate_llms_full.php - name: Validate single-page merge run: ruby bin/merge_md_files.rb - name: Check for broken links run: | bundle exec jekyll build # Add link checking tool here #### 3. Automated Documentation Updatesy...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~177-~177: Use correct spacing
Context: ...re #### 3. Automated Documentation Updatesyaml name: Update Documentation on: schedule: - cron: '0 2 * * *' # Daily at 2 AM workflow_dispatch: jobs: update: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: 3.2 bundler-cache: true - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.1' - name: Regenerate documentation run: | php bin/generate_llms_full.php ruby bin/merge_md_files.rb ./bin/copy_markdown_files.sh - name: Create Pull Request uses: peter-evans/create-pull-request@v5 with: title: 'chore: update generated documentation files' body: 'Automated update of llms-full.txt and single-page documentation' branch: automated-doc-updates ``` ## llms.txt Standard Compliance This docu...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~212-~212: Use correct spacing
Context: ...d-doc-updates ``` ## llms.txt Standard Compliance This documentation follows the [llms.tx...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~214-~214: Use correct spacing
Context: ...ttps://llms-txt.org/) for AI-accessible documentation: - llms.txt: Index file with links to all document...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~219-~219: There might be a problem here.
Context: ...le at /manuals/1.0/{lang}/{file}.html URLs ## Dependencies - Ruby: 3.2.x (for Jekyll and Ruby scri...

(QB_NEW_EN_MERGED_MATCH)


[grammar] ~226-~226: Use correct spacing
Context: ...Docker: Optional, for containerized development ## Usage Examples ### Local Development `...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~228-~228: Use correct spacing
Context: ...for containerized development ## Usage Examples ### Local Development ```bash # Start local...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~230-~230: Use correct spacing
Context: ...velopment ## Usage Examples ### Local Development bash # Start local development server ./bin/serve_local.sh # Or with Docker ./bin/serve_docker.sh ### Documentation Updates ```bash # After u...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~239-~239: Use correct spacing
Context: .../serve_docker.sh ### Documentation Updatesbash # After updating manuals, regenerate derived files php bin/generate_llms_full.php ruby bin/merge_md_files.rb ### Production Buildbash # Build for pr...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~246-~246: Use correct spacing
Context: ...n/merge_md_files.rb ### Production Buildbash # Build for production bundle exec jekyll build ./bin/copy_markdown_files.sh php bin/generate_llms_full.php ruby bin/merge_md_files.rb ## File Structure bin/ ├── README.md ...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~255-~255: Use correct spacing
Context: ...ruby bin/merge_md_files.rb ## File Structure bin/ ├── README.md # This file ├── serve_local.sh # Local development server ├── serve_docker.sh # Docker development server ├── entrypoint.sh # Docker entrypoint ├── generate_llms_full.php # Generate comprehensive AI documentation ├── merge_md_files.rb # Generate single-page documentation └── copy_markdown_files.sh # Copy markdown for llms.txt compliance ``` ## Contributing When adding new scripts: ...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~268-~268: Use proper spacing conventions.
Context: ...llms.txt compliance ``` ## Contributing When adding new scripts: 1. Make script...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~270-~270: Use correct spacing
Context: ...e ``` ## Contributing When adding new scripts: 1. Make scripts executable: `chmod +x bin/...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~272-~272: There might be a mistake here.
Context: ...en adding new scripts: 1. Make scripts executable: chmod +x bin/script_name.sh 2. Add appropriate error handling with `set -e...

(QB_NEW_EN_OTHER)


[grammar] ~273-~273: There might be a mistake here.
Context: ...dling with set -euo pipefail for bash scripts 3. Include clear documentation in this ...

(QB_NEW_EN_OTHER)


[grammar] ~274-~274: There might be a mistake here.
Context: ... 3. Include clear documentation in this README 4. Consider GitHub Actions integration ...

(QB_NEW_EN_OTHER)


[grammar] ~275-~275: There might be a mistake here.
Context: ...tHub Actions integration for automation opportunities 5. Follow existing naming conventions a...

(QB_NEW_EN_OTHER)


[grammar] ~276-~276: Use a period to end declarative sentences
Context: ... existing naming conventions and coding standards

(QB_NEW_EN_OTHER_ERROR_IDS_25)

🪛 markdownlint-cli2 (0.17.2)
bin/README.md

20-20: Bare URL used

(MD034, no-bare-urls)


36-36: Bare URL used

(MD034, no-bare-urls)


257-257: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🪛 actionlint (1.7.7)
.github/workflows/link-checker.yml

190-190: the runner of "actions/upload-artifact@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

.github/workflows/documentation.yml

45-45: the runner of "actions/configure-pages@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)


81-81: the runner of "actions/deploy-pages@v2" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey @koriym - I've reviewed your changes - here's some feedback:

  • There’s a placeholder in the Validate Documentation workflow (# Add link checking tool here)—either implement the link-checker step or remove the comment to prevent a no-op validation phase.
  • You’re inlining nearly identical lycherc.toml configs in multiple workflows—consider moving it to a repo-level file and referencing it to avoid drift.
  • The daily update workflow pushes directly to master; you may want to switch to using actions/create-pull-request (or another PR-based approach) so updates go through branch protections and review.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- There’s a placeholder in the Validate Documentation workflow (`# Add link checking tool here`)—either implement the link-checker step or remove the comment to prevent a no-op validation phase.
- You’re inlining nearly identical `lycherc.toml` configs in multiple workflows—consider moving it to a repo-level file and referencing it to avoid drift.
- The daily update workflow pushes directly to master; you may want to switch to using `actions/create-pull-request` (or another PR-based approach) so updates go through branch protections and review.

## Individual Comments

### Comment 1
<location> `.github/workflows/link-checker.yml:141` </location>
<code_context>
+          echo "✅ Internal link check completed"
+          
+      - name: Check external links
+        if: github.event.inputs.check_external != 'false'
+        run: |
+          echo "🌐 Checking external links..."
</code_context>

<issue_to_address>
String comparison for boolean input may cause confusion.

Relying on string comparison here can lead to unexpected results if the input is missing or set to an unexpected value. Consider normalizing the input or converting it to a boolean to ensure correct behavior.
</issue_to_address>

<suggested_fix>
<<<<<<< SEARCH
      - name: Check external links
        if: github.event.inputs.check_external != 'false'
        run: |
          echo "🌐 Checking external links..."
=======
      - name: Check external links
        if: ${{ github.event.inputs.check_external && fromJSON(github.event.inputs.check_external) }}
        run: |
          echo "🌐 Checking external links..."
>>>>>>> REPLACE

</suggested_fix>

### Comment 2
<location> `.github/workflows/link-checker.yml:199` </location>
<code_context>
+          retention-days: 30
+          
+      - name: Create issue for broken links
+        if: failure() && github.event_name == 'schedule'
+        uses: actions/github-script@v7
+        with:
</code_context>

<issue_to_address>
The 'failure()' condition may not trigger as expected if the job fails before this step.

If earlier steps exit the job on failure, this step may not run. Consider 'if: always() && ...' or adjust error handling to ensure this step executes as intended.
</issue_to_address>

<suggested_fix>
<<<<<<< SEARCH
      - name: Create issue for broken links
+        if: failure() && github.event_name == 'schedule'
+        uses: actions/github-script@v7
+        with:
=======
      - name: Create issue for broken links
+        if: always() && github.event_name == 'schedule'
+        uses: actions/github-script@v7
+        with:
>>>>>>> REPLACE

</suggested_fix>

### Comment 3
<location> `.github/workflows/validate-documentation.yml:70` </location>
<code_context>
+          find manuals -name "*.md" -type f | while read file; do
</code_context>

<issue_to_address>
The internal link checker does not handle links to directories or anchors.

Currently, only file existence is checked, which may miss valid directory or anchor links. Please update the logic to support these cases or clearly document this limitation.

Suggested implementation:

```
          # Check internal markdown links (supports .md files, directories, and anchors)
          find manuals -name "*.md" -type f | while read file; do
            echo "Checking internal links in $file..."

            # Extract all markdown links (including .md, directories, and anchors)
            grep -oE '\]\([^)]+\)' "$file" | sed 's/](\([^)]*\))/\1/' | while read link; do
              # Remove query parameters for path checks
              clean_link=$(echo "$link" | sed 's/[?].*//')

              # Skip external links
              if [[ "$clean_link" =~ ^https?:// ]]; then
                continue

```

```
              # Remove anchors for file/directory existence check
              path_only=$(echo "$clean_link" | sed 's/#.*//')

              # If the link is empty, skip
              if [[ -z "$path_only" ]]; then
                continue
              fi

              # Check if the path exists (file or directory)
              if [[ -e "$(dirname "$file")/$path_only" ]]; then
                # If anchor is present, optionally check if anchor exists in the file
                if [[ "$clean_link" =~ \#(.+) ]]; then
                  anchor=$(echo "$clean_link" | sed -n 's/.*#\(.*\)/\1/p')
                  target_file="$(dirname "$file")/$path_only"
                  # Only check anchor if target is a file
                  if [[ -f "$target_file" ]]; then
                    # Convert anchor to markdown heading format (case-insensitive, ignore punctuation)
                    anchor_regex=$(echo "$anchor" | sed 's/[-_]/ /g' | awk '{print tolower($0)}')
                    if ! grep -i -q "^#\+.*$anchor_regex" "$target_file"; then
                      echo "::warning file=$file::Anchor '#$anchor' not found in $target_file"
                    fi
                  fi
                fi
                continue
              fi

              # If the path does not exist, print a warning
              echo "::error file=$file::Broken link: $link"

```

```
            done

            # Note: This script checks for the existence of files and directories, and attempts to validate anchors in markdown files.
            # It does not validate anchors in non-markdown files or handle all possible anchor formats.

```
</issue_to_address>

### Comment 4
<location> `.github/workflows/update-documentation.yml:120` </location>
<code_context>
+            
+            🤖 Generated automatically"
+            
+            git push origin master
+            echo "✅ Documentation updated and pushed"
+          else
</code_context>

<issue_to_address>
Pushing directly to 'master' may overwrite remote changes if the branch is stale.

Pull or rebase 'master' before pushing to prevent conflicts or overwriting remote changes, especially in collaborative environments.
</issue_to_address>

### Comment 5
<location> `.github/workflows/update-documentation.yml:95` </location>
<code_context>
+            changes_detected=true
+          fi
+          
+          if [ "$changes_detected" = true ] || [ "${{ github.event.inputs.force_update }}" = "true" ]; then
+            echo "changes_detected=true" >> $GITHUB_OUTPUT
+            echo "Changes detected or force update requested"
</code_context>

<issue_to_address>
Mixing shell and GitHub Actions expressions may cause confusion.

Using both shell variables and GitHub Actions expressions in the same condition can lead to unexpected behavior. Set outputs explicitly to prevent subtle bugs.

Suggested implementation:

```
          if [ "$changes_detected" = true ]; then
            echo "changes_detected=true" >> $GITHUB_OUTPUT
            echo "Changes detected"
          else
            echo "changes_detected=false" >> $GITHUB_OUTPUT
            echo "No changes detected"
          fi

```

```
      - name: Commit changes
        if: steps.changes.outputs.changes_detected == 'true' || github.event.inputs.force_update == 'true'
        run: |
          git add llms-full.txt
          git add manuals/1.0/en/1page.md

```
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

- Add shared .lycherc.toml configuration file to avoid duplication
- Fix update-documentation.yml output logic to separate shell and GitHub Actions expressions
- Add git pull before pushing to master to prevent conflicts
- Update GitHub Actions to latest versions (configure-pages@v5, deploy-pages@v5)
- Fix jq command to use correct lychee JSON structure
- Replace fragile grep/sed internal link checking with markdown-link-check
- Change failure() to always() for issue creation to ensure it runs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@koriym
Copy link
Member Author

koriym commented Jul 9, 2025

@sourcery-ai Review again, I think this is enough.

  • PR-based approach: 現在のmasterへの直接プッシュはシンプルで十分
  • boolean入力の正規化: 現在の文字列比較で問題なく動作
  • プレースホルダーコメント: 実際のリンクチェッカーを実装済み

@claude
Copy link

claude bot commented Jul 9, 2025

Claude encountered an error —— View job


I'll analyze this and get back to you.

Copy link
Contributor

@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: 5

♻️ Duplicate comments (1)
.github/workflows/link-checker.yml (1)

63-65: Use a proper boolean expression for check_external

workflow_dispatch inputs declared as type: boolean arrive as strings ("true", "false", or an empty string when unset).
The current string inequality test silently evaluates to true on scheduled runs (input undefined) and can unintentionally perform the costly external-link sweep.

-        if: github.event.inputs.check_external != 'false'
+        # run only if the caller explicitly enabled it
+        if: ${{ github.event.inputs.check_external && fromJSON(github.event.inputs.check_external) }}
🧹 Nitpick comments (6)
.github/workflows/claude.yml (2)

40-55: Redundant actions: read permission

actions: read is already declared at job level (lines 22-26).
Removing the duplicate entry in additional_permissions simplifies the config:

-  additional_permissions: |
-    actions: read
+  # additional_permissions not needed – already granted above

40-66: Trim trailing whitespace – fails strict linters

YAML-lint reports trailing spaces on several commented lines (42, 45, 48, 51, 54, 60).
Not critical for GitHub Actions, but many CI lint steps fail on these.
Recommend running prettier --write or similar.

.github/workflows/claude-code-review.yml (1)

20-78: Cosmetic: trailing spaces & superfluous blank line

YAML-lint flags multiple trailing spaces (lines 20, 27, 42, 51, 56, 64, 67, 70, 73) and an extra blank line at 78.
Doesn’t break the workflow, but cleaning this keeps the repo tidy.

.github/workflows/validate-documentation.yml (1)

69-110: Internal-link checker still flags anchors & images

markdown-link-check with the current ignorePatterns/replacementPatterns
fails on:

  • links containing #anchor
  • image links ![alt](foo.md)
  • paths with spaces/parentheses

False positives will abort the job (exit 1).
Consider switching to markdown-link-check --config .mlc-internal.json with a regex that:

  1. strips #.* before path existence checks
  2. ignores ![]() matches
  3. quotes filenames properly (or parse via a tiny Python AST).

Optional but will cut noisy CI failures.

.github/workflows/documentation.yml (1)

60-67: Guard against missing single-page files before copy

If merge_md_files.rb fails, the cp step exits the job. Add set -euo pipefail
at script top or bail out explicitly after generation so the build
doesn’t silently succeed without the pages.

.github/workflows/update-documentation.yml (1)

55-102: Use set -euo pipefail to fail fast

The comparison script relies on many commands (cmp, array ops) where an
error should abort the job. Currently, a silent failure can mark
changes_detected=false and skip commits.

-run: |
+run: |
+  set -euo pipefail
   echo "Checking for changes..."

Minor but helps reliability in scheduled runs.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c05f5c6 and 2847d6a.

📒 Files selected for processing (10)
  • .github/workflows/claude-code-review.yml (1 hunks)
  • .github/workflows/claude.yml (1 hunks)
  • .github/workflows/documentation.yml (1 hunks)
  • .github/workflows/link-checker.yml (1 hunks)
  • .github/workflows/update-documentation.yml (1 hunks)
  • .github/workflows/validate-documentation.yml (1 hunks)
  • .lycherc.toml (1 hunks)
  • llms-full.txt (4 hunks)
  • manuals/1.0/en/1page.md (2 hunks)
  • manuals/1.0/ja/1page.md (39 hunks)
✅ Files skipped from review due to trivial changes (1)
  • .lycherc.toml
🧰 Additional context used
📓 Path-based instructions (3)
`manuals/1.0/{en,ja}/*.md`: Documentation files use descriptive names without nu...

manuals/1.0/{en,ja}/*.md: Documentation files use descriptive names without numeric prefixes (e.g., 'installation.md', 'motivation.md')
Documentation files use Jekyll front matter with layout, title, category, and permalink
Permalinks for documentation files follow the pattern '/manuals/1.0/{lang}/{filename}.html'
URLs for markdown files follow the pattern '/manuals/1.0/{lang}/{filename}.md' (AI-accessible) and '/manuals/1.0/{lang}/{filename}.html' (human-readable)

📄 Source: CodeRabbit Inference Engine (CLAUDE.md)

List of files the instruction was applied to:

  • manuals/1.0/en/1page.md
  • manuals/1.0/ja/1page.md
`manuals/1.0/en/*.md`: English documentation files use 'layout: docs-en', Japanese files use 'layout: docs-ja' in their front matter

manuals/1.0/en/*.md: English documentation files use 'layout: docs-en', Japanese files use 'layout: docs-ja' in their front matter

📄 Source: CodeRabbit Inference Engine (CLAUDE.md)

List of files the instruction was applied to:

  • manuals/1.0/en/1page.md
`manuals/1.0/ja/*.md`: Japanese documentation files use 'layout: docs-ja' in their front matter

manuals/1.0/ja/*.md: Japanese documentation files use 'layout: docs-ja' in their front matter

📄 Source: CodeRabbit Inference Engine (CLAUDE.md)

List of files the instruction was applied to:

  • manuals/1.0/ja/1page.md
🧠 Learnings (6)
📓 Common learnings
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/copy_markdown_files.sh : Markdown files are manually copied to '_site' directory for direct access, supporting llms.txt standard for AI assistants
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/en/*.md : English documentation files use 'layout: docs-en', Japanese files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/merge_md_files.rb : The 'bin/merge_md_files.rb' script combines all manual markdown files into single-page versions for both languages
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/*.md : Documentation files use Jekyll front matter with layout, title, category, and permalink
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/*.md : Documentation files use descriptive names without numeric prefixes (e.g., 'installation.md', 'motivation.md')
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/ja/*.md : Japanese documentation files use 'layout: docs-ja' in their front matter
Learnt from: koriym
PR: ray-di/ray-di.github.io#0
File: :0-0
Timestamp: 2025-06-30T23:04:00.817Z
Learning: In the ray-di.github.io repository, files named `1page.md` (like `manuals/1.0/en/1page.md` and `manuals/1.0/ja/1page.md`) are generated files created by the `bin/merge_md_files.rb` script. These should not be reviewed for content issues. Instead, content reviews should focus on the original source markdown files located under the `manuals/` directory structure.
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/copy_markdown_files.sh : The 'bin/copy_markdown_files.sh' script copies all markdown files after Jekyll build to the '_site' directory for direct access
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/bp/*.md : Best practices files in 'bp/' subdirectory use descriptive hyphenated names
Learnt from: koriym
PR: ray-di/ray-di.github.io#0
File: :0-0
Timestamp: 2025-07-01T03:22:13.790Z
Learning: The file `llms-full.txt` in the ray-di.github.io repository is a generated document that should not be reviewed for content issues.
.github/workflows/documentation.yml (11)
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/*.md : Documentation files use Jekyll front matter with layout, title, category, and permalink
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/en/*.md : English documentation files use 'layout: docs-en', Japanese files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/ja/*.md : Japanese documentation files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/*.md : Documentation files use descriptive names without numeric prefixes (e.g., 'installation.md', 'motivation.md')
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/copy_markdown_files.sh : Markdown files are manually copied to '_site' directory for direct access, supporting llms.txt standard for AI assistants
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/copy_markdown_files.sh : The 'bin/copy_markdown_files.sh' script copies all markdown files after Jekyll build to the '_site' directory for direct access
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: If building manually without the scripts, run 'bundle exec jekyll build' followed by './bin/copy_markdown_files.sh'
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/bp/*.md : Best practices files in 'bp/' subdirectory use descriptive hyphenated names
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/serve_local.sh : Development scripts ('serve_local.sh' and Docker) automatically run the copy script after building the site
Learnt from: koriym
PR: ray-di/ray-di.github.io#0
File: :0-0
Timestamp: 2025-06-30T23:04:00.817Z
Learning: In the ray-di.github.io repository, files named `1page.md` (like `manuals/1.0/en/1page.md` and `manuals/1.0/ja/1page.md`) are generated files created by the `bin/merge_md_files.rb` script. These should not be reviewed for content issues. Instead, content reviews should focus on the original source markdown files located under the `manuals/` directory structure.
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to _config.yml : Configured for GitHub Pages compatibility in Jekyll
.github/workflows/update-documentation.yml (4)
Learnt from: koriym
PR: ray-di/ray-di.github.io#0
File: :0-0
Timestamp: 2025-07-01T03:22:13.790Z
Learning: The file `llms-full.txt` in the ray-di.github.io repository is a generated document that should not be reviewed for content issues.
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/en/*.md : English documentation files use 'layout: docs-en', Japanese files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/ja/*.md : Japanese documentation files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/merge_md_files.rb : The 'bin/merge_md_files.rb' script combines all manual markdown files into single-page versions for both languages
.github/workflows/validate-documentation.yml (7)
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/en/*.md : English documentation files use 'layout: docs-en', Japanese files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/ja/*.md : Japanese documentation files use 'layout: docs-ja' in their front matter
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/copy_markdown_files.sh : Markdown files are manually copied to '_site' directory for direct access, supporting llms.txt standard for AI assistants
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/copy_markdown_files.sh : The 'bin/copy_markdown_files.sh' script copies all markdown files after Jekyll build to the '_site' directory for direct access
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to bin/merge_md_files.rb : The 'bin/merge_md_files.rb' script combines all manual markdown files into single-page versions for both languages
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/*.md : URLs for markdown files follow the pattern '/manuals/1.0/{lang}/{filename}.md' (AI-accessible) and '/manuals/1.0/{lang}/{filename}.html' (human-readable)
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/*.md : Documentation files use Jekyll front matter with layout, title, category, and permalink
manuals/1.0/en/1page.md (1)
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/*.md : Documentation files use descriptive names without numeric prefixes (e.g., 'installation.md', 'motivation.md')
manuals/1.0/ja/1page.md (3)
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/{en,ja}/*.md : Documentation files use descriptive names without numeric prefixes (e.g., 'installation.md', 'motivation.md')
Learnt from: CR
PR: ray-di/ray-di.github.io#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T16:36:41.125Z
Learning: Applies to manuals/1.0/ja/*.md : Japanese documentation files use 'layout: docs-ja' in their front matter
Learnt from: koriym
PR: ray-di/ray-di.github.io#0
File: :0-0
Timestamp: 2025-06-30T23:04:00.817Z
Learning: In the ray-di.github.io repository, files named `1page.md` (like `manuals/1.0/en/1page.md` and `manuals/1.0/ja/1page.md`) are generated files created by the `bin/merge_md_files.rb` script. These should not be reviewed for content issues. Instead, content reviews should focus on the original source markdown files located under the `manuals/` directory structure.
🪛 YAMLlint (1.37.1)
.github/workflows/claude-code-review.yml

[error] 20-20: trailing spaces

(trailing-spaces)


[error] 27-27: trailing spaces

(trailing-spaces)


[error] 42-42: trailing spaces

(trailing-spaces)


[error] 51-51: trailing spaces

(trailing-spaces)


[error] 56-56: trailing spaces

(trailing-spaces)


[error] 64-64: trailing spaces

(trailing-spaces)


[error] 67-67: trailing spaces

(trailing-spaces)


[error] 70-70: trailing spaces

(trailing-spaces)


[error] 73-73: trailing spaces

(trailing-spaces)


[warning] 78-78: too many blank lines (1 > 0)

(empty-lines)

.github/workflows/claude.yml

[error] 42-42: trailing spaces

(trailing-spaces)


[error] 45-45: trailing spaces

(trailing-spaces)


[error] 48-48: trailing spaces

(trailing-spaces)


[error] 51-51: trailing spaces

(trailing-spaces)


[error] 54-54: trailing spaces

(trailing-spaces)


[error] 60-60: trailing spaces

(trailing-spaces)

.github/workflows/documentation.yml

[error] 31-31: trailing spaces

(trailing-spaces)


[error] 37-37: trailing spaces

(trailing-spaces)


[error] 42-42: trailing spaces

(trailing-spaces)


[error] 46-46: trailing spaces

(trailing-spaces)


[error] 50-50: trailing spaces

(trailing-spaces)


[error] 53-53: trailing spaces

(trailing-spaces)


[error] 56-56: trailing spaces

(trailing-spaces)


[error] 59-59: trailing spaces

(trailing-spaces)


[error] 67-67: trailing spaces

(trailing-spaces)


[error] 83-83: no new line character at the end of file

(new-line-at-end-of-file)

.github/workflows/link-checker.yml

[error] 26-26: trailing spaces

(trailing-spaces)


[error] 32-32: trailing spaces

(trailing-spaces)


[error] 36-36: trailing spaces

(trailing-spaces)


[error] 41-41: trailing spaces

(trailing-spaces)


[error] 43-43: trailing spaces

(trailing-spaces)


[error] 47-47: trailing spaces

(trailing-spaces)


[error] 59-59: trailing spaces

(trailing-spaces)


[error] 61-61: trailing spaces

(trailing-spaces)


[error] 66-66: trailing spaces

(trailing-spaces)


[error] 69-69: trailing spaces

(trailing-spaces)


[error] 77-77: trailing spaces

(trailing-spaces)


[error] 83-83: trailing spaces

(trailing-spaces)


[error] 88-88: trailing spaces

(trailing-spaces)


[error] 93-93: trailing spaces

(trailing-spaces)


[error] 101-101: trailing spaces

(trailing-spaces)


[error] 106-106: trailing spaces

(trailing-spaces)


[error] 111-111: trailing spaces

(trailing-spaces)


[error] 113-113: trailing spaces

(trailing-spaces)


[error] 121-121: trailing spaces

(trailing-spaces)


[error] 134-134: trailing spaces

(trailing-spaces)


[error] 143-143: trailing spaces

(trailing-spaces)


[error] 145-145: trailing spaces

(trailing-spaces)


[error] 148-148: trailing spaces

(trailing-spaces)


[error] 150-150: trailing spaces

(trailing-spaces)


[error] 156-156: trailing spaces

(trailing-spaces)


[error] 162-162: trailing spaces

(trailing-spaces)


[error] 168-168: trailing spaces

(trailing-spaces)


[error] 176-176: trailing spaces

(trailing-spaces)


[error] 181-181: no new line character at the end of file

(new-line-at-end-of-file)

.github/workflows/update-documentation.yml

[error] 23-23: trailing spaces

(trailing-spaces)


[error] 29-29: trailing spaces

(trailing-spaces)


[error] 34-34: trailing spaces

(trailing-spaces)


[error] 39-39: trailing spaces

(trailing-spaces)


[error] 46-46: trailing spaces

(trailing-spaces)


[error] 51-51: trailing spaces

(trailing-spaces)


[error] 54-54: trailing spaces

(trailing-spaces)


[error] 59-59: trailing spaces

(trailing-spaces)


[error] 61-61: trailing spaces

(trailing-spaces)


[error] 72-72: trailing spaces

(trailing-spaces)


[error] 83-83: trailing spaces

(trailing-spaces)


[error] 94-94: trailing spaces

(trailing-spaces)


[error] 102-102: trailing spaces

(trailing-spaces)


[error] 109-109: trailing spaces

(trailing-spaces)


[error] 113-113: trailing spaces

(trailing-spaces)


[error] 117-117: trailing spaces

(trailing-spaces)


[error] 119-119: trailing spaces

(trailing-spaces)


[error] 126-126: trailing spaces

(trailing-spaces)


[error] 145-145: no new line character at the end of file

(new-line-at-end-of-file)

.github/workflows/validate-documentation.yml

[error] 20-20: trailing spaces

(trailing-spaces)


[error] 26-26: trailing spaces

(trailing-spaces)


[error] 31-31: trailing spaces

(trailing-spaces)


[error] 36-36: trailing spaces

(trailing-spaces)


[error] 45-45: trailing spaces

(trailing-spaces)


[error] 58-58: trailing spaces

(trailing-spaces)


[error] 64-64: trailing spaces

(trailing-spaces)


[error] 68-68: trailing spaces

(trailing-spaces)


[error] 72-72: trailing spaces

(trailing-spaces)


[error] 102-102: trailing spaces

(trailing-spaces)


[error] 111-111: trailing spaces

(trailing-spaces)


[error] 113-113: trailing spaces

(trailing-spaces)


[error] 117-117: trailing spaces

(trailing-spaces)


[error] 119-119: trailing spaces

(trailing-spaces)


[error] 126-126: trailing spaces

(trailing-spaces)


[error] 128-128: trailing spaces

(trailing-spaces)


[error] 132-132: trailing spaces

(trailing-spaces)


[error] 143-143: trailing spaces

(trailing-spaces)


[error] 150-150: trailing spaces

(trailing-spaces)


[error] 152-152: trailing spaces

(trailing-spaces)


[error] 156-156: trailing spaces

(trailing-spaces)


[error] 166-166: trailing spaces

(trailing-spaces)


[error] 178-178: no new line character at the end of file

(new-line-at-end-of-file)

🪛 actionlint (1.7.7)
.github/workflows/link-checker.yml

115-115: the runner of "actions/upload-artifact@v3" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🪛 LanguageTool
llms-full.txt

[grammar] ~361-~361: Use correct spacing
Context: ...[^dip]: Dependency Inversion Principle (DIP) ### Compile Time and Runtime Code under `b...

(QB_NEW_EN_OTHER_ERROR_IDS_5)


[grammar] ~2285-~2285: Use correct spacing
Context: ... attribute to the parameter you want to qualify. php use Ray\Di\Di\Inject; use Ray\Di\Di\Named; public function __construct( #[Named('checkout')] private CreditCardProcessorInterface $processor, #[Named('backup')] private CreditCardProcessorInterface $subProcessor ){} ## Binding Annotation Ray.Di can be used ...

(QB_NEW_EN_OTHER_ERROR_IDS_5)

manuals/1.0/en/1page.md

[grammar] ~1090-~1090: Use correct spacing
Context: ... attribute to the parameter you want to qualify. php use Ray\Di\Di\Inject; use Ray\Di\Di\Named; public function __construct( #[Named('checkout')] private CreditCardProcessorInterface $processor, #[Named('backup')] private CreditCardProcessorInterface $subProcessor ){} ## Binding Annotation Ray.Di can be used ...

(QB_NEW_EN_OTHER_ERROR_IDS_5)

manuals/1.0/ja/1page.md

[uncategorized] ~662-~662: 「ことができる」という表現は冗長な可能性があります。
Context: ...方法で依存を構築したり、キャッシュから事前に計算されたインスタンスを返したりすることができます。値の型は限定されず、mixedです。 以下は 2 つの `Provide...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~1032-~1032: 「ことができる」という表現は冗長な可能性があります。
Context: ...スはシリアライズ保存されるため、シリアライズ不可能なものはインスタンス束縛を使うことができません。代わりにプロバイダー束縛を使用することができます。 *** ## プ...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~1032-~1032: 「ことができる」という表現は冗長な可能性があります。
Context: ...ものはインスタンス束縛を使うことができません。代わりにプロバイダー束縛を使用することができます。 *** ## プロバイダー束縛 プロバイダー束縛は型に対してそのプ...

(DOUSI_KOTOGADEKIRU)


[uncategorized] ~1217-~1217: 「ことができる」という表現は冗長な可能性があります。
Context: ...必要です。しかしPDOはPHP自体のビルトインクラスなのでアトリビュートを加えることができません。 toConstructor()の第2引数の$nameで識別子...

(DOUSI_KOTOGADEKIRU)

🪛 markdownlint-cli2 (0.17.2)
manuals/1.0/ja/1page.md

1185-1185: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

🔇 Additional comments (6)
llms-full.txt (1)

1-2400: Generated artefact – skip content review

llms-full.txt is produced by automation (bin/merge_md_files.rb). We don’t review or manually edit generated outputs.

manuals/1.0/en/1page.md (1)

1088-1093: Generated file – skipping content review

1page.md is produced by bin/merge_md_files.rb; only source-markdown should be reviewed for wording/technical accuracy.
No action required here.

.github/workflows/documentation.yml (1)

47-50: Verify steps.pages.outputs.base_path exists in v5

actions/configure-pages@v5 renamed its output to base_url (no
base_path). Using the wrong key silently sets an empty --baseurl,
breaking internal links.

Please double-check the action docs and adjust:

-bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
+bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_url }}"

(or drop the flag if Jekyll’s baseurl is blank).

.github/workflows/update-documentation.yml (1)

104-122: Race condition when pushing to master

A scheduled job might run in parallel with another push, making
git pull --rebase origin master potentially interactive/conflicting.
Mitigate by:

  • fetching with --rebase --autostash
  • limiting pushes with --force-with-lease
  • or using the peter-evans/create-pull-request action instead of
    direct pushes.

Consider updating before this lands in prod.

.github/workflows/link-checker.yml (1)

1-181: Clean up trailing whitespace & missing final newline

yamllint reports >30 trailing-space offences and a missing EOF newline.
These fail strict linters and clutter diffs—please run yamlfmt or sed -i 's/[ \t]*$//' on the file.

manuals/1.0/ja/1page.md (1)

1-2510: Generated file – content review skipped

1page.md is produced by bin/merge_md_files.rb; per repository policy, it’s excluded from manual content review.

koriym and others added 8 commits July 9, 2025 12:43
- Update .lycherc.toml to exclude 1page.md files with exclude_file patterns
- Modify validate-documentation.yml to skip 1page.md in internal link checks
- Update link-checker.yml to exclude 1page.md from external link validation
- Use find command with \! -name "1page.md" to filter out generated files

This prevents validation errors on generated single-page documentation files.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Remove llms-full.txt from exclude_file list in .lycherc.toml
- Keep only 1page.md files excluded from link validation
- llms-full.txt is not a markdown file so doesn't need markdown-specific exclusion

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Replace deprecated --exclude-file with --exclude-path in .lycherc.toml
- Create .lycheeignore file for URL patterns as recommended
- Move URL exclusion patterns from .lycherc.toml to .lycheeignore
- This fixes the "No such file or directory" error in link checking

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
…terface

- Fix broken link https://google.github.io/Ray.Di/api-docs/latest/javadoc/com/google/inject/Provider.html
- Replace with correct Ray.Di ProviderInterface link to GitHub
- Update interface name from Provider to ProviderInterface to match Ray.Di implementation
- Follow the same pattern as Japanese version which correctly references Ray.Di

This resolves the 404 error found by the link checker.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Add PR comment functionality that only comments when issues are found
- Update existing comments instead of creating new ones to reduce spam
- Delete comments when all issues are resolved
- Collect external link check results in JSON format
- Parse broken links and display them with status information
- Only trigger on pull_request events to avoid unnecessary comments
- Clear indication that external link failures are warnings only

This provides immediate visibility of link issues without cluttering the PR.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
…eck results

- Remove intrusive PR comment system to avoid cluttering discussion
- Use GitHub Actions summary (GITHUB_STEP_SUMMARY) for result display
- Provide clear broken link information with status codes
- Include timestamp and warning notes about external links
- Simpler implementation without complex comment management logic
- Better separation of CI results from human communication

This follows GitHub's design philosophy and reduces bot noise in PRs.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Only display link check results summary when broken links are detected
- Remove unnecessary "All links working" messages for cleaner output
- Keep the summary focused on actionable information
- Reduces noise in successful validation runs

This follows the principle of "silence is golden" for CI systems.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
@koriym koriym merged commit 3e18226 into master Jul 9, 2025
1 check passed
@koriym koriym deleted the github-actions-workflows branch July 9, 2025 05:08
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