Skip to content

NO-ISSUE: feat(workflows): adopt Lola v0.5.0 pip-style URL fragments - #41

Open
quay-devel wants to merge 2 commits into
mainfrom
feat/lola-v050-pip-fragments
Open

NO-ISSUE: feat(workflows): adopt Lola v0.5.0 pip-style URL fragments#41
quay-devel wants to merge 2 commits into
mainfrom
feat/lola-v050-pip-fragments

Conversation

@quay-devel

Copy link
Copy Markdown
Contributor

Summary

Migrates all .lola-req files and session-setup.sh bootstrap scripts to use Lola v0.5.0's new pip-style URL fragment syntax (#subdirectory=) instead of the custom --module-content flag.

  • .lola-req files: --module-content=plugins/dev#subdirectory=plugins/dev
  • session-setup.sh scripts: Added -a claude-code to lola sync calls; simplified scripts where lola sync works directly
  • Documentation: Updated README, enhancement docs, and workflow READMEs to reflect the new format

Name collision workaround

Lola v0.5.0's lola sync derives module names from the git URL, which causes collisions when multiple .lola-req entries use different #subdirectory= fragments from the same repository. Workflows needing both plugins/dev and plugins/jira-planning (quay-bugfix, quay-cvefix, quay-ticket) use a fragment-parsing shim that calls lola mod add + lola install with explicit names to avoid this. This will be removable once the upstream issue is resolved.

Affected workflows

Workflow Strategy Reason
quay-deploy lola sync -a claude-code Single subdirectory — no collision
konflux-build-debugger lola sync -a claude-code Different repos — no collision
konflux-build-triage lola sync -a claude-code Single repo, no subdirectory
quay-bugfix Fragment-parsing shim Two subdirectories from same repo
quay-cvefix Fragment-parsing shim Two subdirectories from same repo
quay-ticket Fragment-parsing shim Two subdirectories from same repo

Test plan

  • Clean lola sync test with single subdirectory entry (quay-deploy) — installs correct plugin (2 skills)
  • Clean lola sync test with entries from different repos (konflux-build-debugger) — both plugins install
  • Fragment-parsing shim test (quay-bugfix) — both dev (7 skills) and jira-planning (1 skill, 8 commands) install correctly
  • Verified name collision: lola sync with two same-repo entries skips the second (confirms workaround is necessary)

🤖 Generated with Claude Code

…in .lola-req

Lola v0.5.0 adds pip-style URL fragment support for .lola-req files.
This replaces the custom --module-content flag with the standard
#subdirectory= fragment syntax and adds -a claude-code to lola sync
calls for explicit assistant targeting.

For workflows with multiple subdirectories from the same repository
(quay-bugfix, quay-cvefix, quay-ticket), session-setup.sh parses
fragments and uses lola mod add + lola install to avoid a name
collision in lola sync (tracked upstream).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Enterprise

Run ID: d9988d8a-60b7-4c55-9533-a307d3be37c1

📥 Commits

Reviewing files that changed from the base of the PR and between b56de0b and 1dcac55.

📒 Files selected for processing (6)
  • README.md
  • enhancements/001-workflow-architecture.md
  • workflows/quay-bugfix/README.md
  • workflows/quay-ticket/.claude/scripts/session-setup.sh
  • workflows/quay-ticket/CLAUDE.md
  • workflows/quay-ticket/README.md
✅ Files skipped from review due to trivial changes (4)
  • workflows/quay-ticket/CLAUDE.md
  • workflows/quay-bugfix/README.md
  • workflows/quay-ticket/README.md
  • README.md
🚧 Files skipped from review as they are similar to previous changes (2)
  • enhancements/001-workflow-architecture.md
  • workflows/quay-ticket/.claude/scripts/session-setup.sh

Walkthrough

This PR migrates Lola plugin dependency specifications across documentation and workflow automation from --module-content=... parameters to #subdirectory=... URL fragments in .lola-req files, and refactors session-setup scripts to standardize on lola sync -a claude-code with adapter argument support.

Changes

Lola plugin dependency migration

