Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ jobs:
- name: Setup Bats and bats libs
id: setup-bats
uses: bats-core/bats-action@3.0.1
with:
cache: false

- name: Run all tests
shell: bash
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ jobs:
- name: Setup Bats and bats libs
id: setup-bats
uses: bats-core/bats-action@3.0.1
with:
cache: false

- name: Run tests
shell: bash
Expand Down
86 changes: 64 additions & 22 deletions .omc/prd.json
Original file line number Diff line number Diff line change
@@ -1,44 +1,86 @@
{
"project": "Fix CI Release Workflow Auto-Merge Issue",
"branchName": "ralph/fix-release-workflow-automerge",
"description": "release.yml workflow에서 PR 생성 후 auto-merge가 작동하지 않는 문제 해결. 현재 bot이 생성한 PR에 대해 workflow가 skip되어 merge가 진행되지 않음.",
"project": "Auto-Updater Config System",
"branchName": "ralph/auto-updater-config",
"description": "auto-updater에 config.json 개념을 도입하여 여러 마켓플레이스와 특정 플러그인 업데이트 지원",
"userStories": [
{
"id": "US-001",
"title": "Analyze current release workflow issue",
"description": "As a developer, I want to understand why release PRs are not auto-merging so that I can fix the root cause.",
"title": "Config 파싱 라이브러리 구현",
"description": "개발자가 config.json을 로드하고 파싱할 수 있도록 config.sh 라이브러리를 구현한다.",
"acceptanceCriteria": [
"Root cause identified: `if: ${{ !contains(github.actor, '[bot]') }}` prevents bot-triggered workflows",
"Understand the skip behavior in release workflow logs",
"Document why the condition exists and what needs to change"
"load_config() 함수 구현 - config.json 없으면 기본값 반환",
"get_plugins_for_marketplace() 함수 구현 - plugins 필드 필터링",
"config.json 파싱 실패 시 기본값 사용 및 경고 메시지",
"ShellCheck 통과"
],
"priority": 1,
"passes": false
"passes": true
},
{
"id": "US-002",
"title": "Fix workflow trigger condition for release PRs",
"description": "As a developer, I want to modify the release.yml workflow so that release PRs created by the bot can still trigger the workflow and merge.",
"title": "메인 업데이트 스크립트 구현",
"description": "사용자가 /update-all-plugins 명령으로 여러 마켓플레이스의 플러그인을 업데이트할 수 있다.",
"acceptanceCriteria": [
"Update the bot exclusion condition to allow release PR workflows",
"Ensure release commits still trigger the workflow",
"Prevent infinite loops (release creating another release)"
"update.sh 스크립트 구현",
"다중 마켓플레이스 지원",
"marketplace.json 다운로드 실패 시 해당 마켓플레이스 건너뜀",
"설치된 플러그인 확인 (claude plugin list --json)",
"버전 비교 및 업데이트 로직",
"ShellCheck 통과"
],
"priority": 2,
"passes": false
"passes": true
},
{
"id": "US-003",
"title": "Test the fixed release workflow",
"description": "As a developer, I want to verify the release workflow works correctly after the fix.",
"title": "체크 전용 스크립트 구현",
"description": "사용자가 업데이트 가능한 플러그인을 확인만 할 수 있다.",
"acceptanceCriteria": [
"Create a test commit that triggers release",
"Verify release PR is created",
"Verify PR is auto-merged",
"Verify workflow completes successfully"
"check.sh 스크립트 구현",
"실제 업데이트 없이 버전 비교만 수행",
"업데이트 가능한 플러그인 목록 출력",
"ShellCheck 통과"
],
"priority": 3,
"passes": false
"passes": true
},
{
"id": "US-004",
"title": "Skill 업데이트",
"description": "사용자가 /update-all-plugins 명령으로 새 update.sh 스크립트를 실행할 수 있다.",
"acceptanceCriteria": [
"skills/update-all-plugins/SKILL.md가 update.sh 호출하도록 수정",
"기존 update-all-plugins.sh 스크립트 삭제",
"Skill 테스트 통과"
],
"priority": 4,
"passes": true
},
{
"id": "US-005",
"title": "레거시 스크립트 정리",
"description": "사용되지 않는 레거시 스크립트를 삭제한다.",
"acceptanceCriteria": [
"update-checker.sh 삭제",
"check-and-update.sh 삭제",
"파일 구조가 문서와 일치"
],
"priority": 5,
"passes": true
},
{
"id": "US-006",
"title": "통합 테스트",
"description": "모든 기능이 함께 올바르게 동작하는지 확인한다.",
"acceptanceCriteria": [
"config.json 없이 실행 시 기본값으로 동작",
"다중 마켓플레이스 config 테스트",
"특정 플러그인만 업데이트하는 config 테스트",
"에러 핸들링 시나리오 테스트",
"수동 테스트 통과"
],
"priority": 6,
"passes": true
}
]
}
29 changes: 5 additions & 24 deletions .omc/progress.txt
Original file line number Diff line number Diff line change
@@ -1,29 +1,10 @@
# Ralph Progress Log
Started: 2026-01-31T08:00:00Z
Started: 2026-02-01T13:00:00Z

