diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json
index 72d3826b8..d2adb050f 100644
--- a/.claude-plugin/marketplace.json
+++ b/.claude-plugin/marketplace.json
@@ -45,7 +45,7 @@
{
"name": "aidd-refine",
"source": "./plugins/aidd-refine",
- "description": "Meta-cognition: refine input through brainstorming, refine output through challenge and condensed communication mode.",
+ "description": "Meta-cognition: refine input through brainstorming, refine output through challenge, blind-spot scanning, and fact-checking.",
"strict": true,
"recommended": true
},
diff --git a/README.md b/README.md
index 62246e074..747774256 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ _(Already tested on `Legacy` codebases)_
[](https://www.ai-driven-dev.fr/)
- 7 plugins · 48 skills · 2 agents · MIT
+ 7 plugins · 47 skills · 2 agents · MIT
[](LICENSE)
@@ -36,7 +36,7 @@ Why not just write your own commands? → [FAQ](docs/FAQ.md#-why-aidd-instead-of
## ✅ Prerequisites
- **An AI coding tool** — Claude Code (native), or Cursor / Copilot / Codex / OpenCode (see [Compatibility](#-compatibility)).
-- **[Node](https://nodejs.org)** on your `PATH` — for the plugins that ship hooks ([what they do](docs/ARCHITECTURE.md#-bundled-hooks)).
+- **[Node](https://nodejs.org)** on your `PATH` — for the plugin that ships hooks ([what they do](docs/ARCHITECTURE.md#-bundled-hooks)).
## 🔌 Compatibility
@@ -257,9 +257,9 @@ Three Amigos refinement, Product Briefs, Epics, User Stories, Tasks, Spikes, Def
### 🪞 [aidd-refine](plugins/aidd-refine/README.md)
-`5 skills` · stable
+`4 skills` · stable
-Brainstorm, challenge, condense, shadow-areas, fact-check.
+Brainstorm, challenge, shadow-areas, fact-check.
diff --git a/aidd_docs/README.md b/aidd_docs/README.md
index 36dc7dc2c..2f6c32ac7 100644
--- a/aidd_docs/README.md
+++ b/aidd_docs/README.md
@@ -38,7 +38,7 @@ Skills are grouped into plugins by domain. Install only the plugins you need.
| Plugin | Purpose | Example skills |
| ----------------- | ---------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| aidd-context | Bootstrap, project init, generation of context artifacts (skills, agents, rules, commands, hooks, plugins, marketplaces), mermaid diagrams, learn, discovery | `02-project-memory`, `03-context-generate`, `09-mermaid` |
-| aidd-refine | Meta-cognition: brainstorm, challenge prior work, condensed communication mode | `01-brainstorm`, `02-challenge`, `03-condense` |
+| aidd-refine | Meta-cognition: brainstorm, challenge prior work, blind-spot scan, fact-check | `01-brainstorm`, `02-challenge`, `03-shadow-areas` |
| aidd-pm | Product management: backlog artifacts, refinement, Product Briefs, PRD, spec | `02-user-stories`, `05-spike`, `07-epic`, `09-defect`, `10-task` |
| aidd-dev | Code transformation: plan, implement, assert, audit, review, test, refactor, debug, for-sure | `01-plan`, `02-implement`, `05-review`, `06-test` |
| aidd-vcs | VCS workflows: commit, pull/merge request, release tag, issue creation | `01-commit`, `02-pull-request`, `04-issue-create` |
@@ -103,7 +103,7 @@ AIDD is delivered as a plugin marketplace. Pick what you need; do not install ev
| Plugin | Skills |
| ------------ | ------------------------------------------------------------------------------------------------------------------- |
| aidd-context | 00-onboard, 01-bootstrap, 02-project-memory, 03-context-generate, 09-mermaid, 10-learn, 11-explore |
-| aidd-refine | 01-brainstorm, 02-challenge, 03-condense, 04-shadow-areas, 05-fact-check |
+| aidd-refine | 01-brainstorm, 02-challenge, 03-shadow-areas, 04-fact-check |
| aidd-dev | 01-plan, 02-implement, 03-assert, 04-audit, 05-review, 06-test, 07-refactor, 08-debug, 09-for-sure, 10-todo |
| aidd-orchestrator | 00-async-dev, 01-sdlc |
| aidd-vcs | 01-commit, 02-pull-request, 03-release-tag, 04-issue-create |
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md
index 0ac4be6c9..56508cc01 100644
--- a/docs/ARCHITECTURE.md
+++ b/docs/ARCHITECTURE.md
@@ -40,7 +40,6 @@ Declared in `plugins//hooks/hooks.json`. They run Node, so users need `n
| Plugin | Event | Runs | Purpose |
| -------------- | ------------------ | ------------------------- | -------------------------------------------------------- |
| `aidd-context` | `SessionStart` | `hooks/update_memory.js` | Refresh the project memory block in the AI context files |
-| `aidd-refine` | `UserPromptSubmit` | `hooks/condense-stats.js` | Report token savings while condensed output mode is on |
## 🧠 Plugin concerns and layers
diff --git a/docs/CATALOG.md b/docs/CATALOG.md
index 273600a88..b2abe30d4 100644
--- a/docs/CATALOG.md
+++ b/docs/CATALOG.md
@@ -69,15 +69,14 @@ Product backlog artifacts, refinement, Product Briefs, Epics, User Stories, Task
## 🪞 aidd-refine
-Meta-cognition: brainstorm, challenge, condense, blind-spot scan, fact-check.
+Meta-cognition: brainstorm, challenge, blind-spot scan, fact-check.
| Skill | Role | Actions |
| ------------------ | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| `01-brainstorm` | Clarify a vague product or technical intent through natural discovery | `01-capture`, `02-probe`, `03-integrate`, `04-finalize` |
| `02-challenge` | Rethink prior work to verify correctness against a plan | `01-challenge` |
-| `03-condense` | Toggle terse output mode and report token savings | `01-condense`, `02-stats` |
-| `04-shadow-areas` | Scan a markdown artifact for blind spots | `01-detect`, `02-render-report`, `03-diff` |
-| `05-fact-check` | Verify factual claims against sources and cite them | `01-identify-claims`, `02-verify`, `03-report` |
+| `03-shadow-areas` | Scan a markdown artifact for blind spots | `01-detect`, `02-render-report`, `03-diff` |
+| `04-fact-check` | Verify factual claims against sources and cite them | `01-identify-claims`, `02-verify`, `03-report` |
## 🌿 aidd-vcs
diff --git a/plugins/aidd-refine/.claude-plugin/plugin.json b/plugins/aidd-refine/.claude-plugin/plugin.json
index fde51cbe1..7b7ef5e6a 100644
--- a/plugins/aidd-refine/.claude-plugin/plugin.json
+++ b/plugins/aidd-refine/.claude-plugin/plugin.json
@@ -2,7 +2,7 @@
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
"name": "aidd-refine",
"version": "2.2.4",
- "description": "Meta-cognition: refine input through brainstorming, refine output through challenge and condensed communication mode.",
+ "description": "Meta-cognition: refine input through brainstorming, refine output through challenge, blind-spot scanning, and fact-checking.",
"author": {
"name": "AI-Driven Dev",
"url": "https://github.com/ai-driven-dev"
@@ -10,9 +10,8 @@
"skills": [
"./skills/01-brainstorm",
"./skills/02-challenge",
- "./skills/03-condense",
- "./skills/04-shadow-areas",
- "./skills/05-fact-check"
+ "./skills/03-shadow-areas",
+ "./skills/04-fact-check"
],
"keywords": [
"brainstorm",
diff --git a/plugins/aidd-refine/CATALOG.md b/plugins/aidd-refine/CATALOG.md
index 7ecf3cd8f..0f48fb44d 100644
--- a/plugins/aidd-refine/CATALOG.md
+++ b/plugins/aidd-refine/CATALOG.md
@@ -7,13 +7,11 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai
## Table of Contents
- [`.claude-plugin`](#claude-plugin)
-- [`hooks`](#hooks)
- [`skills`](#skills)
- [`skills/01-brainstorm`](#skills01-brainstorm)
- [`skills/02-challenge`](#skills02-challenge)
- - [`skills/03-condense`](#skills03-condense)
- - [`skills/04-shadow-areas`](#skills04-shadow-areas)
- - [`skills/05-fact-check`](#skills05-fact-check)
+ - [`skills/03-shadow-areas`](#skills03-shadow-areas)
+ - [`skills/04-fact-check`](#skills04-fact-check)
---
@@ -23,13 +21,6 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai
|------|
| [plugin.json](.claude-plugin/plugin.json) |
-### `hooks`
-
-| File |
-|------|
-| [condense-stats.js](hooks/condense-stats.js) |
-| [hooks.json](hooks/hooks.json) |
-
### `skills`
#### `skills/01-brainstorm`
@@ -59,39 +50,30 @@ Auto-generated index of skills, agents, references and assets shipped by the `ai
| `references` | [confidence-rubric.md](skills/02-challenge/references/confidence-rubric.md) | - |
| `-` | [SKILL.md](skills/02-challenge/SKILL.md) | `Rethink just-completed work against an agreed plan, classifying findings as deal-breaker, suggestion, or correct, with a confidence score. Use to challenge or critically review recent work. Not for line-by-line style review or writing code.` |
-#### `skills/03-condense`
-
-| Group | File | Description |
-|-------|------|---|
-| `actions` | [01-condense.md](skills/03-condense/actions/01-condense.md) | - |
-| `actions` | [02-stats.md](skills/03-condense/actions/02-stats.md) | - |
-| `references` | [intensity-levels.md](skills/03-condense/references/intensity-levels.md) | - |
-| `-` | [SKILL.md](skills/03-condense/SKILL.md) | `Toggle terse output mode (lite, full, ultra) that drops filler while code and errors stay verbatim, and report token savings. Use to condense output, switch intensity, or check savings. Not for editing prose or compressing code.` |
-
-#### `skills/04-shadow-areas`
+#### `skills/03-shadow-areas`
| Group | File | Description |
|-------|------|---|
-| `actions` | [01-detect.md](skills/04-shadow-areas/actions/01-detect.md) | - |
-| `actions` | [02-render-report.md](skills/04-shadow-areas/actions/02-render-report.md) | - |
-| `actions` | [03-diff.md](skills/04-shadow-areas/actions/03-diff.md) | - |
-| `assets` | [report-template.md](skills/04-shadow-areas/assets/report-template.md) | - |
-| `references` | [categories.md](skills/04-shadow-areas/references/categories.md) | - |
-| `references` | [locked-sets.json](skills/04-shadow-areas/references/locked-sets.json) | - |
-| `references` | [probe-style.md](skills/04-shadow-areas/references/probe-style.md) | - |
-| `references` | [severity-rubric.md](skills/04-shadow-areas/references/severity-rubric.md) | - |
-| `-` | [SKILL.md](skills/04-shadow-areas/SKILL.md) | `Scan a markdown artifact (idea, stories, PRD, spec) for blind spots into a shadow report grouped by category and severity. Use to find gaps or what is missing in a written artifact. Not for interactive Q&A or code review.` |
-
-#### `skills/05-fact-check`
+| `actions` | [01-detect.md](skills/03-shadow-areas/actions/01-detect.md) | - |
+| `actions` | [02-render-report.md](skills/03-shadow-areas/actions/02-render-report.md) | - |
+| `actions` | [03-diff.md](skills/03-shadow-areas/actions/03-diff.md) | - |
+| `assets` | [report-template.md](skills/03-shadow-areas/assets/report-template.md) | - |
+| `references` | [categories.md](skills/03-shadow-areas/references/categories.md) | - |
+| `references` | [locked-sets.json](skills/03-shadow-areas/references/locked-sets.json) | - |
+| `references` | [probe-style.md](skills/03-shadow-areas/references/probe-style.md) | - |
+| `references` | [severity-rubric.md](skills/03-shadow-areas/references/severity-rubric.md) | - |
+| `-` | [SKILL.md](skills/03-shadow-areas/SKILL.md) | `Scan a markdown artifact (idea, stories, PRD, spec) for blind spots into a shadow report grouped by category and severity. Use to find gaps or what is missing in a written artifact. Not for interactive Q&A or code review.` |
+
+#### `skills/04-fact-check`
| Group | File | Description |
|-------|------|---|
-| `actions` | [01-identify-claims.md](skills/05-fact-check/actions/01-identify-claims.md) | - |
-| `actions` | [02-verify.md](skills/05-fact-check/actions/02-verify.md) | - |
-| `actions` | [03-report.md](skills/05-fact-check/actions/03-report.md) | - |
-| `assets` | [report-template.md](skills/05-fact-check/assets/report-template.md) | - |
-| `references` | [claim-categories.md](skills/05-fact-check/references/claim-categories.md) | - |
-| `references` | [report-output-discipline.md](skills/05-fact-check/references/report-output-discipline.md) | - |
-| `references` | [verification-cascade.md](skills/05-fact-check/references/verification-cascade.md) | - |
-| `-` | [SKILL.md](skills/05-fact-check/SKILL.md) | `Verify factual claims in a text against authoritative sources and rewrite it with footnote citations, hedging the unconfirmed. Use to fact-check, verify a claim, or cite sources on request. Not for judging code or clarifying requirements.` |
+| `actions` | [01-identify-claims.md](skills/04-fact-check/actions/01-identify-claims.md) | - |
+| `actions` | [02-verify.md](skills/04-fact-check/actions/02-verify.md) | - |
+| `actions` | [03-report.md](skills/04-fact-check/actions/03-report.md) | - |
+| `assets` | [report-template.md](skills/04-fact-check/assets/report-template.md) | - |
+| `references` | [claim-categories.md](skills/04-fact-check/references/claim-categories.md) | - |
+| `references` | [report-output-discipline.md](skills/04-fact-check/references/report-output-discipline.md) | - |
+| `references` | [verification-cascade.md](skills/04-fact-check/references/verification-cascade.md) | - |
+| `-` | [SKILL.md](skills/04-fact-check/SKILL.md) | `Verify factual claims in a text against authoritative sources and rewrite it with footnote citations, hedging the unconfirmed. Use to fact-check, verify a claim, or cite sources on request. Not for judging code or clarifying requirements.` |
diff --git a/plugins/aidd-refine/README.md b/plugins/aidd-refine/README.md
index faefc204d..02480dea4 100644
--- a/plugins/aidd-refine/README.md
+++ b/plugins/aidd-refine/README.md
@@ -8,7 +8,7 @@ Meta-cognition plugin for the AI-Driven Development framework.
First time? Install with `/plugin install aidd-refine@aidd-framework`, then run `aidd-refine:01-brainstorm`.
-Five skills that refine inputs and outputs through reflection: clarify vague requests, challenge prior work for correctness, toggle a condensed output mode, analytically scan artifacts for blind spots, and verify factual claims against authoritative sources.
+Four skills that refine inputs and outputs through reflection: clarify vague requests, challenge prior work for correctness, analytically scan artifacts for blind spots, and verify factual claims against authoritative sources.
## Skills
@@ -16,6 +16,5 @@ Five skills that refine inputs and outputs through reflection: clarify vague req
| ---------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [5.1] | [brainstorm](skills/01-brainstorm/SKILL.md) | Clarify a vague product or technical intent through natural discovery, converging until the idea is precise enough to act on. |
| [5.2] | [challenge](skills/02-challenge/SKILL.md) | Rethink prior work to verify correctness against an agreed plan, classifying findings with a confidence score. |
-| [5.3] | [condense](skills/03-condense/SKILL.md) | Toggle terse output mode with intensity levels so prose drops fluff while code, errors, and warnings stay verbatim. |
-| [5.4] | [shadow-areas](skills/04-shadow-areas/SKILL.md) | Analytical scan of a written artifact for blind spots: each gap is classified by category and severity, paired with a direct-question probe. |
-| [5.5] | [fact-check](skills/05-fact-check/SKILL.md) | Verify factual claims against authoritative sources and rewrite the text with footnote citations, hedging anything that cannot be confirmed. |
+| [5.3] | [shadow-areas](skills/03-shadow-areas/SKILL.md) | Analytical scan of a written artifact for blind spots: each gap is classified by category and severity, paired with a direct-question probe. |
+| [5.4] | [fact-check](skills/04-fact-check/SKILL.md) | Verify factual claims against authoritative sources and rewrite the text with footnote citations, hedging anything that cannot be confirmed. |
diff --git a/plugins/aidd-refine/hooks/condense-stats.js b/plugins/aidd-refine/hooks/condense-stats.js
deleted file mode 100644
index 88e827611..000000000
--- a/plugins/aidd-refine/hooks/condense-stats.js
+++ /dev/null
@@ -1,217 +0,0 @@
-#!/usr/bin/env node
-/**
- * condense-stats.js
- *
- * UserPromptSubmit hook for aidd-refine:03-condense :: action 02-stats.
- *
- * Triggers on user prompts that ask for condense stats. Reads the current
- * Claude Code session transcript, detects intensity transitions emitted by
- * the condense action, approximates token usage, and returns a formatted
- * report so the model does not need to recompute.
- *
- * Trigger patterns (case-insensitive):
- * /condense-stats
- * /condense stats
- * condense stats
- * how much have we saved
- * token savings
- *
- * Hook contract: receives a JSON payload on stdin with at least
- * { hook_event_name, session_id, transcript_path, cwd, prompt }
- * Returns JSON on stdout when blocking; exits silently when not matched.
- */
-
-'use strict';
-
-const fs = require('fs');
-
-const TRIGGER_PATTERNS = [
- /\/condense[-\s]?stats\b/i,
- /\bcondense\s+stats\b/i,
- /how\s+much\s+(have\s+)?we\s+saved\b/i,
- /\btoken\s+savings\b/i,
-];
-
-const LEVEL_DEFAULT = 'full';
-const COMPRESSION_RATIO = {
- lite: 0.18,
- full: 0.38,
- ultra: 0.58,
-};
-
-function readStdin() {
- return new Promise((resolve) => {
- let data = '';
- process.stdin.setEncoding('utf8');
- process.stdin.on('data', (chunk) => { data += chunk; });
- process.stdin.on('end', () => resolve(data));
- process.stdin.on('error', () => resolve(''));
- });
-}
-
-function passthrough() {
- process.exit(0);
-}
-
-function block(reason) {
- process.stdout.write(JSON.stringify({ decision: 'block', reason }) + '\n');
- process.exit(0);
-}
-
-function matchTrigger(prompt) {
- if (!prompt || typeof prompt !== 'string') return false;
- return TRIGGER_PATTERNS.some((re) => re.test(prompt));
-}
-
-function readTranscript(transcriptPath) {
- if (!transcriptPath || !fs.existsSync(transcriptPath)) return [];
- const lines = fs.readFileSync(transcriptPath, 'utf8').split(/\r?\n/);
- const messages = [];
- for (const line of lines) {
- if (!line.trim()) continue;
- try {
- messages.push(JSON.parse(line));
- } catch {
- // ignore malformed lines
- }
- }
- return messages;
-}
-
-function extractAssistantText(message) {
- if (!message || message.type !== 'assistant') return null;
- const content = message?.message?.content;
- if (typeof content === 'string') return content;
- if (Array.isArray(content)) {
- return content
- .filter((part) => part && part.type === 'text' && typeof part.text === 'string')
- .map((part) => part.text)
- .join('\n');
- }
- return null;
-}
-
-function detectTransitionLevel(text) {
- if (!text) return null;
- const onMatch = text.match(/Condense:\s*ON\s*\(([a-z]+)\)/i);
- if (onMatch) return onMatch[1].toLowerCase();
- if (/Condense:\s*OFF/i.test(text)) return 'off';
- return null;
-}
-
-function approxTokens(text) {
- if (!text) return 0;
- return Math.ceil(text.length / 4);
-}
-
-function computeStats(messages) {
- let activeLevel = null;
- let activeTurns = 0;
- let totalTurns = 0;
- let activeTokens = 0;
- let offTokens = 0;
- const levelTokens = { lite: 0, full: 0, ultra: 0 };
- const levelTurns = { lite: 0, full: 0, ultra: 0 };
-
- for (const message of messages) {
- const text = extractAssistantText(message);
- if (text === null) continue;
- totalTurns += 1;
-
- const transition = detectTransitionLevel(text);
- if (transition === 'off') {
- activeLevel = null;
- } else if (transition && transition in COMPRESSION_RATIO) {
- activeLevel = transition;
- }
-
- const tokens = approxTokens(text);
- if (activeLevel) {
- activeTurns += 1;
- activeTokens += tokens;
- levelTokens[activeLevel] += tokens;
- levelTurns[activeLevel] += 1;
- } else {
- offTokens += tokens;
- }
- }
-
- let approxSaved = 0;
- for (const [level, tokens] of Object.entries(levelTokens)) {
- const ratio = COMPRESSION_RATIO[level];
- if (!ratio || tokens === 0) continue;
- // tokens here are the compressed output; baseline = tokens / (1 - ratio)
- const baseline = tokens / (1 - ratio);
- approxSaved += baseline - tokens;
- }
-
- const activeRatio = totalTurns === 0 ? 0 : (activeTurns / totalTurns) * 100;
- const avgSaved = activeTurns === 0
- ? 0
- : (Object.entries(levelTurns).reduce((acc, [level, turns]) => {
- return acc + (turns * (COMPRESSION_RATIO[level] || 0));
- }, 0) / activeTurns) * 100;
-
- const topSavings = Object.entries(levelTurns)
- .filter(([, turns]) => turns > 0)
- .sort((a, b) => b[1] - a[1])
- .map(([level]) => `${level} (-${Math.round((COMPRESSION_RATIO[level] || 0) * 100)}%)`)
- .join(', ') || 'none yet';
-
- return {
- mode: activeLevel ? `ON (${activeLevel})` : 'OFF',
- activeTurns,
- totalTurns,
- activeRatio: Math.round(activeRatio),
- activeTokens: Math.round(activeTokens / 10) * 10,
- offTokens: Math.round(offTokens / 10) * 10,
- avgSaved: Math.round(avgSaved),
- approxSaved: Math.round(approxSaved / 10) * 10,
- topSavings,
- };
-}
-
-function format(stats) {
- return [
- 'Condense session stats',
- '----------------------',
- `Mode: ${stats.mode}`,
- `Active turns: ${stats.activeTurns} / ${stats.totalTurns} (${stats.activeRatio}%)`,
- `Tokens out (active):${' '.repeat(Math.max(1, 4 - String(stats.activeTokens).length))}${stats.activeTokens}`,
- `Tokens out (off): ${stats.offTokens}`,
- `Avg saved / turn: ~${stats.avgSaved}%`,
- `Approx total saved: ~${stats.approxSaved} tokens`,
- '',
- `Top savings: ${stats.topSavings}.`,
- '',
- 'Source: session transcript. Baseline ratios are published averages (lite 18%, full 38%, ultra 58%); replace with measured values when available.',
- ].join('\n');
-}
-
-async function main() {
- const raw = await readStdin();
- let payload = {};
- try {
- payload = raw ? JSON.parse(raw) : {};
- } catch {
- passthrough();
- return;
- }
-
- const prompt = payload.prompt || payload.user_prompt || '';
- if (!matchTrigger(prompt)) {
- passthrough();
- return;
- }
-
- const messages = readTranscript(payload.transcript_path);
- if (messages.length === 0) {
- block('Condense session stats unavailable: transcript not found or empty.');
- return;
- }
-
- const stats = computeStats(messages);
- block(format(stats));
-}
-
-main().catch(() => passthrough());
diff --git a/plugins/aidd-refine/hooks/hooks.json b/plugins/aidd-refine/hooks/hooks.json
deleted file mode 100644
index bbe89419a..000000000
--- a/plugins/aidd-refine/hooks/hooks.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "hooks": {
- "UserPromptSubmit": [
- {
- "hooks": [
- {
- "type": "command",
- "command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/condense-stats.js"
- }
- ]
- }
- ]
- }
-}
diff --git a/plugins/aidd-refine/skills/03-condense/SKILL.md b/plugins/aidd-refine/skills/03-condense/SKILL.md
deleted file mode 100644
index c95881af3..000000000
--- a/plugins/aidd-refine/skills/03-condense/SKILL.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-name: 03-condense
-description: Toggle terse output mode (lite, full, ultra) that drops filler while code and errors stay verbatim, and report token savings. Use to condense output, switch intensity, or check savings. Not for editing prose or compressing code.
-argument-hint: lite | full | ultra | stats
----
-
-# Condense
-
-Toggles a terse output mode with three intensity levels (lite, full, ultra). Strips articles, filler, and pleasantries from prose while preserving technical substance, code blocks, quoted errors, and security warnings.
-
-## Actions
-
-| # | Action | Role | Input |
-| --- | ---------- | --------------------------------------------------------------------- | ------------------------------------ |
-| 01 | `condense` | Toggle terse mode and apply intensity rules | current state + requested level |
-| 02 | `stats` | Report real token usage and estimated savings for the current session | session messages + level timeline |
-
-Dispatch by intent: a toggle phrase → `condense`, a savings query → `stats`.
-Before running an action, read its file in `actions/`, not only the table or assets.
-
-## Transversal rules
-
-- **Persistence**: once active, terse mode applies to EVERY response until explicitly turned off. Do not drift back to verbose prose after many turns, when uncertain, or when the task changes. The level remains active for the rest of the session unless changed or stopped.
-- **Off switch**: terse mode stops only on explicit user signal: `stop condense`, `normal mode`, or invoking the skill again to toggle.
-- **Toggle**: invoking the skill while active toggles it off; invoking while off turns it on at the default level (`full`) unless an explicit intensity is given.
-- **Drop fluff**: drop articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), and hedging. Fragments are acceptable.
-- **Short synonyms**: prefer short words (big not extensive, fix not "implement a solution for"). Technical terms stay exact. Code blocks are unchanged. Errors are quoted verbatim.
-- **Pattern**: `[thing] [action] [reason]. [next step].`
-- **Auto-pause**: drop terse mode for the passages listed in `references/intensity-levels.md` (security warnings, irreversible confirmations, ambiguity risks), then resume.
-- **Boundaries**: code, commits, and pull request bodies are written in normal English regardless of intensity.
-
-## References
-
-- `references/intensity-levels.md`: detailed per-level rules and side-by-side examples.
diff --git a/plugins/aidd-refine/skills/03-condense/actions/01-condense.md b/plugins/aidd-refine/skills/03-condense/actions/01-condense.md
deleted file mode 100644
index 5049b0ef8..000000000
--- a/plugins/aidd-refine/skills/03-condense/actions/01-condense.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# 01 - Condense
-
-Toggle terse output mode and apply the requested intensity rules to subsequent prose turns.
-
-## Input
-
-- Whether condense is currently on (and at which level) or off, read from session context.
-- The requested change: a level (lite, full, ultra) or a plain on/off toggle.
-
-## Output
-
-A single confirmation line: `Condense: ON ().` when enabling, or `Condense: OFF.` when disabling.
-
-## Process
-
-1. **Detect.** Read the toggle command and target level from the user message.
-2. **Resolve.** Combine the current state with the request:
- - Explicit level (`lite | full | ultra`) sets that level (or switches level if already on).
- - `toggle` flips on/off; default level when turning on is `full`.
- - Off phrases (`stop condense`, `normal mode`) force off.
-3. **Emit.** The reply MUST begin with this exact line, filled in and unaltered: `Condense: ON ().` when enabling, or `Condense: OFF.` when disabling. The stats action and the hook parse this line from the transcript, so never paraphrase, decorate, or omit it.
-4. **Apply.** Apply the transversal rules to every subsequent prose turn until the next off signal, using per-level rules and auto-pause passages from [intensity-levels.md](../references/intensity-levels.md).
-
-## Test
-
-- After ON, the next non-code, non-warning turn drops articles at the active intensity; after OFF, it returns to normal prose.
-- Code blocks, quoted errors, and security warnings stay verbatim regardless of state.
diff --git a/plugins/aidd-refine/skills/03-condense/actions/02-stats.md b/plugins/aidd-refine/skills/03-condense/actions/02-stats.md
deleted file mode 100644
index 0501cf255..000000000
--- a/plugins/aidd-refine/skills/03-condense/actions/02-stats.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 02 - Stats
-
-Show real token usage and estimated savings for the current session under condense mode. On Claude Code the bundled `hooks/condense-stats.js` hook owns this path; the model runs the steps below only on tools without hook support.
-
-## Input
-
-- The session's assistant messages since it started.
-- The active level and every on/off switch during the session.
-
-## Output
-
-A stats block reporting, in order: mode, active turns and ratio, tokens out while active, tokens out while off, average saved per turn versus the unmodified baseline, approximate total saved, and per-level top savings.
-
-## Process
-
-1. **Read.** Load the session log for the current AI tool (Claude Code: the active session JSONL; other tools: their equivalent transcript).
-2. **Detect.** Scan assistant messages for the confirmation line emitted by `01-condense` (`Condense: ON (...)` / `Condense: OFF`). Build a timeline of `(turn_index, level)` segments.
-3. **Tokenize.** Count tokens per assistant message. Use the AI tool's token counter when available, otherwise approximate at 4 chars per token.
-4. **Compute.** For each `active` segment, estimate the verbose-prose baseline using the level's compression ratio (`lite ~18%`, `full ~38%`, `ultra ~58%`, published averages, replaceable by measured ratios when available).
-5. **Render.** Emit the report with the exact field order shown in `## Output`. Round percentages to whole numbers; round token counts to the nearest 10.
-6. **Stop.** Do not invoke any other action.
-
-## Test
-
-- The output follows the `## Output` field order, every numeric field filled (no `-`).
-- The active-turns ratio matches the detected intensity transitions.
diff --git a/plugins/aidd-refine/skills/03-condense/references/intensity-levels.md b/plugins/aidd-refine/skills/03-condense/references/intensity-levels.md
deleted file mode 100644
index 53e12cd2b..000000000
--- a/plugins/aidd-refine/skills/03-condense/references/intensity-levels.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# Intensity levels
-
-The `condense` action supports three intensity levels. Each row applies progressively more aggressive compression.
-
-| Level | What change |
-| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **lite** | No filler or hedging. Articles and full sentences are kept. Professional but tight. |
-| **full** | Drop articles, fragments are acceptable, short synonyms. Classic terse mode. |
-| **ultra** | Abbreviate prose words (DB, auth, config, req, res, fn, impl), strip conjunctions, arrows for causality (X to Y), one word when one word is enough. Code symbols, function names, API names, and error strings: never abbreviate. |
-
-## Side-by-side examples
-
-### Example 1: "Why does a React component re-render?"
-
-- **lite**: "Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`."
-- **full**: "New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`."
-- **ultra**: "Inline obj prop to new ref to re-render. `useMemo`."
-
-### Example 2: "Explain database connection pooling."
-
-- **lite**: "Connection pooling reuses open connections instead of creating new ones per request. It avoids repeated handshake overhead."
-- **full**: "Pool reuse open DB connections. No new connection per request. Skip handshake overhead."
-- **ultra**: "Pool = reuse DB conn. Skip handshake to fast under load."
-
-### Example 3: "What is a debounce function?"
-
-- **lite**: "Debounce delays a function call until input stops for a chosen interval. Used for search inputs and resize handlers."
-- **full**: "Debounce delay call until input stop for chosen interval. Use for search inputs, resize handlers."
-- **ultra**: "Debounce delay call until input stop. Use for search, resize."
-
-## Auto-pause passages (always normal prose)
-
-These passages render in normal English regardless of the active level. Resume terse mode after the passage is clear.
-
-- **Security warnings**: full sentences explaining the risk and the safer alternative.
-- **Irreversible action confirmations**: full sentences describing the consequence and any backup step.
-- **Multi-step sequences** where dropped conjunctions or fragment order risks misread.
-- **Clarifications**: if compression itself creates technical ambiguity, fall back for that bullet.
-- **User confusion**: if the user repeats a question or asks "what do you mean", expand for that answer.
-
-### Example: irreversible operation
-
-> **Warning:** This permanently deletes all rows in the `users` table and cannot be undone.
-> ```sql
-> DROP TABLE users;
-> ```
-> Terse mode resumes. Verify backup exists first.
diff --git a/plugins/aidd-refine/skills/04-shadow-areas/SKILL.md b/plugins/aidd-refine/skills/03-shadow-areas/SKILL.md
similarity index 99%
rename from plugins/aidd-refine/skills/04-shadow-areas/SKILL.md
rename to plugins/aidd-refine/skills/03-shadow-areas/SKILL.md
index 8738b78f3..a09d1fd55 100644
--- a/plugins/aidd-refine/skills/04-shadow-areas/SKILL.md
+++ b/plugins/aidd-refine/skills/03-shadow-areas/SKILL.md
@@ -1,5 +1,5 @@
---
-name: 04-shadow-areas
+name: 03-shadow-areas
description: Scan a markdown artifact (idea, stories, PRD, spec) for blind spots into a shadow report grouped by category and severity. Use to find gaps or what is missing in a written artifact. Not for interactive Q&A or code review.
argument-hint: file | text
---
diff --git a/plugins/aidd-refine/skills/04-shadow-areas/actions/01-detect.md b/plugins/aidd-refine/skills/03-shadow-areas/actions/01-detect.md
similarity index 100%
rename from plugins/aidd-refine/skills/04-shadow-areas/actions/01-detect.md
rename to plugins/aidd-refine/skills/03-shadow-areas/actions/01-detect.md
diff --git a/plugins/aidd-refine/skills/04-shadow-areas/actions/02-render-report.md b/plugins/aidd-refine/skills/03-shadow-areas/actions/02-render-report.md
similarity index 100%
rename from plugins/aidd-refine/skills/04-shadow-areas/actions/02-render-report.md
rename to plugins/aidd-refine/skills/03-shadow-areas/actions/02-render-report.md
diff --git a/plugins/aidd-refine/skills/04-shadow-areas/actions/03-diff.md b/plugins/aidd-refine/skills/03-shadow-areas/actions/03-diff.md
similarity index 100%
rename from plugins/aidd-refine/skills/04-shadow-areas/actions/03-diff.md
rename to plugins/aidd-refine/skills/03-shadow-areas/actions/03-diff.md
diff --git a/plugins/aidd-refine/skills/04-shadow-areas/assets/report-template.md b/plugins/aidd-refine/skills/03-shadow-areas/assets/report-template.md
similarity index 100%
rename from plugins/aidd-refine/skills/04-shadow-areas/assets/report-template.md
rename to plugins/aidd-refine/skills/03-shadow-areas/assets/report-template.md
diff --git a/plugins/aidd-refine/skills/04-shadow-areas/references/categories.md b/plugins/aidd-refine/skills/03-shadow-areas/references/categories.md
similarity index 100%
rename from plugins/aidd-refine/skills/04-shadow-areas/references/categories.md
rename to plugins/aidd-refine/skills/03-shadow-areas/references/categories.md
diff --git a/plugins/aidd-refine/skills/04-shadow-areas/references/locked-sets.json b/plugins/aidd-refine/skills/03-shadow-areas/references/locked-sets.json
similarity index 100%
rename from plugins/aidd-refine/skills/04-shadow-areas/references/locked-sets.json
rename to plugins/aidd-refine/skills/03-shadow-areas/references/locked-sets.json
diff --git a/plugins/aidd-refine/skills/04-shadow-areas/references/probe-style.md b/plugins/aidd-refine/skills/03-shadow-areas/references/probe-style.md
similarity index 100%
rename from plugins/aidd-refine/skills/04-shadow-areas/references/probe-style.md
rename to plugins/aidd-refine/skills/03-shadow-areas/references/probe-style.md
diff --git a/plugins/aidd-refine/skills/04-shadow-areas/references/severity-rubric.md b/plugins/aidd-refine/skills/03-shadow-areas/references/severity-rubric.md
similarity index 100%
rename from plugins/aidd-refine/skills/04-shadow-areas/references/severity-rubric.md
rename to plugins/aidd-refine/skills/03-shadow-areas/references/severity-rubric.md
diff --git a/plugins/aidd-refine/skills/05-fact-check/SKILL.md b/plugins/aidd-refine/skills/04-fact-check/SKILL.md
similarity index 99%
rename from plugins/aidd-refine/skills/05-fact-check/SKILL.md
rename to plugins/aidd-refine/skills/04-fact-check/SKILL.md
index 5ede3ee41..debeeb30d 100644
--- a/plugins/aidd-refine/skills/05-fact-check/SKILL.md
+++ b/plugins/aidd-refine/skills/04-fact-check/SKILL.md
@@ -1,5 +1,5 @@
---
-name: 05-fact-check
+name: 04-fact-check
description: Verify factual claims in a text against authoritative sources and rewrite it with footnote citations, hedging the unconfirmed. Use to fact-check, verify a claim, or cite sources on request. Not for judging code or clarifying requirements.
argument-hint: text
---
diff --git a/plugins/aidd-refine/skills/05-fact-check/actions/01-identify-claims.md b/plugins/aidd-refine/skills/04-fact-check/actions/01-identify-claims.md
similarity index 100%
rename from plugins/aidd-refine/skills/05-fact-check/actions/01-identify-claims.md
rename to plugins/aidd-refine/skills/04-fact-check/actions/01-identify-claims.md
diff --git a/plugins/aidd-refine/skills/05-fact-check/actions/02-verify.md b/plugins/aidd-refine/skills/04-fact-check/actions/02-verify.md
similarity index 90%
rename from plugins/aidd-refine/skills/05-fact-check/actions/02-verify.md
rename to plugins/aidd-refine/skills/04-fact-check/actions/02-verify.md
index 70ad3d8d3..4f82b6e73 100644
--- a/plugins/aidd-refine/skills/05-fact-check/actions/02-verify.md
+++ b/plugins/aidd-refine/skills/04-fact-check/actions/02-verify.md
@@ -21,4 +21,4 @@ A list of verdicts: each claim gains one verdict (verified, refuted, conflict, o
## Test
-- Run on `"the source file plugins/aidd-refine/hooks/condense-stats.js exists in this repo"`: the cascade resolves at the codebase tier, the verdict is verified, the source is that file path, and the web tier is never reached.
+- Run on `"the source file plugins/aidd-context/hooks/update_memory.js exists in this repo"`: the cascade resolves at the codebase tier, the verdict is verified, the source is that file path, and the web tier is never reached.
diff --git a/plugins/aidd-refine/skills/05-fact-check/actions/03-report.md b/plugins/aidd-refine/skills/04-fact-check/actions/03-report.md
similarity index 100%
rename from plugins/aidd-refine/skills/05-fact-check/actions/03-report.md
rename to plugins/aidd-refine/skills/04-fact-check/actions/03-report.md
diff --git a/plugins/aidd-refine/skills/05-fact-check/assets/report-template.md b/plugins/aidd-refine/skills/04-fact-check/assets/report-template.md
similarity index 100%
rename from plugins/aidd-refine/skills/05-fact-check/assets/report-template.md
rename to plugins/aidd-refine/skills/04-fact-check/assets/report-template.md
diff --git a/plugins/aidd-refine/skills/05-fact-check/references/claim-categories.md b/plugins/aidd-refine/skills/04-fact-check/references/claim-categories.md
similarity index 100%
rename from plugins/aidd-refine/skills/05-fact-check/references/claim-categories.md
rename to plugins/aidd-refine/skills/04-fact-check/references/claim-categories.md
diff --git a/plugins/aidd-refine/skills/05-fact-check/references/report-output-discipline.md b/plugins/aidd-refine/skills/04-fact-check/references/report-output-discipline.md
similarity index 100%
rename from plugins/aidd-refine/skills/05-fact-check/references/report-output-discipline.md
rename to plugins/aidd-refine/skills/04-fact-check/references/report-output-discipline.md
diff --git a/plugins/aidd-refine/skills/05-fact-check/references/verification-cascade.md b/plugins/aidd-refine/skills/04-fact-check/references/verification-cascade.md
similarity index 100%
rename from plugins/aidd-refine/skills/05-fact-check/references/verification-cascade.md
rename to plugins/aidd-refine/skills/04-fact-check/references/verification-cascade.md
diff --git a/scripts/skill-eval.mjs b/scripts/skill-eval.mjs
index ab66e1f79..eee13a69a 100644
--- a/scripts/skill-eval.mjs
+++ b/scripts/skill-eval.mjs
@@ -8,7 +8,7 @@
//
// Usage:
// node scripts/skill-eval.mjs # run every case (deterministic checks)
-// node scripts/skill-eval.mjs 04-shadow-areas # run cases for one skill
+// node scripts/skill-eval.mjs 03-shadow-areas # run cases for one skill
// node scripts/skill-eval.mjs --judge # also run LLM-judge criteria (metered)
// node scripts/skill-eval.mjs --keep # keep temp dirs for inspection
//
diff --git a/scripts/skill-eval/README.md b/scripts/skill-eval/README.md
index 663cda8e2..a6a57d21e 100644
--- a/scripts/skill-eval/README.md
+++ b/scripts/skill-eval/README.md
@@ -8,7 +8,7 @@ blocks describe.
```bash
node scripts/skill-eval.mjs # every case, deterministic checks
-node scripts/skill-eval.mjs 04-shadow-areas # one skill
+node scripts/skill-eval.mjs 03-shadow-areas # one skill
node scripts/skill-eval.mjs --judge # also run LLM-judge criteria (metered)
node scripts/skill-eval.mjs --keep # keep temp dirs to inspect
```
@@ -31,7 +31,7 @@ output.
```json
{
- "skill": "04-shadow-areas",
+ "skill": "03-shadow-areas",
"evalName": "xeval-shadow",
"name": "short description",
"setup": { "files": { "prd.md": "..." } },
@@ -63,15 +63,8 @@ as grader, for outcomes that cannot be matched literally.
## Known findings
-The harness surfaced two limitations worth tracking:
+The harness surfaced one limitation worth tracking:
-- **condense's `Condense: ON ().` line is model-emitted, not guaranteed.**
- `02-stats` and the `condense-stats.js` hook parse that exact line from the
- transcript, but the model paraphrases it ("Condense mode on, level full")
- even when the action mandates the literal. So the condense case gates on
- semantics (mentions condense + the level), not the literal, and stats
- detection is best-effort. A robust fix would emit the marker from the hook
- rather than rely on model output.
- **empty-source scanning varies.** Most runs produce exactly one blocker, but
the exact count/header drifts between runs. The case asserts deterministically
only that a report is written, and gates the "exactly one blocker" semantics
diff --git a/scripts/skill-eval/cases.json b/scripts/skill-eval/cases.json
index ad8bd4b8b..8311d708f 100644
--- a/scripts/skill-eval/cases.json
+++ b/scripts/skill-eval/cases.json
@@ -1,6 +1,6 @@
[
{
- "skill": "04-shadow-areas",
+ "skill": "03-shadow-areas",
"evalName": "xeval-shadow",
"name": "scans a PRD and writes a structured report",
"setup": {
@@ -15,7 +15,7 @@
}
},
{
- "skill": "04-shadow-areas",
+ "skill": "03-shadow-areas",
"evalName": "xeval-shadow",
"name": "filename rule keeps a dotless name (Makefile)",
"setup": { "files": { "Makefile": "build:\n\techo hi\n" } },
@@ -23,7 +23,7 @@
"expect": { "filesExist": ["Makefile-shadow-report.md"] }
},
{
- "skill": "04-shadow-areas",
+ "skill": "03-shadow-areas",
"evalName": "xeval-shadow",
"name": "empty source yields a single blocker",
"setup": { "files": { "empty.md": "" } },
@@ -35,7 +35,7 @@
}
},
{
- "skill": "05-fact-check",
+ "skill": "04-fact-check",
"evalName": "xeval-factcheck",
"name": "verifies a real file, refutes a fake one, hedges the unknowable, hides mechanics",
"setup": { "files": { "src/auth.ts": "export const auth = true;\n" } },
@@ -47,15 +47,6 @@
"judgeFiles": []
}
},
- {
- "skill": "03-condense",
- "evalName": "xeval-condense",
- "name": "turning on confirms condense at the full level",
- "prompt": "Use the {{SKILL}} skill to turn condense mode on, set to the full level (not lite, not ultra).",
- "expect": {
- "stdoutContains": ["condense", "full"]
- }
- },
{
"skill": "02-challenge",
"evalName": "xeval-challenge",
|