Layer / File(s) Summary
Documentation and guidance updates
README.md, enhancements/001-workflow-architecture.md, enhancements/002-quay-bugfix-workflow.md, workflows/quay-bugfix/README.md, workflows/quay-ticket/CLAUDE.md, workflows/quay-ticket/README.md
Docs updated to show .lola-req using #subdirectory=plugins/..., add Lola >= 0.5.0 note, and recommend -a claude-code for lola sync.
Root and autofix lola sync adapter arg
scripts/session-setup.sh, workflows/autofix-dispatcher/.claude/scripts/session-setup.sh, workflows/quay-deploy/.claude/scripts/session-setup.sh
Added explicit -a claude-code argument to lola sync invocations.
Konflux build workflows: consolidated sync
workflows/konflux-build-debugger/.claude/scripts/session-setup.sh, workflows/konflux-build-triage/.claude/scripts/session-setup.sh, workflows/konflux-build-debugger/.lola-req
Replaced per-entry .lola-req parsing with a single $LOLA sync -a claude-code and updated the .lola-req entry to use #subdirectory=plugins/dev.
.lola-req files migrated to #subdirectory format
workflows/quay-bugfix/.lola-req, workflows/quay-cvefix/.lola-req, workflows/quay-deploy/.lola-req, workflows/quay-ticket/.lola-req
All .lola-req files standardized on #subdirectory=plugins/... URL fragments in place of --module-content=....
Quay workflows: per-plugin parsing & install
workflows/quay-bugfix/.claude/scripts/session-setup.sh, workflows/quay-cvefix/.claude/scripts/session-setup.sh, workflows/quay-ticket/.claude/scripts/session-setup.sh
Session-setup scripts now parse pip-style #subdirectory= fragments, skip full-line comments/blank lines, derive module names from subdirectories or URLs, and install each plugin via lola mod add followed by lola install -s project.

🎯 2 (Simple) | ⏱️ ~12 minutes

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/lola-v050-pip-fragments

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
README.md (1)

37-40: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Complete the syntax migration in the “One-time setup” example.

Line 38-40 still use --module-content=..., which conflicts with the new #subdirectory=... guidance and can cause mixed usage in copy/paste flows.

Suggested diff
-uvx --python 3.13 --from lola-ai lola mod add https://github.com/quay/ai-helpers.git --module-content=plugins/dev
-uvx --python 3.13 --from lola-ai lola mod add https://github.com/quay/ai-helpers.git --module-content=plugins/jira-planning
-uvx --python 3.13 --from lola-ai lola mod add https://github.com/quay/ai-helpers.git --module-content=plugins/openshift-testing
+uvx --python 3.13 --from lola-ai lola mod add https://github.com/quay/ai-helpers.git#subdirectory=plugins/dev
+uvx --python 3.13 --from lola-ai lola mod add https://github.com/quay/ai-helpers.git#subdirectory=plugins/jira-planning
+uvx --python 3.13 --from lola-ai lola mod add https://github.com/quay/ai-helpers.git#subdirectory=plugins/openshift-testing
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 37 - 40, The README's "One-time setup" uvx commands
still use the deprecated flag --module-content=..., causing mixed syntax with
the new `#subdirectory` guidance; update each uvx command shown (the three lines
beginning with "uvx --python 3.13 --from lola-ai lola mod add
https://github.com/quay/ai-helpers.git --module-content=plugins/...") by
removing the --module-content argument and appending the subdirectory to the
repo URL as a fragment (use `#subdirectory`=plugins/<name>), e.g. change the URL
portion to ...ai-helpers.git#subdirectory=plugins/dev (and similarly for
jira-planning and openshift-testing) so the commands uniformly use the new
syntax.
enhancements/001-workflow-architecture.md (1)

342-344: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Fix contradictory bootstrap instruction (ln -s) in Phase 5 example.

The example at Line 343 tells users to create a symlink, but this document already states symlinks are not viable for hydrated workflow subpaths (Line 202-205). This can produce a non-functional session-setup.sh at runtime.