## Codebase Patterns

### Release Workflow Analysis
- **File**: `.github/workflows/release.yml`
- **Issue**: Line 15 has `if: ${{ !contains(github.actor, '[bot]') }}` which prevents bot-triggered workflows
- **Symptom**: Recent release PRs (#227, #228) show "skipped" status
- **Root Cause**: When semantic-release creates a release PR, the commit is made by github-actions[bot]. When this bot-created PR is pushed, the workflow sees `[bot]` in the actor and skips execution.

### Current Flow (Broken)
1. User pushes to main → Release workflow runs (not a bot)
2. semantic-release creates release branch + PR
3. PR is created with `--auto --squash` merge
4. GitHub merges the PR (creates merge commit on main)
5. **Problem**: Merge commit triggers release workflow again, but actor is github-actions[bot] → workflow skips

### Semantic Release Config
- `.releaserc.js` uses `@semantic-release/github` plugin
- Creates release PRs with version bumps
- Publishes releases to GitHub

### Branch Protection Rules (Need to Check)
- May affect auto-merge behavior
- Required status checks?
- Required reviewers?
- Shell 스크립트: `set -euo pipefail` 사용
- JSON 파싱: `jq` 사용
- 경로 포터빌리티: `${CLAUDE_PLUGIN_ROOT}` 사용
- 에러 메시지: stderr(`>&2`)로 출력

---
14 changes: 14 additions & 0 deletions .omc/sessions/4564ab05-8348-40cc-baeb-0e5288924774.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"session_id": "4564ab05-8348-40cc-baeb-0e5288924774",
"started_at": "2026-02-01T04:13:00.025Z",
"ended_at": "2026-02-01T04:30:38.892Z",
"reason": "clear",
"agents_spawned": 14,
"agents_completed": 0,
"modes_used": [
"autopilot",
"ralph",
"ultrawork"
],
"duration_ms": 1058867
}
13 changes: 13 additions & 0 deletions .omc/sessions/4e34fb82-21dd-4b03-ad7f-a12606a726bd.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"session_id": "4e34fb82-21dd-4b03-ad7f-a12606a726bd",
"started_at": "2026-01-31T07:55:58.601Z",
"ended_at": "2026-02-01T03:43:19.379Z",
"reason": "prompt_input_exit",
"agents_spawned": 5,
"agents_completed": 0,
"modes_used": [
"ralph",
"ultrawork"
],
"duration_ms": 71240778
}
13 changes: 13 additions & 0 deletions .omc/sessions/edb248b4-0ea0-4f17-bc89-d18519054802.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"session_id": "edb248b4-0ea0-4f17-bc89-d18519054802",
"started_at": "2026-01-31T07:55:58.601Z",
"ended_at": "2026-02-01T03:59:49.639Z",
"reason": "clear",
"agents_spawned": 0,
"agents_completed": 0,
"modes_used": [
"ralph",
"ultrawork"
],
"duration_ms": 72231038
}
7 changes: 7 additions & 0 deletions .omc/state/autopilot-state.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"active": true,
"started_at": "2026-02-01T04:13:00.025Z",
"original_prompt": "/oh-my-claudecode:autopilot auto-updater 하위에 적절하게 test코드가 있는게 맞아?",
"reinforcement_count": 0,
"last_checked_at": "2026-02-01T04:13:00.026Z"
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@
"completed": 0
},
"wisdom_exported": true
}
}
2 changes: 1 addition & 1 deletion .omc/state/checkpoints/wisdom-2026-01-31T09-11-52-556Z.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,4 @@ The auto-updater test failure is a separate issue that needs to be addressed, bu
## Next Steps

