Skip to content

feat: add lola AI Context Module for skill distribution#126

Open
yvonnedevlinrh wants to merge 3 commits into
complytime:mainfrom
yvonnedevlinrh:feat/lola-module
Open

feat: add lola AI Context Module for skill distribution#126
yvonnedevlinrh wants to merge 3 commits into
complytime:mainfrom
yvonnedevlinrh:feat/lola-module

Conversation

@yvonnedevlinrh

Copy link
Copy Markdown
Contributor

Summary

Add a module/ directory following the lola AI Context Module layout so that consumer repos can install complypack's skills and commands via lola install instead of manually copying files or relying on symlinks that only resolve inside this repo.

What's included

New module/ directory (11 files):

  • AGENTS.md — consumer-facing overview of skills, commands, and pipeline flow
  • mcps.json — MCP server config template with VERSION placeholders
  • skills/ — copies of mcp-setup, audit-pipeline (with sub-stages), and pack-assessment
  • commands/ — copies of comply-setup, comply-pipeline, comply-pack

Drift prevention (Taskfile.yml):

  • task sync-module — regenerates module/skills/ and module/commands/ from canonical sources
  • task check-module-sync — diffs module copies against sources, exits non-zero on divergence (CI-friendly)

Install docs (INSTALL.md):

  • Added "Lola (any AI assistant)" section with install/update instructions

What's unchanged (backwards compatible)

  • skills/ (root) — canonical source, used by Claude Code / Cursor plugins
  • .opencode/skills/ (symlinks) — used for complypack development
  • .opencode/commands/, commands/ (TOML), .claude-plugin/, .cursor-plugin/, gemini-extension.json

Consumer install flow

lola mod add https://github.com/complytime/complypack.git
lola install complypack -a opencode --scope project

Related Issues

Review Hints

  • This is a file-authoring change only — no Go code, no domain logic, no tests affected.
  • Skill and command files in module/ are exact copies of their sources. Verify with: task check-module-sync (or manually run the diff -r commands from the Taskfile).
  • module/AGENTS.md is new content — review for accuracy against the existing skills.
  • module/mcps.json uses VERSION placeholders intentionally; the mcp-setup skill handles interactive version resolution at runtime.

@yvonnedevlinrh yvonnedevlinrh self-assigned this Jul 9, 2026
@yvonnedevlinrh yvonnedevlinrh requested a review from a team as a code owner July 9, 2026 12:52
@yvonnedevlinrh yvonnedevlinrh requested review from gvauter and trevor-vaughan and removed request for a team July 9, 2026 12:52
Comment thread module/skills/audit-pipeline/adherence.md
Comment thread module/skills/audit-pipeline/SKILL.md
Comment thread module/skills/mcp-setup/SKILL.md
Comment thread module/skills/mcp-setup/SKILL.md Outdated
> "No container image found for tag `<VERSION>`. Using `:main` instead.
> The `:main` tag tracks the latest commit on the main branch."

### Step 5: Detect Tool Environment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

You might want to put this up front so that it's nailed in early in the context window.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Addressed in 6d911c1: moved tool environment detection to Step 1 so the LLM knows the target tool before making config decisions. Steps renumbered accordingly in both the canonical source and module copy.

Comment thread module/skills/mcp-setup/SKILL.md Outdated
- **OpenCode**: Write `opencode.json` (see Step 6, `opencode.json` format). Verify that `.opencode/skills/` symlinks exist — if not, create them:
```bash
mkdir -p .opencode/skills
ln -sf ../../skills/audit-pipeline .opencode/skills/audit-pipeline

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Does this actually work? Seems like a hold over from a local environment.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Addressed in 6d911c1: removed the symlink creation block. These instructions are specific to the complypack development environment (where skills/ exists at repo root). In consumer repos installed via lola, skill files are placed directly into .opencode/skills/ — no symlinks needed.

}
```

> **Key differences:** OpenCode uses `opencode.json` with top-level key

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Shouldn't need this block.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This block is needed. OpenCode's config format differs from Claude Code's .mcp.json in three ways: (1) top-level key is mcp not mcpServers, (2) each server requires "type": "local", (3) command is a single array rather than split into command + args. Without this block, users wouldn't know the OpenCode-specific structure.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Ah, my point is that users don't read this file, LLMs do. I don't think that the LLM needs this context block.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I'm going to keep it on the off chance there is a a human who is reviewing the skill and might need to understand why two separate config blocks exist and what the structural differences are. Without it, a user editing the Claude config might assume the OpenCode block should match, or vice versa.

yvonnedevlinrh added a commit to yvonnedevlinrh/complypack that referenced this pull request Jul 10, 2026
Move tool environment detection to Step 1 so the LLM knows the
target tool before making config decisions. Remove symlink creation
instructions that are specific to the complypack development
environment and would not work in consumer repos installed via lola.

Addresses PR complytime#126 review feedback from @trevor-vaughan.

Assisted-by: OpenCode (claude-opus-4-6)
Signed-off-by: Yvonne Devlin <ydevlin@redhat.com>
@yvonnedevlinrh

