Skip to content

Dev#27

Merged
FutureUnreal merged 5 commits intomainfrom
dev
Feb 8, 2026
Merged

Dev#27
FutureUnreal merged 5 commits intomainfrom
dev

Conversation

@FutureUnreal
Copy link
Member

@FutureUnreal FutureUnreal commented Feb 8, 2026

概要

修复所有 Claude CI 工作流中 claude_args 的格式问题(改为 YAML 多行格式),修复 heredoc 定界符引号问题,并同步 CONTRIBUTING.md 和 README.md 使其与项目当前实际状态一致。

问题

  1. 各 Claude GitHub Action 工作流中 claude_args 使用单行字符串传参,不符合 action spec 的多行格式要求,可能导致参数解析异常。
  2. claude-issue-duplicate-check.yml 中 heredoc 定界符带引号('EOF'),导致变量替换行为不符合预期。
  3. CONTRIBUTING.md 和 README.md 中的版本要求、仓库 URL、端口号、目录结构、启动命令等信息与项目现状不一致。

关联 PR:

解决方案

  • 将 7 个 Claude 工作流文件中的 claude_args 从单行字符串改为 YAML 多行块标量(|),每个参数独占一行,提升可读性并符合 action 规范。
  • 移除 claude-issue-duplicate-check.yml 中 heredoc 定界符的多余引号。
  • 逐项修正文档中的过时信息,与 CI 环境和实际项目结构保持同步。

变更内容

CI 工作流修复

  • claude_args 多行格式化(7 个文件):claude-ci-autofix.ymlclaude-issue-auto-response.ymlclaude-issue-duplicate-check.ymlclaude-mention-responder.ymlclaude-pr-description.ymlclaude-pr-review.ymlclaude-review-responder.yml
  • heredoc 定界符修复claude-issue-duplicate-check.yml'EOF'EOF

文档同步(CONTRIBUTING.md + README.md)

  • 仓库 URLWhaleWhisper.gitwhale-whisper.git(含 Issues、Discussions 链接)
  • 版本要求:Python 3.8+ → 3.10+、Node.js 16+ → 20、pnpm 8+ → 9.12.2
  • 启动命令uvicornuv run uvicorn
  • 前端端口:5173 → 5174
  • 目录结构:更新为 frontend/apps/webfrontend/apps/desktop-tauribackend/examplesbackend/scriptsdata/ 等实际结构
  • 前端验证:移除不存在的 pnpm run typecheck 命令
  • 贡献者徽章base-nlpwhale-whisper
  • 新增安全漏洞报告指引:引导至 .github/SECURITY.md
  • 其他:Python 类型注解说明改为 3.10+、共享代码目录说明更新、PR 提交清单措辞调整

测试

自测方式

  • YAML 语法正确性已通过 CI 验证
  • 文档链接和命令与项目实际状态一致

Checklist

  • 代码符合项目规范
  • 已完成自审
  • 文档已更新

由 Claude AI 自动生成

FutureUnreal and others added 5 commits February 9, 2026 00:07
Change claude_args from single-line string to YAML block scalar (|)
with each argument on its own line. This matches the format used by
the reference project and prevents argument parsing issues.
docs: sync contributing and README
GitHub Actions multiline output syntax requires bare delimiter (EOF),
not quoted ('EOF').
@github-actions github-actions bot added area/ci Touches CI/CD (.github) area/docs Touches docs/README size/S PR size: < 200 lines changed labels Feb 8, 2026
@qodo-code-review
Copy link

Review Summary by Qodo

Fix workflow argument formatting and sync documentation with current setup

🐞 Bug fix 📝 Documentation

Grey Divider

Walkthroughs

Description
• Convert claude_args from single-line to YAML block scalar format across 7 workflow files
• Fix GitHub Actions heredoc syntax by removing quotes from delimiter in duplicate check workflow
• Update CONTRIBUTING.md and README.md with accurate environment requirements and setup instructions
• Correct repository URLs from WhaleWhisper to whale-whisper and update localhost port from 5173 to
  5174