1. Fix the flaky auto-updater test (separate issue)
2. Monitor future releases to ensure the fix continues to work
2. Monitor future releases to ensure the fix continues to work
8 changes: 4 additions & 4 deletions .omc/state/ralph-state.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"active": true,
"started_at": "2026-01-31T07:55:58.601Z",
"original_prompt": "/oh-my-claudecode:ralph 검증까지 해야지?",
"started_at": "2026-02-01T04:01:53.123Z",
"original_prompt": "/oh-my-claudecode:ralph ",
"reinforcement_count": 0,
"last_checked_at": "2026-01-31T07:55:58.602Z",
"iteration": 9
"last_checked_at": "2026-02-01T04:01:53.124Z",
"iteration": 13
}
54 changes: 8 additions & 46 deletions .omc/state/subagent-tracking.json
Original file line number Diff line number Diff line change
@@ -1,53 +1,15 @@
{
"agents": [
{
"agent_id": "ac68592",
"agent_type": "oh-my-claudecode:executor",
"started_at": "2026-01-31T07:47:24.010Z",
"parent_mode": "ultrawork",
"status": "failed",
"completed_at": "2026-01-31T07:47:40.121Z",
"duration_ms": 16111
},
{
"agent_id": "a0c0582",
"agent_type": "oh-my-claudecode:executor",
"started_at": "2026-01-31T07:47:46.748Z",
"parent_mode": "ultrawork",
"status": "failed",
"completed_at": "2026-01-31T07:47:58.188Z",
"duration_ms": 11440
},
{
"agent_id": "a9e37bb",
"agent_type": "oh-my-claudecode:executor",
"started_at": "2026-01-31T07:48:32.447Z",
"parent_mode": "ultrawork",
"status": "failed",
"completed_at": "2026-01-31T07:53:20.364Z",
"duration_ms": 287917
},
{
"agent_id": "a60fe2a",
"agent_type": "oh-my-claudecode:architect",
"started_at": "2026-01-31T07:53:29.699Z",
"parent_mode": "ultrawork",
"status": "failed",
"completed_at": "2026-01-31T07:54:06.680Z",
"duration_ms": 36981
},
{
"agent_id": "abc4d3c",
"agent_type": "oh-my-claudecode:explore",
"started_at": "2026-01-31T09:10:01.510Z",
"parent_mode": "ultrawork",
"status": "failed",
"completed_at": "2026-01-31T09:11:01.184Z",
"duration_ms": 59674
"agent_id": "aa620c0",
"agent_type": "Explore",
"started_at": "2026-02-01T04:59:03.275Z",
"parent_mode": "autopilot",
"status": "running"
}
],
"total_spawned": 5,
"total_spawned": 1,
"total_completed": 0,
"total_failed": 5,
"last_updated": "2026-01-31T10:13:50.251Z"
"total_failed": 0,
"last_updated": "2026-02-01T04:59:03.276Z"
}
8 changes: 4 additions & 4 deletions .omc/state/ultrawork-state.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"active": true,
"started_at": "2026-01-31T07:55:58.602Z",
"original_prompt": "/oh-my-claudecode:ralph 검증까지 해야지?",
"started_at": "2026-02-01T04:01:53.126Z",
"original_prompt": "/oh-my-claudecode:ralph ",
"reinforcement_count": 0,
"last_checked_at": "2026-01-31T07:55:58.602Z"
}
"last_checked_at": "2026-02-01T04:01:53.126Z"
}
Loading
Loading