Suggested diff
-# Symlink the shared bootstrap script
-ln -s ../../../scripts/session-setup.sh workflows/clair/.claude/scripts/session-setup.sh
+# Copy the shared bootstrap script (symlinks don't survive hydrate subpath extraction)
+cp scripts/session-setup.sh workflows/clair/.claude/scripts/session-setup.sh
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@enhancements/001-workflow-architecture.md` around lines 342 - 344, The Phase
5 example currently uses a symlink instruction ("ln -s") to create
workflows/clair/.claude/scripts/session-setup.sh which contradicts the earlier
note that symlinks are not supported for hydrated workflow subpaths (see the
session-setup.sh reference and the non-viability note at Lines 202–205); replace
the symlink step with a copy or direct file placement instruction so the actual
session-setup.sh file exists in workflows/clair/.claude/scripts/, ensuring the
bootstrap script is present at runtime (update the "Symlink the shared bootstrap
script" section to create or copy the real file rather than using ln -s).
workflows/quay-ticket/.claude/scripts/session-setup.sh (1)

55-58: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Post-install validation is ineffective in this workflow.

This check can pass even if plugin installation failed, because session-setup.sh itself keeps .claude/scripts non-empty.

🔧 Suggested fix
-if [ -z "$(ls -A "${CLAUDE_DIR}/scripts" 2>/dev/null)" ]; then
+installed_count="$(find "${CLAUDE_DIR}/scripts" -maxdepth 1 -type f ! -name 'session-setup.sh' | wc -l | tr -d ' ')"
+if [ "${installed_count}" = "0" ]; then
   echo "ERROR: .claude/scripts/ is empty after plugin install — check .lola-req"
   exit 1
 fi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@workflows/quay-ticket/.claude/scripts/session-setup.sh` around lines 55 - 58,
The current post-install validation in session-setup.sh uses a simple emptiness
check on "${CLAUDE_DIR}/scripts" which can be fooled because session-setup.sh
itself may seed that directory; modify the script to record the directory
contents before running the plugin install (e.g., PRE_SCRIPTS="$(ls -A
"${CLAUDE_DIR}/scripts" 2>/dev/null || true)"), run the install, then compute
POST_SCRIPTS and fail only if no new entries were added (compare PRE_SCRIPTS vs
POST_SCRIPTS with comm/diff or by checking for any file in POST_SCRIPTS not
present in PRE_SCRIPTS); reference the CLAUDE_DIR/scripts path and the
session-setup.sh install step to locate where to add PRE_SCRIPTS, the install
invocation, and the post-install comparison logic.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@README.md`:
- Around line 52-57: The fenced code block beginning with "# .lola-req — AI
context modules for this project" in README.md is missing a language tag and
triggers markdownlint MD040; update the opening fence to include a language
identifier (e.g., add "text" after the triple backticks) so the block becomes a
labeled code fence and resolves the lint warning while preserving the existing
lines with the three repository URLs.

In `@workflows/quay-bugfix/.claude/scripts/session-setup.sh`:
- Line 48: The command using the unsupported flag "--module-content" in the
invocation of $LOLA mod add should be changed to supply the subdirectory via the
URL fragment or supported config; remove the "--module-content=\"$subdir\""
argument and instead append "`#subdirectory`=$subdir" (or other supported
fragment) to the "$url" variable before calling "$LOLA mod add \"$url\" --name
\"$name\"" (alternatively update the repository to include a .lola-req with the
subdir), ensuring the call no longer passes the unsupported flag.

In `@workflows/quay-bugfix/README.md`:
- Around line 71-74: Update the README text to reflect the current workflow:
replace the statement that "session-setup.sh uses lola sync to install plugins
declared in .lola-req" with a description that session-setup.sh instead uses
fragment-parsing flow via "lola mod add" followed by "lola install" (the shim)
to add modules and avoid same-repo module-name collisions, and note that
plugins' post-install hooks still copy scripts/templates into .claude/scripts/
and .claude/templates/; mention the replaced commands (lola mod add + lola
install) and remove the obsolete reference to lola sync.

In `@workflows/quay-ticket/CLAUDE.md`:
- Line 24: Update the inaccurate bootstrap description to reflect the actual
install flow: replace the claim that `session-setup.sh` runs `lola sync` with a
statement that it parses `.lola-req` fragments and installs modules by invoking
`lola mod add` for each module followed by `lola install` with explicit names;
mention the exact script `session-setup.sh` and the file `.lola-req` as the
sources of truth and include the commands `lola mod add` and `lola install` as
the operations performed.

