From 45cba670cd3658f4a42ad31740a6bf31d3015d0d Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Mon, 21 Sep 2026 05:47:36 +0200 Subject: [PATCH 1/3] feat(aidd-vcs): add conflict resolution skill Adds 05-resolve-conflict: deterministic conflicts and approved choices apply, anything else returns an unapplied proposal table and stops. Rebased onto next and squashed. The four original commits each replayed the same conflicts against intermediate text; the final tree is unchanged. Conflicts were the plugin version release-please had bumped and the catalogue rows #743 had rewritten, not the skill itself. Refs #747 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01FPREgkoNtK4PYh2YyZbztq AIDD-Session-Id: 2261efcd-a873-4e60-9893-2217f702bde2 --- README.md | 4 +-- .../review.md | 32 +++++++++++++++++++ docs/CATALOG.md | 1 + plugins/aidd-vcs/.claude-plugin/plugin.json | 8 +++-- plugins/aidd-vcs/CATALOG.md | 9 ++++++ plugins/aidd-vcs/README.md | 5 +-- .../skills/05-resolve-conflict/SKILL.md | 29 +++++++++++++++++ .../05-resolve-conflict/actions/01-resolve.md | 29 +++++++++++++++++ .../assets/resolution-table.md | 4 +++ 9 files changed, 114 insertions(+), 7 deletions(-) create mode 100644 aidd_docs/tasks/2026_09/2026_09_02_resolve-conflict-skill/review.md create mode 100644 plugins/aidd-vcs/skills/05-resolve-conflict/SKILL.md create mode 100644 plugins/aidd-vcs/skills/05-resolve-conflict/actions/01-resolve.md create mode 100644 plugins/aidd-vcs/skills/05-resolve-conflict/assets/resolution-table.md diff --git a/README.md b/README.md index e8a3f8454..c58caecfa 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Unify **engineering teams** around **standardized workflows** and **shared best 🧱 **IDE agnostic** · 🏗️ **Legacy systems** · 🌱 **Token-optimized** · 🇫🇷 **Made in France**

- 8 plugins · 51 skills · 2 agents + 8 plugins · 52 skills · 2 agents

