From 2af4815d0dcb5ed6237c75a0dc72ba5b216ca250 Mon Sep 17 00:00:00 2001 From: Nicholas Romero Date: Tue, 27 Jan 2026 11:42:17 -0600 Subject: [PATCH 1/6] test: Add test-merge-queue branch to workflow triggers This enables testing merge queue functionality without affecting main branch. Workflows modified: - validate.yml - claude-code-test.yml - cla.yml Co-Authored-By: Claude Opus 4.5 --- .github/workflows/cla.yml | 4 ++-- .github/workflows/claude-code-test.yml | 4 ++-- .github/workflows/validate.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml index d7d31e99..22e29d0a 100644 --- a/.github/workflows/cla.yml +++ b/.github/workflows/cla.yml @@ -5,10 +5,10 @@ on: types: [created] pull_request_target: types: [opened, synchronize] - branches: [main] + branches: [main, test-merge-queue] # Run in merge queue but skip the step (shows as passing check) merge_group: - branches: [main] + branches: [main, test-merge-queue] workflow_dispatch: # Explicitly set permissions for the workflow diff --git a/.github/workflows/claude-code-test.yml b/.github/workflows/claude-code-test.yml index 0c1633a0..f39ec635 100644 --- a/.github/workflows/claude-code-test.yml +++ b/.github/workflows/claude-code-test.yml @@ -11,10 +11,10 @@ on: type: boolean # Run on all PRs (shows as check, but steps skip unless in merge queue) pull_request: - branches: [main] + branches: [main, test-merge-queue] # Run in the merge queue to validate before merging merge_group: - branches: [main] + branches: [main, test-merge-queue] # Ensure only one instance runs at a time per PR/branch concurrency: diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 26a6ddf8..85cea163 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -2,9 +2,9 @@ name: Validate on: pull_request: - branches: [main] + branches: [main, test-merge-queue] merge_group: - branches: [main] + branches: [main, test-merge-queue] workflow_dispatch: # Minimal permissions for this workflow From fda053145d6cffb12f97ef2e25d54734f86847b7 Mon Sep 17 00:00:00 2001 From: Nicholas Romero Date: Tue, 27 Jan 2026 13:03:35 -0600 Subject: [PATCH 2/6] test: Second test PR for merge queue validation --- test-file-2.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 test-file-2.md diff --git a/test-file-2.md b/test-file-2.md new file mode 100644 index 00000000..66e10ebc --- /dev/null +++ b/test-file-2.md @@ -0,0 +1,5 @@ +# Test File 2 + +This file is for testing merge queue functionality. +Created: 2026-01-27T13:03:35-06:00 + From eea337743ef6355c7dd87ec77aceaec9b7a5c552 Mon Sep 17 00:00:00 2001 From: Nicholas Romero Date: Tue, 27 Jan 2026 13:26:18 -0600 Subject: [PATCH 3/6] test: First test PR for merge queue validation (#172) --- test-file-1.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 test-file-1.md diff --git a/test-file-1.md b/test-file-1.md new file mode 100644 index 00000000..9c0eca36 --- /dev/null +++ b/test-file-1.md @@ -0,0 +1,5 @@ +# Test File 1 + +This file is for testing merge queue functionality. +Created: 2026-01-27T12:09:02-06:00 + From f40435af93a2f497bd6f92a6e3fd33d47052bb6b Mon Sep 17 00:00:00 2001 From: Nicholas Romero Date: Wed, 28 Jan 2026 15:09:40 -0600 Subject: [PATCH 4/6] fix: Update CI test paths and enable merge queue validation Changes: - Fix claude-code-test.yml paths from .claude/commands/ to .claude/skills/ (generator now outputs to skills/ directory) - Remove test-merge-queue branch references from workflow triggers - Remove temporary test files This fix enables the merge queue to properly validate PRs before merging. The CI tests were previously passing on PRs because they skip actual tests, but would fail in the merge queue due to incorrect paths. Co-Authored-By: Claude Opus 4.5 --- .github/workflows/cla.yml | 4 ++-- .github/workflows/claude-code-test.yml | 30 +++++++++++++------------- .github/workflows/validate.yml | 4 ++-- test-file-1.md | 5 ----- test-file-2.md | 5 ----- 5 files changed, 19 insertions(+), 29 deletions(-) delete mode 100644 test-file-1.md delete mode 100644 test-file-2.md diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml index 22e29d0a..d7d31e99 100644 --- a/.github/workflows/cla.yml +++ b/.github/workflows/cla.yml @@ -5,10 +5,10 @@ on: types: [created] pull_request_target: types: [opened, synchronize] - branches: [main, test-merge-queue] + branches: [main] # Run in merge queue but skip the step (shows as passing check) merge_group: - branches: [main, test-merge-queue] + branches: [main] workflow_dispatch: # Explicitly set permissions for the workflow diff --git a/.github/workflows/claude-code-test.yml b/.github/workflows/claude-code-test.yml index f39ec635..ee8f03c6 100644 --- a/.github/workflows/claude-code-test.yml +++ b/.github/workflows/claude-code-test.yml @@ -11,10 +11,10 @@ on: type: boolean # Run on all PRs (shows as check, but steps skip unless in merge queue) pull_request: - branches: [main, test-merge-queue] + branches: [main] # Run in the merge queue to validate before merging merge_group: - branches: [main, test-merge-queue] + branches: [main] # Ensure only one instance runs at a time per PR/branch concurrency: @@ -82,20 +82,20 @@ jobs: # Validate generated commands exist echo "Checking generated commands..." - ls -la test_project/.claude/commands/ + ls -la test_project/.claude/skills/ # Verify command files exist - test -f test_project/.claude/commands/fruits.identify.md || (echo "Missing fruits.identify.md" && exit 1) - test -f test_project/.claude/commands/fruits.classify.md || (echo "Missing fruits.classify.md" && exit 1) + test -f test_project/.claude/skills/fruits.identify.md || (echo "Missing fruits.identify.md" && exit 1) + test -f test_project/.claude/skills/fruits.classify.md || (echo "Missing fruits.classify.md" && exit 1) # Verify command content - grep -q "# fruits.identify" test_project/.claude/commands/fruits.identify.md - grep -q "raw_items" test_project/.claude/commands/fruits.identify.md - grep -q "identified_fruits.md" test_project/.claude/commands/fruits.identify.md + grep -q "# fruits.identify" test_project/.claude/skills/fruits.identify.md + grep -q "raw_items" test_project/.claude/skills/fruits.identify.md + grep -q "identified_fruits.md" test_project/.claude/skills/fruits.identify.md - grep -q "# fruits.classify" test_project/.claude/commands/fruits.classify.md - grep -q "identified_fruits.md" test_project/.claude/commands/fruits.classify.md - grep -q "classified_fruits.md" test_project/.claude/commands/fruits.classify.md + grep -q "# fruits.classify" test_project/.claude/skills/fruits.classify.md + grep -q "identified_fruits.md" test_project/.claude/skills/fruits.classify.md + grep -q "classified_fruits.md" test_project/.claude/skills/fruits.classify.md echo "Command generation validated successfully!" @@ -173,7 +173,7 @@ jobs: echo "Fresh test project setup complete" echo "Available commands:" - ls -la test_project/.claude/commands/ + ls -la test_project/.claude/skills/ # STEP 1: Use /deepwork_jobs.define to CREATE the fruits job - name: Create job with /deepwork_jobs.define @@ -270,9 +270,9 @@ jobs: uv run deepwork sync --path test_project echo "=== Checking generated commands ===" - ls -la test_project/.claude/commands/ + ls -la test_project/.claude/skills/ - if [ -f "test_project/.claude/commands/fruits.identify.md" ] && [ -f "test_project/.claude/commands/fruits.classify.md" ]; then + if [ -f "test_project/.claude/skills/fruits.identify.md" ] && [ -f "test_project/.claude/skills/fruits.classify.md" ]; then echo "SUCCESS: Slash commands generated" else echo "ERROR: Slash commands were not generated" @@ -368,7 +368,7 @@ jobs: name: claude-code-e2e-outputs path: | test_project/.deepwork/jobs/fruits/ - test_project/.claude/commands/fruits.*.md + test_project/.claude/skills/fruits.*.md test_project/identified_fruits.md test_project/classified_fruits.md retention-days: 7 diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 85cea163..26a6ddf8 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -2,9 +2,9 @@ name: Validate on: pull_request: - branches: [main, test-merge-queue] + branches: [main] merge_group: - branches: [main, test-merge-queue] + branches: [main] workflow_dispatch: # Minimal permissions for this workflow diff --git a/test-file-1.md b/test-file-1.md deleted file mode 100644 index 9c0eca36..00000000 --- a/test-file-1.md +++ /dev/null @@ -1,5 +0,0 @@ -# Test File 1 - -This file is for testing merge queue functionality. -Created: 2026-01-27T12:09:02-06:00 - diff --git a/test-file-2.md b/test-file-2.md deleted file mode 100644 index 66e10ebc..00000000 --- a/test-file-2.md +++ /dev/null @@ -1,5 +0,0 @@ -# Test File 2 - -This file is for testing merge queue functionality. -Created: 2026-01-27T13:03:35-06:00 - From fb3d714dc7b4d4995d4acd4b6dd70d0a83a5cf9e Mon Sep 17 00:00:00 2001 From: Nicholas Romero Date: Wed, 28 Jan 2026 15:31:34 -0600 Subject: [PATCH 5/6] fix: Update CI test paths for skill directory structure The test workflow expected flat skill files but the generator creates skill directories. Updated all path checks from `.claude/skills/X.md` to `.claude/skills/X/SKILL.md` format. Co-Authored-By: Claude Opus 4.5 --- .github/workflows/claude-code-test.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/claude-code-test.yml b/.github/workflows/claude-code-test.yml index ee8f03c6..bdcfc861 100644 --- a/.github/workflows/claude-code-test.yml +++ b/.github/workflows/claude-code-test.yml @@ -84,18 +84,18 @@ jobs: echo "Checking generated commands..." ls -la test_project/.claude/skills/ - # Verify command files exist - test -f test_project/.claude/skills/fruits.identify.md || (echo "Missing fruits.identify.md" && exit 1) - test -f test_project/.claude/skills/fruits.classify.md || (echo "Missing fruits.classify.md" && exit 1) + # Verify command files exist (skills are directories with SKILL.md) + test -f test_project/.claude/skills/fruits.identify/SKILL.md || (echo "Missing fruits.identify/SKILL.md" && exit 1) + test -f test_project/.claude/skills/fruits.classify/SKILL.md || (echo "Missing fruits.classify/SKILL.md" && exit 1) # Verify command content - grep -q "# fruits.identify" test_project/.claude/skills/fruits.identify.md - grep -q "raw_items" test_project/.claude/skills/fruits.identify.md - grep -q "identified_fruits.md" test_project/.claude/skills/fruits.identify.md + grep -q "# fruits.identify" test_project/.claude/skills/fruits.identify/SKILL.md + grep -q "raw_items" test_project/.claude/skills/fruits.identify/SKILL.md + grep -q "identified_fruits.md" test_project/.claude/skills/fruits.identify/SKILL.md - grep -q "# fruits.classify" test_project/.claude/skills/fruits.classify.md - grep -q "identified_fruits.md" test_project/.claude/skills/fruits.classify.md - grep -q "classified_fruits.md" test_project/.claude/skills/fruits.classify.md + grep -q "# fruits.classify" test_project/.claude/skills/fruits.classify/SKILL.md + grep -q "identified_fruits.md" test_project/.claude/skills/fruits.classify/SKILL.md + grep -q "classified_fruits.md" test_project/.claude/skills/fruits.classify/SKILL.md echo "Command generation validated successfully!" @@ -272,7 +272,7 @@ jobs: echo "=== Checking generated commands ===" ls -la test_project/.claude/skills/ - if [ -f "test_project/.claude/skills/fruits.identify.md" ] && [ -f "test_project/.claude/skills/fruits.classify.md" ]; then + if [ -f "test_project/.claude/skills/fruits.identify/SKILL.md" ] && [ -f "test_project/.claude/skills/fruits.classify/SKILL.md" ]; then echo "SUCCESS: Slash commands generated" else echo "ERROR: Slash commands were not generated" @@ -368,7 +368,7 @@ jobs: name: claude-code-e2e-outputs path: | test_project/.deepwork/jobs/fruits/ - test_project/.claude/skills/fruits.*.md + test_project/.claude/skills/fruits.*/SKILL.md test_project/identified_fruits.md test_project/classified_fruits.md retention-days: 7 From e34ed3670f63dfe9e91217dc070c5b2346afb167 Mon Sep 17 00:00:00 2001 From: Nicholas Romero Date: Wed, 28 Jan 2026 16:19:23 -0600 Subject: [PATCH 6/6] fix: Use --dangerously-skip-permissions instead of --yes for Claude CLI The --yes flag doesn't exist in the Claude CLI. The correct flag for bypassing permission prompts in CI is --dangerously-skip-permissions. Co-Authored-By: Claude Opus 4.5 --- .github/workflows/claude-code-test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/claude-code-test.yml b/.github/workflows/claude-code-test.yml index bdcfc861..1fba7170 100644 --- a/.github/workflows/claude-code-test.yml +++ b/.github/workflows/claude-code-test.yml @@ -184,7 +184,7 @@ jobs: echo "=== Running /deepwork_jobs.define to create fruits job ===" # Provide detailed, deterministic instructions for creating the job - claude --yes --print "/deepwork_jobs.define" <<'PROMPT_EOF' + claude --dangerously-skip-permissions --print "/deepwork_jobs.define" <<'PROMPT_EOF' I want to create a simple job called "fruits" for identifying and classifying fruits. Here are the EXACT specifications - please create the job.yml with these exact details: @@ -233,7 +233,7 @@ jobs: run: | echo "=== Running /deepwork_jobs.implement to generate step instructions ===" - claude --yes --print "/deepwork_jobs.implement" <<'PROMPT_EOF' + claude --dangerously-skip-permissions --print "/deepwork_jobs.implement" <<'PROMPT_EOF' Please implement the "fruits" job that was just defined. For the identify step, create instructions that: @@ -287,7 +287,7 @@ jobs: run: | echo "=== Running /fruits.identify with test input ===" - claude --yes --print "/fruits.identify" <<'PROMPT_EOF' + claude --dangerously-skip-permissions --print "/fruits.identify" <<'PROMPT_EOF' raw_items: apple, car, banana, chair, orange, table, mango, laptop, grape, bicycle PROMPT_EOF @@ -309,7 +309,7 @@ jobs: run: | echo "=== Running /fruits.classify ===" - claude --yes --print "/fruits.classify" + claude --dangerously-skip-permissions --print "/fruits.classify" # Verify output was created if [ -f "classified_fruits.md" ]; then