Copy link
Copy Markdown
Contributor Author

Thanks @trevor-vaughan Addressed the tool detection ordering and symlink cleanup in 6d911c1. I also opened #129 to track the sub-stage invocation guard question properly.

Comment thread Taskfile.yml
- rm -rf module/skills/mcp-setup module/skills/audit-pipeline module/skills/pack-assessment
- rm -f module/commands/comply-setup.md module/commands/comply-pipeline.md module/commands/comply-pack.md
- mkdir -p module/skills module/commands
- cp -r skills/mcp-setup module/skills/mcp-setup

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is kind of odd to me. Is the intent to support lola as well as other mechanisms?

lola will install to both claude and opencode.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes, the intent is to support lola alongside the existing tool-specific plugin directories. Currently lola installs to OpenCode only. The root-level skills/ directory is the canonical source; .opencode/skills/ contains symlinks back to it for local complypack development (so OpenCode discovers the skills when working on this repo). module/ is the lola-distributable copy. sync-module keeps module/ in sync with the canonical sources so both paths stay current.

@gvauter gvauter left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

AI Review Summary

Verdict: COMMENT — 1 verified finding (MEDIUM). No blocking issues from this review.

Verified Finding

[MEDIUM] check-module-sync not wired into CI: The PR adds check-module-sync as a Taskfile target and the PR description calls it "CI-friendly," but no workflow in .github/workflows/ runs it. Without CI enforcement, drift between canonical sources and module copies will go undetected. Can be addressed as a follow-up.

Notes

  • 2 unresolved threads from @trevor-vaughan on the second commit remain the primary blocker (OpenCode config block at mcp-setup line 160; Taskfile scope question at line 22).
  • Module copies verified in sync with canonical sources at current HEAD.
  • All CI checks pass.

This review was generated by /review-pr (AI-assisted).

Comment thread Taskfile.yml
- cp .opencode/commands/comply-pipeline.md module/commands/comply-pipeline.md
- cp .opencode/commands/comply-pack.md module/commands/comply-pack.md

check-module-sync:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[MEDIUM] check-module-sync is described as "CI-friendly" in the PR description, but no workflow in .github/workflows/ runs it. Without CI enforcement, drift between canonical sources (skills/, .opencode/commands/) and module/ copies will go undetected after future edits to canonical files. Consider adding a CI job that runs this target, or note in the PR description that CI integration is planned for a follow-up.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Addressed in fd6f701: added a module-sync job to ci_local.yml that runs the diff checks on every push and PR to main. Used diff directly rather than task check-module-sync to avoid requiring Taskfile as a CI dependency. Automated syncing via a pre-commit hook is tracked in #139.

yvonnedevlinrh added a commit to yvonnedevlinrh/complypack that referenced this pull request Jul 13, 2026
Add a module-sync job to ci_local.yml that verifies module/ copies
match their canonical sources in skills/ and .opencode/commands/.
Uses diff commands directly to avoid requiring Taskfile as a CI
dependency.

Addresses PR complytime#126 review feedback from @gvauter.

Assisted-by: OpenCode (claude-opus-4-6)
Signed-off-by: Yvonne Devlin <ydevlin@redhat.com>
Create module/ directory following the lola AI Context Module layout
so consumer repos can install complypack skills and commands via lola
instead of relying on symlinks that only resolve inside this repo.

Structure:
- module/AGENTS.md: consumer-facing overview of skills, commands, pipeline
- module/mcps.json: MCP server config template with VERSION placeholders
- module/skills/: copies of mcp-setup, audit-pipeline, pack-assessment
- module/commands/: copies of comply-setup, comply-pipeline, comply-pack

Add Taskfile targets for drift prevention:
- sync-module: copies skills/ and commands into module/
- check-module-sync: diffs module/ against sources (CI-friendly)

Update INSTALL.md with lola install instructions.

Closes complytime#119

Assisted-by: OpenCode (claude-opus-4-6)
Signed-off-by: Yvonne Devlin <ydevlin@redhat.com>
Move tool environment detection to Step 1 so the LLM knows the
target tool before making config decisions. Remove symlink creation
instructions that are specific to the complypack development
environment and would not work in consumer repos installed via lola.

Addresses PR complytime#126 review feedback from @trevor-vaughan.

Assisted-by: OpenCode (claude-opus-4-6)
Signed-off-by: Yvonne Devlin <ydevlin@redhat.com>
Add a module-sync job to ci_local.yml that verifies module/ copies
match their canonical sources in skills/ and .opencode/commands/.
Uses diff commands directly to avoid requiring Taskfile as a CI
dependency.

Addresses PR complytime#126 review feedback from @gvauter.

Assisted-by: OpenCode (claude-opus-4-6)
Signed-off-by: Yvonne Devlin <ydevlin@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add lola AI Context Module for OpenCode skill distribution in consumer repos Distribute complypack skill and MCP server as a multi-platform plugin

3 participants