[![Open Source](https://img.shields.io/badge/Open_Source-Yes-yellow?logo=open-source-initiative&logoColor=white)](https://opensource.org/) @@ -255,7 +255,7 @@ Code transformation: plan, implement, assert, audit, review, test, refactor, deb ### 🌿 [aidd-vcs](plugins/aidd-vcs/README.md) -`5 skills` · stable +`6 skills` · stable Repo init, commits, pull / merge requests, release tags, issues. diff --git a/aidd_docs/tasks/2026_09/2026_09_02_resolve-conflict-skill/review.md b/aidd_docs/tasks/2026_09/2026_09_02_resolve-conflict-skill/review.md new file mode 100644 index 000000000..f37d27917 --- /dev/null +++ b/aidd_docs/tasks/2026_09/2026_09_02_resolve-conflict-skill/review.md @@ -0,0 +1,32 @@ +# Review: Resolve conflict skill + +- **Verdict**: approve +- **Diff**: `main...working-tree` +- **Axes run**: code, functional, relevancy +- **Date**: 2026_09_03 +- **Findings**: 0 critical, 0 warning, 0 minor + +## Phases + +### Phase 1 — Conflict resolution + +- [x] One VCS skill exposes one `resolve` action — `plugins/aidd-vcs/skills/05-resolve-conflict/SKILL.md:23` +- [x] Each hunk or non-text conflict gets a choice row — `plugins/aidd-vcs/skills/05-resolve-conflict/assets/resolution-table.md:5` +- [x] An unapproved proposal changes nothing — `plugins/aidd-vcs/skills/05-resolve-conflict/actions/01-resolve.md:17` +- [x] Approved matching choices apply and stage resolved paths — `plugins/aidd-vcs/skills/05-resolve-conflict/actions/01-resolve.md:16-18` +- [x] Validation checks only resolved paths — `plugins/aidd-vcs/skills/05-resolve-conflict/actions/01-resolve.md:19` +- [x] Manifest, catalogs, and root summary expose the skill — `plugins/aidd-vcs/.claude-plugin/plugin.json:16`, `docs/CATALOG.md:87`, `README.md:243` + +## Findings + +| Sev | Kind | Phase | Location | Issue | Fix | +| --- | ---- | ----- | -------- | ----- | --- | + +## Verification + +| Metric | Value | +| ------ | ----- | +| Verified | 100% (6/6) | +| Files checked | `SKILL.md`, `actions/01-resolve.md`, `resolution-table.md`, plugin manifest, READMEs, catalogs | +| Unchecked | none | +| Unplanned | none | diff --git a/docs/CATALOG.md b/docs/CATALOG.md index 56798519b..02b4a17e5 100644 --- a/docs/CATALOG.md +++ b/docs/CATALOG.md @@ -90,6 +90,7 @@ Version-control workflows: repo init, commit, pull/merge request, release tag, i | `02-pull-request` | Create a draft pull or merge request | `01-pull-request` | | `03-release-tag` | Cut a semver release with annotated tag and notes | `01-release-tag` | | `04-issue-create` | Create an issue in the configured ticketing tool | `01-issue-create` | +| `05-resolve-conflict` | Resolve deterministic conflicts or approved choices | `01-resolve` | ## 🎼 aidd-orchestrator diff --git a/plugins/aidd-vcs/.claude-plugin/plugin.json b/plugins/aidd-vcs/.claude-plugin/plugin.json index b91bcf8a1..b78dbc77f 100644 --- a/plugins/aidd-vcs/.claude-plugin/plugin.json +++ b/plugins/aidd-vcs/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "aidd-vcs", "version": "2.3.2", - "description": "External artifacts: repo-init, commit, pull-request, release-tag, issue-create", + "description": "External artifacts: repo-init, commit, pull-request, release-tag, issue-create, resolve-conflict", "author": { "name": "AI-Driven Dev", "url": "https://github.com/ai-driven-dev" @@ -12,7 +12,8 @@ "./skills/01-commit", "./skills/02-pull-request", "./skills/03-release-tag", - "./skills/04-issue-create" + "./skills/04-issue-create", + "./skills/05-resolve-conflict" ], "keywords": [ "git", @@ -20,7 +21,8 @@ "commit", "pull-request", "release", - "version-control" + "version-control", + "conflict-resolution" ], "repository": "https://github.com/ai-driven-dev/framework", "homepage": "https://ai-driven.dev", diff --git a/plugins/aidd-vcs/CATALOG.md b/plugins/aidd-vcs/CATALOG.md index 93dd51901..62c38dfae 100644 --- a/plugins/aidd-vcs/CATALOG.md +++ b/plugins/aidd-vcs/CATALOG.md @@ -13,6 +13,7 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai - [`skills/02-pull-request`](#skills02-pull-request) - [`skills/03-release-tag`](#skills03-release-tag) - [`skills/04-issue-create`](#skills04-issue-create) + - [`skills/05-resolve-conflict`](#skills05-resolve-conflict) --- @@ -71,3 +72,11 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai | `assets` | [issue-template.md](skills/04-issue-create/assets/issue-template.md) | `VCS issue/ticket template` | | `-` | [SKILL.md](skills/04-issue-create/SKILL.md) | `Create an issue in the configured ticketing tool. Use when the user wants to file a bug, open an issue, or report a problem. Not for committing, opening a pull request, or commenting on an existing issue.` | +#### `skills/05-resolve-conflict` + +| Group | File | Description | +|-------|------|---| +| `actions` | [01-resolve.md](skills/05-resolve-conflict/actions/01-resolve.md) | - | +| `assets` | [resolution-table.md](skills/05-resolve-conflict/assets/resolution-table.md) | - | +| `-` | [SKILL.md](skills/05-resolve-conflict/SKILL.md) | `Resolves deterministic Git conflicts or approved choices. Use when the user wants to resolve a merge, rebase, or cherry-pick conflict. Not for deciding between competing implementations or committing changes.` | + diff --git a/plugins/aidd-vcs/README.md b/plugins/aidd-vcs/README.md index 55566ca53..db2d5d5ca 100644 --- a/plugins/aidd-vcs/README.md +++ b/plugins/aidd-vcs/README.md @@ -8,9 +8,9 @@ VCS workflow plugin for the AI-Driven Development framework. First time? Install with `/plugin install aidd-vcs@aidd-framework`, then run `aidd-vcs:01-commit`. -Typical flow: `00-repo-init` once to set up the repo; `01-commit` after each unit of work; `02-pull-request` when the branch is ready; `03-release-tag` at release time; `04-issue-create` from anywhere. +Flow: init once; commit each change; open PRs when ready; tag releases; file issues anywhere; resolve conflicts when Git stops. -Covers all external artifact creation: repo init, commits, pull/merge requests, release tags, and issue tracking. +Covers all external artifact creation: repo init, commits, pull/merge requests, release tags, issue tracking, and conflict resolution. ## Skills @@ -21,6 +21,7 @@ Covers all external artifact creation: repo init, commits, pull/merge requests, | [3.2] | [pull-request](skills/02-pull-request/SKILL.md) | Create PR (GitHub) or MR (GitLab) with filled template. | | [3.3] | [release-tag](skills/03-release-tag/SKILL.md) | Create and push a semantic version git tag with release notes. | | [3.4] | [issue-create](skills/04-issue-create/SKILL.md) | Create issues in the configured ticketing tool. | +| [3.5] | [resolve-conflict](skills/05-resolve-conflict/SKILL.md) | Resolve deterministic conflicts or approved choices. | ## Assets diff --git a/plugins/aidd-vcs/skills/05-resolve-conflict/SKILL.md b/plugins/aidd-vcs/skills/05-resolve-conflict/SKILL.md new file mode 100644 index 000000000..0d94e17c9 --- /dev/null +++ b/plugins/aidd-vcs/skills/05-resolve-conflict/SKILL.md @@ -0,0 +1,29 @@ +--- +name: resolve-conflict +description: Resolves deterministic Git conflicts or approved choices. Use when the user wants to resolve a merge, rebase, or cherry-pick conflict. Not for deciding between competing implementations or committing changes. +argument-hint: conflict | decision +--- + +# Resolve Conflict + +```mermaid +flowchart LR + start([active Git conflict]) --> resolve + resolve -->|no active conflict| none([report no conflict]) + resolve -->|all rows decided| applied([resolve and report]) + resolve -->|approval needed| proposal([propose and stop]) + proposal -->|approved table| resolve +``` + +## Actions + +Read only the next action file. + +| Action | Does | +| ------ | ---- | +| resolve | resolve conflicts or propose choices | + +## Transversal rules + +- Never commit, discard, reset, or check out changes. +- Stage only files resolved by this skill, never unrelated files. diff --git a/plugins/aidd-vcs/skills/05-resolve-conflict/actions/01-resolve.md b/plugins/aidd-vcs/skills/05-resolve-conflict/actions/01-resolve.md new file mode 100644 index 000000000..98d0b96ba --- /dev/null +++ b/plugins/aidd-vcs/skills/05-resolve-conflict/actions/01-resolve.md @@ -0,0 +1,29 @@ +# 01 - Resolve + +Resolve deterministic conflicts or approved proposals. + +## Input + +An active conflict, optionally with its approved decision table. + +## Output + +A resolved working tree and decision table, or an unapplied proposal, formatted with [resolution table](../assets/resolution-table.md). + +## Process + +1. **Inspect.** Read the operation, unmerged paths, and conflicted hunks; if none exist, report and stop. +2. **Decide.** Add one row per conflict to the [resolution table](../assets/resolution-table.md): matching approved rows keep their choice; identical sides keep common content; otherwise propose ours, theirs, or both with a reason. +3. **Gate.** If a proposal lacks approval, return the unchanged table and stop; otherwise confirm approved rows still match. +4. **Resolve.** Apply every decided row and stage the resolved paths. +5. **Validate.** Confirm no unmerged paths and a cached whitespace check limited to resolved paths; otherwise report the failed check. + +## Test + +| Case | Pass | +| ---- | ---- | +| deterministic conflict | markers are removed, Git has no unmerged paths, and rows are `Applied` | +| unapproved proposal | conflicted files and index entries stay unchanged, and rows are `Proposed` | +| approved proposal | matching choices apply, Git has no unmerged paths, and rows are `Applied` | +| unrelated staged error | resolved-path validation passes and the unrelated file stays untouched | +| no active conflict | no file or index entry changes, and the run reports no conflict | diff --git a/plugins/aidd-vcs/skills/05-resolve-conflict/assets/resolution-table.md b/plugins/aidd-vcs/skills/05-resolve-conflict/assets/resolution-table.md new file mode 100644 index 000000000..f37a1c9a6 --- /dev/null +++ b/plugins/aidd-vcs/skills/05-resolve-conflict/assets/resolution-table.md @@ -0,0 +1,4 @@ +# Conflict resolution decisions +| File | Conflict | Choice | Status | Reason | +| ---- | -------- | ------ | ------ | ------ | +| path | exact hunk or conflict | common content, ours, theirs, or both | Applied or Proposed | choice evidence | From 7fb4af8e96abed22b930f4a066165f9475ae4de1 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Thu, 1 Oct 2026 06:25:34 +0800 Subject: [PATCH 2/3] fix(aidd-refine): prioritize removal and concise improve instructions --- .../aidd-refine/skills/05-improve/actions/02-recommend.md | 7 ++++++- .../skills/05-improve/actions/03-target-edits.md | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/aidd-refine/skills/05-improve/actions/02-recommend.md b/plugins/aidd-refine/skills/05-improve/actions/02-recommend.md index 6e8f2681f..77b7bf4f5 100644 --- a/plugins/aidd-refine/skills/05-improve/actions/02-recommend.md +++ b/plugins/aidd-refine/skills/05-improve/actions/02-recommend.md @@ -18,6 +18,7 @@ A `## Recommendations` table with `ID | Question | Type | Diagnostic | Evidence - Give the behavior analyst the complete frozen transcript; give artifact analysts the same boundary, indexed turns, and exact artifact paths. - Request isolated or minimal context for artifact analysts when supported; otherwise analyze every scope locally instead of duplicating the transcript. - Do not dispatch an analyst with no relevant evidence. + - Give every analyst the assessment priority in step 5. - Require table rows only and forbid file writes. 3. **Question.** Make each analyst answer every prompt for its scope. - How could the next run be faster or better? @@ -25,11 +26,14 @@ A `## Recommendations` table with `ID | Question | Type | Diagnostic | Evidence - Where should the change live? - How could it save time or tokens? - What work was counterproductive? + - What back-and-forth, bottlenecks, or tool calls could have been removed, batched, parallelized, or replaced? 4. **Verify.** Read a named skill or knowledge file before assessing its information. 5. **Assess.** Label relevant information `obsolete`, `over-specific-or-time-bound`, `duplicate`, `inconsistent`, `counterproductive`, or `correct`. + - For skill and especially knowledge targets, first delete useless or inconsistent information; then consolidate or clarify. Add only for a demonstrated gap that existing content cannot cover. + - Preserve context needed to act and valid requirements. - Use `correct` when no evidence supports another label, and never render it as a recommendation. 6. **Merge.** Deduplicate findings across scopes and verify only their cited evidence against the frozen source. -7. **Render.** Order by question then `behavior`, `skill`, `knowledge`, and describe each change with the fewest unambiguous words. +7. **Render.** Order by question then `behavior`, `skill`, `knowledge`, and write recommendations and copy-ready instructions with the fewest words that preserve meaning and action. - Use `skill`, `behavior`, `knowledge`, or `tooling` as the target type. - State `time`, `tokens`, `both`, or `unknown` as its saving. - Render `no change` when a scope has no evidence-backed recommendation. @@ -47,4 +51,5 @@ A `## Recommendations` table with `ID | Question | Type | Diagnostic | Evidence | Information is correct | its scope says `no change` and no recommendation is rendered | | A named target is assessed | the target file was read before the verdict | | A saving is shown | it is categorical and never an invented amount | +| Operational efficiency is assessed | the question is answered with exact turn or tool-call evidence for each finding, or `no change` when none is supported | | The same evidence is analyzed again | recommendations keep the same order and do not cite an earlier `improve` report | diff --git a/plugins/aidd-refine/skills/05-improve/actions/03-target-edits.md b/plugins/aidd-refine/skills/05-improve/actions/03-target-edits.md index 53bc43068..6a8455901 100644 --- a/plugins/aidd-refine/skills/05-improve/actions/03-target-edits.md +++ b/plugins/aidd-refine/skills/05-improve/actions/03-target-edits.md @@ -18,6 +18,7 @@ An HTML report in a temporary directory with local `report.css` and `report.js`, - Consolidate repeated targets and render each diagnostic's smallest change. - Render one `Aucun fichier recommandé | — | —` row when no recommendation needs a file edit. 3. **Render.** Fill [the report template](../assets/report-template.html) with only measured values and grounded findings, then copy its local CSS and JavaScript beside it. + - Keep `data-prompt` instructions and the editable execution prompt as short as possible without losing targets or actions. - Remove every sample value and sample finding from the produced report. - HTML-escape every injected value; allow only template-owned markup and local asset references. - Write only to a unique temporary directory, never the project. From 3b762388ceece703d4901e00529e48cb7c3ab389 Mon Sep 17 00:00:00 2001 From: alexsoyes Date: Tue, 6 Oct 2026 10:33:15 +0700 Subject: [PATCH 3/3] chore(vcs): remove unrelated changes from conflict skill PR --- cli/tests/e2e/helpers.ts | 37 +++---------------- ...sandbox-reaches-no-tool-binary.e2e.test.ts | 29 +-------------- .../skills/05-improve/actions/02-recommend.md | 7 +--- .../05-improve/actions/03-target-edits.md | 1 - 4 files changed, 8 insertions(+), 66 deletions(-) diff --git a/cli/tests/e2e/helpers.ts b/cli/tests/e2e/helpers.ts index 00c0148b0..e7471faba 100644 --- a/cli/tests/e2e/helpers.ts +++ b/cli/tests/e2e/helpers.ts @@ -1,18 +1,10 @@ import { execFile } from "node:child_process"; -import { - accessSync, - constants, - copyFileSync, - existsSync, - mkdtempSync, - rmSync, - symlinkSync, -} from "node:fs"; +import { accessSync, constants, existsSync } from "node:fs"; import { copyFile, cp, mkdir, mkdtemp, realpath, rm, writeFile } from "node:fs/promises"; import { homedir, tmpdir } from "node:os"; import { delimiter, dirname, join, resolve } from "node:path"; import { promisify } from "node:util"; -import { afterAll, inject } from "vitest"; +import { inject } from "vitest"; import { InitUseCase } from "../../src/contexts/framework/application/init-use-case.js"; import { CLIOutput } from "../../src/presentation/output.js"; import { environmentWithoutGitVariables as withoutGitEnv } from "../../src/runtime/git/git-environment.js"; @@ -92,26 +84,7 @@ export async function createTestEnv(prefix: string): Promise<{ * A sandboxed run must reach none of these: the CLI registers marketplaces through a tool's * own command when its binary is there, making recorded output depend on the machine. */ -const DRIVABLE_TOOL_BINARIES = ["opencode", "claude", "codex", "copilot", "cursor-agent"]; - -let isolatedNodeDir: string | undefined; -afterAll(() => { - if (isolatedNodeDir) rmSync(isolatedNodeDir, { recursive: true, force: true }); - isolatedNodeDir = undefined; -}); - -/** Keep node reachable without admitting the global AI tools installed beside it. */ -function sandboxNodeDir(nodeDir: string): string { - if (withoutDrivableToolBinary(nodeDir) && !hasExecutable(nodeDir, "aidd")) return nodeDir; - if (!isolatedNodeDir) { - isolatedNodeDir = mkdtempSync(join(tmpdir(), "aidd-e2e-node-")); - const target = join(isolatedNodeDir, process.platform === "win32" ? "node.exe" : "node"); - // Windows file symlinks require privileges a CI runner need not have. - if (process.platform === "win32") copyFileSync(process.execPath, target); - else symlinkSync(process.execPath, target); - } - return isolatedNodeDir; -} +const DRIVABLE_TOOL_BINARIES = ["claude", "codex", "copilot", "cursor-agent"]; /** * Judged by what a directory holds, never by a keep-list: `node` and `copilot` share @@ -186,10 +159,10 @@ export function pathDirsWithoutAidd({ * Narrow by construction, then filtered of any directory holding a drivable tool binary — * without the filter a tool shipped into `/usr/bin` stays reachable. */ -export function pathWithoutAidd(nodeDir = dirname(process.execPath)): string { +export function pathWithoutAidd(): string { return pathDirsWithoutAidd({ platform: process.platform, - nodeDir: sandboxNodeDir(nodeDir), + nodeDir: dirname(process.execPath), gitDir: findGitDirWithoutAidd(), systemRoot: process.env.SystemRoot ?? process.env.windir ?? "C:\\Windows", pathDirs: (process.env.PATH ?? "").split(delimiter).filter(Boolean), diff --git a/cli/tests/e2e/sandbox-reaches-no-tool-binary.e2e.test.ts b/cli/tests/e2e/sandbox-reaches-no-tool-binary.e2e.test.ts index 67c141938..b53b30983 100644 --- a/cli/tests/e2e/sandbox-reaches-no-tool-binary.e2e.test.ts +++ b/cli/tests/e2e/sandbox-reaches-no-tool-binary.e2e.test.ts @@ -1,9 +1,8 @@ import { execFile } from "node:child_process"; -import { copyFile, mkdir, symlink, writeFile } from "node:fs/promises"; -import { delimiter, join } from "node:path"; +import { delimiter } from "node:path"; import { promisify } from "node:util"; import { describe, expect, it } from "vitest"; -import { createTestEnv, pathWithoutAidd, sandboxedEnv } from "./helpers.js"; +import { createTestEnv, sandboxedEnv } from "./helpers.js"; const execFileAsync = promisify(execFile); @@ -24,30 +23,6 @@ async function whichUnderSandbox(binary: string, cwd: string, env: NodeJS.Proces } describe("E2E: the sandbox a test spawns into", () => { - it("keeps node executable when an AI tool is installed beside it", async () => { - const { tempDir, projectDir, fakeHome, cleanup } = await createTestEnv("sandbox-shared-node-"); - try { - const sharedDir = join(tempDir, "bin"); - await mkdir(sharedDir); - const nodePath = join(sharedDir, process.platform === "win32" ? "node.exe" : "node"); - if (process.platform === "win32") await copyFile(process.execPath, nodePath); - else await symlink(process.execPath, nodePath); - await writeFile(join(sharedDir, "codex"), "#!/bin/sh\nexit 0\n", { mode: 0o755 }); - - const path = pathWithoutAidd(sharedDir); - const env = { ...sandboxedEnv(fakeHome), PATH: path, Path: path }; - expect(path.split(delimiter)).not.toContain(sharedDir); - expect(await whichUnderSandbox("codex", projectDir, env)).toBe(""); - const { stdout } = await execFileAsync("node", ["-p", "process.version"], { - cwd: projectDir, - env, - }); - expect(stdout.trim()).toBe(process.version); - } finally { - await cleanup(); - } - }); - it("reaches no AI tool binary, whatever the runner has installed", async () => { const { projectDir, fakeHome, cleanup } = await createTestEnv("sandbox-path-"); try { diff --git a/plugins/aidd-refine/skills/05-improve/actions/02-recommend.md b/plugins/aidd-refine/skills/05-improve/actions/02-recommend.md index 77b7bf4f5..6e8f2681f 100644 --- a/plugins/aidd-refine/skills/05-improve/actions/02-recommend.md +++ b/plugins/aidd-refine/skills/05-improve/actions/02-recommend.md @@ -18,7 +18,6 @@ A `## Recommendations` table with `ID | Question | Type | Diagnostic | Evidence - Give the behavior analyst the complete frozen transcript; give artifact analysts the same boundary, indexed turns, and exact artifact paths. - Request isolated or minimal context for artifact analysts when supported; otherwise analyze every scope locally instead of duplicating the transcript. - Do not dispatch an analyst with no relevant evidence. - - Give every analyst the assessment priority in step 5. - Require table rows only and forbid file writes. 3. **Question.** Make each analyst answer every prompt for its scope. - How could the next run be faster or better? @@ -26,14 +25,11 @@ A `## Recommendations` table with `ID | Question | Type | Diagnostic | Evidence - Where should the change live? - How could it save time or tokens? - What work was counterproductive? - - What back-and-forth, bottlenecks, or tool calls could have been removed, batched, parallelized, or replaced? 4. **Verify.** Read a named skill or knowledge file before assessing its information. 5. **Assess.** Label relevant information `obsolete`, `over-specific-or-time-bound`, `duplicate`, `inconsistent`, `counterproductive`, or `correct`. - - For skill and especially knowledge targets, first delete useless or inconsistent information; then consolidate or clarify. Add only for a demonstrated gap that existing content cannot cover. - - Preserve context needed to act and valid requirements. - Use `correct` when no evidence supports another label, and never render it as a recommendation. 6. **Merge.** Deduplicate findings across scopes and verify only their cited evidence against the frozen source. -7. **Render.** Order by question then `behavior`, `skill`, `knowledge`, and write recommendations and copy-ready instructions with the fewest words that preserve meaning and action. +7. **Render.** Order by question then `behavior`, `skill`, `knowledge`, and describe each change with the fewest unambiguous words. - Use `skill`, `behavior`, `knowledge`, or `tooling` as the target type. - State `time`, `tokens`, `both`, or `unknown` as its saving. - Render `no change` when a scope has no evidence-backed recommendation. @@ -51,5 +47,4 @@ A `## Recommendations` table with `ID | Question | Type | Diagnostic | Evidence | Information is correct | its scope says `no change` and no recommendation is rendered | | A named target is assessed | the target file was read before the verdict | | A saving is shown | it is categorical and never an invented amount | -| Operational efficiency is assessed | the question is answered with exact turn or tool-call evidence for each finding, or `no change` when none is supported | | The same evidence is analyzed again | recommendations keep the same order and do not cite an earlier `improve` report | diff --git a/plugins/aidd-refine/skills/05-improve/actions/03-target-edits.md b/plugins/aidd-refine/skills/05-improve/actions/03-target-edits.md index 6a8455901..53bc43068 100644 --- a/plugins/aidd-refine/skills/05-improve/actions/03-target-edits.md +++ b/plugins/aidd-refine/skills/05-improve/actions/03-target-edits.md @@ -18,7 +18,6 @@ An HTML report in a temporary directory with local `report.css` and `report.js`, - Consolidate repeated targets and render each diagnostic's smallest change. - Render one `Aucun fichier recommandé | — | —` row when no recommendation needs a file edit. 3. **Render.** Fill [the report template](../assets/report-template.html) with only measured values and grounded findings, then copy its local CSS and JavaScript beside it. - - Keep `data-prompt` instructions and the editable execution prompt as short as possible without losing targets or actions. - Remove every sample value and sample finding from the produced report. - HTML-escape every injected value; allow only template-owned markup and local asset references. - Write only to a unique temporary directory, never the project.