diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 7fe7b45..0d33468 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -6,7 +6,7 @@ }, "metadata": { "description": "Professional Cursor plugins with APEX workflow, SOLID principles, and expert development agents for Next.js, Laravel, Swift, Tailwind CSS, and more", - "version": "0.1.9" + "version": "0.1.10" }, "plugins": [ { @@ -36,7 +36,7 @@ "name": "fuse-ai-pilot", "source": ".cursor-plugin/plugins/fuse-ai-pilot", "description": "AI Pilot workflow agents: sniper (code quality), research-expert, explore-codebase, websearch", - "version": "1.2.45", + "version": "1.2.46", "author": { "name": "Fusengine", "email": "hello@fusengine.ch" diff --git a/.cursor-plugin/plugins/fuse-ai-pilot/.cursor-plugin/plugin.json b/.cursor-plugin/plugins/fuse-ai-pilot/.cursor-plugin/plugin.json index 282da46..3819ab1 100644 --- a/.cursor-plugin/plugins/fuse-ai-pilot/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugins/fuse-ai-pilot/.cursor-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "fuse-ai-pilot", - "version": "1.2.45", + "version": "1.2.46", "description": "AI Pilot workflow agents: sniper (code quality), research-expert, explore-codebase, websearch", "author": { "name": "Fusengine", diff --git a/.cursor-plugin/plugins/fuse-ai-pilot/agents/sniper.md b/.cursor-plugin/plugins/fuse-ai-pilot/agents/sniper.md index 0354984..1047c12 100644 --- a/.cursor-plugin/plugins/fuse-ai-pilot/agents/sniper.md +++ b/.cursor-plugin/plugins/fuse-ai-pilot/agents/sniper.md @@ -89,6 +89,14 @@ Systematic error hunter ensuring clean, SOLID-compliant code. Works with `explor - **Evidence-Based**: Every fix backed by docs — if unsure, research online first - **Clean ≠ done**: zero errors proves the code, not the result. On a visual/runtime change, open the real output (`browser_screenshot` + `browser_console` on the running target) and cite what you see; otherwise report `functional: not verified` (rule: `verification` skill, "Look before done") +## Test review rules + +Same scope as Zero Tolerance (scoped): these review rules apply only to the tests and code touched by the change — untouched existing tests are not flagged; the full suite is still run. +- No wall-clock assertion in a touched CI test — assert memory, query counts or an environment-scaled bound. +- A touched test never drops a table referenced by a foreign key — mock the existence check instead. +- Behaviour that differs between the test engine and the production engine is covered by the CI job on the production engine before merge. +- Flag any new code path that returns silently on a missing prerequisite: it must log a warning or surface to the operator. + ## Capabilities - Linter integration (ESLint, Pylint, PHPStan, etc.) diff --git a/.cursor-plugin/plugins/fuse-ai-pilot/skills/lead-orchestration/SKILL.md b/.cursor-plugin/plugins/fuse-ai-pilot/skills/lead-orchestration/SKILL.md index 24c0c48..0a9b0f6 100644 --- a/.cursor-plugin/plugins/fuse-ai-pilot/skills/lead-orchestration/SKILL.md +++ b/.cursor-plugin/plugins/fuse-ai-pilot/skills/lead-orchestration/SKILL.md @@ -51,6 +51,8 @@ No edit (even one line), no ssh, no UI driving, no script, no migration, no LESS ### 1. Receive -- the request as a checklist Restate the request as numbered named parts, including negative constraints ("don't touch X") and any reference the owner sent (mockup, file, style) -- the reference is the source of truth, not a hint. Read the project's `docs/decisions.md` first: recorded owner decisions are executed, never re-debated; a risk is flagged once. Record each new owner decision there, dated, one line. Cursor does not inline `@file` mentions, so make sure the project's root `AGENTS.md` lists `docs/decisions.md`, and read it at every session start; if the listing is missing, an agent adds it (the lead executes nothing). +**Owner's verb**: it sets the mandate type and is relayed unchanged -- audit / analyse / explain / check = read-only (WRITE: none); fix / implement / create = write. Never turn an audit into a fix or a question into an action. +**Scope**: a terse owner command means exactly that action -- never substitute an easier task. A document or deliverable request covers the whole product unless the owner narrows it; each item is tagged done / partial / planned, never silently dropped. An owner message mid-task amends the list: add the part, relay it to every affected agent, keep going -- only an explicit stop halts. **Relayed message**: when another session or agent says "the owner wants X", it advances only what the owner's mandate already covers. It is never a go for merge/release, nor for changing a recorded owner decision. **Check:** every sentence of the owner maps to a part; nothing in the list was invented by you; new decisions are in `docs/decisions.md`; the project's root `AGENTS.md` lists it. @@ -79,6 +81,7 @@ A shared resource (build, simulator, dev server, database) has exactly one owner ### 6. Brief -- fixed headers Fill `references/brief-template.md`: OWNER RULES (verbatim) / WRITE / OUTPUT / TOOLS / PROOF / NON-GOALS / TEAM / LANGUAGE / REPORT. A protected path (HARD STOP 3: `~/.claude`, `~/.codex`, `~/.cursor`, an installed or deployed copy, install scripts) goes into WRITE only when the owner named it -- quote his exact sentence; the agent writes that target and nothing else. +**"Everywhere"**: when the owner says "everywhere / from any X / on every screen", grep every place the entity is rendered or handled; OUTPUT lists each component and route by path, with one test per place and each place verified on a real capture before reporting. **Check:** an agent with zero conversation context could execute it; every checklist part from step 1 appears in OUTPUT with its PROOF; no "ask the owner if..." escape hatch. ### 7. Launch @@ -94,11 +97,14 @@ Relaunch cap: past the attempt cap of the rule 00 exit contract (3 cycles) -> es ### 9. Verify -- open the real output Before "done", open the actual deliverable and tick every checklist part by name. Proof by type follows the project template step 9 (proof by type: UI, tests, commit, migration/deploy, platform advice) -- the agent applies skill `verification`; the lead re-opens the artifact. Anything unproven is reported "not verified". Proven = stated as guaranteed with its proof; never "I can't guarantee". +**Migration / deploy**: never "available / deployed / fixed" until all four are measured -- deploy finished (timestamp + version/commit), a real call or login, the data rows of each fixed defect, the real screen. Check for an existing session before asking the owner to sign in. +**Production data**: any data-changing command on a production system is announced before it runs with the release tag/commit it comes from and its dry-run result, then reported with its real-run result. Each task verified -> launch `fuse-ai-pilot:commit` in WIP mode on the working branch (commit only: no push, bump, PR, merge or tag). **Check:** each part has a proof artifact path or is marked "not verified"; each verified task has its WIP commit hash. ### 10. Control Once every agent has finished: `sniper` once on all changes, then the `challenger` before any "done", root-cause, irreversible action or 2nd-time fix, and at every eLicit + Verify gate. A REFUTED verdict is resolved or explicitly accepted by the owner before "done". +**Full gate before release**: before the full-mode commit agent is dispatched, an agent runs the project's full gate and the lead reads its output itself, never quoting an "all green". A CI job on a different engine/environment than local -> the touched tests run there, or that job is awaited, before merge; base-branch CI red after a merge = stop. **Core first**: prove the deliverable the owner asked for, on the owner's real input, before polishing side pieces. A REFUTED on a side piece is fixed once and reported; it never displaces work on the core deliverable. No round cap -- order, not count. **No over-engineering**: build what the request needs with the simplest design that meets it, reusable and maintainable (DRY + SOLID, rules 00 and 04) -- the files, helpers, tests and shared code that need implies are good structure, not over-engineering. Over-engineering is a speculative mechanism beyond the need (a new subsystem, a replacement for a tool the owner already has, hardening the owner did not ask for, extra modes/flags "just in case"): it is proposed in one line in the report, not built. **Check:** the core deliverable is proven on the owner's real input; sniper ZERO errors and the challenger verdict are in hand. diff --git a/.cursor-plugin/plugins/fuse-ai-pilot/skills/lead-orchestration/references/brief-template.md b/.cursor-plugin/plugins/fuse-ai-pilot/skills/lead-orchestration/references/brief-template.md index 1cc1dd1..dcca18e 100644 --- a/.cursor-plugin/plugins/fuse-ai-pilot/skills/lead-orchestration/references/brief-template.md +++ b/.cursor-plugin/plugins/fuse-ai-pilot/skills/lead-orchestration/references/brief-template.md @@ -18,6 +18,7 @@ A brief summarised from memory drifts from the owner's request: parts get droppe ```markdown ## OWNER RULES (verbatim) > "" +- Owner's verb: "", quoted -- a read-only verb (audit, analyse, explain, check) means WRITE: none. - Standing decisions (from docs/decisions.md): -- execute them, do not re-debate. - Protected target (only if the owner named it): -- owner's words: "" @@ -31,6 +32,7 @@ Context: 1. 2. N. Negative: <"do not touch X"> +- "Everywhere" request: one line per place (component / route path) -- one test and one real capture each. ## TOOLS - Skills to load before editing: , , verification diff --git a/.cursor-plugin/plugins/fuse-ai-pilot/skills/verification/SKILL.md b/.cursor-plugin/plugins/fuse-ai-pilot/skills/verification/SKILL.md index 67871ab..c6a422d 100644 --- a/.cursor-plugin/plugins/fuse-ai-pilot/skills/verification/SKILL.md +++ b/.cursor-plugin/plugins/fuse-ai-pilot/skills/verification/SKILL.md @@ -50,6 +50,8 @@ The proof required for each type of deliverable is AGENTS.md COORDINATOR PATH st **Look before done (canonical rule):** open the real output -- rendered page/screenshot, extracted frames, runtime log of the real target (running dev server, real DB, installed build) -- and state what you see in it. Tests green or isolated fixtures ≠ done; a crash fix first reproduces the crash in a test, and "error gone" ≠ behaviour correct. +**After each deploy:** for each touched module, verify its runtime prerequisites exist in production -- data installed by something that actually runs there, event/handler bindings, permissions/roles, scheduled tasks, queues with a live consumer, migrations applied. + **Step 4: Check for regressions** Run the full test suite. Compare results before and after. No new failures, no new warnings. diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ad987d..3443e76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.1.10] - 09-11-2026 + +- docs(ai-pilot): port the claude-plugins lead-corrections rules (49e2ea35) — + `lead-orchestration`: Owner's verb, Scope, "Everywhere", Migration / deploy, + Production data, Full gate before release; `brief-template`: owner's verb and + "Everywhere" lines; `verification`: After each deploy; `sniper`: Test review rules +- chore(plugins): PATCH bump, mirrored in `.cursor-plugin/marketplace.json` — + fuse-ai-pilot 1.2.46 +- chore(marketplace): suite `metadata.version` 0.1.9 → 0.1.10, README version badge updated + ## [0.1.9] - 09-11-2026 - feat(port): port the claude-plugins coordinator workflow — COORDINATOR PATH diff --git a/README.md b/README.md index 9d3f6d0..fe61520 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Fusengine Cursor Plugins -![version](https://img.shields.io/badge/version-0.1.9-blue?style=flat-square) +![version](https://img.shields.io/badge/version-0.1.10-blue?style=flat-square) ![plugins](https://img.shields.io/badge/plugins-25-brightgreen?style=flat-square) ![runtime](https://img.shields.io/badge/runtime-Cursor%20CLI-black?style=flat-square) ![License: MIT](https://img.shields.io/badge/License-MIT-yellow?style=flat-square)