• Add security vulnerability reporting guidelines and clarify code organization structure
Diagram
flowchart LR
  A["Workflow Files<br/>7 files"] -- "Convert claude_args<br/>to block scalar" --> B["Multiline Format<br/>Arguments"]
  C["Heredoc Syntax<br/>duplicate-check.yml"] -- "Remove quotes<br/>from EOF" --> D["Valid GitHub<br/>Actions Output"]
  E["CONTRIBUTING.md<br/>README.md"] -- "Update environment<br/>requirements & URLs" --> F["Accurate Setup<br/>Instructions"]
  B --> G["Consistent<br/>Workflow Config"]
  D --> G
  F --> G
Loading

Grey Divider

File Changes

1. .github/workflows/claude-ci-autofix.yml 🐞 Bug fix +8/-2

Convert claude_args to multiline block scalar format

.github/workflows/claude-ci-autofix.yml


2. .github/workflows/claude-issue-auto-response.yml 🐞 Bug fix +4/-1

Convert claude_args to multiline block scalar format

.github/workflows/claude-issue-auto-response.yml


3. .github/workflows/claude-issue-duplicate-check.yml 🐞 Bug fix +5/-2

Fix heredoc delimiter and convert claude_args format

.github/workflows/claude-issue-duplicate-check.yml


View more (6)
4. .github/workflows/claude-mention-responder.yml 🐞 Bug fix +4/-1

Convert claude_args to multiline block scalar format

.github/workflows/claude-mention-responder.yml


5. .github/workflows/claude-pr-description.yml 🐞 Bug fix +4/-1

Convert claude_args to multiline block scalar format

.github/workflows/claude-pr-description.yml


6. .github/workflows/claude-pr-review.yml 🐞 Bug fix +4/-1

Convert claude_args to multiline block scalar format

.github/workflows/claude-pr-review.yml


7. .github/workflows/claude-review-responder.yml 🐞 Bug fix +4/-1

Convert claude_args to multiline block scalar format

.github/workflows/claude-review-responder.yml


8. CONTRIBUTING.md 📝 Documentation +29/-23

Update environment requirements, URLs, and setup instructions

CONTRIBUTING.md


9. README.md 📝 Documentation +16/-14

Update Python version requirement and repository URLs

README.md


Grey Divider

Qodo Logo

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 8, 2026

Greptile Overview

Greptile Summary

This PR merges development branch updates that improve GitHub Actions workflows and documentation consistency.

Key Changes:

  • Workflow Configuration: Reformatted claude_args from single-line to multiline YAML format across all 7 Claude workflows for better readability and to match the action specification
  • Heredoc Fix: Removed quotes from heredoc delimiter in claude-issue-duplicate-check.yml (changed 'EOF' to EOF) to enable proper variable expansion for $GITHUB_REPOSITORY and $ISSUE_NUMBER
  • Documentation Updates:
    • Updated Python requirement from 3.8+ to 3.10+ across README and CONTRIBUTING
    • Fixed repository URLs from WhaleWhisper to whale-whisper (kebab-case)
    • Updated local dev port from 5173 to 5174
    • Changed backend command to use uv run prefix
    • Added security vulnerability reporting section referencing .github/SECURITY.md
    • Updated project structure documentation to reflect current monorepo layout
    • Removed typecheck command from testing instructions

All changes are maintenance updates that improve consistency and correctness without altering application logic.

Confidence Score: 5/5

  • This PR is safe to merge with no risk - all changes are documentation and configuration improvements
  • Perfect score due to: (1) all changes are non-functional configuration/documentation updates, (2) heredoc fix resolves a bug preventing variable expansion, (3) multiline format improves maintainability, (4) documentation updates ensure accuracy with current setup, (5) no logic changes to application code
  • No files require special attention

Important Files Changed