In `@workflows/quay-ticket/README.md`:
- Around line 48-51: The README's Bootstrap section incorrectly states that
session-setup.sh uses `lola sync`; update the doc to reflect the actual
implementation: describe that `session-setup.sh` (the SessionStart hook)
installs plugins by running `lola mod add` followed by `lola install` for
entries in `.lola-req`, and that plugin post-install hooks copy
scripts/templates into `.claude/scripts/` and `.claude/templates/`; mention
`session-setup.sh`, `.lola-req`, and the `.claude/*` directories so readers can
locate the related implementation.

---

Outside diff comments:
In `@enhancements/001-workflow-architecture.md`:
- Around line 342-344: The Phase 5 example currently uses a symlink instruction
("ln -s") to create workflows/clair/.claude/scripts/session-setup.sh which
contradicts the earlier note that symlinks are not supported for hydrated
workflow subpaths (see the session-setup.sh reference and the non-viability note
at Lines 202–205); replace the symlink step with a copy or direct file placement
instruction so the actual session-setup.sh file exists in
workflows/clair/.claude/scripts/, ensuring the bootstrap script is present at
runtime (update the "Symlink the shared bootstrap script" section to create or
copy the real file rather than using ln -s).

In `@README.md`:
- Around line 37-40: The README's "One-time setup" uvx commands still use the
deprecated flag --module-content=..., causing mixed syntax with the new
`#subdirectory` guidance; update each uvx command shown (the three lines beginning
with "uvx --python 3.13 --from lola-ai lola mod add
https://github.com/quay/ai-helpers.git --module-content=plugins/...") by
removing the --module-content argument and appending the subdirectory to the
repo URL as a fragment (use `#subdirectory`=plugins/<name>), e.g. change the URL
portion to ...ai-helpers.git#subdirectory=plugins/dev (and similarly for
jira-planning and openshift-testing) so the commands uniformly use the new
syntax.

In `@workflows/quay-ticket/.claude/scripts/session-setup.sh`:
- Around line 55-58: The current post-install validation in session-setup.sh
uses a simple emptiness check on "${CLAUDE_DIR}/scripts" which can be fooled
because session-setup.sh itself may seed that directory; modify the script to
record the directory contents before running the plugin install (e.g.,
PRE_SCRIPTS="$(ls -A "${CLAUDE_DIR}/scripts" 2>/dev/null || true)"), run the
install, then compute POST_SCRIPTS and fail only if no new entries were added
(compare PRE_SCRIPTS vs POST_SCRIPTS with comm/diff or by checking for any file
in POST_SCRIPTS not present in PRE_SCRIPTS); reference the CLAUDE_DIR/scripts
path and the session-setup.sh install step to locate where to add PRE_SCRIPTS,
the install invocation, and the post-install comparison logic.
🪄 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: CHILL

Plan: Enterprise

Run ID: 7c585c47-bbd1-4d7e-85bb-553493e7117f

📥 Commits

Reviewing files that changed from the base of the PR and between 231d40a and b56de0b.

📒 Files selected for processing (19)
  • README.md
  • enhancements/001-workflow-architecture.md
  • enhancements/002-quay-bugfix-workflow.md
  • scripts/session-setup.sh
  • workflows/autofix-dispatcher/.claude/scripts/session-setup.sh
  • workflows/konflux-build-debugger/.claude/scripts/session-setup.sh
  • workflows/konflux-build-debugger/.lola-req
  • workflows/konflux-build-triage/.claude/scripts/session-setup.sh
  • workflows/quay-bugfix/.claude/scripts/session-setup.sh
  • workflows/quay-bugfix/.lola-req
  • workflows/quay-bugfix/README.md
  • workflows/quay-cvefix/.claude/scripts/session-setup.sh
  • workflows/quay-cvefix/.lola-req
  • workflows/quay-deploy/.claude/scripts/session-setup.sh
  • workflows/quay-deploy/.lola-req
  • workflows/quay-ticket/.claude/scripts/session-setup.sh
  • workflows/quay-ticket/.lola-req
  • workflows/quay-ticket/CLAUDE.md
  • workflows/quay-ticket/README.md
