feat(dev-team): sync PR skill with latest bugfix workflow improvements#98
Conversation
Bring the dev-team PR skill up to date with improvements from the bugfix workflow's PR skill. Key changes: - Add expired token recovery via git credential helper - Detect upstream default branch instead of assuming `main` - Track FORK_REMOTE and UPSTREAM_REMOTE explicitly - Compare fork sync against upstream remote, not local branch - Use `--body-file` for PR description from artifacts - Add dispatch block for controller/speedrun integration - Improve branch naming conventions for bugfix context - Add "When This Phase Is Done" section Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
WalkthroughUpdated two PR skill docs to generalize "bug fix" → "changes", introduce workflow-aware variables (DEFAULT_BRANCH, UPSTREAM_REMOTE, FORK_REMOTE, ARTIFACT_DIR), and add robust auth/upstream/fork detection plus fallbacks for creating or publishing PRs and degraded patch output. Changes
Sequence Diagram(s)sequenceDiagram
participant Skill as PR Skill
participant GH as gh CLI
participant Git as git
participant Upstream as Upstream Remote
participant Fork as Fork Remote
participant Artifacts as ARTIFACT_DIR
Skill->>GH: gh auth status
alt auth OK
GH-->>Skill: authenticated
Skill->>GH: gh repo view -> defaultBranchRef (DEFAULT_BRANCH)
else auth fails
GH-->>Skill: auth error
Skill->>Git: git credential helper lookup
alt token recovered
Skill->>GH: gh auth login --with-token
else
Skill->>Skill: set AUTH_TYPE = none
Skill->>Git: inspect remotes -> derive UPSTREAM_REMOTE, DEFAULT_BRANCH
end
end
Skill->>Git: determine FORK_REMOTE from remotes/URLs
Skill->>Git: compare/sync FORK_REMOTE/DEFAULT_BRANCH ↔ UPSTREAM_REMOTE/DEFAULT_BRANCH
Skill->>Git: create feature branch (TYPE/...-issue) and commit
Skill->>Git: push to FORK_REMOTE
Skill->>GH: gh pr create --base DEFAULT_BRANCH --title ... --body-file ARTIFACT_DIR/docs/pr-description.md
alt gh pr create fails (no API)
Skill->>Artifacts: write ARTIFACT_DIR/docs/pr-description.md and ARTIFACT_DIR/changes.patch
Skill->>Skill: emit compare URL for manual PR
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes 🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 7
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@workflows/dev-team/.claude/skills/pr/SKILL.md`:
- Around line 1-4: The dev-team PR skill contains workflow-specific references
copied from bugfix that must be adapted: check whether the dev-team workflow
actually provides the "controller" pattern referenced in the dispatch block and
either point the dispatch to the correct controller skill or remove the dispatch
block (look for the "controller skill" reference); update all artifact paths
that use "artifacts/bugfix/" to the correct dev-team artifact directory (replace
occurrences such as at the artifact path usages mentioned); replace phase path
references "/fix", "/test", "/document" with the actual dev-team phase names or
remove them if those phases don't exist; and change language occurrences of "bug
fix" to a general-purpose term consistent with dev-team (search for the string
"bug fix" and update). Leave the technical improvements (DEFAULT_BRANCH
detection, FORK_REMOTE derivation, expired token recovery) as-is.
- Line 685: Change the phrase "standard for open source contributions" to use a
hyphenated compound adjective: replace "standard for open source contributions"
with "standard for open-source contributions" wherever that exact string appears
in SKILL.md (search for the line containing "The fork workflow is the standard
for open source contributions").
- Around line 679-684: Remove or rephrase the bugfix-specific prerequisites that
mention `/fix`, `/test`, `/document` and the artifact path
`artifacts/bugfix/docs/pr-description.md`; instead state dev-team’s dynamic
assembly workflow with no fixed phases and either omit prerequisites or point to
where dev-team artifacts live. Replace references to
`.claude/skills/controller/SKILL.md` and `.claude/skills/speedrun/SKILL.md` with
`.claude/skills/dev-team/SKILL.md`. Ensure any artifact path uses the dev-team
convention (remove "bugfix" segment) and keep the PR skill text consistent with
dev-team terminology and navigation.
- Line 3: The skill text currently assumes a bug-fix workflow by using phrases
like "You are preparing to submit a bug fix as a pull request" and "Get the bug
fix changes submitted as a draft pull request"; update SKILL.md to generalize or
make the scope configurable: replace those bug-specific sentences with neutral
language (e.g., "You are preparing to submit a pull request" and "Get the
changes submitted as a draft pull request") or add a parameter/placeholder for
PR type (bug/feature/refactor/docs) that is referenced in the skill description
and prompt examples so the skill can handle multiple task types consistently.
- Around line 492-495: Update all artifact path strings in this skill from
"artifacts/bugfix/" to "artifacts/dev-team/": search for occurrences of
"artifacts/bugfix/docs/pr-description.md" and "artifacts/bugfix/bugfix.patch"
(and any other "artifacts/bugfix/" usages referenced in this file) and replace
them with "artifacts/dev-team/docs/pr-description.md" and
"artifacts/dev-team/bugfix.patch" respectively so the skill reads/writes to the
dev-team artifact directory; verify any remaining "artifacts/bugfix/" tokens
(e.g., the other matches noted in the review) are changed to
"artifacts/dev-team/" to prevent runtime file-not-found errors.
- Line 16: The doc and implementation hardcode "bug fix" strings and patterns;
change the /pr skill to be work-type-agnostic by introducing a workType input or
detection and replace hardcoded strings "bug fix", branch prefix "bugfix/",
commit prefix "fix(SCOPE):", and artifact paths "artifacts/bugfix/" with dynamic
values derived from workType (e.g., map workType -> branchPrefix {feature:
"feat/", bugfix: "fix/", docs: "docs/", refactor: "refactor/"} and commitPrefix
{feature: "feat(SCOPE):", bugfix: "fix(SCOPE):", ...}); update SKILL.md text to
use generic wording or interpolate the chosen workType; ensure all occurrences
(mentions at lines ~16, ~30, branch naming at ~466–467, commit format at ~479,
artifact paths) reference the dynamic variables so branches, commits, and
artifact directories adapt to the provided workType.
- Around line 8-12: The dispatch block at the top of SKILL.md incorrectly
references the controller workflow and should be fixed: either remove the entire
"Dispatch" section if this PR skill is always invoked via the dev-team/team-lead
workflow, or change the reference from ".claude/skills/controller/SKILL.md" to
".claude/skills/dev-team/SKILL.md". Also update every artifact path that
currently uses "artifacts/bugfix/" (notably the occurrences that point to
"artifacts/bugfix/docs/pr-description.md" and "artifacts/bugfix/bugfix.patch")
to use the dev-team paths like "artifacts/dev-team/docs/pr-description.md" and
"artifacts/dev-team/bugfix.patch" so all artifact references match the dev-team
workflow.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: 906df6de-5bc9-4c09-86a9-3b62452e5eb7
📒 Files selected for processing (1)
workflows/dev-team/.claude/skills/pr/SKILL.md
|
|
||
| --- | ||
|
|
||
| You are preparing to submit a bug fix as a pull request. This skill provides a |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Look for workflow scope/purpose documentation
rg -n -C3 "dev-team|purpose|scope" workflows/dev-team/README.md 2>/dev/null
# Check if other skills in dev-team reference different work types
rg -n "feature|bugfix|feat\(|fix\(" workflows/dev-team/.claude/skills/ --type mdRepository: ambient-code/workflows
Length of output: 3353
🏁 Script executed:
#!/bin/bash
# Check the exact content around the lines mentioned in the review
cat -n workflows/dev-team/.claude/skills/pr/SKILL.md | head -50
# Also check the section that discusses branch naming and commit format
sed -n '460,490p' workflows/dev-team/.claude/skills/pr/SKILL.md
# Check the overall skill description
sed -n '1,20p' workflows/dev-team/.claude/skills/pr/SKILL.mdRepository: ambient-code/workflows
Length of output: 4328
Skill terminology is hardcoded to "bug fix" despite being general-purpose.
The /pr skill is invoked by the general-purpose /dev-team workflow and should support all work types (features, bug fixes, docs, refactors, etc.). However, the documentation and implementation use "bug fix" specific language:
- Line 16: "submit a bug fix as a pull request"
- Line 30: "bug fix changes submitted"
- Lines 466–467: branch naming hardcoded to
bugfix/(should befeat/,fix/,docs/,refactor/, etc.) - Line 479: commit format hardcoded to
fix(SCOPE):(should supportfeat(SCOPE):, etc.) - Artifact paths hardcoded to
artifacts/bugfix/throughout
Update the skill to either use work-type-agnostic terminology or detect and adapt branch naming and commit format based on the actual work type being performed.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@workflows/dev-team/.claude/skills/pr/SKILL.md` at line 16, The doc and
implementation hardcode "bug fix" strings and patterns; change the /pr skill to
be work-type-agnostic by introducing a workType input or detection and replace
hardcoded strings "bug fix", branch prefix "bugfix/", commit prefix
"fix(SCOPE):", and artifact paths "artifacts/bugfix/" with dynamic values
derived from workType (e.g., map workType -> branchPrefix {feature: "feat/",
bugfix: "fix/", docs: "docs/", refactor: "refactor/"} and commitPrefix {feature:
"feat(SCOPE):", bugfix: "fix(SCOPE):", ...}); update SKILL.md text to use
generic wording or interpolate the chosen workType; ensure all occurrences
(mentions at lines ~16, ~30, branch naming at ~466–467, commit format at ~479,
artifact paths) reference the dynamic variables so branches, commits, and
artifact directories adapt to the provided workType.
| common case for bot environments). If `artifacts/bugfix/docs/pr-description.md` | ||
| exists, append its content after the `Fixes #N` line. If it doesn't exist, | ||
| compose a brief PR body from session context (problem, root cause, fix, testing) | ||
| and include that instead. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check what artifact structure dev-team workflow uses
rg -n "artifacts/" workflows/dev-team/ --type md -C2
# Check if dev-team has a document skill that produces PR descriptions
fd -t f "SKILL.md" workflows/dev-team/.claude/skills/document/
# Look for any existing artifact path patterns
rg -n "artifacts/dev-team|artifacts/bugfix" workflows/dev-team/ --type mdRepository: ambient-code/workflows
Length of output: 671
🏁 Script executed:
#!/bin/bash
# Read the SKILL.md file around the mentioned line numbers
sed -n '485,500p' workflows/dev-team/.claude/skills/pr/SKILL.md
echo "---"
sed -n '530,555p' workflows/dev-team/.claude/skills/pr/SKILL.md
echo "---"
sed -n '605,645p' workflows/dev-team/.claude/skills/pr/SKILL.mdRepository: ambient-code/workflows
Length of output: 3309
Update artifact paths from artifacts/bugfix/ to artifacts/dev-team/.
This skill is placed in the dev-team workflow, but all artifact references use artifacts/bugfix/ paths (lines 492, 536, 548, 610, 631, 639). The dev-team workflow documentation specifies artifacts should be saved to artifacts/dev-team/.
Change all occurrences of artifacts/bugfix/ to artifacts/dev-team/:
artifacts/bugfix/docs/pr-description.md→artifacts/dev-team/docs/pr-description.mdartifacts/bugfix/bugfix.patch→artifacts/dev-team/bugfix.patch
Without this change, the skill will fail at runtime when attempting to read/write files to the wrong artifact directory.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@workflows/dev-team/.claude/skills/pr/SKILL.md` around lines 492 - 495, Update
all artifact path strings in this skill from "artifacts/bugfix/" to
"artifacts/dev-team/": search for occurrences of
"artifacts/bugfix/docs/pr-description.md" and "artifacts/bugfix/bugfix.patch"
(and any other "artifacts/bugfix/" usages referenced in this file) and replace
them with "artifacts/dev-team/docs/pr-description.md" and
"artifacts/dev-team/bugfix.patch" respectively so the skill reads/writes to the
dev-team artifact directory; verify any remaining "artifacts/bugfix/" tokens
(e.g., the other matches noted in the review) are changed to
"artifacts/dev-team/" to prevent runtime file-not-found errors.
| - This skill assumes the bug fix work (code changes, tests) is already done. | ||
| Run `/fix` and `/test` first. | ||
| - If `/document` was run, the PR description artifact should already exist at | ||
| `artifacts/bugfix/docs/pr-description.md`. This skill will use it. | ||
| - If `/document` was NOT run, this skill creates a minimal PR body from | ||
| session context (conversation history, prior artifacts). |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# List all skills in dev-team workflow
echo "=== Dev-team skills ==="
fd -t d . workflows/dev-team/.claude/skills/ --max-depth 1 --exec basename {}
# Check for references to fix/test/document/controller/speedrun
echo -e "\n=== References to bugfix phases ==="
rg -l "fix|test|document|controller|speedrun" workflows/dev-team/.claude/skills/ --type md
# Check dev-team workflow structure
echo -e "\n=== Dev-team workflow structure ==="
cat workflows/dev-team/README.md 2>/dev/null | head -50Repository: ambient-code/workflows
Length of output: 2308
🏁 Script executed:
# View the PR SKILL.md around lines 679-684 and 696 with context
echo "=== Lines 675-700 of PR SKILL.md ==="
sed -n '675,700p' workflows/dev-team/.claude/skills/pr/SKILL.md
# Also check if there are `/fix`, `/test`, `/document` skills in dev-team
echo -e "\n=== Skills defined in dev-team ==="
ls -la workflows/dev-team/.claude/skills/
# Check what the PR skill is actually part of
echo -e "\n=== Full structure of dev-team skills ==="
find workflows/dev-team/.claude/skills -type f -name "SKILL.md" | head -10Repository: ambient-code/workflows
Length of output: 1642
Remove references to bugfix workflow phases and skills that don't exist in dev-team.
Lines 679-684 reference /fix, /test, /document phases and an artifact path artifacts/bugfix/docs/pr-description.md, which are specific to the bugfix workflow. Dev-team uses a dynamic team assembly model with no such phases. Similarly, line 696 directs users to return to .claude/skills/controller/SKILL.md or .claude/skills/speedrun/SKILL.md—these skills don't exist in dev-team.
Update the PR skill to:
- Remove or rephrase prerequisites to match dev-team's actual workflow structure
- Correct artifact paths (if any) to match dev-team conventions
- Direct users to return to
.claude/skills/dev-team/SKILL.mdfor next steps
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@workflows/dev-team/.claude/skills/pr/SKILL.md` around lines 679 - 684, Remove
or rephrase the bugfix-specific prerequisites that mention `/fix`, `/test`,
`/document` and the artifact path `artifacts/bugfix/docs/pr-description.md`;
instead state dev-team’s dynamic assembly workflow with no fixed phases and
either omit prerequisites or point to where dev-team artifacts live. Replace
references to `.claude/skills/controller/SKILL.md` and
`.claude/skills/speedrun/SKILL.md` with `.claude/skills/dev-team/SKILL.md`.
Ensure any artifact path uses the dev-team convention (remove "bugfix" segment)
and keep the PR skill text consistent with dev-team terminology and navigation.
| `artifacts/bugfix/docs/pr-description.md`. This skill will use it. | ||
| - If `/document` was NOT run, this skill creates a minimal PR body from | ||
| session context (conversation history, prior artifacts). | ||
| - The fork workflow is the standard for open source contributions. Even if the |
There was a problem hiding this comment.
Minor grammar: hyphenate compound adjective.
The phrase "standard for open source contributions" should use a hyphen: "standard for open-source contributions" because "open source" functions as a compound adjective modifying "contributions". As per static analysis (LanguageTool QB_NEW_EN_HYPHEN).
📝 Proposed fix
-- The fork workflow is the standard for open source contributions. Even if the
+- The fork workflow is the standard for open-source contributions. Even if the📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - The fork workflow is the standard for open source contributions. Even if the | |
| - The fork workflow is the standard for open-source contributions. Even if the |
🧰 Tools
🪛 LanguageTool
[grammar] ~685-~685: Use a hyphen to join words.
Context: ...e fork workflow is the standard for open source contributions. Even if the user...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@workflows/dev-team/.claude/skills/pr/SKILL.md` at line 685, Change the phrase
"standard for open source contributions" to use a hyphenated compound adjective:
replace "standard for open source contributions" with "standard for open-source
contributions" wherever that exact string appears in SKILL.md (search for the
line containing "The fork workflow is the standard for open source
contributions").
Address CodeRabbit review feedback on PR ambient-code#98. Both the dev-team and bugfix PR skills now share identical process documentation, differing only in a small Workflow Context section at the top that defines: - WORKFLOW_NAME, ARTIFACT_DIR, COORDINATOR_SKILL Key changes applied to both files: - Replace hardcoded "bug fix" language with generic "changes" - Replace hardcoded artifact paths with ARTIFACT_DIR placeholder - Support multiple branch prefixes (bugfix/, feature/, refactor/, docs/) - Support multiple commit types (fix, feat, refactor, docs, test) - Use generic git config fallback ("workflow-agent") - Fix "open source" → "open-source" (compound adjective) - Generalize notes section to remove workflow-specific phase references - Use COORDINATOR_SKILL in "When This Phase Is Done" section The two files now differ in only 3 lines (dispatch + context table), paving the way for eventual unification into a single shared skill. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@workflows/bugfix/.claude/skills/pr/SKILL.md`:
- Around line 649-651: The patch creation and artifact instructions are
inconsistent: generate the patch directly into the artifact directory and
reference that single path everywhere. Replace the two-step approach so the
command that creates the patch writes to ARTIFACT_DIR (use
ARTIFACT_DIR/changes.patch as the single source) and update the apply
instruction to use that same ARTIFACT_DIR/changes.patch; ensure any references
(e.g., the git diff redirection and the git apply invocation) use the
ARTIFACT_DIR variable consistently.
- Around line 16-26: Update the controller skill to explicitly set and export
the three workflow context variables referenced by the PR skill: WORKFLOW_NAME,
ARTIFACT_DIR, and COORDINATOR_SKILL (e.g., set WORKFLOW_NAME=bugfix,
ARTIFACT_DIR=artifacts/bugfix/,
COORDINATOR_SKILL=.claude/skills/controller/SKILL.md) before dispatching to the
PR skill; ensure the controller initializes these values in its context/state
object or invocation payload so downstream code reading WORKFLOW_NAME,
ARTIFACT_DIR, or COORDINATOR_SKILL will always receive concrete values rather
than relying on implicit/template substitution.
In `@workflows/dev-team/.claude/skills/pr/SKILL.md`:
- Around line 649-651: The patch generation writes changes.patch to the current
directory but later expects ARTIFACT_DIR/changes.patch; update the generation
step so it writes directly to the artifact path (use the ARTIFACT_DIR variable
when redirecting output from git diff) and ensure the subsequent instruction
that tells the user to apply the patch references the same
ARTIFACT_DIR/changes.patch file name so both creation and consumption use the
identical path.
- Around line 16-26: Initialize the required context variables before invoking
the /pr skill: set WORKFLOW_NAME="dev-team", ARTIFACT_DIR="artifacts/dev-team/",
and COORDINATOR_SKILL=".claude/skills/dev-team/SKILL.md" in the dispatcher’s
context object or environment that is passed to the /pr invocation (the
dispatcher call labeled "/pr"), or alternatively add a clear comment/block in
the dispatcher that documents how these three variables are injected by the
workflow framework so callers know they will be available to functions that
reference ARTIFACT_DIR and COORDINATOR_SKILL.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: e2ff712d-25a7-403f-85d7-45ffe3710b2c
📒 Files selected for processing (2)
workflows/bugfix/.claude/skills/pr/SKILL.mdworkflows/dev-team/.claude/skills/pr/SKILL.md
| ## Workflow Context | ||
|
|
||
| This skill is workflow-agnostic. The following values are set by the calling | ||
| workflow and used throughout this document: | ||
|
|
||
| | Variable | Value | | ||
| | --- | --- | | ||
| | `WORKFLOW_NAME` | `bugfix` | | ||
| | `ARTIFACT_DIR` | `artifacts/bugfix/` | | ||
| | `COORDINATOR_SKILL` | `.claude/skills/controller/SKILL.md` | | ||
|
|
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify whether the bugfix dispatcher explicitly initializes PR-skill context vars.
fd -t f "SKILL.md" workflows/bugfix/.claude/skills/controller/ --exec sed -n '1,220p' {} \; \
| rg -n "WORKFLOW_NAME|ARTIFACT_DIR|COORDINATOR_SKILL|/pr"Repository: ambient-code/workflows
Length of output: 321
🏁 Script executed:
cat -n workflows/bugfix/.claude/skills/pr/SKILL.md | sed -n '1,50p'Repository: ambient-code/workflows
Length of output: 2266
🏁 Script executed:
cat -n workflows/bugfix/.claude/skills/controller/SKILL.md | head -250Repository: ambient-code/workflows
Length of output: 6826
🏁 Script executed:
rg -n "WORKFLOW_NAME\s*=" workflows/bugfix/.claude/Repository: ambient-code/workflows
Length of output: 48
🏁 Script executed:
wc -l workflows/bugfix/.claude/skills/controller/SKILL.mdRepository: ambient-code/workflows
Length of output: 121
🏁 Script executed:
tail -100 workflows/bugfix/.claude/skills/controller/SKILL.mdRepository: ambient-code/workflows
Length of output: 4342
🏁 Script executed:
find workflows/bugfix -type f \( -name "*.md" -o -name "*.yaml" -o -name "*.yml" \) | head -20Repository: ambient-code/workflows
Length of output: 652
🏁 Script executed:
rg -i "workflow_name|artifact_dir|WORKFLOW_NAME|ARTIFACT_DIR" workflows/bugfix/ -t md -t yaml -A 2Repository: ambient-code/workflows
Length of output: 48
🏁 Script executed:
cat workflows/bugfix/README.mdRepository: ambient-code/workflows
Length of output: 12614
🏁 Script executed:
cat workflows/bugfix/CLAUDE.mdRepository: ambient-code/workflows
Length of output: 3258
🏁 Script executed:
find workflows -maxdepth 1 -type f \( -name "*.md" -o -name "*.yaml" -o -name "*.yml" \)Repository: ambient-code/workflows
Length of output: 48
🏁 Script executed:
rg -B 5 -A 5 "set by the calling workflow" workflows/bugfix/ -t mdRepository: ambient-code/workflows
Length of output: 48
Establish explicit context values in controller before dispatching to PR skill.
The PR skill (lines 16–26) documents that WORKFLOW_NAME, ARTIFACT_DIR, and COORDINATOR_SKILL are "set by the calling workflow," but the controller skill does not explicitly initialize or confirm these values before directing users to the PR phase. This creates ambiguity about whether these are template variables to be substituted externally, environment-injected values, or hardcoded literals. The controller should explicitly establish these context values early (e.g., "For this workflow: WORKFLOW_NAME=bugfix, ARTIFACT_DIR=artifacts/bugfix/, COORDINATOR_SKILL=.claude/skills/controller/SKILL.md") to ensure downstream skills receive properly initialized context.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@workflows/bugfix/.claude/skills/pr/SKILL.md` around lines 16 - 26, Update the
controller skill to explicitly set and export the three workflow context
variables referenced by the PR skill: WORKFLOW_NAME, ARTIFACT_DIR, and
COORDINATOR_SKILL (e.g., set WORKFLOW_NAME=bugfix,
ARTIFACT_DIR=artifacts/bugfix/,
COORDINATOR_SKILL=.claude/skills/controller/SKILL.md) before dispatching to the
PR skill; ensure the controller initializes these values in its context/state
object or invocation payload so downstream code reading WORKFLOW_NAME,
ARTIFACT_DIR, or COORDINATOR_SKILL will always receive concrete values rather
than relying on implicit/template substitution.
| ## Workflow Context | ||
|
|
||
| This skill is workflow-agnostic. The following values are set by the calling | ||
| workflow and used throughout this document: | ||
|
|
||
| | Variable | Value | | ||
| | --- | --- | | ||
| | `WORKFLOW_NAME` | `dev-team` | | ||
| | `ARTIFACT_DIR` | `artifacts/dev-team/` | | ||
| | `COORDINATOR_SKILL` | `.claude/skills/dev-team/SKILL.md` | | ||
|
|
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify whether dev-team dispatcher defines and passes PR workflow context vars.
fd -t f "SKILL.md" workflows/dev-team/.claude/skills/dev-team/ --exec sed -n '1,260p' {} \; \
| rg -n "WORKFLOW_NAME|ARTIFACT_DIR|COORDINATOR_SKILL|/pr"Repository: ambient-code/workflows
Length of output: 48
🏁 Script executed:
find workflows/dev-team -name "SKILL.md" -type f | head -20Repository: ambient-code/workflows
Length of output: 163
🏁 Script executed:
# Check the file mentioned in the review
cat -n workflows/dev-team/.claude/skills/pr/SKILL.md | sed -n '16,26p'Repository: ambient-code/workflows
Length of output: 458
🏁 Script executed:
# Check the dispatcher file mentioned in the initial script
ls -la workflows/dev-team/.claude/skills/dev-team/ 2>/dev/null || echo "Directory not found"Repository: ambient-code/workflows
Length of output: 238
🏁 Script executed:
cat -n workflows/dev-team/.claude/skills/dev-team/SKILL.md | head -100Repository: ambient-code/workflows
Length of output: 6427
🏁 Script executed:
# Search for context variable references throughout the dispatcher
rg -n "WORKFLOW_NAME|ARTIFACT_DIR|COORDINATOR_SKILL" workflows/dev-team/.claude/skills/dev-team/SKILL.mdRepository: ambient-code/workflows
Length of output: 48
🏁 Script executed:
# Search for how the PR skill is invoked
rg -n "\.claude/skills/pr|invoke.*pr|pr.*skill" workflows/dev-team/.claude/skills/dev-team/SKILL.mdRepository: ambient-code/workflows
Length of output: 310
🏁 Script executed:
# Search entire dispatcher file for context variables
wc -l workflows/dev-team/.claude/skills/dev-team/SKILL.mdRepository: ambient-code/workflows
Length of output: 121
🏁 Script executed:
# Look at context around line 339 where /pr is invoked
cat -n workflows/dev-team/.claude/skills/dev-team/SKILL.md | sed -n '330,350p'Repository: ambient-code/workflows
Length of output: 972
🏁 Script executed:
# Search entire file for variable definitions or setup patterns
rg -n "WORKFLOW_NAME|ARTIFACT_DIR|COORDINATOR_SKILL|export|set.*=" workflows/dev-team/.claude/skills/dev-team/SKILL.md | head -30Repository: ambient-code/workflows
Length of output: 48
🏁 Script executed:
# Search PR skill for actual usage of the context variables
rg -n "WORKFLOW_NAME|ARTIFACT_DIR|COORDINATOR_SKILL" workflows/dev-team/.claude/skills/pr/SKILL.md | head -20Repository: ambient-code/workflows
Length of output: 778
🏁 Script executed:
# Look at the full context in PR skill around where these are mentioned
cat -n workflows/dev-team/.claude/skills/pr/SKILL.md | sed -n '16,60p'Repository: ambient-code/workflows
Length of output: 2197
🏁 Script executed:
# Look for other SKILL.md files to see if there's a pattern
find workflows -name "SKILL.md" -type fRepository: ambient-code/workflows
Length of output: 696
🏁 Script executed:
# Check if there's any documentation or examples showing how skills are invoked with context
rg -l "WORKFLOW_NAME|invoke.*skill" workflows/ --max-count=10Repository: ambient-code/workflows
Length of output: 92
🏁 Script executed:
# Check bugfix README for context variable documentation
cat workflows/bugfix/README.mdRepository: ambient-code/workflows
Length of output: 12614
🏁 Script executed:
# Check bugfix controller/dispatcher to see if it sets context variables
rg -n "WORKFLOW_NAME|ARTIFACT_DIR" workflows/bugfix/.claude/skills/controller/SKILL.md | head -20Repository: ambient-code/workflows
Length of output: 48
🏁 Script executed:
# Look for any explicit setup or initialization pattern in bugfix controller
cat -n workflows/bugfix/.claude/skills/controller/SKILL.md | sed -n '1,100p'Repository: ambient-code/workflows
Length of output: 4998
Context variables (WORKFLOW_NAME, ARTIFACT_DIR, COORDINATOR_SKILL) are not explicitly initialized in the dispatcher before invoking /pr.
The PR skill explicitly states (lines 18–19) that these values "are set by the calling workflow," and it actively uses them throughout (e.g., ARTIFACT_DIR on lines 555, 567, 629, 650; COORDINATOR_SKILL on line 715). However, the dispatcher file (475+ lines) contains no evidence of setting these variables before line 339's /pr invocation.
Either explicitly set these variables before invoking /pr, or document the mechanism by which the workflow framework provides them implicitly.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@workflows/dev-team/.claude/skills/pr/SKILL.md` around lines 16 - 26,
Initialize the required context variables before invoking the /pr skill: set
WORKFLOW_NAME="dev-team", ARTIFACT_DIR="artifacts/dev-team/", and
COORDINATOR_SKILL=".claude/skills/dev-team/SKILL.md" in the dispatcher’s context
object or environment that is passed to the /pr invocation (the dispatcher call
labeled "/pr"), or alternatively add a clear comment/block in the dispatcher
that documents how these three variables are injected by the workflow framework
so callers know they will be available to functions that reference ARTIFACT_DIR
and COORDINATOR_SKILL.
…ntical
Remove the workflow-specific dispatch block and context table from both
PR skills. Artifact paths now use natural language ("the workflow's
artifact directory") instead of placeholders, and the return-to guidance
is generic ("the coordinating skill that dispatched you").
The two files are now byte-for-byte identical, ready for eventual
unification into a single shared skill.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
workflows/bugfix/.claude/skills/pr/SKILL.md (1)
1-4:⚠️ Potential issue | 🟠 MajorMajor: "Byte-for-byte identical" files share the same critical bugs across workflows.
The commit message states these files were made "byte-for-byte identical to prepare for future unification." While this is true (all changes are at identical line numbers with identical content), making them identical without resolving workflow-specific concerns means both files now share the same critical bugs:
- Undefined artifact directory paths (will cause runtime failures in both workflows)
- Broken integration with bugfix document skill (affects bugfix)
- Potential dev-team artifact convention mismatches (affects dev-team)
The goal of unification is sound, but the implementation is incomplete. Before making files identical, you must:
- Define a concrete path resolution mechanism that works for both workflows, or
- Extract the workflow-specific configuration (artifact directory) as parameters passed by each workflow's dispatcher, or
- Keep the files workflow-specific until a proper abstraction is designed
"Identical" doesn't equal "correct" when both files have the same undefined behaviors.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@workflows/bugfix/.claude/skills/pr/SKILL.md` around lines 1 - 4, The "pr" skill was made byte-for-byte identical across workflows but left undefined artifact paths and broken integrations; update the pr skill to accept an explicit artifact directory parameter (e.g., artifact_dir) and a workflow_type flag, implement a concrete path-resolution function (e.g., resolveArtifactPath(workflow_type, artifact_dir)) used wherever artifact paths are referenced, and change the bugfix dispatcher to pass the correct artifact_dir when invoking the pr skill (or alternatively keep separate workflow-specific pr variants until a shared abstraction is designed); ensure the bugfix document skill integration points call the new parameterized API so artifact conventions are explicit and runtime path resolution is deterministic.
♻️ Duplicate comments (1)
workflows/dev-team/.claude/skills/pr/SKILL.md (1)
629-631:⚠️ Potential issue | 🟡 MinorMinor: Patch generation instructions are ambiguous.
Line 629 generates the patch to the current directory (
git diff > changes.patch), then Line 630 instructs to "Write it to the workflow's artifact directory aschanges.patch". This implies a two-step process (generate, then move), but the first command already writes the file.The instructions should use a single operation that writes directly to the intended location. However, this still requires defining what "the workflow's artifact directory" actually is (see previous comments).
Suggested fix (after artifact directory is defined)
-1. Generate a patch: `git diff > changes.patch` -2. Write it to the workflow's artifact directory as `changes.patch` +1. Generate a patch directly to the artifact location: `git diff > $ARTIFACT_DIR/changes.patch` +2. Confirm the file exists at `$ARTIFACT_DIR/changes.patch`🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@workflows/dev-team/.claude/skills/pr/SKILL.md` around lines 629 - 631, The current two-step patch creation is ambiguous: the diff shows `git diff > changes.patch` then a separate instruction to write that file to the workflow's artifact directory; instead, change the single command so the patch is written directly to the artifact directory (write to a path like the workflow artifact variable plus `changes.patch` rather than to the current directory), and ensure the workflow defines and documents the artifact directory variable (e.g., ARTIFACT_DIR) so the single-step operation replaces `git diff > changes.patch` and produces the final artifact in the correct location.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@workflows/bugfix/.claude/skills/pr/SKILL.md`:
- Around line 490-494: The PR skill fails to find the PR description because the
document skill writes to artifacts/bugfix/docs/pr-description.md while the PR
step invokes git/pr commands from the project repo and uses --body-file
docs/pr-description.md; fix by resolving the artifact path before using it:
either (A) change the document skill to also write a copy at
docs/pr-description.md in the project repo, or (B) modify the PR skill to detect
and map the workflow artifact path (artifacts/bugfix/docs/pr-description.md)
into the repo context (e.g., copy or symlink the artifact into
docs/pr-description.md prior to the command that uses --body-file), or (C)
revert the generalization until explicit path resolution is implemented; update
references to --body-file docs/pr-description.md and any mentions of "workflow's
artifact directory" to use the resolved path (the artifact file name
artifacts/bugfix/docs/pr-description.md and the PR step that runs the CLI with
--body-file).
---
Outside diff comments:
In `@workflows/bugfix/.claude/skills/pr/SKILL.md`:
- Around line 1-4: The "pr" skill was made byte-for-byte identical across
workflows but left undefined artifact paths and broken integrations; update the
pr skill to accept an explicit artifact directory parameter (e.g., artifact_dir)
and a workflow_type flag, implement a concrete path-resolution function (e.g.,
resolveArtifactPath(workflow_type, artifact_dir)) used wherever artifact paths
are referenced, and change the bugfix dispatcher to pass the correct
artifact_dir when invoking the pr skill (or alternatively keep separate
workflow-specific pr variants until a shared abstraction is designed); ensure
the bugfix document skill integration points call the new parameterized API so
artifact conventions are explicit and runtime path resolution is deterministic.
---
Duplicate comments:
In `@workflows/dev-team/.claude/skills/pr/SKILL.md`:
- Around line 629-631: The current two-step patch creation is ambiguous: the
diff shows `git diff > changes.patch` then a separate instruction to write that
file to the workflow's artifact directory; instead, change the single command so
the patch is written directly to the artifact directory (write to a path like
the workflow artifact variable plus `changes.patch` rather than to the current
directory), and ensure the workflow defines and documents the artifact directory
variable (e.g., ARTIFACT_DIR) so the single-step operation replaces `git diff >
changes.patch` and produces the final artifact in the correct location.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: e2acb4a7-6ee7-49e2-9639-932d7935ef0b
📒 Files selected for processing (2)
workflows/bugfix/.claude/skills/pr/SKILL.mdworkflows/dev-team/.claude/skills/pr/SKILL.md
| common case for bot environments). If a `docs/pr-description.md` artifact | ||
| exists in the workflow's artifact directory, append its content after the | ||
| `Fixes #N` line. If it doesn't exist, | ||
| compose a brief PR body from session context (problem, approach, testing) | ||
| and include that instead. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check all artifact references in bugfix workflow
echo "=== Document skill output paths ==="
rg -n "pr-description\.md" workflows/bugfix/.claude/skills/document/SKILL.md
echo ""
echo "=== Speedrun skill artifact checks ==="
rg -n "pr-description\.md" workflows/bugfix/.claude/skills/speedrun/SKILL.md
echo ""
echo "=== Any ARTIFACT_DIR definitions ==="
rg -n "ARTIFACT_DIR" workflows/bugfix/.claude/Repository: ambient-code/workflows
Length of output: 410
🏁 Script executed:
#!/bin/bash
# Examine the PR skill to understand artifact directory resolution
echo "=== Lines 490-495 (context from review) ==="
sed -n '485,500p' workflows/bugfix/.claude/skills/pr/SKILL.md
echo ""
echo "=== Lines 545-555 (context) ==="
sed -n '545,555p' workflows/bugfix/.claude/skills/pr/SKILL.md
echo ""
echo "=== Lines 605-615 (context) ==="
sed -n '605,615p' workflows/bugfix/.claude/skills/pr/SKILL.md
echo ""
echo "=== Search for how artifact directory is determined ==="
rg -n "artifact" workflows/bugfix/.claude/skills/pr/SKILL.md | head -20
echo ""
echo "=== Check for environment variables or path construction ==="
rg -n "ARTIFACT|artifact.*dir|artifact.*path" workflows/bugfix/.claude/skills/pr/SKILL.md -A 2Repository: ambient-code/workflows
Length of output: 4218
🏁 Script executed:
#!/bin/bash
# Check if there's implementation code or config showing artifact directory resolution
echo "=== Search for workflow name or artifact path variables ==="
rg -n "workflow|artifact.*directory|/artifacts/" workflows/bugfix/.claude/skills/pr/SKILL.md | head -30
echo ""
echo "=== Check for context or metadata that might define artifact dir ==="
rg -n "context|metadata|input|parameter" workflows/bugfix/.claude/skills/pr/SKILL.md | head -20
echo ""
echo "=== Check beginning of skill for inputs/outputs ==="
head -50 workflows/bugfix/.claude/skills/pr/SKILL.mdRepository: ambient-code/workflows
Length of output: 5688
🏁 Script executed:
#!/bin/bash
# Check if PR skill is shared across workflows or specific to bugfix
echo "=== PR skill locations ==="
find workflows -name "pr" -type d | grep -i skill
echo ""
echo "=== Check if dev-team has a PR skill ==="
ls -la workflows/dev-team/.claude/skills/ 2>/dev/null | grep -i pr
echo ""
echo "=== Examine full path context around line 129 in PR skill ==="
sed -n '120,145p' workflows/bugfix/.claude/skills/pr/SKILL.md
echo ""
echo "=== Check if there's any reference to 'bugfix' or workflow name ==="
rg -n "bugfix" workflows/bugfix/.claude/skills/pr/SKILL.mdRepository: ambient-code/workflows
Length of output: 1369
🏁 Script executed:
#!/bin/bash
# Check if the PR skills are identical or workflow-specific
echo "=== Diff PR skills to see if they're identical ==="
diff -u workflows/bugfix/.claude/skills/pr/SKILL.md workflows/dev-team/.claude/skills/pr/SKILL.md | head -50
echo ""
echo "=== Check how artifact directory is actually resolved (search for implementation) ==="
rg -n "docs/pr-description" workflows/bugfix/.claude/skills/pr/SKILL.md -B 5 -A 5
echo ""
echo "=== Check speedrun's reference to artifact ==="
cat workflows/bugfix/.claude/skills/speedrun/SKILL.md | grep -A 10 -B 10 "pr-description.md"Repository: ambient-code/workflows
Length of output: 4625
🏁 Script executed:
#!/bin/bash
# Verify the actual execution context of the PR skill
echo "=== Check if PR skill execution context is documented ==="
grep -n "cd " workflows/bugfix/.claude/skills/pr/SKILL.md | head -10
echo ""
echo "=== Full context around Step 1 (line 129) where project repo is determined ==="
sed -n '124,160p' workflows/bugfix/.claude/skills/pr/SKILL.md
echo ""
echo "=== Verify: does document skill explicitly state its output location ==="
sed -n '85,115p' workflows/bugfix/.claude/skills/document/SKILL.mdRepository: ambient-code/workflows
Length of output: 2303
Critical: This change breaks the bugfix workflow's document → PR skill handoff due to artifact path mismatch.
The bugfix workflow's document skill explicitly writes PR descriptions to artifacts/bugfix/docs/pr-description.md (confirmed at line 90 of workflows/bugfix/.claude/skills/document/SKILL.md), and speedrun expects this file to exist. However, the PR skill executes from the project repository directory (Step 1, lines 124–128) and references docs/pr-description.md with relative paths (line 535: --body-file docs/pr-description.md), which means it will look for the file relative to the project repo, not the workflow artifact directory.
The phrase "workflow's artifact directory" is used throughout the PR skill (lines 490, 548, 609, 630, 638, 680–681) but is never defined or resolved. This will cause the PR skill to fail to locate the artifact when invoked after the document phase.
Before merging, resolve the artifact path:
- Update the document skill to write to a location accessible from the project repo directory, or
- Define explicit path resolution in the PR skill that maps workflow-level artifacts to the project repo context, or
- Revert the artifact path generalization until the path resolution is implemented
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@workflows/bugfix/.claude/skills/pr/SKILL.md` around lines 490 - 494, The PR
skill fails to find the PR description because the document skill writes to
artifacts/bugfix/docs/pr-description.md while the PR step invokes git/pr
commands from the project repo and uses --body-file docs/pr-description.md; fix
by resolving the artifact path before using it: either (A) change the document
skill to also write a copy at docs/pr-description.md in the project repo, or (B)
modify the PR skill to detect and map the workflow artifact path
(artifacts/bugfix/docs/pr-description.md) into the repo context (e.g., copy or
symlink the artifact into docs/pr-description.md prior to the command that uses
--body-file), or (C) revert the generalization until explicit path resolution is
implemented; update references to --body-file docs/pr-description.md and any
mentions of "workflow's artifact directory" to use the resolved path (the
artifact file name artifacts/bugfix/docs/pr-description.md and the PR step that
runs the CLI with --body-file).
Summary
workflows/dev-team/.claude/skills/pr/SKILL.mdwith the latest improvements from the bugfix workflow's PR skillmain), explicitFORK_REMOTE/UPSTREAM_REMOTEtracking, and fork sync comparison against upstream remote--body-filesupport, improved branch naming, and a "When This Phase Is Done" sectionTest plan
/prto verify the updated skill works end-to-endCustom Workflow testing:
https://github.com/jwm4/workflows.gitfeature/sync-dev-team-pr-skillworkflows/dev-team🤖 Generated with Claude Code under the supervision of Bill Murdock.