Filename Overview
.github/workflows/claude-issue-duplicate-check.yml Fixed heredoc delimiter to enable variable expansion in GitHub Actions prompt
CONTRIBUTING.md Updated Python version requirements, repository URLs, local dev port, and added security vulnerability reporting section
README.md Updated Python version badge, repository URLs, local dev port, and project structure documentation

Sequence Diagram

sequenceDiagram
    participant Dev as Developer
    participant GH as GitHub Actions
    participant Claude as Claude Code Action
    participant Repo as Repository

    Note over Dev,Repo: Workflow Configuration Updates

    Dev->>Repo: Push changes to workflow files
    Note over Repo: Updated 7 Claude workflow files<br/>with multiline claude_args

    Dev->>Repo: Push documentation updates
    Note over Repo: Updated CONTRIBUTING.md & README.md<br/>with Python 3.10+ requirements

    Note over GH,Claude: Issue Duplicate Check Workflow
    GH->>GH: Issue opened trigger
    GH->>GH: Load prompt with heredoc (EOF)
    Note over GH: Variable expansion enabled<br/>$GITHUB_REPOSITORY, $ISSUE_NUMBER
    GH->>Claude: Execute with expanded variables
    Claude->>Repo: Search for duplicate issues
    Claude->>GH: Label & comment if duplicate found

    Note over GH,Claude: Other Claude Workflows
    GH->>GH: Various triggers (PR, CI failure, mentions)
    GH->>Claude: Execute with multiline args
    Note over Claude: --model<br/>--max-turns<br/>--allowedTools
    Claude->>Repo: Perform automated tasks
    Claude->>GH: Create PRs, comments, reviews
Loading

@qodo-code-review
Copy link

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider


Remediation recommended

1. claude_args newline risk 🐞 Bug ⛯ Reliability
Description
claude_args was changed from a single-line string to a YAML literal block (|), which produces
  a value containing embedded newlines (and typically a trailing newline).
• If the downstream action treats claude_args as one raw argument string (vs splitting on all
  whitespace), the newlines can cause mis-parsing of flags or failures; using a folded scalar
  preserves readability while keeping single-line semantics.
Code

.github/workflows/claude-ci-autofix.yml[R185-188]

+          claude_args: |
+            --model ${{ vars.CLAUDE_MODEL || 'claude-sonnet-4-5-20250929' }}
+            --max-turns 999
+            --allowedTools Read,Write,Edit,Bash(*)
Evidence
The workflow passes claude_args directly as an input to anthropics/claude-code-action@v1, and
the updated YAML uses a literal block scalar which necessarily includes newline separators in the
resulting string value.

.github/workflows/claude-ci-autofix.yml[66-72]
.github/workflows/claude-ci-autofix.yml[185-189]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`claude_args` is now expressed as a YAML literal block (`|`), which introduces newline characters into the input value. If the action consuming this input does not normalize newlines as argument separators, it may mis-parse or fail.

### Issue Context
This change appears across multiple workflows and is intended as a readability improvement. We can keep the formatting while preserving single-line semantics by using a folded scalar.

### Fix Focus Areas
- .github/workflows/claude-ci-autofix.yml[185-189]
- .github/workflows/claude-ci-autofix.yml[495-499]
- .github/workflows/claude-issue-auto-response.yml[366-369]
- .github/workflows/claude-mention-responder.yml[236-239]
- .github/workflows/claude-pr-description.yml[202-205]
- .github/workflows/claude-pr-review.yml[235-238]
- .github/workflows/claude-review-responder.yml[251-254]
- .github/workflows/claude-issue-duplicate-check.yml[83-86]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Advisory comments

2. Fragile output delimiter 🐞 Bug ⛯ Reliability
Description
• The workflow writes a multi-line step output using a fixed delimiter EOF.
• This is generally fine, but it is fragile: if the prompt file ever contains a standalone line
  equal to EOF, the output would truncate and the action would receive an incomplete prompt.
Code

.github/workflows/claude-issue-duplicate-check.yml[R65-67]