📜 Review details
🧰 Additional context used
🪛 markdownlint-cli2 (0.22.1)
README.md

[warning] 52-52: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (12)
scripts/session-setup.sh (1)

19-19: LGTM!

workflows/autofix-dispatcher/.claude/scripts/session-setup.sh (1)

19-19: LGTM!

workflows/quay-deploy/.claude/scripts/session-setup.sh (1)

20-20: LGTM!

workflows/konflux-build-debugger/.claude/scripts/session-setup.sh (1)

147-148: LGTM!

workflows/konflux-build-triage/.claude/scripts/session-setup.sh (1)

147-148: LGTM!

enhancements/002-quay-bugfix-workflow.md (1)

160-161: LGTM!

workflows/konflux-build-debugger/.lola-req (1)

2-2: LGTM!

workflows/quay-bugfix/.lola-req (1)

1-3: LGTM!

workflows/quay-cvefix/.lola-req (1)

1-3: LGTM!

workflows/quay-deploy/.lola-req (1)

1-2: LGTM!

workflows/quay-ticket/.lola-req (1)

1-3: LGTM!

workflows/quay-cvefix/.claude/scripts/session-setup.sh (1)

48-48: Same Lola flag-compatibility concern applies here.

This line matches the previously noted --module-content compatibility check in the bugfix workflow script.

Comment thread README.md Outdated
if [ -n "$content_dir" ]; then
$LOLA mod add "$url" --module-content="$content_dir" --name "$name" 2>&1 | tail -1
if [ -n "$subdir" ]; then
$LOLA mod add "$url" --module-content="$subdir" --name "$name" 2>&1 | tail -1

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

In Lola v0.5.0, is lola mod add --module-content=still supported, or should subdirectory be provided only via URL fragments like#subdirectory=?

💡 Result:

In Lola v0.5.0, lola mod add --module-content=<path> is not supported (it is not present in the current CLI/module-management docs for Lola); for specifying a subdirectory of module content you should instead use URL fragments of the form #subdirectory=<path> (or equivalent config such as .lola-req), since ongoing work and issues focus on adding “content subdirectory path” via request/config handling rather than a --module-content flag. Evidence: The official Lola docs show lola mod add <source> with no --module-content option mentioned, and module registration is done from git/zip/tar/folder sources via lola mod add https://… style commands [1][2]. Additionally, there is an open/merged development thread specifically about “support content subdirectory path in.lola-req for monorepo git sources,” indicating the mechanism for subdirectory-scoped content is part of the request/config format rather than a CLI --module-content flag [3].

Citations:


Remove/replace unsupported --module-content flag for Lola v0.5.0
In workflows/quay-bugfix/.claude/scripts/session-setup.sh (line 48), the command $LOLA mod add "$url" --module-content="$subdir" --name "$name" uses --module-content, which is not supported in Lola v0.5.0; provide the subdirectory via the supported #subdirectory=<path> URL fragment (or equivalent supported config such as .lola-req) instead.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@workflows/quay-bugfix/.claude/scripts/session-setup.sh` at line 48, The
command using the unsupported flag "--module-content" in the invocation of $LOLA
mod add should be changed to supply the subdirectory via the URL fragment or
supported config; remove the "--module-content=\"$subdir\"" argument and instead
append "`#subdirectory`=$subdir" (or other supported fragment) to the "$url"
variable before calling "$LOLA mod add \"$url\" --name \"$name\"" (alternatively
update the repository to include a .lola-req with the subdir), ensuring the call
no longer passes the unsupported flag.

Comment thread workflows/quay-bugfix/README.md Outdated
Comment thread workflows/quay-ticket/CLAUDE.md Outdated
Comment thread workflows/quay-ticket/README.md Outdated
- Fix quay-ticket session-setup.sh validation to use find + exclude
  pattern instead of ls -A (matches quay-bugfix/quay-cvefix)
- Update README/CLAUDE.md descriptions to accurately reflect the
  fragment-parsing shim approach (lola mod add + lola install)
- Fix enhancement-001 Phase 5 example: ln -s → cp (symlinks don't
  survive hydrate subpath extraction)
- Add text language tag to .lola-req code block in README

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant