diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 355cb3531..10be400d5 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -1,5 +1,6 @@ { "name": "rosetta", + "version": "3.1.13", "interface": { "displayName": "Rosetta" }, @@ -8,7 +9,7 @@ "name": "rosetta", "source": { "source": "local", - "path": "./plugins/core-codex" + "path": "./plugins/rosetta-codex" }, "policy": { "installation": "AVAILABLE", @@ -20,7 +21,67 @@ "name": "rosetta-light", "source": { "source": "local", - "path": "./plugins/core-codex-light" + "path": "./plugins/rosetta-codex-light" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_INSTALL" + }, + "category": "Productivity" + }, + { + "name": "core", + "source": { + "source": "local", + "path": "./plugins/core-codex" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_INSTALL" + }, + "category": "Productivity" + }, + { + "name": "workflows", + "source": { + "source": "local", + "path": "./plugins/workflows-codex" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_INSTALL" + }, + "category": "Productivity" + }, + { + "name": "qe", + "source": { + "source": "local", + "path": "./plugins/qe-codex" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_INSTALL" + }, + "category": "Productivity" + }, + { + "name": "search", + "source": { + "source": "local", + "path": "./plugins/search-codex" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_INSTALL" + }, + "category": "Productivity" + }, + { + "name": "modernization", + "source": { + "source": "local", + "path": "./plugins/modernization-codex" }, "policy": { "installation": "AVAILABLE", diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 479c399ad..2b6254500 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -11,16 +11,38 @@ "plugins": [ { "name": "rosetta", - "source": "./plugins/core-claude", + "source": "./plugins/rosetta-claude", "description": "Rosetta for Claude - Software Engineering Accelerator instruction set, workflows, and guardrails." }, { "name": "rosetta-light", - "source": "./plugins/core-claude-light", + "source": "./plugins/rosetta-claude-light", "description": "Rosetta for Claude - Software Engineering Accelerator instruction set, workflows, and guardrails. (lightweight profile: simpler workflows, smaller models)" + }, + { + "name": "core", + "source": "./plugins/core-claude", + "description": "Rosetta for Claude - core set: composable skills, always-on rules, bootstrap and guardrail hooks; required by every other Rosetta plugin." + }, + { + "name": "workflows", + "source": "./plugins/workflows-claude", + "description": "Rosetta for Claude - workflows set: subagents, workflows, and orchestration automation. Requires the `core` plugin." + }, + { + "name": "qe", + "source": "./plugins/qe-claude", + "description": "Rosetta for Claude - qe set: test automation and test generation. Requires the `core` and `workflows` plugins." + }, + { + "name": "search", + "source": "./plugins/search-claude", + "description": "Rosetta for Claude - search set: Solr and search engineering. Requires the `core` and `workflows` plugins." + }, + { + "name": "modernization", + "source": "./plugins/modernization-claude", + "description": "Rosetta for Claude - modernization set: conversion, modernization, and re-architecture. Requires the `core` and `workflows` plugins." } - ], - "renames": { - "core": "rosetta" - } + ] } diff --git a/.claude/skills/sync-web-site/SKILL.md b/.claude/skills/sync-web-site/SKILL.md index 59429dc64..ad68eaeeb 100644 --- a/.claude/skills/sync-web-site/SKILL.md +++ b/.claude/skills/sync-web-site/SKILL.md @@ -134,7 +134,7 @@ If you learned something new which is reusable, there are process efficiency imp - **Root docs sometimes carry trailing AI-agent-imperative sections** (`MUST`, `DO NOT FILTER`, validation scripts) mixed into otherwise human-facing prose. Treat these as intentionally contributor/agent-only — never sync them to the public web page unless explicitly told to. - **Verify surprising claims against source code, don't just trust the doc.** Cross-checking `submit_feedback` against `server.py` found the tool's `@mcp.tool` decorator commented out (permanently disabled) while both root and web docs still list it as live. Flag findings like this as asides in the report; don't silently "fix" facts that are outside the sync's approved scope. - **r2 = shipped/current, r3 = in-dev.** Plugins under `plugins/core-*` ship the r2 model (five `bootstrap-*` files, classify-and-route). Root `docs/ARCHITECTURE.md` was rewritten to the r3 model (`bootstrap-alwayson.md` + one mode file, typed load aliases, three delivery modes MCP/plugin/local) while its tree/datasets still say r2. This mixed r2-tree / r3-content state is intentional transitional narrative — mirror root faithfully; do NOT "fix" the r2/r3 split in the web doc (that's a root-internal decision). -- **Verify a flagged aside is actually a defect before "fixing" it.** In one run, 3 of 4 flagged asides were NOT broken: `ACQUIRE FROM KB` is retained in the new alias table as the MCP-only raw shell form (not stale); installation's "read all five `bootstrap-*` files" matched the actually-shipped copilot plugin (`ls plugins/core-copilot*/…/*bootstrap*`); the r2/r3 tree faithfully mirrored root. Only the FAQ prep-step wording was real. Discriminator: `git log -S ""` — if the wording predates the model change it's genuine staleness; if it was re-authored in the model-change commit it's intentional. Fix real drift in BOTH root + web (release-agnostic phrasing) so the next sync doesn't re-flag it. +- **Verify a flagged aside is actually a defect before "fixing" it.** In one run, 3 of 4 flagged asides were NOT broken: `ACQUIRE FROM KB` is retained in the new alias table as the MCP-only raw shell form (not stale); installation's "read all five `bootstrap-*` files" matched the actually-shipped copilot plugin (`ls plugins/rosetta-copilot*/…/*bootstrap*`); the r2/r3 tree faithfully mirrored root. Only the FAQ prep-step wording was real. Discriminator: `git log -S ""` — if the wording predates the model change it's genuine staleness; if it was re-authored in the model-change commit it's intentional. Fix real drift in BOTH root + web (release-agnostic phrasing) so the next sync doesn't re-flag it. - **New typed load aliases (r3):** `USE/READ SKILL`, `READ/APPLY SKILL FILE`, `USE/READ FLOW`, `APPLY PHASE`, `INVOKE/READ SUBAGENT`, `READ/APPLY RULE`, `READ TEMPLATE`, `READ CONFIGURE`, `LIST `. Verbs: `READ`=load, `APPLY`=load+execute, `USE`/`INVOKE`=activate. Old `GET PREP STEPS`/`SEARCH … IN KB`/`STORE`/`… ABOUT ` aliases are gone; `ACQUIRE … FROM KB` survives only as the MCP-raw shell form. The web doc is MCP-centric, so when porting r3 content add a one-line framing of the three delivery modes in place (plugin/local are new vocabulary for a web reader). - **Local Jekyll preview:** first run needs `bundle install` (gems aren't vendored in the repo). Then `cd docs/web && bundle exec jekyll serve --detach --port `. Fetch pages with `curl -s http://127.0.0.1:/rosetta/docs//`. Stop with `pkill -f "jekyll serve"`. Sanity-check rendered HTML for the new section names and for `` counts (a missed blank line before a markdown table renders as a literal `|`-delimited paragraph, not a table). - **Vendored bundle can be stale even when `docs/web/vendor/bundle/` exists.** Seen: `bundle exec jekyll serve` fails with `Bundler::GemNotFound` — `Gemfile.lock` pins versions (addressable, json, public_suffix, concurrent-ruby) not present in the vendored dir. Fix is `bundle install`, which rewrites vendored gems + the lockfile — a dependency change, out of scope for a pure doc sync and not to be run autonomously. For a trivial edit (heading rename, a `