+            echo "prompt<<EOF"
            cat .github/prompts/claude-issue-duplicate-check.md
            echo "EOF"
Evidence
The workflow uses a static delimiter (EOF) for a multi-line output value. Static delimiters can
collide with content, truncating the output.

.github/workflows/claude-issue-duplicate-check.yml[59-68]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The workflow uses a fixed heredoc delimiter (`EOF`) when writing a multiline value to `$GITHUB_OUTPUT`. If the prompt content ever contains a line exactly matching the delimiter, the output will truncate.

### Issue Context
This is a robustness improvement; current prompt content does not include `EOF`, but future edits could.

### Fix Focus Areas
- .github/workflows/claude-issue-duplicate-check.yml[59-68]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

@github-actions
Copy link

github-actions bot commented Feb 8, 2026

GitHub API calls via gh fail in this runner (error connecting to api.github.com), so this review used the local git diff for PR #27 from the Actions event payload: base 81e9d35472cdc54f75040fe033b5808727b706b5 → head e0a230a5b632e0945430be8b1fcd8954dd792e1e.

PR Size: S

  • Lines changed: 124 (78 additions, 46 deletions)
  • Files changed: 9

No issues met the “report only if confidence >= 80” threshold in the changed hunks, so there are no inline review comments to post.

REPO="${PR_REPO:-$GITHUB_REPOSITORY}"
PR="${PR_NUMBER}"
LATEST_COMMIT_SHA="e0a230a5b632e0945430be8b1fcd8954dd792e1e"

# Size label (if your runner has GitHub API access)
gh pr edit "$PR" --repo "$REPO" --add-label "size/S"

# Summary review
SUMMARY=$(cat <<'EOF'
## 🤖 Codex PR Review

No significant issues identified in this PR.

### PR Size: S
- **Lines changed**: 124
- **Files changed**: 9

### Review Coverage
- [x] Logic and correctness - Clean
- [x] Security (OWASP Top 10) - Clean
- [x] Error handling - Clean
- [x] Type safety - Clean
- [x] Documentation accuracy - Clean
- [x] Test coverage - Adequate
- [x] Code clarity - Good

---
*Automated review by Codex AI*
EOF
)

gh pr review "$PR" --repo "$REPO" --comment --body "$SUMMARY"

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Code Review Summary

Clean PR that fixes CI workflow configuration issues and synchronizes documentation with the actual project state. All changes verified against the repository.

PR Size: S

Key findings:

  • Heredoc delimiter fix (claude-issue-duplicate-check.yml): The change from 'EOF' to EOF is a genuine bug fix. The old code set the GitHub Actions multiline output delimiter to the literal string 'EOF' (with quotes) via echo "prompt<<'EOF'", but attempted to close it with echo "EOF" (without quotes). These delimiters don't match, so the multiline output would never terminate properly.
  • claude_args multiline formatting: Converting from single-line strings to YAML block scalars (|) across 7 workflow files. This is a valid formatting improvement — the claude_args input is a composite action parameter that accepts multiline strings.
  • Documentation updates: Verified against actual project state — Python >= 3.10 matches backend/pyproject.toml, port 5174 matches frontend/apps/web/vite.config.ts, repo URL casing matches the actual GitHub repository, directory structure matches the filesystem, and .github/SECURITY.md exists as referenced.

Issues Found

Category Critical High Medium Low
Logic and correctness 0 0 0 0
Security 0 0 0 0
Error handling 0 0 0 0
Type safety 0 0 0 0
Documentation accuracy 0 0 0 0
Test coverage 0 0 0 0
Code clarity 0 0 0 0

Review Coverage

  • Logic and correctness
  • Security (OWASP Top 10)
  • Error handling
  • Type safety
  • Documentation accuracy
  • Test coverage
  • Code clarity

Automated review by Claude AI

@FutureUnreal FutureUnreal merged commit 72772ce into main Feb 8, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/ci Touches CI/CD (.github) area/docs Touches docs/README size/S PR size: < 200 lines changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant