From f849047537b5e4dca44794d62a320ac46c1bf676 Mon Sep 17 00:00:00 2001 From: J Date: Tue, 21 Jul 2026 17:37:35 +0900 Subject: [PATCH 1/3] fix(research): require explicit invocation like the frontend skill MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit An ordinary Codex prompt ('조사해서 정리해줘' — investigate and summarize) activated superloopy-research: the skill declared SUPERLOOPY RESEARCH ENABLED and began composing research lanes. Its trigger list treated genericized phrases ('deep research', 'a request for a cited research report, in any language') as explicit demand, and its Codex agent metadata carried no explicit-only clause at all. Apply the same hardening the frontend skill received for issue #28: activation requires the explicit $/slash invocation, a leading loopy/루피 research demand, or an active loop routing a research deliverable here; plain research/investigate/summarize vocabulary is named as non-activation in the skill description, the activation section, the Codex default_prompt, and all five README rows. Contract tests pin the explicit-only language in both metadata surfaces. --- README.es.md | 2 +- README.ja.md | 2 +- README.ko.md | 2 +- README.md | 2 +- README.zh-CN.md | 2 +- docs/superloopy-file-audit.md | 4 ++-- docs/superloopy-loop-golden-set.md | 4 ++-- skills/superloopy-research/SKILL.md | 4 ++-- skills/superloopy-research/agents/openai.yaml | 4 ++-- test/plugin.test.js | 8 ++++++++ 10 files changed, 21 insertions(+), 13 deletions(-) diff --git a/README.es.md b/README.es.md index 61556dd..cfaa73d 100644 --- a/README.es.md +++ b/README.es.md @@ -46,7 +46,7 @@ Superloopy mantiene pequeña la capa de comandos. Las skills guardan el flujo es | --- | --- | --- | | `superloopy-loop` | Escribes `loopy ` o `loopy team ` para un loop completo; usa `loopywork`, `lpy` o `$lpy` para contexto solo de guidance. | Los loops completos producen un plan ligero, siguientes acciones guiadas, prueba respaldada por comandos, un quality gate y un evidence report final. Los alias de guidance no mutan estado. | | `superloopy-doctor` | Diagnosticas instalación, wrapper, plugin cache, hook/bootstrap, agentes, wiring de Codex/Claude Code o versiones stale. | Health report de solo lectura: evidencia de wrapper/cache/version, checks fallidos y el comando exacto de reparación que solo se ejecuta si lo apruebas. | -| `superloopy-research` | Pides `loopy research`, deep research, exhaustive investigation o un informe con citas. | Ejes de investigación, expansion waves, un claim ledger, notas de verificación y un synthesis artifact citado. | +| `superloopy-research` | Invocas explícitamente `$superloopy:superloopy-research` en Codex o `/superloopy:superloopy-research` en Claude Code, o inicias la investigación con un `loopy`/`루피` inicial (por ejemplo `loopy research`). Las peticiones simples de investigar, buscar o resumir no lo activan. | Ejes de investigación, expansion waves, un claim ledger, notas de verificación y un synthesis artifact citado. | | `superloopy-clone` | Pides `loopy clone`, clonación autorizada de un sitio, reconstrucción, migración o recuperación visual precisa de páginas. | Capturas de navegador, topología de página, design tokens, inventario de assets, notas de implementación, salida de build y evidencia de visual QA. | | `superloopy-frontend` | Solo para interfaces de aplicaciones en pantalla dentro del alcance —Web alojada en navegador (pública, autenticada, privada/interna, PWA instalada o extensión), Web interactiva de contenido ya desplegada (campañas, publicaciones o experiencias de landing con un recorrido de usuario), escritorio, móvil/tableta, clientes embebidos/híbridos, UI con renderizado personalizado, Qt o destinos mixtos—, invocas explícitamente `$superloopy:superloopy-frontend` en Codex o `/superloopy:superloopy-frontend` en Claude Code, o inicias ese trabajo con `loopy`/`루피` al principio. La mera terminología de UI, plataforma o framework no la activa; se excluyen TV, wearables, XR, automoción, UI de juegos, TUI, artefactos estáticos de medios/documentos y trabajo que no sea de UI. | Un contrato de UX compartido más rutas de plataforma/composición. La evidencia es proporcional a las afirmaciones modificadas y verifica por separado cada navegador, destino/shell nativo, renderizador y destino mixto. Las ejecuciones independientes conservan recibos por ejecución; los bucles activos los vinculan al goal y criterion. | | `humanize-korean` | Úsala cuando usuarios coreanos piden quitar el tono AI, corregir 번역투 o hacer que el texto coreano suene humano sin cambiar hechos. | Escribe `final.md`, `summary.md` y `audit.json`; en loops de Superloopy registra evidencia en `.superloopy/evidence/humanize-korean/`. | diff --git a/README.ja.md b/README.ja.md index d48dafc..51c2ba4 100644 --- a/README.ja.md +++ b/README.ja.md @@ -46,7 +46,7 @@ Superloopy はコマンド層を小さく保ちます。専門的な進め方は | --- | --- | --- | | `superloopy-loop` | 完全な loop は `loopy ` または `loopy team ` で始めます。`loopywork`、`lpy`、`$lpy` は guidance だけが必要なときに使います。 | 完全な loop は軽量な計画、次の行動、コマンドで検証した証拠、品質 gate、最終 evidence report を残します。Guidance alias は状態を変更しません。 | | `superloopy-doctor` | install、wrapper、plugin cache、hook/bootstrap、agent、Codex/Claude Code host wiring、stale version の問題を診断するとき。 | 読み取り専用の health report: wrapper/cache/version の証拠、失敗した check、承認後にだけ実行する正確な修復コマンド。 | -| `superloopy-research` | `loopy research`、deep research、exhaustive investigation、または引用付きレポートを求めるとき。 | 調査軸、拡張 wave、claim ledger、検証メモ、引用付き synthesis artifact。 | +| `superloopy-research` | Codex の `$superloopy:superloopy-research` または Claude Code の `/superloopy:superloopy-research` を明示的に呼び出すか、リサーチ作業を先頭の `loopy`/`루피`(例: `loopy research`)で始めたときのみ。単なる調査・検索・要約の依頼では起動しません。 | 調査軸、拡張 wave、claim ledger、検証メモ、引用付き synthesis artifact。 | | `superloopy-clone` | `loopy clone`、許可された Web サイトのクローン、再構築、移行、ピクセル単位の復元を求めるとき。 | ブラウザ取得、ページ構造、デザイントークン、アセット一覧、実装メモ、build 出力、visual QA 証拠。 | | `superloopy-frontend` | 対応範囲の画面ベースのアプリ UI(公開・認証済み・非公開/社内向け・インストール型 PWA/拡張機能を含むブラウザーホスト Web、ユーザージャーニーを備えたインタラクティブなデプロイ済みコンテンツ主導 Web(キャンペーン、出版、ランディング体験など)、デスクトップ、モバイル/タブレット、組み込み/ハイブリッドクライアント、カスタムレンダリング UI、Qt、混在ターゲット)の作業で Codex の `$superloopy:superloopy-frontend` または Claude Code の `/superloopy:superloopy-frontend` を明示的に呼び出すか、その作業を先頭の `loopy`/`루피` で始める場合だけ。単なる UI・プラットフォーム・フレームワーク用語では起動せず、TV、ウェアラブル、XR、自動車、ゲーム UI、TUI、静的なメディア/文書成果物、非 UI 作業は除外します。 | 1 つの共通 UX 契約にプラットフォーム/コンポジション経路を加えます。証拠は変更した主張に比例し、ブラウザー、ネイティブのターゲット/シェル、レンダラー、混在ターゲットの各所有者を独立して検証します。単独実行では実行単位の証跡を保持し、アクティブなループでは goal と criterion に関連付けます。 | | `humanize-korean` | 韓国語テキストの AI っぽさや翻訳調を抑え、事実を変えずに人が書いたように整えるとき。 | `final.md`、`summary.md`、`audit.json` を書き、Superloopy loop では `.superloopy/evidence/humanize-korean/` に証拠を残します。 | diff --git a/README.ko.md b/README.ko.md index 4886e28..ac5a907 100644 --- a/README.ko.md +++ b/README.ko.md @@ -46,7 +46,7 @@ Superloopy는 명령을 작게 둡니다. 대신 스킬이 작업 방식을 잡 | --- | --- | --- | | `superloopy-loop` | full loop는 `loopy ` 또는 `loopy team `로 시작합니다. `loopywork`, `lpy`, `$lpy`는 가벼운 guidance만 넣을 때 씁니다. | full loop는 가벼운 계획, 다음 행동, 명령으로 검증한 근거, 품질 게이트, 최종 evidence report를 남깁니다. guidance alias는 상태를 바꾸지 않습니다. | | `superloopy-doctor` | install, wrapper, plugin cache, hook/bootstrap, agent, Codex/Claude Code host wiring, stale version 문제를 진단할 때. | 읽기 전용 health report: wrapper/cache/version 근거, 실패한 체크, 승인 후 실행할 정확한 복구 명령. | -| `superloopy-research` | `loopy research`, deep research, exhaustive investigation, 출처 있는 리서치 보고서를 요청할 때. | 리서치 축, 확장 wave, claim ledger, 검증 메모, 출처가 붙은 synthesis artifact. | +| `superloopy-research` | Codex의 `$superloopy:superloopy-research`나 Claude Code의 `/superloopy:superloopy-research`를 직접 호출하거나, 리서치 작업을 선행 `loopy`/`루피`(예: `loopy research`)로 시작할 때만. 단순한 조사·검색·요약 요청으로는 켜지지 않습니다. | 리서치 축, 확장 wave, claim ledger, 검증 메모, 출처가 붙은 synthesis artifact. | | `superloopy-clone` | `loopy clone`, 허가된 웹사이트 클론, 리빌드, 마이그레이션, 픽셀 기준 복구를 요청할 때. | 브라우저 캡처, 페이지 구조, 디자인 토큰, asset 목록, 구현 메모, build 출력, visual QA 근거. | | `superloopy-frontend` | 지원되는 화면 기반 애플리케이션 UI(공개·인증·비공개/내부용·설치형 PWA/확장을 포함한 브라우저 호스팅 웹, 사용자 여정이 있는 인터랙티브 배포형 콘텐츠 중심 웹(캠페인·출판·랜딩 경험 등), 데스크톱, 모바일/태블릿, 임베디드/하이브리드 클라이언트, 커스텀 렌더링 UI, Qt, 혼합 타깃) 작업에 Codex의 `$superloopy:superloopy-frontend`나 Claude Code의 `/superloopy:superloopy-frontend`를 직접 호출하거나, 해당 작업을 선행 `loopy`/`루피`로 시작할 때만. 단순한 UI·플랫폼·프레임워크 용어로는 켜지지 않으며 TV·웨어러블·XR·자동차·게임 UI·TUI·정적 미디어/문서 결과물·비 UI 작업은 제외됩니다. | 하나의 공통 UX 계약에 플랫폼/컴포지션 경로를 더합니다. 근거는 변경한 주장에 비례하며 브라우저, 네이티브 타깃/셸, 렌더러, 혼합 타깃의 각 소유자를 독립적으로 검증합니다. 독립 실행에서는 실행별 영수증을 보존하고 활성 루프에서는 goal과 criterion에 연결합니다. | | `humanize-korean` | 한국어 글의 AI 티를 줄이거나 번역투를 고치고, 사실은 바꾸지 않은 채 사람이 쓴 것처럼 다듬어야 할 때. | `final.md`, `summary.md`, `audit.json`을 쓰고, Superloopy loop 안에서는 `.superloopy/evidence/humanize-korean/` 아래에 근거를 남깁니다. | diff --git a/README.md b/README.md index 262d032..e9648b3 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Superloopy keeps the command layer small. Skills carry the specialist workflow: | --- | --- | --- | | `superloopy-loop` | You type `loopy ` or `loopy team ` for a full loop; use `loopywork`, `lpy`, or `$lpy` for guidance-only context. | Full loops produce a lightweight plan, guided next actions, command-backed proof, a quality gate, and a final evidence report. Guidance aliases do not mutate state. | | `superloopy-doctor` | You diagnose install, wrapper, plugin cache, hook/bootstrap, agent, Codex/Claude Code host wiring, or stale-version problems. | A read-only health report with wrapper/cache/version evidence, failing checks, and the exact repair command to run only if approved. | -| `superloopy-research` | You ask for `loopy research`, deep research, exhaustive investigation, or a cited report. | Research axes, expansion waves, a claim ledger, verification notes, and a cited synthesis artifact. | +| `superloopy-research` | You explicitly invoke Codex `$superloopy:superloopy-research` or Claude Code `/superloopy:superloopy-research`, or start the research task with a leading `loopy`/`루피` (such as `loopy research`). Plain research, investigate, or summarize requests do not activate it. | Research axes, expansion waves, a claim ledger, verification notes, and a cited synthesis artifact. | | `superloopy-clone` | You ask for `loopy clone`, authorized website cloning, rebuilding, migration, or pixel-focused page recovery. | Browser captures, page topology, design tokens, asset inventory, implementation notes, build output, and visual QA evidence. | | `superloopy-frontend` | You explicitly invoke Codex `$superloopy:superloopy-frontend` or Claude Code `/superloopy:superloopy-frontend` for supported screen-based application UI across browser-hosted Web (public, authenticated, private/internal, installed PWA, or extension), interactive deployed content-led Web (campaign, publication, or landing experiences with a user journey), desktop, mobile/tablet, embedded/hybrid clients, custom-rendered UI, Qt, or mixed targets, or start that work with a leading `loopy`/`루피`. Plain UI, platform, or framework terms do not activate it; TV, wearable, XR, automotive, game UI, TUI, static media/document artifacts, and non-UI work stay excluded. | One shared UX contract plus platform/composition routes. Evidence is proportional to changed claims and independently covers each browser, native target/shell, renderer, and mixed target. Standalone runs retain run-scoped receipts; active loops bind them to the goal and criterion. | | `humanize-korean` | Use when Korean users ask to remove AI tone, fix 번역투, or make Korean text sound human without changing facts. | Writes `final.md`, `summary.md`, and `audit.json`; in Superloopy loops it records evidence under `.superloopy/evidence/humanize-korean/`. | diff --git a/README.zh-CN.md b/README.zh-CN.md index b2ec151..895ee4a 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -46,7 +46,7 @@ Superloopy 保持命令层很小。具体工作方式由 skills 负责:什么 | --- | --- | --- | | `superloopy-loop` | 用 `loopy ` 或 `loopy team ` 启动完整 loop;用 `loopywork`、`lpy`、`$lpy` 只注入 guidance。 | 完整 loop 会产出轻量计划、下一步指引、命令验证证明、质量 gate、最终 evidence report。Guidance alias 不会改状态。 | | `superloopy-doctor` | 诊断安装、wrapper、plugin cache、hook/bootstrap、agent、Codex/Claude Code host wiring 或版本过旧问题时。 | 只读 health report:wrapper/cache/version 证据、失败检查,以及只有批准后才运行的精确修复命令。 | -| `superloopy-research` | 请求 `loopy research`、deep research、exhaustive investigation,或需要带引用的研究报告时。 | 研究轴、扩展 wave、claim ledger、验证笔记、带引用的 synthesis artifact。 | +| `superloopy-research` | 仅当你在 Codex 中显式调用 `$superloopy:superloopy-research`、在 Claude Code 中调用 `/superloopy:superloopy-research`,或以行首 `loopy`/`루피`(如 `loopy research`)开始研究任务时。普通的调查、检索或总结请求不会激活它。 | 研究轴、扩展 wave、claim ledger、验证笔记、带引用的 synthesis artifact。 | | `superloopy-clone` | 请求 `loopy clone`、已授权的网站克隆、重建、迁移,或需要按像素恢复页面时。 | 浏览器截图、页面结构、设计 token、资产清单、实现笔记、build 输出、visual QA 证据。 | | `superloopy-frontend` | 仅在处理受支持的基于屏幕的应用 UI(浏览器托管 Web,包括公开、需认证、私有/内部、已安装 PWA 或扩展;具有用户旅程的已部署交互式内容型 Web,例如营销活动、出版物或着陆页体验;以及桌面、移动设备/平板、嵌入式/混合客户端、自定义渲染 UI、Qt 或混合目标)时,在 Codex 中显式调用 `$superloopy:superloopy-frontend`,或在 Claude Code 中调用 `/superloopy:superloopy-frontend`,也可用开头的 `loopy`/`루피` 启动该工作。仅出现 UI、平台或框架词汇不会激活它;TV、可穿戴设备、XR、汽车、游戏 UI、TUI、静态媒体/文档产物和非 UI 工作仍被排除。 | 采用一份共享 UX 契约,并叠加平台/界面构成路径。证据与变更声明成比例,并分别验证浏览器、原生目标/外壳、渲染器和每个混合目标。独立运行保留按次划分的证据;活动循环则把证据绑定到 goal 和 criterion。 | | `humanize-korean` | 需要去掉韩文内容里的 AI 腔、修正翻译腔,或在不改事实的前提下让韩文更像真人写作时。 | 写入 `final.md`、`summary.md`、`audit.json`;在 Superloopy loop 中把证据记录到 `.superloopy/evidence/humanize-korean/`。 | diff --git a/docs/superloopy-file-audit.md b/docs/superloopy-file-audit.md index 96cd66f..6a278a2 100644 --- a/docs/superloopy-file-audit.md +++ b/docs/superloopy-file-audit.md @@ -333,8 +333,8 @@ Superloopy is its own lightweight loop harness: one small CLI, repo-local `.supe | `skills/superloopy-frontend/scripts/visual-diff.mjs` | Dependency-free PNG visual-diff for the frontend visual-QA gate: similarityScore, alpha intactness, and ranked grid hotspots as review evidence. | Superloopy-native; uses only node:zlib/node:fs, no external image library or vendored code. | | `skills/superloopy-loop/SKILL.md` | Skill instructions for Superloopy guide, proof, capture, evidence, check, finish, review, checkpoint, and doctor flow. | Uses Superloopy-native workflow terms. | | `skills/superloopy-loop/agents/openai.yaml` | Minimal agent metadata for Superloopy discovery. | Search terms are Superloopy-native. | -| `skills/superloopy-research/SKILL.md` | Skill instructions for deep research with EXPAND waves, claim verification, cited synthesis, and Superloopy evidence artifacts. | Superloopy-native research workflow; workers return text and parent-owned artifacts remain authoritative. | -| `skills/superloopy-research/agents/openai.yaml` | Minimal agent metadata for discovering the Superloopy research skill. | Superloopy-native skill metadata only. | +| `skills/superloopy-research/SKILL.md` | Explicit-invocation-gated skill instructions for deep research with EXPAND waves, claim verification, cited synthesis, and Superloopy evidence artifacts. | Superloopy-native research workflow; workers return text and parent-owned artifacts remain authoritative. | +| `skills/superloopy-research/agents/openai.yaml` | Minimal explicit-only agent metadata for discovering the Superloopy research skill without implicit activation. | Superloopy-native skill metadata only. | | `skills/superloopy-slides/LICENSE` | Upstream MIT license for the adapted frontend-slides skill content. | License text only; records third-party provenance and no executable plugin logic. | | `skills/superloopy-slides/SKILL.md` | Skill instructions for zero-dependency HTML slide decks: style discovery, fixed 16:9 stage, PPT conversion, PDF export, and a visual-QA evidence gate. | Superloopy-native evidence gate on `.superloopy/evidence/slides/`; adapted from the MIT frontend-slides skill with attribution. | | `skills/superloopy-slides/STYLE_PRESETS.md` | Twelve curated slide style presets with palettes, fonts, and signature elements. | Design reference content for deck generation only; no executable plugin logic. | diff --git a/docs/superloopy-loop-golden-set.md b/docs/superloopy-loop-golden-set.md index 0a999a9..d59c33a 100644 --- a/docs/superloopy-loop-golden-set.md +++ b/docs/superloopy-loop-golden-set.md @@ -353,8 +353,8 @@ Total: 100 points. | `skills/superloopy-frontend/scripts/visual-diff.mjs` | `test/visual-diff.test.js`. | Must decode 8-bit PNGs and emit dimensionsMatch, diffRatio, similarityScore, alphaChannelIntact, and ranked grid hotspots with no dependencies. | | `skills/superloopy-loop/SKILL.md` | `test/docs.test.js`, doctor skill check. | Must describe guide, proof, capture, evidence, check, finish, gates, and receipt rules accurately. | | `skills/superloopy-loop/agents/openai.yaml` | Audit coverage and reviewability check. | Must remain minimal Superloopy discovery metadata. | -| `skills/superloopy-research/SKILL.md` | `test/plugin.test.js`, audit coverage. | Must describe exhaustive deep research with EXPAND waves, claim verification, cited synthesis, and Superloopy evidence receipts. | -| `skills/superloopy-research/agents/openai.yaml` | Audit coverage and reviewability check. | Must remain minimal Superloopy discovery metadata for deep research. | +| `skills/superloopy-research/SKILL.md` | `test/plugin.test.js`, audit coverage. | Must require explicit invocation (`$superloopy:superloopy-research`, `/superloopy:superloopy-research`, or a leading `loopy`/`루피`), reject plain research/investigate/summarize vocabulary as activation, and describe exhaustive deep research with EXPAND waves, claim verification, cited synthesis, and Superloopy evidence receipts. | +| `skills/superloopy-research/agents/openai.yaml` | Audit coverage and reviewability check. | Must remain minimal explicit-only Superloopy discovery metadata for deep research. | | `skills/superloopy-slides/LICENSE` | Audit coverage and reviewability check. | Must remain Superloopy-native slides skill support content with no plugin runtime coupling. | | `skills/superloopy-slides/SKILL.md` | Audit coverage and reviewability check. | Must gate deck completion on a real-browser visual-QA artifact under `.superloopy/evidence/slides/` with a `SUPERLOOPY_EVIDENCE` receipt. | | `skills/superloopy-slides/STYLE_PRESETS.md` | Audit coverage and reviewability check. | Must remain Superloopy-native slides skill support content with no plugin runtime coupling. | diff --git a/skills/superloopy-research/SKILL.md b/skills/superloopy-research/SKILL.md index e41c4af..d77e087 100644 --- a/skills/superloopy-research/SKILL.md +++ b/skills/superloopy-research/SKILL.md @@ -1,6 +1,6 @@ --- name: superloopy-research -description: Maximum-saturation Superloopy research orchestration — parallel read-only research lanes across codebase, web, official docs, and OSS repos; a recursive EXPAND loop driven by leads workers return as message text; empirical verification by running code; a self-enforcing claim ledger; cited synthesis and optional markdown/pdf/html/slides reports, all gated by Superloopy evidence receipts. Triggers on "loopy research", "deep research", "exhaustive research", "ultra-precise investigation", or a request for a cited research report, in any language. ACTIVATES ONLY on an explicit research demand. Never self-activates for ordinary debugging or implementation context-gathering. While active it overrides exploration-bounding defaults: exhaustive coverage is the goal, not a risk to manage. +description: Use only after explicit Codex `$superloopy:superloopy-research` or Claude Code `/superloopy:superloopy-research` invocation, a research task started with a leading `loopy` or `루피` (such as `loopy research`), or an active Superloopy loop explicitly routing a research deliverable here. Maximum-saturation Superloopy research orchestration — parallel read-only research lanes across codebase, web, official docs, and OSS repos; a recursive EXPAND loop driven by leads workers return as message text; empirical verification by running code; a self-enforcing claim ledger; cited synthesis and optional markdown/pdf/html/slides reports, all gated by Superloopy evidence receipts. Do not activate from research, investigate, look-up, summarize, deep-dive, or report vocabulary alone, in any language; ordinary questions, debugging, and implementation context-gathering stay with their primary workflows. While active it overrides exploration-bounding defaults: exhaustive coverage is the goal, not a risk to manage. --- # Superloopy Research @@ -9,7 +9,7 @@ You are the research orchestrator. The user has explicitly ordered exhaustive re ## Activation -Run this skill only when the user explicitly demands it: "loopy research", "deep research", "exhaustive research", "ultra-precise investigation", or a request for a cited research report, in any language. An ordinary question, a debugging session, or another mode's context-gathering is not activation; answer those normally and mention that loopy research is available when a question would clearly benefit from it. +**Explicit activation only.** Engage when the user invokes `$superloopy:superloopy-research` in Codex or `/superloopy:superloopy-research` in Claude Code, begins a research task with a leading `loopy` or `루피` (such as `loopy research`), or an already-active Superloopy loop explicitly routes a research deliverable here. A plain request to research, investigate, look up, summarize, or write a report — in any language — is not authorization to activate this workflow: answer it normally and mention that loopy research is available when the question would clearly benefit from exhaustive cited coverage. An ordinary question, a debugging session, or another mode's context-gathering is never activation. Open your reply with `SUPERLOOPY RESEARCH ENABLED`. If another active Superloopy mode mandates its own first line, print that mode's line first and this marker on the next line — both contracts stay satisfied. diff --git a/skills/superloopy-research/agents/openai.yaml b/skills/superloopy-research/agents/openai.yaml index e5c8fce..98fa344 100644 --- a/skills/superloopy-research/agents/openai.yaml +++ b/skills/superloopy-research/agents/openai.yaml @@ -1,4 +1,4 @@ interface: display_name: "Superloopy Research" - short_description: "Deep research with Superloopy evidence" - default_prompt: "Use superloopy-research to run exhaustive research with EXPAND waves, cited synthesis, and Superloopy evidence artifacts." + short_description: "Explicit exhaustive-research workflow" + default_prompt: "Use `$superloopy:superloopy-research` only after explicit invocation for exhaustive research with EXPAND waves, cited synthesis, and Superloopy evidence artifacts; a plain research, investigate, look-up, or summarize request is not activation and stays with its primary workflow." diff --git a/test/plugin.test.js b/test/plugin.test.js index 056862b..2f161af 100644 --- a/test/plugin.test.js +++ b/test/plugin.test.js @@ -147,6 +147,9 @@ test("plugin packages Superloopy research and website-clone skills", async () => assert.match(research.frontmatter, /^name: superloopy-research$/m); assert.match(research.frontmatter, /loopy research|deep research/i); + assert.match(research.frontmatter, /only after explicit Codex `\$superloopy:superloopy-research` or Claude Code `\/superloopy:superloopy-research` invocation/u); + assert.match(research.frontmatter, /Do not activate from research, investigate, look-up, summarize, deep-dive, or report vocabulary alone, in any language/u); + assert.match(research.content, /\*\*Explicit activation only\.\*\*/u); assert.match(research.content, /SUPERLOOPY RESEARCH ENABLED/); assert.match(research.content, /EXPAND/); assert.match(research.content, /SUPERLOOPY_EVIDENCE/); @@ -166,6 +169,11 @@ test("plugin packages Superloopy research and website-clone skills", async () => assert.match(metadata, /short_description:/); assert.match(metadata, /default_prompt:/); } + + const researchMetadata = await readFile("skills/superloopy-research/agents/openai.yaml", "utf8"); + assert.match(researchMetadata, /only after explicit invocation/u); + assert.match(researchMetadata, /not activation and stays with its primary workflow/u); + assert.doesNotMatch(researchMetadata, /^policy:/mu); }); test("plugin packages the Superloopy doctor skill with read-only install diagnostics", async () => { From 1243997acb2a5f6c8697bf8ac7c8f0f7b5177fe4 Mon Sep 17 00:00:00 2001 From: J Date: Tue, 21 Jul 2026 17:41:15 +0900 Subject: [PATCH 2/3] chore(release): bump Superloopy to 0.11.1 Synchronize the npm, Codex, and Claude manifests for the research explicit-activation fix. --- .claude-plugin/marketplace.json | 2 +- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 4ae2ffa..0eee445 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,7 @@ "name": "superloopy", "source": "./", "description": "Strict evidence loop harness: repo-local loop state, success criteria, append-only ledgers, evidence-gated completion, plus skills (loop, research, frontend, clone) and a read-only/worker crew. Works on Claude Code and Codex from one repo.", - "version": "0.11.0", + "version": "0.11.1", "license": "MIT", "keywords": [ "claude-code", diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index c234e60..b515fee 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "superloopy", - "version": "0.11.0", + "version": "0.11.1", "description": "Lightweight loop harness with strict evidence gates — Claude Code edition.", "homepage": "https://github.com/beefiker/superloopy#readme", "repository": "https://github.com/beefiker/superloopy", diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 40d24d3..17e1ee2 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "superloopy", - "version": "0.11.0", + "version": "0.11.1", "description": "Lightweight loop harness with strict evidence gates.", "homepage": "https://github.com/beefiker/superloopy#readme", "repository": "https://github.com/beefiker/superloopy", diff --git a/package-lock.json b/package-lock.json index 45a3ee1..60697c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "superloopy", - "version": "0.11.0", + "version": "0.11.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "superloopy", - "version": "0.11.0", + "version": "0.11.1", "license": "MIT", "bin": { "superloopy": "src/cli.js" diff --git a/package.json b/package.json index 6012eae..d1a5821 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "superloopy", - "version": "0.11.0", + "version": "0.11.1", "description": "A lightweight loop harness for Codex and Claude Code with strict evidence gates.", "type": "module", "bin": { From a5a9afb9d0c4451a5fac240b2ae69a743355b068 Mon Sep 17 00:00:00 2001 From: J Date: Tue, 21 Jul 2026 17:56:30 +0900 Subject: [PATCH 3/3] test(research): guard against re-loosened activation Mark the banned-vocabulary list as illustrative with 'or similar', add the frontend-style negative guards so re-adding auto-activation or a trigger list fails the suite, and pin the research invocation tokens in every README locale. --- skills/superloopy-research/SKILL.md | 4 ++-- test/docs.test.js | 2 ++ test/plugin.test.js | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/skills/superloopy-research/SKILL.md b/skills/superloopy-research/SKILL.md index d77e087..b83561b 100644 --- a/skills/superloopy-research/SKILL.md +++ b/skills/superloopy-research/SKILL.md @@ -1,6 +1,6 @@ --- name: superloopy-research -description: Use only after explicit Codex `$superloopy:superloopy-research` or Claude Code `/superloopy:superloopy-research` invocation, a research task started with a leading `loopy` or `루피` (such as `loopy research`), or an active Superloopy loop explicitly routing a research deliverable here. Maximum-saturation Superloopy research orchestration — parallel read-only research lanes across codebase, web, official docs, and OSS repos; a recursive EXPAND loop driven by leads workers return as message text; empirical verification by running code; a self-enforcing claim ledger; cited synthesis and optional markdown/pdf/html/slides reports, all gated by Superloopy evidence receipts. Do not activate from research, investigate, look-up, summarize, deep-dive, or report vocabulary alone, in any language; ordinary questions, debugging, and implementation context-gathering stay with their primary workflows. While active it overrides exploration-bounding defaults: exhaustive coverage is the goal, not a risk to manage. +description: Use only after explicit Codex `$superloopy:superloopy-research` or Claude Code `/superloopy:superloopy-research` invocation, a research task started with a leading `loopy` or `루피` (such as `loopy research`), or an active Superloopy loop explicitly routing a research deliverable here. Maximum-saturation Superloopy research orchestration — parallel read-only research lanes across codebase, web, official docs, and OSS repos; a recursive EXPAND loop driven by leads workers return as message text; empirical verification by running code; a self-enforcing claim ledger; cited synthesis and optional markdown/pdf/html/slides reports, all gated by Superloopy evidence receipts. Do not activate from research, investigate, look-up, summarize, deep-dive, report, or similar vocabulary alone, in any language; ordinary questions, debugging, and implementation context-gathering stay with their primary workflows. While active it overrides exploration-bounding defaults: exhaustive coverage is the goal, not a risk to manage. --- # Superloopy Research @@ -9,7 +9,7 @@ You are the research orchestrator. The user has explicitly ordered exhaustive re ## Activation -**Explicit activation only.** Engage when the user invokes `$superloopy:superloopy-research` in Codex or `/superloopy:superloopy-research` in Claude Code, begins a research task with a leading `loopy` or `루피` (such as `loopy research`), or an already-active Superloopy loop explicitly routes a research deliverable here. A plain request to research, investigate, look up, summarize, or write a report — in any language — is not authorization to activate this workflow: answer it normally and mention that loopy research is available when the question would clearly benefit from exhaustive cited coverage. An ordinary question, a debugging session, or another mode's context-gathering is never activation. +**Explicit activation only.** Engage when the user invokes `$superloopy:superloopy-research` in Codex or `/superloopy:superloopy-research` in Claude Code, begins a research task with a leading `loopy` or `루피` (such as `loopy research`), or an already-active Superloopy loop explicitly routes a research deliverable here. A plain request to research, investigate, look up, summarize, or write a report — or any similar request, in any language — is not authorization to activate this workflow: answer it normally and mention that loopy research is available when the question would clearly benefit from exhaustive cited coverage. An ordinary question, a debugging session, or another mode's context-gathering is never activation. Open your reply with `SUPERLOOPY RESEARCH ENABLED`. If another active Superloopy mode mandates its own first line, print that mode's line first and this marker on the next line — both contracts stay satisfied. diff --git a/test/docs.test.js b/test/docs.test.js index 865e0fe..83d0938 100644 --- a/test/docs.test.js +++ b/test/docs.test.js @@ -208,6 +208,8 @@ test("README lists the packaged Superloopy skills and their jobs", async () => { assert.match(content, /\.superloopy\/evidence/); assert.match(content, /\$superloopy:superloopy-frontend/); assert.match(content, /\/superloopy:superloopy-frontend/); + assert.match(content, /\$superloopy:superloopy-research/); + assert.match(content, /\/superloopy:superloopy-research/); } assert.match(await readFile("README.md", "utf8"), /Guidance aliases do not mutate state/); assert.match(await readFile("README.ko.md", "utf8"), /guidance alias는 상태를 바꾸지 않습니다/); diff --git a/test/plugin.test.js b/test/plugin.test.js index 2f161af..4270d79 100644 --- a/test/plugin.test.js +++ b/test/plugin.test.js @@ -148,8 +148,10 @@ test("plugin packages Superloopy research and website-clone skills", async () => assert.match(research.frontmatter, /^name: superloopy-research$/m); assert.match(research.frontmatter, /loopy research|deep research/i); assert.match(research.frontmatter, /only after explicit Codex `\$superloopy:superloopy-research` or Claude Code `\/superloopy:superloopy-research` invocation/u); - assert.match(research.frontmatter, /Do not activate from research, investigate, look-up, summarize, deep-dive, or report vocabulary alone, in any language/u); + assert.match(research.frontmatter, /Do not activate from research, investigate, look-up, summarize, deep-dive, report, or similar vocabulary alone, in any language/u); + assert.doesNotMatch(research.frontmatter, /MUST USE|Auto-activates|do not wait|Triggers on/i); assert.match(research.content, /\*\*Explicit activation only\.\*\*/u); + assert.doesNotMatch(research.content, /Auto-activate|When in doubt/i); assert.match(research.content, /SUPERLOOPY RESEARCH ENABLED/); assert.match(research.content, /EXPAND/); assert.match(research.content, /SUPERLOOPY_EVIDENCE/);