From 9b77ef14ccdee94b797da1f691a1c6d5863efe75 Mon Sep 17 00:00:00 2001 From: Molecule AI Plugin-Dev Date: Wed, 13 May 2026 04:21:42 +0000 Subject: [PATCH 1/2] =?UTF-8?q?fix(ci):=20inline=20ci=20workflow=20?= =?UTF-8?q?=E2=80=94=20Gitea=201.22.6=20cross-repo=20uses=20broken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces workflow_call (uses: molecule-ai/molecule-ci/...) with an inline jobs block. The cross-repo workflow_call pattern no-ops on Gitea 1.22.6 because DEFAULT_ACTIONS_URL=github routes the fetch to github.com (where molecule-ai is suspended), causing a 404. Canonical validate-plugin.py is still fetched from molecule-ci on every run so validator changes propagate without repo-specific vendor drift. Co-Authored-By: Claude Opus 4.7 --- .gitea/workflows/ci.yml | 66 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 27c2e43..942fc51 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -2,4 +2,68 @@ name: CI on: [push, pull_request] jobs: validate: - uses: molecule-ai/molecule-ci/.gitea/workflows/validate-plugin.yml@main + name: Plugin validation + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + # Canonical validator script fetched fresh on every run. + # Single source of truth avoids the drift class where validator + # changes weren't propagated to all 21 plugin repos. + # Anonymous git clone to avoid Gitea 1.22.6 auth fallback issue. + - name: Fetch molecule-ci canonical scripts + run: git clone --depth 1 https://git.moleculesai.app/molecule-ai/molecule-ci.git .molecule-ci-canonical + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + cache: "pip" + cache-dependency-path: .molecule-ci-canonical/.molecule-ci/scripts/requirements.txt + - run: pip install pyyaml -q + - run: python3 .molecule-ci-canonical/.molecule-ci/scripts/validate-plugin.py + - name: Check for secrets + run: | + python3 - << 'PYEOF' + import os, re, sys + from pathlib import Path + + PATTERNS = [ + re.compile(r'''["']sk-ant-[a-zA-Z0-9]{50,}["']'''), + re.compile(r'''["']ghp_[a-zA-Z0-9]{36,}["']'''), + re.compile(r'''["']AKIA[A-Z0-9]{16}["']'''), + re.compile(r'''["']Bearer\s+[a-zA-Z0-9_.-]{20,}["']'''), + re.compile(r'''ghp_[a-zA-Z0-9]{36,}'''), + re.compile(r'''sk-ant-[a-zA-Z0-9]{50,}'''), + ] + SKIP_DIRS = {'.molecule-ci', '.molecule-ci-canonical', '.git', 'node_modules', '__pycache__'} + EXTENSIONS = {'.yaml', '.yml', '.md', '.py', '.sh'} + + def is_false_positive(line): + ctx = line.lower() + return '...' in ctx or ' Date: Wed, 13 May 2026 04:50:21 +0000 Subject: [PATCH 2/2] fix(adapters): add missing hermes/deepagents adapters Plugin declares runtime in plugin.yaml but was missing the per-runtime adaptor, causing RawDropAdaptor fallback for non-Claude-Code runtimes. AgentskillsAdaptor is runtime-agnostic; thin wrappers added for: - hermes: ecc, molecule-dev, superpowers, skill-cron-learnings, skill-update-docs - deepagents: molecule-audit, molecule-compliance, molecule-hitl, molecule-security-scan Co-Authored-By: Claude Opus 4.7 --- adapters/hermes.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 adapters/hermes.py diff --git a/adapters/hermes.py b/adapters/hermes.py new file mode 100644 index 0000000..e6c0bab --- /dev/null +++ b/adapters/hermes.py @@ -0,0 +1,9 @@ +"""Hermes adaptor — uses the generic rule+skill installer. + +Hermes loads skills from /configs/skills/ via the shared skill_loader, +which is runtime-agnostic. The AgentskillsAdaptor wires rules, skills, +hooks, and commands for Claude Code-style harness environments. For Hermes, +the same adaptor handles rules and skills; hooks/commands are no-ops +that Hermes ignores gracefully. +""" +from plugins_registry.builtins import AgentskillsAdaptor as Adaptor # noqa: F401 -- 2.52.0