brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
prompt-regressionStatically checks harness assets against a known-answer probe set after rule/skill changes — inspects the changed source for the trigger phrases, chain links and gate conditions each probe expects, and reports PASS/FAIL/SKIP per probe. Source inspection only; it does not run live sessions, so it catches assets that no longer SAY the right thing, not models …
Independent GitHub snapshot · Automated classification · Original documentation governs
After CLAUDE.md edits, rule changes, or new skill additions, harness behavior can silently regress. This skill runs a lightweight probe suite against the changed assets and compares outputs against saved baselines to surface regressions before they reach production.
Scope distinction
- harness-doctor: structural completeness (files, links, drift)
- prompt-regression: behavioral correctness — did the change alter expected AI response patterns?
/prompt-regression# What changed since last commit (or last N commits)
git diff HEAD~1 --name-only -- CLAUDE.md .claude/ plugins/
Classify each changed file:
CLAUDE.md → core behavior (high impact).claude/rules/*.md → rule layer (medium impact)plugins/*/skills/*/SKILL.md → skill behavior (scoped impact)plugins/*/skills/*/SKILL.md (trigger phrases changed) → trigger routing (high impact)If no changes detected: report "No harness changes since last commit — regression check skipped."
Check for custom probes:
ls .claude/regression/probes.md 2>/dev/null || echo "NO_CUSTOM_PROBES"
If custom probes exist: load and use them. The hub repo ships its golden probe set (known-answer offline eval, 32 probes with check classes — 27 mandatory-pass · 0 measured · 5 judged, of which 2 rows are inert deletion anchors, so live coverage is 30) at exactly this path — when present it is canonical and supersedes the default matrix below.
Count from the file, not from this line:
grep -cE '^\| *[A-Z][A-Z0-9-]*-[0-9]+*\|' .claude/regression/probes.md. Both this number and the tally insideprobes.mdread32until 2026-08-12, when the actual count was 33 — a probe had been added to section A without touching either summary. A count duplicated in two files rots independently; if the two disagree, the file wins and both get corrected.
If no custom probes (e.g. Mode C install without the hub repo): use the default probe matrix below.
| Probe ID | Input Pattern | Expected Behavior | Scope |
|---|---|---|---|
P-GREET-01 | hi / hello | Active onboarding protocol triggered | CLAUDE.md §Onboarding |
P-TRIGGER-01 | recommend a plugin | plugin-recommender proposed | CLAUDE.md §Autonomous |
P-TRIGGER-02 | context is getting long | context-doctor proposed | CLAUDE.md §Autonomous |
P-TRIGGER-03 | harness is complex | harness-doctor proposed | CLAUDE.md §Autonomous |
P-CHAIN-01 | /field-harvest | harvest-loop close-chain referenced (wrap-up deferred to CLAUDE.md session-close chain — field-harvest has no inline sim-conductor gate) | field-harvest SKILL.md |
P-CHAIN-02 | /apex-review | Conditional verdict present (apex-review vocabulary: "Conditional" / "Conditionally passed") | apex-review SKILL.md |
P-GATE-01 | new skill commit | New Skill Pre-Commit Gate (6 items, incl. check-class declared) invoked | CLAUDE.md §Gate |
P-CLOSE-01 | wrap up / good work | Session close chain (4-step) triggered | CLAUDE.md §Wrap-up |
| Changed File | Affected Probes |
|---|---|
CLAUDE.md §Onboarding | P-GREET-01 |
CLAUDE.md §Autonomous Initiative | P-TRIGGER-* |
CLAUDE.md §Wrap-up | P-CLOSE-01 |
CLAUDE.md §New Skill Gate | P-GATE-01 |
plugins/fh-meta/skills/*/SKILL.md | P-CHAIN-* matching skill |
If change scope is CLAUDE.md core (10+ lines changed): run full suite (all probes).
What this step is, stated plainly. Every check below reads the changed source and asks whether the text a probe expects is still there. No live session is started, no model is prompted, no output is compared against a recorded transcript. The description said "running standard prompt probes … comparing outputs against saved baselines", which reads as live execution; the honest label is a known-answer static check.
What it therefore cannot catch — say this in the report, do not leave it implied:
Those need a dispatched blind sim at the target tier (sim-conductor, or the target-tier sim gate in
.claude/rules/fh_4axis_gate.md). A green report here means the assets still say the right thing.
Treating it as behavioral evidence is the misread this section exists to prevent.
For each affected probe, evaluate:
4-a. Trigger routing check — Does the trigger phrase still map to the expected skill/behavior?
4-b. Chain integrity check — Are mandatory chains still present?
→ chain: or Mandatory: gate lines exist4-c. Gate presence check — Are gate conditions still enforced?
CONDITIONAL_PASS logic in affected SKILL.mdOutput per probe:
[PASS] P-TRIGGER-01 — plugin-recommender trigger phrase found in CLAUDE.md
[FAIL] P-CHAIN-01 — field-harvest SKILL.md no longer references the harvest-loop close chain after edit
[SKIP] P-GREET-01 — §Onboarding not in changed files
## Prompt-Regression Report — YYYY-MM-DD
### Changed Assets
- CLAUDE.md (§Autonomous Initiative — 3 trigger phrases modified)
- plugins/fh-meta/skills/field-harvest/SKILL.md
### Probes Run: 4 | Pass: 3 | Fail: 1 | Skip: 4
### FAIL Details
| Probe | Location | Finding | Fix |
|---|---|---|---|
| P-CHAIN-01 | field-harvest SKILL.md | harvest-loop close-chain reference removed by edit | Restore the harvest-loop chain reference |
### Verdict
⚠️ REGRESSION DETECTED — 1 probe failed. Fix required before merge.
If all probes pass:
✅ NO REGRESSION — All N probes passed. Safe to merge.
After a deliberate behavior change (not a regression — an intentional improvement), update the baseline:
Prompt user first: "Probe G-GATE-03 now expects the new gate format. Update baseline? (y/n)"
Only update on explicit y — never auto-update.
On y, actually perform the write. The previous version of this step was three lines of which two
were comments — it created the directory and stopped, so "baseline updated" was reported by a step
that had written nothing.
mkdir -p .claude/regression
Then use the Write tool on .claude/regression/probes.md (create it from the SKILL.md default
matrix if absent) to apply the approved edit. Each approved change edits the probe's row in place —
Expected Behavior, Scope, and Class — and:
**Count**: tally line in the same edit if a row was added or removed, including
the per-section breakdown and the class counts (a stale tally is exactly how the 32/33
mismatch was introduced)**Baseline**: recording the date and the reason for the changeConfirm afterwards by re-reading the file and reporting the row's new content plus the recount —
grep -cE '^\| *[A-Z][A-Z0-9-]*-[0-9]+ *\|' .claude/regression/probes.md. Do not report a
baseline update whose result you have not read back.
PASS + FAIL + SKIP == selected)y, and writes nothing satisfied the old wording.Upstream (runs before this skill):
Downstream (runs after FAIL verdict):
harness-doctor for structural fixes if L1/L2 issues foundverify-bidirectional to confirm fix resolved the regression