Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
492b6a7
feat(plugin-generator): split core into composable plugin sets (#315)
isolomatov-gd Sep 1, 2026
752a682
fix(plugin-generator): declare the standalone extraction root; correc…
isolomatov-gd Sep 2, 2026
6b2b209
docs(requirements): sweep the refuted bootstrap-delivery mechanism (#…
isolomatov-gd Sep 2, 2026
8e5c4ac
Renamed advanced to workflows
isolomatov-gd Sep 3, 2026
70059b5
Handoff for the second session
isolomatov-gd Sep 3, 2026
e0db11f
Merge remote-tracking branch 'origin/main' into feat/315-plugin-sets
isolomatov-gd Sep 3, 2026
cc1f3dc
test(verify): add a content gate over the hooks.json family (#315)
isolomatov-gd Sep 3, 2026
ac69c08
docs(plans): record D23-D25, close OQ-1, resolve B2 (#315)
isolomatov-gd Sep 3, 2026
843d238
fix(plugin-generator): name the missing folder on unknown --domain; s…
isolomatov-gd Sep 3, 2026
5374df3
docs(requirements): FR-COPY-0011 — the code is right, the statement w…
isolomatov-gd Sep 3, 2026
ba35bd2
docs(requirements): add NFR-0012, hook-configuration content parity (…
isolomatov-gd Sep 3, 2026
1b95587
docs(requirements): FR-CLI-0042 — stdout is the --dry-run payload cha…
isolomatov-gd Sep 3, 2026
1cacd8e
feat(plugin-generator): enumerate the plugin-set descriptor fields in…
isolomatov-gd Sep 3, 2026
6675e99
fix(plugin-generator): validate requires against manifest.description…
isolomatov-gd Sep 3, 2026
4fabaf2
docs: record hooks architecture decisions; two memory rules (#315)
isolomatov-gd Sep 4, 2026
f311062
restore(hooks): restore the 7 literal hooks.json.tmpl templates (step…
isolomatov-gd Sep 4, 2026
9d6c340
docs(requirements): close FR-HOOK-0022 and FR-SET-0050 against landed…
isolomatov-gd Sep 4, 2026
adbfd05
feat(hooks): plumb {{destination}} into the render context (step 2/9)
isolomatov-gd Sep 4, 2026
8d37c82
docs(requirements): retire DATA-CFG-0008, the per-target hook-layout …
isolomatov-gd Sep 4, 2026
9c73fef
refactor(hooks): fold the hooks-emission frame-drop into pluginCopy (…
isolomatov-gd Sep 4, 2026
6fded81
docs(requirements): hook documents come from literal per-IDE template…
isolomatov-gd Sep 4, 2026
5d662b6
refactor(hooks): replace modulesForTarget's layout dependency with TA…
isolomatov-gd Sep 4, 2026
469b91d
docs(requirements): collateral sweep for the hook-template architectu…
isolomatov-gd Sep 4, 2026
235b925
docs(requirements): reconcile drift records with the code landed so f…
isolomatov-gd Sep 4, 2026
623f597
refactor(hooks): delete HOOK_LAYOUTS and the PluginSpec.hookLayout fi…
isolomatov-gd Sep 4, 2026
e82ac3c
feat(hooks): post-render JSON validation as a HARD error (step 7/9)
isolomatov-gd Sep 4, 2026
c7bf044
fix(hooks): Copilot bootstrap probe guard -> .github/plugin/plugin.js…
isolomatov-gd Sep 4, 2026
717a25e
docs(requirements): break the depends cycles, flip FR-ARCH-0048, clos…
isolomatov-gd Sep 4, 2026
49061c8
docs(requirements): NFR-0012 — drop the refuted "staging" framing (#315)
isolomatov-gd Sep 4, 2026
3c0eaf6
build(hooks): regenerate the committed plugins/ tree at the shipped p…
isolomatov-gd Sep 4, 2026
e5379cb
test(hooks): add a dedicated hook-schema test area (§4 test plan, ste…
isolomatov-gd Sep 4, 2026
b4f478d
test(verify): categorize the post-golden backlog SKILL.md change (#315)
isolomatov-gd Sep 4, 2026
17a2208
docs(requirements): close FR-VAR-0030 and FR-HOOK-0007; drop change n…
isolomatov-gd Sep 4, 2026
72fd215
docs(memory): a requirement record is target-state, not a change log
isolomatov-gd Sep 4, 2026
07136d9
docs(requirements): close FR-CLI-0030 and FR-CLI-0031 (#315)
isolomatov-gd Sep 4, 2026
b433135
docs(requirements): close NFR-0007 and FR-CLI-0021
isolomatov-gd Sep 4, 2026
61d928c
docs(requirements): close FR-COPY-0033, mark it a Policy unit
isolomatov-gd Sep 4, 2026
c6e991b
docs(requirements): mark policy units; fix the Copilot mirror dependency
isolomatov-gd Sep 4, 2026
8d9f35d
docs(requirements): approve the 13 implemented Draft units
isolomatov-gd Sep 4, 2026
96b2254
docs(memory): delivery artifacts state the target, not the path taken
isolomatov-gd Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
65 changes: 63 additions & 2 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"name": "rosetta",
"version": "3.1.13",
"interface": {
"displayName": "Rosetta"
},
Expand All @@ -8,7 +9,7 @@
"name": "rosetta",
"source": {
"source": "local",
"path": "./plugins/core-codex"
"path": "./plugins/rosetta-codex"
},
"policy": {
"installation": "AVAILABLE",
Expand All @@ -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",
Expand Down
34 changes: 28 additions & 6 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
}
]
}
2 changes: 1 addition & 1 deletion .claude/skills/sync-web-site/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <path> 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 "<phrase>"` — 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 <path> 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 "<phrase>"` — 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 <path>`. Verbs: `READ`=load, `APPLY`=load+execute, `USE`/`INVOKE`=activate. Old `GET PREP STEPS`/`SEARCH … IN KB`/`STORE`/`… ABOUT <project>` 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 <port>`. Fetch pages with `curl -s http://127.0.0.1:<port>/rosetta/docs/<page>/`. Stop with `pkill -f "jekyll serve"`. Sanity-check rendered HTML for the new section names and for `<table>` 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 `<video>` embed that copies the form of an existing sibling, no new tables), static validation is enough: re-read the edited region and confirm blank-line spacing around headings/tags. Reserve the server run for changes that touch tables or new page structure.
Expand Down
29 changes: 27 additions & 2 deletions .cursor-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,38 @@
"plugins": [
{
"name": "rosetta",
"source": "plugins/core-cursor",
"source": "plugins/rosetta-cursor",
"description": "Rosetta for Cursor - Software Engineering Accelerator instruction set, workflows, and guardrails."
},
{
"name": "rosetta-light",
"source": "plugins/core-cursor-light",
"source": "plugins/rosetta-cursor-light",
"description": "Rosetta for Cursor - Software Engineering Accelerator instruction set, workflows, and guardrails. (lightweight profile: simpler workflows, smaller models)"
},
{
"name": "core",
"source": "plugins/core-cursor",
"description": "Rosetta for Cursor - core set: composable skills, always-on rules, bootstrap and guardrail hooks; required by every other Rosetta plugin."
},
{
"name": "workflows",
"source": "plugins/workflows-cursor",
"description": "Rosetta for Cursor - workflows set: subagents, workflows, and orchestration automation. Requires the `core` plugin."
},
{
"name": "qe",
"source": "plugins/qe-cursor",
"description": "Rosetta for Cursor - qe set: test automation and test generation. Requires the `core` and `workflows` plugins."
},
{
"name": "search",
"source": "plugins/search-cursor",
"description": "Rosetta for Cursor - search set: Solr and search engineering. Requires the `core` and `workflows` plugins."
},
{
"name": "modernization",
"source": "plugins/modernization-cursor",
"description": "Rosetta for Cursor - modernization set: conversion, modernization, and re-architecture. Requires the `core` and `workflows` plugins."
}
]
}
9 changes: 5 additions & 4 deletions .cursorignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/plugins/core-cursor/
!/plugins/core-cursor/.cursor-plugin/plugin.json
/plugins/core-claude/
!/plugins/core-claude/.claude-plugin/plugin.json
# Generated plugin output: <set>-<ide>[-light] for every set (rosetta, core, workflows,
# qe, search, modernization) — ~49 trees. Ignore them all, keep the manifests indexable.
/plugins/*/
!/plugins/*/.cursor-plugin/plugin.json
!/plugins/*/.claude-plugin/plugin.json
22 changes: 11 additions & 11 deletions .github/actions/codex-setup/action.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Rosetta Codex setup
description: >-
Prepares a Codex run for the Rosetta pipelines: a TRUSTED Codex home (permission
profiles + the hooks feature) and, optionally, the Rosetta `core-codex` plugin
profiles + the hooks feature) and, optionally, the Rosetta `rosetta-codex` plugin
extracted into the workspace. Output `codex-home` feeds `openai/codex-action`.

# Why this action exists
Expand Down Expand Up @@ -44,11 +44,11 @@ description: >-

inputs:
install-plugin:
description: "Extract the Rosetta core-codex plugin into the workspace so the agent boots with the Rosetta instruction set."
description: "Extract the Rosetta rosetta-codex plugin into the workspace so the agent boots with the Rosetta instruction set."
required: false
default: "true"
release-tag:
description: "Rosetta release to take the core-codex asset from. Empty means the latest release."
description: "Rosetta release to take the rosetta-codex asset from. Empty means the latest release."
required: false
default: ""
github-token:
Expand Down Expand Up @@ -82,7 +82,7 @@ runs:
echo "Trusted Codex home: $home"
cat "$home/config.toml"

- name: Install Rosetta core-codex plugin
- name: Install Rosetta rosetta-codex plugin
if: inputs.install-plugin == 'true'
shell: bash
env:
Expand All @@ -98,10 +98,10 @@ runs:
# variant, which is a different (reduced) instruction set.
if [ -n "$RELEASE_TAG" ]; then
gh release download "$RELEASE_TAG" --repo griddynamics/rosetta \
--pattern 'core-codex-[0-9]*.zip' --dir "$dl" --clobber
--pattern 'rosetta-codex-[0-9]*.zip' --dir "$dl" --clobber
else
gh release download --repo griddynamics/rosetta \
--pattern 'core-codex-[0-9]*.zip' --dir "$dl" --clobber
--pattern 'rosetta-codex-[0-9]*.zip' --dir "$dl" --clobber
fi

# One release can carry several dated builds of the same version and `gh`
Expand All @@ -112,9 +112,9 @@ runs:
# `sort -r` would rank 3.1.9 above 3.1.13.
# `|| true` so an empty match reports the message below instead of `set -e`
# aborting on the glob.
zip=$(ls -1 "$dl"/core-codex-[0-9]*.zip 2>/dev/null | sort -Vr | head -n1 || true)
[ -n "$zip" ] || { echo "::error::no core-codex asset found in the release"; exit 1; }
echo "Rosetta core-codex asset: $(basename "$zip")"
zip=$(ls -1 "$dl"/rosetta-codex-[0-9]*.zip 2>/dev/null | sort -Vr | head -n1 || true)
[ -n "$zip" ] || { echo "::error::no rosetta-codex asset found in the release"; exit 1; }
echo "Rosetta rosetta-codex asset: $(basename "$zip")"

unzip -oq "$zip" -d "$GITHUB_WORKSPACE"

Expand All @@ -125,7 +125,7 @@ runs:
if [ -f "$exclude" ]; then
{
echo ""
echo "# Rosetta core-codex plugin, extracted by .github/actions/codex-setup"
echo "# Rosetta rosetta-codex plugin, extracted by .github/actions/codex-setup"
echo "/.agents/"
echo "/.codex/"
echo "/.codex-plugin/"
Expand All @@ -136,7 +136,7 @@ runs:
|| { echo "::error::plugin extracted but .codex/hooks.json is missing"; exit 1; }
test -f "$GITHUB_WORKSPACE/.agents/rules/bootstrap-alwayson.md" \
|| { echo "::error::plugin extracted but .agents/rules/bootstrap-alwayson.md is missing"; exit 1; }
echo "Rosetta core-codex plugin installed at the workspace root."
echo "Rosetta rosetta-codex plugin installed at the workspace root."

- name: Install enforced policy
shell: bash
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/codex-setup/files/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
# experimental features are not enabled in this pipeline. Same egress posture as the
# Claude branch, which restricts the `gh` command surface rather than the network.

# On-disk effect of `codex features enable hooks`; the Rosetta core-codex plugin
# On-disk effect of `codex features enable hooks`; the Rosetta rosetta-codex plugin
# ships .codex/hooks.json and is inert without it.
[features]
hooks = true
Expand Down
29 changes: 27 additions & 2 deletions .github/plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,38 @@
"plugins": [
{
"name": "rosetta",
"source": "core-copilot",
"source": "rosetta-copilot",
"description": "Rosetta for Copilot - Software Engineering Accelerator instruction set, workflows, and guardrails. Includes Rosetta MCP for knowledge base access."
},
{
"name": "rosetta-light",
"source": "core-copilot-light",
"source": "rosetta-copilot-light",
"description": "Rosetta for Copilot - Software Engineering Accelerator instruction set, workflows, and guardrails. Includes Rosetta MCP for knowledge base access. (lightweight profile: simpler workflows, smaller models)"
},
{
"name": "core",
"source": "core-copilot",
"description": "Rosetta for Copilot - core set: composable skills, always-on rules, bootstrap and guardrail hooks; required by every other Rosetta plugin."
},
{
"name": "workflows",
"source": "workflows-copilot",
"description": "Rosetta for Copilot - workflows set: subagents, workflows, and orchestration automation. Requires the `core` plugin."
},
{
"name": "qe",
"source": "qe-copilot",
"description": "Rosetta for Copilot - qe set: test automation and test generation. Requires the `core` and `workflows` plugins."
},
{
"name": "search",
"source": "search-copilot",
"description": "Rosetta for Copilot - search set: Solr and search engineering. Requires the `core` and `workflows` plugins."
},
{
"name": "modernization",
"source": "modernization-copilot",
"description": "Rosetta for Copilot - modernization set: conversion, modernization, and re-architecture. Requires the `core` and `workflows` plugins."
}
]
}
2 changes: 1 addition & 1 deletion .github/prompts/repo-analysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ MUST read `instructions/r3/core/skills/coding-agents-prompt-authoring/references
- Terse/compressed phrasing, abbreviations, and shortcuts are **intentional** (every loaded token is paid for on every turn) — do not flag them as unclear writing.
- File paths referenced inside `instructions/**` (e.g. `docs/CONTEXT.md`, `agents/MEMORY.md`) describe the **target repo's** structure, not this repo's — they are not broken links here (except the init-workspace workflow, which creates/upgrades that structure).
- Releases: `r3` is active (incremental updates), `r2` is backport-only, earlier releases get no new work. Default any new instruction work to `r3` unless told otherwise.
- Edits under `instructions/r3/**` ripple into the generated plugin directories (`plugins/core-claude/`, `plugins/core-cursor/`, etc. via the plugin generator) — flag this as a follow-up dependency in the issue body, don't treat it as an isolated file edit.
- Edits under any of the five instruction roots (`instructions/r3/{core,workflows,qe,search,modernization}/**`) ripple into the generated plugin directories (`plugins/rosetta-claude/`, `plugins/core-claude/`, `plugins/qe-cursor/`, etc. — one `<set>-<ide>` folder per set x IDE, via the plugin generator) — flag this as a follow-up dependency in the issue body, don't treat it as an isolated file edit.

AI Coding Agents use MCP to load bootstrap instructions `instructions/r3/core/rules/bootstrap-*.md` as the first thing (exactly the same you have loaded too).
After that AI Coding Agent is instructed to follow one workflow and to load skills/agents/rules when needed.
Expand Down
2 changes: 1 addition & 1 deletion .github/prompts/repo-implement-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ MUST read docs/CONTEXT.md and docs/ARCHITECTURE.md.

**Two different mental models in this repo — check which one the issue is in before implementing:**
- `src/` (rosettify, rosetta-mcp-server, rosetta-cli, ims-mcp-server, hooks, helm-charts) is a **normal software project**. Ordinary engineering judgment applies.
- `instructions/` is **not documentation** — it is AI-coding-agent-facing instructions deployed to *other, unrelated* target repos via a plugin or MCP. Terse/compressed phrasing is intentional (token cost), not a defect — do not "clean up" it toward human-readable prose. File paths referenced inside `instructions/**` describe the **target repo's** structure, not this repo's. `r3` is active, `r2` is backport-only. Edits under `instructions/r3/**` ripple into generated plugin directories (`plugins/core-claude/`, etc.) — if the plan didn't already call this out, flag it explicitly in the PR description as a manual follow-up.
- `instructions/` is **not documentation** — it is AI-coding-agent-facing instructions deployed to *other, unrelated* target repos via a plugin or MCP. Terse/compressed phrasing is intentional (token cost), not a defect — do not "clean up" it toward human-readable prose. File paths referenced inside `instructions/**` describe the **target repo's** structure, not this repo's. `r3` is active, `r2` is backport-only. Edits under any of the five instruction roots (`instructions/r3/{core,workflows,qe,search,modernization}/**`) ripple into generated plugin directories (one `plugins/<set>-<ide>/` folder per set x IDE, e.g. `plugins/rosetta-claude/`, `plugins/core-claude/`, `plugins/qe-cursor/`) — if the plan didn't already call this out, flag it explicitly in the PR description as a manual follow-up.
- **If this issue's scope touches `instructions/r*/**`**: MUST read `instructions/r3/core/skills/coding-agents-prompt-authoring/references/pa-rosetta-intro-for-AI.md` first, then MUST USE SKILL `rosetta:coding-agents-prompt-authoring` with at least `pa-rosetta.md`, `pa-patterns.md`, `pa-hardening.md`, `pa-schemas.md` before making any edit.

AI Coding Agents use MCP to load bootstrap instructions `instructions/r3/core/rules/bootstrap-*.md` as the first thing (exactly the same you have loaded too).
Expand Down
Loading
Loading